Skip to content

Property and metamorphic test suite (2/4, landing #24 on main) - #27

Merged
Autoplectic merged 5 commits into
mainfrom
sofic-correctness-2
Oct 7, 2026
Merged

Autoplectic merged 5 commits into
mainfrom
sofic-correctness-2

Conversation

@Autoplectic

Copy link
Copy Markdown
Member

#24 merged into sofic-correctness-2 after #23 had already merged into main, so its commits never reached main. This PR lands them; the diff is exactly #24's content.

  • Property and metamorphic test suite (tests/test_properties_*.py) and the bugs it found.
  • Bidirectional joint-class choice no longer depends on float round-off (it chose a wrong class on x86-64).
  • CI tests with the symbolic extra, plus one test-without-symbolic job.

See #24 for the full description and its green CI. After this merges, retarget #25 to main, then #26 after #25.

Ryan James and others added 5 commits October 7, 2026 01:48
Adds tests/test_properties_*.py: shifts, generators, inference, automata
(DFA/NFA, Büchi, Wheeler, VPA/NWA, transducers, learners), serialization, viz
and examples, checked against brute-force oracles and invariants.

Fixes found by the suite: Fischer cover on reducible shifts, Parry measure
transient states, TikZ newlines, from_hmm beyond 26 causal states,
word_probability below 1e-15, backward(normalize=True) final row, complete()
reusing an accepting trap after complement. reverse_is_finite is documented as
mixed-state finiteness; experimental reverse_epsilon_machine_is_finite decides
the recurrent question, and reversal warns on numeric truncation. YAML uses
libyaml's C loader/dumper when available.

Co-authored-by: Cursor <cursoragent@cursor.com>
Two closed joint classes matched the forward/reverse marginals and tied on the
anatomy gap up to round-off; exact float comparison picked the wrong one on
x86-64 (E = 1.0 instead of the brute-force 1.5), failing CI on Linux and Windows.

Co-authored-by: Cursor <cursoragent@cursor.com>
The test matrix installed only the test extra, so every sympy-dependent test
was skipped. Install symbolic across the matrix, and keep a single Ubuntu job
without it so optional-dependency guards stay covered.

Co-authored-by: Cursor <cursoragent@cursor.com>
Property and metamorphic test suite (2/4)
Every push to a PR branch ran the 16-job workflow twice (push and
pull_request), and force-pushes left stale runs holding runners, so new jobs
queued for hours or failed to be acquired.

Co-authored-by: Cursor <cursoragent@cursor.com>
Sign up for free to 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