是否有 Isabelle/Isar 证明策略来证明有关非归纳定义的引理?

时间:2021-05-14 13:21:18

标签: isabelle isar

我有 Isabelle 理论和非归纳定义(我想对算法进行建模,避免工业开发人员通常所做的归纳)和针对此定义陈述的引理:

theory Maximum
  imports (* Main *)
    "HOL-Library.Multiset"
    "HOL-Library.Code_Target_Numeral"
    "HOL-Library.Code_Target_Nat"
    "HOL-Library.Code_Abstract_Nat"
begin

definition two_integer_max_case_def :: "nat ⇒ nat ⇒ nat" where
"two_integer_max_case_def a b = (case a > b of True ⇒ a | False ⇒ b)"

lemma spec_1:
  fixes a :: nat and b :: nat
  assumes "a > b"
  shows "two_integer_max_case_def a b = a"
  apply (induction b)
  apply (induction a)
  apply simp_all
  done

end

当前证明状态产生了 3 个目标,它们都与归纳相关(直接应用 simp 失败,Failed to apply proof method):

proof (prove)
goal (3 subgoals):
 1. two_integer_max_case_def 0 0 = 0
 2. ⋀a. two_integer_max_case_def a 0 = a ⟹
         two_integer_max_case_def (Suc a) 0 =
         Suc a
 3. ⋀b. two_integer_max_case_def a b = a ⟹
         two_integer_max_case_def a (Suc b) = a

我的问题是 - 是否有证明方法和策略可以避免归纳并且可以应用于这个简单的案例?也许与 simp 系列战术有某种关系?

0 个答案:

没有答案