1:-include(library('ec_planner/ec_test_incl')).    2:-expects_dialect(pfc).    3 %  loading(always,'ecnet/PolySpace.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%; sorts
   23
   24% sort object
   25==> sort(object).
   26
   27% sort xcoord: integer
   28==> subsort(xcoord,integer).
   29
   30% sort ycoord: integer
   31==> subsort(ycoord,integer).
   32
   33% sort grid
   34==> sort(grid).
   35
   36% sort shape
   37==> sort(shape).
   38
   39% sort color
   40==> sort(color).
   41%; constants
   42
   43% shape Round,Square
   44==> t(shape,round).
   45==> t(shape,square).
   46
   47% color Red,Green
   48==> t(color,red).
   49==> t(color,green).
   50%; predicates, fluents, and events
   51
   52% predicate Equal(object,object)
   53 %  predicate(equal(object,object)).
   54==> mpred_prop(equal(object,object),predicate).
   55==> meta_argtypes(equal(object,object)).
   56
   57% predicate Shape(object,shape)
   58 %  predicate(shape(object,shape)).
   59==> mpred_prop(shape(object,shape),predicate).
   60==> meta_argtypes(shape(object,shape)).
   61
   62% predicate Color(object,color)
   63 %  predicate(color(object,color)).
   64==> mpred_prop(color(object,color),predicate).
   65==> meta_argtypes(color(object,color)).
   66
   67% fluent Location(grid,object,xcoord,ycoord)
   68 %  fluent(location(grid,object,xcoord,ycoord)).
   69==> mpred_prop(location(grid,object,xcoord,ycoord),fluent).
   70==> meta_argtypes(location(grid,object,xcoord,ycoord)).
   71
   72% event Move(grid,object,xcoord,ycoord,xcoord,ycoord)
   73 %  event(move(grid,object,xcoord,ycoord,xcoord,ycoord)).
   74==> mpred_prop(move(grid,object,xcoord,ycoord,xcoord,ycoord),event).
   75==> meta_argtypes(move(grid,object,xcoord,ycoord,xcoord,ycoord)).
   76
   77
   78% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/ecnet/PolySpace.e:38
   79%; axioms
   80% [object1,object2]
   81 % Equal(object1,object2) -> Equal(object2,object1).
   82% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/ecnet/PolySpace.e:40
   83axiom(equal(Object2, Object1),
   84    [equal(Object1, Object2)]).
   85
   86
   87% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/ecnet/PolySpace.e:42
   88%; objects have unique shape
   89% [object,shape1,shape2]
   90% Shape(object,shape1) & Shape(object,shape2) ->
   91% shape1=shape2.
   92% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/ecnet/PolySpace.e:45
   93axiom(Shape1=Shape2,
   94    [shape(Object, Shape1), shape(Object, Shape2)]).
   95
   96
   97% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/ecnet/PolySpace.e:47
   98%; objects have unique color
   99% [object,color1,color2]
  100% Color(object,color1) & Color(object,color2) ->
  101% color1=color2.
  102% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/ecnet/PolySpace.e:50
  103axiom(Color1=Color2,
  104    [color(Object, Color1), color(Object, Color2)]).
  105
  106
  107% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/ecnet/PolySpace.e:52
  108%; if objects are the same, they have the same shape
  109% [object1,object2]
  110% Equal(object1,object2) ->
  111% ({shape} Shape(object1,shape) & Shape(object2,shape)).
  112
  113 /*   if(equal(Object1, Object2),
  114         exists([Shape],
  115                 (shape(Object1, Shape), shape(Object2, Shape)))).
  116 */
  117
  118 /*  not(equal(Equal_Param, Shape_Param)) :-
  119       (   not(shape(Equal_Param, Shape_Ret))
  120       ;   not(shape(Shape_Param, Shape_Ret))
  121       ).
  122 */
  123% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/ecnet/PolySpace.e:55
  124axiom(not(equal(Equal_Param, Shape_Param)),
  125    [not(shape(Equal_Param, Shape_Ret))]).
  126axiom(not(equal(Equal_Param, Shape_Param)),
  127    [not(shape(Shape_Param, Shape_Ret))]).
  128
  129 /*  shape(Shape_Param6, Shape_Ret7) :-
  130       equal(Shape_Param6, Equal_Ret).
  131 */
  132axiom(shape(Shape_Param6, Shape_Ret7),
  133    [equal(Shape_Param6, Equal_Ret)]).
  134
  135 /*  shape(Shape_Param9, Shape_Ret11) :-
  136       equal(Equal_Param10, Shape_Param9).
  137 */
  138axiom(shape(Shape_Param9, Shape_Ret11),
  139    [equal(Equal_Param10, Shape_Param9)]).
  140
  141
  142% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/ecnet/PolySpace.e:57
  143%; if objects are the same, they have the same color
  144% [object1,object2]
  145% Equal(object1,object2) ->
  146% ({color} Color(object1,color) & Color(object2,color)).
  147
  148 /*   if(equal(Object1, Object2),
  149         exists([Color],
  150                 (color(Object1, Color), color(Object2, Color)))).
  151 */
  152
  153 /*  not(equal(Equal_Param, Color_Param)) :-
  154       (   not(color(Equal_Param, Color_Ret))
  155       ;   not(color(Color_Param, Color_Ret))
  156       ).
  157 */
  158% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/ecnet/PolySpace.e:60
  159axiom(not(equal(Equal_Param, Color_Param)),
  160    [not(color(Equal_Param, Color_Ret))]).
  161axiom(not(equal(Equal_Param, Color_Param)),
  162    [not(color(Color_Param, Color_Ret))]).
  163
  164 /*  color(Color_Param6, Color_Ret7) :-
  165       equal(Color_Param6, Equal_Ret).
  166 */
  167axiom(color(Color_Param6, Color_Ret7),
  168    [equal(Color_Param6, Equal_Ret)]).
  169
  170 /*  color(Color_Param9, Color_Ret11) :-
  171       equal(Equal_Param10, Color_Param9).
  172 */
  173axiom(color(Color_Param9, Color_Ret11),
  174    [equal(Equal_Param10, Color_Param9)]).
  175
  176
  177% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/ecnet/PolySpace.e:62
  178%; if objects are the same, they have the same location
  179% [grid,object1,object2,xcoord1,ycoord1,xcoord2,ycoord2,time]
  180% Equal(object1,object2) ->
  181% (HoldsAt(Location(grid,object1,xcoord1,ycoord1),time) &
  182%  HoldsAt(Location(grid,object2,xcoord2,ycoord2),time) ->
  183%  xcoord1=xcoord2 & ycoord1=ycoord2).
  184
  185 /*   if(equal(Object1, Object2),
  186         if((holds_at(location(Grid, Object1, Xcoord1, Ycoord1), Time), holds_at(location(Grid, Object2, Xcoord2, Ycoord2), Time)),
  187             (Xcoord1=Xcoord2, Ycoord1=Ycoord2))).
  188 */
  189
  190 /*  not(equal(Equal_Param, Equal_Ret)) :-
  191       ( holds_at(location(Location_Param,
  192                           Equal_Param,
  193                           Equals_Param,
  194                           Equals_Param12),
  195                  Time8),
  196         holds_at(location(Location_Param,
  197                           Equal_Ret,
  198                           Equals_Ret,
  199                           Location_Ret),
  200                  Time8)
  201       ),
  202       (   not(equals(Equals_Param, Equals_Ret))
  203       ;   not(equals(Equals_Param12, Location_Ret))
  204       ).
  205 */
  206% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/ecnet/PolySpace.e:67
  207axiom(not(equal(Equal_Param, Equal_Ret)),
  208   
  209    [ not(equals(Equals_Param, Equals_Ret)),
  210      holds_at(location(Location_Param,
  211                        Equal_Param,
  212                        Equals_Param,
  213                        Equals_Param12),
  214               Time8),
  215      holds_at(location(Location_Param,
  216                        Equal_Ret,
  217                        Equals_Ret,
  218                        Location_Ret),
  219               Time8)
  220    ]).
  221axiom(not(equal(Equal_Param, Equal_Ret)),
  222   
  223    [ not(equals(Equals_Param12, Location_Ret)),
  224      holds_at(location(Location_Param,
  225                        Equal_Param,
  226                        Equals_Param,
  227                        Equals_Param12),
  228               Time8),
  229      holds_at(location(Location_Param,
  230                        Equal_Ret,
  231                        Equals_Ret,
  232                        Location_Ret),
  233               Time8)
  234    ]).
  235
  236 /*  not(holds_at(location(Location_Param17, Equal_Param20, Equals_Param18, Equals_Param19), Time16)) :-
  237       holds_at(location(Location_Param17,
  238                         Equal_Ret23,
  239                         Equals_Ret22,
  240                         Location_Ret21),
  241                Time16),
  242       (   not(equals(Equals_Param18, Equals_Ret22))
  243       ;   not(equals(Equals_Param19, Location_Ret21))
  244       ),
  245       equal(Equal_Param20, Equal_Ret23).
  246 */
  247axiom(not(holds_at(location(Location_Param17, Equal_Param20, Equals_Param18, Equals_Param19), Time16)),
  248   
  249    [ not(equals(Equals_Param18, Equals_Ret22)),
  250      holds_at(location(Location_Param17,
  251                        Equal_Ret23,
  252                        Equals_Ret22,
  253                        Location_Ret21),
  254               Time16),
  255      equal(Equal_Param20, Equal_Ret23)
  256    ]).
  257axiom(not(holds_at(location(Location_Param17, Equal_Param20, Equals_Param18, Equals_Param19), Time16)),
  258   
  259    [ not(equals(Equals_Param19, Location_Ret21)),
  260      holds_at(location(Location_Param17,
  261                        Equal_Ret23,
  262                        Equals_Ret22,
  263                        Location_Ret21),
  264               Time16),
  265      equal(Equal_Param20, Equal_Ret23)
  266    ]).
  267
  268 /*  not(holds_at(location(Location_Param25, Equal_Ret31, Equals_Ret30, Location_Ret29), Time24)) :-
  269       holds_at(location(Location_Param25,
  270                         Equal_Param28,
  271                         Equals_Param26,
  272                         Equals_Param27),
  273                Time24),
  274       (   not(equals(Equals_Param26, Equals_Ret30))
  275       ;   not(equals(Equals_Param27, Location_Ret29))
  276       ),
  277       equal(Equal_Param28, Equal_Ret31).
  278 */
  279axiom(not(holds_at(location(Location_Param25, Equal_Ret31, Equals_Ret30, Location_Ret29), Time24)),
  280   
  281    [ not(equals(Equals_Param26, Equals_Ret30)),
  282      holds_at(location(Location_Param25,
  283                        Equal_Param28,
  284                        Equals_Param26,
  285                        Equals_Param27),
  286               Time24),
  287      equal(Equal_Param28, Equal_Ret31)
  288    ]).
  289axiom(not(holds_at(location(Location_Param25, Equal_Ret31, Equals_Ret30, Location_Ret29), Time24)),
  290   
  291    [ not(equals(Equals_Param27, Location_Ret29)),
  292      holds_at(location(Location_Param25,
  293                        Equal_Param28,
  294                        Equals_Param26,
  295                        Equals_Param27),
  296               Time24),
  297      equal(Equal_Param28, Equal_Ret31)
  298    ]).
  299
  300 /*  equals(Equals_Param33, Equals_Ret36) :-
  301       ( holds_at(location(Location_Param34,
  302                           Equal_Param35,
  303                           Equals_Param33,
  304                           Location_Ret37),
  305                  Time32),
  306         holds_at(location(Location_Param34,
  307                           Equal_Ret39,
  308                           Equals_Ret36,
  309                           Location_Ret38),
  310                  Time32)
  311       ),
  312       equal(Equal_Param35, Equal_Ret39).
  313 */
  314axiom(equals(Equals_Param33, Equals_Ret36),
  315   
  316    [ holds_at(location(Location_Param34,
  317                        Equal_Param35,
  318                        Equals_Param33,
  319                        Location_Ret37),
  320               Time32),
  321      holds_at(location(Location_Param34,
  322                        Equal_Ret39,
  323                        Equals_Ret36,
  324                        Location_Ret38),
  325               Time32),
  326      equal(Equal_Param35, Equal_Ret39)
  327    ]).
  328
  329 /*  equals(Equals_Param41, Equals_Ret44) :-
  330       ( holds_at(location(Location_Param42,
  331                           Equal_Param43,
  332                           _,
  333                           Equals_Param41),
  334                  Time40),
  335         holds_at(location(Location_Param42,
  336                           Equal_Ret45,
  337                           _,
  338                           Equals_Ret44),
  339                  Time40)
  340       ),
  341       equal(Equal_Param43, Equal_Ret45).
  342 */
  343axiom(equals(Equals_Param41, Equals_Ret44),
  344   
  345    [ holds_at(location(Location_Param42,
  346                        Equal_Param43,
  347                        _,
  348                        Equals_Param41),
  349               Time40),
  350      holds_at(location(Location_Param42,
  351                        Equal_Ret45,
  352                        _,
  353                        Equals_Ret44),
  354               Time40),
  355      equal(Equal_Param43, Equal_Ret45)
  356    ]).
  357
  358
  359% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/ecnet/PolySpace.e:69
  360%; object in one location at a time
  361% [grid,object,xcoord1,ycoord1,xcoord2,ycoord2,time]
  362% HoldsAt(Location(grid,object,xcoord1,ycoord1),time) &
  363% HoldsAt(Location(grid,object,xcoord2,ycoord2),time) ->
  364% xcoord1=xcoord2 & ycoord1=ycoord2.
  365
  366 /*   if((holds_at(location(Grid, Object, Xcoord1, Ycoord1), Time), holds_at(location(Grid, Object, Xcoord2, Ycoord2), Time)),
  367          (Xcoord1=Xcoord2, Ycoord1=Ycoord2)).
  368 */
  369
  370 /*  not(holds_at(location(Location_Param, A, Equals_Param, Equals_Param10), Time7)) :-
  371       holds_at(location(Location_Param,
  372                         A,
  373                         Equals_Ret,
  374                         Location_Ret),
  375                Time7),
  376       (   not(equals(Equals_Param, Equals_Ret))
  377       ;   not(equals(Equals_Param10, Location_Ret))
  378       ).
  379 */
  380% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/ecnet/PolySpace.e:73
  381axiom(not(holds_at(location(Location_Param, A, Equals_Param, Equals_Param10), Time7)),
  382   
  383    [ not(equals(Equals_Param, Equals_Ret)),
  384      holds_at(location(Location_Param,
  385                        A,
  386                        Equals_Ret,
  387                        Location_Ret),
  388               Time7)
  389    ]).
  390axiom(not(holds_at(location(Location_Param, A, Equals_Param, Equals_Param10), Time7)),
  391   
  392    [ not(equals(Equals_Param10, Location_Ret)),
  393      holds_at(location(Location_Param,
  394                        A,
  395                        Equals_Ret,
  396                        Location_Ret),
  397               Time7)
  398    ]).
  399
  400 /*  not(holds_at(location(Location_Param14, A, Equals_Ret18, Location_Ret17), Time13)) :-
  401       holds_at(location(Location_Param14,
  402                         A,
  403                         Equals_Param15,
  404                         Equals_Param16),
  405                Time13),
  406       (   not(equals(Equals_Param15, Equals_Ret18))
  407       ;   not(equals(Equals_Param16, Location_Ret17))
  408       ).
  409 */
  410axiom(not(holds_at(location(Location_Param14, A, Equals_Ret18, Location_Ret17), Time13)),
  411   
  412    [ not(equals(Equals_Param15, Equals_Ret18)),
  413      holds_at(location(Location_Param14,
  414                        A,
  415                        Equals_Param15,
  416                        Equals_Param16),
  417               Time13)
  418    ]).
  419axiom(not(holds_at(location(Location_Param14, A, Equals_Ret18, Location_Ret17), Time13)),
  420   
  421    [ not(equals(Equals_Param16, Location_Ret17)),
  422      holds_at(location(Location_Param14,
  423                        A,
  424                        Equals_Param15,
  425                        Equals_Param16),
  426               Time13)
  427    ]).
  428
  429 /*  equals(Equals_Param20, Equals_Ret22) :-
  430       holds_at(location(Location_Param21,
  431                         A,
  432                         Equals_Param20,
  433                         Location_Ret23),
  434                Time19),
  435       holds_at(location(Location_Param21,
  436                         A,
  437                         Equals_Ret22,
  438                         Location_Ret24),
  439                Time19).
  440 */
  441axiom(equals(Equals_Param20, Equals_Ret22),
  442   
  443    [ holds_at(location(Location_Param21,
  444                        A,
  445                        Equals_Param20,
  446                        Location_Ret23),
  447               Time19),
  448      holds_at(location(Location_Param21,
  449                        A,
  450                        Equals_Ret22,
  451                        Location_Ret24),
  452               Time19)
  453    ]).
  454
  455 /*  equals(Equals_Param26, Equals_Ret28) :-
  456       holds_at(location(Location_Param27,
  457                         A,
  458                         _,
  459                         Equals_Param26),
  460                Time25),
  461       holds_at(location(Location_Param27,
  462                         A,
  463                         _,
  464                         Equals_Ret28),
  465                Time25).
  466 */
  467axiom(equals(Equals_Param26, Equals_Ret28),
  468   
  469    [ holds_at(location(Location_Param27,
  470                        A,
  471                        _,
  472                        Equals_Param26),
  473               Time25),
  474      holds_at(location(Location_Param27,
  475                        A,
  476                        _,
  477                        Equals_Ret28),
  478               Time25)
  479    ]).
  480
  481
  482% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/ecnet/PolySpace.e:75
  483%; objects have locations
  484% [grid,object,time]
  485% (
  486% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/ecnet/PolySpace.e:77
  487% {xcoord,ycoord} HoldsAt(Location(grid,object,xcoord,ycoord),time)).
  488
  489 /*  exists([Xcoord,Ycoord],
  490          holds_at(location(Grid,
  491   			 Object,
  492   			 Xcoord,
  493   			 Ycoord),
  494   		Time)).
  495 */
  496axiom(holds_at(location(Location_Param, _, _, Location_Ret), Time5),
  497    []).
  498
  499
  500% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/ecnet/PolySpace.e:79
  501%; different objects are not at same location
  502% [grid,object1,object2,xcoord1,ycoord1,time]
  503% HoldsAt(Location(grid,object1,xcoord1,ycoord1),time) &
  504% HoldsAt(Location(grid,object2,xcoord1,ycoord1),time) ->
  505% Equal(object1,object2).
  506% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/ecnet/PolySpace.e:83
  507axiom(equal(Object1, Object2),
  508   
  509    [ holds_at(location(Grid, Object1, Xcoord1, Ycoord1),
  510               Time),
  511      holds_at(location(Grid, Object2, Xcoord1, Ycoord1),
  512               Time)
  513    ]).
  514
  515
  516% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/ecnet/PolySpace.e:85
  517%; moving to a location causes an object to be at that location
  518% [grid,object,xcoord1,ycoord1,xcoord2,ycoord2,time]
  519% Initiates(Move(grid,object,xcoord1,ycoord1,xcoord2,ycoord2),
  520%           Location(grid,object,xcoord2,ycoord2),
  521%           time).
  522% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/ecnet/PolySpace.e:89
  523axiom(initiates(move(Grid, Object, Xcoord1, Ycoord1, Xcoord2, Ycoord2), location(Grid, Object, Xcoord2, Ycoord2), Time),
  524    []).
  525
  526
  527% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/ecnet/PolySpace.e:91
  528%; moving to a location causes the object no longer to be at its previous
  529%; location
  530% [grid,object,xcoord1,ycoord1,xcoord2,ycoord2,time]
  531% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/ecnet/PolySpace.e:94
  532% Terminates(Move(grid,object,xcoord1,ycoord1,xcoord2,ycoord2),
  533%            Location(grid,object,xcoord1,ycoord1),
  534%            time).
  535% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/ecnet/PolySpace.e:96
  536axiom(terminates(move(Grid, Object, Xcoord1, Ycoord1, Xcoord2, Ycoord2), location(Grid, Object, Xcoord1, Ycoord1), Time),
  537    []).
  538
  539
  540% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/ecnet/PolySpace.e:98
  541%;; allow diagonal movements
  542%;[grid,object,xcoord1,ycoord1,xcoord2,ycoord2,time]
  543%;Happens(Move(grid,object,xcoord1,ycoord1,xcoord2,ycoord2),time) ->
  544%;HoldsAt(Location(grid,object,xcoord1,ycoord1),time) &
  545%;(xcoord1=xcoord2 |
  546%; xcoord1=xcoord2+1 |
  547%; xcoord1=xcoord2-1) &
  548%;(ycoord1=ycoord2 |
  549%; ycoord1=ycoord2+1 |
  550%; ycoord1=ycoord2-1).
  551%; only allow right angle movements
  552% [grid,object,xcoord1,ycoord1,xcoord2,ycoord2,time]
  553% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/ecnet/PolySpace.e:111
  554% Happens(Move(grid,object,xcoord1,ycoord1,xcoord2,ycoord2),time) ->
  555% HoldsAt(Location(grid,object,xcoord1,ycoord1),time) &
  556% ((xcoord1=xcoord2 & (ycoord1=ycoord2+1 | ycoord1=ycoord2-1)) |
  557%  (ycoord1=ycoord2 & (xcoord1=xcoord2+1 | xcoord1=xcoord2-1))).
  558% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/ecnet/PolySpace.e:114
  559axiom(requires(move(Grid, Object, Xcoord1, Ycoord1, Xcoord2, Ycoord2), Time),
  560   
  561    [ equals(Ycoord1, Ycoord2+1),
  562      equals(Xcoord1, Xcoord2),
  563      holds_at(location(Grid, Object, Xcoord1, Ycoord1),
  564               Time)
  565    ]).
  566axiom(requires(move(Grid, Object, Xcoord1, Ycoord1, Xcoord2, Ycoord2), Time),
  567   
  568    [ equals(Ycoord1, Ycoord2-1),
  569      equals(Xcoord1, Xcoord2),
  570      holds_at(location(Grid, Object, Xcoord1, Ycoord1),
  571               Time)
  572    ]).
  573axiom(requires(move(Grid, Object, Xcoord1, Ycoord1, Xcoord2, Ycoord2), Time),
  574   
  575    [ equals(Xcoord1, Xcoord2+1),
  576      equals(Ycoord1, Ycoord2),
  577      holds_at(location(Grid, Object, Xcoord1, Ycoord1),
  578               Time)
  579    ]).
  580axiom(requires(move(Grid, Object, Xcoord1, Ycoord1, Xcoord2, Ycoord2), Time),
  581   
  582    [ equals(Xcoord1, Xcoord2-1),
  583      equals(Ycoord1, Ycoord2),
  584      holds_at(location(Grid, Object, Xcoord1, Ycoord1),
  585               Time)
  586    ]).
  587
  588
  589% From /opt/logicmoo_workspace/packs_sys/small_adventure_games/prolog/ec_planner/ecnet/PolySpace.e:116
  590%; End of file.