On Binary Constraint Problems

Peter B. Ladkin^{∗} Institut für Informatik Universität Bern Längassstrasse 51 CH-3012 Bern Switzerland

Roger D. Maddux^{†} Department of Mathematics 400 Carver Hall Iowa State University Ames, IA 50011 USA

March 1994

Appeared in: Journal of the ACM, May 1994.

Abstract

The concepts of binary constraint satisfaction problems can be naturally generalized to the relation algebras of Tarski. The concept of path-consistency plays a central role. Algorithms for path-consistency can be implemented on matrices of relations and on matrices of elements from a relation algebra. We give an example of a 4-by-4 matrix of infinite relations on which no iterative local path-consistency algorithm terminates. We give a class of examples over a fixed finite algebra on which all iterative local algorithms, whether parallel or sequential, must take quadratic time. Specific relation algebras arising from interval constraint problems are also studied: the Interval Algebra, the Point Algebra, and the Containment Algebra.

1 Introduction

The logical study of binary relations is classical [8], [9], [51], [52], [56], [53], [54]. Following this tradition, Tarski formulated the theory of binary relations as an algebraic theory called relation algebra [59]^{1}.

Constraint satisfaction problems (CSP’s) are a class of logical problems concerning relations. Traditional constraint problems have been concerned with finite relations [7], [12], [14], [35], [36], [37], [49], [67].

∗Current address: Dept. of Computing Science, University of Stirling, Stirling FK9 4LA, Scotland.

†We wish to thank Giuseppe Scollo of the University of Twente for his extensive commentary on the precursor of this paper, and two anonymous referees for their extensive and helpful critique. The first author wishes to thank Kestrel Institute for initial support of work on binary constraint problems.

1This should not be confused with the algebraic formulation of operations on relational data bases, usually called relational algebra, which bears a closer relationship to cylindric algebra (also formulated by Tarski), as shown in [16].

There has been considerable interest in solving constraint problems involving intervals, stemming from the work of Allen [1] in temporal reasoning. In these problems, the underlying domain of values is infinite, and each constraint is an infinite relation. Allen adapted a constraint propagation algorithm to an infinite domain to help in the analysis of such problems. See [2], [6], [13], [20], [22], [24], [25], [26], [27], [28], [29], [30], [31], [32], [45], [46], [50], [55], [62], [63], [64], and [66].

We formulate CSP concepts and methods using relation algebras. We believe this clarifies the mathematics of binary constraint satisfaction methods, and allows problems with finite or potentially infinite domains to be handled in a uniform way. For example, many results may be proved for finite relation algebras (i.e., those having only finitely many relations) with no cardinality restriction on the size of the domains of the constraint relations. It also allows the study of problems in which the smallest class of relations closed under the usual constraint-manipulation operations is infinite, e.g., the class of union-of-convex interval relations in [21], which cannot easily be handled with traditional methods. One important class of algebras is the class of atomic relation algebras. All finite relation algebras are also atomic, but some atomic algebras are infinite, i.e., they contain infinitely many relations. The assumption of finiteness or atomicity frequently appears in results below. Some of our results have been used in code for binary constraint problem manipulation [55].

Synopsis In Section 2, we introduce binary constraint problems, operations on binary relations, constraint matrices, and path-consistency. Section 3 introduces relation algebras, and formulates the necessary relation algebraic definitions. Sections 2 and 3 contain most of the background material.

Section 4 presents four particular relation algebras. Two of these, the Interval Algebra IA (defined implicitly in [1]) and the Point Algebra PA, are well-known in the interval constraint literature. We prove, in a precise sense, that both the PA and IA have canonical representations on a countable set, to which all other representations are isomorphic. The Containment Algebra CA, a subalgebra of the IA, is introduced, as is the Hard Algebra HA. Both these algebras are used later in examples.

In Section 5, we formulate constraint matrices over relation algebras (RA matrices) and investigate their properties. RA matrices generalize constraint problems to relation algebras, and are equivalent to them when the relation algebras are algebras of binary relations (proper relation algebras). We define a closed matrix to be one that is symmetric and satisfies the path-consistency condition. We show that closure computations must terminate for RA matrices of order 3. The notion of proto-solvability is formulated, and its relation to actual solutions is clarified. This concept, under various names, has played a significant role in the literature on interval constraint problems, as has the concept of minimal labeling. We define the minimal labeling of a matrix M, and characterize it as the smallest closed matrix equivalent to M. We give an example of a CA-matrix which has a solution in one representation but no solution in another. We show that closed PA-matrices with no zero labels have solutions in the canonical representation, and use this to make some asymptotic complexity observations.

In Section 6, we formulate a scheme defining iterative local algorithms for closure. We show that every iterative local algorithm computes the most general closed reduction of an RA matrix, and that all iterative local algorithms terminate on any RA matrix over a finite relation algebra, and also on all RA matrices of order 3. We give an example of a constraint matrix of order 4 on which no iterative local algorithm terminates. We also comment on a specific iterative local algorithm CMat for constraint matrices, and its use in code for solving constraint problems.

Finally, Section 7 presents a class of examples over the Hard Algebra, which is representable on an 84-element set, on which any serial or parallel iterative local algorithm must take quadratic time. This result is close to the crude parallel upper bound estimate for CMat of O(n^{2} log n), and so the parallel asymptotic complexity of iterative local algorithms is approximately characterized.

2 Binary Constraint Problems

A constraint problem of order n consists of a finite set of n variables x_{0}, …, x_{n−1}, a set U (called the universe of the problem), together with a collection of constraints on the values from U which may be assigned to the variables [49]. The problem is solvable if the constraints can be satisfied by some assignment of values a_{0}, …, a_{n−1} ∈ U to the variables x_{0}, …, x_{n−1}, in which case the sequence ⟨a_{0}, …, a_{n−1}⟩ is called a solution. Two problems are equivalent if they have the same set of solutions. Constraint problems may also be formulated using the vocabulary of first-order logic [35], [36].

If every one of the constraints in a problem involves two variables (possibly the same) and asserts that the pair of values assigned to those variables must lie in a certain binary relation, then the constraint problem is called binary. We will be concerned exclusively with binary constraint problems.

Unary constraints as binary constraints Unary constraints can easily be expressed as binary constraints. For example, the assertion that a_{0} ∈ X is equivalent to the assertion that ⟨a_{0}, a_{0}⟩ ∈ X × X.

2.1 Constraint networks

Every binary constraint problem can be represented as a labeled digraph, in which each node is labeled by a variable, each ordered pair of nodes is connected by only one directed edge, and each directed edge is labeled with the relation which constrains the two variables at the tail and head. Such a labeled digraph is called a constraint network. If all the constraint relations are symmetric, then we can represent the associated network as an undirected graph, as in Theorem 5.9.

2.2 Operations on relations

As indicated above, a binary relation is just a set of ordered pairs, denoted ⟨a, b⟩. For any two binary relations R and S, R ∩ S is the intersection of R and S, R ∪ S is the union of R and S, R;S is the relative product (or compositum) of R and S, and R̆ is the converse of R. These operations are defined as usual:

R ∩ S = {⟨a, b⟩ : ⟨a, b⟩ ∈ R and ⟨a, b⟩ ∈ S},
R ∪ S = {⟨a, b⟩ : ⟨a, b⟩ ∈ R or ⟨a, b⟩ ∈ S},
R;S = {⟨a, b⟩ : for some c, ⟨a, c⟩ ∈ R and ⟨c, b⟩ ∈ S},
R̆ = {⟨a, b⟩ : ⟨b, a⟩ ∈ R}.

Composition (;) and conversion (˘ ) of binary relations were introduced by De Morgan [8], [9, p55f, p208ff]. Composition was called relative multiplication by Peirce [52] and Schröder [56].

In expressions written without full parentheses, unary operators should be computed first, followed by relative multiplication, intersection, and union, in that order. Since we shall use at least one non-associative operation (matrix relative multiplication, defined in 2.4 below, and not to be confused with relative multiplication of binary relations, which is associative), repeated binary operations at the same computation priority level, written without parentheses, should be computed from left to right. For example, R∪S ∩T;V̆ = R ∪ (S ∩ (T;(V̆))) and R;S;T = (R;S);T.

Three special binary relations are the empty relation ∅ which contains no pairs at all, the identity relation Id = {⟨a, b⟩ : a = b} and the diversity relation Di = {⟨a, b⟩ : a ≠ b}.

The domain of a relation R is {a : for some b, ⟨a, b⟩ ∈ R}, and the range of R is {b : for some a, ⟨a, b⟩ ∈ R}. The field of a relation is the union of its domain and range.

2.3 Constraint matrices

Let P be a binary constraint problem with variables x_{0}, …, x_{n−1} and universe U. Choose an ordered pair of variables (which may coincide), say ⟨x_{i}, x_{j}⟩. Suppose that P has several constraints on ⟨x_{i}, x_{j}⟩, that is, the pair ⟨a_{i}, a_{j}⟩ is required to belong to several binary relations, say R_{1}, …, R_{m}. Then these constraints can be condensed to a single constraint asserting that ⟨a_{i}, a_{j}⟩ must belong to the relation R_{1} ∩⋯∩R_{m}. The resulting problem is clearly equivalent to P. Another possibility is that there is no constraint on ⟨x_{i}, x_{j}⟩. It is easy to add a superfluous constraint on ⟨x_{i}, x_{j}⟩ which results in an equivalent problem: just insist that ⟨a_{i}, a_{j}⟩ must belong to U × U, and in case x_{i} = x_{j}, use (U × U) ∩ Id instead of U × U to reflect the fact that only one value can be assigned to a single variable. If there is a constraint on ⟨x_{i}, x_{i}⟩, we may intersect that constraint with Id and still have an equivalent problem. With slight terminological abuse, we say that a relation is an identity relation if it is included in Id. We therefore restrict our attention to those binary constraint problems which have exactly one constraint on each ordered pair of variables, and if the two variables are the same, then the constraint on them is an identity relation. The main reason for doing so is that such a binary constraint problem with n variables and universe U can be simply viewed as an n-by-n matrix M of binary relations over U: the relation M_{ij} (in row i, column j) is the constraint on ⟨x_{i}, x_{j}⟩. Note that if M is an n-by-n matrix of relations which arises in this way from a binary constraint problem, then the relations on the main diagonal of M are all identity relations, i.e., M_{ii} ⊆ Id for all i < n. Conversely, any such matrix determines some binary constraint problem with universe U(M) = ⋃_{i,j<n}(field of M_{ij}). Note that U(M) may be a proper subset of the universe of the problem from which the matrix M arose. We refer to matrices with identity relations on the main diagonal as constraint matrices.

The solutions of a constraint matrix M are those n-tuples ⟨a_{0}, …, a_{n−1}⟩ ∈ U(M)^{n} such that ⟨a_{i}, a_{j}⟩ ∈ M_{ij} whenever i, j < n. Note that if there are i, j < n such that M_{ij} = ∅, then M has no solutions. This condition is sufficient but not necessary for M to have no solutions.

The constraint network corresponding to a constraint matrix M is a “labeled complete digraph”, a digraph with exactly one directed edge from every node to each (possibly the same) node, whose labels are the entries of the matrix. We will therefore sometimes refer to M_{ij} as the label on the edge ⟨i, j⟩, to the triple ⟨i, j, k⟩ as a triangle in the matrix, and to the matrix itself as a network.

2.4 Operations on matrices of relations

Let M and N be n-by-n matrices of binary relations. Then M̆ is the converse of M, M · N is the intersection of M and N, and M;N is the relative product of M and N. These matrices are defined by the following equations, which hold for all i, j < n:

(M̆)_{ij} = (M_{ji})˘ ,

(M · N)_{ij} = M_{ij} ∩ N_{ij},

(M;N)_{ij} = M_{i0};N_{0j} ∩ M_{i1};N_{1j} ∩ ⋯ ∩ M_{i,n−1};N_{n−1,j} = ⋂_{k<n} M_{ik};M_{kj}.

It is interesting to note, and easy to show, that relative multiplication is associative when applied to binary relations or to 1-by-1 matrices of relations, but it is not associative when applied to n-by-n matrices of relations for n > 1, even if they have identity relations on the diagonal and are therefore constraint matrices. For example, if

M = ( \begin{matrix}\{⟨0, 0⟩ , ⟨1, 1⟩ , ⟨2, 2⟩\} & \{⟨0, 1⟩\} \\ ∅ & \{⟨0, 0⟩ , ⟨1, 1⟩ , ⟨2, 2⟩\} \end{matrix} )

and

N = ( \begin{matrix}\{⟨0, 0⟩ , ⟨1, 1⟩ , ⟨2, 2⟩\} & \{⟨0, 2⟩\} \\ \{⟨1, 0⟩ , ⟨2, 0⟩\} & \{⟨0, 0⟩ , ⟨1, 1⟩ , ⟨2, 2⟩\} \end{matrix} ) ,

then

( \begin{matrix}\{⟨0, 0⟩\} & ∅ \\ ∅ & ∅ \end{matrix} ) = (M;N);N ≠ M;(N;N) = ( \begin{matrix}∅ & ∅ \\ ∅ & ∅ \end{matrix} ) .

(Incidentally, M is a constraint matrix with no solutions because one of its labels is ∅, but the constraint matrix N has exactly one solution, namely ⟨0, 2⟩.)

If N · M = N, i.e., N_{ij} ⊆ M_{ij} for all i, j < n, then we say that N is a reduction of M, and symbolize this by writing N ≤ M or M ≥ N. We write N < M or M > N in case N ≤ M and N ≠ M. It is easy to see that this defines a partial ordering on matrices of relations. The greatest lower bound of the two matrices M and N in this ordering is M · N.

Let M^{2} = M;M. We shall use iterated squaring, but since relative multiplication of constraint matrices is not associative, we do not define general powers M^{k}.

2.5 Path-consistency and symmetry

An n-by-n constraint matrix M is path-consistent if M ≤ M^{2}. By the definitions above, M is path-consistent just in case M_{ij} ⊆ M_{ik};M_{kj} for all i, j, k < n. An easy proof by induction [49] shows that M is path-consistent if and only if for every finite set of indices i_{1}, i_{2}, …, i_{m} < n, and all j, k < n, we have

M_{jk} ⊆ M_{ji_{1}} ;M_{i_{1}i_{2}} ;M_{i_{2}i_{3}} ; ⋯;M_{i_{m−1}i_{m}};M_{i_{m}k}.

This indicates the origin of the term “path-consistent”.

For any solution ⟨a_{0}, …, a_{n−1}⟩ we must have ⟨a_{i}, a_{j}⟩ ∈ M_{ik};M_{kj} for any i, j, k < n. This necessary condition may be used as a pruning technique to narrow down the potential choices of a_{i} and a_{j} in a solution search: we calculate the relation M_{ik};M_{kj} and intersect it with M_{ij} to form M_{ij} ∩ M_{ik};M_{kj}, the new, potentially smaller, relation (and thus tighter constraint). We use this as the new constraint on ⟨x_{i}, x_{j}⟩, and repeat these steps for all edges in the triangle ⟨i, j, k⟩. We call this a triangle operation. We say that a triangle is stable if none of the labels between i, j, k changes during a triangle operation. Clearly a network is path-consistent if every triangle is stable.

A constraint matrix M is symmetric if M = M̆. A constraint matrix can be pathconsistent without being symmetric. For example, if

M = ( \begin{matrix}\{⟨0, 0⟩ , ⟨2, 2⟩\} & \{⟨0, 1⟩ , ⟨2, 3⟩ , ⟨0, 3⟩\} \\ \{⟨1, 0⟩ , ⟨3, 2⟩ , ⟨1, 2⟩\} & \{⟨1, 1⟩ , ⟨3, 3⟩\} \end{matrix} )

then M = M^{2} but M ≠ M̆. (The constraint matrix M has exactly two solutions, namely ⟨0, 1⟩ and ⟨2, 3⟩.)

A constraint matrix is closed if it is both path-consistent and symmetric.

3 Relation algebras in general

We state here concepts and results concerning relation algebras which are needed later in the paper. For proofs and more information on relation algebras see [5], [17], [18], [19], [38], [41], [42], [44], and [61].

3.1 Definition of Boolean algebras

Before defining relation algebras, we recall that a Boolean algebra is an algebra of the form

⟨B, +, ·,^{−}, 0, 1⟩

which satisfies the identities

\begin{matrix}x + (y + z) = (x + y) + z, & x · (y · z) = (x · y) · z, \\ x + y = y + x, & x · y = y · x, \\ x · y + x = x, & (x + y) · x = x, \\ x · y + z = (x + z) · (y + z), & (x + y) · z = x · z + y · z, \\ x + \overline{x} = 1, & x · \overline{x} = 0. \end{matrix}

Every Boolean algebra also satisfies the identities

\begin{matrix}x + x = x, \\ x · x = x, \\ \overline{\overline{x}} = x, \\ \overline{x + y} = \overline{x} · \overline{y}, \\ \overline{x · y} = \overline{x} + \overline{y}. \end{matrix}

The partial ordering of a Boolean algebra is defined thus: x ≤ y if x · y = x.

3.2 Definition of relation algebras

𝔄 is a relation algebra (with universe A) if

𝔄 = ⟨A, +, ·,^{−}, 0, 1,;,˘ , 1,⟩ ,

where ⟨A, +, ·,^{−}, 0, 1⟩ is a Boolean algebra (called the Boolean part ( or reduct) of 𝔄), ; is a binary operation, ˘ is a unary operation, and 1, ∈ A, and the following identities hold:

(1) (x;y);z = x;(y;z),
(2) (x + y);z = x;z + y;z,
(3) x;1, = x = 1, ;x,
(4) ˘ x̆ = x,
(5) (x + y)˘ = x̆ + y̆,
(6) (x;y)˘ = y̆;x̆,
(7) x̆;\overline{x;y} · y = 0.

(The second equality could be deleted, since it is derivable from the others.) The first six of these identities can be expressed by saying that ⟨A,;,˘ , 1,⟩ is an involuted monoid whose operations distribute over the Boolean + (from both sides, by (2), (4), and (6)), and the final identity ties this monoid to the Boolean part of 𝔄. We refer to 1 as the Boolean unit of 𝔄, and to 1, as the identity element of 𝔄.

3.3 Useful facts and more definitions

Arithmetic In every relation algebra, the following formulas are equivalent: x;y ≤ z, x̆;\overline{z} ≤ \overline{y}, and \overline{z};y̆ ≤ \overline{x}. This was first proved for binary relations by De Morgan [8], [9, p224], who called it Theorem K. Every relation algebra satisfies the following two variations on De Morgan’s Theorem K:

(1) the formulas x · y;z = 0, y · x;z̆ = 0, and z · y̆;x = 0 are equivalent,
(2) x · y;z = x · (y · x;z̆);(z · y̆;x) and 0 = 0;x = x;0.

Some additional theorems which hold in all relation algebras are

(3) ˘ \overline{x} = \overline{x̆},
(4) ˘1, = 1,, ˘0 = 0, ˘1 = 1,
(5) (x · y)˘ = x̆ · y̆,
(6) if x ≤ 1, then x;y · z = y · x;z and y;x · z = y · z;x,
(7) if x, y ≤ 1, then x;y = x · y,
(8) if x ≤ y then x̆ ≤ y̆, x;z ≤ y;z, and z;x ≤ z;y.

Because of (3) we will always use “˘\overline{x}” in preference to “\overline{x̆}”.

Proper relation algebras and representability A relation algebra 𝔄 is proper if its universe is a set of binary relations, and its operations coincide with the usual settheoretic operations on these relations. In more detail, this means that 0 is the empty relation, 1 is a relation which contains all others in A, 1, is the identity relation over the field of 1, and, for all relations x, y ∈ A, x + y is the union of x and y, x · y is the intersection of x and y, \overline{x} is the complement of x with respect to 1, x;y is the relative product of x and y, and x̆ is the converse of x. It is easy to show that the Boolean unit 1 in a proper relation algebra 𝔄 is an equivalence relation. The field of the equivalence relation 1 is called the base of 𝔄. If 1 has exactly one equivalence class X, then the 𝔄 is called an algebra of relations on X or a proper relation algebra on X.

Every equivalence relation E is the Boolean unit of a proper relation algebra. Indeed, the set of all binary relations included in E forms a proper relation algebra, denoted 𝔖𝔟(E). If E has exactly one equivalence class X, then the resulting algebra is denoted by ℜ𝔢(X). Thus ℜ𝔢(X) has all possible binary relations on X in its universe, and ℜ𝔢(X) = 𝔖𝔟(X × X). For example, ℜ𝔢(∅), ℜ𝔢({a}), and ℜ𝔢({a, b}) are relation algebras with exactly 1, 2, and 16 elements, respectively.

A representation of a relation algebra 𝔄 is an isomorphism, in the usual modeltheoretic or algebraic sense, from 𝔄 onto a subalgebra of a proper relation algebra 𝔅. We refer to the base of 𝔅 as the base of the representation. We also require a notion of isomorphism for representations, which is slightly different from the model-theoretic notion, since representations are themselves isomorphisms. Two representations R and R′ of a relation algebra 𝔄 (with bases B and B′, respectively) are isomorphic if there is a one-to-one correspondence h : B → B′ such that R(x) = h;R′(x);h̆, equivalently R′(x) = h̆;R(x);h, for every x ∈ A. Note that if R and R′ are isomorphic representations with bases B and B′, respectively, then the cardinalities of B and B′ must be the same.

A relation algebra 𝔄 is representable if it has a representation, and nonrepresentable if it does not. In contrast to the fact that every Boolean algebra is isomorphic to a Boolean algebra of sets (by Stone’s Theorem), there are nonrepresentable relation algebras, first found by Lyndon [33].

Subalgebras of proper relation algebras are proper, and it is easy to show that direct products of proper relation algebras are isomorphic to proper relation algebras. It follows that the class of representable relation algebras is closed under the formation of subalgebras and direct products. Tarski [60] showed that it is also closed under the formation of homomorphic images, and by Birkhoff’s Theorem [3, 11.9] is therefore an equational class, that is, it has an axiomatization consisting entirely of identities. Monk [48] proved that every set of identities which axiomatizes the class of representable relation algebras must be infinite, and Lyndon [34] produced an explicit recursive set of identities which does so.

Simplicity By definition, a relation algebra 𝔄 is simple if it has at least two elements and exactly two congruence relations. Congruence relations arise from homomorphisms. If h is a homomorphism from an algebra 𝔄 into an algebra 𝔅, then {⟨x, y⟩ : h(x) = h(y)} is a congruence relation on 𝔄. Therefore, a simple relation algebra can have no nontrivial homomorphisms. Indeed, every homomorphism h from a simple relation algebra 𝔄 to a relation algebra 𝔅 is either an isomorphism of 𝔄 onto a subalgebra of 𝔅 (and the congruence relation of h is the identity relation on the universe A of 𝔄), or else 𝔅 has exactly one element (and the congruence relation of h is the relation A × A). It turns out that simplicity for relation algebras has a nice characterization. A relation algebra 𝔄 is simple just in case 0 ≠ 1 and 1;x;1 = 1 for every nonzero element x of 𝔄 [19, 4.10]. ℜ𝔢(∅) has exactly one element, so it is not simple, but if X is not empty, then it is easy to check, using the characterization of simplicity, that ℜ𝔢(X) is simple. On the other hand, if X and Y are disjoint nonempty sets, then the proper relation algebra 𝔖𝔟((X × X) ∪ (Y × Y)) is not simple, since there is a nontrivial homomorphism h which maps 𝔖𝔟((X × X) ∪ (Y × Y)) onto 𝔖𝔟(X × X), defined by h(x) = x ∩ (X × X) for every x ⊆ (X × X) ∪ (Y × Y). (In fact, 𝔖𝔟((X × X) ∪ (Y × Y)) is isomorphic to the direct product of 𝔖𝔟(X × X) with 𝔖𝔟(Y × Y), and h is just the projection function onto the first component of the product.) All the relation algebras in Section 4 are simple.

It turns out that a simple relation algebra 𝔄 is representable if and only if there is a representation R which embeds 𝔄 into ℜ𝔢(X) for some set X [19, 4.26]. If R is such a representation, we say that R is a representation of 𝔄 over the set X.

If a simple relation algebra 𝔄 has a representation R over a set X, then 𝔄 automatically has representations which are not over any set. This is so because, for example, ℜ𝔢(X) can be embedded into 𝔖𝔟((X′ × X′) ∪ (X′′ × X′′)), where X′ and X′′ are two disjoint copies of X (with x ∈ X corresponding to x′ ∈ X′ and x′′ ∈ X′′). We obtain this embedding by sending {⟨x_{0}, x_{1}⟩} to {⟨x′_{0}, x′_{1}⟩} ∪ {⟨x′′_{0}, x′′_{1}⟩}, and extending this map in the natural way to all binary relations on X. By composing R with this embedding, we get a representation which embeds 𝔄 into 𝔖𝔟((X′ × X′) ∪ (X′′ × X′′)). This representation is not over any set, and is not isomorphic to R (excluding trivial exceptions). This observation has a crucial effect on the wording of Theorem 4.1, so we illustrate it with an example. There is a relation algebra 𝔄 with four elements, 0, 1,, 1, and 0,, where 0, = \overline{1,}, and a representation R over the two-element set \{a, b\}, defined by R(0) = ∅, R(1,) = {⟨a, a⟩ , ⟨b, b⟩}, R(0,) = {⟨a, b⟩ , ⟨b, a⟩}, and R(1) = {⟨a, a⟩ , ⟨b, b⟩ , ⟨a, b⟩ , ⟨b, a⟩}. Notice that R(0,);R(0,) = R(1,), so 0,;0, = 1, in 𝔄. From this equation we can easily show that, for any set X, if 𝔄 has a representation over X, then X also has exactly two elements. We cannot, however, conclude that the base of every representation of 𝔄 has exactly two elements, in view of the following counterexample. Choose two distinct elements a′ and b′ not in {a, b}. Define a representation S by setting S(0) = ∅, S(1,) = {⟨a, a⟩ , ⟨b, b⟩ , ⟨a′, a′⟩ , ⟨b′, b′⟩}, S(0,) = {⟨a, b⟩ , ⟨b, a⟩ , ⟨a′, b′⟩ , ⟨b′, a′⟩}, and S(1) = {⟨a, a⟩ , ⟨b, b⟩ , ⟨a, b⟩ , ⟨b, a⟩ , ⟨a′, a′⟩ , ⟨b′, b′⟩ , ⟨a′, b′⟩ , ⟨b′, a′⟩}. One can now check that S is an embedding of 𝔄 into 𝔖𝔟(({a, b} × {a, b}) ∪ ({a′, b′} × {a′, b′})). The base of R is {a, b}, but the base of S is {a, b, a′, b′}, so R and S are not isomorphic, because the bases of isomorphic representations must have the same cardinality. Furthermore, S cannot be isomorphic to any representation of 𝔄 over any set, because 𝔄 can be represented only over sets of cardinality 2. By generalizing the construction of S, we can produce representations of 𝔄 with bases of arbitrarily large cardinality, including all finite even cardinals and all infinite cardinals. Thus 𝔄 has, up to isomorphism, only one representation over a set, but many nonisomorphic representations.

Atoms An atom of a relation algebra 𝔄 is a minimal nonzero element, i.e., x is an atom if x ≠ 0 and for every y ∈ A, either x · y = 0 or x · \overline{y} = 0. In every relation algebra, if x is an atom, then so is x̆. A relation algebra is atomic if every nonzero element has an atom below it. In every relation algebra, relative multiplication and conversion distribute over arbitrary sums. It follows that in every atomic relation algebra, the relative product of any two elements and the converse of any element can be determined from the relative products and converses of the atoms below those elements. This fact is very useful in the presentation of finite relation algebras. Every finite relation algebra is atomic, and its Boolean part is completely determined by the number of atoms. All that remains is to specify the identity element 1, and the relative products and converses of atoms, and this is all a presentation needs to contain. We present four finite relation algebras in this manner in Section 4.

Equivalence elements and relativization These notions are used in the proof of Theorem 4.6.

An element z of a relation algebra 𝔄 is an equivalence element if z = z̆ = z;z. If 𝔄 is a proper relation algebra, then z is an equivalence element if and only if z is an equivalence relation.

The relativization of 𝔄 to z is the algebra with universe {x : z ≥ x ∈ A} and operations +^{z}, ·^{z},^{−}^{z},;^{z}, ^{˘ z}, 1,^{z} defined by

\begin{aligned}x +^{z} y & = x + y, \\ x ·^{z} y & = x · y, \\ x^{−}^{z} & = \overline{x} · z, \\ x;^{z}y & = x;y · z, \\ x^{˘ z} & = x̆ · z, \\ 1,^{z} & = 1, · z. \end{aligned}

The relativization of 𝔄 to z is defined for any element z, but may not even be a relation algebra [38]. However, if z is an equivalence element of 𝔄, then the relativization of 𝔄 to z is also a relation algebra [19, p132].

4 Examples of relation algebras

4.1 The Point Algebra

The Point Algebra PA is a finite relation algebra with exactly 3 atoms (hence 8 elements). Its atoms are 1,, b, and b̆ (“b” for “before”). Since the only atoms of PA are 1,, b, and b̆, we have 1 = 1, + b + b̆. Notice, by our choice of notation, that we have already specified the identity element (it’s one of the atoms) and the converses of all the atoms (since ˘1, = 1, and ˘ x̆ = x in every relation algebra). The relative products of atoms are given by the table

\begin{matrix}; & 1, & b & b̆ \\ 1, & 1, & b & b̆ \\ b & b & b & 1 \\ b̆ & b̆ & 1 & b̆ \end{matrix}  to be read thus: \begin{matrix}; & ⋯ & y \\ ⋮ & & ⋮ \\ x & ⋯ & x;y \end{matrix}

The Point Algebra is representable. Let ℚ be the set of rational numbers with the usual ordering. We can get a representation R^{PA} of the PA just by setting

\begin{aligned}R^{PA}(1,) & = \{⟨q, r⟩ : q = r, q, r ∈ ℚ\}, \\ R^{PA}(b) & = \{⟨q, r⟩ : q < r, q, r ∈ ℚ\}, \end{aligned}

since the other values of R^{PA} are determined by these two in the natural way, namely,

\begin{aligned}R^{PA}(0) & = ∅, \\ R^{PA}(b̆) & = R^{PA}(b)˘ , \\ R^{PA}(1, + b) & = R^{PA}(1,) ∪ R^{PA}(b), \\ R^{PA}(b + b̆) & = R^{PA}(b) ∪ R^{PA}(b)˘ , \\ R^{PA}(1, + b̆) & = R^{PA}(1,) ∪ R^{PA}(b)˘ , \\ R^{PA}(1, + b + b̆) & = R^{PA}(1,) ∪ R^{PA}(b) ∪ R^{PA}(b)˘ . \end{aligned}

¿From these equations and the definitions of R^{PA}(1,) and R^{PA}(b) we get

\begin{aligned}R^{PA}(b̆) & = \{⟨q, r⟩ : q > r, q, r ∈ ℚ\}, \\ R^{PA}(1, + b) & = \{⟨q, r⟩ : q ≤ r, q, r ∈ ℚ\}, \\ R^{PA}(b + b̆) & = \{⟨q, r⟩ : q ≠ r, q, r ∈ ℚ\}, \\ R^{PA}(1, + b̆) & = \{⟨q, r⟩ : q ≥ r, q, r ∈ ℚ\}, \\ R^{PA}(1, + b + b̆) & = ℚ × ℚ. \end{aligned}

Part of the proof that R^{PA} is indeed a representation is the verification that the relations in {R^{PA}(x) : x ∈ PA} form a proper relation algebra. This algebra is finite even though the base of the representation is infinite. (On the other hand, there can be no infinite algebra on a finite base, since there are only finitely many relations on a finite set.)

Theorem 4.1 If R is a representation of the PA over a set V, then ⟨V, R(b)⟩ is a dense linear ordering without endpoints. Further, all representations of the PA over a countable set are isomorphic to the representation R^{PA}.

Proof: Assume R is a representation of the PA over a set V, i.e., R embeds PA into ℜ𝔢(V). Then R(b) is transitive because b;b ≤ b, R(b) is dense because b ≤ b;b, R(b) is strict because b · 1, = 0, R(b) is total because b + b̆ + 1, = 1, and R(b) has no maximum or minimum because 1 = b;1 and 1 = 1;b. Therefore ⟨V, R(b)⟩ is a dense linear ordering without endpoints. In case V is countable, there is a model-theoretic isomorphism h from ⟨V, R(b)⟩ onto ⟨ℚ, <⟩. We use h to show that the representations R and R^{PA} are isomorphic. That h is a one-to-one correspondence between V and ℚ can be expressed by either of the equivalent equations R^{PA}(1,) = h̆;R(1,);h or R(1,) = h;R^{PA}(1,);h̆. That h maps the relation R(b) onto < can be expressed, according to the definition of R^{PA}(b), by either of the equivalent equations R^{PA}(b) = h̆;R(b);h or R(b) = h;R^{PA}(b);h̆. So far we know, in case x is either 1, or b, that R^{PA}(x) = h̆;R(x);h and R(x) = h;R^{PA}(x);h̆, and from these two special cases we can show that the last two equations hold for every x ∈ PA, thanks to the atom structure of the PA.

Corollary 4.2 PA has no representation over a finite set.

4.2 The Interval Algebra

The Interval Algebra IA has 13 atoms: 1,, p, p̆, d, d̆, o, ŏ, m, m̆, s, s̆, f, and f̆. (The letters used to denote the atoms come from the words “precedes”, “during”, “overlaps”, “meets”, “starts”, and “finishes”.) The relative products of atoms in the IA are given in the following table. Some definitions of elements used in the table are given after the table.

\begin{matrix}; & 1, & p & p̆ & d & d̆ & o & ŏ & m & m̆ & s & s̆ & f & f̆ \\ 1, & 1, & p & p̆ & d & d̆ & o & ŏ & m & m̆ & s & s̆ & f & f̆ \\ p & p & p & 1 & ρ & p & p & ρ & p & ρ & p & p & ρ & p \\ p̆ & p̆ & 1 & p̆ & λ̆ & p̆ & λ̆ & p̆ & λ̆ & p̆ & λ̆ & p̆ & p̆ & p̆ \\ d & d & p & p̆ & d & 1 & ρ & λ̆ & p & p̆ & d & λ̆ & d & ρ \\ d̆ & d̆ & λ & ρ̆ & ν & d̆ & γ & β̆ & γ & β̆ & γ & d̆ & β̆ & d̆ \\ o & o & p & ρ̆ & β & λ & α & ν & p & β̆ & o & γ & β & α \\ ŏ & ŏ & λ & p̆ & γ̆ & ρ̆ & ν & ᾰ & γ & p̆ & γ̆ & ᾰ & ŏ & β̆ \\ m & m & p & ρ̆ & β & p & p & β & p & f^{♯} & m & m & β & p \\ m̆ & m̆ & λ & p̆ & γ̆ & p̆ & γ̆ & p̆ & s^{♯} & p̆ & γ̆ & p̆ & m̆ & m̆ \\ s & s & p & p̆ & d & λ & α & γ̆ & p & m̆ & s & s^{♯} & d & α \\ s̆ & s̆ & λ & p̆ & γ̆ & d̆ & γ & ŏ & γ & m̆ & s^{♯} & s̆ & ŏ & d̆ \\ f & f & p & p̆ & d & ρ̆ & β & ᾰ & m & p̆ & d & ᾰ & f & f^{♯} \\ f̆ & f̆ & p & ρ̆ & β & d̆ & o & β̆ & m & β̆ & o & d̆ & f^{♯} & f̆ \end{matrix}

\begin{aligned}α & = p + o + m \\ β & = d + o + s \\ γ & = d̆+ o + f̆ \\ f^{♯} & = 1, + f + f̆ \\ s^{♯} & = 1, + s + s̆ \\ ρ & = α + β = p + d + o + m + s \\ λ & = α + γ = p + d̆+ o + m + f̆ \\ ν & = γ + γ̆ + s^{♯} = β + β̆ + f^{♯} = 1, + d + d̆+ o + ŏ + s + s̆ + f + f̆ \end{aligned}

Let 𝕃 = R^{PA}(b) = {⟨q, r⟩ : q, r ∈ ℚ, q < r}. A representation R^{IA} of the IA over 𝕃 is given by the following table.

equals: R^{IA}(1,) = {⟨⟨q, r⟩ , ⟨q′, r′⟩⟩ : q = q′ < r = r′, q, r, q′, r′ ∈ ℚ}
precedes: R^{IA}(p) = {⟨⟨q, r⟩ , ⟨q′, r′⟩⟩ : q < r < q′ < r′, q, r, q′, r′ ∈ ℚ}
during:  R^{IA}(d) = {⟨⟨q, r⟩ , ⟨q′, r′⟩⟩ : q′ < q < r < r′, q, r, q′, r′ ∈ ℚ}
overlaps: R^{IA}(o) = {⟨⟨q, r⟩ , ⟨q′, r′⟩⟩ : q < q′ < r < r′, q, r, q′, r′ ∈ ℚ}
meets:  R^{IA}(m) = {⟨⟨q, r⟩ , ⟨q′, r′⟩⟩ : q < r = q′ < r′, q, r, q′, r′ ∈ ℚ}
starts:  R^{IA}(s) = {⟨⟨q, r⟩ , ⟨q′, r′⟩⟩ : q = q′ < r < r′, q, r, q′, r′ ∈ ℚ}
finishes: R^{IA}(f) = {⟨⟨q, r⟩ , ⟨q′, r′⟩⟩ : q′ < q < r = r′, q, r, q′, r′ ∈ ℚ}

Next we have a few results on subalgebras and representations of the IA.

Theorem 4.3 The PA can be embedded in the IA. The IA has no representation over a finite set.

Proof: Set

\begin{aligned}I(1,) & = 1,, \\ I(b) & = λ + s = p + d̆+ o + m + s + f̆, \\ I(b̆) & = λ̆ + s̆ = p̆ + d + ŏ + m̆ + s̆ + f, \end{aligned}

and extend I in the natural way to all of the PA. Since the IA has a subalgebra isomorphic to the PA, and the PA has no representation over a finite set, the same is true for the IA.

Theorem 4.4 If x ∈ {p, p̆, m, m̆, o, ŏ}, then the IA is generated by x.

Proof: Let x ∈ {p, p̆, m, m̆, o, ŏ}. Note that the IA is generated by x just in case it is generated by x̆, so we need only show p, m, and o generate the IA. That m generates the IA follows immediately from the following equations, which may be checked against the table of relative products.

\begin{aligned}1, & = m;m̆ · m̆;m, \\ p & = m;m, \\ s & = m̆;m · m;m;m̆, \\ f & = m;m̆ · m̆;m̆;m, \\ d & = s;f, \\ o & = f̆;s. \end{aligned}

Next we show that p generates the IA. It will follow that o also generates the IA, since p = o;(o;o · \overline{o}). First, from the table of relative products we have

\begin{matrix}λ = ˘ \overline{p};p, \\ ρ = p;˘\overline{p}, \end{matrix}

so we use ρ and λ together with p to generate the remaining atoms:

\begin{aligned}d & = p̆;\overline{p} · p;˘\overline{p}, \\ s & = ρ · \overline{λ} · ˘ \overline{λ}, \\ f & = ρ̆ · \overline{ρ} · ˘ \overline{ρ}, \\ o & = f̆;s, \\ m & = s;f̆· \overline{p} · \overline{o}. \end{aligned}

Results on the subalgebras generated by the other atoms of the IA, and other elements occurring in the composition table, are summarized in the next theorem. Note that 1, is a symmetric atom in each subalgebra of the IA. The algebra CA which occurs in the statement of (f) is introduced in the next section.

Theorem 4.5 In the IA: (a) d generates a subalgebra with 8 atoms, 4 of which are symmetric; (b) f and s generate isomorphic subalgebras with 4 atoms, 2 symmetric; (c) f^{♯} and s^{♯} generate isomorphic symmetric subalgebras with 3 atoms; (d) α generates a subalgebra with 6 atoms, 2 symmetric; (e) β and γ generate the whole IA; (f) ν generates a subalgebra isomorphic to the CA.

Proof: The results may be obtained by straightforward relation-algebraic computations similar to those in the previous theorem.

Theorem 4.6 If R is a representation of the IA over a countable set V, then R is isomorphic to the representation R^{IA}.

Proof: Referring to the composition table for the IA, it may be seen that s^{♯} and f^{♯} both contain 1,, and are equivalence elements. Hence R(f^{♯}) and R(s^{♯}) are equivalence relations on V. The relativizations of the IA to s^{♯} and f^{♯} are therefore relation algebras. Both of them are isomorphic to PA, as can be seen from inspection of the composition table. Choose some element x ∈ V. Let

\begin{matrix}X = \{y : ⟨y, x⟩ ∈ R(f^{♯})\}, \\ Y = \{y : ⟨x, y⟩ ∈ R(m)\}. \end{matrix}

By definition, X is the R(f^{♯})-equivalence class of x. We claim that Y is an R(s^{♯})- equivalence class. We have to show that if y, y′ ∈ Y, then ⟨y, y′⟩ ∈ R(s^{♯}), and also that if y ∈ Y and ⟨y, y′⟩ ∈ R(s^{♯}) then y′ ∈ Y. First assume y, y′ ∈ Y. Then ⟨x, y⟩ ∈ R(m) and ⟨x, y′⟩ ∈ R(m), so ⟨y, y′⟩ ∈ R(m)˘ ;R(m) = R(m̆;m) = R(s^{♯}). Second, assume y ∈ Y and ⟨y, y′⟩ ∈ R(s^{♯}). Then ⟨x, y⟩ ∈ R(m), so ⟨x, y′⟩ ∈ R(m);R(s^{♯}) = R(m;s^{♯}) = R(m). Hence y′ ∈ Y as required, and we have shown that Y is an R(s^{♯})-equivalence class.

Since the relativizations of IA to both s^{♯} and to f^{♯} are isomorphic to PA and V is countable, by Theorem 4.1 we have

⟨X, R(f^{♯})⟩ and ⟨Y, R(s^{♯})⟩ are both countable dense linear orderings without endpoints.

Now suppose that x′ ∈ X and y′ ∈ Y. Then ⟨x′, x⟩ ∈ R(f^{♯}) and ⟨x, y′⟩ ∈ R(m), so ⟨x′, y′⟩ ∈ R(f^{♯});R(m) = R(f^{♯};m) = R(m). It follows that X × Y ⊆ R(m), so X and Y are disjoint, since m · 1, = 0. Combining these observations, we conclude

⟨X ∪ Y, R(f^{♯} + s^{♯} + m)⟩ is a dense linear ordering without endpoints.

Let ⟨Q′, L′⟩ be the structure of the nonzero rationals with the usual ordering, i.e., Q′ = {q : 0 ≠ q ∈ ℚ}, and qL′r if and only if q, r ∈ Q′ and q < r. Since ⟨Q′, L′⟩ is a dense linear ordering without endpoints, all countable dense linear orderings without endpoints are isomorphic to the rationals, and the rationals are homogeneous [4], we may let g be an isomorphism from ⟨X ∪ Y, R(f^{♯} + s^{♯} + m)⟩ to ⟨Q′, L′⟩ which maps X to the negative rationals and Y to the positive rationals. We use g to define a oneto-one correspondence h from V to the base 𝕃 of R^{IA}. For each z ∈ V we shall let h(z) = ⟨h_{1}(z), h_{2}(z)⟩, so now we define h_{1} and h_{2}.

We begin with h_{1}. Let z be any element of V. We split into three cases. First note that R(m), R(p), and R(\overline{p} · \overline{m}) form a partition of V × V, i.e., every pair is in exactly one of these three relations. So we can define h_{1} for each case separately. If z ∈ Y, i.e., ⟨x, z⟩ ∈ R(m), then we let h_{1}(z) = 0. Next assume ⟨x, z⟩ ∈ R(\overline{p} · \overline{m}). From the table we get \overline{p} · \overline{m} ≤ f^{♯};s^{♯}, so there is some w such that ⟨x, w⟩ ∈ R(f^{♯}) and ⟨w, z⟩ ∈ R(s^{♯}). There can be only one such w. To see this, suppose ⟨x, w′⟩ ∈ R(f^{♯}) and ⟨w′, z⟩ ∈ R(s^{♯}). Then ⟨w, w′⟩ ∈ R(f^{♯})˘ ;R(f^{♯}) ∩ R(s^{♯});R(s^{♯})˘ = R(f^{♯}˘ ;f^{♯} · s^{♯};s̆) = R(1,), so w = w′. R(f^{♯}) is symmetric, so w ∈ X and g(w) is defined. Let h_{1}(z) = g(w). Finally assume ⟨x, z⟩ ∈ R(p). Note that p = m;m, so there is some w such that ⟨x, w⟩ ∈ R(m) and ⟨w, z⟩ ∈ R(m). This w is unique since m̆;m · m;m̆ = 1,, and w ∈ Y, so g(w) is defined. We let h_{1}(z) = g(w). This completes the definition of h_{1}.

We define h_{2} similarly, using the partition of V × V into R(f^{♯}), R(ρ), and R(ρ̆). If ⟨x, z⟩ ∈ R(f^{♯}), then z ∈ X and we set h_{2}(z) = 0. Suppose ⟨x, z⟩ ∈ R(ρ). Since ρ = m;f^{♯}, there is some w such that ⟨x, w⟩ ∈ R(m) and ⟨w, z⟩ ∈ R(f^{♯}). This w is in Y and w is unique since m̆;m · f^{♯};f^{♯}˘ = 1,. In this case we let h_{2}(z) = g(w). Finally, assume ⟨x, z⟩ ∈ R(ρ̆). We have ρ̆ = f^{♯};m̆ so there is a w such that ⟨x, w⟩ ∈ R(f^{♯}) and ⟨w, z⟩ ∈ R(m̆). Then w ∈ X and is unique since f^{♯}˘ ;f^{♯} · m̆;m = 1,. Set h_{2}(z) = g(w). This completes the construction of h_{2}, and hence also h.

The remainder of the proof is a verification that h works properly. For example, we show that h_{2}(z) = h_{1}(z′) if and only if ⟨z, z′⟩ ∈ R(m). We consider the three cases for the definition of h_{1}(z′). We show the left-to-right directions only, since the necessary reasoning is reversible.

a: ⟨x, z′⟩ ∈ R(m): Thus h_{1}(z′) = 0 = h_{2}(z) so z ∈ X and thus ⟨z, x⟩ ∈ R(f^{♯}) and ⟨z, z′⟩ ∈ R(f^{♯});R(m) = R(f^{♯};m) = R(m).

b: ⟨x, z′⟩ ∈ R(p): Then h_{1}(z′) = g(w) = h_{2}(z) ≠ 0 where ⟨x, w⟩ ∈ R(m) and ⟨w, z′⟩ ∈ R(m). ⟨x, w⟩ ∈ R(m) implies we’re in case ⟨x, z⟩ ∈ R(ρ) of the definition of h_{2}(z), hence ⟨w, z⟩ ∈ R(f^{♯}), so ⟨z, w⟩ ∈ R(f^{♯}) which with ⟨w, z′⟩ ∈ R(m) yields ⟨z, z′⟩ ∈ R(f^{♯};m) = R(m).

c: ⟨x, z′⟩ ∈ R(\overline{p} · \overline{m}): So ⟨x, w⟩ ∈ R(f^{♯}), ⟨w, z′⟩ ∈ R(s^{♯}), where h_{1}(z′) = g(w) = h_{2}(z) ≠ 0. ⟨x, w⟩ ∈ R(f^{♯}) puts us in the case ⟨x, z⟩ ∈ R(ρ̆) of the definition of h_{2}(z), so ⟨w, z⟩ ∈ R(m̆) and ⟨z, z′⟩ ∈ R(m;s^{♯}) = R(m).

The reasoning for the other twelve relations is similar.

4.3 The Containment Algebra

The Containment Algebra CA has five atoms: 1,, c, c̆, n, and a (from “contained in”, “nonempty intersection”, and “apart”), where n̆ = n and ă = a . The relative products of atoms are

\begin{matrix}; & 1, & c & c̆ & n & a \\ 1, & 1, & c & c̆ & n & a \\ c & c & c & 1 & c + n + a & a \\ c̆ & c̆ & 1, + c + c̆ + n & c̆ & c̆ + n & c̆ + n + a \\ n & n & c + n & c̆ + n + a & 1 & c̆ + n + a \\ a & a & c + n + a & a & c + n + a & 1 \end{matrix}

The CA is isomorphic to a subalgebra of the IA. To get an isomorphism I which embeds the CA into the IA, just set

\begin{aligned}I(1,) & = 1,, \\ I(c) & = s + f + d, \\ I(c̆) & = s̆ + f̆+ d̆, \\ I(n) & = o + ŏ, \\ I(a) & = p + p̆ + m + m̆, \end{aligned}

and extend I to all of the CA in the usual way. It follows from the representability of the IA that the CA is also representable. Composing the embedding I with the representation R^{IA} of the IA over 𝕃 yields a representation R^{CA} = I;R^{IA} of the CA over 𝕃. To get an essentially different representation of CA, let Ω be the set of all open subsets of the reals ℝ. Then set

\begin{aligned}Ro^{CA}(1,) & = \{⟨X, Y ⟩ : X, Y ∈ Ω, X = Y \}, \\ Ro^{CA}(c) & = \{⟨X, Y ⟩ : X, Y ∈ Ω, X ⊂ Y \}, \\ Ro^{CA}(c̆) & = \{⟨X, Y ⟩ : X, Y ∈ Ω, X ⊃ Y \}, \\ Ro^{CA}(a) & = \{⟨X, Y ⟩ : X, Y ∈ Ω, X ∩ Y = ∅\}, \\ Ro^{CA}(n) & = \{⟨X, Y ⟩ : X, Y ∈ Ω, X ∩ Y ≠ ∅, X ⊈ Y, Y ⊈ X\}, \end{aligned}

and extend Ro^{CA} to all of CA. The CA has no representation over a finite set, for if R is any representation of the CA, then R(c) is a transitive dense relation disjoint from Id. There is no such relation on a finite set.

4.4 The Hard Algebra

The Hard Algebra HA has 4 atoms, namely 1,, a, b, and c, with converses ă = a, b̆ = b, and c̆ = c. The relative products of atoms are given by

\begin{matrix}; & 1, & a & b & c \\ 1, & 1, & a & b & c \\ a & a & 1, + a + b & a + b + c & b + c \\ b & b & a + b + c & 1 & a + b + c \\ c & c & b + c & a + b + c & 1 \end{matrix}

It follows from [38, Theorem 5.19] that HA is representable over an infinite set, but HA is also representable on a set with 84 elements. To see this, let S be a set containing exactly 9 elements, and let T be the set of subsets of S which contain exactly 3 elements. Thus |T |, the cardinality of T, is 84 (9 taken 3 at a time). We get a representation R^{HA} of HA over T by setting

\begin{aligned}R^{HA}(1,) & = \{⟨X, Y ⟩ : X, Y ∈ T, |X ∩ Y | = 3\}, \\ R^{HA}(a) & = \{⟨X, Y ⟩ : X, Y ∈ T, |X ∩ Y | = 2\}, \\ R^{HA}(b) & = \{⟨X, Y ⟩ : X, Y ∈ T, |X ∩ Y | = 1\}, \\ R^{HA}(c) & = \{⟨X, Y ⟩ : X, Y ∈ T, |X ∩ Y | = 0\}. \end{aligned}

A key fact in the verification that R^{HA} is a representation is that there cannot be two disjoint 3-element sets each of which shares two elements with a third 3-element set. This is why, in the HA, we have 0 = c · a;a = a · c;a = a · a;c. Incidentally, representations over larger sets can be obtained by letting S contain more than 9 elements, but fewer than 9 will not work.

The HA was invented as part of the second author’s construction of the hard examples in Section 7; its finite representability was discovered only later, by accident, during the investigation of a certain class of proper relation algebras.

5 Matrices over relation algebras

We may formulate concepts of binary constraint problems in a more general manner using relation algebras. An n-by-n matrix over 𝔄, where 𝔄 is a relation algebra, is an n-by-n matrix M of elements of 𝔄. The order of M is ord(M) = n. If M satisfies the diagonal condition, namely M_{ii} ≤ 1, for all i < n, then M is called a constraint matrix over 𝔄 (or an RA matrix over 𝔄 or, briefly, an 𝔄-matrix). Except for some minor notational modifications, the definitions of intersection (M · N), relative product (M;N), and converse (M̆) for matrices of relations also apply to matrices over arbitrary relation algebras, as do the concepts of reduction (N ≤ M), symmetry (M = M̆), pathconsistency (M ≤ M^{2}), and closure (M = M̆ ≤ M^{2}). Next we present some useful elementary results concerning constraint matrices over a fixed relation algebra 𝔄.

Theorem 5.1 Let M be an 𝔄-matrix. Then M^{2} ≤ M, and M is path-consistent if and only if M = M^{2}.

Proof: For all i, j < ord(M), (M^{2})_{ij} ≤ M_{ii};M_{ij} ≤ 1, ;M_{ij} = M_{ij}. Thus M^{2} ≤ M. By definition, M is path-consistent if and only if M ≤ M^{2}, so M is path-consistent if and only if M = M^{2}.

Theorem 5.2 If M is an 𝔄-matrix, then ˘ M̆ = M.

Proof: For all i, j < ord(M), ( ˘M̆)_{ij} = ((M̆)_{ji})˘ = ((M_{ij})˘ )˘ = M_{ij}.

Theorem 5.3 If M and N are 𝔄-matrices, then (M · N)˘ = M̆ · N̆.

Proof: For all i, j < ord(M), ((M ·N)˘ )_{ij} = ((M ·N)_{ji})˘ = (M_{ji}·N_{ji})˘ = (M_{ji})˘ ·(N_{ji})˘ = M̆_{ij} · N̆_{ij} = (M̆ · N̆)_{ij}.

Theorem 5.4 If M and N are 𝔄-matrices, then (M;N)˘ = N̆;M̆.

Proof: For all i, j < ord(M) we have ((M;N)˘ )_{ij} = ((M;N)_{ji})˘ = (∏_{k<n} M_{jk};N_{ki})˘ = ∏_{k<n}(M_{jk};N_{ki})˘ = ∏_{k<n}(N_{ki})˘ ;(M_{jk})˘ = ∏_{k<n} N̆_{ik};M̆_{kj} = (N̆;M̆)_{ij}.

Theorem 5.5 If M is an 𝔄-matrix, then M · M̆ is symmetric.

Proof: For all i, j < ord(M), (M ·M̆)_{ij} = M_{ij} ·M̆_{ij} = ((M_{ij})˘ )˘ ·M̆_{ij} = (M̆_{ji})˘ ·(M_{ji})˘ = (M̆_{ji} · M_{ji})˘ = ((M̆ · M)_{ji})˘ = ((M̆ · M)˘ )_{ij} = ((M · M̆)˘ )_{ij}.

Theorem 5.6 If M is a symmetric 𝔄-matrix of order 3, then (M^{2})^{2} is closed.

Proof: Let N = M · M′, where M′ is the matrix

( \begin{matrix}M_{01};M_{11};M_{12};M_{22};M_{20} & M_{00};M_{02};M_{22};M_{21};M_{11} & M_{00};M_{01};M_{11};M_{12};M_{22} \\ M_{11};M_{12};M_{22};M_{20};M_{00} & M_{10};M_{00};M_{02};M_{22};M_{21} & M_{11};M_{10};M_{00};M_{02};M_{22} \\ M_{22};M_{21};M_{11};M_{10};M_{00} & M_{22};M_{20};M_{00};M_{01};M_{11} & M_{20};M_{00};M_{01};M_{11};M_{12} \end{matrix} ) .

Obviously, N ≤ M. Since M is symmetric, we have M = M̆, so for all i, j < n, (M_{ij})˘ = M̆_{ji} = M_{ji}. From this we can easily see that N is symmetric as well. For example,

N̆_{12} = (N_{21})˘
= (M_{21} · M_{22};M_{20};M_{00};M_{01};M_{11})˘
= (M_{21})˘ · (M_{22};M_{20};M_{00};M_{01};M_{11})˘
= (M_{21})˘ · (M_{11})˘ ;(M_{01})˘ ;(M_{00})˘ ;(M_{20})˘ ;(M_{22})˘
= M̆_{12} · M̆_{11};M̆_{10};M̆_{00};M̆_{02};M̆_{22}
= M_{12} · M_{11};M_{10};M_{00};M_{02};M_{22}
= N_{12}.

Next we show N is path-consistent, i.e., N ≤ N^{2}. The computations make use of axioms (1) and (6) from Section 3.2, and identities (2), (5), (6), (7), and (8) from Section 3.3. The computations are all similar, but fall into different types, depending on whether subscripts are distinct or repeated. Out of 27 computations we present four which illustrate the various types.

N_{01} = M_{01} · M_{00};M_{02};M_{22};M_{21};M_{11}

= M_{01} · (M_{00};M_{02} · M_{01};(M_{22};M_{21};M_{11})˘ );(M_{22};M_{21};M_{11} · (M_{00};M_{02})˘ ;M_{01})

≤ (M_{00};M_{02} · M_{01};(M_{22};M_{21};M_{11})˘ );(M_{22};M_{21};M_{11} · (M_{00};M_{02})˘ ;M_{01})
= (M_{00};M_{02} · M_{01};M_{11};M_{12};M_{22});(M_{22};M_{21};M_{11} · M_{20};M_{00};M_{01})
= (M_{02} · M_{00};M_{01};M_{11};M_{12};M_{22});(M_{22};M_{21} · M_{20};M_{00};M_{01};M_{11})
= (M_{02} · M_{00};M_{01};M_{11};M_{12};M_{22});(M_{21} · M_{22};M_{20};M_{00};M_{01};M_{11})
= N_{02};N_{21}.

This first computation can be used to shorten the next one.

N_{10} = N̆_{10} = (N_{01})˘ ≤ (N_{02};N_{21})˘ = (N_{21})˘ ;(N_{02})˘ = N̆_{12};N̆_{20} = N_{12};N_{20}.
N_{00} = M_{00} · M_{01};M_{11};M_{12};M_{22};M_{20}
≤ (M_{01} · M_{00};(M_{11};M_{12};M_{22};M_{20})˘ );(M_{11};M_{12};M_{22};M_{20} · (M_{01})˘ ;M_{00})
= (M_{01} · M_{00};M_{02};M_{22};M_{21};M_{11});(M_{11};M_{12};M_{22};M_{20} · M_{10};M_{00})
= (M_{01} · M_{00};M_{02};M_{22};M_{21};M_{11});(M_{11};M_{12};M_{22};M_{20};M_{00} · M_{10})
= N_{01};N_{10}.

Finally, N_{00} ≤ M_{00} ≤ 1, by the diagonal condition on M, so N_{00} = N_{00} ·N_{00} = N_{00};N_{00}.

We may conclude that N satisfies the diagonal condition and is closed, since N is both symmetric and path-consistent. From N ≤ M it follows that N^{2} ≤ M^{2}. But N is path-consistent, so N = N^{2} ≤ M^{2}. This in turn implies N^{2} ≤ (M^{2})^{2}, so, using the path-consistency of N again, we get N ≤ (M^{2})^{2}. Next we show (M^{2})^{2} ≤ N. Again, we only give a sample computation. The others are similar. We have ((M^{2})^{2})_{01} ≤ M_{01} by Theorem 5.1, and

((M^{2})^{2})_{01} ≤ (M^{2})_{02};(M^{2})_{21}

= (M_{00};M_{02} · M_{01};M_{12} · M_{02};M_{22});(M_{20};M_{01} · M_{21};M_{11} · M_{22};M_{21})

≤ (M_{00};M_{02} · M_{02};M_{22});(M_{21};M_{11})
= (M_{02} · M_{00};M_{02};M_{22});(M_{21};M_{11})
≤ M_{00};M_{02};M_{22};M_{21};M_{11},

so ((M^{2})^{2})_{01} ≤ M_{01} · M_{00};M_{02};M_{22};M_{21};M_{11} = N_{01}. Thus we have N = (M^{2})^{2}. Since N is closed, so is (M^{2})^{2}, as desired.

Atomic RA matrices and proto-solvability An 𝔄-matrix M is atomic if every M_{ij} is an atom of 𝔄. N is an atomic reduction of M if N ≤ M and N is atomic. M is proto-solvable (over 𝔄) if there is a closed atomic reduction N of M. Such an N is called a proto-solution of M over 𝔄. We denote the class of all proto-solutions of M over 𝔄 by PS(𝔄, M).

If 𝔄 is atomic and M is the 𝔄-matrix of order n defined for all i, j < n by

M_{ij} = \{ \begin{matrix}1, & if i = j \\ 1 & if i ≠ j \end{matrix} ,

then PS(𝔄, M) is the set of n-by-n basic matrices of 𝔄, which is denoted by B_{n}𝔄 [39, §2(a)], [40, Def. 2(i)], [41, Def. 34(i)], [42, Def. 46]. Thus a matrix of elements of a relation algebra 𝔄 is a basic matrix if and only if it is closed, its entries are atoms, and it satisfies the diagonal condition. Basic matrices play an important role in algebraic logic [40], [43], and in algebraic topology [10, §2], where they form the cells of simplicial complexes over an arbitrary group. (The subsets of a group form a relation algebra in a natural way [5, §1].)

Solutions Whenever R is a homomorphism which maps the relation algebra 𝔄 into the relation algebra 𝔅, and M is a matrix of elements of 𝔄, then we define R(M) to be the matrix of elements of 𝔅 with labels (R(M))_{ij} = R(M_{ij}) for i, j < ord(M). If M is an 𝔄-matrix (that is, it satisfies the diagonal condition), then R(M) is a 𝔅-matrix, because the homomorphism R must map the identity element of 𝔄 to that of 𝔅, hence (R(M))_{ii} = R(M_{ii}) ≤ R(1,) = 1, for all i < ord(M). If 𝔅 is a proper relation algebra and R is one-to-one, then R is a representation. In this case, we say the 𝔄-matrix M is R-solvable if R(M) has a solution, and ⟨a_{0}, …, a_{ord(M)−1}⟩ is an R-solution of M if it is a solution of R(M). If R′ is some other representation of 𝔄, then M may be R-solvable but not R′-solvable, or vice versa, as shown by Theorem 5.9. If 𝔄 is already a proper relation algebra, then a solution of M is just an R-solution, where R is the identity isomorphism mapping 𝔄 onto itself.

The relation between proto-solvability and solutions 𝔄-matrices may have protosolutions, but yet no R-solutions for certain representations R. However, there is a particular case in which proto-solutions do correspond to solutions, and vice versa. A constraint matrix arising from a constraint problem with universe X is an ℜ𝔢(X)-matrix. In this case, solutions and proto-solutions of the constraint matrix correspond in a oneto-one manner. For example, if M is an ℜ𝔢(X)-matrix of order 3, then every solution ⟨a_{0}, a_{1}, a_{2}⟩ of M has its corresponding proto-solution

P (a_{0}, a_{1}, a_{2}) = ( \begin{matrix}\{⟨a_{0}, a_{0}⟩\} & \{⟨a_{0}, a_{1}⟩\} & \{⟨a_{0}, a_{2}⟩\} \\ \{⟨a_{1}, a_{0}⟩\} & \{⟨a_{1}, a_{1}⟩\} & \{⟨a_{1}, a_{2}⟩\} \\ \{⟨a_{2}, a_{0}⟩\} & \{⟨a_{2}, a_{1}⟩\} & \{⟨a_{2}, a_{2}⟩\} \end{matrix} ) .

Conversely, if P′ is a proto-solution of M, then there is a solution ⟨a_{0}, a_{1}, a_{2}⟩ such that P′ = P (a_{0}, a_{1}, a_{2}). To see this, first note that the atoms of ℜ𝔢(X) are singleton relations of the form {⟨a, b⟩} with a, b ∈ X. Thus the entries of P′ are singleton relations, and the ones on the main diagonal of P′ have the form {⟨a, a⟩}. Suppose P′_{00} = {⟨a, a⟩}, P′_{11} = {⟨b, b⟩}, and P′_{22} = {⟨c, c⟩}. Then, for example, P′_{01} ⊆ P′_{00};P′_{01};P′_{11} since P′ is closed, so P′_{01} = {⟨a, b⟩}. Continuing in this way, we conclude that P′ = P (a, b, c). This correspondence between solutions and proto-solutions (basic matrices) has been noted elsewhere [39, p79], [40, p965], [41, p111f].

Theorem 5.7 shows that a solution of a constraint matrix over a complete atomic proper relation algebra generates a proto-solution. Theorem 5.9 shows the converse fails in general. However, proto-solvability does entail R^{PA}-solvability for the PA (Theorem 5.10) and R^{IA}-solvability for the IA (which follows from Theorem 5.10 using the correspondence of basic IA-matrices to basic PA-matrices given in [27] or [63]).

Theorem 5.7 Let 𝔄 be a complete atomic proper relation algebra, and let M be an 𝔄-matrix. Then every solution of M is a solution of a proto-solution of M.

Proof: Suppose ⟨a_{0}, …, a_{n−1}⟩ is a solution of M. For all i, j < ord(M), we have ⟨a_{i}, a_{j}⟩ ∈ M_{ij}, but M_{ij} is the union of the set of atoms below it since 𝔄 is complete, atomic, and proper, so it follows directly that there is an atom N_{ij} ≤ M_{ij} such that ⟨a_{i}, a_{j}⟩ ∈ N_{ij}. We claim N is a proto-solution. We have to show N is path-consistent and symmetric, which we do by contradiction. Path-consistency fails only if for some i, j, k < ord(M), N_{ik} ⊈ N_{ij};N_{jk}. Since N_{ik} is an atom, it follows that N_{ik} ∩N_{ij};N_{jk} = ∅. But, since ⟨a_{0}, …, a_{n−1}⟩ is a solution of N, we have ⟨a_{i}, a_{k}⟩ ∈ N_{ik}, ⟨a_{i}, a_{j}⟩ ∈ N_{ij}, and ⟨a_{j}, a_{k}⟩ ∈ N_{jk}. These conditions imply ⟨a_{i}, a_{k}⟩ ∈ N_{ik} ∩ N_{ij};N_{jk} ≠ ∅, a contradiction. Similarly, symmetry fails only if there are some i, j < ord(M) such that N_{ij} ≠ N̆_{ij} = (N_{ji})˘ . Converses of atoms are atoms, so this yields N_{ij} ∩(N_{ji})˘ = ∅. Since ⟨a_{0}, …, a_{n−1}⟩ is a solution of N, we have ⟨a_{i}, a_{j}⟩ ∈ N_{ij} and ⟨a_{j}, a_{i}⟩ ∈ N_{ji}, hence ⟨a_{i}, a_{j}⟩ ∈ N_{ij}∩(N_{ji})˘ ≠ ∅, a contradiction.

Minimal labelings. We define the minimal labeling of an 𝔄-matrix M to be the 𝔄matrix L such that for all i, j < ord(M), L_{ij} = ∑{P_{ij} : P ∈ PS(𝔄, M)}. L_{ij} is called the minimal label for edge ⟨i, j⟩. This definition coincides with the usual definitions, e.g., [49] (in which it is called a minimal network), [6], [62], whenever 𝔄 is an atomic proper relation algebra in which every basic matrix is solvable.

Theorem 5.8 If 𝔄 is a complete atomic proper relation algebra in which every basic matrix is solvable, and M is an 𝔄-matrix, then the minimal labeling L of M is closed, and is also the smallest 𝔄-matrix equivalent to M.

Proof: Let R be an atom of 𝔄 below L_{ij}. By the definition of minimal labeling, there is some P ∈ PS(𝔄, M) such that P_{ij} = R. Since every proto-solution has a solution, there is a solution ⟨a_{0}, …, a_{n−1}⟩ of P (hence also of M) such that ⟨a_{i}, a_{j}⟩ ∈ R. For any 𝔄-matrix M′ equivalent to M, ⟨a_{0}, …, a_{n−1}⟩ is also a solution of M′, by definition. Thus R ∩ M′_{ij} ≠ ∅, but R is an atom, so R ⊆ M′_{ij}. Therefore any atom below L_{ij} is also below ⋂{M′_{ij} : M′ is equivalent to M}, and hence L_{ij} ⊆ ⋂{M′_{ij} : M′ is equivalent to M}, i.e., L is a reduction of every 𝔄-matrix equivalent to M.

To show that L is equivalent to M, let ⟨a_{0}, …, a_{n−1}⟩ be a solution of M. By Theorem 5.7, ⟨a_{0}, …, a_{n−1}⟩ is a solution of some P ∈ PS(𝔄, M). By the definition of L, P ≤ L, so ⟨a_{0}, …, a_{n−1}⟩ is also a solution of L. The converse is immediate.

To show L is path-consistent, assume it is not. Thus, for some i, j, k < ord(M), L_{ik} ⊈ L_{ij};L_{jk}. Since 𝔄 is atomic, it follows that there is some atom R such that R ⊆ L_{ik} and R ∩ L_{ij};L_{jk} = ∅. Let P ∈ PS(𝔄, M) such that R = P_{ik}. Then P_{ij} ⊆ L_{ij} and P_{jk} ⊆ L_{jk} so P_{ij};P_{jk} ≤ L_{ij};L_{jk} and thus P_{ik} ∩ P_{ij};P_{jk} = ∅, contradicting the pathconsistency of P. A similar argument shows that L is also symmetric. Consequently L is closed.

Thus L is a reduction of all RA matrices equivalent to M, is itself equivalent to M, and is closed.

Theorem 5.9 Let

M = ( \begin{matrix}1, & n & a & n \\ n & 1, & n & a \\ a & n & 1, & n \\ n & a & n & 1, \end{matrix} ) =  _{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}• •  • • 0  1 2 3n  n n n a a

Then M is a basic CA-matrix (a proto-solution) which is Ro^{CA}-solvable but not R^{CA}- solvable.

Proof: The entries of M are atoms of the CA, and M has the identity element of the CA along its main diagonal. It is easy to check that M is closed. Thus M is a basic CA-matrix. It follows that R^{CA}(M) and Ro^{CA}(M) are closed constraint matrices. It is easy to find a solution to Ro^{CA}(M), so we only show that R^{CA}(M) has no solution. To do so, we argue by contradiction. Suppose ⟨⟨q_{0}, r_{0}⟩ , ⟨q_{1}, r_{1}⟩ , ⟨q_{2}, r_{2}⟩ , ⟨q_{3}, r_{3}⟩⟩ is a solution of R^{CA}(M), where q_{0} < r_{0}, q_{1} < r_{1}, q_{2} < r_{2}, and q_{3} < r_{3}. Then ⟨⟨q_{0}, r_{0}⟩ , ⟨q_{2}, r_{2}⟩⟩ ∈ R^{CA}(a), so without loss of generality assume q_{0} < r_{0} < q_{2} < r_{2}. We have ⟨⟨q_{0}, r_{0}⟩ , ⟨q_{1}, r_{1}⟩⟩ ∈ R^{CA}(n), hence either q_{0} < q_{1} < r_{0} < r_{1} or q_{1} < q_{0} < r_{1} < r_{0}, and ⟨⟨q_{1}, r_{1}⟩ , ⟨q_{2}, r_{2}⟩⟩ ∈ R^{CA}(n), hence either q_{1} < q_{2} < r_{1} < r_{2} or q_{2} < q_{1} < r_{2} < r_{1}. Of these four apparent possibilities, only one is consistent with r_{0} < q_{2}, namely, q_{0} < q_{1} < r_{0} < q_{2} < r_{1} < r_{2}. Similarly, from ⟨⟨q_{0}, r_{0}⟩ , ⟨q_{3}, r_{3}⟩⟩ ∈ R^{CA}(n) and ⟨⟨q_{3}, r_{3}⟩ , ⟨q_{2}, r_{2}⟩⟩ ∈ R^{CA}(n) we conclude that q_{0} < q_{3} < r_{0} < q_{2} < r_{3} < r_{2}. It follows that ⟨⟨q_{1}, r_{1}⟩ , ⟨q_{3}, r_{3}⟩⟩ ∈ R^{CA}(1, + c + c̆+ n), contradicting ⟨⟨q_{1}, r_{1}⟩ , ⟨q_{3}, r_{3}⟩⟩ ∈ R^{CA}(a).

Theorem 5.10 If M is a closed PA-matrix with no 0-labels, then M is R^{PA}-solvable.

Proof: Let M be a PA-matrix of order n with M_{ij} ≠ 0 for all i, j < n. We will use standard notation for convex sets of rational numbers, e.g., (0, 1) = {r : r ∈ ℚ, 0 < r < 1\}, except that for each r ∈ (0, 1) we let \overline{\{r\}} = (0, r) ∪ (r, 1). We will construct a solution ⟨a_{0}, …, a_{n−1}⟩ inductively. Let a_{0} be any element of (0, 1). Suppose 0 < i < n and a_{0}, …, a_{i−1} have been chosen so that ⟨a_{j}, a_{k}⟩ ∈ R^{PA}(M_{jk}) for all j, k < i (in words, a_{0}, …, a_{i−1} satisfy the constraints placed on them by M) and M_{jk} = 1, whenever a_{j} = a_{k}. (The latter proviso is crucial, and will be used near the end of the proof.) We will show how to choose a_{i}.

For every j < i let

I_{j} = \{ \begin{matrix}\{a_{j}\} & if M_{ij} = 1, \\ (0, a_{j}] & if M_{ij} = b + 1, \\ [a_{j}, 1) & if M_{ij} = b̆ + 1, \\ (0, 1) & if M_{ij} = b + b̆ + 1, \\ (0, a_{j}) & if M_{ij} = b \\ (a_{j}, 1) & if M_{ij} = b̆ \\ \overline{\{a_{j}\}} & if M_{ij} = b + b̆ \end{matrix}

The cases in the definition of I_{j} are exhaustive because no label in M is 0. The definition of I_{j} is arranged so that, for every r ∈ (0, 1), r ∈ I_{j} if and only if ⟨r, a_{j}⟩ ∈ R^{PA}(M_{ij}) (which is equivalent to ⟨a_{j}, r⟩ ∈ R^{PA}(M_{ji}), by the symmetry of M).

First, we claim that I_{j} ∩I_{k} ≠ ∅ whenever j, k < i. The are 49 possibilities altogether, given that I_{j} and I_{k} can each have seven different values. The cases are indicated in the table below. The possible values for I_{k} are listed in the second row, with the associated values of M_{ik} above in the first row. The possible values of I_{j} are listed in the second column, with the associated values of M_{ji} (the converse of M_{ij}) in the first column. Each entry in the table shows the necessary and sufficient condition for I_{j} ∩ I_{k} = ∅. Many entries are blank, because in those cases we necessarily have I_{j} ∩ I_{k} ≠ ∅.

M_{ik} →  1,  b + 1, b̆ + 1,  1  b  b̆  b + b̆
M_{ji} ↓  \{a_{k}\} (0, a_{k}] [a_{k}, 1) (0, 1) (0, a_{k}) (a_{k}, 1) \overline{\{a_{k}\}}
1,  {a_{j}} a_{j} ≠ a_{k} a_{j} > a_{k} a_{j} < a_{k}  a_{j} ≥ a_{k} a_{j} ≤ a_{k} a_{j} = a_{k}
b̆ + 1, (0, a_{j}] a_{j} < a_{k}  a_{j} < a_{k}  a_{j} ≤ a_{k}
b + 1, [a_{j}, 1) a_{j} > a_{k} a_{j} > a_{k}  a_{j} ≥ a_{k}
1  (0, 1)
b̆  (0, a_{j}) a_{j} ≤ a_{k}  a_{j} ≤ a_{k}  a_{j} ≤ a_{k}
b  (a_{j}, 1) a_{j} ≥ a_{k} a_{j} ≥ a_{k}  a_{j} ≥ a_{k}
b + b̆ \overline{\{a_{j}\}} a_{j} = a_{k}

What remains is to show that every condition in the table leads to a contradiction. Consider the condition a_{j} < a_{k}, which occurs three times in the table. Since

a_{0}, …, a_{i−1} satisfy the constraints of M, we have ⟨a_{j}, a_{k}⟩ ∈ R^{PA}(M_{jk}), hence b ≤ M_{jk}. M is closed, so M_{jk} ≤ M_{ji};M_{ik}, hence b ≤ M_{ji};M_{ik}. The entries for M_{ji} and M_{ik} in the three cases are either b̆ + 1, and 1,, or 1, and b̆ + 1,, or b̆ + 1, and b̆ + 1,. In each of these cases the product M_{ji};M_{ik} is b̆ + 1,, which does not contain b, a contradiction.

Next consider the condition a_{j} ≤ a_{k}, which occurs five times in the table. Since ⟨a_{j}, a_{k}⟩ ∈ R^{PA}(M_{jk}), we have either 1, ≤ M_{jk} or b ≤ M_{jk}, i.e., 0 ≠ (b + 1,) · M_{jk}. From M_{jk} ≤ M_{ji};M_{ik} we derive 0 ≠ (b + 1,) · M_{ji};M_{ik}. But the entries for M_{ji} and M_{ik} in the five cases are either b̆ and 1,, or b̆ and b̆ + 1,, or b̆ and b̆, or b̆ + 1, and b̆, or 1, and b̆. In each of these cases the product M_{ji};M_{ik} is b̆, which is disjoint from b + 1,, a contradiction.

We leave it to the reader to derive a contradiction for the remaining entries in the table.

Consider the sets I_{0}, …, I_{i−1}. Some of them are convex sets, while all the others have the form \overline{\{r\}}. Any two of the convex sets intersect, as we have seen, so the intersection of all of them must be a nonempty convex set, by an easy-to-prove special case of Helly’s Theorem [11], [15]. If this intersection has two elements, then it has infinitely many because it is convex, so that when it is intersected with the finitely many sets \overline{\{a_{0}\}}, …, \overline{\{a_{i−1}\}}, the result still contains infinitely many elements, and we let a_{i} be any one of them.

Suppose that the intersection of the convex sets in I_{0}, …, I_{i−1} contains exactly one element. This can occur in two ways. First, suppose one of the convex sets among I_{0}, …, I_{i−1} has the form {r}, say I_{j} = {a_{j}} for some j < i. Then M_{ij} = 1, by the definition of I_{j}. No two sets among I_{0}, …, I_{i−1} are disjoint, so \overline{\{a_{j}\}} does not occur among I_{0}, …, I_{i−1}. Thus {a_{j}} = ⋂_{j=0}^{i−1} I_{j}, and we must set a_{i} = a_{j}. The constraints on a_{0}, …, a_{i} are satisfied. The special proviso is also satisfied, for if k < i and a_{i} = a_{k}, then a_{j} = a_{i} = a_{k}, hence M_{jk} = 1, (by the proviso applied to a_{0}, …, a_{i−1}), so M_{ik} ≤ M_{ij};M_{jk} = 1, ;1, = 1,, but 1, is an atom and M_{ik} ≠ 0, so M_{ik} = 1,.

So we may assume that there is no singleton among I_{0}, …, I_{i−1}, which brings us to the second way that the intersection of the convex sets in I_{0}, …, I_{i−1} can contain exactly one element, namely, that (0, r] and [r, 1) are among I_{0}, …, I_{i−1}, for some r ∈ {a_{0}, …, a_{i−1}}. Suppose (0, r] = I_{j} and [r, 1) = I_{k}, for some j, k < i. It follows that M_{ij} = b + 1,, M_{ik} = b̆ + 1,, and a_{j} = a_{k}. By the special proviso, we also have M_{jk} = 1,. But then b̆ + 1, = M_{ik} ≤ M_{ij};M_{jk} = (b + 1,);1, = b + 1,, a contradiction.

Theorem 5.10 was inspired by Theorem 4 of [65]. The following PA-matrix was presented in [62] as a counterexample to Theorem 4 of [65].

M = ( \begin{matrix}1, & b̆ + 1, & b̆ + 1, & b̆ + 1, \\ b + 1, & 1, & b + 1, & b + 1, \\ b + 1, & b̆ + 1, & 1, & b + b̆ \\ b + 1, & b̆ + 1, & b + b̆ & 1, \end{matrix} ) .

It is straightforward to check that M is closed. M shows the need for the special proviso in the proof of Theorem 5.10, for if a_{0}, a_{1}, a_{2} are chosen to be equal (and thus violate the special proviso) then there is no a_{3} such that ⟨a_{0}, a_{1}, a_{2}, a_{3}⟩ is a solution of M.

Some asymptotic complexity observations Assume that a single element composition counts as one operation, as does a single element intersection. For a finite relation algebra, this assumption is justified for asymptotic calculations, since in principle the entire (finite) composition table can be stored. For example, the composition table for the IA is of size 2^{13} · 2^{13} (if entries for 1, are omitted, one has (2 · 2^{13} − 1) fewer entries). In practice, code for iterative local algorithms on finite relation algebras may store the composition table for atoms, but calculate compositions of non-atoms dynamically [55]. For the IA the atom composition table has 13^{2} entries (again one may omit entries for 1,and use a table of size 12^{2}), so storage requirements are significantly smaller. There is also scope for clever trade-offs between store and compute.

The assumption of constant time for composition may be inappropriate in general for infinite algebras. In this case, composition may be an asymptotically non-constant operation.

Consider the IA. Obtaining an R^{IA}-solution from a basic IA-matrix is relatively easy.

Corollary 5.11 All basic IA-matrices are R^{IA}-solvable, in time quadratic in the order of the matrix.

Proof: Every basic IA-matrix M corresponds to a basic PA-matrix of order 2·ord(M)

[27] [63]. Basic PA-matrices are R^{PA}-solvable by Theorem 5.10, and R^{PA}-solutions for R^{PA}-solvable basic PA-matrices may be found in quadratic time [64].

Corollary 5.12 Obtaining a proto-solution of a closed IA-matrix is NP-complete in the order.

Proof: R^{IA}-solvability of IA-matrices is NP-complete in the order [66]. Closure is cubic time, and by Corollary 5.11, solutions can be obtained in quadratic time from proto-solutions. It follows that it is NP-complete to obtain a proto-solution of a closed IA-matrix.

The complexity of detecting proto-solvability, and of constructing a minimal labeling may differ. Detecting solvability and constructing a solution for PA-matrices is O(n^{2}) [63], but calculating a minimal labeling is only known to be O(n^{4}) [62]. Finding a minimal labeling for a constraint matrix over the IA is in NP, roughly because one may guess the labelling (O(n^{2})), then for each atom in a label (constant number of atoms, so also O(n^{2})), guess a protosolution involving that label (O(n^{2})), and finally check that the protosolution is a solution (O(n^{3})). The existence of a minimal labelling implies that there is a solution, and solvability is NP-complete [66], so finding a minimal labelling is also NP-hard. Thus finding minimal labellings for constraint matrices over the IA is NP-complete.

6 A closure algorithm scheme

The closure of a constraint matrix M is a necessary condition for the existence of solutions of M, but it is not sufficient [1]. For algebras of relations on a finite base, closure algorithms run in serial cubic time, and algorithms in the literature must perform cubically many operations on any constraint problem [35], [47]. Allen adapted such a closure algorithm to run on the IA, which is representable over an infinite base. We characterize these algorithms as iterative local algorithms^{2}, and provide a scheme, PCon, defining them. PCon computes on RA matrices, and its behavior may be considered on infinite algebras, as well as finite ones. We will note that the closure of an 𝔄-matrix can be computed in parallel O(n^{2} log n) time on finite algebras. We also note experimental evidence that, on an algebra of relations on a finite base, practical problems harder than parallel linear time are uncommon [57], [58]. However, we shall exhibit HA-matrices in Section 7 on which iterative local algorithms, whether parallel or serial, must take Ω(n^{2}) time.

2Our thanks to a referee for suggesting this terminology.

Let M be an n-by-n constraint matrix over 𝔄. If 𝔄 is complete and atomic, we have shown, under the condition that all proto-solutions of M are solvable, that among constraint matrices equivalent to M there is a least one, which is also closed (Theorem 5.8). If 𝔄 is an algebra of relations on a finite base, it is known that among constraint matrices equivalent to M which are reductions of M, there is also a greatest closed one [49, Theorem 4.1]. This greatest fixed point is the collection of largest possible relations R_{ij} which satisfy the following equations for all i, j < n:

R_{ij} ⊆ M_{ij},
R_{ii} ⊆ Id,
R_{ij} = (R_{ji})˘ ,
R_{ij} ⊆ R_{i0};R_{0j} ∩ ⋯ ∩ R_{i,n−1};R_{n−1,j}.

This theorem can be generalized to RA matrices. Define a most general closed reduction of M to be a closed reduction N of M such that all closed reductions of M are reductions of N. If there is such a reduction, it follows that it is unique, and we denote it by MGR(M). We consider the existence of MGR(M), by considering the termination of a certain algorithm scheme, PCon.

The algorithm scheme PCon is shown in Figure 1. Given a constraint matrix M, PCon computes a reduction M′ by side-effect. It is easy to see that any solution of M is also a solution of M · M̆ · M^{2}, and the converse is trivial. Thus at any step in the execution of I, the current matrix is equivalent to M. The final matrix M′ is therefore a constraint matrix equivalent to M. The scheme PCon may be regarded as a specification of a class of closure algorithms. We define an iterative local algorithm to be an algorithm that performs a computation described by PCon. An iterative local algorithm will also be called an implementation of PCon. We use the term coding to refer to program code that executes an algorithm.

All closure algorithms in the literature (e.g., [1], [35], [47], [49], [58]) are iterative local algorithms, differing according to how the computations for each individual triangle are ordered, stored, and reused. We first show that any iterative local algorithm computes MGR(M) whenever it terminates, then we consider termination of iterative local algorithms on RA matrices over various relation algebras.

Theorem 6.1 If M′ is the final RA matrix of any implementation of PCon on M that terminates, then MGR(M) exists, and M′ = MGR(M).

Proof. Let M be an RA matrix. Choose some fixed implementation I of PCon. Execute I on M, and if I terminates, let M′ be the final RA matrix. The formulation of PCon shows I terminates only when the current matrix is closed, so M′ must be closed.

Let N be a closed reduction of M. From N ≤ M, it follows that N̆ ≤ M̆ and N^{2} ≤ M^{2}. But N = N̆ = N^{2} since N is closed, so N ≤ M · M̆ · M^{2}. Thus after one

               repeat

find i, j, k such that M_{ij} ≰ M̆_{ij} · M_{ik};M_{kj} M_{ij} := M_{ij} · M̆_{ij} · M_{ik};M_{kj}

until M = M̆ = M^{2}

Figure 1: The PCon algorithm scheme

iteration of PCon, N is still smaller than the current matrix. It follows by induction that N ≤ M′. Thus M′ is a closed reduction of M that has as reductions all closed reductions of M, so by definition M′ = MGR(M).

Theorem 6.2 All iterative local implementations of PCon terminate within d · n^{2} iterations of the loop on every n-by-n constraint matrix over a finite relation algebra 𝔄 with d atoms.

Proof: The assignment statement in PCon can only leave a label unchanged or replace it with a smaller one. Each of the n^{2} labels in M can change at most as many times as there are atoms of 𝔄, namely d times. Therefore the repeat loop can be executed at most d · n^{2} times. By then a state will be reached in which there is no triangle ⟨i, j, k⟩ with M_{ij} ≰ M̆_{ij} · M_{ik};M_{kj}, that is, no violations of closure can be found, so the current matrix is closed.

The next corollary follows from Theorems 5.1, 5.4, and 5.6 and the termination condition of PCon.

Corollary 6.3 For every relation algebra 𝔄, every implementation of PCon terminates on every 𝔄-matrix M of order 3, because ((M · M̆)^{2})^{2} is closed.

On the other hand, Theorem 6.4 shows that there are RA matrices of order 4 (the smallest possible), on which no implementation of PCon terminates.

Theorem 6.4 There is a constraint matrix M of order 4 such that no iterative local algorithm terminates on M.

Proof: Let U be a countable infinite set, arranged and labeled with 0,1,2, and 3 as shown in Figure 2. For all i, j < 4 let M_{ij} be the set of all pairs ⟨u, v⟩ of elements of U such that, in Figure 2, the label of u is i, the label of v is j, and either u = v or else there is a horizontal, vertical, or diagonal line segment connecting u with v. Thus, for example, M_{00} consists of all those pairs ⟨u, u⟩ such that u ∈ U and the label on u is 0. Elements of U connected by a line segment will be called adjacent. Hence M_{01} consists of those pairs ⟨u, v⟩ such that u and v are adjacent, u is labeled 0, and v is labeled 1.

.^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.} •  •  •  •  •  •  • •  •  •  •  •  •  • •  •  •  •  •  •  • •  •  •  •  •  •  • •  •  •  •  •  •  • •  •  •  •  •  •  • •  •  •  •  •  •  • 0  0  0  0 0  0  0  0 0  0  0  0 0  0  0  0 1  1  1 1  1  1 1  1  1 1  1  1 3  3  3  3 3  3  3  3 3  3  3  3 2  2  2 2  2  2 2  2  2_{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}_{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}_{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}_{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.} M (M^{2})^{2} (((M^{2})^{2})^{2})^{2} (((((M^{2})^{2})^{2})^{2})^{2})^{2}

Figure 2: Relations in a 4-by-4 nonterminating matrix

It is straightforward to verify that successive squarings of M always produce smaller matrices, i.e.,

M > M^{2} > (M^{2})^{2} > ((M^{2})^{2})^{2} > (((M^{2})^{2})^{2})^{2} > ((((M^{2})^{2})^{2})^{2})^{2} > …

To explain how this works, we give an intuitive idea of what happens during iterated squaring. All the adjacent pairs in the first row of Figure 2 belong to M_{01} or M_{10}. All the ones in M_{01} are excluded from either M_{03};M_{31} or M_{02};M_{21}. But (M^{2})_{01} ⊆ M_{03};M_{31} · M_{02};M_{21}, so all such pairs are also excluded from (M^{2})_{01}. Similarly, the adjacent pairs in the first row which belong to M_{10} do not belong to (M^{2})_{10}. Thus none of the adjacent pairs in the first row survive into M^{2}. For similar reasons, the same is true for the adjacent pairs in the first column. All other adjacent pairs appear in M^{2}. Pairs of the form ⟨u, u⟩ also survive into M^{2}, except when u is the element in the upper left-hand corner of Figure 2. All pairs containing an element of U in the first row or first column disappear at the next squaring. Thus a diagram for (M^{2})^{2} can be obtained from Figure 2 by deleting all the elements in the first row and the first column. The restrictions which yield diagrams for (M^{2})^{2}, (((M^{2})^{2})^{2})^{2}, and (((((M^{2})^{2})^{2})^{2})^{2})^{2} are indicated in Figure 2. Thus as squaring proceeds, the array is gradually “eaten away” from the top. Since it is infinite below and to the right, there is no finite stage in this process at which any M_{ij} becomes empty, although every pair is eventually eliminated.

M := M · M̆

                              repeat

M := M^{2}

                              until M = M^{2}

Figure 3: The implementation CMat of PCon

A path-consistency algorithm. The condition M = M̆ = M^{2} is equivalent to the closure of the constraint matrix M, and squares of symmetric constraint matrices are symmetric by Theorem 5.4. This enables an elegant definition of an implementation CMat of PCon, in Figure 3, which constructs MGR(M), again by side-effect.

Practical use of CMat. CMat has been coded and used in an effective interval constraint solver, which finds a single solution (in our terminology, R^{IA}-solution) to a random^{3} interval constraint problem (i.e., IA-matrix) on the average in less than a second on a RISC workstation [28], and is also effective in finding solutions to solvable interval constraint problems of up to 200 variables (i.e. order 200) [55]. The coding of CMat embodies improvements over the algorithm as stated in Figure 3, including obvious ones such as only using and storing half of the matrix, and some non-obvious, validated by use and testing. Details are in the references.

Computing composition for algebras on finite bases For algebras of relations on (small) finite bases, it is practical to represent relations as adjacency matrices whose rows and columns are labeled by elements of the base, and compute composition as a Boolean-arithmetic operation on matrices. Boolean-arithmetic operations on 0 and 1 yield the same results as the usual arithmetic operations, except for 1 + 1 = 1. Boolean product of 0’s and 1’s is the same as in usual arithmetic.

Let U be the base, and suppose that U contains s elements. The rows and columns of an adjacency matrix M_{R} of a relation R are labeled with the elements of U. M_{R} is a 0-1-valued matrix, with (M_{R})_{ab} = 1 if and only if ⟨a, b⟩ ∈ R. Let × be the Booleanarithmetic multiplication of 0-1-matrices.

It is straightforward to see that the composition operation on finite relations may be formulated as multiplication of adjacency matrices, i.e., for binary relations R and S, M_{R;S} = M_{R} × M_{S}. This formulation of composition appears explicitly already in [52, p188] and [56, §4], and is used in [49] and [35].

Time complexity of path-consistency on finite algebras Let 𝔄 be a finite relation algebra. We may assume as before that a single element composition is one operation, as is a single element intersection. It is easy to construct a MIMD processor array that squares an 𝔄-matrix in O(log n) time, where n = ord(M), with one relationarithmetic operation per processor. This is not a practical scheme, since it requires O(n^{3}) processors, but it will suffice to obtain an upper bound estimate for parallel iterative local algorithms that is close to the lower bound result in Section 7.

3Each IA relation has equal probability of occurring as the constraint between a pair of variables.

Pairwise element compositions will be performed in parallel, each product M_{ij};M_{jk} computed on a different processor P_{ijk}. In the first step, each M_{ij} is broadcast to the 2n processors that use it, namely P_{ijk} and P_{kij} for k < n. In the second step, all the P_{ijk} compute their results. In succeeding steps, results are cumulatively intersected two at a time in parallel by ⌈log n⌉ consecutive rows of processors. Thus squaring takes O(log n) time.

Let 𝔄 have d atoms. By Theorem 6.2, the loop in CMat iterates at most d · n^{2} times. Putting this estimate together with the estimate for squaring, we obtain a parallel upper bound of O(n^{2} log n) time for the computation of MGR(M) over finite algebras.

Path-consistency computation experiments on parallel machines such as Crays, Butterflies and Connection Machines have been reported in [57], [58], for relations on a finite set. They obtain roughly linear computation times (in the order) on their sample problem set. By contrast, we construct a class of Θ(n^{2}) examples below, where n is the order.

7 A Class of Hard Examples for Path-Consistency

For each n ≥ 2 we define a symmetric HA-matrix M_{n} of order 5n + 2, and show that the computation of MGR(M_{n}) by any iterative local algorithm takes Θ(n^{2}) time. This result, along with the upper bound for CMat, bounds the asymptotic worst-case parallel complexity of iterative local algorithms for MGR within a range of “width” log(n). Our construction of M_{n} is such that, in any state before termination, there is just one unstable triangle in the M_{n}, and by stabilizing this triangle, a new unstable triangle will be created. The most efficient iterative local algorithm will visit the “right” (unstable) triangle first, then the new unstable triangle next, and so on, and will need Θ(n^{2}) triangle operations to obtain MGR(M_{n}). Since each unstable triangle is created by stabilizing the previous one, any iterative local algorithm operates essentially serially on M_{n}, and both parallel and serial algorithms of this type take the same time to stabilize the entire network.

We define M_{n} by describing its network. HA is a symmetric algebra so we may use an undirected graph, since the labels read correctly in either direction. The 5n + 2 nodes are divided into five groups: v_{0}, …, v_{n}, w_{0}, …, w_{n}, x_{0}, …, x_{n−1}, y_{0}, …, y_{n−1}, and z_{0}, …, z_{n−1}. For any nodes s, t we denote the label on the edge between s and t by

• • • • •  • • • • • • • • • • • • • • • • • v_{4} v_{3} v_{2} v_{1} v_{0}  w_{0} x_{0} y_{0} z_{0} w_{1} x_{1} y_{1} z_{1} w_{2} x_{2} y_{2} z_{2} w_{3} x_{3} y_{3} z_{3} w_{4}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}^{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}_{.}

All the solid edges are labeled with a. All the dotted edges are labeled with a + c. All other edges are labeled with a + b.

Figure 4: The Hard Algebra matrix M_{4} M_{n}(s, t). For every node s, let M_{n}(s, s) = 1,. For every i < n and every j < n + 1 let

\begin{aligned}M_{n}(v_{i}, v_{i+1}) & = a, \\ M_{n}(w_{i}, x_{i}) & = a, \\ M_{n}(x_{i}, y_{i}) & = a, \\ M_{n}(y_{i}, z_{i}) & = a, \\ M_{n}(z_{i}, w_{i+1}) & = a, \\ M_{n}(w_{0}, v_{0}) & = a, \\ M_{n}(w_{i}, v_{j}) & = a + c if i ≠ 0 or j ≠ 0, \\ M_{n}(y_{i}, v_{j}) & = a + c, \\ M_{n}(x_{i}, v_{n}) & = a + c, \\ M_{n}(z_{i}, v_{0}) & = a + c. \end{aligned}

For all other distinct nodes s, t, let M_{n}(s, t) = a + b. The network for M_{4} is shown in Figure 4. The edges drawn with solid lines are labeled with a. The dotted edges are labeled a + c. Edges from a node to itself are labeled with 1, and are not shown. All other edges are labeled with a + b, and are also not shown.

Every triangle in M_{n} is stable with one exception, namely ⟨v_{1}, v_{0}, w_{0}⟩, which has two edges labeled a, and one edge labeled a + c. It follows that M_{n}^{2} agrees with M_{n} except along edge ⟨v_{1}, w_{0}⟩, which is now labeled a. M_{n}^{2} has exactly one unstable triangle, namely ⟨v_{2}, v_{1}, w_{0}⟩, which is isomorphic to the original unstable triangle ⟨v_{1}, v_{0}, w_{0}⟩ in M_{n}. Hence every iteration of CMat stabilizes a single unstable triangle in the network and by doing so (except for the last iteration) creates a new unstable neighboring triangle. The unstable triangles propagate through the network. On the first iteration, the label on ⟨v_{1}, w_{0}⟩ changes from a + c to a; on the next, the label on ⟨v_{2}, w_{0}⟩ changes from a + c to a, and so on. Furthermore, since each iteration except the last introduces a new unstable triangle, the most efficient parallel iterative local algorithm is only as efficient as the most efficient serial one. They both take time Θ(n^{2}). In Figure 4 there are 52 edges whose labels change from a + c to a in the following order:

\begin{matrix}1. & ⟨v_{1}, w_{0}⟩ & 14. & ⟨v_{2}, w_{1}⟩ & 27. & ⟨v_{3}, w_{2}⟩ & 40. & ⟨v_{4}, w_{3}⟩ \\ 2. & ⟨v_{2}, w_{0}⟩ & 15. & ⟨v_{3}, w_{1}⟩ & 28. & ⟨v_{4}, w_{2}⟩ & 41. & ⟨v_{4}, x_{3}⟩ \\ 3. & ⟨v_{3}, w_{0}⟩ & 16. & ⟨v_{4}, w_{1}⟩ & 29. & ⟨v_{4}, x_{2}⟩ & 42. & ⟨v_{4}, y_{3}⟩ \\ 4. & ⟨v_{4}, w_{0}⟩ & 17. & ⟨v_{4}, x_{1}⟩ & 30. & ⟨v_{4}, y_{2}⟩ & 43. & ⟨v_{3}, y_{3}⟩ \\ 5. & ⟨v_{4}, x_{0}⟩ & 18. & ⟨v_{4}, y_{1}⟩ & 31. & ⟨v_{3}, y_{2}⟩ & 44. & ⟨v_{2}, y_{3}⟩ \\ 6. & ⟨v_{4}, y_{0}⟩ & 19. & ⟨v_{3}, y_{1}⟩ & 32. & ⟨v_{2}, y_{2}⟩ & 45. & ⟨v_{1}, y_{3}⟩ \\ 7. & ⟨v_{3}, y_{0}⟩ & 20. & ⟨v_{2}, y_{1}⟩ & 33. & ⟨v_{1}, y_{2}⟩ & 46. & ⟨v_{0}, y_{3}⟩ \\ 8. & ⟨v_{2}, y_{0}⟩ & 21. & ⟨v_{1}, y_{1}⟩ & 34. & ⟨v_{0}, y_{2}⟩ & 47. & ⟨v_{0}, z_{3}⟩ \\ 9. & ⟨v_{1}, y_{0}⟩ & 22. & ⟨v_{0}, y_{1}⟩ & 35. & ⟨v_{0}, z_{2}⟩ & 48. & ⟨v_{0}, w_{4}⟩ \\ 10. & ⟨v_{0}, y_{0}⟩ & 23. & ⟨v_{0}, z_{1}⟩ & 36. & ⟨v_{0}, w_{3}⟩ & 49. & ⟨v_{1}, w_{4}⟩ \\ 11. & ⟨v_{0}, z_{0}⟩ & 24. & ⟨v_{0}, w_{2}⟩ & 37. & ⟨v_{1}, w_{3}⟩ & 50. & ⟨v_{2}, w_{4}⟩ \\ 12. & ⟨v_{0}, w_{1}⟩ & 25. & ⟨v_{1}, w_{2}⟩ & 38. & ⟨v_{2}, w_{3}⟩ & 51. & ⟨v_{3}, w_{4}⟩ \\ 13. & ⟨v_{1}, w_{1}⟩ & 26. & ⟨v_{2}, w_{2}⟩ & 39. & ⟨v_{3}, w_{3}⟩ & 52. & ⟨v_{4}, w_{4}⟩ \end{matrix}

In the general case, the number of edges whose labels change from a + c to a is 2n^{2} + 5n. Summarizing, we have

Theorem 7.1 There is a class of binary constraint problems for which path-consistency is Θ(n^{2}) for iterative local algorithms, whether they execute operations in parallel or serially. In particular, for every integer n ≥ 1, M_{n} is an HA-matrix of order 5n + 2 such that CMat iterates 2n^{2} + 5n + 1 times before terminating, i.e.,

M_{n} > (M_{n} \overbrace{)^{2}}^{1} > ((M_{n} \overbrace{)^{2})^{2}}^{2} > … > (⋯ (M_{n} \overbrace{)^{2})^{2} ⋯)^{2}}^{2n^{2}+5n} = (⋯ (M_{n} \overbrace{)^{2})^{2} ⋯)^{2}}^{2n^{2}+5n+1} .

References

[1] Allen, J.F., Maintaining Knowledge about Temporal Intervals, Comm. A.C.M. 26 (11), November 1983, pp832–843.

[2] Allen J.F. and Hayes, P. J., Moments and Points in an Interval-Based Temporal Logic, Technical Report TR180, Dept. of Computer Science, University of Rochester, December 1987.

[3] Burris, S., and Sankappanavar, H.P., A Course in Universal Algebra, Springer Verlag, 1981.

[4] Chang, C.C., and Keisler, H.J., Model Theory, North-Holland, 1973.

[5] Chin, L.H., and Tarski, A., Distributive and Modular Laws in the Arithmetic of Relation Algebras, Univ. Calif. Publications in Mathematics, New Series, 1 (9), 1951, pp341–384.

[6] Dechter, R., Meiri, I., and Pearl, J., Temporal Constraint Networks. Artificial Intelligence 49, 1991, pp61–95.

[7] Dechter, R., and Pearl, J., Network-Based Heuristics for Constraint-Satisfaction Problems, Artificial Intelligence 34, 1988, pp1–38.

[8] De Morgan, A., On the Syllogism, no. IV, and on the Logic of Relations, Trans. Cambridge Philos. Soc. 10, 1864, pp331–358. (Written 1859, presented to C.P.S. 4/23/1860, published as above, reprinted in [9]).

[9] De Morgan, A., On the Syllogism and other Logical Writings, Yale University Press, New Haven, 1966.

[10] Eilenberg, S., and Mac Lane, S., Relations between Homology and Homotopy Groups of Spaces, Annals of Mathematics 46, 1945, pp480–509.

[11] Eggleston, H.G., Convexity, Cambridge University Press, 1969.

[12] Freuder, E.C., Synthesizing Constraint Expressions, Communications of the ACM 21 (11), Nov 1978, pp958–966.

[13] Golumbic, M.C., and Shamir, R., Complexity and Algorithms for Reasoning about Time: A Graph-Theoretic Approach, RUTCOR Research Report RRR # 22–91, Rutgers Center for Operations Research, New Brunswick, NJ, 1991.

[14] Güsgen, H.W., CONSAT: A System for Constraint Satisfaction, Pitman and Morgan Kaufmann, 1989.

[15] Helly, E., Über Mengen convexer Körper mit gemeinschaftlichen Punkten, Jahresberichte der Deutsch. Math. Verein. 32, 1923, pp175–176.

[16] Imielinski, T., and Lipski, W., Jr., The Relational Model of Data and Cylindric Algebras, Jour. of Computer and System Sciences 28, 1984, pp80–102.

[17] Jónsson, B., Varieties of Relation Algebras, Algebra Universalis 15, 1982, pp273– 298.

[18] Jónsson, B., The Theory of Binary Relations, in Algebraic Logic, Colloquia Mathematica Societis János Bolyai 54, North-Holland, Amsterdam, 1991, pp245–292.

[19] Jónsson, B. and Tarski, A., Boolean Algebras with Operators II, American J. Mathematics 74, 1952, pp127–162.

[20] Kautz, H.A. and Ladkin, P.B., Integrating Metric and Qualitative Temporal Reasoning, Proceedings of AAAI-91, the 9th National Conference on AI, AAAI Press 1991, pp241–246.

[21] Ladkin, P.B., Time Representation: A Taxonomy of Interval Relations, Proceedings of the 5th National Conference on AI (AAAI-86), 1986, pp360-366.

[22] Ladkin, P.B., Models of Axioms for Time Intervals, Proceedings of AAAI-87, the Sixth National Conference on Artificial Intelligence, Morgan Kaufmann 1987, pp234–239; Kestrel Institute Technical Report KES.U.87.4. (long version), Palo Alto CA, 1987.

[23] Ladkin, P.B., The Logic of Time Representation, dissertation, University of California, Berkeley, 1987, pp130; Kestrel Institute Technical Report KES.U.87.13, Palo Alto CA, 1987.

[24] Ladkin, P.B., Satisfying First-Order Constraints about Time Intervals, Proceedings of the 7th National Conference on AI, (AAAI-88), Morgan Kaufmann 1988, pp512–517; Constraint Satisfaction in Time Interval Structures I: Convex Intervals, Kestrel Institute Technical Report KES.U.87.11 (long version), Palo Alto CA 1987.

[25] Ladkin, P.B., Constraint Reasoning With Intervals: A Tutorial, Survey, and Bibliography, Technical Report TR-90-059, International Computer Science Institute, Berkeley CA, Sept. 1990.

[26] Ladkin, P.B. and Maddux, R.D., The Algebra of Convex Time Intervals, Kestrel Institute Technical Report KES.U.87.2, 1987 (short version); Representation and Reasoning with Convex Time Intervals, Kestrel Institute Technical Report KES.U.88.2, Palo Alto CA, 1988 (long version).

[27] Ladkin, P.B., and Maddux, R.D., On Binary Constraint Networks, Kestrel Institute Technical Report KES.U.88.8, Palo Alto CA, 1988.

[28] Ladkin, P.B., and Reinefeld, A., How to Solve Interval Constraint Networks: The Definitive Answer – Probably, Technical Report TR-91-063, International Computer Science Institute, Berkeley CA, Nov. 1991.

[29] Ligozat, G., and Bestougeff, H., On Relations Between Intervals, Information Processing Letters 32, 1989, pp177–182.

[30] Ligozat, G., Weak Representations of Interval Algebras, Proceedings of AAAI-90, the Eight National Conference on Artificial Intelligence, AAAI Press 1990, pp715– 720.

[31] Ligozat, G., Intervalles généralisés I, II Comptes Rendues de l’Academie des Sciences de Paris, t. 310, Série I, 1990, pp225–228 and pp299–302.

[32] Ligozat, G., On Generalized Interval Calculi, Proceedings of AAAI-91, the Ninth National Conference on Artificial Intelligence, AAAI Press 1991, pp234–240.

[33] Lyndon, R.C., The Representation of Relational Algebras, Annals of Math. Series 2, 51, 1950, pp707–729.

[34] Lyndon, R.C., The Representation of Relational Algebras, II, Annals of Math. Series 2, 63, 1956, pp294–307.

[35] Mackworth, A.K., Consistency in Networks of Relations, Artificial Intelligence 8, 1977, pp99–118.

[36] Mackworth, A.K., Constraint Satisfaction, in the Encyclopedia of Artificial Intelligence, ed. S. Shapiro, Wiley Interscience 1987.

[37] Mackworth, A.K., and Freuder, E.C., The Complexity of Some Polynomial Network Consistency Algorithms for Constraint Satisfaction Problems, Artificial Intelligence 25, pp65–74, 1985.

[38] Maddux, R.D., Some Varieties Containing Relation Algebras, Transactions of the American Mathematical Society 272, 1982, pp501–526.

[39] Maddux, R.D., A Sequent Calculus For Relation Algebras, Annals of Pure and Applied Logic 25, 1983, pp73–101.

[40] Maddux, R.D., Nonfinite Axiomatizability Results for Cylindric and Relation Algebras, The Journal of Symbolic Logic 54, 1989, pp951–974.

[41] Maddux, R.D., Pair-dense Relation Algebras, Transactions of the American Mathematical Society 328, 1991, pp83–131.

[42] Maddux, R.D., Introductory course on relation algebras, finite-dimensional cylindric algebras, and their interconnections, in Algebraic Logic, Colloquia Mathematica Societis János Bolyai 54, North-Holland, Amsterdam, 1991, pp361–392.

[43] Maddux, R.D., The Neat Embedding Problem and the Number of Variables Required in Proofs, Proc. Am. Math. Soc. 112, 1991, pp195–202.

[44] Maddux, R.D., The Origin of Relation Algebras in the Development and Axiomatization of the Calculus of Relations, to appear, Studia Logica.

[45] Meiri, I., Combining Qualitative and Quantitative Constraints in Temporal Reasoning, Proceedings of AAAI-91, the 9th National Conference on AI, AAAI Press 1991, pp260–267.

[46] Meiri, I., Temporal Reasoning: A Constraint-Based Approach, Ph.D. Thesis, Technical Report R-173, Cognitive Systems Laboratory, UCLA, 1992.

[47] Mohr, R., and Henderson, T.C., Arc and Path Consistency Revisited, Artificial Intelligence 28, 1986, pp225–233.

[48] Monk, J. D., On Representable Relation Algebras, Michigan Math. J. 11, 1964, pp207–210.

[49] Montanari, U., Networks of Constraints: Fundamental Properties and Applications to Picture Processing, Inform. Sci. 7, 1974, pp95–132.

[50] Nökel, K., Temporally Distributed Symptoms in Technical Diagnosis, Lecture Notes in Artificial Intelligence 517, Springer Verlag 1991.

[51] Peirce, C. S., Description of a notation for the logic of relatives, resulting from an amplification of the conceptions of Boole’s calculus of logic, Memoirs of the American Academy of Sciences 9, 1870, pp317–378. Reprint by Welch, Bigelow and Co., Cambridge, Mass., 1870, pp1–62. Also reprinted in [53].

[52] Peirce, C. S., Note B: the logic of relatives, in Studies in Logic by Members of the Johns Hopkins University, edited by C. S. Peirce, Little, Brown, and Co., Boston, 1883, pp187–203. Reprinted in [53] and in [54].

[53] Peirce, C.S., Collected Papers, Volume III, ed. Charles Hartshorne and Paul Weiss, Harvard University Press, Cambridge, 1933.

[54] Peirce, C. S., Studies in Logic by Members of the Johns Hopkins University, edited by C. S. Peirce, Introduction by M. H. Fisch, Preface by A. Eschbach, John Benjamins Publishing Co., Amsterdam and Philadelphia, 1983.

[55] Reinefeld, A., and Ladkin, P.B., Fast Solution of Large Interval Constraint Networks, J. Glasgow and R. Hedley, eds., Proceedings of the Ninth Canadian Conference on Artificial Intelligence, AI’92, Morgan Kaufkann, San Mateo, CA, 1992, pp156-162.

[56] Schröder, F.W.K.E., Vorlesungen über die Algebra der Logik (exacte Logik), Dritter Band, Algebra und Logik der Relative, Erste Abteilung, Leipzig, 1895. Reprinted Chelsea Publishing Co., N.Y., 1966.

[57] Susswein, S., Parallel Path Consistency, MS Thesis, University of Utah, Department of Computer Science, 1991.

[58] Susswein, S., Henderson, T.C., Zachary, J., Hinker, P., Hansen, C., and Marsden, G., Parallel Path Consistency, University of Utah, Technical Report UUCS-91-010, July 30, 1991.

[59] Tarski, A., On the Calculus of Relations, Journal of Symbolic Logic 6, 1941, pp73– 89.

[60] Tarski, A., Contributions to the Theory of Models, III, Koninklijkle Nederlandse Akademie van Wetenschappen. Proceedings. Series A. Mathematical Sciences (Indagationes Mathematicae 17) 58, 1955, pp56–64.

[61] Tarski, A., and Givant, S.R., A Formalization of Set Theory without Variables, Colloquium Publications in Math. 41, Amer. Math. Soc., 1987.

[62] van Beek, P.G., and Cohen, R., Approximation Algorithms for Temporal Reasoning, Proceedings of IJCAI89, the 11th Joint Conference on Artifical Intelligence, 1291– 1296, Morgan Kaufmann 1989 (short version); Exact and Approximate Reasoning about Temporal Relations, Computational Intelligence 6, 1990, pp132–144 (long version).

[63] van Beek, P.G., Exact and Approximate Reasoning about Qualitative Temporal Relations, Ph.D. Thesis (U. Waterloo), Technical Report TR 90–29, University of Alberta, Edmonton, 1990.

[64] van Beek, P.G., Reasoning about Qualitative Temporal Information, Proceedings of AAAI-90, the Eighth National Conference on Artificial Intelligence, AAAI Press 1990, pp728–734.

[65] Vilain, M., and Kautz, H., Constraint Propagation Algorithms for Temporal Reasoning, Proceedings of AAAI-86, Morgan Kaufmann, 1986, pp377-382.

[66] Vilain, M., Kautz, H., and van Beek, P.G., Constraint Propagation Algorithms for Temporal Reasoning, in Weld and de Kleer, eds., Readings in Qualititative Reasoning About Physical Systems, Morgan Kaufmann 1989, pp373-381, revised version of [65].

[67] Waltz, D.L., Generating Semantic Desciptions from Drawings of Scenes with Shadows, Technical Report AI-TR-271, Massachusetts Institute of Technology, 1972.