Coarse-graining support: Support.Geometry.TriadicPartition #
Imported from the Apache-2.0 CoarseGraining development at commit
c7ddd76c08ade64fed1b8d2ca51be14dfee8deb4.
@[simp]
@[simp]
theorem
HCPolySupport.cubeScaleFactor_childCube
{d : ℕ}
(Q : TriadicCube d)
(digits : Fin d → Fin 3)
:
theorem
HCPolySupport.openCubeSet_childCube_subset
{d : ℕ}
(Q : TriadicCube d)
(digits : Fin d → Fin 3)
:
Translating a depth-n descendant by parent cube indices requires the
integer shift to be multiplied by 3^n, because each descendant step lowers
the physical scale by a factor of three.
Equations
- HCPolySupport.descendantTranslationShift n z i = 3 ^ n * z i
Instances For
@[simp]
theorem
HCPolySupport.childCubes_translateCube
{d : ℕ}
(z : Fin d → ℤ)
(Q : TriadicCube d)
:
childCubes (translateCube z Q) = Finset.image (translateCube fun (i : Fin d) => 3 * z i) (childCubes Q)
theorem
HCPolySupport.disjoint_childCubes_of_ne
{d : ℕ}
{Q R : TriadicCube d}
(hQR : Q ≠ R)
:
Disjoint (childCubes Q) (childCubes R)
@[simp]
@[simp]
theorem
HCPolySupport.descendantsAtDepth_translateCube
{d : ℕ}
(z : Fin d → ℤ)
(Q : TriadicCube d)
(n : ℕ)
:
descendantsAtDepth (translateCube z Q) n = Finset.image (translateCube (descendantTranslationShift n z)) (descendantsAtDepth Q n)
theorem
HCPolySupport.exists_descendant_ancestor_at_depth
{d : ℕ}
{Q R : TriadicCube d}
(m n : ℕ)
(hR : R ∈ descendantsAtDepth Q (m + n))
:
∃ U ∈ descendantsAtDepth Q m, R ∈ descendantsAtDepth U n
Converse to descendant-depth transitivity: a depth m + n descendant
factors through a depth-m ancestor.
theorem
HCPolySupport.descendantsAtDepth_nonempty
{d : ℕ}
(Q : TriadicCube d)
(n : ℕ)
:
(descendantsAtDepth Q n).Nonempty
theorem
HCPolySupport.descendantsAtScale_eq_descendantsAtDepth
{d : ℕ}
(Q : TriadicCube d)
{k : ℤ}
(hk : k ≤ Q.scale)
:
theorem
HCPolySupport.descendantsAtScale_eq_empty
{d : ℕ}
(Q : TriadicCube d)
{k : ℤ}
(hk : Q.scale < k)
:
theorem
HCPolySupport.descendantsAtScale_translateCube
{d : ℕ}
(z : Fin d → ℤ)
(Q : TriadicCube d)
{k : ℤ}
(hk : k ≤ Q.scale)
:
descendantsAtScale (translateCube z Q) k = Finset.image (translateCube (descendantTranslationShift (Q.scale - k).toNat z)) (descendantsAtScale Q k)
@[simp]
theorem
HCPolySupport.mem_descendantsAtScale_iff
{d : ℕ}
{Q R : TriadicCube d}
{k : ℤ}
(hk : k ≤ Q.scale)
:
theorem
HCPolySupport.descendantsAtScale_nonempty
{d : ℕ}
(Q : TriadicCube d)
{k : ℤ}
(hk : k ≤ Q.scale)
:
(descendantsAtScale Q k).Nonempty
theorem
HCPolySupport.not_mem_descendantsAtScale_of_lt
{d : ℕ}
{Q R : TriadicCube d}
{k : ℤ}
(hk : Q.scale < k)
:
R ∉ descendantsAtScale Q k
theorem
HCPolySupport.child_scale_of_mem_childCubes
{d : ℕ}
{Q R : TriadicCube d}
(hR : R ∈ childCubes Q)
:
theorem
HCPolySupport.parent_scale_of_mem_childCubes
{d : ℕ}
{Q R : TriadicCube d}
(hR : R ∈ childCubes Q)
:
theorem
HCPolySupport.cubeSet_subset_of_mem_childCubes
{d : ℕ}
{Q R : TriadicCube d}
(hR : R ∈ childCubes Q)
:
theorem
HCPolySupport.openCubeSet_subset_of_mem_childCubes
{d : ℕ}
{Q R : TriadicCube d}
(hR : R ∈ childCubes Q)
:
openCubeSet R ⊆ openCubeSet Q
theorem
HCPolySupport.disjoint_cubeSet_childCube_of_ne
{d : ℕ}
(Q : TriadicCube d)
{digits₁ digits₂ : Fin d → Fin 3}
(hneq : digits₁ ≠ digits₂)
:
theorem
HCPolySupport.disjoint_cubeSet_of_ne_mem_childCubes
{d : ℕ}
{Q R S : TriadicCube d}
(hR : R ∈ childCubes Q)
(hS : S ∈ childCubes Q)
(hneq : R ≠ S)
:
theorem
HCPolySupport.pairwiseDisjoint_childCubes
{d : ℕ}
(Q : TriadicCube d)
:
(↑(childCubes Q)).PairwiseDisjoint cubeSet
theorem
HCPolySupport.pairwiseDisjoint_descendantsAtDepth
{d : ℕ}
(Q : TriadicCube d)
(n : ℕ)
:
(↑(descendantsAtDepth Q n)).PairwiseDisjoint cubeSet
theorem
HCPolySupport.cubeSet_subset_of_mem_descendantsAtDepth
{d : ℕ}
{Q R : TriadicCube d}
{n : ℕ}
:
R ∈ descendantsAtDepth Q n → cubeSet R ⊆ cubeSet Q
theorem
HCPolySupport.openCubeSet_subset_of_mem_descendantsAtDepth
{d : ℕ}
{Q R : TriadicCube d}
{n : ℕ}
:
R ∈ descendantsAtDepth Q n → openCubeSet R ⊆ openCubeSet Q
theorem
HCPolySupport.cubeSet_subset_of_mem_descendantsAtScale
{d : ℕ}
{Q R : TriadicCube d}
{k : ℤ}
(hk : k ≤ Q.scale)
(hR : R ∈ descendantsAtScale Q k)
:
theorem
HCPolySupport.scale_eq_sub_of_mem_descendantsAtDepth
{d : ℕ}
{Q R : TriadicCube d}
{n : ℕ}
:
theorem
HCPolySupport.cubeScaleFactor_descendant_eq_div_pow
{d : ℕ}
{Q R : TriadicCube d}
{n : ℕ}
(hR : R ∈ descendantsAtDepth Q n)
:
theorem
HCPolySupport.exists_mem_childCubes_of_mem_cubeSet
{d : ℕ}
{Q : TriadicCube d}
{x : Vec d}
(hx : x ∈ cubeSet Q)
:
∃ R ∈ childCubes Q, x ∈ cubeSet R
theorem
HCPolySupport.cubeSet_subset_iUnion_childCubes
{d : ℕ}
(Q : TriadicCube d)
:
cubeSet Q ⊆ ⋃ R ∈ ↑(childCubes Q), cubeSet R
theorem
HCPolySupport.iUnion_childCubes_subset_cubeSet
{d : ℕ}
(Q : TriadicCube d)
:
⋃ R ∈ ↑(childCubes Q), cubeSet R ⊆ cubeSet Q
theorem
HCPolySupport.exists_mem_descendantsAtDepth_of_mem_cubeSet
{d : ℕ}
{Q : TriadicCube d}
{x : Vec d}
(n : ℕ)
:
x ∈ cubeSet Q → ∃ R ∈ descendantsAtDepth Q n, x ∈ cubeSet R
theorem
HCPolySupport.cubeSet_subset_iUnion_descendantsAtDepth
{d : ℕ}
(Q : TriadicCube d)
(n : ℕ)
:
cubeSet Q ⊆ ⋃ R ∈ ↑(descendantsAtDepth Q n), cubeSet R
theorem
HCPolySupport.iUnion_descendantsAtDepth_subset_cubeSet
{d : ℕ}
(Q : TriadicCube d)
(n : ℕ)
:
⋃ R ∈ ↑(descendantsAtDepth Q n), cubeSet R ⊆ cubeSet Q
theorem
HCPolySupport.cubeSet_subset_iUnion_descendantsAtScale
{d : ℕ}
(Q : TriadicCube d)
{k : ℤ}
(hk : k ≤ Q.scale)
:
cubeSet Q ⊆ ⋃ R ∈ ↑(descendantsAtScale Q k), cubeSet R
theorem
HCPolySupport.iUnion_descendantsAtScale_subset_cubeSet
{d : ℕ}
(Q : TriadicCube d)
{k : ℤ}
(hk : k ≤ Q.scale)
:
⋃ R ∈ ↑(descendantsAtScale Q k), cubeSet R ⊆ cubeSet Q
theorem
HCPolySupport.cubeSet_eq_iUnion_descendantsAtScale
{d : ℕ}
(Q : TriadicCube d)
{k : ℤ}
(hk : k ≤ Q.scale)
:
theorem
HCPolySupport.pairwiseDisjoint_descendantsAtScale
{d : ℕ}
(Q : TriadicCube d)
{k : ℤ}
(hk : k ≤ Q.scale)
:
(↑(descendantsAtScale Q k)).PairwiseDisjoint cubeSet