Supporting results for pointwise provable equality.
Heterogeneous congruence for the evaluator cell #
eval_codeEvaluatorCell_congr_at compares two evaluator cells written at
different arities and read under different assignments. It is the analogue for
codeEvaluatorCell of eval_codeBeta_congr_at, and is proved the same way: a
relation saying that two codes have the same graph, each under its own
assignment, is propagated through every constructor the cell is built from.
Every branch of the eager conditional is treated; none is discarded because its
tag is unused. The derived constructors are delta-reduced as syntax trees only.
No arithmetic meaning is attached to any of them, no totality is asserted, and
the results hold in an arbitrary ORingStructure.
The partial-recursive index layer #
The encoded-list layer #
Two encoded-list lengths agree whenever their list codes do, even at different arities and under different assignments.
Two first Cantor components agree whenever their argument codes do, even at different arities and under different assignments.
Two table lookups agree whenever their four argument codes do, even at different arities and under different assignments.
This is the public form of the private closure above; the chain is not duplicated.
The evaluator-cell branches #
Two evaluator cells agree whenever their table and index codes do, even at different arities and under different assignments.
Every branch of the eager conditional is compared; none is discarded.