[function for developing a Hypo added, and various minor changes
martin.hofmann@uni-bamberg.de**20081121142235] hunk ./src/Data/Hypotheses.hs 5
-    hypo, extend, shrink, modify,
+    hypo, develop,
hunk ./src/Data/Hypotheses.hs 19
+import Control.Monad (foldM)
hunk ./src/Data/Hypotheses.hs 33
-import Data.CallDependencies (CallDep)
+import Data.CallDependencies (CallDep, Call, tryAddCall)
hunk ./src/Data/Hypotheses.hs 74
--- | Modifiers for data type 'Hypo'
+{-| 
+  The only way to change a hypothese is by developing a RuleFrag in it.
+  Together with the changes, a list of Calls has to bre provided, denoting
+  the call dependencies between various RuleFrags. 
+  If one of these calls is not admissible, the function fails.
+-} 
+develop :: (Monad m) => 
+        Hypo ->         -- the hypothese to develop 
+        RuleFrag ->     -- the RuleFrag that was changed
+        RuleFrags ->    -- the RuleFrags rsulting from the change
+        [Call] ->       -- a list of Calls 
+        m Hypo          -- the resulting hypothese in your favorite Monad
+develop h rf rfs calls = do 
+    let (HH open clsd cdps) = modify rf rfs h
+    cdps' <- foldM tryAddCall cdps calls
+    return $ HH open clsd cdps'   
+    
+
+
+-- | Internal Modifiers for data type 'Hypo'
hunk ./src/Data/Hypotheses.hs 95
+-- adds a RuleFrag to the Hypo
hunk ./src/Data/Hypotheses.hs 101
+-- deletes a RuleFrag in the Hypo
hunk ./src/Data/Hypotheses.hs 107
+-- combined version of the functions above
hunk ./src/Data/Hypotheses.hs 110
-     -> RuleFrag    -- ^with new rule
+     -> RuleFrags    -- ^with new rules
hunk ./src/Data/Hypotheses.hs 113
-modify rold rnew h = 
-    (extend rnew) $ (shrink rold) h
+modify rold newrs h =  shrink rold $ F.fold extend h newrs 