anchor.diff:  
   (defun scene-facts (init-scene goal-scene
                       &key
  +                      object-alist
  +                      moveable-types
                         max-locations
                         (encoding :linear)
                         (resolution 0.2d0)
  
positive.code:                (if (or goal (eq encoding :linear))
                     (list loc)
                     (list loc (occupied-predicate parent i j))))))
      (loop for (name parent i j) in (scene-state-pairs scene :resolution resolution)
           nconc
           (frame-predicates name parent i j))))
  
  
  
  
negative.code: 
  (defun scene-state (scene resolution
                      &key
                        other-scene-graph
                        moveable-objects
                        (encoding :linear)
                        goal)
    (labels ((find-parent (parent)
               (or (scene-graph-find scene parent)
                   (scene-graph-find other-scene-graph parent)
                   (error "Could not find parent ~A" parent)))
             (fun-position (object location)
               `(= (position ,object) ,location))
             (surface-location (object parent i j)
               (ecase encoding
                 (:quadratic (list 'at object (itmp-encode-location parent i j)))
                 (:linear (fun-position object (itmp-encode-location parent i j)))))
             (parent-location (object parent)
               (fun-position object parent))
             (location-predicate (object parent i j)
               (let ((parent-frame (find-parent parent)))
                 (cond
                   ((robray::scene-frame-geometry-isa parent-frame "surface")
                    (surface-location object parent i j))
                   ((robray::scene-frame-geometry-isa parent-frame "stackable")
                    (assert (eq encoding :linear))
                    `(= (position ,object) ,parent))
  