Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
da700d5
feat(Expander): uniform spectral gap for the shear-translation graph …
chris-ai1 Oct 29, 2026
14714b9
feat(Probability): retention by pairwise independent hashing (#1444)
chris-ai1 Oct 29, 2026
4943d9b
feat(Probability): affine retention channels over a prime field (#1682)
chris-ai1 Oct 29, 2026
6553d6d
refactor(Expander): share the shears of R × R; credit the OpenAI prep…
chris-ai1 Oct 30, 2026
c1e205d
docs(Expander): credit the OpenAI Lean development for the Fourier pi…
chris-ai1 Oct 30, 2026
53de6a3
feat(Probability): frame-conditioned channels, validated variants and…
chris-ai1 Oct 30, 2026
4ab043b
Merge remote-tracking branch 'origin/main' into feat/box-product-poin…
chris-ai1 Oct 30, 2026
a9e19a5
feat(Expander): Poincaré inequalities and spectral gaps of box produc…
chris-ai1 Oct 30, 2026
40d6f14
feat(Expander): relative Poincaré inequality for shears and translati…
chris-ai1 Oct 30, 2026
3db1f8f
refactor(Expander): move the dftProd lemmas to ZModProd and drop impo…
chris-ai1 Oct 30, 2026
0736143
feat(Expander): Efron–Stein and the pair-move bound on Y × (Fin H → Z…
chris-ai1 Oct 30, 2026
a547de3
doc(Probability): cite Efron–Stein and Steele; numeric Efron–Stein te…
chris-ai1 Oct 30, 2026
0e29346
feat(Expander): Poincaré inequality for elementary moves on nonzero v…
chris-ai1 Oct 30, 2026
764c28f
Merge remote-tracking branch 'fork/feat/conditional-averaging-1444' i…
chris-ai1 Oct 30, 2026
c531714
Merge remote-tracking branch 'fork/feat/box-product-poincare-1444' in…
chris-ai1 Oct 30, 2026
bc81c6a
feat(Probability): uniform spectral gap of the affine walk on slice c…
chris-ai1 Oct 30, 2026
ae99b48
Merge origin/main into feat/conditional-averaging-1444
chris-ai1 Oct 30, 2026
30c83e2
Merge origin/main into feat/shear-translation-gap-1444
chris-ai1 Oct 30, 2026
3860f88
Merge refreshed #1678 (30c83e230) into feat/box-product-poincare-1444
chris-ai1 Oct 30, 2026
d72e8e9
Merge refreshed #1678 (30c83e230) into feat/relative-shear-translatio…
chris-ai1 Oct 30, 2026
71f089e
Merge refreshed #1695 (d72e8e9e6) into feat/coordinate-pairs-1444
chris-ai1 Oct 30, 2026
efd5aa2
Merge refreshed #1699 (71f089ecb) into feat/frame-gap-1444
chris-ai1 Oct 30, 2026
8b040eb
Merge refreshed #1691 (ae99b483b) into feat/slice-gap-1444
chris-ai1 Oct 30, 2026
34cf8df
Merge refreshed #1703 (efd5aa27b) into feat/slice-gap-1444
chris-ai1 Oct 30, 2026
8804d42
Merge refreshed #1693 (3860f88e0) into feat/slice-gap-1444
chris-ai1 Oct 30, 2026
3537ac9
chore(Probability): restack the rank-one slice gap on main
SamuelSchlesinger Oct 31, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions Complexity.lean
Original file line number Diff line number Diff line change
Expand Up @@ -2800,6 +2800,7 @@ public import Complexity.Foundations.LinearAlgebra.Matrix.SchurComplement
public import Complexity.Foundations.LinearAlgebra.Matrix.SubmatrixRobust
public import Complexity.Foundations.LinearAlgebra.Matrix.TimeLayer
public import Complexity.Foundations.LinearAlgebra.Matrix.Toeplitz
public import Complexity.Foundations.LinearAlgebra.Matrix.Transvection
public import Complexity.Foundations.LinearAlgebra.PivotSpace
public import Complexity.Foundations.LinearAlgebra.Rank
public import Complexity.Foundations.LinearAlgebra.ReplacementDesign
Expand Down Expand Up @@ -3119,6 +3120,7 @@ public import Complexity.Probability.PairwiseIndependentHash.HierarchyChannels
public import Complexity.Probability.PairwiseIndependentHash.Retention
public import Complexity.Probability.PairwiseIndependentHash.RetentionChannel
public import Complexity.Probability.PairwiseIndependentHash.Shift
public import Complexity.Probability.PairwiseIndependentHash.SliceGap
public import Complexity.Probability.PairwiseIndependentHash.Toeplitz
public import Complexity.Probability.PairwiseIndependentHash.Universal
public import Complexity.Probability.Pinsker
Expand Down
58 changes: 58 additions & 0 deletions Complexity/Foundations/LinearAlgebra/Matrix/Transvection.lean
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
/-
Copyright (c) 2026 Christian Reitwiessner. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Christian Reitwiessner
-/

module
-- upstream: candidate

public import Complexity.Init
public import Mathlib.LinearAlgebra.Matrix.SpecialLinearGroup

/-!
# Transvections in the special linear group acting on vectors

Mathlib's `Matrix.SpecialLinearGroup.transvection` is the transvection `1 + c E_ij`, for `i ≠ j`,
as an element of `SL_n(R)`. This file adds two facts about it: a ring homomorphism maps it to the
transvection with the image parameter, and it acts on a vector by adding `c` times the coordinate
`j` to the coordinate `i`. Mathlib computes the action on standard basis vectors only. For `c = 1`
these are the elementary generators of `SL_n(ℤ)`, which act on vectors over every quotient ring
by the elementary moves.

## Main results

* `Matrix.SpecialLinearGroup.map_transvection`: a ring homomorphism maps transvections to
transvections.
* `Matrix.SpecialLinearGroup.transvection_mulVec`: a transvection adds `c v j` to `v i`.
-/

public section

namespace Matrix.SpecialLinearGroup

open Function

variable {n R : Type*} [Fintype n] [DecidableEq n] [CommRing R]

/-- A ring homomorphism maps the transvection `1 + c E_ij` to `1 + f c E_ij`. -/
@[simp]
theorem map_transvection {S : Type*} [CommRing S] (f : R →+* S) {i j : n} (h : i ≠ j) (c : R) :
map f (transvection h c) = transvection h (f c) := by
ext k l
simp only [map_apply_coe, RingHom.mapMatrix_apply, Matrix.map_apply, transvection_coe,
Matrix.add_apply, Matrix.one_apply, Matrix.single_apply]
split_ifs <;> simp

/-- The transvection `1 + c E_ij` adds `c v j` to the coordinate `i` of `v`. -/
@[simp]
theorem transvection_mulVec {i j : n} (h : i ≠ j) (c : R) (v : n → R) :
(transvection h c : Matrix n n R) *ᵥ v = update v i (v i + c * v j) := by
rw [transvection_coe, add_mulVec, one_mulVec, single_mulVec]
ext k
by_cases hk : k = i
· subst hk
simp
· simp [hk]

end Matrix.SpecialLinearGroup
Loading
Loading