]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/ocaml/cic_proof_checking/cicElim.ml
removed debug prerr_endline
[helm.git] / helm / ocaml / cic_proof_checking / cicElim.ml
index 1864e89b0c202d39217466fe459988270d608ce9..e47b48d5d7e05a2ef793c3e8f4578a55bfa08f2f 100644 (file)
@@ -28,6 +28,8 @@ open Printf
 exception Elim_failure of string
 exception Can_t_eliminate
 
+let debug_print = fun _ -> ()
+
 let fresh_binder =
   let counter = ref ~-1 in
   function
@@ -193,12 +195,6 @@ function
       Cic.Lambda (fresh_binder true,
         CicSubstitution.lift_from (rightno + 1) liftno indty, case)
 
-let string_of_sort = function
-  | Cic.Prop -> "Prop"
-  | Cic.CProp -> "CProp"
-  | Cic.Set -> "Set"
-  | Cic.Type _ -> "Type"
-
 let rec branch (uri, typeno) insource paramsno t fix head args =
   match t with
   | Cic.MutInd (uri', typeno', []) when
@@ -249,7 +245,7 @@ let branch (uri, typeno) insource liftno paramsno t fix head args =
 let elim_of ?(sort = Cic.Type (CicUniv.fresh ())) uri typeno =
   let (obj, univ) = (CicEnvironment.get_obj CicUniv.empty_ugraph uri) in
   match obj with
-  | Cic.InductiveDefinition (indTypes, params, leftno) ->
+  | Cic.InductiveDefinition (indTypes, params, leftno, _) ->
       let (name, inductive, ty, constructors) =
         try
           List.nth indTypes typeno
@@ -343,11 +339,9 @@ let elim_of ?(sort = Cic.Type (CicUniv.fresh ())) uri typeno =
         add_params (fun b s t -> Cic.Lambda (b, s, t)) leftno ty cic
       in
 (*
-prerr_endline (CicPp.ppterm eliminator_type);
-prerr_endline (CicPp.ppterm eliminator_body);
+debug_print (CicPp.ppterm eliminator_type);
+debug_print (CicPp.ppterm eliminator_body);
 *)
-prerr_endline "generato l'eliminatore";
-prerr_endline "inizio type checking";
       let (computed_type, ugraph) =
         try
           CicTypeChecker.type_of_aux' [] [] eliminator_body CicUniv.empty_ugraph
@@ -356,8 +350,6 @@ prerr_endline "inizio type checking";
             "type checker failure while type checking:\n%s\nerror:\n%s"
             (CicPp.ppterm eliminator_body) msg))
       in
-prerr_endline "fine type checking";
-prerr_endline "inizio are convertible";
       if not (fst (CicReduction.are_convertible []
         eliminator_type computed_type ugraph))
       then
@@ -372,6 +364,9 @@ prerr_endline "inizio are convertible";
         | _ -> assert false
       in
       let name = UriManager.name_of_uri uri ^ suffix in
-      Cic.Constant (name, Some eliminator_body, eliminator_type, [])
-  | _ -> assert false
+      let obj_attrs = [`Class (`Elim sort); `Generated] in
+      Cic.Constant (name, Some eliminator_body, eliminator_type, [], obj_attrs)
+  | _ ->
+      failwith (sprintf "not an inductive definition (%s)"
+        (UriManager.string_of_uri uri))