Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Limits

This chapter collects the boundaries established by the preceding chapters. Each result is relative to declared laws, asserted equations, implemented search procedures, and the evidence named below.

Saturation is a fixpoint of the selected rules

Chapter 8’s fixpoint contains what the declarations and selected rules derive. An omitted domain law remains unavailable. A passing disequality check says that the selected procedure did not derive equality; it is not a theorem of semantic inequality.

An algebraic declaration is an assertion

Chapter 4’s tags cause Semper to enforce the listed laws, but Semper does not prove that the modeled operator satisfies them. Structural declaration invariants, including equal argument and result sorts for associative operators, are checked separately.

Inverse and cancellative reasoning are narrow

Chapter 4 defines the current behavior. :inverse cancels represented inverse pairs and :cancellative contributes inference during AC completion. Pairs exposed only after later merges can require completion, and the tags do not derive double inverse, inverse distribution, or normalized signed coefficients.

Completion is opt-in and operational

Chapter 11’s eager and lazy completion can stop at a growth or alternation budget. An unchanged implemented round is an operational fixpoint, not an unconditional completeness theorem. Lazy completion serves equality checks and restores its transaction before anti-unification; Chapter 16 measures the resulting difference.

AC matching is maximum-partition matching

Chapter 5’s scalar variables bind complete stored children and their multiplicities. They do not range over implicit sub-sums or split one stored multiplicity among several scalar variables. The implemented relation is a specialization of classical AC matching, not a complete implementation of it. Chapter 5 lists what matching does and does not reach over A, C, AC, and ACI nodes, including :flatten views and the subsets a sequence filter gives up.

AU optimality has three qualifications

As Chapters 14 and 16 show, :completion exact certifies the minimum under the (size, variant_mass) objective, over the equalities in the current e-graph snapshot, and within the derivations admitted by the selected cycle policy. Changing any of those three inputs can change the result.

The production solver is not machine-verified

The au-verus crate proves objective and recurrence lemmas, not end-to-end refinement of the Rust solver. Its lemmas do not prove that the recurrence value equals the optimum. Pair-cycle erasure, AC and ACI transport, and global optimality retain prose arguments plus finite oracle and regression evidence. Chapter 16 and the AU correctness plan state the boundary.

checkau and :cr are measurements

Chapter 12 defines both fields. checkau asserts only that the result is no larger than :max_size; it does not assert an exact size. For e-classes, :cr compares against independently smallest representatives while search may select larger terms, so it can exceed one.

Agreement is not evidence of correctness

Chapter 17 explains the correlated-error case. Samples can share the same mistake, especially when one model and prompt produced all of them. Clustering then reports agreement at that position because there is no disagreement to localize.

The smallest result need not be the clearest explanation

Chapter 16 demonstrates the objective’s preference for a smaller common representation, and Chapter 22 shows one connective change through two identity elements. A presentation layer may need to regroup markers into domain-facing decisions.

Surface clustering is quadratic

Chapter 18 uses n(n - 1) / 2 equality checks because Semper has no clustering command. That grid is practical for the three-to-five-sample workflow in this book. Larger collections require host code to group e-class identifiers.

A solver’s arithmetic is its own

Semper checks every number it hands a solver against that solver’s range, but ASP and MiniZinc criteria compute inside the solver, and clasp, clingo, Chuffed, and COIN-BC were measured giving wrong optima, with no error, on values past their ranges. A cost function that overflows the solver’s number representation is the author’s responsibility; Number ranges lists each solver’s range and the solvers to use for large costs.

The application evidence is limited

The examples in Part IV are constructed cases. The repository’s formalizer pilot uses one system to produce both readings and explicitly reports an optimistic bound. It does not measure independent formalizers or population error rates.

Anti-unification does not adjudicate

Chapter 12 defines an anti-unifier as a shared skeleton with alternatives. Schema validation, tests, domain facts, or a person must decide which alternative should be enforced.