 ;;  (Since we don't keep only first solution)
 (defn add-sp-child! [sp child-sp]
   (assert (not (terminal? sp)))
-  (if (and *no-identical-nonterminal-outputs*
-           (= (output-set sp) (output-set child-sp)))
-    (do (connect-and-watch! sp child-sp #(add-sp-child! sp %))
-        (summaries/summary-changed! sp ))
-    (do (summaries/summary-changed-local! sp)
-        (add-output! sp child-sp))))
+  (summaries/summary-changed-local! sp)
+  (add-output! sp child-sp))
 
 
 ;; Note: All nonterminal subproblems use or-summary for ri-fn

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defn- choose-leaf [verified-summary]
  (println "VS"  verified-summary)  (def *sum* verified-summary)  (Thread/sleep 10)
  (->> (summary/extract-leaf-seq verified-summary (comp empty? summary/children))
       (map summary/source)
       (filter can-evaluate?)

;; TODO: remove ss ?
;; Note: this is the only place logic depends on summary.  Potential for problems? 
(defn- make-pair-subproblem [subsuming-sp pair-stub left-sp right-sp]
;  (println "mps" pair-stub)
  (let [expand-right? (not (can-split? left-sp) ) #_(terminal? left-sp)
        [ss watch stub-f]
        (if expand-right?
