FLT/Data/QHat.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, Pinned FLT blueprint introduction

57 declarations, 0 contain sorry, 0 declared as axioms

The profinite completion of ℤ and the finite adeles of ℚ

A self-contained construction of ZHat, the profinite completion of ℤ, defined as the inverse limit of the rings ℤ/Nℤ together with the natural reduction maps. We also define the finite adele ring QHat as ZHat ⊗_ℤ ℚ.

Main definitions

Imports (6)
Imported by 3 files
  1. def ZHat We define the profinite completion of ℤ explicitly as compatible elements of ℤ/Nℤ for all positive integers N line 41 source

    Source documentation

    We define the profinite completion of ℤ explicitly as compatible elements of ℤ/Nℤ for all positive integers N. We declare it as a subring of ∏_{N ≥ 1} (ℤ/Nℤ), and then promote it to a type.

    def ZHat : Type := {
    …
  2. instance ZHat.(instance at line 67) line 67 source
  3. def ZHat.toZMod The canonical "reduce mod M" map from ZHat to ℤ/Mℤ line 72 source

    Source documentation

    The canonical "reduce mod M" map from ZHat to ℤ/Mℤ.

    def toZMod (M : ℕ+) : ZHat →+* ZMod M where
    …

    Mentions: ZHat

  4. lemma ZHat.toZMod_def line 79 source
  5. lemma ZHat.prop line 81 source
  6. lemma ZHat.ext line 84 source
  7. lemma ZHat.zero_val line 87 source
  8. lemma ZHat.one_val line 88 source
  9. lemma ZHat.ofNat_val line 89 source
  10. lemma ZHat.natCast_val line 91 source
  11. lemma ZHat.intCast_val line 92 source
  12. instance ZHat.commRing line 94 source
  13. lemma ZHat.zeroNeOne line 97 source
  14. instance ZHat.nontrivial line 103 source
  15. instance ZHat.charZero line 106 source
  16. def ZHat.e A nonarchimedean analogue `0! line 118 source

    Source documentation

    A nonarchimedean analogue 0! + 1! + 2! + ⋯ of e = 1/0! + 1/1! + 1/2! + ⋯. It is defined as the function whose value at ZMod n is the sum of i! for 0 ≤ i < n.

    def e : ZHat := ⟨fun (n : ℕ+) ↦ ∑ i ∈ range (n : ℕ), i !, by
    …

    Mentions: ZHat

  17. lemma ZHat.e_def line 130 source
  18. lemma ZHat._root_.Nat.sum_factorial_lt_factorial_succ line 132 source
  19. lemma ZHat._root_.Nat.sum_factorial_lt_two_mul_factorial line 144 source
  20. lemma ZHat.e_factorial_succ line 156 source
  21. lemma ZHat.e_not_in_Int Nonarchimedean $e$ is not an integer line 167 source

    Source documentation

    Nonarchimedean $e$ is not an integer.

    lemma e_not_in_Int : ∀ a : ℤ, e ≠ a := by
    …

    Mentions: ZHat.e

  22. lemma ZHat.torsionfree_aux line 220 source
  23. lemma ZHat.nat_mul_apply line 228 source
  24. lemma ZHat.pnat_mul_apply line 231 source
  25. theorem ZHat.eq_zero_of_mul_eq_zero line 234 source
  26. lemma ZHat.torsionfree ZHat is torsion-free line 248 source

    Source comment

    ZHat is torsion-free. LaTeX proof in the notes.
    lemma torsionfree (N : ℕ+) : Function.Injective (fun z : ZHat ↦ N * z) := by
    …

    Mentions: ZHat

  27. instance ZHat.ZHat_flat line 254 source
  28. lemma ZHat.y_mul_N_eq_z line 272 source
  29. lemma ZHat.multiples LaTeX proof in the notes line 283 source

    Source comment

    LaTeX proof in the notes.
    lemma multiples (N : ℕ+) (z : ZHat) : (∃ (y : ZHat), N * y = z) ↔ z N = 0 := by
    …

    Mentions: ZHat

  30. lemma ZHat.nat_dense ZHat has division by positive naturals, with remainder a smaller natural line 312 source

    Source comment

    `ZHat` has division by positive naturals, with remainder a smaller natural. In other words, the naturals are dense in `ZHat`.
    lemma nat_dense (N : ℕ+) (z : ZHat) : ∃ (q : ZHat) (r : ℕ), z = N * q + r ∧ r < N := by
    …

    Mentions: ZHat

  31. abbrev QHat The "profinite completion" of ℚ is defined to be ℚ ⊗ ZHat, with ZHat the profinite completion of ℤ line 324 source

    Source documentation

    The "profinite completion" of ℚ is defined to be ℚ ⊗ ZHat, with ZHat the profinite completion of ℤ.

    abbrev QHat := ℚ ⊗[ℤ] ZHat

    Mentions: ZHat

  32. example (example at line 326) line 326 source
  33. lemma QHat.canonicalForm line 330 source
  34. def QHat.IsCoprime An element z of ℤ̂ is coprime to N if its image in ℤ/Nℤ is a unit line 352 source

    Source documentation

    An element z of ℤ̂ is coprime to N if its image in ℤ/Nℤ is a unit.

    def IsCoprime (N : ℕ+) (z : ZHat) : Prop := IsUnit (z N)
    …

    Mentions: ZHat

  35. lemma QHat.isUnit_iff_coprime line 355 source
  36. lemma QHat.isCoprime_iff_coprime line 367 source
  37. abbrev QHat.i₂ The canonical inclusion ℤ̂ → ℚ̂ := ℚ ⊗_ℤ ℤ̂ sending z to 1 ⊗ z line 372 source

    Source documentation

    The canonical inclusion ℤ̂ → ℚ̂ := ℚ ⊗_ℤ ℤ̂ sending z to 1 ⊗ z.

    noncomputable abbrev i₂ : ZHat →ₐ[ℤ] QHat := Algebra.TensorProduct.includeRight

    Mentions: ZHat, QHat

  38. lemma QHat.injective_zHat line 373 source
  39. instance QHat.nontrivial_QHat line 386 source
  40. abbrev QHat.i₁ The canonical inclusion ℚ → ℚ̂ = ℚ ⊗_ℤ ℤ̂ sending q to q ⊗ 1 line 390 source

    Source documentation

    The canonical inclusion ℚ → ℚ̂ = ℚ ⊗_ℤ ℤ̂ sending q to q ⊗ 1.

    noncomputable abbrev i₁ : ℚ →ₐ[ℤ] QHat := Algebra.TensorProduct.includeLeft

    Mentions: QHat

  41. lemma QHat.injective_rat line 391 source
  42. theorem QHat.PNat.lcm_comm line 394 source
  43. lemma QHat.lowestTerms line 398 source
  44. abbrev QHat.ratsub The image of ℚ inside ℚ̂ as an additive subgroup line 543 source

    Source documentation

    The image of ℚ inside ℚ̂ as an additive subgroup.

    noncomputable abbrev ratsub : AddSubgroup QHat :=
    …

    Mentions: QHat

  45. abbrev QHat.zHatsub The image of ℤ̂ inside ℚ̂ as an additive subgroup line 547 source

    Source documentation

    The image of ℤ̂ inside ℚ̂ as an additive subgroup.

    noncomputable abbrev zHatsub : AddSubgroup QHat :=
    …

    Mentions: QHat

  46. abbrev QHat.zsub The image of ℤ inside ℚ̂ as an additive subgroup line 551 source

    Source documentation

    The image of ℤ inside ℚ̂ as an additive subgroup.

    noncomputable abbrev zsub : AddSubgroup QHat :=
    …

    Mentions: QHat

  47. lemma QHat.ZMod.isUnit_natAbs line 554 source
  48. lemma QHat._root_.Algebra.TensorProduct.one_tmul_intCast line 559 source
  49. lemma QHat.rat_meet_zHat line 565 source
  50. lemma QHat.rat_join_zHat line 591 source
  51. abbrev QHat.unitsratsub The image of ℚˣ inside ℚ̂ˣ as a subgroup line 617 source

    Source documentation

    The image of ℚˣ inside ℚ̂ˣ as a subgroup.

    noncomputable abbrev unitsratsub : Subgroup QHatˣ :=
    …
  52. abbrev QHat.unitszHatsub The image of ℤ̂ˣ inside ℚ̂ˣ as a subgroup line 621 source

    Source documentation

    The image of ℤ̂ˣ inside ℚ̂ˣ as a subgroup.

    noncomputable abbrev unitszHatsub : Subgroup QHatˣ :=
    …
  53. abbrev QHat.unitszsub The image of ℤˣ inside ℚ̂ˣ as a subgroup line 625 source

    Source documentation

    The image of ℤˣ inside ℚ̂ˣ as a subgroup.

    noncomputable abbrev unitszsub : Subgroup QHatˣ :=
    …
  54. lemma QHat.unitsrat_meet_unitszHat line 629 source
  55. lemma QHat._root_.Algebra.TensorProduct.intCast_tmul_one line 693 source
  56. lemma QHat._root_.Algebra.TensorProduct.one_tmul_natCast line 700 source
  57. lemma QHat.unitsrat_join_unitszHat this needs that ℤ is a PID line 707 source

    Source comment

    this needs that ℤ is a PID.

    depends on sorry (Lean reported 2 error(s) in this file) what this means

    Statement uses: Eq, Subgroup, Units, QHat, Int, Rat, ZHat, Max.max, QHat.unitsratsub, QHat.unitszHatsub, Top.top

    Proof uses: Eq.mpr, LE.le, id, congrArg, propext, eq_top_iff, Membership.mem, PNat, Exists, TensorProduct.tmul, HDiv.hDiv, OfNat.ofNat, QHat.canonicalForm, Inv.inv, TensorProduct, HMul.hMul, rfl, AlgHom, QHat.i₂, Algebra.TensorProduct.includeRight and 112 more

    206 instances, coercions and auxiliary constants left out.

    Tactic trace: 95 steps

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

    lemma unitsrat_join_unitszHat : unitsratsub ⊔ unitszHatsub = ⊤ := by
    …

    Mentions: QHat.unitsratsub, QHat.unitszHatsub