|
Post by talinsalway on May 18, 2015 15:37:31 GMT -8
For some more detail, I investigated a bit.
The top-level propnet generator is org.ggp.base.util.propnet.factory.OptimizingPropNetFactory. I added some debug output, and it seems like ground terms are fully generated by the SentenceDomainModelFactory.createWithCartesianDomains and SentenceDomainModelOptimizer.restrictDomainsToUsefulValues steps. I'll investigate those classes next. Here's some debug output for tic-tac-toe and connect four.
(Also, it should be noted that neither connect four nor tic-tac-toe seem to use any recursive forms. What's a really simple game that makes use of recursive rules, for testing?)
connect four:
Building propnet... initial state: ( role red ) ( role black ) ( init ( control red ) ) ( <= ( legal red noop ) ( true ( control black ) ) ) ( <= ( legal red ( drop ?x ) ) ( true ( control red ) ) ( columnOpen ?x ) ) ( <= ( legal black noop ) ( true ( control red ) ) ) ( <= ( legal black ( drop ?x ) ) ( true ( control black ) ) ( columnOpen ?x ) ) ( <= ( next ( cell ?x 1 ?player ) ) ( does ?player ( drop ?x ) ) ( columnEmpty ?x ) ) ( <= ( next ( cell ?x ?y2 ?player ) ) ( does ?player ( drop ?x ) ) ( cellOpen ?x ?y2 ) ( succ ?y1 ?y2 ) ( not ( cellOpen ?x ?y1 ) ) ) ( <= ( next ( cell ?x ?y ?player ) ) ( true ( cell ?x ?y ?player ) ) ) ( <= ( next ( control red ) ) ( true ( control black ) ) ) ( <= ( next ( control black ) ) ( true ( control red ) ) ) ( <= terminal ( line red ) ) ( <= terminal ( line black ) ) ( <= terminal ( not boardOpen ) ) ( <= ( goal red 100 ) ( line red ) ) ( <= ( goal red 50 ) ( not ( line red ) ) ( not ( line black ) ) ( not boardOpen ) ) ( <= ( goal red 0 ) ( line black ) ) ( <= ( goal red 0 ) ( not ( line red ) ) ( not ( line black ) ) boardOpen ) ( <= ( goal black 100 ) ( line black ) ) ( <= ( goal black 50 ) ( not ( line red ) ) ( not ( line black ) ) ( not boardOpen ) ) ( <= ( goal black 0 ) ( line red ) ) ( <= ( goal black 0 ) ( not ( line red ) ) ( not ( line black ) ) boardOpen ) ( <= ( cellOpen ?x ?y ) ( x ?x ) ( y ?y ) ( not ( true ( cell ?x ?y red ) ) ) ( not ( true ( cell ?x ?y black ) ) ) ) ( <= ( columnOpen ?x ) ( cellOpen ?x 6 ) ) ( <= ( columnEmpty ?x ) ( cellOpen ?x 1 ) ) ( <= boardOpen ( x ?x ) ( columnOpen ?x ) ) ( <= ( line ?player ) ( true ( cell ?x1 ?y ?player ) ) ( succ ?x1 ?x2 ) ( succ ?x2 ?x3 ) ( succ ?x3 ?x4 ) ( true ( cell ?x2 ?y ?player ) ) ( true ( cell ?x3 ?y ?player ) ) ( true ( cell ?x4 ?y ?player ) ) ) ( <= ( line ?player ) ( true ( cell ?x ?y1 ?player ) ) ( succ ?y1 ?y2 ) ( succ ?y2 ?y3 ) ( succ ?y3 ?y4 ) ( true ( cell ?x ?y2 ?player ) ) ( true ( cell ?x ?y3 ?player ) ) ( true ( cell ?x ?y4 ?player ) ) ) ( <= ( line ?player ) ( true ( cell ?x1 ?y1 ?player ) ) ( succ ?x1 ?x2 ) ( succ ?x2 ?x3 ) ( succ ?x3 ?x4 ) ( succ ?y1 ?y2 ) ( succ ?y2 ?y3 ) ( succ ?y3 ?y4 ) ( true ( cell ?x2 ?y2 ?player ) ) ( true ( cell ?x3 ?y3 ?player ) ) ( true ( cell ?x4 ?y4 ?player ) ) ) ( <= ( line ?player ) ( true ( cell ?x1 ?y4 ?player ) ) ( succ ?x1 ?x2 ) ( succ ?x2 ?x3 ) ( succ ?x3 ?x4 ) ( succ ?y3 ?y4 ) ( succ ?y2 ?y3 ) ( succ ?y1 ?y2 ) ( true ( cell ?x2 ?y3 ?player ) ) ( true ( cell ?x3 ?y2 ?player ) ) ( true ( cell ?x4 ?y1 ?player ) ) ) ( succ 1 2 ) ( succ 2 3 ) ( succ 3 4 ) ( succ 4 5 ) ( succ 5 6 ) ( succ 6 7 ) ( succ 7 8 ) ( x 1 ) ( x 2 ) ( x 3 ) ( x 4 ) ( x 5 ) ( x 6 ) ( x 7 ) ( x 8 ) ( y 1 ) ( y 2 ) ( y 3 ) ( y 4 ) ( y 5 ) ( y 6 )
after cleaning: no difference
after DeOr: no difference
after constrain: no difference
after relationize: no difference
after condensationisolator: model: ( columnEmpty _ ) [( columnEmpty 8 ), ( columnEmpty 3 ), ( columnEmpty 1 ), ( columnEmpty 6 ), ( columnEmpty 4 ), ( columnEmpty 5 ), ( columnEmpty 2 ), ( columnEmpty 7 ), ] ( legal _ ( drop _ ) ) [( legal black ( drop 8 ) ), ( legal black ( drop 3 ) ), ( legal black ( drop 1 ) ), ( legal black ( drop 6 ) ), ( legal black ( drop 4 ) ), ( legal black ( drop 5 ) ), ( legal black ( drop 2 ) ), ( legal black ( drop 7 ) ), ( legal red ( drop 8 ) ), ( legal red ( drop 3 ) ), ( legal red ( drop 1 ) ), ( legal red ( drop 6 ) ), ( legal red ( drop 4 ) ), ( legal red ( drop 5 ) ), ( legal red ( drop 2 ) ), ( legal red ( drop 7 ) ), ] ( legal _ _ ) [( legal black noop ), ( legal red noop ), ] ( line _ ) [( line black ), ( line red ), ] ( cellOpen _ _ ) [( cellOpen 8 3 ), ( cellOpen 8 1 ), ( cellOpen 8 6 ), ( cellOpen 8 4 ), ( cellOpen 8 5 ), ( cellOpen 8 2 ), ( cellOpen 3 3 ), ( cellOpen 3 1 ), ( cellOpen 3 6 ), ( cellOpen 3 4 ), ( cellOpen 3 5 ), ( cellOpen 3 2 ), ( cellOpen 1 3 ), ( cellOpen 1 1 ), ( cellOpen 1 6 ), ( cellOpen 1 4 ), ( cellOpen 1 5 ), ( cellOpen 1 2 ), ( cellOpen 6 3 ), ( cellOpen 6 1 ), ( cellOpen 6 6 ), ( cellOpen 6 4 ), ( cellOpen 6 5 ), ( cellOpen 6 2 ), ( cellOpen 4 3 ), ( cellOpen 4 1 ), ( cellOpen 4 6 ), ( cellOpen 4 4 ), ( cellOpen 4 5 ), ( cellOpen 4 2 ), ( cellOpen 5 3 ), ( cellOpen 5 1 ), ( cellOpen 5 6 ), ( cellOpen 5 4 ), ( cellOpen 5 5 ), ( cellOpen 5 2 ), ( cellOpen 2 3 ), ( cellOpen 2 1 ), ( cellOpen 2 6 ), ( cellOpen 2 4 ), ( cellOpen 2 5 ), ( cellOpen 2 2 ), ( cellOpen 7 3 ), ( cellOpen 7 1 ), ( cellOpen 7 6 ), ( cellOpen 7 4 ), ( cellOpen 7 5 ), ( cellOpen 7 2 ), ] ( x _ ) [( x 8 ), ( x 3 ), ( x 1 ), ( x 6 ), ( x 4 ), ( x 5 ), ( x 2 ), ( x 7 ), ] ( does _ ( drop _ ) ) [( does black ( drop 8 ) ), ( does black ( drop 3 ) ), ( does black ( drop 1 ) ), ( does black ( drop 6 ) ), ( does black ( drop 4 ) ), ( does black ( drop 5 ) ), ( does black ( drop 2 ) ), ( does black ( drop 7 ) ), ( does red ( drop 8 ) ), ( does red ( drop 3 ) ), ( does red ( drop 1 ) ), ( does red ( drop 6 ) ), ( does red ( drop 4 ) ), ( does red ( drop 5 ) ), ( does red ( drop 2 ) ), ( does red ( drop 7 ) ), ] ( next ( control _ ) ) [( next ( control black ) ), ( next ( control red ) ), ] boardOpen [boardOpen, ] ( true ( cell _ _ _ ) ) [( true ( cell 8 8 black ) ), ( true ( cell 8 8 red ) ), ( true ( cell 8 3 black ) ), ( true ( cell 8 3 red ) ), ( true ( cell 8 1 black ) ), ( true ( cell 8 1 red ) ), ( true ( cell 8 6 black ) ), ( true ( cell 8 6 red ) ), ( true ( cell 8 4 black ) ), ( true ( cell 8 4 red ) ), ( true ( cell 8 5 black ) ), ( true ( cell 8 5 red ) ), ( true ( cell 8 2 black ) ), ( true ( cell 8 2 red ) ), ( true ( cell 8 7 black ) ), ( true ( cell 8 7 red ) ), ( true ( cell 3 8 black ) ), ( true ( cell 3 8 red ) ), ( true ( cell 3 3 black ) ), ( true ( cell 3 3 red ) ), ( true ( cell 3 1 black ) ), ( true ( cell 3 1 red ) ), ( true ( cell 3 6 black ) ), ( true ( cell 3 6 red ) ), ( true ( cell 3 4 black ) ), ( true ( cell 3 4 red ) ), ( true ( cell 3 5 black ) ), ( true ( cell 3 5 red ) ), ( true ( cell 3 2 black ) ), ( true ( cell 3 2 red ) ), ( true ( cell 3 7 black ) ), ( true ( cell 3 7 red ) ), ( true ( cell 1 8 black ) ), ( true ( cell 1 8 red ) ), ( true ( cell 1 3 black ) ), ( true ( cell 1 3 red ) ), ( true ( cell 1 1 black ) ), ( true ( cell 1 1 red ) ), ( true ( cell 1 6 black ) ), ( true ( cell 1 6 red ) ), ( true ( cell 1 4 black ) ), ( true ( cell 1 4 red ) ), ( true ( cell 1 5 black ) ), ( true ( cell 1 5 red ) ), ( true ( cell 1 2 black ) ), ( true ( cell 1 2 red ) ), ( true ( cell 1 7 black ) ), ( true ( cell 1 7 red ) ), ( true ( cell 6 8 black ) ), ( true ( cell 6 8 red ) ), ( true ( cell 6 3 black ) ), ( true ( cell 6 3 red ) ), ( true ( cell 6 1 black ) ), ( true ( cell 6 1 red ) ), ( true ( cell 6 6 black ) ), ( true ( cell 6 6 red ) ), ( true ( cell 6 4 black ) ), ( true ( cell 6 4 red ) ), ( true ( cell 6 5 black ) ), ( true ( cell 6 5 red ) ), ( true ( cell 6 2 black ) ), ( true ( cell 6 2 red ) ), ( true ( cell 6 7 black ) ), ( true ( cell 6 7 red ) ), ( true ( cell 4 8 black ) ), ( true ( cell 4 8 red ) ), ( true ( cell 4 3 black ) ), ( true ( cell 4 3 red ) ), ( true ( cell 4 1 black ) ), ( true ( cell 4 1 red ) ), ( true ( cell 4 6 black ) ), ( true ( cell 4 6 red ) ), ( true ( cell 4 4 black ) ), ( true ( cell 4 4 red ) ), ( true ( cell 4 5 black ) ), ( true ( cell 4 5 red ) ), ( true ( cell 4 2 black ) ), ( true ( cell 4 2 red ) ), ( true ( cell 4 7 black ) ), ( true ( cell 4 7 red ) ), ( true ( cell 5 8 black ) ), ( true ( cell 5 8 red ) ), ( true ( cell 5 3 black ) ), ( true ( cell 5 3 red ) ), ( true ( cell 5 1 black ) ), ( true ( cell 5 1 red ) ), ( true ( cell 5 6 black ) ), ( true ( cell 5 6 red ) ), ( true ( cell 5 4 black ) ), ( true ( cell 5 4 red ) ), ( true ( cell 5 5 black ) ), ( true ( cell 5 5 red ) ), ( true ( cell 5 2 black ) ), ( true ( cell 5 2 red ) ), ( true ( cell 5 7 black ) ), ( true ( cell 5 7 red ) ), ( true ( cell 2 8 black ) ), ( true ( cell 2 8 red ) ), ( true ( cell 2 3 black ) ), ( true ( cell 2 3 red ) ), ( true ( cell 2 1 black ) ), ( true ( cell 2 1 red ) ), ( true ( cell 2 6 black ) ), ( true ( cell 2 6 red ) ), ( true ( cell 2 4 black ) ), ( true ( cell 2 4 red ) ), ( true ( cell 2 5 black ) ), ( true ( cell 2 5 red ) ), ( true ( cell 2 2 black ) ), ( true ( cell 2 2 red ) ), ( true ( cell 2 7 black ) ), ( true ( cell 2 7 red ) ), ( true ( cell 7 8 black ) ), ( true ( cell 7 8 red ) ), ( true ( cell 7 3 black ) ), ( true ( cell 7 3 red ) ), ( true ( cell 7 1 black ) ), ( true ( cell 7 1 red ) ), ( true ( cell 7 6 black ) ), ( true ( cell 7 6 red ) ), ( true ( cell 7 4 black ) ), ( true ( cell 7 4 red ) ), ( true ( cell 7 5 black ) ), ( true ( cell 7 5 red ) ), ( true ( cell 7 2 black ) ), ( true ( cell 7 2 red ) ), ( true ( cell 7 7 black ) ), ( true ( cell 7 7 red ) ), ] ( goal _ _ ) [( goal black 100 ), ( goal black 0 ), ( goal black 50 ), ( goal red 100 ), ( goal red 0 ), ( goal red 50 ), ] ( succ _ _ ) [( succ 3 8 ), ( succ 3 3 ), ( succ 3 6 ), ( succ 3 4 ), ( succ 3 5 ), ( succ 3 2 ), ( succ 3 7 ), ( succ 1 8 ), ( succ 1 3 ), ( succ 1 6 ), ( succ 1 4 ), ( succ 1 5 ), ( succ 1 2 ), ( succ 1 7 ), ( succ 6 8 ), ( succ 6 3 ), ( succ 6 6 ), ( succ 6 4 ), ( succ 6 5 ), ( succ 6 2 ), ( succ 6 7 ), ( succ 4 8 ), ( succ 4 3 ), ( succ 4 6 ), ( succ 4 4 ), ( succ 4 5 ), ( succ 4 2 ), ( succ 4 7 ), ( succ 5 8 ), ( succ 5 3 ), ( succ 5 6 ), ( succ 5 4 ), ( succ 5 5 ), ( succ 5 2 ), ( succ 5 7 ), ( succ 2 8 ), ( succ 2 3 ), ( succ 2 6 ), ( succ 2 4 ), ( succ 2 5 ), ( succ 2 2 ), ( succ 2 7 ), ( succ 7 8 ), ( succ 7 3 ), ( succ 7 6 ), ( succ 7 4 ), ( succ 7 5 ), ( succ 7 2 ), ( succ 7 7 ), ] ( columnOpen _ ) [( columnOpen 8 ), ( columnOpen 3 ), ( columnOpen 1 ), ( columnOpen 6 ), ( columnOpen 4 ), ( columnOpen 5 ), ( columnOpen 2 ), ( columnOpen 7 ), ] ( true ( control _ ) ) [( true ( control black ) ), ( true ( control red ) ), ] ( role _ ) [( role black ), ( role red ), ] ( does _ _ ) [( does black noop ), ( does red noop ), ] ( init ( control _ ) ) [( init ( control red ) ), ] terminal [terminal, ] ( y _ ) [( y 3 ), ( y 1 ), ( y 6 ), ( y 4 ), ( y 5 ), ( y 2 ), ] ( next ( cell _ _ _ ) ) [( next ( cell 8 8 black ) ), ( next ( cell 8 8 red ) ), ( next ( cell 8 3 black ) ), ( next ( cell 8 3 red ) ), ( next ( cell 8 1 black ) ), ( next ( cell 8 1 red ) ), ( next ( cell 8 6 black ) ), ( next ( cell 8 6 red ) ), ( next ( cell 8 4 black ) ), ( next ( cell 8 4 red ) ), ( next ( cell 8 5 black ) ), ( next ( cell 8 5 red ) ), ( next ( cell 8 2 black ) ), ( next ( cell 8 2 red ) ), ( next ( cell 8 7 black ) ), ( next ( cell 8 7 red ) ), ( next ( cell 3 8 black ) ), ( next ( cell 3 8 red ) ), ( next ( cell 3 3 black ) ), ( next ( cell 3 3 red ) ), ( next ( cell 3 1 black ) ), ( next ( cell 3 1 red ) ), ( next ( cell 3 6 black ) ), ( next ( cell 3 6 red ) ), ( next ( cell 3 4 black ) ), ( next ( cell 3 4 red ) ), ( next ( cell 3 5 black ) ), ( next ( cell 3 5 red ) ), ( next ( cell 3 2 black ) ), ( next ( cell 3 2 red ) ), ( next ( cell 3 7 black ) ), ( next ( cell 3 7 red ) ), ( next ( cell 1 8 black ) ), ( next ( cell 1 8 red ) ), ( next ( cell 1 3 black ) ), ( next ( cell 1 3 red ) ), ( next ( cell 1 1 black ) ), ( next ( cell 1 1 red ) ), ( next ( cell 1 6 black ) ), ( next ( cell 1 6 red ) ), ( next ( cell 1 4 black ) ), ( next ( cell 1 4 red ) ), ( next ( cell 1 5 black ) ), ( next ( cell 1 5 red ) ), ( next ( cell 1 2 black ) ), ( next ( cell 1 2 red ) ), ( next ( cell 1 7 black ) ), ( next ( cell 1 7 red ) ), ( next ( cell 6 8 black ) ), ( next ( cell 6 8 red ) ), ( next ( cell 6 3 black ) ), ( next ( cell 6 3 red ) ), ( next ( cell 6 1 black ) ), ( next ( cell 6 1 red ) ), ( next ( cell 6 6 black ) ), ( next ( cell 6 6 red ) ), ( next ( cell 6 4 black ) ), ( next ( cell 6 4 red ) ), ( next ( cell 6 5 black ) ), ( next ( cell 6 5 red ) ), ( next ( cell 6 2 black ) ), ( next ( cell 6 2 red ) ), ( next ( cell 6 7 black ) ), ( next ( cell 6 7 red ) ), ( next ( cell 4 8 black ) ), ( next ( cell 4 8 red ) ), ( next ( cell 4 3 black ) ), ( next ( cell 4 3 red ) ), ( next ( cell 4 1 black ) ), ( next ( cell 4 1 red ) ), ( next ( cell 4 6 black ) ), ( next ( cell 4 6 red ) ), ( next ( cell 4 4 black ) ), ( next ( cell 4 4 red ) ), ( next ( cell 4 5 black ) ), ( next ( cell 4 5 red ) ), ( next ( cell 4 2 black ) ), ( next ( cell 4 2 red ) ), ( next ( cell 4 7 black ) ), ( next ( cell 4 7 red ) ), ( next ( cell 5 8 black ) ), ( next ( cell 5 8 red ) ), ( next ( cell 5 3 black ) ), ( next ( cell 5 3 red ) ), ( next ( cell 5 1 black ) ), ( next ( cell 5 1 red ) ), ( next ( cell 5 6 black ) ), ( next ( cell 5 6 red ) ), ( next ( cell 5 4 black ) ), ( next ( cell 5 4 red ) ), ( next ( cell 5 5 black ) ), ( next ( cell 5 5 red ) ), ( next ( cell 5 2 black ) ), ( next ( cell 5 2 red ) ), ( next ( cell 5 7 black ) ), ( next ( cell 5 7 red ) ), ( next ( cell 2 8 black ) ), ( next ( cell 2 8 red ) ), ( next ( cell 2 3 black ) ), ( next ( cell 2 3 red ) ), ( next ( cell 2 1 black ) ), ( next ( cell 2 1 red ) ), ( next ( cell 2 6 black ) ), ( next ( cell 2 6 red ) ), ( next ( cell 2 4 black ) ), ( next ( cell 2 4 red ) ), ( next ( cell 2 5 black ) ), ( next ( cell 2 5 red ) ), ( next ( cell 2 2 black ) ), ( next ( cell 2 2 red ) ), ( next ( cell 2 7 black ) ), ( next ( cell 2 7 red ) ), ( next ( cell 7 8 black ) ), ( next ( cell 7 8 red ) ), ( next ( cell 7 3 black ) ), ( next ( cell 7 3 red ) ), ( next ( cell 7 1 black ) ), ( next ( cell 7 1 red ) ), ( next ( cell 7 6 black ) ), ( next ( cell 7 6 red ) ), ( next ( cell 7 4 black ) ), ( next ( cell 7 4 red ) ), ( next ( cell 7 5 black ) ), ( next ( cell 7 5 red ) ), ( next ( cell 7 2 black ) ), ( next ( cell 7 2 red ) ), ( next ( cell 7 7 black ) ), ( next ( cell 7 7 red ) ), ]
after restriction: ( columnEmpty _ ) no difference ( legal _ ( drop _ ) ) no difference ( legal _ _ ) no difference ( line _ ) no difference ( cellOpen _ _ ) no difference ( x _ ) no difference ( does _ ( drop _ ) ) no difference ( next ( control _ ) ) no difference boardOpen no difference ( true ( cell _ _ _ ) ) [-( true ( cell 8 8 black ) ), -( true ( cell 8 8 red ) ), -( true ( cell 8 7 black ) ), -( true ( cell 8 7 red ) ), -( true ( cell 3 8 black ) ), -( true ( cell 3 8 red ) ), -( true ( cell 3 7 black ) ), -( true ( cell 3 7 red ) ), -( true ( cell 1 8 black ) ), -( true ( cell 1 8 red ) ), -( true ( cell 1 7 black ) ), -( true ( cell 1 7 red ) ), -( true ( cell 6 8 black ) ), -( true ( cell 6 8 red ) ), -( true ( cell 6 7 black ) ), -( true ( cell 6 7 red ) ), -( true ( cell 4 8 black ) ), -( true ( cell 4 8 red ) ), -( true ( cell 4 7 black ) ), -( true ( cell 4 7 red ) ), -( true ( cell 5 8 black ) ), -( true ( cell 5 8 red ) ), -( true ( cell 5 7 black ) ), -( true ( cell 5 7 red ) ), -( true ( cell 2 8 black ) ), -( true ( cell 2 8 red ) ), -( true ( cell 2 7 black ) ), -( true ( cell 2 7 red ) ), -( true ( cell 7 8 black ) ), -( true ( cell 7 8 red ) ), -( true ( cell 7 7 black ) ), -( true ( cell 7 7 red ) ), ] ( goal _ _ ) no difference ( succ _ _ ) no difference ( columnOpen _ ) no difference ( true ( control _ ) ) no difference ( role _ ) no difference ( does _ _ ) no difference ( init ( control _ ) ) no difference terminal no difference ( y _ ) no difference ( next ( cell _ _ _ ) ) [-( next ( cell 8 8 black ) ), -( next ( cell 8 8 red ) ), -( next ( cell 8 7 black ) ), -( next ( cell 8 7 red ) ), -( next ( cell 3 8 black ) ), -( next ( cell 3 8 red ) ), -( next ( cell 3 7 black ) ), -( next ( cell 3 7 red ) ), -( next ( cell 1 8 black ) ), -( next ( cell 1 8 red ) ), -( next ( cell 1 7 black ) ), -( next ( cell 1 7 red ) ), -( next ( cell 6 8 black ) ), -( next ( cell 6 8 red ) ), -( next ( cell 6 7 black ) ), -( next ( cell 6 7 red ) ), -( next ( cell 4 8 black ) ), -( next ( cell 4 8 red ) ), -( next ( cell 4 7 black ) ), -( next ( cell 4 7 red ) ), -( next ( cell 5 8 black ) ), -( next ( cell 5 8 red ) ), -( next ( cell 5 7 black ) ), -( next ( cell 5 7 red ) ), -( next ( cell 2 8 black ) ), -( next ( cell 2 8 red ) ), -( next ( cell 2 7 black ) ), -( next ( cell 2 7 red ) ), -( next ( cell 7 8 black ) ), -( next ( cell 7 8 red ) ), -( next ( cell 7 7 black ) ), -( next ( cell 7 7 red ) ), ] Setting constants...
tic-tac-toe:
Building propnet... initial state: ( role xplayer ) ( role oplayer ) ( init ( cell 1 1 b ) ) ( init ( cell 1 2 b ) ) ( init ( cell 1 3 b ) ) ( init ( cell 2 1 b ) ) ( init ( cell 2 2 b ) ) ( init ( cell 2 3 b ) ) ( init ( cell 3 1 b ) ) ( init ( cell 3 2 b ) ) ( init ( cell 3 3 b ) ) ( init ( control xplayer ) ) ( <= ( next ( cell ?m ?n x ) ) ( does xplayer ( mark ?m ?n ) ) ( true ( cell ?m ?n b ) ) ) ( <= ( next ( cell ?m ?n o ) ) ( does oplayer ( mark ?m ?n ) ) ( true ( cell ?m ?n b ) ) ) ( <= ( next ( cell ?m ?n ?w ) ) ( true ( cell ?m ?n ?w ) ) ( distinct ?w b ) ) ( <= ( next ( cell ?m ?n b ) ) ( does ?w ( mark ?j ?k ) ) ( true ( cell ?m ?n b ) ) ( or ( distinct ?m ?j ) ( distinct ?n ?k ) ) ) ( <= ( next ( control xplayer ) ) ( true ( control oplayer ) ) ) ( <= ( next ( control oplayer ) ) ( true ( control xplayer ) ) ) ( <= ( row ?m ?x ) ( true ( cell ?m 1 ?x ) ) ( true ( cell ?m 2 ?x ) ) ( true ( cell ?m 3 ?x ) ) ) ( <= ( column ?n ?x ) ( true ( cell 1 ?n ?x ) ) ( true ( cell 2 ?n ?x ) ) ( true ( cell 3 ?n ?x ) ) ) ( <= ( diagonal ?x ) ( true ( cell 1 1 ?x ) ) ( true ( cell 2 2 ?x ) ) ( true ( cell 3 3 ?x ) ) ) ( <= ( diagonal ?x ) ( true ( cell 1 3 ?x ) ) ( true ( cell 2 2 ?x ) ) ( true ( cell 3 1 ?x ) ) ) ( <= ( line ?x ) ( row ?m ?x ) ) ( <= ( line ?x ) ( column ?m ?x ) ) ( <= ( line ?x ) ( diagonal ?x ) ) ( <= open ( true ( cell ?m ?n b ) ) ) ( <= ( legal ?w ( mark ?x ?y ) ) ( true ( cell ?x ?y b ) ) ( true ( control ?w ) ) ) ( <= ( legal xplayer noop ) ( true ( control oplayer ) ) ) ( <= ( legal oplayer noop ) ( true ( control xplayer ) ) ) ( <= ( goal xplayer 100 ) ( line x ) ) ( <= ( goal xplayer 50 ) ( not ( line x ) ) ( not ( line o ) ) ( not open ) ) ( <= ( goal xplayer 0 ) ( line o ) ) ( <= ( goal oplayer 100 ) ( line o ) ) ( <= ( goal oplayer 50 ) ( not ( line x ) ) ( not ( line o ) ) ( not open ) ) ( <= ( goal oplayer 0 ) ( line x ) ) ( <= terminal ( line x ) ) ( <= terminal ( line o ) ) ( <= terminal ( not open ) )
after cleaning: no difference
after DeOr: -( <= ( next ( cell ?m ?n b ) ) ( does ?w ( mark ?j ?k ) ) ( true ( cell ?m ?n b ) ) ( or ( distinct ?m ?j ) ( distinct ?n ?k ) ) ) +( <= ( next ( cell ?m ?n b ) ) ( does ?w ( mark ?j ?k ) ) ( true ( cell ?m ?n b ) ) ( distinct ?m ?j ) ) +( <= ( next ( cell ?m ?n b ) ) ( does ?w ( mark ?j ?k ) ) ( true ( cell ?m ?n b ) ) ( distinct ?n ?k ) )
after constrain: no difference
after relationize: no difference
after condensationisolator: -( <= ( next ( cell ?m ?n b ) ) ( does ?w ( mark ?j ?k ) ) ( true ( cell ?m ?n b ) ) ( distinct ?m ?j ) ) -( <= ( next ( cell ?m ?n b ) ) ( does ?w ( mark ?j ?k ) ) ( true ( cell ?m ?n b ) ) ( distinct ?n ?k ) ) +( <= ( next_tmp1 ?j ) ( does ?w ( mark ?j ?k ) ) ) +( <= ( next ( cell ?m ?n b ) ) ( true ( cell ?m ?n b ) ) ( distinct ?m ?j ) ( next_tmp1 ?j ) ) +( <= ( next_tmp3 ?k ) ( does ?w ( mark ?j ?k ) ) ) +( <= ( next ( cell ?m ?n b ) ) ( true ( cell ?m ?n b ) ) ( distinct ?n ?k ) ( next_tmp3 ?k ) ) model: ( legal _ _ ) [( legal oplayer noop ), ( legal xplayer noop ), ] ( row _ _ ) [( row 2 x ), ( row 2 o ), ( row 2 b ), ( row 1 x ), ( row 1 o ), ( row 1 b ), ( row 3 x ), ( row 3 o ), ( row 3 b ), ] ( does _ ( mark _ _ ) ) [( does oplayer ( mark 2 2 ) ), ( does oplayer ( mark 2 1 ) ), ( does oplayer ( mark 2 3 ) ), ( does oplayer ( mark 1 2 ) ), ( does oplayer ( mark 1 1 ) ), ( does oplayer ( mark 1 3 ) ), ( does oplayer ( mark 3 2 ) ), ( does oplayer ( mark 3 1 ) ), ( does oplayer ( mark 3 3 ) ), ( does xplayer ( mark 2 2 ) ), ( does xplayer ( mark 2 1 ) ), ( does xplayer ( mark 2 3 ) ), ( does xplayer ( mark 1 2 ) ), ( does xplayer ( mark 1 1 ) ), ( does xplayer ( mark 1 3 ) ), ( does xplayer ( mark 3 2 ) ), ( does xplayer ( mark 3 1 ) ), ( does xplayer ( mark 3 3 ) ), ] ( line _ ) [( line x ), ( line o ), ( line b ), ] ( next ( control _ ) ) [( next ( control oplayer ) ), ( next ( control xplayer ) ), ] ( diagonal _ ) [( diagonal x ), ( diagonal o ), ( diagonal b ), ] ( legal _ ( mark _ _ ) ) [( legal oplayer ( mark 2 2 ) ), ( legal oplayer ( mark 2 1 ) ), ( legal oplayer ( mark 2 3 ) ), ( legal oplayer ( mark 1 2 ) ), ( legal oplayer ( mark 1 1 ) ), ( legal oplayer ( mark 1 3 ) ), ( legal oplayer ( mark 3 2 ) ), ( legal oplayer ( mark 3 1 ) ), ( legal oplayer ( mark 3 3 ) ), ( legal xplayer ( mark 2 2 ) ), ( legal xplayer ( mark 2 1 ) ), ( legal xplayer ( mark 2 3 ) ), ( legal xplayer ( mark 1 2 ) ), ( legal xplayer ( mark 1 1 ) ), ( legal xplayer ( mark 1 3 ) ), ( legal xplayer ( mark 3 2 ) ), ( legal xplayer ( mark 3 1 ) ), ( legal xplayer ( mark 3 3 ) ), ] ( init ( cell _ _ _ ) ) [( init ( cell 2 2 b ) ), ( init ( cell 2 1 b ) ), ( init ( cell 2 3 b ) ), ( init ( cell 1 2 b ) ), ( init ( cell 1 1 b ) ), ( init ( cell 1 3 b ) ), ( init ( cell 3 2 b ) ), ( init ( cell 3 1 b ) ), ( init ( cell 3 3 b ) ), ] ( true ( cell _ _ _ ) ) [( true ( cell 2 2 x ) ), ( true ( cell 2 2 o ) ), ( true ( cell 2 2 b ) ), ( true ( cell 2 1 x ) ), ( true ( cell 2 1 o ) ), ( true ( cell 2 1 b ) ), ( true ( cell 2 3 x ) ), ( true ( cell 2 3 o ) ), ( true ( cell 2 3 b ) ), ( true ( cell 1 2 x ) ), ( true ( cell 1 2 o ) ), ( true ( cell 1 2 b ) ), ( true ( cell 1 1 x ) ), ( true ( cell 1 1 o ) ), ( true ( cell 1 1 b ) ), ( true ( cell 1 3 x ) ), ( true ( cell 1 3 o ) ), ( true ( cell 1 3 b ) ), ( true ( cell 3 2 x ) ), ( true ( cell 3 2 o ) ), ( true ( cell 3 2 b ) ), ( true ( cell 3 1 x ) ), ( true ( cell 3 1 o ) ), ( true ( cell 3 1 b ) ), ( true ( cell 3 3 x ) ), ( true ( cell 3 3 o ) ), ( true ( cell 3 3 b ) ), ] ( goal _ _ ) [( goal oplayer 0 ), ( goal oplayer 100 ), ( goal oplayer 50 ), ( goal xplayer 0 ), ( goal xplayer 100 ), ( goal xplayer 50 ), ] open [open, ] ( does _ _ ) [( does oplayer noop ), ( does xplayer noop ), ] ( role _ ) [( role oplayer ), ( role xplayer ), ] ( true ( control _ ) ) [( true ( control oplayer ) ), ( true ( control xplayer ) ), ] ( next_tmp1 _ ) [( next_tmp1 2 ), ( next_tmp1 1 ), ( next_tmp1 3 ), ] terminal [terminal, ] ( init ( control _ ) ) [( init ( control xplayer ) ), ] ( column _ _ ) [( column 2 x ), ( column 2 o ), ( column 2 b ), ( column 1 x ), ( column 1 o ), ( column 1 b ), ( column 3 x ), ( column 3 o ), ( column 3 b ), ] ( next_tmp3 _ ) [( next_tmp3 2 ), ( next_tmp3 1 ), ( next_tmp3 3 ), ] ( next ( cell _ _ _ ) ) [( next ( cell 2 2 x ) ), ( next ( cell 2 2 o ) ), ( next ( cell 2 2 b ) ), ( next ( cell 2 1 x ) ), ( next ( cell 2 1 o ) ), ( next ( cell 2 1 b ) ), ( next ( cell 2 3 x ) ), ( next ( cell 2 3 o ) ), ( next ( cell 2 3 b ) ), ( next ( cell 1 2 x ) ), ( next ( cell 1 2 o ) ), ( next ( cell 1 2 b ) ), ( next ( cell 1 1 x ) ), ( next ( cell 1 1 o ) ), ( next ( cell 1 1 b ) ), ( next ( cell 1 3 x ) ), ( next ( cell 1 3 o ) ), ( next ( cell 1 3 b ) ), ( next ( cell 3 2 x ) ), ( next ( cell 3 2 o ) ), ( next ( cell 3 2 b ) ), ( next ( cell 3 1 x ) ), ( next ( cell 3 1 o ) ), ( next ( cell 3 1 b ) ), ( next ( cell 3 3 x ) ), ( next ( cell 3 3 o ) ), ( next ( cell 3 3 b ) ), ]
after restriction: ( legal _ _ ) no difference ( row _ _ ) [-( row 2 b ), -( row 1 b ), -( row 3 b ), ] ( does _ ( mark _ _ ) ) no difference ( line _ ) [-( line b ), ] ( next ( control _ ) ) no difference ( diagonal _ ) [-( diagonal b ), ] ( legal _ ( mark _ _ ) ) no difference ( init ( cell _ _ _ ) ) no difference ( true ( cell _ _ _ ) ) no difference ( goal _ _ ) no difference open no difference ( does _ _ ) no difference ( role _ ) no difference ( true ( control _ ) ) no difference ( next_tmp1 _ ) no difference terminal no difference ( init ( control _ ) ) no difference ( column _ _ ) [-( column 2 b ), -( column 1 b ), -( column 3 b ), ] ( next_tmp3 _ ) no difference ( next ( cell _ _ _ ) ) no difference Setting constants...
|
|