From 6bccccbe78dd8ca020038c0d7a901cd5b129fd03 Mon Sep 17 00:00:00 2001 From: Claudio Sacerdoti Coen Date: Wed, 29 Jan 2003 17:03:27 +0000 Subject: [PATCH] 1. Added a callback to the generalize tactic to generate a fresh name. 2. Dead code removal in various files. --- helm/ocaml/tactics/equalityTactics.ml | 3 +- helm/ocaml/tactics/fourierR.ml | 64 --------------------------- helm/ocaml/tactics/variousTactics.ml | 7 ++- helm/ocaml/tactics/variousTactics.mli | 4 +- 4 files changed, 9 insertions(+), 69 deletions(-) diff --git a/helm/ocaml/tactics/equalityTactics.ml b/helm/ocaml/tactics/equalityTactics.ml index c1212360c..4ff71c792 100644 --- a/helm/ocaml/tactics/equalityTactics.ml +++ b/helm/ocaml/tactics/equalityTactics.ml @@ -169,11 +169,10 @@ let replace_tac ~what ~with_what ~status:((proof, goal) as status) = with_what])) ~continuations:[ T.then_ - ~start:(rewrite_back_tac ~term:(C.Rel 1)) (* C.Name "dummy_for_replace" *) + ~start:(rewrite_back_tac ~term:(C.Rel 1)) ~continuation:( ProofEngineStructuralRules.clear ~hyp:(List.hd context)) ; -(* (Some(C.Name "dummy_for_replace" , C.Def (CicTypeChecker.type_of_aux' metasenv context (C.Rel 1)) (* NOOOO!!!!! tipo di dummy *) )))) ; *) T.id_tac] ~status else raise (ProofEngineTypes.Fail "Replace: terms not replaceable") diff --git a/helm/ocaml/tactics/fourierR.ml b/helm/ocaml/tactics/fourierR.ml index bd4eeae3e..b1aa1a256 100644 --- a/helm/ocaml/tactics/fourierR.ml +++ b/helm/ocaml/tactics/fourierR.ml @@ -24,70 +24,6 @@ *) -(******************** OTHER USEFUL TACTICS **********************) -(* Galla: moved in variousTactics.ml - -let rewrite_tac ~term:equality ~status:(proof,goal) = - let module C = Cic in - let module U = UriManager in - let curi,metasenv,pbo,pty = proof in - let metano,context,gty = List.find (function (m,_,_) -> m=goal) metasenv in - let eq_ind_r,ty,t1,t2 = - match CicTypeChecker.type_of_aux' metasenv context equality with - C.Appl [C.MutInd (uri,0,[]) ; ty ; t1 ; t2] - when U.eq uri (U.uri_of_string "cic:/Coq/Init/Logic/eq.ind") -> - let eq_ind_r = - C.Const - (U.uri_of_string "cic:/Coq/Init/Logic/eq_ind_r.con",[]) - in - eq_ind_r,ty,t1,t2 - | C.Appl [C.MutInd (uri,0,[]) ; ty ; t1 ; t2] - when U.eq uri (U.uri_of_string "cic:/Coq/Init/Logic_Type/eqT.ind") -> - let eqT_ind_r = - C.Const - (U.uri_of_string "cic:/Coq/Init/Logic_Type/eqT_ind_r.con",[]) - in - eqT_ind_r,ty,t1,t2 - | _ -> - raise - (ProofEngineTypes.Fail - "Rewrite: the argument is not a proof of an equality") - in - let pred = - let gty' = CicSubstitution.lift 1 gty in - let t1' = CicSubstitution.lift 1 t1 in - let gty'' = - ProofEngineReduction.replace_lifting - ~equality:ProofEngineReduction.alpha_equivalence - ~what:t1' ~with_what:(C.Rel 1) ~where:gty' - in - C.Lambda (C.Name "dummy_for_rewrite", ty, gty'') - in -prerr_endline ("#### Sintetizzato: " ^ CicPp.ppterm pred); - let fresh_meta = ProofEngineHelpers.new_meta proof in - let irl = - ProofEngineHelpers.identity_relocation_list_for_metavariable context in - let metasenv' = (fresh_meta,context,C.Appl [pred ; t2])::metasenv in - - let (proof',goals) = - PrimitiveTactics.exact_tac - ~term:(C.Appl - [eq_ind_r ; ty ; t2 ; pred ; C.Meta (fresh_meta,irl) ; t1 ;equality]) - ~status:((curi,metasenv',pbo,pty),goal) - in - assert (List.length goals = 0) ; - (proof',[fresh_meta]) -;; - - -let rewrite_simpl_tac ~term ~status = - Tacticals.then_ ~start:(rewrite_tac ~term) - ~continuation: - (ReductionTactics.simpl_tac ~also_in_hypotheses:false ~term:None) - ~status -;; -*) - (******************** THE FOURIER TACTIC ***********************) (* La tactique Fourier ne fonctionne de manière sûre que si les coefficients diff --git a/helm/ocaml/tactics/variousTactics.ml b/helm/ocaml/tactics/variousTactics.ml index f24f7904c..95576e2d7 100644 --- a/helm/ocaml/tactics/variousTactics.ml +++ b/helm/ocaml/tactics/variousTactics.ml @@ -56,7 +56,10 @@ exception AllSelectedTermsMustBeConvertible;; 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 ~terms ~status:((proof,goal) as status) = +let generalize_tac + ?(mk_fresh_name_callback = ProofEngineHelpers.mk_fresh_name) + terms ~status:((proof,goal) as status) += let module C = Cic in let module P = PrimitiveTactics in let module T = Tacticals in @@ -78,7 +81,7 @@ let generalize_tac ~terms ~status:((proof,goal) as status) = ~start: (P.cut_tac (C.Prod( - (C.Name "dummy_for_gen"), + (mk_fresh_name_callback context C.Anonymous typ), typ, (ProofEngineReduction.replace_lifting_csc 1 ~equality:(==) diff --git a/helm/ocaml/tactics/variousTactics.mli b/helm/ocaml/tactics/variousTactics.mli index b08b33fac..b80bc352f 100644 --- a/helm/ocaml/tactics/variousTactics.mli +++ b/helm/ocaml/tactics/variousTactics.mli @@ -26,7 +26,9 @@ exception AllSelectedTermsMustBeConvertible;; val assumption_tac: ProofEngineTypes.tactic -val generalize_tac: terms:Cic.term list -> ProofEngineTypes.tactic +val generalize_tac: + ?mk_fresh_name_callback:ProofEngineTypes.mk_fresh_name_type -> Cic.term list -> + ProofEngineTypes.tactic (* val decide_equality_tac: ProofEngineTypes.tactic -- 2.39.2