Documentation

LeanPool.HighContrastHomogenization.Support.Geometry.TriadicPartition

Coarse-graining support: Support.Geometry.TriadicPartition #

Imported from the Apache-2.0 CoarseGraining development at commit c7ddd76c08ade64fed1b8d2ca51be14dfee8deb4.

@[simp]
theorem HCPolySupport.childCube_scale {d : ℕ} (Q : TriadicCube d) (digits : Fin d → Fin 3) :
{ scale := Q.scale - 1, index := fun (i : Fin d) => 3 * Q.index i + ↑↑(digits i) - 1 }.scale = Q.scale - 1
theorem HCPolySupport.mem_childCubes_iff {d : ℕ} {Q R : TriadicCube d} :
R ∈ childCubes Q ↔ ∃ (digits : Fin d → Fin 3), R = { scale := Q.scale - 1, index := fun (i : Fin d) => 3 * Q.index i + ↑↑(digits i) - 1 }
theorem HCPolySupport.childCube_parent {d : ℕ} (Q : TriadicCube d) (digits : Fin d → Fin 3) :
parentCube { scale := Q.scale - 1, index := fun (i : Fin d) => 3 * Q.index i + ↑↑(digits i) - 1 } = Q
@[simp]
theorem HCPolySupport.cubeScaleFactor_childCube {d : ℕ} (Q : TriadicCube d) (digits : Fin d → Fin 3) :
cubeScaleFactor { scale := Q.scale - 1, index := fun (i : Fin d) => 3 * Q.index i + ↑↑(digits i) - 1 } = cubeScaleFactor Q / 3
theorem HCPolySupport.cubeSet_childCube_subset {d : ℕ} (Q : TriadicCube d) (digits : Fin d → Fin 3) :
cubeSet { scale := Q.scale - 1, index := fun (i : Fin d) => 3 * Q.index i + ↑↑(digits i) - 1 } ⊆ cubeSet Q
theorem HCPolySupport.openCubeSet_childCube_subset {d : ℕ} (Q : TriadicCube d) (digits : Fin d → Fin 3) :
openCubeSet { scale := Q.scale - 1, index := fun (i : Fin d) => 3 * Q.index i + ↑↑(digits i) - 1 } ⊆ openCubeSet Q
def HCPolySupport.descendantTranslationShift {d : ℕ} (n : ℕ) (z : Fin d → ℤ) :
Fin d → ℤ

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
Instances For

    Converse to descendant-depth transitivity: a depth m + n descendant factors through a depth-m ancestor.

    theorem HCPolySupport.disjoint_cubeSet_childCube_of_ne {d : ℕ} (Q : TriadicCube d) {digits₁ digits₂ : Fin d → Fin 3} (hneq : digits₁ ≠ digits₂) :
    Disjoint (cubeSet { scale := Q.scale - 1, index := fun (i : Fin d) => 3 * Q.index i + ↑↑(digits₁ i) - 1 }) (cubeSet { scale := Q.scale - 1, index := fun (i : Fin d) => 3 * Q.index i + ↑↑(digits₂ i) - 1 })