Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
63 commits
Select commit Hold shift + click to select a range
d1ed9a1
port prelims from pr
katyhr Apr 20, 2026
084f588
port basic from pr
katyhr Apr 20, 2026
60f9f80
changes from PR
katyhr Apr 20, 2026
f1011fc
new dependencies
katyhr Apr 20, 2026
ad2f00e
lin combo lemmas
katyhr Apr 20, 2026
0fbc738
defs from section 3
katyhr Apr 20, 2026
f3e1433
ArkLib/Data/CodingTheory/Basic/MDSCode.lean
katyhr Apr 20, 2026
b9bc283
minor edits
katyhr Apr 20, 2026
2d300f2
SZ counting form for rmk 320
katyhr Apr 20, 2026
924b6c3
remove lint errors
katyhr Apr 20, 2026
9407ee0
one more lint error
katyhr Apr 20, 2026
4eb5b04
tensor gen def
katyhr Apr 22, 2026
347eb35
tensor of gens
katyhr Apr 27, 2026
3aaa220
lemma 4.1 cor 4.2
katyhr Apr 27, 2026
e23c8e5
update dependencies
katyhr Apr 27, 2026
e1213de
broken proof drafts
katyhr Apr 28, 2026
0e7be75
next draft
katyhr May 4, 2026
d9ca194
lemmas from section 4_1
katyhr May 4, 2026
be2b1d6
update dependencies
katyhr May 4, 2026
d175c68
linear combos in projected codes
katyhr May 4, 2026
ec65ec5
tensor gens def
katyhr May 4, 2026
1146d2b
pseudoinverses
katyhr May 4, 2026
57b1fcd
monotonicity lemma
katyhr May 4, 2026
19d3db2
small edits
katyhr May 4, 2026
30d14f3
change S S' to general types
katyhr May 4, 2026
fbbc5d8
remove monotonicity lemma
katyhr May 4, 2026
3939acc
small changes
katyhr May 4, 2026
93d65a1
Merge branch 'main' into Katy/MCAgens
katyhr May 13, 2026
1c72ed5
update imports
katyhr May 13, 2026
e7e942d
merge main
katyhr May 13, 2026
3666b07
optimise proofs
katyhr May 13, 2026
d443365
some edits
katyhr May 13, 2026
a3583dd
remove set
katyhr May 13, 2026
4450b35
small proof optimisation
katyhr May 13, 2026
3f38fe8
some more changes
katyhr May 13, 2026
5224aa5
some cleanup
katyhr May 13, 2026
179dfe7
fix build error
katyhr May 13, 2026
11e181c
Merge branch 'main' into Katy/MCAgens
alexanderlhicks May 15, 2026
24a135e
second tensor def
katyhr May 28, 2026
e72516f
two versions of the tensor gen proved equivalent
katyhr May 28, 2026
0001a40
Merge branch 'main' into Katy/MCAgens
katyhr May 28, 2026
4bf1c2c
reduce line length
katyhr May 28, 2026
f378acd
extend range of error to R
katyhr Jun 9, 2026
6b60d3b
edit docstring
katyhr Jun 9, 2026
b6d3e1e
change dostring
katyhr Jun 9, 2026
851039c
projectedCode as submod
katyhr Jun 16, 2026
f1035b8
more progress
katyhr Jun 16, 2026
a29ba06
change projectedCode to projectedCodeSubmod
katyhr Jun 16, 2026
2960f17
add hypothesis on ell
katyhr Jun 16, 2026
c4acb89
initial helper lemmas
katyhr Jun 17, 2026
05900c7
some proof progress
katyhr Jun 17, 2026
257b577
no sorrys
katyhr Jun 17, 2026
0b875cf
no sorrys and some changes
katyhr Jun 17, 2026
8ad252d
proof cleanup
katyhr Jun 17, 2026
40e9178
ENNReal prob theory lemma
katyhr Jun 20, 2026
73160ee
minor edits
katyhr Jun 21, 2026
5e098c7
Merge branch 'main' into Katy/AffineGens
katyhr Jun 30, 2026
8cf0db8
fix build errors
katyhr Jun 30, 2026
3cf6023
cleanup
katyhr Jun 30, 2026
6d498c1
fix linter
katyhr Jun 30, 2026
f340d76
another linter error
katyhr Jun 30, 2026
c9ea16e
Merge branch 'main' into Katy/AffineGens
katyhr Jun 30, 2026
300730d
tensor gens lemma weak bound
katyhr Jul 6, 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
1 change: 1 addition & 0 deletions ArkLib.lean
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ import ArkLib.Data.CodingTheory.PolishchukSpielman.Resultant
import ArkLib.Data.CodingTheory.Prelims
import ArkLib.Data.CodingTheory.ProximityGap.AHIV22
import ArkLib.Data.CodingTheory.ProximityGap.AHIV22Support
import ArkLib.Data.CodingTheory.ProximityGap.AffineGenerator
import ArkLib.Data.CodingTheory.ProximityGap.BCIKS20.AffineLines.BWMatrix
import ArkLib.Data.CodingTheory.ProximityGap.BCIKS20.AffineLines.GoodCoeffs
import ArkLib.Data.CodingTheory.ProximityGap.BCIKS20.AffineLines.JointAgreement
Expand Down
44 changes: 39 additions & 5 deletions ArkLib/Data/CodingTheory/Basic/LinearCode.lean
Original file line number Diff line number Diff line change
Expand Up @@ -259,15 +259,49 @@ We denote this by `c|[T]`.
Definition 3.7 [BCGM25]. -/
def projectedWord [Fintype ι] (c : ι → F) (T : Finset ι) : T → F := Set.restrict T c

notation:60 c "|[" T "]" => projectedWord c T

/-- Let `C` be a code of length `ι`. For every finite `ι`-subset `T`, we define the projected code
`C|[T]` as the set of projected codewords `c|[T]`, for `c ∈ C`.
Definition 3.7 [BCGM25]. -/
def projectedCode [Fintype ι] (C : Set (ι → F)) (T : Finset ι) : Set (T → F) :=
{w | ∃ c ∈ C, w = c|[T]}

notation:60 C "|[" T "]" => projectedCode C T
{w | ∃ c ∈ C, w = projectedWord c T}

open Submodule

def projectedCode_submod
[Field F]
[Fintype ι]
(LC : LinearCode ι F)
(T : Finset ι) :
Submodule F (T → F) :=
{
carrier := projectedCode (LC.carrier) T,
zero_mem' := by
unfold projectedCode projectedWord
simp only [carrier_eq_coe, SetLike.mem_coe, Set.mem_setOf_eq]
use 0
exact And.intro (Submodule.zero_mem LC) (List.map_inj.mp rfl)

add_mem' := by
unfold projectedCode projectedWord
intros x y hx hy
simp_all only [carrier_eq_coe, SetLike.mem_coe, Set.mem_setOf_eq]
rcases hx with ⟨cx, hx⟩
rcases hy with ⟨cy, hy⟩
use (cx + cy)
apply And.intro ((Submodule.add_mem_iff_right LC hx.1).mpr hy.1)
ext i
simp [hx.2, hy.2]

smul_mem' := by
unfold projectedCode projectedWord
intros m x hx
simp_all only [carrier_eq_coe, SetLike.mem_coe, Set.mem_setOf_eq]
rcases hx with ⟨cx,hx⟩
use m • cx
apply And.intro (smul_mem LC m hx.1)
ext i
simp [hx.2]
}

/-- Let `T` be a finite subset of `ι`. If every word in a collection lies in the projected code
`C|[T]`, then so do all `F`-linear combinations of these. -/
Expand Down
25 changes: 25 additions & 0 deletions ArkLib/Data/CodingTheory/Prelims.lean
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import Mathlib.LinearAlgebra.AffineSpace.Pointwise
import Mathlib.LinearAlgebra.AffineSpace.Combination
import Mathlib.RingTheory.Henselian


/-! # Coding-Theory Preliminaries -/

section TensorCombination
Expand All @@ -34,6 +35,7 @@ def multilinearCombine {ϑ : ℕ} {ι : Type*}
(u : (Fin (2 ^ ϑ)) → ι → A) (r : Fin ϑ → F) : (ι → A) :=
fun colIdx => ∑ rowIdx : Fin (2^ϑ), ((multilinearWeight r rowIdx) : F) • ((u rowIdx colIdx) : A)
notation:20 r " |⨂| " u => multilinearCombine (u := u) (r := r)

end TensorCombination
noncomputable section

Expand Down Expand Up @@ -298,6 +300,29 @@ instance instNonemptyAffineSubspace_mk' {V : Type*} [AddCommGroup V] [Module F V
(p : V) (direction : Submodule F V) : Nonempty (AffineSubspace.mk' p direction) :=
nonempty_subtype.mpr ⟨p, AffineSubspace.self_mem_mk' p direction⟩

/-- The affine-space combination of codewords `U` at seed `x`:
`U 0 + ∑ i, x i • U (i+1)`, i.e. `vecMul (1, x) U`. -/
abbrev affineComb {s : ℕ} (U : Fin (s + 1) → (ι → F)) (x : Fin s → F) : ι → F :=
Matrix.vecMul (Fin.cons 1 x) U

/-- The linear combination `∑ i, l i • U (i+1)` of the "direction" codewords. -/
abbrev linComb {s : ℕ} (U : Fin (s + 1) → (ι → F)) (l : Fin s → F) : ι → F :=
fun k => ∑ i, l i * U i.succ k

omit [Fintype ι] [DecidableEq F] [Fintype F] in
/-- The affine combination along the line `x ↦ v + t • lam` in seed space. -/
lemma affineComb_line {s : ℕ} (U : Fin (s + 1) → (ι → F)) (v lam : Fin s → F) (t : F) :
affineComb U (v + t • lam) = affineComb U v + t • (linComb U lam) := by
have hsplit : (Fin.cons 1 (v + t • lam) : Fin (s + 1) → F) =
Fin.cons 1 v + t • (Fin.cons (0 : F) lam : Fin (s + 1) → F) := by
ext i
refine Fin.cases ?_ ?_ i <;> simp
have hlin : Matrix.vecMul (Fin.cons (0 : F) lam : Fin (s + 1) → F) U = linComb U lam := by
ext k
simp [Matrix.vecMul, dotProduct, Fin.sum_univ_succ, linComb]
change Matrix.vecMul (Fin.cons 1 (v + t • lam) : Fin (s + 1) → F) U = _
rw [hsplit, Matrix.add_vecMul, Matrix.smul_vecMul, hlin]

end
end Affine

Expand Down
Loading
Loading