在 Isabelle 中引入有根据的命令

Induction on a well-founded order in Isabelle

我必须证明 属性 这种形式:

lemma 
  assumes "set E ⊆ set E'" "⊢ E' ok"
  shows "set (cv T E b) ⊆ set (cv T E' b)"

我想用类似的东西来证明它:

proof(induction "(size T, length E)" 
        arbitrary: E T rule: less_induct)

意味着归纳假设应该给我所有对 T、E 的 属性,使得字典顺序为:

(size T, length E)

变小了。

到目前为止我只收到错误信息:

exception THM 0 raised (line 760 of "drule.ML"):
  infer_instantiate_types: type ?'a of variable ?a
  cannot be unified with type nat × nat of term x__
  (⋀x. (⋀y. y < x ⟹ ?P y) ⟹ ?P x) ⟹ ?P ?a

问题是默认情况下不导入成对排序的类型类实例。您可以导入 "HOL-Library.Product_Lexorder" 以获得成对的正常词典顺序。

或者,您可以使用规则 wf_induct 并提供您自己的有根据的关系。