OAI/Combinatorics/LowSpaceSubsetSum/Streams/CyclicCursor.lean
21 declarations, 0 contain sorry, 0 declared as axioms
Constant-state cyclic array traversal
The mutable cursor has only a position, remaining length, and direction.
next accesses the shared immutable array once and changes these fields.
trace is an analysis view of repeated advances; it is not retained by the
stream. A complete traversal permutes array occurrences, so equal-valued
items are never lost at a cyclic pivot.
- structure
OAI.LowSpaceSubsetSum.CyclicCursor.Stateline 25 - def
OAI.LowSpaceSubsetSum.CyclicCursor.advanceline 31 - def
OAI.LowSpaceSubsetSum.CyclicCursor.nextline 34 - theorem
OAI.LowSpaceSubsetSum.CyclicCursor.next_eq_none_iffline 38 - theorem
OAI.LowSpaceSubsetSum.CyclicCursor.advance_remainingline 42 - theorem
OAI.LowSpaceSubsetSum.CyclicCursor.advance_reverseline 45 - def
OAI.LowSpaceSubsetSum.CyclicCursor.traceline 48Source documentation
Analysis only: the finite output of a bounded number of advances.
def trace (a : Fin n → α) : ℕ → State n → List α | 0, _ => [] | k + 1, c => if c.remaining = 0 then [] else a c.position :: trace a k (advance c)
Mentions: OAI.LowSpaceSubsetSum.CyclicCursor.State, OAI.LowSpaceSubsetSum.CyclicCursor.advance
- def
OAI.LowSpaceSubsetSum.CyclicCursor.orderline 52 - theorem
OAI.LowSpaceSubsetSum.CyclicCursor.trace_eq_ofFnline 58 - theorem
OAI.LowSpaceSubsetSum.CyclicCursor.forward_trace_eq_rotateline 75 - theorem
OAI.LowSpaceSubsetSum.CyclicCursor.reverse_trace_eq_reverse_forwardline 86 - theorem
OAI.LowSpaceSubsetSum.CyclicCursor.forward_trace_splitline 104 - theorem
OAI.LowSpaceSubsetSum.CyclicCursor.reverse_trace_splitline 112 - theorem
OAI.LowSpaceSubsetSum.CyclicCursor.direct_of_splitline 120 - theorem
OAI.LowSpaceSubsetSum.CyclicCursor.complementary_of_splitline 137 - theorem
OAI.LowSpaceSubsetSum.CyclicCursor.forward_trace_eq_directline 154 - theorem
OAI.LowSpaceSubsetSum.CyclicCursor.reverse_trace_eq_complementaryline 162 - theorem
OAI.LowSpaceSubsetSum.CyclicCursor.full_trace_permline 170 - theorem
OAI.LowSpaceSubsetSum.CyclicCursor.full_trace_array_permline 176 - theorem
OAI.LowSpaceSubsetSum.CyclicCursor.trace_lengthline 186Source documentation
Every stopped traversal reports exactly the consumed number of occurrences.
theorem trace_length (a : Fin n → α) (k : ℕ) (c : State n) (hk : k ≤ c.remaining) : (trace a k c).length = k := by rw [trace_eq_ofFn a k c hk, List.length_ofFn]Mentions: OAI.LowSpaceSubsetSum.CyclicCursor.State, OAI.LowSpaceSubsetSum.CyclicCursor.trace, OAI.LowSpaceSubsetSum.CyclicCursor.trace_eq_ofFn
- theorem
OAI.LowSpaceSubsetSum.CyclicCursor.advance_iterate_remainingline 189