在 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
并提供您自己的有根据的关系。
我必须证明 属性 这种形式:
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
并提供您自己的有根据的关系。