pith. machine review for the scientific record. sign in
def

Z_of_window

definition
show as:
view math explainer →
module
IndisputableMonolith.Streams
domain
Streams
line
17 · github
papers citing
none yet

open explainer

Read the cached plain-language explainer.

open lean source

IndisputableMonolith.Streams on GitHub at line 17.

browse module

All declarations in this module, on Recognition.

explainer page

A cached Ask Recognition explainer exists for this declaration.

open explainer

depends on

used by

formal source

  14def Pattern (n : Nat) := Fin n → Bool
  15
  16/-- Integer functional `Z` counting ones in a finite window. -/
  17def Z_of_window {n : Nat} (w : Pattern n) : Nat :=
  18  ∑ i : Fin n, (if w i then 1 else 0)
  19
  20lemma Z_of_window_nonneg {n : Nat} (w : Pattern n) : 0 ≤ Z_of_window w := by
  21  unfold Z_of_window
  22  apply Finset.sum_nonneg
  23  intro i _
  24  split <;> decide
  25
  26@[simp] lemma Z_of_window_zero (w : Pattern 0) : Z_of_window w = 0 := by
  27  simp [Z_of_window]
  28
  29/-- The cylinder set of streams whose first `n` bits coincide with the window `w`. -/
  30def Cylinder {n : Nat} (w : Pattern n) : Set Stream :=
  31  { s | ∀ i : Fin n, s i.val = w i }
  32
  33@[simp] lemma mem_Cylinder_zero (w : Pattern 0) (s : Stream) : s ∈ Cylinder w := by
  34  intro i; exact (Fin.elim0 i)
  35
  36@[simp] lemma Cylinder_zero (w : Pattern 0) : Cylinder w = Set.univ := by
  37  ext s; constructor
  38  · intro _; exact Set.mem_univ _
  39  · intro _; exact (mem_Cylinder_zero w s)
  40
  41/-- Periodic extension of an 8‑bit window. -/
  42def extendPeriodic8 (w : Pattern 8) : Stream := fun t =>
  43  let h8 : 0 < 8 := by decide
  44  let i : Fin 8 := ⟨t % 8, Nat.mod_lt _ h8⟩
  45  w i
  46
  47@[simp] lemma extendPeriodic8_zero (w : Pattern 8) : extendPeriodic8 w 0 = w ⟨0, by decide⟩ := by