           refined))))
 
 
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Atomic Subproblem ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;     Subproblem Types and Stubs     ;;;;;;;;;;;;;;;;;;;;;;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;      Atomic       ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 
 (declare make-fs-seq-stub)

     (assert (= 2 (count (summaries/node-ordinary-children s))))
     (summary/+ (summaries/summary sp1) (summaries/summary sp2) s))
   [sp1 sp2] [(tree-summarizer sp2)]
   (fn [s] (make-right-subproblem stub sp1 s))))

;; TODO: sharing below ends up doubling up on published outputs unnecessarily?
;; Short circuit means that right SP can go dead then back live. 




;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;   Sequences    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; This subproblem is allowed to die, (incl. tree?!), replaced by refinements at sp1. 
(defn- make-pair-subproblem [stub sp1 sp2]
  (make-simple-subproblem
   [::Pair (subproblem-name sp1) (subproblem-name sp2)]
   (input-set sp1) (output-set sp2)
