Classical.Structures.Interpret¶
Interpretation congruence β the one shared Ξ·-bridge primitive¶
This is the Classical.Structures.Interpret module of the Agda Universal Algebra Library.
Every <Structure>-Op module must bridge two views of an operation applied to
arguments: the term-interpretation form β¦ node f args β§ β¨$β© Ξ·, in which the
arguments arrive as a tuple ArityOf π f β π, and the curried form
(β¦ s β§ β¨$β© Ξ·) β (β¦ t β§ β¨$β© Ξ·), in which they arrive one at a time. Under
--cubical-compatible the two argument-tuples agree pointwise but not
definitionally (no Ξ· on Fin n-pattern lambdas), so the bridge is a cong over
the interpretation function with a pointwise witness.
The only signature-generic content of that bridge is the congruence step itself:
interp-cong below. It is symbol-agnostic and arity-agnostic, takes no arity
proof, and carries no subst. It is the common core of β-cong (binary
congruence) and of every interp-nodeβ lemma.
Per-structure convention (normative). Each <Structure>-Op module defines its
own named interp-nodeβ family β interp-nodeβ (binary), interp-nodeβ
(nullary, for an identity element Ξ΅-Op), interp-nodeβ»ΒΉ (unary, for an inverse
β»ΒΉ-Op) β over its own signature's terms, each a one-liner delegating to
interp-cong. These cannot be pulled into this module: their statements mention
the concrete operation symbols of a particular signature, and node f (pair s t)
only type-checks when ArityOf π f reduces definitionally to Fin 2, which holds
only at a concrete signature. Stating the binary case generically would force a
refl-match of the neutral ArityOf π f against Fin 2, rejected by the
without-K unifier. Hence: the congruence is shared here; the family is named
per signature. See ADR-002 v2 Β§1, Β§5.
interp-cong π¨ f uβv says: applying the π¨-interpretation of f to two
argument-tuples that agree pointwise yields setoid-equal results. The proof is
Func.cong (Interp π¨) fed the β¨ π β©-equivalence (β‘.refl , uβv) β a refl on
the operation-symbol component (same symbol) paired with the pointwise argument
witness.
module _ (π¨ : Algebra Ξ± Ο) where open Setoid π»[ π¨ ] using ( _β_ ) interp-cong : (f : OperationSymbolsOf π) {u v : ArityOf π f β π[ π¨ ]} β (β i β u i β v i) β (f ^ π¨) u β (f ^ π¨) v interp-cong f uβv = cong (Interp π¨) (β‘.refl , uβv)