伊莎贝尔的简单引理

时间:2014-12-14 20:38:21

标签: isabelle

我一直在努力学习如何使用Isabelle而且我遇到了一个问题。以下引理有效:

lemma sum_square: "(a+b)^2=a^2+(2::real)*a*b+b^2"
apply (simp add: power2_eq_square) 
output: (a + b) * (a + b) = a * a + 2 * a * b + b * b
然而,下面的引理却没有:

lemma sum_sq: "(a+b)^2 = (a+b) * (a+b)"
apply (simp add: power2_eq_square)
output: Failed to apply proof method

有人可以告诉我我做错了吗?

此外,任何人都可以指导我使用Isabelle教程或简单的证据来增加我对Isabelle的知识吗?

1 个答案:

答案 0 :(得分:2)

在Isabelle中,像乘法,加法,取幂等几个运算符都是多态的,纯粹是语法的。即,在您的陈述(a+b)^2 = (a+b) * (a+b)中,ab的类型可以是任何类型,并且不一定是数字类型。

您可以通过 Ctrl -click或 Ctrl -hover对相应的引理和变量检测此类情况。例如,power2_eq_square在上下文monoid_mult中定义,即,仅当ab属于monoid_mult的类型时,才会引发a适用。但是,'a :: {numeral,power}的类型为Documentation

关于教程,只需点击Isabelle / jEdit窗口右侧的prog-prove, 然后两个教程tutorial和{{1}}变得可见。