FLT/DedekindDomain/FiniteAdeleRing/TensorPi.lean
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
9 declarations, 0 contain sorry, 0 declared as axioms
Tensor product commutes with direct product when tensoring with a finite free module
If M is a finite free module and Nᵢ is an indexed collection of modules of a commutative ring
R then there is an R-module isomorphism between M ⊗ ∏ᵢ Nᵢ and ∏ᵢ (M ⊗ Nᵢ).
Main definition
tensorPiEquivPiTensor:M ⊗[R] (Π i, N i) ≃ₗ[R] Π i, (M ⊗[R] N i)for finite free modulestensorPiEquivPiTensor': the same but for finitely-presented modules.
TODO
Switch the names around because the primed version is more general hence better.
Imports (3)
Imported by 3 files
- theorem
Module.FinitePresentation.exists_fin_exactline 34 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Ring,AddCommGroup,Module,Module.FinitePresentation,Exists,Nat,LinearMap,RingHom.id,Fin,And,Function.Exact,Function.SurjectiveProof uses:
Submodule,LinearEquiv,HasQuotient.Quotient,Submodule.FG,Module.FinitePresentation.exists_fin,Finset,Eq,Submodule.span,Finset.card,Function.comp,Subtype,Membership.mem,Equiv,Equiv.symm,Finset.equivFin,Fintype.linearCombination,LinearMap.comp,LinearEquiv.symm,Submodule.mkQ,LinearMap.rangeand 22 more52 instances, coercions and auxiliary constants left out.
Tactic trace: 13 steps
Open to load the checked before-and-after goal states.
- def
directSumPiEquivPiSum⨁ⱼ(∏ᵢ Nᵢⱼ) ≅ ∏ᵢ(⨁ⱼNᵢⱼ)ifjranges over a finite index set andiover an arbitrary index set line 65 sourceSource documentation
⨁ⱼ(∏ᵢ Nᵢⱼ) ≅ ∏ᵢ(⨁ⱼNᵢⱼ)ifjranges over a finite index set andiover an arbitrary index set. This variant is forR-modules and gives anR-module isomorphism.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Fintype,DecidableEq,Semiring,AddCommMonoid,Module,LinearEquiv,RingHom.id,DirectSumProof uses:
LinearEquiv.mk,LinearMap.mk,AddHom.mk,Finset.sum,Finset.univ,AddMonoidHom,DirectSum.of,DFinsupp26 instances, coercions and auxiliary constants left out.
Tactic trace: 30 steps
Open to load the checked before-and-after goal states.
def directSumPiEquivPiSum : (⨁ (i' : ι'), (∀ i, N i i')) ≃ₗ[R] (∀ i, (⨁ i', N i i')) where …
- def
freeModuleTensorPiEquivThe isomorphismM ⊗ ∏ᵢ Nᵢ ≅ (B →₀ R) ⊗ ∏ᵢ Nᵢ, whereMis assumed free andBis the basis ofMgiven by Lean's global axiom-of-choice operator line 111 sourceSource documentation
The isomorphism
M ⊗ ∏ᵢ Nᵢ ≅ (B →₀ R) ⊗ ∏ᵢ Nᵢ, whereMis assumed free andBis the basis ofMgiven by Lean's global axiom-of-choice operator. This is an auxiliary definition.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
CommRing,AddCommGroup,Module,Module.Free,LinearEquiv,RingHom.id,TensorProduct,Finsupp,Module.Free.ChooseBasisIndexProof uses:
TensorProduct.congr,Module.Basis.repr,Module.Free.chooseBasis,LinearEquiv.refl28 instances, coercions and auxiliary constants left out.
noncomputable def freeModuleTensorPiEquiv : M ⊗[R] (∀ i, N i) ≃ₗ[R] (Module.Free.ChooseBasisIndex R M →₀ R) ⊗[R] (∀ i, N i) := … - def
finsuppLeftTensorPiEquivPiTensorIfBis finite then tensoring by the free module with basisBcommutes with arbitrary products line 117 sourceSource documentation
If
Bis finite then tensoring by the free module with basisBcommutes with arbitrary products.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
CommRing,AddCommGroup,Module,Fintype,DecidableEq,LinearEquiv,RingHom.id,TensorProduct,FinsuppProof uses:
LinearEquiv.trans,DirectSum,TensorProduct.finsuppScalarLeft,finsuppLEquivDirectSum, directSumPiEquivPiSum,LinearEquiv.piCongrRight,LinearEquiv.symm37 instances, coercions and auxiliary constants left out.
noncomputable def finsuppLeftTensorPiEquivPiTensor (B : Type*) [Fintype B] [DecidableEq B] : (B →₀ R) ⊗[R] (Π i, N i) ≃ₗ[R] Π i, (B →₀ R) ⊗[R] (N i) := … - def
tensorPiEquivFinitefreeModuleThe isomorphismΠᵢ ((B →₀ R) ⊗ Nᵢ) ≅ Πᵢ (M ⊗ Nᵢ)whereMis assumed free andBis the basis ofMgiven by Lean's global axiom-of-choice operator line 133 sourceSource documentation
The isomorphism
Πᵢ ((B →₀ R) ⊗ Nᵢ) ≅ Πᵢ (M ⊗ Nᵢ)whereMis assumed free andBis the basis ofMgiven by Lean's global axiom-of-choice operator. This is an auxiliary definition.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
CommRing,AddCommGroup,Module,Module.Free,LinearEquiv,RingHom.id,TensorProduct,Finsupp,Module.Free.ChooseBasisIndexProof uses:
LinearEquiv.piCongrRight,LinearEquiv.rTensor,LinearEquiv.symm,Module.Basis.repr,Module.Free.chooseBasis28 instances, coercions and auxiliary constants left out.
noncomputable def tensorPiEquivFinitefreeModule : (Π i, (Module.Free.ChooseBasisIndex R M →₀ R) ⊗[R] N i) ≃ₗ[R] Π i, (M ⊗[R] N i) := … - def
tensorPiEquivPiTensorTensoring with a finite free module commutes with arbitrary products line 139 sourceSource documentation
Tensoring with a finite free module commutes with arbitrary products.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
CommRing,AddCommGroup,Module,Module.Free,Module.Finite,LinearEquiv,RingHom.id,TensorProductProof uses:
LinearEquiv.trans,Finsupp,Module.Free.ChooseBasisIndex, freeModuleTensorPiEquiv, finsuppLeftTensorPiEquivPiTensor, tensorPiEquivFinitefreeModule27 instances, coercions and auxiliary constants left out.
noncomputable def tensorPiEquivPiTensor : M ⊗[R] (Π i, N i) ≃ₗ[R] Π i, (M ⊗[R] N i) := … - lemma
tensorPi_equiv_piTensor_applyline 148 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
CommRing,AddCommGroup,Module,Module.Free,Module.Finite,Eq,TensorProduct,LinearEquiv,RingHom.id, tensorPiEquivPiTensor,TensorProduct.tmulProof uses:
id,LinearEquiv.trans,Finsupp,Module.Free.ChooseBasisIndex, freeModuleTensorPiEquiv, finsuppLeftTensorPiEquivPiTensor, tensorPiEquivFinitefreeModule,Module.Basis.repr,Module.Free.chooseBasis,LinearEquiv.symm,of_eq_true,Eq.trans,True,congrFun',congrArg,LinearEquiv.symm_apply_apply,eq_self,Eq.mpr,Eq.symm,LinearEquiv.apply_symm_applyand 65 more98 instances, coercions and auxiliary constants left out.
Tactic trace: 24 steps
Open to load the checked before-and-after goal states.
- def
tensorPiEquivPiTensor'Tensoring with a finitely-presented module commutes with arbitrary products line 199 sourceSource documentation
Tensoring with a finitely-presented module commutes with arbitrary products. To prove this, we consider the following commutative diagram. The goal is to show that
i₃is an isomorphism, which we do using the five lemma:Rᵐ ⊗[R] (Π i, N i) --f₁--> Rⁿ ⊗[R] (Π i, N i) --f₂--> M ⊗[R] (Π i, N i) --f₃--> 0 --f₄--> 0 | | | | | i₁ i₂ i₃ i₄ i₅ | | | | | v v v v v Π i, (Rᵐ ⊗[R] N i) --g₁--> Π i, (Rⁿ ⊗[R] N i) --g₂--> Π i, (M ⊗[R] N i) --g₃--> 0 --g₄--> 0standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
CommRing,AddCommGroup,Module,Module.FinitePresentation,LinearEquiv,RingHom.id,TensorProductProof uses:
IsTensorProduct.equiv,TensorProduct.piRightHomBil19 instances, coercions and auxiliary constants left out.
Tactic trace: 57 steps
Open to load the checked before-and-after goal states.
noncomputable def tensorPiEquivPiTensor' : M ⊗[R] (Π i, N i) ≃ₗ[R] Π i, (M ⊗[R] N i) := IsTensorProduct.equiv … - lemma
tensorPi_equiv_piTensor'_applyline 272 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
CommRing,AddCommGroup,Module,Module.FinitePresentation,Eq,TensorProduct,LinearEquiv,RingHom.id, tensorPiEquivPiTensor',TensorProduct.tmulProof uses:
rfl24 instances, coercions and auxiliary constants left out.