only in the conclusion and not (yet) on the hypothesis.
List.map (function (i,_,_) -> i) new_uninstantiatedmetas)
;;
-let elim_simpl_intros_tac ~term =
+(* The simplification is performed only on the conclusion *)
+let elim_intros_simpl_tac ~term =
Tacticals.then_ ~start:(elim_tac ~term)
~continuation:
- (Tacticals.then_
- ~start:(ReductionTactics.simpl_tac ~also_in_hypotheses:false ~term:None)
- ~continuation:intros_tac)
+ (Tacticals.thens
+ ~start:intros_tac
+ ~continuations:
+ [ReductionTactics.simpl_tac ~also_in_hypotheses:false ~term:None])
;;
-
exception NotConvertible
(*CSC: Bug (or feature?). [with_what] is parsed in the context of the goal, *)
val letin_tac:
term: Cic.term -> ProofEngineTypes.tactic
-val elim_simpl_intros_tac:
+val elim_intros_simpl_tac:
term: Cic.term -> ProofEngineTypes.tactic
val change_tac:
let cut term = apply_tactic (PrimitiveTactics.cut_tac ~term)
let letin term = apply_tactic (PrimitiveTactics.letin_tac ~term)
let exact term = apply_tactic (PrimitiveTactics.exact_tac ~term)
-let elim_simpl_intros term =
- apply_tactic (PrimitiveTactics.elim_simpl_intros_tac ~term)
+let elim_intros_simpl term =
+ apply_tactic (PrimitiveTactics.elim_intros_simpl_tac ~term)
let change ~goal_input:what ~input:with_what =
apply_tactic (PrimitiveTactics.change_tac ~what ~with_what)
val cut : Cic.term -> unit
val letin : Cic.term -> unit
val exact : Cic.term -> unit
-val elim_simpl_intros : Cic.term -> unit
+val elim_intros_simpl : Cic.term -> unit
val change : goal_input:Cic.term -> input:Cic.term -> unit
(* structural tactics *)
let module T = Tacticals in
T.thens
~start: (P.cut_tac ~term)
- ~continuations:[ P.elim_simpl_intros_tac ~term:(C.Rel 1) ; T.id_tac ]
+ ~continuations:[ P.elim_intros_simpl_tac ~term:(C.Rel 1) ; T.id_tac ]
~status
;;
-(* Questa era gia' in ring.ml!!!! NB: adesso in ring non c'e' piu' :-)
-let elim_type_tac ~term ~status =
- warn "in Ring.elim_type_tac";
- Tacticals.thens ~start:(cut_tac ~term)
- ~continuations:[elim_simpl_intros_tac ~term:(Cic.Rel 1) ; Tacticals.id_tac] ~status
-*)
-
-
let absurd_tac ~term ~status:((proof,goal) as status) =
let module C = Cic in
let module U = UriManager in
if (term == C.Implicit)
then raise (ProofEngineTypes.Fail "Decompose: nothing to decompose or no application")
else T.then_
- ~start:(P.elim_simpl_intros_tac ~term)
+ ~start:(P.elim_intros_simpl_tac ~term)
~continuation:(S.clear ~hyp:(Some ((C.Name "FOO") , (C.Decl ty)))) (* ma che ipotesi sto cancellando??? *)
~status
in