Snippets of the Sussman Anomaly search. "###" mark comments === ### Begin with the start state: Len of fringe: 1 fringe[0].state: plan1 --- plan1 ----- steps: ['init', 'goal'] open conditions: (on(a,b), goal) (on(b,c), goal) ------ ### ### When the successor function is called, only a single flaw (an ### opencondition or threat) is chosen to resolve. The successors ### generated are only those that address that single flaw. ### Flaw chosen to work on next >> opencond ('on(a,b)', 'goal') Successors: plan2 ----- Adding new step 0*MaFROMcTOb The new causal link is: ('0*MaFROMcTOb', 'on(a,b)', 'goal') Removing the opencond: ('on(a,b)', 'goal') steps: ['init', 'goal', '0*MaFROMcTOb'] causal links: (0*MaFROMcTOb < on(a,b) < goal) ordering constraints (other than those with goal or init): none open conditions: (on(b,c), goal) (on(a,c), 0*MaFROMcTOb) (clear(a), 0*MaFROMcTOb) (clear(b), 0*MaFROMcTOb) 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) ========= Len of fringe: 2 fringe[0].state: plan2 --- ------ Flaw chosen to work on next >> opencond ('on(b,c)', 'goal') Successors: plan4 ----- Adding new step 2*MbFROMaTOc The new causal link is: ('2*MbFROMaTOc', 'on(b,c)', 'goal') Removing the opencond: ('on(b,c)', 'goal') # When you see only a few lines for a state/partial plan, it means I # deleted the rest of the info to save space. plan5 ----- Adding new step 3*MbFROMtableTOc The new causal link is: ('3*MbFROMtableTOc', 'on(b,c)', 'goal') Removing the opencond: ('on(b,c)', 'goal') ========= Len of fringe: 3 fringe[0].state: plan3 --- ------ Flaw chosen to work on next >> opencond ('on(b,c)', 'goal') Successors: plan6 ----- Adding new step 4*MbFROMaTOc The new causal link is: ('4*MbFROMaTOc', 'on(b,c)', 'goal') Removing the opencond: ('on(b,c)', 'goal') plan7 ----- Adding new step 5*MbFROMtableTOc The new causal link is: ('5*MbFROMtableTOc', 'on(b,c)', 'goal') Removing the opencond: ('on(b,c)', 'goal') ========= Len of fringe: 4 fringe[0].state: plan5 --- ------ Flaw chosen to work on next >> opencond ('on(a,c)', '0*MaFROMcTOb') Successors: plan8 ----- Adding new step 6*MaFROMtableTOc The new causal link is: ('6*MaFROMtableTOc', 'on(a,c)', '0*MaFROMcTOb') Removing the opencond: ('on(a,c)', '0*MaFROMcTOb') plan9 ----- Adding new step 7*MaFROMbTOc The new causal link is: ('7*MaFROMbTOc', 'on(a,c)', '0*MaFROMcTOb') Removing the opencond: ('on(a,c)', '0*MaFROMcTOb') ========= Len of fringe: 5 fringe[0].state: plan7 --- ------ Flaw chosen to work on next >> opencond ('on(a,table)', '1*MaFROMtableTOb') Successors: 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') plan11 ----- Adding new step 8*MaFROMcTOtable The new causal link is: ('8*MaFROMcTOtable', 'on(a,table)', '1*MaFROMtableTOb') Removing the opencond: ('on(a,table)', '1*MaFROMtableTOb') plan12 ----- Adding new step 9*MaFROMbTOtable The new causal link is: ('9*MaFROMbTOtable', 'on(a,table)', '1*MaFROMtableTOb') Removing the opencond: ('on(a,table)', '1*MaFROMtableTOb') ========= Len of fringe: 7 fringe[0].state: plan4 --- ------ Flaw chosen to work on next >> opencond ('on(a,c)', '0*MaFROMcTOb') Successors: plan13 ----- Adding new step 10*MaFROMtableTOc The new causal link is: ('10*MaFROMtableTOc', 'on(a,c)', '0*MaFROMcTOb') Removing the opencond: ('on(a,c)', '0*MaFROMcTOb') plan14 ----- Adding new step 11*MaFROMbTOc The new causal link is: ('11*MaFROMbTOc', 'on(a,c)', '0*MaFROMcTOb') Removing the opencond: ('on(a,c)', '0*MaFROMcTOb') ========= Len of fringe: 8 fringe[0].state: plan10 --- ------ Flaw chosen to work on next >> opencond ('clear(a)', '1*MaFROMtableTOb') Successors: plan15 ----- Adding new step 12*MbFROMaTOc The new causal link is: ('12*MbFROMaTOc', 'clear(a)', '1*MaFROMtableTOb') Removing the opencond: ('clear(a)', '1*MaFROMtableTOb') plan16 ----- Adding new step 13*MbFROMaTOtable The new causal link is: ('13*MbFROMaTOtable', 'clear(a)', '1*MaFROMtableTOb') Removing the opencond: ('clear(a)', '1*MaFROMtableTOb') plan17 ----- Adding new step 14*McFROMaTOb The new causal link is: ('14*McFROMaTOb', 'clear(a)', '1*MaFROMtableTOb') Removing the opencond: ('clear(a)', '1*MaFROMtableTOb') plan18 ----- Adding new step 15*McFROMaTOtable The new causal link is: ('15*McFROMaTOtable', 'clear(a)', '1*MaFROMtableTOb') Removing the opencond: ('clear(a)', '1*MaFROMtableTOb') ========= Len of fringe: 11 fringe[0].state: plan6 --- ========= Len of fringe: 13 fringe[0].state: plan19 --- ========= Len of fringe: 17 fringe[0].state: plan22 --- ========= Len of fringe: 21 fringe[0].state: plan27 --- ### --- snip --- ### ========= ### ### Return to a much earlier state. The highest numbered plan ### on the fringe is now plan44 ### Len of fringe: 30 fringe[0].state: plan16 --- ### --- snip --- ### ========= ### ### Fringe is getting rather large ### Len of fringe: 186 fringe[0].state: plan250 --- 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') parent: plan plan171 ------ Flaw chosen to work on next >> opencond ('clear(c)', '15*McFROMaTOtable') Successors: plan253 ----- Adding causal link with existing step. The new causal link is: ('init', 'clear(c)', '15*McFROMaTOtable') Removing the opencond: ('clear(c)', '15*McFROMaTOtable') plan254 ----- Adding new step 206*MbFROMcTOa The new causal link is: ('206*MbFROMcTOa', 'clear(c)', '15*McFROMaTOtable') Removing the opencond: ('clear(c)', '15*McFROMaTOtable') plan255 ----- Adding new step 207*MaFROMcTOtable The new causal link is: ('207*MaFROMcTOtable', 'clear(c)', '15*McFROMaTOtable') Removing the opencond: ('clear(c)', '15*McFROMaTOtable') plan256 ----- Adding new step 208*MaFROMcTOb The new causal link is: ('208*MaFROMcTOb', 'clear(c)', '15*McFROMaTOtable') Removing the opencond: ('clear(c)', '15*McFROMaTOtable') plan257 ----- Adding new step 209*MbFROMcTOtable The new causal link is: ('209*MbFROMcTOtable', 'clear(c)', '15*McFROMaTOtable') Removing the opencond: ('clear(c)', '15*McFROMaTOtable') ### and so on ... ### ### The maxium fringe length before the solution is found is 265. ###