如何为相互递归类型证明引理?

时间:2018-12-23 17:35:51

标签: isabelle

这是一个示例理论:

datatype t1 = A | B t2
     and t2 = C | D t1

inductive rel1 and rel2 where
  "rel1 A 0"
| "rel2 x n ⟹
   rel1 (B x) n"
| "rel2 C 1"
| "rel1 x n ⟹
   rel2 (D x) n"

lemma rel1_det:
  "rel1 x n ⟹ rel1 x m ⟹ n = m"
  apply (induct x, auto)
  apply (simp add: rel1.simps)
  apply (simp add: rel1.simps)

我试图证明rel1是确定性的。但似乎我不能使用简单的归纳法。你能建议用什么策略证明这样的引理?

1 个答案:

答案 0 :(得分:2)

对于相互依赖的类型,证明使用相互依赖的归纳法。因此,引理也将有两个主张:

 impulsively1.