归纳介绍'bad name'
Induction introduces 'bad name'
在下面的代码中:
inductive T :: "alpha list ⇒ bool" where
Tε : "T []" |
TaTb : "T l ⟹ T r ⟹ T (l @ a#(r @ [b]))"
lemma Tapp: "⟦T l; T r⟧ ⟹ T (l@r)"
proof (induction l arbitrary: r rule: T.induct)
case Tε
then show ?case by (simp add: Tε)
next
case (TaTb l r) then show ?case
我的状态:
proof (prove)
using this:
T l
T ra__
T ?r ⟹ T (l @ ?r)
T ?r ⟹ T (ra__ @ ?r)
T r
goal (1 subgoal):
1. T ((l @ a # ra__ @ [b]) @ r)
但是,我无法引用此 ra__
,获取 Bad name: "ra__"⌂
,但是,我需要引用它。如何绑定?
您的证明文本试图为两个不同的变量赋予名称 r
。对于您的案例模式,请尝试使用不同的名称,例如case(TaTb l r')
。您将获得相同的证明状态,除了 r'
而不是 ra__
.
在下面的代码中:
inductive T :: "alpha list ⇒ bool" where
Tε : "T []" |
TaTb : "T l ⟹ T r ⟹ T (l @ a#(r @ [b]))"
lemma Tapp: "⟦T l; T r⟧ ⟹ T (l@r)"
proof (induction l arbitrary: r rule: T.induct)
case Tε
then show ?case by (simp add: Tε)
next
case (TaTb l r) then show ?case
我的状态:
proof (prove)
using this:
T l
T ra__
T ?r ⟹ T (l @ ?r)
T ?r ⟹ T (ra__ @ ?r)
T r
goal (1 subgoal):
1. T ((l @ a # ra__ @ [b]) @ r)
但是,我无法引用此 ra__
,获取 Bad name: "ra__"⌂
,但是,我需要引用它。如何绑定?
您的证明文本试图为两个不同的变量赋予名称 r
。对于您的案例模式,请尝试使用不同的名称,例如case(TaTb l r')
。您将获得相同的证明状态,除了 r'
而不是 ra__
.