在伊莎贝尔中使用策略是否可以 "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 ...