Propositionalized version of the blocks world. "Move_Block_To_Block" (one for each permutation of the three blocks) on(b,c) clear(b) clear(a) ------------------- MbFROMcTOa ------------------- on(b,a) clear(c) DEL:on(b,c) DEL:clear(a) "Move_Block_From_Table" (one for each pair of blocks) on(c,table) clear(c) clear(b) ------------------- McFROMtableTOb ------------------- on(c,b) DEL:on(c,table) DEL:clear(b) "Move_Block_To_Table" (one for each pair of blocks) on(a,c) clear(a) ------------------- MaFROMcTOtable ------------------- on(a,table) clear(c) DEL:on(a,c) initial props: ['on(b,table)', 'on(c,a)', 'on(a,table)', 'clear(b)', 'clear(c)'] goal props: ['on(a,b)', 'on(b,c)'] Used the treesearch version of A* with heuristic: def h(node): return len(node.state.openconds) + len(node.state.threats) Result:********************** plan1 ----- steps: ['init', 'goal'] open conditions: (on(a,b), goal) (on(b,c), goal) plan3 ----- Adding new step 1*MaFROMtableTOb The new causal link is: ('1*MaFROMtableTOb', 'on(a,b)', 'goal') Removing the opencond: ('on(a,b)', 'goal') steps: ['init', 'goal', '1*MaFROMtableTOb'] causal links: (1*MaFROMtableTOb < on(a,b) < goal) ordering constraints (other than those with goal or init): none open conditions: (on(b,c), goal) (on(a,table), 1*MaFROMtableTOb) (clear(a), 1*MaFROMtableTOb) (clear(b), 1*MaFROMtableTOb) plan7 ----- Adding new step 5*MbFROMtableTOc The new causal link is: ('5*MbFROMtableTOc', 'on(b,c)', 'goal') Removing the opencond: ('on(b,c)', 'goal') steps: ['init', 'goal', '1*MaFROMtableTOb', '5*MbFROMtableTOc'] causal links: (1*MaFROMtableTOb < on(a,b) < goal) (5*MbFROMtableTOc < on(b,c) < goal) ordering constraints (other than those with goal or init): none open conditions: (on(a,table), 1*MaFROMtableTOb) (clear(a), 1*MaFROMtableTOb) (clear(b), 1*MaFROMtableTOb) (on(b,table), 5*MbFROMtableTOc) (clear(b), 5*MbFROMtableTOc) (clear(c), 5*MbFROMtableTOc) plan10 ----- Adding causal link with existing step. The new causal link is: ('init', 'on(a,table)', '1*MaFROMtableTOb') Removing the opencond: ('on(a,table)', '1*MaFROMtableTOb') steps: ['init', 'goal', '1*MaFROMtableTOb', '5*MbFROMtableTOc'] causal links: (1*MaFROMtableTOb < on(a,b) < goal) (5*MbFROMtableTOc < on(b,c) < goal) (init < on(a,table) < 1*MaFROMtableTOb) ordering constraints (other than those with goal or init): none open conditions: (clear(a), 1*MaFROMtableTOb) (clear(b), 1*MaFROMtableTOb) (on(b,table), 5*MbFROMtableTOc) (clear(b), 5*MbFROMtableTOc) (clear(c), 5*MbFROMtableTOc) plan18 ----- Adding new step 15*McFROMaTOtable The new causal link is: ('15*McFROMaTOtable', 'clear(a)', '1*MaFROMtableTOb') Removing the opencond: ('clear(a)', '1*MaFROMtableTOb') steps: ['init', 'goal', '1*MaFROMtableTOb', '5*MbFROMtableTOc', '15*McFROMaTOtable'] causal links: (1*MaFROMtableTOb < on(a,b) < goal) (5*MbFROMtableTOc < on(b,c) < goal) (init < on(a,table) < 1*MaFROMtableTOb) (15*McFROMaTOtable < clear(a) < 1*MaFROMtableTOb) ordering constraints (other than those with goal or init): (15*McFROMaTOtable < 1*MaFROMtableTOb) open conditions: (clear(b), 1*MaFROMtableTOb) (on(b,table), 5*MbFROMtableTOc) (clear(b), 5*MbFROMtableTOc) (clear(c), 5*MbFROMtableTOc) (on(c,a), 15*McFROMaTOtable) (clear(c), 15*McFROMaTOtable) plan52 ----- Adding causal link with existing step. The new causal link is: ('init', 'clear(b)', '1*MaFROMtableTOb') Removing the opencond: ('clear(b)', '1*MaFROMtableTOb') steps: ['init', 'goal', '1*MaFROMtableTOb', '5*MbFROMtableTOc', '15*McFROMaTOtable'] causal links: (1*MaFROMtableTOb < on(a,b) < goal) (5*MbFROMtableTOc < on(b,c) < goal) (init < on(a,table) < 1*MaFROMtableTOb) (15*McFROMaTOtable < clear(a) < 1*MaFROMtableTOb) (init < clear(b) < 1*MaFROMtableTOb) ordering constraints (other than those with goal or init): (15*McFROMaTOtable < 1*MaFROMtableTOb) open conditions: (on(b,table), 5*MbFROMtableTOc) (clear(b), 5*MbFROMtableTOc) (clear(c), 5*MbFROMtableTOc) (on(c,a), 15*McFROMaTOtable) (clear(c), 15*McFROMaTOtable) plan62 ----- Adding causal link with existing step. The new causal link is: ('init', 'on(b,table)', '5*MbFROMtableTOc') Removing the opencond: ('on(b,table)', '5*MbFROMtableTOc') steps: ['init', 'goal', '1*MaFROMtableTOb', '5*MbFROMtableTOc', '15*McFROMaTOtable'] causal links: (1*MaFROMtableTOb < on(a,b) < goal) (5*MbFROMtableTOc < on(b,c) < goal) (init < on(a,table) < 1*MaFROMtableTOb) (15*McFROMaTOtable < clear(a) < 1*MaFROMtableTOb) (init < clear(b) < 1*MaFROMtableTOb) (init < on(b,table) < 5*MbFROMtableTOc) ordering constraints (other than those with goal or init): (15*McFROMaTOtable < 1*MaFROMtableTOb) open conditions: (clear(b), 5*MbFROMtableTOc) (clear(c), 5*MbFROMtableTOc) (on(c,a), 15*McFROMaTOtable) (clear(c), 15*McFROMaTOtable) plan71 ----- Adding causal link with existing step. The new causal link is: ('init', 'clear(b)', '5*MbFROMtableTOc') Removing the opencond: ('clear(b)', '5*MbFROMtableTOc') steps: ['init', 'goal', '1*MaFROMtableTOb', '5*MbFROMtableTOc', '15*McFROMaTOtable'] causal links: (1*MaFROMtableTOb < on(a,b) < goal) (5*MbFROMtableTOc < on(b,c) < goal) (init < on(a,table) < 1*MaFROMtableTOb) (15*McFROMaTOtable < clear(a) < 1*MaFROMtableTOb) (init < clear(b) < 1*MaFROMtableTOb) (init < on(b,table) < 5*MbFROMtableTOc) (init < clear(b) < 5*MbFROMtableTOc) ordering constraints (other than those with goal or init): (15*McFROMaTOtable < 1*MaFROMtableTOb) open conditions: (clear(c), 5*MbFROMtableTOc) (on(c,a), 15*McFROMaTOtable) (clear(c), 15*McFROMaTOtable) threats: (('init', 'clear(b)', '5*MbFROMtableTOc'), '1*MaFROMtableTOb') plan171 ----- Adding causal link with existing step. The new causal link is: ('init', 'clear(c)', '5*MbFROMtableTOc') Removing the opencond: ('clear(c)', '5*MbFROMtableTOc') steps: ['init', 'goal', '1*MaFROMtableTOb', '5*MbFROMtableTOc', '15*McFROMaTOtable'] causal links: (1*MaFROMtableTOb < on(a,b) < goal) (5*MbFROMtableTOc < on(b,c) < goal) (init < on(a,table) < 1*MaFROMtableTOb) (15*McFROMaTOtable < clear(a) < 1*MaFROMtableTOb) (init < clear(b) < 1*MaFROMtableTOb) (init < on(b,table) < 5*MbFROMtableTOc) (init < clear(b) < 5*MbFROMtableTOc) (init < clear(c) < 5*MbFROMtableTOc) ordering constraints (other than those with goal or init): (15*McFROMaTOtable < 1*MaFROMtableTOb) open conditions: (on(c,a), 15*McFROMaTOtable) (clear(c), 15*McFROMaTOtable) threats: (('init', 'clear(b)', '5*MbFROMtableTOc'), '1*MaFROMtableTOb') plan250 ----- Adding causal link with existing step. The new causal link is: ('init', 'on(c,a)', '15*McFROMaTOtable') Removing the opencond: ('on(c,a)', '15*McFROMaTOtable') steps: ['init', 'goal', '1*MaFROMtableTOb', '5*MbFROMtableTOc', '15*McFROMaTOtable'] causal links: (1*MaFROMtableTOb < on(a,b) < goal) (5*MbFROMtableTOc < on(b,c) < goal) (init < on(a,table) < 1*MaFROMtableTOb) (15*McFROMaTOtable < clear(a) < 1*MaFROMtableTOb) (init < clear(b) < 1*MaFROMtableTOb) (init < on(b,table) < 5*MbFROMtableTOc) (init < clear(b) < 5*MbFROMtableTOc) (init < clear(c) < 5*MbFROMtableTOc) (init < on(c,a) < 15*McFROMaTOtable) ordering constraints (other than those with goal or init): (15*McFROMaTOtable < 1*MaFROMtableTOb) open conditions: (clear(c), 15*McFROMaTOtable) threats: (('init', 'clear(b)', '5*MbFROMtableTOc'), '1*MaFROMtableTOb') plan253 ----- Adding causal link with existing step. The new causal link is: ('init', 'clear(c)', '15*McFROMaTOtable') Removing the opencond: ('clear(c)', '15*McFROMaTOtable') steps: ['init', 'goal', '1*MaFROMtableTOb', '5*MbFROMtableTOc', '15*McFROMaTOtable'] causal links: (1*MaFROMtableTOb < on(a,b) < goal) (5*MbFROMtableTOc < on(b,c) < goal) (init < on(a,table) < 1*MaFROMtableTOb) (15*McFROMaTOtable < clear(a) < 1*MaFROMtableTOb) (init < clear(b) < 1*MaFROMtableTOb) (init < on(b,table) < 5*MbFROMtableTOc) (init < clear(b) < 5*MbFROMtableTOc) (init < clear(c) < 5*MbFROMtableTOc) (init < on(c,a) < 15*McFROMaTOtable) (init < clear(c) < 15*McFROMaTOtable) ordering constraints (other than those with goal or init): (15*McFROMaTOtable < 1*MaFROMtableTOb) threats: (('init', 'clear(b)', '5*MbFROMtableTOc'), '1*MaFROMtableTOb') (('init', 'clear(c)', '15*McFROMaTOtable'), '5*MbFROMtableTOc') plan351 ----- Promotion: ordercons ('5*MbFROMtableTOc', '1*MaFROMtableTOb') fixes threat (('init', 'clear(b)', '5*MbFROMtableTOc'), '1*MaFROMtableTOb') steps: ['init', 'goal', '1*MaFROMtableTOb', '5*MbFROMtableTOc', '15*McFROMaTOtable'] causal links: (1*MaFROMtableTOb < on(a,b) < goal) (5*MbFROMtableTOc < on(b,c) < goal) (init < on(a,table) < 1*MaFROMtableTOb) (15*McFROMaTOtable < clear(a) < 1*MaFROMtableTOb) (init < clear(b) < 1*MaFROMtableTOb) (init < on(b,table) < 5*MbFROMtableTOc) (init < clear(b) < 5*MbFROMtableTOc) (init < clear(c) < 5*MbFROMtableTOc) (init < on(c,a) < 15*McFROMaTOtable) (init < clear(c) < 15*McFROMaTOtable) ordering constraints (other than those with goal or init): (15*McFROMaTOtable < 1*MaFROMtableTOb) (5*MbFROMtableTOc < 1*MaFROMtableTOb) threats: (('init', 'clear(c)', '15*McFROMaTOtable'), '5*MbFROMtableTOc') plan357 ----- Promotion: ordercons ('15*McFROMaTOtable', '5*MbFROMtableTOc') fixes threat (('init', 'clear(c)', '15*McFROMaTOtable'), '5*MbFROMtableTOc') steps: ['init', 'goal', '1*MaFROMtableTOb', '5*MbFROMtableTOc', '15*McFROMaTOtable'] causal links: (1*MaFROMtableTOb < on(a,b) < goal) (5*MbFROMtableTOc < on(b,c) < goal) (init < on(a,table) < 1*MaFROMtableTOb) (15*McFROMaTOtable < clear(a) < 1*MaFROMtableTOb) (init < clear(b) < 1*MaFROMtableTOb) (init < on(b,table) < 5*MbFROMtableTOc) (init < clear(b) < 5*MbFROMtableTOc) (init < clear(c) < 5*MbFROMtableTOc) (init < on(c,a) < 15*McFROMaTOtable) (init < clear(c) < 15*McFROMaTOtable) ordering constraints (other than those with goal or init): (15*McFROMaTOtable < 1*MaFROMtableTOb) (5*MbFROMtableTOc < 1*MaFROMtableTOb) (15*McFROMaTOtable < 5*MbFROMtableTOc)