ch:univalence: ch:univalence
Problem and invariant. Construct the two-element transport tables required by the seminar. Maintain the invariant that transport along finite equivalences is accepted only when every locally checked premise represented by the finite model holds.
Two representations. One can use forward and inverse maps with laws. The companion instead uses a finite lookup table checked for bijectivity. The first presentation prevents more malformed states; the second keeps each rejection visible and gives a small negative corpus.
First complete version. Validate identity, validate swap, apply each table to both elements, then reject a constant table. After each stage, add one positive case and one nearby malformed case before extending the syntax.
Observable result. The accepted corpus prints four named PASS lines and then All 4 univalence-transport-simulator cases passed. A rejected input is represented by a false decision or None; the main oracle negates that result when rejection is expected.
A failing version. Declare every two-row table bijective. This mutation still typechecks, but changes at least one named oracle, so the inline test harness exits nonzero.
Acceptance test. Run the four commands in appendix E. Require a silent check, one passing inline test, the exact five-line run transcript, and an empty audit. Restore the accepted source after replaying the mutation and repeat all four commands.
Mathematical boundary. The program decides the finite representation and cases just described. It does not prove the chapter’s general theorem; that proof remains the local argument or exact import in the main text.