FormalConjectures/Wikipedia/AgohGiuga.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

19 declarations, 12 contain sorry, 0 declared as axioms

Agoh-Giuga conjecture

Reference: Wikipedia

Imports (1)
Imported by 1 file
  1. def AgohGiuga.AgohGiugaCongr The Agoh-Giuga Conjecture, Agoh's formulation line 50 source

    Source documentation

    The Agoh-Giuga Conjecture, Agoh's formulation. An integer p ≥ 2 is prime if and only if we have p*B_{p-1} ≡ -1 [MOD p]

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

    Proof uses: Nat, GE.ge, OfNat.ofNat, Iff, Nat.Prime, Exists, Int, Rat, bernoulli', HSub.hSub, Eq, HAdd.hAdd, HMul.hMul, Rat.num, Rat.den, HPow.hPow

    14 instances, coercions and auxiliary constants left out.

    def AgohGiugaCongr : Prop :=
    …
  2. def AgohGiuga.AgohGiugaSum The Agoh-Giuga Conjecture, Giuga's formulation line 60 source

    Source documentation

    The Agoh-Giuga Conjecture, Giuga's formulation. An integer p ≥ 2 is prime if and only if it satisfies the congruence ∑_{i=1}^{p-1} i^{p-1} ≡ -1 [MOD p].

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

    Proof uses: Nat, GE.ge, OfNat.ofNat, Iff, Nat.Prime, Dvd.dvd, HAdd.hAdd, Finset.sum, Finset.Ioo, HPow.hPow, HSub.hSub

    14 instances, coercions and auxiliary constants left out.

    def AgohGiugaSum : Prop := ∀ p ≥ 2, p.Prime ↔
    …
  3. theorem AgohGiuga.agoh_giuga The Agoh-Giuga Conjecture, Agoh's formulation sorry line 65 source

    Source documentation

    The Agoh-Giuga Conjecture, Agoh's formulation

    depends on sorry what this means

    Statement uses: AgohGiuga.AgohGiugaCongr

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

    1 instances, coercions and auxiliary constants left out.

    Tactic trace: 1 steps

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

    theorem agoh_giuga : AgohGiugaCongr := by
    …

    Mentions: AgohGiuga.AgohGiugaCongr

  4. theorem AgohGiuga.agoh_giuga.variants.giuga The Agoh-Giuga Conjecture, Giuga's formulation sorry line 70 source

    Source documentation

    The Agoh-Giuga Conjecture, Giuga's formulation

    depends on sorry what this means

    Statement uses: AgohGiuga.AgohGiugaSum

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

    1 instances, coercions and auxiliary constants left out.

    Tactic trace: 1 steps

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

    theorem agoh_giuga.variants.giuga : AgohGiugaSum := by
    …

    Mentions: AgohGiuga.AgohGiugaSum

  5. theorem AgohGiuga.agoh_giuga.variants.equivalence The two statements of the conjecture are equivalent sorry line 75 source

    Source documentation

    The two statements of the conjecture are equivalent.

    depends on sorry what this means

    Statement uses: Iff, AgohGiuga.AgohGiugaCongr, AgohGiuga.AgohGiugaSum

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

    1 instances, coercions and auxiliary constants left out.

    Tactic trace: 1 steps

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

    theorem agoh_giuga.variants.equivalence : AgohGiugaCongr ↔ AgohGiugaSum := by
    …

    Mentions: AgohGiuga.AgohGiugaCongr, AgohGiuga.AgohGiugaSum

  6. def AgohGiuga.IsWeakGiuga A (weak) Giuga number is a composite number $n$ such that $$\sum_{i=1}^{n - 1}i^{\varphi(n)} \equiv -1\pmod{n}$$ line 84 source

    Source documentation

    A (weak) Giuga number is a composite number $n$ such that $$\sum_{i=1}^{n - 1}i^{\varphi(n)} \equiv -1\pmod{n}$$.

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

    Statement uses: Nat

    Proof uses: And, Nat.Composite, Dvd.dvd, HAdd.hAdd, OfNat.ofNat, Finset.sum, Finset.Ioo, HPow.hPow, Nat.totient

    11 instances, coercions and auxiliary constants left out.

    def IsWeakGiuga (n : ℕ) : Prop :=
    …
  7. def AgohGiuga.IsStrongGiuga A (strong) Giuga number is a composite number $n$ such that $$\sum_{i=1}^{n - 1}i^{n - 1} \equiv -1\pmod{n}$$ line 92 source

    Source documentation

    A (strong) Giuga number is a composite number $n$ such that $$\sum_{i=1}^{n - 1}i^{n - 1} \equiv -1\pmod{n}$$

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

    Statement uses: Nat

    Proof uses: And, Nat.Composite, Dvd.dvd, HAdd.hAdd, OfNat.ofNat, Finset.sum, Finset.Ioo, HPow.hPow, HSub.hSub

    13 instances, coercions and auxiliary constants left out.

    def IsStrongGiuga (n : ℕ) : Prop :=
    …
  8. theorem AgohGiuga.isWeakGiuga_iff_prime_dvd sorry line 101 source

    depends on sorry what this means

    Statement uses: Nat, Nat.Composite, Iff, AgohGiuga.IsWeakGiuga, Membership.mem, Finset, Nat.primeFactors, Dvd.dvd, HSub.hSub, HDiv.hDiv, OfNat.ofNat

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

    16 instances, coercions and auxiliary constants left out.

    Tactic trace: 1 steps

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

  9. theorem AgohGiuga.isWeakGiuga_iff_sum_primeFactors A composite number $n$ is weak Giuga if and only if $$ \sum_{p\mid n} \frac{1}{p} - \frac{1}{n} \in\mathbb{N}. $$ sorry line 112 source

    Source documentation

    A composite number $n$ is weak Giuga if and only if $$ \sum_{p\mid n} \frac{1}{p} - \frac{1}{n} \in\mathbb{N}. $$

    depends on sorry what this means

    Statement uses: Nat, Nat.Composite, Iff, AgohGiuga.IsWeakGiuga, Exists, Eq, Rat, HSub.hSub, Finset.sum, Nat.primeFactors, HDiv.hDiv, OfNat.ofNat

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

    17 instances, coercions and auxiliary constants left out.

    Tactic trace: 1 steps

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

    theorem isWeakGiuga_iff_sum_primeFactors {n : ℕ} (hn : n.Composite) :
        IsWeakGiuga n ↔ ∃ m : ℕ, ∑ p ∈ n.primeFactors, (1 / p : ℚ) - 1 / n = m := by
    …

    Mentions: AgohGiuga.IsWeakGiuga

  10. theorem AgohGiuga.squarefree_of_isCarmichael A composite Carmichael number is squarefree line 118 source

    Source documentation

    A composite Carmichael number is squarefree.

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

    Statement uses: Nat, Nat.Composite, IsCarmichael, Squarefree

    Proof uses: Eq.mpr, Nat.Prime, Not, Dvd.dvd, HMul.hMul, id, Eq, propext, Nat.squarefree_iff_prime_squarefree, False, And, LT.lt, OfNat.ofNat, LE.le, Nat.Coprime, HSub.hSub, HPow.hPow, absurd, HAdd.hAdd, Nat.le_add_left and 57 more

    123 instances, coercions and auxiliary constants left out.

    Tactic trace: 10 steps

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

    theorem squarefree_of_isCarmichael {a : ℕ} (ha₁ : a.Composite) (ha₂ : IsCarmichael a) :
        Squarefree a := by
    …

    Mentions: IsCarmichael

  11. theorem AgohGiuga.korselts_criterion A composite number a is Carmichael if and only if it is squarefree and, for all prime p dividing a, we have p - 1 ∣ a - 1 line 134 source

    Source documentation

    A composite number a is Carmichael if and only if it is squarefree and, for all prime p dividing a, we have p - 1 ∣ a - 1.

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

    Statement uses: Nat, Nat.Composite, Iff, IsCarmichael, And, Squarefree, Nat.Prime, Dvd.dvd, HSub.hSub, OfNat.ofNat

    Proof uses: Iff.intro, And.intro, AgohGiuga.squarefree_of_isCarmichael, Fact, Fact.mk, Exists, Units, ZMod, Membership.mem, Subgroup, Subgroup.zpowers, IsCyclic.exists_generator, Eq, HMul.hMul, Nat.Coprime, Decidable.byContradiction, Not, False, Iff.mp, Classical.not_not and 102 more

    179 instances, coercions and auxiliary constants left out.

    Tactic trace: 45 steps

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

    theorem korselts_criterion (a : ℕ) (ha₁ : a.Composite) :
        IsCarmichael a ↔ Squarefree a ∧
          ∀ p, p.Prime → p ∣ a → (p - 1 : ℕ) ∣ (a - 1 : ℕ) := by
    …

    Mentions: IsCarmichael

  12. lemma AgohGiuga.isCarmichael_561 line 178 source

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

    Statement uses: IsCarmichael, OfNat.ofNat, Nat

    Proof uses: Nat.Composite, id, And.intro, LT.lt, Not, Nat.Prime, Mathlib.Meta.NormNum.isNat_lt_true, Mathlib.Meta.NormNum.isNat_ofNat, Eq.refl, Bool, Bool.false, Mathlib.Meta.NormNum.isNat_not_prime, Mathlib.Meta.NormNum.not_prime_mul_of_ble, Iff.mpr, And, Squarefree, Dvd.dvd, HSub.hSub, AgohGiuga.korselts_criterion, Eq and 30 more

    23 instances, coercions and auxiliary constants left out.

    Tactic trace: 39 steps

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

  13. theorem AgohGiuga.isStrongGiuga_iff Giuga showed that a number n is strong Giuga if and only if it is Carmichael and ∑_{p|n} 1/p - 1/n ∈ ℕ (i.e., if and only if it is Carmichael and weak Giuga) sorry line 206 source

    Source documentation

    Giuga showed that a number n is strong Giuga if and only if it is Carmichael and ∑_{p|n} 1/p - 1/n ∈ ℕ (i.e., if and only if it is Carmichael and weak Giuga). Ref: G. Giuga, Su una presumibile proprieta caratteristica dei numeri primi

    depends on sorry what this means

    Statement uses: Nat, Nat.Composite, Iff, AgohGiuga.IsStrongGiuga, And, IsCarmichael, Exists, Eq, Rat, HSub.hSub, Finset.sum, Nat.primeFactors, HDiv.hDiv, OfNat.ofNat

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

    17 instances, coercions and auxiliary constants left out.

    Tactic trace: 1 steps

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

    theorem isStrongGiuga_iff {a : ℕ} (ha : a.Composite) :
        IsStrongGiuga a ↔ IsCarmichael a ∧ ∃ n : ℕ, ∑ p ∈ a.primeFactors, (1 / p : ℚ) - 1 / a = n := by
    …

    Mentions: AgohGiuga.IsStrongGiuga, IsCarmichael

  14. theorem AgohGiuga.agoh_giuga.variants.isStrongGiuga_implies_isCarmichael Every strong Giuga number is a Carmichael number sorry line 214 source

    Source documentation

    Every strong Giuga number is a Carmichael number.

    depends on sorry what this means

    Statement uses: Nat, AgohGiuga.IsStrongGiuga, IsCarmichael

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

    1 instances, coercions and auxiliary constants left out.

    Tactic trace: 1 steps

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

    theorem agoh_giuga.variants.isStrongGiuga_implies_isCarmichael
        (a : ℕ) (ha : IsStrongGiuga a) : IsCarmichael a := by
    …

    Mentions: AgohGiuga.IsStrongGiuga, IsCarmichael

  15. theorem AgohGiuga.agoh_giuga.variants.le_primeFactors_card_of_isStrongGiuga Giuga showed that a Giuga number has at least 9 prime factors sorry line 223 source

    Source documentation

    Giuga showed that a Giuga number has at least 9 prime factors. Ref: G. Giuga, Su una presumibile proprieta caratteristica dei numeri primi

    depends on sorry what this means

    Statement uses: Nat, AgohGiuga.IsStrongGiuga, LE.le, OfNat.ofNat, Finset.card, Nat.primeFactors

    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 agoh_giuga.variants.le_primeFactors_card_of_isStrongGiuga
        (a : ℕ) (ha : IsStrongGiuga a) : 9 ≤ a.primeFactors.card := by
    …

    Mentions: AgohGiuga.IsStrongGiuga

  16. theorem AgohGiuga.agoh_giuga.variants._1000_le_digits_length_of_isStrongGiuga Giuga showed that a counterexample Giuga number has at least 1000 digits sorry line 232 source

    Source documentation

    Giuga showed that a counterexample Giuga number has at least 1000 digits. Ref: G. Giuga, Su una presumibile proprieta caratteristica dei numeri primi

    depends on sorry what this means

    Statement uses: Nat, AgohGiuga.IsStrongGiuga, LE.le, OfNat.ofNat, List.length, Nat.digits

    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 agoh_giuga.variants._1000_le_digits_length_of_isStrongGiuga
        (a : ℕ) (ha : IsStrongGiuga a) : 1000 ≤ (Nat.digits 10 a).length := by
    …

    Mentions: AgohGiuga.IsStrongGiuga

  17. theorem AgohGiuga.agoh_giuga.variants._1700_le_digits_length_of_isStrongGiuga Bedocchi showed that any Giuga number has at least 1700 digits sorry line 241 source

    Source documentation

    Bedocchi showed that any Giuga number has at least 1700 digits. Ref: E. Bedocchi, Note on a conjecture about prime numbers

    depends on sorry what this means

    Statement uses: Nat, AgohGiuga.IsStrongGiuga, GT.gt, List.length, Nat.digits, OfNat.ofNat

    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 agoh_giuga.variants._1700_le_digits_length_of_isStrongGiuga
        (a : ℕ) (ha : IsStrongGiuga a) :
        (Nat.digits 10 a).length > 1700 := by
    …

    Mentions: AgohGiuga.IsStrongGiuga

  18. theorem AgohGiuga.agoh_giuga.variants._13000_le_digits_length_of_isStrongGiuga Borwein, Borwein, Borwein and Girgensohn showed that any strong Giuga number has at least 13000 digits sorry line 252 source

    Source documentation

    Borwein, Borwein, Borwein and Girgensohn showed that any strong Giuga number has at least 13000 digits. Ref: D. Borwein, J. M. Borwein, P. B. Borwein, and R. Girgensohn, Giuga’s conjecture on primality

    depends on sorry what this means

    Statement uses: Nat, AgohGiuga.IsStrongGiuga, LE.le, OfNat.ofNat, List.length, Nat.digits

    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 agoh_giuga.variants._13000_le_digits_length_of_isStrongGiuga
        (a : ℕ) (ha : IsStrongGiuga a) : 13000 ≤ (Nat.digits 10 a).length := by
    …

    Mentions: AgohGiuga.IsStrongGiuga

  19. theorem AgohGiuga.agoh_giuga.variants.isStrongGiuga_growth Let G(X) denote the number of exceptions n ≤ X to Giuga’s conjecture sorry line 264 source

    Source documentation

    Let G(X) denote the number of exceptions n ≤ X to Giuga’s conjecture. Then for X larger than an absolute constant which can be made explicit, G(X) ≪ X^{1/2} log X. Ref: Vicentiu Tipu, A Note on Giuga’s Conjecture

    depends on sorry what this means

    Statement uses: Nat, Eq, Finset.card, Finset.filter, AgohGiuga.IsStrongGiuga, Classical.propDecidable, Finset.Icc, OfNat.ofNat, Exists, Real, GE.ge, LE.le, HMul.hMul, Real.sqrt, Real.log

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

    18 instances, coercions and auxiliary constants left out.

    Tactic trace: 1 steps

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

    theorem agoh_giuga.variants.isStrongGiuga_growth
        (G : ℕ → ℕ) (hG : G = fun x => Finset.Icc 1 x |>.filter IsStrongGiuga |>.card) :
        ∃ N O, ∀ n ≥ N, G n ≤ O * (n : ℝ).sqrt * (n : ℝ).log := by
    …

    Mentions: AgohGiuga.IsStrongGiuga