X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;ds=sidebyside;f=helm%2Focaml%2Ftactics%2FreductionTactics.ml;h=bfbfdb2a37c0a1113336f9b2d8dec4339f799859;hb=6a9d597352e104434a1a7f371fdd1bbdac5e50a3;hp=c641cbf653af905c3b4689b5f4407dc6bdb6ecaa;hpb=caaca5ed51e45a023ccb1244fd5cbbb32d233e2e;p=helm.git diff --git a/helm/ocaml/tactics/reductionTactics.ml b/helm/ocaml/tactics/reductionTactics.ml index c641cbf65..bfbfdb2a3 100644 --- a/helm/ocaml/tactics/reductionTactics.ml +++ b/helm/ocaml/tactics/reductionTactics.ml @@ -58,12 +58,9 @@ let reduction_tac ~reduction ~pattern:(hyp_patterns,goal_pattern) (proof,goal) = try let terms, terms' = List.split - (List.map - (fun i, t -> t, - (let x, _, _ = CicMetaSubst.delift_rels [] metasenv i t in - let t' = reduction context x in - CicSubstitution.lift i t')) - terms) + (List.map + (fun i, t -> t, reduction (i @ context) t) + terms) in ProofEngineReduction.replace ~equality:(==) ~what:terms ~with_what:terms' ~where:where @@ -76,9 +73,9 @@ let reduction_tac ~reduction ~pattern:(hyp_patterns,goal_pattern) (proof,goal) = in let ty' = match goal_pattern with - | None -> replace context ty [0,ty] + | None -> replace context ty [[],ty] | Some pat -> - let terms = CicUtil.select ~term:ty ~context:pat in + let terms = ProofEngineHelpers.select ~term:ty ~pattern:pat in replace context ty terms in let context' = @@ -90,7 +87,7 @@ let reduction_tac ~reduction ~pattern:(hyp_patterns,goal_pattern) (proof,goal) = (match find_pattern_for name with | None -> entry::context | Some pat -> - let terms = CicUtil.select ~term ~context:pat in + let terms = ProofEngineHelpers.select ~term ~pattern:pat in let where = replace context term terms in let entry = Some (name,Cic.Decl where) in entry::context) @@ -98,7 +95,7 @@ let reduction_tac ~reduction ~pattern:(hyp_patterns,goal_pattern) (proof,goal) = (match find_pattern_for name with | None -> entry::context | Some pat -> - let terms = CicUtil.select ~term ~context:pat in + let terms = ProofEngineHelpers.select ~term ~pattern:pat in let where = replace context term terms in let entry = Some (name,Cic.Def (where,None)) in entry::context) @@ -128,15 +125,13 @@ let whd_tac ~pattern = let normalize_tac ~pattern = mk_tactic (reduction_tac ~reduction:CicReduction.normalize ~pattern );; -let fold_tac ~reduction ~also_in_hypotheses ~term = - let fold_tac ~reduction ~also_in_hypotheses ~term (proof,goal) = +let fold_tac ~reduction ~pattern ~term = +(* + let fold_tac ~reduction ~pattern:(hyp_patterns,goal_pattern) ~term (proof,goal) + = let curi,metasenv,pbo,pty = proof in let metano,context,ty = CicUtil.lookup_meta goal metasenv in let term' = reduction context term in - (* We don't know if [term] is a subterm of [ty] or a subterm of *) - (* the type of one metavariable. So we replace it everywhere. *) - (*CSC: ma si potrebbe ovviare al problema. Ma non credo *) - (*CSC: che si guadagni nulla in fatto di efficienza. *) let replace = ProofEngineReduction.replace ~equality:(=) ~what:[term'] ~with_what:[term] in @@ -163,5 +158,6 @@ let fold_tac ~reduction ~also_in_hypotheses ~term = in (curi,metasenv',pbo,pty), [metano] in - mk_tactic (fold_tac ~reduction ~also_in_hypotheses ~term) + mk_tactic (fold_tac ~reduction ~pattern ~term) +*) assert false ;;