Isabelle 《伊莎贝尔》中的模式匹配存在目标

Isabelle 《伊莎贝尔》中的模式匹配存在目标,isabelle,Isabelle,我想知道是否有一种方法可以编写以下模式匹配: have "∃ q1 q2 q3 q4. b0^2 - a1^2 = q1*(-1 + a0^2 + b0^2 - t^2 * a0^2 * b0^2) + q2*(-1 + a1^2 + b1^2 - t^2 * a1^2 * b1^2) + q3*(a0 * b0 - a1 * b1) + q4*(a1 * b0 + a0 * b1)

我想知道是否有一种方法可以编写以下模式匹配:

have "∃ q1 q2 q3 q4.
        b0^2 - a1^2 = 
            q1*(-1 + a0^2 + b0^2 - t^2 * a0^2 * b0^2) +
            q2*(-1 + a1^2 + b1^2 - t^2 * a1^2 * b1^2) +
            q3*(a0 * b0 - a1 * b1) +
            q4*(a1 * b0 + a0 * b1)"   
    (is "∃ q1 q2 q3 q4. ?a = ?b")      

目前我遇到了一个模式匹配失败的问题,我担心这在一般情况下是不可能的…

如果你这样写,
?a
?b
bool
类型的常量,也就是说,它们不能依赖于
q1
q4
。因为在您的例子中,语句依赖于它们,所以模式匹配失败

你必须把它写成

(is "∃ q1 q2 q3 q4. ?a q1 q2 q3 q4 = ?b q1 q2 q3 q4")
然后它就起作用了


否则,
?a
将在存在量词之外使用什么?它将引用未绑定到任何地方的变量
q1
q4

如果您这样编写,
?a
?b
bool
类型的常量,即它们不能依赖于
q1
q4
。因为在您的例子中,语句依赖于它们,所以模式匹配失败

你必须把它写成

(is "∃ q1 q2 q3 q4. ?a q1 q2 q3 q4 = ?b q1 q2 q3 q4")
然后它就起作用了

否则,
?a
将在存在量词之外使用什么?它将引用未绑定到任何位置的变量
q1
q4