An abstract Dialect represents a semantic view over the representation-free substrate. For a given dialect, we have:
Object: The type of dialect objects/terms.Obs: The type of observations or results of evaluation.ObsEq: The observational equivalence relation on observations.eval: The dialect's evaluation function.encode: A compiler/encoder mapping dialect objects to substrate terms (ISKSubtype).decode: A decoder mapping substrate quotient classes (InvariantLayer) to observations.preserves: The main coherence/preservation law, showing that decoding the quotient class of an encoded object is observationally equivalent to evaluating the object in the dialect.
- Object : Type
- Obs : Type
- is_equiv : Equivalence self.ObsEq
- encode : self.Object → ISKSubtype
- decode : InvariantLayer → self.Obs