]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/software/components/cic_proof_checking/cicTypeChecker.ml
#### EXPERIMENTAL COMMIT ####
[helm.git] / helm / software / components / cic_proof_checking / cicTypeChecker.ml
index 3df3dc3549ea5cda47b0a891627fb52a694f5f0e..531705a3c2d40abf7d2699291e683b5da0b2e70f 100644 (file)
@@ -1393,10 +1393,10 @@ and type_of_branch ~subst context argsno need_dummy outtype term constype =
           C.Appl l -> C.Appl (l@[C.Rel 1])
         | t -> C.Appl [t ; C.Rel 1]
       in
-       C.Prod (C.Anonymous,so,type_of_branch ~subst
+       C.Prod (name,so,type_of_branch ~subst
         ((Some (name,(C.Decl so)))::context) argsno need_dummy
         (CicSubstitution.lift 1 outtype) term' de)
-  | _ -> raise (AssertFailure (lazy "20"))
+   | _ -> raise (AssertFailure (lazy "20"))
 
 (* check_metasenv_consistency checks that the "canonical" context of a
 metavariable is consitent - up to relocation via the relocation list l -
@@ -1569,7 +1569,7 @@ and type_of_aux' ~logger ?(subst = []) metasenv context t ugraph =
         type_of_aux ~logger 
           ((Some (n,(C.Def (s,Some ty))))::context) t ugraph1 
        in
-       (CicSubstitution.subst s ty1),ugraph2
+       (CicSubstitution.subst ~avoid_beta_redexes:true s ty1),ugraph2
    | C.Appl (he::tl) when List.length tl > 0 ->
        let hetype,ugraph1 = type_of_aux ~logger context he ugraph in
        let tlbody_and_type,ugraph2 = 
@@ -1772,6 +1772,15 @@ and type_of_aux' ~logger ?(subst = []) metasenv context t ugraph =
                R.are_convertible 
                  ~subst ~metasenv context ty_p ty_branch ugraph3 
              in 
+(* Debugging code
+if not b1 then
+begin
+prerr_endline ("\n!OUTTYPE= " ^ CicPp.ppterm outtype);
+prerr_endline ("!CONS= " ^ CicPp.ppterm cons);
+prerr_endline ("!TY_CONS= " ^ CicPp.ppterm ty_cons);
+prerr_endline ("#### " ^ CicPp.ppterm ty_p ^ "\n<==>\n" ^ CicPp.ppterm ty_branch);
+end;
+*)
              if not b1 then
                debug_print (lazy
                  ("#### " ^ CicPp.ppterm ty_p ^ 
@@ -1954,7 +1963,8 @@ and type_of_aux' ~logger ?(subst = []) metasenv context t ugraph =
                    begin
                      CicReduction.fdebug := -1 ;
                      eat_prods ~subst context 
-                       (CicSubstitution.subst hete t) tl ugraph1
+                       (CicSubstitution.subst ~avoid_beta_redexes:true hete t)
+                         tl ugraph1
                        (*TASSI: not sure *)
                    end
                  else
@@ -2156,9 +2166,12 @@ let typecheck_obj ~logger uri obj =
 
 (** wrappers which instantiate fresh loggers *)
 
+let profiler = HExtlib.profile "K/CicTypeChecker.type_of_aux'"
+
 let type_of_aux' ?(subst = []) metasenv context t ugraph =
   let logger = new CicLogger.logger in
-  type_of_aux' ~logger ~subst metasenv context t ugraph
+  profiler.HExtlib.profile 
+    (type_of_aux' ~logger ~subst metasenv context t) ugraph
 
 let typecheck_obj uri obj =
  let logger = new CicLogger.logger in