Cylindric algebras #
This file defines cylindric algebras. A cylindric algebra of dimension ι is a Boolean algebra
with a cylindrification cyl i for each i : ι and a diagonal element diag i j for each
pair of indices. Cylindrification is the algebraic form of existential quantification over the
i-th variable and the diagonal is the algebraic form of the equation between the i-th and
j-th variables, so cylindric algebras stand to first-order logic with equality as Boolean
algebras stand to propositional logic.
Predicates on assignments ι → E form a cylindric algebra, where cyl i p holds of g when p
holds of some i-variant of g and diag i j holds of g when g i = g j. The existential
quantifiers and identity conditions of the assignment-based dynamic systems are these operations.
Main definitions #
CylindricAlgebra ι A: the cylindrifications and diagonal elements on a Boolean algebraA.CylindricAlgebra.cylClosure: cylindrification as a closure operator.CylindricAlgebra.dimSet: the dimension set of an element, the indices it depends on.CylindricAlgebra.subst: substitution of thej-th variable for thei-th.
Main results #
CylindricAlgebra.disjoint_cyl_comm: cylindrification is conjugate to itself.CylindricAlgebra.cyl_sup: cylindrification distributes over joins.CylindricAlgebra.subst_compl,CylindricAlgebra.subst_sup,CylindricAlgebra.subst_inf: substitution is a Boolean endomorphism.CylindricAlgebra.diag_comm: diagonal elements are symmetric.CylindricAlgebra.subst_apply: on predicates, substitution evaluates the predicate at the assignment updated atiwith the value atj.CylindricAlgebra.dimSet_subset_of_dependsOn: a predicate that depends only on the variables inshas its dimension set insides.
Implementation notes #
CylindricAlgebra ι A is a mixin over [BooleanAlgebra A] rather than an extension of it, as
Module R M is over [AddCommMonoid M]: the dimension ι could not be inferred from a parent
projection to BooleanAlgebra A.
The concrete algebra is carried both by predicates (ι → E) → Prop with the pointwise Boolean
algebra and by Set (ι → E). The set algebra is defined on Set directly rather than transported
from the predicate algebra, so that it agrees reducibly with the condition algebra of every
register structure (DynamicSemantics.RegisterStructure.cylindricAlgebra) at the canonical one.
References #
The cylindrifications cyl i and diagonal elements diag i j of a cylindric algebra of
dimension ι on the Boolean algebra A, with the seven axioms of [HMT71].
- cyl : ι → A → A
Cylindrification along the index
i. - diag : ι → ι → A
The diagonal element of the indices
iandj. - cyl_bot (i : ι) : cyl i ⊥ = ⊥
- diag_self (i : ι) : diag i i = ⊤
Instances
Cylindrification #
Cylindrification along i as a closure operator. Its closed elements are the elements that
do not depend on the i-th variable.
Equations
- CylindricAlgebra.cylClosure i = ClosureOperator.mk' (CylindricAlgebra.cyl i) ⋯ ⋯ ⋯
Instances For
The complement of a cylinder is a cylinder.
Cylindrification is conjugate to itself.
Dimension sets #
The dimension set of x is the set of indices along which cylindrification moves x. For a
formula these are its free variables.
Equations
- CylindricAlgebra.dimSet x = {i : ι | CylindricAlgebra.cyl i x ≠ x}
Instances For
Diagonal elements and substitution #
Substitution of the j-th variable for the i-th constrains the two to agree and then
forgets the i-th. Substituting a variable for itself does nothing.
Equations
- CylindricAlgebra.subst i j x = if i = j then x else CylindricAlgebra.cyl i (CylindricAlgebra.diag i j ⊓ x)
Instances For
Substitution commutes with complement. Off the diagonal, this is the content of the seventh cylindric axiom.
Substitution for a variable that x does not depend on leaves x unchanged.
The cylindric algebra of predicates on assignments #
Predicates on assignments form a cylindric algebra, in which cyl i p holds of g when p
holds of some i-variant of g, and diag i j holds of g when g i = g j.
Equations
- One or more equations did not get rendered due to their size.
Substituting the j-th variable for the i-th evaluates the predicate at the assignment
whose i-th value is overwritten by its j-th value.
Sets of assignments form the cylindric set algebra of [HMT71], the algebra
of predicates under Set's order.
Equations
- One or more equations did not get rendered due to their size.