Joint distribution of the unary mixer row matrix
Lax342547.UnaryRowLaw · concepts/Lax342547/UnaryRowLaw.lean · lax-342547
No public endorsements yet.
Loading review…
Sign in with ORCIDNatural Language Statement
Lemma
All indexed L and R matrices are sampled from one finite product. The full forward/reverse observation list has additive compatibility cost. A surjective coordinate selection retains just the incident formal rows, including their separate L and R halves.
Concept map
Evidence
Lean source view on GitHub
| 1 | import Lax342547.UnaryMixer |
| 2 | import Lax342547.MixerRowLaw |
| 3 | import Lax342547.CorankCounting |
| 4 | |
| 5 | /-! |
| 6 | --- |
| 7 | title: Joint distribution of the unary mixer row matrix |
| 8 | type: lemma |
| 9 | --- |
| 10 | All indexed L and R matrices are sampled from one finite product. |
| 11 | The full forward/reverse observation list has additive compatibility |
| 12 | cost. A surjective coordinate selection retains just the incident |
| 13 | formal rows, including their separate L and R halves. |
| 14 | -/ |
| 15 | |
| 16 | namespace Lax342547.UnaryRowLaw |
| 17 | |
| 18 | open Lax342547.MomentSpace Lax342547.UnaryMixer |
| 19 | |
| 20 | variable {E I N : Type} [Fintype E] [Fintype I] [Fintype N] |
| 21 | |
| 22 | abbrev Index (E : Type) (J : ℕ) := Bool × Fin J × E × E |
| 23 | |
| 24 | abbrev RowIndex (r : E → ℕ) (inc : Finset E) (J : ℕ) := |
| 25 | (t : Block inc J) × (Fin (blockRank r t) ⊕ Fin (blockRank r t)) |
| 26 | |
| 27 | noncomputable instance (r : E → ℕ) (inc : Finset E) (J : ℕ) : |
| 28 | DecidableEq (RowIndex r inc J) := Classical.decEq _ |
| 29 | |
| 30 | noncomputable instance (r : E → ℕ) (inc : Finset E) (J : ℕ) : |
| 31 | Fintype (RowIndex r inc J) := Fintype.ofFinite _ |
| 32 | |
| 33 | def flatten {r : E → ℕ} {inc : Finset E} {J : ℕ} : |
| 34 | Rows r inc J ≃ₗ[Binary] (RowIndex r inc J → Binary) where |
| 35 | toFun x a := Sum.elim (x a.1).1 (x a.1).2 a.2 |
| 36 | invFun y t := (fun a => y ⟨t, .inl a⟩, fun a => y ⟨t, .inr a⟩) |
| 37 | left_inv x := rfl |
| 38 | right_inv y := by funext a; rcases a with ⟨t, a | a⟩ <;> rfl |
| 39 | map_add' x y := by funext a; rcases a with ⟨t, a | a⟩ <;> rfl |
| 40 | map_smul' a x := by funext b; rcases b with ⟨t, b | b⟩ <;> rfl |
| 41 | |
| 42 | abbrev FullList (r : E → ℕ) (J : ℕ) (N : Type) := |
| 43 | ∀ p : Index E J, Matrix (Fin (r p.2.2.1)) N Binary × Matrix N (Fin (r p.2.2.2)) Binary |
| 44 | |
| 45 | def fullObservations {r : E → ℕ} {J : ℕ} |
| 46 | (Z : ∀ e, Matrix I (Fin (r e)) Binary) (D : Matrix I N Binary) : |
| 47 | (Index E J → Matrix I I Binary) →ₗ[Binary] FullList r J N := |
| 48 | FiniteLinearLaw.familyMap (fun p => MixerRowLaw.observations (Z p.2.2.1) (Z p.2.2.2) D) |
| 49 | |
| 50 | def pack {r : E → ℕ} (inc : Finset E) {J : ℕ} : |
| 51 | FullList r J N →ₗ[Binary] Matrix (RowIndex r inc J) N Binary where |
| 52 | toFun y a i := match a with |
| 53 | | ⟨.inl (j, e, f), .inl h⟩ => (y (false, j, e, f.val)).1 h i |
| 54 | | ⟨.inl (j, e, f), .inr h⟩ => (y (true, j, e, f.val)).1 h i |
| 55 | | ⟨.inr (j, e, f), .inl h⟩ => (y (false, j, e.val, f)).2 i h |
| 56 | | ⟨.inr (j, e, f), .inr h⟩ => (y (true, j, e.val, f)).2 i h |
| 57 | map_add' x y := by |
| 58 | funext a i |
| 59 | rcases a with ⟨⟨j, e, f⟩ | ⟨j, e, f⟩, a | a⟩ <;> rfl |
| 60 | map_smul' c x := by |
| 61 | funext a i |
| 62 | rcases a with ⟨⟨j, e, f⟩ | ⟨j, e, f⟩, a | a⟩ <;> rfl |
| 63 | |
| 64 | def mixerRows {r : E → ℕ} (inc : Finset E) {J : ℕ} |
| 65 | (Z : ∀ e, Matrix I (Fin (r e)) Binary) (D : Matrix I N Binary) : |
| 66 | (Index E J → Matrix I I Binary) →ₗ[Binary] Matrix (RowIndex r inc J) N Binary := |
| 67 | (pack inc).comp (fullObservations Z D) |
| 68 | |
| 69 | noncomputable def rowLinear {r : E → ℕ} (inc : Finset E) {J : ℕ} |
| 70 | (Z : ∀ e, Matrix I (Fin (r e)) Binary) (D : Matrix I N Binary) |
| 71 | (M : Index E J → Matrix I I Binary) : (N → Binary) →ₗ[Binary] Rows r inc J := |
| 72 | (rowMap inc Z (fun j e f => M (false, j, e, f)) |
| 73 | (fun j e f => M (true, j, e, f))).comp D.mulVecLin |
| 74 | |
| 75 | axiom mixerRows_rank {r : E → ℕ} (inc : Finset E) {J : ℕ} |
| 76 | (Z : ∀ e, Matrix I (Fin (r e)) Binary) (D : Matrix I N Binary) |
| 77 | (M : Index E J → Matrix I I Binary) : |
| 78 | (mixerRows inc Z D M).rank = Module.finrank Binary (LinearMap.range (rowLinear inc Z D M)) |
| 79 | |
| 80 | open scoped ENNReal |
| 81 | |
| 82 | axiom joint_row_law [DecidableEq E] [DecidableEq I] [DecidableEq N] |
| 83 | {r : E → ℕ} (inc : Finset E) {J K : ℕ} |
| 84 | (Z : ∀ e, Matrix I (Fin (r e)) Binary) (D : Matrix I N Binary) |
| 85 | (hZ : ∀ e, Function.Injective (Z e).mulVec) (hD : Function.Injective D.mulVec) |
| 86 | (hr : ∑ e, r e ≤ K) (y : Matrix (RowIndex r inc J) N Binary) : |
| 87 | (PMF.uniformOfFintype (Index E J → Matrix I I Binary)).map (mixerRows inc Z D) y ≤ |
| 88 | 2 ^ (2 * J * K ^ 2) * PMF.uniformOfFintype (Matrix (RowIndex r inc J) N Binary) y |
| 89 | |
| 90 | axiom row_corank_bound [DecidableEq E] [DecidableEq I] [DecidableEq N] |
| 91 | {r : E → ℕ} (inc : Finset E) {J K : ℕ} |
| 92 | (Z : ∀ e, Matrix I (Fin (r e)) Binary) (D : Matrix I N Binary) |
| 93 | (hZ : ∀ e, Function.Injective (Z e).mulVec) (hD : Function.Injective D.mulVec) |
| 94 | (hr : ∑ e, r e ≤ K) (s : ℕ) : |
| 95 | (PMF.uniformOfFintype (Index E J → Matrix I I Binary)).toOuterMeasure |
| 96 | {M | (mixerRows inc Z D M).rank + s ≤ Fintype.card (RowIndex r inc J)} ≤ |
| 97 | (2 : ℝ≥0∞) ^ (2 * J * K ^ 2 + s * (4 * J * inc.card * K)) / 2 ^ (s * Fintype.card N) |
| 98 | |
| 99 | def leftMixers {J : ℕ} (M : Index E J → Matrix I I Binary) : Fin J → E → E → Matrix I I Binary := |
| 100 | fun j e f => M (false, j, e, f) |
| 101 | |
| 102 | def rightMixers {J : ℕ} (M : Index E J → Matrix I I Binary) : Fin J → E → E → Matrix I I Binary := |
| 103 | fun j e f => M (true, j, e, f) |
| 104 | |
| 105 | open Lax342547.TagGeometry Lax342547.ConcreteGeometry Lax342547.ConcreteCut Lax342547.CutProfiles |
| 106 | |
| 107 | def UnaryBad {k n b degree r₀ J : ℕ} {hr : 2 * r₀ ≤ n} |
| 108 | (D : Testers (k := k) (b := b) (degree := degree) hr) (x : Profile k n b degree) |
| 109 | (l : Tag k) (s : Fin b → Binary) (s₀ : ℕ) |
| 110 | (M : Index (Component (Tag k)) J → Moment k n b degree) : Prop := |
| 111 | ∃ z : Base k n → Binary, ∃ hz : ∀ i, i ∉ allowedBase k n l → z i = 0, |
| 112 | (FormalQuadratic.polarMatrix (fun v => |
| 113 | gradient D (leftMixers M) (rightMixers M) x (atomAlongZ l s z hz v))).rank < 2 * (J - s₀) |
| 114 | |
| 115 | axiom unary_failure_probability {k n b degree r₀ J K : ℕ} {hr : 2 * r₀ ≤ n} |
| 116 | (hk : 0 < k) (D : Testers (k := k) (b := b) (degree := degree) hr) |
| 117 | (x : Profile k n b degree) (hx : x ≠ 0) (hK : ∑ e, (x.val e).rank ≤ K) |
| 118 | (l : Tag k) (s : Fin b → Binary) (s₀ : ℕ) : |
| 119 | (PMF.uniformOfFintype (Index (Component (Tag k)) J → Moment k n b degree)).toOuterMeasure |
| 120 | {M | UnaryBad D x l s s₀ M} ≤ |
| 121 | (2 : ℝ≥0∞) ^ (2 * J * K ^ 2 + (s₀ + 1) * (4 * J * (2 * k) * K)) / 2 ^ ((s₀ + 1) * n) |
| 122 | |
| 123 | end Lax342547.UnaryRowLaw |
| 124 |
Used by
From Mathlib
none
Discussion
Ask a question or add context. Endorsements and structured flags are kept in the review panel above.
0 comments