]> matita.cs.unibo.it Git - helm.git/commitdiff
identity coercions are not really inserted, just used as hints for unification
authorEnrico Tassi <enrico.tassi@inria.fr>
Fri, 19 Dec 2008 10:02:11 +0000 (10:02 +0000)
committerEnrico Tassi <enrico.tassi@inria.fr>
Fri, 19 Dec 2008 10:02:11 +0000 (10:02 +0000)
helm/software/components/cic_unification/cicRefine.ml

index 245c88e0016c12f0e66fb3bcd42c0fb0a814497a..a2c7707493bb82baafc0561e7f6418a02ea41483 100644 (file)
@@ -1444,11 +1444,19 @@ and type_of_aux' ?(clean_dummy_dependent_types=true) ?(localization_tbl = Cic.Ci
                 let newt,newhety,subst,metasenv,ugraph = 
                  type_of_aux subst metasenv context c ugraph in
                 let newt, newty, subst, metasenv, ugraph = 
-                 avoid_double_coercion context subst metasenv ugraph newt expty 
+                  avoid_double_coercion context subst metasenv ugraph newt
+                    expty 
                 in
                 let subst,metasenv,ugraph = 
-                  fo_unif_subst subst context metasenv newhety expty ugraph in
-                 Some ((newt,newty), subst, metasenv, ugraph)
+                  fo_unif_subst subst context metasenv newhety expty ugraph
+                in
+                let b, ugraph =
+                  CicReduction.are_convertible ~subst context infty expty ugraph
+                in
+                if b then 
+                  Some ((t,infty), subst, metasenv, ugraph)
+                else 
+                  Some ((newt,newty), subst, metasenv, ugraph)
                with 
                | Uncertain _ -> uncertain := true; None
                | RefineFailure _ -> None)