Compression preserving allowed point moments and the actual cut domain
Lax342547.BaseCompression · concepts/Lax342547/BaseCompression.lean · lax-342547
No public endorsements yet.
Loading review…
Sign in with ORCIDNatural Language Statement
Lemma
A projection can fix a prescribed vector space and preserve observations, with rank bounded by the fixed-space dimension plus the observation rank. Blockwise base maps fix the constant coordinate and selector factor, send allowed points to allowed points, and preserve the actual cut-profile space. Their ranks and the transformation of target matrices are checked. The choice fixing every pin and residual target is treated separately.
Concept map
Evidence
This concept declares 14 statements. Each proof establishes one of them relative to its assumptions.
1 blockMap_allowed proven
2 blockMap_profile proven
3 blockMap_rank proven
4 blockMap_tagSpace proven
5 componentMap_cut proven
6 concrete_compression_rank proven
7 fixing_observed_projection proven
8 liftBase_point proven
9 liftBase_rank proven
10 matrixPair_tensorMap proven
11 matrixPair_trace proven
12 tensorMap_moments proven
13 tensorMap_point proven
14 tensorMap_target proven
Lean source view on GitHub
| 1 | import Lax342547.ResponseMatrices |
| 2 | import Mathlib.LinearAlgebra.Matrix.Bilinear |
| 3 | import Mathlib.LinearAlgebra.Matrix.Trace |
| 4 | |
| 5 | /-! |
| 6 | --- |
| 7 | title: Compression preserving allowed point moments and the actual cut domain |
| 8 | type: lemma |
| 9 | --- |
| 10 | A projection can fix a prescribed vector space and preserve observations, |
| 11 | with rank bounded by the fixed-space dimension plus the observation rank. |
| 12 | Blockwise base maps fix the constant coordinate and selector factor, send |
| 13 | allowed points to allowed points, and preserve the actual cut-profile |
| 14 | space. Their ranks and the transformation of target matrices are checked. |
| 15 | The choice fixing every pin and residual target is treated separately. |
| 16 | -/ |
| 17 | |
| 18 | namespace Lax342547.BaseCompression |
| 19 | |
| 20 | open Lax342547.MomentSpace |
| 21 | open Lax342547.TagGeometry Lax342547.ConcreteGeometry Lax342547.ConcreteCut Lax342547.CutProfiles |
| 22 | |
| 23 | axiom fixing_observed_projection {V X : Type} [AddCommGroup V] [Module Binary V] |
| 24 | [AddCommGroup X] [Module Binary X] [FiniteDimensional Binary V] |
| 25 | (U : Submodule Binary V) (L : V →ₗ[Binary] X) : |
| 26 | ∃ p : V →ₗ[Binary] V, (∀ v ∈ U, p v = v) ∧ L.comp p = L ∧ |
| 27 | Module.finrank Binary (LinearMap.range p) ≤ |
| 28 | Module.finrank Binary U + Module.finrank Binary (LinearMap.range L) |
| 29 | |
| 30 | def liftBase {Coord Base : Type} |
| 31 | (f : (Base → Binary) →ₗ[Binary] (Base → Binary)) : |
| 32 | (Coord × Option Base → Binary) →ₗ[Binary] (Coord × Option Base → Binary) where |
| 33 | toFun v c := match c.2 with |
| 34 | | none => v (c.1, none) |
| 35 | | some b => f (fun b => v (c.1, some b)) b |
| 36 | map_add' v w := by |
| 37 | ext ⟨a, c⟩ |
| 38 | cases c with |
| 39 | | none => rfl |
| 40 | | some b => exact congrFun (f.map_add _ _) b |
| 41 | map_smul' c v := by |
| 42 | ext ⟨a, q⟩ |
| 43 | cases q with |
| 44 | | none => rfl |
| 45 | | some b => exact congrFun (f.map_smul c _) b |
| 46 | |
| 47 | axiom liftBase_point {Label Coord Base : Type} |
| 48 | (f : (Base → Binary) →ₗ[Binary] (Base → Binary)) |
| 49 | (p : Label → Coord → Binary) (s : Label) (z : Base → Binary) : |
| 50 | liftBase (Coord := Coord) f (point p s z) = point p s (f z) |
| 51 | |
| 52 | noncomputable def tensorMap {B : Type} [Fintype B] (f : (B → Binary) →ₗ[Binary] (B → Binary)) : |
| 53 | Matrix B B Binary →ₗ[Binary] Matrix B B Binary := by |
| 54 | classical |
| 55 | exact (mulRightLinearMap B Binary (LinearMap.toMatrix' f).transpose).comp |
| 56 | (mulLeftLinearMap B Binary (LinearMap.toMatrix' f)) |
| 57 | |
| 58 | axiom tensorMap_point {Label Coord Base : Type} [Fintype Coord] [Fintype Base] |
| 59 | (f : (Base → Binary) →ₗ[Binary] (Base → Binary)) |
| 60 | (p : Label → Coord → Binary) (s : Label) (z : Base → Binary) : |
| 61 | tensorMap (liftBase f) (pointMoment p s z) = pointMoment p s (f z) |
| 62 | |
| 63 | axiom tensorMap_moments {Label Coord Base : Type} [Fintype Coord] [Fintype Base] |
| 64 | (f : (Base → Binary) →ₗ[Binary] (Base → Binary)) (p : Label → Coord → Binary) |
| 65 | (A : Set Base) |
| 66 | (hA : ∀ z, (∀ b, b ∉ A → z b = 0) → ∀ b, b ∉ A → f z b = 0) : |
| 67 | (momentSpace p A).map (tensorMap (liftBase f)) ≤ momentSpace p A |
| 68 | |
| 69 | abbrev Block (k : ℕ) := (Tag k × Tag k) ⊕ Fin 3 |
| 70 | |
| 71 | def blockMap {k n : ℕ} (A : Block k → (Fin n → Binary) →ₗ[Binary] (Fin n → Binary)) : |
| 72 | (Base k n → Binary) →ₗ[Binary] (Base k n → Binary) where |
| 73 | toFun z q := match q with |
| 74 | | Sum.inl ((d, t), i) => A (Sum.inl (d, t)) (fun j => z (Sum.inl ((d, t), j))) i |
| 75 | | Sum.inr (q, i) => A (Sum.inr q) (fun j => z (Sum.inr (q, j))) i |
| 76 | map_add' z w := by |
| 77 | ext q |
| 78 | rcases q with ⟨⟨d, t⟩, i⟩ | ⟨q, i⟩ <;> exact congrFun (LinearMap.map_add _ _ _) i |
| 79 | map_smul' c z := by |
| 80 | ext q |
| 81 | rcases q with ⟨⟨d, t⟩, i⟩ | ⟨q, i⟩ <;> exact congrFun (LinearMap.map_smul _ c _) i |
| 82 | |
| 83 | axiom blockMap_allowed {k n : ℕ} |
| 84 | (A : Block k → (Fin n → Binary) →ₗ[Binary] (Fin n → Binary)) (l : Tag k) |
| 85 | (z : Base k n → Binary) (hz : ∀ q, q ∉ allowedBase k n l → z q = 0) : |
| 86 | ∀ q, q ∉ allowedBase k n l → blockMap A z q = 0 |
| 87 | |
| 88 | axiom blockMap_tagSpace {k n b degree : ℕ} |
| 89 | (A : Block k → (Fin n → Binary) →ₗ[Binary] (Fin n → Binary)) (l : Tag k) : |
| 90 | (tagSpace k n b degree l).map (tensorMap (liftBase (blockMap A))) ≤ tagSpace k n b degree l |
| 91 | |
| 92 | def componentMap {Tag V : Type} [AddCommGroup V] [Module Binary V] |
| 93 | (f : V →ₗ[Binary] V) : (Component Tag → V) →ₗ[Binary] (Component Tag → V) where |
| 94 | toFun x e := f (x e) |
| 95 | map_add' x y := by ext e; exact f.map_add _ _ |
| 96 | map_smul' c x := by ext e; exact f.map_smul c _ |
| 97 | |
| 98 | axiom componentMap_cut {Tag V : Type} [AddCommGroup V] [Module Binary V] |
| 99 | (f : V →ₗ[Binary] V) (w : Tag → V) : |
| 100 | componentMap (Tag := Tag) f (cutMap w) = cutMap (fun t => f (w t)) |
| 101 | |
| 102 | axiom blockMap_profile {k n b degree : ℕ} |
| 103 | (A : Block k → (Fin n → Binary) →ₗ[Binary] (Fin n → Binary)) : |
| 104 | (Profile k n b degree).map (componentMap (tensorMap (liftBase (blockMap A)))) ≤ |
| 105 | Profile k n b degree |
| 106 | |
| 107 | axiom liftBase_rank {Coord Base : Type} [Fintype Coord] [Fintype Base] |
| 108 | (f : (Base → Binary) →ₗ[Binary] (Base → Binary)) : |
| 109 | Module.finrank Binary (LinearMap.range (liftBase (Coord := Coord) f)) ≤ |
| 110 | Fintype.card Coord * (1 + Module.finrank Binary (LinearMap.range f)) |
| 111 | |
| 112 | axiom matrixPair_trace {B : Type} [Fintype B] (M W : Matrix B B Binary) : |
| 113 | Lax342547.ConcreteGeometry.matrixPair M W = Matrix.trace (M.transpose * W) |
| 114 | |
| 115 | axiom matrixPair_tensorMap {B : Type} [Fintype B] |
| 116 | (f : (B → Binary) →ₗ[Binary] (B → Binary)) (M W : Matrix B B Binary) : by |
| 117 | classical |
| 118 | exact Lax342547.ConcreteGeometry.matrixPair M (tensorMap f W) = |
| 119 | Lax342547.ConcreteGeometry.matrixPair |
| 120 | ((LinearMap.toMatrix' f).transpose * M * LinearMap.toMatrix' f) W |
| 121 | |
| 122 | axiom tensorMap_target {B : Type} [Fintype B] |
| 123 | (f : (B → Binary) →ₗ[Binary] (B → Binary)) (M : Matrix B B Binary) |
| 124 | (hM : by classical exact (LinearMap.toMatrix' f).transpose * M * LinearMap.toMatrix' f = M) : |
| 125 | (Lax342547.ConcreteGeometry.matrixPair M).comp (tensorMap f) = |
| 126 | Lax342547.ConcreteGeometry.matrixPair M |
| 127 | |
| 128 | axiom blockMap_rank {k n : ℕ} |
| 129 | (A : Block k → (Fin n → Binary) →ₗ[Binary] (Fin n → Binary)) : |
| 130 | Module.finrank Binary (LinearMap.range (blockMap A)) ≤ |
| 131 | ∑ q, Module.finrank Binary (LinearMap.range (A q)) |
| 132 | |
| 133 | axiom concrete_compression_rank {k n b degree D : ℕ} |
| 134 | (A : Block k → (Fin n → Binary) →ₗ[Binary] (Fin n → Binary)) |
| 135 | (hA : ∀ q, Module.finrank Binary (LinearMap.range (A q)) ≤ D) : |
| 136 | Module.finrank Binary (LinearMap.range |
| 137 | (liftBase (Coord := SelectorCoordinates b degree) (blockMap A))) ≤ |
| 138 | Fintype.card (SelectorCoordinates b degree) * (1 + ((2 * k + 1)^2 + 3) * D) |
| 139 | |
| 140 | end Lax342547.BaseCompression |
| 141 |
Discussion
Ask a question or add context. Endorsements and structured flags are kept in the review panel above.
0 comments