1:-include(library('ec_planner/ec_test_incl')).    2:-expects_dialect(pfc).    3 %  loading(always,'examples/Cassimatis2002/OneScreen.e').
    4%;
    5%; Copyright (c) 2005 IBM Corporation and others.
    6%; All rights reserved. This program and the accompanying materials
    7%; are made available under the terms of the Common Public License v1.0
    8%; which accompanies this distribution, and is available at
    9%; http://www.eclipse.org/legal/cpl-v10.html
   10%;
   11%; Contributors:
   12%; IBM - Initial implementation
   13%;
   14%; @phdthesis{Cassimatis:2002,
   15%;   author = "Nicholas L. Cassimatis",
   16%;   year = "2002",
   17%;   title = "Polyscheme: A Cognitive Architecture for Integrating Multiple Representation and Inference Schemes",
   18%;   address = "Cambridge, MA",
   19%;   school = "Program in Media Arts and Sciences, School of Architecture and Planning, Massachusetts Institute of Technology",
   20%; }
   21%;
   22
   23% load foundations/Root.e
   24
   25% load foundations/EC.e
   26
   27% load examples/Cassimatis2002/PolySpace.e
   28 %  loading(changed,'examples/Cassimatis2002/PolySpace.e').
   29%;
   30%; Copyright (c) 2005 IBM Corporation and others.
   31%; All rights reserved. This program and the accompanying materials
   32%; are made available under the terms of the Common Public License v1.0
   33%; which accompanies this distribution, and is available at
   34%; http://www.eclipse.org/legal/cpl-v10.html
   35%;
   36%; Contributors:
   37%; IBM - Initial implementation
   38%;
   39%; @phdthesis{Cassimatis:2002,
   40%;   author = "Nicholas L. Cassimatis",
   41%;   year = "2002",
   42%;   title = "Polyscheme: A Cognitive Architecture for Integrating Multiple Representation and Inference Schemes",
   43%;   address = "Cambridge, MA",
   44%;   school = "Program in Media Arts and Sciences, School of Architecture and Planning, Massachusetts Institute of Technology",
   45%; }
   46%;
   47%; sorts
   48
   49% sort object
   50==> sort(object).
   51
   52% sort xcoord: integer
   53==> subsort(xcoord,integer).
   54
   55% sort ycoord: integer
   56==> subsort(ycoord,integer).
   57
   58% sort grid
   59==> sort(grid).
   60
   61% sort shape
   62==> sort(shape).
   63
   64% sort color
   65==> sort(color).
   66%; constants
   67
   68% shape Round,Square
   69==> t(shape,round).
   70==> t(shape,square).
   71
   72% color Red,Green
   73==> t(color,red).
   74==> t(color,green).
   75%; predicates, fluents, and events
   76
   77% predicate Equal(object,object)
   78 %  predicate(equal(object,object)).
   79==> mpred_prop(equal(object,object),predicate).
   80==> meta_argtypes(equal(object,object)).
   81
   82% predicate Shape(object,shape)
   83 %  predicate(shape(object,shape)).
   84==> mpred_prop(shape(object,shape),predicate).
   85==> meta_argtypes(shape(object,shape)).
   86
   87% predicate Color(object,color)
   88 %  predicate(color(object,color)).
   89==> mpred_prop(color(object,color),predicate).
   90==> meta_argtypes(color(object,color)).
   91
   92% fluent Location(grid,object,xcoord,ycoord)
   93 %  fluent(location(grid,object,xcoord,ycoord)).
   94==> mpred_prop(location(grid,object,xcoord,ycoord),fluent).
   95==> meta_argtypes(location(grid,object,xcoord,ycoord)).
   96
   97% event Move(grid,object,xcoord,ycoord,xcoord,ycoord)
   98 %  event(move(grid,object,xcoord,ycoord,xcoord,ycoord)).
   99==> mpred_prop(move(grid,object,xcoord,ycoord,xcoord,ycoord),event).
  100==> meta_argtypes(move(grid,object,xcoord,ycoord,xcoord,ycoord)).
  101
  102
  103% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Cassimatis2002/PolySpace.e:38
  104%; axioms
  105% [object1,object2]
  106 % Equal(object1,object2) -> Equal(object2,object1).
  107% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Cassimatis2002/PolySpace.e:40
  108axiom(equal(Object2, Object1),
  109    [equal(Object1, Object2)]).
  110
  111
  112% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Cassimatis2002/PolySpace.e:42
  113%; objects have unique shape
  114% [object,shape1,shape2]
  115% Shape(object,shape1) & Shape(object,shape2) ->
  116% shape1=shape2.
  117% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Cassimatis2002/PolySpace.e:45
  118axiom(Shape1=Shape2,
  119    [shape(Object, Shape1), shape(Object, Shape2)]).
  120
  121
  122% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Cassimatis2002/PolySpace.e:47
  123%; objects have unique color
  124% [object,color1,color2]
  125% Color(object,color1) & Color(object,color2) ->
  126% color1=color2.
  127% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Cassimatis2002/PolySpace.e:50
  128axiom(Color1=Color2,
  129    [color(Object, Color1), color(Object, Color2)]).
  130
  131
  132% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Cassimatis2002/PolySpace.e:52
  133%; if objects are the same, they have the same shape
  134% [object1,object2]
  135% Equal(object1,object2) ->
  136% ({shape} Shape(object1,shape) & Shape(object2,shape)).
  137
  138 /*   if(equal(Object1, Object2),
  139         exists([Shape],
  140                 (shape(Object1, Shape), shape(Object2, Shape)))).
  141 */
  142
  143 /*  not(equal(Equal_Param, Shape_Param)) :-
  144       (   not(shape(Equal_Param, Shape_Ret))
  145       ;   not(shape(Shape_Param, Shape_Ret))
  146       ).
  147 */
  148% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Cassimatis2002/PolySpace.e:55
  149axiom(not(equal(Equal_Param, Shape_Param)),
  150    [not(shape(Equal_Param, Shape_Ret))]).
  151axiom(not(equal(Equal_Param, Shape_Param)),
  152    [not(shape(Shape_Param, Shape_Ret))]).
  153
  154 /*  shape(Shape_Param6, Shape_Ret7) :-
  155       equal(Shape_Param6, Equal_Ret).
  156 */
  157axiom(shape(Shape_Param6, Shape_Ret7),
  158    [equal(Shape_Param6, Equal_Ret)]).
  159
  160 /*  shape(Shape_Param9, Shape_Ret11) :-
  161       equal(Equal_Param10, Shape_Param9).
  162 */
  163axiom(shape(Shape_Param9, Shape_Ret11),
  164    [equal(Equal_Param10, Shape_Param9)]).
  165
  166
  167% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Cassimatis2002/PolySpace.e:57
  168%; if objects are the same, they have the same color
  169% [object1,object2]
  170% Equal(object1,object2) ->
  171% ({color} Color(object1,color) & Color(object2,color)).
  172
  173 /*   if(equal(Object1, Object2),
  174         exists([Color],
  175                 (color(Object1, Color), color(Object2, Color)))).
  176 */
  177
  178 /*  not(equal(Equal_Param, Color_Param)) :-
  179       (   not(color(Equal_Param, Color_Ret))
  180       ;   not(color(Color_Param, Color_Ret))
  181       ).
  182 */
  183% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Cassimatis2002/PolySpace.e:60
  184axiom(not(equal(Equal_Param, Color_Param)),
  185    [not(color(Equal_Param, Color_Ret))]).
  186axiom(not(equal(Equal_Param, Color_Param)),
  187    [not(color(Color_Param, Color_Ret))]).
  188
  189 /*  color(Color_Param6, Color_Ret7) :-
  190       equal(Color_Param6, Equal_Ret).
  191 */
  192axiom(color(Color_Param6, Color_Ret7),
  193    [equal(Color_Param6, Equal_Ret)]).
  194
  195 /*  color(Color_Param9, Color_Ret11) :-
  196       equal(Equal_Param10, Color_Param9).
  197 */
  198axiom(color(Color_Param9, Color_Ret11),
  199    [equal(Equal_Param10, Color_Param9)]).
  200
  201
  202% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Cassimatis2002/PolySpace.e:62
  203%; if objects are the same, they have the same location
  204% [grid,object1,object2,xcoord1,ycoord1,xcoord2,ycoord2,time]
  205% Equal(object1,object2) ->
  206% (HoldsAt(Location(grid,object1,xcoord1,ycoord1),time) &
  207%  HoldsAt(Location(grid,object2,xcoord2,ycoord2),time) ->
  208%  xcoord1=xcoord2 & ycoord1=ycoord2).
  209
  210 /*   if(equal(Object1, Object2),
  211         if((holds_at(location(Grid, Object1, Xcoord1, Ycoord1), Time), holds_at(location(Grid, Object2, Xcoord2, Ycoord2), Time)),
  212             (Xcoord1=Xcoord2, Ycoord1=Ycoord2))).
  213 */
  214
  215 /*  not(equal(Equal_Param, Equal_Ret)) :-
  216       ( holds_at(location(Location_Param,
  217                           Equal_Param,
  218                           Equals_Param,
  219                           Equals_Param12),
  220                  Time8),
  221         holds_at(location(Location_Param,
  222                           Equal_Ret,
  223                           Equals_Ret,
  224                           Location_Ret),
  225                  Time8)
  226       ),
  227       (   not(equals(Equals_Param, Equals_Ret))
  228       ;   not(equals(Equals_Param12, Location_Ret))
  229       ).
  230 */
  231% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Cassimatis2002/PolySpace.e:67
  232axiom(not(equal(Equal_Param, Equal_Ret)),
  233   
  234    [ not(equals(Equals_Param, Equals_Ret)),
  235      holds_at(location(Location_Param,
  236                        Equal_Param,
  237                        Equals_Param,
  238                        Equals_Param12),
  239               Time8),
  240      holds_at(location(Location_Param,
  241                        Equal_Ret,
  242                        Equals_Ret,
  243                        Location_Ret),
  244               Time8)
  245    ]).
  246axiom(not(equal(Equal_Param, Equal_Ret)),
  247   
  248    [ not(equals(Equals_Param12, Location_Ret)),
  249      holds_at(location(Location_Param,
  250                        Equal_Param,
  251                        Equals_Param,
  252                        Equals_Param12),
  253               Time8),
  254      holds_at(location(Location_Param,
  255                        Equal_Ret,
  256                        Equals_Ret,
  257                        Location_Ret),
  258               Time8)
  259    ]).
  260
  261 /*  not(holds_at(location(Location_Param17, Equal_Param20, Equals_Param18, Equals_Param19), Time16)) :-
  262       holds_at(location(Location_Param17,
  263                         Equal_Ret23,
  264                         Equals_Ret22,
  265                         Location_Ret21),
  266                Time16),
  267       (   not(equals(Equals_Param18, Equals_Ret22))
  268       ;   not(equals(Equals_Param19, Location_Ret21))
  269       ),
  270       equal(Equal_Param20, Equal_Ret23).
  271 */
  272axiom(not(holds_at(location(Location_Param17, Equal_Param20, Equals_Param18, Equals_Param19), Time16)),
  273   
  274    [ not(equals(Equals_Param18, Equals_Ret22)),
  275      holds_at(location(Location_Param17,
  276                        Equal_Ret23,
  277                        Equals_Ret22,
  278                        Location_Ret21),
  279               Time16),
  280      equal(Equal_Param20, Equal_Ret23)
  281    ]).
  282axiom(not(holds_at(location(Location_Param17, Equal_Param20, Equals_Param18, Equals_Param19), Time16)),
  283   
  284    [ not(equals(Equals_Param19, Location_Ret21)),
  285      holds_at(location(Location_Param17,
  286                        Equal_Ret23,
  287                        Equals_Ret22,
  288                        Location_Ret21),
  289               Time16),
  290      equal(Equal_Param20, Equal_Ret23)
  291    ]).
  292
  293 /*  not(holds_at(location(Location_Param25, Equal_Ret31, Equals_Ret30, Location_Ret29), Time24)) :-
  294       holds_at(location(Location_Param25,
  295                         Equal_Param28,
  296                         Equals_Param26,
  297                         Equals_Param27),
  298                Time24),
  299       (   not(equals(Equals_Param26, Equals_Ret30))
  300       ;   not(equals(Equals_Param27, Location_Ret29))
  301       ),
  302       equal(Equal_Param28, Equal_Ret31).
  303 */
  304axiom(not(holds_at(location(Location_Param25, Equal_Ret31, Equals_Ret30, Location_Ret29), Time24)),
  305   
  306    [ not(equals(Equals_Param26, Equals_Ret30)),
  307      holds_at(location(Location_Param25,
  308                        Equal_Param28,
  309                        Equals_Param26,
  310                        Equals_Param27),
  311               Time24),
  312      equal(Equal_Param28, Equal_Ret31)
  313    ]).
  314axiom(not(holds_at(location(Location_Param25, Equal_Ret31, Equals_Ret30, Location_Ret29), Time24)),
  315   
  316    [ not(equals(Equals_Param27, Location_Ret29)),
  317      holds_at(location(Location_Param25,
  318                        Equal_Param28,
  319                        Equals_Param26,
  320                        Equals_Param27),
  321               Time24),
  322      equal(Equal_Param28, Equal_Ret31)
  323    ]).
  324
  325 /*  equals(Equals_Param33, Equals_Ret36) :-
  326       ( holds_at(location(Location_Param34,
  327                           Equal_Param35,
  328                           Equals_Param33,
  329                           Location_Ret37),
  330                  Time32),
  331         holds_at(location(Location_Param34,
  332                           Equal_Ret39,
  333                           Equals_Ret36,
  334                           Location_Ret38),
  335                  Time32)
  336       ),
  337       equal(Equal_Param35, Equal_Ret39).
  338 */
  339axiom(equals(Equals_Param33, Equals_Ret36),
  340   
  341    [ holds_at(location(Location_Param34,
  342                        Equal_Param35,
  343                        Equals_Param33,
  344                        Location_Ret37),
  345               Time32),
  346      holds_at(location(Location_Param34,
  347                        Equal_Ret39,
  348                        Equals_Ret36,
  349                        Location_Ret38),
  350               Time32),
  351      equal(Equal_Param35, Equal_Ret39)
  352    ]).
  353
  354 /*  equals(Equals_Param41, Equals_Ret44) :-
  355       ( holds_at(location(Location_Param42,
  356                           Equal_Param43,
  357                           _,
  358                           Equals_Param41),
  359                  Time40),
  360         holds_at(location(Location_Param42,
  361                           Equal_Ret45,
  362                           _,
  363                           Equals_Ret44),
  364                  Time40)
  365       ),
  366       equal(Equal_Param43, Equal_Ret45).
  367 */
  368axiom(equals(Equals_Param41, Equals_Ret44),
  369   
  370    [ holds_at(location(Location_Param42,
  371                        Equal_Param43,
  372                        _,
  373                        Equals_Param41),
  374               Time40),
  375      holds_at(location(Location_Param42,
  376                        Equal_Ret45,
  377                        _,
  378                        Equals_Ret44),
  379               Time40),
  380      equal(Equal_Param43, Equal_Ret45)
  381    ]).
  382
  383
  384% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Cassimatis2002/PolySpace.e:69
  385%; object in one location at a time
  386% [grid,object,xcoord1,ycoord1,xcoord2,ycoord2,time]
  387% HoldsAt(Location(grid,object,xcoord1,ycoord1),time) &
  388% HoldsAt(Location(grid,object,xcoord2,ycoord2),time) ->
  389% xcoord1=xcoord2 & ycoord1=ycoord2.
  390
  391 /*   if((holds_at(location(Grid, Object, Xcoord1, Ycoord1), Time), holds_at(location(Grid, Object, Xcoord2, Ycoord2), Time)),
  392          (Xcoord1=Xcoord2, Ycoord1=Ycoord2)).
  393 */
  394
  395 /*  not(holds_at(location(Location_Param, A, Equals_Param, Equals_Param10), Time7)) :-
  396       holds_at(location(Location_Param,
  397                         A,
  398                         Equals_Ret,
  399                         Location_Ret),
  400                Time7),
  401       (   not(equals(Equals_Param, Equals_Ret))
  402       ;   not(equals(Equals_Param10, Location_Ret))
  403       ).
  404 */
  405% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Cassimatis2002/PolySpace.e:73
  406axiom(not(holds_at(location(Location_Param, A, Equals_Param, Equals_Param10), Time7)),
  407   
  408    [ not(equals(Equals_Param, Equals_Ret)),
  409      holds_at(location(Location_Param,
  410                        A,
  411                        Equals_Ret,
  412                        Location_Ret),
  413               Time7)
  414    ]).
  415axiom(not(holds_at(location(Location_Param, A, Equals_Param, Equals_Param10), Time7)),
  416   
  417    [ not(equals(Equals_Param10, Location_Ret)),
  418      holds_at(location(Location_Param,
  419                        A,
  420                        Equals_Ret,
  421                        Location_Ret),
  422               Time7)
  423    ]).
  424
  425 /*  not(holds_at(location(Location_Param14, A, Equals_Ret18, Location_Ret17), Time13)) :-
  426       holds_at(location(Location_Param14,
  427                         A,
  428                         Equals_Param15,
  429                         Equals_Param16),
  430                Time13),
  431       (   not(equals(Equals_Param15, Equals_Ret18))
  432       ;   not(equals(Equals_Param16, Location_Ret17))
  433       ).
  434 */
  435axiom(not(holds_at(location(Location_Param14, A, Equals_Ret18, Location_Ret17), Time13)),
  436   
  437    [ not(equals(Equals_Param15, Equals_Ret18)),
  438      holds_at(location(Location_Param14,
  439                        A,
  440                        Equals_Param15,
  441                        Equals_Param16),
  442               Time13)
  443    ]).
  444axiom(not(holds_at(location(Location_Param14, A, Equals_Ret18, Location_Ret17), Time13)),
  445   
  446    [ not(equals(Equals_Param16, Location_Ret17)),
  447      holds_at(location(Location_Param14,
  448                        A,
  449                        Equals_Param15,
  450                        Equals_Param16),
  451               Time13)
  452    ]).
  453
  454 /*  equals(Equals_Param20, Equals_Ret22) :-
  455       holds_at(location(Location_Param21,
  456                         A,
  457                         Equals_Param20,
  458                         Location_Ret23),
  459                Time19),
  460       holds_at(location(Location_Param21,
  461                         A,
  462                         Equals_Ret22,
  463                         Location_Ret24),
  464                Time19).
  465 */
  466axiom(equals(Equals_Param20, Equals_Ret22),
  467   
  468    [ holds_at(location(Location_Param21,
  469                        A,
  470                        Equals_Param20,
  471                        Location_Ret23),
  472               Time19),
  473      holds_at(location(Location_Param21,
  474                        A,
  475                        Equals_Ret22,
  476                        Location_Ret24),
  477               Time19)
  478    ]).
  479
  480 /*  equals(Equals_Param26, Equals_Ret28) :-
  481       holds_at(location(Location_Param27,
  482                         A,
  483                         _,
  484                         Equals_Param26),
  485                Time25),
  486       holds_at(location(Location_Param27,
  487                         A,
  488                         _,
  489                         Equals_Ret28),
  490                Time25).
  491 */
  492axiom(equals(Equals_Param26, Equals_Ret28),
  493   
  494    [ holds_at(location(Location_Param27,
  495                        A,
  496                        _,
  497                        Equals_Param26),
  498               Time25),
  499      holds_at(location(Location_Param27,
  500                        A,
  501                        _,
  502                        Equals_Ret28),
  503               Time25)
  504    ]).
  505
  506
  507% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Cassimatis2002/PolySpace.e:75
  508%; objects have locations
  509% [grid,object,time]
  510% (
  511% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Cassimatis2002/PolySpace.e:77
  512% {xcoord,ycoord} HoldsAt(Location(grid,object,xcoord,ycoord),time)).
  513
  514 /*  exists([Xcoord,Ycoord],
  515          holds_at(location(Grid,
  516   			 Object,
  517   			 Xcoord,
  518   			 Ycoord),
  519   		Time)).
  520 */
  521axiom(holds_at(location(Location_Param, _, _, Location_Ret), Time5),
  522    []).
  523
  524
  525% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Cassimatis2002/PolySpace.e:79
  526%; different objects are not at same location
  527% [grid,object1,object2,xcoord1,ycoord1,time]
  528% HoldsAt(Location(grid,object1,xcoord1,ycoord1),time) &
  529% HoldsAt(Location(grid,object2,xcoord1,ycoord1),time) ->
  530% Equal(object1,object2).
  531% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Cassimatis2002/PolySpace.e:83
  532axiom(equal(Object1, Object2),
  533   
  534    [ holds_at(location(Grid, Object1, Xcoord1, Ycoord1),
  535               Time),
  536      holds_at(location(Grid, Object2, Xcoord1, Ycoord1),
  537               Time)
  538    ]).
  539
  540
  541% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Cassimatis2002/PolySpace.e:85
  542%; moving to a location causes an object to be at that location
  543% [grid,object,xcoord1,ycoord1,xcoord2,ycoord2,time]
  544% Initiates(Move(grid,object,xcoord1,ycoord1,xcoord2,ycoord2),
  545%           Location(grid,object,xcoord2,ycoord2),
  546%           time).
  547% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Cassimatis2002/PolySpace.e:89
  548axiom(initiates(move(Grid, Object, Xcoord1, Ycoord1, Xcoord2, Ycoord2), location(Grid, Object, Xcoord2, Ycoord2), Time),
  549    []).
  550
  551
  552% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Cassimatis2002/PolySpace.e:91
  553%; moving to a location causes the object no longer to be at its previous
  554%; location
  555% [grid,object,xcoord1,ycoord1,xcoord2,ycoord2,time]
  556% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Cassimatis2002/PolySpace.e:94
  557% Terminates(Move(grid,object,xcoord1,ycoord1,xcoord2,ycoord2),
  558%            Location(grid,object,xcoord1,ycoord1),
  559%            time).
  560% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Cassimatis2002/PolySpace.e:96
  561axiom(terminates(move(Grid, Object, Xcoord1, Ycoord1, Xcoord2, Ycoord2), location(Grid, Object, Xcoord1, Ycoord1), Time),
  562    []).
  563
  564
  565% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Cassimatis2002/PolySpace.e:98
  566%;; allow diagonal movements
  567%;[grid,object,xcoord1,ycoord1,xcoord2,ycoord2,time]
  568%;Happens(Move(grid,object,xcoord1,ycoord1,xcoord2,ycoord2),time) ->
  569%;HoldsAt(Location(grid,object,xcoord1,ycoord1),time) &
  570%;(xcoord1=xcoord2 |
  571%; xcoord1=xcoord2+1 |
  572%; xcoord1=xcoord2-1) &
  573%;(ycoord1=ycoord2 |
  574%; ycoord1=ycoord2+1 |
  575%; ycoord1=ycoord2-1).
  576%; only allow right angle movements
  577% [grid,object,xcoord1,ycoord1,xcoord2,ycoord2,time]
  578% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Cassimatis2002/PolySpace.e:111
  579% Happens(Move(grid,object,xcoord1,ycoord1,xcoord2,ycoord2),time) ->
  580% HoldsAt(Location(grid,object,xcoord1,ycoord1),time) &
  581% ((xcoord1=xcoord2 & (ycoord1=ycoord2+1 | ycoord1=ycoord2-1)) |
  582%  (ycoord1=ycoord2 & (xcoord1=xcoord2+1 | xcoord1=xcoord2-1))).
  583% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Cassimatis2002/PolySpace.e:114
  584axiom(requires(move(Grid, Object, Xcoord1, Ycoord1, Xcoord2, Ycoord2), Time),
  585   
  586    [ equals(Ycoord1, Ycoord2+1),
  587      equals(Xcoord1, Xcoord2),
  588      holds_at(location(Grid, Object, Xcoord1, Ycoord1),
  589               Time)
  590    ]).
  591axiom(requires(move(Grid, Object, Xcoord1, Ycoord1, Xcoord2, Ycoord2), Time),
  592   
  593    [ equals(Ycoord1, Ycoord2-1),
  594      equals(Xcoord1, Xcoord2),
  595      holds_at(location(Grid, Object, Xcoord1, Ycoord1),
  596               Time)
  597    ]).
  598axiom(requires(move(Grid, Object, Xcoord1, Ycoord1, Xcoord2, Ycoord2), Time),
  599   
  600    [ equals(Xcoord1, Xcoord2+1),
  601      equals(Ycoord1, Ycoord2),
  602      holds_at(location(Grid, Object, Xcoord1, Ycoord1),
  603               Time)
  604    ]).
  605axiom(requires(move(Grid, Object, Xcoord1, Ycoord1, Xcoord2, Ycoord2), Time),
  606   
  607    [ equals(Xcoord1, Xcoord2-1),
  608      equals(Ycoord1, Ycoord2),
  609      holds_at(location(Grid, Object, Xcoord1, Ycoord1),
  610               Time)
  611    ]).
  612
  613
  614% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Cassimatis2002/PolySpace.e:116
  615%; End of file.
  616
  617% grid G1
  618==> t(grid,g1).
  619
  620% object X,Y,Screen
  621==> t(object,x).
  622==> t(object,y).
  623==> t(object,screen).
  624%; perceptions:
  625
  626
  627% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Cassimatis2002/OneScreen.e:27
  628% Shape(X,Round).
  629shape(x,round).
  630
  631
  632% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Cassimatis2002/OneScreen.e:28
  633% Color(X,Red).
  634color(x,red).
  635
  636
  637% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Cassimatis2002/OneScreen.e:29
  638% Shape(Y,Round).
  639shape(y,round).
  640
  641
  642% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Cassimatis2002/OneScreen.e:30
  643% Color(Y,Red).
  644color(y,red).
  645
  646
  647% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Cassimatis2002/OneScreen.e:31
  648% Shape(Screen,Square).
  649shape(screen,square).
  650
  651
  652% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Cassimatis2002/OneScreen.e:32
  653% Color(Screen,Green).
  654color(screen,green).
  655
  656
  657% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Cassimatis2002/OneScreen.e:33
  658% [time]
  659 % HoldsAt(Location(G1,Screen,2,0),time).
  660holds_at(location(g1,screen,2,0),Time).
  661
  662
  663% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Cassimatis2002/OneScreen.e:34
  664% HoldsAt(Location(G1,X,1,1),0).
  665axiom(initially(location(g1, x, 1, 1)),
  666    []).
  667
  668
  669% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Cassimatis2002/OneScreen.e:35
  670% HoldsAt(Location(G1,Y,3,1),2).
  671holds_at(location(g1,y,3,1),2).
  672
  673
  674% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Cassimatis2002/OneScreen.e:37
  675% [xcoord,ycoord,time]
  676% xcoord!=% 2 & !(xcoord=1 & ycoord=1 & time=0) ->
  677% !HoldsAt(Location(G1,X,xcoord,ycoord),time) |
  678% xcoord=3 & ycoord=1 & time=2 & Equal(X,Y).
  679
  680 /*   if(({dif(Xcoord, 2)}, (not(equals(Xcoord, 1));not(equals(Ycoord, 1));not(equals(Time, 0)))),
  681          (not(holds_at(location(g1, x, Xcoord, Ycoord), Time));Xcoord=3, Ycoord=1, Time=2, equal(x, y))).
  682 */
  683
  684 /*  not({dif(X, 2)}) :-
  685       (   not(equals(X, 1))
  686       ;   not(equals(Equals_Param, 1))
  687       ;   not(equals(Time4, 0))
  688       ),
  689       holds_at(location(g1, x, X, Equals_Param), Time4),
  690       (   not(equals(X, 3))
  691       ;   not(equals(Equals_Param, 1))
  692       ;   not(equals(Time4, 2))
  693       ;   not(equal(x, y))
  694       ).
  695 */
  696% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Cassimatis2002/OneScreen.e:40
  697axiom(not({dif(X, 2)}),
  698   
  699    [ not(equals(X, 3)),
  700      not(equals(X, 1)),
  701      holds_at(location(g1, x, X, Equals_Param), Time4)
  702    ]).
  703axiom(not({dif(X, 2)}),
  704   
  705    [ not(equals(Equals_Param, 1)),
  706      not(equals(X, 1)),
  707      holds_at(location(g1, x, X, Equals_Param), Time4)
  708    ]).
  709axiom(not({dif(X, 2)}),
  710   
  711    [ not(equals(Time4, 2)),
  712      not(equals(X, 1)),
  713      holds_at(location(g1, x, X, Equals_Param), Time4)
  714    ]).
  715axiom(not({dif(X, 2)}),
  716   
  717    [ not(equal(x, y)),
  718      not(equals(X, 1)),
  719      holds_at(location(g1, x, X, Equals_Param), Time4)
  720    ]).
  721axiom(not({dif(X, 2)}),
  722   
  723    [ not(equals(X, 3)),
  724      not(equals(Equals_Param, 1)),
  725      holds_at(location(g1, x, X, Equals_Param), Time4)
  726    ]).
  727axiom(not({dif(X, 2)}),
  728   
  729    [ not(equals(Equals_Param, 1)),
  730      not(equals(Equals_Param, 1)),
  731      holds_at(location(g1, x, X, Equals_Param), Time4)
  732    ]).
  733axiom(not({dif(X, 2)}),
  734   
  735    [ not(equals(Time4, 2)),
  736      not(equals(Equals_Param, 1)),
  737      holds_at(location(g1, x, X, Equals_Param), Time4)
  738    ]).
  739axiom(not({dif(X, 2)}),
  740   
  741    [ not(equal(x, y)),
  742      not(equals(Equals_Param, 1)),
  743      holds_at(location(g1, x, X, Equals_Param), Time4)
  744    ]).
  745axiom(not({dif(X, 2)}),
  746   
  747    [ not(equals(X, 3)),
  748      not(equals(Time4, 0)),
  749      holds_at(location(g1, x, X, Equals_Param), Time4)
  750    ]).
  751axiom(not({dif(X, 2)}),
  752   
  753    [ not(equals(Equals_Param, 1)),
  754      not(equals(Time4, 0)),
  755      holds_at(location(g1, x, X, Equals_Param), Time4)
  756    ]).
  757axiom(not({dif(X, 2)}),
  758   
  759    [ not(equals(Time4, 2)),
  760      not(equals(Time4, 0)),
  761      holds_at(location(g1, x, X, Equals_Param), Time4)
  762    ]).
  763axiom(not({dif(X, 2)}),
  764   
  765    [ not(equal(x, y)),
  766      not(equals(Time4, 0)),
  767      holds_at(location(g1, x, X, Equals_Param), Time4)
  768    ]).
  769
  770 /*  equals(X6, 1) :-
  771       { dif(X6, 2)
  772       },
  773       holds_at(location(g1, x, X6, Equals_Param8), Time7),
  774       (   not(equals(X6, 3))
  775       ;   not(equals(Equals_Param8, 1))
  776       ;   not(equals(Time7, 2))
  777       ;   not(equal(x, y))
  778       ).
  779 */
  780axiom(equals(X6, 1),
  781   
  782    [ not(equals(X6, 3)),
  783      dif(X6, 2),
  784      holds_at(location(g1, x, X6, Equals_Param8), Time7)
  785    ]).
  786axiom(equals(X6, 1),
  787   
  788    [ not(equals(Equals_Param8, 1)),
  789      dif(X6, 2),
  790      holds_at(location(g1, x, X6, Equals_Param8), Time7)
  791    ]).
  792axiom(equals(X6, 1),
  793   
  794    [ not(equals(Time7, 2)),
  795      dif(X6, 2),
  796      holds_at(location(g1, x, X6, Equals_Param8), Time7)
  797    ]).
  798axiom(equals(X6, 1),
  799   
  800    [ not(equal(x, y)),
  801      dif(X6, 2),
  802      holds_at(location(g1, x, X6, Equals_Param8), Time7)
  803    ]).
  804
  805 /*  equals(Equals_Param11, 1) :-
  806       { dif(X9, 2)
  807       },
  808       holds_at(location(g1, x, X9, Equals_Param11), Time10),
  809       (   not(equals(X9, 3))
  810       ;   not(equals(Equals_Param11, 1))
  811       ;   not(equals(Time10, 2))
  812       ;   not(equal(x, y))
  813       ).
  814 */
  815axiom(equals(Equals_Param11, 1),
  816   
  817    [ not(equals(X9, 3)),
  818      dif(X9, 2),
  819      holds_at(location(g1, x, X9, Equals_Param11), Time10)
  820    ]).
  821axiom(equals(Equals_Param11, 1),
  822   
  823    [ not(equals(Equals_Param11, 1)),
  824      dif(X9, 2),
  825      holds_at(location(g1, x, X9, Equals_Param11), Time10)
  826    ]).
  827axiom(equals(Equals_Param11, 1),
  828   
  829    [ not(equals(Time10, 2)),
  830      dif(X9, 2),
  831      holds_at(location(g1, x, X9, Equals_Param11), Time10)
  832    ]).
  833axiom(equals(Equals_Param11, 1),
  834   
  835    [ not(equal(x, y)),
  836      dif(X9, 2),
  837      holds_at(location(g1, x, X9, Equals_Param11), Time10)
  838    ]).
  839
  840 /*  equals(Time13, 0) :-
  841       { dif(X12, 2)
  842       },
  843       holds_at(location(g1, x, X12, Equals_Param14), Time13),
  844       (   not(equals(X12, 3))
  845       ;   not(equals(Equals_Param14, 1))
  846       ;   not(equals(Time13, 2))
  847       ;   not(equal(x, y))
  848       ).
  849 */
  850axiom(equals(Time13, 0),
  851   
  852    [ not(equals(X12, 3)),
  853      dif(X12, 2),
  854      holds_at(location(g1, x, X12, Equals_Param14), Time13)
  855    ]).
  856axiom(equals(Time13, 0),
  857   
  858    [ not(equals(Equals_Param14, 1)),
  859      dif(X12, 2),
  860      holds_at(location(g1, x, X12, Equals_Param14), Time13)
  861    ]).
  862axiom(equals(Time13, 0),
  863   
  864    [ not(equals(Time13, 2)),
  865      dif(X12, 2),
  866      holds_at(location(g1, x, X12, Equals_Param14), Time13)
  867    ]).
  868axiom(equals(Time13, 0),
  869   
  870    [ not(equal(x, y)),
  871      dif(X12, 2),
  872      holds_at(location(g1, x, X12, Equals_Param14), Time13)
  873    ]).
  874
  875 /*  not(holds_at(location(g1, x, X15, Equals_Param17), Time16)) :-
  876       (   not(equals(X15, 3))
  877       ;   not(equals(Equals_Param17, 1))
  878       ;   not(equals(Time16, 2))
  879       ;   not(equal(x, y))
  880       ),
  881       { dif(X15, 2)
  882       },
  883       (   not(equals(X15, 1))
  884       ;   not(equals(Equals_Param17, 1))
  885       ;   not(equals(Time16, 0))
  886       ).
  887 */
  888axiom(not(holds_at(location(g1, x, X15, Equals_Param17), Time16)),
  889    [not(equals(X15, 1)), not(equals(X15, 3)), dif(X15, 2)]).
  890axiom(not(holds_at(location(g1, x, X15, Equals_Param17), Time16)),
  891   
  892    [ not(equals(Equals_Param17, 1)),
  893      not(equals(X15, 3)),
  894      dif(X15, 2)
  895    ]).
  896axiom(not(holds_at(location(g1, x, X15, Equals_Param17), Time16)),
  897    [not(equals(Time16, 0)), not(equals(X15, 3)), dif(X15, 2)]).
  898axiom(not(holds_at(location(g1, x, X15, Equals_Param17), Time16)),
  899   
  900    [ not(equals(X15, 1)),
  901      not(equals(Equals_Param17, 1)),
  902      dif(X15, 2)
  903    ]).
  904axiom(not(holds_at(location(g1, x, X15, Equals_Param17), Time16)),
  905   
  906    [ not(equals(Equals_Param17, 1)),
  907      not(equals(Equals_Param17, 1)),
  908      dif(X15, 2)
  909    ]).
  910axiom(not(holds_at(location(g1, x, X15, Equals_Param17), Time16)),
  911   
  912    [ not(equals(Time16, 0)),
  913      not(equals(Equals_Param17, 1)),
  914      dif(X15, 2)
  915    ]).
  916axiom(not(holds_at(location(g1, x, X15, Equals_Param17), Time16)),
  917    [not(equals(X15, 1)), not(equals(Time16, 2)), dif(X15, 2)]).
  918axiom(not(holds_at(location(g1, x, X15, Equals_Param17), Time16)),
  919   
  920    [ not(equals(Equals_Param17, 1)),
  921      not(equals(Time16, 2)),
  922      dif(X15, 2)
  923    ]).
  924axiom(not(holds_at(location(g1, x, X15, Equals_Param17), Time16)),
  925    [not(equals(Time16, 0)), not(equals(Time16, 2)), dif(X15, 2)]).
  926axiom(not(holds_at(location(g1, x, X15, Equals_Param17), Time16)),
  927    [not(equals(X15, 1)), not(equal(x, y)), dif(X15, 2)]).
  928axiom(not(holds_at(location(g1, x, X15, Equals_Param17), Time16)),
  929    [not(equals(Equals_Param17, 1)), not(equal(x, y)), dif(X15, 2)]).
  930axiom(not(holds_at(location(g1, x, X15, Equals_Param17), Time16)),
  931    [not(equals(Time16, 0)), not(equal(x, y)), dif(X15, 2)]).
  932
  933 /*  equals(X18, 3) :-
  934       holds_at(location(g1, x, X18, Equals_Param20), Time19),
  935       { dif(X18, 2)
  936       },
  937       (   not(equals(X18, 1))
  938       ;   not(equals(Equals_Param20, 1))
  939       ;   not(equals(Time19, 0))
  940       ).
  941 */
  942axiom(equals(X18, 3),
  943   
  944    [ not(equals(X18, 1)),
  945      holds_at(location(g1, x, X18, Equals_Param20), Time19),
  946      dif(X18, 2)
  947    ]).
  948axiom(equals(X18, 3),
  949   
  950    [ not(equals(Equals_Param20, 1)),
  951      holds_at(location(g1, x, X18, Equals_Param20), Time19),
  952      dif(X18, 2)
  953    ]).
  954axiom(equals(X18, 3),
  955   
  956    [ not(equals(Time19, 0)),
  957      holds_at(location(g1, x, X18, Equals_Param20), Time19),
  958      dif(X18, 2)
  959    ]).
  960
  961 /*  equals(Equals_Param23, 1) :-
  962       holds_at(location(g1, x, X21, Equals_Param23), Time22),
  963       { dif(X21, 2)
  964       },
  965       (   not(equals(X21, 1))
  966       ;   not(equals(Equals_Param23, 1))
  967       ;   not(equals(Time22, 0))
  968       ).
  969 */
  970axiom(equals(Equals_Param23, 1),
  971   
  972    [ not(equals(X21, 1)),
  973      holds_at(location(g1, x, X21, Equals_Param23), Time22),
  974      dif(X21, 2)
  975    ]).
  976axiom(equals(Equals_Param23, 1),
  977   
  978    [ not(equals(Equals_Param23, 1)),
  979      holds_at(location(g1, x, X21, Equals_Param23), Time22),
  980      dif(X21, 2)
  981    ]).
  982axiom(equals(Equals_Param23, 1),
  983   
  984    [ not(equals(Time22, 0)),
  985      holds_at(location(g1, x, X21, Equals_Param23), Time22),
  986      dif(X21, 2)
  987    ]).
  988
  989 /*  equals(Time25, 2) :-
  990       holds_at(location(g1, x, X24, Equals_Param26), Time25),
  991       { dif(X24, 2)
  992       },
  993       (   not(equals(X24, 1))
  994       ;   not(equals(Equals_Param26, 1))
  995       ;   not(equals(Time25, 0))
  996       ).
  997 */
  998axiom(equals(Time25, 2),
  999   
 1000    [ not(equals(X24, 1)),
 1001      holds_at(location(g1, x, X24, Equals_Param26), Time25),
 1002      dif(X24, 2)
 1003    ]).
 1004axiom(equals(Time25, 2),
 1005   
 1006    [ not(equals(Equals_Param26, 1)),
 1007      holds_at(location(g1, x, X24, Equals_Param26), Time25),
 1008      dif(X24, 2)
 1009    ]).
 1010axiom(equals(Time25, 2),
 1011   
 1012    [ not(equals(Time25, 0)),
 1013      holds_at(location(g1, x, X24, Equals_Param26), Time25),
 1014      dif(X24, 2)
 1015    ]).
 1016
 1017 /*  equal(x, y) :-
 1018       holds_at(location(g1, x, X27, Equals_Param29), Time28),
 1019       { dif(X27, 2)
 1020       },
 1021       (   not(equals(X27, 1))
 1022       ;   not(equals(Equals_Param29, 1))
 1023       ;   not(equals(Time28, 0))
 1024       ).
 1025 */
 1026axiom(equal(x, y),
 1027   
 1028    [ not(equals(X27, 1)),
 1029      holds_at(location(g1, x, X27, Equals_Param29), Time28),
 1030      dif(X27, 2)
 1031    ]).
 1032axiom(equal(x, y),
 1033   
 1034    [ not(equals(Equals_Param29, 1)),
 1035      holds_at(location(g1, x, X27, Equals_Param29), Time28),
 1036      dif(X27, 2)
 1037    ]).
 1038axiom(equal(x, y),
 1039   
 1040    [ not(equals(Time28, 0)),
 1041      holds_at(location(g1, x, X27, Equals_Param29), Time28),
 1042      dif(X27, 2)
 1043    ]).
 1044
 1045
 1046% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Cassimatis2002/OneScreen.e:42
 1047% [xcoord,ycoord,time]
 1048% xcoord!=% 2 & !(xcoord=3 & ycoord=1 & time=2) ->
 1049% !HoldsAt(Location(G1,Y,xcoord,ycoord),time) |
 1050% xcoord=1 & ycoord=1 & time=0 & Equal(X,Y).
 1051
 1052 /*   if(({dif(Xcoord, 2)}, (not(equals(Xcoord, 3));not(equals(Ycoord, 1));not(equals(Time, 2)))),
 1053          (not(holds_at(location(g1, y, Xcoord, Ycoord), Time));Xcoord=1, Ycoord=1, Time=0, equal(x, y))).
 1054 */
 1055
 1056 /*  not({dif(Y, 2)}) :-
 1057       (   not(equals(Y, 3))
 1058       ;   not(equals(Equals_Param, 1))
 1059       ;   not(equals(Time4, 2))
 1060       ),
 1061       holds_at(location(g1, y, Y, Equals_Param), Time4),
 1062       (   not(equals(Y, 1))
 1063       ;   not(equals(Equals_Param, 1))
 1064       ;   not(equals(Time4, 0))
 1065       ;   not(equal(x, y))
 1066       ).
 1067 */
 1068% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Cassimatis2002/OneScreen.e:45
 1069axiom(not({dif(Y, 2)}),
 1070   
 1071    [ not(equals(Y, 1)),
 1072      not(equals(Y, 3)),
 1073      holds_at(location(g1, y, Y, Equals_Param), Time4)
 1074    ]).
 1075axiom(not({dif(Y, 2)}),
 1076   
 1077    [ not(equals(Equals_Param, 1)),
 1078      not(equals(Y, 3)),
 1079      holds_at(location(g1, y, Y, Equals_Param), Time4)
 1080    ]).
 1081axiom(not({dif(Y, 2)}),
 1082   
 1083    [ not(equals(Time4, 0)),
 1084      not(equals(Y, 3)),
 1085      holds_at(location(g1, y, Y, Equals_Param), Time4)
 1086    ]).
 1087axiom(not({dif(Y, 2)}),
 1088   
 1089    [ not(equal(x, y)),
 1090      not(equals(Y, 3)),
 1091      holds_at(location(g1, y, Y, Equals_Param), Time4)
 1092    ]).
 1093axiom(not({dif(Y, 2)}),
 1094   
 1095    [ not(equals(Y, 1)),
 1096      not(equals(Equals_Param, 1)),
 1097      holds_at(location(g1, y, Y, Equals_Param), Time4)
 1098    ]).
 1099axiom(not({dif(Y, 2)}),
 1100   
 1101    [ not(equals(Equals_Param, 1)),
 1102      not(equals(Equals_Param, 1)),
 1103      holds_at(location(g1, y, Y, Equals_Param), Time4)
 1104    ]).
 1105axiom(not({dif(Y, 2)}),
 1106   
 1107    [ not(equals(Time4, 0)),
 1108      not(equals(Equals_Param, 1)),
 1109      holds_at(location(g1, y, Y, Equals_Param), Time4)
 1110    ]).
 1111axiom(not({dif(Y, 2)}),
 1112   
 1113    [ not(equal(x, y)),
 1114      not(equals(Equals_Param, 1)),
 1115      holds_at(location(g1, y, Y, Equals_Param), Time4)
 1116    ]).
 1117axiom(not({dif(Y, 2)}),
 1118   
 1119    [ not(equals(Y, 1)),
 1120      not(equals(Time4, 2)),
 1121      holds_at(location(g1, y, Y, Equals_Param), Time4)
 1122    ]).
 1123axiom(not({dif(Y, 2)}),
 1124   
 1125    [ not(equals(Equals_Param, 1)),
 1126      not(equals(Time4, 2)),
 1127      holds_at(location(g1, y, Y, Equals_Param), Time4)
 1128    ]).
 1129axiom(not({dif(Y, 2)}),
 1130   
 1131    [ not(equals(Time4, 0)),
 1132      not(equals(Time4, 2)),
 1133      holds_at(location(g1, y, Y, Equals_Param), Time4)
 1134    ]).
 1135axiom(not({dif(Y, 2)}),
 1136   
 1137    [ not(equal(x, y)),
 1138      not(equals(Time4, 2)),
 1139      holds_at(location(g1, y, Y, Equals_Param), Time4)
 1140    ]).
 1141
 1142 /*  equals(Y6, 3) :-
 1143       { dif(Y6, 2)
 1144       },
 1145       holds_at(location(g1, y, Y6, Equals_Param8), Time7),
 1146       (   not(equals(Y6, 1))
 1147       ;   not(equals(Equals_Param8, 1))
 1148       ;   not(equals(Time7, 0))
 1149       ;   not(equal(x, y))
 1150       ).
 1151 */
 1152axiom(equals(Y6, 3),
 1153   
 1154    [ not(equals(Y6, 1)),
 1155      dif(Y6, 2),
 1156      holds_at(location(g1, y, Y6, Equals_Param8), Time7)
 1157    ]).
 1158axiom(equals(Y6, 3),
 1159   
 1160    [ not(equals(Equals_Param8, 1)),
 1161      dif(Y6, 2),
 1162      holds_at(location(g1, y, Y6, Equals_Param8), Time7)
 1163    ]).
 1164axiom(equals(Y6, 3),
 1165   
 1166    [ not(equals(Time7, 0)),
 1167      dif(Y6, 2),
 1168      holds_at(location(g1, y, Y6, Equals_Param8), Time7)
 1169    ]).
 1170axiom(equals(Y6, 3),
 1171   
 1172    [ not(equal(x, y)),
 1173      dif(Y6, 2),
 1174      holds_at(location(g1, y, Y6, Equals_Param8), Time7)
 1175    ]).
 1176
 1177 /*  equals(Equals_Param11, 1) :-
 1178       { dif(Y9, 2)
 1179       },
 1180       holds_at(location(g1, y, Y9, Equals_Param11), Time10),
 1181       (   not(equals(Y9, 1))
 1182       ;   not(equals(Equals_Param11, 1))
 1183       ;   not(equals(Time10, 0))
 1184       ;   not(equal(x, y))
 1185       ).
 1186 */
 1187axiom(equals(Equals_Param11, 1),
 1188   
 1189    [ not(equals(Y9, 1)),
 1190      dif(Y9, 2),
 1191      holds_at(location(g1, y, Y9, Equals_Param11), Time10)
 1192    ]).
 1193axiom(equals(Equals_Param11, 1),
 1194   
 1195    [ not(equals(Equals_Param11, 1)),
 1196      dif(Y9, 2),
 1197      holds_at(location(g1, y, Y9, Equals_Param11), Time10)
 1198    ]).
 1199axiom(equals(Equals_Param11, 1),
 1200   
 1201    [ not(equals(Time10, 0)),
 1202      dif(Y9, 2),
 1203      holds_at(location(g1, y, Y9, Equals_Param11), Time10)
 1204    ]).
 1205axiom(equals(Equals_Param11, 1),
 1206   
 1207    [ not(equal(x, y)),
 1208      dif(Y9, 2),
 1209      holds_at(location(g1, y, Y9, Equals_Param11), Time10)
 1210    ]).
 1211
 1212 /*  equals(Time13, 2) :-
 1213       { dif(Y12, 2)
 1214       },
 1215       holds_at(location(g1, y, Y12, Equals_Param14), Time13),
 1216       (   not(equals(Y12, 1))
 1217       ;   not(equals(Equals_Param14, 1))
 1218       ;   not(equals(Time13, 0))
 1219       ;   not(equal(x, y))
 1220       ).
 1221 */
 1222axiom(equals(Time13, 2),
 1223   
 1224    [ not(equals(Y12, 1)),
 1225      dif(Y12, 2),
 1226      holds_at(location(g1, y, Y12, Equals_Param14), Time13)
 1227    ]).
 1228axiom(equals(Time13, 2),
 1229   
 1230    [ not(equals(Equals_Param14, 1)),
 1231      dif(Y12, 2),
 1232      holds_at(location(g1, y, Y12, Equals_Param14), Time13)
 1233    ]).
 1234axiom(equals(Time13, 2),
 1235   
 1236    [ not(equals(Time13, 0)),
 1237      dif(Y12, 2),
 1238      holds_at(location(g1, y, Y12, Equals_Param14), Time13)
 1239    ]).
 1240axiom(equals(Time13, 2),
 1241   
 1242    [ not(equal(x, y)),
 1243      dif(Y12, 2),
 1244      holds_at(location(g1, y, Y12, Equals_Param14), Time13)
 1245    ]).
 1246
 1247 /*  not(holds_at(location(g1, y, Y15, Equals_Param17), Time16)) :-
 1248       (   not(equals(Y15, 1))
 1249       ;   not(equals(Equals_Param17, 1))
 1250       ;   not(equals(Time16, 0))
 1251       ;   not(equal(x, y))
 1252       ),
 1253       { dif(Y15, 2)
 1254       },
 1255       (   not(equals(Y15, 3))
 1256       ;   not(equals(Equals_Param17, 1))
 1257       ;   not(equals(Time16, 2))
 1258       ).
 1259 */
 1260axiom(not(holds_at(location(g1, y, Y15, Equals_Param17), Time16)),
 1261    [not(equals(Y15, 3)), not(equals(Y15, 1)), dif(Y15, 2)]).
 1262axiom(not(holds_at(location(g1, y, Y15, Equals_Param17), Time16)),
 1263   
 1264    [ not(equals(Equals_Param17, 1)),
 1265      not(equals(Y15, 1)),
 1266      dif(Y15, 2)
 1267    ]).
 1268axiom(not(holds_at(location(g1, y, Y15, Equals_Param17), Time16)),
 1269    [not(equals(Time16, 2)), not(equals(Y15, 1)), dif(Y15, 2)]).
 1270axiom(not(holds_at(location(g1, y, Y15, Equals_Param17), Time16)),
 1271   
 1272    [ not(equals(Y15, 3)),
 1273      not(equals(Equals_Param17, 1)),
 1274      dif(Y15, 2)
 1275    ]).
 1276axiom(not(holds_at(location(g1, y, Y15, Equals_Param17), Time16)),
 1277   
 1278    [ not(equals(Equals_Param17, 1)),
 1279      not(equals(Equals_Param17, 1)),
 1280      dif(Y15, 2)
 1281    ]).
 1282axiom(not(holds_at(location(g1, y, Y15, Equals_Param17), Time16)),
 1283   
 1284    [ not(equals(Time16, 2)),
 1285      not(equals(Equals_Param17, 1)),
 1286      dif(Y15, 2)
 1287    ]).
 1288axiom(not(holds_at(location(g1, y, Y15, Equals_Param17), Time16)),
 1289    [not(equals(Y15, 3)), not(equals(Time16, 0)), dif(Y15, 2)]).
 1290axiom(not(holds_at(location(g1, y, Y15, Equals_Param17), Time16)),
 1291   
 1292    [ not(equals(Equals_Param17, 1)),
 1293      not(equals(Time16, 0)),
 1294      dif(Y15, 2)
 1295    ]).
 1296axiom(not(holds_at(location(g1, y, Y15, Equals_Param17), Time16)),
 1297    [not(equals(Time16, 2)), not(equals(Time16, 0)), dif(Y15, 2)]).
 1298axiom(not(holds_at(location(g1, y, Y15, Equals_Param17), Time16)),
 1299    [not(equals(Y15, 3)), not(equal(x, y)), dif(Y15, 2)]).
 1300axiom(not(holds_at(location(g1, y, Y15, Equals_Param17), Time16)),
 1301    [not(equals(Equals_Param17, 1)), not(equal(x, y)), dif(Y15, 2)]).
 1302axiom(not(holds_at(location(g1, y, Y15, Equals_Param17), Time16)),
 1303    [not(equals(Time16, 2)), not(equal(x, y)), dif(Y15, 2)]).
 1304
 1305 /*  equals(Y18, 1) :-
 1306       holds_at(location(g1, y, Y18, Equals_Param20), Time19),
 1307       { dif(Y18, 2)
 1308       },
 1309       (   not(equals(Y18, 3))
 1310       ;   not(equals(Equals_Param20, 1))
 1311       ;   not(equals(Time19, 2))
 1312       ).
 1313 */
 1314axiom(equals(Y18, 1),
 1315   
 1316    [ not(equals(Y18, 3)),
 1317      holds_at(location(g1, y, Y18, Equals_Param20), Time19),
 1318      dif(Y18, 2)
 1319    ]).
 1320axiom(equals(Y18, 1),
 1321   
 1322    [ not(equals(Equals_Param20, 1)),
 1323      holds_at(location(g1, y, Y18, Equals_Param20), Time19),
 1324      dif(Y18, 2)
 1325    ]).
 1326axiom(equals(Y18, 1),
 1327   
 1328    [ not(equals(Time19, 2)),
 1329      holds_at(location(g1, y, Y18, Equals_Param20), Time19),
 1330      dif(Y18, 2)
 1331    ]).
 1332
 1333 /*  equals(Equals_Param23, 1) :-
 1334       holds_at(location(g1, y, Y21, Equals_Param23), Time22),
 1335       { dif(Y21, 2)
 1336       },
 1337       (   not(equals(Y21, 3))
 1338       ;   not(equals(Equals_Param23, 1))
 1339       ;   not(equals(Time22, 2))
 1340       ).
 1341 */
 1342axiom(equals(Equals_Param23, 1),
 1343   
 1344    [ not(equals(Y21, 3)),
 1345      holds_at(location(g1, y, Y21, Equals_Param23), Time22),
 1346      dif(Y21, 2)
 1347    ]).
 1348axiom(equals(Equals_Param23, 1),
 1349   
 1350    [ not(equals(Equals_Param23, 1)),
 1351      holds_at(location(g1, y, Y21, Equals_Param23), Time22),
 1352      dif(Y21, 2)
 1353    ]).
 1354axiom(equals(Equals_Param23, 1),
 1355   
 1356    [ not(equals(Time22, 2)),
 1357      holds_at(location(g1, y, Y21, Equals_Param23), Time22),
 1358      dif(Y21, 2)
 1359    ]).
 1360
 1361 /*  equals(Time25, 0) :-
 1362       holds_at(location(g1, y, Y24, Equals_Param26), Time25),
 1363       { dif(Y24, 2)
 1364       },
 1365       (   not(equals(Y24, 3))
 1366       ;   not(equals(Equals_Param26, 1))
 1367       ;   not(equals(Time25, 2))
 1368       ).
 1369 */
 1370axiom(equals(Time25, 0),
 1371   
 1372    [ not(equals(Y24, 3)),
 1373      holds_at(location(g1, y, Y24, Equals_Param26), Time25),
 1374      dif(Y24, 2)
 1375    ]).
 1376axiom(equals(Time25, 0),
 1377   
 1378    [ not(equals(Equals_Param26, 1)),
 1379      holds_at(location(g1, y, Y24, Equals_Param26), Time25),
 1380      dif(Y24, 2)
 1381    ]).
 1382axiom(equals(Time25, 0),
 1383   
 1384    [ not(equals(Time25, 2)),
 1385      holds_at(location(g1, y, Y24, Equals_Param26), Time25),
 1386      dif(Y24, 2)
 1387    ]).
 1388
 1389 /*  equal(x, y) :-
 1390       holds_at(location(g1, y, Y27, Equals_Param29), Time28),
 1391       { dif(Y27, 2)
 1392       },
 1393       (   not(equals(Y27, 3))
 1394       ;   not(equals(Equals_Param29, 1))
 1395       ;   not(equals(Time28, 2))
 1396       ).
 1397 */
 1398axiom(equal(x, y),
 1399   
 1400    [ not(equals(Y27, 3)),
 1401      holds_at(location(g1, y, Y27, Equals_Param29), Time28),
 1402      dif(Y27, 2)
 1403    ]).
 1404axiom(equal(x, y),
 1405   
 1406    [ not(equals(Equals_Param29, 1)),
 1407      holds_at(location(g1, y, Y27, Equals_Param29), Time28),
 1408      dif(Y27, 2)
 1409    ]).
 1410axiom(equal(x, y),
 1411   
 1412    [ not(equals(Time28, 2)),
 1413      holds_at(location(g1, y, Y27, Equals_Param29), Time28),
 1414      dif(Y27, 2)
 1415    ]).
 1416
 1417% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Cassimatis2002/OneScreen.e:47
 1418% range time 0 2
 1419% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Cassimatis2002/OneScreen.e:48
 1420==> range(time,0,2).
 1421
 1422% range xcoord 0 4
 1423% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Cassimatis2002/OneScreen.e:49
 1424==> range(xcoord,0,4).
 1425
 1426% range ycoord 0 2
 1427% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Cassimatis2002/OneScreen.e:50
 1428==> range(ycoord,0,2).
 1429
 1430% range offset 0 0
 1431% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/examples/Cassimatis2002/OneScreen.e:51
 1432==> range(offset,0,0).
 1433%; End of file.