Witness atoms and their numerical tester records
Lax342547.WitnessAtoms · concepts/Lax342547/WitnessAtoms.lean · lax-342547
No public endorsements yet.
Loading review…
Sign in with ORCIDNatural Language Statement
Lemma
A witness atom includes an actual allowed base vector and selector label. Its numerical record keeps only the tag and tester summary. These records determine the tester part of every atom-pair gradient entry.
Concept map
Evidence
Lean source view on GitHub
| 1 | import Lax342547.Atoms |
| 2 | import Lax342547.BinaryPrescriptions |
| 3 | |
| 4 | /-! |
| 5 | --- |
| 6 | title: Witness atoms and their numerical tester records |
| 7 | type: lemma |
| 8 | --- |
| 9 | A witness atom includes an actual allowed base vector and selector label. |
| 10 | Its numerical record keeps only the tag and tester summary. These records |
| 11 | determine the tester part of every atom-pair gradient entry. |
| 12 | -/ |
| 13 | |
| 14 | namespace Lax342547.WitnessAtoms |
| 15 | |
| 16 | open Lax342547.MomentSpace Lax342547.TagGeometry Lax342547.ConcreteGeometry |
| 17 | open Lax342547.ConcreteCut Lax342547.Atoms |
| 18 | |
| 19 | structure PointAtom (k n b degree : ℕ) where |
| 20 | tag : Tag k |
| 21 | label : Fin b → Binary |
| 22 | base : Base k n → Binary |
| 23 | supported : ∀ i, i ∉ allowedBase k n tag → base i = 0 |
| 24 | |
| 25 | def PointAtom.vector {k n b degree : ℕ} (x : PointAtom k n b degree) : Vector k n b degree := |
| 26 | point selectorEval x.label x.base |
| 27 | |
| 28 | noncomputable def PointAtom.profile {k n b degree : ℕ} (x : PointAtom k n b degree) : |
| 29 | Profile k n b degree := atom x.tag x.label x.base x.supported |
| 30 | |
| 31 | structure Numerical (k : ℕ) where |
| 32 | tag : Tag k |
| 33 | summary : Option (Tag k × Tag k) → Binary |
| 34 | |
| 35 | def PointAtom.numerical {k n b degree r : ℕ} (hr : 2 * r ≤ n) (x : PointAtom k n b degree) : |
| 36 | Numerical k := ⟨x.tag, testerSummary (degree := degree) hr x.label x.base⟩ |
| 37 | |
| 38 | def Numerical.aTag {k : ℕ} (x : Numerical k) (t : Tag k) : Binary := |
| 39 | ∑ d, x.summary (some (d, t)) |
| 40 | |
| 41 | def Numerical.bTag {k : ℕ} (x : Numerical k) (t : Tag k) : Binary := |
| 42 | if x.tag = t then 0 else x.summary none |
| 43 | |
| 44 | def Numerical.role {k : ℕ} (x : Numerical k) : Binary := ∑ t, x.aTag t |
| 45 | |
| 46 | def testerEntry {k : ℕ} (x y : Numerical k) : Binary := |
| 47 | x.role * y.role + ∑ t, (x.aTag t * y.bTag t + x.bTag t * y.aTag t) |
| 48 | |
| 49 | abbrev ProductIndex (k J : ℕ) := Fin J × Lax342547.CutProfiles.Component (Tag k) × |
| 50 | Lax342547.CutProfiles.Component (Tag k) |
| 51 | |
| 52 | def allowedIndex {k J : ℕ} (x y : Numerical k) (t : ProductIndex k J) : Prop := |
| 53 | x.tag ∈ t.2.1.val ∧ y.tag ∈ t.2.2.val |
| 54 | |
| 55 | axiom tester_properties {k : ℕ} : |
| 56 | (∀ x y : Numerical k, testerEntry x y = testerEntry y x) ∧ |
| 57 | ∀ x : Numerical k, testerEntry x x = x.role |
| 58 | |
| 59 | axiom atom_testers {k n b degree r : ℕ} {hr : 2 * r ≤ n} |
| 60 | (D : Testers (k := k) (b := b) (degree := degree) hr) (x : PointAtom k n b degree) : |
| 61 | D.role x.profile = (x.numerical hr).role ∧ |
| 62 | (∀ t, D.aTag t x.profile = (x.numerical hr).aTag t) ∧ |
| 63 | ∀ t, D.bTag t x.profile = (x.numerical hr).bTag t |
| 64 | |
| 65 | axiom allowed_index {k J : ℕ} (hk : 0 < k) (hJ : 0 < J) (x y : Numerical k) : |
| 66 | ∃ t : ProductIndex k J, allowedIndex x y t |
| 67 | |
| 68 | end Lax342547.WitnessAtoms |
| 69 |
From Mathlib
none
Discussion
Ask a question or add context. Endorsements and structured flags are kept in the review panel above.
0 comments