FLT/Mathlib/Algebra/IsDirectLimit.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

20 declarations, 0 contain sorry, 0 declared as axioms

Is Direct Limit

Material destined for Mathlib.

Imports (1)
Imported by 3 files
  1. class IsDirectLimit IsDirectLimit f g states that P is the direct limit of the system (M i, f i j hij) line 30 source

    Source documentation

    IsDirectLimit f g states that P is the direct limit of the system (M i, f i j hij). It requires:

    • surj: says every element of P comes from some M i via the canonical map g i.
    • inj: says that if two elements of (possibly different) modules M i and M j map to the same element of P, then they become equal after being mapped into a common later module M k.
    • compatibility: ensures that the maps g i and f i j hij are compatible with one another.

    no axioms what this means

    Statement uses: Preorder, LE.le, DirectedSystem

    1 instances, coercions and auxiliary constants left out.

    @[mk_iff] class IsDirectLimit [DirectedSystem M f] : Prop where
    …
  2. theorem IsDirectLimit.compatibility' line 40 source

    no axioms what this means

    Statement uses: Preorder, LE.le, DirectedSystem, IsDirectLimit, Eq

    Proof uses: IsDirectLimit.compatibility

    2 instances, coercions and auxiliary constants left out.

  3. theorem IsDirectLimit.is_injective line 43 source

    no axioms what this means

    Statement uses: Preorder, LE.le, DirectedSystem, IsDirectLimit, Eq, Exists

    Proof uses: IsDirectLimit.inj

    2 instances, coercions and auxiliary constants left out.

  4. theorem IsDirectLimit.is_surjective line 48 source

    no axioms what this means

    Statement uses: Preorder, LE.le, DirectedSystem, IsDirectLimit, Exists, Eq

    Proof uses: IsDirectLimit.surj

    2 instances, coercions and auxiliary constants left out.

  5. def IsDirectLimit.preimageIndex Documented declaration: preimageIndex line 55 source

    Source documentation

    Given an element p : P in the direct limit, preimageIndex f g p returns an index in ι such that p is in the image of the map g (preimageIndex f g p) : M (preimageIndex f g p) →ₗ[R] P.

    standard axioms: Classical.choice what this means

    Statement uses: Preorder, LE.le, DirectedSystem, IsDirectLimit

    Proof uses: Exists.choose, Exists, Eq, IsDirectLimit.is_surjective

    2 instances, coercions and auxiliary constants left out.

    noncomputable def preimageIndex (p : P) : ι := (is_surjective f g p).choose

    Mentions: IsDirectLimit.is_surjective

  6. def IsDirectLimit.preimage Given an element p : P in the direct limit, preimage f g p returns an element of M (preimageIndex f g p) that maps to p under g (preimageIndex f g p) line 61 source

    Source documentation

    Given an element p : P in the direct limit, preimage f g p returns an element of M (preimageIndex f g p) that maps to p under g (preimageIndex f g p).

    standard axioms: Classical.choice what this means

    Statement uses: Preorder, LE.le, DirectedSystem, IsDirectLimit, IsDirectLimit.preimageIndex

    Proof uses: Exists.choose, Exists, Eq, IsDirectLimit.is_surjective

    3 instances, coercions and auxiliary constants left out.

    noncomputable def preimage (p : P) : M (preimageIndex f g p) :=
    …

    Mentions: IsDirectLimit.preimageIndex

  7. theorem IsDirectLimit.image_preimage line 64 source

    standard axioms: Classical.choice what this means

    Statement uses: Preorder, LE.le, DirectedSystem, IsDirectLimit, Eq, IsDirectLimit.preimageIndex, IsDirectLimit.preimage

    Proof uses: Exists.choose_spec, Exists.choose, Exists, IsDirectLimit.is_surjective

    2 instances, coercions and auxiliary constants left out.

  8. def IsDirectLimit.lift Construct a map P₁ → P₂ from a direct limit by sending each element to its preimage in some component M i and applying g₂ i line 74 source

    Source documentation

    Construct a map P₁ → P₂ from a direct limit by sending each element to its preimage in some component M i and applying g₂ i. Used to define morphisms out of direct limits.

    standard axioms: Classical.choice what this means

    Statement uses: Preorder, LE.le, DirectedSystem, IsDirectLimit

    Proof uses: IsDirectLimit.preimageIndex, IsDirectLimit.preimage

    2 instances, coercions and auxiliary constants left out.

    noncomputable def lift [IsDirectLimit f g₁] (p : P₁) : P₂ :=
    …

    Mentions: IsDirectLimit

  9. theorem IsDirectLimit.lift_of line 78 source

    standard axioms: Classical.choice what this means

    Statement uses: Preorder, LE.le, DirectedSystem, IsDirectLimit, Eq, IsDirectLimit.lift

    Proof uses: id, Exists, IsDirectLimit.preimageIndex, IsDirectLimit.preimage, IsDirectLimit.is_injective, IsDirectLimit.image_preimage, Eq.mpr, congrArg, Eq.symm, Eq.refl

    3 instances, coercions and auxiliary constants left out.

    Tactic trace: 3 steps

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

  10. def IsDirectLimit.Equiv Any two direct limits of the same directed system are isomorphic line 85 source

    Source documentation

    Any two direct limits of the same directed system are isomorphic.

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

    Statement uses: Preorder, LE.le, DirectedSystem, IsDirectLimit, Equiv

    Proof uses: Equiv.mk, IsDirectLimit.lift

    4 instances, coercions and auxiliary constants left out.

    Tactic trace: 6 steps

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

    noncomputable def Equiv [h₁ : IsDirectLimit f g₁] [h₂ : IsDirectLimit f g₂] :
        P₁ ≃ P₂ where
    …

    Mentions: IsDirectLimit

  11. lemma IsDirectLimit.Equiv_apply line 99 source

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

    Statement uses: Preorder, LE.le, DirectedSystem, IsDirectLimit, Eq, Equiv, IsDirectLimit.Equiv

    Proof uses: of_eq_true, Eq.trans, True, congrFun', congrArg, IsDirectLimit.lift_of, forall_congr, IsDirectLimit.compatibility', eq_self, implies_true

    8 instances, coercions and auxiliary constants left out.

    Tactic trace: 1 steps

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

  12. lemma IsDirectLimit.linearEquiv_symm_apply line 104 source

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

    Statement uses: Preorder, LE.le, DirectedSystem, IsDirectLimit, Eq, Equiv, Equiv.symm, IsDirectLimit.Equiv

    Proof uses: of_eq_true, Eq.trans, True, congrFun', congrArg, IsDirectLimit.lift_of, forall_congr, IsDirectLimit.compatibility', eq_self, implies_true

    8 instances, coercions and auxiliary constants left out.

    Tactic trace: 4 steps

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

  13. instance IsDirectLimit.Module.(instance at line 114) line 114 source
  14. theorem IsDirectLimit.Module.compatibility_module line 127 source

    no axioms what this means

    Statement uses: Preorder, Semiring, AddCommMonoid, Module, LE.le, LinearMap, RingHom.id, DirectedSystem, IsDirectLimit, Eq

    Proof uses: IsDirectLimit.compatibility'

    8 instances, coercions and auxiliary constants left out.

  15. def IsDirectLimit.Module.lift The universal property of the direct limit: define a linear map from the direct limit by giving a compatible family of linear maps from the components line 135 source

    Source documentation

    The universal property of the direct limit: define a linear map from the direct limit by giving a compatible family of linear maps from the components. Each element of the limit is sent according to its representative in some component.

    standard axioms: Classical.choice, propext what this means

    Statement uses: Preorder, Semiring, AddCommMonoid, Module, LE.le, LinearMap, RingHom.id, DirectedSystem, IsDirected, IsDirectLimit, Eq

    Proof uses: LinearMap.mk, AddHom.mk, IsDirectLimit.lift

    13 instances, coercions and auxiliary constants left out.

    Tactic trace: 12 steps

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

    noncomputable def lift
        (Hg : ∀ i j hij x, g₂ j (f i j hij x) = g₂ i x) : P₁ →ₗ[R] P₂ where
    …
  16. theorem IsDirectLimit.Module.lift_of line 161 source

    standard axioms: Classical.choice, propext what this means

    Statement uses: Preorder, Semiring, AddCommMonoid, Module, LE.le, LinearMap, RingHom.id, DirectedSystem, IsDirected, IsDirectLimit, Eq, IsDirectLimit.Module.lift

    Proof uses: id, IsDirectLimit.lift_of

    8 instances, coercions and auxiliary constants left out.

    Tactic trace: 2 steps

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

  17. theorem IsDirectLimit.Module.lift_unique line 166 source

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

    Statement uses: Preorder, Semiring, AddCommMonoid, Module, LE.le, LinearMap, RingHom.id, DirectedSystem, IsDirected, IsDirectLimit, Eq, IsDirectLimit.Module.lift, LinearMap.comp

    Proof uses: of_eq_true, Eq.trans, True, congrArg, IsDirectLimit.preimageIndex, IsDirectLimit.preimage, IsDirectLimit.image_preimage, eq_self

    12 instances, coercions and auxiliary constants left out.

    Tactic trace: 3 steps

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

  18. def IsDirectLimit.Module.linearEquiv Any two direct limits of the same directed system are isomorphic line 177 source

    Source documentation

    Any two direct limits of the same directed system are isomorphic.

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

    Statement uses: Preorder, Semiring, AddCommMonoid, Module, LE.le, LinearMap, RingHom.id, DirectedSystem, IsDirected, IsDirectLimit, LinearEquiv

    Proof uses: Equiv, IsDirectLimit.Equiv, LinearEquiv.mk, LinearMap.mk, AddHom.mk, Equiv.toFun, Equiv.invFun, Equiv.left_inv, Equiv.right_inv

    15 instances, coercions and auxiliary constants left out.

    noncomputable def linearEquiv : P₁ ≃ₗ[R] P₂ :=
    …
  19. lemma IsDirectLimit.Module.linearEquiv_apply line 183 source

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

    Statement uses: Preorder, Semiring, AddCommMonoid, Module, LE.le, LinearMap, RingHom.id, DirectedSystem, IsDirected, IsDirectLimit, Eq, LinearEquiv, IsDirectLimit.Module.linearEquiv

    Proof uses: IsDirectLimit.Equiv_apply

    11 instances, coercions and auxiliary constants left out.

  20. lemma IsDirectLimit.Module.linearEquiv_symm_apply line 188 source

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

    Statement uses: Preorder, Semiring, AddCommMonoid, Module, LE.le, LinearMap, RingHom.id, DirectedSystem, IsDirected, IsDirectLimit, Eq, LinearEquiv, LinearEquiv.symm, IsDirectLimit.Module.linearEquiv

    Proof uses: IsDirectLimit.linearEquiv_symm_apply

    11 instances, coercions and auxiliary constants left out.