我注意到在使用Isabelle/HOL Isar时有几种处理全称量化的方法。我正在尝试以适合本科生理解和复制的方式编写一些证明(这就是我使用Isar的原因!),但我不确定如何以一种好的方式表示全称量化。
例如,在Coq中,我可以写
例如,在Coq中,我可以写
forall x, P(x)
,然后我可以说“induction x”,这将根据相应的归纳原理自动生成目标。然而,在Isabelle/HOL Isar中,如果我想直接应用归纳原理,我必须陈述定理而没有任何量化,像这样:lemma foo: P(x)
proof (induct x)
当x被视为原理变量时,它可以很好地工作,这很好。然而,在语句中缺乏普遍量化,这不是很有教育意义。另一种方法是使用\<And>
和\<forall>
。但是,如果我以这种方式陈述引理,我无法直接应用归纳原理,我必须先确定普遍量化的变量...从教育的角度来看,这似乎又不方便:
lemma foo: \<And>x. P(x)
proof -
fix x
show "P(x)"
proof (induct x)
有没有一种漂亮的证明模式可以表达普遍量化,而不需要我在归纳之前明确固定变量?