]> matita.cs.unibo.it Git - helm.git/commitdiff
Bug fixed: a symbol alias Symb(s,0) now subsumes the case Symb(s,n) for each n.
authorAndrea Asperti <andrea.asperti@unibo.it>
Mon, 24 Jul 2006 16:36:26 +0000 (16:36 +0000)
committerAndrea Asperti <andrea.asperti@unibo.it>
Mon, 24 Jul 2006 16:36:26 +0000 (16:36 +0000)
components/cic_disambiguation/disambiguate.ml
components/cic_disambiguation/disambiguateTypes.ml

index 645ad57accf85ec211859a23f6954fb1ca494c57..cb4d85cfd245fafb088410a89b092dd4b8375972 100644 (file)
@@ -710,9 +710,15 @@ let domain_of_obj ~context ast =
   (* dom1 \ dom2 *)
 let domain_diff dom1 dom2 =
 (* let domain_diff = Domain.diff *)
-  let is_in_dom2 =
-    List.fold_left (fun pred elt -> (fun elt' -> elt' = elt || pred elt'))
-      (fun _ -> false) dom2
+  let is_in_dom2 elt =
+    List.exists
+     (function
+       | Symbol (symb, 0) ->
+          (match elt with
+              Symbol (symb',_) when symb = symb' -> true
+            | _ -> false)
+       | item -> elt = item
+     ) dom2
   in
   List.filter (fun (_,elt) -> not (is_in_dom2 elt)) dom1
 
index 79388f8198d3e20372a6f19c6ad17d55d0e0837a..a360dde384dfd87655864467bcbd8211beb0ab08 100644 (file)
@@ -55,6 +55,13 @@ struct
 
   include Environment'
 
+  let find k env =
+   match k with
+      Symbol (sym,n) ->
+       (try find k env
+        with Not_found -> find (Symbol (sym,0)) env)
+    | _ -> find k env
+
   let cons k v env =
     try
       let current = find k env in