FLT/Mathlib/LinearAlgebra/Matrix/Transvection.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
10 declarations, 0 contain sorry, 0 declared as axioms
Variant of Matrix.diagonal_transvection_induction_of_det_ne_zero
that works over a commutative ring. Note that we have to assume
that the matrix is a product of transvections and a diagonal matrix;
this is not true in general (I believe; I think there's some obstruction
in SK₁(R), the kernel of det:K₁(R) → Rˣ)
Imports (1)
Imported by 2 files
- def
Matrix.Pivot.ExistsListTransvecMulDiagonalMulListTransvecThe claim that a matrix is a product of transvections, a diagonal matrix, and more transvections line 27 sourceSource documentation
The claim that a matrix is a product of transvections, a diagonal matrix, and more transvections. Always true if the base ring is a field.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
CommRing,Fintype,DecidableEq,MatrixProof uses:
Exists,List,Matrix.TransvectionStruct,Eq,HMul.hMul,List.prod,List.map,Matrix.TransvectionStruct.toMatrix,Matrix.diagonal14 instances, coercions and auxiliary constants left out.
def Pivot.ExistsListTransvecMulDiagonalMulListTransvec {n : Type*} {R : Type*} [CommRing R] [Fintype n] [DecidableEq n] (M : Matrix n n R) : Prop := … - lemma
Matrix.Pivot.exists_list_transvec_mul_diagonal_mul_list_transvec'line 32 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Field,DecidableEq,Fintype,Matrix, Matrix.Pivot.ExistsListTransvecMulDiagonalMulListTransvecProof uses:
Matrix.Pivot.exists_list_transvec_mul_diagonal_mul_list_transvec1 instances, coercions and auxiliary constants left out.
- def
Matrix.TransvectionStruct.mapBase change of a TransvectionStruct along a ring homomorphism line 43 sourceSource documentation
Base change of a TransvectionStruct along a ring homomorphism.
no axioms what this means
Statement uses:
CommRing,RingHom,Matrix.TransvectionStructProof uses:
Matrix.TransvectionStruct.mk,Matrix.TransvectionStruct.i,Matrix.TransvectionStruct.j,Matrix.TransvectionStruct.hij,Matrix.TransvectionStruct.c8 instances, coercions and auxiliary constants left out.
def TransvectionStruct.map {n : Type*} {R S : Type*} [CommRing R] [CommRing S] (f : R →+* S) (t : TransvectionStruct n R) : TransvectionStruct n S where … - lemma
Matrix.TransvectionStruct.toMatrix_mapline 51 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
CommRing,DecidableEq,RingHom,Fintype,Matrix.TransvectionStruct,Eq,Matrix,Function.comp,Matrix.TransvectionStruct.toMatrix, Matrix.TransvectionStruct.map,RingHom.mapMatrixProof uses:
of_eq_true,HAdd.hAdd,OfNat.ofNat,Matrix.single,Matrix.TransvectionStruct.i,Matrix.TransvectionStruct.j,Matrix.TransvectionStruct.c,Eq.trans,True,congrArg,map_add,congr,Matrix.map,RingHom.mapMatrix_apply,Matrix.map_one,congrFun',map_zero,eq_self,map_one,Matrix.map_single40 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
- lemma
Matrix.TransvectionStruct.map_toMatrixline 56 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
CommRing,DecidableEq,RingHom,Finite,Matrix.TransvectionStruct,Eq,Matrix,Matrix.TransvectionStruct.toMatrix, Matrix.TransvectionStruct.map,Matrix.mapProof uses:
Fintype,Fintype.ofFinite, Matrix.TransvectionStruct.toMatrix_map8 instances, coercions and auxiliary constants left out.
- lemma
Matrix.TransvectionStruct.mapMatrix_map_toMatrix_prodline 61 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
CommRing,DecidableEq,RingHom,Fintype,List,Matrix.TransvectionStruct,Eq,Matrix,RingHom.mapMatrix,List.prod,List.map,Matrix.TransvectionStruct.toMatrix,Function.comp, Matrix.TransvectionStruct.mapProof uses:
Eq.mpr,id,congrArg,map_list_prod,Mul,One,Eq.rec,Eq.refl,of_eq_true,Eq.trans,Membership.mem,True,congrFun',List.map_map,forall_congr,implies_congr,Matrix.map,congr,RingHom.mapMatrix_apply, Matrix.TransvectionStruct.map_toMatrix and 2 more47 instances, coercions and auxiliary constants left out.
Tactic trace: 3 steps
Open to load the checked before-and-after goal states.
- lemma
Matrix.TransvectionStruct.mapMatrix_map_toMatrix_prod'line 70 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
CommRing,DecidableEq,RingHom,Fintype,List,Matrix.TransvectionStruct,Eq,Matrix,Matrix.map,List.prod,List.map,Matrix.TransvectionStruct.toMatrix,Function.comp, Matrix.TransvectionStruct.mapProof uses: Matrix.TransvectionStruct.mapMatrix_map_toMatrix_prod
19 instances, coercions and auxiliary constants left out.
- lemma
Matrix.Pivot.baseChange_existsListTransvecEtcline 78 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
CommRing,Fintype,DecidableEq,Matrix, Matrix.Pivot.ExistsListTransvecMulDiagonalMulListTransvec,RingHom,RingHom.mapMatrixProof uses:
List,Matrix.TransvectionStruct,Exists,Eq,HMul.hMul,List.prod,List.map,Matrix.TransvectionStruct.toMatrix,Matrix.diagonal,Exists.intro, Matrix.TransvectionStruct.map,of_eq_true,Eq.trans,Function.comp,True,congr,congrArg,Matrix.map,RingHom.mapMatrix_apply,Matrix.map_muland 8 more38 instances, coercions and auxiliary constants left out.
Tactic trace: 3 steps
Open to load the checked before-and-after goal states.
- theorem
Matrix.diagonal_transvection_induction'Documented declaration: diagonal_transvection_induction' line 95 sourceSource documentation
Variant of
Matrix.diagonal_transvection_inductionfor commutative rings under the extra assumptionExistsListTransvecMulDiagonalMulListTransvec M(which is automatic for matrices over fields).standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
CommRing,DecidableEq,Fintype,Matrix, Matrix.Pivot.ExistsListTransvecMulDiagonalMulListTransvec,Eq,Matrix.det,Matrix.diagonal,Matrix.TransvectionStruct,Matrix.TransvectionStruct.toMatrix,HMul.hMulProof uses:
List,Exists,List.prod,List.map,of_eq_true,Eq.trans,Finset.prod,Finset.univ,True,congr,congrArg,Matrix.det_diagonal,Matrix.det.congr_simp,Matrix.det_mul,OfNat.ofNat,Matrix.TransvectionStruct.det_toMatrix_prod,one_mul,mul_one,eq_self,List.recand 9 more37 instances, coercions and auxiliary constants left out.
Tactic trace: 17 steps
Open to load the checked before-and-after goal states.
theorem diagonal_transvection_induction' (P : Matrix n n R → Prop) (M : Matrix n n R) (hM : ExistsListTransvecMulDiagonalMulListTransvec M) (hdiag : ∀ D : n → R, det (diagonal D) = det M → P (diagonal D)) (htransvec : ∀ t : TransvectionStruct n R, P t.toMatrix) (hmul : ∀ A B, P A → P B → P (A * B)) : P M := by … - theorem
Matrix.diagonal_transvection_induction_of_det_unitthis proof is literally cut and pasted from mathlib with≠ 0changed toIsUnitand 𝕜 changed to R and addition of(hM : ExistsListTransvecMulDiagonalMulListTransvec M)line 124 sourceSource comment
this proof is literally cut and pasted from mathlib with `≠ 0` changed to `IsUnit` and 𝕜 changed to R and addition of `(hM : ExistsListTransvecMulDiagonalMulListTransvec M)`standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
CommRing,DecidableEq,Fintype,Matrix, Matrix.Pivot.ExistsListTransvecMulDiagonalMulListTransvec,IsUnit,Matrix.det,Matrix.diagonal,Matrix.TransvectionStruct,Matrix.TransvectionStruct.toMatrix,HMul.hMulProof uses:
And, Matrix.diagonal_transvection_induction',And.intro,of_eq_true,Eq.trans,OfNat.ofNat,True,congrArg,Matrix.TransvectionStruct.det,Matrix.det_mul,congr,eq_true,And.left,and_self,And.right29 instances, coercions and auxiliary constants left out.
Tactic trace: 14 steps
Open to load the checked before-and-after goal states.
theorem diagonal_transvection_induction_of_det_unit (P : Matrix n n R → Prop) (M : Matrix n n R) (hM : ExistsListTransvecMulDiagonalMulListTransvec M) (hMdet : IsUnit (det M)) (hdiag : ∀ D : n → R, IsUnit (det (diagonal D)) → P (diagonal D)) (htransvec : ∀ t : TransvectionStruct n R, P t.toMatrix) (hmul : ∀ A B, IsUnit (det A) → IsUnit (det B) → P A → P B → P (A * B)) : P M := by …