Repository navigation
refactor(functional-graph): define cycleSet via periodicOrbit, deduplicate Spectrum, and add simp lemmas (#614) - #781
Conversation
…icate Spectrum, and add simp lemmas (#614)
|
Independent coordinator verdict — coordinator-reviewer-codex-20261023 (not Samuel): APPROVED at exact head The new cycleSet is the same finite set: periodicOrbit enumerates the iterates of the periodic entry up to its minimal period, and converting to a Finset gives the old image over the cycle length. Both old and new definitions remain noncomputable. Finite-type/universe assumptions and pointwise empty/singleton behavior are preserved. Periodic/injective helpers and the moved congruence lemmas retain their contracts; Spectrum’s canonical-time proof keeps the required transient lower bound and congruence orientation. The forest rename preserves its entire telescope/proof, with all clients updated and no alias. The 245 retained public headers are unchanged; the two additions and three advertised unused convenience deletions match the intended scope. New simp rules reduce iterates or membership structure without an inverse rewrite cycle; they are on public theorems. Source credit, finite-layout/algorithm claims and headline abstracts are unchanged. No new executable or benchmark claim is made. Actual merge base is |
Part of #614 (Item C2: FunctionalGraph remainder after #661, announced on #587).
Summary
Complexity/Foundations/Combinatorics/FunctionalGraph.lean:transientDepth_eq_zero_of_mem_periodicPtsandcycleLength_eq_minimalPeriod_of_mem_periodicPts(replacing 4 in-place re-derivations acrossCircuit/Boolean/Iteration).transientDepth_iterate@[simp].Complexity/Foundations/Combinatorics/FunctionalGraph/Cycle.lean&HittingTime.lean:cycleSetviaperiodicOrbit:(periodicOrbit f (f^[transientDepth f x] x)).toFinset.mem_cycleSet_iff(exact Multiset.mem_toFinset) and marksmem_cycleSet_iff,cycleLength_iterate,cycleSet_iterate,canonicalCycle_iterate, andphase_iterate@[simp].iterate_eq_iterate_iff_modEqandtransientDepth_le_canonicalTimefromHittingTime.leanintoCycle.leanso bothHittingTime.leanandSpectrum.leanreuse them directly.*_iterateandmem_*lemmas@[simp]acrossFunctionalGraph:Projection.lean:cycleProjection_iterateActive.lean:mem_activeVerticesCheckpointForest.lean:mem_checkpointHull,mem_forestSources,mem_forestChildren,mem_forestRoots,mem_forestLeaves,mem_forestBranches,mem_forestMarksForestIntervals.lean:mem_forestTrace,mem_forestPath,mem_forestDescendantRanksComplexity/Foundations/Combinatorics/FunctionalGraph/Spectrum.lean:cycleLength_le_card,card_add_mod_lt, andminimalPeriod_iterate_card.transientDepth_eq_zero_of_injectiveandcycleLength_eq_minimalPeriod_of_injectivefromtransientDepth_eq_zero_of_mem_periodicPtsandcycleLength_eq_minimalPeriod_of_mem_periodicPts.iterate_eq_canonical_ifffrom 42 lines to 4 lines usingcanonicalTime_spec,iterate_eq_iterate_iff_modEq, andtransientDepth_le_canonicalTime.forest_edges_mergetoforest_edge_interior_inj:ForestSegments.lean,ForestNavigation.lean, andComplexityTests/FunctionalGraph.leanso the theorem name reflects that compressed-edge interiors do not merge (x = y ∧ i = j).Validation & Abstracts
LEAN_NUM_THREADS=4 ./scripts/check.sh(all 6 gates passed)python3 scripts/check_hygiene.py --check-simp(all hygiene checks passed)python3 scripts/check_tidy_surface.py(2,021 statements in 423 modules, matching baseline)python3 scripts/build_abstracts.py --check(no impact on curated headline abstracts)AI disclosure: Authored by
worker-jetski-73aa4b5a(73aa4b5a-fa3d-4195-8024-b19f43bfa557).