在伊莎贝尔中使用策略是否可以 "free" 顶级普遍量化变量?
Is it possible to "free" top-level universally quantified variables using tactics in Isabelle?
简而言之,我想从这里开始:
proof (prove)
goal (1 subgoal):
1. ⋀ myVar . somePredicate myVar
对此:
proof (prove)
goal (1 subgoal):
1. somePredicate myVar
通过战术。我能找到的唯一解决方案是写一个新的 lemma
例如:
lemma myPredicateHolds_aux : "somePredicate myVar"
sorry
然后原来的⋀ myVar . somePredicate myVar
一般可以这样写:
using myPredicateHolds_aux by blast
但我想知道是否有更好的方法(使用策略),为了方便,并且因为,如果 属性 非常复杂,blast
可能会失败。
proof (prove)
表明您正在编写证明脚本,在这种情况下您可以使用 subgoal for myVar
。我认为 "isar-ref" 手册对此进行了更多说明(尽管它可能有点密集)。
你也可以,我相信这通常是 "preferred" 的方法,进入结构化 Isar 证明模式并使用 fix
:
proof -
fix myVar
show "somePredicate myVar"
proof ...
简而言之,我想从这里开始:
proof (prove)
goal (1 subgoal):
1. ⋀ myVar . somePredicate myVar
对此:
proof (prove)
goal (1 subgoal):
1. somePredicate myVar
通过战术。我能找到的唯一解决方案是写一个新的 lemma
例如:
lemma myPredicateHolds_aux : "somePredicate myVar"
sorry
然后原来的⋀ myVar . somePredicate myVar
一般可以这样写:
using myPredicateHolds_aux by blast
但我想知道是否有更好的方法(使用策略),为了方便,并且因为,如果 属性 非常复杂,blast
可能会失败。
proof (prove)
表明您正在编写证明脚本,在这种情况下您可以使用 subgoal for myVar
。我认为 "isar-ref" 手册对此进行了更多说明(尽管它可能有点密集)。
你也可以,我相信这通常是 "preferred" 的方法,进入结构化 Isar 证明模式并使用 fix
:
proof -
fix myVar
show "somePredicate myVar"
proof ...