]> matita.cs.unibo.it Git - helm.git/commitdiff
Collapse_head_metas transforms all terms "not-recongnized" into a
authorAndrea Asperti <andrea.asperti@unibo.it>
Fri, 22 Dec 2006 10:43:54 +0000 (10:43 +0000)
committerAndrea Asperti <andrea.asperti@unibo.it>
Fri, 22 Dec 2006 10:43:54 +0000 (10:43 +0000)
meta.

helm/software/components/tactics/universe.ml

index 1de14927049ad475414aa95d05f2b55ab184b9c2..c8d370f04ff8807f08cbf2afd6a12459bd42af63 100644 (file)
@@ -44,15 +44,31 @@ let rec unfold context = function
        Cic.Prod(name,s,t')     
   | t -> ProofEngineReduction.unfold context t
 
-let rec collapse_head_metas = function 
-  | Cic.Appl(a::l) -> 
-      let a' = collapse_head_metas a in
-      (match a' with
-       | Cic.Meta(n,m) -> Cic.Meta(n,m)
-       | t ->  
-           let l' = List.map collapse_head_metas l in
-              Cic.Appl(t::l'))
-  | t -> t
+let rec collapse_head_metas t = 
+  match t with
+    | Cic.Appl([]) -> assert false
+    | Cic.Appl(a::l) -> 
+       let a' = collapse_head_metas a in
+         (match a' with
+            | Cic.Meta(n,m) -> Cic.Meta(n,m)
+            | t ->     
+                let l' = List.map collapse_head_metas l in
+                  Cic.Appl(t::l'))
+    | Cic.Rel _ 
+    | Cic.Var _         
+    | Cic.Meta _ 
+    | Cic.Sort _ 
+    | Cic.Implicit _
+    | Cic.Const _ 
+    | Cic.MutInd _
+    | Cic.MutConstruct _ -> t
+    | Cic.LetIn _
+    | Cic.Lambda _
+    | Cic.Prod _
+    | Cic.Cast _
+    | Cic.MutCase _
+    | Cic.Fix _
+    | Cic.CoFix _ -> Cic.Meta(-1,[])
 ;;
 
 let rec dummies_of_coercions =