While this submission is a draft, it cannot be used by other submissions.

Independent free-direction spaces at distinct selector labels

Lax342547.AtomDirections · concepts/Lax342547/AtomDirections.lean · lax-342547

proven

Loading review…

Sign in with ORCID

Community review

Flags

Each flag is tied to a public ORCID identity and explains why this concept may be incorrect.

No flags have been submitted.

    Community review

    Flag this concept

    State precisely what appears incorrect. This explanation will be public under your ORCID name.

    No source line selected.

    Natural Language Statement

    Lemma

    The linear variation of a point input when a single base block varies. For distinct labels the two direction spaces are independent, because the empty selector and a separating singleton selector recover both sets of input coefficients. This is the geometric input to the ordered binary mixer tests in Lemma 5.5.

    Concept map
    7 concepts; 8 descendants hidden
    100%
    Proven claimDefinitionThis conceptRelated conceptA → B: B builds on A
    Evidence

    This concept declares 3 statements. Each proof establishes one of them relative to its assumptions.

    2 distinct_directions_injective proven

    Lean source view on GitHub

    1import Lax342547.ConcreteGeometry
    2import Mathlib.Data.Matrix.ColumnRowPartitioned
    3
    4/-!
    5---
    6title: Independent free-direction spaces at distinct selector labels
    7type: lemma
    8---
    9The linear variation of a point input when a single base block varies.
    10For distinct labels the two direction spaces are independent, because
    11the empty selector and a separating singleton selector recover both
    12sets of input coefficients. This is the geometric input to the ordered
    13binary mixer tests in Lemma 5.5.
    14-/
    15
    16namespace Lax342547.AtomDirections
    17
    18open Lax342547.MomentSpace Lax342547.TagGeometry Lax342547.ConcreteGeometry
    19
    20noncomputable def blockDirections {k n b degree : ℕ} (s : Fin b → Binary)
    21 (c : Fin n → Base k n) : Matrix (Coordinate k n b degree) (Fin n) Binary := by
    22 classical
    23 exact fun i j => if i.2 = some (c j) then selectorEval s i.1 else 0
    24
    25noncomputable def varyBlock {k n : ℕ} (z : Base k n → Binary) (c : Fin n → Base k n)
    26 (v : Fin n → Binary) : Base k n → Binary := by
    27 classical
    28 exact fun i => z i + ∑ j, if c j = i then v j else 0
    29
    30axiom point_varyBlock {k n b degree : ℕ} (s : Fin b → Binary) (z : Base k n → Binary)
    31 (c : Fin n → Base k n) (v : Fin n → Binary) :
    32 point (selectorEval (degree := degree)) s (varyBlock z c v) =
    33 point selectorEval s z + (blockDirections s c).mulVec v
    34
    35axiom blockDirections_injective {k n b degree : ℕ} (s : Fin b → Binary)
    36 (c : Fin n → Base k n) (hc : Function.Injective c) :
    37 Function.Injective (blockDirections (degree := degree) s c).mulVec
    38
    39axiom distinct_directions_injective {k n b degree : ℕ} (hd : 1 ≤ degree)
    40 (s t : Fin b → Binary) (hst : s ≠ t) (c : Fin n → Base k n) (hc : Function.Injective c) :
    41 Function.Injective (Matrix.fromCols (blockDirections (degree := degree) s c)
    42 (blockDirections t c)).mulVec
    43
    44end Lax342547.AtomDirections
    45
    Show ProofShow ProofShow Proof

    Discussion

    Ask a question or add context. Endorsements and structured flags are kept in the review panel above.

    Loading discussion…