 (def *collect-equal-outputs* true) ;; Collect identical output sets
 (def *decompose-cache*       true) ;; nil for none, or bind to hashmap
 (def *state-abstraction*     :eager ) ;; Or lazy or nil.
+(def *propagate-subusmption* false)
 
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

              (summaries/summary-changed! ret))
          (if (#{:SA :OC} (first (sp-name o))) 
            (add-sp-child! ret o)
            (connect-and-watch-stub! ret (make-output-collecting-stub (stub o))
              #(add-sp-child! ret %)))))) ;; No update needed
    ret))



        ret (traits/reify-traits
             [summaries/or-summarizable (simple-subproblem stb out (terminal? inner-sp) ri-fn)])]
    (connect-and-watch! ret inner-sp
      (fn [o] (add-sp-child-stub-up! ret (make-state-abstracted-stub (stub o) in))))
    ret))


