   (pessimistic-set-and-reward- [a ss] nil)
   ))
 
+(defn go-drop-pc [o const]
+  (conj (apply clojure.set/union 
+               (map #(conj (reach-to-context const %) [:object-at %]) 
+                    (get const [:goal o]))) 
+          [:holding]))
 
 (defn make-go-drop-hla [o] 
  (reify

  (pessimistic-map- [_ s] {})

  angelic/ImplicitAngelicAction 
  (precondition-context-set [a ss] (env/precondition-context a (state-set/some-element ss)))  
  (can-refine-from-set? [a ss] true)
  (immediate-refinements-set- [a ss]
   (for [p (hierarchy/immediate-refinements- a (state-set/some-element ss))] [{} p]))


(def move-base-step-reward -2)

(defn make-base-dir
  ([s dp] (make-base-dir (state/get-var s :const)  (state/get-var s [:base]) dp))  
  ([const base [dirname dir]]
     (let [nbase (add-pos base dir)]
       (when (contains? (get const [:freespace]) nbase)
         (env-util/make-factored-primitive 
          [:base dirname]
          {[:base] base [:parked?] false}
          {[:base] nbase}
          move-base-step-reward)))))

(def move-gripper-step-reward -1)

