]> matita.cs.unibo.it Git - helm.git/commitdiff
mk_fresh_name moved to FreshNamesGenerator.
authorClaudio Sacerdoti Coen <claudio.sacerdoticoen@unibo.it>
Thu, 5 Feb 2004 11:33:09 +0000 (11:33 +0000)
committerClaudio Sacerdoti Coen <claudio.sacerdoticoen@unibo.it>
Thu, 5 Feb 2004 11:33:09 +0000 (11:33 +0000)
helm/gTopLevel/gTopLevel.ml
helm/ocaml/cic_unification/.depend
helm/ocaml/cic_unification/freshNamesGenerator.ml [new file with mode: 0644]
helm/ocaml/cic_unification/freshNamesGenerator.mli [new file with mode: 0644]
helm/ocaml/tactics/equalityTactics.ml
helm/ocaml/tactics/primitiveTactics.ml
helm/ocaml/tactics/proofEngineHelpers.ml
helm/ocaml/tactics/proofEngineHelpers.mli
helm/ocaml/tactics/variousTactics.ml

index 2b9e101ab43a11e20db3f22351b57ebf61f317fd..81f9acd666ed8be82a217d2cc6aa56f7ff4d3a3d 100644 (file)
@@ -558,7 +558,7 @@ let decompose_uris_choice_callback uris =
 
 let mk_fresh_name_callback context name ~typ =
  let fresh_name =
-  match ProofEngineHelpers.mk_fresh_name context name ~typ with
+  match FreshNamesGenerator.mk_fresh_name context name ~typ with
      Cic.Name fresh_name -> fresh_name
    | Cic.Anonymous -> assert false
  in
index aaa72347421f1f01e33d4ec8bfb884aaba7f4f2f..eb500c9210e43c5580a958a6ec6ab4e41dc4ed53 100644 (file)
@@ -1,6 +1,6 @@
-cicMkImplicit.cmo: cicMkImplicit.cmi 
-cicMkImplicit.cmx: cicMkImplicit.cmi 
 cicUnification.cmi: cicMetaSubst.cmi 
+freshNamesGenerator.cmo: freshNamesGenerator.cmi 
+freshNamesGenerator.cmx: freshNamesGenerator.cmi 
 cicMkImplicit.cmo: cicMkImplicit.cmi 
 cicMkImplicit.cmx: cicMkImplicit.cmi 
 cicMetaSubst.cmo: cicMetaSubst.cmi 
diff --git a/helm/ocaml/cic_unification/freshNamesGenerator.ml b/helm/ocaml/cic_unification/freshNamesGenerator.ml
new file mode 100644 (file)
index 0000000..3f0006a
--- /dev/null
@@ -0,0 +1,62 @@
+(* Copyright (C) 2004, HELM Team.
+ * 
+ * This file is part of HELM, an Hypertextual, Electronic
+ * Library of Mathematics, developed at the Computer Science
+ * Department, University of Bologna, Italy.
+ * 
+ * HELM is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * HELM is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HELM; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ * MA  02111-1307, USA.
+ * 
+ * For details, see the HELM World-Wide-Web page,
+ * http://cs.unibo.it/helm/.
+ *)
+
+(* mk_fresh_name context name typ                      *)
+(* returns an identifier which is fresh in the context *)
+(* and that resembles [name] as much as possible.      *)
+(* [typ] will be the type of the variable              *)
+let mk_fresh_name context name ~typ =
+ let module C = Cic in
+  let basename =
+   match name with
+      C.Anonymous ->
+       (*CSC: great space for improvements here *)
+       (try
+         (match CicTypeChecker.type_of_aux' [] context typ with
+             C.Sort C.Prop
+           | C.Sort C.CProp -> "H"
+           | C.Sort C.Set -> "x"
+           | _ -> "H"
+         )
+        with CicTypeChecker.TypeCheckerFailure _ -> "H"
+       )
+    | C.Name name ->
+       Str.global_replace (Str.regexp "[0-9]*$") "" name
+  in
+   let already_used name =
+    List.exists (function Some (C.Name n,_) -> n=name | _ -> false) context
+   in
+    if not (already_used basename) then
+     C.Name basename
+    else
+     let rec try_next n =
+      let name' = basename ^ string_of_int n in
+       if already_used name' then
+        try_next (n+1)
+       else
+        C.Name name'
+     in
+      try_next 1
+;;
diff --git a/helm/ocaml/cic_unification/freshNamesGenerator.mli b/helm/ocaml/cic_unification/freshNamesGenerator.mli
new file mode 100644 (file)
index 0000000..e350363
--- /dev/null
@@ -0,0 +1,30 @@
+(* Copyright (C) 2004, HELM Team.
+ * 
+ * This file is part of HELM, an Hypertextual, Electronic
+ * Library of Mathematics, developed at the Computer Science
+ * Department, University of Bologna, Italy.
+ * 
+ * HELM is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ * 
+ * HELM is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HELM; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ * MA  02111-1307, USA.
+ * 
+ * For details, see the HELM World-Wide-Web page,
+ * http://cs.unibo.it/helm/.
+ *)
+
+(* mk_fresh_name context name typ                      *)
+(* returns an identifier which is fresh in the context *)
+(* and that resembles [name] as much as possible.      *)
+(* [typ] will be the type of the variable              *)
+val mk_fresh_name : Cic.context -> Cic.name -> typ:Cic.term -> Cic.name
index 48d5ea9a63e705780a49784989a59148d852c0b6..304f10450fadd1585d4b5b9fea275801c82abe55 100644 (file)
@@ -59,7 +59,7 @@ let rewrite_tac ~term:equality ~status:(proof,goal) =
        ~what:[t1'] ~with_what:[C.Rel 1] ~where:gty'
      in
       C.Lambda
-       (ProofEngineHelpers.mk_fresh_name context C.Anonymous ty, ty, gty'')
+       (FreshNamesGenerator.mk_fresh_name context C.Anonymous ty, ty, gty'')
     in
     let fresh_meta = ProofEngineHelpers.new_meta_of_proof proof in
     let irl = CicMkImplicit.identity_relocation_list_for_metavariable context in
@@ -120,7 +120,7 @@ let rewrite_back_tac ~term:equality ~status:(proof,goal) =
        ~what:[t1'] ~with_what:[C.Rel 1] ~where:gty'
      in
       C.Lambda
-       (ProofEngineHelpers.mk_fresh_name context C.Anonymous ty, ty, gty'')
+       (FreshNamesGenerator.mk_fresh_name context C.Anonymous ty, ty, gty'')
     in
     let fresh_meta = ProofEngineHelpers.new_meta_of_proof proof in
     let irl =
index 5c187b05367c92eecd6241b4db3378531b245fc1..2b505b79de725cdb87974c4d4d8622d3773f7fb6 100644 (file)
@@ -115,7 +115,7 @@ let eta_expand metasenv context t arg =
     T.type_of_aux' metasenv context arg
    in
     let fresh_name =
-     ProofEngineHelpers.mk_fresh_name context (Cic.Name "Heta") ~typ:argty
+     FreshNamesGenerator.mk_fresh_name context (Cic.Name "Heta") ~typ:argty
     in
      (C.Appl [C.Lambda (fresh_name,argty,aux 0 t) ; arg])
 
@@ -312,7 +312,7 @@ let apply_tac ~term ~status =
     raise (Fail (Printexc.to_string e))
 
 let intros_tac
- ?(mk_fresh_name_callback = ProofEngineHelpers.mk_fresh_name) ()
+ ?(mk_fresh_name_callback = FreshNamesGenerator.mk_fresh_name) ()
  ~status:(proof, goal)
 =
  let module C = Cic in
@@ -329,7 +329,7 @@ let intros_tac
       (newproof, [newmeta])
 
 let cut_tac
- ?(mk_fresh_name_callback = ProofEngineHelpers.mk_fresh_name)
+ ?(mk_fresh_name_callback = FreshNamesGenerator.mk_fresh_name)
  term ~status:(proof, goal)
 =
  let module C = Cic in
@@ -361,7 +361,7 @@ let cut_tac
       (newproof, [newmeta1 ; newmeta2])
 
 let letin_tac
- ?(mk_fresh_name_callback = ProofEngineHelpers.mk_fresh_name)
+ ?(mk_fresh_name_callback = FreshNamesGenerator.mk_fresh_name)
  term ~status:(proof, goal)
 =
  let module C = Cic in
index ccac132ef6b631b46504d9e63b96c1af5ed8804c..aec43abc373750a42f8edbe26c807950e68d516b 100644 (file)
  * http://cs.unibo.it/helm/.
  *)
 
-(* mk_fresh_name context name typ                      *)
-(* returns an identifier which is fresh in the context *)
-(* and that resembles [name] as much as possible.      *)
-(* [typ] will be the type of the variable              *)
-let mk_fresh_name context name ~typ =
- let module C = Cic in
-  let basename =
-   match name with
-      C.Anonymous ->
-       (*CSC: great space for improvements here *)
-       (try
-         (match CicTypeChecker.type_of_aux' [] context typ with
-             C.Sort C.Prop -> "H"
-          | C.Sort C.CProp -> "H"
-           | C.Sort C.Set -> "x"
-           | _ -> "H"
-         )
-        with CicTypeChecker.TypeCheckerFailure _ -> "H"
-       )
-    | C.Name name ->
-       Str.global_replace (Str.regexp "[0-9]*$") "" name
-  in
-   let already_used name =
-    List.exists (function Some (C.Name n,_) -> n=name | _ -> false) context
-   in
-    if not (already_used basename) then
-     C.Name basename
-    else
-     let rec try_next n =
-      let name' = basename ^ string_of_int n in
-       if already_used name' then
-        try_next (n+1)
-       else
-        C.Name name'
-     in
-      try_next 1
-;;
-
 let new_meta_of_proof ~proof:(_, metasenv, _, _) =
   CicMkImplicit.new_meta metasenv
 
index 6527762623feab18e4ce102578fef1fc81023e32..5a4f145f995a07c1130f0b05460178fa2dd59f60 100644 (file)
  * http://cs.unibo.it/helm/.
  *)
 
-(* mk_fresh_name context name typ                      *)
-(* returns an identifier which is fresh in the context *)
-(* and that resembles [name] as much as possible.      *)
-(* [typ] will be the type of the variable              *)
-val mk_fresh_name : ProofEngineTypes.mk_fresh_name_type
-
 (* Returns the first meta whose number is above the *)
 (* number of the higher meta.                       *)
 val new_meta_of_proof : proof:ProofEngineTypes.proof -> int
index 04959e6962fdc2bd246db1282ae516682e5c837b..28acd57ec250400b5144b5098999b68cca72e412 100644 (file)
@@ -59,7 +59,7 @@ e li aggiunga nel context, poi si conta la lunghezza di questo nuovo
 contesto e si lifta di tot... COSA SIGNIFICA TUTTO CIO'?????? *)
 
 let generalize_tac
- ?(mk_fresh_name_callback = ProofEngineHelpers.mk_fresh_name)
+ ?(mk_fresh_name_callback = FreshNamesGenerator.mk_fresh_name)
  terms ~status:((proof,goal) as status)
 =
   let module C = Cic in