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