Polymorphisms of relations #
An operation preserves a relation when its coordinatewise application to tuples in that relation again belongs to the relation. Relations are ordinary sets of functions, so the coordinate and operation index types need not be finite. Empty index types include nullary relations and operations. For finite nonempty index types this is [Che06], Definition 3.10; allowing arbitrary index types also includes infinitary and nullary operations and relations.
Preservation passes to conjunctions, variable substitutions and existential projections. These are the elementary preservation rules underlying primitive-positive definitions; no converse definability or complexity theorem is asserted here.
Main definitions #
Cslib.Logic.IsPolymorphism: coordinatewise preservation of a relation by an operation.
Main results #
Cslib.Logic.IsPolymorphism.iInter: preservation of conjunctions.Cslib.Logic.IsPolymorphism.substitute: preservation after variable substitution.Cslib.Logic.IsPolymorphism.project: preservation after existential projection.
References #
- H. Chen, A Rendezvous of Logic, Complexity, and Algebra, Definition 3.10 and the preservation direction of Theorem 3.13 (arXiv version 1, pp. 8–10).
Every projection operation preserves every relation.
Composing polymorphisms yields another polymorphism of the same relation.
An operation preserves a conjunction of relations if it preserves every conjunct.
Substituting variables, including repeated variables, preserves polymorphisms.
Existentially projecting coordinates preserves polymorphisms. The map p may also repeat
coordinates; equality constraints are thereby included.
A nullary constant operation preserves exactly the relations containing its constant tuple. In particular an empty relation is not preserved by a nullary operation.