[new record fields for IOData
martin.hofmann@uni-bamberg.de**20090109130803] hunk ./src/Data/IOData.hs 21
-    --, matching :: Map RHS [(Name,LHS))]
+    , rhsides   :: !(Map RHS [(Name,LHS)])
+    , lhsides   :: !(Map LHS [(Name,RHS)])
hunk ./src/Data/IOData.hs 29
-    { evidence = B.empty
+    { evidence  = B.empty
+    , rhsides   = M.empty
+    , lhsides   = M.empty
hunk ./src/Data/IOData.hs 84
-
hunk ./src/Data/IOData.hs 106
-insertUnsafe n rs iod@(IOD{ evidence = bk }) =
-    iod{ evidence =  B.insert n rs bk}
+insertUnsafe n rs iod =
+    alterEvidence n rs $
+    alterRhss     n rs $
+    alterLhss     n rs $ 
+    iod
hunk ./src/Data/IOData.hs 112
-
+alterEvidence :: Name -> Rules -> IOData -> IOData
+alterEvidence n rs iod =
+    let evi = evidence iod in
+    iod{evidence = B.insert n rs evi} 
+       
+alterRhss :: Name -> Rules -> IOData -> IOData
+alterRhss n rs iod =
+    iod{rhsides = foldl' ins  rhss (rulesToList rs)}
+    where
+    ins = (\m r -> M.insertWith (++) (rhs r) [(n,lhs r)] m)
+    rhss = rhsides iod  
+         
+alterLhss :: Name -> Rules -> IOData -> IOData
+alterLhss n rs iod =
+    iod{lhsides = foldl' ins  lhss (rulesToList rs)}
+    where
+    ins = (\m r -> M.insertWith (++) (lhs r) [(n,rhs r)] m)
+    lhss = lhsides iod
+   