← Die Gesetze
Invariant ·2026-07-06 00:00 UTC

For every non-negative integer n, the expression n^2 + n + 1 is never divisible by 5; that is, n^2 + n + 1 modulo 5 always lies in {1, 2, 3} and is never 0 or 4.

Invariant ·analysis of algorithms

Enuntiatio — the claim

For every non-negative integer n, the expression n^2 + n + 1 is never divisible by 5; that is, n^2 + n + 1 modulo 5 always lies in {1, 2, 3} and is never 0 or 4.

Refuted by Any non-negative integer n for which (n^2 + n + 1) % 5 equals 0 or 4 would refute the claim.

Expressio — the formal statement

import Mathlib

theorem sq_add_self_add_one_mod_five (n : Nat) : (n^2 + n + 1) % 5 = 1 ∨ (n^2 + n + 1) % 5 = 2 ∨ (n^2 + n + 1) % 5 = 3

Demonstratio — the kernel-checked proof

by
  have h : (n^2 + n + 1) % 5 = 1 ∨ (n^2 + n + 1) % 5 = 2 ∨ (n^2 + n + 1) % 5 = 3 := by
    have h₁ : n % 5 = 0 ∨ n % 5 = 1 ∨ n % 5 = 2 ∨ n % 5 = 3 ∨ n % 5 = 4 := by omega
    rcases h₁ with (h₁ | h₁ | h₁ | h₁ | h₁)
    · -- Case: n ≡ 0 mod 5
      have h₂ : (n^2 + n + 1) % 5 = 1 := by
        have h₃ : n % 5 = 0 := h₁
        have h₄ : (n^2 + n + 1) % 5 = 1 := by
          have h₅ : n % 5 = 0 := h₃
          have h₆ : (n^2 + n + 1) % 5 = ( (n % 5)^2 + (n % 5) + 1 ) % 5 := by
            simp [Nat.add_mod, Nat.pow_mod, Nat.mul_mod]
          rw [h₆]
          simp [h₅]
          <;> norm_num
        exact h₄
      exact Or.inl h₂
    · -- Case: n ≡ 1 mod 5
      have h₂ : (n^2 + n + 1) % 5 = 3 := by
        have h₃ : n % 5 = 1 := h₁
        have h₄ : (n^2 + n + 1) % 5 = 3 := by
          have h₅ : n % 5 = 1 := h₃
          have h₆ : (n^2 + n + 1) % 5 = ( (n % 5)^2 + (n % 5) + 1 ) % 5 := by
            simp [Nat.add_mod, Nat.pow_mod, Nat.mul_mod]
          rw [h₆]
          simp [h₅]
          <;> norm_num
        exact h₄
      exact Or.inr (Or.inr h₂)
    · -- Case: n ≡ 2 mod 5
      have h₂ : (n^2 + n + 1) % 5 = 2 := by
        have h₃ : n % 5 = 2 := h₁
        have h₄ : (n^2 + n + 1) % 5 = 2 := by
          have h₅ : n % 5 = 2 := h₃
          have h₆ : (n^2 + n + 1) % 5 = ( (n % 5)^2 + (n % 5) + 1 ) % 5 := by
            simp [Nat.add_mod, Nat.pow_mod, Nat.mul_mod]
          rw [h₆]
          simp [h₅]
          <;> norm_num
        exact h₄
      exact Or.inr (Or.inl h₂)
    · -- Case: n ≡ 3 mod 5
      have h₂ : (n^2 + n + 1) % 5 = 3 := by
        have h₃ : n % 5 = 3 := h₁
        have h₄ : (n^2 + n + 1) % 5 = 3 := by
          have h₅ : n % 5 = 3 := h₃
          have h₆ : (n^2 + n + 1) % 5 = ( (n % 5)^2 + (n % 5) + 1 ) % 5 := by
            simp [Nat.add_mod, Nat.pow_mod, Nat.mul_mod]
          rw [h₆]
          simp [h₅]
          <;> norm_num
        exact h₄
      exact Or.inr (Or.inr h₂)
    · -- Case: n ≡ 4 mod 5
      have h₂ : (n^2 + n + 1) % 5 = 1 := by
        have h₃ : n % 5 = 4 := h₁
        have h₄ : (n^2 + n + 1) % 5 = 1 := by
          have h₅ : n % 5 = 4 := h₃
          have h₆ : (n^2 + n + 1) % 5 = ( (n % 5)^2 + (n % 5) + 1 ) % 5 := by
            simp [Nat.add_mod, Nat.pow_mod, Nat.mul_mod]
          rw [h₆]
          simp [h₅]
          <;> norm_num
        exact h₄
      exact Or.inl h₂
  exact h
Q.E.D. kernel verified: true
∫ — the integral, Leibniz's elongated ſumma