(Some (Cic.Name s,_))::_ -> s
| _ -> assert false
in
+ let dummy = "dummy" in
Some arg,false,
(fun ~term ->
Tacticals.seq
~tactics:
- [PT.letin_tac term;
- PET.mk_tactic (fun status ->
- PET.apply_tactic
- (ProofEngineStructuralRules.clearbody
- (last_hyp_name_of_status status)) status);
- PET.mk_tactic (fun status ->
- let hyp = last_hyp_name_of_status status in
- PET.apply_tactic
- (ReductionTactics.simpl_tac
- ~pattern:
- (None,[hyp,Cic.Implicit (Some `Hole)],Cic.Implicit None))
- status);
- ProofEngineStructuralRules.clear name;
- PET.mk_tactic (fun status ->
- let hyp = last_hyp_name_of_status status in
- PET.apply_tactic
- (ProofEngineStructuralRules.rename hyp name) status)
+ [ProofEngineStructuralRules.rename name dummy;
+ PT.letin_tac
+ ~mk_fresh_name_callback:(fun _ _ _ ~typ -> Cic.Name name) term;
+ ProofEngineStructuralRules.clearbody name;
+ ReductionTactics.simpl_tac
+ ~pattern:
+ (None,[name,Cic.Implicit (Some `Hole)],Cic.Implicit None);
+ ProofEngineStructuralRules.clear dummy
]),
pat,gty
| _ -> assert false (*CSC: not implemented yet!*)