Skip to content

Add tent-map ε-machine for the preimage-refined partition - #4

Open
Autoplectic wants to merge 1 commit into
mainfrom
cursor/tent-map-preimage-partition-example
Open

Add tent-map ε-machine for the preimage-refined partition#4
Autoplectic wants to merge 1 commit into
mainfrom
cursor/tent-map-preimage-partition-example

Conversation

@Autoplectic

Copy link
Copy Markdown
Member

Summary

The tent-map examples currently read the Misiurewicz-point dynamics through the two-letter kneading partition, split only at the critical point c = 1/2. This adds the natural companion: refining by both order-1 preimages of c (L = 1/(2a) and R = 1 - 1/(2a)) gives a four-letter generating partition and a five-state ε-machine for the same dynamics.

Having both makes the partition-dependence of the anatomy directly comparable. Both presentations are generating, so both have entropy rate log2(a); only the split differs, and the refined one has r_mu = 0.

New in sofic/examples/epsilon_machines.py, exported from sofic.examples:

  • tent_map_misiurewicz_preimage_forward(a=None) — the five-state, four-letter ε-machine
  • tent_map_misiurewicz_preimage_symbol_matrices(a=None) — the underlying T^(x) matrices
  • tent_map_misiurewicz_preimage_information_expected(a=None) — closed-form anatomy

Exact probabilities

Rather than tabulating floats, the machine was derived in Q(a) from the exact interval Markov chain on the forward-orbit closure of {c, L, R}, enumerating belief states with exact arithmetic. Reducing by the parameter's minimal polynomial a**3 = 2a + 2 collapses every transition to a quadratic in a with rational coefficients:

EdgeProbability
A →2 A(a² − 2)/2
A →3 B(4 − a²)/2
B →0 D(a² − 2a + 2)/6
B →1 A(4 + 2a − a²)/6
C →2 E(2 + a − a²)/2
C →3 B(a² − a)/2
D →1 C, E →2 C1

Unlike the kneading presentation, which carries denominators such as 2a² + 4a + 2, none of these has an a-dependent denominator, and the rows normalize identically in a rather than only at the root.

Vanishing ephemeral information

r_mu = 0 here is structural, not a numerical 2e-16. The machine is unifilar, no two edges share both a source and a target, and every branch leads to a state with a distinguishable future, so the past and the future together always name the emitted symbol. The docstring records the argument. The process remains strictly sofic — infinite Markov and cryptic order.

Citations

James, Burke & Crutchfield (2013) is cited for the map, the Misiurewicz parameter and the anatomy framework, but that paper's supplement figures cover only the kneading partition. The docstrings and module header state explicitly that this presentation is derived from the interval Markov chain rather than reproduced from a figure, per the repo's literature-reference rule.

Test plan

  • Six cases in tests/test_information_anatomy.py: topology and closed-form probabilities, stationary distribution, the nine forbidden two-blocks, entropy rate agreeing with the kneading partition, and the vanishing r_mu
  • Two cases in tests/test_symbolic_hmm.py: rows sum to one identically for a free symbol, and substituting the root reproduces the numeric machine
  • Full suite: 893 passed
  • ruff check / ruff format --check clean
  • ty check at its 160-diagnostic baseline (no new diagnostics)
  • sphinx-build -W --keep-going succeeds

Made with Cursor

The existing tent-map examples read the Misiurewicz-point dynamics through
the two-letter kneading partition, split only at the critical point.
Refining by both order-1 preimages of the critical point gives a four-letter
generating partition and a five-state ε-machine for the same dynamics, which
is the natural companion for comparing how the anatomy split depends on the
partition: both presentations share the entropy rate log2(a), but the refined
one has r_mu = 0.
Probabilities are derived in Q(a) from the exact interval Markov chain on the
forward-orbit closure of {c, L, R}. Reducing by the minimal polynomial
a**3 = 2a + 2 leaves every transition a quadratic in a with rational
coefficients, so unlike the kneading presentation none carries an a-dependent
denominator, and the rows normalize identically rather than only at the root.
The 2013 supplement figures cover only the kneading partition, so the
docstrings cite James et al. for the map, parameter and anatomy framework
while stating that this presentation is derived rather than reproduced.
Co-authored-by: Cursor <cursoragent@cursor.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@Autoplectic