你想做的不叫“实例化”。您可以实例化一个普遍量化的假设,也可以实例化一个存在量化的结论,但反之则不行。我认为正确的名称是“介绍”。您可以在假设中引入存在量化,也可以在结论中引入全称量化。如果看起来您似乎是在“消除”,那是因为,在证明某些事情时,您从后续微积分推导的底部开始,然后向后推到顶部。
无论如何,使用策略firstorder
。Set Firstorder Depth 0
此外,如果您只想简化目标,请使用该命令关闭证明搜索。
但是,如果您的目标具有更高阶的元素,您可能会收到一条错误消息。在这种情况下,您可以使用类似simplify
.
Ltac simplify := repeat
match goal with
| h1 : False |- _ => destruct h1
| |- True => constructor
| h1 : True |- _ => clear h1
| |- ~ _ => intro
| h1 : ~ ?p1, h2 : ?p1 |- _ => destruct (h1 h2)
| h1 : _ \/ _ |- _ => destruct h1
| |- _ /\ _ => constructor
| h1 : _ /\ _ |- _ => destruct h1
| h1 : exists _, _ |- _ => destruct h1
| |- forall _, _ => intro
| _ : ?x1 = ?x2 |- _ => subst x2 || subst x1
end.