 ;; Would be easier if we had state abstraction hierarchy, since we wouldn't have to explicitly
 ;; constrain goal positions (would be handled by "finish").
 
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;                           Domain helpers
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 (let [f (util/path-local "hybrid_blocks.pddl")]
   (defn make-hybrid-blocks-strips-domain []

 (:import [java.util HashMap HashSet])
 (:use clojure.test )
 (:require [edu.berkeley.ai [util :as util] [envs :as envs]] 
           [edu.berkeley.ai.envs.hybrid-strips :as hs])
 )

;; Idea for heuristic: have "goal-cx", "goal-ty" variables for each block appearing in goal

  (apply concat 
	 (for [[b ons] f, on ons] 
	   (process-goal-stack b on))))
		

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;                              Public Interface
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;		  

(defn make-hybrid-blocks-strips-env 
  "Stacks is a forest of block info items (Table goes from -1 to 0 h, implicit).
