FormalConjectures/Paper/Kurepa.lean

GitHub source file

Explanation legend Lean4 Domain Explanation Language (L4DEL)

L4DEL explanations are a separate layer. They do not change the Lean source. Intuition is explanatory prose; numbered items are a reading path; sources link the wording back to evidence.

L4DEL
Lean4 Domain Explanation Language

Credit: The upstream authors and contributors retain credit for the project and mathematics. lean4-explainer only renders their pinned source and adds the separately disclosed explanation layer.

Project sources: Pinned project documentation, Formal Conjectures paper, arXiv v1

8 declarations, 3 contain sorry, 0 declared as axioms

Kurepa's conjecture

Reference: On the left factorial function !N, by Đuro Kurepa Math. Balkanica 1, p. 147-153, 1971

Imports (1)
  1. def Kurepa.left_factorial Left factorial of n $$!n = 0! + 1! + 2! + \dots + (n-1)!$$ line 36 source

    Source documentation

    Left factorial of n $$!n = 0! + 1! + 2! + \dots + (n-1)!$$

    standard axioms: Classical.choice, Quot.sound, propext what this means

    Statement uses: Nat

    Proof uses: Finset.sum, Finset.range, Nat.factorial

    1 instances, coercions and auxiliary constants left out.

    def left_factorial (n : ℕ) := ∑ m ∈ Finset.range n, m !
    …
  2. theorem Kurepa.kurepa_conjecture Kurepa's conjecture For all $n$, $$!n\not\equiv 0 \mod n$$ This appears as B44 "Sums of factorials." in Unsolved Problems in Number Theory by *Richard K sorry line 50 source

    Source documentation

    Kurepa's conjecture

    For all $n$, $$!n\not\equiv 0 \mod n$$

    This appears as B44 "Sums of factorials." in Unsolved Problems in Number Theory by Richard K. Guy

    L4DEL explanation

    ## Kurepa's conjecture For all $n$, $$!n\not\equiv 0 \mod n$$ This appears as B44 "Sums of factorials." in Unsolved Problems in Number Theory by Richard K. Guy

    Sources and attribution: Pinned Lean source (1646ca16afd6)

    depends on sorry what this means

    Statement uses: Nat, LT.lt, OfNat.ofNat, Ne, HMod.hMod, Kurepa.left_factorial

    Proof uses: sorryAx, Lean.Name, Bool.false, Lean.Name.num, Lean.Name.str, Lean.Name.anonymous

    8 instances, coercions and auxiliary constants left out.

    Tactic trace: 1 steps

    Open to load the checked before-and-after goal states.

    theorem kurepa_conjecture (n : ℕ) (h_n : 2 < n) : (!n : ℕ) % n ≠ 0 := by
    …
  3. theorem Kurepa.kurepa_conjecture.variants.prime This statement can be reduced to the prime case only sorry line 57 source

    Source documentation

    This statement can be reduced to the prime case only.

    depends on sorry what this means

    Statement uses: Nat, LT.lt, OfNat.ofNat, Nat.Prime, Ne, HMod.hMod, Kurepa.left_factorial

    Proof uses: sorryAx, Lean.Name, Bool.false, Lean.Name.num, Lean.Name.str, Lean.Name.anonymous

    8 instances, coercions and auxiliary constants left out.

    Tactic trace: 1 steps

    Open to load the checked before-and-after goal states.

    theorem kurepa_conjecture.variants.prime (p : ℕ) (h_p : 2 < p) :
        p.Prime → (!p : ℕ) % p ≠ 0 := by
    …
  4. theorem Kurepa.kurepa_conjecture.prime_reduction Kurepa's conjecture for all integers greater than 2 is equivalent to the conjecture restricted to primes greater than 2 line 65 source

    Source documentation

    Kurepa's conjecture for all integers greater than 2 is equivalent to the conjecture restricted to primes greater than 2.

    standard axioms: Classical.choice, Quot.sound, propext what this means

    Statement uses: Iff, Nat, LT.lt, OfNat.ofNat, Ne, HMod.hMod, Kurepa.left_factorial, Nat.Prime

    Proof uses: Iff.intro, Eq, List.prod, Nat.primeFactorsList, Membership.mem, List, Nat.prime_of_mem_primeFactorsList, Or.resolve_right, Nat.Prime.eq_two_or_odd, Dvd.dvd, Finset.sum, Finset.range, Nat.factorial, Dvd.dvd.trans, of_eq_true, Nat.dvd_of_mem_primeFactorsList, Nat.dvd_of_mod_eq_zero, LE.le, Finset, Eq.mpr and 113 more

    152 instances, coercions and auxiliary constants left out.

    Tactic trace: 22 steps

    Open to load the checked before-and-after goal states.

    theorem kurepa_conjecture.prime_reduction : (∀ n, 2 < n → (!n : ℕ) % n ≠ 0)
        ↔ (∀ p, 2 < p → p.Prime → (!p : ℕ) % p ≠ 0) := by
    …
  5. theorem Kurepa.kurepa_conjecture.variants.gcd An equivalent formulation in terms of the gcd of $n!$ and $!n$ sorry line 96 source

    Source documentation

    An equivalent formulation in terms of the gcd of $n!$ and $!n$.

    depends on sorry what this means

    Statement uses: Nat, LT.lt, OfNat.ofNat, Eq, Nat.gcd, Nat.factorial, Kurepa.left_factorial

    Proof uses: sorryAx, Lean.Name, Bool.false, Lean.Name.num, Lean.Name.str, Lean.Name.anonymous

    4 instances, coercions and auxiliary constants left out.

    Tactic trace: 1 steps

    Open to load the checked before-and-after goal states.

    theorem kurepa_conjecture.variants.gcd (n : ℕ) : 2 < n → (n !).gcd (! n) = 2 := by
    …
  6. theorem Kurepa.kurepa_conjecture.gcd_reduction Kurepa's conjecture for all integers greater than 2 is equivalent to the statement that $\gcd(n!, !n) = 2$ for all integers greater than 2 line 103 source

    Source documentation

    Kurepa's conjecture for all integers greater than 2 is equivalent to the statement that $\gcd(n!, !n) = 2$ for all integers greater than 2.

    standard axioms: Classical.choice, Quot.sound, propext what this means

    Statement uses: Iff, Nat, LT.lt, OfNat.ofNat, Ne, HMod.hMod, Kurepa.left_factorial, Eq, Nat.gcd, Nat.factorial

    Proof uses: Iff.intro, HAdd.hAdd, Iff.mpr, And, Dvd.dvd, Nat.gcd_eq_iff, And.intro, Nat.factorial_dvd_factorial, LT.lt.le, of_eq_true, Eq.trans, Finset.sum, Finset.range, True, congrArg, Finset.sum_range_succ', congrFun', zero_add, Nat.add_mod, congr and 51 more

    91 instances, coercions and auxiliary constants left out.

    Tactic trace: 22 steps

    Open to load the checked before-and-after goal states.

    theorem kurepa_conjecture.gcd_reduction : (∀ n, 2 < n → (!n : ℕ) % n ≠ 0)
        ↔ (∀ n, 2 < n → (n)!.gcd (!n) = 2) := by
    …
  7. theorem Kurepa.kurepa_conjecture.variants.first_cases Sanity check: for small values we can just compute that the conjecture is true line 133 source

    Source documentation

    Sanity check: for small values we can just compute that the conjecture is true

    standard axioms: Classical.choice, Quot.sound, propext what this means

    Statement uses: Nat, LT.lt, OfNat.ofNat, Ne, HMod.hMod, Kurepa.left_factorial

    Proof uses: dite, LE.le, of_decide_eq_true, Eq, id, Bool, Decidable.decide, Bool.true, Eq.refl, Eq.symm, le_antisymm, Nat.ge_of_not_lt, Mathlib.Tactic.IntervalCases.of_lt_right, Nat.rawCast, Mathlib.Meta.NormNum.IsNat.to_raw_eq, Mathlib.Meta.NormNum.isNat_ofNat, Not, Nat.gt_of_not_le, Mathlib.Tactic.IntervalCases.of_lt_left

    16 instances, coercions and auxiliary constants left out.

    Tactic trace: 2 steps

    Open to load the checked before-and-after goal states.

    theorem kurepa_conjecture.variants.first_cases (n : ℕ) (h_n : 2 < n) (h_n_upper : n < 50) :
        (!n : ℕ) % n ≠ 0 := by
    …
  8. theorem Kurepa.kurepa_conjecture.variants.gcd.first_cases Sanity check: for small values we can just compute that the conjecture is true line 141 source

    Source documentation

    Sanity check: for small values we can just compute that the conjecture is true.

    standard axioms: Classical.choice, Quot.sound, propext what this means

    Statement uses: Nat, LT.lt, OfNat.ofNat, Eq, Nat.gcd, Nat.factorial, Kurepa.left_factorial

    Proof uses: dite, LE.le, of_decide_eq_true, id, Bool, Decidable.decide, Bool.true, Eq.refl, Eq.symm, le_antisymm, Nat.ge_of_not_lt, Mathlib.Tactic.IntervalCases.of_lt_right, Nat.rawCast, Mathlib.Meta.NormNum.IsNat.to_raw_eq, Mathlib.Meta.NormNum.isNat_ofNat, Not, Nat.gt_of_not_le, Mathlib.Tactic.IntervalCases.of_lt_left

    11 instances, coercions and auxiliary constants left out.

    Tactic trace: 2 steps

    Open to load the checked before-and-after goal states.

    theorem kurepa_conjecture.variants.gcd.first_cases (n : ℕ) (h_n : 2 < n) (h_n_upper : n < 50) :
        (n !).gcd (! n) = 2 := by
    …

    Mentions: Kurepa.kurepa_conjecture.variants.gcd