精益求精的继承人证明

时间:2018-06-22 19:12:56

标签: theorem-proving lean

我正试图证明lemma mod_pres_succ {m n} (h : (m + 1) % n ≠ 0) : m % n + 1 = (m + 1) % n

我从cases (@trichotomous _ (<) _ m n) with h₁ h₂开始,在这里我可以显示m < nm = n。但是,在m > n情况下(模数溢出),我陷入了困境。我通过对m的归纳进行了尝试,其中基本情况是微不足道的,但是归纳步骤处于以下状态:

n m : ℕ,
ih : (m + 1) % n ≠ 0 → n < m → m % n + 1 = (m + 1) % n,
h : (m + 1 + 1) % n ≠ 0,
h₃ : n < m + 1
⊢ (m + 1) % n + 1 = (m + 1 + 1) % n

我该如何进行?

注意:这是完整的(不完整的)证明,在这里我承认了一些简短的内容。

lemma mod_pres_succ {m n} (h : (m + 1) % n ≠ 0) : m % n + 1 = (m + 1) % n :=
begin
  cases (@trichotomous _ (<) _ m n) with h₁ h₂,
    {admit}, -- this I can show
    {
      cases h₂ with h₂ h₃,
        {admit}, -- this I can show
        {
          induction m with m ih,
            {cases h₃},
            {
              rw nat.succ_eq_add_one at *,
              -- Completely stuck besides a random rw ← ih
            }
        }
    }
end

0 个答案:

没有答案