Documentation

Complexitylib.Algebraic.LowerBound.Cutwidth.Extractor.Strong.Block.Recursion.Linearity.Internal

Additivity of finite recursive block maps #

Splitting only reindexes coordinates. Induction therefore transfers the supplied fixed-seed addition laws through precisely the executed levels.

theorem Algebraic.Cutwidth.Extractor.Internal.splitBlockEquiv_add {α : Type u_1} [Add α] {t : ℕ} (x x' : Fin t → α × α) :
(splitBlockEquiv α t) (x + x') = (splitBlockEquiv α t) x + (splitBlockEquiv α t) x'
theorem Algebraic.Cutwidth.Extractor.Internal.condenseSplitMap_add {α : Type u_1} {β : Type u_2} {Fresh : Type u_3} [Add α] [Add β] (C : α → Fresh → β × β) (C_add : ∀ (a b : α) (y : Fresh), C (a + b) y = C a y + C b y) (t : ℕ) (x x' : Fin t → α) (y : Fresh) :
condenseSplitMap C t (x + x') y = condenseSplitMap C t x y + condenseSplitMap C t x' y
theorem Algebraic.Cutwidth.Extractor.Internal.recursiveBlockMap_add {X : Type v} {Earlier : Type u} {Fresh : ℕ → Type u} {α : ℕ → Type w} [Add X] [(i : ℕ) → Add (α i)] {t : ℕ} (initial : X → Earlier → Fin t → α 0) (C : (i : ℕ) → α i → Fresh i → α (i + 1) × α (i + 1)) (n : ℕ) (initial_add : ∀ (x x' : X) (y : Earlier), initial (x + x') y = initial x y + initial x' y) (C_add : ∀ i < n, ∀ (a b : α i) (y : Fresh i), C i (a + b) y = C i a y + C i b y) (x x' : X) (seeds : RecursiveSeeds Earlier Fresh n) :
recursiveBlockMap initial C n (x + x') seeds = recursiveBlockMap initial C n x seeds + recursiveBlockMap initial C n x' seeds
theorem Algebraic.Cutwidth.Extractor.Internal.recursiveBlockExtractor_add {X : Type v} {Earlier : Type u} {Fresh : ℕ → Type u} {α : ℕ → Type w} {Last : Type z} {Ω : Type r} [Add X] [(i : ℕ) → Add (α i)] [Add Ω] (initial : X → Earlier → α 0) (C : (i : ℕ) → α i → Fresh i → α (i + 1) × α (i + 1)) (n : ℕ) (E : α n → Last → Ω) (initial_add : ∀ (x x' : X) (y : Earlier), initial (x + x') y = initial x y + initial x' y) (C_add : ∀ i < n, ∀ (a b : α i) (y : Fresh i), C i (a + b) y = C i a y + C i b y) (E_add : ∀ (a b : α n) (y : Last), E (a + b) y = E a y + E b y) (x x' : X) (seeds : RecursiveSeeds Earlier Fresh n × Last) :
recursiveBlockExtractor initial C n E (x + x') seeds = recursiveBlockExtractor initial C n E x seeds + recursiveBlockExtractor initial C n E x' seeds