Unary records determine every frozen cross entry
Lax342547.FrozenRecords · concepts/Lax342547/FrozenRecords.lean · lax-342547
No public endorsements yet.
Loading review…
Sign in with ORCIDNatural Language Statement
Lemma
Pairings of nominal columns with already fixed frozen image vectors require only nominal dimension times frozen-vector count bits. Separate unary records determine all cross entries with a frozen factor.
Concept map
Evidence
Lean source view on GitHub
| 1 | import Lax342547.FrozenCharacters |
| 2 | import Lax342547.RawFrames |
| 3 | |
| 4 | /-! |
| 5 | --- |
| 6 | title: Unary records determine every frozen cross entry |
| 7 | type: lemma |
| 8 | --- |
| 9 | Pairings of nominal columns with already fixed frozen image vectors require only nominal dimension times frozen-vector count bits. Separate unary records determine all cross entries with a frozen factor. |
| 10 | -/ |
| 11 | |
| 12 | namespace Lax342547.FrozenRecords |
| 13 | |
| 14 | open Lax342547.MomentSpace Lax342547.ConcreteGeometry |
| 15 | |
| 16 | noncomputable def record {I X N : Type} [Fintype N] |
| 17 | (A : (I → Binary) →ₗ[Binary] (N → Binary)) (frozen : X → N → Binary) : Matrix I X Binary := by |
| 18 | classical |
| 19 | exact fun i x => dotProduct (A (Pi.single i 1)) (frozen x) |
| 20 | |
| 21 | axiom record_count {I X : Type} [Fintype I] [Fintype X] : by |
| 22 | classical |
| 23 | exact Fintype.card (Matrix I X Binary) = 2 ^ (Fintype.card I * Fintype.card X) |
| 24 | |
| 25 | axiom record_evaluation {I X N : Type} [Fintype I] [Fintype N] |
| 26 | (A : (I → Binary) →ₗ[Binary] (N → Binary)) (frozen : X → N → Binary) |
| 27 | (v : I → Binary) (x : X) : |
| 28 | dotProduct (A v) (frozen x) = ∑ i, v i * record A frozen i x |
| 29 | |
| 30 | axiom records_determine_frozen {I X N : Type} [Fintype I] [Fintype N] |
| 31 | (A A' : (I → Binary) →ₗ[Binary] (N → Binary)) (frozen : X → N → Binary) |
| 32 | (hrec : record A frozen = record A' frozen) (v : I → Binary) |
| 33 | (w : Submodule.span Binary (Set.range frozen)) : |
| 34 | dotProduct (A v) w.val = dotProduct (A' v) w.val |
| 35 | |
| 36 | axiom two_records_cross_agreement {I J X Y N : Type} |
| 37 | [Fintype I] [Fintype J] [Fintype N] |
| 38 | (A A' : (I → Binary) →ₗ[Binary] (N → Binary)) |
| 39 | (B B' : (J → Binary) →ₗ[Binary] (N → Binary)) |
| 40 | (left : X → I → Binary) (right : Y → J → Binary) |
| 41 | (leftImages : X → N → Binary) (rightImages : Y → N → Binary) |
| 42 | (hleft : ∀ x, A (left x) = leftImages x ∧ A' (left x) = leftImages x) |
| 43 | (hright : ∀ y, B (right y) = rightImages y ∧ B' (right y) = rightImages y) |
| 44 | (hrecA : record A rightImages = record A' rightImages) |
| 45 | (hrecB : record B leftImages = record B' leftImages) : |
| 46 | (∀ v ∈ Submodule.span Binary (Set.range left), ∀ w, |
| 47 | dotProduct (A v) (B w) = dotProduct (A' v) (B' w)) ∧ |
| 48 | (∀ v w, w ∈ Submodule.span Binary (Set.range right) → |
| 49 | dotProduct (A v) (B w) = dotProduct (A' v) (B' w)) |
| 50 | |
| 51 | end Lax342547.FrozenRecords |
| 52 |
From Mathlib
none
Discussion
Ask a question or add context. Endorsements and structured flags are kept in the review panel above.
0 comments