]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/ocaml/cic_proof_checking/cicElim.ml
version 0.7.1
[helm.git] / helm / ocaml / cic_proof_checking / cicElim.ml
index e47b48d5d7e05a2ef793c3e8f4578a55bfa08f2f..c0552e79ee7385c38bbf3f0781c8895eab8897e3 100644 (file)
@@ -30,8 +30,9 @@ exception Can_t_eliminate
 
 let debug_print = fun _ -> ()
 
+let counter = ref ~-1 ;;
+
 let fresh_binder =
-  let counter = ref ~-1 in
   function
     | true ->
         incr counter;
@@ -243,6 +244,7 @@ let branch (uri, typeno) insource liftno paramsno t fix head args =
   branch (uri, typeno) insource paramsno t fix head args
 
 let elim_of ?(sort = Cic.Type (CicUniv.fresh ())) uri typeno =
+  counter := ~-1;
   let (obj, univ) = (CicEnvironment.get_obj CicUniv.empty_ugraph uri) in
   match obj with
   | Cic.InductiveDefinition (indTypes, params, leftno, _) ->
@@ -364,8 +366,11 @@ debug_print (CicPp.ppterm eliminator_body);
         | _ -> assert false
       in
       let name = UriManager.name_of_uri uri ^ suffix in
+      let buri = UriManager.buri_of_uri uri in
+      let uri = UriManager.uri_of_string (buri ^ "/" ^ name ^ ".con") in
       let obj_attrs = [`Class (`Elim sort); `Generated] in
-      Cic.Constant (name, Some eliminator_body, eliminator_type, [], obj_attrs)
+       uri,
+       Cic.Constant (name, Some eliminator_body, eliminator_type, [], obj_attrs)
   | _ ->
       failwith (sprintf "not an inductive definition (%s)"
         (UriManager.string_of_uri uri))