Maps of signatures #
A map of signatures φ : σ.Hom τ sends each operation of σ to an operation of τ of the same
arity. It is a map of the operation symbols, unlike cslib's Homomorphism, which maps the carriers
of two interpretations of one signature. Signature.Hom.Preserves asks that φ keep the meaning of
every operation. Circuits and formulas are translated along such maps in
Cslib.Circuits.Circuit.mapOp; word-RAM programs in Cslib.WordRAM.Program.mapOp.
Main definitions #
Cslib.Circuits.Signature.Hom: an arity-preserving map of operations, withHom.idandHom.comp.Cslib.Circuits.Signature.Hom.Preserves: a map of operations keeps their meaning.
Main results #
Cslib.Circuits.Signature.Hom.comp_assoc,Cslib.Circuits.Signature.Hom.id_comp,Cslib.Circuits.Signature.Hom.comp_id: maps of signatures form a category.Cslib.Circuits.Signature.Hom.Preserves.comp: meaning-preserving maps compose.
A map of signatures: an arity-preserving map of operations.
The image of each operation.
Operations keep their arity.
Instances For
The identity map of a signature.
Instances For
φ keeps the meaning of every operation: op means under I what φ op means under J.
- interpret_eq (op : σ.Op) (x : Fin (σ.Arity op) → U) : (J (φ op) fun (a : Fin (τ.Arity (φ op))) => x (Fin.cast ⋯ a)) = I op x
The operation
φ opmeans underJwhatopmeans underI.
Instances
A composition of meaning-preserving maps preserves meaning.