Theory algebras of relations

version 1.0 (February 22, 2007)

www.bucephalus.org Contents

1  Abstract  3
2  Foreword  4

I Introduction 6

3  Introduction to Theory Algebras of Relations  7

3.1 What is a relation? . . . . . . . . . . . . . . . . . . . 7 3.2 What is a theory algebra of relations? . . . . . . . . . 8 3.3 Besides, what makes propositional logic a special case

of relation algebra? . . . . . . . . . . . . . . . . . . . . . 10 3.4 What is a theory algebra, anyway? . . . . . . . . . . 11

II The language of mathematics 12

4  Idiosyncratic features  13

4.1 Text arrangement, style and layout . . . . . . . . . . 13 4.2 Deviant use of common notions . . . . . . . . . . . . 13 4.3 Default syntax for operations . . . . . . . . . . . . . 14 4.4 From ordinal to schematic mathematics . . . . . . . . 15

5  Basic concepts and notations  17

5.1 Stylistic conventions . . . . . . . . . . . . . . . . . . 17 5.2 Expressions . . . . . . . . . . . . . . . . . . . . . . . 17 5.3 A sketch of mathematical semantics . . . . . . . . . . 18 5.4 Special terms and tuples . . . . . . . . . . . . . . . . 21 5.5 Formulas . . . . . . . . . . . . . . . . . . . . . . . . 21 5.6 Classes and numbers . . . . . . . . . . . . . . . . . . 23 5.7 Operations . . . . . . . . . . . . . . . . . . . . . . . 26 5.8 Structures . . . . . . . . . . . . . . . . . . . . . . . 29

III Quasi–hierarchies 31

6  Examples of quasi–structures  32

6.1 Introduction . . . . . . . . . . . . . . . . . . . . . . 32 6.2 Power algebras . . . . . . . . . . . . . . . . . . . . . 32 6.3 A generalized quasi–boolean algebra on tuples …. 33 6.4 The theory algebra of propositional formulas . . . . . 34 6.5 Quasi–ordered classes on numbers . . . . . . . . . . . 36 6.6 The quasi–field of fractions . . . . . . . . . . . . . . 36

7  Quasi–structures and quasi–algebras  38

7.1 Special binary endorelations . . . . . . . . . . . . . . 38 7.2 Quasi–Hierarchies . . . . . . . . . . . . . . . . . . . 38 7.3 Quasi–ordered classes and poclasses . . . . . . . . . . 38 7.4 Quasi–lattices . . . . . . . . . . . . . . . . . . . . . 39 7.5 Distributivity and complementation . . . . . . . . . . 40 7.6 Quasi–algebras . . . . . . . . . . . . . . . . . . . . . 41 7.7 Quotient structures . . . . . . . . . . . . . . . . . . 43

8  Additional junctors for quasi–boolean structures  45

8.1 Junctor sets . . . . . . . . . . . . . . . . . . . . . . 45 8.2 Multiary sub– and equijunction . . . . . . . . . . . . 45

IV Records 52

9  Records, including tuples and schemas  53

9.1 Records . . . . . . . . . . . . . . . . . . . . . . . . . 53 9.2 Tuples and other special records . . . . . . . . . . . . 54 9.3 Schemas . . . . . . . . . . . . . . . . . . . . . . . . 54

10  Operations on records  56

10.1 Values, domains and codomains . . . . . . . . . . . . 56 10.2 Projections . . . . . . . . . . . . . . . . . . . . . . . 56 10.3 Relations between records . . . . . . . . . . . . . . . 56 10.4 Distinct joins . . . . . . . . . . . . . . . . . . . . . . 58 10.5 Concatenation of tuples . . . . . . . . . . . . . . . . 58

11  Order structures and junctions on records  60

11.1 Poclasses of records . . . . . . . . . . . . . . . . . . 60 11.2 Lattices on records . . . . . . . . . . . . . . . . . . . 60 11.3 Various domains of record classes . . . . . . . . . . . 61 11.4 Record junctions . . . . . . . . . . . . . . . . . . . . 61 11.5 Properties of the junctions . . . . . . . . . . . . . . . 64 11.6 Properties for compatible arguments . . . . . . . . . 67 11.7 Big junctions . . . . . . . . . . . . . . . . . . . . . . 67 11.8 The general record structure . . . . . . . . . . . . . . 69 11.9 The complete boolean algebra of projections . . . . . 70

V Schemas and their various products 72

12  Various schema and power products  73

12.1 Various products . . . . . . . . . . . . . . . . . . . . 73 12.2 Various ordinal products . . . . . . . . . . . . . . . . 74 12.3 Concatenation of tuple classes . . . . . . . . . . . . . 75 12.4 Distributivity . . . . . . . . . . . . . . . . . . . . . 76 12.5 Power products . . . . . . . . . . . . . . . . . . . . . 79

13  Digressions  81

13.1 Digression: Product and coproduct constructions … 81 13.2 Digression: Datastructures and formal languages as

coproducts of schemas . . . . . . . . . . . . . . . . . . . 82

14  Order structures on schemas  84

14.1 The operations . . . . . . . . . . . . . . . . . . . . . 84 14.2 The included schema class . . . . . . . . . . . . . . . 84 14.3 The boolean algebra of inclusions . . . . . . . . . . . 84

VI Graphs and their distinct products 86

15  Schemas and graphs  87

15.1 Schemas of record classes . . . . . . . . . . . . . . . 87 15.2 Graphs . . . . . . . . . . . . . . . . . . . . . . . . . 88

16  Partitions and distinct products  90

16.1 Class partition (record) . . . . . . . . . . . . . . . . 90 16.2 Record and schema partition . . . . . . . . . . . . . . 90 16.3 Relative distinctness . . . . . . . . . . . . . . . . . . 92 16.4 Distinct products . . . . . . . . . . . . . . . . . . . . 93 16.5 Projections of graphs . . . . . . . . . . . . . . . . . 95 16.6 Distributivity . . . . . . . . . . . . . . . . . . . . . 95

VII Relations 98

17  Relations  99

17.1 Introduction . . . . . . . . . . . . . . . . . . . . . . 99 17.2 General definition . . . . . . . . . . . . . . . . . . . 99 17.3 Ordinary relations as (schematic) relations and other

notational variations . . . . . . . . . . . . . . . . . . . . 101 17.4 Relations as functions and vice versa . . . . . . . . . 102 17.5 Tables and table representation . . . . . . . . . . . . 103 17.6 Double tables . . . . . . . . . . . . . . . . . . . . . . 104 17.7 More properties of relations . . . . . . . . . . . . . . 105 17.8 Projection relation class . . . . . . . . . . . . . . . . 106

18 Digression: null values, quasi-relations and expansions 108 18.1 Null values and quasi–relations . . . . . . . . . . . . 108 18.2 Quasi–relations as relations . . . . . . . . . . . . . . 109 18.3 Schema expansion of relations . . . . . . . . . . . . . 110

VIII Operations on relations 112

19  Some basic operations on relations  113

19.1 Schema comparison . . . . . . . . . . . . . . . . . . 113 19.2 Identity relations . . . . . . . . . . . . . . . . . . . . 114 19.3 Empty and full relations . . . . . . . . . . . . . . . . 115 19.4 Complement . . . . . . . . . . . . . . . . . . . . . . 116 19.5 Boolean operations on equi–schematic relations …. 117 19.6 Distinct (cartesian) product . . . . . . . . . . . . . . 120 19.7 Concatenation of ordinary relations . . . . . . . . . . 121

20  Schema expansion and the semantic operations  122

20.1 Schema expansion . . . . . . . . . . . . . . . . . . . 122 20.2 Semantic operations on compatible relations . . . . . 124 20.3 Digression: performing semantic operations with tables 124 20.4 Properties of semantic operations . . . . . . . . . . . 126 20.5 More derived semantic operations . . . . . . . . . . . 134

21  Decreasing the schema of relations  135

21.1 Introduction and overview . . . . . . . . . . . . . . . 135 21.2 Projection and coprojection . . . . . . . . . . . . . . 137 21.3 Properties of projections and coprojections . . . . . . 139 21.4 (Attribute) Eliminations . . . . . . . . . . . . . . . . 145 21.5 Properties of eliminations . . . . . . . . . . . . . . . 145 21.6 Reductions . . . . . . . . . . . . . . . . . . . . . . . 149 21.7 Properties of the reductions . . . . . . . . . . . . . . 151 21.8 Redundancy of attributes . . . . . . . . . . . . . . . 155

22  Attribute translation  157

22.1 Introduction . . . . . . . . . . . . . . . . . . . . . . 157 22.2 Translation of records . . . . . . . . . . . . . . . . . 157 22.3 Translations in Proj(ξ) . . . . . . . . . . . . . . . . 159 22.4 Translation of relations . . . . . . . . . . . . . . . . 160 22.5 Translations in Prel(X) . . . . . . . . . . . . . . . . 161

IX Theory algebras of relations162

23  Theory algebras on Prel (X)  163

23.1 The semantic structures on Prel (X) . . . . . . . . . 163 23.2 Selective syntactic structures on Prel (X) . . . . . . . 164 23.3 The 3–carrier syntactic structures on Prel (X) …. 165 23.4 The 2–carrier syntactic structures on Prel (X) …. 166 23.5 The 1–carrier syntactic structures on Prel (X) …. 166 23.6 Theory structures on Prel (X) . . . . . . . . . . . . . 167

A  Summary of symbols  169

1 Abstract

By (schematic) relation we mean a generalization of two other relation concepts: the n–ary or ordinary relations from mathematics and the partial tables from database theory. A theory algebra is similar to a boolean algebra. But next to this “semantical” order structure it also comprises a “syntactical” structure, which is more or less a boolean algebra as well. This text introduces these kind of relations, a couple of operations on them and investigates their properties. Certain classes of relations together with this operations constitute these (powerful, flexible and elegant) theory algebras. For the development of the whole theory some preliminary chapters are also covered: On generalizations of partial order structures and lattices, called quasi–hierarchies. On records, operations and order structures on records. On schemas and their various products. On graphs (here defined as record classes) and certain operations on them.

2 Foreword

Foreword to version 1.0

This text is a generalization of the relation concept in mathematics and computer science in a context of a whole algebra. As it is given here, the subject is a self– contained, systematic and closed piece of mathematics. On the other hand, it emerged as part of a bigger foundation project, one that puts the emphasis on “relation” rather than “set” or “function” as the most important and most basic concept for metamathematics. The main motivation for a theory algebra of relations then lies in the idea that standard predicate logic has an insufficient semantics. Given a first–order signature 𝔖 and formulas φ, ψ on that grammar, there is a standard definition of the notions “φ is valid” and “φ entails ψ”. But this semantic is only binary, a decision whether validity or entailment either holds or doesn’t hold. It induces a (quasi-) boolean algebra and tells us how and when a formula is valid or subvalent to another formula. But it doesn’t tell the “meaning” of the formula. The theory algebra 𝔓𝔯𝔢𝔩(X) of relations does provide such a semantic. The schema X is a translation of the signature 𝔖 and every (closed or open) formula denotes a unique relation in 𝔓𝔯𝔢𝔩(X). Actually, there have been earlier and well–elaborated other works to fill this gap in logical semantics. The one that comes closest to the design of theory algebras is probably the cylindric algebra.^{1} However, our text here is quite isolated and doesn’t pay proper respect to these alternative approaches. The only excuse is the impression, that they are still too artificial for our main purposes and that there is a much more “natural” semantics. The relation concept in this text (together with terminology like “record”, “schema” etc.) is taken from relational database theory.^{2} But again, the ongoing research in this area is neglected here as well. In fact, in this text we don’t even deal with the connections to logical semantics. We just present a self–contained definition of these “theory algebras of relations” and we investigate their properties. Most readers will probably discover the postponed potential applications for predicate logic themselves, since the boolean properties are so similar.

This text will certainly need error updates, maybe even changes in content over time. Therefore it carries a version number, starting with “1.0”. The idea is, to increase the minor number for each minor error update. The major number is reserved for significant changes.

Thanks to the numerous unselfish projects and people who created a whole new dimension and platform for scientific work and communication over the last years.

1Leon Henkin, J. Donald Monk, Alfred Tarski: Cylindric Algebras, (two parts) North–Holland 1971. 2The foundation paper is: E.F. Codd: A Relational Model of Data for Large Shared Data Banks, Communications of the ACM, Vol.13/6,

June 1970. A classic text book is: C.J. Date: An introduction to Database Systems, Addison Wesley, several editions.

Special thanks to the GNU/Linux and TEX/L^{A}TEX community. This text was entirely written with Kile, a free L^{A}TEX editor.

Part I

Introduction

3 Introduction to Theory Algebras of Relations

3.0.1 Overview

This introduction has three subsections:

(1) First, we define a “relation” as a schematic relation. This definition is a generalization of the usual relation concept in mathematics, that we call ordinary relation. It also includes the relation concept from database theory, called partial table in our terminology.

schematic relation

ordinary relation (mathematics)

partial table (database theory)

[figure]

[figure]

(2) Relations are interesting only when we can operate with them, i.e. in the context of an algebra of relations. We are particularly interested in operations that altogether constitute a theory algebra of relations, as we call it.

(3) One motivation for these algebras of relations is propositional logic, which can be reconstructed as a special example. On the other hand, relation algebras can be seen as generalizations of propositional logic in the sense that the restriction on binary values is repealed and arbitrary values are allowed for each atom.

3.1 What is a relation?

3.1.1 What is a schematic relation?

(1) A record (9.1.2) ξ = [ξ_{i}|i ∈ I] has for each index or attribute i of its domain I a value ξ_{i}. If I = {i_{1}, …, i_{n}} is finite, we also write ξ as

[ \begin{matrix}i_{1} & ↦ & ξ_{i1} \\ ⋮ & & ⋮ \\ i_{n} & ↦ & ξ_{in} \end{matrix} ]

(2) A schema (9.3.1) is a record X = [X_{i}|i ∈ I], where every value X_{i} is a class.

(3) The cartesian product (12.1.2) ⊗X of such a schema X is the class of all records that fit into X. More precisely,

⊗X = {[x_{i}|i ∈ I] | i ∈ X_{i} for all i ∈ I}

(4) A schematic relation (17.2.1) R is essentially made of a schema X = [X_{i}|i ∈ I] and a graph Γ, where Γ ⊆ ⊗X. Our default notation for such an R is

[\begin{matrix}X \\ Γ \end{matrix}]  or  [X, Γ]

For every x ∈ ⊗X we write x ∈ R, “x is a member of R” or “R holds for x”, iff x ∈ Γ. Otherwise, we write x ∉ R.

3.1.2 What is a table?

If R = [X, Γ] is relation with X = [X_{i}|i ∈ I], and both the attribute class I = {i_{1}, …, i_{n}} and the graph Γ = {x_{1}, …, x_{m}} are finite, then R is called a table (17.5.3), often written as

i_{1} : X_{i1} … i_{n} : X_{in}
x_{1,i1}  … x_{1,in}
⋮  ⋮
x_{m,i1}  … x_{m,in}

The head row of the table is the schema X, each subsequent row is one of the members x_{j} of the graph, where

X = [ \begin{matrix}i_{1} & ↦ & X_{i1} \\ ⋮ & & ⋮ \\ i_{n} & ↦ & X_{in} \end{matrix} ] and x_{j} = [ \begin{matrix}i_{1} & ↦ & x_{j,i1} \\ ⋮ & & ⋮ \\ i_{n} & ↦ & x_{j,in} \end{matrix} ] for j = 1, …, m

For example, a table is given by

    account no : Integer owner : String balance : Real

12340  ”alice”  243.25
12342  ”bob”  −12.05
12347  ”carl”  2000.00

3.1.3 What is a partial table?

A partial table (18.1.2) is a table, but it allows gaps or so– called null values in place of proper values. For example

    account no : Integer owner : String balance : Real

12340  243.25
12342  ”bob”
12347  ”carl”  2000.00

is a partial table, where the owner component of the first record and the balance in the second are not specified.

A partial table is very much the definition of a “relation” in database theory, where it is used to manage and retrieve (large amounts of) information. However, the interpretation of these partial tables is a controversial issue in database theory. The relational model was originally introduced by Codd^{3}, but soon the various versions of the structured query language or SQL applied a somewhat different understanding, which is sometimes critized for being less consequent and logical from the original point of view. Nowadays SQL has become the standard in practical and commercial systems, but this dominance has its critics.^{4}

In our text we will not refer to this discussion. Our genuine

3E. F. Codd, “A relational model of data for large shared data banks”, 1970, Communications of the ACM, 13(6):377-387. 4For an introduction to these issues, see e.g. the article “Relational model” on en.wikipedia.org. motivation is a generalization and reconstruction of logical calculi rather than the implementation of a database management system. However, in digression 18 we present an interpretation of null values, that allows us to properly subsume partial tables under schematic relations. In our approach we obtain

tables ⊆ partial tables ⊆ schematic relations

That way, we are probably more close to Codd and his predecessors than to the SQL approach.

3.1.4 What is an ordinary relation?

It is pretty much the standard in mathematics to define:

(1) A (n–ary) tuple (5.4.1) ξ = ⟨ξ_{1}, …, ξ_{n}⟩ is a sequence of n components ξ_{1}, …, ξ_{n}.

(2) A (n–ary) cartesian product (5.6.9) of classes C_{1}, …, C_{n} is the class of all n–tuples that fit in, i.e.

C_{1} × … × C_{n} = {⟨x_{1}, …, x_{n}⟩ | x_{1} ∈ C_{1}, …, x_{n} ∈ C_{n}}

(3) An ordinary relation R (5.7.10) is essentially given by its domain, which is a cartesian product C_{1} × … × C_{n}, and its graph Γ, which is a subclass of this domain.

In our default notation (5.7.10) we write such an ordinary relation as

R = [\begin{matrix}C_{1} ↭ … ↭ C_{n} \\ ⟨x_{1}, …, x_{n}⟩ ⇝ φ \end{matrix}]

where “C_{1} ↭ … ↭ C_{n}” is the type expression for R and φ is a formula that determines which ⟨x_{1}, …, x_{n}⟩ is a member of Γ.

For example

R := [\begin{matrix}ℤ ↭ ℤ ↭ ℤ \\ ⟨a, b, c⟩ ⇝ a + b = c \end{matrix}]

defines R to be the ordinary relation that holds for three integers a, b, c iff c is the sum of a and b. “Ordinary” can be rephrased “ordinal arity”. This example R is “3–ary” or “ternary”.

3.1.5 What makes every ordinary relation a schematic relation?

A tuple ⟨ξ_{1}, …, ξ_{n}⟩ can be (re–)defined (9.2.1) as a finite record on the ordinal number^{5} {1, …, n}, i.e. we could declare

⟨ξ_{1}, …, ξ_{n}⟩ := [ξ_{i}|i ∈ {1, …, n}]

That way and with some changes in the notation, every ordinary relation turns into a schematic relation: The cartesian class product C_{1} × … × C_{n} now is the special case of the more general cartesian product applied to the ordinal schema ⟨C_{1}, …, C_{n}⟩, i.e.

C_{1} × … × C_{n} = ⊗⟨C_{1}, …, C_{n}⟩

The change of an ordinal relation

R = [\begin{matrix}C_{1} ↭ … ↭ C_{n} \\ ⟨x_{1}, …, x_{n}⟩ ⇝ φ \end{matrix}]

into a proper schematic relation is then merely a change in the notation

R = [\begin{matrix}⟨C_{1}, …, C_{n}⟩ \\ \{⟨x_{1}, …, x_{n}⟩ ∈ ⊗⟨C_{1}, …, C_{n}⟩ | φ\} \end{matrix}]

so that we may state that it actually is a schematic relation, i.e.

ordinary relation ⊆ schematic relation

3.1.6 What is a relation?

A schematic relation is a generalization of both the “relation” from mathematics and the “relation” in database theory, at least in some particular version of database theory. Due to this general character we usually say relation instead of schematic relation.

3.2 What is a theory algebra of relations?

3.2.1 What do Proj(X), Rel(X) and Prel(X) stand for?

P(C) := {A | A ⊆ C} is the power class (5.6.13) of a given class C.

Let X = [X_{i}|i ∈ I] be a proper schema from now on. Then

Proj(X) := {[X_{j}|j ∈ J] | J ⊆ I}

is the projection class (10.2.6) of X

Rel(X) := \{ [\begin{matrix}X \\ Γ \end{matrix}] Γ ⊆ ⊗X \}

is the relation class (17.2.6) on X

Prel(X) := ⋃_{Y ∈Proj(X)}Rel(Y)

is the projection relation class (17.8.1) on X

3.2.2 What makes Proj(X) a boolean algebra?

For two records, in particular for two schemas Y = [Y_{j}|j ∈ J] and Z = [Z_{k}|k ∈ K] we define (10.3.2)

Y ≤ Z iff J ⊆ K and Y_{j} = Z_{j} for all j ∈ J

Thus Proj(X) is the class of all the schemas Y with Y ≤ X. And together with ≤, this class makes a poclass (i.e. ≤ is a partial order on Proj(X)).

⟨Proj(X), ≤⟩ even turns out to be a boolean algebra (11.9.4) with ♣ Y ∧ Z := [X_{i}|i ∈ (J ∩ K)] the meet of Y and Z

5 More often, the n–th ordinal number is defined as {0, 1, …, n − 1} rather than {1, …, n}, but that wouldn’t make a significant difference.

♣ Y ∨ Z := [X_{i}|i ∈ (J ∪ K)] the join of Y and Z ♣ X \ Y := [X_{i}|i ∈ (I \ J)] the complement of Y ♣ ⟨⟩ the bottom element ♣ X the top element

for all Y = [X_{j}|j ∈ J] and Z = [X_{k}|k ∈ K] in Proj(X).

3.2.3 What makes Rel(X) a boolean algebra?

We can inherit the inclusion ⊆ from the algebra of classes, i.e. we put (19.5.1)

[\begin{matrix}X \\ Γ \end{matrix}] ⊆ [\begin{matrix}X \\ Σ \end{matrix}] iff Γ ⊆ Σ

That way Rel(X) turns into a poclass, isomorph to ⟨P(⊗X), ⊆⟩. As such, it even is a (complete) boolean algebra (19.5.10), denoted by ℜ𝔢𝔩(X), with

[\begin{matrix}X \\ Γ \end{matrix}] ∩ [\begin{matrix}X \\ Σ \end{matrix}] := [\begin{matrix}X \\ Γ ∩ Σ \end{matrix}] [\begin{matrix}X \\ Γ \end{matrix}] ∪ [\begin{matrix}X \\ Σ \end{matrix}] := [\begin{matrix}X \\ Γ ∪ Σ \end{matrix}]

as meet and join and

¬[\begin{matrix}X \\ Γ \end{matrix}] := [\begin{matrix}X \\ (⊗X) \ Γ \end{matrix}]  ⊥_{X} := [\begin{matrix}X \\ ∅ \end{matrix}]  ⊤_{X} := [\begin{matrix}X \\ ⊗X \end{matrix}]

as complement, bottom and top, respectively.

3.2.4 What makes Prel(X) a quasi–boolean algebra?

Prel(X) is a superclass of Rel(Y), for every Y ≤ X, and each ℜ𝔢𝔩(Y) is a boolean algebra. So let us seek for a structure 𝔓𝔯𝔢𝔩(X) on the carrier class Prel(X) which is a superstructure of each of the ℜ𝔢𝔩(Y). And this time, let us use the square symbols “⊑, ≡, ⊓, ⊔” to denote the according operations. The unary ¬ remains the same with the definition from in 3.2.3.

For all R = [Y, Γ] and S = [Z, Σ] in Prel(X) the new operations must satisfy the embedding properties (20.4.4): If Y = Z, then

R ⊓ S := R ∩ S  R ⊔ S := R ∪ S  R ⊑ S iff R ⊆ S

The problem is the definition of the more general case, where Y ≠ Z may occur.

Later on, we will succeed in defining these operations properly and 𝔓𝔯𝔢𝔩(X) will be a kind of boolean algebra as well, but only a “quasi” kind. Different to ⊆, this ⊑ is not a partial order, but a only a quasi–order. It is not canonic (or anti– symmetric) anymore, i.e. R and S may be equivalent (R ≡ S, i.e. R ⊑ S and S ⊑ R), but still not the same. ^{6}

For example, for Y ≠ Z, the two relations ⊥_{Y} and ⊥_{Z} are equivalent, however not identical.

3.2.5 What makes Prel(X) a theory algebra?

That it is not just one, but a special combination of two quasi– order structures is the characteristic feature of a theory algebra. For this particular structure 𝔓𝔯𝔢𝔩(X) this means: ♣ The semantic structure is given by the subvalence relation ⊑ (and the derived ≡, ⊓, ⊔ etc.), which essentially compares the graphs of the given relations.

♣ The syntactic structure on the other hand is given by the subschema relation ⊴ (and the derived ≜, ⇑, ⇓ etc.).

The definition (19.1.2) of ⊴ on Prel(X) is simply

[\begin{matrix}Y \\ Γ \end{matrix}] ⊴ [\begin{matrix}Z \\ Σ \end{matrix}] iff Y ≤ Z

Again, ⊴ is not a proper partial, but only a quasi–order on Prel(X), because there are equi–schematic (19.1.2) relations (R ≜ S, i.e. R ⊴ S and S ⊴ R), which are not identical. For example, ⊥_{X} ≜ ⊤_{X}.

For this particular theory algebra 𝔓𝔯𝔢𝔩(X), identity means “bi–equivalence” in the sense that

[\begin{matrix}Y \\ Γ \end{matrix}] = [\begin{matrix}Z \\ Σ \end{matrix}] iff [\begin{matrix}Y \\ Γ \end{matrix}] ≜ [\begin{matrix}Z \\ Σ \end{matrix}] and [\begin{matrix}Y \\ Γ \end{matrix}] ≡ [\begin{matrix}Z \\ Σ \end{matrix}]

Similar to the operations ⊓, ⊔ etc. we could introduce say “∧, ∨” etc. by specifying the “…” in the definitions

[\begin{matrix}Y \\ Γ \end{matrix}] ∧ [\begin{matrix}Z \\ Σ \end{matrix}] := [\begin{matrix}Y ∧ Z \\ … \end{matrix}] and [\begin{matrix}Y \\ Γ \end{matrix}] ∨ [\begin{matrix}Z \\ Σ \end{matrix}] := [\begin{matrix}Y ∨ Z \\ … \end{matrix}]

etc. But we use a different approach, one that is less elegant from an algebraic point of view, but more practical for the application fields we have in mind. We define ∥, ⇑, ⇓ not as binary functions on Prel(X), but as binary operations of the mixed type

Prel(X) × Proj(X) ⟶ Prel(X)

So let R = [Y, Γ] ∈ Prel(X) and Z ∈ Proj(X) be given.

First of all, the expansion (20.1.1) of R by Z has the form

R ∥ Z := [\begin{matrix}Y ∨ Z \\ Γ′ \end{matrix}]

where Γ′ is uniquely determined by demanding that R ∥ Z ≡ R shall hold.^{7}

On the other hand, we should have a similar equivalent reduction (21.1.2) of R onto Z,

R ⇕ Z := [\begin{matrix}Z \\ Γ′′ \end{matrix}]

where again Γ′′ is determined by R ⇕ Z ≡ R. But different to the expansion, such a graph for an equivalent schema reduction does not always exist. However, we have two unique reductions onto Z, that come closest to R, namely ♣ a supremum reduction (21.6.1) R ⇓ Z, that is the least supervalent relation on Z, i.e. the least of all the R′ ∈ Rel(Z) with R ⊑ R′, and similarly,

♣ a infimum reduction (21.6.1) R ⇑ Z, which is the greatest subvalent element of Rel(Z).

6 Important structures on poclasses (7.2.2), in particular lattices (7.4.9) and boolean lattices/algebras (7.6.2), have become standard concepts in mathematics. But a generalization of order– and lattice theory on the basis of quasi–ordered classes (7.2.2) that introduces quasi–lattices (7.4.9) and quasi–boolean algebras (7.6.2), is not that common. We therefore give an overview of such a generalization in the special chapter of III .

7 In fact, this Γ′ is given by Γ′ = {ξ ∨ υ | ξ ∈ Γ, υ ∈ ⊗(Z \ Y)}. In the main text we actually turn around the order of the definitions and use ∥ to define ⊑, ≡, ⊓ etc. For R = [Y, Γ] and S = [Z, Σ] we put (20.2.2): R ⊑ S iff (R ∥ Z) ⊆ (S ∥ Y), R ⊓ S := (R ∥ Z) ∩ (S ∥ Y), etc.

So we always have

R ⇑ Z ⊑  R  ≡  R ∥ Z  ⊑ R ⇓ Z
∈  ∈  ∈  ∈
Rel(Z)  Rel(Y)  Rel(Y ∨ Z)  Rel(Z)

3.2.6 What else?

The main subject of this text is the introduction and investigation of these theory algebras of relations. In order to provide suitable tools for practical applications, we provide more operations on relations and discuss some other relational structures. But most of them are merely variations of the same theme.

We will not discuss possible applications and implementations of these algebras.^{8} We only demonstrate how propositional logic can be reconstructed as a special case of relation algebra. Or the other way round, how relation algebras can be understood as arbitrary value generalizations of the two–valued propositional logic.

3.3 Besides, what makes propositional logic a special case of relation algebra?

3.3.1 What is the boolean table of a propositonal formula?

Two examples of propositional formulas (6.4.1) are

-[ a ∧ -b]  and  [ a ∨ [ a ∧ b] ∨ -b]

Their semantics can be defined by so–called truth tables or boolean tables. For example

\begin{matrix}a & b \\ 0 & 0 & 1 \\ 1 & 0 & 0 \\ 0 & 1 & 1 \\ 1 & 1 & 1 \end{matrix}

is the same boolean table for both given formulas (which is why they are called equivalent). Beside the head row, the table has four rows, each one for each possible valuation of the two atoms a and b with either a 0 (or false) or a 1 (or true). And the value in the extra right column tells us if the particular valuation turns the formula into a true (=1) or false (=0) statement.

3.3.2 How does a formula turn into a relation?

Each of the four valuations can be defined as a record, which maps the atoms a, b to values of 𝔹 = {0, 1}. The collection of these four records can accordingly be defined as the cartesian product ⊗X of the schema

X := [ \begin{matrix}a ↦ & 𝔹 \\ b ↦ & 𝔹 \end{matrix} ]

So

⊗X = \{[ \begin{matrix}a ↦ & 0 \\ b ↦ & 0 \end{matrix} ] , [ \begin{matrix}a ↦ & 1 \\ b ↦ & 0 \end{matrix} ] , [ \begin{matrix}a ↦ & 0 \\ b ↦ & 1 \end{matrix} ] , [ \begin{matrix}a ↦ & 1 \\ b ↦ & 1 \end{matrix} ]\}

Now if φ is one of the two example formulas, say -[ a∧-b], then three of the four valuations hold for φ and the semantics of φ is represented by the (schematic) relation

[ \begin{matrix}X \\ \{[ \begin{matrix}a ↦ & 0 \\ b ↦ & 0 \end{matrix} ] , [ \begin{matrix}a ↦ & 0 \\ b ↦ & 1 \end{matrix} ] , [ \begin{matrix}a ↦ & 1 \\ b ↦ & 1 \end{matrix} ]\} \end{matrix} ]

according to 3.1.1, and element of Rel(X).

And this relation can as well we written in the table form of 3.1.2

\begin{matrix}a : 𝔹 & b : 𝔹 \\ 0 & 0 \\ 0 & 1 \\ 1 & 1 \end{matrix}

That way, we can say that every formula φ with atom class A is just a representation of an element of Rel([𝔹|A]) where [𝔹|A] is only another notation (9.2.4) for the schema X = [X_{a}|a ∈ A] with X_{a} = 𝔹 for all a ∈ A.

More general and in this interpretation, the class Form(A) of all propositional formulas with atoms taken from a class A quasi is just a class of representations for the relations in Prel ([𝔹|A]).

3.3.3 What makes propositional logic an algebra of relations?

Both structures are quite the same or isomorph in the sense that the formula constructors -, ∧, ∨ behave like the ¬, ⊓, ⊔.

For example, for A = {a, b, c, …} let φ_{1}, φ_{2} ∈ Form(A) be two formulas with their corresponding T_{1}, T_{2} ∈ Prel ([𝔹|A]) be given by

\begin{aligned}φ_{1} & = & -[ a ∧ -b] & φ_{2} & = & [ -b ∨ [ c ∧ -c] ] \\ T_{1} & = & \begin{matrix}a & b \\ 0 & 0 & 1 \\ 1 & 0 & 0 \\ 0 & 1 & 1 \\ 1 & 1 & 1 \end{matrix} & T_{2} & = & \begin{matrix}b & c \\ 0 & 0 & 1 \\ 1 & 0 & 0 \\ 0 & 1 & 1 \\ 1 & 1 & 0 \end{matrix} \end{aligned}

Then

8Please, check out www.bucephalus.org for more information.

T_{1} ⊓ T_{2} = \begin{matrix}a & b & c \\ 0 & 0 & 0 & 1 \\ 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 1 & 1 & 0 & 0 \\ 0 & 0 & 1 & 1 \\ 1 & 0 & 1 & 0 \\ 0 & 1 & 1 & 0 \\ 1 & 1 & 1 & 0 \end{matrix} is the table of [ φ_{1} ∧ φ_{2} ]

T_{1} ⊔ T_{2} = \begin{matrix}a & b & c \\ 0 & 0 & 0 & 1 \\ 1 & 0 & 0 & 1 \\ 0 & 1 & 0 & 1 \\ 1 & 1 & 0 & 1 \\ 0 & 0 & 1 & 1 \\ 1 & 0 & 1 & 1 \\ 0 & 1 & 1 & 1 \\ 1 & 1 & 1 & 1 \end{matrix} is the table of [ φ_{1} ∨ φ_{2} ]

¬T_{1} = \begin{matrix}a & b \\ 0 & 0 & 0 \\ 1 & 0 & 1 \\ 0 & 1 & 0 \\ 1 & 1 & 0 \end{matrix}  is the table of -φ_{1}

That way, Prel ([𝔹|A]) is a quasi–boolean algebra. It behaves as propositional logic.

3.3.4 Are there expansions and reductions for propositons?

Even more, Prel ([𝔹|A]) is a theory algebra according to 3.2.5 with the well–defined ⊴, ∥, ⇑, ⇓ etc. But here, we can simplify their type from

Prel ([𝔹|A]) × Proj([𝔹|A]) ⟶ Prel ([𝔹|A])

to

Prel ([𝔹|A]) × P(A) ⟶ Prel ([𝔹|A])

because each [𝔹|A′] ∈ Proj([𝔹|A]) is entirely given by A′ only.

So if we take T_{1} again, we have e.g.

T_{1} ∥ \{c\} = \begin{matrix}a & b \\ 0 & 0 & 1 \\ 1 & 0 & 0 \\ 0 & 1 & 1 \\ 1 & 1 & 1 \end{matrix} ∥ \{b, c\} = \begin{matrix}a & b & c \\ 0 & 0 & 0 & 1 \\ 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 1 \\ 1 & 1 & 0 & 1 \\ 0 & 0 & 1 & 1 \\ 1 & 0 & 1 & 0 \\ 0 & 1 & 1 & 1 \\ 1 & 1 & 1 & 1 \end{matrix}

Now φ_{1} = -[ a ∧ -b] is a formula for T_{1}. And T_{1} ∥ {c} is a truth table for φ_{1} as well, it only has one more atom c. If we want a proper definition of ∥ on formulas, we need to look for a transformation that returns an equivalent form, but adds the specified atoms. This task can be solved e.g. by the following approaches:

\begin{aligned}φ ∥ \{a_{1}, …, a_{n}\} & := & [ φ ∧ [ a_{1} ∨ -a_{1} ∨ … ∨ a_{n} ∨ -a_{n} ] ] \\ φ ∥ \{a_{1}, …, a_{n}\} & := & [ φ ∨ [ 0 ∧ a_{1} ∧ … ∧ a_{n} ] ] \end{aligned}

We can define the expansion within the usual framework of propositional logic. But this is not possible anymore with the reductions ⇑ and ⇓. The perform an operation that is usually called quantification: ⇑ is similar to “∀” and ⇓ is similar to “∃”. ^{9}

3.4 What is a theory algebra, anyway?

3.4.1 What is a theory algebra?

In 3.2.5 we already mentioned that the characteristic feature of theory algebras would be a certain combination of two more or less lattice–like structures, one “syntactic” and one “semantic” structure.

It is common in logic to formally characterize a theory T as a pair, made of ♣ the syntax or language Λ, which is defined as a formal lan-

guage, i.e. a class of sentences, (closed) formulas or expressions, defined by means of a signature.

♣ And a semantic, axiom class or theorem class Θ, which is a selection of all the sentences, namely the ones that are (supposed to be) valid.

This pair character of theories induces two order structures on the class of all theories: ♣ A syntactical order, T_{1} ⊴ T_{2} iff Λ_{1} ⊆ Λ_{2}, and ♣ a semantical order, where T_{1} ⊑ T_{2} iff Θ_{1} ⊆ Θ_{2},

for any two theories T_{1}, T_{2} with languages Λ_{1}, Λ_{2} and theorem classes Θ_{1}, Θ_{2}, respectively.

The semantical order, the consequence or entailment relation, is a (quasi–) boolean lattice, theories can be negated, conjunctively and disjunctively combined to new theories. All that is part of daily live in mathematics. But the syntactical order is very lattice–like as well. For certain classes of theories, this is a (quasi–) boolean lattice as well. The combination of these two lattices makes a certain kind of structure with very specific features.

A theory algebra is the abstraction of this kind of structures on theories. Is is an attempt to capture the features and properties of these double order structures. ^{10}

3.4.2 Again, what is a theory algebra of relations?

So now we have a text on the “theory algebras of relations”, but without an appropriate definition of a “theory algebra”. However we choose to keep the “theory” in the title, because there are some other designs of “relation algebras” out there and it ought to be useful to have a distinguishing and descriptive component in the title.

9 For more information on these enriched versions of propositional logic as theory algebras, see other introductions on www.bucphalus.org, e.g. “The Algebra of Worlds”.

10 In a paper called “Axioms of Theory Algebras” we presented an elaboration of this principle. But it was too closely related to propositional logic, and certain features are chosen too specific to cover a structure such as 𝔓𝔯𝔢𝔩(𝔛) as well.

Part II

The language of mathematics

4 Idiosyncratic features

4.0.3 Reading advice

In 5, we introduce the basic syntax of the language we are about to use, i.e. we provide a formal definition for expressions. The syntax is complete in the sense, that it is sufficient to express every mathematical statement that can be made at all. We intended to use standard terminology and symbolism, as far as there is one. However, in some cases we departed from conventions or created something unusual and these novelties shall be motivated and explained first here in section 4 .

4.1 Text arrangement, style and layout

4.1.1 Text pieces and addressing

The main parts are called chapters and they are identified by big romans numbers. Every proper sentence of this text occurs in a paragraph, and each paragraph is uniquely identified by three decimal numbers “n.n.n” as its index. The overall structuring of this text is done as follows:

index titles of the parts and subparts
II  this \underline{chapter}
4  this \underline{section}
4.1  this \underline{subsection}
4.1.1  this \underline{paragraph}

To provide some reference and structure inside paragraphs, we use

(1), (2), (3), ...  (a), (b), (c), ...  (i), (ii), (iii), ...

and in case there is no order required, we use item list: ♣ top level item

♠ second level item

♡ third level item ♢ fourth level item

4.1.2 Text style features

This text uses a couple of features to support efficient reading and the search of more important parts and key words.

\underline{this} indicates the definition of a new notion, which is also listed in the index register at the end

this indicates the definition of an important new symbol or formalization, which is also listed in the summary of symbols register at the end

4.1.3 Two–dimensional expressions

If expressions become long, we sometimes use compact two– dimensional^{11} versions. For class expressions, for example, we sometimes use

{x_{1}, ; x_{2}, ; ⋮ ; x_{n}} or { x ∈ C ; φ_{1}, ; ⋮ ; φ_{n} } and { x ∈ C φ_{1}, ; ⋮ ; φ_{n} }

(often without the commas) for the usual {x_{1}, x_{2}, …, x_{n}} or {x ∈ C | φ_{1}, …, φ_{n}}. Similarly for tuples ⟨…, …, …⟩ and other kind of expressions (…, …, …) we may write

⟨ \begin{matrix}… \\ … \\ … \end{matrix} ⟩  and  (\begin{matrix}… \\ … \\ … \end{matrix})

instead.

4.2 Deviant use of common notions

4.2.1 General concepts

\underline{Operation} In algebra, an “operation” is usually a binary endofunction on a given class C, i.e. a function of type C ×C ⟶ C. Instead we use operation as an informal collective notion for “relation, constant or function”. Accordingly, we can say that a structure is made of one or more classes with a couple of operations on them.

\underline{Class} A class is any collection of elements. Usually in mathematics, the term “set” is preferred over “class”, as a kind of well–defined class, since an all too naive class concept can lead to paradoxes. But we do not care about the “dangers” here and consequently favor the more general concept.You may read “set” everywhere you find a “class”, the difference does not concern this text.

\underline{Identifier} We occasionally say something like “let I be a class of identifers”. In a proper mathematical sense that only means that I can be just any class. The term identifier will remain an undefined notion, like point is undefined in geom-

11 G. Frege introduced a two–dimensional notation for mathematical logic in his Begriffsschrift. That didn’t survive and G. Peano’s linear symbolism (with ∃ and ∀ etc.) became established instead. But our proposal here is made in times of TEX L^{A}TEX and other tools, where beautiful layout doesn’t take extra efforts and really supports efficient reading.

12 It is probably fine to think of identifiers as strings like "example1", including decimal numerals like "2345" as numerical strings. This is useful, because we define records as mappings from identifiers i_{1}, …, i_{n} to objects x_{i1} , …, x_{in}, and tuples as special records, where the identifiers i_{1}, …, i_{n} are the integers 1, …, n.

13 We could take strings as identifiers, but these strings can themselves be defined as character tuples. The same way we can define decimal numerals as tuples of the decimal digits 0,1,...,9. Leaving identifiers undefined provides us with a certain flexibility. etry.^{12}The point is, that I should be a pretty primitive type in practice, e.g. strings, integers, or even just finitely many character.^{13}

4.3 Default syntax for operations

4.3.1 Standard notation for operations

We propose

symbol := [ \begin{matrix}syntax \\ semantics \end{matrix} ]

as our standard form for the definition of functions and relations.^{14} ♣ The “symbol” is an identifier, sometimes together with

some graphical features pictured by means of placeholders ◯ 1 , ◯ 2 , . . ..

For example, “ ◯ 1 + ◯ 2 ” means that “+” is used as a bi-

nary operation symbol in infix notation. “ ◯ 1 ^{f} ” explains, that the unary operation f is used in superscript notation when applied to arguments. As it is common in mathematics, we consider “ f(◯ 1 ) ” as the default arrangement for the application of an operation f. And in that case we simply write “f” again on the left side of such a definition.

♣ The “syntax” is a \underline{type expression}, i.e.

♠ D ⟶ C for functions, and

♠ D_{1} ↭ … ↭ D_{n} for n–ary relations^{15}^{16}

♣ The “semantics” is one of the following:

(a) A \underline{map(ping) expression}^{17} a ↦ τ , saying that any value for the variable a turns into the value which is defined by the term τ. A map expression on its own defines a \underline{mapping} and we make a clear distinction between the (untyped) mapping and the (typed) function.

(b) A \underline{predicator expression} a ⇝ φ , saying that any value for the variable a turns into the (false or true) expression, which is defined by the formula φ. The predicator expression defines what we call the \underline{predicator}. Neither the predicator notion nor a separate notation like our ⇝ are common concepts and that is a gap in the tradition.^{18}Note, that we again make a clear distinction between the (untyped) predicator and the (typed) relation.^{19}

For the time being we assume, that operations are \underline{ordinary} or \underline{n–ary} in the sense that their domain is an n–ary cartesian product D_{1} × … × D_{n}. An then, we use tuples ⟨a_{1}, …, a_{n}⟩ of variables in place of the single variable a and summarize:

♣ The \underline{default n–ary function expression} has the form

[ \begin{matrix}D_{1} × … × D_{n} ⟶ C \\ ⟨a_{1}, …, a_{n}⟩ ↦ τ \end{matrix} ]

where f is an identifier, the D’s and C are class expressions, the a’s are variables and τ is a term with no more free variables than the given a’s.

♣ The \underline{default n–ary relation expression} is

[ \begin{matrix}D_{1} ↭ … ↭ D_{n} \\ ⟨a_{1}, …, a_{n}⟩ ⇝ φ \end{matrix} ]

where R is an identifier, the D’s are class expressions, the a’s are variables again and φ is a formula with no more free variables than the given a’s.

4.3.2 Examples

(1) The square function on the class ℤ of integers can be defined in our standard notation by

◯ 1 ^{2} := [ \begin{matrix}ℤ ⟶ ℤ \\ n ↦ n · n \end{matrix} ]

(2) The usual linear order relation on the class ℕ := {0, 1, …} of natural numbers is given by

14 In my opinion there is the unfortunate tradition in mathematics that even the most precise authors not even try to invent a standard form at least for functions and use tiresome prose instead. Masses of clumsy sentences could be condensed into a proper notation and that can really ease the reading of texts. On the other hand, we try to be rather pragmatic than formalistic here ourselves and don’t apply the proposed notation everywhere.

15 Different to function type expressions D ⟶ C, there is no common standard for (ordinary) relation type expressions yet. Paul Taylor: A practical foundation of mathematics, 2000, suggests D_{1} ↼ ⇁ D_{2} instead of our D_{1} ↭ D_{2}.

16 We occasionally also need a relation type expression like R : D_{1} ↭ … ↭ D_{n} for the cases n = 1 and n = 0. In this text we often say that, for an operation symbol •, a dotted ◯ 1 • ◯ 2 • … • ◯ n is just a convention for the more precise •^{n}_{i=1}◯ i , which can actually be

written for n = 1 and n = 0. So when it comes to relation type expressions, it would be R :↭^{1}_{i=1} D_{i} and R :↭^{0}_{i=1} D_{i} . But it is probably

nicer and makes sense to agree (see 5.6.8) on R : Pty (D_{1}) for the unary and R : 𝔹 for the nullary case. (Recall, that 𝔹 = {0, 1} and

there are exactly two nullary relations.) Later on (in 17.2.6), we introduce a notation that will also cover these cases. In this notation we

would write R : Rel(⟨D_{1}⟩) for unary and R : Rel(⟨⟩) for nullary relation type expressions.

17Another tradition (going back to A. Church) uses the \underline{lambda expressions} λa . τ instead of our map expression a ↦ τ .

18 Be aware, that there is a difference between the formula φ and the predicator expression a ⇝ φ. The variable a occurs free in φ, but is bound in a ⇝ φ. Recall, that a map expression a ↦ τ can be applied to an argument c, often written (a ↦ τ)(c) . The result of this application is the

term τ′, obtained from τ by replacing c for every free occurence of a in τ. Similarly, we can apply a predicator expression a ⇝ φ to an argument c, written again as (a ⇝ φ)(c) , and the result is φ′, where each free occurence of a is replaced by c.

19To memorize this non–standard taxonomy of typed and untyped operations we could use “function=domain+codomain+mapping” and “relation=domain+predicator”.

\begin{aligned}◯ 1 ≤ ◯ 2 & := & [ \begin{matrix}ℕ ↭ ℕ \\ ⟨n, m⟩ ⇝ (∃d ∈ ℕ . n + d = m) \end{matrix} ] \\ & = & [ \begin{matrix}ℕ ↭ ℕ \\ ⟨n, m⟩ ⇝ (m − n ≥ 0) \end{matrix} ] \end{aligned}

(3) If ℤ^{+} := ℕ\{0} denotes the positive integers, the division rest function can be defined recursively by

◯ 1 mod ◯ 2 := [ \begin{matrix}ℕ × ℤ^{+} ⟶ ℕ \\ ⟨n, m⟩ ↦ \begin{cases}n & if n < m \\ (n − m) mod m & else \end{cases} \end{matrix} ]

(4) An example of a ternary (3–ary) relation on ℕ is the well– known “m and n are equivalent modulo d”, for d ≠ 0. We put

◯ 1 ≡ ◯ 2 MOD ◯ 3 := [ \begin{matrix}ℕ ↭ ℕ ↭ ℤ^{+} \\ ⟨n, m, d⟩ ⇝ (n mod d = m mod d) \end{matrix} ]

(5) Structures, basically a collection of operations on given classes, can be defined accordingly. For example, take a look at definition 5.8.4 to see how compact and lucid these declarations can become once the notation is accepted.

4.3.3 More complicated examples

Higher–order operations (i.e. operations with operations as arguments or results) can be elegantly formalized. Consider the previous relation

◯ 1 ≡ ◯ 2 MOD ◯ 3 : ℕ ↭ ℕ ↭ ℤ^{+}

again. It could alternatively be defined as a function

MOD ◯ 1 : ℤ^{+} ⟶ (ℕ ↭ ℕ)

which returns, for every positive d, the equivalence relation (◯ 1 ≡ ◯ 2 MOD d) on the natural numbers. Written as an anonymous function this is

[ \begin{matrix}ℤ^{+} ⟶ (ℕ ↭ ℕ) \\ d ↦ [ \begin{matrix}ℕ ↭ ℕ \\ ⟨n, m⟩ ⇝ (n mod d = m mod d) \end{matrix} ] \end{matrix} ]

Alternatively the symbol definition can be integrated in the whole definition:

MOD ◯ 1 := [ ℤ^{+} ⟶ (ℕ ↭ ℕ) d ↦ ( ◯ 1 ≡ ◯ 2 MOD d ) := [ \begin{matrix}ℕ ↭ ℕ \\ ⟨n, m⟩ ⇝ (n mod d = m mod d) \end{matrix} ] ]

4.4 From ordinal to schematic mathematics

4.4.1 Variations and generalizations

Having proposed a standard for relation expressions, we are about to modify it again in the main part of this text, when we generalize the ordinary relation concept (in definition 17.2.1). We still use the general form

[ \begin{matrix}syntax \\ semantics \end{matrix} ]

for (typed) operations. But our default form for ordinary relations

[ \begin{matrix}D_{1} ↭ … ↭ D_{n} \\ ⟨a_{1}, …, a_{n}⟩ ⇝ φ \end{matrix} ]

will be changed: ♣ The “syntax”, formerly given by the ordinary relation type

expression D_{1} ↭ … ↭ D_{n}, will now be the class tuple ⟨D_{1}, …, D_{n}⟩. A class tuple is the special ordinary case of a \underline{schema}^{20}and such a schema is the type of the new generalized type of relation. The relations domain is always the \underline{cartesian product} ⊗X of its schema X. So the information is unchanged really.

♣ The “semantics” may be specified by the \underline{graph} of the relation, i.e. the characteristic subclass of its domain. The predicator expression x ⇝ φ can then be replaced by the class expression {x ∈ ⊗X | φ}. But obviously, the information again is still the same.

4.4.2 From “ordinary” to “schematic”

Modern mathematics is “\underline{ordinary}” in the sense that operations have “ordinal arity”: their arguments are arranged as tuples and they are identified by their order in which they appear in writing. This ordinal design can be generalized towards a “\underline{schematic}” form of mathematics, where the components are freed from their ordinal determination and arbitrary index classes are allowed instead. The key terms of this transformation are the following: ♣ The main role of the \underline{tuple} is now taken by the \underline{record}, i.e.

functions that return certain values ξ_{i} for given indices i. We often use the form

[ \begin{matrix}i_{1} & ↦ & ξ_{i1} \\ ⋮ & & ⋮ \\ i_{n} & ↦ & ξ_{in} \end{matrix} ]

for finite records. Now, a tuple is just a special case of a finite record, defined as

⟨ξ_{1}, …, ξ_{n}⟩ := [ \begin{matrix}1 & ↦ & ξ_{1} \\ ⋮ & & ⋮ \\ n & ↦ & ξ_{n} \end{matrix} ]

♣ A \underline{schema} is the name of a record, in which each value is a

class. ♣ The ordinary cartesian product operator × now becomes

a special case of the more general cartesian product ⊗ , i.e. D_{1} × … × D_{n} can be redefined as ⊗⟨D_{1}, …, D_{n}⟩, and such a catesian product is defined for every schema, not just for

20 The “schema” is standard terminology in relational database theory.

class tuples ⟨D_{1}, …, D_{n}⟩. ♣ Consequently, “ordinary relations” have now become special

instances of “schematic relations”.

This “schematization” of ordinary mathematics can be taken much further and one highlight will be the translation of whole structures into one relation. But all this will be properly introduced in due course.

5 Basic concepts and notations

5.1 Stylistic conventions

5.1.1 Definition Stylistic conventions

iff  is an abbreviation of “if, and only if”

\underline{new word} this is how we mark the definition of new notions in the text

new symbol indicates the definition of an important new symbol or formalization

5.2 Expressions

5.2.1 Definition Expressions

An \underline{identifier} or \underline{symbol} is a basic building unit for expressions. An \underline{expression} is

(1) either a primitive expression

ι

i.e. an identifier or symbol ι itself

(2) or a complex expression

[figure: o; ξ_{1}; ξ_{2}; …; ξ_{n}]

i.e. an \underline{application} of the (operator) expression o to its (argument) expressions ξ_{1}, …, ξ_{n}.

5.2.2 Example

For example, suppose

+  ·  ˆ  a  2  4  7

are seven identifiers, then

[figure: +; 4; ·; ; ˆ  7; a; 2]

is an expression.

5.2.3 Remark Expressions, identifiers and symbols

(1) The “tree” definition 5.2.1 of complex expressions and the example expression in 5.2.2 may look strange and is probably not what one usually imagines. Well, first of all note, that a tree is not the picture of a tree. The point is only, that the complex expression can be uniquely decomposed into its components again, and that this deconstruction is a primitive syntactical operation. Instead of writing

[figure: o; ξ_{1}; ξ_{2}; …; ξ_{n}]

we could have written

o(ξ_{1}, …, ξ_{n})  or  (o, ξ_{1}, …, ξ_{n})

and that would turn our example into

+(4, ·(ˆ (a, 2))) or (+, 4, (·, (ˆ , a, 2), 7)) But that might still look strange, because one rather expects some picture like

“4 + a^{2} · 7”

(2) For a proper understanding of the expression concept, it is important to understand the following distinction:

(a) An utterance is the material appearence of an expression. This can be as speach, i.e. a sequence of phonems, as computer code, i.e. a sequence of keyboard characters, or as a graphic on screen or paper, i.e. a two–dimensional display of graphems.

(b) A parse tree reflects the inner structure of an expression.

For example, “FourPlusSmallASquareTimesSeven” or the L^{A}TEX code “4+2^2\cdot7” or the graphical “4 + a^{2} · 7” are utterances that, given the usual syntax rules, stands for a parse tree which might be represented by

[figure: +; 4; ·; ; ˆ  7; a; 2]

It is important to note, that mathematics is (almost) always communicated by means of utterances, but that the notion expression means the parse tree, i.e. the unambiguous syntactical structure. In computer science, this utterance–parse-tree conversion is an issue and solutions are implemented in parsers, compilers, speach recognition devices etc. But in mathematics, a proper understanding of this process is usually taken for granted and entirely left to the reader. We will also take this easy way, usually just talk about expressions and trust on the readers intuition and education.

(3) We will not define identifiers. They could comprise decimal numerals like “2435”. But they could as well be restricted to digits and letters, in which case “2435” is not a primitive, but a complex expression, made of four digits. However, for our purposes it is probably the best to associate identifers with short strings like “sample”, including numerical strings like “2435” and special characters like “+”, “Σ”, or “∫ ”.

We summarize these remarks as follows.

5.2.4 Definition Meta–syntactical conventions

oξ or o(ξ) for the unary case and more general

o(ξ_{1}, …, ξ_{n}) for the n–ary case is the default notation for the \underline{application} of an operator o on arguments ξ_{1}, …, ξ_{n}. In other words, it is the default graphical representa-

tion for the expression [figure: o; ξ_{1}; ξ_{2}; …; ξ_{n}]. But depending on the symbolization of o, there are many deviant notations and alternative configurations in mathematics. For all these non–default cases we use the following

◯ 1 , ◯ 2 , … placeholders for anonymous expressions or the definition of syntax features. For example, “◯ 1 ≤ ◯ 2 ” explains, that the identifier ≤ is used as a binary operator symbol in infix notation.

( )

Parentheses are used to disambiguate the formal structure of expressions.

5.2.5 Remark

(1) Placeholders enable us to turn an \underline{identifier} (or \underline{token}) (like “+” or “≤” or “pr”) into a proper \underline{symbol}, i.e. the token plus its graphical outfit when the according operator is applied (e.g. “◯ 1 + ◯ 2 ” or “◯ 1 ≤ ◯ 2 ” or “pr_{◯ 1} ”). Occasionally there are more identifiers to make one symbol (e.g. the three ones “if”, “then”, and “else” in the symbol “if ◯ 1 then ◯ 2 else ◯ 3 ”) or even no identifier at all (e.g. the binary symbol “◯ 1 ◯ 2 ” for the default operator application or “◯ 1 ^{◯ 2} ” for the exponentiation). However, in the sequel we will not be precise on the distinction between identifiers and symbols and just talk about symbols in general.

(2) Parentheses are no symbols in the just mentioned sense, but only auxiliary tokens to generate expressions from given utterances (see 5.2.3(1)). Due to the common conventions, we do use parentheses explicitely in particular in “f(x)”, i.e. applications of an operator f on an argument x. But it usually doesn’t lead to ambiguities to write “(fx)” or “fx” instead. There are however some exceptions: we use parentheses in “f(x_{1}, …, x_{n})” as an abbreviation for “f(⟨x_{1}, …, x_{n}⟩)”, which is standard notation in mathematics.

(3) When choosing words or acromyms for identifiers, we try to follow the standard if there is some. For example, “dom”, “false” and “id”. In our own creations we loosely apply the rule to

(a) start with a capital letter, e.g. “Rel”, if the whole thing stands for a class, in this case a class of relations,

(b) start with a small letter, e.g. “rel”, if the whole expression stand for a single say relation, and

(c) use capital letters exclusively, e.g. “REL”, for the proper class of relations (i.e. a class too big to be a set).

5.2.6 Example Example

So if we consider example 5.2.2 again, this time with symbols instead of identifiers, then “4 + a^{2} · 7” or more precisely “4 + ((a^{2}) · 7)” would be a graphical representation for the expression

[figure: ◯ 1 + ◯ 2; 4; ◯ 1 · ◯ 2; ◯ 1 ^{◯ 2}; 7; a; 2]

5.2.7 Definition Two–dimensional expressions

If expressions become long, we sometimes use compact two–dimensional versions. In particular, we may write

(ξ_{1} ; ξ_{2} ; ⋮ ; ξ_{n}) or (ξ_{1}, ; ξ_{2}, ; ⋮ ; ξ_{n}) for (ξ_{1}, …, ξ_{n}) ,

{ξ_{1} ; ξ_{2} ; ⋮ ; ξ_{n}} or {ξ_{1}, ; ξ_{1}, ; ⋮ ; ξ_{n}} for {ξ_{1}, …, ξ_{n}},

{ ξ : C ; φ_{1} ; ⋮ ; φ_{n} } or { ξ : C φ_{1} ; ⋮ ; φ_{n} } for {ξ : C | φ_{1}, …, φ_{n}}

etc.

5.2.8 Definition Substitution

ξ[ x/υ] the “\underline{substitution} of υ for x in ξ” or “ξ with x replaced by υ”, denotes the expression ξ, where every occurence of the identifier or symbol x is replaced by the expression υ.

5.2.9 Example Example

(4 + a^{2} · 7)[ a/ − 1 ] is 4 + (−1)^{2} · 7

5.2.10 Remark

We define expression classes, e.g. the propositional formula class Form (A) in 6.4.1, in a traditional way: in prose. But later on in 13.2, we present a proper formal and much more elegant way to (context–free) formal languages, namely as coproducts of schemas (12.1.2).

5.3 A sketch of mathematical semantics

5.3.1 Remark Introduction

The explanations here in this subsection 5.3 about the semantics of mathematics are not very thorough. One goal of the whole text is the attempt to fill this gap later on.

5.3.2 Definition Types, values and environments

An expressions ξ can have a \underline{type} τ, which is a class, and a \underline{value} ω, which is an element of τ. An \underline{environment} (or \underline{context}) is a collection of expressions together with their possible types and values. In a given environment, an expression is called \underline{(well-) typed} if it has a well–defined class as type, \underline{(well-) instantiated} if it has a well–defined value, and \underline{(well-) defined} if it is both well–typed and well– instantiated and its value is a proper element of its type. There is also an alternative terminology that we are going to use: If, in a given environment, an expression does have a unique value assigned, we call it \underline{closed} and its potential value is a \underline{constant (value)}. Otherwise, the expression is \underline{open} and its value is a \underline{variable (value)}.

5.3.3 Remark

(1) Not all the expressions need to be typed and instantiated explicitely in an environment. Often, their types and values are derivable. For example, if “5” is the usual well–defined integer and “◯ 1 · ◯ 2 ” the usual integer multiplication, we can evaluate the value and type for “5 · 5” according to the usual method from 5.3.4.

(2) If again “5” and “◯ 1 ≤ ◯ 2 ” are the usual constant operators on the class ℤ of integers and v is a new identifier in the given environment, then “v ≤ 5” is an open expression, or more precisely, an open formula (5.3.11). “∀v . v ≤ 5” is a closed formula, however not a well–typed one, because v is not yet typed. “∀v : ℤ . v ≤ 5” on the other hand would be typed and the whole formula is well–defined. Also, if “v : ℤ” has modified the envionment before so that v is typed, then “∀v . v ≤ 5” would as well be a well–defined formula and its value would be true.

(3) The previous example also shows that an environment is a somehow dynamic concept, often varying between an expression and its subexpressions because some operators like the ones in 5.3.5, but also closing operators like “∀” or “↦” create (temporary) bindings for their arguments.

(4) Two special and important environments in mathematics are created in the following two cases.

(a) The definition of a (concrete) structure, see for example the boolean value algebra in 5.8.4, introduces a couple of well–defined identifiers or symbols.

(b) A theory or abstract structure first introduces a signature, i.e. same class variables and some typed operator variables, and second names some axioms, i.e. closed formulas based on this vocabulary.

5.3.4 Remark Type and value evaluation

Given an environment ε and an expression ξ.

(1) If ξ is an identifier ι, the type of ξ is the type of ι and the value of ξ is the value of ι in ε.

(2) If ξ is an complex expression o(ξ_{1}, …, ξ_{n}), then

(a) ξ can be well–defined only if o is an operator expression and the codomain types of the ξ_{1}, …, ξ_{n} are compatible with the domain type of o,

(b) the type of ξ is the codomain type of o, and

(c) the value of ξ is the result of the ξ_{1}, …, ξ_{n} under o.

As it is common in mathematics and some computer languages (while forbidden in others), we allow symbols to be \underline{overloaded}, i.e. one symbol may be used to represent several different operators, if the domains of these operators are clearly distinct. For example, “◯ 1 ≤ ◯ 2 ” denotes the linear order between integers as well as real numbers, we will use it to compare two records etc. In all these cases, it is the type of the used arguments that determines which of the operators is intended in a given application.

5.3.5 Definition Operators on environments

ξ := ω is the general form of an \underline{assignment} (or \underline{instantiation}) and it defines ω to be the (new) value of ξ in the current environment. Usually, ξ is an identifier or symbol, but occasionally it may be a more complex expression.

ξ : τ

is the general form of an \underline{type expression}, which is a constraint to the possible values of ξ, that now has to be element of the class τ.

ξ := [ \begin{matrix}τ \\ ω \end{matrix} ] stands for (ξ : τ) := ω or ξ := (ω : τ) and is our default notation for a full operator definition, i.e. a simultaneous type constraint and instantiation.

5.3.6 Remark

(1) “ξ : τ” is what we call a type expression, but sometimes, that notion only applies to the class expression “τ”. This ambiguity shouldn’t cause major problems in the sequel.

(2) Somehow, the type expression “ξ : C” is similar to the element expression “ξ ∈ C”. But “ξ ∈ C” denotes a truth value, “ξ : C” denotes the value ξ and causes a kind of side effect on the environment that restricts the possible values for ξ. However and despite these fundamental differences, both expressions are often confused and it is very common to use the element expression instead of a type expression. We will also do so and write something like “{n ∈ ℕ | n ≥ 7}” (see 5.6.2) or “∀n ∈ ℕ . n + 7 > 5” (see 5.5.5).

(3) According to the derivability of types (5.3.4) there is a certain freedom on the location of type expression. Using the “◯ 1 : ◯ 2 ” notation is a side effect on the environment but does not change the value. Let us take the two most important kinds of operators to explain that:

(a) A function is a mapping with an explicit domain and codomain (see 5.7.3) But this could also be written as a map expression with implicit type exprssions. For example, the square function ◯ 1 ^{2} on the integers is in our de-

fault notation (see 5.7.3) written as “[\begin{matrix}ℤ ⟶ ℤ \\ n ↦ n · n \end{matrix}]”. But

one would get the same information with “(n : ℤ) ↦ ((n · n) : ℤ)” or “(n ↦ n · n) : (ℤ ⟶ ℤ)”.

(b) An ordinary relation in our default notation (see 5.7.10), e.g. the linear order on the natural numbers

[\begin{matrix}ℕ ↭ ℕ \\ ⟨n, m⟩ ⇝ (∃d ∈ ℕ . n + d = m) \end{matrix}]

can as well be written as

⟨n : ℕ, m : ℕ⟩ ⇝ (∃d ∈ ℕ . n + d = m)

or

(⟨n, m⟩ ⇝ (∃d ∈ ℕ . n + d = m)) : ℕ ↭ ℕ

However, these forms are usually not our first choice and we

use the “[\begin{matrix}◯ 1 \\ ◯ 2 \end{matrix}]” as the default version.

(4) An assignment “x := ξ” is a kind of abbreviation. It allows us to use the simple “x” for the complex “ξ” in new expressions. From a sematical point of view, this is no real contribution and no new information. So somehow, the assignment “x := ξ” is similar to the equation “x = ξ”. But actually, this is not so. The equation is a statement, thus a truth value, but the assignment — if we want it to have any sematical meaning at all — denotes the entity ξ, and the fact that it also defines x, is just a side effect on the given environment. For example, “(7 + (x := 3)) · 2” is a well–defined expression, meaning “20”, with the side effect that x is defined to be 3. On the other hand, “if x = 0 then 1 else − 1” is a well–defined expression, but “if x := 0 then − 1 else 1” is not. However, we will usually avoid to use assignments inside other expressions, although it often makes sense (see example 4.3.3 again).

(5) When “ξ” in “ξ := ω” is not only an identifier or symbol, but a more complex expression, then all the free variables in “ξ” are defined via \underline{pattern matching}. For example, “⟨x, y, z⟩ := ⟨5, 5^{2}, 5^{3}⟩” is in a certain sense just an abbreviation for the three subsequent assignments “x := 5”, “y := 5^{2}”, and “z := 5^{3}”.

(6) We said that each expression can have a value and a type. According to the previous remarks, these are as follows.

(a) The type of an assignment “ξ := ω” is the type of “ξ”, which is identical with the type of “ω”, if “ξ” isn’t typed yet. Its value is ω itself.

(b) The type of a type expression “ξ : τ” is τ, its value is the value of “ξ”, if such a value is defined in the current environment, and undefined otherwise.

5.3.7 Definition Local definitions

let ◯ 1 in ◯ 2 or alternatively

◯ 2 where ◯ 1

is  our  formalization  of  a

\underline{local definition}, where the assignments made in ◯ 1 only hold for the expression ◯ 2 .

5.3.8 Example local definition

For every two real numbers p, q ∈ ℝ there are two complex numbers x_{1}, x_{2} ∈ ℂ that satisfy the equation x^{2} + p · x + q = 0. The function r with r(p, q) = ⟨x_{1}, x_{2}⟩ is defined by

r := [ \begin{matrix}ℝ × ℝ ⟶ ℂ × ℂ \\ ⟨p, q⟩ ↦ ⟨− \frac{p}{2} + w, − \frac{p}{2} − w⟩ where w := \sqrt{\frac{p2}{4} − q} \end{matrix} ]

5.3.9 Definition Two kinds of values

We distinguish two kinds of values in mathematics:

(1) \underline{classes}, i.e. collections or sets (see 5.6) or

(2) \underline{operators} (see 5.7), i.e. values that may take arguments from some \underline{domain} and return new values from some \underline{codomain}; besides they may modify the given environment.

Accordingly, every expression is a \underline{class expression} or an \underline{operator expression}.

5.3.10 Remark

(1) We introduce the essential kinds of operators in 5.7: (a) untyped mappings and typed (partial) functions,

(b) untyped predicators and typed ordinary relations, operators with the truth value codomain, which is abstracted away in the notation, so that only the domain remains.

Other basic concepts which we are about to define can be derived:

(i) constants as nullary functions, (ii) truth values as particular constants, (iii) tuples as functions with an ordinal number domain, (iv) records (to be introduced in the main text) as general-

ized tuples,

(v) structures as tuples or records, (vi) environments themselves as records or a pair of (par-

tial) functions that attach types and values to expressions,

etc. Other familiar concepts in mathematics depend on their actual definition. For example, a number might be a class (as given by the ordinal number definition 0 := ∅ and n + 1 := n ∪ {n}) or a numeral (i.e. a tuples of digits), but also as a member of a given class. Expressions themselves can be formalized as trees (i.e. recursively defined tuples on the class of identifiers). Identifiers again may be implemented in various ways as well (see 5.2.3(3)). Also, there are a couple of predefined operators like the conditional (5.4.3), the descriptor (5.4.4), operators on tuples, classes, formulas etc (see below).

(2) Our operator terminology is quite uncommon. (In algebra this usually means a binary endofunction.) But it is very helpful in our text here and there is no standard equivalent to denote the common features of functions, relations and their relatives. It also allows some elegant reconstructions, such as the introduction of “structures” as “certain operators on given classes”.

5.3.11 Definition Terms and formulas

Expressions are also divided into

(1) \underline{formulas}, i.e. expressions with truth or boolean value (see 5.5.2)

(2) \underline{terms}, i.e. expressions that stand for “(real) things” and all other values.

5.3.12 Remark

(1) For example, given the context of the usual integer structure (5.8.5), then “5”, “3+2” and “(x ↦ 9−x)(4)” are three example terms that denote the same value five. “3 ≤ 5” and “∃n . n ≤ 5” are two examples of formulas, both (of value) true.

(2) We now have two classifications for expressions: The term– formula difference and the distinction between operator expressions and class expressions.

(3) The term–formula distinction has its origin in a long philosophical tradition that distinguishes two meaningful categories in every proper language: concepts and statements (neither title is a standard). Concepts denote more or less abstract things (“a horse”, “the tail of my horse”, “the intelligence of horses”, etc.) and statements are true or false assertions (“This horse is not intelligent.”). In mathematics this view is still dominant and in mathematical logic there usually is a constructive hierarchy of first terms and formulas second. But this design is somewhat artifical and does not realy capture the real live of mathematics. Take for example the conditional expression “if φ then θ_{1} else θ_{2}” (5.4.3), which is a basic ingredient of the mathematical language, but is hard to fit into the philosophy because it is a term that has a formula as argument, thus turns around the hierachy. Many programming languages don’t suffer from this tradition anymore and subsume formulas under terms, e.g. as boolean terms.

(4) There is a close relation between terms and formulas on one hand and the taxonomy of operators (5.7) on the other:

(a) A mapping “x ↦ θ” is the closure of the open term “θ”, the free variable “x” in “θ” is now bound and “x ↦ θ” can now be applied to an argument “y”, written “(x ↦ θ)(y)”.

A function is a typed mapping.

(b) Similarly, a predicator “x ⇝ φ” is the closure of the open formula “φ” and a relation is a typed predicator.

5.4 Special terms and tuples

5.4.1 Definition Tuples

⟨x_{1}, …, x_{n}⟩ \underline{n–tuple}, for n ∈ ℕ.
⟨⟩  is the \underline{empty tuple}

lg(x)

:= n is the \underline{length} of a given tuple x = ⟨x_{1}, …, x_{n}⟩

x(i)

:=x_{i} the \underline{i–th component} of a tuple x = ⟨x_{1}, …, x_{n}⟩ and i ∈ n

x † y := ⟨x_{1}, …, x_{n}, y_{1}, …, y_{m}⟩ is the

\underline{concatenation} of two given tuples x = ⟨x_{1}, …, x_{n}⟩ and y = ⟨y_{1}, …, y_{m}⟩.

5.4.2 Remark Tuples and products

(1) 2–, 3–, 4–, etc –tuples are also called \underline{(ordered) pairs}, \underline{triples}, \underline{quadruples}, etc.

(2) Note the clear difference between an element x and an unary tuple ⟨x⟩. Accordingly, the three expressions

⟨a, b, c⟩  ⟨a, ⟨b, c⟩⟩  ⟨⟨a⟩, b, c⟩

denote three different things. In many approaches, this distinction is blurred, but we will have to be consequent on this matter.

(3) Many texts and programming language consider tuples (also called sequences, lists, stacks, arrays, strings, etc, depending on the available operations) as zero–based and rather write ⟨x_{0}, …, x_{n−1}⟩ than ⟨x_{1}, …, x_{n}⟩. But we follow the older tradition in mathematics which is to start with 1.

(4) In 9.2.1, we redefine tuples like ⟨x_{1}, …, x_{n}⟩ as (a special notation for) the surjective function (see 5.7.5)

⟨x_{1}, …, x_{n}⟩ := [ \begin{matrix}n ⟶ \{x_{1}, …, x_{n}\} \\ i ↦ x_{i} \end{matrix} ]

with n := {1, 2, …, n}. That way, tuples can be subsumed under the more general notion of records (see 9 ).

5.4.3 Definition Conditional terms

if φ then θ_{1} else θ_{2} is the usual form of a \underline{conditional expression}, where φ is a formula and θ_{1}, θ_{2} are terms.

\begin{cases}θ_{1} & if φ_{1} \\ ⋮ & ⋮ \\ θ_{n} & if φ_{n} \\ θ_{n+1} & else \end{cases} is a more compact notation for the nested conditional expression (if φ_{1} then θ_{1} else (if φ_{2}

then θ_{2}

else (... (if φ_{n}
then θ_{n}
else θ_{n+1})...)))

\begin{cases}θ_{1} & if φ_{1} \\ ⋮ & ⋮ \\ θ_{n} & if φ_{n} \end{cases} stands for  \begin{cases}θ_{1} & if φ_{1} \\ ⋮ & ⋮ \\ θ_{n} & if φ_{n} \\ undefined & else \end{cases}

But usually, the φ_{1}, …, φ_{n} exhaust all possible cases and the “undefined” scenario never occurs.

5.4.4 Definition Descriptions

the x with φ is the general form of an \underline{(untyped) description}, where x is a variable and φ is a formula (with x as free variable). It denotes the allegedly unique element x that makes φ true.

the x : C with φ or alternatively

the x ∈ C with φ is the \underline{typed description} that restricts the x to be a member of the class C.

sing (C) stands for “the x with x ∈ C” and denotes the unique element of C and is well–defined iff C is a singleton (i.e. a one–element class, 5.6.14(1))

5.4.5 Remark

(1) For example “the n : ℕ with n · n = 27” is a description for 9 and “the n : ℕ with n · n = 10” is undefined, because 10 doesn’t have a square root in ℕ.

(2) In the constitutive days of modern logic, Russell and others used the iota symbol “ι” for descriptions, Ackermann and Hilbert the “ϵ”, but most mathematical texts don’t use an explicit formalism for descriptions at all. However it is an essential feature in (meta)mathematics, in particular for the function concept (5.7.4).

5.5 Formulas

5.5.1 Definition Equation

◯ 1 = ◯ 2 is the general form of an \underline{equation}, expressing that ◯ 1 and ◯ 2 are \underline{equal} or \underline{identical}.

5.5.2 Definition truth values

false or 0 is the \underline{zero bit} or \underline{false} value
true or 1 is the \underline{unit bit} or \underline{true} value

𝔹 := \{0, 1\} is the \underline{truth} or \underline{bit} or \underline{boolean value} class

5.5.3 Definition Junction of formulas

Let φ, φ_{1}, φ_{2} be given formulas.

¬φ  “\underline{not} φ”  (\underline{negation})
φ_{1} ∧ φ_{2} “φ_{1} \underline{and} φ_{2}”  (\underline{conjunction})
φ_{1} ∨ φ_{2} “φ_{1} \underline{or} φ_{2}”  (\underline{conjunction})
φ_{1} → φ_{2} := ¬φ_{1} ∨ φ_{2}  (\underline{subjunction})
φ_{1} ↔ φ_{2} := (φ_{1} → φ_{1}) ∧ (φ_{2} → φ_{1}) (\underline{equijunction})

5.5.4 Remark

(1) For every n ∈ ℕ and formulas φ_{1}, …, φ_{n} we put

φ_{1} ∧ … ∧ φ_{2} := \begin{cases}true & if n = 0 \\ φ_{1} ∧ (φ_{1} ∧ … ∧ φ_{n}) & else \end{cases}

φ_{1} ∨ … ∨ φ_{2} := \begin{cases}false & if n = 0 \\ φ_{1} ∨ (φ_{1} ∨ … ∨ φ_{n}) & else \end{cases}

(2) We also suggest an n–ary generalization for the sub– and equijunction:

\begin{aligned}φ_{1} → … → φ_{n} & := & (φ_{1} → φ_{2}) ∧ … ∧ (φ_{n−1} → φ_{n}) \\ φ_{1} ↔ … ↔ φ_{n} & := & (φ_{1} → … → φ_{n}) ∧ (φ_{n} → … → φ_{1}) \end{aligned}

occasionally useful to express a chain condition or an equivalence class condition, respectively.

(3) We are not consequently formalistic and often use “not”, “and”, “or” etc. instead of the just defined “¬” etc. Also

“ φ_{1}, …, φ_{n} ”

is an often used alternative notation for “φ_{1} ∧ … ∧ φ_{n}” to express the simultaneous truth of multiple formulas. This is often applied in class expressions “{x | φ_{1}, …, φ_{n}}”.

5.5.5 Definition Quantifications

∃x . φ is a \underline{existentialization}, where x is a variable and φ a formula, is saying that “there is (at least) one x such that φ (is true)”.

∀x . φ is a \underline{generalization}, where x is a variable and φ a formula, is saying that “for all x, φ (is true)”.

∃x : C . φ is the explicitely typed existentialization that restricts the x to be members of the class C.

∀x : C . φ is the explicitely typed generalization that restricts the x to be members of the class C.

∃x ∈ C . φ stands for ∃x : C . φ and
∀x ∈ C . φ stands for ∀x : C . φ.

5.5.6 Remark

(1) Again we often use the words “for each” and “for all” instead of the just defined symbols.

5.5.7 Definition Sub- and equivalence of closed formulas

φ_{1} ⇒ φ_{2}

“φ_{1}  \underline{entails}  φ_{2}”  or  “φ_{2}

\underline{follows (or derives) from} φ_{1}” is the \underline{subvalence} (or \underline{entailment} or \underline{consequence}) relation, and

φ_{1} ⇔ φ_{2} “φ_{1} is \underline{equivalent} to φ_{2}” is the \underline{equivalence} relation, on closed formulas (i.e. sentences) φ_{1}, φ_{2}.

5.5.8 Remark

(1) Note the difference between the subjunction →, which takes two formulas and returns a new one, and the subvalence relation ⇒, which compares two closed formulas (also called sentences) and is an either true or false statement. The same goes for the equijunction ↔ and the equivalence ⇔.

(2) However and despite the differences we often inaccurately use the phrases “◯ 1 \underline{implies} ◯ 2 ” or even “\underline{if} ◯ 1 \underline{then} ◯ 2 ” to verbalize both “◯ 1 → ◯ 2 ” and “◯ 1 ⇒ ◯ 2 ”. And similarly we follow the common habit and use “\underline{iff}” for both ↔ and ⇔.

(3) There are two different approaches to define the subvalence relation ⇒:

(a) Semantically, ⇒ is introduced as the model–theoretical relation ⊧ , saying that φ_{1} ⊧ φ_{2} iff each model of φ_{1} is a model of φ_{2} as well.

(b) Syntactically, ⇒ is introduced as the proof–theoretical relation ⊢ , saying that φ_{1} ⊢ φ_{2} iff φ_{2} can be \underline{derived} by transforming φ_{1} according to simple replacement rules (such as 5.5.9, 5.5.10, 5.5.11)

Most of the time (i.e. in first–order predicate logic), these two approaches are equivalent. That allows us to use our ⇒ for both ⊧ and ⊢.

(4) Now given the subvalence relation, the equivalence can be properly defined as its equivalence relation in the sense that

φ_{1} ⇔ φ_{2} iff (φ_{1} ⇒ φ_{2} and φ_{2} ⇒ φ_{1}).

5.5.9 Lemma Boolean laws For all formulas φ, ψ, χ, φ_{1}, …, φ_{n} with n ∈ ℕ and every bijective function i : {1, …, n} ⟶ {1, …, n} the following statements hold:

(1) 0 ⇒ φ (least element)

(2) φ ⇒ 1 (greatest element)

(3) 1 ∧ φ ⇔ φ (neutral element of ∧)

(4) 0 ∨ φ ⇔ φ (neutral element of ∨)

(5) φ ∧ ¬φ ⇔ 0 (conjunctive complement)

(6) φ ∨ ¬φ ⇔ 1 (disjunctive complement)

(7) φ_{1}∧…∧φ_{n} ⇔ φ_{i(1)}∧…∧φ_{i(n)} (commutativity of ∧)

(8) φ_{1}∨…∨φ_{n} ⇔ φ_{i(1)}∨…∨φ_{i(n)} (commutativity of ∨)

(9) φ ∧ φ ⇔ φ (idempotency of ∧)

(10) φ ∨ φ ⇔ φ (idempotency of ∨)

(11) φ ∧ (ψ ∧ χ) ⇔ (φ ∧ ψ) ∧ χ (associativity of ∧)

(12) φ ∨ (ψ ∨ χ) ⇔ (φ ∨ ψ) ∨ χ (associativity of ∨)

(13) ψ ∧ (φ_{1} ∨ … ∨ φ_{n}) ⇔ (ψ ∧ φ_{1}) ∨ … ∨ (ψ ∧ φ_{n}) (∧ distributes over ∨)

(14) ψ ∨ (φ_{1} ∧ … ∧ φ_{n}) ⇔ (ψ ∨ φ_{1}) ∧ … ∧ (ψ ∨ φ_{n}) (∨ distributes over ∧)

(15) ¬(φ_{1} ∧…∧φ_{n}) ⇔ ¬φ_{1} ∨…∨¬φ_{n} (de Morgan’s law)

(16) ¬(φ_{1} ∨…∨φ_{n}) ⇔ ¬φ_{1} ∧…∧¬φ_{n} (de Morgan’s law)

5.5.10 Lemma Laws on sub– and equijunctions For all formulas φ and ψ holds:

(1) φ → ψ ⇔ ¬φ ∨ ψ

(2) φ ↔ ψ ⇔ (φ → ψ) ∧ (ψ → φ)

(3) φ ↔ ψ ⇔ (¬φ ∧ ¬ψ) ∨ (φ ∧ ψ)

(4) φ ↔ 0 ⇔ ¬φ

(5) φ ↔ 1 ⇔ φ

(6) φ → 0 ⇔ ¬φ

(7) φ → 1 ⇔ 1

(8) 0 → φ ⇔ 1

(9) 1 → φ ⇔ φ

(10) φ ⇒ ψ iff φ → ψ ⇔ 1

(11) φ ⇔ ψ iff φ ↔ ψ ⇔ 1

5.5.11 Lemma Laws on quantifications Let v, w be variables and C, D class symbols and φ, ψ formulas.

(1) The following statements hold in general:

(a) ¬∀v ∈ C . φ ⇔ ∃v ∈ C . ¬φ

(b) ¬∃v ∈ C . φ ⇔ ∀v ∈ C . ¬φ

(c) (∀v ∈ C . φ) ∧ (∀v ∈ C . ψ) ⇔ ∀v ∈ C . (φ ∧ ψ)

(d) (∃v ∈ C . φ) ∧ (∃v ∈ C . ψ) ⇒ ∃v ∈ C . (φ ∧ ψ)

(e) (∀v ∈ C . φ) ∨ (∀v ∈ C . ψ) ⇐ ∀v ∈ C . (φ ∨ ψ)

(f) (∃v ∈ C . φ) ∨ (∃v ∈ C . ψ) ⇔ ∃v ∈ C . (φ ∨ ψ)

(2) The following statements are true as well:

(a) ∀v ∈ C . ∀w ∈ D . φ ⇔ ∀w ∈ D . ∀v ∈ C . φ

(b) ∃v ∈ C . ∃w ∈ D . φ ⇔ ∃w ∈ D . ∃v ∈ C . φ

(c) ∃v ∈ C . ∀w ∈ D . φ ⇒ ∀w ∈ D . ∃v ∈ C . φ

(d) ∀v ∈ C . ∃w ∈ D . φ ⇐ ∃w ∈ D . ∀v ∈ C . φ (3) If w does not occur in φ, then

(a) ∀w ∈ C . φ ⇔ φ (redundant variable)

(b) ∃w ∈ C . φ ⇔ φ (redundant variable)

(c) ∀v ∈ C . φ ⇔ ∀w ∈ C . φ[ v/w] (renaming)

(d) ∃v ∈ C . φ ⇔ ∃w ∈ C . φ[ v/w] (renaming)

(4) If v is not a free variable in ψ, then (a) ∀v ∈ C . ψ ⇔ ψ

(b) ∃v ∈ C . ψ ⇔ ψ

(c) ∀v ∈ C . (φ ∧ ψ) ⇔ (∀v ∈ C . φ) ∧ ψ

(d) ∃v ∈ C . (φ ∧ ψ) ⇔ (∃v ∈ C . φ) ∧ ψ

(e) ∀v ∈ C . (φ ∨ ψ) ⇔ (∀v ∈ C . φ) ∨ ψ

(f) ∃v ∈ C . (φ ∨ ψ) ⇔ (∃v ∈ C . φ) ∨ ψ

(g) ∀v ∈ C . (φ → ψ) ⇔ (∃v ∈ C . φ) → ψ

(h) ∀v ∈ C . (ψ → φ) ⇔ ψ → ∀v ∈ C . φ

(i) ∃v ∈ C . (φ → ψ) ⇔ (∀v ∈ C . φ) → ψ

(j) ∃v ∈ C . (ψ → φ) ⇔ ψ → ∃v ∈ C . φ

(5) If C denotes a non–empty class, then (a) ∀v ∈ C . φ ⇒ ∃v ∈ C . φ

5.6 Classes and numbers

5.6.1 Introduction

(1) A \underline{class} is a collection of its \underline{members} (or \underline{elements}). A precise definition is presented by the syntax of class expressions, as introduced below.

(2) A \underline{set} is a special kind of (“small”) class, which must be specified according to certain constraints (e.g. specified by the Zermelo-Fränkel axioms) that guarantee the class to be well–defined. Most mathematics can be done with the set concept. However, we prefer to talk about “classes”.

(2) A \underline{class family} is (another name for) a class of classes.

5.6.2 Definition Class expressions

{x | φ}

“the class of all x satisfying φ” is the default form of a \underline{class expression}, where x is a variable and φ a formula with no more free variables than x.

{x ∈ C | φ(x)}

is a common version for the proper class expression {x : C | φ(x)}.

{x_{1}, …, x_{n}} := {x | x = x_{1} ∨ … ∨

x = x_{n}} is the default form of a finite class expression

∅  := \{\} is the \underline{empty class}
{θ | φ}

is a generalization of the default class expression, where θ is any term, φ a formula, and θ and φ have the same free variables x_{1}, …, x_{n}. This form is equal to the proper class expression {y | (y = θ ∧ φ}, where y is a variable different to the x_{i}.

{θ | φ_{1}, …, φ_{n}} stands for {θ | φ_{1} ∧ … ∧ φ_{n}}
{θ_{1}, …, θ_{n} | φ} stands for ∪^{n}_{i=1}{θ_{i} | φ}.

5.6.3 Definition The element relation

e ∈ C “e \underline{is in} or \underline{belongs to} (class) C” is an instance of the \underline{element} or \underline{membership} relation, where e is a term and C a class expression. If a default class expression for C is given by C = {x | φ}, the relation is defined as: e ∈ C iff φ[ x/e] is true.

e ∉ C iff ¬(e ∈ C), “e \underline{is not in} C”.

5.6.4 Definition Operations on classes

C_{1} ⊆ C_{2} iff ∀x . (x ∈ C_{1} → x ∈ C_{2})  (\underline{inclusion})
C_{1} ⊈ C_{2} iff ¬(C_{1} ⊆ C_{2})
C_{1} ⊂ C_{2} iff (C_{1} ⊆ C_{2} ∧ C_{1} ≠ C_{2})  (\underline{proper incl.})
C_{1} ⊄ C_{2} iff ¬(C_{1} ⊂ C_{2})
C_{1} ⊇ C_{2} iff (C_{2} ⊆ C_{1})

C_{1} ∩ C_{2} := \{x | x ∈ C_{1} ∧ x ∈ C_{2}\}  (\underline{intersection})
C_{1} ∪ C_{2} := \{x | x ∈ C_{1} ∨ x ∈ C_{2}\}  (\underline{union})
C_{1} ⊎ C_{2} := C_{1} ∪ C_{2}, only defined if C_{1} ∩ C_{2} = ∅

(\underline{disjunct union})

⋂ K  := \{x | ∀C ∈ K . x ∈ C\} (\underline{big intersection})
⋃ K  := \{x | ∃C ∈ K . x ∈ C\}  (\underline{big union})
C_{1} \ C_{2} := \{x | x ∈ C_{1} ∧ x ∉ C_{2}\}  (\underline{difference})

P(C)  := \{D | D ⊆ C\}  (\underline{power class})
Fin(C) := {D | D ⊆ C, D is finite }

(\underline{finite classes})

Sg(C) := \{\{x\} | x ∈ C\}  (\underline{singleton class})

sing (C)

(see 5.4.4) is the unique member of the given class C, which is undefined in case C is not a singleton (5.6.14(1)).

5.6.5 Lemma Properties of class differences

For all classes A, B, C holds

(1) A \ (B ∩ C) = (A \ B) ∪ (A \ C)

(2) A \ (B ∪ C) = (A \ B) ∩ (A \ C)

(3) (B ∩ C) \ A = (B \ A) ∩ (C \ A)

(4) (B ∪ C) \ A = (B \ A) ∪ (C \ A)

(5) (A \ B) \ C = A \ (B ∪ A)

(6) A \ (B \ C) = (A \ B) ∪ (A ∩ C)

(7) (A \ B) ∩ C = (A ∩ C) \ B

(8) (A \ B) ∪ C = (A ∪ C) \ (B \ C)

5.6.6 Definition Oppositions

For every class K of classes we define

∇K := ⋃_{C∈K} (C \ ⋃ (K \ {C}))

the \underline{opposition} of K

For any finite number of classes C_{1}, …, C_{n} we put

C_{1} ▽ … ▽ C_{n} := ∇ {C_{1}, …, C_{n}}

the \underline{opposition} of C_{1}, …, C_{n}

5.6.7 Remark opposition and other class operations

(1) For three given classes A, B, C the following Venn diagrams (the shadowed area is the result of the operation) visualize the basic operations on classes:

B A  C  B A  C
union A ∪ B ∪ C  intersection A ∩ B ∩ C

B A  C  B A  C
difference A \ B  opposition A ▽ B ▽ C

(2) The opposition A ▽ B = (A \ B) ∪ (B \ A) is more often called the \underline{symmetric difference}, but there is no real standard symbol.

(3) The result of the opposition is the class of all the elements that occur in exactly one of the argument classes. In other words, for every class family K holds:

∇K = {x ∈ ⋃ K | x ∈ C for exactly one C ∈ K}

(4) Note, that the opposition shows some unusual behavior for a class operation, e.g.

A ▽ B ▽ C ≠ (A ▽ B ▽ C) ∪ (A ∩ B ∩ C)
= (A ▽ B) ▽ C
= A ▽ (B ▽ C)

(5) An often used (but hardly ever formalized) operation is the inverse operation of “x ↦ {x}”, used to extract the (unique) element x of a given class C. We use the descriptor “sing (C)” (5.4.4) to achieve that. The result is well–defined iff C is a singleton.

5.6.8 Definition Operator classes

D −−→ C the \underline{partial function class} from D to C (see 5.7.15)

D ⟶ C the \underline{function class} from D to C (see 5.7.3)

D_{1} ↭ … ↭ D_{n} the \underline{(ordinary) relation class} on D_{1}, …, D_{n} (see 5.7.10), which is written

Pty (D_{1}) in case n = 1, because the unary relation is a \underline{property} on D_{1}, and

𝔹 for n = 0, because the nullary relation is a constant one of two possible truth values (5.5.2).

5.6.9 Definition Cartesian products

C_{1} × … × C_{n} := \{ \frac{⟨x_{1}, …, x_{n}⟩}{x_{1} ∈ C_{1}, …, x_{n} ∈ C_{n}} \}

is the \underline{cartesian product} of classes C_{1}, …, C_{n}

C^{n}  := \{ \frac{⟨x_{1}, …, x_{n}⟩}{x_{1}, …, x_{n} ∈ C} \}

the \underline{n–th (cartesian) power} of a class C and n ∈ ℕ

C^{∗} := ⋃_{n∈ℕ}C^{n} the \underline{tuple class} (or

\underline{Kleene closure}) of a class C

{⟨⟩} = C^{0} = ∅^{0} is the \underline{nullary product}, which is the same for every class C

5.6.10 Remark Cartesian products

(1) The “C_{1} × … × C_{n}” notation is properly writable only for n ≥ 2. If we actually need to write an unary product, we use “C^{1}”. (In section 12 we generalize the product notion and provide alternative notations.)

(2) We already emphasized (5.4.2) the difference between an element x and an unary tuple ⟨x⟩. Accordingly, a class C and its first power C^{1} = {⟨x⟩ | x ∈ C} are different. As another consequence, our strict version of the cartesian product is not associative:

A × (B × C) (A × B) × C A × B × C are three different tuple classes.

(3) In 12.3.2 we define, for any two tuple classes Ξ and Ξ′ the concatenation

Ξ † Ξ′ := {ξ † ξ′ | ξ ∈ Ξ, ξ′ ∈ Ξ′}

This provides us with the means to combine cartesian products

(A × B) † (C × D) = A × B × C × D

and to attach classes to existing cartesian product

A^{1} † (B × C) = (A × B) † C^{1} = A × B × C

(4) Often used in computer science are

(a) Char , a finite class of \underline{characters}, made of elements like

‘0‘ … ‘9‘ ‘A‘ … ‘Z‘ ‘a‘ … ‘z‘ …

Often used ensembles are the 7–bit or 8–bit ASCII code

with either 128 or 256 different elements.

(b) String := Char^{∗}, the \underline{strings}, where the usual notation for these character tuples is

”Hallo!” instead of ⟨‘H‘, ‘a‘, ‘l‘, ‘l‘, ‘o‘, ‘!‘⟩

5.6.11 Definition Number classes

ℕ := \{0, 1, 2, …\}  the \underline{natural numbers}
ℤ := \{…, −1, 0, 1, 2, …\}  the \underline{integers}
ℚ := \{n/d | n, d ∈ ℤ, d ≠ 0\}  the \underline{rational numbers}
ℝ  stands for the \underline{real numbers}
n := {1, 2, …, n − 1, n}  for every n ∈ ℕ

5.6.12 Definition Operations on numbers

0 1 + − · / ≤ < min max …

are the usual operations on numbers

5.6.13 Definition Cardinality of classes

card(C) the \underline{cardinality} of C, a (possibly transfinite) cardinal number

5.6.14 Definition Properties of classes

A class C is called

(1) a \underline{singleton}, if card(C) = 1, i.e. C = \{e\} for some e.

(2) \underline{finite}, if card(C) ∈ ℕ

(3) \underline{countable} or \underline{enumerable}, if card(C) ≤ card(ℕ)

5.6.15 Remark Cardinal number arithmetic

A generalization of the arithmetic of natural numbers (i.e. ℕ together with the linear order ≤, addition +, and multiplication ·) is the arithmetic of \underline{cardinal numbers}. The finite cardinal numbers are exactly the natural numbers 0, 1, 2, . . .. But there are also infinite (or transfinite) cardinals, beginning with the cardinality ℵ_{0} := card(ℕ), which is the cardinality of enumerable classes, and ℵ_{1}, the cardinality of the real numbers. The arithmetic operations can be generalized and we have, e.g.

2 < 9 2 < ℵ_{0} ℵ_{0} < ℵ_{1}
2 + 9 = 11 2 + ℵ_{0} = ℵ_{0} ℵ_{0} + ℵ_{0} = ℵ_{0}
2 · 9 = 18 2 · ℵ_{0} = ℵ_{0}

The addition and multiplication can also be generalized to an arbitrary number of arguments. For any class {κ_{i} | i ∈ I} of cardinal numbers,

∑\{κ_{i} | i ∈ I\} or ∑_{i∈I}κ_{i}  denotes the \underline{sum} of the κ_{i}

∏\{κ_{i} | i ∈ I\} or ∏_{i∈I}κ_{i}  denotes the \underline{product} of the κ_{i}

where in particular

∑ ∅ = 0 and ∏ ∅ = 1

The generalization is given by the fact that for finite cardinal number records

\begin{aligned}∑_{i∈\{i1,...,in\}}κ_{i} & = & κ_{i1} + … + κ_{in} \\ ∏_{i∈\{i1,...,in\}}κ_{i} & = & κ_{i1} · . . . · κ_{in} \end{aligned}

5.7 Operations

5.7.1 Definition Mappings

x ↦ θ is a \underline{map(ping) (expression)}, where x is a variable and θ a term.

(x ↦ θ)(σ) is the \underline{application} of the map on a given term σ. The result of this application is the term θ′, obtained from θ by replacing each free occurence of x in θ by σ.

⟨x_{1}, …, x_{n}⟩ ↦ θ is  a  \underline{n–ary}  or

\underline{ordinary map(ping) expression}, where n ∈ ℕ, the x_{1}, …, x_{n} are pairwise different variables and θ is a term with no more free variables than the x_{i}.

μ (σ_{1}, …, σ_{n}) is the \underline{application} of the n–ary map μ = (⟨x_{1}, …, x_{n}⟩ ↦ θ) on a tuple ⟨σ_{1}, …, σ_{n}⟩ of terms. The result is θ′, obtained from θ by simultaneously replacing each free occurence of an x_{i} in θ by the according σ_{i}.

[ \begin{matrix}ξ_{1} & ↦ & θ_{1} \\ ⋮ & & ⋮ \\ ξ_{n} & ↦ & θ_{n} \end{matrix} ]  stands for  x ↦ \begin{cases}θ_{1} & if x = ξ_{1} \\ θ_{2} & if x = ξ_{2} \\ ⋮ & ⋮ \\ θ_{n} & if x = ξ_{n} \end{cases}

5.7.2 Remark

(1) For example, “x ↦ (7 · x + 2)” is a map expression, which, applied to 5, returns (x ↦ (7 · x + 2)) (5) = 7 · 5 + 2 = 37 under default interpretations of the symbols involved.

(2) There is also a tradition to write “x ↦ θ” as a so–called \underline{lambda expression} “ λx . θ ”.

5.7.3 Definition Functions

f := [ \begin{matrix}D ⟶ C \\ x ↦ θ \end{matrix} ] is our default form of a \underline{(total) function} definition, saying that the identifier f is defined to be a (total) function from a class D into a class C. θ is a term of type C with no more free variables than x.

dom(f)  := D is the \underline{domain} of f
cod(f)  := C is the \underline{codomain} of f
f(a) or fa

“f \underline{of} a”, the default notation for the \underline{application} of f onto a, is the unique value or image b ∈ C for the given argument a ∈ D, given by b = (x ↦ θ)(a).

◯ 1 f ◯ 2 ◯ 1 ^{g} h_{◯ 2}^{◯ 1}

etc., usually on the left side of a function definition, denotes that an application of a n–ary function f is not written in its usual prefix notation “f(⟨x_{1}, …, x_{n}⟩)”, but in the specified way, i.e. that we write “xfy” instead of “f(x, y)”, “x^{g}” instead of “g(x)”, “h_{y}^{x}” instead of “h(x, y)”, etc.

5.7.4 Remark

(1) In set–theoretical terms a function f is usually defined as a triple f = ⟨D, C, Γ⟩, where D and C are classes and Γ ⊆ D × C is left total and right unique (i.e. for each a ∈ D there is exactly one b ∈ C with ⟨a, b⟩ ∈ Γ). This definition is easily converted to our default function form via

f = [ \begin{matrix}D ⟶ C \\ x ↦ (the b : C with ⟨x, b⟩ ∈ Γ) \end{matrix} ]

(2) Functions are usually defined as \underline{ordinary} or \underline{n–ary} functions, which means that the domain is meant to be an n–ary cartesian product D_{1} × … × D_{n}. So our \underline{standard form of an ordinal function definition} becomes

[ \begin{matrix}D_{1} × … × D_{n} ⟶ C \\ ⟨x_{1}, …, x_{n}⟩ ↦ θ \end{matrix} ]

And the application of such an n–ary f to and argument ⟨a_{1}, …, a_{n}⟩ is usually written

f(a_{1}, …, a_{n}) as a short form for f(⟨a_{1}, …, a_{n}⟩)

5.7.5 Definition Properties of functions

A function f : X ⟶ Y is

(1) \underline{injective} or an \underline{injection},

if x_{1} ≠ x_{2} implies f(x_{1}) ≠ f(x_{2}), for all x_{1}, x_{2} ∈ X.

(2) \underline{surjective} or a \underline{surjection},

if Y = {f(x) | x ∈ X}.

(3) \underline{bijective} or a \underline{bijection}, if it is both injective and surjective.

5.7.6 Definition Operations on functions

⟨⟩  := (the f : ∅ ⟶ ∅)

is the \underline{empty function} (or \underline{empty tuple}, see 5.4.1)

f|_{Z} := [\begin{matrix}Z ⟶ C \\ x ↦ f(x) \end{matrix}]

is the \underline{(domain) restriction} of a given function f : D ⟶ C onto some Z ⊆ D.

g ∘ f := [\begin{matrix}A ⟶ C \\ x ↦ g(f(x)) \end{matrix}]

is the \underline{composition} of two given functions f : A ⟶ B and g : B ⟶ C.

id_{C} := [\begin{matrix}C ⟶ C \\ c ↦ c \end{matrix}]

is the \underline{identity function} of a given class C.

5.7.7 Remark Operations on functions

(1) Let f : D ⟶ C be a function. The essential characterization of a function (see 5.7.4) is the fact that for each a ∈ D there is a unique b ∈ C defined by f. Accordingly, if D = ∅, then f is uniquely defined for every class C. And if C = ∅, then f : D ⟶ C is defined only if D = ∅, too (otherwise, there would be a a ∈ D without a corresponding f(a) in C). In particular, the empty function, i.e. the unique function of type ∅ ⟶ ∅, is well defined.

(2) The empty function is identical with the empty tuple, both written “⟨⟩”, because tuples will be redefined (see 5.6.10) as surjective functions n ⟶ C, and for n = 0 = ∅ there is just one surjective function of type n ⟶ C, the one with C = ∅, and that is the empty function.

5.7.8 Definition Predicators

x ⇝ φ is a \underline{predicator (expression)}, where x is a variable and φ a formula.

(x ⇝ φ)(θ) is the \underline{application} of the predicator on a given term θ. The result of this application is the formula φ′, obtained from φ by replacing each free occurence of x in φ by θ.

⟨x_{1}, …, x_{n}⟩ ⇝ φ is  a  \underline{n–ary}  or

\underline{ordinary predicator (expression)}, where n ∈ ℕ, the x_{1}, …, x_{n} are pairwise different variables and φ is a formula with no more free variables than the x_{i}.

π (θ_{1}, …, θ_{n}) is the \underline{application} of the n–ary predicator π = (⟨x_{1}, …, x_{n}⟩ ⇝ φ) on a term tuple ⟨θ_{1}, …, θ_{n}⟩. The result is φ′, obtained from φ by simultaneously replacing each free occurence of an x_{i} in φ by the according θ_{i}.

[ \begin{matrix}ξ_{1} & ⇝ & φ_{1} \\ ⋮ & & ⋮ \\ ξ_{n} & ⇝ & φ_{n} \end{matrix} ]  stands for x ⇝ \begin{cases}φ_{1} & if x = ξ_{1} \\ φ_{2} & if x = ξ_{2} \\ ⋮ & ⋮ \\ φ_{n} & if x = ξ_{n} \end{cases}

5.7.9 Remark

(1) For example, a predicator π is defined by

π := (n ⇝ ∃r : ℕ . r · r = n)

So π(9) becomes true and π(10) is false (which is why we would rather write ¬π(10) in concrete situations).

(2) Not every predicator application is well–defined. For the previously given example, π(⟨9, 10⟩) usually isn’t. A relation now is a predicator together with a domain. Each of the domain members is guaranteed to be a well–defined argument for an application. In fact, we hardly ever use predicators as such, but only as part of a relation.

5.7.10 Definition Ordinary relations

R := [ \begin{matrix}D_{1} ↭ … ↭ D_{n} \\ ⟨x_{1}, …, x_{n}⟩ ⇝ φ \end{matrix} ]

is our default form of an \underline{ordinary} or \underline{n–ary relation} definition, where the D_{i} are class expressions, the x_{i} are variables and φ is a formula with no more free variables than the x_{i}.

dom(R) := D_{1} × ⋯ × D_{n}  is the \underline{domain} of R
gr(R) := \{ \frac{⟨x_{1}, …, x_{n}⟩ ∈ D_{1} × ⋯ × D_{n}}{φ(x_{1}, …, x_{n})} \}

is the \underline{graph} of R.

⟨θ_{1}, …, θ_{n}⟩ ∈ R or R(θ_{1}, …, θ_{n})

“R \underline{holds} for ⟨θ_{1}, …, θ_{n}⟩”, are two ways of expressing the same fact, that the application of ⟨x_{1}, …, x_{n}⟩ ⇝ φ on ⟨θ_{1}, …, θ_{n}⟩ ∈ D_{1} × … × D_{n} is true.

⟨θ_{1}, …, θ_{n}⟩ ∉ R or  R̸(θ_{1}, …, θ_{n})

“R \underline{does not hold} for ⟨θ_{1}, …, θ_{n}⟩”, on the other hand are saying that the application of ⟨x_{1}, …, x_{n}⟩ ⇝ φ on ⟨θ_{1}, …, θ_{n}⟩ ∈ D_{1} × … × D_{n} is false.

◯ 1 R ◯ 2

indicates the use of the infix notation “xRy” for the application of a binary relation R rather than the default prefix notation “R(x, y)”.

5.7.11 Remark

According to 5.6.8 and 5.7.8, the default form for an unary relation is then given by

[ \begin{matrix}Pty & (D) \\ x ⇝ φ \end{matrix} ]

5.7.12 Definition Special notations

x_{1}, …, x_{n}Ry

is an often used abbreviation for “x_{1}Ry ∧ … ∧ x_{n}Ry”, where ◯ 1 R ◯ 2 : A ↭ B is a binary relation in infix notation, x_{1}, …, x_{n} ∈ A, and y ∈ B. For example, “a, b, c ∈ C”.

x_{0}R_{1}x_{1}R_{2} … R_{n}x_{n} is an often used abbreviation for “x_{0}R_{1}x_{1} ∧ x_{1}R_{2}x_{2} ∧ … ∧ x_{n−1}R_{n}x_{n}”, where the R_{i} are binary relations in infix notation and the x_{i} are defined arguments. For example, “∅ ≠ A ⊆ B ⊂ C”.

5.7.13 Definition image and coimage classes of binary

relations

R[Z] := {y ∈ Y | x ∈ (Z ∩ X) and ⟨x, y⟩ ∈ R}

is the \underline{R–image class of Z}, for R : X ↭ Y and a class Z

R^{−1}[Z] := {x ∈ X | y ∈ (Z ∩ Y) and ⟨x, y⟩ ∈ R}

is the \underline{R–coimage class of Z}, for R : X ↭ Y and a class Z.

5.7.14 Remark

(1) In set–theoretical terms an n–ary relation R is defined as a subclass Γ ⊆ D_{1} × … × D_{n} of a cartesian product of classes. This version is easily translated into our default form by putting

R = [\begin{matrix}D_{1} ↭ … ↭ D_{n} \\ ⟨x_{1}, …, x_{n}⟩ ⇝ ⟨x_{1}, …, x_{n}⟩ ∈ Γ \end{matrix}]

(2) Every n–ary relation R : D_{1} ↭ … ↭ D_{n} can be represented by an n–ary function

χ_{R} := [\begin{matrix}D_{1} × … × D_{n} ⟶ 𝔹 \\ ⟨x_{1}, …, x_{n}⟩ ↦ \begin{cases}1 & if R(x_{1}, …, x_{n}) \\ 0 & else \end{cases} \end{matrix} ]

the \underline{characteristic function} of R. On the other hand, every function f : D ⟶ C can be represented by a binary relation

[\begin{matrix}D ↭ C \\ ⟨x, y⟩ ⇝ f(x) = y \end{matrix}]

So somehow, one of the two concepts could be reduced to the other one. But in mathematical practice, it is common to understand them as distinct notions (see the remarks in 5.3.12).

(3) However we introduce \underline{partial functions} as a generalization of the function concept which will be convenient in certain circumstances (see definition 5.7.15). As usual, a partial function is a kind of function f from D in to C, where f(a) is not necessarily defined for every a ∈ D. Let us redefine a (total) function as a partial function f : D −−→ C, which has a unique f(a) ∈ C for each a ∈ D.

5.7.15 Definition Partial functions

f := [ \begin{matrix}D −−→ C \\ x ↦ θ \end{matrix} ] is our default form of a \underline{partial function} definition, saying that the identifier f is defined to be a partial function from a class D into a class C, such that every x ∈ D is mapped onto θ ∈ C. θ is a term of type C with no more free variables than x.

f(a) or fa \underline{f of a}, is the unique value or image b ∈ C for the given argument a ∈ D, given by b = (x ↦ θ)(a).

dom(f)  := D  is the \underline{domain} of f
cod(f)  := C  is the \underline{codomain} of f
def(f)  := { a ∈ D f(a) ∈ C is well–defined }
is the \underline{defined domain} of f

5.7.16 Remark

(1) A typical example of a partial function is the division on rational numbers

◯ 1 /◯ 2 := [\begin{matrix}ℚ × ℚ −−→ ℚ \\ ⟨n, d⟩ ↦ the a : ℚ with a · d = n \end{matrix}]

with def(/) = ℚ \ {0}.

(2) The generalization of functions to partial functions is avoided in certain mathematical traditions, where “meaningless” or “undefined” expressions are tried to be excluded apriori. On the other hand, there are also strategies to deal with the undefined cases. A partial function f : D −−→ C can easily be translated into a total function

f′ := [\begin{matrix}D ⟶ C ⊎ \{⊥\} \\ x ↦ \begin{cases}f(x) & if x ∈ def (f) \\ ⊥ & else \end{cases} \end{matrix} ]

where ⊥ ∉ C is a any element of the codomain. Another approach (used e.g. in Unix and C), is the introduction of two channels for every output: a standard output and a standard error. In case of undefined arguments, a side effect is issued to the standard error.

5.7.17 Definition Operations on partial functions

f^{−1} := [\begin{matrix}C −−→ D \\ b ↦ the a : D with f(a) = b \end{matrix}]

is the \underline{inverse} of a partial function f : D −−→ C

g ∘ f := [\begin{matrix}A −−→ C \\ x ↦ g(f(x)) \end{matrix}]

is the \underline{composition} of two given partial functions f : A −−→ B and g : B −−→ C.

5.7.18 Definition image and coimage classes

f[A] := {f(a) | a ∈ A ∩ def(f)}

is the \underline{f–image class of A}, for every (partial or total) f : D −−→ C and each A ⊆ D.

f^{−1}[A] := {a ∈ def(f) | f(a) ∈ A}

is the \underline{f–coimage class of A}, for every (partial or total) f : D −−→ C and each A ⊆ C.

5.7.19 Definition Constants

A \underline{constant} is a nullary function, i.e. a function with domain {⟨⟩}.

5.7.20 Remark Constants

We usually think of a constant as a fixed entity. In a strongly typed design of mathematics like ours here, that is a typed entity c : C, a particular member c of a given class C. But this can as well be described as the nullary function

c := [\begin{matrix}\{⟨⟩\} ⟶ C \\ ⟨⟩ ↦ c \end{matrix}]

because there is no difference between the function c and the application c() = c. That justifies definition 5.7.19.

5.8 Structures

5.8.1 Definition Structures

A \underline{(concrete) (ordinary) structure} is a pair

𝔖 = ⟨K, O⟩

where

(1) K is a class of classes, a collection of \underline{carrier} classes,

(2) O is a class of (ordinary) operators.

Normally, each o ∈ O has one of the following three types (5.6.8):

(a) C (constant)

(b) D_{1} × … × D_{n} ⟶ C (n–ary function)

(c) D_{1} ↭ … ↭ D_{n} (n–ary relation)

where all the C’s and D’s are members of K.

5.8.2 Definition

Given an ordinary structure 𝔖 = ⟨K, O⟩. In case K = {C_{1}, …, C_{k}} and O = {o_{1}, …, o_{n}} are both finite, we usually use

𝔖 = ⟨C_{1}, …, C_{k}, o_{1}, …, o_{n}⟩

as a default form for the given structure. And since each each o_{i} is either a constant, or an ordinary function, or an ordinary relation, we can also agree on

𝔖 = ⟨\underbrace{C_{1}, …, C_{k}}_{carrier}, \underbrace{c_{1}, …, c_{l}}_{constants}, \underbrace{f_{1}, …, f_{m}}_{functions}, \underbrace{R_{1}, …, R_{n}}_{relations}⟩

as the default form for 𝔖. However in many cases, this order of the operators is not maintained.

5.8.3 Remark

(1) We prefer to use “𝔈𝔲𝔩𝔢𝔯 𝔉𝔯𝔞𝔨𝔱𝔲𝔯” for structure identifiers.^{21}

(2) Often, an structures with exactly one carrier class and no relations is called an \underline{algebra}. We use it pretty much as a synonym for the just defined (ordinary) structures.

5.8.4 Definition The boolean value algebra

The \underline{boolean (or bit) value algebra} is the structure

𝔅 := ⟨𝔹, ≤, 0, 1, -, ∧, ∨⟩

where

𝔹 := { 0 , 1 }

◯ 1 ≤ ◯ 2 := [ \begin{matrix}𝔹 ↭ 𝔹 \\ ⟨β_{1}, β_{2}⟩ ⇝ β_{1} = 0 or β_{2} = 1 \end{matrix} ]

-◯ 1 := [ \begin{matrix}𝔹 ⟶ 𝔹 \\ β ↦ \begin{cases}0 & if β = 1 \\ 1 & if β = 0 \end{cases} \end{matrix} ]

◯ 1 ∧ ◯ 2 := [ \begin{matrix}𝔹 × 𝔹 ⟶ 𝔹 \\ ⟨β_{1}, β_{2}⟩ ↦ \begin{cases}1 & if β_{1} = 1 and β_{2} = 1 \\ 0 & else \end{cases} \end{matrix} ]

◯ 1 ∨ ◯ 2 := [ \begin{matrix}𝔹 × 𝔹 ⟶ 𝔹 \\ ⟨β_{1}, β_{2}⟩ ↦ \begin{cases}1 & if β_{1} = 1 or β_{2} = 1 \\ 0 & else \end{cases} \end{matrix} ]

\begin{matrix}𝔄 & 𝔅 & ℭ & 𝔇 & 𝔈 & 𝔉 & 𝔊 & ℌ & ℑ & 𝔍 & 𝔎 & 𝔏 & 𝔐 & 𝔑 & 𝔒 & 𝔓 & 𝔔 & ℜ & 𝔖 & 𝔗 & 𝔘 & 𝔙 & 𝔚 & 𝔛 & 𝔜 & ℨ \\ A & B & C & D & E & F & G & H & I & J & K & L & M & N & O & P & Q & R & S & T & U & V & W & X & Y & Z \\ 𝔞 & 𝔟 & 𝔠 & 𝔡 & 𝔢 & 𝔣 & 𝔤 & 𝔥 & 𝔦 & 𝔧 & 𝔨 & 𝔩 & 𝔪 & 𝔫 & 𝔬 & 𝔭 & 𝔮 & 𝔯 & 𝔰 & 𝔱 & 𝔲 & 𝔳 & 𝔴 & 𝔵 & 𝔶 & 𝔷 \\ a & b & c & d & e & f & g & h & i & j & k & l & m & n & o & p & q & r & s & t & u & v & w & x & y & z \end{matrix}

21

5.8.5 Definition Number structures

ℨ := ⟨ℤ, 0, 1, +, −, ·, ≤⟩ is the usual (linearly ordered) \underline{integer ring}.

𝔔 := ⟨ℚ, 0, 1, +, −, ·, /, ≤⟩

is  the  usual  (lin-

early ordered) \underline{field of rational numbers}.

5.8.6 Definition

If 𝔖 = ⟨K, O⟩ and 𝔖′ = ⟨K′, O′⟩ are two structures, then

𝔖 † 𝔖′ := ⟨K ∪ K′, O ∪ O′⟩

is the \underline{combination} of 𝔖 and 𝔖′

5.8.7 Definition

Given two ordinary structures in the normal form of 5.8.2

\begin{matrix}𝔖 = ⟨C_{1}, …, C_{k}, c_{1}, …, c_{l}, f_{1}, …, f_{m}, R_{1}, …, R_{n}⟩ \\ 𝔖′ = ⟨C′_{1}, …, C′_{k′} , c′_{1}, …, c′_{l′} , f′_{1}, …, f′_{m′} , R′_{1}, …, R′_{n′} ⟩ \end{matrix}

(1) 𝔖 and 𝔖′ are called \underline{similar}, iff (a) k′ = k

(b) l′ = l and for each i ∈ {1, …, l} holds:

c_{i} : C_{b} implies c′_{i} : C′_{b}

(c) m′ = m and for each i ∈ {1, …, m} holds:

\begin{matrix}if f_{i} : C_{a1} × … × C_{aj} ⟶ C_{b} \\ then f′_{i} : C′_{a1} × … × C′_{aj} ⟶ C′_{b} \end{matrix}

(d) n′ = n and for each i ∈ {1, …, n} holds:

\begin{matrix}if R_{i} : C_{a1} ↭ … ↭ C_{aj} \\ then R′_{i} : C′_{a1} ↭ … ↭ C′_{aj} \end{matrix}

(2) 𝔖 is a \underline{substructure} of 𝔖′, iff (a) 𝔖 and 𝔖′ are similar

(b) C_{i} ⊆ C′_{i} for each i ∈ {1, …, k}

(c) c_{i} = c′_{i} for each i ∈ {1, …, l}

(d) f_{i}(x) = f′_{i}(x), for all i ∈ {1, …, m} and x ∈

dom (f_{i})

(e) R_{i}(x) iff R′_{i}(x), for all i ∈ {1, …, n} and x ∈

dom (R_{i})

5.8.8 Example

(1) Being similar means for two structures, that they have an equivalent signature or type system.

(2) ℨ and 𝔔 are not similar, 𝔔 has one more function than ℨ, but ⟨ℤ, 0, 1, +, −, ·, ≤⟩ and ⟨ℚ, 0, 1, +, −, ·, ≤⟩ are similar. In fact, the former is even a substructure of the latter.

(3) ⟨𝔹, 0, 1, ∧, ∨⟩ and ⟨ℤ, 0, 1, ·, +⟩ are similar.

5.8.9 Definition

Given two similar structures, each with just one carrier, i.e. they have the general form

\begin{aligned}𝔖 & = & ⟨C, c_{1}, …, c_{l}, f_{1}, …, f_{m}, R_{1}, …, R_{n}⟩ \\ 𝔖′ & = & ⟨C′, c′_{1}, …, c′_{l}, f′_{1}, …, f′_{m}, R′_{1}, …, R′_{n}⟩ \end{aligned}

A function

𝔥 : C ⟶ C′

is said to be

(a) a \underline{homomorphism} from 𝔖 into 𝔖′, written

𝔥 : 𝔖 ⟶ 𝔖′

if it has the following properties:

(i) 𝔥(c_{i}) = c′_{i} for each i ∈ {1, …, l} (ii) 𝔥 (f_{i} (x_{1}, …, x_{j})) = f′_{i} (𝔥(x_{1}), …, 𝔥(x_{j}))

for all i ∈ {1, …, m} and ⟨x_{1}, …, x_{j}⟩ ∈ dom (f_{i}) (iii) R_{i} (x_{1}, …, x_{j}) implies R′_{i} (𝔥(x_{1}), …, 𝔥(x_{j}))

for all i ∈ {1, …, n} and ⟨x_{1}, …, x_{j}⟩ ∈ dom (R_{i})

(b) an \underline{isomorphism} from 𝔖 into 𝔖′, written

𝔥 : 𝔖 ≅ 𝔖′

if 𝔥 is a bijective homomorphism.

𝔖 and 𝔖′ are called \underline{isomorph}, written

𝔖 ≅ 𝔖′

if there is an isomorphism 𝔥 : 𝔖 ≅ 𝔖′.

5.8.10 Example

(1) If two structure are isomorph, then each formula holds in one structure iff it is true in the other one two. From a logical point of view, two isomorph structures are quasi–identical.

(2) For example, for every record η = [η_{i}|i ∈ I] (see 9.1.2), 𝔓𝔯𝔬𝔧 (η) ≅ 𝔓 (I), i.e. the record projection structure 𝔓𝔯𝔬𝔧 (η) (see 11.9.1) is isomorph to the power class algebra 𝔓 (I) (see 6.2.2).

(3) In the proof of 19.5.10 we show that, for every schema X = [X_{i}|i ∈ I] (see 9.3.1), ℜ𝔢𝔩 (X) ≅ 𝔓 (⊗X), i.e. the equi–schematic relation algebra over X (see 19.5.9) is isomorph to the power class algebra 𝔓 (⊗X) of the cartesian product ⊗X of X (see 12.1.2). And since 𝔓 (⊗X) is a complete boolean algebra, ℜ𝔢𝔩 (X) must be one, too.

Part III

Quasi–hierarchies

6 Examples of quasi–structures

6.1 Introduction

6.1.1 introduction

Order– and lattice–theoretical concepts belong to the basic toolkit of modern mathematics. Well–known key notions are:

♣ poclasses (or posets), i.e. partially ordered classes, i.e. classes with a transitive, reflexive and antisymmetric relation,

♣ lattices, i.e. poclasses with well–defined binary meet and

join functions, ♣ complete lattices, i.e. lattices with g.l.b and l.u.b for every

subclass, ♣ boolean lattices or boolean algebras, i.e. distributive lattices

with complement functions.

Many structures of the main text can be subsumed under these headings as well. For example, the record class structure ⟨Rec, ≤⟩ turns out to be a poclass and ℜ𝔢𝔩(X) is a complete boolean lattice, for every schema X. However, there are other structures in the main text that almost fit in, but not exactly. These quasi–structures behave very much like poclasses, but instead they are based on quasi– ordered classes: they are still transitive and reflexive, but not necessarily antisymmetric. Therefore, we generalize the key concepts and introduce quasi– lattices, boolean quasi–lattices and others. For example, the relation structure 𝔓𝔯𝔢𝔩(X), the most important structure of our main text, comprises two complete boolean quasi–lattices. Of course, quasi–ordered classes are also well–known and well– investigated things in mathematics. But usually, these structures are are turned into proper poclasses by either using their quotient structure (i.e. taking the equivalence classes as the new elements) or applying a canonizer (i.e. all equivalent representations are replaced by some unique canonic normal form). But we cannot do all that with our structures without losing essential properties. In other words, if we want to integrate our relation algebra into the framework of lattices and boolean algebras, we need to generalize these concepts first.

6.1.2 overview of this chapter

Section 7 is a summarizing survey of this generalized order– and lattice theory. But that is just a dense and dry succession of definitions and statements. Therefore, we try to motivate the new concepts by a couple of important examples from mathematics and computer science here in section 6 first.

For these new key terms we add the references “(n.n.n)” which point to the paragraph that actually defines the according new notions.

6.2 Power algebras

6.2.1 Repetition

Recall 5.6.13, that every class C defines

♣ P (C) := {A | A ⊆ C}

♣ Fin (C) := {A | A ⊆ C, A is finite}

6.2.2 Definition

Given a class C.

𝔓 (C) := ⟨P (C) , ⊆, ∅, 1, ∩, ∪, ⋂, ⋃, ∁⟩

the \underline{power algebra} or \underline{subclass algebra} of C,

where

(a) 1 := C is the \underline{full class},

(b) ⋂ is defined on the entire domain P (C) by putting ⋂ ∅ := C and

(c) ∁◯ 1 := 1 \ ◯ 1 is the \underline{complement} function.

𝔉𝔦𝔫 (C) := ⟨Fin (C) , ⊆, ∅, ∩, ∪, \⟩

is the \underline{finite power algebra} or \underline{finite subclass algebra} of C.

6.2.3 Remark the power class algebra

⟨P (C) , ⊆⟩, i.e. the class of all its subclasses, ordered by the usual set inclusion, is the standard example of a poclass (7.2.2). In other words, ⊆ is a (partial) order (7.1.3) on P (C).

We generalize these notions: our basic concept is the quasi– order (7.1.3) (i.e. a transitive and reflexive binary endorelation), that may or may not be antisymmetric (also called canonic). A (partial) order is then a canonic quasi–relation.

The particular quasi–ordered class ⟨P (C) , ⊆⟩ has also the following features: ♣ A bottom element (7.4.1) ∅ ∈ P (C), which is less that any

other member. ♣ A top element (7.4.1) 1 := C, which is greater than any

other member. ♣ A meet function (7.4.3) ◯ 1 ∩ ◯ 2 : P (C) × P (C) ⟶ P (C) that returns the greatest lower bound for each pair of classes. ♣ A join function (7.4.3) ◯ 1 ∪ ◯ 2 : P (C) × P (C) ⟶ P (C) that returns the least upper bound for each pair of classes. ♣ A infimum function (7.4.7) ⋂ : P(P (C)) ⟶ P (C) that returns the greatest lower bound for every class of classes. ♣ A supremum function (7.4.7) ⋃ : P(P (C)) ⟶ P (C) that returns the least upper bound for every class of classes. ♣ It has a complement function (7.5.2) ∁ : P (C) ⟶ P (C) that returns the complement ∁A of every class A ∈ P (C).

For canonic quasi–ordered classes, all these things are uniquely defined, if they exists at all. But when a quasi–ordered class is not canonic, there is usually more than one possible definition (as we will soon demonstrate).

A quasi–ordered class with all these features, which is also distributive (7.5.1), is a complete quasi–boolean lattice.

⟨P (C) , ⊆⟩ is a standard example of a complete quasi–boolean lattice. Canonic ones like this one are more often called complete boolean lattices.

6.2.4 Remark the finite power class algebra

In case C is a finite class, every member of P (C) is a finite class, so P (C) = Fin (C). If C is as small as {0, 1, 2, 3}, the structure ⟨Fin (C) , ⊆⟩ can be represented by its order diagram or Hasse diagram (7.3.4):

[figure: {}; {0}; {1}; {2}; {3}; {0, 1}; {0, 2}; {0, 3}; {1, 2}; {1, 3}; {2, 3}; {0, 1, 2}; {0, 1, 3}; {0, 2, 3}; {1, 2, 3}; {0, 1, 2, 3}]

But if C is an infinite class, Fin (C) ≠ P (C), and ⟨Fin (C) , ⊆⟩ is not a complete boolean lattice anymore: There still is the bottom element ∅, and ∩ and ∪ are the meet and join function. But there is no top element anymore, thus no complement function. However, there still is ♣ a relative complement function (7.5.5) ◯ 1 \ ◯ 2 : Fin (C) ×

Fin (C) ⟶ Fin (C) that returns the relative complement A \ B of B in A in the sense that always

(A \ B) ∩ B = ∅ and (A \ B) ∪ B = A

Distributive lattices with these properties are sometimes called generalized boolean algebras (7.5.6) and ⟨Fin (C) , ⊆⟩ is the typical standard example of such a structure. ^{22}

6.3 A generalized quasi–boolean algebra on tuples

6.3.1 Example

For every class C we defined the tuple class on C by

C^{∗} := {⟨x_{1}, …, x_{n}⟩ | n ∈ ℕ and x_{1}, …, x_{n} ∈ C}

Such a tuple ⟨x_{1}, …, x_{n}⟩ can be used to represent the finite class {x_{1}, …, x_{n}}. All the class operations on Fin (C) can be defined for C^{∗} in a similar fashion as follows. For each e ∈ C and all all a = ⟨a_{1}, …, a_{n}⟩ and b = ⟨b_{1}, …, b_{m}⟩ we put ♣ e ∈_{∗} a iff e ∈ {a_{1}, …, a_{n}} ♣ a ⊆_{∗} b iff {a_{1}, …, a_{n}} ⊆ {b_{1}, …, b_{m}}

♣ a ≡_{∗} b iff {a_{1}, …, a_{n}} = {b_{1}, …, b_{m}}

♣ a \_{∗} b is a, but every component in b is deleted

♣ a ∪_{∗} b := ⟨a_{1}, …, a_{n}, b_{1}, …, b_{m}⟩

♣ a ∩_{∗} b := a \_{∗} (a \_{∗} b)

For example, for C = ℕ we obtain 7 ∈_{∗} ⟨1, 5, 2, 7, 4, 6, 32⟩

⟨2, 4, 6⟩ ⊆_{∗} ⟨2, 2, 3, 3, 4, 4, 5, 5, 6, 6⟩
⟨2, 4, 6⟩ ≡_{∗} ⟨2, 2, 4, 4, 6, 6⟩ ≡_{∗} ⟨6, 4, 2⟩

⟨2, 2, 3, 3, 4, 4, 5, 5, 6, 6⟩ \_{∗} ⟨2, 4, 6, 8⟩ = ⟨3, 3, 5, 5⟩

⟨2, 4, 4, 6⟩ ∪_{∗} ⟨2, 2, 3, 3, 4⟩ = ⟨2, 4, 4, 6, 2, 2, 3, 3, 4⟩

⟨2, 4, 4, 6⟩ ∩_{∗} ⟨2, 2, 3, 3, 4⟩ = ⟨2, 4, 4, 6⟩ \_{∗} ⟨6⟩ = ⟨2, 4, 4⟩

⟨2, 2, 3, 3, 4⟩ ∩_{∗} ⟨2, 4, 4, 6⟩ = ⟨2, 2, 3, 3, 4⟩ \_{∗} ⟨3, 3⟩ = ⟨2, 2, 4⟩

The structure on C^{∗} is very similar to the structure on Fin (C). More precisely, the codomain function

cod := [ \begin{matrix}C^{∗} ⟶ Fin (C) \\ ⟨a_{1}, …, a_{n}⟩ ↦ \{a_{1}, …, a_{n}\} \end{matrix} ]

is a quasi–isomorphism in the sense that

e ∈_{∗} a iff a ∈ cod(a)
a ⊆_{∗} b iff cod(a) ⊆ cod(b)
a ≡_{∗} b iff cod(a) = cod(b)
cod(a \_{∗} b) = cod(a) \ cod(b)
cod(a ∩_{∗} b) = cod(a) ∩ cod(b)
cod(a ∪_{∗} b) = cod(a) ∪ cod(b)

for each e ∈ C and all a, b ∈ C^{∗}.

But unlike ⟨Fin (C) , ⊆⟩, the structure ⟨C^{∗}, ⊆_{∗}⟩ is not a poclass (transitive, reflexive, and antisymmetric), but only a quasi–ordered class (7.2.2) (i.e. transitive and reflexive), that is just not canonic or antisymmetric (7.1.2).

The general criterion (7.3.3) for canonicity tells us that the quasi–ordered class ⟨C^{∗}, ⊆_{∗}⟩ is a poclass iff the equivalence relation ≡_{∗} is the identity relation. And this is obviously not the case here: ⟨1, 2⟩ ≡_{∗} ⟨2, 1⟩, but ⟨1, 2⟩ ≠ ⟨2, 1⟩.

This non–canonicity makes that many notions uniquely defined on ⟨Fin (C) , ⊆⟩ are defined on ⟨C^{∗}, ⊆_{∗}⟩ only up to equivalence.

For example, two finite classes, say {1, 2, 3} and {2, 3, 4} do have a unique greatest lower bound (7.4.3) {2, 3}. So the meet function (7.4.3) on ⟨Fin (C) , ⊆⟩, that takes any two finite classes and returns their greatest lower bound, is uniquely defined, namely as ∩. The two tuples ⟨1, 2, 3⟩ and ⟨2, 3, 4⟩ on the other hand have many greatest lower bounds ⟨2, 3⟩, ⟨3, 2⟩, ⟨2, 2, 3⟩ etc. which are all equivalent, i.e. ⟨2, 3⟩ ≡_{∗} ⟨3, 2⟩ etc. Accordingly, a meet function does exist on ⟨C^{∗}, ⊆_{∗}⟩ too, in our case ∩_{∗}. But this meet function is not unique. We could have defined another meet function ∩′_{∗} by a∩′_{∗} b := b\_{∗} (b\_{∗} a). Then

22According to Garrett Birkhoff: Lattice Theory, the definition of a generalized boolean algebra goes back to M.H. Stone: The theory of representations for Boolean algebras, Trans. AMS 40 (1936),p 35-52.

\begin{aligned}⟨2, 4, 4, 6⟩ ∩′_{∗} ⟨2, 2, 3, 3, 4⟩ & = & ⟨2, 2, 4⟩ \\ ⟨2, 4, 4, 6⟩ ∩_{∗} ⟨2, 2, 3, 3, 4⟩ & = & ⟨2, 4, 4⟩ \end{aligned}

The results of the two meet functions are always equivalent, here ⟨2, 2, 4⟩ ≡_{∗} ⟨2, 4, 4⟩, but they are not equal in general.

If a quasi–ordered class like ⟨C^{∗}, ⊆_{∗}⟩, also written together with the equivalence relation as ⟨C^{∗}, ⊆_{∗}, ≡_{∗}⟩, has a bottom element (here: ⟨⟩), a meet and a join function (like ∩_{∗} and ∪_{∗}), and a relative complement function (here \_{∗}), we call it a generalized boolean quasi–lattice (7.5.4), and the concrete instance

⟨C^{∗}, ⊆_{∗}, ≡_{∗}, ⟨⟩, ∩_{∗}, ∪_{∗}, \_{∗}⟩

is a generalized quasi–boolean algebra (7.6.2).

6.4 The theory algebra of propositional formulas

6.4.1 propositional formulas

Given a class A of so–called \underline{atoms} (usually a countable set of identifiers or symbols). The class

Form(A)

of all \underline{propositional formulas} on A is inductively defined to comprise the following expressions:

α  for every α ∈ A (atomic formulas)
f  (false value)
t  (true value)
-φ  for every φ ∈ Form(A)  (negation)
[ φ_{1} ∧ … ∧ φ_{n} ] φ_{1}, …, φ_{n} ∈ Form(A)  (conjunction)
[ φ_{1} ∨ … ∨ φ_{n} ] φ_{1}, …, φ_{n} ∈ Form(A)  (disjunction)

For example, if a, b, c, … ∈ A, then

[ a ∨ b ∨ a ∨ -c]
[ -a ∧ -[ b ∨ a] ∧ c ∧ t ∧ -a]
-[ ∨]
[ a ∨ f ]
[ f ∨ -t ∨ [ ∧] ∨ t ]

are example formulas (on A).

Note that Form(A) is an infinite class, even if A = ∅.

6.4.2 boolean relations on propositional formulas

For two formulas φ and ψ we write ♣ φ ⇒ ψ iff φ \underline{entails} ψ, where this \underline{entailment} or \underline{subvalence}

relation ⇒ on the class of formulas is defined as usual. ♣ φ ⇔ ψ iff φ and φ are \underline{equivalent}, i.e. iff φ ⇒ ψ and

ψ ⇒ φ.

For example

\begin{aligned}[ a ∧ -a] & ⇔ & f \\ [ a ∧ -b] & ⇒ & [ a ∨ -b] \\ [ a ∧ -b] & ⇔ & -[ -a ∨ b] \\ [ a ∧ b] & ⇒ & b \\ [ a ∧ f ] & ⇒ & a \\ [ a ∧ f ] & ⇔ & -t \\ [ ∧] & ⇔ & t \end{aligned}

The relation ⇒ is transitive and reflexive, but it is not antisymmetric (7.1.2). For example f ⇒ -t and -t ⇒ f, i.e. f ⇔ -t, but f ≠ -t. So there are equivalent formulas which are not equal. In other words, ⟨Form(A), ⇒⟩ is a quasi–ordered class, but it is not canonic, i.e. not a poclass (7.2.2).

6.4.3 the standard quasi–boolean algebra on propositional

formulas

For a given atom class A we define the

𝔉𝔬𝔯𝔪 (A) := ⟨Form(A), ⇒, ⇔, f, t, ⊓, ⊔, ¬⟩

the \underline{standard quasi–boolean algebra} on Form(A), where

◯ 1 ⊓ ◯ 2 := [ \begin{matrix}Form(A) × Form(A) ⟶ Form(A) \\ ⟨φ, ψ⟩ ↦ [ φ ∧ ψ] \end{matrix} ]

◯ 1 ⊔ ◯ 2 := [ \begin{matrix}Form(A) × Form(A) ⟶ Form(A) \\ ⟨φ, ψ⟩ ↦ [ φ ∨ ψ] \end{matrix} ]

¬◯ 1 := [ \begin{matrix}Form(A) ⟶ Form(A) \\ φ ↦ -φ \end{matrix} ]

Such a quasi–boolean algebra is “quasi the same” as a proper boolean algebra, except that things are not “canonic”, i.e. identity is replaced by equivalence.

For example, de Morgans law (7.6.10) ¬(x ⊓ y) = (¬x) ⊔ (¬y) only holds in a weaker, more general version ¬(x ⊓ y) ⇔ (¬x) ⊔ (¬y).

Our standard quasi–boolean algebra on Form(A) is indeed a quasi–boolean algebra (7.6.2), because in particular ♣ f is a bottom element (7.4.1) in the sense that it is a lower

bound of every φ ∈ Form(A), i.e. f ⇒ φ. ♣ t is a top element (7.4.1), accordingly. ♣ ⊓ is a meet function (7.4.3) in the sense that φ ⊓ ψ is a (quasi–)greatest lower bound for every two formulas φ and ψ. Again, note that next to φ ⊓ ψ := [ φ ∧ ψ] there are more greatest lower bounds, e.g. [ ψ ∧ ψ], ¬[ ¬φ ∨ ¬ψ], etc. But they are all equivalent.

♣ ⊔ is a join function (7.4.3) that always returns a least upper

bound accordingly. ♣ ¬ is a complement function, because ¬φ := -φ is indeed a complement of φ. But again, φ has more equivalent complements like -[ φ ∧ t ], ---φ, etc.

The fact that it is indeed possible to construct such a quasi–boolean algebra on top of the quasi–ordered class ⟨Form(A), ⇒⟩ is emphasized by saying that ⟨Form(A), ⇒⟩ is a quasi–boolean lattice (7.4.9).

For proper poclasses ⟨C, ⊑⟩ there is no difference here: if they exist at all, the bottom and top element and the three functions are uniquely defined, the boolean algebra is uniquely determined, so the boolean lattice ⟨C, ⊑⟩ “is“ the boolean algebra. But if ⟨C, ⊑⟩ is only a quasi–ordered class, then it either is or is not a quasi–boolean lattice. If it is, then there are usually more than one boolean algebras that can be defined on ⟨C, ⊑⟩.

In our example, we could have defined another version of a quasi–boolean algebra, say

⟨Form(A), ⇒, ⇔, [ ∨], -[ ∨], ⊓′, ⊔′, ¬′⟩

where, for all φ, ψ ∈ Form (A),

\begin{aligned}φ ⊓′ ψ & := & [ ψ ∧ t ∧ φ ∧ ψ] \\ φ ⊔′ ψ & := & [ φ ∨ ψ ∨ f ] \\ ¬′φ & := & -[ φ ∧ φ] \end{aligned}

6.4.4 Exercise

Is the quasi–boolean lattice ⟨Form(A), ⇒⟩ complete (7.4.9), i.e. does it have an infimum and supremum function (7.4.7)?

6.4.5 atomic relations on propositional formulas

The \underline{atom class function}

@ : Form(A) ⟶ P(A)

returns all the atoms that occur in a formula. For example

\begin{aligned}@([ a ∨ b ∨ a ∨ -c]) & = & \{a, b, c\} \\ @([ -a ∧ -[ b ∨ a] ∧ c ∧ t ∧ -a]) & = & \{a, b, c\} \\ @(-[ ∨]) & = & ∅ \end{aligned}

We define the \underline{subatomic} and \underline{equiatomic relation} on formulas by putting

\begin{matrix}φ ⊴ ψ & iff & @(φ) ⊆ @(ψ) \\ φ ≜ ψ & iff & @(φ) = @(ψ) \end{matrix}

For example,

\begin{matrix}t & ⊴ & [ a ∨ -b] \\ [ a ∨ b ∨ c ∨ -a] & ≜ & [ a ∧ b ∧ c] \end{matrix}

Similar to the subvalence relation, the subatomic relation is transitive and reflexive, but not antisymmetric. ⟨Form(A), ⊴⟩ is a quasi–ordered class, but not a canonic one, i.e. not a poclass.

6.4.6 Exercise

Does ⟨Form(A), ⊴⟩ have a top and bottom elements, a meet and join function, or even a complement function? Is it a quasi–lattice or even a boolean one?

6.4.7 atom expansion and reduction Consider 𝔉𝔬𝔯𝔪 (A) = ⟨Form(A), ⇒, ⇔, f, t, ⊓, ⊔, ¬⟩ again, for some arbitrary A, our standard quasi–boolean algebra on Form(A).

We observe that the operations ⊓, ⊔, ¬ accumulate the atoms of their arguments in the sense that

\begin{aligned}@(φ ⊓ ψ) & = & @(φ) ∪ @(ψ) \\ @(φ ⊔ ψ) & = & @(φ) ∪ @(ψ) \\ @(¬φ) & = & @(φ) \end{aligned}

Operating on formulas increases the atom classes of the involved formulas. It is easy to define an operation that only \underline{expands} the atoms of its argument and return an equivalent formula. On the other hand, we can also try to construct an operation that decreases the atom class. But this \underline{equivalent reduction} is not that easy to generate. It often doesn’t even exist at all.

An \underline{(atomic) expander} is an operation

◯ 1 ∥ ◯ 2 : Form(A) × A^{∗} ⟶ Form(A)

That takes a formula φ and atoms ⟨α_{1}, …, α_{n}⟩ ∈ A^{∗} and returns a formula φ′ := φ ∥ ⟨α_{1} …, α_{n}⟩ such that ♣ @φ′ = @φ ∪ {α_{1}, …, α_{n}} and ♣ φ′ ⇔ φ.

One instance of such an atom expander is obviously given by the definition

φ ∥ ⟨α_{1}, …, α_{n}⟩ := [ φ ∨ [ f ∧ α_{1} ∧ … ∧ α_{n} ] ]

We call the result the \underline{expansion} of φ by α_{1}, …, α_{n}.

An \underline{equivalent reduction} on the other hand should take a formula φ and atoms α_{1}, …, α_{n} and return a formula φ′, called an \underline{equivalent reduction} of φ onto α_{1}, …, α_{n}, such that

♣ @φ′ = {α_{1}, …, α_{n}} and

♣ φ′ ⇔ φ

For example, if we put φ := [ b ∨ c ∨ [ a ∧ ¬a] ] and φ′ := [ b ∨ c] then φ′ is indeed an equivalent reduction of φ onto b, c.

But if we put φ := [ b ∨ c ∨ ¬a], no equivalent reduction of φ onto b, c does exist.

6.4.8 infimum and supremum reduction

Thus an equivalent reduction is not a well–defined notion in general. However, there are two other reduction concepts:

♣ An \underline{infimum reductor} is a function

◯ 1 ⇑ ◯ 2 : Form(A) × A^{∗} ⟶ Form(A)

such that, for all formulas φ and atoms α_{i} ♣ @(φ ⇑ ⟨α_{1}, …, α_{n}⟩) = {α_{1}, …, α_{n}} ♣ φ ⇑ ⟨α_{1}, …, α_{n}⟩ is a greatest lower bound of φ in

Form({α_{1}, …, α_{n}})

♣ Similarly, a \underline{supremum reductor} is a function

◯ 1 ⇓ ◯ 2 : Form(A) × A^{∗} ⟶ Form(A)

such that

♣ @(φ ⇓ ⟨α_{1}, …, α_{n}⟩) = {α_{1}, …, α_{n}}

♣ φ ⇓ ⟨α_{1}, …, α_{n}⟩ is a least upper bound of φ in Form({α_{1}, …, α_{n}})

Different to the implementation of an expander, a method to generate these two reductions is quite a complicated process and we will not discuss the matter here.^{23}

6.5 Quasi–ordered classes on numbers

6.5.1 linearly ordered number classes

Recall, that ℕ := {0, 1, 2, …} is the natural number class,

ℤ := {…, −2, −1, 0, 1, 2, …}, the class of integers, ℚ the

rational number class, and ≤ , < , + , − , · , / are the usual arithmetic operations.

≤ is a linear order (7.1.3) and < is a strict linear order (7.1.3) on ℕ, ℤ, and ℚ. In other words ⟨ℕ, ≤⟩, ⟨ℤ, ≤⟩, and ⟨ℚ, ≤⟩ are examples of linearly ordered classes or chains (7.2.2).

6.5.2 number structures as lattices

A linearly ordered class is a special case of a (partially) ordered class or poclass (7.2.2). Poclasses can have certain properties (7.4), such as being a lattice (7.4.9) or even a boolean lattice (7.5.4). Let us find out, in how far these properties hold for the given number structures.

⟨ℕ, ≤⟩ has a bottom element (7.4.1), namely 0, because 0 ≤ n, for all n ∈ ℕ. But it has no top element, because for each natural number there is an even bigger one.

⟨ℤ, ≤⟩ has neither a bottom nor a top element. But we can add two new elements ∞ and −∞ , put

ℤ^{∞} := ℤ ∪ {−∞, ∞}

and redefine the arithmetic operations on the extended class ℤ^{∞} as usual. For example, −∞ ≤ n, ∞+9 = ∞, −∞·7 = −∞, 5/∞ = 0. That way ⟨ℤ^{∞}, ≤⟩ has a bottom and a top element, what makes it a so–called bounded (7.4.9) chain.

A lower bound for two given natural numbers n and m is any number k with k ≤ n and k ≤ m. For example, 1, 2, and 3 are lower bounds of n = 23 and m = 3. In this case, 3 is the greatest lower bound. Now, any binary function that always returns the greatest lower bound for each pair of arguments is called a meet function (7.4.3) (or conjunctor). In ⟨ℕ, ≤⟩, each number pair has a unique greatest lower bound, so there is a unique meet function, namely min : ℕ × ℕ ⟶ ℕ, the usual minimum function.

Similarly, the binary function max always returns the least upper bound of two given numbers and such a function is a join function (7.4.3) on ⟨ℕ, ≤⟩.

Now a poclass with a meet as well as a join function, such as ⟨ℕ, ≤, min, max⟩, is called a lattice (7.4.9). Obviously, ⟨ℤ, ≤, min, max⟩ and ⟨ℤ^{∞}, ≤, min, max⟩ are also lattices. ⟨ℤ^{∞}, ≤, −∞, ∞, min, max⟩ is even a bounded lattice (7.4.9).

The meet function takes two arguments, its generalization for any — even an infinite — class of arguments is called an infimum function (7.4.7) (or big conjunctor). ⟨ℕ, ≤⟩ has an infimum function, because for every N ⊆ ℕ, there is a unique greatest lower bound of N, namely the minimum of N. But ⟨ℤ, ≤⟩ doesn’t have an infimum function. For example, the infinite class {−2, −4, −6, −8, …} does not have a (greatest) lower bound in ℤ. And for similar reasons, ⟨ℕ, ≤⟩ doesn’t have a supremum function which would return the greatest upper bound of every given subclass of ℕ.

⟨ℤ^{∞}, ≤⟩ actually has both, an infimum and a supremum function. Therfore, ⟨ℤ^{∞}, ≤⟩ (together with these implicitely defined functions) is an example of a complete lattice (??).

6.5.3 Exercise

Which of the three lattices (on ℕ, ℤ, or ℤ^{∞}) is a distributed (7.5.1), complemented (7.5.2), or even boolean (7.5.4) lattice?

6.5.4 integers and the division relation

An often mentioned example of a poclass (7.2.2) is ⟨N, |⟩, where N ⊆ ℕ and the binary relation is defined by

◯ 1 | ◯ 2 := [ \begin{matrix}ℕ ↭ ℕ \\ ⟨m, n⟩ ⇝ (m · d = n for some d > 0) \end{matrix} ]

where m | n reads “m divides n”. For example, 7|63, because 7 · 9 = 63.

If say N = {1, 2, …, 10}, the poclass ⟨N, |⟩ is represented by the following order or Hasse diagram (7.3.4)

[figure: 8; 10; 4; 6; 9; 5; 2; 3; 7; 1]

6.5.5 Exercise

Does ⟨ℕ, |⟩ have a bottom element (7.4.1), a top element (7.4.1), a meet function (7.4.3), a join function (7.4.3)? Is it a lattice (7.4.9)?

6.6 The quasi–field of fractions

6.6.1 fractions

We define the clas of \underline{fractions} as

𝔽 := ℤ × (ℤ \ {0})

and we write

n/_{d}  for  ⟨n, d⟩ ∈ 𝔽

23 More material can be found on www.bucephalus.org, along with software system that compute the results of all these operations on propositional formulas. i.e. for the fraction with nominator n and denominator d. Furthermore, we define a couple of relations and arithmetic operations on 𝔽:

◯ 1 ≾ ◯ 2 := [ \begin{matrix}𝔽 ↭ 𝔽 \\ ⟨^{n}/_{d},^{n′}/_{d′} ⟩ ⇝ n · d′ ≤ n′ · d \end{matrix} ]

◯ 1 ≃ ◯ 2 := [ \begin{matrix}𝔽 ↭ 𝔽 \\ ⟨^{n}/_{d},^{n′}/_{d′} ⟩ ⇝ n · d′ = n′ · d \end{matrix} ]

0 := ^{0}/_{1}
1 := ^{1}/_{1}

◯ 1 + ◯ 2 := [ \begin{matrix}𝔽 × 𝔽 ⟶ 𝔽 \\ ⟨^{n}/_{d},^{n′}/_{d′} ⟩ ↦ ^{n·d′+n′·d}/_{d·d′} \end{matrix} ]

◯ 1 − ◯ 2 := [ \begin{matrix}𝔽 × 𝔽 ⟶ 𝔽 \\ ⟨^{n}/_{d},^{n′}/_{d′} ⟩ ↦ ^{n·d′−n′·d}/_{d·d′} \end{matrix} ]

◯ 1 · ◯ 2 := [ \begin{matrix}𝔽 × 𝔽 ⟶ 𝔽 \\ ⟨^{n}/_{d},^{n′}/_{d′} ⟩ ↦ ^{n·n′}/_{d·d′} \end{matrix} ]

◯ 1 ÷ ◯ 2 := [ \begin{matrix}𝔽 × 𝔽 −−→ 𝔽 \\ ⟨^{n}/_{d},^{n′}/_{d′} ⟩ ↦ \begin{cases}^{n·d′}/_{d·n′} & if d ≠ 0 \\ undefined & if d = 0 \end{cases} \end{matrix} ]

The overall structure

⟨𝔽, ≾, ≃, 0, 1, +, −, ·, ÷⟩

is the \underline{quasi–ordered field of fractions}.

6.6.2 the quasi–field

The title quasi–field indicates that this structure behaves like a proper field, when the identity = in the defining axioms is replaced by the equivalence relation. Our more general term for these kind of algebras is quasi–algebra.

≾ is a quasi–linear order (7.1.3) (transitive, reflexive, and total), but not a proper linear order (7.1.3), because it is not antisymmetric (7.1.2). In other words, the equivalence relation (7.3.1) ≃ of ≾ is not the equality, there are cases of equivalent, but still different fractions, such as ^{5}/_{2} and ^{10}/_{4}.

Accordingly, we could have defined the constants 0, 1 and the other operations on 𝔽 differently, and still obtain a quasi– ordered field. For example, if we would have defined

O := ^{0}/_{57} 1 := ^{13}/_{13} ^{n}/_{d} · ^{n′}/_{d′} := ^{7·n·n′}/_{7·d·d′} …

then 1 still is the neutral element of the multiplication etc.

6.6.3 the quasi–lattice

The quasi–linearly ordered class ⟨𝔽, ≾⟩ is a quasi–lattice. Again (7.4.5), the minimum function (7.4.4) min is one example of a possible meet function, and max is a join function for the construction of such a quasi–lattice.

6.6.4 Exercise

Is this lattice on fractions bounded or even complete (hint: real numbers)?

6.6.5 rational numbers

As usual, the rational numbers can be introduced as equivalence classes of fractions together with a generalization of the arithmetic operations on ℤ. We put

\frac{n}{d} := \{^{n′}/_{d′} | ^{n′}/_{d′} ≃ ^{n}/_{d}\}
ℚ := \{ \frac{n}{d} | n ∈ ℤ, d ∈ (ℤ \ \{0\})\}
0 := \frac{0}{1}
1 := \frac{1}{1}

◯ 1 + ◯ 2 := [ \begin{matrix}𝔽 × 𝔽 ⟶ 𝔽 \\ ⟨ \frac{n}{d} , \frac{n′}{d′} ⟩ ↦ \frac{n·d′+n′·d}{d·d′} \end{matrix} ]

⋮  ⋮

The overall structure on ℚ is the \underline{linearly ordered field} of \underline{rational numbers}.

7 Quasi–structures and quasi–algebras

7.1 Special binary endorelations

7.1.1 Definition

A \underline{(binary) (endo–)relation} on C is a relation ρ : C ↭ C. We agree to write these kind of relations in infix notation by default, i.e. we write

◯ 1 ρ◯ 2  rather than ρ(◯ 1 , ◯ 2 )

A \underline{structured class} ⟨C, ρ⟩ is a class C with a relation on

C (or more general, on a superclass of C).

7.1.2 Definition Properties of binary endorelations

A binary endorelation ρ : Q ↭ Q on a given class Q is said to be

(1) \underline{transitive}, if xρy and yρz implies xρz, for all x, y, z ∈ Q

(2) \underline{reflexive}, if xρx, for all x ∈ Q

(3) \underline{irreflexive}, if xρx doesn’t hold for any x ∈ Q

(4) \underline{symmetric}, if xρy implies yρx, for all x, y ∈ Q

(5) \underline{asymmetric}, if xρy implies, that yρx doesn’t hold, for all x ∈ Q

(6) \underline{antisymmetric}, if xρy and yρx implies x = y, for all x, y ∈ Q

(7) \underline{total}, if xρy or yρx, for all x, y ∈ Q

(8) \underline{connex}, if either xρy, or yρx, or x = y, for all x, y ∈ Q

7.1.3 Definition Special transitive relations

A binary endorelation ρ on Q, i.e. ρ : Q ↭ Q is called

(1) an \underline{equivalence relation} (on Q), if ρ is transitive, reflexive, and symmetric

(2) an \underline{equality} or \underline{identity relation} (on Q), if ρ is transitive, reflexive, symmetric, and antisymmetric

(3) a \underline{quasi–order} (on Q), if ρ is transitive and reflexive

(4) a \underline{(partial) order} (on Q), if ρ is transitive, reflexive, and antisymmetric

(5) a \underline{quasi–linear order} (or \underline{linar quasi–order}) (on Q), if ρ is transitive, reflexive, and total

(6) a \underline{linear order} (on Q), if ρ is transitive, reflexive, total, and antisymmetric

7.2 Quasi–Hierarchies

7.2.1 Definition restriction of binary endorelation

If ρ : D ↭ D is a binary endorelation on a class D and C ⊆ D, we define

ρ |_{C} := [ \begin{matrix}C ↭ C \\ ⟨c_{1}, c_{2}⟩ ⇝ c_{1}ρc_{2} \end{matrix} ]

the \underline{restriction} of ρ onto C.

7.2.2 Definition quasi–hierarchies

Let ρ : D ↭ D and C ⊆ D. We say that

(1) ⟨C, ρ⟩ is a \underline{quasi–hierarchy}, if ρ |_{C} is a transitive relation on C

(2) ⟨C, ρ⟩ is a \underline{hierarchy}, if ρ |_{C} is a transitive and antisymmetric relation on C

(3) ⟨C, ρ⟩ is a \underline{quasi–class} or a \underline{partition}, if ρ |_{C} is an equivalence relation on C

(4) ⟨C, ρ⟩ is a \underline{canonic class} or a \underline{anti–chain}, if ρ |_{C} is a equality relation on C

(5) ⟨C, ρ⟩ is a \underline{quasi–ordered class}, if ρ |_{C} is a quasi–order on C

(6) ⟨C, ρ⟩ is a \underline{canonic quasi–ordered class} or \underline{(partially) ordered class} or \underline{poclass}, if ρ |_{C} is a (partial) order on C

(7) ⟨C, ρ⟩ is a \underline{quasi–linearly ordered class} or \underline{quasi–chain}, if ρ |_{C} is quasi–linear order on C

(8) ⟨C, ρ⟩ is a \underline{linearly ordered class} or \underline{chain}, if ρ |_{C} is a linear order on C

7.2.3 Lemma

Let ρ : D ↭ D and C′ ⊆ C ⊆ D.

(1) If ⟨C, ρ⟩ is a quasi–hierarchy, then ⟨C′, ρ⟩ is a quasi– hierarchy.

(2) If ⟨C, ρ⟩ is a hierarchy, then ⟨C′, ρ⟩ is a hierarchy.

(3) If ⟨C, ρ⟩ is a quasi–class, then ⟨C′, ρ⟩ is a quasi–class.

(4) If ⟨C, ρ⟩ is a canonic class, then ⟨C′, ρ⟩ is a canonical class.

(5) If ⟨C, ρ⟩ is a quasi–ordered class, then ⟨C′, ρ⟩ is a quasi–ordered class.

(6) If ⟨C, ρ⟩ is a poclass, then ⟨C′, ρ⟩ is a poclass.

(7) If ⟨C, ρ⟩ is a quasi–chain, then ⟨C′, ρ⟩ is a quasi–chain.

(8) If ⟨C, ρ⟩ is a chain, then ⟨C′, ρ⟩ is a chain.

7.3 Quasi–ordered classes and poclasses

7.3.1 Definition derived equivalence

If ⊑ is a quasi–order on a given class Q, then

[ \begin{matrix}Q ↭ Q \\ ⟨x, y⟩ ⇝ x ⊑ y and y ⊑ x \end{matrix} ]

is its \underline{equivalence relation}.

7.3.2 Remark notation

We often write

⟨C, ⊑, ≡⟩  instead of  ⟨C, ⊑⟩

to denote a quasi–ordered class, where ≡ is the equivalence relation of ⊑.

On the other hand, the graphic symbol of the derived equivalence relation is often designed similar to the quasi–order symbol, and then we often use the pair notation again. The following table lists some common examples.

the relation its equivalence relation
⊑  ≡
≾  ≈
≤  =
⊆  =
⇒  ⇔
⊢  ⊣⊢

7.3.3 Lemma

If ⊑ is a quasi–order and ≡ its equivalence relation, then

(1) ≡ is indeed a well–defined equivalence relation (see 7.1.3)

(2) ⊑ is canonic iff ≡ is the identity relation. In other words, a quasi–ordered class is canonic (i.e. a poclass) iff the equivalence relation is the equality.

7.3.4 Remark Order or Hasse diagrams

Finite poclasses can be represented by so–called \underline{order diagrams} or \underline{Hasse diagrams}:

The fact, that xρy holds for two elements x and y is expressed by the feature that x stands below y in the diagram and there is an upwards path from x to y.

x y

The transitivity reduces the number of lines that have to be drawn. For example, the diagram

x y z

says that xρy and yρz, and also that xρz.

The reflexivity, i.e. that xρx for all x, is not explicitly represented in the diagram. It is just always assumed.

For examples see: the order diagram of a finite power class algebra in 6.2.4 or the diagram of integers with the division relation in 6.5.4.

7.3.5 Remark Quasi–order diagrams

For finite quasi–ordered classes we generalize the idea of order diagrams to \underline{quasi–order diagrams}: To limit the number of edges in the diagram we first put all equivalent elements in a circle and then we draw the order diagram of these equivalence classes. In other words, the quasi–order diagram is the diagram of the quotient structure (see 7.7.3).

7.4 Quasi–lattices

7.4.1 Definition

Let ⟨Q, ⊑⟩ be a quasi–ordered class.

(1) ⊥ ∈ Q is a \underline{bottom} or \underline{zero} or \underline{least} element in ⟨Q, ⊑⟩, if ⊥ ⊑ x, for all x ∈ Q.

(2) ⊤ ∈ Q is a \underline{top} or \underline{unit} or \underline{greatest} element in ⟨Q, ⊑⟩, if x ⊑ ⊤, for all x ∈ Q.

7.4.2 Lemma quasi–uniqueness of bottom and top

Let ⟨Q, ⊑⟩ be a quasi–ordered class.

(1) If ⊥_{1} and ⊥_{2} are two bottom elements in ⟨Q, ⊑⟩, then ⊥_{1} ≡ ⊥_{2}.

(2) If ⊤_{1} and ⊤_{2} are two top elements in ⟨Q, ⊑⟩, then ⊤_{1} ≡ ⊤_{2}.

7.4.3 Definition

Let ⟨Q, ⊑⟩ be a quasi–ordered class.

(1) A \underline{meet} function or \underline{conjunctor} on ⟨Q, ⊑⟩ is a function

◯ 1 ⊓ ◯ 2 : Q × Q ⟶ Q

that always returns a \underline{greatest lower bound} in the sense that for all x, y ∈ Q holds:

(a) x ⊓ y ⊑ x and x ⊓ y ⊑ y

(b) If z ∈ Q with z ⊑ x and z ⊑ y and x ⊓ y ⊑ z, then z ≡ x ⊓ y.

(2) A \underline{join} function or \underline{disjunctor} on ⟨Q, ⊑⟩ is a function

◯ 1 ⊔ ◯ 2 : Q × Q ⟶ Q

that always returns a \underline{least upper bound} in the sense that for all x, y ∈ Q holds:

(a) x ⊑ x ⊔ y and y ⊑ x ⊔ y

(b) If z ∈ Q with x ⊑ z and x ⊑ z and z ⊑ x ⊔ y, then z ≡ x ⊔ y.

7.4.4 Definition

If ⟨Q, ≾⟩ is a quasi–linearly ordered class, then

min := [ \begin{matrix}Q × Q \\ ⟨x, y⟩ ↦ \begin{cases}x & if x ≃ y \\ y & else \end{cases} \end{matrix} ]

is its \underline{minimum} function

min := [ \begin{matrix}Q × Q \\ ⟨x, y⟩ ↦ \begin{cases}y & if x ≃ y \\ x & else \end{cases} \end{matrix} ]

is its \underline{maximum} function

7.4.5 Lemma

Every quasi–linearly ordered class ⟨Q, ≾⟩ is a quasi– lattice. A meet and join function is given by min and max, respectively.

7.4.6 Lemma quasi–uniqueness of meet and join

Let ⟨Q, ⊑⟩ be a quasi–ordered class.

(1) If ⊓_{1} and ⊓_{2} are two meet functions in ⟨Q, ⊑⟩, then x ⊓_{1} y ≡ x ⊓_{2} y, for all x, y ∈ Q.

(2) If ⊔_{1} and ⊔_{2} are two join functions in ⟨Q, ⊑⟩, then x ⊔_{1} y ≡ x ⊔_{2} y, for all x, y ∈ Q.

7.4.7 Definition

Let ⟨Q, ⊑⟩ be a quasi–ordered class.

(1) A \underline{infimum} function or \underline{big conjunctor} on ⟨Q, ⊑⟩ is a function

∏◯ 1 : P(Q) ⟶ Q

that always returns a \underline{greatest lower bound} in the sense that for all S ⊆ Q holds:

(a) ∏S ⊆ y, for all y ∈ S

(b) If z ∈ Q with z ⊑ y for all y ∈ S and ∏S ⊑ z, then z ≡ ∏S.

(2) A \underline{supremum} function or \underline{big disjunctor} on ⟨Q, ⊑⟩ is a function

∐◯ 1 : P(Q) ⟶ Q

that always returns a \underline{least upper bound} in the sense that for all S ⊆ Q holds:

(a) y ⊑ ∐S, for all y ∈ S

(b) If z ∈ Q with y ⊑ z for all y ∈ S and z ⊑ ∐S, then z ≡ ∐S.

7.4.8 Lemma quasi–uniqueness of infimum and supremum

Let ⟨Q, ⊑⟩ be a quasi–ordered class.

(1) If ∏_{1} and ∏_{2} are two infimum functions in ⟨Q, ⊑⟩, then ∏_{1}S ≡ ∏_{2}S, for all S ⊆ Q.

(2) If ∐_{1} and ∐_{2} are two supremum functions in ⟨Q, ⊑⟩, then ∐_{1}S ≡ ∐_{2}S, for all S ⊆ Q.

7.4.9 Definition

A quasi–ordered class ⟨Q, ⊑⟩ is called

(1) \underline{bounded}, if both a bottom and top element exist

(2) a \underline{quasi–lattice}, if a meet and join function exist

(3) a \underline{lattice}, if it is a canonic quasi–lattice, in other words a quasi–lattice on a poclass

(4) a \underline{complete quasi–lattice}, if an infimum and supremum function exist

(5) a \underline{complete lattice}, accordingly, i.e. if it is a complete canonic quasi–lattice

7.4.10 Lemma canonicity theorem

On a given quasi–ordered class, bottom and top elements, small and big con– and disjunctors may or may not exist. But in case of a poclass, each of these items is unique if it exists at all.

7.5 Distributivity and complementation

7.5.1 Definition

Let ⟨Q, ⊑⟩ be a quasi–lattice. Let ⊓ and ⊔ be a meet and join function on it. We say that ⟨Q, ⊑⟩ is \underline{distributive}, if

\begin{aligned}(x ⊓ y) ⊔ z & ≡ & (x ⊔ z) ⊓ (y ⊔ z) \\ (x ⊔ y) ⊓ z & ≡ & (x ⊓ z) ⊔ (y ⊓ z) \end{aligned}

for all x, y, z ∈ Q.

7.5.2 Definition complement

Let ⟨Q, ⊑⟩ be a bounded quasi–lattice. Let ⊥,⊤,⊓, and ⊔ be a bottom, top, meet, and join on ⟨Q, ⊑⟩, respectively. A \underline{negator} or \underline{complement function} on ⟨Q, ⊑⟩ is a function

¬◯ 1 : Q ⟶ Q

such that for all x ∈ Q holds:

¬x ⊓ x ≡ ⊥  and  ¬x ⊔ x ≡ ⊤

⟨Q, ⊑⟩ itself is a \underline{complemented} quasi–lattice, if such a complement function exists.

7.5.3 Lemma quasi–uniqueness of complementations

Let ⟨Q, ⊑⟩ be a complemented quasi–lattice and let ¬_{1} and ¬_{2} be two complement functions on it. If ⟨Q, ⊑⟩ is distributive, then ¬_{1}x ≡ ¬_{2}x, for all x ∈ Q.

7.5.4 Definition

A \underline{boolean quasi–lattice} (or \underline{quasi–boolean lattice}) is a complemented distributive quasi–lattice. A \underline{boolean lattice} is a canonic boolean quasi–lattice, i.e. a complemented distributive lattice.

7.5.5 Definition relative complement

Let ⟨Q, ⊑⟩ be a quasi–lattice with bottom element and let ⊥, ⊓, ⊔ be a bottom, meet and join, respectively. A \underline{relative complement function} on ⟨Q, ⊑⟩ is a function

◯ 1 − ◯ 2 : Q × Q ⟶ Q

such that for all x, y ∈ Q holds:

(x − y) ⊓ y ≡ ⊥ and (x − y) ⊔ y ≡ x

x − y is the \underline{relative complement} of y in x, or simply x \underline{without} or \underline{minus} y.

7.5.6 Definition generalized boolean quasi–lattice

A \underline{generalized boolean quasi–lattice} is a distributive quasi– lattice that has a bottom element and a relative complement function. A \underline{generalized boolean lattice} is a canonic generalized boolean quasi-lattice, i.e. a distributive lattice with a bottom element and a relative complement function.

7.5.7 Lemma

(1) If a bounded quasi–lattice has a relative complement function ◯ 1 − ◯ 2 , it also has a complement function, namely ¬◯ 1 := ⊤ − ◯ 1 .

(2) A generalized boolean quasi–lattice is a boolean quasi– lattice iff it has a top element.

7.5.8 Remark

(1) Note, that due to 7.4.2 and 7.4.6, the concrete choice of ⊥,⊤,⊓, and ⊔ is not relevant in the definitions 7.5.1, 7.5.2 and 7.5.5, respectively.

(2) There are non–distributive complemented quasi–lattices, where two complement functions do not always produce equivalent results. However, these structures are not relevant for us.

(3) Unfortunately, the definition of “generalized boolean” notion is less common than the very established and standardized “boolean” structures and “lattices”. A simplified slogan to memorize the concept is the definition of generized boolean quasi–lattices as “boolean quasi–lattices with or without top element”.

7.6 Quasi–algebras

7.6.1 Remark Introduction

A quasi–ordered class ⟨Q, ⊑⟩ together with a couple of junctions (e.g. ⊤, ⊓, ∏ etc. as defined earlier) are called \underline{quasi–algebras}. “Quasi” is a generalization of the usual “non– quasi” or “canonical” notion in the sense that the equivalence relation ≡ is a generalization of the identity relation =.

If ⟨Q, ⊑⟩ is a poclass, then a junctor like a meet function ⊓ is uniquely defined if it exists at all. So, if ⟨Q, ⊑⟩ is say a lattice, then the algebra ⟨Q, ⊑, ⊓, ⊔⟩ is given by ⟨Q, ⊑⟩ only. In other words, a “lattice” is a “lattice algebra”. That makes the term “lattice algebra” a pleonasm and superfluous.

However, if ⟨Q, ⊑⟩ is a quasi–lattice, then there may be more than one way to define a “quasi–lattice algebra” ⟨Q, ⊑, ⊓, ⊔⟩. In other words, a “quasi–lattice” is not yet a whole “quasi– lattice algebra”.

So, when the traditional order and lattice theory, which is based on poclasses, is generalized for quasi–ordered classes, it makes sense to distinguish “quasi–structures” from their concrete “quasi–structure algebras” instances.

We define the following particular quasi–algebras:

7.6.2 Definition quasi–algebras

(1) A \underline{(distributive) quasi–lattice algebra} is a structure

⟨Q, ⊑, ≡, ⊓, ⊔⟩

where ⟨Q, ⊑⟩ is a (distributive) quasi–lattice, ≡ is the equivalence relation of ⊑ and ⊓ is a meet and ⊔ is a join function.

(2) A \underline{(distributive) bounded quasi–lattice algebra} is a structure

⟨Q, ⊑, ≡, ⊥, ⊤, ⊓, ⊔⟩

where ⟨Q, ⊑, ≡, ⊓, ⊔⟩ is a (distributive) quasi–lattice algebra and ⊥ is a bottom and ⊤ is a top element.

(3) A \underline{(distributive) complete quasi–lattice algebra} is a structure

⟨Q, ⊑, ≡, ⊥, ⊤, ⊓, ⊔, ∏, ∐⟩

where ⟨Q, ⊑, ≡, ⊥, ⊤, ⊓, ⊔⟩ is a (distributive) bounded quasi–lattice algebra and ∏ is an infimum and ∐ is a supremum function.

(4) A \underline{quasi–boolean algebra} is a structure

⟨Q, ⊑, ≡, ⊥, ⊤, ⊓, ⊔, ¬⟩

where ⟨Q, ⊑⟩ is a boolean quasi–lattice, ¬ is a complement function, and ⟨Q, ⊑, ≡, ⊥, ⊤, ⊓, ⊔⟩ is a bounded quasi–lattice algebra (which is distributive).

(5) A \underline{complete quasi–boolean algebra} is a structure

⟨Q, ⊑, ≡, ⊥, ⊤, ⊓, ⊔, ∏, ∐, ¬⟩

which is both, a quasi–boolean algebra and a complete quasi–lattice algebra (which is distributive).

(6) A \underline{generalized quasi–boolean algebra} is a structure

⟨Q, ⊑, ≡, ⊥, ⊓, ⊔, −⟩

where ⟨Q, ⊑, ≡, ⊓, ⊔⟩ is a distributive quasi–lattice algebra, ⊥ is a bottom element and − is a relative complement function on Q.

7.6.3 Remark

∏ and ∐ in the previous definitions both have P (Q) as their domain, not just Q. According to the structure notation 5.8.2, we should therefore include P (Q) among the list of carrier classes and write e.g.

⟨Q, P (Q) , ⊑, ≡, ⊥, ⊤, ⊓, ⊔, ∏, ∐, ¬⟩

for complete quasi–boolean algebras. But it is custom to omit the “P (Q)” and we will usually share this habit.

7.6.4 Lemma

If ⟨Q ⊑⟩ is a quasi–ordered class, there is

(1) x ⊑ y (reflexivity of ⊑)

(2) x ⊑ y and y ⊑ z implies x ⊑ z (transitivity of ⊑)

(3) x ≡ y (reflexivity of ≡)

(4) x ≡ y and y ≡ z implies x ≡ z (transitivity of ≡)

(5) x ≡ y implies y ≡ x (symmetry of ≡)

(6) x ≡ y iff (x ⊑ y and y ⊑ x) (≡ is equivalence of ⊑) for all x, y, z ∈ Q.

7.6.5 Lemma

If 𝔔 = ⟨Q ⊑, ≡, ⊓, ⊔⟩ is a quasi–lattice algebra, there is

(1) x ⊑ y iff x ⊓ y ≡ x (order as meet)

(2) x ⊑ y iff x ⊔ y ≡ y (order as join)

(3) x ⊓ y ⊑ x (meet is lower bound)

(4) x ⊑ x ⊔ y (join is upper bound)

(5) (x ⊓ y) ⊓ z ≡ x ⊓ (y ⊓ z) (quasi–assosiativity of meet)

(6) (x ⊔ y) ⊔ z ≡ x ⊔ (y ⊔ z) (quasi–assosiativity of join)

(7) x ⊓ y ≡ y ⊓ x (quasi–commutativity of meet)

(8) x ⊔ y ≡ y ⊔ x (quasi–commutativity of join)

(9) x ⊓ x ≡ x (quasi–idempotency of meet)

(10) x ⊔ x ≡ x (quasi–idempotency of join)

(11) x ⊓ (x ⊔ y) ≡ x (quasi–absoption)

(12) x ⊔ (x ⊓ y) ≡ x (quasi–absorption) And in case 𝔔 is distributive, we also have

(13) x ⊓ (y ⊔ z) ≡ (x ⊓ y) ⊔ (x ⊓ z) (distr. of ⊓ over ⊔)

(14) x ⊔ (y ⊓ z) ≡ (x ⊔ y) ⊓ (x ⊔ z) (distr. of ⊔ over ⊓) for all x, y, z ∈ Q:

7.6.6 Lemma

If ⟨Q ⊑, ≡, ⊥, ⊤, ⊓, ⊔⟩ is a bounded quasi–lattice algebra, there is

(1) ⊥ ⊑ x (bottom is least element)

(2) x ⊑ ⊤ (top is greatest element)

(3) x ⊓ ⊥ ≡ ⊥ (bottom cancels meet)

(4) x ⊔ ⊤ ≡ ⊤ (top cancels join)

(5) x ⊔ ⊥ ≡ x (bottom is quasi–neutral element of join)

(6) x ⊓ ⊤ ≡ x (top is quasi–neutral element of meet) for all x ∈ Q.

7.6.7 Definition

If ⟨Q ⊑, ≡, ⊥, ⊤, ⊓, ⊔⟩ is a bounded quasi–lattice algebra, we define the following notation for every n ≥ 0:

◯ 1 ⊓ … ⊓ ◯ n := \begin{cases}⊤ & if n = 0 \\ ◯ 1 ⊓ (◯ 2 ⊓ … ⊓ ◯ n ) & if n > 0 \end{cases}
◯ 1 ⊔ … ⊔ ◯ n := \begin{cases}⊤ & if n = 0 \\ ◯ 1 ⊔ (◯ 2 ⊔ … ⊔ ◯ n ) & if n > 0 \end{cases}

And for all n, m ∈ ℕ we also put:

\begin{aligned}⊓^{m}_{i=n}x_{i} & := & x_{n} ⊓ x_{n+1} ⊓ … ⊓ x_{m} \\ ⊔^{m}_{i=n}x_{i} & := & x_{n} ⊔ x_{n+1} ⊔ … ⊔ x_{m} \end{aligned}

7.6.8 Lemma

Let ⟨Q ⊑, ≡, ⊥, ⊤, ⊓, ⊔⟩ be a bounded distributive quasi– lattice algebra. For all n, m ∈ ℕ and x, y_{n}, …, y_{m} ∈ Q holds

(1) x ⊓ ⊔^{m}_{i=n}y_{i} ≡ ⊔^{m}_{i=n}(x ⊓ y_{i})

(2) x ⊔ ⊓^{m}_{i=n}y_{i} ≡ ⊓^{m}_{i=n}(x ⊔ y_{i})

More general, for all n_{1}, m_{1}, n_{2}, m_{2} ∈ ℕ and x_{n1} , …, x_{m1} , y_{n2} , …, y_{m2} ∈ Q holds

(3) ( ⊔^{m1}_{i=n1}x_{i}) ⊓ ( ⊔^{m2}_{j=n2}y_{j}) ≡ ⊔^{m1}_{i=n1} ⊔^{m2}_{j=n2} (x_{i} ⊓ y_{j})

(4) ( ⊓^{m1}_{i=n1}x_{i}) ⊔ ( ⊓^{m2}_{j=n2}y_{j}) ≡ ⊓^{m1}_{i=n1} ⊓^{m2}_{j=n2} (x_{i} ⊔ y_{j})

7.6.9 Lemma

If ⟨Q ⊑, ≡, ⊥, ⊤, ⊓, ⊔, ∏, ∐⟩ is a complete quasi–lattice algebra then

(1) ⊤ ≡ ∏∅ (empty infimum)

(2) ⊥ ≡ ∐∅ (empty supremum)

(3) x ⊓ y ≡ ∏ {x, y} (small as big conjunction)

(4) x ⊔ y ≡ ∐ {x, y} (small as big disjunction) and in case of distributivity, there also is

(5) x ⊓ ∐S ≡ ∐{x ⊓ y | y ∈ S} (distr. of ⊓ over ∐)

(6) x ⊔ ∏S ≡ ∏{x ⊔ y | y ∈ S} (distr. of ⊔ over ∏) for all x, y ∈ Q and S ⊆ Q.

7.6.10 Lemma

If ⟨Q ⊑, ≡, ⊥, ⊤, ⊓, ⊔, ¬⟩ is a quasi–boolean algebra, there is

(1) ⊥ ≡ ¬⊤ (negated top)

(2) ⊤ ≡ ¬⊥ (negated bottom)

(3) ¬x ⊓ x ≡ ⊥ (meet of complements)

(4) ¬x ⊔ x ≡ ⊤ (join of comlements)

(5) ¬ ⊓^{n}_{i=1} x_{i} ≡ ⊔^{n}_{i=1}¬x_{i} (de Morgan’s law)

(6) ¬ ⊔^{n}_{i=1} x_{i} ≡ ⊓^{n}_{i=1}¬x_{i} (de Morgan’s law)

(7) ¬¬x ≡ x (double negation)

(8) x ⊑ y iff ¬y ⊑ ¬x (order inversion)

(9) x ⊑ y iff ¬x ⊔ y ≡ ⊤ (top criterion of order)

(10) x ⊑ y iff x ⊓ ¬y ≡ ⊥ (bottom criterion of order) for all x, x_{1}, …, x_{n}, y ∈ Q with n ∈ ℕ.

7.6.11 Lemma

If ⟨Q ⊑, ≡, ⊥, ⊤, ⊓, ⊔, ∏, ∐, ¬⟩ is a complete quasi– boolean algebra, there is

(1) ¬∏S ≡ ∐{¬y | y ∈ S} (de Morgan’s law)

(2) ¬∐S ≡ ∏{¬y | y ∈ S} (de Morgan’s law) for all S ⊆ Q.

7.6.12 Lemma

(1) If ⟨Q, ⊑, ≡, ⊓, ⊔⟩ is a quasi–lattice algebra, then the following statements are equivalent for all x, y ∈ Q:

(a) x ⊑ y

(b) x ⊔ y ≡ y

(c) x ⊓ y ≡ x

(2) If ⟨Q, ⊑, ≡, ⊥, ⊤, ⊓, ⊔, ¬⟩ is a quasi–boolean algebra, then the following statements are equivalent for all x, y ∈ Q:

(a) x ⊑ y

(b) ¬y ⊑ ¬x

(c) x ⊓ ¬y ≡ ⊥

(d) ¬x ⊔ y ≡ ⊤

7.6.13 Lemma

If ⟨Q, ⊑, ≡, ⊥, ⊤, ⊓, ⊔⟩ is a bounded quasi–lattice algebra and x, y ∈ Q, then

(1) (x ≡ ⊤ and y ≡ ⊤) iff x ⊓ y ≡ ⊤

(2) (x ≡ ⊥ and y ≡ ⊥) iff x ⊔ y ≡ ⊥

(3) (x ≡ ⊤ or y ≡ ⊤) implies x ⊔ y ≡ ⊤

(4) (x ≡ ⊥ or y ≡ ⊥) implies x ⊓ y ≡ ⊥ If ⟨Q, ⊑, ≡, ⊥, ⊤, ⊓, ⊔, ∏, ∐⟩ is a complete quasi–lattice algebra and S ⊆ Q, then

(5) (∀y ∈ S . y ≡ ⊤) iff ∏S ≡ ⊤

(6) (∀y ∈ S . y ≡ ⊥) iff ∐S ≡ ⊥

(7) (∃y ∈ S . y ≡ ⊥) implies ∏S ≡ ⊥

(8) (∃y ∈ S . y ≡ ⊤) implies ∐S ≡ ⊤ If ⟨Q, ⊑, ≡, ⊥, ⊤, ⊓, ⊔, ¬⟩ is a quasi–boolean algebra and x ∈ Q, then

(9) ¬x ≡ ⊤ iff x ≡ ⊥

(10) ¬x ≡ ⊥ iff x ≡ ⊤ 7.6.14 Lemma

If ⟨Q ⊑, ≡, ⊥, ⊤, ⊓, ⊔, ∏, ∐⟩ is a complete quasi–lattice algebra, there is

(1) (y ⊑ x for all y ∈ S) iff ∐S ⊑ x

(2) (y ⊑ x for one y ∈ S) implies ∏S ⊑ x

(3) (x ⊑ y for all y ∈ S) iff x ⊑ ∏S

(4) (x ⊑ y for one y ∈ S) implies x ⊑ ∐S for all x, y, z ∈ Q and S ⊆ Q.

7.6.15 Lemma

If ⟨Q, ⊑, ≡, ⊥, ⊓, ⊔, −⟩ is a generalized quasi–boolean algebra, there is

(1) ⊥ − x ≡ ⊥

(2) x − ⊥ ≡ x

(3) x − (y ⊓ z) ≡ (x − y) ⊔ (x − z)

(4) x − (y ⊔ z) ≡ (x − y) ⊓ (x − z)

(5) (y ⊓ z) − x ≡ (y − x) ⊓ (z − x)

(6) (y ⊔ z) − x ≡ (y − x) ⊔ (z − x)

(7) (x − y) − z ≡ x − (y ⊔ z)

(8) x − (y − z) ≡ (x − y) ⊔ (x ⊓ z)

(9) (x − y) ⊓ z ≡ (x ⊓ z) − y

(10) (x − y) ⊔ z ≡ (x ⊔ z) − (y − z)

for all x, y, z ∈ Q.

7.6.16 Lemma

If ⟨Q, ⊑, ≡, ⊥, ⊤, ⊓, ⊔, ¬⟩ is a quasi–boolean algebra, then

◯ 1 − ◯ 2 := [ \begin{matrix}Q × Q ⟶ Q \\ ⟨x, y⟩ ↦ x ⊓ ¬y \end{matrix} ]

is a relative complement function with

(1) x − ⊤ ≡ ⊤

(2) ⊤ − x ≡ ¬x for all x ∈ Q.

7.7 Quotient structures

7.7.1 Definition

Let ∼ be an equivalence relation on a given class Q.

(1) For every x ∈ Q we define

x/∼ := {y ∈ Q | y ∼ x}

the \underline{equivalence class} of x modulo ∼

(2) We define

Q/∼ := { x/∼ | x ∈ Q}

the \underline{quotient class} of Q modulo ∼

7.7.2 Definition

Given an equivalence relation ∼ on a class Q.

(1) Let f be an n–ary function on Q, i.e. f : Q^{n} ⟶ Q. We say that f is \underline{∼–compatible}, if x_{1} ∼ y_{1}, …, x_{n} ∼ y_{n} implies f(x_{1}, …, x_{n}) ∼ f(y_{1}, …, y_{n}), for all x_{1}, …, x_{n}, y_{1}, …, y_{n} ∈ Q. And in that case the following function is well–defined

f/∼ := [ \begin{matrix}( Q/∼)^{n} ⟶ ( Q/∼) \\ ⟨ x_{1}/∼ , …, x_{n}/∼ ⟩ ↦ f(x_{1}, …, x_{n})/∼ \end{matrix} ]

the \underline{quotient function} of f modulo ∼

(2) Let R be a n–ary relation on Q, i.e. R : Rel(⟨Q | n⟩). We say that R is \underline{∼–compatible}, if x_{1} ∼ y_{1}, …, x_{n} ∼ y_{n} implies R(x_{1}, …, x_{n}) ⇔ R(y_{1}, …, y_{n}), for all x_{1}, …, x_{n}, y_{1}, …, y_{n} ∈ Q. And in that case the following n–ary relation is welldefined

R/∼ := [ \begin{matrix}(Q/∼) ↭ … ↭ (Q/∼) \\ ⟨ x_{1}/∼ , …, x_{n}/∼ ⟩ ⇝ R(x_{1}, …, x_{n}) \end{matrix} ]

the \underline{quotient relation} of R modulo ∼

7.7.3 Definition Given an ordinary structure

ℭ = ⟨C, c_{1}, …, f_{1}, …, R_{1}, …⟩

i.e. C is a class, the c_{i} are constants from C, the f_{i} are ordinary functions on C and the R_{i} are ordinary relations on C. If ∼ is an equivalence relation on C, we say that ℭ is \underline{∼–compatible} or ∼ is a \underline{congruence relation} on ℭ, if each f_{i} is ∼–compatible and each R_{i} is ∼–compatible. And in that case, we define

ℭ/∼ := ⟨ C/∼ , c_{1}/∼ , …, f_{1}/∼ , …, R_{1}/∼⟩

the \underline{quotient structure} of ℭ modulo ∼

7.7.4 Lemma

For every quasi–ordered class 𝔔 = ⟨Q, ⊑, ≡⟩ holds:

(1) 𝔔/≡ is a (well–defined) poclass.

(2) 𝔔 is a quasi–lattice iff 𝔔/≡ is a lattice. And if that is the case, then

(a) 𝔔 is bounded iff 𝔔/≡ is bounded

(b) 𝔔 is distributive iff 𝔔/≡ distributive

(c) 𝔔 is complemented iff 𝔔/≡ complemented

(d) 𝔔 is boolean iff 𝔔/≡ is boolean

(e) 𝔔 is complete iff 𝔔/≡ is complete

(f) 𝔔 is generalized boolean iff 𝔔/≡ is generalized boolean

8 Additional junctors for quasi–boolean structures

8.0.5 Remark

We introduce two additional junctors that can be derived from every quasi–boolean algebra: the subjunctor “→” and the equijunctor “↔”, both not in their common binary version, but more general as multiary functions.

This whole section 8 is not an essential part of the overall text. It can and probably should be skipped on a first reading.

8.1 Junctor sets

8.1.1 Remark

Given a quasi–boolean lattice ⟨Q, ⊑, ≡⟩. We can add the usual operations ⊥, ⊤, ⊓, ⊔, ¬ to turn it into a quasi–boolean algebra, as described before. This set of operations is (quasi-) complete in the sense that we can define any (⊑–related) n– ary junction j : Q^{n} ⟶ Q in terms of these five.^{24} But this set is not minimal, because we can remove some of them and the remaining ones are still complete. For example, we can remove ⊥ and ⊓, because they are given in terms of ⊤, ⊔, ¬ via ⊥ ≡ ¬⊤ and x ⊓ y ≡ ¬(¬x ⊔ ¬y).

There are plenty of alternative definitions for alternative junctor set, in particular in the logic tradition, and there are also more general investigations that compare these systems. For our part here we concentrate on two additional derived junctors that are useful for our purposes, such as logic.

8.2 Multiary sub– and equijunction

8.2.1 introduction

In particular in logic, two other junctions are often used:^{25} the subjunction → and the equijunction ↔. Their usual idea is the resemblence with the sub– and equivalence, respectively, in the sense that

\begin{matrix}x → y ≡ ⊤ & iff & x ⊑ y \\ x ↔ y ≡ ⊤ & iff & x ≡ y \end{matrix}

The following definition is accordingly (see 8.2.18), but is generalized to arbitrary numbers of arguments.

This multi–ary generalization is not very common, maybe a novelty, but for us it has two advantages: For (propositional) logic (6.4.1) the restrictions to binary forms like [ ◯ 1 ∧ ◯ 2 ] do not really make a modern calculus, because they make (disjunctive or conjunctive) normal forms very nested and awkward. And since we use multiary forms like [ ◯ 1 ∧ … ∧ ◯ n ] in our formula syntax anyway, it seems more elegant to remove binary restrictions altogether and have the [ ◯ 1 → … → ◯ n ] and [ ◯ 1 ↔ … ↔ ◯ n ] available, as well. Secondly, these two multiary junction are direct representions of two important notions: “◯ 1 , …, ◯ n are in order (or a chain)” and “the ◯ 1 , …, ◯ n are an equivalence class”, respectively.

8.2.2 Definition

Let ⟨Q, ⊑, ≡, ⊥, ⊤, ⊓, ⊔, ¬⟩ be a quasi–boolean algebra. We define

(→ ◯ 1 ) := [ \begin{matrix}Q^{∗} ⟶ Q \\ ⟨x_{1}, …, x_{n}⟩ ↦ ⊓^{n−1}_{i=1} (¬x_{i} ⊔ x_{i+1}) \end{matrix} ]

the \underline{subjunctor}

(↔ ◯ 1 ) := [ \begin{matrix}Q^{∗} ⟶ Q \\ ⟨x_{1}, …, x_{n}⟩ ↦ ( ⊓^{n}_{i=1}¬x_{i}) ⊔ ( ⊓^{n}_{i=1}x_{i}) \end{matrix} ]

the \underline{equijunctor}

8.2.3 Definition notation

We usually write

x_{1} → … → x_{n} instead of (→ ⟨x_{1}, …, x_{n}⟩)
x_{1} ↔ … ↔ x_{n} instead of (↔ ⟨x_{1}, …, x_{n}⟩)

and if these expressions have to be written explicitely for n ≤ 1, we write

(→) for (→ ⟨⟩)  (↔) for (↔ ⟨⟩)
(→ x) for (→ ⟨x⟩)  (↔ x) for (↔ ⟨x⟩)

Furthermore, we also use yet another version and write

\begin{matrix}→_{i=n}^{m} x_{i} & for & x_{m} → x_{m+1} → … → x_{n} \\ ↔_{i=n}^{m} x_{i} & for & x_{m} ↔ x_{m+1} ↔ … ↔ x_{n} \end{matrix}

for arbitrary m, n ∈ ℕ.

8.2.4 Remark

Of course, if n > m then

→^{m}_{i=n} x_{i} = (→) = ⊓^{m}_{i=n} (¬x_{i} ⊔ x_{i+1}) = ⊤

24In terms of propositional logic, this completeness of opertions means that every truth table can be represented by a formula.

25There is no real standard for their names. Our “subjunction” and “equijunction” here is not very common, but it fits nicely into the overall terminology, in particular due to their familiarity with the “subvalence” (“⇒” or “⊑”) and “equivalence” (“⇔” or “≡”), respectively. The symbols “→” and “↔” have become more or less standard in mathematics now, although there is another tradition in logic that often uses “⊂” for “→”. and

↔^{m}_{i=n} x_{i} = (↔) = ( ⊓^{m}_{i=n}¬x_{i}) ⊔ ( ⊓^{m}_{i=n}x_{i}) = ⊤ ⊔ ⊤ ≡ ⊤

according to the definition of nullary conjunctions (in 7.6.7).

And if n = m then

→^{m}_{i=n} x_{i} = (→ x_{n}) = ⊓^{n−1}_{i=n} (¬x_{i} ⊔ x_{i+1}) = ⊤

and

↔^{m}_{i=n} x_{i} = (↔ x_{n}) = ( ⊓^{n−1}_{i=n}¬x_{i}) ⊔ ( ⊓^{n−1}_{i=n}x_{i}) = ⊤ ⊔ ⊤ ≡ ⊤

8.2.5 Lemma

Let ⟨Q, ⊑, ≡, ⊥, ⊤, ⊓, ⊔, ¬⟩ be a quasi–boolean algebra. For all x, y, z ∈ Q and x_{1}, …, x_{n}, y_{1}, …, y_{m} ∈ Q with n, m ∈ ℕ holds:

(1) Nullary and unary cases:

(a) (→) ≡ ⊤

(b) (↔) ≡ ⊤

(c) (→ x) ≡ ⊤

(d) (↔ x) ≡ ⊤

(2) The common binary case:

(a) x → y ≡ ¬x ⊔ y

(b) x ↔ y ≡ (x → y) ⊓ (y → x) But also:

(c) x ↔ y ≡ (¬x ⊓ ¬y) ⊔ (x ⊓ y)

(d) x ↔ y ≡ x → y → x ≡ y → x → y

(3) Unipotency:

(a) x → x ≡ ⊤

(b) x ↔ x ≡ ⊤

(4) For the combinations with ⊥ and ⊤ holds: (a) ⊥ → x ≡ ⊤

(b) ⊤ → x ≡ x

(c) x → ⊥ ≡ ¬x

(d) x → ⊤ ≡ ⊤

(e) ⊥ ↔ x ≡ ¬x

(f) ⊤ ↔ x ≡ x

(g) x ↔ ⊥ ≡ ¬x

(h) x ↔ ⊤ ≡ x See also 8.2.16 for more general laws.

8.2.6 Proof of 8.2.5

(1) Immediate consequences of definition 8.2.2; see 8.2.4.

(2) (a) is an application of definition 8.2.2. For (b) holds:

(x → y) ⊓ (y → x) ≡ (¬x ⊔ y) ⊓ (¬y ⊔ x) due to (a) ≡ (¬x ⊓ ¬y) ⊔ (¬x ⊓ ¬x) ⊔ (y ⊓ ¬y) ⊔ (y ⊓ x) distributivity ≡ (¬x ⊓ ¬y) ⊔ ⊥ ⊔ ⊥ ⊔ (y ⊓ x) complement

≡ (¬x ⊓ ¬y) ⊔ (y ⊓ x) because ⊥ is neural for ⊔ ≡ (¬x ⊓ ¬y) ⊔ (x ⊓ y) commutativity of ⊔ ≡ x ↔ y def. of ↔

(c) is definition 8.2.2 for two arguments, and (d) is true because x ↔ y

≡ (¬x ⊓ ¬y) ⊔ (x ⊓ y)
≡ (¬x ⊔ x) ⊓ (¬x ⊔ y) ⊓ (¬y ⊔ x) ⊓ (¬y ⊔ y)

due to the distributivity

≡ ⊤ ⊓ (¬x ⊔ y) ⊓ (¬y ⊔ x) ⊓ ⊤

≡ (¬x ⊔ y) ⊓ (¬y ⊔ x)

≡ x → y → x definition 8.2.2

and similarly for x ↔ y ≡ y → x → y.

(3) A proof for (a) is x → x

≡ ¬x ⊔ x due to (2)(a) ≡ ⊤ complement

A proof of (b) is

x ↔ x

≡ (¬x ⊓ ¬x) ⊔ (x ⊓ x) def. 8.2.2

≡ ¬x ⊔ x idempotency of ⊓ ≡ ⊤ complement

(4) For the combination with ⊥ and ⊤ we use (2)(a) and the common laws for ⊥ and ⊤ (7.6.6 and 7.6.10) and obtain:

(a) ⊥ → x ≡ ¬⊥ ⊔ x ≡ ⊤ ⊔ x ≡ ⊤

(b) ⊤ → x ≡ ¬⊤ ⊔ x ≡ ⊥ ⊔ x ≡ x

(c) x → ⊥ ≡ ¬x ⊔ ⊥ ≡ ¬x

(d) x → ⊤ ≡ ¬x ⊔ ⊤ ≡ ⊤

(e) ⊥ ↔ x ≡ (¬⊥ ⊓ ¬x) ⊔ (⊥ ⊓ x) ≡ ¬x ⊔ ⊥ ≡ ¬x

(f) ⊤ ↔ x ≡ (¬⊤ ⊓ ¬x) ⊔ (⊤ ⊓ x) ≡ ⊥ ⊔ x ≡ x

(g) x ↔ ⊥ ≡ (¬x ⊓ ¬⊥) ⊔ (x ⊓ ⊥) ≡ ¬x ⊔ ⊥ ≡ ¬x

(h) x ↔ ⊤ ≡ (¬x ⊓ ¬⊤) ⊔ (x ⊓ ⊤) ≡ ⊥ ⊔ x ≡ x

8.2.7 Lemma

Let ⟨Q, ⊑, ≡, ⊥, ⊤, ⊓, ⊔, ¬⟩ be a quasi–boolean algebra.

For all x_{1}, …, x_{n} ∈ Q with n ∈ ℕ holds:

(1) ¬(x_{1} → … → x_{n}) ≡ (x_{1} ⊓ ¬x_{2}) ⊔ … ⊔ (x_{n−1} ⊓ ¬x_{n})

(2) ¬(x_{1} ↔ … ↔ x_{n}) ≡ (x_{1} ⊔…⊔x_{n})⊓(¬x_{1} ⊔…⊔¬x_{n})

8.2.8 Proof of 8.2.7

In both cases, de Morgans law is applied to definition 8.2.2:

¬(x_{1} → … → x_{n})
≡ ¬ ((¬x_{1} ⊔ x_{2}) ⊓ … ⊓ (¬x_{n−1} ⊔ x_{n}))
≡ ¬(¬x_{1} ⊔ x_{2}) ⊔ … ⊔ ¬(¬x_{n−1} ⊔ x_{n})
≡ (¬¬x_{1} ⊓ ¬x_{2}) ⊔ … ⊔ (¬¬x_{n−1} ⊔ ¬x_{n})
≡ (x_{1} ⊓ ¬x_{2}) ⊔ … ⊔ (x_{n−1} ⊓ ¬x_{n})

and

¬(x_{1} ↔ … ↔ x_{n})
≡ ¬ ((¬x_{1} ⊓ … ⊓ ¬x_{n}) ⊔ (x_{1} ⊓ … ⊓ x_{n}))
≡ ¬(¬x_{1} ⊓ … ⊓ ¬x_{n}) ⊓ ¬(x_{1} ⊓ … ⊓ x_{n})
≡ (¬¬x_{1} ⊔ … ⊔ ¬¬x_{n}) ⊓ (¬x_{1} ⊔ … ⊔ ¬x_{n})
≡ (x_{1} ⊔ … ⊔ x_{n}) ⊓ (¬x_{1} ⊔ … ⊔ ¬x_{n})

8.2.9 Remark

Let ⟨Q, ⊑, ≡, ⊥, ⊤, ⊓, ⊔, ¬⟩ be a quasi–boolean algebra. For the commutativity and associativity of → and ← holds:

(1) → is not commutative.

Even binary subjunctions like x → y and y → x are not equivalent in general. For example, ⊤ → ⊥ ≡ ⊥ ≢ ⊤ ≡ ⊥ → ⊤.

(2) ↔ is commutative in general, i.e.

(a) x_{ν(1)} ↔ … ↔ x_{ν(n)} ≡ x_{1} ↔ … ↔ x_{n} for every n ∈ ℕ, all x_{1}, …, x_{n} ∈ Q and every bijection ν : {1, …, n} → {1, …, n}.

This derives from the commutativity of both ⊓ and ⊔, because

x_{ν(1)} ↔ … ↔ x_{ν(n)} ≡ (¬x_{ν(1)} ⊓ … ⊓ ¬x_{ν(n)}) ⊔ (x_{ν(1)} ⊓ … ⊓ x_{ν(n)}) ≡ (¬x_{1} ⊓ … ⊓ ¬x_{n}) ⊔ (x_{1} ⊓ … ⊓ x_{n}) ≡ x_{1} ↔ … ↔ x_{n}

(3) → is not associative.

For example, x → y → z and (x → y) → z are often not equivalent:

\begin{matrix}⊥ → ⊥ → ⊥ ≡ ⊤ & ≢ & ⊥ ≡ (⊥ → ⊥) → ⊥ \\ ⊤ → ⊥ → ⊥ ≡ ⊥ & ≢ & ⊤ ≡ (⊤ → ⊥) → ⊥ \end{matrix}

However, we have a law saying that

(a) (x → y) → z ⊑ x → (y → z) for all x, y, z ∈ Q because

(x → y) → z ≡ ¬(¬x ⊔ y) ⊔ z
≡ (x ⊓ ¬y) ⊔ z
⊑ ¬y ⊔ z
⊑ ¬x ⊔ ¬y ⊔ z
≡ ¬x ⊔ (¬y ⊔ z)
≡ x → (y → z)

(4) ↔ is not associative.

For example, x ↔ y ↔ z and (x ↔ y) ↔ z are often not equivalent:

\begin{matrix}⊥ ↔ ⊥ ↔ ⊥ ≡ ⊤ & ≢ & ⊥ ≡ (⊥ ↔ ⊥) ↔ ⊥ \\ ⊤ ↔ ⊥ ↔ ⊥ ≡ ⊥ & ≢ & ⊤ ≡ (⊤ ↔ ⊥) ↔ ⊥ \end{matrix}

However, we have a law saying that

(a) (x ↔ y) ↔ z ≡ x ↔ (y ↔ z) for all x, y, z ∈ Q because

(x ↔ y) ↔ z
≡ (¬(x ↔ y) ⊓ ¬z) ⊔ ((x ↔ y) ⊓ z)
≡ (((¬x ⊓ y) ⊔ (x ⊓ ¬y)) ⊓ ¬z) ⊔ (((¬x ⊓ ¬y) ⊔ (x ⊓ y)) ⊓ z)
≡ (¬x ⊓ y ⊓ ¬z) ⊔ (x ⊓ ¬y ⊓ ¬z) ⊔ (¬x ⊓ ¬y ⊓ z) ⊔ (x ⊓ y ⊓ z)
≡ (¬x ⊓ ¬y ⊓ z) ⊔ (¬x ⊓ y ⊓ ¬z) ⊔ (x ⊓ ¬y ⊓ ¬z) ⊔ (x ⊓ y ⊓ z)
≡ (¬x ⊓ ((¬y ⊓ z) ⊔ (y ⊓ ¬z))) ⊔ (x ⊓ ((¬y ⊓ ¬z) ⊔ (y ⊓ z)))
≡ (¬x ⊓ ¬(y ↔ z)) ⊔ (x ⊓ (y ↔ z))
≡ x ↔ (y ↔ z)

8.2.10 Lemma

Let ⟨Q, ⊑, ≡, ⊥, ⊤, ⊓, ⊔, ¬⟩ be a quasi–boolean algebra and y ∈ Q and x_{1}, …, x_{n} ∈ Q with n ∈ ℕ.

(1) → distributes over ⊓ and ⊔ as follows:

(a) ⊓^{n}_{i=1}(y → x_{i}) ≡ y → ( ⊓_{i=1}^{n}x_{i})

(b) ⊓^{n}_{i=1}(x_{i} → y) ≡ ( ⊔_{i=1}^{n}x_{i}) → y

(c) ⊔^{n}_{i=1}(y → x_{i}) ≡ y → ( ⊔_{i=1}^{n}x_{i})

(d) ⊔^{n}_{i=1}(x_{i} → y) ≡ ( ⊓_{i=1}^{n}x_{i}) → y

(2) For similar constructions with ↔ holds:

(a) ⊓^{n}_{i=1}(y ↔ x_{i}) ≡ (y ↔ x_{1} ↔ … ↔ x_{n})

(b) ⊓^{n}_{i=1} (y ↔ x_{i}) ≡ ( ⊔^{n}_{i=1}x_{i}) → y → ( ⊓^{n}_{i=1}x_{i})

8.2.11 Proof of 8.2.10

(1) We have:

⊓^{n}_{i=1}(y → x_{i})

≡ ⊓^{n}_{i=1}(¬y ⊔ xi) due to 8.2.5(2)(a)

≡ ¬y ⊔ ( ⊓^{n}_{i=1}x_{i}) due to 7.6.5(14)

≡ y → ( ⊓^{n}_{i=1}x_{i}) again, 8.2.5(2)(a)

⊓^{n}_{i=1}(x_{i} → y)

≡ ⊓^{n}_{i=1}(¬xi ⊔ y) due to 8.2.5(2)(a)

≡ (¬x_{1} ⊓ … ⊓ ¬x_{n}) ⊔ y due to 7.6.5(14) ≡ ¬ (x_{1} ⊔ … ⊔ x_{n}) ⊔ y due to 7.6.10(5)

≡ ( ⊔^{n}_{i=1}x_{i}) → y due to 8.2.5(2)(a)

⊔^{n}_{i=1}(y → x_{i})

≡ ⊔^{n}_{i=1}(¬y ⊔ xi) due to 8.2.5(2)(a)

≡ ¬y ⊔ ( ⊔^{n}_{i=1}x_{i})

because ⊔ is associative, commutative and idempotent

≡ y → ( ⊔^{n}_{i=1}x_{i}) again, 8.2.5(2)(a)

⊔^{n}_{i=1}(x_{i} → y)

≡ ⊔^{n}_{i=1}(¬xi ⊔ y) due to 8.2.5(2)(a)

≡ (¬x_{1} ⊔ … ⊓ ¬x_{n}) ⊔ y

because ⊔ is associative, commutative and idempotent

≡ ¬ (x_{1} ⊓ … ⊔ x_{n}) ⊔ y due to 7.6.10(6)

≡ ( ⊓^{n}_{i=1}x_{i}) → y due to 8.2.5(2)(a)

(2)(a) We proof by induction on n:

♣ For n = 0 holds:

⊓^{n}_{i=1}(y ↔ x_{i}) ≡ ⊤ ≡ (↔ y) ≡ (y ↔ x_{1} ↔ … ↔ x_{n})

♣ For n = 1 holds:

⊓^{n}_{i=1}(y ↔ x_{i}) ≡ (y ↔ x_{1}) ≡ (y ↔ x_{1} ↔ … ↔ x_{n})

♣ For n ↦ n + 1 holds:

⊓^{n+1}_{i=1}(y ↔ x_{i})

≡ ( ⊓^{n}_{i=1}(y ↔ x_{i})) ⊓ (y ↔ x_{n+1})

≡ (y ↔ x_{1} ↔ … ↔ x_{n}) ⊓ (y ↔ x_{n+1}) induction step

≡ (\begin{matrix}(¬y ⊓ ¬x_{1} ⊓ … ⊓ ¬x_{n}) \\ ⊔ \\ (y ⊓ x_{1} ⊓ … ⊓ x_{n}) \end{matrix}) ⊓ (\begin{matrix}(¬y ⊓ ¬x_{n+1}) \\ ⊔ \\ (y ⊓ x_{n+1}) \end{matrix})

definition 8.2.2

≡ (\begin{matrix}((¬y ⊓ ¬x_{1} ⊓ … ⊓ ¬x_{n}) ⊓ (¬y ⊓ ¬x_{n+1})) ⊔ \\ ((¬y ⊓ ¬x_{1} ⊓ … ⊓ ¬x_{n}) ⊓ (y ⊓ x_{n+1})) ⊔ \\ ((y ⊓ x_{1} ⊓ … ⊓ x_{n}) ⊓ (¬y ⊓ ¬x_{n+1})) ⊔ \\ ((y ⊓ x_{1} ⊓ … ⊓ x_{n}) ⊓ (y ⊓ x_{n+1})) \end{matrix})

distributivity 7.6.8(3)

≡ (\begin{matrix}(¬y ⊓ ¬y ⊓ ¬x_{1} ⊓ … ⊓ ¬x_{n} ⊓ ¬x_{n+1}) ⊔ \\ (¬y ⊓ y ⊓ ¬x_{1} ⊓ … ⊓ ¬x_{n} ⊓ x_{n+1}) ⊔ \\ (y ⊓ ¬y ⊓ x_{1} ⊓ … ⊓ x_{n} ⊓ ¬x_{n+1}) ⊔ \\ (y ⊓ y ⊓ x_{1} ⊓ … ⊓ x_{n} ⊓ x_{n+1}) \end{matrix})

associativity and commutativity of ⊓

≡ (\begin{matrix}(¬y ⊓ ¬x_{1} ⊓ … ⊓ ¬x_{n} ⊓ ¬x_{n+1}) ⊔ \\ ⊥⊔ \\ ⊥⊔ \\ (y ⊓ x_{1} ⊓ … ⊓ x_{n} ⊓ x_{n+1}) \end{matrix})

≡ (\begin{matrix}(¬y ⊓ ¬x_{1} ⊓ … ⊓ ¬x_{n} ⊓ ¬x_{n+1}) ⊔ \\ (y ⊓ x_{1} ⊓ … ⊓ x_{n} ⊓ x_{n+1}) \end{matrix})

≡ y ↔ x1 ↔ … ↔ xn def. 8.2.2, again

(2)(b) We obtain

⊓^{n}_{i=1} (y ↔ x_{i})

≡ ⊓^{n}_{i=1} ((x_{i} → y) ⊓ (y → x_{i}))

due to 8.2.5(2)(b)

≡ ( ⊓^{n}_{i=1} (x_{i} → y)) ⊓ ( ⊓^{n}_{i=1} (y → x_{i}))

because ⊓ is associative and commutative

≡ (( ⊔^{n}_{i=1}x_{i}) → y) ⊓ (y → ( ⊓^{n}_{i=0}x_{i}))

due to (1)(a) and (1)(b)

≡ ( ⊔^{n}_{i=1}x_{i}) → y → ( ⊓^{n}_{i=1}x_{i})

def. 8.2.2 of →

8.2.12 Lemma

Let ⟨Q, ⊑, ≡, ⊥, ⊤, ⊓, ⊔, ¬⟩ be a quasi–boolean algebra. For all x, y, z ∈ Q and x_{1}, …, x_{n}, y_{1}, …, y_{m} ∈ Q with n, m ∈ ℕ holds:

(1) Some alternative characterizations of → are

(a) →^{n}_{i=1} x_{i} ≡ ⊓^{n−1}_{i=1}(x_{i} → x_{i+1})

(b) →^{n}_{i=1} x_{i} ≡ ( →^{j}_{i=1} x_{i}) ⊓ ( →^{n}_{i=j} x_{i}) for 1 ≤ j ≤ n

(2) Other characterizations of ↔ are

(a) ↔^{n}_{i=1} x_{i} ≡ ⊓^{n−1}_{i=1}(x_{i} ↔ x_{i+1})

(b) ↔^{n}_{i=1} x_{i} ≡ ( ↔^{j}_{i=1} x_{i}) ⊓ ( ↔^{n}_{i=j} x_{i}) for 1 ≤ j ≤ n

(c) ↔^{n}_{i=1} x_{i} ≡ ⊓^{n}_{i=1} ⊓^{n}_{j=1} (x_{i} → x_{j})

(d) ↔^{n}_{i=1} x_{i} ≡ ⊓^{n}_{i=1} ⊓^{n}_{j=1} (x_{i} ↔ x_{j})

(e) ↔^{n}_{i=1} x_{i} ≡ ( →^{n}_{i=1} x_{i}) ⊓ ( →^{n−1}_{i=0} x_{n−i})

(f) ↔^{n}_{i=1} x_{i} ≡ ( ⊔^{n}_{i=1}x_{i}) → ( ⊓^{n}_{i=1}x_{i})

8.2.13 Proof of 8.2.12

(1)(a) We derive

→^{n}_{i=1} x_{i}

≡ x_{1} → … → x_{n} ≡ (¬x_{1} ⊔ x_{2}) ⊓ … ⊓ (¬x_{n−1} ⊔ x_{n})

def. 8.2.2

≡ (x_{1} → x_{2}) ⊓ … ⊓ (x_{n−1} → x_{n})

due to 8.2.5(2)(a)

≡ ⊓^{n−1}_{i=1}(x_{i} → x_{i+1})

(1)(b) We choose some j ∈ {1, …, n} and obtain

→^{n}_{i=1} x_{i}

≡ (x_{1} → x_{2}) ⊓ … ⊓ (x_{n−1} → x_{n}) due to (1)(a)

≡ (\begin{matrix}(x_{1} → x_{2}) ⊓ … ⊓ (x_{i−1} → x_{i})⊓ \\ (x_{i} → x_{i+1}) ⊓ … ⊓ (x_{n−1} → x_{n}) \end{matrix})

≡ (\begin{matrix}((x_{1} → x_{2}) ⊓ … ⊓ (x_{i−1} → x_{i})) ⊓ \\ ((x_{i} → x_{i+1}) ⊓ … ⊓ (x_{n−1} → x_{n})) \end{matrix})

associativity of ⊓

≡ (x_{1} → … → x_{i}) ⊓ (x_{i} → … → x_{n})

again, (1)(a)

≡ ( →^{j}_{i=1} x_{i}) ⊓ ( →^{n}_{i=j} x_{i})

(2)(a) We proof by induction on n.

♣ If n = 0 then

⊓^{−1}_{i=1}(x_{i} ↔ x_{i+1}) ≡ ⊤ ≡ (↔) ≡ ↔^{0}_{i=1} x_{i}

♣ If n = 1 then

⊓^{0}_{i=1}(x_{i} ↔ x_{i+1}) ≡ ⊤ ≡ (↔ x_{1}) ≡ ↔^{1}_{i=1} x_{i}

♣ If n ↦ n + 1 then

⊓^{n}_{i=1}(x_{i} ↔ x_{i+1})

≡ ( ⊓^{n−1}_{i=1}(x_{i} ↔ x_{i+1})) ⊓ (x_{n} ↔ x_{n+1})

≡ ( ⊓^{n−1}_{i=1}x_{i}) ⊓ (xn ↔ xn+1) induction step

≡ (\begin{matrix}(( ⊓^{n}_{i=1}¬x_{i}) ⊔ ( ⊓^{n}_{i=1}x_{i})) \\ ⊓ ((¬x_{n} ⊓ ¬x_{n+1}) ⊔ (x_{n} ⊓ x_{n+1})) \end{matrix})

def. 8.2.2

≡ ( ; \begin{matrix}( ⊓^{n}_{i=1}¬x_{i} ⊓ ¬x_{n} ⊓ ¬x_{n+1}) ⊔ ( ⊓^{n}_{i=1}¬x_{i} ⊓ x_{n} ⊓ x_{n+1}) \\ ⊔ ( ⊓^{n}_{i=1}x_{i} ⊓ ¬x_{n} ⊓ ¬x_{n+1}) ⊔ ( ⊓^{n}_{i=1}x_{i} ⊓ x_{n} ⊓ x_{n+1}) \end{matrix} ; )

distributivity 7.6.8(3)

≡ ( ⊓^{n+1}_{i=1}¬x_{i}) ⊔ ⊥ ⊔ ⊥ ⊔ ( ⊓^{n+1}_{i=1}x_{i})

because ¬xn ⊓ xn ≡ ⊥

≡ ( ⊓^{n+1}_{i=1}¬x_{i}) ⊔ ( ⊓^{n+1}_{i=1}x_{i})

≡ ↔^{n+1}_{i=1} xi def. 8.2.2, again

(2)(b) We select an arbitrary j ∈ {1, …, n}. If j = n then

↔^{n}_{i=1} x_{i} ≡ ( ↔^{n}_{i=1} x_{i}) ⊓ ( ↔^{n}_{i=n} x_{i}) ≡ ( ↔^{j}_{i=1} x_{i}) ⊓ ( ↔^{n}_{i=j} x_{i})

because ↔^{n}_{i=n} x_{i} ≡ (↔ x_{n}) ≡ ⊤.

Otherwise, j < n and we obtain

↔^{n}_{i=1} x_{i}

≡ ⊓^{n−1}_{i=1}(xi ↔ xi+1) due to (2)(a)

≡ ( ⊓^{j−1}_{i=1}(x_{i} ↔ x_{i+1})) ⊓ ( ⊓^{n−1}_{i=j}(x_{i} ↔ x_{i+1}))

associativity of ⊓

≡ ( ↔^{j}_{i=1} x_{i}) ⊓ ( ↔^{n}_{i=j} x_{i}) due to (2)(a), again

(2)(c) We obtain

↔^{n}_{i=1} x_{i}

≡ ( ⊓^{n}_{i=1}¬x_{i}) ⊔ ( ⊔^{n}_{j=1}x_{j}) def. 8.2.2

≡ ⊓^{n}_{i=1} ⊓^{n}_{j=1} (¬xi ⊔ xj) due to 7.6.8(4)

≡ ⊓^{n}_{i=1} ⊓^{n}_{j=1} (xi → xj) due to 8.2.5(2)(a)

(2)(d) We have

↔^{n}_{i=1} x_{i}

≡ ⊓^{n}_{i=1} ⊓^{n}_{j=1} (xi → xj) according to (c)

≡ ( ⊓^{n}_{i=1} ⊓^{n}_{j=1} (x_{i} → x_{j})) ⊓ ( ⊓^{n}_{i=1} ⊓^{n}_{j=1} (x_{i} → x_{j}))

idempotency of ⊓

≡ ( ⊓^{n}_{i=1} ⊓^{n}_{j=1} (x_{i} → x_{j})) ⊓ ( ⊓^{n}_{i=1} ⊓^{n}_{j=1} (x_{j} → x_{i}))

≡ ⊓^{n}_{i=1} ⊓^{n}_{j=1} ((x_{i} → x_{j}) ⊓ (x_{j} → x_{i}))

due to the associativity and commutativity of ⊓

≡ ⊓^{n}_{i=1} ⊓^{n}_{j=1} (xi ↔ xj) due to 8.2.5(2)(b)

(2)(e) First of all, let us note that

→^{n−1}_{i=0} x_{n−i}

≡ ⊓^{n−1}_{i=0} (x_{n−i} → x_{n−(i+1)}) due to (1)(a)

≡ (x_{n} → x_{n−1}) ⊓ … ⊓ (x_{3} → x_{2}) ⊓ (x_{2} → x_{1}) ≡ (x_{2} → x_{1}) ⊓ ⊓(x_{3} → x_{2}) ⊓ … ⊓ (x_{n} → x_{n−1})

≡ ⊓^{n−1}_{i=1} (x_{i+1} → x_{i})

We apply this in

↔^{n}_{i=1} x_{i}

≡ ⊓^{n−1}_{i=1} (x_{i} ↔ x_{i+1}) due to (a)

≡ ⊓^{n−1}_{i=1} ((x_{i} → x_{i+1}) ⊓ (x_{i+1} → x_{i}))

due to 8.2.5(2)(b)

≡ ( ⊓^{n−1}_{i=1} (x_{i} → x_{i+1})) ⊓ ( ⊓^{n−1}_{i=1} (x_{i+1} → x_{i}))

≡ ( →^{n−1}_{i=1} x_{i}) ⊓ ( →^{n−1}_{i=0} x_{n−i})

due to (1)(a) and the above statement

(2)(f) We derive

↔^{n}_{i=1} x_{i}

≡ ( ⊓^{n}_{i=1}¬x_{i}) ⊔ ( ⊓^{n}_{j=1}x_{j}) def. 8.2.2

≡ ¬ ( ⊔^{n}_{i=1}x_{i}) ⊔ ( ⊓^{n}_{j=1}x_{j}) due to 7.6.10(5)

≡ ( ⊔^{n}_{i=1}x_{i}) → ( ⊔^{n}_{j=1}x_{j}) due to 8.2.5(2)(a)

8.2.14 Lemma

Let ⟨Q, ⊑, ≡, ⊥, ⊤, ⊓, ⊔, ¬⟩ be a quasi–boolean algebra. For all x_{1}, …, x_{n} ∈ Q with n ∈ ℕ holds:

(1) x_{1} → … → x_{n} → ⊥ ≡ ¬x_{1} ⊓ … ⊓ ¬x_{n}

(2) x_{1} → … → x_{n} → ⊤ ≡ x_{1} → … → x_{n}

(3) ⊥ → x_{1} → … → x_{n} ≡ x_{1} → … → x_{n}

(4) ⊤ → x_{1} → … → x_{n} ≡ x_{1} ⊓ … ⊓ x_{n}

8.2.15 Proof of 8.2.14

First of all, let us establish two auxiliary laws:

(a) (x → y) ⊓ ¬y ≡ ¬x ⊓ ¬y because (x → y)⊓¬y ≡ (¬x⊔y)⊓¬y ≡ (¬x⊓¬y)⊔(y⊓¬y) ≡ (¬x ⊓ ¬y) ⊔ ⊥ ≡ ¬x ⊓ ¬y

(b) x ⊓ (x → y) ≡ x ⊓ y because x ⊓ (x → y) ≡ x ⊓ (¬x ⊔ y) ≡ (x ⊓ ¬x) ⊔ (x ⊓ y) ≡ ⊥ ⊔ (x ⊓ y) ≡ x ⊓ y

are true for all x, y ∈ Q.

(1) If n = 0 we use 8.2.5(1)(a) to derive

x_{1} → … → x_{n} → ⊥ ≡ (→ ⊥) ≡ ⊤ ≡ ¬x_{1} ⊓ … ⊓ ¬x_{n} If n = 1 we use 8.2.5(4)(c) to derive x_{1} → … → x_{n} → ⊥ ≡ (x_{1} → ⊥) ≡ ¬x_{1} ≡ ¬x_{1} ⊓ … ⊓ ¬x_{n}

If n ≥ 1 we apply (a) to derive

x_{1} → … → x_{n} → ⊥ ≡ (x_{1} → x_{2}) ⊓ ⋯ ⊓ (x_{n−1} → x_{n}) ⊓ (x_{n} → ⊥)

≡ (x_{1} → x_{2}) ⊓ ⋯ ⊓ \underbrace{(x_{n−1} → x_{n}) ⊓ ¬x_{n}}_{≡¬xn−1⊓¬xn}

≡ (x_{1} → x_{2}) ⊓ ⋯ ⊓ \underbrace{(x_{n−2} → x_{n−1}) ⊓ ¬x_{n−1}}_{≡¬xn−2⊓¬xn−1} ⊓¬x_{n}

⋮ ⋮

≡ \underbrace{(x_{1} → x_{2}) ⊓ ¬x_{2}}_{≡¬x1⊓¬x2} ⊓¬x_{3} ⊓ … ⊓ ¬x_{n}

≡ ¬x_{1} ⊓ ¬x_{2} ⊓ ¬x_{3} ⊓ … ⊓ ¬x_{n}

(2) We derive

x_{1} → … → x_{n} → ⊤ ≡ (x_{1} → x_{2}) ⊓ … ⊓ (x_{n−1} → x_{n}) ⊓ (x_{n} → ⊤)

≡ (x1 → x2) ⊓ … ⊓ (xn−1 → xn) ⊓ ⊤ due to 8.2.5(4)(d)

≡ (x_{1} → x_{2}) ⊓ … ⊓ (x_{n−1} → x_{n})

≡ x_{1} → … → x_{n}

(3) We derive

⊥ → x_{1} → … → x_{n} ≡ (⊥ → x_{1}) ⊓ (x_{1} → x_{2}) ⊓ … ⊓ (x_{n−1} → x_{n})

≡ ⊤ ⊓ (x1 → x2) ⊓ … ⊓ (xn−1 → xn) due to 8.2.5(4)(a)

≡ (x_{1} → x_{2}) ⊓ … ⊓ (x_{n−1} → x_{n}) ≡ x_{1} → … → x_{n}

(4) If n = 0 we use 8.2.5(1)(a) to derive

⊤ → x_{1} → … → x_{n} ≡ (→ ⊤) ≡ ⊤ ≡ x_{1} ⊓ … ⊓ x_{n} If n = 1 we use 8.2.5(4)(d) to derive ⊤ → x_{1} → … → x_{n} ≡ (⊤ ↔ x_{1}) ≡ x_{1} ≡ ⊤ ≡ x_{1} ⊓ … ⊓ x_{n} If n ≥ 1 we apply (b) to derive

⊤ → x_{1} → … → x_{n} ≡ (⊤ → x_{1}) ⊓ (x_{1} → x_{2}) ⊓ … ⊓ (x_{n−1} → x_{n})

≡ \underbrace{x_{1} ⊓ (x_{1} → x_{2})}_{≡x1⊓x2} ⊓ … ⊓ (x_{n−1} → x_{n})

≡ x_{1} ⊓ \underbrace{x_{2} ⊓ (x_{2} → x_{3})}_{≡x2⊓x3} ⊓ … ⊓ (x_{n−1} → x_{n})

⋮ ⋮

≡ x_{1} ⊓ … ⊓ x_{n−2} ⊓ \underbrace{x_{n−1} ⊓ (x_{n−1} → x_{n})}_{≡xn−1⊓xn}

≡ x_{1} ⊓ … ⊓ x_{n−2} ⊓ x_{n−1} ⊓ x_{n}

8.2.16 Lemma Let ⟨Q, ⊑, ≡, ⊥, ⊤, ⊓, ⊔, ¬⟩ be a quasi–boolean algebra. For all x_{1}, …, x_{n}, y_{1}, …, y_{m} ∈ Q with n, m ∈ ℕ holds:

(1) x_{1} → … → x_{n} → ⊥ → y_{1} → … → y_{m} ≡ (¬x_{1} ⊓ … ⊓ ¬x_{n}) ⊓ (y_{1} → … → y_{m})

(2) x_{1} → … → x_{n} → ⊤ → y_{1} → … → y_{m} ≡ (x_{1} → … → x_{n}) ⊓ (y_{1} ⊓ … ⊓ y_{m})

(3) x_{1} ↔ … ↔ x_{n} ↔ ⊥ ↔ y_{1} ↔ … ↔ y_{m} ≡ ¬x_{1} ⊓ … ⊓ ¬x_{n} ⊓ ¬y_{1} ⊓ … ⊓ ¬y_{m}

(4) x_{1} ↔ … ↔ x_{n} ↔ ⊤ ↔ y_{1} ↔ … ↔ y_{m} ≡ x_{1} ⊓ … ⊓ x_{n} ⊓ y_{1} ⊓ … ⊓ y_{m}

8.2.17 Proof of 8.2.16

(1) There is x_{1} → … → x_{n} → ⊥ → y_{1} → … → y_{m} ≡ (x_{1} → … → x_{n} → ⊥) ⊓ (⊥ → y_{1} → … → y_{m})

due to 8.2.12(1)(b)

≡ (¬x_{1} ⊓ … ⊓ ¬x_{n}) ⊓ (y_{1} → … → y_{m})

due to 8.2.14(1) and (3)

(2) Similar to (1) we obtain x_{1} → … → x_{n} → ⊤ → y_{1} → … → y_{m} ≡ (x_{1} → … → x_{n} → ⊤) ⊓ (⊤ → y_{1} → … → y_{m}) ≡ (sx_{1} → … → x_{n}) ⊓ (y_{1} ⊓ … ⊓ y_{m})

due to 8.2.14(2) and (4)

(3) We first apply definition 8.2.2 and obtain x_{1} ↔ … ↔ x_{n} ↔ ⊥ ↔ y_{1} ↔ … ↔ y_{m}

≡ (\begin{matrix}(¬x_{1} ⊓ … ⊓ ¬x_{n} ⊓ ¬⊥ ⊓ ¬y_{1} ⊓ … ⊓ ¬y_{m}) \\ ⊔ (x_{1} ⊓ … ⊓ x_{n} ⊓ ⊥ ⊓ y_{1} ⊓ … ⊓ y_{m}) \end{matrix})

≡ (¬x_{1} ⊓ … ⊓ ¬x_{n} ⊓ ⊤ ⊓ ¬y_{1} ⊓ … ⊓ ¬y_{m}) ⊔ ⊥ ≡ ¬x_{1} ⊓ … ⊓ ¬x_{n} ⊓ ¬y_{1} ⊓ … ⊓ ¬y_{m} (4) Again, we start with definition 8.2.2 and obtain x_{1} ↔ … ↔ x_{n} ↔ ⊤ ↔ y_{1} ↔ … ↔ y_{m}

≡ (\begin{matrix}(¬x_{1} ⊓ … ⊓ ¬x_{n} ⊓ ¬⊤ ⊓ ¬y_{1} ⊓ … ⊓ ¬y_{m}) \\ ⊔ (x_{1} ⊓ … ⊓ x_{n} ⊓ ⊤ ⊓ y_{1} ⊓ … ⊓ y_{m}) \end{matrix})

≡ (\begin{matrix}(¬x_{1} ⊓ … ⊓ ¬x_{n} ⊓ ⊥ ⊓ ¬y_{1} ⊓ … ⊓ ¬y_{m}) \\ ⊔ (x_{1} ⊓ … ⊓ x_{n} ⊓ y_{1} ⊓ … ⊓ y_{m}) \end{matrix})

≡ ⊥ ⊔ (x_{1} ⊓ … ⊓ x_{n} ⊓ y_{1} ⊓ … ⊓ y_{m})

≡ x_{1} ⊓ … ⊓ x_{n} ⊓ y_{1} ⊓ … ⊓ y_{m}

8.2.18 Lemma

Let ⟨Q, ⊑, ≡, ⊥, ⊤, ⊓, ⊔, ¬⟩ be a quasi–boolean algebra. For all x_{1}, …, x_{n} ∈ Q with n ∈ ℕ holds:

(a) x_{1} → … → x_{n} ≡ ⊤ iff x_{1} ⊑ … ⊑ x_{n}

(b) x_{1} ↔ … ↔ x_{n} ≡ ⊤ iff x_{1} ≡ … ≡ x_{n}

8.2.19 Proof of 8.2.18

(a) We derive x_{1} → … → x_{n} ≡ ⊤ iff (x_{1} → x_{2}) ⊓ … ⊓ (x_{n−1} → x_{n}) ≡ ⊤

due to 8.2.12(1)(a)

iff x_{1} → x_{2} ≡ ⊤ and … and x_{n−1} → x_{n} ≡ ⊤

due to 7.6.13(1)

iff ¬x_{1} ⊔ x_{2} ≡ ⊤ and … and ¬x_{n−1} ⊔ x_{n} ≡ ⊤

due to 8.2.5(2)(a)

iff x_{1} ⊑ x_{2} and … and x_{n−1} ⊑ x_{n}

due to 7.6.12(2)

iff x_{1} ⊑ … ⊑ x_{n}

(b) We derive x_{1} ↔ … ↔ x_{n} ≡ ⊤ iff (x_{1} → … → x_{n}) ⊓ (x_{n} → … → x_{1}) ≡ ⊤

due to 8.2.12(2)(e)

iff x_{1} → … → x_{n} ≡ ⊤ and x_{n} → … → x_{1} ≡ ⊤

due to 7.6.13(1)

iff (\begin{matrix}(x_{1} ⊑ x_{2} and … and x_{n−1} ⊑ x_{n}) & and \\ (x_{n} ⊑ x_{n−1} and … and x_{2} ⊑ x_{1}) \end{matrix} )

due to (a)

iff (\begin{matrix}(x_{1} ⊑ x_{2} and x_{2} ⊑ x_{1}) & and & … & and \\ (x_{n−1} ⊑ x_{n} and x_{n} ⊑ x_{n−1}) \end{matrix} )
iff x_{1} ≡ x_{2} and … and x_{n−1} ≡ x_{n}

due to 7.6.4(6)

iff x_{1} ≡ … ≡ x_{n}

8.2.20 Lemma

Let ⟨Q, ⊑, ≡, ⊥, ⊤, ⊓, ⊔, ¬⟩ be a quasi–boolean algebra. For all w, x_{1}, …, x_{n}, y_{1}, …, y_{m}, z_{1}, …, z_{k} ∈ Q holds:

(a) x_{1} → … → x_{2} → w → y_{1} → … → y_{m} → w → z_{1} → … → z_{k} ≡ (x_{1} → … → x_{2} → w → z_{1} → … → z_{k}) ⊓

(w ↔ y_{1} ↔ … ↔ y_{m})

(a) x_{1} ↔ … ↔ x_{2} ↔ w ↔ y_{1} ↔ … ↔ y_{m} ↔ w ↔ z_{1} ↔ … ↔ z_{k} ≡ w ↔ x_{1} ↔ … ↔ x_{2} ↔ y_{1} ↔ … ↔ y_{m} ↔

z_{1} ↔ … ↔ z_{k}

8.2.21 Proof of 8.2.20  Left as exercise.

52

Part IV Records

9 Records, including tuples and schemas

9.1 Records

9.1.1 Remark Introduction

A \underline{record} assigns \underline{values}^{26}to certain \underline{indices} or \underline{attributes}.

Mathematically, we introduce records as surjective functions. The indices are always \underline{identifiers}, i.e. primitive entities like short character strings. (We will talk about identifiers in this sense, but we won’t need a formal definition of the identifier concept.) The values on the other hand might be quite complex.

We will agree that a “\underline{P–record}” is a record, where all values are P. For example, a “function record” is a record, where each value is a function, in an “integer record” every value is an integer etc. Accordingly, we will even use the (awkward) term “record–record” to denote higher–order records, where each value is a record itself.

There are two important kinds of record that will be given an own name: class records will be called \underline{schemas}. And records with the indices 1, 2, …, n are the usual \underline{tuples}. Often tuples are also called vectors or arrays, but we will only use the tuple notion.

9.1.2 Definition record

A \underline{record} is a surjective function ξ : I ⟶ Ξ.

The usual representation of such a record is

[i ↦ ξ_{i}|i ∈ I]  or  [ξ_{i}|i ∈ I]

where ξ_{i} := ξ(i), for each i ∈ I. Since ξ is surjective, Ξ is implicitely given with Ξ = {ξ_{i} | i ∈ I} and both notations contain all the information.

Given such a record ξ = [ξ_{i}|i ∈ I] then

(1) I = dom(ξ) , the \underline{domain} of ξ, is also called the \underline{index} or \underline{attribute class}.

(2) The cardinality of I is the \underline{dimension} of ξ.

(3) The ξ_{i} are called \underline{values}.

(4) The \underline{value class} Ξ of ξ is reconstructed from ξ via Ξ = {ξ(i) | i ∈ dom(ξ)}. Taking ξ as a surjective function, Ξ is also called the \underline{codomain} of ξ and given

by Ξ = cod(ξ) .

9.1.3 Remark notation

Recall 5.6.2, that the general class expression “{i ∈ I | φ}” is the common version of the more correct “{i : I | φ}”, since “i ∈ I” is in fact not an element of I as intended, but a true or false statement. Similarly, “[ξ_{i}|i : I]” would be the formally more appropriate version of our actual definition “[ξ_{i}|i ∈ I]”. However, having mentioned this convention, we may follow the usual habits.

According to our convention (4.1.3 and 5.2.7) to use more compact two–dimensional versions for (long) linear expressions, we occasionally write

[ \frac{i ↦ ξ_{i}}{i ∈ I} ] instead of [i ↦ ξ_{i}|i ∈ I]

[ \frac{ξ_{i}}{i ∈ I} ] instead of [ξ_{i}|i ∈ I]

9.1.4 Definition record class

REC denotes the class of all records.

9.1.5 Definition finite records

A record ξ : I ⟶ Ξ is \underline{finite} iff it is of finite dimension, i.e. I is finite (and thus Ξ is finite, too, since ξ is a surjective function). If I = {i_{1}, …, i_{n}} is the domain of such a finite record, we often represent ξ by

[ \begin{matrix}i_{1} & ↦ & ξ(i_{1}) \\ ⋮ & ⋮ & ⋮ \\ i_{n} & ↦ & ξ(i_{n}) \end{matrix} ]

n is called the \underline{arity} and ξ is said to be \underline{n–ary}. As usual, 0–ary, 1–ary, 2–ary, etc records are called \underline{nullary}, \underline{unary}, \underline{binary}, etc. Unary records are also called \underline{singular} or \underline{literal}.

9.1.6 Example record

Let us define a finite record by

                                                                                         today := [ \begin{matrix}year & ↦ & 2003 \\ month & ↦ & 1 \\ day & ↦ & 17 \\ title & ↦ & friday \end{matrix}]

We can apply today as a function and get

                                                                                 today(year) = 2003        today(month) = 1
                                                                                 today(day) = 17      today(title) = friday

Writing today in our standard function form would result in a rather awkward expression like

26 In 5 we introduced the title value as the general name for mathematical entities, the semantical counterpart of the syntactical expression. This metamathematical preliminaries will not be used explicitely in the sequel and values will be be associated with values of records for the remainder of the text.

       {year, month, day, title} ⟶ {1, 17, 2003, friday}

       i ↦ \begin{cases}2003 & if i = year \\ 1 & if i = month \\ 17 & if i = day \\ friday & if i = title \end{cases}

So obviously, we usually prefer the initial version to represent finite records.

9.1.7 Remark

The order in which we list the single maps in a finite record expression doesn’t matter. For example, there is

[ \begin{matrix}a & ↦ & ξ_{a} \\ b & ↦ & ξ_{b} \end{matrix} ] = [ \begin{matrix}b & ↦ & ξ_{b} \\ a & ↦ & ξ_{a} \end{matrix} ]

But if there is some default order on the index class, we will usually list them accordingly.

9.1.8 Remark Classes as records

From a certain point of view, records are very similar to classes. An arbitrary class C is often represented as C = {c_{i} | i ∈ I} or C = {c_{i} | i ∈ I}. I is an index class and each element of C is addressed by its own unique index which is a kind of name. Often, such a C = {c_{i} | i ∈ I} is called a family, in particular if the c_{i} are classes themselves. The resemblence with the record [c_{i}|i ∈ I] is obvious, however classes and records are different things with different operations defined on them. But occasionally, we will take one for the other.

Note, that for every class C there is at least one appropriate index class, namely C itself. The identity function (5.7.6)

id_{C} = [\begin{matrix}C ⟶ C \\ c ↦ c \end{matrix}]

is a surjective function and thus a record with

id_{C} = [c ↦ c|c ∈ C]

9.2 Tuples and other special records

9.2.1 Definition tuples as records

For each n ∈ ℕ, every \underline{n–tuple} ⟨ξ_{1}, …, ξ_{n}⟩ (with \underline{components} ξ_{1}, …, ξ_{n}) can be (re–)defined as a record ξ with I = {1, …, n} = n as its index class or domain. In other words,

⟨ξ_{1}, …, ξ_{n}⟩ := [ \begin{matrix}1 & ↦ & ξ_{1} \\ ⋮ & & ⋮ \\ n & ↦ & ξ_{n} \end{matrix} ]

9.2.2 Definition the empty record / function / tuple

⟨⟩ is the \underline{nullary} or \underline{empty record}.

9.2.3 Remark

⟨⟩ was already introduced as the \underline{empty tuple} (5.4.1) and the \underline{empty function} (5.7.6). This unique function of type ∅ ⟶ ∅ is a well–defined function, and it is surjective in a trivial sense. So it is indeed a record and all the titles empty tuple, empty function, and empty record turn out to be different names for the same thing.

9.2.4 Definition univalent record

A record ξ : I ⟶ Ξ is \underline{univalent}, if

ξ(i) = ξ(j) for all i, j ∈ I

So if ξ is not empty, its codomain Ξ is a singleton Ξ = {c}, for some value c. When we write such a nonempty univalent record in the “[ξ_{i}|i ∈ I]” notation, we could as well omit the index i, since it all ξ_{i} are the same c anyway. Therefore, we often write it as

[c|I]

9.2.5 Example univalent record

A boring menu for an entire week in record form is given by

                                                                              [soup| \{monday, . . . , sunday\}] = [ \begin{matrix}monday & ↦ & soup \\ ⋮ & & ⋮ \\ sunday & ↦ & soup \end{matrix} ]

9.2.6 Definition univalent tuple

For every c and all n ∈ ℕ we define an additional simplified notation for the univalent n–tuple with component c, namely

⟨c | n⟩ := [c|n] = ⟨\underbrace{c, c, …, c}_{n times}⟩ = [ \begin{matrix}1 & ↦ & c \\ ⋮ & & ⋮ \\ n & ↦ & c \end{matrix} ]

9.2.7 Example univalent tuple

⟨−2 | 5⟩ = ⟨−2, −2, −2, −2, −2⟩

9.3 Schemas

9.3.1 Definition schema

A record X = [X_{i}|i ∈ I] is called a \underline{schema}, if all the X_{i} are classes. For each i ∈ I, the class X_{i} is the \underline{i–} or \underline{i-th domain} of X.

9.3.2 Remark

We use “\underline{schemas}” rather than “schemata” as the plural for “schema”.

9.3.3 Definition properties

A schema X = [X_{i}|i ∈ I] is called

(1) \underline{proper}, if X_{i} ≠ ∅, for all i ∈ I

(2) \underline{finite}, if it is a finite record, i.e. if I is finite

(3) \underline{locally finite} or \underline{singular finite}, if X_{i} is finite, for every i ∈ I

(4) \underline{completely finite}, if it is both finite and locally finite.

9.3.4 Example schema

A proper finite schema is given by

        Dates := [ \begin{matrix}year & ↦ & ℤ \\ month & ↦ & \{1, . . . , 12\} \\ day & ↦ & \{1, . . . , 31\} \\ title & ↦ & \{monday, . . . , sunday\} \end{matrix} ]

For example, the month–domain is {1, …, 12}. In other words, Dates(month) = {1, …, 12}. Dates is not completely finite, because the year–domain ℤ is infinite.

10 Operations on records

10.1 Values, domains and codomains

10.1.1 Definition the usual function operations on records

Let ξ = [ξ_{i}|i ∈ I] be a record. Since a record is a function, the following notions are well–defined (as in 5.7.3):

ξ(i)

:= ξ_{i} the \underline{value} of ξ at i ∈ I or the \underline{i–th component of ξ},

dom(ξ)

:= I the \underline{domain} of ξ, also called the \underline{index} or \underline{attribute class} of ξ,

cod(ξ)

:= \{ξ_{i} | i ∈ I\} the \underline{codomain} or \underline{value class} of ξ.

10.2 Projections

10.2.1 Definition projection

For every record ξ = [ξ_{i}|i ∈ I] and every class J ⊆ I we define pr (ξ, J) := [ξ_{i}|i ∈ J] the \underline{projection} of ξ onto J.

10.2.2 Example projection

For

ξ = ⟨a, b, c, d⟩ = [ \begin{matrix}1 & ↦ & a \\ 2 & ↦ & b \\ 3 & ↦ & c \\ 4 & ↦ & d \end{matrix} ]

we have

pr (ξ, \{2, 4\}) = [ \begin{matrix}2 & ↦ & b \\ 4 & ↦ & d \end{matrix} ] and pr (ξ, ∅) = ⟨⟩

10.2.3 Remark

Note the difference between the projection pr (ξ, J) and the domain restriction ξ |_{J} (see 5.7.6). ξ |_{J} is a well–defined function again, but it might not be surjective anymore, i.e. not a record. The projection is a domain as well as a codomain restriction and its result is a record.

10.2.4 Lemma projection

For every record ξ = [ξ_{i}|i ∈ I] and every class J ⊆ I

(1) pr (pr (ξ, J) , J) = pr (ξ, J) (idempotency)

(2) pr (ξ, J) = ξ iff J = I (neutral projection)

10.2.5 Proof of 10.2.4

Both properties are immediate consequences of definition 10.2.1.

10.2.6 Definition projection class

For every record ξ we define

Proj(ξ) := {pr (ξ, J) | J ⊆ dom(ξ)}

the \underline{projection class} of ξ.

10.2.7 Example projection class

For ξ = ⟨a, b⟩ we obtain

\begin{aligned}Proj(ξ) & = & \{⟨⟩, [ 1 ↦ a ] , [ 2 ↦ b ] , [ \begin{matrix}1 & ↦ & a \\ 2 & ↦ & b \end{matrix} ]\} \\ & = & \{⟨⟩, ⟨a⟩, [ 2 ↦ b ] , ⟨a, b⟩\} \end{aligned}

10.3 Relations between records

10.3.1 Remark introduction

Suppose we have two records ξ and υ. We introduce the following notions to compare the two: ξ and υ are distinct iff they have no index in common. They are compatible iff there is no common index with a different value. And ξ is smaller or a subrecord of υ iff we obtain ξ by deleting some indices (and their corresponding values) from υ, i.e. iff ξ is a projection of υ onto the domain of ξ.

10.3.2 Definition

We define

◯ 1 ≬ ◯ 2 := [ \begin{matrix}REC ↭ REC \\ ⟨[ξ_{i}|i ∈ I], [υ|j ∈ J]⟩ ⇝ I ∩ J = ∅ \end{matrix} ]

the \underline{distinctness} relation

◯ 1 ⌣ ◯ 2 := [ \begin{matrix}REC ↭ REC \\ ⟨[ξ_{i}|i ∈ I], [υ|j ∈ J]⟩ ⇝ \\ ξ_{k} = υ_{k} for all k ∈ I ∩ J \end{matrix} ]

the \underline{compatibility} relation

◯ 1 ≤ ◯ 2 := [ \begin{matrix}REC ↭ REC \\ ⟨[ξ_{i}|i ∈ I], [υ|j ∈ J]⟩ ⇝ \\ I ⊆ J and ξ_{i} = υ_{i} for all i ∈ I \end{matrix} ]

the \underline{subrecord} or \underline{smaller} relation

◯ 1 < ◯ 2 := [ \begin{matrix}REC ↭ REC \\ ⟨[ξ_{i}|i ∈ I], [υ|j ∈ J]⟩ ⇝ \\ I ⊂ J and ξ_{i} = υ_{i} for all i ∈ I \end{matrix} ]

the \underline{proper subrecord} or \underline{strict smaller} relation

10.3.3 Definition notation

For two relations ξ and υ we write (see also 19.4.1)

ξ ≬̸ υ  ξ ⌣̸ υ  ξ ≰ υ  ξ ≮ υ

And for two or more records ξ_{1}, …, ξ_{n} we write

ξ_{1} ≬ … ≬ ξ_{n} iff ξ_{i} ≬ ξ_{j} for all i and j with i ≠ j
ξ_{1} ⌣ … ⌣ ξ_{n} iff ξ_{i} ⌣ ξ_{j} for all i and j
ξ_{1} ≤ … ≤ ξ_{n} iff ξ_{1} ≤ ξ_{2} and … and ξ_{n−1} ≤ ξ_{n}
ξ_{1} < … < ξ_{n} iff ξ_{1} < ξ_{2} and … and ξ_{n−1} < ξ_{n}

10.3.4 Definition

A class Ξ of records is called

(1)

(pairwise) distinct iff ξ ≠ υ implies ξ ≬ υ, for all ξ, υ ∈ Ξ

(2)

(pairwise) compatible iff ξ ⌣ υ, for all ξ, υ ∈ Ξ

A record–record ρ = [ρ_{k}|k ∈ K] is called

(1)

(pairwise) distinct iff {ρ_{k} | k ∈ K} is (pairwise) distinct.

(2)

(pairwise) compatible iff {ρ_{k} | k ∈ K} is (pairwise) compatible.

10.3.5 Remark

Note, that the definition of ξ_{1} ≬ … ≬ ξ_{n} and ξ_{1} ⌣ … ⌣ ξ_{n} in 10.3.3 diverges from definition 5.7.12, where

x_{1}Rx_{2}R … Rx_{n} means x_{1}Rx_{2} ∧ x_{2}Rx_{3} ∧ … ∧ x_{n−1}Rx_{n}

Here, the we have another motivation for the n–ary sequence notation: if Ξ = {ξ_{1}, …, ξ_{n}} is a finite record class, then

ξ_{1} ≬ … ≬ ξ_{n} iff {ξ_{1}, …, ξ_{n}} is (pairwise) distinct
ξ_{1} ⌣ … ⌣ ξ_{n} iff {ξ_{1}, …, ξ_{n}} is (pairwise) compatible

10.3.6 Example

Suppose a ≠ b and given six records

\begin{matrix}ξ = [ \begin{matrix}1 ↦ a \\ 3 ↦ a \\ 5 ↦ a \\ 7 ↦ a \end{matrix} ] & υ = [ \begin{matrix}2 ↦ b \\ 4 ↦ b \\ 6 ↦ b \\ 8 ↦ b \end{matrix} ] & ζ = [ \begin{matrix}1 ↦ a \\ 2 ↦ b \\ 3 ↦ b \\ 4 ↦ b \end{matrix} ] \\ ξ′ = ⟨⟩ & ξ′′ = [ \begin{matrix}1 ↦ a \\ 5 ↦ a \end{matrix} ] & ξ′′′ = [ \begin{matrix}3 ↦ a \\ 7 ↦ a \end{matrix} ] \end{matrix}

We can see that:

(1) ξ ≬ υ, because dom(ξ) ∩ dom(υ) = ∅. Thus ξ ⌣ υ. In other words, ξ and υ are distinct and compatible.

(2) ξ and ζ are not distinct, because dom(ξ) ∩ dom(ζ) = {1, 4}. And they are not compatible either, because they disagree in their common index 3, i.e. ξ(3) = a ≠ b = ζ(3).

(3) υ and ζ are not distinct, because dom(υ) ∩ dom(ζ) = {2, 4}. But they are compatible, because υ(2) = b = ζ(2) and υ(4) = b = ζ(4).

(4) ξ′ is the empty tuple, and as such it is distinct to and compatible with every other record.

(5) The class {ξ, ξ′, ξ′′, ξ′′′} is not distinct (because e.g. ξ ≬̸ ξ′′), but it is compatible. The ≤–order on this class is represented in the following order diagram:

[figure: ξ′; ξ′′; ξ′′′; ξ]  i.e. ξ′ ≤ ξ′′, ξ′ ≤ ξ, etc.

(6) ξ′ ≬ ξ ≬ υ

10.3.7 Remark compatibility notation

The symbol ⌣ is the so-called “smile”. Records “smile” iff they “agree”. Accordingly, we could have used the “frown” symbol ⌢ for the opposite case. But we use the ⌣̸ instead, according to a general convention that denotes the complement of a relation R by R̸.

10.3.8 Remark

We state some obvious facts about the new relations:

(1) The compatibility relation ⌣ is reflexive, symmetric, but not transitive (see the following counterexample 10.3.9). So ⌣ is not an equivalence relation.

(2) Distinctness implies compatibility, i.e. ξ ≬ υ implies ξ ⌣ υ, but not vice versa in general.

(3) If ξ and υ are ≤–comparable, i.e. ξ ≤ υ or υ ≤ ξ, then

(a) ξ ⌣ υ, and

(b) ξ ≬ υ iff (ξ = ⟨⟩ or υ = ⟨⟩).

(4) For two tuples ξ = ⟨ξ_{1}, …, ξ_{n}⟩ and υ = ⟨υ_{1}, …, υ_{m}⟩, there is

ξ ≤ υ iff (n ≤ m and ⟨ξ_{1}, …, ξ_{n}⟩ = ⟨υ_{1}, …, υ_{n}⟩)

In other words, ξ ≤ υ iff ξ is an initial section of υ.

10.3.9 Example compatibility

The following three records demonstrate, that the compatibility is not transitive in general. For

ξ = [ \begin{matrix}1 ↦ a \\ 2 ↦ b \end{matrix} ] υ = [ \begin{matrix}2 ↦ b \\ 3 ↦ c \end{matrix} ] ζ = [ \begin{matrix}1 ↦ d \\ 2 ↦ b \end{matrix} ]

there is

ξ ⌣ υ  and  υ ⌣ ζ  but  ξ ⌣̸ ζ

10.3.10 Lemma

Proj(ξ) is compatible, for every record ξ.

10.3.11 Proof of 10.3.10

Let ξ = [ξ_{i}|i ∈ I] be a given record, υ = [υ_{j}|j ∈ J] ∈ Proj(ξ), and ζ = [ζ_{k}|k ∈ K] ∈ Proj(ξ). For every l ∈ J ∩ K holds: υ_{l} = ζ_{l} = ξ_{l}. So υ ⌣ ζ, each two members of Proj(ξ) are compatible, thus Proj(ξ) is compatible.

10.3.12 Lemma the new relations in terms of projections

Let ξ = [ξ_{i}|i ∈ I] and υ = [υ_{j}|j ∈ J] be two records. Then

(1) ξ ≬ υ ⇔ pr (ξ, I ∩ J) = ⟨⟩ ⇔ pr (υ, I ∩ J) = ⟨⟩

(2) ξ ⌣ υ ⇔ pr (ξ, I ∩ J) = pr (υ, I ∩ J)

(3) ξ ≤ υ ⇔ ξ = pr (υ, I ∩ J) ⇔ ξ ∈ Proj(υ)

10.3.13 Proof of 10.3.12

Direct consequences of definitions 10.2.1 and 10.3.2.

10.4 Distinct joins

10.4.1 Definition

For each two distinct records ξ = [ξ_{i}|i ∈ I] and υ = [υ_{j}|j ∈ J] we define

ξ ˙∨ υ := [ k ↦ \begin{cases}ξ_{k} & if k ∈ I \\ υ_{k} & if k ∈ J \end{cases} k ∈ (I ∪ J) ]

the \underline{distinct join} of ξ and υ.

A generalization for n ≥ 0 (pairwise) distinct records is defined by

ξ_{1} ˙∨ … ˙∨ ξ_{n} := \begin{cases}⟨⟩  if n = 0 \\ ξ_{1}  if n = 1 \\ (ξ_{1} ˙∨ ξ_{2}) ˙∨ ξ_{3} ˙∨ … ˙∨ ξ_{n} if n > 1 \end{cases}

And for every (pairwise) distinct record class Ξ we define

˙⋁ Ξ := [ \frac{k ↦ the ξ_{k} with ξ ∈ Ξ and k ∈ dom(ξ)}{k ∈ ⋃\{dom(ξ) | ξ ∈ Ξ\}} ]

the \underline{distinct join} of Ξ

10.4.2 Remark

(1) In case the arguments are finite records, the result of a distinct join is intuitive, simply a merge or combination: For example, given

ξ = [ \begin{matrix}p ↦ & ξ_{p} \\ q ↦ & ξ_{q} \end{matrix} ] υ = [ \begin{matrix}r ↦ & υ_{r} \\ s ↦ & υ_{s} \end{matrix} ]

then ξ ≬ υ and

ξ ˙∨ υ = [ \begin{matrix}p ↦ & ξ_{p} \\ q ↦ & ξ_{q} \\ r ↦ & υ_{r} \\ s ↦ & υ_{s} \end{matrix} ]

(2) Later on (11.4.3) we define another generalization: the join ∨, that is defined for every two records, not just for distinct ones. But it is very useful to have the distinct version and notation ˙∨ available, because it allows us to emphasize the distinctness of the arguments. We often apply it in distinct decompositions of a given record or record partitions (see 16 in particular). Besides, ˙∨ has some properties that do not hold anymore for ∨, e.g. the associativity (see 11.5.3).

(3) The distinct join is associative, commutative, and ⟨⟩ is its neutral element. That makes the n–ary definition in 10.4.1 natural and obvious.

(4) The big version ˙⋁ is just a generalization of ˙∨ for an arbitrary number of records in the obvious sense that

ξ ˙∨ υ = ˙⋁ {ξ, υ}

10.5 Concatenation of tuples

10.5.1 Definition concatenation

For all tuples ξ = ⟨ξ_{1}, …, ξ_{n}⟩ and υ = ⟨ξ_{1}, …, ξ_{m}⟩ we define

ξ † υ := ⟨ξ_{1}, …, ξ_{n}, υ_{1}, …, υ_{n}⟩

the \underline{concatenation} of ξ and υ.

More general, we define for n ≤ 0 tuples ξ_{1}, …, ξ_{n} their concatenation

ξ_{1} † … † ξ_{n} :=

†^{n}_{i=1}ξ_{i} := \begin{cases}⟨⟩ & if n = 0 \\ ξ_{1} † (ξ_{2} † … † ξ_{n}) & else \end{cases}

10.5.2 Example concatenation

\begin{aligned}⟨1, 3, 5⟩ † ⟨2, 4, 6⟩ & = & ⟨1, 3, 5, 2, 4, 6⟩ \\ ⟨1, 2, 3⟩ † ⟨⟩ & = & ⟨1, 2, 3⟩ \\ ⟨1, 3, 5⟩ † ⟨⟩ † ⟨2, 4, 6⟩ † ⟨1, 3, 5⟩ & = & ⟨1, 3, 5, 2, 4, 6, 1, 3, 5⟩ \end{aligned}

10.5.3 Lemma properties of the concatenation

⟨X^{∗}, †, ⟨⟩⟩ is a monoid, for every class X.

10.5.4 Proof of 10.5.3

By definition, ⟨X^{∗}, †, ⟨⟩⟩ is a monoid, if the following two properties are satisfied:

(1) † is associative:

(ξ † υ) † ζ = ξ † (υ † ζ) for all ξ, υ, ζ ∈ X^{∗} (2) ⟨⟩ is the neutral element:

⟨⟩ † ξ = ξ † ⟨⟩ for all ξ ∈ X^{∗}

And these are quite obvious facts.

10.5.5 Remark

The concatenation looks similar to the distinct join of finite distinct records in 10.4.2. But the concatenation is not simply the distinct join of two tuples. Two tuples are distinct only, if at least one of them is empty. To actually define the concatenation formally as a distinct join, we need an attribute translation of the second argument. For example

\begin{aligned}⟨a, b, c⟩ † ⟨b, b, d⟩ & = & [ \begin{matrix}1 ↦ & a \\ 2 ↦ & b \\ 3 ↦ & c \end{matrix} ] † [ \begin{matrix}1 ↦ & b \\ 2 ↦ & b \\ 3 ↦ & d \end{matrix} ] \\ & = & [ \begin{matrix}1 ↦ & a \\ 2 ↦ & b \\ 3 ↦ & c \end{matrix} ] ˙∨ [ \begin{matrix}4 ↦ & b \\ 5 ↦ & b \\ 6 ↦ & d \end{matrix} ] & = & ⟨a, b, c, b, b, d⟩ \end{aligned}

Attribute translations are also operations on records, but we will postpone their proper introduction until 22.2.3.

11 Order structures and junctions on records

11.1 Poclasses of records

11.1.1 Lemma

(1) ⟨REC, ≤⟩ is a poclass.

(2) ⟨Ξ, ≤⟩ is a poclass, for every record class Ξ.

11.1.2 Proof of 11.1.1

(1) ⟨REC, ≤⟩ satisfies the following three defining properties of a poclass (7.1.3 and 7.2.2): ♣ ≤ is transitive on REC: If ξ = [ξ_{i}|i ∈ I], υ = [υ_{j}|j ∈ J],

and ζ = [ζ_{k}|k ∈ K] are three records with ξ ≤ υ and υ ≤ ζ, then I ⊆ J and J ⊆ K, ξ_{i} = υ_{i} for all i ∈ I and υ_{j} = ζ_{j} for all j ∈ J, and thus I ⊆ K and ξ_{i} = ζ_{i} for all i ∈ I, which means ξ ≤ ζ.

♣ ≤ is reflexive on REC: ξ ≤ ξ for every record ξ, which is

obvious. ♣ ≤ is antisymmetric on REC: ξ ≤ υ and υ ≤ ξ implies

ξ = υ for all records ξ and υ, and that is correct, too.

(2) Recall from 7.2.3: If ⟨D, ρ⟩ is any given poclass and C ⊆ D, then (C, ρ) is a poclass, too. So if Ξ is a record class, then ⟨Ξ, ≤⟩ is a poclass.

11.2 Lattices on records

11.2.1 Remark overview

We will now investigate, in how far these poclasses ⟨Ξ, ≤⟩ are lattice–like structures. In other words, we try to define the according operations (called junctions) such as the meet ξ ∧ υ and join ξ ∨ υ. We define Rec (I, C), which is a more specific type than the general REC, but has the same structural properties and is useful for illustrations (see example 11.2.3 below).

We will see soon, that neither ⟨REC, ≤⟩ nor ⟨Rec (I, C) , ≤⟩ is a lattice.^{27} A key concept here is compatibility: For example, ξ ∨ υ is the least upper bound of ξ and υ iff ξ ⌣ υ, i.e. iff ξ and υ are compatible. So in order to have the full range of lattice operations available, we later concentrate on record classes Ξ, which are compatible and operationally closed. Such classes are the projection classes Proj(ξ). For every record ξ, the poclass ⟨Proj(ξ), ≤⟩ is indeed a lattice, even a complete boolean one.

11.2.2 Definition

For every two class I and C we define

Rec (I, C) := {ξ ∈ REC | dom(ξ) ⊆ I, cod(ξ) ⊆ C}

the \underline{record class} on I and C.

11.2.3 Example

Let us take I = {i, j} and C = {a, b}. The whole structure of Rec (I, C) is represented by the following order diagram:

[figure: [ \begin{matrix}i ↦ & a \\ j ↦ & a \end{matrix} ]; [ \begin{matrix}i ↦ & a \\ j ↦ & b \end{matrix} ]; [ \begin{matrix}i ↦ & b \\ j ↦ & a \end{matrix} ]; [ \begin{matrix}i ↦ & b \\ j ↦ & b \end{matrix} ]; [ i ↦ a ]; [ i ↦ b ]; [ j ↦ a ]; [ j ↦ b ]; ⟨⟩]

The diagram of this simple example class is typical for all classes Rec (I, C) and REC itself:

(1) There is no greatest or top element.

(2) But there is a least or bottom element, namely ⟨⟩.

(3) Every two records ξ and υ do have common lower bounds, i.e. there are records ζ such with ζ ≤ ξ and ζ ≤ υ. And of all these lower bounds ζ, there is a unique greatest lower bound or meet, which is written ξ ∧ υ. For example,

[ \begin{matrix}i ↦ & a \\ j ↦ & a \end{matrix} ] ∧ [ \begin{matrix}i ↦ & a \\ j ↦ & b \end{matrix} ] = [ i ↦ a ]

[ \begin{matrix}i ↦ & a \\ j ↦ & a \end{matrix} ] ∧ [ \begin{matrix}i ↦ & b \\ j ↦ & b \end{matrix} ] = ⟨⟩

(4) Not every two records ξ and υ have common upper bounds, let alone a least upper bound. For example, take [i ↦ a] and [i ↦ b]. But they have a least upper bound or join ξ ∨ υ iff they are compatible. For example

[ i ↦ a ] ∨ [ j ↦ b ] = [ \begin{matrix}i ↦ & a \\ j ↦ & b \end{matrix} ]

[ \begin{matrix}i ↦ & a \\ j ↦ & a \end{matrix} ] ∨ [ i ↦ a ] = [ \begin{matrix}i ↦ & a \\ j ↦ & a \end{matrix} ]

27 ⟨REC, ≤⟩ is a so–called \underline{complete partial order} or \underline{cpo} (i.e. has bottom element and each chain has a supremum) and a \underline{meet semi–lattice} (i.e. the greatest lower bound is always defined). But we will not use this or any other terminology for this kind of poclass.

So the join operator or disjunctor is just a partial function, in our notation ◯ 1 ∨ ◯ 2 : REC × REC −−→ REC. However, we enforce a join ξ∨υ for every two records: if they are incompatible, we simply delete the incompatible indices first. For example:

[i ↦ a] ∨ [i ↦ b] := ⟨⟩
[ \begin{matrix}i ↦ & a \\ j ↦ & a \end{matrix} ] ∨ [ \begin{matrix}i ↦ & a \\ j ↦ & b \end{matrix} ] := [i ↦ a]

But these joins of incompatible arguments are not (least) upper bounds of their arguments.

So the structure ⟨Rec (I, C) , ≤, ⟨⟩, ∧, ∨⟩ is well–defined, with ∧ and ∨ defined for all its record pairs. But it is just not a proper lattice.

11.3 Various domains of record classes

11.3.1 Definition

For every record class Ξ we define D_{Ξ} := ⋃_{ξ∈Ξ}dom(ξ) the \underline{(total) domain},

D_{Ξ}^{⌣̸} := \{ \begin{matrix}k ∈ D_{Ξ} \\ ∃υ, ζ ∈ Ξ . \\ υ(k) ≠ ζ(k) \end{matrix} \} the \underline{incompatible domain},

D_{Ξ}^{⌣} := D_{Ξ} \ D_{Ξ}^{⌣̸} the \underline{compatible domain} of Ξ.

11.3.2 Remark notation

In the sequel and when there is only one record class Ξ involved in the given context, we sometimes leave the subscript

for the new domain symbols and simply write D , D^{⌣̸} , and

D^{⌣} instead.

11.3.3 Example

Given two records

ξ = [ \begin{matrix}i ↦ & 1 \\ j ↦ & 2 \\ k ↦ & 3 \end{matrix} ]  and  υ = [ \begin{matrix}j ↦ & 5 \\ k ↦ & 3 \\ l ↦ & 4 \end{matrix} ]

so

dom(ξ) = {i, j, k}  and  dom(υ) = {j, k, l}

We obtain

D = {i, j, k, l}  D^{⌣̸} = {j}  D^{⌣} = {i, k, l}

(So here D is an abbreviation for D_{{ξ,υ}} etc.)

11.3.4 Lemma

Let Ξ be a record class. Then

(1) D_{Ξ} = D_{Ξ}^{⌣̸} ∪ D_{Ξ}^{⌣} and D_{Ξ}^{⌣̸} ∩ D_{Ξ}^{⌣} = ∅

(2) Ξ is (pairwise) compatible iff D_{Ξ}^{⌣̸} = ∅

(3) D_{Ξ}^{⌣̸} = ⋃_{ξ,υ∈Ξ}D_{{ξ,υ}}^{⌣̸}

(4) D_{Ξ}^{⌣̸} = ⋃_{Ψ⊆Ξ}D_{Ψ}^{⌣̸}

(5) If Ψ ⊆ Ξ then D_{Ψ} ⊆ D_{Ξ} and D_{Ψ}^{⌣̸} ⊆ D_{Ξ}^{⌣̸}. But D_{Ψ}^{⌣} ⊆ D_{Ξ}^{⌣} is not true in general.

And if ξ, υ, ζ are records, then:

(6) D_{∅} = D_{∅}^{⌣̸} = D_{∅}^{⌣} = ∅

(7) D_{{ξ}} = D_{{ξ}}^{⌣} = dom(ξ) and D_{{ξ}}^{⌣̸} = ∅

(8) D_{{ξ,υ}}^{⌣} = dom(ξ ∨ υ)

(9) D_{{ξ,υ,ζ}}^{⌣̸} = D_{{ξ,υ}}^{⌣̸} ∪ D_{{ξ∨υ,ζ}}^{⌣̸}

11.3.5 Proof of 11.3.4

All statements are more or less trivial consequences of definition 11.3.2. On the remark in (5) about the truth of “Ψ ⊆ Ξ implies D_{Ψ}^{⌣} ⊆ D_{Ξ}^{⌣}” consider the following counterexample: For Ψ = {⟨7, 8, 9⟩, ⟨7, 8, 6⟩} ⊆ {⟨7, 8, 9⟩, ⟨7, 8, 6⟩, ⟨9, 8, 7⟩} = Ξ holds D_{Ψ}^{⌣} = {1, 2} ⊈ {2} = D_{Ξ}^{⌣}.

11.4 Record junctions

11.4.1 Remark introduction of the new junctors

The example 11.3.3 of two simple incompatible records is worth investigating, because it motivates the following binary junctor definitions.

Let ξ = [ξ_{i}|i ∈ I] and υ = [υ_{j}|j ∈ J] be two records. Their (total) domain D = I ∪ J partitions into the following parts:

I  J I \ J  J \ I I ∩ J

But I ∩ J itself partitions into D^{⌣̸} and the remaining class H := (I ∩ J) \ D^{⌣̸} = I ∩ J ∩ D^{⌣}. The situation is illustrated by

I  J I \ J  J \ I D⌣̸ H

This partition of the total domain induces the following partition of records, induced by the two given ones:

ξ  υ^{pr (ξ, I \ J)}^{pr (υ, J \ I)}^{pr (ξ, D⌣̸)}^{≠ pr (υ, D⌣̸)}^{pr (ξ, H)}^{= pr (υ, H)}

The first three new junctors \, ⋉ and ∧ are just new notations for these projections; we put

\begin{aligned}ξ \ υ & := & pr (ξ, I \ J) \\ ξ ⋉ υ & := & pr (ξ, D^{⌣̸}) \\ ξ ∧ υ & := & pr (ξ, H) \end{aligned}

The corresponding diagram with the new notation is

ξ  υ ξ \ υ  υ \ ξ ξ ⋉ υ ≠ υ ⋉ ξ ξ ∧ υ = υ ∧ ξ

The other three junctors ▽, ∨ and √ are different distinct joins of the previous ones:

\begin{aligned}ξ ▽ υ & := & (ξ \ υ) ˙∨ (υ \ ξ) \\ ξ ∨ υ & := & (ξ \ υ) ˙∨ (υ \ ξ) ˙∨ (ξ ∧ υ) \\ ξ√ υ & := & (ξ \ υ) ˙∨ (υ \ ξ) ˙∨ (ξ ∧ υ) ˙∨ (υ ⋉ ξ) \end{aligned}

so that

\begin{aligned}υ ▽ ξ & = & ξ ▽ υ \\ υ ∨ ξ & = & ξ ∨ υ \\ υ√ ξ = (ξ ∨ υ) ˙∨ (υ ⋉ ξ) & ≠ & (ξ ∨ υ) ˙∨ (ξ ⋉ υ) = ξ√ υ \end{aligned}

The closure of ξ and υ, i.e. the class of all the results produced by these new junctions is displayed by the following diagram

[figure: ⟨⟩; ξ \ υ; ξ ⋉ υ; ξ ∧ υ; υ ⋉ υ; υ \ ξ; ξ; ξ ▽ υ; υ; ξ ∨ υ; υ√ ξ; ξ√ υ]

The diagram shows the most general situation. In special cases, e.g. ξ ⌣ υ or ξ ≤ υ, certain members of the diagram collapse into one (see 11.4.5).

This closure of ξ and υ is their closure indeed in the usual sense: ♣ The three records ξ, υ, ⟨⟩ are junction results as well be-

cause

\begin{aligned}ξ & = & ξ ∧ ξ = ξ ∨ ξ = ξ√ ξ \\ ⟨⟩ & = & ξ ⋉ ξ = ξ ▽ ξ \end{aligned}

♣ Applying the junctions again (and again) does not produce new results.

11.4.2 Example

As an example, let us take the incompatible two records

ξ = [ \begin{matrix}i ↦ & 1 \\ j ↦ & 2 \\ k ↦ & 3 \end{matrix} ]  and  υ = [ \begin{matrix}j ↦ & 5 \\ k ↦ & 3 \\ l ↦ & 4 \end{matrix} ]

from example 11.3.3 again. Their closure (where each record position in the picture corresponds to the record positions of the diagram in 11.4.1) is given by

[figure: ⟨⟩; [i ↦ 1]; [j ↦ 2]; [k ↦ 3]; [j ↦ 5]; [l ↦ 4]; [ \begin{matrix}i ↦ & 1 \\ j ↦ & 2 \\ k ↦ & 3 \end{matrix} ]; [ \begin{matrix}i ↦ & 1 \\ l ↦ & 4 \end{matrix} ]; [ \begin{matrix}j ↦ & 5 \\ k ↦ & 3 \\ l ↦ & 4 \end{matrix} ]; [ \begin{matrix}i ↦ & 1 \\ k ↦ & 3 \\ l ↦ & 4 \end{matrix} ]; [ \begin{matrix}i ↦ & 1 \\ j ↦ & 2 \\ k ↦ & 3 \\ l ↦ & 4 \end{matrix} ]; [ \begin{matrix}i ↦ & 1 \\ j ↦ & 2 \\ k ↦ & 3 \\ l ↦ & 4 \end{matrix} ]]

11.4.3 Definition

We define

◯ 1 \ ◯ 2 := [ \begin{matrix}REC × REC ⟶ REC \\ ⟨ξ, υ⟩ ↦ pr (ξ, dom(ξ) \ dom(υ)) \end{matrix} ]

the \underline{subtraction}, reading “◯ 1 \underline{without} ◯ 2 ”

◯ 1 ∧ ◯ 2 := [ \begin{matrix}REC × REC ⟶ REC \\ ⟨ξ, υ⟩ ↦ \\ pr & (ξ, (dom(ξ) ∩ dom(υ)) \ D_{\{ξ,υ\}}^{⌣̸}) \end{matrix} ]

the \underline{meet}, reading “◯ 1 \underline{and} ◯ 2 ”

◯ 1 ⋉ ◯ 2 := [ \begin{matrix}REC × REC ⟶ REC \\ ⟨ξ, υ⟩ ↦ pr (ξ, D_{\{ξ,υ\}}^{⌣̸}) \end{matrix} ]

the \underline{rejector}, reading “(the part of) ◯ 1 \underline{rejected by} ◯ 2 ”

◯ 1 ▽ ◯ 2 := [ \begin{matrix}REC × REC ⟶ REC \\ ⟨ξ, υ⟩ ↦ (ξ \ υ) ˙∨ (υ \ ξ) \end{matrix} ]

the \underline{opposition}, reading “◯ 1 \underline{opposed to} ◯ 2 ”

◯ 1 ∨ ◯ 2 := [ \begin{matrix}REC × REC ⟶ REC \\ ⟨ξ, υ⟩ ↦ (ξ ∧ υ) ˙∨ (ξ ▽ υ) \end{matrix} ]

the \underline{join}, reading “◯ 1 \underline{or} ◯ 2 ”

◯ 1 √ ◯ 2 := [ \begin{matrix}REC × REC ⟶ REC \\ ⟨ξ, υ⟩ ↦ (ξ ∨ υ) ∨ υ \end{matrix} ]

the \underline{updater}, reading “◯ 1 \underline{updated with} ◯ 2 ”

11.4.4 Remark

This definition of six junctors is a lot of notation and symbolism to digest. There doesn’t seem to be a standard notion of an algebra of records or these kind of operations and our suggestions here don’t pretend to be a final solution. But they should become plausible and easy to memorize if one understands the following phenomena:

(1) Our idiosyncratic creations of the updater √ and rejector ⋉ are motivated by the most common circumstances where records are involved in mathematics and computer science. An environment (or context) ξ is a record that holds all the current bindings, i.e. values for identifiers. And if at that point some new (local or global) definitions υ are made, then the update ξ√ υ is the new environment, while the rejection ξ ⋉ υ holds all the deleted bindings.

For example, let ξ = [ \begin{matrix}c ↦ & 23 \\ x ↦ & 5 \end{matrix} ] be the current environment.

When the command sequence “x:=7; y:= c+2;” is called, ξ

needs to be updated by υ = [ \begin{matrix}x ↦ & 7 \\ y ↦ & 25 \end{matrix} ], the new environ-

ment is ξ√ υ = [ \begin{matrix}c ↦ & 23 \\ x ↦ & 7 \\ y ↦ & 25 \end{matrix} ] and the lost bindings are given

by ξ ⋉ υ = [ x ↦ 5 ].

(2) The other four junctors ∧, ∨, \, ▽ resemble the class operations with the corresponding symbol, respectively. Each of these junctions is produced by the same method: Given two records ξ = [ξ_{i}|i ∈ I] and υ = [υ_{j}|j ∈ J], then first determine their incompatible indices D^{⌣̸} and second take D^{⌣̸} off the new domain. In detail that is

junction its domain
ξ ∨ υ (I ∪ J) \ D^{⌣̸}
ξ ∧ υ (I ∩ J) \ D^{⌣̸}
ξ \ υ (I \ J) \ D^{⌣̸} = I \ J
ξ ▽ υ (I ▽ J) \ D^{⌣̸} = I ▽ J

This resemblence between the record junction and the class operation becomes even more apparent in case ξ ⌣ υ, that is D^{⌣̸} = ∅.

(3) If ξ ⌣ υ, then √ and ⋉ become superfluous in the sense that ξ√ υ = ξ ∨ υ and ξ ⋉ υ = ⟨⟩. The closure then is a proper boolean lattice (see 11.4.5 below), a fact that holds more general for every compatible record class Ξ.

(4) The six chosen symbols reflect another property: the three symmetric symbols “∧”, “∨” and “ ▽ ” denote commutative junctions. The remaining asymmetric symbols “\”, “√ ” and “⋉” represent non–commutative junctions.

11.4.5 Remark closure of compatible records

Let ξ and υ be two records which are compatible. In that case, certain elements of the diagram in 11.4.1 reduce to a single one, namely

υ√ ξ = ξ√ υ = ξ ∨ υ

and

ξ ⋉ υ = υ ⋉ ξ = ⟨⟩

That makes the junctors √ and ⋉ superfluous, the remaining closure is entirely given by the diagram

[figure: ⟨⟩; ξ − υ; ξ ∧ υ; υ − ξ; ξ; ξ ⋄ υ; υ; ξ ∨ υ]

11.4.6 Example

Two compatible records ξ and υ are given by

ξ = [ \begin{matrix}i ↦ & 1 \\ j ↦ & 2 \\ k ↦ & 3 \end{matrix} ]  and  υ = [ \begin{matrix}j ↦ & 2 \\ k ↦ & 3 \\ l ↦ & 4 \end{matrix} ]

D^{⌣̸} = ∅ and thus

ξ√ υ = υ√ ξ = ξ ∨ υ = [ \begin{matrix}i ↦ & 1 \\ j ↦ & 2 \\ k ↦ & 3 \\ l ↦ & 4 \end{matrix} ]

ξ ▽ υ = [ \begin{matrix}i ↦ & 1 \\ l ↦ & 4 \end{matrix} ]
ξ ∧ υ = [ \begin{matrix}j ↦ & 2 \\ k ↦ & 3 \end{matrix} ]
ξ \ υ = [ \begin{matrix}i ↦ & 1 \\ j ↦ & 2 \end{matrix} ]
υ \ ξ = [ \begin{matrix}k ↦ & 3 \\ l ↦ & 4 \end{matrix} ]
ξ ⋉ υ = υ ⋉ ξ = ⟨⟩

The diagram (where the nodes in the picture correspond to the nodes in the picture of 11.4.5) is

[figure: ⟨⟩; [ i ↦ 1 ]; [ \begin{matrix}j ↦ & 2 \\ k ↦ & 3 \end{matrix} ]; [ l ↦ 4 ]; [ \begin{matrix}i ↦ & 1 \\ j ↦ & 2 \\ k ↦ & 3 \end{matrix} ]; [ \begin{matrix}i ↦ & 1 \\ l ↦ & 4 \end{matrix} ]; [ \begin{matrix}j ↦ & 2 \\ k ↦ & 3 \\ l ↦ & 4 \end{matrix} ]; [ \begin{matrix}i ↦ & 1 \\ j ↦ & 2 \\ k ↦ & 3 \\ l ↦ & 4 \end{matrix} ]]

11.4.7 Remark Again, the diagram in 11.4.5 shows the most general situation for ξ ⌣ υ. In more special cases, certain elements become equal and the structure becomes a less complex one. However, in all cases the closure is a (complete) boolean lattice:

(a) If ξ ≬ υ the closure is given by

[figure: ⟨⟩ = ξ ∧ υ; ξ = ξ \ υ; υ = υ \ ξ; ξ ∨ υ = ξ ▽ υ]

(b) If ξ ≤ υ the diagram is given by

[figure: ⟨⟩ = ξ \ υ; ξ = ξ ∧ υ; υ \ ξ = υ ▽ ξ; υ = ξ ∨ υ]

(c) Finally if ξ = ⟨⟩, only the trivial two–elementary boolean algebra remains, which is

⟨⟩ = ξ = ξ \ υ = ξ ∧ υ ξ ∨ υ = υ = ξ ▽ υ = υ \ ξ

11.5 Properties of the junctions

11.5.1 Lemma

The following statements hold for all records ξ, υ, ζ.

(1) Distinct decomposition: (a) (ξ \ υ) ≬ (ξ ⋉ υ) ≬ (ξ ∧ υ) ≬ (υ ⋉ ξ) ≬ (υ \ ξ)

(b) ξ = (ξ \ υ) ˙∨ (ξ ⋉ υ) ˙∨ (ξ ∧ υ)

(c) ξ ▽ υ = (ξ \ υ) ˙∨ (υ \ ξ)

(d) ξ ∨ υ = (ξ \ υ) ˙∨ (ξ ∧ υ) ˙∨ (υ \ ξ)

(e) ξ√ υ = (ξ \ υ) ˙∨ (ξ ⋉ υ) ˙∨ (ξ ∧ υ) ˙∨ (υ \ ξ)

(2) Distinct join:

If υ ≬ ζ then

(a) υ ˙∨ ζ = υ ▽ ζ ( ▽ generalizes ˙∨ )

(b) υ ˙∨ ζ = υ ∨ ζ (∨ generalizes ˙∨ )

(c) υ ˙∨ ζ = ζ ˙∨ υ ( ˙∨ is commutative)

(d) ξ ∧ (υ ˙∨ ζ) = (ξ ∧ υ) ˙∨ (ξ ∧ ζ) (∧ distributes over ˙∨)

(e) (υ ˙∨ ζ) \ ξ = (υ \ ξ) ˙∨ (ζ \ ξ)

(f) υ ≤ υ ˙∨ ζ (monotony) And if ξ ≬ υ ≬ ζ then

(g) (ξ ˙∨ υ) ˙∨ ζ = ξ ˙∨ (υ ˙∨ ζ) ( ˙∨ is associative)

(h) (ξ ˙∨ υ ≤ ξ ˙∨ ζ) ⇔ (υ ≤ ζ) (additivity)

(3) Commutativity:

(a) ξ ∧ υ = υ ∧ ξ (commutativity of meet)

(b) ξ ∨ υ = υ ∨ ξ (commutativity of join)

(c) ξ ▽ υ = υ ▽ ξ (commutativity of opposition) (\, ⋉, √ are not commutative in general.)

(4) Argument duplication: (a) ξ \ ξ = ⟨⟩ (nilpotency of subtraction)

(b) ξ ∧ ξ = ξ (idempotency of meet)

(c) ξ ⋉ ξ = ⟨⟩ (nilpotency of rejector)

(d) ξ ▽ ξ = ⟨⟩ (nilpotency of opposition)

(e) ξ ∨ ξ = ξ (idempotency of join)

(f) ξ√ ξ = ξ (idempotency of updater)

(5) Empty argument:

(a) ξ \ ⟨⟩ = ξ (⟨⟩ is right neutral for subtraction)

(b) ⟨⟩ \ ξ = ⟨⟩ (⟨⟩ left–cancels subtraction)

(c) ξ ∧ ⟨⟩ = ⟨⟩ ∧ ξ = ⟨⟩ (⟨⟩ cancels meet)

(d) ξ ∨ ⟨⟩ = ⟨⟩ ∨ ξ = ξ (⟨⟩ is neutral for join)

(e) ξ ⋉ ⟨⟩ = ξ (⟨⟩ is right neutral for rejection)

(f) ⟨⟩ ⋉ ξ = ⟨⟩ (⟨⟩ left–cancels rejection)

(g) ξ ▽ ⟨⟩ = ⟨⟩ ▽ ξ = ξ (⟨⟩ is neutral for opposition)

(h) ξ√ ⟨⟩ = ⟨⟩√ ξ = ξ (⟨⟩ is neutral for updater)

(6) Compatibility: Equivalent are: (i) ξ ⌣ υ (ii) ξ ≤ ξ ∨ υ (iii) ξ and υ have an upper bound (iv) ξ ⋉ υ = ⟨⟩

(v) ξ√ υ = ξ ∨ υ (vi) D_{{ξ,υ}}^{⌣̸} = ∅ (vii) ξ, υ ∈ Proj(ξ ∨ υ) (viii) ξ, υ ∈ Proj(η) for some record η

(7) Order properties:

(a) ξ ∧ υ ≤ ξ

(b) ξ \ υ ≤ ξ

(c) ξ ⋉ υ ≤ ξ

(d) ξ ≤ υ√ ξ

(e) ξ ▽ υ ≤ ξ ∨ υ

(f) ξ ∨ υ ≤ ξ√ υ

(8) Extrema:

(a) ⟨⟩ is the least or bottom element, i.e. ⟨⟩ ≤ ξ

(b) ξ ∧ υ is the greatest lower bound of ξ and υ

(c) Equivalent are:

(i) ξ ∨ υ is the least upper bound of ξ and υ (ii) ξ ⌣ υ (See also (6) for more equivalent statements.)

(9) Associativity:

(a) (ξ ∧ υ) ∧ ζ = ξ ∧ (υ ∧ ζ)

(b) If ξ ⌣ υ ⌣ ζ then (ξ ∨ υ) ∨ ζ = ξ ∨ (υ ∨ ζ)

(c) If ξ ⌣ υ ⌣ ζ then (ξ ▽ υ) ▽ ζ = ξ ▽ (υ ▽ ζ)

(∨ and ▽ are not associative in general, see 11.5.3(1) and (2). And \, ⋉, √ are not associative anyway.)

(10) Distributivity:

(a) If υ ⌣ ζ then ξ ∧ (υ ∨ ζ) = (ξ ∧ υ) ∨ (ξ ∧ ζ) (See 11.5.3(3) for an example with υ ⌣̸ ζ.)

(b) If ξ ⌣ υ ⌣ ζ then ξ ∨ (υ ∧ ζ) = (ξ ∨ υ) ∧ (ξ ∨ ζ)

11.5.2 Proof of 11.5.1

Let ξ = [ξ_{i}|i ∈ I], υ = [υ_{j}|j ∈ J] and ζ = [ζ_{k}|k ∈ K].

(1) Distinct decomposition: These statements are an immediate consequence of the definitions in 11.4.3 and they have been discussed in already.

(2) Distinct join: υ ≬ ζ means J ∩ K = ∅, υ \ ζ = υ and ζ \ υ = ζ. And it implies υ ∧ ζ = ⟨⟩, so that applying the definitions in 11.4.3 gives us

(a) υ ▽ ζ = (υ \ ζ) ˙∨ (ζ \ υ) = υ ˙∨ ζ

(b) υ ∨ ζ = (υ ▽ ζ) ˙∨ (υ ∧ ζ) = (υ ˙∨ ζ) ˙∨ ⟨⟩ = υ ˙∨ ζ

(c) Simply applying definition 10.4.1 gives us υ ˙∨ ζ =

[ i ↦ \begin{cases}υ_{i} & if i ∈ J \\ ζ_{i} & if i ∈ K \end{cases} i ∈ J ∪ K ] = ζ ˙∨ υ

(d) We obtain

ξ ∧ (υ ˙∨ ζ)

= pr (ξ, (I ∩ (J ∪ K)) \ D_{{ξ,υ ˙∨ ζ}}^{⌣̸}

definition 11.4.3 of ∧ and because dom(υ ˙∨ ζ) = J ∪ K

= pr (ξ, ((I ∩ J) ∪ (I ∩ K)) \ (D_{\{ξ,υ\}∪D{⌣̸ \atop \{ξ,ζ\}}}^{⌣̸} ))

because J and K are disjunct, and that entails

D{⌣̸ \atop \{ξ,υ ˙∨ ζ\}} = D{⌣̸ \atop ξ,υ} ∪ D{⌣̸ \atop ξ,ζ}

= pr (ξ, ((I ∩ J) \ D_{{ξ,υ}}^{⌣̸}) ∪ ((I ∩ K) \ D_{{ξ,ζ}}^{⌣̸}))

because D{⌣̸ \atop \{ξ,υ\}} ⊆ I ∩ J and D{⌣̸ \atop \{ξ,υ\}} ∩ K = ∅,

D{⌣̸ \atop \{ξ,ζ\}} ⊆ I ∩ K and D{⌣̸ \atop \{ξ,ζ\}} ∩ J = ∅

= pr (ξ, (I ∩ J) \ D_{{ξ,υ}}^{⌣̸}) ˙∨ pr (ξ, (I ∩ K) \ D_{{ξ,ζ}}^{⌣̸})

again, because J and K are disjunct

= (ξ ∧ υ) ˙∨ (ξ ∧ ζ) definition 11.4.3 of ∧

(e) Note, that υ \ξ ≤ υ and ζ \ξ ≤ ζ (see (7)(b) for a proof), so that υ ≬ ζ implies (υ \ ξ) ≬ (ζ \ ξ). Therefore (υ \ ξ) ˙∨ (ζ \ ξ) = pr (υ, J \ J) ˙∨ pr (ζ, K \ I) = pr (υ ˙∨ ζ, J \ J) ˙∨ pr (υ ˙∨ ζ, K \ I) = pr (υ ˙∨ ζ, (J \ I) ∪ (K \ I)) = pr (υ ˙∨ ζ, (J ∪ K) \ I)

due to 5.6.5(4)

= (υ ˙∨ ζ) \ ξ

(f) υ = pr (υ ˙∨ ζ, J) ≤ υ ˙∨ ζ

(g) We have (ξ ˙∨ υ) ˙∨ ζ

= [ l ↦ \begin{cases}ξ_{l} & if l ∈ I \\ υ_{l} & if l ∈ J \\ ζ_{l} & if l ∈ K \end{cases} l ∈ (I ∪ J ∪ K) ]

= ξ ˙∨ (υ ˙∨ ζ)

(h) By using 10.3.2 the definition of ≤, we derive

ξ ˙∨ υ ≤ ξ ˙∨ ζ ⇔ (I ∪ J ⊆ I ∪ K) and

(ξ ˙∨ υ)(l) = (ξ ˙∨ ζ)(l) for each l ∈ I ∪ J

⇔ J ⊆ K and υ_{l} = ζ_{l} for each l ∈ J
⇔ υ ≤ ζ

(3) The commutativity of ∧, ∨ and ▽ is a consequence of their definition 11.4.3 and the commutativity 11.5.1(2)(c) of ˙∨ . (And it is easy to construct examples that demonstrate the non–commutativity of \, ⋉ and √ .)

(4) The statements about the result of two identical arguments should be clear by now.

(5) If one of the arguments is the empty tuple, the according result is an immediate consequence of the definitions in 11.4.3.

(6) Compatibility: To proof the mutual equivalence of all six

statements, we use the following roadmap

(viii) − (vii) − (ii)

|

(i) − (vi) − (iv) − (v)

| (iii)

The singular connections are justified in detail as follows:

(i)⇔(vi) is true according to 11.3.4(2).

(vi)⇔(iv) is true because ξ ⋉ υ = pr (ξ, D_{{ξ,υ}}^{⌣̸}) according

to definition 11.4.3, so that ξ ⋉ υ = ⟨⟩ iff D_{{ξ,υ}}^{⌣̸} = ∅.

(iv)⇔(v) is true because ξ√ υ = (ξ ∨ υ) ˙∨ (ξ ⋉ υ) due to

(1)(e) and (1)(d). Thus ξ√ υ = ξ ∨ υ iff ξ ⋉ υ = ⟨⟩. (ii)⇔(iv) is true because we have the distinct decomposi-

tions (1)(b) and (d)

\begin{aligned}ξ & = & (ξ \ υ) ˙∨ (ξ ∧ υ) ˙∨ (ξ ⋉ υ) \\ ξ ∨ υ & = & (ξ \ υ) ˙∨ (ξ ∧ υ) ˙∨ (υ \ ξ) \end{aligned}

so that ξ ≤ ξ ∨ υ iff ξ ⋉ υ ≤ υ \ ξ, due to (2) and (2)(h) in particular. But dom(ξ ⋉ υ) ∩ dom(υ \ ξ) = ∅, so that ξ ⋉ υ ≤ υ \ ξ iff ξ ⋉ υ = ⟨⟩.

(iii)⇔(vi) Assume that (iii) ξ and υ have an upper bound, i.e. there is a record β = [β_{l}|l ∈ L] with ξ ≤ β and υ ≤ β. According to 10.3.12 that means ξ = pr (β, I) and υ = pr (β, J). That entails pr (ξ, I ∩ J) = pr (β, I ∩ J) = pr (υ, I ∩ J) and (vi) D_{{ξ,υ}}^{⌣̸} = ∅.

On the other hand, if (vi) D_{{ξ,υ}}^{⌣̸} = ∅ is the case, then ξ ⋉ υ = υ ⋉ ξ = ⟨⟩ and so we have the distinct decompositions

\begin{aligned}ξ & = & (ξ \ υ) ˙∨ (ξ ∧ υ) \\ υ & = & (υ \ ξ) ˙∨ (ξ ∧ υ) \\ ξ ∨ υ & = & (ξ \ υ) ˙∨ (υ \ ξ) ˙∨ (ξ ∧ υ) \end{aligned}

so that ξ ≤ ξ ∨ υ and υ ≤ ξ ∨ υ according to (2)(h). And that is precisely statement (iii).

(ii)⇔(vii) ξ ≤ ξ ∨ υ ⇔ ξ = pr (ξ ∨ υ, I) ⇔ ξ ∈ Proj(ξ ∨ υ)

and the same holds for υ. (vii)⇔(viii) That (vii) entails (viii) is a trivial truth; simply

put η := ξ ∨ υ. On the other hand, ξ, υ ∈ Proj(η) ⇒ ξ ∨ υ ∈ Proj(η) ⇒ ξ ∨ υ = pr (η, I ∪ J) and so ξ, υ ∈ Proj(ξ ∨ υ).

(7) Order properties: Each of the statements (a) to (f) can be prove by applying the additivity rule (2)(h) to the distinct decompositions of each side of the ≤–expression. For example, for (e) this is ξ ▽ υ

= (ξ \ υ) ˙∨ (υ \ ξ) due to (1)(c)

≤ (ξ \ υ) ˙∨ (υ \ ξ) ˙∨ (ξ ∧ υ) due to (2)(h)

= ξ ∨ υ due to (1)(d)

Proving the other statements with the same method is just a trivial exercise.

(8) Extrema:

(a) According to definition 10.3.2, ⟨⟩ ≤ ξ ⇔ (∅ ⊆ I and ⟨⟩(i) = ξ_{i} for all i ∈ ∅). And that is always true in a trivial sense.

(b) According to (7)(a), ξ ∧ υ ≤ ξ and ξ ∧ υ ≤ υ, i.e. ξ ∧ υ is a lower bound of both ξ and υ. Suppose, there is another lower bound β = [β_{l}|l ∈ L] of ξ and υ with ξ ∧ υ ≤ β. β ≤ ξ and β ≤ υ implies L ⊆ I and L ⊆ J, in other words L ⊆ I ∩ J. ξ ∧ υ ≤ β implies (I ∩ J) \ D_{{ξ,υ}}^{⌣̸}. But if there would be an k ∈ D_{{ξ,υ}}^{⌣̸}

with k ∈ L, then either β ≰ ξ or β ≰ υ would be the case and β couldn’t be the lower bound. Therefore L has to be I ∩ J and β is ξ ∧ υ. ξ ∧ υ is indeed the greatest of all lower bounds.

(c) From (6)(1) and (6)(3) we know that ξ ⌣ υ iff ξ and υ do have an upper bound at all. So if (1)ξ ∨ υ is the least upper bound, it is certainly an upper bound and (2) ξ ⌣ υ must hold. On the other hand, suppose that (2) ξ ⌣ υ is true. Then ξ ≤ ξ∨υ and υ ≤ ξ∨υ due to (6), ξ∨υ is an upper bound. And it is the least of all upper bounds, because if we assume that there is another upper bound β = [β_{l}|l ∈ L] with β ≤ ξ ∨ υ, then ♣ ξ ≤ β implies I ⊆ L, υ ≤ β implies J ⊆ L, and thus

I ∪ J ⊆ L. ♣ β ≤ ξ ∨ υ implies L ⊆ dom(ξ ∨ υ) = I ∪ J

Both properties together demand that L = dom(ξ ∨ υ), and that means β = ξ ∨ υ in the end. ξ ∨ υ is indeed the least of all upper bounds.

(9) Associativity

(a) We first concentrate on the domains of the generated records and obtain

dom((ξ ∧ υ) ∧ ζ)

= (dom(ξ ∧ υ) ∩ K) \ D_{{ξ∧υ,ζ}}^{⌣̸}

def. 11.4.3 of ∧

= (((I ∩ J) \ D_{{ξ,υ}}^{⌣̸}) ∩ K) \ D_{{ξ∧υ,ζ}}^{⌣̸}

again due to 11.4.3

= ((I ∩ J ∩ K) \ D_{{ξ,υ}}^{⌣̸}) \ D_{{ξ∧υ,ζ}}^{⌣̸}

due to 5.6.5(7), i.e. (A \ B) ∩ C = (A ∩ C) \ B

= {j ∈ (I ∩ J ∩ K) | ξ_{j} = υ_{j}} \ D_{{ξ∧υ,ζ}}^{⌣̸}

= {j ∈ (I ∩ J ∩ K) | ξ_{j} = υ_{j} and (ξ ∧ υ)(j) = ζ_{j}}

= {j ∈ (I ∩ J ∩ K) | ξ_{j} = υ_{j} = ζ_{j}}

= (I ∩ J ∩ K) \ D_{{ξ,υ,ζ}}^{⌣̸}

Similar reasoning gives us

dom(ξ ∧ (υ ∧ ζ)) = (I ∩ J ∩ K) \ D_{{ξ,υ,ζ}}^{⌣̸}

so that

dom((ξ ∧ υ) ∧ ζ) = dom(ξ ∧ (υ ∧ ζ))

Making use of (3)(a) the commutativity of ∧ and 11.4.3 the definition of ∧, we can now derive the original statement

(ξ ∧ υ) ∧ ζ = [υ_{j}|j ∈ dom(υ ∧ ξ)] ∧ ζ
= [υ_{j}|j ∈ dom((υ ∧ ξ) ∧ ζ)]
= [υ_{j}|j ∈ dom((υ ∧ ζ) ∧ ξ)]
= [υ_{j}|j ∈ dom(υ ∧ ζ)] ∧ ξ
= (υ ∧ ζ) ∧ ξ
= ξ ∧ (υ ∧ ζ)

(b) See the proof of 11.6.1(4)(b).

(c) See the proof of 11.6.1(4)(c).

(10) Distributivity: (a) If υ ⌣ ζ then

ξ ∧ (υ ∨ ζ)

= ξ ∧ ((υ \ ζ) ˙∨ (υ ∧ ζ) ˙∨ (ζ ∧ υ)) due to (1)(d)

= (ξ ∧ (υ \ ζ)) ˙∨ (ξ ∧ (υ ∧ ζ)) ˙∨ (ξ ∧ (ζ \ υ))

due to (2)(d)and (2)(g)

= (ξ ∧ (υ \ ζ)) ∨ (ξ ∧ (υ ∧ ζ)) ∨ (ξ ∧ (ζ \ υ))

due to (2)(b)and (9)(b)

= (ξ ∧ (υ \ ζ)) ∨ (\begin{matrix}(ξ ∧ (υ ∧ ζ)) \\ ∨ \\ (ξ ∧ (υ ∧ ζ)) \end{matrix}) ∨ (ξ ∧ (ζ \ υ))

due to (4)(e)

= (\begin{matrix}(ξ ∧ (υ \ ζ)) \\ ∨ \\ (ξ ∧ (υ ∧ ζ)) \end{matrix}) ∨ (\begin{matrix}(ξ ∧ (υ ∧ ζ)) \\ ∨ \\ (ξ ∧ (ζ \ υ)) \end{matrix})

due to (9)(b)

= ((ξ ∧ (υ \ ζ)) ; ˙∨ ; (ξ ∧ (υ ∧ ζ))) ∨ ((ξ ∧ (υ ∧ ζ)) ; ˙∨ ; (ξ ∧ (ζ \ υ)))

due to (2)(b)

= (ξ ∧ ((υ \ ζ) ˙∨ (υ ∧ ζ))) ∨ (ξ ∧ ((υ ∧ ζ) ˙∨ (ζ \ υ)))

due to (2)(d)

= (ξ ∧ υ) ∨ (ξ ∧ ζ)

because υ ⌣ ζ makes υ ⋉ ζ = ζ ⋉ υ = ⟨⟩ so that υ = (υ \ ζ) ˙∨ (υ ∧ ζ) and ζ = (υ ∧ ζ) ˙∨ (ζ \ υ) according to (1)(b)

(b) See the proof of 11.6.1(5)(b).

11.5.3 Remark

Note the following phenomena that differ from the common properties of lattice-like operations:

(1) ∨ is associative for compatible arguments (11.5.1(9)(b)), but it is not associative in general. For example, let

ξ = [ \begin{matrix}a ↦ & 1 \\ b ↦ & 2 \end{matrix} ]  υ = [ \begin{matrix}a ↦ & −1 \\ b ↦ & 2 \end{matrix} ]  ζ = [ \begin{matrix}a ↦ & −1 \\ b ↦ & 2 \end{matrix} ]

then

(ξ ∨ υ) ∨ ζ = [ \begin{matrix}a ↦ & −1 \\ b ↦ & 2 \end{matrix} ] ≠ [ b ↦ 2 ] = ξ ∨ (υ ∨ ζ)

(2) ▽ is associative for compatible arguments (11.5.1(9)(c)), but not in general. For example, for

ξ = [i ↦ 1] υ = [i ↦ 2] ζ = [i ↦ 3]

we obtain

ξ ▽ (υ ▽ ζ) = [i ↦ 1] ≠ [i ↦ 3] = (ξ ▽ υ) ▽ ζ

(3) The condition υ ⌣ ζ is imperative for the distributivity law 11.5.1(10)(a) ξ ∧ (υ ∨ ζ) = (ξ ∧ υ) ∨ (ξ ∧ ζ) to hold in general. Consider the following counterexample, where υ ⌣̸ ζ with

ξ = [ \begin{matrix}b ↦ & 1 \\ c ↦ & 1 \\ d ↦ & 1 \end{matrix} ]  υ = [ \begin{matrix}a ↦ & 1 \\ b ↦ & 1 \\ c ↦ & 1 \end{matrix} ]  ζ = [ \begin{matrix}c ↦ & 3 \\ d ↦ & 1 \\ e ↦ & 1 \end{matrix} ]

For these records we obtain

\begin{aligned}& ξ ∧ (υ ∨ ζ) = [ \begin{matrix}b ↦ & 1 \\ c ↦ & 1 \\ d ↦ & 1 \end{matrix} ] ∧ [ \begin{matrix}a ↦ & 1 \\ b ↦ & 1 \\ d ↦ & 1 \\ e ↦ & 1 \end{matrix} ] = [ \begin{matrix}b ↦ & 1 \\ d ↦ & 1 \end{matrix} ] \\ ≠ & [ \begin{matrix}b ↦ & 1 \\ c ↦ & 1 \\ d ↦ & 1 \end{matrix} ] = [ \begin{matrix}b ↦ & 1 \\ c ↦ & 1 \end{matrix} ] ∨ [ d ↦ 1 ] = (ξ ∧ υ) ∨ (ξ ∧ ζ) \end{aligned}

11.6 Properties for compatible arguments

11.6.1 Lemma binary junctions of compatible arguments

Let ξ = [ξ_{i}|i ∈ I], υ = [υ_{j}|j ∈ J], ζ = [ζ_{k}|k ∈ K] be three (pairwise) compatible records, i.e. ξ ⌣ υ ⌣ ζ. Next to the properties of 11.5.1, we now have the following additional facts.

(1) Compatible junction as projections: ξ, υ, ζ have an upper bound η (i.e. there is a record η with ξ, υ, ζ ≤ η). And for every upper bound η holds

(a) ξ, υ, ζ ∈ Proj(η)

(b) ξ = pr (η, I)

(c) ξ \ υ = pr (η, I \ J)

(d) ξ ∧ υ = pr (η, I ∩ J)

(e) ξ ∨ υ = pr (η, I ∪ J)

(f) ξ ▽ υ = pr (η, I ▽ J)

(2) Rejector and updater: they become superfluous in the sense that

(a) ξ ⋉ υ = ⟨⟩

(b) ξ√ υ = ξ ∨ υ

(3) Subtraction together with meet and join:

(a) ξ \ (υ ∧ ζ) = (ξ \ υ) ∨ (ξ \ ζ)

(b) ξ \ (υ ∨ ζ) = (ξ \ υ) ∧ (ξ \ ζ)

(c) (υ ∧ ζ) \ ξ = (υ \ ξ) ∧ (ζ \ ξ)

(d) (υ ∨ ζ) \ ξ = (υ \ ξ) ∨ (ζ \ ξ)

(e) (ξ \ υ) \ ζ = ξ \ (υ ∨ ζ)

(f) ξ \ (υ \ ζ) = (ξ \ υ) ∨ (ξ ∧ ζ)

(g) (ξ \ υ) ∧ ζ = (ξ ∧ ζ) \ υ

(h) (ξ \ υ) ∨ ζ = (ξ ∨ ζ) \ (υ \ ζ)

(4) Associativity:

(a) (ξ ∧ υ) ∧ ζ = ξ ∧ (υ ∧ ζ)

(b) (ξ ∨ υ) ∨ ζ = ξ ∨ (υ ∨ ζ)

(c) (ξ ▽ υ) ▽ ζ = ξ ▽ (υ ▽ ζ)

(5) Distributivity:

(a) ξ ∧ (υ ∨ ζ) = (ξ ∧ υ) ∨ (ξ ∧ ζ)

(b) ξ ∨ (υ ∧ ζ) = (ξ ∨ υ) ∧ (ξ ∨ ζ)

11.6.2 Proof of 11.6.1

(1) According to 11.5.1(6)and (8)(c), ξ ⌣ υ means that ξ and υ have an upper bound, which is every record η with ξ∨υ ≤ η. ≤ is transitive and similar statements hold for three arguments as well: ξ, υ, ζ have a least upper bound and that is given by any η with (ξ ∨ υ) ∨ ζ ≤ η. For each such η = [η_{l}|l ∈ L], we have ξ, υ, ζ ∈ Proj(η), the order structure on Proj(η) resembles the ⊆–order structure on P(L) (i.e. they are isomorph), so that each of the record junctions \, ∧, ∨, ▽ is a projections of η onto the according domain, which is a result of the according operation \, ∩, ∪, ▽, respectively.

(2) ξ ⌣ υ implies D_{{ξ,υ}}^{⌣̸} = ∅, so that

(a) ξ ⋉ υ = pr (ξ, D_{{ξ,υ}}^{⌣̸}) = pr (ξ, ∅) = ⟨⟩

(b) Applying the distinct decompositions from 11.5.1(1), we obtain ξ√ υ = (ξ ∨ υ) ˙∨ (ξ ⋉ υ) = (ξ ∨ υ) ˙∨ ⟨⟩ = ξ ∨ υ.

(3) Using (1), we are able to translate every record junction on Proj(η) into a set operation on the junction domains. And each of the eight statements (a)–(h) corresponds to the according one of the eight statements in 5.6.5. For example, for (a) we have ξ \ (υ ∧ ζ)

= pr (η, I \ (J ∩ K))

= pr (η, (I \ J) ∪ (I \ K)) due to 5.6.5(1)

= (ξ \ υ) ∨ (ξ \ ζ)

(4) see 11.5.1(9).

(5) see 11.5.1(10).

11.7 Big junctions

11.7.1 Remark introduction We will now generalize the binary junctors to their big versions and introduce ⋁, ⋀ and ∇. The recipe is given in 11.4.4(2). The domain of the big junction is the according class operation on the arguments, but without the incompatible indices, i.e.

junction its domain
⋁ Ξ  ( ⋃_{ξ∈Ξ}dom(ξ)) \ D_{Ξ}^{⌣̸} = D_{Ξ} \ D_{Ξ}^{⌣̸} = D_{Ξ}^{⌣}
⋀ Ξ  ( ⋂_{ξ∈Ξ}dom(ξ)) \ D_{Ξ}^{⌣̸}
∇Ξ  ( ∇_{ξ∈Ξ}dom(ξ)) \ D_{Ξ}^{⌣̸} = ∇_{ξ∈Ξ}dom(ξ)

Deleting the compatible domain D_{Ξ}^{⌣̸} in each case ensures that the value Ξ(k) of the new record is well defined for each k of the according domain.

11.7.2 Definition Given a record class Ξ. For each k ∈ D_{Ξ}^{⌣} we define

Ξ(k) := sing{ξ(k) | ξ ∈ Ξ, k ∈ dom(ξ)}

the \underline{value} of Ξ at k

And so we can introduce

⋁ Ξ := [ Ξ(k) k ∈ D_{Ξ}^{⌣} ]

the \underline{supremum} or \underline{(big) disjunction} of Ξ

⋀ Ξ := [ Ξ(k) k ∈ ( ⋂_{ξ∈Ξ}dom(ξ)) \ D_{Ξ}^{⌣̸} ]

the \underline{infimum} of \underline{(big) conjunction} of Ξ

∇Ξ := [ Ξ(k) k ∈ ∇_{ξ∈Ξ}dom(ξ) ]

the \underline{(big) opposition} of Ξ

11.7.3 Example big junctions

An example record class is

Ξ = \{[ \begin{matrix}i ↦ & 1 \\ j ↦ & 2 \\ k ↦ & 3 \end{matrix} ] , [ \begin{matrix}j ↦ & −2 \\ k ↦ & 3 \\ l ↦ & 4 \end{matrix} ] , [ \begin{matrix}j ↦ & 2 \\ k ↦ & 3 \\ l ↦ & −4 \\ m ↦ & 5 \end{matrix} ]\}

with

D_{Ξ}^{⌣} = ⋃_{ξ∈Ξ}dom(ξ) = {i, j, k, l, m}
⋂_{ξ∈Ξ}dom(ξ) = {j, k}
∇_{ξ∈Ξ}dom(ξ) = {i, m}
D_{Ξ}^{⌣̸} = {j, l}
D_{Ξ}^{⌣} = {i, k, m}

so that

⋁ Ξ = [ \begin{matrix}i ↦ & 1 \\ k ↦ & 3 \\ m ↦ & 5 \end{matrix} ] ⋀ Ξ = [ k ↦ 3 ] ∇Ξ = [ \begin{matrix}i ↦ & 1 \\ m ↦ & 5 \end{matrix} ]

11.7.4 Definition For arbitrary records ξ_{1}, …, ξ_{n} we define

\begin{aligned}ξ_{1} ∨ … ∨ ξ_{n} & := & ⋁ \{ξ_{1}, …, ξ_{n}\} \\ ξ_{1} ∧ … ∧ ξ_{n} & := & ⋀ \{ξ_{1}, …, ξ_{n}\} \end{aligned}

11.7.5 Remark

(1) ⋁ Ξ and ∇Ξ are well–defined for all record classes Ξ. But ⋀ Ξ is well–defined only if Ξ ≠ ∅, because ⋂ ∅ is undefined. Accordingly, ξ_{1} ∧ … ∧ ξ_{n} exists iff n ≥ 0, while ξ_{1} ∨ … ∨ ξ_{n} = ⟨⟩ for n = 0. In 11.9.1 we introduce a useful mutation of ⋀ that is defined on its whole domain.

(2) Definition 11.7.4 is well–defined generalization of the binary ∧ and ∨, because 11.7.6(1)(a) ξ ∨ υ = ⋁ {ξ, υ} and ξ ∧ υ = ⋀ {ξ, υ}. But we need to keep in mind, that parentheses are not arbitrary in case of incompatible records, because the join is not associative.

(3) A similar generalization of the opposition would not be consistent, because ξ ▽ υ = ∇ {ξ, υ} is not true in general. The opposition is nilpotent, not idempotent, so ξ ▽ ξ = ⟨⟩, but ∇ {ξ, ξ} = ∇ {ξ} = ξ.

11.7.6 Lemma properties of the big junctions

(1) Generalization: For every two records ξ and υ (a) ξ ∨ υ = ⋁ {ξ, υ}

(b) ξ ∧ υ = ⋀ {ξ, υ}

(2) Empty argument class:

(a) ⋁ ∅ = ⟨⟩

(b) ⋀ ∅ is undefined

(c) ∇∅ = ⟨⟩

(3) Compatibility: For every record class Ξ the following statements are equivalent

(i) Ξ is compatible (ii) ξ ≤ ⋁ Ξ for each ξ ∈ Ξ (iii) Ξ has an upper bound (iv) D_{Ξ}^{⌣̸} = ∅

(v) Ξ ⊆ Proj(⋁ Ξ) (vi) Ξ ⊆ Proj(η) for some record η

(4) Order: For every record class Ξ holds (a) ⋀ Ξ ≤ ⋁ Ξ

(b) ∇Ξ ≤ ⋁ Ξ

(5) Extrema: For every record class Ξ holds (a) If Ξ ≠ ∅ then ⋀ Ξ is the greatest lower bound of Ξ (b) The following statements are equivalent:

(i) Ξ is compatible

(ii) ⋁ Ξ is the least upper bound of Ξ (6) Compatible big junctions as projections: Let η be a

record and Ξ ⊆ Proj(η). That means, that Ξ is compatible and

(a) ⋁ Ξ = pr (η, ⋃_{ξ∈Ξ}dom(ξ)) = pr (η, D_{Ξ})

(b) ⋀ Ξ = pr (η, ⋂_{ξ∈Ξ}dom(ξ))

(c) ∇Ξ = pr (η, ∇_{ξ∈Ξ}dom(ξ))

(7) Subtraction and distributivity: For a record η and all Ξ ⊆ Proj(η) and υ ∈ Proj(η) holds

(a) υ \ ⋀ Ξ = ⋁{υ \ ξ | ξ ∈ Ξ} for all Ξ ≠ ∅ (b) υ \ ⋁ Ξ = ⋀{υ \ ξ | ξ ∈ Ξ} for all Ξ ≠ ∅ (c) (⋀ Ξ) \ υ = ⋀{ξ \ υ | ξ ∈ Ξ} for all Ξ ≠ ∅ (d) (⋁ Ξ) \ υ = ⋁{ξ \ υ | ξ ∈ Ξ}

(e) υ ∧ ⋁ Ξ = ⋁{υ ∧ ξ | ξ ∈ Ξ}

(f) υ ∨ ⋀ Ξ = ⋀{υ ∨ ξ | ξ ∈ Ξ} for all Ξ ≠ ∅

11.7.7 Proof of 11.7.6

(1) Generalization: If ξ = [ξ_{i}|i ∈ I] and υ = [υ_{j}|j ∈ J] then

⋁ {ξ, υ} = [Ξ(k)|k ∈ D_{{ξ,υ}}^{⌣}]
= [ k ↦ \begin{cases}ξ_{k} & if k ∈ I \\ υ_{k} & if k ∈ J \end{cases} k ∈ D_{\{ξ,υ\}}^{⌣} ]
= ξ ∨ υ
⋀ {ξ, υ} = [Ξ(k)|k ∈ (I ∩ J) \ D_{{ξ,υ}}^{⌣̸}]
= pr (ξ_{k}, k ∈ (I ∩ J) \ D_{{ξ,υ}}^{⌣̸})
= ξ ∧ υ

(2) Empty argument class: D_{∅}^{⌣̸} = ∅, ⋃{dom(ξ) | ξ ∈ ∅} = ∇{dom(ξ) | ξ ∈ ∅} = ∅ and ⋂{dom(ξ) | ξ ∈ ∅} is undefined, so that ⋁ ∅ = ∇∅ = ⟨⟩ and ⋀ ∅ is undefined.

(3) Compatibility: To proof the mutual equivalence of all six statements, we use the following steps (i)⇔(iv)⇔(ii)⇔(v)⇔(vi)⇔(iii), which are justified as follows. (i)⇔(iv) See 11.3.4.

(iv)⇔(ii) If D_{Ξ}^{⌣̸} = ∅ then dom(ξ) ⊆ D_{Ξ} = dom(⋁ Ξ) for each ξ ∈ Ξ. On the other hand, if D_{Ξ}^{⌣̸} ≠ ∅ then there is a υ ∈ Ξ and j ∈ dom(υ) with j ∉ D_{Ξ}^{⌣} = dom(⋁ Ξ). So dom(υ) ⊈ dom(⋁ Ξ), i.e. υ ≰ ⋁ Ξ.

(ii)⇔(v) See 10.3.12(3). (v)⇔(vi) Obviously, (v) implies (vi) when η := ⋁ Ξ. On the

other hand, (vi) is saying that Ξ has an upper bound η, so ξ ≤ ⋁ Ξ ≤ η for all ξ ∈ Ξ, and that is (v).

(vi)⇔(iii) Ξ has a lower bound η iff ξ ≤ η for all ξ ∈ Ξ iff ξ ∈ Proj(η), again according to 10.3.12(3).

(4) Order:

(a) We have

⋂_{ξ∈Ξ}dom(ξ) ⊆ ⋃_{ξ∈Ξ}dom(ξ)

⇒ ⋂_{ξ∈Ξ}dom(ξ) \ D_{Ξ}^{⌣̸} ⊆ ⋃_{ξ∈Ξ}dom(ξ) \ D_{Ξ}^{⌣̸}

⇒ [ \frac{Ξ(k)}{k ∈ ⋂_{ξ∈Ξ}dom(ξ) \ D_{Ξ}^{⌣̸}} ] ≤ [ \frac{Ξ(k)}{k ∈ ⋃_{ξ∈Ξ}dom(ξ) \ D_{Ξ}^{⌣̸}} ]

⇒ ⋀ Ξ ≤ ⋁ Ξ

(b) Similar to (a)we obtain

∇{dom(ξ) | ξ ∈ Ξ} ⊆ ⋃{dom(ξ) | ξ ∈ Ξ}
⇒ ∇Ξ ≤ ⋁ Ξ

(5) Extrema:

(a) Every non–empty Ξ has lower bounds, at least ⟨⟩. Suppose, υ = [υ_{j}|j ∈ J] is an arbitrary lower bound of Ξ, so υ ≤ ξ for all ξ ∈ Ξ, i.e. J ⊆ ⋂{dom(ξ) | ξ ∈ Ξ}. Now if k ∈ D_{Ξ}^{⌣̸}, there are ξ′, ξ′′ ∈ Ξ with ξ′(k) ≠ ξ′′(k). And k cannot be in J, because otherwise υ ≰ ξ′ or υ ≰ ξ′′. So D_{Ξ}^{⌣̸} ∩ J = ∅, in other words, J ⊆ ⋂{dom(ξ) | ξ ∈ Ξ} \ D_{Ξ}^{⌣̸} = dom(⋀ Ξ). Furthermore, υ ≤ ⋀ Ξ, ⋀ Ξ is not only a lower bound of Ξ, but the unique greatest lower one.

(b) If Ξ is compatible, D_{Ξ}^{⌣̸} = ∅ and ⋁ Ξ = [Ξ(k)|k ∈ D_{Ξ}]. For every ξ ∈ Ξ, dom(ξ) ⊆ D_{Ξ} and each i ∈ dom(ξ), ξ(i) = Ξ(i), so ξ ≤ ⋁ Ξ. But not only is ⋁ Ξ an upper bound of Ξ, it also is the unique least upper bound, because for every upper bound υ, the criterion ξ ≤ υ for all ξ ∈ Ξ would imply that dom(ξ) ⊆ dom(υ), i.e. D_{Ξ} ⊆ dom(υ) and thus ⋁ Ξ ≤ υ. On the other hand, if Ξ is incompatible, it has at least two incompatible members. And we know from 11.5.1(6), that these two records don’t have an upper bound. So Ξ cannot have an upper bound, let alone a least one.

(6) Compatible big junctions as projections: Ξ ⊆ η means that ξ ≤ η for all ξ ∈ Ξ and the compatibility of Ξ is a trivial consequence. Also, Ξ(k) = η(k) for all k ∈ D_{Ξ}, and (a),(b),(c)follow immediately from definition 11.7.2. υ \ ⋀ Ξ

= pr (η, J) \ pr (η, ⋂_{ξ∈Ξ}dom(ξ)) due to (6)

= pr (η, J \ ⋂_{ξ∈Ξ}dom(ξ))

= pr (η, ⋃_{ξ∈Ξ}(J \ dom(ξ))) see 5.6.5(1)

= ⋁_{ξ∈Ξ}pr (η, J \ dom(ξ)) due to (6)(b)

= ⋁_{ξ∈Ξ}pr (υ, J \ dom(ξ))

= ⋁_{ξ∈Ξ}(υ \ ξ)

This is a proof for (a) and the other statements (b)–(f) are proved likewise. The same idea is always, that in case we operate on Proj(η), the structure on records is isomorph to the power class structure on the domain of η, P(K). The record operations behave similar to the according class operations.

11.8 The general record structure

11.8.1 Definition

ℜ𝔈ℭ := ⟨REC, ≬, ⌣, ≤, ⟨⟩, \, ∧, ⋉, ▽ , ∨, √ , ⋀, ⋁, ∇⟩

is the \underline{(general) record structure}

11.8.2 Remark

Definition 11.8.1 combines the relations and junctions on records into an overall structure. For the type of the operations in ℜ𝔈ℭ holds

\begin{matrix}◯ 1 ≬ ◯ 2 \\ ◯ 1 ⌣ ◯ 2 \\ ◯ 1 ≤ ◯ 2 \end{matrix} \} : REC ↭ REC ⟨⟩ ∈ REC

\begin{matrix}◯ 1 \ ◯ 2 \\ ◯ 1 ∧ ◯ 2 \\ ◯ 1 ⋉ ◯ 2 \\ ◯ 1 ▽ ◯ 2 \\ ◯ 1 ∨ ◯ 2 \\ ◯ 1 & √ & ◯ 2 \end{matrix} \} : REC × REC ⟶ REC

⋀ ◯ 1 : (P (REC) \ {∅}) ⟶ REC

\begin{matrix}⋁ & ◯ 1 \\ ∇ & ◯ 1 \end{matrix} \} : P (REC) ⟶ REC

Recall, that ⋀ ∅ is not defined in general, so ∅ is excluded from the domain of ⋀ in ℜ𝔈𝔏.

11.9 The complete boolean algebra of projections

11.9.1 Definition

For every record η we define

𝔓𝔯𝔬𝔧 (η) := ⟨Proj (η) , ≤, ⟨⟩, η, ∧, ∨, ⋀, ⋁, -⟩

the \underline{record projection structure} of η

where ⋀ ∅ := η and -◯ 1 := η \ ◯ 1 is the complement.

11.9.2 Remark

(1) According to definition 5.8.1 for the usual form of an ordinary structure, we should have mentioned P (Proj (η)) as a second carrier class, because that is the domain of ⋀ and ⋁. But, as it is common for complete boolean algebras (see e.g. P (C) in 6.2.2), this class is not mentioned explicitely.

(2) Recall 11.7.6(2)(b) and 11.7.5(1), that ⋀ turns any record class Ξ into a single record ⋀ Ξ, but it is not defined for Ξ = ∅. But when ⋀ becomes a part of 𝔓𝔯𝔬𝔧 (η), this gap is filled with the definition ⋀ ∅ := η. A full definition of this modified ⋀ is given by

⋀ ◯ 1 := [ \begin{matrix}P (Proj (η)) ⟶ Proj (η) \\ Ξ ↦ ⋀(\{η\} ∪ Ξ) \end{matrix} ]

(For a proof that this definition does the job, see in the proof of 11.9.4 under (d).)

(3) In 11.9.4 we will see that 𝔓𝔯𝔬𝔧 (η) is a complete boolean algebra, for every record η = [η_{i}|i ∈ I]. This is basically true due to the isomorphy

𝔓𝔯𝔬𝔧 (η) ≅ 𝔓 (I)

We illustrate this similarity in the following example 11.9.3.

11.9.3 Example lattice of projections

Take for example the record

η = [ \begin{matrix}i ↦ & 1 \\ j ↦ & 2 \\ k ↦ & 3 \\ l ↦ & 4 \end{matrix} ]

Proj(η) contains 2^{4} = 16 subrecords and they are ordered according to the following Hasse diagram:

[figure: ⟨⟩; [ l ↦ 4 ]; [ k ↦ 3 ]; [ j ↦ 2 ]; [ i ↦ 1 ]; [ \begin{matrix}k & ↦ & 3 \\ l & ↦ & 4 \end{matrix} ]; [ \begin{matrix}j & ↦ & 2 \\ l & ↦ & 4 \end{matrix} ]; [ \begin{matrix}j & ↦ & 2 \\ k & ↦ & 3 \end{matrix} ]; [ \begin{matrix}i & ↦ & 1 \\ l & ↦ & 4 \end{matrix} ]; [ \begin{matrix}i & ↦ & 1 \\ k & ↦ & 3 \end{matrix} ]; [ \begin{matrix}i & ↦ & 1 \\ j & ↦ & 2 \end{matrix} ]; [ \begin{matrix}j & ↦ & 2 \\ k & ↦ & 3 \\ l & ↦ & 4 \end{matrix} ]; [ \begin{matrix}i & ↦ & 1 \\ k & ↦ & 3 \\ l & ↦ & 4 \end{matrix} ]; [ \begin{matrix}i & ↦ & 1 \\ j & ↦ & 2 \\ l & ↦ & 4 \end{matrix} ]; [ \begin{matrix}i & ↦ & 1 \\ j & ↦ & 2 \\ k & ↦ & 3 \end{matrix} ]; [ \begin{matrix}i & ↦ & 1 \\ j & ↦ & 2 \\ k & ↦ & 3 \\ l & ↦ & 4 \end{matrix} ]]

This structure is isomorph to the power lattice algebra (see 6.2.4) of a four–element class, i.e. P({1, 2, 3, 4}).

11.9.4 Lemma

𝔓𝔯𝔬𝔧 (η) is a complete boolean algebra, for every record η.

11.9.5 Proof of 11.9.4

Suppose, η is given by η = [η_{l}|l ∈ L]. In the sequel, let υ, ζ ∈ Proj(η) and Ξ ⊆ Proj(η).

(a) ⟨Proj(η), ≤⟩ is a poclass.

⟨REC, ≤⟩ is a poclass, according to 11.1.1, so Proj(η) ⊆ REC together with ≤ is a poclass, too.

(b) ⟨⟩ is the least element.

This is true according to 11.5.1(8)(a).

(c) η is the greatest element.

True, because ξ ≤ η, for all ξ ∈ Proj(η).

(d) ⋀({η} ∪ Ξ) is the greatest lower bound of Ξ. If Ξ = ∅, then ⋀({η}∪Ξ) = ⋀ {η} = η, and η is the greatest lower bound of η. On the other hand, if Ξ ≠ ∅, then the fact that {η} ∪ Ξ ⊆ Proj(η) allows us to apply 11.7.6(6)(b) and we obtain

⋀({η} ∪ Ξ) = pr (η, L ∩ ⋂_{ξ∈Ξ}dom(ξ))

= pr (η, ⋂_{ξ∈Ξ}dom(ξ))
= ⋀ Ξ

and ⋀ Ξ is the greatest lower bound of Ξ for Ξ ≠ ∅, according to 11.7.6(5)(a).

(e) υ ∧ ζ is the greatest lower bound of υ and ζ. That is due to 11.7.6(1)(b), saying that υ∧ζ = ⋀ {υ, ζ}, and ⋀ {υ, ζ} is the greatest lower bound of υ and ζ, as proved in (d).

(f) ⋁ Ξ is the least upper bound of Ξ.

Ξ is compatible according to 11.7.6(3), thus ⋁ Ξ is the least upper bound of Ξ according to 11.7.6(5)(b).

(g) υ ∨ ζ is the least upper bound of υ and ζ. υ ∨ ζ = ⋁ {υ, ζ} according to 11.7.6(1)(a) and due to (g), that is the least upper bound.

(h) The whole lattice is distributive.

See 11.6.1(5).

(i) -υ is the complement of υ.

The criteria 7.5.2 of a complement are satisfied: (-υ) ∧ υ

= (η \ υ) ∧ υ

= (η ∧ υ) \ υ due to 11.6.1(3)(g)

= υ \ υ because υ ≤ η, so η ∧ υ = υ

= ⟨⟩ due to 11.5.1(4)(a)

and (-υ) ∨ υ

= (η \ υ) ∨ υ

= (η ∨ υ) \ (υ \ υ) due to 11.6.1(3)(h)

= η \ ⟨⟩ because υ ≤ η, so η ∨ υ = η

= η due to 11.5.1(5)(a)

Alltogether, the poclass ⟨Proj(η), ≤⟩ is indeed a complete complemented distributive lattice, i.e. a complete boolean lattice.

Part V

Schemas and their various products

12 Various schema and power products

12.1 Various products

12.1.1 Repetition

Recall from 9.3.1, that a \underline{schema} is a record X = [X_{i}|i ∈ I], where each value X_{i} is a class, called the \underline{i–th domain}.

Furthermore, such an X was in 9.3.3 defined to be called ♣ \underline{proper}, if all X_{i} are non–empty ♣ \underline{finite}, if I is finite ♣ \underline{completely finite}, if I as well as each X_{i} is finite

12.1.2 Definition various products of schemas

For every schema X = [X_{i}|i ∈ I] we define

⊛X := {[x_{j}|j ∈ J] | J ⊆ I and x_{j} ∈ X_{j} for all j ∈ J}

the \underline{star product} or

the \underline{(general) record class} of X,

⊗X := {[x_{i}|i ∈ I] | x_{i} ∈ X_{i} for all i ∈ I}

the \underline{(cartesian) product} or the \underline{expanded record class} of X,

⊕X := {[ i ↦ x ] | i ∈ I and x ∈ X_{i}}

the \underline{coproduct} or \underline{disjunct union} or

the \underline{singular (or literal) record class} of X.

12.1.3 Example product

A schema is given by

X = [ \begin{matrix}a & ↦ & \{2\} \\ b & ↦ & \{2, 3, 4\} \\ c & ↦ & \{5\} \end{matrix} ]

We obtain

⊛X = \begin{cases}⟨⟩, [ a ↦ 2 ] , [ b ↦ 2 ] , \\ [ b ↦ 3 ] , [ b ↦ 4 ] , [ c ↦ 5 ] , \\ [ \begin{matrix}a & ↦ & 2 \\ b & ↦ & 2 \end{matrix} ] , [ \begin{matrix}a & ↦ & 2 \\ b & ↦ & 3 \end{matrix} ] , [ \begin{matrix}a & ↦ & 2 \\ b & ↦ & 4 \end{matrix} ] , \\ [ \begin{matrix}a & ↦ & 2 \\ c & ↦ & 5 \end{matrix} ] , [ \begin{matrix}b & ↦ & 2 \\ c & ↦ & 5 \end{matrix} ] , [ \begin{matrix}b & ↦ & 3 \\ c & ↦ & 5 \end{matrix} ] , [ \begin{matrix}b & ↦ & 4 \\ c & ↦ & 5 \end{matrix} ] , \\ [ \begin{matrix}a & ↦ & 2 \\ b & ↦ & 2 \\ c & ↦ & 5 \end{matrix} ] , [ \begin{matrix}a & ↦ & 2 \\ b & ↦ & 3 \\ c & ↦ & 5 \end{matrix} ] , [ \begin{matrix}a & ↦ & 2 \\ b & ↦ & 4 \\ c & ↦ & 5 \end{matrix} ] \end{cases}\}

⊗X = \{[ \begin{matrix}a ↦ 2 \\ b ↦ 2 \\ c ↦ 5 \end{matrix} ] , [ \begin{matrix}a ↦ 2 \\ b ↦ 3 \\ c ↦ 5 \end{matrix} ] , [ \begin{matrix}a ↦ 2 \\ b ↦ 4 \\ c ↦ 5 \end{matrix} ]\}

⊕X = \begin{cases}[ a ↦ 2 ] , [ b ↦ 2 ] , [ b ↦ 3 ] , \\ [ b ↦ 4 ] , [ c ↦ 5 ] \end{cases}\}

12.1.4 Lemma

For every schema X = [X_{i}|i ∈ I] holds:

(1) ⊗X ⊆ ⊛X and ⊕ X ⊆ ⊛X

(2) Equivalent are:

(a) ⊗X ∩ ⊕X ≠ ∅

(b) ⊗X = ⊕X = ⊛X \ {⟨⟩}

(c) card(I) = 1

(3) ⊛X = ⋃{⊗Y | Y ∈ Proj(X)}

12.1.5 Proof of 12.1.4

From definition 12.1.2 we derive

⊗X = {x ∈ ⊛X | dom(x) = I}
⊕X = {x ∈ ⊛X | card(dom(x)) = 1}

so that (1) and (2) follow. (3) is true, because

⊛X = {[x_{j}|j ∈ J] | J ⊆ I and x_{j} ∈ X_{j} for all j ∈ J}
= ⋃_{J⊆I}{[x_{j}|j ∈ J] | x_{j} ∈ X_{j} for all j ∈ J}
= ⋃_{J⊆I} ⊗ pr (X, J) = ⋃_{Y ∈Proj(X)} ⊗ Y

12.1.6 Remark Record tables

In case a proper schema X = [X_{i}|i ∈ I] is indeed completely finite, we can represent each of its products by a \underline{record table}. The i_{1}, …, i_{n} ∈ I form the columns, and each record is a row. If a record is not defined for a given i ∈ I, the according cell is left empty. The following example demonstrates the general idea.

12.1.7 Example record tables

Consider the last example schema X again. X is proper and completely finite, and its various products can be represented by

⊛X = a  b  c 2 2 3 3 5 2 2 2 3 2 4 2  5 2 5 3 5 4 5 2 2 5 2 3 5 2 4 5  \begin{matrix}⊗X = a  b  c 2 2 5 2 3 5 2 4 5 \\ ⊕X = a  b  c 2 2 3 3 5 \end{matrix}

12.1.8 Repetition

Recall from 5.6.15, that for every class κ = {κ_{i} | i ∈ I} of cardinal numbers, ∏ κ or ∏_{i∈I}κ_{i} denotes the arithmetic product

(with result 1 for κ = ∅), and ∑ κ or ∑_{i∈I}κ_{i} is the arithmetic

sum (with result 0 for I = ∅).

12.1.9 Lemma cardinalities

For every schema X = [X_{i}|i ∈ I] holds

card (⊗X) = ∏_{i∈I}card(X_{i})
card (⊕X) = ∑_{i∈I}card(X_{i})

12.1.10 Proof of 12.1.9

Suppose, X is completely finite, i.e. I = {i_{1}, …, i_{n}} and card(X_{k}) = m_{i} ∈ ℕ for each k ∈ I. Then

card(⊗X) = card \{ [ \begin{matrix}i_{1} & ↦ & x_{1} \\ ⋮ & & ⋮ \\ i_{n} & ↦ & x_{n} \end{matrix} ] x_{1} ∈ X_{1}, ; ⋮ ; x_{n} ∈ X_{n} \}

= m_{1} · m_{2} · . . . · m_{n}

and

card(⊕X) = card{[i ↦ x] | i ∈ I, x ∈ X_{i}}
= card (\{ \frac{[i_{1} ↦ x]}{x ∈ X_{1}} \} ⊎ … + \{ \frac{[i_{n} ↦ x]}{x ∈ X_{n}} \})

= m_{1} + m_{2} + … + m_{n}

where the last step is true, because the n classes {[i_{k} ↦ x] | x ∈ X_{k}} are pairwise disjunct. (Therefore, ⊕X is also called the disjunct union of the classes X_{k}.) So far for the completely finite X.

If X is not completely finite, we are dealing with arithmetic sums and products which have infinitely many arguments or the arguments are infinite themselves. In these cases our lemma is correct by definition, because Cantor introduced e.g. the product of transfinite cardinal numbers as the cardinality of the cartesian product of transfinite classes. But we did not define transfinite arithmetic and our proof remains incomplete here.

12.1.11 Remark cardinalities and special cases We emphasize, that 12.1.9 also holds for the following special cases. Suppose, X = [X_{i}|i ∈ I] is a given schema.

(1) If I is empty, then X = ⟨⟩ is the empty tuple and so

(a) ⊗X = {⟨⟩}. The cardinality card(⊗X) is 1, which is also the arithmetic product of zero arguments (i.e. 1 is the neutral element of ∏).

(b) ⊕X = ∅, obviously, and

(c) ⊛X = {⟨⟩}.

(2) If I ≠ ∅ and X_{i} = ∅, for at least one i ∈ I, then ⊗X = ∅. In fact, this also holds the other way round.

It is worth to keep these things in mind:

12.1.12 Lemma

For every schema X = [X_{i}|i ∈ I] holds:

(1) ⊗X = ∅ iff X is not proper (i.e. X_{i} = ∅ for one i ∈ I)

(2) ⊗X = {⟨⟩} iff X is empty (i.e. I = ∅)

12.1.13 Proof of 12.1.12

See 12.1.11.

12.1.14 Lemma cardinality of the star product

Given a schema X = [X_{i}|i ∈ I]. Then

card(⊛X) = ∑_{J⊆I} ∏_{j∈J}card(X_{j})

12.1.15 Proof of 12.1.14

card(⊛X)

= card (⋃{⊗Y | Y ∈ Proj(X)})

due to 12.1.4(3)

= ∑_{Y ∈Proj(X)}card(⊗Y)

as the cartesian products are pairwise disjunct

= ∑_{J⊆I}card (⊗[X_{j}|j ∈ J])

= ∑_{J⊆I} ∏_{j∈J}card(Xj) due to 12.1.9

12.1.16 Remark

In 11.2.2 we defined

Rec (I, C) = \{ [ξ_{j}|j ∈ J] \begin{matrix}J ⊆ I, \\ ξ_{j} ∈ C for all j ∈ J \end{matrix} \}

We can now write this as

⊛[C|I] = Rec (I, C)

12.2 Various ordinal products

12.2.1 Remark

Recall, that a tuple is just a certain kind of record with a finite ordinal as index class. In other words,

⟨x_{1}, …, x_{n}⟩ = [x_{i}|i ∈ {1, …, n}]

So, a class tuple ⟨C_{1}, …, C_{n}⟩ is just a special kind of schema and the various products ⊛⟨C_{1}, …, C_{n}⟩, ⊗⟨C_{1}, …, C_{n}⟩, and ⊕⟨C_{1}, …, C_{n}⟩ are well–defined. And if we write ⊗⟨C_{1}, …, C_{n}⟩ as C_{1} × … × C_{n}, we obtain the usual cartesian product of classes. Accordingly, we also introduce a “+” and “⋆” notation in analogy to “×”.

12.2.2 Definition various ordinal products

Let n ∈ ℕ and C_{1}, …, C_{n} be classes. We define

C_{1} ⋆ ⋯ ⋆ C_{n} := ⋆_{i=1}^{n}C_{i} := ⊛⟨C_{1}, …, C_{n}⟩

the (\underline{ordinal}) \underline{star product} of C_{1}, …, C_{n}

C_{1} × ⋯ × C_{n} := ×_{i=1}^{n}C_{i} := ⊗⟨C_{1}, …, C_{n}⟩

the (\underline{ordinal} or \underline{cartesian}) \underline{product} of C_{1}, …, C_{n}

C_{1} + ⋯ + C_{n} := +_{i=1}^{n}C_{i} := ⊕⟨C_{1}, …, C_{n}⟩

the (\underline{ordinal}) \underline{coproduct} of C_{1}, …, C_{n} or \underline{disjunct union} of C_{1}, …, C_{n}

12.2.3 Remark various ordinal products

So, for n ∈ ℕ and classes C_{1}, …, C_{n} we obtain

C_{1} ⋆ ⋯ ⋆ C_{n} = \{ \begin{matrix}[x_{j}|j ∈ J] \\ J ⊆ \{1, …, n\} and \\ x_{j} ∈ C_{j} for each j ∈ J \end{matrix} \}

C_{1} × ⋯ × C_{n} = \{ \frac{⟨x_{1}, …, x_{n}⟩}{x_{1} ∈ C_{1}, …, x_{n} ∈ C_{n}} \}

C_{1} + ⋯ + C_{n} = \{ \frac{[ i ↦ x ]}{i ∈ \{1, …, n\} , x ∈ C_{i}} \}

12.2.4 Example ordinal products

Recall that

⟨\{a, b\} , \{c, d\}⟩ = [ \begin{matrix}1 ↦ \{a, b\} \\ 2 ↦ \{c, d\} \end{matrix} ]

so that

\{a, b\} ⋆ \{c, d\} = \begin{cases}⟨⟩, \\ [ 1 ↦ a ] , [ 1 ↦ b ] , \\ [ 2 ↦ c ] , [ 2 ↦ d ] , \\ [ \begin{matrix}1 ↦ a \\ 2 ↦ c \end{matrix} ] , [ \begin{matrix}1 ↦ b \\ 2 ↦ c \end{matrix} ] , \\ [ \begin{matrix}1 ↦ a \\ 2 ↦ d \end{matrix} ] , [ \begin{matrix}1 ↦ b \\ 2 ↦ d \end{matrix} ] \end{cases}\}

\{a, b\} × \{c, d\} = \begin{cases}[ \begin{matrix}1 ↦ a \\ 2 ↦ c \end{matrix} ] , [ \begin{matrix}1 ↦ b \\ 2 ↦ c \end{matrix} ] , \\ [ \begin{matrix}1 ↦ a \\ 2 ↦ d \end{matrix} ] , [ \begin{matrix}1 ↦ b \\ 2 ↦ d \end{matrix} ] \end{cases}\} = \begin{cases}⟨a, c⟩ \\ ⟨a, d⟩ \\ ⟨b, c⟩ \\ ⟨b, d⟩ \end{cases}\}

\{a, b\} + \{c, d\} = \begin{cases}[ 1 ↦ a ] , [ 1 ↦ b ] , \\ [ 2 ↦ c ] , [ 2 ↦ d ] \end{cases}\}

12.2.5 Lemma

Given n ∈ ℕ classes C_{1}, …, C_{n}.

(1) If n = 0 then (a) C_{1} ⋆ … ⋆ C_{n} = {⟨⟩}

(b) C_{1} × … × C_{n} = ∅

(c) C_{1} + … + C_{n} = ∅

(2) If n = 1 then (a) C_{1} ⋆ … ⋆ C_{n} = {⟨⟩} ∪ {⟨c⟩ | c ∈ C_{1}}

(b) C_{1} × … × C_{n} = {⟨c⟩ | c ∈ C_{1}}

(c) C_{1} + … + C_{n} = {⟨c⟩ | c ∈ C_{1}}

(3) If n > 1 then (a) C_{1} × … × C_{n} ⊂ C_{1} ⋆ … ⋆ C_{n}

(b) C_{1} + … + C_{n} ⊂ C_{1} ⋆ … ⋆ C_{n}

(c) (C_{1} + … + C_{n}) ∩ (C_{1} × … × C_{n}) = ∅

12.2.6 Proof of 12.2.5

These properties immediately follow from definition 12.2.2.

12.3 Concatenation of tuple classes

12.3.1 Remark

Note, that none of our product definitions is associative. For our definition of the cartesian product holds (A × B) × C ≠ A × B × C ≠ A × (B × C). (A × B) × C is a class of pairs, A × B × C is a class of triples. Also, the unary cartesian product ⊗⟨C⟩ is the class {⟨c⟩ | c ∈ C}. And that is different to C itself. But there is a tradition to define these things differently. Usually — this is a common habit in formal language theory — the difference between say the element c and the unary tuple ⟨c⟩ is neglected, a character 'c' and a string "c" are considered the same thing. But from a strictly formal point of view or for a computer programmer, this difference is real. And mathematicians that define cartesian products as associative, are not really able to define e.g. the set {⟨⟨a, b⟩, c⟩ | a, b, c ∈ ℕ} with their formalism.

We next define the concatenation † which has the particular property that (A × B) † (C × D) = A × B × C × D.

12.3.2 Definition

If L_{1}, …, L_{n} are classes of tuples, then

L_{1} † … † L_{n} := †^{n}_{i=1}L_{i} :=

{x_{1} † … † x_{n} | x_{1} ∈ L_{1}, …, x_{n} ∈ L_{n}}

the \underline{concatenation} of L_{1}, …, L_{n}.

12.3.3 Lemma

(1) For tuple classes L_{1}, …, L_{n} we have (a) L_{1} † … † L_{n} = {⟨⟩} for n = 0

(b) L_{1} † … † L_{n} = L_{1} for n = 1

(2) ⟨P(C^{∗}), {⟨⟩} , †⟩ is a monoid, for every class C, in the sense that

(a) ◯ 1 † ◯ 2 : P(C^{∗}) × P(C^{∗}) ⟶ P(C^{∗}) is associative

(b) {⟨⟩} is the neutral element for ◯ 1 † ◯ 2

(3) For n ∈ ℕ classes C_{1}, …, C_{n} and 0 ≤ i < n holds

(a) C_{1} ×…×C_{n} = (C_{1} × … × C_{i})†(C_{i+1} × … × C_{n})

(b) C_{1}×…×C_{n} ≠ (C_{1} × … × C_{i})×(C_{i+1} × … × C_{n})

12.3.4 Proof of 12.3.3

In 10.5.1 we defined

ξ_{1} † … † ξ_{n} := \begin{cases}⟨⟩ & if n = 0 \\ ξ_{1} † (ξ_{2} † … † ξ_{n}) & else \end{cases}

We apply this definition and obtain:

(1) For tuple classes L_{1}, …, L_{n}, (a) n = 0 implies L_{1} † … † L_{n} = {⟨⟩ | }

(b) n = 1 implies L_{1} † … † L_{n} = {ξ_{1} † ⟨⟩ | ξ_{1} ∈ L_{1}} = L_{1}

(2) If L, L′, L′′ ∈ P(C^{∗}) then (a) ◯ 1 † ◯ 2 is associative, because:

L † (L′ † L′′) = {ξ † (ξ′ † ξ′′) | ξ ∈ L, ξ′ ∈ L′, ξ′′ ∈ L′′}
= {(ξ † ξ′) † ξ′′) | ξ ∈ L, ξ′ ∈ L′, ξ′′ ∈ L′′}
= (L † L′) † L′′

(b) {⟨⟩} is the neutral element of ◯ 1 † ◯ 2 , because L†{⟨⟩} = {ξ † ⟨⟩ | ξ ∈ L} = L and {⟨⟩} † L = L, too.

(3) For every i ∈ {0, 1, …, n} we have

(C_{1} × … × C_{i}) † (C_{i+1} × … × C_{n})

= {⟨x_{1}, …, x_{i}⟩ † ⟨x_{i+1}, …, x_{n}⟩ | x_{1} ∈ C_{1}, …, x_{n} ∈ C_{n}}
= {⟨x_{1}, …, x_{i}, x_{i+1}, …, x_{n}⟩ | x_{1} ∈ C_{1}, …, x_{n} ∈ C_{n}}
= C_{1} × … × C_{n}

and

(C_{1} × … × C_{i}) × (C_{i+1} × … × C_{n})
= {⟨⟨x_{1}, …, x_{i}⟩, ⟨x_{i+1}, …, x_{n}⟩⟩ | x_{1} ∈ C_{1}, …, x_{n} ∈ C_{n}}
≠ {⟨x_{1}, …, x_{i}, x_{i+1}, …, x_{n}⟩ | x_{1} ∈ C_{1}, …, x_{n} ∈ C_{n}}
= C_{1} × … × C_{n}

12.4 Distributivity

12.4.1 Remark distributivity

The distributivity of the various products with class operations is e.g. saying that

⊗ [ \begin{matrix}a & ↦ & \{2\} \\ b & ↦ & \{2, 3\} ∩ \{3, 4\} \\ c & ↦ & \{5\} \end{matrix} ] = ⊗ [ \begin{matrix}a & ↦ & \{2\} \\ b & ↦ & \{2, 3\} \\ c & ↦ & \{5\} \end{matrix} ] ∩ ⊗ [ \begin{matrix}a & ↦ & \{2\} \\ b & ↦ & \{3, 4\} \\ c & ↦ & \{5\} \end{matrix} ]

or more general and intuitive

⊗ [ \begin{matrix}⋮ & & ⋮ \\ k & ↦ & C ∩ D \\ ⋮ & & ⋮ \end{matrix} ] = ⊗ [ \begin{matrix}⋮ & & ⋮ \\ k & ↦ & C \\ ⋮ & & ⋮ \end{matrix} ] ∩ ⊗ [ \begin{matrix}⋮ & & ⋮ \\ k & ↦ & D \\ ⋮ & & ⋮ \end{matrix} ]

Similar statements hold for ⊛ and ⊕ instead of ⊗, and ∪, ⋂, ⋂, and partially for \ instead of ∩.

We obtain an elegant formal expression of these distributivity laws when we apply the updater √ definied in . Recall, that for a given schema X = [X_{i}|i ∈ I], an identifier k and a class C holds

X√ [ k ↦ C ] = [X̂_{i}|i ∈ I ∪ \{k\}] where X̂_{i} := \begin{cases}X_{i} & if i ≠ k \\ C & if i = k \end{cases}

(Note, that it doesn’t matter if k is a member of I or not.) A proper form for the previous distributivity law is then

⊗ (X√ [ k ↦ C ∩ D]) = ⊗ (X√ [ k ↦ C ]) ∩ ⊗ (X√ [ k ↦ D])

12.4.2 Example distributivity over intersections

⊛ [ \begin{matrix}a ↦ & \{1\} \\ b ↦ & \{2, 3\} ∩ \{3, 4\} \end{matrix} ]

= ⊛ [ \begin{matrix}a ↦ & \{1\} \\ b ↦ & \{3\} \end{matrix} ]

= \{⟨⟩, [a ↦ 1] , [b ↦ 3] , [ \begin{matrix}a ↦ & 1 \\ b ↦ & 3 \end{matrix} ]\}

= \begin{cases}⟨⟩, [a ↦ 1] , \\ [b ↦ 2] , [b ↦ 3] , \\ [ \begin{matrix}a ↦ & 1 \\ b ↦ & 2 \end{matrix} ] , [ \begin{matrix}a ↦ & 1 \\ b ↦ & 3 \end{matrix} ] \end{cases}\} ∩ \begin{cases}⟨⟩, [a ↦ 1] , \\ [b ↦ 3] , [b ↦ 4] , \\ [ \begin{matrix}a ↦ & 1 \\ b ↦ & 3 \end{matrix} ] , [ \begin{matrix}a ↦ & 1 \\ b ↦ & 4 \end{matrix} ] \end{cases}\}

= ⊛ [ \begin{matrix}a ↦ & \{1\} \\ b ↦ & \{2, 3\} \end{matrix} ] ∩ ⊛ [ \begin{matrix}a ↦ & \{1\} \\ b ↦ & \{3, 4\} \end{matrix} ]

and

⊗ [ \begin{matrix}a ↦ & \{1\} \\ b ↦ & \{2, 3\} ∩ \{3, 4\} \end{matrix} ]

= ⊗ [ \begin{matrix}a ↦ & \{1\} \\ b ↦ & \{3\} \end{matrix} ]
= \{[ \begin{matrix}a ↦ & 1 \\ b ↦ & 3 \end{matrix} ]\}
= \{[ \begin{matrix}a ↦ & 1 \\ b ↦ & 2 \end{matrix} ] , [ \begin{matrix}a ↦ & 1 \\ b ↦ & 3 \end{matrix} ]\} ∩ \{[ \begin{matrix}a ↦ & 1 \\ b ↦ & 3 \end{matrix} ] , [ \begin{matrix}a ↦ & 1 \\ b ↦ & 4 \end{matrix} ]\}
= ⊗ [ \begin{matrix}a ↦ & \{1\} \\ b ↦ & \{2, 3\} \end{matrix} ] ∩ ⊗ [ \begin{matrix}a ↦ & \{1\} \\ b ↦ & \{3, 4\} \end{matrix} ]

and

⊕ [ \begin{matrix}a ↦ & \{1\} \\ b ↦ & \{2, 3\} ∩ \{3, 4\} \end{matrix} ]

= ⊕ [ \begin{matrix}a ↦ & \{1\} \\ b ↦ & \{3\} \end{matrix} ]
= {[a ↦ 1] , [b ↦ 3]}
= {[a ↦ 1] , [b ↦ 2] , [b ↦ 3]} ∩ {[a ↦ 1] , [b ↦ 3] , [b ↦ 4]}
= ⊕ [ \begin{matrix}a ↦ & \{1\} \\ b ↦ & \{2, 3\} \end{matrix} ] ∩ ⊕ [ \begin{matrix}a ↦ & \{1\} \\ b ↦ & \{3, 4\} \end{matrix} ]

12.4.3 Lemma distributivity Let X = [X_{i}|i ∈ I] be a schema and k an identifier.

(1) For every schema [C_{j}|j ∈ J] with J ≠ ∅ holds

(a) ⊗ (X√ [k ↦ ⋂_{j∈J}C_{j}]) = ⋂_{j∈J} ⊗ (X√ [k ↦ C_{j}])

(b) ⊕ (X√ [k ↦ ⋂_{j∈J}C_{j}]) = ⋂_{j∈J} ⊕ (X√ [k ↦ C_{j}])

(c) ⊛ (X√ [k ↦ ⋂_{j∈J}C_{j}]) = ⋂_{j∈J} ⊛ (X√ [k ↦ C_{j}])

(2) For every schema [C_{j}|j ∈ J] holds

(a) ⊗ (X√ [k ↦ ⋃_{j∈J}C_{j}]) = ⋃_{j∈J} ⊗ (X√ [k ↦ C_{j}])

and if J ≠ ∅ then

(b) ⊕ (X√ [k ↦ ⋃_{j∈J}C_{j}]) = ⋃_{j∈J} ⊕ (X√ [k ↦ C_{j}])

(c) ⊛ (X√ [k ↦ ⋃_{j∈J}C_{j}]) = ⋃_{j∈J} ⊛ (X√ [k ↦ C_{j}])

(3) For every two classes C_{1} and C_{2} holds

\begin{aligned}& ⊗ (X√ [k ↦ C_{1} \ C_{2}]) \\ = & ⊗ (X√ [k ↦ C_{1}]) \ ⊗ (X√ [k ↦ C_{2}]) \end{aligned}

12.4.4 Proof of 12.4.3 Given the schema X = [X_{i}|i ∈ I] and the identifier k (which may or may not be a member of I). We put

Î:= I ∪ {k} Ī:= I \ {k} X̄ := pr (X, Ī) so that, for every class C,

X√ [ k ↦ C ] = X̄ ˙∨ [ k ↦ C ]

(1) Now we also have a given schema [C_{j}|j ∈ J] with J ≠ ∅.

We put

C := ⋂_{j∈J}C_{j}
X̂ := X√ [ k ↦ C ]
= X̄ ˙∨ [ k ↦ C ]
= [ i ↦ \begin{cases}X_{i} & if i ≠ k \\ C & if i = k \end{cases} i ∈ Î ]

and for each j ∈ J we put

σ_{j} := X√ [ k ↦ C_{j} ]
= X̄ ˙∨ [ k ↦ C_{j} ]
= [ i ↦ \begin{cases}X_{i} & if i ≠ j \\ C_{j} & if i = j \end{cases} i ∈ Î ]

With these notations our original statements now become

(a) ⊗X̂ = ⋂_{j∈J} ⊗ σ_{j}

(b) ⊕X̂ = ⋂_{j∈J} ⊕ σ_{j}

(c) ⊛X̂ = ⋂_{j∈J} ⊛ σ_{j}

and their proof is as follows ⊗X̂

= \{ [x_{i}|i ∈ Î] \begin{matrix}x_{i} ∈ X_{i} for i ∈ Ī, \\ x_{k} ∈ ⋂\{C_{j} | j ∈ J\} \end{matrix} \}

= ⋂_{j∈J} \{ [x_{i}|i ∈ Î] \begin{matrix}x_{i} ∈ X_{i} for i ∈ Ī, \\ x_{k} ∈ C_{j} \end{matrix} \}

= ⋂_{j∈J} ⊗ σ_{j}

⊕X̂ = {[ i ↦ x] | i ∈ Î, x ∈ X̂_{i}} = ⊕X̄ ∪ ⊕[ k ↦ C ]

= ⊕X̄ ∪ ⋂_{j∈J} ⊕ [ k ↦ C_{j} ]

= ⋂_{j∈J} (⊕X̄ ∪ ⊕[ k ↦ C_{j} ])

= ⋂_{j∈J} ⊕ (X̄ ˙∨ [ k ↦ C_{j} ])

= ⋂_{j∈J} ⊕ σ_{j}

For a proof of (c)let us first note, that for each L ⊆ Î, exactly one of the following two situations is the case:

(i) k ∉ L and that implies

pr (X̂, L) = pr (X̄, L) = pr (σ_{j}, L) for each j ∈ J so that

⊗pr (X̂, L) = ⊗pr (σ_{j}, L) = ⋂_{j∈J} ⊗ pr (σ_{j}, L)

because J ≠ ∅ and ⊗pr (σ_{j}, L) is the same for each j ∈ J. (ii) k ∈ L and that implies

\begin{aligned}pr (X̂, L) & = & pr (X̂, L \ \{k\}) ˙∨ [ k ↦ C ] \\ & = & pr (X̂, L \ \{k\}) ˙∨ [k ↦ ⋂_{j∈J}C_{j}] \end{aligned}

so that

⊗pr (X̂, L) = ⊗ (pr (X̂, L \ {k}) ˙∨ [k ↦ ⋂_{j∈J}C_{j}])
= \{ [x_{l}|l ∈ L] \begin{matrix}x_{l} ∈ X_{l} for l ≠ k \\ x_{k} ∈ ⋂_{j∈J}C_{j} \end{matrix} \}
= ⋂_{j∈J} \{ [x_{l}|l ∈ L] \begin{matrix}x_{l} ∈ X_{l} for l ≠ k \\ x_{k} ∈ C_{j} \end{matrix} \}
= ⋂_{j∈J} ⊗ pr (σ_{j}, L)

So anyway, for every L ⊆ Î we have

⊗pr (X̂, L) = ⋂_{j∈J} ⊗ pr (σ_{j}, L)

and thus we obtain the following derivation for (c) ⊛X̂

= ⋃_{L⊆Î} ⊗ pr (X̂, L) due to 12.1.4

= ⋃_{L⊆Î} ⋂_{j∈J} ⊗ pr (σ_{j}, L)

= ⋃_{L⊆Î} ⋂_{j∈J} \{ [x_{l}|l ∈ L] \begin{matrix}x_{l} ∈ X_{l} for l ∈ L \ \{k\} \\ x_{l} ∈ C_{j} for l ∈ \{k\} \end{matrix} \}

= \{ [x_{l}|l ∈ L] \begin{matrix}L ⊆ Î \\ x_{l} ∈ X_{l} for l ∈ L \ \{k\} \\ x_{l} ∈ ⋂_{j∈J}C_{j} for l ∈ \{k\} \end{matrix} \}

= ⋂_{j∈J} ⋃_{L⊆Î}\{ [x_{l}|l ∈ L] \begin{matrix}x_{l} ∈ X_{l} for l ∈ L \ \{k\} \\ x_{l} ∈ C_{j} for l ∈ \{k\} \end{matrix} \}

= ⋂_{j∈J} ⋃_{L⊆Î} ⊗ pr (σ_{j}, L)

= ⋂_{j∈J} ⊛ σj due to 12.1.4, again

(2) Again, we have a given schema [C_{j}|j ∈ J] and this time

we put

C := ⋃_{j∈J}C_{j}
X̂ := X√ [ k ↦ C ]
= X̄ ˙∨ [ k ↦ C ]
= [ i ↦ \begin{cases}X_{i} & if i ≠ k \\ C & if i = k \end{cases} i ∈ Î ]

and for each j ∈ J we put

σ_{j} := X√ [ k ↦ C_{j} ]
= X̄ ˙∨ [ k ↦ C_{j} ]
= [ i ↦ \begin{cases}X_{i} & if i ≠ j \\ C_{j} & if i = j \end{cases} i ∈ Î ]

With these notations our statements are

(a) ⊗X̂ = ⋃_{j∈J} ⊗ σ_{j}

That is proven similar to (1)(a):

⊗X̂

= \{ [x_{i}|i ∈ Î] \begin{matrix}x_{i} ∈ X_{i} for i ∈ Ī, \\ x_{k} ∈ ⋃\{C_{j} | j ∈ J\} \end{matrix} \}

= ⋃_{j∈J} \{ [x_{i}|i ∈ Î] \begin{matrix}x_{i} ∈ X_{i} for i ∈ Ī, \\ x_{k} ∈ C_{j} \end{matrix} \}

= ⋃_{j∈J} ⊗ σ_{j}

(b) If J ≠ ∅ then ⊕X̂ = ⋃_{j∈J} ⊕ σ_{j}.

That is true because

⊗X̂

= {[ i ↦ x] | i ∈ Î, x ∈ X̂_{i}}

= \{ \frac{[ i ↦ x]}{i ∈ Ī, x ∈ X̄_{i}} \} ∪ \{ \frac{[ k ↦ x]}{x ∈ C} \}

= \{ \frac{[ i ↦ x]}{i ∈ Ī, x ∈ X̄_{i}} \} ∪ ⋃_{j∈J} \{ \frac{[ k ↦ x]}{x ∈ C_{j}} \}

= ⋃_{j∈J} (\{ \frac{[ i ↦ x]}{i ∈ Ī, x ∈ X̄_{i}} \} ∪ \{ \frac{[ k ↦ x]}{x ∈ C_{j}} \})

= ⋃_{j∈J} ⊗ (X̄ ˙∨ [ k ↦ C_{j} ])

= ⋃_{j∈J} ⊗ σ_{j}

(c) If J ≠ ∅ then ⊛X̂ = ⋃_{j∈J} ⊛ σ_{j}.

Similar to the reasoning for the proof of (1)(c), let us note that for each L ⊆ Î we have

(i) either k ∉ L, so that pr (X̂, L) = pr (X̄, L) = pr (σ_{j}, L) for each j ∈ J and thus

⊗pr (X̂, L) = ⊗pr (σ_{j}, L) for each j ∈ J
= ⋃_{j∈J} ⊗ pr (σ_{j}, L) because J ≠ ∅

(ii) or k ∈ L, so that

\begin{aligned}pr (X̂, L) & = & pr (X̂, L \ \{k\}) ˙∨ [ k ↦ C ] \\ & = & pr (X̂, L \ \{k\}) ˙∨ [k ↦ ⋃_{j∈J}C_{j}] \end{aligned}

so that

⊗pr (X̂, L) = ⊗ (pr (X̂, L \ {k}) ˙∨ [k ↦ ⋃_{j∈J}C_{j}])
= \{ [x_{l}|l ∈ L] \begin{matrix}x_{l} ∈ X_{l} for l ≠ k \\ x_{k} ∈ ⋃_{j∈J}C_{j} \end{matrix} \}
= ⋃_{j∈J} \{ [x_{l}|l ∈ L] \begin{matrix}x_{l} ∈ X_{l} for l ≠ k \\ x_{k} ∈ C_{j} \end{matrix} \}
= ⋃_{j∈J} ⊗ pr (σ_{j}, L)

So anyway, for every L ⊆ Î holds

⊗pr (X̂, L) = ⋃_{j∈J} ⊗ pr (σ_{j}, L)

Using that in the derivation for (c) gives us

⊛X̂

= ⋃_{L⊆Î} ⊗ pr (X̂, L) due to 12.1.4

= ⋃_{L⊆Î} ⋃_{j∈J} ⊗ pr (σ_{j}, L)

= ⋃_{j∈J} ⋃_{L⊆Î} ⊗ pr (σ_{j}, L)

= ⋃_{j∈J} ⊛ σ_{j} due to 12.1.4, again

(3) Finally, we take any two classes C_{1} and C_{2} and obtain ⊗ (X√ [ k ↦ C_{1} \ C_{2} ])

= \{ [ x_{i} ↦ i ∈ Î] \begin{matrix}i ∈ X_{i} for i ∈ Ī, \\ x_{k} ∈ C_{1} \ C_{2} \end{matrix} \}

= \{ \begin{matrix}[ x_{i} ↦ i ∈ Î] \\ i ∈ X_{i} for i ∈ Ī, \\ x_{k} ∈ C_{1} \end{matrix} \} \ \{ \begin{matrix}[ x_{i} ↦ i ∈ Î] \\ i ∈ X_{i} for i ∈ Ī, \\ x_{k} ∈ C_{1} \end{matrix} \}

= ⊗ (X√ [ k ↦ C_{1} ]) \ ⊗ (X√ [ k ↦ C_{2} ])

12.4.5 Remark and example distributivity over differences Note, that there is neither a statement

⊛X = ⊛X√ [ k ↦ C_{1} ] \ ⊛X√ [ k ↦ C_{2} ]

nor

⊕X = ⊕X√ [ k ↦ C_{1} ] \ ⊕X√ [ k ↦ C_{2} ]

in 12.4.3(3), because that would be false in general. Let us illustrate that with an example, similar to the one in 12.4.2.

The cartesian product is distributive:

⊗ [ \begin{matrix}a ↦ & \{1\} \\ b ↦ & \{2, 3\} \ \{3, 4\} \end{matrix} ]

= ⊗ [ \begin{matrix}a ↦ & \{1\} \\ b ↦ & \{2\} \end{matrix} ]

= \{[ \begin{matrix}a ↦ & 1 \\ b ↦ & 2 \end{matrix} ]\}

= \{[ \begin{matrix}a ↦ & 1 \\ b ↦ & 2 \end{matrix} ] , [ \begin{matrix}a ↦ & 1 \\ b ↦ & 3 \end{matrix} ]\} \ \{[ \begin{matrix}a ↦ & 1 \\ b ↦ & 3 \end{matrix} ] , [ \begin{matrix}a ↦ & 1 \\ b ↦ & 4 \end{matrix} ]\}

= ⊗ [ \begin{matrix}a ↦ & \{1\} \\ b ↦ & \{2, 3\} \end{matrix} ] \ ⊗ [ \begin{matrix}a ↦ & \{1\} \\ b ↦ & \{3, 4\} \end{matrix} ]

But that neither holds for the star product

⊛ [ \begin{matrix}a ↦ & \{1\} \\ b ↦ & \{2, 3\} \ \{3, 4\} \end{matrix} ]

= ⊛ [ \begin{matrix}a ↦ & \{1\} \\ b ↦ & \{2\} \end{matrix} ]

= \{⟨⟩, [a ↦ 1] , [b ↦ 2] , [ \begin{matrix}a ↦ & 1 \\ b ↦ & 2 \end{matrix} ]\}

≠ \{[b ↦ 2] , [ \begin{matrix}a ↦ & 1 \\ b ↦ & 2 \end{matrix} ]\}

= \begin{cases}⟨⟩, [a ↦ 1] , \\ [b ↦ 2] , [b ↦ 3] , \\ [ \begin{matrix}a ↦ & 1 \\ b ↦ & 2 \end{matrix} ] , [ \begin{matrix}a ↦ & 1 \\ b ↦ & 3 \end{matrix} ] \end{cases}\} \ \begin{cases}⟨⟩, [a ↦ 1] , \\ [b ↦ 3] , [b ↦ 4] , \\ [ \begin{matrix}a ↦ & 1 \\ b ↦ & 3 \end{matrix} ] , [ \begin{matrix}a ↦ & 1 \\ b ↦ & 4 \end{matrix} ] \end{cases}\}

= ⊛ [ \begin{matrix}a ↦ & \{1\} \\ b ↦ & \{2, 3\} \end{matrix} ] \ ⊛ [ \begin{matrix}a ↦ & \{1\} \\ b ↦ & \{3, 4\} \end{matrix} ]

nor for the coproduct

⊕ [ \begin{matrix}a ↦ & \{1\} \\ b ↦ & \{2, 3\} \ \{3, 4\} \end{matrix} ]

= ⊕ [ \begin{matrix}a ↦ & \{1\} \\ b ↦ & \{2\} \end{matrix} ]
= {[a ↦ 1] , [b ↦ 2]}
≠ {[b ↦ 2]}
= {[a ↦ 1] , [b ↦ 2] , [b ↦ 3]} \ {[a ↦ 1] , [b ↦ 3] , [b ↦ 4]}
= ⊕ [ \begin{matrix}a ↦ & \{1\} \\ b ↦ & \{2, 3\} \end{matrix} ] \ ⊕ [ \begin{matrix}a ↦ & \{1\} \\ b ↦ & \{3, 4\} \end{matrix} ]

12.5 Power products

12.5.1 Definition power products

For all classes C and I, where at least one of the two is non–empty, we define

C^{I} := ⊗[C|I] = \{ \frac{[x_{i}|i ∈ I]}{x_{i} ∈ C for all i ∈ I} \}

the I–th \underline{power (product) of} C.

For every every non–empty class C and all n ∈ ℕ we define

C^{n} := ⊗⟨C | n⟩ = \{ \frac{⟨x_{1}, …, x_{n}⟩}{x_{i} ∈ C for i = 1, …, n} \}

the n–th \underline{power (product) of} C or

the \underline{n–tuple class} on C.

And for every non–empty class C, we define

C^{∗} := ⋃_{n∈ℕ}C^{n} = \{ \frac{⟨x_{1}, …, x_{n}⟩}{n ∈ ℕ, ∀i ∈ I . x_{i} ∈ C} \}

the \underline{Kleene closure} or the \underline{tuple class} on C.

12.5.2 Remark power products with empty classes

We have the following special cases:

(1) I = ∅ and C ≠ ∅. Then C^{I} = {⟨⟩}, i.e. the power product is made of one element, the empty tuple.

(2) I ≠ ∅ and C = ∅. Then C^{I} = ∅.

Now if I = C = ∅, both these cases would apply and result in an impossible situation. Therefore, I = C = ∅ is excluded from the definition of C^{I}.

12.5.3 Example power product

\begin{aligned}\{a, b\}^{\{c,d\}} & = & \begin{cases}[ \begin{matrix}c ↦ & a \\ d ↦ & a \end{matrix} ] , [ \begin{matrix}c ↦ & b \\ d ↦ & a \end{matrix} ] , \\ [ \begin{matrix}c ↦ & a \\ d ↦ & b \end{matrix} ] , [ \begin{matrix}c ↦ & b \\ d ↦ & b \end{matrix} ] \end{cases}\} \\ \{a, b\}^{2} & = & \{⟨a, a⟩, ⟨b, a⟩, ⟨a, b⟩, ⟨b, b⟩\} \\ \{a, b\}^{∗} & = & \{ ⟨⟩, ; ⟨a⟩, ⟨b⟩, ; ⟨a, a⟩, ⟨b, a⟩, ⟨a, b⟩, ⟨b, b⟩, ; ⟨a, a, a⟩, ⟨b, a, a⟩, ⟨a, b, a⟩, …, ; ⋮\} \end{aligned}

12.5.4 Remark

Usually, the expression C^{I} for two classes C and I is defined to be the class of all functions with domain I and codomain C, i.e.

C^{I} := {f | f : I ⟶ C}

In our design however, this is actually

C^{I} := {f : I ⟶ D | D ⊆ C and f is surjective}

But there is an obvious bijection between these two function classes and usually no context in practice, where this difference in definition becomes significant. So we will allow to consider our slightly modified definition as conform with the common standard.

The notation C^{I} is tradition in mathematics. Most likely it is again motivated by the following statement about its cardinalities in an attempt to merge set theory and arithmetic.

12.5.5 Remark cardinality of power products

For all classes C and I holds

card(C^{I}) = card(C)^{card(I)}

where the right hand side denotes the power operation of (possibly infinite) cardinal numbers. Note that this correspondence even holds for the case C = I = ∅, since neither ∅^{∅} nor 0^{0} are defined. In particular, the case I = {1, …, n} for some n ∈ ℕ and C non–empty makes

card(C^{n}) = (card(C))^{n}

13 Digressions

13.0.6 Introduction

In the first of the two following digressions we generalize the binary product and coproduct definition towards a “product construction” and “coproduct construction”. This kind of abstraction is often done in category theory, for example. Our definitions depart slightly from the standard ones, but we will find that the differences are insignificant. In other words, our binary product (as defined in 12.2.2) is a proper product construction, and our coproduct (defined in 12.2.2 as well) is a proper coproduct construction.

In the second digression in subsection 13.2, we introduce a practical application for schema coproducts: the definition of formal languages or data structures.

13.1 Digression: Product and coproduct constructions

13.1.1 Definition

Given two classes A and B.

(1) A \underline{(binary) (cartesian) product construction} for A and B comprises

(i) P the so–called product class (ii) p_{1} : P ⟶ A the first projector (iii) p_{2} : P ⟶ B the second projector (iv) ◯ 1 · ◯ 2 : A × B ⟶ P the constructor

such that

(a) p_{1}(a · b) = a for all a ∈ A and b ∈ B

(b) p_{2}(a · b) = b for all a ∈ A and b ∈ B

(2) A \underline{(binary) coproduct construction} for A and B comprises

(i) S the so–called coproduct class (or sum or disjunct union)

(ii) i_{1} : A ⟶ S the first injector (iii) i_{2} : B ⟶ S the second injector (iv) δ : S ⟶ (({1} × A) ⊎ ({2} × B)) the deconstruc-

tor

such that

(a) δ(i_{1}(a)) = ⟨1, a⟩ for all a ∈ A

(b) δ(i_{2}(b)) = ⟨2, b⟩ for all b ∈ B

13.1.2 Remark

(i) In category theory and other mathematical branches, a “product” usually is defined as the combination of P, p_{1} and p_{2}, the “constructor” is not mentioned explicitely.

Similarly, a “coproduct” is made of P, i_{1} and i_{2}. A “deconstructor” is absent.

(ii) The default product construction is the one, where the constructor is the identity (see ??). Similarly, the most common coproduct construction is the one where the deconstructor is the identity (see 13.1.5).

(iii) A “good” product and coproduct construction usually have the additional property, that they motivate the product and sum of cardinal numbers, respectively. More precisely, if A and B are given classes and P and S are their product and coproduct classes, then card (P) = card (A) · card (B) and card (S) = card (A) + card (B). One way to characterize such a “good” product or coproduct is to demand that the constructor or deconstructor must be a bijection.

13.1.3 Example

The \underline{default product construction} of given classes A and B is the ordinary cartesian product itself, i.e.^{28}

(i) A × B is the product class, (ii) ◯ 1 (1) : A × B ⟶ A is the first and (iii) ◯ 2 (2) : A × B ⟶ B is the second projection. (iv) The constructor is of course the identity function on A×B.

13.1.4 Example

The ordinary cartesian product is based on the tuple concept; but there is also a set version.^{29}For given classes A and B their \underline{Kuratowski product construction} comprises:

(i) P := {{{a} , {a, b}} | a ∈ A, b ∈ B} is the product class (ii) p_{1}(π) := sing (⋂ π) for each π ∈ P is the first projection.

So, p_{1}({{a} , {a, b}}) = sing ({a}) = a.

(iii) p_{2}(π) := sing (∇π) for each π ∈ P is the second projection. So, p_{2}({{a} , {a, b}}) = sing ({a} ▽ {a, b}) = sing ({b}) = b.

(iv) a · b := {{a} , {a, b}} for a ∈ A and b ∈ B is the constructor

13.1.5 Example

The \underline{default coproduct construction} for given A and B puts

(i) S := ({1} × A) ⊎ ({2} × B) as the coproduct class (ii) i_{1}(a) := ⟨1, a⟩ for each a ∈ A is the first injection (iii) i_{2}(b) := ⟨2, a⟩ for each b ∈ B is the second injection (iv) δ(n, x) := ⟨n, x⟩ is the deconstructor

13.1.6 Example

(i)

28Recall 5.4.1, that ⟨a, b⟩(1) = a and ⟨a, b⟩(2) = b for arbitrary pairs ⟨a, b⟩. 29 Recall 5.6.13, that sing (C) denotes the unique member of a singleton C; and 5.6.6, that ∇K is opposition of a class family K; in

particular ∇ {C_{1}, C_{2}} = C_{1} ▽ C_{2} = (C_{1} \ C_{2}) ∪ (C_{2} \ C_{1}).

The binary version of our coproduct definition in 12.2.2 is a coproduct contruction in the sense of 13.1.1. For two given classes A and B we put

S := A + B = {[ 1 ↦ a] | a ∈ A} ⊎ {[ 2 ↦ b] | b ∈ B} as the coproduct class

(ii) i_{1}(a) := [ 1 ↦ a] for all a ∈ A is the first injection (iii) i_{2}(b) := [ 2 ↦ b] for all b ∈ B is the first injection (iv) δ([ n ↦ x]) := ⟨n, x⟩ for all [ n ↦ x] ∈ S is the decon-

structor.

13.2 Digression: Datastructures and formal languages as coproducts of schemas

13.2.1 Introduction

Often in mathematics and metamathematics, we need to define formal languages. In computer science, these expression classes are often called data structures. ^{30}

Suppose, we want to define “(simple) arithmetic terms”. This term class Arith is a formal language and should contain expressions like

[ 0 + [ [ [ 0 + 1 ] ∗ 0 ] + 1 ] ]

i.e. expressions that start with zero and unit and allow more complex constructions by means of addition and multiplication, embraced by square brackets.

We already discussed the mathematical nature of expressions in 5.2, where we emphasized (5.2.3(2)) that expressions are actually parse trees and the example above is just a camouflage for something like

[figure: [ ◯ 1 + ◯ 2 ]; 0; [ ◯ 1 ∗ ◯ 2 ]; 1; [ ◯ 1 + ◯ 2 ]; [ ◯ 1 ∗ ◯ 2 ]; 1; [ ◯ 1 + ◯ 2 ]; 0; 0; 1]

We are going to introduce a convenient and elegant “coproduct definition” for data structures in general. For Arith such a definition is given in 13.2.4. But before that, let us start with a “vulgar definition” for Arith in 13.2.2.

13.2.2 vulgar definition of arithmetic terms

The arithmetic term class Arith is defined to be the smallest class containing the following expressions:

(1) 0 (zero)

(2) 1 (unit)

(3) [ ξ + υ]  for all ξ, υ ∈ Arith  (addition)
(4) [ ξ ∗ υ]  for all ξ, υ ∈ Arith  (multiplication)

13.2.3 Remark

The arithmetic term class is a union of four disjunct classes

Arith = \{0\} ⊎ \{1\} ⊎ \{ \frac{[ ξ + υ]}{ξ, υ ∈ Arith} \} ⊎ \{ \frac{[ ξ ∗ υ]}{ξ, υ ∈ Arith} \}

Even more so — and that is essential for data structures in computer programs — we can immediately “see” for each arithmetic term, to which of the four classes it belongs. Our example arithmetic term in 13.2.1 is an addition term, because “◯ 1 + ◯ 2 ” is the root of parse tree.

This is a characteristic property of data structures compare to other classes in general: each element is a transparent construction; either a primitive one, like 0, or a more complex one like [ ξ ∗ υ]. And the complex one is a combination of an operator symbol or constructor “[ ◯ 1 ∗ ◯ 2 ]” and an argument tuple, in this case “⟨ξ, υ⟩”. And since “[ ξ ∗ υ]” is in fact just the linear representation for the tree node

[figure: ξ; υ; [ ◯ 1 ∗ ◯ 2 ]]

the mathematical formalization would be more appropriately something like a constructor–arguments pair

“⟨[ ◯ 1 ∗ ◯ 2 ], ⟨ξ, υ⟩⟩”

or a singular record

“[ [ ◯ 1 ∗ ◯ 2 ] ↦ ⟨ξ, υ⟩]”

We take this record representation “[ [ ◯ 1 ∗ ◯ 2 ] ↦ ⟨ξ, υ⟩]” as the general form of expressions, i.e. elements of data structures. And similar to the definition of “constants” as “functions with zero arguments”, we can also subsume primitive expressions under this form and represent “0” by “[ 0 ↦ ⟨⟩]”.

Applying this approach to Arith, we now obtain the following disjunct union

Arith = {[ 0 ↦ ⟨⟩]} ⊎
{[ 1 ↦ ⟨⟩]} ⊎
{ [ [ ◯^{1} + ◯^{2} ] ↦ ⟨ξ, υ⟩] ξ, υ ∈ Arith } ⊎
{ [ [ ◯^{1} ∗ ◯^{2} ] ↦ ⟨ξ, υ⟩] ξ, υ ∈ Arith }

And since

{[ 0 ↦ ⟨⟩]} = ⊕[ 0 ↦ {⟨⟩}]
{[ 1 ↦ ⟨⟩]} = ⊕[ 1 ↦ {⟨⟩}]
\{ \frac{[ [ ◯ 1 + ◯ 2 ] ↦ ⟨ξ, υ⟩]}{ξ, υ ∈ Arith} \} = ⊕[ [ ◯ 1 + ◯ 2 ] ↦ Arith^{2} ]

\{ \frac{[ [ ◯ 1 ∗ ◯ 2 ] ↦ ⟨ξ, υ⟩]}{ξ, υ ∈ Arith} \} = ⊕[ [ ◯ 1 ∗ ◯ 2 ] ↦ Arith^{2} ]

30 We only think of formal languages as context–free languages. There is of course a more general notion, as any standard book on formal languages tells us. But the syntax of most mathematical formalisms or computer languages is indeed definable by a context–free grammar. with Arith^{2} = Arith × Arith as defined in 12.5.1, we obtain

Arith = ⊕[ 0 ↦ {⟨⟩}] ⊎

⊕[ 1 ↦ {⟨⟩}] ⊎

⊕[ [ ◯ 1 + ◯ 2 ] ↦ Arith^{2} ] ⊎

⊕[ [ ◯ 1 ∗ ◯ 2 ] ↦ Arith^{2} ]

= ⊕ [ \begin{matrix}0 ↦ & \{⟨⟩\} \\ 1 ↦ & \{⟨⟩\} \\ [◯ 1 + ◯ 2 ] ↦ & Arith^{2} \\ [◯ 1 ∗ ◯ 2 ] ↦ & Arith^{2} \end{matrix} ]

And that is the final version of the following “coproduct definition” of arithmetic terms.

13.2.4 coproduct definition of arithmetic terms

The arithmetic term class is defined as

Arith := ⊕ [ \begin{matrix}0 ↦ & \{⟨⟩\} \\ 1 ↦ & \{⟨⟩\} \\ [◯ 1 + ◯ 2 ] ↦ & Arith^{2} \\ [◯ 1 ∗ ◯ 2 ] ↦ & Arith^{2} \end{matrix} ]

13.2.5 Remark

As a second example for the definition of an expression class, let us consider the definition of propositional formulas. If a given class A contains a and b, an example of such a propositional formula on A shall be given by

¬[ ¬a ∧ [ 0 ∨ ¬[ 0 ∨ 1 ] ∨ a] ∧ 1 ∧ b]

These kind of expressions are covered by the following definition.

13.2.6 Coproduct definition of propositional formulas

For every class A of identifiers we define

Form (A) := ⊕ [ \begin{matrix}0 ↦ & \{⟨⟩\} \\ 1 ↦ & \{⟨⟩\} \\ ◯ 1 ↦ & A \\ ¬◯ 1 ↦ & Form (A) \\ [ ◯ 1 ∧ … ∧ ◯ n ] ↦ & Form (A)^{∗} \\ [ ◯ 1 ∨ … ∨ ◯ n ] ↦ & Form (A)^{∗} \end{matrix} ]

the propositional formula class on A.

13.2.7 Remark

This definition of Form (A) is another example of a schema coproduct definition. It is recursive, as it is typical for many data structures, but that does not cause a problem whatsoever. And again, the whole class is a disjunct union of six different kinds of constructions: the zero bit, the unit bit, the atomic formula, the negation, the conjunction and the disjunction, respectively.

Once again, there is a precise tree form and a convenient written version of each construction: ♣ Each zero bit formula from ⊕[ 0 ↦ {⟨⟩}] has the precise

form [ 0 ↦ ⟨⟩], which is simply written “0”, as usual. ♣ Each negation formula, each element from ⊕[ ¬◯ 1 ↦

Form (A) ] has the precise form [ ¬◯ 1 ↦ φ], for some φ ∈ Form (A), and the usual written representation “¬φ”.

♣ Each conjunction formula from ⊕[ [ ◯ 1 ∧ … ∧ ◯ n ] ↦ Form (A)^{∗} ] has the actual form [ [ ◯ 1 ∧ … ∧ ◯ n ] ↦ ⟨φ_{1}, …, φ_{n}⟩], for some ⟨φ_{1}, …, φ_{n}⟩ ∈ Form (A)^{∗}, and is usually written as “[ φ_{1} ∧ … ∧ φ_{n} ]”.

♣ Each atomic formula is an element of ⊕[ ◯ 1 ↦ A]. Accordingly, an atomic formula has the form [ ◯ 1 ↦ a], for some a ∈ A, but it is usually written as “a” itself.

13.2.8 Example

Alltogether, a propositional formula like ¬[ a ∧ 0 ] has the actual form

[ ¬◯ 1 ↦ [ [ ◯ 1 ∧ ◯ 2 ] ↦ ⟨[ ◯ 1 ↦ a], [ 0 ↦ ⟨ ⟩]⟩] ]

which is the formalization of the tree

[figure: ¬◯ 1; [ ◯ 1 ∧ ◯ 2 ]; ◯ 1; 0; a]

14 Order structures on schemas

14.1 The operations

14.1.1 Definition For two schemas X = [X_{i}|i ∈ I] and Y = [Y_{i}|i ∈ I] with identical index class I we define

X ⊆ Y :iff X_{i} ⊆ Y_{i} for all i ∈ I  \underline{inclusion}
X ⊈ Y :iff X_{i} ⊈ Y_{i} for some i ∈ I

X ∩ Y

:= [X_{i} ∩ Y_{i}|i ∈ I] intersection

X ∪ Y := [X_{i} ∪ Y_{i}|i ∈ I]  \underline{union}
X\Y := [X_{i}\Y_{i}|i ∈ I]  \underline{difference}

For every non–empty class Y of schemas, where all members have the same index class I, we define

⋂ Y := ⋂_{Y ∈Y}Y := [ ⋂{Y_{i} | Y ∈ Y} i ∈ I ]

the \underline{(big) intersection} of Y

⋃ Y := ⋃_{Y ∈Y}Y := [ ⋃{Y_{i} | Y ∈ Y} i ∈ I ]

the \underline{(big) union} of Y

14.1.2 Remark Note, that ⋂ Y is defined iff Y ≠ ∅.

14.1.3 Example Given two schemas

X = [ \begin{matrix}p & ↦ & \{a, b, c\} \\ q & ↦ & ∅ \\ r & ↦ & \{a\} \end{matrix} ] Y = [ \begin{matrix}p & ↦ & \{a, b\} \\ q & ↦ & \{a, b\} \\ r & ↦ & \{a, b\} \end{matrix} ]

with the same index class I = {p, q, r}. Then

X ⊈ Y  and  Y ⊈ X

and

\begin{aligned}X ∩ Y & = & [ \begin{matrix}p & ↦ & \{a, b\} \\ q & ↦ & ∅ \\ r & ↦ & \{a\} \end{matrix} ] & X ∪ Y & = & [ \begin{matrix}p & ↦ & \{a, b, c\} \\ q & ↦ & \{a, b\} \\ r & ↦ & \{a, b\} \end{matrix} ] \\ X \ Y & = & [ \begin{matrix}p & ↦ & \{c\} \\ q & ↦ & ∅ \\ r & ↦ & ∅ \end{matrix} ] & Y \ X & = & [ \begin{matrix}p & ↦ & ∅ \\ q & ↦ & \{a, b\} \\ r & ↦ & \{b\} \end{matrix} ] \end{aligned}

14.2 The included schema class

14.2.1 Definition If X = [X_{i}|i ∈ I] is a schema, then

Incl(X) := {[Y_{i}|i ∈ I] | Y_{i} ⊆ X_{i} for all i ∈ I} is the \underline{included schema class} or \underline{inclusions} of X.

14.2.2 Example Taking the schema

X = [ \begin{matrix}p ↦ & \{a, b\} \\ q ↦ & ∅ \\ r ↦ & \{a\} \end{matrix} ]

then

Incl(X) = \begin{cases}[ \begin{matrix}p ↦ & ∅ \\ q ↦ & ∅ \\ r ↦ & ∅ \end{matrix} ] , [ \begin{matrix}p ↦ & \{a\} \\ q ↦ & ∅ \\ r ↦ & ∅ \end{matrix} ] , [ \begin{matrix}p ↦ & \{b\} \\ q ↦ & ∅ \\ r ↦ & ∅ \end{matrix} ] , \\ [ \begin{matrix}p ↦ & \{a, b\} \\ q ↦ & ∅ \\ r ↦ & ∅ \end{matrix} ] , [ \begin{matrix}p ↦ & ∅ \\ q ↦ & ∅ \\ r ↦ & \{a\} \end{matrix} ] , [ \begin{matrix}p ↦ & \{a\} \\ q ↦ & ∅ \\ r ↦ & \{a\} \end{matrix} ] , \\ [ \begin{matrix}p ↦ & \{b\} \\ q ↦ & ∅ \\ r ↦ & \{a\} \end{matrix} ] , [ \begin{matrix}p ↦ & \{a, b\} \\ q ↦ & ∅ \\ r ↦ & \{a\} \end{matrix} ] \end{cases}\}

14.3 The boolean algebra of inclusions

14.3.1 Definition The \underline{inclusion algebra} of a given schema X = [X_{i}|i ∈ I] is defined as

ℑ𝔫𝔠𝔩 (X) := ⟨Incl (X) , ⊆, [∅|I], X, ∩, ∪, ⋂, ⋃, ∁⟩

where ⋂ is defined on its whole domain P (Incl (X)) by putting ⋂ ∅ := X and ∁Y := X \ Y is the \underline{complement} of every Y ∈ Incl (X).

14.3.2 Theorem ℑ𝔫𝔠𝔩 (X) is a complete boolean algebra, for every schema X.

14.3.3 Proof of 14.3.2 Let W, Y, Z ∈ Incl(X), then (a) (W ⊆ Y and Y ⊆ Z) implies (W_{i} ⊆ Y_{i} ⊆ Z_{i} for all

i ∈ I) implies (W_{i} ⊆ Z_{i} for all i ∈ I) implies W ⊆ Z. ⊆ is transitive.

(b) W ⊆ W, because W_{i} ⊆ W_{i} for all i ∈ I. ⊆ is reflexive.

(c) (W ⊆ Y and Y ⊆ W) implies (W_{i} = Y_{i} for all i ∈ I) implies W = Y. ⊆ is antisymmetric.

Altogether, ⊆ is a (partial) order relation on Incl(X). Furthermore

(d) [∅|I] ⊆ W, because ∅ ⊆ W_{i} for all i ∈ I. [∅|I] is the least element.

(e) W ⊆ X, because W_{i} ⊆ X_{i} for all i ∈ I. X is the greatest element.

For every Y ⊆ Incl(X)

(f) ⋂ Y ⊆ Y for every Y ∈ Y. And for every Z ∈ Incl(X) holds: If Z ⊆ Y for all Y ∈ Y, then Z_{i} ⊆ ⋂{Y_{i} | Y ∈ Y} for all i ∈ I, and so Z ⊆ ⋂ Y. In other words, ⋂ Y is the greatest lower bound of Y.

(g) ⋃ Y is the least upper bound of Y, similar to (f).

There is ◯ 1 ∩ ◯ 2 = ⋂ {◯ 1 , ◯ 2 } and ◯ 1 ∪ ◯ 2 = ⋃ {◯ 1 , ◯ 2 }. So far, we have a complete lattice, which is distributive, because the underlying class algebra is distributive. And finally, for every Y ∈ Incl(X) we have

(h) (∁Y)∩Y = (X\Y)∩Y = [∅|I] and (∁Y)∪Y = (X\Y)∪Y = X. That makes ∁ the complement operator.

That completes the proof.

14.3.4 Example

If we take the schema X again from the previous example 14.2.2, the order diagram of the complete boolean lattice on Incl(X) is

[figure: [ \begin{matrix}p ↦ & ∅ \\ q ↦ & ∅ \\ r ↦ & ∅ \end{matrix} ]; [ \begin{matrix}p ↦ & ∅ \\ q ↦ & ∅ \\ r ↦ & \{a\} \end{matrix} ]; [ \begin{matrix}p ↦ & \{a\} \\ q ↦ & ∅ \\ r ↦ & ∅ \end{matrix} ]; [ \begin{matrix}p ↦ & \{b\} \\ q ↦ & ∅ \\ r ↦ & ∅ \end{matrix} ]; [ \begin{matrix}p ↦ & \{a\} \\ q ↦ & ∅ \\ r ↦ & \{a\} \end{matrix} ]; [ \begin{matrix}p ↦ & \{b\} \\ q ↦ & ∅ \\ r ↦ & \{a\} \end{matrix} ]; [ \begin{matrix}p ↦ & \{a, b\} \\ q ↦ & ∅ \\ r ↦ & ∅ \end{matrix} ]; [ \begin{matrix}p ↦ & \{a, b\} \\ q ↦ & ∅ \\ r ↦ & \{a\} \end{matrix} ]]

Part VI

Graphs and their distinct products

15 Schemas and graphs

15.1 Schemas of record classes

15.1.1 Definition

Let Ξ be a class of records. We define

@(Ξ) := ⋃{dom(ξ) | ξ ∈ Ξ}

the \underline{attribute class} of Ξ

dom_{α}(Ξ) := {ξ(α) | ξ ∈ Ξ, α ∈ dom(ξ)}
the α–\underline{domain} of Ξ, for each α ∈ @(Ξ)
x(Ξ) := [dom_{α}(Ξ)|α ∈ @(Ξ)]

the \underline{schema} of Ξ

15.1.2 Example

Given the record class

Ξ = \{⟨⟩, [ \begin{matrix}a & ↦ & 5 \\ b & ↦ & 3 \end{matrix} ] , [ a ↦ 4 ] , [ \begin{matrix}a & ↦ & 5 \\ b & ↦ & 7 \\ d & ↦ & 1 \end{matrix} ] , [ \begin{matrix}a & ↦ & 2 \\ d & ↦ & 2 \end{matrix} ]\}

then

@(Ξ) = ∅ ∪ {a, b} ∪ {a} ∪ {a, b, d} ∪ {a, d}
= {a, b, d}
dom_{a}(Ξ) = {2, 4, 5}
dom_{b}(Ξ) = {3, 7}
dom_{d}(Ξ) = {1, 2}

x(Ξ) = [ \begin{matrix}a & ↦ & \{2, 4, 5\} \\ b & ↦ & \{3, 7\} \\ d & ↦ & \{1, 2\} \end{matrix} ]

Note, that x(Ξ) is proper and Ξ ⊆ ⊛x(Ξ).

15.1.3 Remark Table construction

Consider the record class Ξ from the previous example 15.1.2 again. The construction of its schema can be done with a table. First, list each record of Ξ as a row in a table, the tables head row is the attribute class. We obtain

a b d

5 3 4 5 7 1 2  2

Next, combine the entries of each column as a separate class.

a  b  d

5  3

4

5 7 1
2  2
{2, 4, 5} {3, 7} {1, 2}

The schema of Ξ is finally given by

x(Ξ) = [ \begin{matrix}a & ↦ & \{2, 4, 5\} \\ b & ↦ & \{3, 7\} \\ d & ↦ & \{1, 2\} \end{matrix} ]

15.1.4 Lemma

(1) x(Ξ) is a proper schema, for every record class Ξ.

(2) Ξ ⊆ ⊛x(Ξ), for every record class Ξ.

(3) For every schema X holds (a) x(⊛X) = X

(b) x(⊕X) = X

And if X is proper, then

(c) x(⊗X) = X

(4) For every schema X and record class Ξ holds: Ξ ⊆ ⊛X iff x(Ξ) ⊆ pr (X, dom(X) ∩ @(Ξ))

15.1.5 Proof of 15.1.4

(1) Obviously, x(Ξ) is a well defined schema. If @(Ξ) = ∅, then x(Ξ) = ⟨⟩, which is a proper schema. If @(Ξ) ≠ ∅, then for every α ∈ @(Ξ) holds: dom_{α}(Ξ) = {ξ(α) | ξ ∈ Ξ, α ∈ @(Ξ)} ≠ ∅. So in every case, x(Ξ) is proper.

(2) According to definition 15.1.1 and 12.1.2 we have

⊛x(Ξ) = ⊛[dom_{α}(Ξ)|α ∈ @(Ξ)]
= ⊛ { [ξ_{j}|j ∈ J] J ⊆ @(Ξ) and ξ_{j} ∈ dom_{j}(Ξ) for all j ∈ J }

So let υ = [υ_{j}|j ∈ J]. @(Ξ) = ⋃{dom(ξ) | ξ ∈ ξ} implies J ⊆ @(Ξ). And for each j ∈ J, dom_{j}(Ξ) = {ξ(j) | ξ ∈ Ξ, j ∈ dom(ξ)} implies υ_{j} ∈ dom_{j}(Ξ). Thus υ ∈ ⊛x(Ξ).

(3) Let X = [X_{i}|i ∈ I] be the given schema.

(a) For the schema of its star product holds:

⊛X = \{ \frac{[ξ_{j}|j ∈ J]}{J ⊆ I, ξ_{j} ∈ X_{j} for all j ∈ J} \}

@(⊛X) = ⋃{J | J ⊆ I} = I
dom_{i}(⊛X) = {ξ_{i} | ξ ∈ ⊛X, i ∈ dom(ξ)}
= X_{i}  for each i ∈ I
x(⊛X) = [X_{i}|i ∈ I] = X

(b) For the schema of the coproduct holds:

⊕X = \{ \frac{[ i ↦ ξ ]}{i ∈ I, ξ ∈ X_{i}} \}

@(⊕X) = ⋃{{i} | i ∈ I} = I
dom_{i}(⊕X) = {ξ | [ i ↦ ξ ] ∈ ⊕X}
= X_{i}  for each i ∈ I
x(⊕X) = [X_{i}|i ∈ I] = X

(c) And if X is proper, then

⊗X = {[ξ_{i}|i ∈ I] | ξ_{i} ∈ X_{i} for all i ∈ I}
≠ ∅  (see 12.1.12)
@(⊗X) = ⋃{dom(ξ) | ξ ∈ ⊗X}
= I  (because ⊗X ≠ ∅)
dom_{i}(⊗X) = {ξ_{i} | ξ ∈ ⊗X}
= X_{i}  for each i ∈ I
x(⊗X) = [X_{i}|i ∈ I] = X

(4) Let X = [X_{i}|i ∈ I] be the given schema and x(Ξ) = [Y_{j}|j ∈ J] = Y the schema of the given record class Ξ. We need to show that

Ξ ⊆ ⊛X iff Y ⊆ pr (X, I ∩ J)

We proof this equivalence in both directions:

(a) Suppose, Ξ ⊆ ⊛X. That means, that for every ξ ∈ Ξ, dom(ξ) ⊆ J and ξ(j) ∈ Ξ_{j} for all j ∈ dom(ξ). J := ⋃{dom(ξ) | ξ ∈ Ξ} implies J ⊆ I and Y_{j} := {ξ(j) | ξ ∈ Ξ, j ∈ dom(ξ)} implies Y_{j} ⊆ X_{j}, for all j ∈ J. So Y ⊆ pr (X, I ∩ J).

(b) On the other hand, suppose Y ⊆ pr (X, I ∩ J). Then J = I ∩ J, i.e. J ⊆ I. ξ ∈ Ξ implies dom(ξ) ⊆ J ⊆ I and j ∈ J implies ξ(j) ⊆ Y_{j} ⊆ X_{j}. Thus Ξ ⊆ ⊛X.

15.2 Graphs

15.2.1 Definition

A record class Ξ is also called a \underline{graph}. More specifically, we call Ξ a

(1) \underline{star graph}, \underline{Kleene graph}, \underline{general graph} or \underline{quasi–relation graph}, if Ξ ⊆ ⊛X for some schema X

(2) \underline{cartesian graph}, \underline{expanded graph} or \underline{relation graph}, if Ξ ⊆ ⊗X for some schema X

(3) \underline{cograph} or \underline{singular graph}, if Ξ ⊆ ⊕X for some schema X

15.2.2 Example

Let us take the record class Ξ from example 15.1.2 again

Ξ = \{⟨⟩, [ \begin{matrix}a & ↦ & 5 \\ b & ↦ & 3 \end{matrix} ] , [ a ↦ 4 ] , [ \begin{matrix}a & ↦ & 5 \\ b & ↦ & 7 \\ d & ↦ & 1 \end{matrix} ] , [ \begin{matrix}a & ↦ & 2 \\ d & ↦ & 2 \end{matrix} ]\}

(1) Ξ certainly is a star graph, because with 15.1.4(2)we can derive

Ξ ⊆ ⊛x(Ξ) = ⊛ [ \begin{matrix}a ↦ & \{2, 4, 5\} \\ b ↦ & \{3, 7\} \\ d ↦ & \{1, 2\} \end{matrix} ]

(2) Ξ is certainly not a cartesian graph. The members of Ξ have different domains: ∅, {a, b}, {a}, {a, b, d}, {a, d}. But for every cartesian product, they would have to be identical.

(3) Ξ is coproduct neither. Therefore, every of its members would have to be a singular record, i.e. with exactly one index. But one [a ↦ 4] is actually singular, the others are not.

15.2.3 Lemma

Every record class Ξ is

(1) a star graph

(2) a cartesian graph iff Ξ ⊆ ⊗x(Ξ)

(3) a cartesian graph iff dom(ξ) = dom(υ) for all ξ, υ ∈ Ξ (4) a cograph iff Ξ ⊆ ⊕x(Ξ)

(5) a cograph iff card(dom(ξ)) = 1 for all ξ ∈ Ξ

15.2.4 Proof of 15.2.3

(1) Each record class Ξ has a schema X such that Ξ ⊆ ⊛X, namely X := x(Ξ). Ξ ⊆ ⊛x(Ξ) holds, according to 15.1.4(2).

(2) In case Ξ = ∅, Ξ is a cartesian graph and Ξ ⊆ {⟨⟩} = ⊗(⟨⟩) = ⊗x(Ξ). Otherwise, Ξ ≠ ∅, and then

Ξ is a cartesian graph

iff Ξ ⊆ ⊗X for some schema X
iff Ξ ⊆ {[x_{i}|i ∈ I] | x_{i} ∈ X_{i} for all i ∈ I}

for some schema X = [X_{i}|i ∈ I]

iff Ξ ⊆ {[x_{i}|i ∈ @(Ξ)] | x_{i} ∈ X_{i} for all i ∈ @(Ξ)}

for some schema X = [X_{i}|i ∈ @(Ξ)]

iff Ξ ⊆ ⊗x(Ξ) ⊆ ⊗X

for some schema X = [X_{i}|i ∈ @(Ξ)]

iff Ξ ⊆ ⊗x(Ξ)

So in every case, Ξ is a cartesian graph iff Ξ ⊆ ⊗x(Ξ).

(3) If Ξ is a cartesian graph, then dom(ξ) = dom(υ) = @(Ξ), for all ξ, υ ∈ Ξ (regardless, if Ξ is empty or not). On the other hand, if dom(ξ) = dom(υ) for all ξ, υ ∈ Ξ, then ξ ∈ ⊗x(Ξ) for all ξ ∈ Ξ, and Ξ is a cartesian graph according to (2).

(4) For every record class Ξ holds

Ξ is a cograph

iff Ξ ⊆ ⊕X for some schema X
iff Ξ ⊆ {[ i ↦ x_{i} ] | i ∈ I, x_{i} ∈ X_{i}}

for some schema X = [X_{i}|i ∈ I]

iff Ξ ⊆ {[ i ↦ x_{i} ] | i ∈ @(Ξ), x_{i} ∈ dom_{i}(Ξ)}
iff Ξ ⊆ ⊕x(Ξ)

(5) If Ξ is a cograph, then every member has the form [ i ↦ x_{i} ], i.e. card(dom(ξ)) = 1. On the other hand, if card(dom(ξ)) = 1 is the case, then ξ ∈ ⊕x(Ξ), i.e. Ξ ⊆ ⊗x(Ξ), so that Ξ is a cograph according to (4).

16 Partitions and distinct products

16.0.5 Repetition

(1) Recall (10.3.2 and 10.3.4), that we call two records ξ =

[ξ_{i}|i ∈ I] and υ = [υ_{j}|j ∈ J] \underline{distinct}, written ξ ≬ υ , iff

I ∩ J = ∅. In case they are distinct, their \underline{distinct join}

ξ ˙∨ υ := [ k ↦ \begin{cases}ξ_{k} & if k ∈ I \\ υ_{k} & if k ∈ J \end{cases} k ∈ I ∪ J ]

is well–defined (according to 10.4.1). And more general, a class Ξ of records is \underline{(pairwise) distinct}, if ξ ≬ υ for all ξ, υ ∈ Ξ with ξ ≠ υ. And in that case, its \underline{distinct join}

˙⋁ Ξ is well–defined

(2) Recall 9.1.1, that a “\underline{record–record}” is a record

ρ = [ρ_{k}|k ∈ K] = [[ρ_{k,l}|l ∈ L_{k}]|k ∈ K]

where every ρ_{k} = [ρ_{k,l}|l ∈ L_{k}] is a record itself. So a special record–record is a \underline{schema record}

σ = [σ_{k}|k ∈ K] = [[σ_{k,l}|l ∈ L_{k}]|k ∈ K]

where each σ_{k} = [σ_{k,l}|l ∈ L_{k}] is a schema.

(3) Recall 15.2.1, that a record class Ξ is also called a \underline{graph}.

16.1 Class partition (record)

16.1.1 Definition

A \underline{class partition (record)} is a schema P = [P_{k}|k ∈ K], such that

P_{i} ∩ P_{j} = ∅ for all i, j ∈ K with i ≠ j

P is also called a \underline{class partition of} C, where C is the class defined by

C := ⋃{P_{k} | k ∈ K}

Furthermore, P is called a \underline{proper} class partition, if P is a proper schema.

16.1.2 Remark and example class partitions

Let C = {1, 2, 3, 4, 5, 6}. Usually in mathematics, a partition of C is a distribution of C’s members into mutually disjunct subclasses, e.g. {{1, 3} , {2, 4, 5} , {6}}. We use the same idea here, except that each subclass in a partition is indexed, i.e. a class partition (record) of C is a schema, say

P = [ \begin{matrix}a & ↦ & \{1, 3\} \\ b & ↦ & \{2, 4, 5\} \\ c & ↦ & \{6\} \end{matrix} ]

or with an alternative index class

P′ = [ \begin{matrix}1 & ↦ & \{1, 3\} \\ 2 & ↦ & \{2, 4, 5\} \\ 3 & ↦ & \{6\} \end{matrix} ] = ⟨\{1, 3\} , \{2, 4, 5\} , \{6\}⟩

P and P′ are (class) partitions of C. And they are proper because they are proper schemas. Two examples of non–proper partitions of C are

P′′ = [ \begin{matrix}a & ↦ & \{1, 3\} \\ b & ↦ & \{2, 4, 5\} \\ c & ↦ & \{6\} \\ d & ↦ & ∅ \end{matrix} ]

and

P′′′ = ⟨{1, 3} , ∅, {2, 4, 5} , ∅, {6}⟩

16.1.3 Lemma inclusion criterion

For every schema P = [P_{k}|k ∈ K] the following statements are equivalent:

(1) P is a class partition.

(2) There is a class partition P′ = [P′_{k}|k ∈ K] with P ⊆ P′.

16.1.4 Proof of 16.1.3

(1) implies (2): Suppose, P is a class partition. There is P ⊆ P.

(2) implies (1): Suppose P′ = [P′_{k}|k ∈ K] is a class partition with P ⊆ P′. P′ being a class partition means P′_{i} ∩ P′_{j} = ∅ for all i, j ∈ K with i ≠ j. P ⊆ P′ means P_{k} ⊆ P′_{k} for all k ∈ K. So P_{i} ∩ P_{j} = ∅ for all i, j ∈ K with i ≠ j, P is a class partition as well.

16.2 Record and schema partition

16.2.1 Definition

If ρ = [ρ_{k}|k ∈ K] is a record–record, then

doms(ρ) := [dom(ρ_{k})|k ∈ K]

is the \underline{domain schema} or \underline{index schema} of ρ.

16.2.2 Example

(1) A record–record ρ and its domain schema are given by

ρ = [ \begin{matrix}a & ↦ & [ \begin{matrix}d & ↦ & w \\ e & ↦ & x \end{matrix} ] \\ b & ↦ & ⟨⟩ \\ c & ↦ & [ \begin{matrix}f & ↦ & y \\ g & ↦ & z \end{matrix} ] \end{matrix} ] doms(ρ) = [ \begin{matrix}a & ↦ & \{d, e\} \\ b & ↦ & ∅ \\ c & ↦ & \{f, g\} \end{matrix} ]

(2) A tuple of tuples is a special case of a record–record:

\begin{aligned}ρ′ & = & ⟨⟨1, 2, 3⟩, ⟨2, 3, 4⟩, ⟨⟩, ⟨⟩, ⟨3, 4, 5⟩⟩ \\ doms(ρ′) & = & ⟨\{1, 2, 3\} , \{1, 2, 3\} , ∅, ∅, \{1, 2, 3\}⟩ \end{aligned}

16.2.3 Definition

A \underline{record partition} is a record–record π = [π_{k}|k ∈ K], such that

π_{i} ≬ π_{j} for all i, j ∈ K with i ≠ j

In that case, it is also called a \underline{(record) partition of} ξ, where ξ is the record, well–defined by

ξ := ˙⋁ {π_{k} | k ∈ K}

Furthermore, π is called a \underline{proper} record partition, if

π_{k} ≠ ⟨⟩ for every k ∈ K

A (record) partition π = [π_{k}|k ∈ K] of a schema X is also called a \underline{schema partition} of X.

16.2.4 Lemma

For every record–record ρ = [ρ_{k}|k ∈ K] holds

(1) ρ is a record partition iff doms(ρ) is a class partition (2) ρ is a proper record partition iff doms(ρ) is a proper

class partition

16.2.5 Proof of 16.2.4

Let ρ = [ρ_{k}|k ∈ K] = [[ρ_{k,l}|l ∈ L_{k}]|k ∈ K] be the given record–record. Then doms(ρ) = [L_{k}|k ∈ K] and we obtain:

(1) ρ is a record partition iff (ρ_{i} ≬ ρ_{j} for all i, j ∈ K with i ≠ j) iff (L_{i} ∩ L_{j} = ∅ for all i, j ∈ K with i ≠ j) iff doms(ρ) is a class partition.

(2) ρ is proper iff ρ_{k} ≠ ⟨⟩ for all k ∈ K iff L_{k} ≠ ∅ for all k ∈ K iff doms(ρ) is proper.

16.2.6 Remark and example record partitions

Let ξ be a record, given by

ξ = [ \begin{matrix}a & ↦ & ξ_{a} \\ b & ↦ & ξ_{b} \\ c & ↦ & ξ_{c} \\ d & ↦ & ξ_{d} \\ e & ↦ & ξ_{e} \end{matrix} ]

We cut up ξ into pairwise distinct records, say

[ \begin{matrix}a & ↦ & ξ_{a} \\ c & ↦ & ξ_{c} \end{matrix} ]  [ b ↦ ξ_{b} ]  [ \begin{matrix}d & ↦ & ξ_{d} \\ e & ↦ & ξ_{e} \end{matrix} ]

We index these records, i.e. we define a record–record such as

π = [ \begin{matrix}p & ↦ & [ \begin{matrix}a & ↦ & ξ_{a} \\ c & ↦ & ξ_{c} \end{matrix} ] \\ q & ↦ & [ b ↦ ξ_{b} ] \\ r & ↦ & [ \begin{matrix}d & ↦ & ξ_{d} \\ e & ↦ & ξ_{e} \end{matrix} ] \end{matrix} ]

which is then a record partition of ξ.

Lemma 16.2.4 is easily confirmed:

P := doms(π) = [ \begin{matrix}p & ↦ & \{a, c\} \\ q & ↦ & \{b\} \\ r & ↦ & \{d, e\} \end{matrix} ]

is a class partition, namely a class partition of

dom(ξ) = {a, b, c, d, e}

No value of π is ⟨⟩, P is not a proper schema, so π is a proper record partition of ξ.

Examples of non–proper record partitions of ξ are given by

π′ = [ \begin{matrix}p & ↦ & [ \begin{matrix}a & ↦ & ξ_{a} \\ c & ↦ & ξ_{c} \end{matrix} ] \\ q & ↦ & [ b ↦ ξ_{b} ] \\ r & ↦ & [ \begin{matrix}d & ↦ & ξ_{d} \\ e & ↦ & ξ_{e} \end{matrix} ] \\ s & ↦ & ⟨⟩ \end{matrix} ]

and

π′′ = ⟨[ \begin{matrix}a & ↦ & ξ_{a} \\ c & ↦ & ξ_{c} \end{matrix} ] , ⟨⟩, [ b ↦ ξ_{b} ] , ⟨⟩, [ \begin{matrix}d & ↦ & ξ_{d} \\ e & ↦ & ξ_{e} \end{matrix} ]⟩

Their domain schemas

P′ := [dom(π′_{k})|k ∈ dom(π′)] = [ \begin{matrix}p & ↦ & \{a, c\} \\ q & ↦ & \{b\} \\ r & ↦ & \{d, e\} \\ s & ↦ & ∅ \end{matrix} ]

P′′ := [dom(π′′_{k})|k ∈ dom(π′′)]

= [ \begin{matrix}1 & ↦ & \{a, c\} \\ 2 & ↦ & ∅ \\ 3 & ↦ & \{b\} \\ 4 & ↦ & ∅ \\ 5 & ↦ & \{d, e\} \end{matrix} ] = ⟨\{a, c\} , ∅, \{b\} , ∅, \{d, e\}⟩

are class partitions of dom(ξ), but not proper.

16.2.7 Remark

So if ξ = [ξ_{i}|i ∈ I] is a record and ρ = [[ρ_{k,l}|l ∈ L_{k}]|k ∈ K] is a record–record, the following statements are obviously equivalent:

(1) ρ is a record partition of ξ

(2) doms(ρ) = [L_{k}|k ∈ K] is a class partition (record) of I and ρ_{k,l} = ξ_{l} for all k ∈ K and l ∈ L_{k}.

16.2.8 Lemma inclusion criterion

For every schema record σ = [σ_{k}|k ∈ K] the following statements are equivalent:

(1) σ is a schema partition

(2) There is a schema partition σ′ = [σ′_{k}|k ∈ K] with σ ⊆ σ′.

16.2.9 Proof of 16.2.8

(1) implies (2): If σ is a schema partition, then σ′ = [σ′_{k}|k ∈ K] := σ obviously satisfies σ_{k} ⊆ σ′_{k} for all k ∈ K.

(2) implies (1): Suppose σ′ = [σ′_{k}|k ∈ K] is a schema partition with σ_{k} ⊆ σ′_{k} for all k ∈ K. σ′ being a schema partition means that dom(σ′_{i})∩dom(σ′_{j}) = ∅ for all i, j ∈ K with i ≠ j. σ_{k} ⊆ σ′_{k} presupposes dom(σ_{k}) = dom(σ′_{k}) (definition 14.1.1 of the schema inclusion ⊆). So dom(σ_{i}) ∩ dom(σ_{j}) = ∅ for all i, j ∈ K with i ≠ j. σ is a schema partition.

16.2.10 Lemma

(1) If ξ = [ξ_{i}|i ∈ I] is a record and [P_{k}|k ∈ K] a class partition of I, then

ξ = ˙⋁_{k∈K}pr (ξ, P_{k})

(2) If ξ = [ξ_{i}|i ∈ I] is a record, J ⊆ I, and [P_{k}|k ∈ K] is a class partition of J, then

pr (ξ, J) = ˙⋁_{k∈K}pr (ξ, P_{k})

(3) Let π = [π_{k}|k ∈ K] be a record partition and P = [P_{k}|k ∈ K] a schema with P_{k} ⊆ dom(π_{k}) for each k ∈ K. Then

pr ( ˙⋁_{k∈K}π_{k}, ⋃_{k∈K}P_{k}) = ˙⋁_{k∈K}pr (π_{k}, P_{k})

16.2.11 Proof of 16.2.10

(1) ξ = [ξ_{i}|i ∈ ⋃_{k∈K}P_{k}] = ˙⋁_{k∈K}[ξ_{i}|i ∈ P_{k}] = ˙⋁_{k∈K}pr (ξ, P_{k})

(2) We have

pr (ξ, J)

= pr (ξ, ⋃_{k∈K}P_{k})

= [ξ_{i}|i ∈ ⋃_{k∈K}P_{k}]

= ˙⋁_{k∈K}[ξ_{i}|i ∈ P_{k}] due to (1)

(3) π is a record partition, so the dom(π_{k}) are pairwise disjunct. With P_{k} ⊆ dom(π_{k}), the P_{k} are pairwise disjunct as well and [P_{k}|k ∈ K] is a class partition. We can apply (2) and obtain

\begin{aligned}pr ( ˙⋁_{k∈K}π_{k}, ⋃_{k∈K}P_{k}) & = & ˙⋁_{k∈K}pr ( ˙⋁_{k∈K}π_{k}, P_{k}) \\ & = & ˙⋁_{k∈K}pr (π_{k}, P_{k}) \end{aligned}

16.3 Relative distinctness

16.3.1 Definition

Two graphs (i.e. record classes) Γ and Δ are called

\underline{relatively distinct}, written Γ ≬ Δ , if ξ ≬ υ for all ξ ∈ Γ and υ ∈ Δ. A graph record [Γ_{k}|k ∈ K] is called ♣ \underline{relatively distinct}, if Γ_{i} ≬ Γ_{j} for all i, j ∈ K with i ≠ j.

♣ \underline{proper}, if Γ_{k} ≠ ∅ for all k ∈ K Graphs Γ_{1}, …, Γ_{n} are called \underline{relatively distinct}, written

Γ_{1} ≬ … ≬ Γ_{n} , if ⟨Γ_{1}, …, Γ_{n}⟩ is relatively distinct.

16.3.2 Example

Let

\begin{aligned}Γ & = & \{⟨⟩, [ a ↦ 1 ] , [ \begin{matrix}a & ↦ & 2 \\ b & ↦ & 3 \end{matrix} ]\} \\ Δ & = & ∅ \\ Σ & = & \{⟨⟩, [ \begin{matrix}c & ↦ & 4 \\ d & ↦ & 3 \end{matrix} ]\} \end{aligned}

then Γ ≬ Δ, Γ ≬ Σ, and Δ ≬ Σ. In other words, Γ ≬ Δ ≬ Σ.

Recall, that this is the relative distinctness. For the (pairwise) distinctness (see definition 10.3.4) of each of the three graphs holds: Δ and Σ are (pairwise) distinct each. But Γ is not, because

[ a ↦ 1 ] ≬̸ [ \begin{matrix}a & ↦ & 2 \\ b & ↦ & 3 \end{matrix} ]

However, Γ ≬ Δ ≬ Σ is saying that a graph record with these three graphs as values, say ⟨Γ, Δ, Σ⟩, is a relatively distinct graph record. If we generate

⟨@(Γ), @(Δ), @(Σ)⟩ = ⟨{a, b} , ∅, {c, d}⟩

we see that this is a class partition. In fact, it is a class partition exactly because the graph record ⟨Γ, Δ, Σ⟩ is relatively distinct. This gives us an alternative criterion of relative distinctness. Yet another equivalent criterion comes with the schema record

⟨x(Γ), x(Δ), x(Σ)⟩

= ⟨[ \begin{matrix}a & ↦ & \{1, 2\} \\ b & ↦ & \{3\} \end{matrix} ] , ⟨⟩, [ \begin{matrix}c & ↦ & \{4\} \\ d & ↦ & \{3\} \end{matrix} ]⟩

This schema record is a schema partition.

16.3.3 Lemma

If Γ = [Γ_{k}|k ∈ K] is a relatively distinct graph record, then every member of Incl(Γ), i.e. every graph record Γ′ = [Γ′_{k}|k ∈ K] with Γ′ ⊆ Γ, is relatively distinct as well.

16.3.4 Proof of 16.3.3

This is quite obvious. If Γ′ ⊆ Γ, then Γ′_{k} ⊆ Γ_{k} for all k ∈ K. So the fact that Γ_{i} ≬ Γ_{j} holds for all i, j ∈ K, i ≠ j, immediately implies Γ′_{i} ≬ Γ′_{j}.

16.3.5 Lemma

Let Γ = [Γ_{k}|k ∈ K] be a graph record. Then the following statements are equivalent:

(1) Γ is relatively distinct.

(2) [@(Γ_{k})|k ∈ K] is a class partition.

(3) There is a class partition [P_{k}|k ∈ K] such that [@(Γ_{k})|k ∈ K] ⊆ [P_{k}|k ∈ K].

(4) [x(Γ_{k})|k ∈ K] is a schema partition.

(5) There is a schema partition [σ_{k}|k ∈ K] with x(Γ_{k}) ⊆ σ_{k} for every k ∈ K.

(6) There is a schema partition [σ_{k}|k ∈ K] with Γ ⊆ [⊛σ_{k}|k ∈ K].

16.3.6 Proof of 16.3.5

Let Γ = [Γ_{k}|k ∈ K] be the given graph record. (1)⇔ (2) We have

Γ is relatively distinct

iff ξ ≬ υ for all i, j ∈ K, i ≠ j and all ξ ∈ Γ_{i} and υ ∈ Γ_{j}
iff dom(ξ) ∩ dom(υ) = ∅

for all i, j ∈ K, i ≠ j and all ξ ∈ Γ_{i} and υ ∈ Γ_{j}

iff ⋃{dom(ξ) | ξ ∈ Γ_{i}} ∩ ⋃{dom(υ) | υ ∈ Γ_{u}} = ∅
for all i, j ∈ K, i ≠ j
iff @(Γ_{i}) ∩ @(Γ_{j}) = ∅ for all i, j ∈ K, i ≠ j
iff [@(Γ_{k})|k ∈ K] is a class partition

(2)⇔(3) see lemma 16.1.3. (2)⇔(4) [@(Γ_{k})|k ∈ K] = doms([x(Γ_{k})|k ∈ K] so accord-

ing to 16.2.4, [x(Γ_{k})|k ∈ K] is a record/schema partition iff [@(Γ_{k})|k ∈ K] is a class partition.

(4)⇔(5) see lemma 16.2.8. (1)⇔(6) If Γ is relatively distinct, then [x(Γ_{k})|k ∈ K] is a

schema partition according to (4) and Γ_{k} ⊆ ⊛x(Γ_{k}) according to 15.1.4(2) for each k ∈ K. On the other hand, if there is a schema partition [σ_{k}|k ∈ K] with Γ ⊆ [⊛σ_{k}|k ∈ K], then all k, l ∈ K with k ≠ l satisfy dom(σ_{k}) ∩ dom(σ_{l}) = ∅ and thus @(Γ_{k}) ∩ @(Γ_{l}) = ∅. In other words, Γ_{k} ≬ Γ_{l} and Γ is relatively distinct.

16.3.7 Lemma

If [σ_{k}|k ∈ K] is a schema partition, then each of the following three graph records

[⊛σ_{k}|k ∈ K] [⊗σ_{k}|k ∈ K] [⊕σ_{k}|k ∈ K] is relatively distinct.

16.3.8 Proof of 16.3.7

Let i, j ∈ K with i ≠ j and let ξ_{i} ∈ ⊛σ_{i} and ξ_{j} ∈ ⊛σ_{j}. Then dom(ξ_{i}) ⊆ dom(σ_{i}) and dom(ξ_{j}) ⊆ dom(σ_{j}). [σ_{k}|k ∈ K] is a schema partition, so dom(σ_{i}) ∩ dom(σ_{j}) = ∅. Therefore dom(ξ_{i}) ∩ dom(ξ_{j}) = ∅, i.e. ⊛σ_{i} ≬ ⊛σ_{j}, i.e. [⊛σ_{k}|k ∈ K] is relatively distinct. For every k ∈ K, ⊗σ_{k} ⊆ ⊛σ_{k} and ⊕σ_{k} ⊆ ⊛σ_{k}, so [⊗σ_{k}|k ∈ K] ⊆ [⊛σ_{k}|k ∈ K] and [⊕σ_{k}|k ∈ K] ⊆ [⊛σ_{k}|k ∈ K]. With 16.3.3 we infer that both graph records are relatively distinct, too.

16.4 Distinct products

16.4.1 Definition

If Γ = [Γ_{k}|k ∈ K] is a relatively distinct graph record, then

⊙Γ := ⊙_{k∈K}Γ := { ˙⋁ ρ | ρ ∈ ⊗Γ}

is the \underline{distinct product} of Γ

And for graphs Γ_{1}, …, Γ_{n} with Γ_{1} ≬ … ≬ Γ_{n} we define

Γ_{1} ⊙ … ⊙ Γ_{n} := ⊙^{n}_{i=1}Γ_{i} := ⊙⟨Γ_{1}, …, Γ_{n}⟩

the \underline{distinct product} of Γ_{1}, …, Γ_{n}

16.4.2 Remark (1) Note, that the ⊙Γ is well–defined, because the relative distinctness of Γ guarantees that ˙⋁ρ exists for each ρ = [ρ_{k}|k ∈ K] ∈ ⊗Γ.

(2) For graphs Γ_{1}, …, Γ_{n} with Γ_{1} ≬ … ≬ Γ_{n} we obtain

Γ_{1} ⊙ … ⊙ Γ_{n} = \begin{cases}\{⟨⟩\} & if n = 0 \\ Γ_{1} & if n = 1 \\ \{ \frac{ρ_{1} ˙∨ … ˙∨ ρ_{n}}{ρ_{1} ∈ Γ_{1}, …, ρ_{n} ∈ Γ_{n}} \} & else \end{cases}

(3) An immediate consequence of its definition are the associativity and commutativity (see lemma 16.4.3 below). We may place parentheses arbitrarily:

Γ_{1} ⊙ Γ_{2} ⊙ Γ_{3} = (Γ_{1} ⊙ Γ_{2}) ⊙ Γ_{3} = Γ_{1} ⊙ (Γ_{2} ⊙ Γ_{3}) where each of the three terms is well–defined iff the other two are.

16.4.3 Lemma

If Γ, Δ, Σ are pairwise distinct record classes, i.e. Γ ≬ Δ ≬ Σ, then

(1) (Γ ⊙ Δ) ⊙ Σ = Γ ⊙ (Δ ⊙ Σ) (associativity of ⊙)

(2) Γ ⊙ Δ = Δ ⊙ Γ (commutativity of ⊙)

(3) Γ ⊙ ∅ = ∅ (⊙ with empty class)

(4) Γ ⊙ {⟨⟩} = Γ (⊙ with empty product)

16.4.4 Proof of 16.4.3

(1) For all ξ ∈ Γ, υ ∈ Δ, ζ ∈ Σ holds ξ ˙∨ υ ˙∨ ζ = (ξ ˙∨ υ) ˙∨ ζ = ξ ˙∨ (υ ˙∨ ζ), so Γ ⊙ Δ ⊙ Σ = (Γ ⊙ Δ) ⊙ Σ = Γ ⊙ (Δ ⊙ Σ).

(2) Γ ⊙ Δ = {ξ ˙∨ υ | ξ ∈ Γ, υ ∈ Δ} = {υ ˙∨ ξ | υ ∈ Δ, ξ ∈ Γ} = Δ ⊙ Γ.

(3) Γ ⊙ ∅ = {ξ ˙∨ υ | ξ ∈ ξ, υ ∈ ∅} = ∅

(4) Γ ⊙ Δ = {ξ ˙∨ υ | ξ ∈ Γ, υ ∈ {⟨⟩}} = {ξ ˙∨ ⟨⟩ | ξ ∈ Γ} = Γ.

16.4.5 Example

Take the graphs Γ, Δ, Σ from 16.3.2 again. Due to their relative distinctness, the following two examples of distinct products are well defined:

Γ ⊙ Σ = \begin{cases}⟨⟩, [ a ↦ 1 ] , [ \begin{matrix}a & ↦ & 2 \\ b & ↦ & 3 \end{matrix} ] , [ \begin{matrix}c & ↦ & 4 \\ d & ↦ & 3 \end{matrix} ] , \\ [ \begin{matrix}a & ↦ & 1 \\ c & ↦ & 4 \\ d & ↦ & 3 \end{matrix} ] , [ \begin{matrix}a & ↦ & 2 \\ b & ↦ & 3 \\ c & ↦ & 4 \\ d & ↦ & 3 \end{matrix} ] \end{cases}\}

Γ ⊙ Δ ⊙ Σ = {γ ˙∨ δ ˙∨ σ | γ ∈ Γ, δ ∈ ∅, σ ∈ Σ} = ∅

16.4.6 Remark

Consider the cardinalities of the graphs and their products in the previous example 16.4.5:

card(Γ ⊙ Σ) = 6 = 3 · 2 = card(Γ) · card(Σ)

card(Γ ⊙ Δ ⊙ Σ) = 0 = 3 · 0 · 2 = card(Γ) · card(Δ) · card(Σ)

This behavior is typical for distinct products (hence one motivation for the term “product”) as we will point out in lemma 16.4.10 below. Obviously, the distinct product Γ ⊙ Δ ⊙ Σ has the same cardinality than the cartesian product Γ × Δ × Σ. There is even a bijection between the cartesian and the distinct product and this correspondence allows us to uniquely reconstruct the arguments from the result.

16.4.7 Lemma

Let Γ = [Γ_{k}|k ∈ K] be relatively distinct graph record, then

π_{Γ} := [ \begin{matrix}⊗Γ ⟶ ⊙Γ \\ ρ ↦ ˙⋁ ρ \end{matrix} ]

π_{Γ} is a bijection with the inverse

π_{Γ}^{−1} = [ \begin{matrix}⊙Γ ⟶ ⊗Γ \\ ξ ↦ [ pr (ξ, dom(ξ) ∩ @(Γ_{k})) k ∈ K ] \end{matrix} ]

Furthermore, if P = [P_{k}|k ∈ K] a class partition with [@(Γ_{k})|k ∈ K] ⊆ P, then

π_{Γ}^{−1} = [ \begin{matrix}⊙Γ ⟶ ⊗Γ \\ ξ ↦ [ pr (ξ, dom(ξ) ∩ P_{k}) k ∈ K ] \end{matrix} ]

16.4.8 Proof of 16.4.7

First of all, let us mention that ⊙Γ and the function π_{Γ} are well defined because Γ is relatively distinct. π_{Γ} is ought to be a bijection, i.e. it must surjective and injective. The surjectivity is a trivial truth, ⊙Γ is in 16.4.1 just defined to be the image class {π_{γ}(ρ) | ρ ∈ ⊗Γ} of π_{Γ}. It remains to show that π_{Γ} is injective as well. Let ρ = [ρ_{k}|k ∈ K] and ρ′ = [ρ′_{k}|k ∈ K] be any two members of ⊗Γ, i.e. ρ_{k} ∈ Γ_{k} and ρ′_{k} ∈ Γ_{k} for all k ∈ K. We put ξ := π_{Γ}(ρ) = ˙⋁ {ρ_{k} | k ∈ K} and ξ′ := π_{Γ}(ρ′). Suppose, ρ ≠ ρ′. This means, there has to be a k ∈ K with ρ_{k} ≠ ρ′_{k}. These ρ_{k} and ρ′_{k} are records and not being equal means either (a) dom(ρ_{k}) ≠ dom(ρ′_{k}) or (b)dom(ρ_{i}) = dom(ρ′_{k}) and ρ_{k}(i) ≠ ρ′_{k}(i) for some i ∈ dom(ρ_{k}). If (a) is the case, dom(ρ_{k}) ≠ dom(ρ′_{k}) implies dom(ξ) = ⋃{dom(ρ_{k}) | k ∈ K} ≠ ⋃{dom(ρ′_{k}) | k ∈ K} = dom(ξ′), thus ξ ≠ ξ′. If (b) is the case, then ξ(i) ≠ ξ′(i) for some i ∈ dom(ρ_{k}), thus again ξ ≠ ξ′. So π_{Γ} is indeed injective.

Since π_{Γ} is a bijection, it has an inverse π_{Γ}^{−1}, i.e. π_{Γ}^{−1} : ⊙Γ ⟶ ⊗Γ with π_{Γ}^{−1}(π_{Γ}(ρ)) = ρ for all ρ ∈ ⊗Γ. We gave a characterization of π_{Γ}^{−1} in our lemma above and we now need to ensure that this characterization is correct. So let ρ = [ρ_{k}|k ∈ K] = [[ρ_{k,l}|l ∈ L_{k}]|k ∈ K] ∈ ⊗Γ and ξ := π_{Γ}(ρ). Note, that dom(ξ) = ⋃{L_{k} | k ∈ K} and dom(ξ) ∩ @(Γ_{k}) = L_{k} for every k ∈ K. So applying our definition of π_{Γ}^{−1} on ξ we obtain π_{Γ}^{−1}(ξ) := [pr (ξ, dom(ξ) ∩ @(Γ_{k})) |k ∈ K] = [pr (ξ, L_{k}) |k ∈ K] = [ρ_{k}|k ∈ K] = ρ. Our characterization of π_{Γ}^{−1} is indeed correct.

Finally, let us assume that P = [P_{k}|k ∈ K] is a class partition with [@(Γ_{k})|k ∈ K] ⊆ P. Again let ρ = [ρ_{k}|k ∈ K] = [[ρ_{k,l}|l ∈ L_{k}]|k ∈ K] ∈ ⊗Γ and ξ := π_{Γ}(ρ). Note, that for all k_{1}, k_{2} ∈ K, k_{1} = k_{2} implies Γ_{k1} ⊆ P_{k2} and k_{1} ≠ k_{2} implies Γ_{k1} ∩ P_{k2} = ∅. That leads to dom(ξ) ∩ P_{k} = L_{k} for each k ∈ K. So applying the second characterization of π_{Γ}^{−1} on ξ we obtain π_{Γ}^{−1}(ξ) := [pr (ξ, dom(ξ) ∩ P_{k}) |k ∈ K] = [pr (ξ, L_{k}) |k ∈ K] = [ρ_{k}|k ∈ K] = ρ.

16.4.9 Example

Consider the graphs

\begin{aligned}Γ & = & \{⟨⟩, [ a ↦ 1 ] , [ \begin{matrix}a & ↦ & 2 \\ b & ↦ & 3 \end{matrix} ]\} \\ Δ & = & ∅ \\ Σ & = & \{⟨⟩, [ \begin{matrix}c & ↦ & 4 \\ d & ↦ & 3 \end{matrix} ]\} \end{aligned}

again with Γ ≬ Δ ≬ Σ. So

⟨Γ, Σ⟩ := [ \begin{matrix}1 & ↦ & \{⟨⟩, [ a ↦ 1 ] , [ \begin{matrix}a & ↦ & 2 \\ b & ↦ & 3 \end{matrix} ]\} \\ 2 & ↦ & \{⟨⟩, [ \begin{matrix}c & ↦ & 4 \\ d & ↦ & 3 \end{matrix} ]\} \end{matrix} ]

is a relatively distinct graph record and its distinct product Γ ⊙ Σ is well–defined with the result given in 16.4.5.

The function π_{⟨Γ,Σ⟩} is a reconstruction of Γ ⊙ Σ. It is given by

π_{⟨Γ,Σ⟩} = [ \begin{matrix}& Γ × Σ ⟶ Γ ⊙ Σ \\ [ & \begin{matrix}⟨⟨⟩, ⟨⟩⟩ & ↦ & ⟨⟩ \\ ⟨⟨⟩, [ \begin{matrix}c & ↦ & 4 \\ d & ↦ & 3 \end{matrix} ]⟩ & ↦ & [ \begin{matrix}c & ↦ & 4 \\ d & ↦ & 3 \end{matrix} ] \\ ⟨[ a ↦ 1 ] , ⟨⟩⟩ & ↦ & [ a ↦ 1 ] \\ ⟨[ a ↦ 1 ] , [ \begin{matrix}c & ↦ & 4 \\ d & ↦ & 3 \end{matrix} ]⟩ & ↦ & [ \begin{matrix}a & ↦ & 1 \\ c & ↦ & 4 \\ d & ↦ & 3 \end{matrix} ] \\ ⟨[ \begin{matrix}a & ↦ & 2 \\ b & ↦ & 3 \end{matrix} ] , ⟨⟩⟩ & ↦ & [ \begin{matrix}a & ↦ & 2 \\ b & ↦ & 3 \end{matrix} ] \\ ⟨[ \begin{matrix}a & ↦ & 2 \\ b & ↦ & 3 \end{matrix} ] , [ \begin{matrix}c & ↦ & 4 \\ d & ↦ & 3 \end{matrix} ]⟩ & ↦ & [ \begin{matrix}a & ↦ & 2 \\ b & ↦ & 3 \\ c & ↦ & 4 \\ d & ↦ & 3 \end{matrix} ] \end{matrix} & ] \end{matrix} ]

Obviously, it is a bijection, and its inverse is

π_{⟨Γ,Σ⟩}^{−1} = [ \begin{matrix}Γ ⊙ Σ ⟶ Γ × Σ \\ ξ ↦ ⟨pr (ξ, dom(ξ) ∩ \{1\}) , pr (ξ, dom(ξ) ∩ \{2\})⟩ \end{matrix} ]

Another example of a relatively distinct graph record is

⟨Γ, Δ, Σ⟩ := [ \begin{matrix}1 & ↦ & \{⟨⟩, [ a ↦ 1 ] , [ \begin{matrix}a & ↦ & 2 \\ b & ↦ & 3 \end{matrix} ]\} \\ 2 & ↦ & ∅ \\ 3 & ↦ & \{⟨⟩, [ \begin{matrix}c & ↦ & 4 \\ d & ↦ & 3 \end{matrix} ]\} \end{matrix} ]

But here, their cartesian as well as their distinct product is empty, i.e. Γ × Δ × Σ = Γ ⊙ Δ ⊙ Σ = ∅. So π_{⟨Γ,Δ,Σ⟩} : ∅ ⟶ ∅ is the empty function, but by definition it is a bijection which is identical with its inverse π_{⟨Γ,Δ,Σ⟩}^{−1} : ∅ ⟶ ∅.

16.4.10 Lemma

If Γ = [Γ_{k}|k ∈ K] is a relatively distinct graph record, then

card (⊙Γ) = ∏_{k∈K}card(Γ_{k})

16.4.11 Proof of 16.4.10

According to 16.4.7, there is a bijection between ⊙Γ and ⊗Γ, so card(⊙Γ) = card(⊗Γ). And according to 12.1.9, card(⊗Γ) = ∏_{k∈K}card(Γ_{k}).

16.5 Projections of graphs

16.5.1 Definition

For every graph Γ and each class J we define

pr (Γ, J) := {pr (ξ, dom(ξ) ∩ J) | ξ ∈ Γ}

the \underline{projection} of Γ onto J

16.5.2 Lemma

If [Γ_{k}|k ∈ K] is a relatively distinct graph record and J any class, then

pr (⊙[Γ_{k}|k ∈ K], J) = ⊙[pr (Γ_{k}, @(Γ_{k}) ∩ J) |k ∈ K]

16.5.3 Proof of 16.5.2

pr (⊙[Γ_{k}|k ∈ K], J)

= {pr (ξ, dom(ξ) ∩ J) | ξ ∈ ⊙[Γ_{k}|k ∈ K]}

= \{ \frac{pr ( ˙⋁_{k∈K}ρ_{k}, ⋃_{k∈K} (dom(ρ_{k}) ∩ J))}{[ρ_{k}|k ∈ K] ∈ ⊗[Γ_{k}|k ∈ K]} \}

= { ˙⋁_{k∈K}pr (ρ^{k}, dom(ρ^{k}) ∩ J) [ρ^{k}|k ∈ K] ∈ ⊗[Γ^{k}|k ∈ K] }

= \{ ˙⋁_{k∈K}ρ{′ \atop k} [ρ{′ \atop k}|k ∈ K] ∈ ⊗[pr (Γ^{k}, @(Γ^{k}) ∩ J) |k ∈ K] \}

= ⊙[pr (Γ_{k}, @(Γ_{k}) ∩ J) |k ∈ K]

16.6 Distributivity

16.6.1 Lemma distributivity

Let X be a schema and Y, Z ∈ Proj(X) with Y ≬ Z. For all Γ_{1}, Γ_{2} ∈ P(⊛Y), every {Γ_{i} | i ∈ I} ⊆ P(⊛Y) and each Σ ∈ P(⊛Z) holds:

(1) (Γ_{1} ∩ Γ_{2}) ⊙ Σ = (Γ_{1} ⊙ Σ) ∩ (Γ_{2} ⊙ Σ)

(2) (Γ_{1} ∪ Γ_{2}) ⊙ Σ = (Γ_{1} ⊙ Σ) ∪ (Γ_{2} ⊙ Σ)

(3) (Γ_{1}\Γ_{2}) ⊙ Σ = (Γ_{1} ⊙ Σ)\(Γ_{2} ⊙ Σ)

(4) ⋃{Γ_{i} | i ∈ I} ⊙ Σ = ⋃{Γ_{i} ⊙ Σ | i ∈ I}

(5) If I ≠ ∅ then ⋂{Γ_{i} | i ∈ I} ⊙ Σ = ⋂{Γ_{i} ⊙ Σ | i ∈ I}

16.6.2 Proof of 16.6.1

Recall 5.7.18, that for every function φ : D ⟶ C and each D′ ⊆ D, the f–image class of D′ was written

φ[ D′ ] := {φ(d) | d ∈ D′}

We will make use of the fact, that if φ : D ⟶ C is a bijection, then

(a) for every {D_{i} | i ∈ I} ⊆ P(D) with I ≠ ∅ holds

φ[ ⋂{D_{i} | i ∈ I}] = ⋂{φ[ D_{i} ] | i ∈ I}

(b) for every {D_{i} | i ∈ I} ⊆ P(D) holds

φ[ ⋃{D_{i} | i ∈ I}] = ⋃{φ[ D_{i} ] | i ∈ I}

(c) for all D_{1}, D_{2} ∈ P(D) holds

φ[ D_{1} \ D_{2} ] = φ[ D_{1} ] \ φ[ D_{2} ]

Furthermore, we will use the facts (which are special cases of 12.4.3) that

(d) for every schema [C_{j}|j ∈ J], J ≠ ∅, and each class D,

⋂{C_{j} | j ∈ J} × D = ⋂{C_{j} × D | j ∈ J}

(e) for every schema [C_{j}|j ∈ J] and each class D,

⋃{C_{j} | j ∈ J} × D = ⋃{C_{j} × D | j ∈ J}

(f) for all classes C_{1}, C_{2} and D holds (C_{1} \ C_{2}) × D = (C_{1} × D) \ (C_{2} × D)

If Γ ∈ P(⊛Y) and Σ ∈ P(⊛Z), then Y ≬ Z implies ⊛Y ≬ ⊛Z and Γ ≬ Σ, so that ⊛Y ⊙⊛Z and Γ⊙Σ are well–defined. Using the image class notation and the definition of the bijection in 16.4.7, we have

(g) Γ ⊙ Σ = π_{⟨⊛Y,⊛Z⟩}[ Γ × Σ ]

We can now put everything together:

(4) For every {Γ_{i} | i ∈ I} ⊆ P(⊛Y) and Σ ∈ P(⊛Z) holds

⋃{Γ_{i} | i ∈ I} ⊙ Γ
= π_{⟨⊛Y,⊛Z⟩}[ ⋃{Γ_{i} | i ∈ I} × Σ ] due to (g)
= π_{⟨⊛Y,⊛Z⟩}[ ⋃{Γ_{i} × Σ | i ∈ I}] due to (e)
= ⋃ { π_{⟨⊛Y,⊛Z⟩}[ Γ_{i} ⊙ Σ ] i ∈ I } due to (b)
= ⋃{Γ_{i} ⊙ Σ | i ∈ I}  due to (g)

(5) If additionally I ≠ ∅, then

⋂{Γ_{i} | i ∈ I} ⊙ Γ
= π_{⟨⊛Y,⊛Z⟩}[ ⋂{Γ_{i} | i ∈ I} × Σ ] due to (g)
= π_{⟨⊛Y,⊛Z⟩}[ ⋂{Γ_{i} × Σ | i ∈ I}] due to (d)
= ⋂ { π_{⟨⊛Y,⊛Z⟩}[ Γ_{i} ⊙ Σ ] i ∈ I } due to (a)
= ⋂{Γ_{i} ⊙ Σ | i ∈ I}  due to (g)

(1) For every Γ_{1}, Γ_{2} ∈ P(⊛Y) and Σ ∈ P(⊛Z), (1) is just two

def. 16.5.2 def. 16.4.1 due to 16.2.10(3)

def. 16.5.2 def. 16.4.1 again

special cases of (5) with I = {1, 2}

(2) Similar to (1), (2) is a special case of (4).

(3) There is

(Γ_{1} \ Γ_{2}) ⊙ Σ
= π_{⟨⊛Y,⊛Z⟩}[ (Γ_{1} \ Γ_{2}) × Σ ]  due to (g)
= π_{⟨⊛Y,⊛Z⟩}[ (Γ_{1} × Σ) \ (Γ_{2} × Σ) ]  due to (f)
= π_{⟨⊛Y,⊛Z⟩}[ Γ_{1} \ Σ ] \ π_{⟨⊛Y,⊛Z⟩}[ Γ_{2} \ Σ ] due to (c)
= (Γ_{1} ⊙ Σ) \ (Γ_{2} ⊙ Σ)  due to (g)

16.6.3 Remark more general products

The distinct product is only partially defined, it is restricted to relatively distinct graphs. It is not difficult to find more general definitions of “graph products” (see the ▷◁ operator below). But the constraint pays off: the distributivity with the class operations (given in 16.6.1) holds for the distinct product, but is violated for generalizations like the following ▷◁.

Suppose, we define for any two (not necessarily relatively distinct) record classes Γ and Σ a more general product ▷◁ by putting^{31}

Γ ▷◁ Σ := {ξ ∨ υ | ξ ∈ Γ, υ ∈ Σ, ξ ⌣ υ}

Obviously, if Γ ≬ Σ, then Γ ▷◁ Σ = Γ ⊙ Σ and ▷◁ is a generalization of ⊙.

But a distributivity statement like

(Γ_{1} ∩ Γ_{2}) ▷◁ Σ = (Γ_{1} ▷◁ Σ) ∩ (Γ_{2} ▷◁ Σ)

is not true in general. For example, let

\begin{aligned}Γ_{1} & = & \{[ a ↦ 1 ]\} \\ Γ_{2} & = & \{[ b ↦ 2 ]\} \\ Σ & = & \{[ a ↦ 1 ] , [ b ↦ 2 ]\} \end{aligned}

then

(Γ_{1} ∩ Γ_{2}) ▷◁ Σ
= ∅ ▷◁ Σ
= ∅
≠ \{[ \begin{matrix}a & ↦ & 1 \\ b & ↦ & 2 \end{matrix} ]\}

= \{[ a ↦ 1 ] , [ \begin{matrix}a & ↦ & 1 \\ b & ↦ & 2 \end{matrix} ]\} ∩ \{[ b ↦ 2 ] , [ \begin{matrix}a & ↦ & 1 \\ b & ↦ & 2 \end{matrix} ]\}
= (Γ_{1} ▷◁ Σ) ∩ (Γ_{2} ▷◁ Σ)

16.6.4 Remark

There is another form of distributivity in connection with distinct products. Suppose, X_{1}, …, X_{n} are schemas with X_{1} ≬ … ≬ X_{n}. In other words, they make are a schema partition of X = X_{1} ˙∨ … ˙∨ X_{n}. Then it doesn’t matter if we either first generate their cartesian products ⊗X_{i} and then the distinct product of these cartesian graphs, or if we first join these (pairwise) distinct schemas and then generate their cartesian product. Put formally, (⊗X_{1}) ⊙ … ⊙ (⊗X_{n}) = ⊗(X_{1} ˙∨ … ˙∨ X_{n}) = ⊗X. A similar statement holds for the star product ⊛X.

16.6.5 Lemma

If [σ_{k}|k ∈ K] is a schema partition of a schema X, then

(1) ⊛X = ⊙[⊛σ_{k}|k ∈ K]

(2) ⊗X = ⊙[⊗σ_{k}|k ∈ K]

So in particular, if X_{1}, …, X_{n} are (two or more) schemas with X_{1} ≬ … ≬ X_{n}, then

(3) (⊛X_{1}) ⊙ … ⊙ (⊛X_{n}) = ⊛(X_{1} ˙∨ … ˙∨ X_{n})

(4) (⊗X_{1}) ⊙ … ⊙ (⊗X_{n}) = ⊗(X_{1} ˙∨ … ˙∨ X_{n})

16.6.6 Proof of 16.6.5

Let σ = [σ_{k}|k ∈ K] = [[σ_{k,l}|l ∈ L_{k}]|k ∈ K] and X = [X_{i}|i ∈ I] be given, where σ is a schema partition of X.

(1) Since σ is a schema partition of X, there is (see 16.2.7)

σ_{k,l} = X_{l} for all k ∈ K and l ∈ L_{k}

as mentioned in 16.2.7. From 16.2.3 and 16.2.4 we know that [L_{k}|k ∈ K] is a class partition of I, so

⋃{L_{k} | k ∈ K} = I

This implies the following equation

{ ⋃_{k∈K}M_{k} | [M_{k}|k ∈ K] ⊆ [L_{k}|k ∈ K]} = {J | J ⊆ I}

which we will use below. Now,

⊛σ_{k} = \{ [ρ_{j}|j ∈ M] \begin{matrix}M ⊆ L_{k}, \\ ρ_{j} ∈ X_{j} for all j ∈ M \end{matrix} \}

for each k ∈ K, so that

⊙[⊛σ_{k}|k ∈ K]
= { ˙⋁ ρ | ρ ∈ ⊗[⊛σ_{k}|k ∈ K]}

= \{ ˙⋁ ρ ρ ∈ \{ \begin{matrix}[[ρ_{j}|j ∈ M_{k}]|k ∈ K] \\ [M_{k}|k ∈ K] ⊆ [L_{k}|k ∈ K], \\ ρ_{j} ∈ X_{j} for all k ∈ K and j ∈ M_{k} \end{matrix} \} \}

= \{ [ρ_{j}|j ∈ ⋃_{k∈K}M_{k}] \begin{matrix}[M_{k}|k ∈ K] ⊆ [L_{k}|k ∈ K], \\ ρ_{j} ∈ X_{j} for all j ∈ ⋃_{k∈K}M_{k} \end{matrix} \}

= \{ [ρ_{j}|j ∈ J] \begin{matrix}J ⊆ I \\ ρ_{j} ∈ X_{j} for all j ∈ J \end{matrix} \}
= ⊛[X_{i}|i ∈ I]
= ⊛X

(2) For every k ∈ K,

⊗σ_{k} = {[ρ_{j}|j ∈ L_{k}] | ρ_{j} ∈ X_{j} for all j ∈ L_{k}} so that

⊙[⊛σ_{k}|k ∈ K]
= { ˙⋁ ρ | ρ ∈ ⊗[⊗σ_{k}|k ∈ K]}
= \{ ˙⋁ ρ ρ ∈ \{ \frac{[[ρ_{j}|j ∈ L_{k}]|k ∈ K]}{ρ_{j} ∈ X_{j} for all k ∈ K and j ∈ L_{k}} \} \}

= \{ \frac{[ρ_{j}|j ∈ ⋃_{k∈K}L_{k}]}{ρ_{j} ∈ X_{j} for all k ∈ K and j ∈ L_{k}} \}

= {[ρ_{j}|j ∈ I] | ρ_{j} ∈ X_{j} for all j ∈ I}
= ⊗X

If X_{1}, …, X_{n} are (two or more) schemas with X_{1} ≬ … ≬ X_{n}, then ⟨X_{1}, …, X_{n}⟩ is a schema partition of X_{1} ˙∨ … ˙∨ X_{n}. Thus

31 The notation ▷◁ resembles the natural join operation ▷◁ on relations, a common operation and notation in relational databank theory.

(3) is just is special case of (1), and

(4) derives from (2)

16.6.7 Example

Let

X = [ \begin{matrix}a ↦ & \{1, 2\} \\ b ↦ & \{3\} \\ c ↦ & \{2, 3\} \end{matrix} ]

A schema partition of X is given by ⟨X_{1}, X_{2}⟩ with

X_{1} = [ \begin{matrix}a ↦ & \{1, 2\} \\ b ↦ & \{3\} \end{matrix} ] and X_{2} = [ c ↦ \{2, 3\} ]

A verification of 16.6.5(4) is then given by:

(⊗X_{1}) ⊙ (⊗X_{2})

= ⊙⟨⊗X_{1}, ⊗X_{2}⟩
= { ˙⋁ ρ ρ ∈ ⊗⟨⊗X_{1}, ⊗X_{2}⟩ }
= \{ ˙⋁ ρ ρ ∈ \{ [ \begin{matrix}1 ↦ & ρ_{1} \\ 2 ↦ & ρ_{2} \end{matrix} ] \begin{matrix}ρ_{1} ∈ ⊗X_{1} \\ ρ_{2} ∈ ⊗X_{2} \end{matrix} \} \}

= \{ ˙⋁ ρ ρ ∈ \{ [ \begin{matrix}1 ↦ & [ \begin{matrix}a ↦ & ρ_{1,a} \\ b ↦ & ρ_{1,b} \end{matrix} ] \\ 2 ↦ & [ c ↦ ρ_{2,c} ] \end{matrix} ] \begin{matrix}ρ_{1,a} ∈ \{1, 2\} \\ ρ_{1,b} ∈ \{3\} \\ ρ_{2,c} ∈ \{2, 3\} \end{matrix} \} \}

= \{ [ \begin{matrix}a ↦ & ρ_{1,a} \\ b ↦ & ρ_{1,b} \\ c ↦ & ρ_{2,c} \end{matrix} ] \begin{matrix}ρ_{1,a} ∈ \{1, 2\} \\ ρ_{1,b} ∈ \{3\} \\ ρ_{2,c} ∈ \{2, 3\} \end{matrix} \}

= \{ [ \begin{matrix}a ↦ & ρ_{a} \\ b ↦ & ρ_{b} \\ c ↦ & ρ_{c} \end{matrix} ] \begin{matrix}ρ_{a} ∈ \{1, 2\} \\ ρ_{b} ∈ \{3\} \\ ρ_{c} ∈ \{2, 3\} \end{matrix} \}

= ⊗ [ \begin{matrix}a ↦ & \{1, 2\} \\ b ↦ & \{3\} \\ c ↦ & \{2, 3\} \end{matrix} ]

= ⊗ ([ \begin{matrix}a ↦ & \{1, 2\} \\ b ↦ & \{3\} \end{matrix} ] ˙∨ [ c ↦ \{2, 3\} ])
= ⊗(X_{1} ˙∨ X_{2})

16.6.8 Lemma

For every schema X = [X_{i}|i ∈ I] holds:

(1) ⊙[⊛ [i ↦ X_{i}] |i ∈ I] = ⊛X

(2) ⊙[⊗ [i ↦ X_{i}] |i ∈ I] = ⊗X

(3) ⊙[⊕ [i ↦ X_{i}] |i ∈ I] = ⊗X

16.6.9 Proof of 16.6.8 [[i ↦ X_{i}] |i ∈ I] is obviously a schema partition of X. So

(1) is just a special case of 16.6.5(1), and

(2) is a special case of 16.6.5.

(3) There is ⊕ [i ↦ X_{i}] = ⊗ [i ↦ X_{i}], for every i ∈ I, so that

⊙[⊕ [i ↦ X_{i}] |i ∈ I] = ⊙[⊗ [i ↦ X_{i}] |i ∈ I] = ⊗X according to (2).

16.6.10 Example If we consider the schema

X = [ \begin{matrix}a ↦ & \{1, 2\} \\ b ↦ & \{3\} \\ c ↦ & \{2, 3\} \end{matrix} ]

from example 16.6.7 again and put

X_{a} := [a ↦ {1, 2}] X_{b} := [b ↦ {3}] X_{c} := [c ↦ {2, 3}]

we obtain a confirmation of 16.6.8 by

(⊛X_{a}) ⊙ (⊛X_{b}) ⊙ (⊛X_{c})
= \begin{cases}⟨⟩, \\ [a ↦ 1] , \\ [a ↦ 2] \end{cases}\} ⊙ \begin{cases}⟨⟩, \\ [b ↦ 3] \end{cases}\} ⊙ \begin{cases}⟨⟩, \\ [c ↦ 2] , \\ [c ↦ 3] \end{cases}\}
= ⊛X
(⊗X_{a}) ⊙ (⊗X_{b}) ⊙ (⊗X_{c})
= \begin{cases}[a ↦ 1] , \\ [a ↦ 2] \end{cases}\} ⊙ \{[b ↦ 3]\} ⊙ \begin{cases}[c ↦ 2] , \\ [c ↦ 3] \end{cases}\}
= ⊗X
(⊕X_{a}) ⊙ (⊕X_{b}) ⊙ (⊕X_{c})
= \begin{cases}[a ↦ 1] , \\ [a ↦ 2] \end{cases}\} ⊙ \{[b ↦ 3]\} ⊙ \begin{cases}[c ↦ 2] , \\ [c ↦ 3] \end{cases}\}
= ⊗X

98

Part VII Relations

17 Relations

17.1 Introduction

17.1.1 Remark a more general relation concept

We already introduced and used quite a lot ordinary (or ordinal) relations, they are essential and standard in mathematics.^{32} In database theory there is another relation concept, the partial table, as we call it here. We will now introduce a more general definition of a (schematic) relation which is able to treat both ordinary relations and partial tables as special cases.

schematic relation

ordinary relation (mathematics)

partial table (database theory)

[figure]

[figure]

17.1.2 Remark representations

One main objective here in chapter VII is an understanding of the many ways in which relations can be represented. This whole variation may be tiresome at first, but it really pays off for a good understanding of the many facets of these things called relations. ♣ Our default and most general representation is conform to

the standard appearance of operations

[ \begin{matrix}syntax \\ semantics \end{matrix} ]

described in 4.3.1 and 5.3, which was already applied to ordinary relations. However, even this representation has some variations, which are supposed to be convenient, not confusing.

♣ Every relation R can be seen as a function, the character-

istic function χ_{R} (17.4.2). ♣ A certain subclass of relations, called tables (17.5.3), can be

represented as such. ♣ And a certain class of tables, called completely finite rela-

tions, can also be displayed by either their boolean tables (17.5.4) or their double tables (17.6.1).

♣ Allowing null values at first leads to a generalization and we call that a quasi–relation. But we will understand null values in a way that turns quasi–relations into relations again.

There are other suggestions for representations which are very suitable for implementations in common computer systems. But for now and our purposes here, that will do.

17.1.3 Remark partial tables and database theory A partial table (or Codd relation) is a table that allows possible null values, similar to a partial function that is a function with possibly undefined arguments. Partial tables are pretty much the kind of relations used in database theory. However, the terminology is not standard, just “table” or “relation” is more common. Neither is the interpretation of partial tables and null values seem to be undisputed, not even in database theory itself.

Our interpretation is closely related to our concept of relation expansions and that smoothly fits into an elegant algebra that is very close to the behavior of logic. That way we are probably more close to Codd’s original ideas than the various implementations of the relational database language SQL.^{33}

In 18 we introduce partial tables as a particular finite version of quasi–relations in general. And we will see, how these quasi–relations are well covered by our relation concept from 17 .

17.2 General definition

17.2.1 Definition relation

A \underline{relation} R is essentially made of a schema X and a graph Γ, where Γ ⊆ ⊗X. The default form for R is

R = [ \begin{matrix}X \\ Γ \end{matrix} ]  or  R = [X, Γ]

17.2.2 Definition relation

If R = [X, Γ] is a relation with X = [X_{i}|i ∈ I] we put

@(R)  := I  the \underline{attribute} or \underline{index} class of R
x(R)  := X  the \underline{schema} of R
gr(R)  := Γ  the \underline{graph} of R
dom(R) := ⊗X  the \underline{domain} of R
dom_{i}(R) := X_{i}  the \underline{i–domain} of R, for each i ∈ I

17.2.3 Remark deconstruction

(1) In other words, if R is an arbitrary relation R then

R = [ \begin{matrix}x(R) \\ gr(R) \end{matrix} ] = [ \begin{matrix}[dom_{i}(R)|i ∈ @(R)] \\ gr(R) \end{matrix} ]

32 At this point, it might be useful to recall the design of basic mathematical concepts in 4 and 5 , in particular the introduction of predicators and ordinary relations in 5.7.

33 See e.g. on wikipedia.org the according articles such as “Relational algebra”.

(2) Note, that for a given relation R = [X, Γ] with X = [X_{i}|i ∈ I], the domain of R and the domain of X are different things: dom(R) = ⊗X and dom(X) = @R = I. By a domain of an operation we mean the class of its possible arguments. For the schema X that is I, and for R that is the record class ⊗X.

17.2.4 Example relation

Let us consider the following schema

Date := [ \begin{matrix}year & ↦ & ℤ \\ month & ↦ & \{1, . . . , 12\} \\ day & ↦ & \{1, . . . , 31\} \\ title & ↦ & \{monday, . . . , sunday\} \end{matrix} ]

and two elements of its cartesian product ⊗Date

d_{1} := [ \begin{matrix}year & ↦ & 2003 \\ month & ↦ & 1 \\ day & ↦ & 18 \\ title & ↦ & saturday \end{matrix}]  d_{2} := [ \begin{matrix}year & ↦ & 2003 \\ month & ↦ & 1 \\ day & ↦ & 19 \\ title & ↦ & sunday \end{matrix}]

A relation is then given by

ThisWeekend := [ \begin{matrix}Date \\ \{d_{1}, d_{2}\} \end{matrix} ]

As we will define it properly below, a relation like this with a finite attribute class and a finite graph is usually better be represented by its \underline{graph table (diagram)} (see below in 17.5.4), which is

year :  month :  day :  title :

ℤ {1, …, 12} {1, …, 31} {monday, . . . , sunday}

2003       1           18            saturday
2003       1           19             sunday

A decomposition of ThisWeekend returns:

@(ThisWeekend) = {year, month, day, title}
x(ThisWeekend) = Date
dom(ThisWeekend) = ⊗Date
dom_{year}(ThisWeekend) = ℤ
dom_{month}(ThisWeekend) = {1, . . . , 12}

dom_{day}(ThisWeekend) = {1, …, 31}

dom_{title}(ThisWeekend) = {monday, . . . , sunday}

gr(ThisWeekend) = {d_{1}, d_{2}}

Another relation with the the same schema is the calendar of 2003, which has not only the two members d_{1} and d_{2}, but 365 records in its graph.

17.2.5 Definition membership

Let R = [X, Γ] be a relation. For every x ∈ dom(R) we write as usual:

x ∈ R

iff x ∈ Γ saying that x is a \underline{member} or R or
\underline{in} R

x ∉ R iff x ∈ Γ saying that x is a not a member,

i.e. x is \underline{not in} R

17.2.6 Definition relation class

REL denotes the overall \underline{relation class}.

For every schema X we define

Rel(X) := \{ [\begin{matrix}X \\ Γ \end{matrix}] Γ ⊆ ⊗X \}

the \underline{relation class} on X.

17.2.7 Remark relation type expression

The fact that R is a relation with the schema X is expressed by the \underline{type expression}

R : Rel(X)

(Type expressions in general were defined in 5.3.5).

For example 17.2.4 we have the type expression

                  ThisWeekend : Rel(Date)

17.2.8 Remark empty schema relations

⟨⟩ is a well defined schema, the \underline{empty schema}. There are precisely two relations with this schema:

Rel(⟨⟩) = \{[\begin{matrix}⟨⟩ \\ ∅ \end{matrix}], [\begin{matrix}⟨⟩ \\ \{⟨⟩\} \end{matrix}]\}

In 5.6.8 we suggested to write

𝔹 instead of Rel (⟨⟩)

and in 17.5.7 below we introduce yet another notation for its two members.

17.2.9 Definition proper relations

A relation R = [X, Γ] is \underline{proper} iff X is proper.

17.2.10 Remark proper relations

Recall 9.3.3 and 12.1.12, that for every schema X = [X_{i}|i ∈ I] holds:

X is proper ⇔ X_{i} ≠ ∅ for all i ∈ I ⇔ ⊗X ≠ ∅

and thus:

(1) Rel(X) = {[X, ∅]} iff X is not proper.

(2) If X is proper, then Rel(X) has at least two elements.

(3) No matter what the schema X looks like, Rel(X) is never empty.

We usually assume the schemas involved to be proper and things are mostly pretty pointless if they are not. However, we don’t make that assumption a quiet agreement in the sequel and call the situation “proper” in case it is.

17.2.11 Definition

Let R = [[X_{i}|i ∈ I], Γ] be a relation. We define

rng_{i}(R) := {x_{i} | x ∈ Γ}

the \underline{i–th range} of R, for each i ∈ I, and

rng(R) := {x_{i} | i ∈ I, x ∈ Γ}

is the (overall) \underline{range} of R.

17.2.12 Example

Let 10 = {1, …, 10} and gcd(n, m) be the greatest common divisor of two natural numbers n and m. Let D be the binary endorelation, given by

D = [ \begin{matrix}10 ↭ 10 \\ ⟨n, m⟩ ⇝ (n < m and gcd(n, m) > 1) \end{matrix} ]

Since D is a table, we can as well represent it by

D =  1 : 10 2 : 10 2  4 2  6 2  8 3  6 3  9 4  8

We have

dom_{1}(D) = 10  dom_{2}(D) = 10
rng_{1}(D) = {2, 3, 4} rng_{2}(D) = {4, 6, 8, 9}

and so

rng(D) = {2, 3, 4, 6, 8, 9}

17.2.13 Remark

Note that for every relation R = [[X_{i}|i ∈ I], Γ] holds

(1) rng_{i}(R) ⊆ dom_{i}(R), for each i ∈ I

(2) rng(R) ⊆ ⋃{X_{i} | i ∈ I}

17.3 Ordinary  relations  as

(schematic) relations and other notational variations

17.3.1 Definition notation

According to 5.7.10, the default form of an ordinary relation R is the typed–predicator form

R = [ \begin{matrix}D_{1} ↭ … ↭ D_{n} \\ ⟨x_{1}, …, x_{n}⟩ ⇝ φ \end{matrix} ]

To fit into the new default form of definition 17.2.1, called schema–graph form, we transform R into

R = [ \begin{matrix}⟨D_{1}, …, D_{n}⟩ \\ \{⟨x_{1}, …, x_{n}⟩ ∈ D_{1} × … × D_{n} | φ\} \end{matrix} ]

17.3.2 Remark ordinal relation class

For every ordinal schema (i.e. class tuple) ⟨D_{1}, …, D_{n}⟩ holds

Rel(⟨D_{1}, …, D_{n}⟩) = \begin{cases}D_{1} ↭ … ↭ D_{n} & if n ≥ 2 \\ Pty (D_{1}) & if n = 1 \\ 𝔹 & if n = 0 \end{cases}

as defined in 5.6.8 and due to the convention in 17.3.1.

If some R ∈ (D_{1} ↭ … ↭ D_{n}) is given, then R ∈ Rel(⟨D_{1}, …, D_{n}⟩) according to 17.3.1. On the other hand, if some

R = [\begin{matrix}⟨D_{1}, …, D_{n}⟩ \\ Γ \end{matrix}] ∈ Rel(⟨D_{1}, …, D_{n}⟩)

is given, we have

R = [\begin{matrix}D_{1} ↭ … ↭ D_{n} \\ ⟨x_{1}, …, x_{n}⟩ ⇝ ⟨x_{1}, …, x_{n}⟩ ∈ Γ \end{matrix}]

to write R in the default form for ordinal relations.

17.3.3 Example ordinal relation

The usual linear order ≤ on the integers is a binary relation, which can be written in our standard notation for ordinal relations as

◯ 1 ≤ ◯ 2 = [ \begin{matrix}ℤ ↭ ℤ \\ ⟨n, m⟩ ⇝ ∃d ∈ ℕ . n + d = m \end{matrix} ]

So that is the typed–predicator form: first the type ℤ ↭ ℤ, then the predicator ⟨n, m⟩ ⇝ ∃d ∈ ℕ . n + d = m. We have

dom(≤) = ℤ × ℤ = ⊗⟨ℤ, ℤ⟩
x(≤) = ⟨ℤ, ℤ⟩
@(≤) = {1, 2}
dom_{1}(≤) = ℤ
dom_{2}(≤) = ℤ
gr(≤) = {⟨n, m⟩ ∈ (ℤ × ℤ) | ∃d ∈ ℕ . n + d = m}

In schema-graph form we have

◯ 1 ≤ ◯ 2 = [ \begin{matrix}⟨ℤ, ℤ⟩ \\ \{⟨n, m⟩ ∈ (ℤ × ℤ) | ∃d ∈ ℕ . n + d = m\} \end{matrix} ]

17.3.4 Remark

We could as well use yet another variation, the schema– predicator form. For ≤ that is

◯ 1 ≤ ◯ 2 = [ \begin{matrix}⟨ℤ, ℤ⟩ \\ ⟨n, m⟩ ⇝ ∃d ∈ ℕ . n + d = m \end{matrix} ]

which is a bit more compact and less redundant again. Let us summarize the motivation and taxonomy of the various forms.

17.3.5 Remark summary of the notations

In 4.3.1 and 5.3 we explained that we use

[ \begin{matrix}syntax \\ semantics \end{matrix} ]

as the standard form for operators. Relations are also operators and fit in as well. But there is a certain degree of variation in the precise formalization. ♣ The \underline{syntax} of a relation R = [X, Γ] is given either by its

schema X or its domain ⊗X or by its type Rel(X). Each of the three specifications has the same information.

♣ The \underline{semantics} of R is given by its graph Γ. But we have the same information if we replace the graph Γ = {x ∈ ⊗X | φ} by a predicator x ⇝ φ, as wel already did (in 4.3.1 and 5.7.10) for ordinary relations.

This gives us the following six variations for equivalent formalizations of a given relation R:

syntax\^{semantics}

\underline{graph form}

predicator form

schema form

[\begin{matrix}X \\ Γ \end{matrix}]

This is our default form for schematic relations in general, as defined in 17.2.1.

[\begin{matrix}X \\ x ⇝ φ \end{matrix}]

This is also used in our text, because it often is less redundant than the default form.

domain form

[\begin{matrix}⊗X \\ Γ \end{matrix}]

We never use that.

[\begin{matrix}⊗X \\ x ⇝ φ \end{matrix}]

Again, we never use that.

\underline{typed form}

[\begin{matrix}Rel(X) \\ Γ \end{matrix}]

is the general version and we never use that. There is the special version for ordinal relations:

[\begin{matrix}X_{1} ↭ … ↭ X_{n} \\ Γ \end{matrix}]

but we never use that, either.

[\begin{matrix}Rel(X) \\ x ⇝ φ \end{matrix}]

is the general version and we never use that, either. The special version for ordinal relations

[\begin{matrix}X_{1} ↭ … ↭ X_{n} \\ x ⇝ φ \end{matrix}]

is the default notation as defined in 5.7.10.

17.4 Relations as functions and vice versa

17.4.1 Repetition

(1) Recall from 5.8.4, that

𝔹 := { 0, 1 }

is the \underline{bit value} or \underline{boolean value} class.

(2) For an earlier introduction of the \underline{characteristic function}, recall 5.7.14.

17.4.2 Definition characteristic function

(1) If R = [X, Γ] is a relation, then

χ_{R} := [ \begin{matrix}⊗X ⟶ 𝔹 \\ x ↦ \begin{cases}0 & if x ∈ Γ \\ 1 & if x ∉ Γ \end{cases} \end{matrix} ]

is the \underline{characteristic function} of R

(2) On the other hand, if X is a schema and χ : ⊗X ⟶ 𝔹, then

rel(χ) := [ \begin{matrix}X \\ x ⇝ ξ(x) = 1 \end{matrix} ] is the \underline{relation} of χ

17.5 Tables and table representation

17.5.1 Repetition

Recall from 9.3.3, that a schema X = [X_{i}|i ∈ I] is called

(1) \underline{finite} iff I is finite (i.e. X as a record is a finite record)

(2) \underline{completely finite} iff I is finite and X_{i} is finite, for each i ∈ I.

17.5.2 Definition finiteness properties

We say that a relation R = [[X_{i}|i ∈ I], Γ]

(1) has a \underline{finite table} or \underline{is a table} iff I is finite and Γ is finite,

(2) is \underline{completely finite} iff X is completely finite.

In that case, I and each X_{i} is finite, and thus Γ is finite, too.

17.5.3 Definition table class

For every schema X we define

Tab(X) := \{ [\begin{matrix}Y \\ Γ \end{matrix}] Y ≤ X dom(Y) is finite Γ is finite \}

the \underline{table class} on X

17.5.4 Remark graph tables and boolean tables

If R = [[X_{i}|i ∈ I], Γ] has a finite table (or is a table), i.e. if I and Γ are finite with

\begin{aligned}I & = & \{i_{1}, …, i_{n}\} \\ Γ & = & \{[ \begin{matrix}i_{1} & ↦ & x_{1,1} \\ ⋮ & & ⋮ \\ i_{n} & ↦ & x_{1,n} \end{matrix} ] , …, [ \begin{matrix}i_{1} & ↦ & x_{m,1} \\ ⋮ & & ⋮ \\ i_{n} & ↦ & x_{m,n} \end{matrix} ]\} \end{aligned}

then it is usually much more convenient to represent R by its graph table (diagram)

i_{1} : X_{i} … i_{n} : X_{n}
x_{1,1} … x_{1,n}
⋮  ⋮
x_{m,1} … x_{m,n}

If R is even completely finite, i.e. if furthermore each domain is finite with

X_{1} = {x_{1,1}, …, x_{1,k1} } , …, X_{n} = {x_{n,1}, …, x_{n,kn} }

then R can also be written as a \underline{boolean table (diagram)},

i_{1} … i_{n}
x_{1,1} … x_{n,1}  β_{1}
⋮  ⋮  ⋮
x_{1,k1} … x_{n,1}  β_{k1}
⋮  ⋮  ⋮
⋮  ⋮  ⋮
x_{1,k1} … x_{n,kn} β_{i1·····in}

The left side of the table contains all the i_{1} · . . . · i_{n} elements of the product ⊗[X_{i}|i ∈ I]. Each boolean or bit value β ∈ 𝔹 = {0, 1} on the right side indicates, if the element on the left is a member of the graph (β = 1) or if it isn’t (β = 0).

Note that for both kinds of tables, the relation can entirely be recovered from the table. However, the table diagrams are not unique in general, since there is no pre–defined order on the columns and rows.

17.5.5 Example

The relation ThisWeekend from example 17.2.4 was given by the graph table

    year :  month :  day :  title :

ℤ {1, …, 12} {1, …, 31} {monday, . . . , sunday}

    2003       1           18            saturday
    2003       1           19             sunday

We could change the order of the rows and obtain

    year :  month :  day :  title :

ℤ {1, …, 12} {1, …, 31} {monday, . . . , sunday}

    2003       1           19             sunday
    2003       1           18            saturday

but we consider these two different diagrams as graphical representations of the same table.

This relation is not completely finite, its year–domain is the infinite class ℤ of integers. It cannot be represented by a boolean table. (At least not in the strict sense. One could use (horizontal and vertical) dots “…” to display it anyway.)

17.5.6 Example

If we take the schema

X = [ \begin{matrix}one & ↦ & \{1, 2\} \\ two & ↦ & \{2, 3, 4\} \\ three & ↦ & \{5\} \end{matrix} ]

and a subset Γ of ⊗X, say

           Γ = \{[ \begin{matrix}one & ↦ & 1 \\ two & ↦ & 3 \\ three & ↦ & 5 \end{matrix} ] , [ \begin{matrix}one & ↦ & 2 \\ two & ↦ & 4 \\ three & ↦ & 5 \end{matrix} ]\}

then R := [X, Γ] is represented by its graph table

R = one : {1, 2} two : {2, 3, 4} three : {5} 1  3  5 2  4  5

Since R is completely finite, we can as well represent it by its boolean table

R = one two three 1 2  5 0 2 2  5 0 1 3  5 1 2 3  5 0 1 4  5 0 2 4  5 1

We mentioned that the order of the rows and columns are not unique in general. So we can as well write the same boolean table as

R = three two one 5  4 2 1 5  4 1 0 5  3 2 0 5  3 1 1 5  2 2 0 5  2 1 0

17.5.7 Remark table representation of empty schema relations

As mentioned in 17.2.8, Rel(⟨⟩) has two members. Their table diagrams are

0 for [\begin{matrix}⟨⟩ \\ ∅ \end{matrix}]  and  1 for [\begin{matrix}⟨⟩ \\ \{⟨⟩\} \end{matrix}]

respectively. (Later on in ??, we introduce yet another notation for these two important relations and write ⊥ and ⊤ , respectively.)

17.5.8 Remark generalized table notation

Yet another and often convenient notation for a relation with a finite schema is a generalized table notation

i_{1} : X_{1} … i_{n} : X_{n}
x_{1}  …  x_{n}
φ(x_{1}, …, x_{n})

which stands for

[ \begin{matrix}[ & \begin{matrix}i_{1} & ↦ & X_{1} \\ ⋮ & & ⋮ \\ i_{n} & ↦ X_{n} \end{matrix} & ] \\ [ \begin{matrix}i_{1} & ↦ & x_{1} \\ ⋮ & & ⋮ \\ i_{n} & ↦ x_{n} \end{matrix} ] ⇝ φ(x_{1}, …, x_{n}) \end{matrix} ]

where φ(x_{1}, …, x_{n}) is a formula with all free variables among the x_{1}, …, x_{n}.

For example, we can define a “spring relation” for the according season (on the northern hemisphere) by

                                                                            year :  month :  day :  title :

ℤ {1, …, 12} {1, …, 31} {monday, . . . , sunday}

y  m  d  t

(m = 3 ∧ d ≥ 20) ∨ m = 4 ∨ m = 5 ∨ (m = 6 ∧ d ≤ 21)

17.6 Double tables

17.6.1 Remark double tables

There is yet another variation of the one–dimensional boolean table representation: two–dimensional so–called \underline{double tables}. Besides being more compact, they are useful in understanding operations like schema reductions and expansion (see 21.1).

Consider a completely finite relation R with a schema

X = [ \begin{matrix}i_{1} & ↦ & X_{1} \\ ⋮ & & ⋮ \\ i_{n} & ↦ & X_{n} \end{matrix} ]

Its boolean table has the general form

i_{1} … i_{n}

⊗X

boolean ; values ; of R

Now let us split X into two distinct schemas

Y = [ \begin{matrix}i_{1} & ↦ & X_{1} \\ ⋮ & & ⋮ \\ i_{k} & ↦ & X_{k} \end{matrix} ] and Z = [ \begin{matrix}i_{k+1} & ↦ & X_{k+1} \\ ⋮ & & ⋮ \\ i_{n} & ↦ & X_{n} \end{matrix} ]

i.e. X = Y ˙∨ Z.

In the double table of R we put the elements of ⊗Y in the left, and the elements of ⊗Z in the upper part:

⊗Z  i_{k+1} ; ⋮ ; i_{n}

⊗Y

boolean ; values ; of R

i_{1} … i_{k}

17.6.2 Example double table

For example, let

X = [ \begin{matrix}one & ↦ & \{1, 2\} \\ two & ↦ & \{2, 3, 4\} \\ three & ↦ & \{1, 2\} \\ four & ↦ & \{2, 3, 4\} \end{matrix} ]

A relation on X is

R = [ \begin{matrix}X \\ [ \begin{matrix}one & ↦ & a \\ two & ↦ & b \\ three & ↦ & c \\ four & ↦ & d \end{matrix} ] ⇝ a · b < c + d \end{matrix} ]

i.e.

R =

one  two  three  four

a b  c  d

a · b < c + d

and a schema split of X is given by

Y = [ \begin{matrix}one & ↦ & \{1, 2\} \\ two & ↦ & \{2, 3, 4\} \end{matrix} ] and Z = [ \begin{matrix}three & ↦ & \{1, 2\} \\ four & ↦ & \{2, 3, 4\} \end{matrix} ]

The boolean table of R has 2 · 3 · 2 · 3 = 36 rows (heading excluded) and is given by

one  two  three  four

1 2  1  2 1
2 2  1  2 0
1 3  1  2 0
2 3  1  2 0
1 4  1  2 0
2 4  1  2 0
1 2  2  2 1
2 2  2  2 0
1 3  2  2 1
2 3  2  2 0
1 4  2  2 0
2 4  2  2 0
1 2  1  3 1
2 2  1  3 0
1 3  1  3 1
2 3  1  3 0
1 4  1  3 0
2 4  1  3 0
1 2  2  3 1
2 2  2  3 1
1 3  2  3 1
2 3  2  3 0
1 4  2  3 1
2 4  2  3 0
1 2  1  4 1
2 2  1  4 1
1 3  1  4 1
2 3  1  4 0
1 4  1  4 1
2 4  1  4 0
1 2  2  4 1
2 2  2  4 1
1 3  2  4 1
2 3  2  4 0
1 4  2  4 1
2 4  2  4 0

The double table of R with Y on the left and Z on top is more compact:

1 2 1 2 1 2 three
2 3 4 2 3 4 four
1 2 1 1 1 1 1 1
2 2 0 0 0 1 1 1
1 3 0 1 1 1 1 1
2 3 0 0 0 0 0 0
1 4 0 0 0 1 1 1
2 4 0 0 0 0 0 0

one  two

17.7 More properties of relations

17.7.1 Definition measures

For every relation R = [[X_{i}|i ∈ I], Γ] we define:

(1) the \underline{dimension} of R is the cardinality of the attributes (i.e. card(I)).

(2) the \underline{cardinality} of R is the cardinality of the graph (i.e. card(Γ)).

17.7.2 Remark So a relation is a table iff both its dimension and its cardinality are finite. For ordinary relations, the dimension is the arity of the relation.

17.7.3 Definition properties

A relation R = [X, Γ] with X = [X_{i}|i ∈ I] is called

(1) \underline{empty}, if Γ = ∅

(2) \underline{full}, if Γ = ⊗X

(3) \underline{elementary}, if Γ has exactly one element

(4) \underline{literal}, if both I and Γ are singletons.

(5) \underline{singular}, if X is singular (9.1.5), i.e. I is a singleton

(6) an \underline{endorelation} if the schema is univalent, i.e. all X_{i} are one and the same class.

(7) (a) \underline{total in i}, for i ∈ I, if rng_{i}(R) = X_{i}, and (b) \underline{total}, if R is total in each i ∈ I.

17.7.4 Example Consider the example relation D of 17.2.12 again,

D =  1 : 10 2 : 10 2  4 2  6 2  8 3  6 3  9 4  8

D is neither total in 1 nor in 2, and thus not total altogether.

17.7.5 Remark Note, that

(1) a full relation is always total, but not the other way round. For example, the identity relation on the natural numbers ◯ 1 = ◯ 2 : ℕ ↭ ℕ is an example of a total relation which is not full.

(2) An improper relation (17.2.9 and 17.2.10) is always empty, but not the other way round.

17.7.6 Remark properties

The special relations defined in 17.7.3 have the following pattern:

endorelation

[\begin{matrix}[C|I] \\ Γ \end{matrix}]

empty^{relation}_{[\begin{matrix}X \\ ∅ \end{matrix}]}

full^{relation}_{[\begin{matrix}X \\ ⊗X \end{matrix}]}

elementary^{relation}^{[\begin{matrix}X \\ \{x\} \end{matrix}]}

literal relation

[\begin{matrix}[ i ↦ X_{i} ] \\ \{[ i ↦ c]\} \end{matrix}]

singular relation

[\begin{matrix}[ i ↦ X_{i} ] \\ ⊗[ i ↦ C ] \end{matrix}]

17.7.7 Remark

An empty relation has none, a full relation has all records as members. In the design of a relation algebra as a quasi– boolean algebra later on, empty and full relations become the least and greatest elements of these (quasi–)order structures. If we consider relation algebras as logical structures, empty relations represent “false” (they don’t hold for any record) and “true” (satisfied for all records).

Elementary, literal and singular relations will play the role of basic building bricks for relations. For example, every table can be (re-)constructed algebraically from a finite number of literal relations.

Endorelations, relations in which all domains are one and the same carrier class C, impose a kind of internal structure on C. Binary endorelations, i.e. relations of type C ↭ C play an important role in mathematics. Endorelations in general have a schema of the form [C|I], where I = {1, 2} for the binary case. In relation algebras, the “compatibility” (19.1.2) of relations is an important constraint for many operations to be defined. But when all the relations involved are endorelations on the same C, they are always compatible (see 19.1.2 and 19.1.3).

17.8 Projection relation class

17.8.1 Definition

For every schema X we define

Prel(X) := ⋃_{Y ∈Proj(X)}Rel(Y)

the \underline{projection relation class} on X

17.8.2 Remark

For a given schema X, the class Prel(X) is a very important class of relations. Later on, we will see how each relalion class Prel(X) comes along with a couple of operations that turn it into a quasi–boolean and a theory algebra, as we call it.

As the size of X increases, the number of relations in Prel(X) grows exponentially. In the next example, we take a very simple X, which allows us to list all these elements. The whole exercise is quite trivial, but it is worth studying, because it already reveals almost all the properties of these structures in general.

17.8.3 Example

A schema X is given by

X = [ \begin{matrix}a & ↦ & 𝔹 \\ b & ↦ & 𝔹 \end{matrix} ]

We obtain

Proj(X) = \{⟨⟩, [ a ↦ 𝔹 ] , [ b ↦ 𝔹 ] , [ \begin{matrix}a & ↦ & 𝔹 \\ b & ↦ & 𝔹 \end{matrix} ]\}

For each of the four Y ∈ Proj(X) we obtain a class Rel(Y), which is given as follows.

(1) Rel(⟨⟩) has 2 members. As mentioned in 17.5.7, these can be represented as

0  and  1

respectively.

(2) Rel([ a ↦ 𝔹 ]) has 4 members:

\begin{matrix}a \\ 0 & 0 \\ 1 & 0 \end{matrix}  \begin{matrix}a \\ 0 & 1 \\ 1 & 0 \end{matrix}  \begin{matrix}a \\ 0 & 0 \\ 1 & 1 \end{matrix}  \begin{matrix}a \\ 0 & 1 \\ 1 & 1 \end{matrix}

(3) Rel([ b ↦ 𝔹 ]) has 4 members, too:

\begin{matrix}b \\ 0 & 0 \\ 1 & 0 \end{matrix}  \begin{matrix}b \\ 0 & 1 \\ 1 & 0 \end{matrix}  \begin{matrix}b \\ 0 & 0 \\ 1 & 1 \end{matrix}  \begin{matrix}b \\ 0 & 1 \\ 1 & 1 \end{matrix}

(4) Rel ([ \begin{matrix}a & ↦ & 𝔹 \\ b & ↦ & 𝔹 \end{matrix} ]) has 16 members:

\begin{matrix}\begin{matrix}a & b \\ 0 & 0 & 0 \\ 1 & 0 & 0 \\ 0 & 1 & 0 \\ 1 & 1 & 0 \end{matrix} & \begin{matrix}a & b \\ 0 & 0 & 1 \\ 1 & 0 & 0 \\ 0 & 1 & 0 \\ 1 & 1 & 0 \end{matrix} & \begin{matrix}a & b \\ 0 & 0 & 0 \\ 1 & 0 & 1 \\ 0 & 1 & 0 \\ 1 & 1 & 0 \end{matrix} & \begin{matrix}a & b \\ 0 & 0 & 1 \\ 1 & 0 & 1 \\ 0 & 1 & 0 \\ 1 & 1 & 0 \end{matrix} \\ \begin{matrix}a & b \\ 0 & 0 & 0 \\ 1 & 0 & 0 \\ 0 & 1 & 1 \\ 1 & 1 & 0 \end{matrix} & \begin{matrix}a & b \\ 0 & 0 & 1 \\ 1 & 0 & 0 \\ 0 & 1 & 1 \\ 1 & 1 & 0 \end{matrix} & \begin{matrix}a & b \\ 0 & 0 & 0 \\ 1 & 0 & 1 \\ 0 & 1 & 1 \\ 1 & 1 & 0 \end{matrix} & \begin{matrix}a & b \\ 0 & 0 & 1 \\ 1 & 0 & 1 \\ 0 & 1 & 1 \\ 1 & 1 & 0 \end{matrix} \\ \begin{matrix}a & b \\ 0 & 0 & 0 \\ 1 & 0 & 0 \\ 0 & 1 & 0 \\ 1 & 1 & 1 \end{matrix} & \begin{matrix}a & b \\ 0 & 0 & 1 \\ 1 & 0 & 0 \\ 0 & 1 & 0 \\ 1 & 1 & 1 \end{matrix} & \begin{matrix}a & b \\ 0 & 0 & 0 \\ 1 & 0 & 1 \\ 0 & 1 & 0 \\ 1 & 1 & 1 \end{matrix} & \begin{matrix}a & b \\ 0 & 0 & 1 \\ 1 & 0 & 1 \\ 0 & 1 & 0 \\ 1 & 1 & 1 \end{matrix} \\ \begin{matrix}a & b \\ 0 & 0 & 0 \\ 1 & 0 & 0 \\ 0 & 1 & 1 \\ 1 & 1 & 1 \end{matrix} & \begin{matrix}a & b \\ 0 & 0 & 1 \\ 1 & 0 & 0 \\ 0 & 1 & 1 \\ 1 & 1 & 1 \end{matrix} & \begin{matrix}a & b \\ 0 & 0 & 0 \\ 1 & 0 & 1 \\ 0 & 1 & 1 \\ 1 & 1 & 1 \end{matrix} & \begin{matrix}a & b \\ 0 & 0 & 1 \\ 1 & 0 & 1 \\ 0 & 1 & 1 \\ 1 & 1 & 1 \end{matrix} \end{matrix}

Finally, Prel(X) is the union of these four classes with 2 + 4 + 4 + 16 = 26 members.

Such example X is an univalent bit–value schema, i.e. a schema of the form (9.2.4) [𝔹|A], for some A, in this case A = {a, b}. The relation classes induces by these schemas are important and we introduce the following notation to denote them. For our example, that is Prel(X) = Brel({a, b}).

17.8.4 Definition

For every class A we define

Brel(A) := Prel([𝔹|A])

the \underline{bit value relation} class on A

17.8.5 Lemma

For every schema X, the following statements are equivalent:

(1) X is completely finite.

(2) Every R ∈ Prel(X) is completely finite.

(3) Prel(X) = Tab(X)

17.8.6 Proof of 17.8.5 Let X = [X_{i}|i ∈ I] be a given schema. (1)⇔(2) is true, because

X is completely finite

⇔ (I is finite) and (X_{i} is finite, for each i ∈ I)
⇔ (each J ∈ P(I) is finite) and (each X_{i} is finite)
⇔ Y is completely finite, for every Y ∈ Proj(X)
⇔ R is completely finite, for every R ∈ Prel(X)

(3)⇔(1) is true, because

Prel(X) = Tab(X)

⇔ \{ \begin{matrix}[Y, Γ] \\ Y ∈ Proj(X), \\ Γ ⊆ ⊗Y \end{matrix} \} = \{ \begin{matrix}[Y, Γ] \\ Y ∈ Proj(X), \\ dom(Y) is finite , \\ Γ ⊆ ⊗Y, \\ Γ is finite \end{matrix} \}

⇔ ∀Y ∈ Proj(X) . (\begin{matrix}dom(Y) is finite and \\ ∀Γ ⊆ ⊗Y . Γ is finite \end{matrix} )

⇔ ∀Y ∈ Proj(X) . (\begin{matrix}dom(Y) is finite and \\ ⊗Y is finite \end{matrix} )

⇔ ∀Y ∈ Proj(X) . (Y is completely finite )
⇔ X is completely finite

18 Digression: null values, quasi-relations and expansions

18.0.7 Remark introduction

A “partial table” is very much the definition of a “relation” in database theory. Most database management systems nowadays use a (more or less) standard syntax and semantics, called SQL (structured query language). In this section, the notion “database algebras” refers to the underlying structure of these kind of systems.

This section is a “digression”, it introduces null values, quasi– relations and partial tables, and none of these concepts plays a role in the remainder of this text. In our interpretation they become an insignificant part of a more general design. This interpretation is very different to the approach in database algebras. So the statement that our “relation algebras” would generalize the mathematical as well as the database theoretical relation concept, is only true with some restrictions, at least when the SQL–like approach is taken.

18.1 Null values and quasi– relations

18.1.1 Remark

Consider the following

Q_{1} := name : String age : {0, 1, …, 255} sex : {f, m} ”peter”  57  m ”mo”  40 ”hanna”  f

This is not a table or relation in the strict sense, because the data is incomplete in the last two record entries. Values for the attribute sex in the second, and age in the third row are missing. Database algebras usually use a \underline{default} or \underline{null value} “ null ” for these cases to fill the empty places.

The generalization of the relation concept that allows null values shall be called \underline{quasi–relation}. In other words, for a quasi– relation Q with schema X, the graph Γ doesn’t have to be a subclass of the cartesian product ⊗X, but may be a subclass of the bigger star product ⊛X. A table that allows such null values, like the one for Q_{1} above, shall be called a \underline{partial table}.

34

18.1.2 Definition quasi–relation

As a generalization of the relation concept (17.2.1), a \underline{quasi–relation} Q is given as a pair

[X, Γ]  or  [ \begin{matrix}X \\ Γ \end{matrix} ]

where

♣ X is a schema

♣ Γ ⊆ ⊛X is the so–called \underline{quasi–graph} of Q.

Such a quasi–relation is a \underline{partial table}, if both dom(X) and Γ are finite.

18.1.3 Example

Given in this formal notation [X, Γ] with schema X and Γ ⊆ ⊛X, our previous example Q_{1} is given as

name ↦ String
age ↦ {0, …, 255}

                                                                                                sex ↦ {f, m}

                                                                           \{[ \begin{matrix}name & ↦ & ”peter” \\ age & ↦ & 57 \\ sex & ↦ & m \end{matrix}] , [ \begin{matrix}name & ↦ & ”mo” \\ age & ↦ & 40 \end{matrix} ] , [ \begin{matrix}name & ↦ & ”hanna” \\ sex & ↦ & f \end{matrix} ]\}

18.1.4 Remark two different meanings of null values

There is a fundamental difference in the interpretation of null values in database algebras and in our approach. ♣ In database algebras, null values are a kind of default value of each domain component. A null stands for something like “unknown”. In order to consequently fit this into the overall design, many operations need to be extended for these exceptional cases. For example, the binary logic of false and true has to be accompanied by a third value unknown to deal with null occurrences.

♣ In our approach, a null value is some kind of placeholder or abbreviation for “all possible values”.

Consider the initial example Q_{1} again and the following record

                                                                                            y := [ \begin{matrix}name & ↦ & ”mo” \\ age & ↦ & 0 \\ sex & ↦ & f \end{matrix}]

Is y a member of Q_{1}?

♣ In our approach, this is a clear “yes”: y ∈ Q_{1} does hold. The question is understood as: “Could it be compatible with the information we have, that y does exist?”

♣ In database algebras, the answer is “unknown”: neither y ∈ Q_{1} nor y ∉ Q_{1} does hold. The question is here understood as: “Does y exist in our data world Q_{1}?”

34 Neither “quasi–relation” nor “partial table” is part of the standard terminology in database theory.

Our algebra is an attempt to generalize the binary semantics of propositional logic toward a multivalued semantics. At the same time we want to introduce an intuitive and efficient semantics for both propositional and predicate logic. Therefore our algebra of relations needs to have at least the properties of a boolean lattice. Database algebras do not provide these properties.

18.1.5 Remark quasi–relations are relations

Quasi–relations are “as–good–as relations”, every quasi– relation Q is actually supposed to stand for a proper relation rel(Q) . From this point of view, quasi–relations are just another representation for relations. Accordingly, this whole section 18 on quasi–relations could be skipped for a more conceptional and less technical study. However, a familiarity with the arguments of the following discussion are very helpful for an overall understanding of the operations introduced later on. So in 18.3 we motivate the important concept of the expansion R ∥ Y of a relation R by a compatible schema Y.

18.2 Quasi–relations as relations

18.2.1 Remark introduction

We will now see how a quasi–relation Q is converted into a proper relation rel(Q) . The basic idea is to translate each

incomplete record x ∈ ⊛X into the class x ∥ X ⊆ ⊗X of

all full records which are compatible with x. rel(Q) is then essentially the union of these classes.

18.2.2 Example quasi–relation as relation

Consider the example Q_{1} from 18.1.1 again. Let us start with the second record

x_{2} = [ \begin{matrix}name & ↦ & ”mo” \\ age & ↦ & 40 \end{matrix} ]

in Q_{1}. The schema of Q_{1} is

X = [ \begin{matrix}name & ↦ & String \\ age & ↦ & \{0, …, 255\} \\ sex & ↦ & \{f, m\} \end{matrix} ]

X has one index (namely “sex”) which doesn’t occur in x_{2}. Since there is no clue which of the two sexes should belong to x_{2}, we define x_{2} to stand for both alternatives

         [ \begin{matrix}name & ↦ & ”mo” \\ age & ↦ & 40 \\ sex & ↦ & f \end{matrix}] and [ \begin{matrix}name & ↦ & ”mo” \\ age & ↦ & 40 \\ sex & ↦ & m \end{matrix}]

one for “sex=f” and one for “sex=m”. In other words, the table of the proper relation rel(Q_{1}) shall contain the two rows

”mo” 40 f
”mo” 40 m

We call this record class the \underline{expansion} of x_{1} in X and write

x_{1} ∥ X := \{[ \begin{matrix}name & ↦ & ”mo” \\ age & ↦ & 40 \\ sex & ↦ & f \end{matrix}] , [ \begin{matrix}name & ↦ & ”mo” \\ age & ↦ & 40 \\ sex & ↦ & m \end{matrix}]\}

Putting this method into a formula (see 18.2.4), we generate for every schema X and x ∈ ⊛ the expansion of x into X by applying

x ∥ X := {x ˙∨ y | y ∈ ⊗pr (X, dom(X) \ dom(x))}

In case of our specific example X and x_{2} ∈ ⊛X, we obtain

⊗pr (X, dom(X) \ dom(x_{2}))

                                                                                   = ⊗pr (X, {name, age, sex} \ {name, age})

= ⊗pr (X, {sex})
= ⊗ [ sex ↦ {f, m} ]
= {[ sex ↦ f ] , [ sex ↦ m ]}

so that

x_{2} ∥ X = {x_{2} ˙∨ [ sex ↦ f ] , x_{2} ˙∨ [ sex ↦ m ]}

                                                                                      = \{[ \begin{matrix}name & ↦ & ”mo” \\ age & ↦ & 40 \\ sex & ↦ & f \end{matrix}] , [ \begin{matrix}name & ↦ & ”mo” \\ age & ↦ & 40 \\ sex & ↦ & m \end{matrix}]\}

This definition of the expansion is more constructive. Perhaps more elegant is the characterization by means of the compatibility notion:

x_{2} ∥ X = {y ∈ ⊗X | y ⌣ x_{2}}

The only y ∈ ⊗X which are compatible with x_{2} are

                                                                                  [ \begin{matrix}name & ↦ & ”mo” \\ age & ↦ & 40 \\ sex & ↦ & f \end{matrix}] and [ \begin{matrix}name & ↦ & ”mo” \\ age & ↦ & 40 \\ sex & ↦ & m \end{matrix}]

So this characterization produces indeed the same result. This coincidence is true in general (and stated in 18.2.3 and 18.2.4).

So far for x_{2}. Let us do the same for x_{1} and x_{3}:

                                                                                          x_{3} = [ \begin{matrix}name & ↦ & ”hanna” \\ sex & ↦ & f \end{matrix} ]

stands for 256 records with attribute “age” ranging from 0 to 255. More formal

                                                                          x_{3} ∥ X = \{[ \begin{matrix}name & ↦ & ”hanna” \\ age & ↦ & 0 \\ sex & ↦ & f \end{matrix}] , . . . , [ \begin{matrix}name & ↦ & ”hanna” \\ age & ↦ & 255 \\ sex & ↦ & f \end{matrix}]\}

The first record x_{1} of Q_{1} has all the attributes of X, its expansion is simply

                                                                                      x_{1} ∥ X = \{[ \begin{matrix}name & ↦ & ”peter” \\ age & ↦ & 57 \\ sex & ↦ & m \end{matrix}]\}

The proper relation rel(Q_{1}) of Q now is basically the union of all these record expansions

rel(Q_{1}) := [ \begin{matrix}X \\ (x_{1} ∥ X) ∪ (x_{2} ∥ X) ∪ (x_{3} ∥ X) \end{matrix} ]

It is given by the table

name : String age : {0, …, 255} sex : {f, m}

”peter”  57  m

”mo”  40  f
”mo”  40  m

”hanna”  0  f
”hanna”  1  f
”hanna”  2  f

⋮  ⋮  ⋮

”hanna”  255  f

But here, too, we can apply the same result by

rel(Q_{1}) := [ \begin{matrix}X \\ y ⇝ y ⌣ x_{1} or y ⌣ x_{2} or y ⌣ x_{2} \end{matrix} ]

in other words

rel(Q_{1}) := [ \begin{matrix}X \\ y ⇝ ∃x ∈ X . y ⌣ x \end{matrix} ]

We finally summarize the definitions properly.

18.2.3 Definition record expansion Let X = [X_{i}|i ∈ I] be a schema and x ∈ ⊛X. We define

x ∥ X := {y ∈ ⊗X | y ⌣ x}

the \underline{expansion} of x into X.

18.2.4 Lemma record expansion For every schema X and x ∈ ⊛X holds

x ∥ X = {x ˙∨ y | y ∈ ⊗pr (X, dom(X) \ dom(x))}

18.2.5 Proof of 18.2.4 Let X = [X_{i}|i ∈ I] be the given schema and x = [x_{j}|j ∈ J] ∈ ⊛X. For every y = [y_{i}|i ∈ I] ∈ ⊗X holds J ⊆ J and

y ⌣ x ⇔ x ˙∨ pr (y, I \ J) = y

Therefore

\begin{aligned}x ∥ X & = & \{y ∈ ⊗X | y ⌣ x\} \\ & = & \{x ˙∨ y | y ∈ ⊗pr (X, I \ J)\} \end{aligned}

18.2.6 Definition quasi–relation as relation For every quasi–relation Q = [X, Γ] we define

rel(Q) := [ \begin{matrix}X \\ y ⇝ ∃x ∈ Γ . y ⌣ x \end{matrix} ]

the \underline{relation} of Q.

18.2.7 Lemma quasi–relation as relation For every quasi–relation Q = [X, Γ] holds

rel(Q) = [ \begin{matrix}X \\ ⋃_{x∈Γ}(x ∥ X) \end{matrix} ]

18.2.8 Proof of 18.2.7 For each quasi–relation Q = [X, Γ] we have

rel(Q) = [\begin{matrix}X \\ y ⇝ ∃ ∈ Γ . y ⌣ x \end{matrix}]
= [\begin{matrix}X \\ \{y ∈ ⊗X | ∃x ∈ Γ . y ⌣ x\} \end{matrix}]
= [\begin{matrix}X \\ ⋃_{x∈Γ}\{x ∈ ⊗X | y ⌣ x\} \end{matrix}]
= [\begin{matrix}& X \\ ⋃_{x∈Γ} & (x ∥ X) \end{matrix}]

18.3 Schema expansion of relations

18.3.1 Remark introduction One very important operation in our upcoming algebra is the \underline{expansion} R ∥ Y of a given relation R = [X, Γ] by a compatible (i.e. X ⌣ Y) schema Y. The schema of the result R′ is then the join X ∨ Y.

18.3.2 Example expansion Let us take the example

R := name : String age : {0, …, 255} ”peter”  57 ”mo”  40

with schema

X := x(R) = [ \begin{matrix}name & ↦ & String \\ age & ↦ & \{0, …, 255\} \end{matrix} ]

A second schema is given by Y := [ sex ↦ {f, m} ] X and Y are compatible and their join is

X′ := X ∨ Y = [ \begin{matrix}name & ↦ & String \\ age & ↦ & \{0, …, 255\} \\ sex & ↦ & \{f, m\} \end{matrix} ]

The \underline{expansion} of R by Y is a relation R′ with the modified schema X′, but “equivalent” to R. And this means, that R′ has the same graph as R, i.e.

R′ = name : String age : {0, …, 255} sex : {f, m} ”peter”  57 ”mo”  40

But this is a quasi–relation and not a proper relation yet. Applying rel returns the standard form of R′, which is, as a table diagram, given by

R′ = name : String age : {0, …, 255} sex : {f, m} ”peter”  57  f ”peter”  57  m ”mo”  40  f ”mo”  40  m

18.3.3 Definition relation expansion

Let R = [X, Γ] be a relation and Y a schema with Y ⌣ X. Then

R ∥ Y := rel ([\begin{matrix}X ∨ Y \\ Γ \end{matrix} ])

is the \underline{expansion} of R by Y.

18.3.4 Remark

An alternative characterization of this expansion is given by the fact that

R ∥ Y = [ \begin{matrix}X ∨ Y \\ y ⇝ ∃x ∈ Γ . x ⌣ y \end{matrix} ]

Actually, we prefer the latter equation as the definition (see 20.1.1) because it doesn’t need to refer to quasi–relations and the rel operation.

18.3.5 Remark schema unification

This expansion concept is very important for the development of our whole algebra on relations later on.

Take, for example, two relations R = [X, Γ] and S = [Y, Σ]. Lattice operations like ∪ and ∩ are very important and they are understood as the according operations on the graphs, e.g.

R ∪ S := [ \begin{matrix}X \\ Γ ∪ Σ \end{matrix} ]

But of course, this is only a well–defined relation, if R and S are equischematic, i.e. if Y = X.

However, by applying the previous ideas, we can generalize ∪ and ∩ for the case that X and Y are compatible. We denote these generalizations by ⊔ and ⊓ , respectively. So

R ⊔ S := rel ([ \begin{matrix}X ∨ Y \\ Γ ∪ Σ \end{matrix} ])

Without applying rel this can alternatively be expressed by

R ⊔ S := R′ ∪ S′ where R′ := R ∥ Y and S′ := S ∥ X

R′ and S′ are equischematic, their common schema is X ∨ Y, and that allows us to apply ∪.

Besides, this is also the basis for a definition of the \underline{equivalence} of relations:

R ≡ S iff R′ = S′

This recipe: ♣ first, make the relations equischematic, and ♣ second, apply a class operation on the new graphs

is a general method in the algebra we are going to develop below.

18.3.6 Remark

The schema unification of relations is similar to the denominator unification of two fractions: To compare or add two fractions

α = \frac{n}{d}  and  β = \frac{m}{e}

we first produce

α′ := \frac{n · e}{d · e}  and  β′ = \frac{m · d}{d · e}

and then we are able to compare:

α ≤ β  iff  n · e ≤ m · d

and to add:

α + β = \frac{(n · e) + (m · d)}{d · e}

The general idea is, that α′ and β′ have the same denominator d · e. Similarly, R′ and S′ have the same schema X ∨ Y.

For the fraction arithmetic, it is important that α′ = α and β′ = β. And the same is true for the relation algebra: R′ ≡ R and S′ ≡ S. The result of an expansion is always equivalent to the original relation.

Part VIII

Operations on relations

19 Some basic operations on relations

19.1 Schema comparison

19.1.1 Repetition

Recall (definition 10.3.2), that for two schemas X = [X_{i}|i ∈ I] and Y = [Y_{j}|j ∈ J]

(1) X ≬ Y iff I ∩ J = ∅ (distinct)

(2) X ⌣ Y iff X_{k} = Y_{k} for all k ∈ I ∩ J (compatible)

(3) X ≤ Y iff I ⊆ J and X_{i} = Y_{i} for all i ∈ I (smaller)

19.1.2 Definition

Let X = [X_{i}|i ∈ I] and Y = [Y_{j}|j ∈ J] be two schemas and R = [X, Γ] and S = [Y, Σ] two relations. We define:

(1) R is \underline{sub–schematic} to S, written

R ⊴ S

iff X ≤ Y (i.e. I ⊆ J and X_{i} = Y_{i} for all i ∈ I)

(2) R is \underline{equi–schematic} with S, written

R ≜ S

iff X = Y

(3) R and S are \underline{(schema) compatible}, written

R ⌣ S

iff X ⌣ Y (i.e. X_{k} = Y_{k} for all k ∈ I ∩ J)

(4) R and S are \underline{(attribute or schema) distinct}, written

R ≬ S

iff X ≬ Y (i.e. I ∩ J = ∅)

And again, we write

R ⋬ S  R ≜̸ S  R ⌣̸ S  R ≬̸ S

if the according relation does not hold.

19.1.3 Definition

A class R of relations is called

(1) \underline{(pairwise) distinct}, if

all R, S ∈ R with R ≠ S are distinct

(2) \underline{(pairwise) compatible}, if

all R, S ∈ R are compatible

(3) \underline{(pairwise) equi–schematic}, if

all R, S ∈ R are equi–schematic

19.1.4 Example

The just defined relations between relations and properties of relation classes all depend on the schemas only, the graphs are not concerned.

Let us take the following example relations in graph table notation:

R_{1} = \begin{matrix}a : ℕ & b : ℤ \\ 1 & 2 \\ 3 & 4 \end{matrix} R_{2} = \begin{matrix}a : ℕ & b : ℤ \\ 1 & 3 \end{matrix} R_{3} = \begin{matrix}b : ℤ & c : ℕ \\ 1 & 2 \\ 3 & 4 \end{matrix}

R_{4} = \begin{matrix}a : ℤ & c : ℕ \\ 1 & 2 \\ 3 & 4 \end{matrix} R_{5} = \begin{matrix}p : ℕ & q : ℤ \\ 2 & 3 \\ 4 & 5 \end{matrix} R_{6} = \begin{matrix}r : ℕ & s : ℤ \\ 1 & 2 \\ 3 & 4 \end{matrix}

(1) R_{1} and R_{2} are equi–schematic, R_{1} ≜ R_{2}.

This example explains the introduction of ≜. For any two schemas X and Y, X ≤ Y and Y ≤ X implies X = Y. For relations, this is not true in general: R_{1} ⊴ R_{2} and R_{2} ⊴ R_{1} does not necessarily imply R_{1} = R_{2}. In more general terms: (REC, ≤) is a poclass (i.e. ≤ is transitive, reflexive and antisymmetric on the class of all records, including schemas), but (Rel, ⊴) is only a quasi– ordered class (i.e. ⊴ is transitive and reflexive, but not necessarily antisymmetric on the class of all relations).

(2) R_{1} ⌣ R_{3} and R_{3} ⌣ R_{4}, but R_{1} ⌣̸ R_{4} (because dom_{a}(R_{1}) = ℕ ≠ ℤ = dom_{a}(R_{4})) This example shows, that ⌣ is not transitive in general. So it is not an equivalence relation, although it is reflexive and symmetric.

(3) R_{1} and R_{5} are distinct, i.e. R_{1} ≬ R_{5}, because their attribute classes {a, b} and {p, q} are disjunct. R_{1} and R_{5} are also compatible, i.e. R_{1} ⌣ R_{5}, because @(R_{1}) ∩ @(R_{5}) = ∅ and dom_{i}(R_{1}) = dom_{i}(R_{5}) is true for all i ∈ ∅ in a trivial sense. Obviously, this example is symptomatic for the general rule: distinctness implies compatibility.

(4) {R_{1}, R_{5}, R_{6}} is distinct. Their attribute classes {a, b} , {p, q} , {r, s} are pairwise disjunct and thus R_{1} ≬ R_{5}, R_{1} ≬ R_{6}, and R_{5} ≬ R_{6}. {R_{1}, R_{5}, R_{6}} is also compatible.

19.1.5 Example

(1) The empty class ∅ is a distinct, compatible, and equi– schematic class of relations.

(2) Rel, the class of all relations is not distinct, not compatible, and not equischematic.

19.1.6 Lemma

(1) ⟨Rel, ⊴⟩ is a quasi–ordered class.

(2) ⟨R, ⊴⟩ is a quasi–ordered class, for each R ⊆ Rel.

(3) ≜ is the derived equivalence relation of ⊴ in the sense that R ≜ S iff R ⊴ S and S ⊴ R, for all relations R, S.

19.1.7 Proof of 19.1.6

Recall, that a quasi–order relation is a transitive and reflexive binary endorelation.

(1) Let R_{1} = [X_{1}, Γ_{1}] , R_{2} = [X_{2}, Γ_{2}] , R_{3} = [X_{3}, Γ_{3}] be any three relations. If R_{1} ⊴ R_{2} and R_{2} ⊴ R_{3}, then X_{1} ≤ X_{2} and X_{2} ≤ X_{3}, so that X_{1} ≤ X_{3} (according to 11.1.1) and thus R_{1} ⊴ R_{3}. This is the transitivity of ≤ on REC. And with X_{1} ≤ X_{1} we have R_{1} ⊴ R_{1}, which is the reflexivity.

(2) The same reasoning in (1) holds, when we restrict the three relations to come from R. More general: Every subclass of a quasi–ordered class is a quasi–ordered class itself, with respect to the same relation (see 7.2.3).

(3) On the class of schemas, ≤ is antisymmetric, i.e. X ≤ Y and Y ≤ X implies X = Y. So two relations R = [X, Γ] and S = [Y, Σ] with R ⊴ S and S ⊴ R have X ≤ Y and Y ≤ X, so X = Y and thus R ≜ S.

19.1.8 Lemma

(1) Every distinct class of relations is compatible.

(2) Every equischematic class of relations is compatible.

19.1.9 Proof of 19.1.8

Both statements are immediate consequences of the definitions in 19.1.2.

19.1.10 Lemma

For every schema X holds:

(1) Rel(X) is equi–schematic and compatible

(2) Prel(X) is compatible On the other hand, if R is a relation class, then

(3) R is equi–schematic iff R ⊆ Rel(Y), for some schema Y

(4) R is compatible iff R ⊆ Prel(Y), for some schema Y Furthermore

(5) If R is compatible, then R ⊆ Prel({x(R) | R ∈ R}).

19.1.11 Proof of 19.1.10

Let X = [X_{i}|i ∈ I] be any given schema.

(1) Rel(X) = {[X, Γ] | Γ ⊆ ⊗X} is equi–schematic by definition, each member has the same schema X. Therefore it is compatible as well.

(2) We have Prel(X) = {[Y, Γ] | Y ∈ Proj(X), Γ ⊆ ⊗Y } and we know (from 10.3.10), that Proj(X) is compatible. So all Y_{1}, Y_{2} ∈ Proj(X) are compatible and that makes all [Y_{1}, Γ_{1}] , [Y_{2}, Γ_{2}] ∈ Prel(X) compatible as well.

(3) If R = ∅, then R ⊆ Rel(Y) for every arbitrary schema Y. If R ≠ ∅ and [X, Γ] is a member of R, then every other member must have the same schema X, because R is supposed to be equi–schematic. So R ∈ Rel(X) for all R ∈ R, i.e. R ⊆ Rel(X).

From lemma 11.7.6(3) we know that for every class X of schemas, the following three statements are equivalent: (a) X is compatible. (b) X ⊆ Proj(Y), for some schema Y. (c) X ⊆ Proj(X) for X := ⋁ X.

We can apply that knowledge immediately for the compatibility of a relation class R, because that only depends on the schemas of the elements in R. As a result be obtain (4) and

(5).

19.2 Identity relations

19.2.1 Definition identity

For every schema X = [X_{i}|i ∈ I] we define

Id_{X} := [ \begin{matrix}X \\ x ⇝ x(i) = x(j) for all i, j ∈ I \end{matrix} ]

the \underline{identity (relation)} of X.

19.2.2 Remark

If C is a class, the usual identity =_{C} on C is just a special case. We can (re)define

◯ 1 =_{C} ◯ 2 := Id_{⟨C,C⟩} = [ \begin{matrix}C ↭ C \\ \{⟨x, x⟩ | x ∈ C\} \end{matrix} ]

19.2.3 Table representations

Recall, that ℕ := {0, 1, 2, …} is the natural number and ℚ is the rational number class. Let A := {−2, 0, 3, 7, 11} and

X := [ \begin{matrix}a & ↦ & A \\ n & ↦ & ℕ \\ q & ↦ & ℚ \end{matrix} ]

The graph of Id_{X} contains exactly the records

x := [ \begin{matrix}a & ↦ & ν \\ n & ↦ & ν \\ q & ↦ & ν \end{matrix} ] with ν ∈ A ∩ ℕ ∩ ℚ

Accordingly, the graph table contains all the possible rows with identical components:

\begin{matrix}a : A & n : ℕ & q : ℚ \\ 0 & 0 & 0 \\ 3 & 3 & 3 \\ 7 & 7 & 7 \\ 11 & 11 & 11 \end{matrix}

An often used special case in mathematics is the double table of =_{C}, for some class C. For example, the double table for =_{A} is

−2 0 3 7 11
−2 1 0 0 0 0
0 0 1 0 0 0
3 0 0 1 0 0
7 0 0 0 1 0
11 0 0 0 0 1

(Note, that this standard table in mathematics is a little variation of our precise definition of a double table. We left away the attributes in 1 and 2 for the left column and top row. In fact, it doesn’t matter where they are place, because the identity is symmetric.) The 1’s form a diagonal shape in the table. Sometimes, the identity relation itself is therefore called the diagonal relation.

19.2.4 Example identity

Recall, that ℕ := {0, 1, 2, …} and ℤ := {…, −1, 0, 1, …}. So

Id_{⟨ℕ,ℤ⟩} = [ \begin{matrix}ℕ ↭ ℤ \\ ⟨n, m⟩ ⇝ n = m \end{matrix} ]

And the ternary identity on 𝔹 = {0, 1} is

Id_{⟨𝔹,𝔹,𝔹⟩} =  \begin{matrix}1 : 𝔹 & 2 : 𝔹 & 3 : 𝔹 \\ 0 & 0 & 0 \\ 1 & 1 & 1 \end{matrix}  =  1 2 3 0 0 0 1 1 0 0 0 0 1 0 0 1 1 0 0 0 0 1 0 1 0 1 0 0 1 1 0 1 1 1 1

19.3 Empty and full relations

19.3.1 Definition empty and full relations

Let X = [X_{i}|i ∈ I] be a schema, then

⊥_{X} := [ \begin{matrix}X \\ ∅ \end{matrix} ]

is the \underline{empty}, \underline{bottom} or \underline{zero} relation on X

⊤_{X} := [ \begin{matrix}X \\ ⊗X \end{matrix} ]

is the \underline{full}, \underline{top}, or \underline{unit} relation on X

In particular

⊥ := ⊥_{⟨⟩} = [ \begin{matrix}⟨⟩ \\ ∅ \end{matrix} ]

is \underline{the} \underline{empty}, \underline{bottom}, or \underline{zero} relation

⊤ := ⊤_{⟨⟩} = [ \begin{matrix}⟨⟩ \\ \{⟨⟩\} \end{matrix} ]

is \underline{the} \underline{full}, \underline{top}, or \underline{unit} relation

19.3.2 Table representations

Let X = [ \begin{matrix}a & ↦ & \{p, q\} \\ b & ↦ & \{r, s, t\} \end{matrix} ].

The graph tables of ⊥_{X} and ⊤_{X} are given by

⊥_{X} = a : {p, q} b : {r, s, t}

and

⊤_{X} = \begin{matrix}a : \{p, q\} & b : \{r, s, t\} \\ p & r \\ q & r \\ p & s \\ q & s \\ p & t \\ q & t \end{matrix}

i.e. in ⊥_{X} there is none, in ⊤_{X} every element of ⊗X is in the table, ⊥_{X} is the least and ⊤_{X} is the greatest relation on X.

Their boolean tables are typical as well:

⊥_{X} = \begin{matrix}a & b \\ p & r & 0 \\ q & r & 0 \\ p & s & 0 \\ q & s & 0 \\ p & t & 0 \\ q & t & 0 \end{matrix}  and  ⊤_{X} = \begin{matrix}a & b \\ p & r & 1 \\ q & r & 1 \\ p & s & 1 \\ q & s & 1 \\ p & t & 1 \\ q & t & 1 \end{matrix}

i.e. ⊥_{X} shows 0’s and ⊤_{X} has 1’s only.

19.3.3 Table representations of ⊥ and ⊤ The empty cartesian product ⊗⟨⟩ = {⟨⟩} has an empty set of attributes. If we write ⊥ and ⊤ in graph table notation, we have the problem that the table “disappears”.

Written as boolean tables, we suggest the following notation for ⊥ and ⊤:

0 = ⊥  and  1 = ⊤

according to the construction rules for boolean tables.

19.3.4 Remark

In 17.7.3 we defined to call a relation R = [X, Γ] \underline{empty}, if Γ = ∅, and \underline{full}, if Γ = ⊗Γ. In terms of our new notation, this can be expressed by: R is empty, if R = ⊥_{X}, and full, if R = ⊤_{X}.

19.3.5 Remark

If X = [X_{i}|i ∈ I] is a schema, then exactly one of the three following statements is true:

(1) X is empty, i.e. X = ⟨⟩.

Then ⊥_{X} = ⊥ = [⟨⟩, ∅] ≠ [⟨⟩, {⟨⟩}] = ⊤ = ⊤_{X} and Rel(X) = {⊥, ⊤}.

(2) X is not proper, i.e. X_{i} = ∅ for at least one i ∈ I. Then ⊗X = ∅ and ⊥_{X} = [X, ∅] = [X, ⊗X] = ⊤_{X} and Rel(X) = {⊥_{X}} = {⊤_{X}}.

(3) X is proper and not empty.

Then ⊗X ≠ ∅, ⊥_{X} ≠ ⊤_{X}, and Rel(X) ⊇ {⊥_{X}, ⊤_{X}}.

We obtain the following result:

(4) ⊥_{X} ≠ ⊤_{X} iff X is proper

19.4 Complement

19.4.1 Definition complement

For every relation R = [X, Γ], we define

¬R := [ \begin{matrix}X \\ ⊗X\Γ \end{matrix} ]

the \underline{complement} or \underline{negation} of R or “\underline{not} R”.

The symbolic “deletion” of R, i.e.

R̸

is an often used alternative notation for ¬R.

19.4.2 Boolean table representations

Recall 5.8.4, that for each β ∈ 𝔹 := {0, 1} we defined:

−β := \begin{cases}0 & if β = 1 \\ 1 & if β = 0 \end{cases}

If a relation R is completely finite and its boolean table has the form

i_{1} … i_{n}
. . . . . . . . . β_{1}
. . . . . . . . . β_{2}
. . . . . . . . . β_{3}
⋮  ⋮  ⋮
. . . . . . . . . β_{m}

then ¬R is given by

i_{1} … i_{n}
. . . . . . . . . −β_{1}
. . . . . . . . . −β_{2}
. . . . . . . . . −β_{3}
⋮  ⋮  ⋮
. . . . . . . . . −β_{m}

19.4.3 Example

If R = \begin{matrix}a & b \\ p & r & 0 \\ q & r & 1 \\ p & s & 0 \\ q & t & 0 \\ p & t & 1 \\ q & s & 1 \end{matrix} then ¬R = \begin{matrix}a & b \\ p & r & 1 \\ q & r & 0 \\ p & s & 1 \\ q & t & 1 \\ p & t & 0 \\ q & s & 0 \end{matrix}

19.4.4 Remark

If R = [X, Γ] is a table, then ¬R = [X, ⊗X \ Γ] is not necessarily a table anymore, because the new graph ⊗X \Γ might be infinite. So ¬R might not be representable by a graph table, even if R is.

19.4.5 Remark

For every R ∈ Rel(X) and each x ∈ ⊗X holds: ¬R(x) iff R(x) is not true. In other words, x ∈ ¬R iff x ∉ R. The deletion notation is more convenient and common for binary endorelations. For example, if ≤ is the usual linear order (say on the integers), we usually write ≰ rather than ¬ ≤. So for every two integers n and m we have n ≰ m iff n ≤ m is not true. For a linear order like the ≤ on ℤ, there is also the option to use > for ≰. But note the difference between the conversion (or inversion) of a binary relation, where R : X ↭ Y turns into

[ \begin{matrix}Y ↭ X \\ ⟨y, x⟩ ⇝ ⟨x, y⟩ ∈ R \end{matrix} ]

and the complement. Complementation (or negation) and conversion (or inversion) are different operations. Besides, this turn of the symbol direction doesn’t work for non–linear relations. Take the class inclusion ⊆. Its complement ⊈ is different to ⊃. For example, {1, 2} ⊈ {2, 3}, but {1, 2} ⊃ {2, 3} is not correct.

19.4.6 Lemma

¬¬R = R for every relation R.

19.4.7 Proof of 19.4.6

If R = [X, Γ], then

¬¬R = ¬[\begin{matrix}X \\ ⊗X \ Γ \end{matrix}] = [\begin{matrix}X \\ ⊗X \ (⊗X \ Γ) \end{matrix}] = [\begin{matrix}X \\ Γ \end{matrix}] = R

19.4.8 Lemma ; {(1) ¬⊥ = ⊤ \atop (2) ¬⊤ = ⊥}

19.4.9 Proof of 19.4.8

(1) ¬⊥ = ¬[\begin{matrix}⟨⟩ \\ ∅ \end{matrix}] = [\begin{matrix}⟨⟩ \\ \{⟨⟩\} \ ∅ \end{matrix}] = [\begin{matrix}⟨⟩ \\ \{⟨⟩\} \end{matrix}] = ⊤

(2) ¬⊤ = ¬[\begin{matrix}⟨⟩ \\ \{⟨⟩\} \end{matrix}] = [\begin{matrix}⟨⟩ \\ \{⟨⟩\} \ \{⟨⟩\} \end{matrix}] = [\begin{matrix}⟨⟩ \\ ∅ \end{matrix}] = ⊥

19.5 Boolean operations on equi– schematic relations

19.5.1 Definition boolean operations

For two relations R = [X, Γ] and S = [X, Σ] with identical schema X we define:

R ⊆ S :iff Γ ⊆ Σ  (\underline{inclusion})

R ∩ S := [\begin{matrix}X \\ Γ ∩ Σ \end{matrix}]  (\underline{(small) intersection})

R ∪ S := [\begin{matrix}X \\ Γ ∪ Σ \end{matrix}]  (\underline{(small) union})

19.5.2 Definition

As usual, there is a whole range of relations that come along with ⊆, namely:

◯ 1 ⊈ ◯ 2  is not ◯ 1 ⊆ ◯ 2
◯ 1 ⊂ ◯ 2  is ◯ 1 ⊆ ◯ 2 and ◯ 2 ⊈ ◯ 1
◯ 1 ⊇ ◯ 2  is ◯ 2 ⊆ ◯ 1

etc.

19.5.3 Definition big junctions

For every schema X and R ⊆ Rel(X) we define

⋂ R := ⋂_{R∈R}R := \begin{cases}⊤_{X} & if R = ∅ \\ [ \begin{matrix}X \\ ⋂_{R∈R}gr(R) \end{matrix} ] & if R ≠ ∅ \end{cases}

the \underline{(big) intersection} of R

⋃ R := ⋃_{R∈R}R := \begin{cases}⊥_{X} & if R = ∅ \\ [ \begin{matrix}X \\ ⋃_{R∈R}gr(R) \end{matrix} ] & if R ≠ ∅ \end{cases}

the \underline{(big) union} of R

19.5.4 Remark

The definition of ⋂ depends on the schema X, so we should carry this information in the notation to avoid ambiguities and write, say _{⋂X} instead of just ⋂ for the big intersection. How-

ever, most of the times X can be reconstructed from the expression ⋂ R via X = ⋁{gr(R) | R ∈ R}. Unless R is empty. In that case, ⋂ R = ⊤_{X} is not well–defined, if X is not obvious from the context. So in doubtful circumstances, let us keep in mind to write

⋂_{X} ◯ 1  and  ⋃_{X} ◯ 2

for the big intersection and big union.

19.5.5 Remark graph table representations

The just defined operations on relations resemble the class operations on their graphs. In particular, the union and intersection of relations in graph table notation is the union and intersection of their rows. And as usual in class notation, multiple occuring elements of the union are only mentioned once. For example, for

R = \begin{matrix}a : ℕ & b : ℕ \\ 1 & 2 \\ 3 & 4 \\ 5 & 6 \\ 7 & 8 \end{matrix}  and  S = \begin{matrix}a : ℕ & b : ℕ \\ 5 & 6 \\ 7 & 8 \\ 9 & 10 \end{matrix}

we obtain

R ∩ S = \begin{matrix}a : ℕ & b : ℕ \\ 5 & 6 \\ 7 & 8 \end{matrix}

and

R ∪ S =  \begin{matrix}a : ℕ & b : ℕ \\ 1 & 2 \\ 3 & 4 \\ 5 & 6 \\ 7 & 8 \\ 5 & 6 \\ 7 & 8 \\ 9 & 10 \end{matrix}  =  \begin{matrix}a : ℕ & b : ℕ \\ 1 & 2 \\ 3 & 4 \\ 5 & 6 \\ 7 & 8 \\ 9 & 10 \end{matrix}

Furthermore, we have R ⊈ S, because not every row of R is also a row of S.

19.5.6 Repetition

Recall 5.8.4, that 𝔹 := {0, 1} is the set of bit values, and together with ∧, ∨, ⋀, ⋁ and ¬ it makes a complete boolean algebra. For example, ¬0 = 1, 0 ∧ 1 = 0 and ⋀ {0, 1} = 0.

19.5.7 Remark Boolean table representations

If X is completely finite, given by

X = [ \begin{matrix}i_{1} & ↦ & X_{1} \\ ⋮ & & ⋮ \\ i_{n} & ↦ & X_{n} \end{matrix} ]

and if R, S ∈ Rel(X) are given by their boolean tables

R = \begin{matrix}i_{1} & … & i_{n} \\ … & … & … & β_{1} \\ … & … & … & β_{2} \\ … & … & … & β_{3} \\ ⋮ & & ⋮ & ⋮ \\ … & … & … & β_{m} \end{matrix} and S = \begin{matrix}i_{1} & … & i_{n} \\ … & … & … & β′_{1} \\ … & … & … & β′_{2} \\ … & … & … & β′_{3} \\ ⋮ & & ⋮ & ⋮ \\ … & … & … & β′_{m} \end{matrix}

then

R ⊆ S iff β_{i} ≤ β′_{i} for all i ∈ {1, …, m}

and

R ∩ S = \begin{matrix}i_{1} & … & i_{n} \\ … & … & … & β_{1} ∧ β′_{1} \\ … & … & … & β_{2} ∧ β′_{2} \\ … & … & … & β_{3} ∧ β′_{3} \\ ⋮ & & ⋮ & ⋮ \\ … & … & … & β_{m} ∧ β′_{m} \end{matrix}

R ∪ S = \begin{matrix}i_{1} & … & i_{n} \\ … & … & … & β_{1} ∨ β′_{1} \\ … & … & … & β_{2} ∨ β′_{2} \\ … & … & … & β_{3} ∨ β′_{3} \\ ⋮ & & ⋮ & ⋮ \\ … & … & … & β_{m} ∨ β′_{m} \end{matrix}

19.5.8 Example

Let X = [ \begin{matrix}a & ↦ & \{p, q\} \\ b & ↦ & \{r, s, t\} \end{matrix} ] and R, S ∈ Rel(X), given by

R = \begin{matrix}a & b \\ p & r & 0 \\ q & r & 0 \\ p & s & 1 \\ q & s & 1 \\ p & t & 1 \\ q & t & 0 \end{matrix}  and  S = \begin{matrix}a & b \\ p & r & 0 \\ q & r & 1 \\ p & s & 1 \\ q & s & 1 \\ p & t & 0 \\ q & t & 0 \end{matrix}

then R ⊈ S and

R ∩ S = \begin{matrix}a & b \\ p & r & 0 \\ q & r & 0 \\ p & s & 1 \\ q & s & 1 \\ p & t & 0 \\ q & t & 0 \end{matrix}  and  R ∪ S = \begin{matrix}a & b \\ p & r & 0 \\ q & r & 1 \\ p & s & 1 \\ q & s & 1 \\ p & t & 1 \\ q & t & 0 \end{matrix}

19.5.9 Definition

For every schema X, we define

ℜ𝔢𝔩 (X) := ⟨Rel(X), ⊆, ⊥_{X}, ⊤_{X}, ∩, ∪, ⋂, ⋃, ¬⟩

the \underline{equi–schematic relation algebra} over X or \underline{the algebra (on)} Rel(X).

19.5.10 Lemma

ℜ𝔢𝔩 (X) is a complete boolean algebra, for every schema X.

19.5.11 Remark

Recall (see 7 for the full characterization of complete boolean algebras), that theorem 19.5.10 is defined to mean: ♣ ⊆ is a (partial) order on Rel(X) which determines all the

other operations ♣ ⊥_{X} is the least element ♣ ⊤_{X} is the greatest element ♣ R ∩ S is the greatest lower bound of R, S ∈ Rel(X) ♣ R ∪ S is the least upper lower bound of R, S ∈ Rel(X) ♣ ∩ and ∪ are mutually distributive ♣ ⋂ R is the greatest lower bound of R ⊆ Rel(X) ♣ ⋃ R is the least upper bound of R ⊆ Rel(X) ♣ ¬ is the complementation, i.e. ¬R ∩ R = ⊥_{X} and ¬R ∪ R =

⊤_{X}, for every R ∈ Rel(X).

19.5.12 Proof of 19.5.10

Recall (see 6 ), that for every given C, the \underline{power class algebra} over C

𝔓 (C) = ⟨P(C), ⊆, ∅, C, ∩, ∪, ⋂, ⋃, C \ ◯^{1} ⟩

is a complete boolean algebra. In more detail: The power class P(C) of C is the carrier class, ⊆ is the (partial) order relation, ∅ is the bottom and C the top element, ∩ and ∪ are the meet and join with completions ⋂, ⋃ : P(P(C)) ⟶ P(C) (where ⋂ ∅ := C), and C \ ◯ 1 : P(C) ⟶ P(C) is the complementation.

Now let X be a given schema. We define

φ := [ \begin{matrix}P(⊗X) ⟶ Rel(X) \\ Γ ↦ [X, Γ] \end{matrix} ]

Obviously, φ is a bijection and its inverse φ^{−1} is

φ^{−1} = [ \begin{matrix}Rel(X) ⟶ P(⊗X) \\ [X, Γ] ↦ Γ \end{matrix} ]

i.e. φ^{−1}(R) = gr(R), for all R ∈ Rel(X).

It is easy to see that ♣ Γ ⊆ Σ iff φ(Γ) ⊆ φ(Σ) for all Γ, Σ ∈ P(⊗X) ♣ φ(∅) = ⊥_{X} ♣ φ(⊗X) = ⊥_{X} ♣ φ(Γ ∩ Σ) = φ(Γ) ∩ φ(Σ) for all Γ, Σ ∈ P(⊗X) ♣ φ(Γ ∪ Σ) = φ(Γ) ∪ φ(Σ) for all Γ, Σ ∈ P(⊗X) ♣ φ(⋂ G) = ⋂{φ(Γ) | Γ ∈ G} for every G ⊆ P(⊗X) ♣ φ(⋃ G) = ⋃{φ(Γ) | Γ ∈ G} for every G ⊆ P(⊗X) ♣ φ(⊗X \ Γ) = ¬φ(Γ) for each Γ ∈ P(⊗X)

And that means altogether, that φ is an isomorphism from 𝔓(⊗X) into ℜ𝔢𝔩(X), written

φ : 𝔓(⊗X) ≅ ℜ𝔢𝔩(X)

That implies, that ℜ𝔢𝔩(X) is a complete boolean algebra itself.

19.5.13 Example

Consider the schema X from example 17.8.3 again

X = [ \begin{matrix}a ↦ & 𝔹 \\ b ↦ & 𝔹 \end{matrix} ]

The complete boolean lattice on Rel(X) has 16 members and is represented by the following order diagram:

[figure: \begin{matrix}a & b \\ 0 & 0 & 0 \\ 1 & 0 & 0 \\ 0 & 1 & 0 \\ 1 & 1 & 0 \end{matrix}; \begin{matrix}a & b \\ 0 & 0 & 1 \\ 1 & 0 & 0 \\ 0 & 1 & 0 \\ 1 & 1 & 0 \end{matrix}; \begin{matrix}a & b \\ 0 & 0 & 0 \\ 1 & 0 & 1 \\ 0 & 1 & 0 \\ 1 & 1 & 0 \end{matrix}; \begin{matrix}a & b \\ 0 & 0 & 0 \\ 1 & 0 & 0 \\ 0 & 1 & 1 \\ 1 & 1 & 0 \end{matrix}; \begin{matrix}a & b \\ 0 & 0 & 0 \\ 1 & 0 & 0 \\ 0 & 1 & 0 \\ 1 & 1 & 1 \end{matrix}; \begin{matrix}a & b \\ 0 & 0 & 1 \\ 1 & 0 & 1 \\ 0 & 1 & 0 \\ 1 & 1 & 0 \end{matrix}; \begin{matrix}a & b \\ 0 & 0 & 1 \\ 1 & 0 & 0 \\ 0 & 1 & 1 \\ 1 & 1 & 0 \end{matrix}; \begin{matrix}a & b \\ 0 & 0 & 1 \\ 1 & 0 & 0 \\ 0 & 1 & 0 \\ 1 & 1 & 1 \end{matrix}; \begin{matrix}a & b \\ 0 & 0 & 0 \\ 1 & 0 & 1 \\ 0 & 1 & 1 \\ 1 & 1 & 0 \end{matrix}; \begin{matrix}a & b \\ 0 & 0 & 0 \\ 1 & 0 & 1 \\ 0 & 1 & 0 \\ 1 & 1 & 1 \end{matrix}; \begin{matrix}a & b \\ 0 & 0 & 0 \\ 1 & 0 & 0 \\ 0 & 1 & 1 \\ 1 & 1 & 1 \end{matrix}; \begin{matrix}a & b \\ 0 & 0 & 1 \\ 1 & 0 & 1 \\ 0 & 1 & 1 \\ 1 & 1 & 0 \end{matrix}; \begin{matrix}a & b \\ 0 & 0 & 1 \\ 1 & 0 & 1 \\ 0 & 1 & 0 \\ 1 & 1 & 1 \end{matrix}; \begin{matrix}a & b \\ 0 & 0 & 1 \\ 1 & 0 & 0 \\ 0 & 1 & 1 \\ 1 & 1 & 1 \end{matrix}; \begin{matrix}a & b \\ 0 & 0 & 0 \\ 1 & 0 & 1 \\ 0 & 1 & 1 \\ 1 & 1 & 1 \end{matrix}; \begin{matrix}a & b \\ 0 & 0 & 1 \\ 1 & 0 & 1 \\ 0 & 1 & 1 \\ 1 & 1 & 1 \end{matrix}]

19.5.14 Lemma common properties of complete boolean algebras

Let X be a proper schema. For all R, S, T ∈ Rel(X) and all R ⊆ Rel(X) holds:

(1) ⊤_{X} ∩ R = R (⊤_{X} is neutral element of ∩)

(2) ⊥_{X} ∪ R = R (⊥_{X} is neutral element of ∪)

(3) R ∩ R = R (∩ is idempotent)

(4) R ∪ R = R (∪ is idempotent)

(5) R ∩ (S ∩ T) = (R ∩ S) ∩ T (∩ is associative)

(6) R ∪ (S ∪ T) = (R ∪ S) ∪ T (∪ is associative)

(7) R ∩ S = S ∩ R (∩ is commutative)

(8) R ∪ S = S ∪ R (∪ is commutative)

(9) R ∩ S = ⋂ {R, S} (∩ is special case of ⋂)

(10) R ∪ S = ⋃ {R, S} (∪ is special case of ⋃)

(11) S ∩ ⋃ R = ⋃{S ∩ R | R ∈ R} (full distributivity)

(12) S ∪ ⋂ R = ⋂{S ∪ R | R ∈ R} (full distributivity)

(13) ¬ ⋂ R = ⋃{¬R | R ∈ R} (de Morgan’s law)

(14) ¬ ⋃ R = ⋂{¬R | R ∈ R} (de Morgan’s law)

(15) ⊥_{X} ∩ R ≡ ⊥_{X} (⊥_{X} cancels ∩)

(16) ⊤_{X} ∪ R ≡ ⊤_{X} (⊤_{X} cancels ∪)

(17) ⊥_{X} ⊆ R (⊥_{X} is a least element)

(18) R ⊆ ⊤_{X} (⊤_{X} is a greatest element)

(19) ⋂ {R} = R (⋂ is idempotent)

(20) ⋃ {R} = R (⋃ is idempotent)

19.5.15 Proof of 19.5.14 These properties hold for complete boolean algebras in general (see 7). So they all follow from 19.5.10.

19.5.16 Remark

If the schema X is not proper, then ⊗X = ∅ (according to 12.1.12). For such an X, Rel(X) has exactly one member R = [X, ∅] and R = ⊥_{X} = ⊤_{X} (according to 19.3.5(4)). Nevertheless, the algebra on Rel(X) still satisfies the properties of a complete boolean algebra. However, such an one– element boolean algebra is usually not a very useful one and it is also called \underline{degenerated}. In all other case of proper schemas X, the algebra has at least two elements ⊥_{X} and ⊤_{X} with ⊥_{X} ≠ ⊤_{X}.

19.6 Distinct (cartesian) product

19.6.1 Repetition

Two records ξ = [ξ_{i}|i ∈ I] and υ = [υ_{j}|j ∈ J] are \underline{distinct},

written ξ ≬ υ , if I ∩ J = ∅. Their \underline{distinct join} is

ξ ˙∨ υ := [ζ_{k}|k ∈ (I ∪ J)] with ζ_{k} := \begin{cases}ξ_{k} & if k ∈ I \\ υ_{k} & if k ∈ J \end{cases}

Two relations R = [X, Γ] and S = [Y, Σ] are \underline{distinct}, written

R ≬ S , if their schema is distinct, i.e. X ≬ Y. A class R of

relations is \underline{(pairwise) distinct}, if each two different members are distinct. Two graphs (i.e. record classes) Γ and Σ are \underline{relatively distinct},

written Γ ≬ Σ , if ξ ≬ υ for all ξ ∈ Γ and υ ∈ Σ. And that is exactly the case, when there are two distinct schemas X and Y with Γ ⊆ ⊛X and Σ ⊆ ⊛Y. If Γ and Σ are two relatively distinct graphs, then Γ ⊙ Σ := \{ξ ∨ υ | ξ ∈ Γ, υ ∈ Σ\} is their \underline{distinct product}. The number of elements in the distinct product is given by card(Γ ⊙ Σ) = card(Γ) · card(Σ).

19.6.2 Definition

For every two distinct relations R = [X, Γ] and S = [Y, Σ] we define

R ⊙ S := [ \begin{matrix}X ˙∨ Y \\ \{x ˙∨ y | x ∈ Γ, y ∈ Σ\} \end{matrix} ] = [ \begin{matrix}X ˙∨ Y \\ Γ ⊙ Σ \end{matrix} ]

the \underline{distinct (cartesian) product} of R and S

More general, if R = {R_{k} | k ∈ K} is a (pairwise) distinct relation class with R_{k} = [X_{k}, Γ_{k}] for each k ∈ K, then

⊙R := ⊙_{k∈K}R_{k} := [ \begin{matrix}˙⋁_{k∈K}X_{k} \\ ⊙_{k∈K}Γ_{k} \end{matrix} ]

the \underline{distinct (cartesian) product} of R

19.6.3 Remark

Obviously, the general distict product on distinct relation classes is indeed a generalization of the binary ◯ 1 ⊙ ◯ 2 in the usual sense that R ⊙ S = ⊙ {R, S}, for all relations R and S with R ≬ S.

19.6.4 Remark Graph table representation

Given two distinct tables, say

R = \begin{matrix}a : ℤ & b : ℤ & c : ℤ \\ −1 & −2 & −3 \\ −2 & −3 & −4 \\ −4 & −5 & −6 \end{matrix} S = \begin{matrix}d : ℤ & e : ℤ \\ 1 & 2 \\ 2 & 3 \end{matrix}

Note, that {a, b, c} ∩ {d, e} = ∅, so that R ≬ S is really the case. So we can produce the distinct product by joining each of the three records in R with each of the two records in S, obtaining a relation with 3 · 2 = 6 members in its graph.

R ⊙ S = \begin{matrix}a : ℤ & b : ℤ & c : ℤ & d : ℤ & e : ℤ \\ −1 & −2 & −3 & 1 & 2 \\ −2 & −3 & −4 & 1 & 2 \\ −4 & −5 & −6 & 1 & 2 \\ −1 & −2 & −3 & 2 & 3 \\ −2 & −3 & −4 & 2 & 3 \\ −4 & −5 & −6 & 2 & 3 \end{matrix}

19.6.5 Lemma

If R, S, T are pairwise distinct relations, then

(1) R ⊙ (S ⊙ T) = (R ⊙ S) ⊙ T (associativity)

(2) R ⊙ S = S ⊙ R (commutativity)

(3) R ⊙ ⊥ = ⊥_{x(R)} (canceling element)

(4) R ⊙ ⊤ = R (neutral element)

19.6.6 Proof of 19.6.5

The distinct product of relations is a “typed version” of the distinct product of (their) graphs. Their properties are closely related, the ones here resemble the statements in 16.4.3. Suppose R = [X, Γ], S = [Y, Σ], and T = [Z, Π].

(1) Using 16.4.3(1) we obtain

R ⊙ (S ⊙ T) = [\begin{matrix}X \\ Γ \end{matrix}] ⊙ [\begin{matrix}Y ˙∨ Z \\ Σ ⊙ Π \end{matrix}]

= [\begin{matrix}X ˙∨ Y ˙∨ Z \\ Γ ⊙ Σ ⊙ Π \end{matrix}]

= [\begin{matrix}X ˙∨ Y \\ Γ ⊙ Σ \end{matrix} ] ⊙ [\begin{matrix}Z \\ Π \end{matrix}] = (R ⊙ S) ⊙ T

(2) Using 16.4.3(2) we obtain

R ⊙ S = [\begin{matrix}X ˙∨ Y \\ Γ ⊙ Σ \end{matrix} ] = [\begin{matrix}Y ˙∨ X \\ Σ ⊙ Γ \end{matrix}] = S ⊙ R

(3) Using 16.4.3(3) we obtain

R ⊙ ⊥ = [\begin{matrix}X \\ Γ \end{matrix}] ⊙ [\begin{matrix}⟨⟩ \\ ∅ \end{matrix}] = [\begin{matrix}X ⊙ ⟨⟩ \\ Γ ⊙ ∅ \end{matrix}] = [\begin{matrix}X \\ ∅ \end{matrix}] = ⊥_{X}

(4) Using 16.4.3(4) we obtain

R ⊙ ⊤ = [\begin{matrix}X \\ Γ \end{matrix}] ⊙ [\begin{matrix}⟨⟩ \\ \{⟨⟩\} \end{matrix}] = [\begin{matrix}X ˙∨ ⟨⟩ \\ Γ ⊙ \{⟨⟩\} \end{matrix}] = [\begin{matrix}X \\ Γ \end{matrix}] = R

19.6.7 Lemma If R and S are two distinct relations, then

(1) ¬(R ⊙ S) = (¬R ⊙ ¬S) ∪ (¬R ⊙ S) ∪ (R ⊙ ¬S)

(2) ¬R ⊙ ¬S ⊆ ¬(R ⊙ S)

19.6.8 Proof of 19.6.7 Let R = [Y, Γ] and S = [Z, Σ]. R and S are distinct, so Y ≬ Z. Let us put X := Y ˙∨ Z, then

⊗X = ⊗(Y ˙∨ Z) = (⊗Y) ⊙ (⊗Z)

according to 16.6.5(4). Furthermore, let us put Γ′ := ⊗Y \ Γ and Σ′ := ⊗Z \ Σ. So ⊗Y is the disjunct union of Γ and Γ′, and ⊗Z is the disjunct union of Σ and Σ′. ⊗X is a disjunct union of the following four components:

⊗X = (⊗Y) ⊙ (⊗Z)
= (Γ ∪ Γ′) ⊙ (Σ ∪ Σ′)
= (Γ ⊙ Σ) ∪ (Γ ⊙ Σ′) ∪ (Γ′ ⊙ Σ) ∪ (Γ′ ⊙ Σ′)

With these definitions we have the following proof of (1):

¬(R ⊙ S) = ¬ ([\begin{matrix}Y \\ Γ \end{matrix}] ⊙ [\begin{matrix}Z \\ Σ \end{matrix}])

= ¬[\begin{matrix}X \\ Γ ⊙ Σ \end{matrix}]

= [\begin{matrix}X \\ ⊗X \ (Γ ⊙ Σ) \end{matrix}]

= [\begin{matrix}X \\ (Γ ⊙ Σ′) ∪ (Γ′ ⊙ Σ) ∪ (Γ′ ⊙ Σ′) \end{matrix}]

= [\begin{matrix}X \\ Γ ⊙ Σ′ \end{matrix}] ∪ [\begin{matrix}X \\ Γ′ ⊙ Σ \end{matrix}] ∪ [\begin{matrix}X \\ Γ′ ⊙ Σ′ \end{matrix}]
= (R ⊙ ¬S) ∪ (¬R ⊙ S) ∪ (¬R ⊙ ¬S)

Since (1) is true, (2) immediately follows:

\begin{aligned}¬R ⊙ ¬S & ⊆ & (R ⊙ ¬S) ∪ (¬R ⊙ S) ∪ (¬R ⊙ ¬S) \\ & = & ¬(R ⊙ S) \end{aligned}

19.7 Concatenation of ordinary relations

19.7.1 Repetition

Recall 5.4.1, that ⟨x_{1}, …, x_{n}⟩ † ⟨y_{1}, …, y_{m}⟩ = ⟨x_{1}, …, x_{n}, y_{1}, …, y_{m}⟩ is the concatenation of two tuples.

19.7.2 Definition

For every two ordinary relations

R = [\begin{matrix}X_{1} ↭ … ↭ X_{n} \\ Γ \end{matrix}] and S = [\begin{matrix}Y_{1} ↭ … ↭ Y_{m} \\ Σ \end{matrix}]

we define

R † S := [ \begin{matrix}X_{1} ↭ … ↭ X_{n} ↭ Y_{1} ↭ … ↭ Y_{m} \\ \{ξ † υ | ξ ∈ Γ, υ ∈ Σ\} \end{matrix} ]

is the \underline{concatenation} of R and S.

19.7.3 Example

\begin{matrix}[\begin{matrix}ℕ ↭ ℕ \\ \{⟨1, 2⟩, ⟨3, 4⟩\} \end{matrix}] † [\begin{matrix}ℕ ↭ ℕ \\ \{⟨5, 6⟩, ⟨7, 8⟩\} \end{matrix}] \\ = [\begin{matrix}ℕ ↭ ℕ ↭ ℕ ↭ ℕ \\ \{⟨1, 2, 5, 6⟩, ⟨3, 4, 5, 6⟩, ⟨1, 2, 7, 8⟩, ⟨3, 4, 7, 8⟩\} \end{matrix}] \end{matrix}

19.7.4 Lemma

For all ordinary relations R, S, T holds:

(1) (R † S) † T = R † (S † T) (associativity)

(2) R † ⊤ = R (⊤ is neutral element for †)

(3) R † ⊥ = ⊥_{x(R)} (⊥ cancels †)

19.7.5 Proof of 19.7.4

(1) Is an immediate consequence of 10.5.3(1), the associativity of the concatenation of tuples.

(2) If R = [X_{1} ↭ … ↭ X_{n}, Γ], then

R † ⊤ = R † [\begin{matrix}⟨⟩ \\ \{⟨⟩\} \end{matrix}] = [\begin{matrix}X_{1} ↭ … ↭ X_{n} \\ \{ξ † ⟨⟩ | ξ ∈ Γ\} \end{matrix}] = R

(3) Again, if R = [X_{1} ↭ … ↭ X_{n}, Γ], then

R † ⊥ = R † [\begin{matrix}⟨⟩ \\ ∅ \end{matrix}] = [\begin{matrix}X_{1} ↭ … ↭ X_{n} \\ ∅ \end{matrix}] = ⊥_{⟨X1,...,Xn⟩}

20 Schema expansion and the semantic operations

20.1 Schema expansion

20.1.1 Definition expansion

Let R = [X, Γ] be relation and Y a schema with Y ⌣ X. We define

R ∥ Y := [ \begin{matrix}X ∨ Y \\ y ⇝ ∃x ∈ Γ . x ⌣ y \end{matrix} ]

the \underline{expansion} of R by Y

20.1.2 Remark table representations

If R = [X, Γ] is a relation and Y a schema with Y ⌣ X, there are two intuitive methods to generate R ∥ Y by means of table representations: ♣ If R is a table and Y is completely finite, we can use a graph

table representation (see 20.1.6). ♣ If X and Y are both completely finite, we can apply boolean

and double tables (see 20.1.5).

Both methods are based on the following lemma.

20.1.3 Lemma construction

Let X = [X_{i}|i ∈ I] and Y = [Y_{j}|j ∈ J] be two compatible schemas and R = [X, Γ]. If we put

Y′ := Y \ X = pr(Y, J \ I)

we have

(1) R ∥ Y = R ∥ Y′

(2) R ∥ Y = [ \begin{matrix}X ˙∨ Y′ \\ Γ ⊙ (⊗Y′) \end{matrix} ]

(3) R ∥ Y = R ⊙ ⊤_{Y ′}

(4) The graph of the result has the following size:

card(gr(R ∥ Y)) = card(Γ) · card(⊗Y′)
= card(Γ) · ∏_{j∈J\I}card(Y_{j})

20.1.4 Proof of 20.1.3

(1) Obviously, X ∨ Y = X ˙∨ Y′, so

R ∥ Y = [X ∨ Y, {y ∈ ⊗(X ∨ Y) | ∃x ∈ Γ . x ⌣ y}]
= [X ˙∨ Y′, {y ∈ ⊗(X ˙∨ Y′) | ∃x ∈ Γ . x ⌣ y}]
= R ∥ Y′

(2) Again we have X ∨ Y = X ˙∨ Y′. X and Y′ are distinct, so every y ∈ ⊗(X ∨ Y′) can uniquely be reconstructed by y = x ˙∨ z with x := pr(y, I) ∈ ⊗X and z := pr(y, J \ I) ∈ ⊗Y. For such a y holds: (∃x ∈ Γ . x ⌣ y) iff x ∈ Γ. So

\{ \frac{y ∈ ⊗(X ∨ Y)}{∃x ∈ Γ . x ⌣ y} \} = \{ \frac{x ˙∨ z}{x ∈ Γ, z ∈ ⊗Y′} \}

and thus

\begin{aligned}R ∥ Y′ & = & [X ˙∨ Y′, \{x ˙∨ y | x ∈ Γ, y ∈ ⊗Y′\}] \\ & = & [X ∨ Y′, Γ ⊙ (⊗Y′)] \end{aligned}

(3) We have R ∥ Y

= [ \begin{matrix}X ˙∨ Y′ \\ Γ ⊙ (⊗Y′) \end{matrix} ] due to (2)

= [ \begin{matrix}X \\ Γ \end{matrix} ] ⊙ [ \begin{matrix}Y′ \\ ⊗Y′ \end{matrix} ] def. 19.6.2 of ⊙

= R ⊙ ⊤Y ′ def. 19.3.1 of ⊤Y ′

(4) There is

card(gr(R ∥ Y))

= card(Γ ⊙ ⊗Y′) see (2)

= card(Γ) · card(⊗Y ′) due to 16.4.10

= card(Γ) · ∏_{j∈J\I}card(Yj) due to 12.1.9

20.1.5 Boolean and double table representation

If X and Y both completely finite schemas, X ⌣ Y, and R = [X, Γ], then R ∥ Y can be constructed intuitively by means of boolean and double tables.

Based on 20.1.3(3) R ∥ Y = R ⊙ ⊤_{Y \X} we obtain R ∥ Y by performing the following steps: ♣ Given X and Y, say

X = [ \begin{matrix}a ↦ & \{1, 2\} \\ b ↦ & \{1, 2, 3\} \end{matrix} ] Y = [ \begin{matrix}b ↦ & \{1, 2, 3\} \\ c ↦ & \{−1, −2\} \\ d ↦ & \{−1, −2\} \end{matrix} ]

and R as boolean table, say

R = \begin{matrix}a & b \\ 1 & 1 & 0 \\ 2 & 1 & 1 \\ 1 & 2 & 1 \\ 2 & 2 & 0 \\ 1 & 3 & 1 \\ 2 & 3 & 0 \end{matrix}

♣ First, generate Y \ X. In our example, that is

Y \ X = [ \begin{matrix}c ↦ & \{−1, −2\} \\ d ↦ & \{−1, −2\} \end{matrix} ]

♣ Write ⊤_{(Y \X)} as a graph table, i.e.

⊤_{(Y \X)} = \begin{matrix}c : \{−1, −2\} & d : \{−1, −2\} \\ −1 & −1 \\ −2 & −1 \\ −1 & −2 \\ −2 & −2 \end{matrix}

For our purposes, it is even more intuitive, if we rotate this table and write it horizontally as

⊤_{(Y \X)} = \begin{matrix}−1 & −2 & −1 & −2 & c : \{−1, −2\} \\ −1 & −1 & −2 & −2 & d : \{−1, −2\} \end{matrix}

♣ Finally, we take R and ⊤_{(Y \X)}, i.e.

\begin{matrix}a & b \\ 1 & 1 & 0 \\ 2 & 1 & 1 \\ 1 & 2 & 1 \\ 2 & 2 & 0 \\ 1 & 3 & 1 \\ 2 & 3 & 0 \end{matrix}  and  \begin{matrix}−1 & −2 & −1 & −2 & c : \{−1, −2\} \\ −1 & −1 & −2 & −2 & d : \{−1, −2\} \end{matrix}

and construct the double table of R ⊙ ⊤_{(Y \X)}, i.e.

−1 −2 −1 −2 c
−1 −1 −2 −2 d
1 1 0 0 0 0
2 1 1 1 1 1
1 2 1 1 1 1
2 2 0 0 0 0
1 3 1 1 1 1
2 3 0 0 0 0
a b

by placing R on the left, ⊤_{(Y \X)} at the top, and copying the bit values of R throughout each row of the double table. The result is the double table representation for R ∥ Y.

As predicted in 20.1.3(4), it has 3 · (2 · 2) = 12 member records (i.e. twelve 1’s in its boolean and double table).

20.1.6 Graph table representation

If R = [X, Γ] is a table and Y a schema such that Y ⌣ X and Y \ X is completely finite, we can apply graph tables to generate R ∥ Y.

Based on 20.1.3(3) R ∥ Y = R ⊙ ⊤_{Y \X} and 19.6.4 the graph table representation of distinct cartesian products, we obtain R ∥ Y by performing the following steps: ♣ Given X and Y, say

X = [ \begin{matrix}a ↦ & ℕ \\ b ↦ & ℕ \end{matrix} ] Y = [ \begin{matrix}b ↦ & ℕ \\ c ↦ & \{−1, −2\} \\ d ↦ & \{−1, −2\} \end{matrix} ]

such that Y \X is completely finite, which is indeed the case here, where

Y \ X = [ \begin{matrix}c ↦ & \{−1, −2\} \\ d ↦ & \{−1, −2\} \end{matrix} ]

Also given the table R, represented as a graph table

R = \begin{matrix}a : ℕ & b : ℕ \\ 2 & 1 \\ 1 & 2 \\ 1 & 3 \end{matrix}

♣ Generate the graph table representation of ⊤_{(Y \X)}

⊤_{(Y \X)} = \begin{matrix}c : \{−1, −2\} & d : \{−1, −2\} \\ −1 & −1 \\ −2 & −1 \\ −1 & −2 \\ −2 & −2 \end{matrix}

♣ Generate the distinct cartesian product by using the graph table representations

R ⊙ ⊤_{(Y \X)} = \begin{matrix}a : ℕ & b : ℕ & c : \{−1, −2\} & d : \{−1, −2\} \\ 2 & 1 & −1 & −1 \\ 1 & 2 & −1 & −1 \\ 1 & 3 & −1 & −1 \\ 2 & 1 & −2 & −1 \\ 1 & 2 & −2 & −1 \\ 1 & 3 & −2 & −1 \\ 2 & 1 & −1 & −2 \\ 1 & 2 & −1 & −2 \\ 1 & 3 & −1 & −2 \\ 2 & 1 & −1 & −2 \\ 1 & 2 & −1 & −2 \\ 1 & 3 & −1 & −2 \end{matrix}

The result is a graph table representation of R ∥ Y.

Again, 20.1.3(4) is verified. The R has 3, ⊤_{(Y \X)} has 2 · 2 members, and thus R ∥ Y has 3 · 4 = 12 members, i.e. rows in its graph table.

20.1.7 Lemma compatibility

If X and Y are two compatible schemas and R ∈ Rel(X), then R ∥ Y ⌣ R.

20.1.8 Proof of 20.1.7

X and Y are compatible, so X ∨Y ⌣ X, implying x(R ∥ Y) ⌣ x(R), so that R ∥ Y ⌣ R.

20.1.9 Lemma unification

If R = [X, Γ] and S = [Y, Σ] are two compatible relations, then

R ∥ Y = R ∥ (X ∨ Y) ≜ S ∥ (X ∨ Y) = S ∥ X

More general, if R is a class of (pairwise) compatible relations, Z := ⋁{x(R) | R ∈ R} is well–defined and

R ∥ Z ≜ S ∥ Z for all R, S ∈ R

20.1.10 Proof of 20.1.7

x (R ∥ Y) = X ∨ Y = x (S ∥ X), so R ∥ Y = R ∥ (X ∨ Y) ≜ S ∥ (X ∨ Y) = S ∥ X. And because R ∈ R implies x(R) ≤ Z, we have x(R ∥ Z) = X ∨ Z = Z = Y ∨ Z = x(S ∥ Z) and thus R ∥ Z ≜ S ∥ Z, for all R, S ∈ R.

20.1.11 Lemma

Let R = [X, Γ] be a relation.

(1) If X, Y, Z are pairwise compatible schemas, then (R ∥ Y) ∥ Z = R ∥ (Y ∨ Z) (schema accumulation)

(2) If Y is a schema such that Y ⌣ X, then (R ∥ Y) ∥ Y = R ∥ Y (idempotency)

(3) If Y ≤ X, then R ∥ Y = R (neutral expansions)

20.1.12 Proof of 20.1.11 (1) We put

\begin{aligned}Y′ & := & pr(Y, @(Y) \ @(X)) \\ Z′ & := & pr(Z, @(Z) \ (@(X) ∪ @(Y))) \end{aligned}

so that

X ∨ Y ∨ Z = X ˙∨ Y′ ˙∨ Z′

We derive (R ∥ Y) ∥ Z

= (R ⊙ ⊤_{Y ′}) ⊙ ⊤Z′ due to 20.1.3

= R ⊙ (⊤_{Y ′} ⊙ ⊤_{Z′}) due to 19.6.5

= R ⊙ ⊤_{(Y ′ ˙∨ Z′)}

= R ∥ (Y ′ ˙∨ Z′) due to 20.1.3(3)

= R ∥ (Y ∨ Z) due to 20.1.3(1)

(2) Applying (1), we obtain (R ∥ Y) ∥ Y = R ∥ (Y ∨ Y) = R ∥ Y

(3) Y ≤ X implies Y \ X = ⟨⟩. So applying 20.1.3 gives us

R ∥ Y = R ⊙ ⊤_{⟨⟩} = R ⊙ ⊤ = R

where the last step is due to 19.6.5(4).

20.2 Semantic operations on compatible relations

20.2.1 Remark introduction

Let R = [X, Γ] and S = [Y, Σ] be two relations. We already have the operations ⊆, ∩, ∪ available to compare and combine R and S. But they are only defined in case X = Y, i.e. if R ≜ S.

We will now generalize the definition of ⊆, ∩, ∪ to more powerful operations ⊑, ⊓, ⊔, which are defined for the more general case X ⌣ Y, i.e. R ⌣ S.

We use the unification lemma 20.1.9, which tells us that R ∥ Y ≜ S ∥ X. This way we introduce the new operations by means of the already existing ones. For example

R ⊓ S := (R ∥ Y) ∩ (S ∥ X) = (R ∥ X ∨ Y) ∩ (S ∥ X ∨ Y)

20.2.2 Definition boolean operations, extended

Let R = [X, Γ] and S = [Y, Σ] be two compatible relations. With Z := X ∨ Y we define

R ⊑ S :iff (R ∥ Z) ⊆ (S ∥ Z)  (\underline{subvalence})

R ≡ S :iff (R ∥ Z) = (S ∥ Z)  (\underline{equivalence})
R ⊓ S := (R ∥ Z) ∩ (S ∥ Z)  (\underline{conjunction})
R ⊔ S := (R ∥ Z) ∪ (S ∥ Z)  (\underline{disjunction})

20.2.3 Definition

As usual, there is a whole range of relations mutating from ⊑ and ≡, namely:

◯ 1 ⋢ ◯ 2  is not ◯ 1 ⊑ ◯ 2
◯ 1 ≢ ◯ 2  is not ◯ 1 ≡ ◯ 2
◯ 1 ⊏ ◯ 2  is ◯ 1 ⊑ ◯ 2 and ◯ 1 ≢ ◯ 2
◯ 1 ⊒ ◯ 2  is ◯ 2 ⊑ ◯ 1

etc.

20.2.4 Definition

Let R be a compatible relation class. Then

Z := ⋁{x(R) | R ∈ R}

is a well–defined schema and

∏R := ∏_{R∈R}R := \begin{cases}⊤ & if R = ∅ \\ ⋂_{R∈R} (R ∥ Z) & if R ≠ ∅ \end{cases}

is the \underline{(big) conjunction} of R

∐R := ∐_{R∈R}R := \begin{cases}⊥ & if R = ∅ \\ ⋃_{R∈R} (R ∥ Z) & if R ≠ ∅ \end{cases}

is the \underline{(big) disjunction} of R

20.2.5 Remark Various table representations

The various table representations for ⊑, ≡, ⊓, ⊔ are constructed according to the given definitions in two steps: first, calculate R ∥ Y and S ∥ X, then perform the method for ⊆, =, ∩, ∪, respectively.

As there is nothing really new in this two–step method, we put the discussion of the graph and boolean table method in a separate subsection (see 20.3) that may safely be skipped.

20.3 Digression: performing semantic operations with tables

20.3.1 Remark introduction

We now take two tables R and S and perform the new operations, first in graph table notation and second by means of boolean table representations.

20.3.2 Graph table representation

Given two relations R = [X, Γ] and S = [Y, Γ] in graph table notation as

R = \begin{matrix}a : \{p, q, r\} & b : \{s, t\} \\ p & s \\ q & t \end{matrix}

and

S = \begin{matrix}b : \{s, t\} & c : \{u, v\} & d : \{w\} \\ s & u & w \\ s & v & w \\ t & v & w \end{matrix}

Note, that R and S are compatible, because @(R)∩@(S) = {b} and dom_{b}(R) = {s, t} = dom_{b}(S). We first join the schemas and obtain

Z := X ∨ Y = [ \begin{matrix}a & ↦ & \{p, q, r\} \\ b & ↦ & \{s, t\} \\ c & ↦ & \{u, v\} \\ d & ↦ & \{w\} \end{matrix} ]

We expand R and S with Z according to the method in 20.1.6. So

R ∥ Z = R ⊙ ⊤_{Z\X}

where

Z \ X = [ \begin{matrix}c & ↦ & \{u, v\} \\ d & ↦ & \{w\} \end{matrix} ]

so that

\begin{aligned}R ∥ Z & = & \begin{matrix}a : \{p, q, r\} & b : \{s, t\} \\ p & s \\ q & t \end{matrix} ⊙ \begin{matrix}c : \{u, v\} & d : \{w\} \\ u & w \\ v & w \end{matrix} \\ & = & \begin{matrix}a : \{p, q, r\} & b : \{s, t\} & c : \{u, v\} & d : \{w\} \\ p & s & u & w \\ q & t & u & w \\ p & s & v & w \\ q & t & v & w \end{matrix} \end{aligned}

With the same method for S ∥ Z we obtain

S ∥ Z = S ⊙ ⊤_{Z\Y}
= S ⊙ ⊤_{[a↦{p,q,r}]}

= \begin{matrix}b : \{s, t\} & c : \{u, v\} & d : \{w\} \\ s & u & w \\ s & v & w \\ t & v & w \end{matrix} ⊙ \begin{matrix}a : \{p, q, r\} \\ p \\ q \\ r \end{matrix}

= \begin{matrix}a : \{p, q, r\} & b : \{s, t\} & c : \{u, v\} & d : \{w\} \\ p & s & u & w \\ q & s & u & w \\ r & s & u & w \\ p & s & v & w \\ q & s & v & w \\ r & s & v & w \\ p & t & v & w \\ q & t & v & w \\ r & t & v & w \end{matrix}

The relations are made equi–schematic and we construct R ⊓S as the intersection of the rows in R ∥ Z and S ∥ Z, i.e.

R ⊓ S = \begin{matrix}a : \{p, q, r\} & b : \{s, t\} & c : \{u, v\} & d : \{w\} \\ p & s & u & w \\ p & s & v & w \\ q & t & v & w \end{matrix}

Accordingly, the union of rows gives us

R ⊔ S = \begin{matrix}a : \{p, q, r\} & b : \{s, t\} & c : \{u, v\} & d : \{w\} \\ p & s & u & w \\ q & s & u & w \\ r & s & u & w \\ q & t & u & w \\ p & s & v & w \\ q & s & v & w \\ r & s & v & w \\ p & t & v & w \\ q & t & v & w \\ r & t & v & w \end{matrix}

And comparing the graph tables of R ∥ Z and S ∥ Z, we see that not every row of the first is a member of the second, so R ⋢ S and R ≢ S.

20.3.3 Boolean table representation

We use the same example relations R = [X, Γ] and S = [Y, Σ] from 20.3.2 again, but this time in boolean table representation:

R = \begin{matrix}a & b \\ p & s & 1 \\ q & s & 0 \\ r & s & 0 \\ p & t & 0 \\ q & t & 1 \\ r & t & 0 \end{matrix} S = \begin{matrix}b & c & d \\ s & u & w & 1 \\ t & u & w & 0 \\ s & v & w & 1 \\ t & v & w & 1 \end{matrix}

We join the schemas and again

Z := X ∨ Y = [ \begin{matrix}a & ↦ & \{p, q, r\} \\ b & ↦ & \{s, t\} \\ c & ↦ & \{u, v\} \\ d & ↦ & \{w\} \end{matrix} ]

According to the method in 20.1.5 for the double table construction of R ∥ Z, we have

⊤_{Z\X} = \begin{matrix}c & d \\ u & w \\ v & w \end{matrix} = \begin{matrix}u & v & c \\ w & w & d \end{matrix}

so that

R ∥ Z = R ⊙ ⊤_{Z\X}

= \begin{matrix}a & b \\ p & s & 1 \\ q & s & 0 \\ r & s & 0 \\ p & t & 0 \\ q & t & 1 \\ r & t & 0 \end{matrix} ⊙ \begin{matrix}u & v & c \\ w & w & d \end{matrix}

= \begin{aligned}& & u & v & c \\ & & w & w & d \\ p & s & 1 & 1 \\ q & s & 0 & 0 \\ r & s & 0 & 0 \\ p & t & 0 & 0 \\ q & t & 1 & 1 \\ r & t & 0 & 0 \\ a & b \end{aligned} = \begin{matrix}a & b & c & d \\ p & s & u & w & 1 \\ q & s & u & w & 0 \\ r & s & u & w & 0 \\ p & t & u & w & 0 \\ q & t & u & w & 1 \\ r & t & u & w & 0 \\ p & s & v & w & 1 \\ q & s & v & w & 0 \\ r & s & v & w & 0 \\ p & t & v & w & 0 \\ q & t & v & w & 1 \\ r & t & v & w & 0 \end{matrix}

We follow the same procedure for S ∥ Z:

Z \ Y = [ a ↦ {p, q, r} ]

and

⊤_{Z\Y} = \begin{matrix}a \\ p \\ q \\ r \end{matrix} = p q r a

so that

S ∥ Z = S ⊙ ⊤_{Z\Y}

= \begin{matrix}b & c & d \\ s & u & w & 1 \\ t & u & w & 0 \\ s & v & w & 1 \\ t & v & w & 1 \end{matrix} ⊙ p q r a

= \begin{aligned}& & & p & q & r & a \\ s & u & w & 1 & 1 & 1 \\ t & u & w & 0 & 0 & 0 \\ s & v & w & 1 & 1 & 1 \\ t & v & w & 1 & 1 & 1 \\ b & c & d \end{aligned} = \begin{matrix}a & b & c & d \\ p & s & u & w & 1 \\ q & s & u & w & 1 \\ r & s & u & w & 1 \\ p & t & u & w & 0 \\ q & t & u & w & 0 \\ r & t & u & w & 0 \\ p & s & v & w & 1 \\ q & s & v & w & 1 \\ r & s & v & w & 1 \\ p & t & v & w & 1 \\ q & t & v & w & 1 \\ r & t & v & w & 1 \end{matrix}

Finally, we obtain R ⊓ S = (R ∥ Z) ∩ (S ∥ Z), i.e.

R ⊓ S = \begin{matrix}a & b & c & d \\ p & s & u & w & 1 ∧ 1 \\ q & s & u & w & 0 ∧ 1 \\ r & s & u & w & 0 ∧ 1 \\ p & t & u & w & 0 ∧ 0 \\ q & t & u & w & 1 ∧ 0 \\ r & t & u & w & 0 ∧ 0 \\ p & s & v & w & 1 ∧ 1 \\ q & s & v & w & 0 ∧ 1 \\ r & s & v & w & 0 ∧ 1 \\ p & t & v & w & 0 ∧ 1 \\ q & t & v & w & 1 ∧ 1 \\ r & t & v & w & 0 ∧ 1 \end{matrix} = \begin{matrix}a & b & c & d \\ p & s & u & w & 1 \\ q & s & u & w & 0 \\ r & s & u & w & 0 \\ p & t & u & w & 0 \\ q & t & u & w & 0 \\ r & t & u & w & 0 \\ p & s & v & w & 1 \\ q & s & v & w & 0 \\ r & s & v & w & 0 \\ p & t & v & w & 0 \\ q & t & v & w & 1 \\ r & t & v & w & 0 \end{matrix}

and

R ⊔ S = \begin{matrix}a & b & c & d \\ p & s & u & w & 1 ∨ 1 \\ q & s & u & w & 0 ∨ 1 \\ r & s & u & w & 0 ∨ 1 \\ p & t & u & w & 0 ∨ 0 \\ q & t & u & w & 1 ∨ 0 \\ r & t & u & w & 0 ∨ 0 \\ p & s & v & w & 1 ∨ 1 \\ q & s & v & w & 0 ∨ 1 \\ r & s & v & w & 0 ∨ 1 \\ p & t & v & w & 0 ∨ 1 \\ q & t & v & w & 1 ∨ 1 \\ r & t & v & w & 0 ∨ 1 \end{matrix} = \begin{matrix}a & b & c & d \\ p & s & u & w & 1 \\ q & s & u & w & 1 \\ r & s & u & w & 1 \\ p & t & u & w & 0 \\ q & t & u & w & 1 \\ r & t & u & w & 0 \\ p & s & v & w & 1 \\ q & s & v & w & 1 \\ r & s & v & w & 1 \\ p & t & v & w & 1 \\ q & t & v & w & 1 \\ r & t & v & w & 1 \end{matrix}

and we can see that R ⊏̸ S, because (R ∥ Z) ⋢ (S ∥ Z), which is evident from their graph table comparison:

R ∥ Z = \begin{matrix}a & b & c & d \\ p & s & u & w & 1 \\ q & s & u & w & 0 \\ r & s & u & w & 0 \\ p & t & u & w & 0 \\ q & t & u & w & 1 \\ r & t & u & w & 0 \\ p & s & v & w & 1 \\ q & s & v & w & 0 \\ r & s & v & w & 0 \\ p & t & v & w & 0 \\ q & t & v & w & 1 \\ r & t & v & w & 0 \end{matrix} ⋢ \begin{matrix}a & b & c & d \\ p & s & u & w & 1 \\ q & s & u & w & 1 \\ r & s & u & w & 1 \\ p & t & u & w & 0 \\ q & t & u & w & 0 \\ r & t & u & w & 0 \\ p & s & v & w & 1 \\ q & s & v & w & 1 \\ r & s & v & w & 1 \\ p & t & v & w & 1 \\ q & t & v & w & 1 \\ r & t & v & w & 1 \end{matrix} = S ∥ Z

There is one row, where the left table has a 1 and the right one has a 0, but 1 ≰ 0.

20.4 Properties of semantic operations

20.4.1 Lemma

For two distinct relations R and S holds

R ⊙ S = R ⊓ S

For every pairwise distinct relation class R holds

⊙R = ∏R

20.4.2 Proof of 20.4.1

First of all let us note that conjunctions are defined for compatible relations and distinct products for (pairwise) distinct relations. This is a proper generalization, because distinct records are compatible, according to 19.1.8(1).

Since R⊙S = ⊙ {R, S}, we only need the proof for ⊙R = ∏R.

So suppose R = {R_{k} | k ∈ K} with R_{k} = [X_{k}, Γ_{k}] for each k ∈ K. We put X := ˙⋁_{k∈K}X_{k} and

Γ_{k}^{l} := \begin{cases}Γ_{k} & if l = k \\ ⊗X_{l} & if l ≠ k \end{cases}  for all k, l ∈ L

Then, for each k ∈ K, the graph record {Γ_{k}^{l} | l ∈ K} is relatively distinct with a well–defined distinct product

⊙_{l∈K}Γ_{k}^{l} = Γ_{k} ⊙ ( ⊙_{l∈K\{k}} ⊗ X_{l}) = Γ_{k} ⊙ ⊗(X \ X_{k})

according to 16.6.5(2). And since Γ_{k}^{l} ⊆ ⊗X_{l} for all k, l ∈ K, we obtain

⋂_{k∈K}Γ_{k}^{l} = Γ_{l}

for each l ∈ L. The distributivity law of 16.6.1 gives us

⋂_{k∈K} ( ⊙_{l∈K}Γ_{k}^{l}) = ⊙_{l∈K} ( ⋂_{k∈K}Γ_{k}^{l}) = ⊙_{l∈K}Γ_{l}

We put things together and obtain

∏R

= ⋂_{k∈K} (R_{k} ∥ X) def. 20.2.2 of ∏

= ⋂_{k∈K} (R_{k} ⊙ ⊤_{(X\Xk)}) due to 20.1.3(3)

= ⋂_{k∈K}[ \begin{matrix}X_{k} ˙∨ (X \ X_{k}) \\ Γ_{k} ⊙ ⊗(X \ X_{k}) \end{matrix} ] due to 20.1.3(2)

= ⋂_{k∈K}[ \begin{matrix}X \\ ⊙_{l∈K}Γ_{k}^{l} \end{matrix} ]

= [ \begin{matrix}& X \\ ⋂_{k∈K} & ( ⊙_{l∈K}Γ_{k}^{l}) \end{matrix} ] def. 19.5.3 of ⋂

= [ \begin{matrix}X \\ ⊙_{k∈K}Γ_{k} \end{matrix} ]

= ⊙R

20.4.3 Remark generalization

Note, that Rel(X) ⊆ Prel(X), for every schema X.

And in a certain sense, the algebra on Rel(X)

(Rel(X), ⊆, ⊥_{X}, ⊤_{X}, ∩, ∪, ⋂, ⋃, ¬)

is a kind of subalgebra or “quasi–subalgebra” of the structure

(Prel(X), ⊑, ⊥, ⊤, ⊓, ⊔, ∏, ∐, ¬)

“Quasi” means “up to equivalence”. The precise details of the resemblence between these two structures is given in the following lemma.

20.4.4 Lemma generalization

Let X be a schema. For all R, S ∈ Rel(X) and every R ⊆ Rel(X) holds:

(1) ⊥_{X} ≡ ⊥

(2) ⊤_{X} ≡ ⊤

(3) R ⊆ S iff R ⊑ S

(4) R = S iff R ≡ S

(5) R ∩ S = R ⊓ S

(6) R ∪ S = R ⊔ S

(7) ⋂ R ≡ ∏R

(8) ⋃ R ≡ ∐R

(9) ⋂ R = ∏R iff (R ≠ ∅ or X = ⟨⟩)

(10) ⋃ R = ∐R iff (R ≠ ∅ or X = ⟨⟩)

20.4.5 Proof of 20.4.4

(1) ⊥_{X} ∥ X = ⊥ ∥ X, so ⊥_{X} ≡ ⊥, and the same holds for (2) ⊤_{X} ≡ ⊤.

For R, S ∈ Rel(X), there is x(R) ∨ x(S) = X ∨ X = X, so R ∥ X = R and S ∥ X = S. Therefore, (3) R ⊆ S iff R ⊑ S,

(4) R = S iff R ≡ S, (5) R∩S = R⊓S, and (6) R∪S = R⊔S.

For R ⊆ Rel(X), there is

⋁\{x(R) | R ∈ R\} = \begin{cases}X & if R ≠ ∅ \\ ⟨⟩ & if R = ∅ \end{cases}

(a) If R ≠ ∅, then ∏R = ⋂{(R ∥ Z) | R ∈ R} = ⋂ R.

(b) If R = ∅ and X = ⟨⟩, then ∏R = ⊤ = ⊤_{X} = ⋂ R.

(c) If R = ∅ and X ≠ ⟨⟩, then ∏R = ⊤ ≠ ⊤_{X} = ⋂ R, but still ∏R ≡ ⋂ R, due to (2). So, (a),(b),(c) together proof (7) and (9).

(8) and (10) are proved similary.

20.4.6 Remark accumulation

As a general rule, we can say that: junctions accumulate the according schemas and attribute classes. The following lemma 20.4.7 is a more precise version of this rule.

20.4.7 Lemma accumulation

Let X be a schema. Let R, S, T ∈ Prel(X) and R ⊆ Prel(X).

(1) x(⊥) = ⟨⟩

(2) x(⊤) = ⟨⟩

(3) x(¬R) = x(R)

(4) x(R ⊓ S) = x(R) ∨ x(S)

(5) x(R ⊔ S) = x(R) ∨ x(S)

(6) x(∏R) = ⋁{x(R) | R ∈ R}

(7) x(∐R) = ⋁{x(R) | R ∈ R}

20.4.8 Proof of 20.4.7

All these statements are immediate consequences of the according operation definition.

20.4.9 Lemma equivalence

(1) For every two compatible relations R and S, R ≡ S iff R ⊑ S and S ⊑ R

(2) If R = [Y, Γ] is a relation and Z a schema with Z ⌣ Y, then

R ≡ R ∥ Z

(3) Let Y and Z be two schemas, such that Z is proper and Y ≬ Z. For all R, S ∈ Prel(Y) holds:

(a) R ⊆ S iff R ∥ Z ⊆ S ∥ Z

(b) R = S iff R ∥ Z = S ∥ Z

(4) For every proper schema X and all R, S ∈ Prel(X)

(a) R ⊑ S iff R ∥ X ⊆ S ∥ X

(b) R ≡ S iff R ∥ X = S ∥ X

(5) For every schema X and all R, S ∈ Prel(X):

R = S iff R ≡ S and R ≜ S

20.4.10 Proof of 20.4.9

(1) Let Z = x(R) ∨ x(S). There is R ≡ S iff R ∥ Z = S ∥ Z iff (R ∥ Z ⊆ S ∥ Z and R ∥ Z ⊆ S ∥ Z) iff (R ⊑ S and S ⊑ R).

(2) x(R) ∨ x(R ∥ Z) = Y ∨ Z, so R ≡ R ∥ Z iff R ∥ Y ∨ Z = (R ∥ Z) ∥ Y ∨ Z. According to lemma 20.1.11(1), (R ∥ Z) ∥ Y ∨ Z = R ∥ (Z ∨ (Y ∨ Z)) = R ∥ Y ∨ Z. Thus R ≡ R ∥ Z.

(3) Note, that distinct schemas are compatible, so R ∥ Z and S ∥ Z are well–defined. Z is a proper schema, so ⊗Z ≠ ∅, according to 12.1.12(1). Let R = [Y, Γ] and S = [Y, Σ], then

\begin{aligned}R ∥ Z & = & [Y ∨ Z, \{y′ ∨ z | y′ ∈ Γ, z ∈ ⊗Z\}] \\ S ∥ Z & = & [Y ∨ Z, \{y′′ ∨ z | y′′ ∈ Σ, z ∈ ⊗Z\}] \end{aligned}

For the proof of (a) we distinguish two cases: ♣ Suppose, R ⊆ S. Then Γ ⊆ Σ and thus {y′ ∨ z |

y′ ∈ Γ, z ∈ ⊗Z} ⊆ {y′′ ∨ z | y′′ ∈ Σ, z ∈ ⊗Z} and R ∥ Z ⊆ S ∥ Z.

♣ Suppose, R ⊈ S. Then Γ ⊈ Σ, and because ⊗Z ≠ ∅, {y′ ∨ z | y′ ∈ Γ, z ∈ ⊗Z} ⊈ {y′′ ∨ z | y′′ ∈ Σ, z ∈ ⊗Z} and thus R ∥ Z ⊈ S ∥ Z.

Thus R ⊆ S iff R ∥ Z ⊆ S ∥ Z.

(b) can be proved similarly with “=” instead of “⊆”, but it is also an immediate consequence of (a) and (1).

(4) (a) Let Y := x(R) ∨ x(S) and Z := X \ Y. Then Y ≬ Z, and Z is proper, because X is proper. We derive

R ⊑ S

⇔ R ∥ Y ⊆ S ∥ Y def. 20.2.2

⇔ (R ∥ Y) ∥ Z ⊆ (S ∥ Y) ∥ Z due to (3)(a)

⇔ R ∥ Y ∨ Z ⊆ S ∥ Y ∨ Z due to 20.1.3(1)

⇔ R ∥ X ⊆ S ∥ X

(b) can be proved similarly, but it is also an immediate consequence of (a) and (1).

(5) Let R = [Y, Γ] and S = [Z, Σ].

Suppose, R = S. Then Y = Z and Γ = Σ, and thus R ≜ S and R ≡ S. On the other hand, suppose, R ≜ S and R ≡ S. R ≜ S means Y = Z. Therefore R ∥ Z = R and S ∥ Y = S. So R ≡ S implies R = S.

20.4.11 Repetition quasi–ordered class

A structure ⟨Q, ⊑, ≡⟩ is a \underline{quasi–ordered class}, if

(1) Q is a class

(2) ⊑ is a \underline{quasi–order} on Q in the sense that

(a) a ⊑ b and b ⊑ c implies a ⊑ c, for all a, b, c ∈ Q (transitivity)

(b) a ⊑ a, for all a ∈ Q (reflexivity)

(3) ≡ is \underline{the equivalence (relation) of} ⊑ in the sense that

a ≡ b iff (a ⊑ b and b ⊑ a) for all a, b ∈ Q

In that case, ≡ is indeed an equivalence relation (i.e. transitive, reflexive and symmetric).

Because ≡ is given by ⊑ through (3), a quasi–ordered class is

more often simply given by ⟨Q, ⊑⟩ only.

20.4.12 Lemma quasi–order

⟨Prel(X), ⊑, ≡⟩ is a quasi–ordered class, for every proper schema X.

20.4.13 Proof of 20.4.12

We need to show that, for a given schema X, ⟨Prel(X), ⊑, ≡⟩ satisfies the properties of 20.4.11. Well, ⊑ certainly is reflexive. And by applying 20.4.9 we have

R ⊑ S and S ⊑ T
implies R ∥ X ⊆ S ∥ X and S ∥ X ⊆ T ⊆ X
implies R ∥ X ⊆ T ∥ X
implies R ⊑ T

for all R, S, T ∈ Prel(X), i.e. ⊑ is transitive, too. And from 20.4.9(1), we already know that ≡ is the equivalence relation of ⊑.

20.4.14 Remark Remark

It is important to note, that ⟨Prel(X), ⊑, ≡⟩ is usually not a quasi–ordered class anymore, if the schema X is not proper.

Suppose, X is not proper, say

X = [ \begin{matrix}a & ↦ & \{p, q\} \\ b & ↦ & ∅ \\ c & ↦ & \{r, s\} \end{matrix} ]

and R, S, T ∈ Prel(X) are given by

R = \begin{matrix}a : \{p, q\} \\ p \\ q \end{matrix}  S = b : ∅  T = \begin{matrix}c : \{r, s\} \\ r \end{matrix}

then

R ∥ x(S) = a : {p, q} b : ∅ = S ∥ x(R)

T ∥ x(S) = b : ∅ c : {r, s} = S ∥ x(T)

R ∥ x(T) = \begin{matrix}a : & c : \\ \{p, q\} & \{r, s\} \\ p & r \\ q & r \\ p & s \\ q & s \end{matrix} ≠ \begin{matrix}a : & c : \\ \{p, q\} & \{r, s\} \\ p & r \\ q & r \end{matrix} = T ∥ x(R)

and so

R ≡ S and S ≡ T but R ≢ T

The transitivity of ≡ is violated and ≡ is not an equivalence relation anymore. Neither is ⊑ a quasi–order on this example Prel(X).

20.4.15 Lemma distributivity of expansion over boolean junctions

Let X be a proper schema and Y ∈ Proj(X).

(1) ⊥ ∥ Y ≡ ⊥

(2) ⊤ ∥ Y ≡ ⊤

(3) (¬R) ∥ Y = ¬(R ∥ Y) for every R ∈ Prel(X)

(4) (R ⊓ S) ∥ Y = (R ∥ Y) ⊓ (S ∥ Y) for all R, S ∈ Prel(X)

(5) (R ⊔ S) ∥ Y = (R ∥ Y) ⊔ (S ∥ Y) for all R, S ∈ Prel(X)

(6) R ⊑ S iff R ∥ Y ⊑ S ∥ Y for all R, S ∈ Prel(X)

(7) R ≡ S iff R ∥ Y ≡ S ∥ Y for all R, S ∈ Prel(X)

(8) For every R ⊆ Prel(X)

\begin{matrix}(∏R) ∥ Y ≡ ∏_{R∈R}(R ∥ Y) \\ (∏R) ∥ Y = ∏_{R∈R}(R ∥ Y) & iff & (R ≠ ∅ or Y = ⟨⟩) \end{matrix}

(9) For every R ⊆ Prel(X)

\begin{matrix}(∐R) ∥ Y ≡ ∐_{R∈R}(R ∥ Y) \\ (∐R) ∥ Y = ∐_{R∈R}(R ∥ Y) & iff & (R ≠ ∅ or Y = ⟨⟩) \end{matrix}

20.4.16 Proof of 20.4.15

First of all, let us note that U ⌣ Y, for every R = [U, Γ] ∈ Prel(X) and Y ∈ Proj(X). So all operations, in particular all expansions, occuring in this lemma, are well–defined.

(1) ⊥ = [⟨⟩, ∅], ⟨⟩ ⌣ Y, and so ⊥ ∥ Y ≡ ⊥, according to 20.4.9(2).

(2) similar to (1)

(3) If R = [U, Γ], we put Y′ := Y \ U and obtain

(¬R) ∥ Y

= [\begin{matrix}U \\ ⊗U \ Γ \end{matrix}] ∥ Y def. 19.4.1 of ¬

= [\begin{matrix}U \\ ⊗U \ Γ \end{matrix}] ∥ Y ′ due to 20.1.3(1)

= [ \begin{matrix}U ˙∨ Y′ \\ (⊗U \ Γ) ⊙ ⊗Y′ \end{matrix} ] due to 20.1.3(2)

= [ \begin{matrix}U ˙∨ Y′ \\ (⊗U ⊙ ⊗Y′) \ (Γ ⊙ ⊗Y′) \end{matrix} ] due to 16.6.1(3)

= [ \begin{matrix}U ˙∨ Y′ \\ (⊗(U ˙∨ Y′)) \ (Γ ⊙ ⊗Y′) \end{matrix} ] due to 16.6.5(4)

= ¬[\begin{matrix}U ˙∨ Y′ \\ Γ ⊙ ⊗Y′ \end{matrix}] due to 19.4.1 again

= ¬ ([\begin{matrix}U \\ Γ \end{matrix}] ∥ Y′) due to 20.1.3(2)

= ¬ (R ∥ Y′) definition of R = ¬ (R ∥ Y) due to 20.1.3(1)

We now first proof (8) and (9), which turn out to be generalizations of (4) and (5), respectively.

(8) Let R = {R_{i} | i ∈ I} ⊆ Prel(X) with R_{i} = [X_{i}, Γ_{i}] for i ∈ I. We put

Z := ⋁{X_{i} | i ∈ I}
Y′ := Y \ Z
Z_{i} := Z \ X_{i}  for each i ∈ I
Y_{i} := Y \ X_{i}  for each i ∈ I
Z′_{i} := Z \ (Y ∨ X_{i}) for each i ∈ I

so that

(a) Z ∨ Y = Z ˙∨ Y′

(b) Z ∨ Y = Y_{i} ˙∨ Z′_{i} ˙∨ X_{i} for each i ∈ I

(c) Z ∨ Y = Y′_{i} ˙∨ Z_{i} ˙∨ X_{i} for each i ∈ I

(d) Γ_{i} ⊙ (⊗Y_{i}) ⊙ (⊗Z′_{i}) = Γ_{i} ⊙ (⊗Y′_{i}) ⊙ (⊗Z_{i}) for each i ∈ I as the following diagrams illustrate:

[figure: ^{Z  Y Y′}; Z_{i}; Y′; X_{i}; Z′_{i}; Y_{i}; X_{i}]

First, let us suppose that R ≠ ∅, i.e. I ≠ ∅, then

(∏R) ∥ Y

= ( ⋂_{i∈I}(R_{i} ∥ Z)) ∥ Y def. 20.2.4 of ∏

= ( ⋂_{i∈I}(R_{i} ∥ Z)) ∥ Y ′ due to 20.1.3(1)

= ( ⋂_{i∈I}(R_{i} ∥ Z_{i})) ∥ Y ′ again 20.1.3(1)

= ( ⋂_{i∈I}[ \begin{matrix}X_{i} ˙∨ Z_{i} \\ Γ_{i} ⊙ (⊗Z_{i}) \end{matrix} ]) ∥ Y ′ 20.1.3(2)

= [ \begin{matrix}& Z \\ ⋂_{i∈I} & (Γ_{i} ⊙ (⊗Z_{i})) \end{matrix} ] ∥ Y ′ def. 19.5.3 of ⋂

= [ \begin{matrix}Z ˙∨ Y′ \\ ( ⋂_{i∈I} (Γ_{i} ⊙ (⊗Z_{i}))) ⊙ (⊗Y′) \end{matrix} ] due to 20.1.3(2)

= [ \begin{matrix}& Z ˙∨ Y′ \\ ⋂_{i∈I} & (Γ_{i} ⊙ (⊗Z_{i}) ⊙ (⊗Y′)) \end{matrix} ] due to 16.6.1(5)

= [ \begin{matrix}& Z ˙∨ Y′ \\ ⋂_{i∈I} & (Γ_{i} ⊙ (⊗Y_{i}) ⊙ (⊗Z′_{i})) \end{matrix} ] due to (d)

= ⋂_{i∈I}[ \begin{matrix}Z ˙∨ Y′ \\ (Γ_{i} ⊙ (⊗Y_{i}) ⊙ (⊗Z′_{i})) \end{matrix} ] due to 19.5.3

= ⋂_{i∈I}[ \begin{matrix}(X_{i} ˙∨ Y_{i}) ˙∨ Z′_{i} \\ ((Γ_{i} ⊙ (⊗Y_{i})) ⊙ (⊗Z′_{i})) \end{matrix} ] due to (b)

= ⋂_{i∈I} ([ \begin{matrix}(X_{i} ˙∨ Y_{i}) \\ ( & (Γ_{i} ⊙ (⊗Y_{i})) & ) \end{matrix} ]) ∥ Z{′ \atop i} due to 20.1.3(2)

= ⋂_{i∈I} (R_{i} ∥ Y_{i}) ∥ Z{′ \atop i} due to 20.1.3(2) again

On the other hand, if R = ∅, then (∏R) ∥ Y

= ⊤ ∥ Y definition 20.2.4 of ∏ ≡ ⊤ due to (2) = ∏∅ again, def. 20.2.4 of ∏

= ∏_{i∈∅}(R_{i} ∥ Y)

And obviously, this equivalence

(∏R) ∥ Y ≡ ∏{R ∥ Y | R ∈ R}

turns into the identity

(∏R) ∥ Y = ∏{R ∥ Y | R ∈ R}

exactly in case Y = ⟨⟩. So putting things together we have, for every R ⊆ Prel(X),

(∏R) ∥ Y ≡ ∏_{R∈R}(R ∥ Y)

and

(∏R) ∥ Y = ∏_{R∈R}(R ∥ Y) iff (R ≠ ∅ or Y = ⟨⟩)

(9) Proof similar to (8). The central step in (8) is the application of the distributivity lemma 16.6.1(5) for distinct products over intersections. A similar statement 16.6.1(4) is true for unions (even including the empty class case). The rest of the proof is very much the same.

(4) We put Z := x(R) ∨ x(S) and obtain

R ⊓ S = (R ∥ Z) ∩ (S ∥ Z)
= ⋂ {(R ∥ Z), (S ∥ Z)}
= ∏ {R, S}

so (3) is just a special case of (8) with R = {R, S}.

(5) Similar to (5).

(6) For arbitrary R, S ∈ Prel(X) holds R ≡ R ∥ Y, due to 20.4.9(2), and thus R ⊑ R ∥ Y and R ∥ Y ⊑ R, due to 20.4.11(3). So, R ⊑ S implies R ∥ Y ⊑ R ⊑ S ⊑ S ∥ Y implies R ∥ Y ⊑ S ∥ Y, since ⊑ is transitive. On the other hand, R ∥ Y ⊑ S ∥ Y implies R ⊑ R ∥ Y ⊑ S ∥ Y ⊑ S implies R ⊑ S. Thus R ⊑ S iff R ∥ Y ⊑ S ∥ Y.

(7) Follows from (6) with 20.4.11(3).

20.4.17 Lemma

For every schema Y holds:

(1) ⊥ ∥ Y = ⊥_{Y}

(2) ⊤ ∥ Y = ⊤_{Y}

And if R = [X, Γ] is a relation with Y ⌣ X, then

(3) R ∥ Y = R ⊓ ⊤_{Y}

(4) R ∥ Y = R ⊔ ⊥_{Y}

20.4.18 Proof of 20.4.17

(1) We obtain

⊥ ∥ Y = [\begin{matrix}⟨⟩ \\ ∅ \end{matrix}] ∥ Y = [\begin{matrix}⟨⟩ ˙∨ Y \\ ∅ ⊙ ⊗Y \end{matrix} ] = [\begin{matrix}Y \\ ∅ \end{matrix} ] = ⊥_{Y}

by applying 20.1.3 and definition 19.3.1 of ⊥ and ⊥_{Y} .

(2) Similar to (1) we obtain

⊤ ∥ Y = [\begin{matrix}⟨⟩ \\ \{⟨⟩\} \end{matrix}] ∥ Y = [\begin{matrix}⟨⟩ ˙∨ Y \\ \{⟨⟩\} ⊙ ⊗Y \end{matrix} ] = [\begin{matrix}Y \\ ⊗Y \end{matrix} ] = ⊤_{Y}

(3) We obtain R ⊓ ⊤_{Y} = (R ∥ (X ∨ Y)) ∩ (⊤_{Y} ∥ (X ∨ Y))

def. ?? of ⊓

= (R ∥ (Y \ X)) ∩ (⊤_{Y} ∥ (X \ Y))

due to 20.1.3(1)

= ([ \begin{matrix}X \\ Γ \end{matrix} ] ∥ (Y \ X)) ∩ ([ \begin{matrix}Y \\ ⊗Y \end{matrix} ] ∥ (X \ Y))

def. of R and ⊤Y

= [ \begin{matrix}X ˙∨ (Y \ X) \\ Γ ⊙ ⊗(Y \ X) \end{matrix} ] ∩ [ \begin{matrix}Y ˙∨ (X \ Y) \\ ⊗Y ⊙ ⊗(X \ Y) \end{matrix} ]

due to 20.1.3(2)

= [ \begin{matrix}X ˙∨ (Y \ X) \\ Γ ⊙ ⊗(Y \ X) \end{matrix} ] ∩ [ \begin{matrix}Y ˙∨ (X \ Y) \\ ⊗(Y ˙∨ (X \ Y)) \end{matrix} ]

due to 16.6.5(4)

= [ \begin{matrix}X ∨ Y \\ Γ ⊙ ⊗(Y \ X) \end{matrix} ] ∩ [ \begin{matrix}X ∨ Y \\ ⊗(X ∨ Y) \end{matrix} ]

= [ \begin{matrix}X ∨ Y \\ (Γ ⊙ ⊗(Y \ X)) ∩ ⊗(X ∨ Y) \end{matrix} ]

def. 19.5.1 of ∩

= [ \begin{matrix}X ∨ Y \\ Γ ⊙ ⊗(Y \ X) \end{matrix} ]

because (Γ ⊙ ⊗(Y \ X)) ⊆ ⊗(X ∨ Y )

= R ∥ (Y \ X) due to 20.1.3(2), again = R ∥ Y due to 20.1.3(1), again

(4) The proof is similar to (3) and we may skip some steps R ⊔ ⊥_{Y}

= ([ \begin{matrix}X \\ Γ \end{matrix} ] ∥ (Y \ X)) ∪ ([ \begin{matrix}Y \\ ∅ \end{matrix} ] ∥ (X \ Y))

= [ \begin{matrix}X ˙∨ (Y \ X) \\ Γ ⊙ ⊗(Y \ X) \end{matrix} ] ∪ [ \begin{matrix}Y ˙∨ (X \ Y) \\ ∅ ⊙ ⊗(X \ Y) \end{matrix} ]

due to 20.1.3(2)

= [ \begin{matrix}X ∨ Y \\ Γ ⊙ ⊗(Y \ X) \end{matrix} ] ∪ [ \begin{matrix}Y ∨ X \\ ∅ \end{matrix} ]

due to 16.4.3(3)

= [ \begin{matrix}X ∨ Y \\ Γ ⊙ ⊗(Y \ X) \end{matrix} ]

= R ∥ Y

20.4.19 Lemma

Let X be a proper schema. In ⟨Prel (X) , ⊑⟩ holds for every R ⊆ Prel (X) and all R, S ∈ Prel (X)

(1) ∏R is a greatest lower bound of R

(2) ∐R is a least upper bound of R

(3) R ⊓ S is a greatest lower bound of R and S

(4) R ⊔ S is a least upper bound of R and S

20.4.20 Proof of 20.4.19

(1) Let R ∈ P(Prel(X)). Then

♣ ∏R is a lower bound of R:

According to 19.1.10, R is compatible and Y := ⋁{x(R) | R ∈ R} is well defined. If S ∈ R, then ∏R = ⋂{R ∥ Y | R ∈ R} ⊆ S ∥ Y, so ∏R ⊑ S.

♣ ∏R is a greatest lower bound of R: Let T ∈ Prel(X) with ∏R ⊑ T ⊑ S for all S ∈ R. According to lemma 20.4.9(4)(a), this implies ∏R ∥ X ⊆ T ∥ X ⊆ S ∥ X for all S ∈ R, so that ⋂{R ∥ X | R ∈ R} ⊆ T ∥ X ⊆ S ∥ X for all S ∈ R. Thus ⋂{R ∥ X | R ∈ R} = T ∥ X, i.e. ∏R ≡ T, due to lemma 20.4.9(4)(b).

(2) Proof similar to (1).

(3) Is true because R ⊓ S ≡ ∏ {R, S} (see 20.4.21(9)) and statement (1).

(4) This is true due to R ⊔ S ≡ ∐ {R, S} (see 20.4.21(10)) and 20.4.21 Lemma

Let X be a proper schema. For all R, S, T ∈ Prel(X) and all R ⊆ Prel(X) holds:

(1) ⊤ ⊓ R = R (⊤ is neutral element of ⊓)

(2) ⊥ ⊔ R = R (⊥ is neutral element of ⊔)

(3) R ⊓ R = R (⊓ is idempotent)

(4) R ⊔ R = R (⊔ is idempotent)

(5) R ⊓ (S ⊓ T) = (R ⊓ S) ⊓ T (⊓ is associative)

(6) R ⊔ (S ⊔ T) = (R ⊔ S) ⊔ T (⊔ is associative)

(7) R ⊓ S = S ⊓ R (⊓ is commutative)

(8) R ⊔ S = S ⊔ R (⊔ is commutative)

(9) R ⊓ S = ∏ {R, S} (⊓ is special case of ∏)

(10) R ⊔ S = ∐ {R, S} (⊔ is special case of ∐)

(11) S ⊓ ∐R = ∐{S ⊓ R | R ∈ R} (full distributivity)

(12) S ⊔ ∏R = ∏{S ⊔ R | R ∈ R} (full distributivity)

(13) ¬∏R = ∐{¬R | R ∈ R} (de Morgan’s law)

(14) ¬∐R = ∏{¬R | R ∈ R} (de Morgan’s law)

(15) ⊥ ⊓ R ≡ ⊥ (⊥ quasi–cancels ⊓)

(16) ⊤ ⊔ R ≡ ⊤ (⊤ quasi–cancels ⊔)

(17) ⊥ ⊑ R (⊥ is a least element)

(18) R ⊑ ⊤ (⊤ is a greatest element)

(19) ∏ {R} = R (∏ is idempotent)

(20) ∐ {R} = R (∐ is idempotent)

(21) R ⊓ ¬R ≡ ⊥ (⊓–quasi–complement)

(22) R ⊔ ¬R ≡ ⊤ (⊔–quasi–complement)

20.4.22 Proof of 20.4.21

Suppose R, S, T ∈ Prel(X) and R ⊆ Prel(X) are given by R = [Y, Γ], S = [Y′, Γ′], T = [Y′′, Γ′′], and R = {R_{k} | k ∈ K} with R_{k} = [Y_{k}, Γ_{k}] for each k ∈ K.

(1) ⊤ ⊓ R = ([\begin{matrix}⟨⟩ \\ \{⟨⟩\} \end{matrix}] ∥ Y ) ∩ ([\begin{matrix}Y \\ Γ \end{matrix}] ∥ Y ) = [\begin{matrix}Y \\ ⊗Y \end{matrix} ] ∩ [\begin{matrix}Y \\ Γ \end{matrix}] =

[\begin{matrix}Y \\ Γ \end{matrix}] = R

(2) ⊥ ⊔ R = ([\begin{matrix}⟨⟩ \\ ∅ \end{matrix}] ∥ Y ) ∪ ([\begin{matrix}Y \\ Γ \end{matrix}] ∥ Y ) = [\begin{matrix}Y \\ ∅ \end{matrix} ] ∪ [\begin{matrix}Y \\ Γ \end{matrix}] =

[\begin{matrix}Y \\ Γ \end{matrix}] = R

(3) R⊓R = (R ∥ Y)∩(R ∥ Y) = R∩R = [\begin{matrix}Y \\ Γ ∩ Γ \end{matrix}] = [\begin{matrix}Y \\ Γ \end{matrix}] = R

(4) R⊔R = (R ∥ Y)∪(R ∥ Y) = R∪R = [\begin{matrix}Y \\ Γ ∪ Γ \end{matrix}] = [\begin{matrix}Y \\ Γ \end{matrix}] = R

(5) Let us put Z := Y ∨ Y′ ∨ Y′′. There is x(R ⊓ S) = Y ∨ Y′ and x(S ⊓ T) = Y′ ∨ Y′′, so that

R ⊓ (S ⊓ T)
= R ∥ (Y ∨ (Y′ ∨ Y′′)) ∩ ((S ⊓ T) ∥ (Y ∨ (Y′ ∨ Y′′)))
= R ∥ Z ∩ ((S ⊓ T) ∥ Z)
= R ∥ Z ∩ (S ∥ Z ⊓ T ∥ Z)
= R ∥ Z ∩ (S ∥ Z ∩ T ∥ Z)
= (R ∥ Z ∩ S ∥ Z) ∩ T ∥ Z
= (R ∥ Z ⊓ S ∥ Z) ∩ T ∥ Z
= ((R ⊓ S) ∥ Z) ∩ T ∥ Z
= ((R ⊓ S) ∥ ((Y ∨ Y′) ∨ Y′′)) ∩ T ∥ ((Y ∨ Y′) ∨ Y′′)
= (R ⊓ S) ⊓ T

(6) Same as (5) with “⊓” and “∩” replaced by “⊔” and “∪”, respectively.

(7) Obvious by now.

(8) See (7).

(9) R ⊓ S = (R ∥ (Y ∨ Y′)) ∩ (S ∥ (Y ∨ Y′)) = ⋂ {(R ∥ (Y ∨ Y′)), (S ∥ (Y ∨ Y′))} = ∏ {R, S}

(10) Similar to (9).

(11) We define Z := ⋁{Y_{k} | k ∈ K} and obtain S ⊓ ∐R = (S ∥ Y′ ∨ Z) ∩ (∐R ∥ Y′ ∨ Z)

def. 20.2.2 of ⊓

= (S ∥ Y′ ∨ Z) ∩ ∐_{k∈K} (R_{k} ∥ Y′ ∨ Z)

due to 20.4.15(9)

= (S ∥ Y′ ∨ Z) ∩ ⋃_{k∈K} (R_{k} ∥ Y′ ∨ Z ∥ Y′ ∨ Z)

def. 20.2.4 of ∐

= (S ∥ Y′ ∨ Z) ∩ ⋃_{k∈K} (R_{k} ∥ Y′ ∨ Z)

due to 20.1.11(1)

= ⋃_{k∈K} ((S ∥ Y′ ∨ Z) ∩ (R_{k} ∥ Y′ ∨ Z))

due to the distributivity of ⋃ and ∩

= ⋃_{k∈K} ((S ∥ Y′ ∨ Z) ⊓ (R_{k} ∥ Y′ ∨ Z))

due to 20.4.4(5)

= ⋃_{k∈K} ((S ⊓ R_{k}) ∥ Y′ ∨ Z)

due to 20.4.15(4)

= ∐_{k∈K}(S ⊓ R_{k})

again def. 20.2.4 of ∐

(12) Similar to (11).

(13) Let Z := ⋁{x(R) | R ∈ R}, then ¬∏R

= ¬ ⋂_{R∈R}(R ∥ Z)

= ⋃_{R∈R}¬(R ∥ Z) due to 19.5.14(13)

= ⋃_{R∈R}(¬R ∥ Z) due to ??(3)

= ∐_{R∈R}(¬R)

(14) Proof similar to (13).

(15) ⊥ ⊓ R = ([\begin{matrix}⟨⟩ \\ ∅ \end{matrix}] ∥ Y ) ∩ ([\begin{matrix}Y \\ Γ \end{matrix}] ∥ Y ) = [\begin{matrix}Y \\ ∅ \end{matrix} ] ∩ [\begin{matrix}Y \\ Γ \end{matrix}] =

[\begin{matrix}Y \\ ∅ \end{matrix} ] = ⊥_{Y} ≡ ⊥

(16) ⊤ ⊔ R = ([\begin{matrix}⟨⟩ \\ \{⟨⟩\} \end{matrix}] ∥ Y ) ∪ ([\begin{matrix}Y \\ Γ \end{matrix}] ∥ Y ) = [\begin{matrix}Y \\ ⊗Y \end{matrix} ] ∪ [\begin{matrix}Y \\ Γ \end{matrix}] =

[\begin{matrix}Y \\ ⊗Y \end{matrix} ] = ⊤_{Y} ≡ ⊤

(17) ⊥ ⊑ R iff ⊥ ∥ Y ⊆ R iff [Y, ∅] ⊆ [Y, Γ] iff ∅ ⊆ Γ, which is

always the case.

(18) R ⊑ ⊤ iff R ⊆ ⊤ ∥ Y iff [Y, Γ] ⊆ [Y, ⊗Y] iff Γ ⊆ ⊗Y, which is always the case.

(19) We apply (3) and obtain ∏ {R} = ∏{R, R} = R ⊓ R = R (20) Similar to (19).

(21) We have

R ⊓ ¬R = [\begin{matrix}Y \\ Γ \end{matrix}] ⊓ [\begin{matrix}Y \\ (⊗Y) \ Γ \end{matrix}]
= [\begin{matrix}Y \\ Γ ∩ ((⊗Y) \ Γ) \end{matrix}]
= [\begin{matrix}Y \\ ∅ \end{matrix} ]
= ⊥_{Y}
≡ ⊥

(22) We have

R ⊔ ¬R = [\begin{matrix}Y \\ Γ \end{matrix}] ⊔ [\begin{matrix}Y \\ (⊗Y) \ Γ \end{matrix}]
= [\begin{matrix}Y \\ Γ ∪ ((⊗Y) \ Γ) \end{matrix}]
= [\begin{matrix}Y \\ ⊗Y \end{matrix} ]
= ⊤_{Y}
≡ ⊤

20.4.23 Definition notation

The monoid-properties of ⊓ and ⊔, i.e. the associativity (20.4.21(5) and (6)) and the existence of neutral elements (20.4.21(1) and (2)), allow us to use the following abbreviating notations:

R_{1} ⊓ … ⊓ R_{n} := \begin{cases}⊤ & if n = 0 \\ R_{1} ⊓ (R_{2} ⊓ … ⊓ R_{n}) & if n > 0 \end{cases}
R_{1} ⊔ … ⊔ R_{n} := \begin{cases}⊥ & if n = 0 \\ R_{1} ⊔ (R_{2} ⊔ … ⊔ R_{n}) & if n > 0 \end{cases}

for every list R_{1}, …, R_{n} of (pairwise) compatible relations.

20.4.24 Lemma

For every proper schema X and all R, S ∈ Prel(X), the following statements are equivalent:

(1) R ⊑ S

(2) ¬S ⊑ ¬R

(3) R ⊔ S ≡ S

(4) R ⊓ S ≡ R

(5) R ⊓ ¬S ≡ ⊥

(6) ¬R ⊔ S ≡ ⊤

20.4.25 Proof of 20.4.24

Suppose, R and S are given as R = [Y, Γ] and S = [Z, Σ]. Below we will provide the proof by showing, that (1) is equivalent to (2),...,(6), each. But first let us recall, that for every class C and all A, B ∈ P(C),

(a) A ⊆ B iff C \ B ⊆ C \ A

(b) A ⊆ B iff A ∪ B = B

(c) A ⊆ B iff A ∩ B = A

(d) A ⊆ B iff A ∩ (C \ B) = ∅

(e) A ⊆ B iff (C \ B) ∪ A = C Furthermore, we have

R ∥ Y ∨ Z

= [\begin{matrix}Y \\ Γ \end{matrix}] ∥ (Z \ Y) due to 20.1.3(1)

= [\begin{matrix}Y ˙∨ (Z \ Y) \\ Γ ⊙ ⊗(Z \ Y) \end{matrix}] due to 20.1.3(2)

= [\begin{matrix}Y ∨ Z \\ Γ ⊙ ⊗(Z \ Y) \end{matrix}]

and

(¬R) ∥ Y ∨ Z

= [\begin{matrix}Y \\ ⊗Y \ Γ \end{matrix}] ∥ Y ∨ Z

def. 19.4.1 of ¬

= [\begin{matrix}Y ˙∨ (Z \ Y) \\ (⊗Y \ Γ) ⊙ ⊗(Z \ Y) \end{matrix}]

due to 20.1.3

= [\begin{matrix}Y ∨ Z \\ (⊗Y ⊙ ⊗(Z \ Y)) \ (Γ ⊙ ⊗(Z \ Y)) \end{matrix}]

due to 16.6.1(3)

Similarly, we find that

\begin{aligned}S ∥ Y ∨ Z & = & [\begin{matrix}Y ∨ Z \\ Σ ⊙ ⊗(Y \ Z) \end{matrix}] \\ (¬S) ∥ Y ∨ Z & = & [\begin{matrix}Y ∨ Z \\ (⊗Z ⊙ ⊗(Y \ Z)) \ (Σ ⊙ ⊗(Y \ Z)) \end{matrix}] \end{aligned}

Now, a proof of “(1) iff (2)” is given by

R ⊑ S iff R ∥ Y ∨ Z ⊆ S ∥ Y ∨ Z def. ?? of ⊑

iff [\begin{matrix}Y ∨ Z \\ Γ ⊙ ⊗(Z \ Y) \end{matrix}] ⊆ [\begin{matrix}Y ∨ Z \\ Σ ⊙ ⊗(Y \ Z) \end{matrix}]

iff Γ ⊙ ⊗(Z \ Y) ⊆ Σ ⊙ ⊗(Y \ Z)

iff (\begin{matrix}⊗(Y ∨ Z) \ (Σ ⊙ ⊗(Y \ Z)) \\ ⊆ ⊗(Y ∨ Z) \ (Γ ⊙ ⊗(Z \ Y)) \end{matrix}) due to (a)

iff (\begin{matrix}⊗(Z ˙∨ (Y \ Z)) \ (Σ ⊙ ⊗(Y \ Z)) \\ ⊆ ⊗(Y ˙∨ (Z \ Y)) \ (Γ ⊙ ⊗(Z \ Y)) \end{matrix})
iff (\begin{matrix}(⊗Z ⊙ ⊗(Y \ Z)) \ (Σ ⊙ ⊗(Y \ Z)) \\ ⊆ (⊗Y ⊙ ⊗(Z \ Y)) \ (Γ ⊙ ⊗(Z \ Y)) \end{matrix})

due to 16.6.5(4)

iff (\begin{matrix}(⊗Z \ Σ) ⊙ ⊗(Y \ Z) \\ ⊆ (⊗Y \ Γ) ⊙ ⊗(Z \ Y) \end{matrix}) due to 16.6.1(3)

iff [\begin{matrix}Y ∨ Z \\ (⊗Z \ Σ) ⊙ ⊗(Y \ Z) \end{matrix}] ⊆ [\begin{matrix}Y ∨ Z \\ (⊗Y \ Γ) ⊙ ⊗(Z \ Y) \end{matrix}]

iff (¬S) ∥ Y ∨ Z ⊆ (¬R) ∥ Y ∨ Z iff ¬S ⊑ ¬R

A proof of “(1) iff (3)” is given by

R ⊔ S ≡ S iff (R ⊔ S) ∥ Y ∨ Z = S ∥ Y ∨ Z

def. 20.2.2 of ≡

iff (R ∥ Y ∨ Z) ⊔ (R ∥ Y ∨ Z) = S ∥ Y ∨ Z

due to 20.4.15(5)

iff (R ∥ Y ∨ Z) ∪ (S ∥ Y ∨ Z) ⊆ (S ∥ Y ∨ Z)

def. 20.2.2 of ⊔

iff [\begin{matrix}Y ∨ Z \\ Γ ⊙ ⊗(Z \ Y) \end{matrix}] ∪ [\begin{matrix}Y ∨ Z \\ Σ ⊙ ⊗(Y \ Z) \end{matrix}] ⊆ [\begin{matrix}Y ∨ Z \\ Σ ⊙ ⊗(Y \ Z) \end{matrix}]

iff (Γ ⊙ ⊗(Z \ Y)) ∪ (Σ ⊙ ⊗(Y \ Z)) ⊆ (Σ ⊙ ⊗(Y \ Z))

iff (Γ ⊙ ⊗(Z \ Y)) ⊆ (Σ ⊙ ⊗(Y \ Z)) due to (b)

iff R ⊑ S

A proof of “(1) iff (4)” is similarly given by

R ⊓ S ≡ S iff (Γ ⊙ ⊗(Z \ Y)) ∩ (Σ ⊙ ⊗(Y \ Z)) ⊆ (Σ ⊙ ⊗(Y \ Z))

iff (Γ ⊙ ⊗(Z \ Y)) ⊆ (Σ ⊙ ⊗(Y \ Z)) due to (c)

iff R ⊑ S

A proof of “(1) iff (5)” is similar by using (d). Finially, (e) can be used to show “(1) iff (6)”.

20.4.26 Lemma congruence Let X be a proper schema. If R, R′, S, S′ ∈ Prel(X) with R ≡ S and R′ ≡ S′, then

(1) R ⊑ R′ iff S ⊑ S′

(2) R ⊓ S ≡ R′ ⊓ S′

(3) R ⊔ S ≡ R′ ⊔ S′

(4) ¬R ≡ ¬S If R, S ⊆ Prel(X) such that each R ∈ R has an equivalent S ∈ S and vice versa, then

(5) ⋂ R ≡ ⋂ S

(6) ⋃ R ≡ ⋃ S

20.4.27 Proof of 20.4.26

Should be clear by now.

20.4.28 Lemma total distributivity

Let X = [X_{i}|i ∈ I] be a proper schema. Let L = [L_{k}|k ∈ K] also be a proper schema and R_{kl} ∈ Prel(X), for each k ∈ K and l ∈ L_{k}. Then

(1) ∏_{k∈K} ∐_{l∈Lk}R_{kl} = ∐_{λ∈⊗L} ∏_{k∈K}R_{kλ(k)}

(2) ∐_{k∈K} ∏_{l∈Lk}R_{kl} = ∏_{λ∈⊗L} ∐_{k∈K}R_{kλ(k)}

20.4.29 Proof of 20.4.28

Left as exercise.

20.4.30 Lemma

Let X be a proper schema, R ∈ Prel(X), and R = {R_{k} | k ∈ K} ⊆ Prel(X). Then

(1) ¬R ≡ ⊥ iff R ≡ ⊤

(2) ¬R ≡ ⊤ iff R ≡ ⊥

(3) (∀k ∈ K . R_{k} ≡ ⊤) iff ∏R ≡ ⊤

(4) (∀k ∈ K . R_{k} ≡ ⊥) iff ∐R ≡ ⊥

(5) (∃k ∈ K . R_{k} ≡ ⊥) implies ∏R ≡ ⊥

(6) (∃k ∈ K . R_{k} ≡ ⊤) implies ∐R ≡ ⊤ 20.4.31 Proof of 20.4.30 Left as exercise.

20.5 More derived semantic operations

20.5.1 Remark In section 8 we introduced additional junctors derived from quasi–boolean algebras, in particular the multiary subjunctor “→” and equijunctor “↔” (8.2.2). Here in our final subsection 20.5 of section 20 , we introduce these junctors for our (quasi–boolean algebra) of compatible relations. At least the simple binary versions “◯ 1 → ◯ 2 ” and “◯ 1 ↔ ◯ 2 ”. We also add the subtraction (or difference) “◯ 1 − ◯ 2 ”.

In the introductory remark 8.0.5 of section 8 , we discouraged the reader to study that section. So we introduce these new junctors here along with some lemmata and proofs, that don’t refer to section 8 .

20.5.2 Definition For all compatible relations R and S we define:

R − S := R ⊓ ¬S  (\underline{subtraction} or \underline{difference})
R → S := ¬R ⊔ S  (\underline{subjunction})
R ↔ S := (¬R ⊓ ¬S) ⊔ (R ⊓ S)  (\underline{equijunction})

20.5.3 Lemma properties of sub– and equijunction

For every proper schema X and all R, S ∈ Prel(X) holds:

(1) x(R → S) = x(R) ∨ x(S) (subj. schema)

(2) x(R ↔ S) = x(R) ∨ x(S) (equij. schema)

(3) R ↔ S = (R → S) ⊓ (S → R) (double subj.)

(4) R ⊑ S iff R → S ≡ ⊤ (subvalence criterion)

(5) R ≡ S iff R ↔ S ≡ ⊤ (equivalence criterion)

(6) ⊥ → R ≡ ⊤ (left bottom)

(7) ⊤ → R = R (left top)

(8) R → ⊥ = ¬R (right bottom)

(9) R → ⊤ ≡ ⊤ (right top)

(10) R ↔ ⊥ = ¬R (negative literal)

(11) R ↔ ⊤ = R (positive literal)

(12) R − S = ¬(R → S) (subtraction and subjunction)

20.5.4 Proof of 20.5.3 Suppose R = [Y, Γ] and S = [Z, Σ]. R, S ∈ Prel(X) implies the compatibility of R and S, so all the sub– and equijunction terms of the lemma are well–defined.

(1) We have x(R → S)

= x(¬R ⊔ S) def. 20.5.2 = x(¬R) ∨ x(S) due to 20.4.7(5) = x(R) ∨ x(S) due to 20.4.7(3)

(2) Similar to (1), we have

\begin{aligned}x(R ↔ S) & = & (x(R) ∨ x(S)) ∨ (x(R) ∨ x(S)) \\ & = & x(R) ∨ x(S) \end{aligned}

(3) Applying definition 20.5.2 of → and ↔ and the boolean laws from 20.4.21 we obtain R ↔ S = (¬R ⊓ ¬S) ⊔ (R ⊓ S) = (¬R ⊔ R) ⊓ (¬R ⊔ S) ⊓ (¬S ⊔ R) ⊓ (¬S ⊔ S) = ⊤_{Y} ⊓ (¬R ⊔ S) ⊓ (¬S ⊔ R) ⊓ ⊤_{Z} = (¬R ⊔ S) ⊓ (¬S ⊔ R) = (R → S) ⊓ (S → R)

(4) We have R ⊑ S

⇔ ¬R ⊔ S ≡ ⊤ due to 20.4.24 ⇔ R → S ≡ ⊤ def. 20.5.2 of →

(5) If R ≡ S, then ¬R ⊓ ¬S ≡ ¬R and R ⊓ S ≡ R, so that R ↔ S = (¬R ⊓ ¬S) ⊔ (R ⊓ S) ≡ ¬R ⊔ R ≡ ⊤. On the other hand, if R ↔ S ≡ ⊤, then (R → S) ⊓ (S → R) ≡ ⊤ according to (3), so R → S ≡ ⊤ and S → R ≡ ⊤, so that R ⊑ S and S ⊑ R according to (4), which means R ≡ S according to 20.4.9(1).

(6) We have ⊥ → R

= ¬⊥ ⊔ R def. 20.5.2 = ⊤ ⊔ R due to 19.4.8(1) ≡ ⊤ due to 20.4.21(16)

(7) Similar to (6) we have ⊤ → R = ¬⊤ ⊔ R = ⊥ ⊔ R = R

(8) We have R → ⊥

= ¬R ⊔ ⊥ def. 20.5.2 = ¬R due to 20.4.21(2)

(9) Similar to (8) we have R → ⊤ = ¬R ⊔ ⊤ ≡ ⊤

(10) We have R ↔ ⊥ = (¬R ⊓ ¬⊥) ⊔ (R ⊓ ⊥) def. 20.5.2

= (¬R ⊓ ⊤) ⊔ ⊥ in particular due to 20.4.21(15) = ¬R ⊔ ⊥ due to 20.4.21(1) = ¬R due to 20.4.21(2)

(11) Similar to (10) we obtain

R ↔ ⊤ = (¬R ⊓ ¬⊤) ⊔ (R ⊓ ⊤)
= (¬R ⊓ ⊥) ⊔ R
= ⊥ ⊔ R
= R

(12) We have R − S

= R ⊓ ¬S def. 20.5.2 = ¬¬(R ⊓ ¬S) due to 19.4.6 = ¬(¬R ⊔ ¬¬S) due to 20.4.21(13),(9), and (10) = ¬(¬R ⊔ S) due to 19.4.6 = ¬(R → S) def. 20.5.2

21 Decreasing the schema of relations

21.1 Introduction and overview

21.1.1 Remark Various operations to decrease the schema

We already have an operation available to increase the schema of a relation, namely the expander ∥. Decreasing the schema is a more subtle process and we will present six or seven different operations to do the job. One reason for this variety is the diversity of possible operation types to express the idea.

Let X = [X_{i}|i ∈ I] be a schema, R ∈ Rel(X) and Y ≤ X, i.e. Y = pr (X, J) for some J ⊆ I. Suppose we want to decrease the schema X of R and Y schall be the schema of the resulting relation R′. We call this ♣ a \underline{reduction} of R onto Y, or ♣ a \underline{(co)projection} of R onto J, or

♣ an \underline{elimination} of K := I \ J from R

That is already a lot of terminology for basically the same thing. Nevertheless, the variety is useful. In particular, as their actual formalizations uses very different approaches.

A \underline{reduction} of R onto Y is the attempt to find a R′ ∈ Rel(Y) equivalent to R. But such a R′ exists only in rare cases. In general, we only have two closest results: the maximal subvalent member of Rel(Y), called the \underline{infimum reduction} of R onto Y and written R ⇑ Y , and the minimal supervalent element,

called the \underline{supremum reduction} of R onto Y, noted as R ⇓ Y . It is very important to understand the arguments that lead to these concepts. In 21.1.2 and 21.1.3, we use double tables to motivate and introduce these reductions.

A \underline{projection} of R onto J, written pr (R, J) , is an often used operation on relations and seems the most obvious way of schema decreasing when we look at the graph table of R: to obtain pr (R, J), simply delete all the columns whose attributes are not in J.

It will turn out (in 21.6.4(1)(a)), that the projection resembles the supremum reduction: pr (R, J) = R ⇓ Y. In order to have its dual concept available as well, we introduce the \underline{coprojection} of R onto J, written cpj (R, J) , with

cpj (R, J) = R ⇑ Y.

Finally, \underline{eliminations} come in two flavors, accordingly: R ⇂ K := pr (R, J), the \underline{supremum elimination}, read “the

upper R without K”, and R ↾ K := cpj (R, J), the \underline{infimum elimination}, read as “the lower R without K”.

21.1.2 Remark Equivalent reduction and redundant attributes

In the sequel, let a relation R = [X, Γ] and a schema Y with Y ⌣ X be given.

We already defined a method to expand the schema X of R by Y, the resulting relation is R ∥ Y and its expanded schema is X ∨ Y. R ∥ Y is distinguished from all the other elements of Rel(X ∨ Y) by the fact that it is the only one equivalent to R. We could have defined

R ∥ Y := the S ∈ Rel(Y) with S ≡ R

Let us now define the inverse operation: a \underline{reduction}, i.e. an operation that \underline{reduces} the schema of relations. For now we take this term literally and restrict the definition to the case Y ≤ X. So, in case Y ≤ X, we define the \underline{equivalent reduction} of R onto Y as

R ⇕ Y := the S ∈ Rel(Y) with S ≡ R

If such an R ⇕ Y exists, it is unique. However, in most cases it does not exist.

Double tables provide a nice and intuitive way to demonstrate the situation. We consider the example where X, Y, R are given by

X = [ \begin{matrix}a ↦ & \{1, 2\} \\ b ↦ & \{2, 3, 4\} \\ c ↦ & \{1, 2\} \\ d ↦ & \{2, 3, 4\} \end{matrix} ] Y = [ \begin{matrix}a ↦ & \{1, 2\} \\ b ↦ & \{2, 3, 4\} \end{matrix} ]

R = [ \begin{matrix}X \\ x ⇝ x(a) · x(b) < x(c) + x(d) \end{matrix} ]

The double table of R (according to 17.6.1) with Y as left and X \ Y as top schema is

\begin{aligned}R & = & \begin{aligned}& & 1 & 2 & 1 & 2 & 1 & 2 & c \\ & & 2 & 2 & 3 & 3 & 4 & 4 & d \\ 1 & 2 & 2 < 3 & 2 < 4 & 2 < 4 & 2 < 5 & 2 < 5 & 2 < 6 \\ 2 & 2 & 4 < 3 & 4 < 4 & 4 < 4 & 4 < 5 & 4 < 5 & 4 < 6 \\ 1 & 3 & 3 < 3 & 3 < 4 & 3 < 4 & 3 < 5 & 3 < 5 & 3 < 6 \\ 2 & 3 & 6 < 3 & 6 < 4 & 6 < 4 & 6 < 5 & 6 < 5 & 6 < 6 \\ 1 & 4 & 4 < 3 & 4 < 4 & 4 < 4 & 4 < 5 & 4 < 5 & 4 < 6 \\ 2 & 4 & 8 < 3 & 8 < 4 & 8 < 4 & 8 < 5 & 8 < 5 & 8 < 6 \\ a & b \end{aligned} \\ & = & \begin{aligned}& & 1 & 2 & 1 & 2 & 1 & 2 & c \\ & & 2 & 2 & 3 & 3 & 4 & 4 & d \\ 1 & 2 & 1 & 1 & 1 & 1 & 1 & 1 \\ 2 & 2 & 0 & 0 & 0 & 1 & 1 & 1 \\ 1 & 3 & 0 & 1 & 1 & 1 & 1 & 1 \\ 2 & 3 & 0 & 0 & 0 & 0 & 0 & 0 \\ 1 & 4 & 0 & 0 & 0 & 1 & 1 & 1 \\ 2 & 4 & 0 & 0 & 0 & 0 & 0 & 0 \\ a & b \end{aligned} \end{aligned}

Let us try to construct R ⇕ Y. The schema of R ⇕ Y is Y, so R ⇕ Y can be represented by a boolean table

R ⇕ Y = \begin{matrix}a & b \\ 1 & 2 & β_{1} \\ 2 & 2 & β_{2} \\ 1 & 3 & β_{3} \\ 2 & 3 & β_{4} \\ 1 & 4 & β_{5} \\ 2 & 4 & β_{6} \end{matrix}

It remains to define the β_{1}, …, β_{6} ∈ 𝔹. We want R ⇕ Y to satisfy R ⇕ Y ≡ R, and that means R ⇕ Y ∥ X = R. In double table representation (according to 20.1.5) that is

R ⇕ Y ∥ X = \begin{aligned}& & 1 & 2 & 1 & 2 & 1 & 2 & c \\ & & 2 & 2 & 3 & 3 & 4 & 4 & d \\ 1 & 2 & β_{1} & β_{1} & β_{1} & β_{1} & β_{1} & β_{1} \\ 2 & 2 & β_{2} & β_{2} & β_{2} & β_{2} & β_{2} & β_{2} \\ 1 & 3 & β_{3} & β_{3} & β_{3} & β_{3} & β_{3} & β_{3} \\ 2 & 3 & β_{4} & β_{4} & β_{4} & β_{4} & β_{4} & β_{4} \\ 1 & 4 & β_{5} & β_{5} & β_{5} & β_{5} & β_{5} & β_{5} \\ 2 & 4 & β_{6} & β_{6} & β_{6} & β_{6} & β_{6} & β_{6} \\ a & b \end{aligned}

i.e. in each of the six rows (of the center block), the entries for all cells must be identical. And R ⇕ Y ∥ X = R means that this double table must coincide with the one for R given earlier on. Obviously, there are no β_{1}, …, β_{6} ∈ 𝔹 to make that happen. The double table for R has rows with mixed values, e.g. in the second last row (the one for a = 1 and b = 4), both 0 and 1 occur. For this given R and Y, R ⇕ Y does not exist.

We will also say that R ⇕ Y exists iff each of the deleted attributes (here c and d) is \underline{redundant} in R.

21.1.3 Remark Infimum and supremum reduction

R ⇕ Y, the equivalent reduction onto Y might not always exist. But there is always: ♣ a maximal lower bound, i.e. the greatest R′ ∈ Rel(Y) with

R′ ⊑ R, called the \underline{infimum reduction} of R onto Y and written R ⇑ Y .

♣ and similarly, a minimal upper bound, written R ⇓ Y , the \underline{supremum reduction} of R onto Y.

Let us take the previous example R and Y again. Let us consider a S ∈ Rel(Y), its general form was

S = \begin{matrix}a & b \\ 1 & 2 & β_{1} \\ 2 & 2 & β_{2} \\ 1 & 3 & β_{3} \\ 2 & 3 & β_{4} \\ 1 & 4 & β_{5} \\ 2 & 4 & β_{6} \end{matrix}

with β_{1}, …, β_{6} ∈ 𝔹 and so

S ∥ X = \begin{aligned}& & 1 & 2 & 1 & 2 & 1 & 2 & c \\ & & 2 & 2 & 3 & 3 & 4 & 4 & d \\ 1 & 2 & β_{1} & β_{1} & β_{1} & β_{1} & β_{1} & β_{1} \\ 2 & 2 & β_{2} & β_{2} & β_{2} & β_{2} & β_{2} & β_{2} \\ 1 & 3 & β_{3} & β_{3} & β_{3} & β_{3} & β_{3} & β_{3} \\ 2 & 3 & β_{4} & β_{4} & β_{4} & β_{4} & β_{4} & β_{4} \\ 1 & 4 & β_{5} & β_{5} & β_{5} & β_{5} & β_{5} & β_{5} \\ 2 & 4 & β_{6} & β_{6} & β_{6} & β_{6} & β_{6} & β_{6} \\ a & b \end{aligned}

Now suppose we want the β_{1}, …, β_{6} such that S ⊑ R, i.e. S ∥ X ⊆ R. In double table representation that is

\begin{aligned}& & 1 & 2 & 1 & 2 & 1 & 2 & c \\ & & 2 & 2 & 3 & 3 & 4 & 4 & d \\ 1 & 2 & β1 & β1 & β1 & β1 & β1 & β1 \\ 2 & 2 & β2 & β2 & β2 & β2 & β2 & β2 \\ 1 & 3 & β3 & β3 & β3 & β3 & β3 & β3 \\ 2 & 3 & β4 & β4 & β4 & β4 & β4 & β4 \\ 1 & 4 & β5 & β5 & β5 & β5 & β5 & β5 \\ 2 & 4 & β6 & β6 & β6 & β6 & β6 & β6 \\ a & b \end{aligned} ⊆ \begin{aligned}& & 1 & 2 & 1 & 2 & 1 & 2 & c \\ & & 2 & 2 & 3 & 3 & 4 & 4 & d \\ 1 & 2 & 1 & 1 & 1 & 1 & 1 & 1 \\ 2 & 2 & 0 & 0 & 0 & 1 & 1 & 1 \\ 1 & 3 & 0 & 1 & 1 & 1 & 1 & 1 \\ 2 & 3 & 0 & 0 & 0 & 0 & 0 & 0 \\ 1 & 4 & 0 & 0 & 0 & 1 & 1 & 1 \\ 2 & 4 & 0 & 0 & 0 & 0 & 0 & 0 \\ a & b \end{aligned}

which means, that the β_{i} have to satisfy the following set of order statements

\begin{matrix}β1 ≤ 1 & β1 ≤ 1 & β1 ≤ 1 & β1 ≤ 1 & β1 ≤ 1 & β1 ≤ 1 \\ β2 ≤ 0 & β2 ≤ 0 & β2 ≤ 0 & β2 ≤ 1 & β2 ≤ 1 & β2 ≤ 1 \\ β3 ≤ 0 & β3 ≤ 1 & β3 ≤ 1 & β3 ≤ 1 & β3 ≤ 1 & β3 ≤ 1 \\ β4 ≤ 0 & β4 ≤ 0 & β4 ≤ 0 & β4 ≤ 0 & β4 ≤ 0 & β4 ≤ 0 \\ β5 ≤ 0 & β5 ≤ 0 & β5 ≤ 0 & β5 ≤ 1 & β5 ≤ 1 & β5 ≤ 1 \\ β6 ≤ 0 & β6 ≤ 0 & β6 ≤ 0 & β6 ≤ 0 & β6 ≤ 0 & β6 ≤ 0 \end{matrix}

which is the case exactly if

β_{1} is either 0 or 1 and β_{2} = β_{3} = β_{4} = β_{5} = β_{6} = 0

In parameterized boolean table notation that result goes: For every S ∈ Rel(Y),

S ⊑ R iff S = \begin{matrix}a & b \\ 1 & 2 & β_{1} \\ 2 & 2 & 0 \\ 1 & 3 & 0 \\ 2 & 3 & 0 \\ 1 & 4 & 0 \\ 2 & 4 & 0 \end{matrix} with β_{1} ∈ 𝔹

In other words, R has two lower bounds in Rel(Y): one S_{1} with β_{1} = 0 and one S_{2} with β_{1} = 1. Obviously, the maximum of these lower bounds is S_{2}, where β_{1} is put to its maximum value 1. S_{2} is our wanted R ⇑ Y.

An alternative way for saying that R ⇑ Y should be the maximal lower bound of R in Rel(Y) is the actual definition 21.6.1 of R ⇑ Y as

R ⇑ Y := ⋃{S ∈ Rel(Y) | S ⊑ R}

And indeed, for our example case, R ⇑ Y = S_{1} ∪ S_{2}.

Using the same line of reasoning for the minimal upper bound, we find that

R ⊆ S iff S = \begin{matrix}a & b \\ 1 & 2 & 1 \\ 2 & 2 & 1 \\ 1 & 3 & 1 \\ 2 & 3 & β_{4} \\ 1 & 4 & 1 \\ 2 & 4 & β_{6} \end{matrix} with β_{4}, β_{6} ∈ 𝔹

The minimum of these four upper bounds is given by assigning the minimum value 0 to the free parameters β_{4}, β_{6}. Written with the new notation that is

R ⇓ Y = \begin{matrix}a & b \\ 1 & 2 & 1 \\ 2 & 2 & 1 \\ 1 & 3 & 1 \\ 2 & 3 & 0 \\ 1 & 4 & 1 \\ 2 & 4 & 0 \end{matrix}

21.1.4 Double table method for supremum and infimum

reduction

Following the arguments you might already have discovered a faster method to derive R ⇑ Y and R ⇓ Y from the given double table of R: ♣ For R ⇑ Y perform the boolean conjunction ∧ of all boolean

values in each row. ♣ For R ⇓ Y perform the boolean disjunction ∨ of all boolean

values in each row.

For our example, this means:

R ⇑ Y = \begin{matrix}a & b \\ 1 & 2 & 1 ∧ 1 ∧ 1 ∧ 1 ∧ 1 ∧ 1 \\ 2 & 2 & 0 ∧ 0 ∧ 0 ∧ 1 ∧ 1 ∧ 1 \\ 1 & 3 & 0 ∧ 1 ∧ 1 ∧ 1 ∧ 1 ∧ 1 \\ 2 & 3 & 0 ∧ 0 ∧ 0 ∧ 0 ∧ 0 ∧ 0 \\ 1 & 4 & 0 ∧ 0 ∧ 0 ∧ 1 ∧ 1 ∧ 1 \\ 2 & 4 & 0 ∧ 0 ∧ 0 ∧ 0 ∧ 0 ∧ 0 \end{matrix} = \begin{matrix}a & b \\ 1 & 2 & 1 \\ 2 & 2 & 0 \\ 1 & 3 & 0 \\ 2 & 3 & 0 \\ 1 & 4 & 0 \\ 2 & 4 & 0 \end{matrix}

and

R ⇓ Y = \begin{matrix}a & b \\ 1 & 2 & 1 ∨ 1 ∨ 1 ∨ 1 ∨ 1 ∨ 1 \\ 2 & 2 & 0 ∨ 0 ∨ 0 ∨ 1 ∨ 1 ∨ 1 \\ 1 & 3 & 0 ∨ 1 ∨ 1 ∨ 1 ∨ 1 ∨ 1 \\ 2 & 3 & 0 ∨ 0 ∨ 0 ∨ 0 ∨ 0 ∨ 0 \\ 1 & 4 & 0 ∨ 0 ∨ 0 ∨ 1 ∨ 1 ∨ 1 \\ 2 & 4 & 0 ∨ 0 ∨ 0 ∨ 0 ∨ 0 ∨ 0 \end{matrix} = \begin{matrix}a & b \\ 1 & 2 & 1 \\ 2 & 2 & 1 \\ 1 & 3 & 1 \\ 2 & 3 & 0 \\ 1 & 4 & 1 \\ 2 & 4 & 0 \end{matrix}

By the way, the notation “⇑” can be memorized by this method as “⇑ = ∥ + ∧”. In lattice theory, the term “infimum” is synonymous to “meet” or “conjunction”. Accordingly, think of “⇓ = ∥ + ∨” for the supremum reduction.

21.1.5 Remark overview

Next, we move on to state the proper formal definitions of the mentioned operations and discuss their properties. We begin with the (co)projections (21.2) and continue with the eliminations (21.4), reductions (21.6) and redundancies of attributes (21.8).

So far, we only mentioned proper schema–decreasing operations in the sense that R′ ≤ R for every R decreased to R′. But reductions, say a supremum reduction R ⇓ Y, is defined as ⋂{S ∈ Rel(Y) | R ⊑ S}. That expression is not only well–defined for Y ≤ x(R), but more general for every Y ⌣ x(R). In this respect, reductions will be more general than (co)projections and eliminations.

By the way, if R = [X, Γ] and Y ⌣ X, we will see (in 21.6.4), that e.g. the general supremum reduction R ⇓ Y is a combined proper reduction and with a subsequent expansion: R ⇓ Y = R ⇓ (Y ∧ X) ∥ Y. We can understand these generalizations with the already known notions.

We will also see that the duality of, say supremum and infimum reductions is a proper duality indeed: one can be expressed in terms of the other, e.g. R ⇓ Y = ¬((¬R) ⇑ Y), etc. We use this fact for the introduction of the coprojection as cpj (R, J) := ¬pr (¬R, J).

21.2 Projection and coprojection

21.2.1 Repetition

Recall from 16.5.2, that

pr (Γ, J) := {pr (ξ, J) | ξ ∈ Γ}

for every schema X = [X_{i}|i ∈ I], each Γ ⊆ ⊗X and all J ⊆ I.

21.2.2 Definition

Let X = [X_{i}|i ∈ I] be a schema, R = [X, Γ] a relation and J ⊆ I. We define

pr (R, J) := [ \begin{matrix}pr & (X, J) \\ pr & (Γ, J) \end{matrix} ]

the \underline{projection} of R onto J

cpj (R, J) := ¬pr (¬R, J)

the \underline{coprojection} of R onto J

21.2.3 Table representations

Let X be a schema, R ∈ Rel(X), and J ⊆ dom(X). ♣ If R is a table, we can compute pr (R, J) by simply deleting

all the graph table columns that are not in J. See 21.2.4 for example. This possiblilty is a direct consequence of the projection definition 21.2.2.

♣ R being a table does in general not mean that ¬R is a table, too. So the coprojection definition cpj (R, J) := ¬pr (¬R, J) is not a recipe for a graph table method. Not in general, anyway.

♣ If R is a completely finite relation, it can be represented by boolean and double tables and we generate both pr (R, J) and cpj (R, J) according to the method in 21.1.4. The justification and formal expression for this method is given in 21.2.9 below.

21.2.4 Graph table representation for the projection

If R = [X, Γ] is a table, we can represent it by its graph table. For example

R = \begin{matrix}a : ℕ & b : ℕ & c : ℕ & d : ℕ \\ 1 & 2 & 3 & 4 \\ 5 & 6 & 7 & 8 \\ 9 & 10 & 11 & 12 \\ 1 & 1 & 3 & 3 \\ 5 & 5 & 7 & 7 \\ 9 & 9 & 11 & 11 \\ 2 & 2 & 4 & 4 \\ 6 & 6 & 8 & 8 \\ 10 & 10 & 12 & 12 \end{matrix}

If we want to compute pr (R, J) with J = {b, d}, we delete all the columns in this graph table, except the ones for b and d:

pr(R, J) = \begin{matrix}b : ℕ & d : ℕ \\ 2 & 4 \\ 6 & 8 \\ 10 & 12 \\ 1 & 3 \\ 5 & 7 \\ 9 & 11 \\ 2 & 4 \\ 6 & 8 \\ 10 & 12 \end{matrix}

There are some redundancies, and after removing them we obtain

pr(R, J) = \begin{matrix}b : ℕ & d : ℕ \\ 2 & 4 \\ 6 & 8 \\ 10 & 12 \\ 1 & 3 \\ 5 & 7 \\ 9 & 11 \end{matrix}

21.2.5 Lemma

Let X = [X_{i}|i ∈ I] be a schema, R = [X, Γ] a relation and J ⊆ I. Then

cpj (R, J) = [ \begin{matrix}pr & (X, J) \\ ⊗pr (X, J) \ pr (⊗X \ Γ, J) \end{matrix} ]

21.2.6 Proof of 21.2.5

cpj (R, J)

= ¬[\begin{matrix}pr & (X, J) \\ pr & (⊗X \ Γ, J) \end{matrix}] def. 21.2.2 of the projection

= [\begin{matrix}pr & (X, J) \\ ⊗pr (X, J) \ pr (⊗X \ Γ, J) \end{matrix}] def. 19.4.1 of ¬, again

21.2.7 Lemma Lemma

Let X = [X_{i}|i ∈ I] be a proper schema, R = [X, Γ] a relation and J ⊆ I. We put Y := pr (X, J). Then

(1) pr (R, J) = [ \begin{matrix}Y \\ y ⇝ ∃z ∈ ⊗(X \ Y) . y ˙∨ z ∈ Γ \end{matrix} ]

(2) cpj (R, J) = [ \begin{matrix}Y \\ y ⇝ ∀z ∈ ⊗(X \ Y) . y ˙∨ z ∈ Γ \end{matrix} ]

21.2.8 Proof of 21.2.7

Let Y := pr (X, J).

(1) There is ⊗X = ⊗(Y ˙∨ (X \ Y)) = {y ˙∨ z | y ∈ ⊗Y, z ∈ ⊗(X \ Y)} so that

pr (Γ, J)

= {pr (x, J) | x ∈ ⊗X, x ∈ Γ}

= {pr (y ˙∨ z, J) | y ∈ ⊗Y, z ∈ ⊗(X \ Y), y ˙∨ z ∈ Γ}

= {y | y ∈ ⊗Y, ∃z ∈ ⊗(X \ Y) . y ˙∨ z ∈ Γ}

because pr (y ˙∨ z, J) = y

Thus

pr (R, J) = [ \begin{matrix}Y \\ y ⇝ ∃z ∈ ⊗(X \ Y) . y ˙∨ z ∈ Γ \end{matrix} ]

(2) We have

cpj (R, J)

= ¬pr (¬R, J)

= ¬pr ([\begin{matrix}X \\ ⊗X \ Γ \end{matrix}], J)

= ¬[\begin{matrix}Y \\ y ⇝ ∃z ∈ ⊗(X \ Y) . y ˙∨ z ∈ (⊗X \ Γ) \end{matrix}] due to (1)

= ¬[\begin{matrix}Y \\ y ⇝ ¬∀z ∈ ⊗(X \ Y) . y ˙∨ z ∈ Γ \end{matrix}]

= [\begin{matrix}Y \\ y ⇝ ¬¬∀z ∈ ⊗(X \ Y) . y ˙∨ z ∈ Γ \end{matrix}]

= [\begin{matrix}Y \\ y ⇝ ∀z ∈ ⊗(X \ Y) . y ˙∨ z ∈ Γ \end{matrix}]

= ¬pr (¬R, J) def. 21.2.2 of the coprojection

= ¬pr ([\begin{matrix}X \\ ⊗X \ Γ \end{matrix}], J) def. 19.4.1 of ¬

21.2.9 Lemma

Let X = [X_{i}|i ∈ I] be a proper schema, R = [X, Γ] a relation and J ⊆ I. We put Y := pr (X, J). Then

(1) χ_{pr(R,J)} = [ \begin{matrix}⊗Y ⟶ 𝔹 \\ y ↦ ⋁_{𝔹}\{χ_{R}(y ˙∨ z) | z ∈ ⊗(X \ Y)\} \end{matrix} ]

(2) χ_{cpj(R,J)} = [ \begin{matrix}⊗Y ⟶ 𝔹 \\ y ↦ ⋀_{𝔹}\{χ_{R}(y ˙∨ z) | z ∈ ⊗(X \ Y)\} \end{matrix} ]

21.2.10 Proof of 21.2.9

These are the characteristic functions of the relations from 21.2.7.

21.3 Properties of projections and coprojections

21.3.1 Lemma

Let X = [X_{i}|i ∈ I] be a schema, R = [X, Γ] a relation, and J ⊆ I. Then

(1) x(pr (R, J)) = pr (x(R), J)

(2) x(cpj (R, J)) = pr (x(R), J)

(3) @(pr (R, J)) = J

(4) @(cpj (R, J)) = J

(5) gr(pr (R, J)) = pr (gr(R), J)

(6) gr(cpj (R, J)) = ⊗pr (X, J) \ pr (⊗X \ gr(R), J)

21.3.2 Proof of 21.3.1

Statements (1)–(5) are immediate consequences of 21.2.2 and (6) derives from 21.2.5.

21.3.3 Lemma

Let X = [X_{i}|i ∈ I] be a proper schema and R = [X, Γ] a relation.

(1) There is (a) pr (R, I) = R (neutrality)

(b) cpj (R, I) = R (neutrality)

(2) If J ⊆ I, then (a) pr (pr (R, J) , J) = pr (R, J) (idempotency)

(b) cpj (cpj (R, J) , J) = cpj (R, J) (idempotency)

(3) There is

(a) pr (R, ∅) = \begin{cases}⊥ & if R is empty \\ ⊤ & else \end{cases} (empty criterion)

(b) cpj (R, ∅) = \begin{cases}⊤ & if R is full \\ ⊥ & else \end{cases} (full criterion)

(4) If I_{1}, I_{2} make a partition of I, i.e. I_{1} ∩ I_{2} = ∅ and I_{1} ∪ I_{2} = I, then

(a) R ⊆ pr (R, I_{1}) ⊙ pr (R, I_{2})

(b) R ⊇ cpj (R, I_{1}) ⊙ cpj (R, I_{2})

(5) As a generalization of (4) we have: if [I_{k}|k ∈ K] is a class partition of I, then

(a) R ⊆ ⊙[pr (R, I_{k}) |k ∈ K]

(b) R ⊇ ⊙[cpj (R, I_{k}) |k ∈ K]

(6) If J_{1} ⊆ J_{2} ⊆ I then (a) pr (pr (R, J_{2}) , J_{1}) = pr (R, J_{1})

(b) cpj (cpj (R, J_{2}) , J_{1}) = cpj (R, J_{1})

(7) If J_{1} ⊆ J_{2} ⊆ I and Y := pr (X, J_{2} \ J_{1}), then (a) pr (R, J_{1}) ⊙ ⊤_{Y} ⊇ pr (R, J_{2})

(b) cpj (R, J_{1}) ⊙ ⊤_{Y} ⊆ cpj (R, J_{2})

(8) If J_{1} ⊆ J_{2} ⊆ I, then (a) pr (R, J_{2}) ⊑ pr (R, J_{1}) (antitony)

(b) cpj (R, J_{1}) ⊑ cpj (R, J_{2}) (isotony)

(9) If J ⊆ I, then (a) R ⊑ pr (R, J) (supervalence of projection)

(b) R ⊒ cpj (R, J) (subvalence of coprojection)

(c) cpj (R, J) ⊆ pr (R, J)

(10) If J ⊆ I, Y := pr (X, J) and S = [Y, Σ] is a relation,

(a) R ⊑ S iff pr (R, J) ⊆ S

(b) S ⊑ R iff S ⊆ cpj (R, J)

(11) If J ⊆ I and S = [X, Σ] is a relation, then (a) R ⊆ S implies pr (R, J) ⊆ pr (S, J)

(b) R ⊆ S implies cpj (R, J) ⊆ cpj (S, J)

21.3.4 Proof of 21.3.3

(1) There is

(a)  pr (R, I) = [\begin{matrix}pr & (X, I) \\ \{pr (x, I) | x ∈ Γ\} \end{matrix}] = R

(b) and

cpj (R, I)

= [\begin{matrix}pr & (X, I) \\ ⊗pr (X, I) \ pr (⊗X \ Γ, I) \end{matrix}] due to 21.2.5

= [\begin{matrix}X \\ ⊗X \ (⊗X \ Γ) \end{matrix}]

= R

(2) For J ⊆ I holds

(a) @(pr (R, J)) = J, so we can apply (1)(a) and obtain pr (pr (R, J) , J) = pr (R, J).

(b) similar proof

(3) Recall, that R = [X, Γ] is empty, if Γ = ∅, i.e. if R = ⊥_{X}, and full, if Γ = ⊗X, i.e. if R = ⊤_{X}.

(a) There is pr (ξ, ∅) = ⟨⟩, for every record ξ. So

\{pr (x, ∅) | x ∈ Γ\} = \begin{cases}\{⟨⟩\} & if Γ ≠ ∅ \\ ∅ & if Γ = ∅ \end{cases}

Thus

pr (R, ∅) = [ \begin{matrix}pr & (X, ∅) \\ \{pr (x, ∅) | x ∈ Γ\} \end{matrix} ]

= \begin{cases}[⟨⟩, ∅] = ⊥ & if R is empty \\ [⟨⟩, \{⟨⟩\}] = ⊤ & else \end{cases}

(b) We have

cpj (R, ∅)

= [ \begin{matrix}pr & (X, ∅) \\ ⊗pr (X, ∅) \ pr (⊗X \ Γ, ∅) \end{matrix} ] due to 21.2.5

= [ \begin{matrix}⟨⟩ \\ \{⟨⟩\} \ \{pr (x, ∅) | x ∈ ⊗X \ Γ\} \end{matrix} ]

= \begin{cases}[\begin{matrix}⟨⟩ \\ \{⟨⟩\} \ ∅ \end{matrix}] = ⊤ & if Γ = ⊗X \\ [\begin{matrix}⟨⟩ \\ \{⟨⟩\} \ \{⟨⟩\} \end{matrix}] = ⊥ & if Γ ≠ ⊗X \end{cases}

(4) Let X_{1} := pr (X, I_{1}) and X_{2} := pr (X, I_{2}), so X = X_{1} ˙∨ X_{2}.

(a) There is

Γ = {pr (ξ, I_{1}) ˙∨ pr (ξ, I_{2}) | ξ ∈ Γ}
⊆ {pr (ξ_{1}, I_{1}) ˙∨ pr (ξ_{2}, I_{2}) | ξ_{1}, ξ_{2} ∈ Γ}
= {pr (ξ_{1}, I_{1}) | ξ_{1} ∈ Γ} ⊙ {pr (ξ_{2}, I_{2}) | ξ_{2} ∈ Γ}
= pr (Γ, I_{1}) ⊙ pr (Γ, I_{2})

so that

R = [\begin{matrix}X \\ Γ \end{matrix}]

⊆ [\begin{matrix}X_{1} ˙∨ X_{2} \\ pr (Γ, I_{1}) ⊙ pr (Γ, I_{2}) \end{matrix}]

= [\begin{matrix}& X_{1} \\ pr & (Γ, I_{1}) \end{matrix}] ⊙ [\begin{matrix}& X_{2} \\ pr & (Γ, I_{2}) \end{matrix}]

= pr (R, I_{1}) ⊙ pr (R, I_{2})

(b) We have

cpj (R, I_{1}) ⊙ cpj (R, I_{2})

= (\begin{matrix}[ & \begin{matrix}X_{1} \\ x_{1} ⇝ ∀y_{2} ∈ ⊗X_{2} . x_{1} ˙∨ y_{2} ∈ Γ \end{matrix} & ] \\ ⊙[ \begin{matrix}X_{2} \\ x_{2} ⇝ ∀y_{1} ∈ ⊗X_{1} . y_{1} ˙∨ x_{2} ∈ Γ \end{matrix} ] \end{matrix})

due to 21.2.7(2)

= [ \begin{matrix}& X \\ \{ & x_{1} ˙∨ x_{2} \begin{matrix}x_{1} ∈ ⊗X_{1}, x_{2} ∈ ⊗X_{2}, \\ ∀y_{2} ∈ ⊗X_{2} . x_{1} ˙∨ y_{2} ∈ Γ, \\ ∀y_{1} ∈ ⊗X_{1} . y_{1} ˙∨ x_{2} ∈ Γ \end{matrix} & \} \end{matrix} ]

⊆ [ \begin{matrix}& X \\ \{ & x_{1} ˙∨ x_{2} \begin{matrix}x_{1} ∈ ⊗X_{1}, x_{2} ∈ ⊗X_{2}, \\ x_{1} ˙∨ x_{2} ∈ Γ \end{matrix} & \} \end{matrix} ]

= [\begin{matrix}X \\ Γ \end{matrix}]

= R

(5) For every k ∈ K let X_{k} := pr (X, I_{k}). (a) Recall, that for every ξ ∈ ⊗X holds

ξ = ˙⋁ {pr (ξ, I_{k}) | k ∈ K}

Now

Γ = { ˙⋁_{k∈K}pr (ξ, I^{k}) ξ ∈ Γ }
⊆ { ˙⋁_{k∈K}pr (ξ^{k}, I^{k}) ξ^{k} ∈ Γ for each k ∈ K }
= ⊙[{pr (ξ_{k}, I_{k}) | ξ_{k} ∈ Γ}|k ∈ K]
= ⊙[pr (Γ, I_{k}) |k ∈ K]

so that

R = [\begin{matrix}X \\ Γ \end{matrix}]

= [ \begin{matrix}˙⋁_{k∈K}X_{k} \\ ⊙[pr (Γ, I_{k}) |k ∈ K] \end{matrix} ]

= ⊙[pr (R, I_{k}) |k ∈ K]

(b) Let Y_{k} := X \ X_{k} for each k ∈ K, so that X = X_{k} ˙∨ Y_{k}. There is

\begin{matrix}\{ & [x_{k}|k ∈ K] \begin{matrix}∀k ∈ K . x_{k} ∈ ⊗X_{k} \\ ∀k ∈ K . ∀y_{k} ∈ ⊗Y_{k} . x_{k} ˙∨ y_{k} ∈ Γ \end{matrix} & \} \\ ⊆ & \{ [x_{k}|k ∈ K] \begin{matrix}∀k ∈ K . x_{k} ∈ ⊗X_{k} \\ ˙⋁ [x_{k}|k ∈ K] ∈ Γ \end{matrix} \} \end{matrix}

so that

⊙[cpj (R, I_{k}) |k ∈ K]

= ⊙ [ [ \begin{matrix}& X_{k} \\ \{ & \frac{x_{k} ∈ ⊗X_{k}}{∀y_{k} ∈ ⊗Y_{k} . x_{k} ˙∨ y_{k} ∈ Γ} & \} \end{matrix} ] k ∈ K ]

due to 21.2.7(2)

= [ \begin{matrix}& X \\ \{ & \begin{matrix}˙⋁ [x_{k}|k ∈ K] \\ ∀k ∈ K . x_{k} ∈ ⊗X_{k}, \\ ∀k ∈ K . ∀y_{k} ∈ ⊗Y_{k} . x_{k} ˙∨ y_{k} ∈ Γ \end{matrix} & \} \end{matrix} ]

⊆ [ \begin{matrix}& X \\ \{ & ˙⋁ [x_{k}|k ∈ K] \begin{matrix}∀k ∈ K . x_{k} ∈ ⊗X_{k}, \\ ˙⋁ [x_{k}|k ∈ K] ∈ Γ \end{matrix} & \} \end{matrix} ]

= [\begin{matrix}X \\ Γ \end{matrix}]

= R

(6) For every record ξ = [ξ_{i}|i ∈ I] ∈ ⊗X holds

pr (pr (ξ, J_{2}) , J_{1}) = pr (pr ([ξ_{i}|i ∈ I], J_{2}) , J_{1})
= pr ([ξ_{i}|i ∈ (I ∩ J_{2})], J_{1})
= [ξ_{i}|i ∈ ((I ∩ J_{2}) ∩ J_{1})]
= [ξ_{i}|i ∈ J_{1}]
= pr (ξ, J_{1})

It follows, that for every Σ ⊆ ⊗X,

pr (pr (Σ, J_{2}) , J_{1}) = pr (Σ, J_{1})

(a) We obtain

pr (pr (R, J_{2}) , J_{1}) = pr ([\begin{matrix}pr & (X, J_{2}) \\ pr & (Γ, J_{2}) \end{matrix}], J_{1})

= [\begin{matrix}pr & (pr (X, J_{2}) , J_{1}) \\ pr & (pr (Γ, J_{2}) , J_{1}) \end{matrix}]

= [\begin{matrix}pr & (X, J_{1}) \\ pr & (Γ, J_{1}) \end{matrix}]

= pr (R, J_{1})

(b) By applying 21.2.7(2) twice, we obtain

cpj (cpj (R, J_{2}) , J_{1})

= cpj ([ \begin{matrix}pr & (X, J_{2}) \\ y ⇝ ∀z ∈ ⊗pr (X, I \ J_{2}) . \\ y ˙∨ z ∈ Γ \end{matrix} ], J_{1})

= [ \begin{matrix}pr & (pr (X, J_{2}) , J_{1}) \\ x ⇝ ∀y′ ∈ ⊗pr (X, J_{2} \ J_{1}) . \\ ∀z ∈ ⊗pr (X, I \ J_{2}) . \\ x ˙∨ y′ ˙∨ z ∈ Γ \end{matrix} ]

= [ \begin{matrix}pr & (X, J_{1}) \\ x ⇝ ∀x′ ∈ ⊗pr (X, I \ J_{1}) . x ˙∨ x′ ∈ Γ \end{matrix} ]

= pr (R, J_{1})

(7) J_{1} and J_{2} \ J_{1} make a partition of J_{2}, so we can apply (4) as follows

(a) We have

pr (R, J_{2})

⊆ pr (pr (R, J_{2}) , J_{1}) ⊙ pr (pr (R, J_{2}) , J_{2} \ J_{1}) due to (4)(a)

= pr (R, J_{1}) ⊙ pr (R, J_{2} \ J_{1}) due to (6)(a)

⊆ pr (R, J_{1}) ⊙ ⊤Y because pr (R, J2 \ J1) ⊆ ⊤Y

(b) Let X := pr (X, J_{1}), X_{2} := pr (X, J_{2}) and Z := pr (X, I \ J_{2}), so that X_{2} = X_{1} ˙∨ Y and X = X_{2} ˙∨ Z = X_{1} ˙∨ Y ˙∨ Z. Now let ξ ∈ ⊗X_{2}, then

ξ ∈ cpj (R, J_{1}) ⊙ ⊤_{Y}

⇔ ξ ∈ \{ x \begin{matrix}x ∈ ⊗X_{1}, \\ ∀x′ ∈ ⊗(Y ˙∨ Z) . x ˙∨ x′ ∈ Γ \end{matrix} \} ⊙ ⊗Y

due to 21.2.7(2) and def. 19.3.1 of ⊤Y

⇔ ξ ∈ \{ x ˙∨ y \begin{matrix}x ∈ ⊗X_{1}, y ∈ ⊗Y, \\ ∀x′ ∈ ⊗(Y ˙∨ Z) . x ˙∨ x′ ∈ Γ \end{matrix} \}

⇔ ξ ∈ \{ x ˙∨ y \begin{matrix}x ∈ ⊗X_{1}, y ∈ ⊗Y, \\ ∀y′ ∈ ⊗Y . ∀z ∈ ⊗Z . x ˙∨ y′ ˙∨ z ∈ Γ \end{matrix} \}

⇒ ξ ∈ \{ x ˙∨ y \begin{matrix}x ∈ ⊗X_{1}, y ∈ ⊗Y, \\ ∀z ∈ ⊗Z . z ˙∨ y ˙∨ z ∈ Γ \end{matrix} \}

⇔ ξ ∈ {u ∈ ⊗X_{2} | ∀z ∈ ⊗Z . x ˙∨ z ∈ Γ}

⇔ ξ ∈ cpj (R, J_{2}) due to 21.2.7(2) again

and so

cpj (R, J_{1}) ⊙ ⊤_{Y} ⊆ cpj (R, J_{2})

(8) We put X_{1} := pr (X, J_{1}), X_{2} := pr (X, J_{2}) and Y := pr (X, J_{2} \ J_{1}), so X_{2} = X_{1} ˙∨ Y.

(a) There is

pr (R, J_{2}) ⊑ pr (R, J_{1})

⇔ pr (R, J_{2}) ∥ X2 ⊆ pr (R, J_{1}) ∥ X2 def. 20.2.2 of ⊑

⇔ pr (R, J_{2}) ⊆ pr (R, J_{1}) ∥ Y due to 20.1.3(1)

⇔ pr (R, J_{2}) ⊆ pr (R, J_{1}) ⊙ ⊤Y due to ??(3)

and the last statement is proved to be true in (7)(a).

(b) Similar to (a) we have

cpj (R, J_{1}) ≡ cpj (R, J_{1}) ∥ Y
= cpj (R, J_{1}) ⊙ ⊤_{Y}
⊆ cpj (R, J_{2})

(9) (a) and (b) are immediate consequences of (1) and (8):

R = pr (R, I) ⊑ pr (R, J)
R = cpj (R, I) ⊒ cpj (R, J)

⊑ is transitive, so (a) and (b) entail cpj (R, J) ⊑ pr (R, J). And because both sides have the same resulting schema, cpj (R, J) ⊆ pr (R, J).

(10) So let J ⊆ I, Y := pr (X, J) and S = [Y, Σ] be given.

(a) We have

R ⊑ S

⇔ R ∥ X ⊆ S ∥ X def. 20.2.2 of ⊑

⇔ R ⊆ S ⊙ ⊤X\Y due to 20.1.3

⇔ [\begin{matrix}X \\ Γ \end{matrix}] ⊆ [\begin{matrix}X \\ Σ ⊙ ⊗(X \ Y) \end{matrix}]

⇔ ∀x ∈ ⊗X . (x ∈ Γ → x ∈ Σ ⊙ ⊗(X \ Y))

⇔ (\begin{matrix}∀y ∈ ⊗Y . ∀z ∈ ⊗(X \ Y) . \\ (y ˙∨ z ∈ Γ → y ˙∨ z ∈ Σ ⊙ ⊗(X \ Y)) \end{matrix})

⇔ ∀y ∈ ⊗Y . (∃z ∈ ⊗(X \ Y) . y ˙∨ z ∈ Γ) → y ∈ Σ

because X is proper and so is X \ Y

⇔ ∀y ∈ ⊗Y . (y ∈ pr (R, J) → y ∈ S)

⇔ pr (R, J) ⊆ S

(b) Similar to (a) we obtain

S ⊑ R

⇔ [\begin{matrix}Y \\ Σ ⊙ ⊗(X \ Y) \end{matrix}] ⊆ [\begin{matrix}X \\ Γ \end{matrix}]

⇔ ∀x ∈ ⊗X . (x ∈ Σ ⊙ ⊗(X \ Y) → x ∈ Γ)

⇔ (\begin{matrix}∀y ∈ ⊗Y . ∀z ∈ ⊗(X \ Y) . \\ (y ˙∨ z ∈ Γ ⊙ ⊗(X \ Y) → y ˙∨ z ∈ Γ) \end{matrix})

⇔ ∀y ∈ ⊗Y . (y ∈ Σ → ∀z ∈ ⊗(X \ Y) . y ˙∨ z ∈ Γ)

⇔ [\begin{matrix}Y \\ Σ \end{matrix}] ⊆ [\begin{matrix}Y \\ y ⇝ ∀z ∈ ⊗(X \ Y) . y ˙∨ z ∈ Γ \end{matrix}]

⇔ S ⊆ cpj (R, J) due to 21.2.7(2)

(11) Now J ⊆ I and S = [X, Σ].

(a) R ⊆ S means that Γ ⊆ Σ, and so

pr (R, J) = [\begin{matrix}pr & (X, J) \\ \{pr (x, J) | x ∈ Γ\} \end{matrix}]

⊆ [\begin{matrix}pr & (X, J) \\ \{pr (x, J) | x ∈ Σ\} \end{matrix}]

= pr (S, J)

(b) R ⊆ S is equivalent to ¬S ⊆ ¬R. Therefore, pr (¬S, J) ⊆ pr (¬R, J), according to (a). And applying the same law again gives us ¬pr (¬R, J) ⊆ ¬pr (¬S, J). In terms of definition 21.2.2, this is cpj (R, J) ⊆ cpj (S, J).

21.3.5 Remark

The schema X in lemma 21.3.3 was supposed to be proper. For some of the statements this is essential.

Suppose, X is not proper, e.g.

X := [ \begin{matrix}a ↦ & ℕ \\ b ↦ & ∅ \end{matrix} ]

For such an improper schema the cartesian product ⊗X is empty and Rel(X) has only one member R = [X, ∅] with R = ⊥_{X} = ⊤_{X} and ¬R = R (see 19.5.16).

But Y := pr (X, {a}) = [a ↦ ℕ] is a proper schema with ⊗Y = {[a ↦ n] | n ∈ ℕ} ≠ ∅ and ⊥_{Y} ≠ ⊤_{Y} . The projection and coprojection of R onto {a} are given by

pr (R, \{a\}) = [\begin{matrix}pr & (X, \{a\}) \\ pr & (∅, \{a\}) \end{matrix}]

= [Y, ∅]
= ⊥_{Y}
cpj (R, {a}) = ¬pr (¬R, {a})
= ¬pr (R, {a})
= ¬⊥_{Y}
= ⊤_{Y}

so that

cpj (⊥_{X}, {a}) ⊈ pr (⊥_{X}, {a})

in violation with 21.3.3(9)(c).

21.3.6 Lemma

Let X = [X_{i}|i ∈ I] be a proper schema and R, S ∈ Prel(X). If K := @(R) ∩ @(S) then

R ⊑ S iff pr (R, K) ⊆ cpj (S, K)

21.3.7 Proof of 21.3.6

Recall from 5.5.11, that for all variables x, y, class symbols C, D, and formulas φ, ψ holds: (a)If x does not occur free in ψ and y does not occur free in ϕ, then

∀x ∈ C . ∀y ∈ D . (φ → ψ) ⇔ (∃x ∈ C . φ) → (∀y ∈ D . ψ)

For the full proof of the lemma, let us put

J_{1} := @(R) Y_{1} := x(R) Γ_{1} := gr(R)
J_{2} := @(S) Y_{2} := x(S) Γ_{2} := gr(S)

so that K = J_{1} ∩ J_{2}. Furthermore we put

Z := Y_{1} ∧ Y_{2}

and

\begin{matrix}J′_{1} := J_{1} \ K & Y′_{1} := Y_{1} \ Z \\ J′_{2} := J_{2} \ K & Y′_{2} := Y_{2} \ Z \end{matrix}

The subclasses of I and the projections of X defined so far are displayed in the following two diagrams:

I J_{1} J′_{1}  J_{2} J′_{2} K  ^{X Y_{1} Y′_{1}  Y_{2} Y′_{2} Z}

We derive

R ⊑ S

⇔ [Y_{1}, Γ_{1}] ⊑ [Y_{2}, Γ_{2}]

⇔ [\begin{matrix}Y_{1} ˙∨ Y′_{2} \\ Γ_{1} ⊙ ⊗Y′_{2} \end{matrix}] ⊆ [\begin{matrix}Y_{2} ˙∨ Y′_{1} \\ Γ_{2} ⊙ ⊗Y′_{1} \end{matrix}] due to 20.1.3

⇔ Γ_{1} ⊙ ⊗Y′_{2} ⊆ Γ_{2} ⊙ ⊗Y′_{1}

⇔ (\begin{matrix}∀x ∈ ⊗(Y_{1} ∨ Y_{2}) . \\ (x ∈ (Γ_{1} ⊙ ⊗Y′_{2}) → x ∈ (Γ_{2} ⊙ ⊗Y′_{1})) \end{matrix})

⇔ (\begin{matrix}∀z ∈ ⊗Z . ∀y_{1} ∈ ⊗Y′_{1} . ∀y_{2} ∈ ⊗Y′_{2} . \\ ( & \begin{matrix}(z ˙∨ y_{1} ˙∨ y_{2}) ∈ (Γ_{1} ⊙ ⊗Y′_{2}) \\ → (z ˙∨ y_{1} ˙∨ y_{2}) ∈ (Γ_{2} ⊙ ⊗Y′_{1}) \end{matrix} & ) \end{matrix})

because ⊗(Y1 ∨ Y2) = (⊗Z) ⊙ (⊗Y ′ 1) ⊙ (⊗Y ′ 2)

⇔ (\begin{matrix}∀z ∈ ⊗Z . ∀y_{1} ∈ ⊗Y′_{1} . ∀y_{2} ∈ ⊗Y′_{2} . \\ ((z ˙∨ y_{1}) ∈ Γ_{1} → (z ˙∨ y_{2}) ∈ Γ_{2}) \end{matrix})

because (z ˙∨ y1 ˙∨ y2) ∈ (Γ1 ⊙ ⊗Y ′ 2)

iff (z ˙∨ y1) ∈ Γ1 and (z ˙∨ y1 ˙∨ y2) ∈ (Γ2 ⊙ ⊗Y ′ 1)

iff (z ˙∨ y2) ∈ Γ2

⇔ ∀z ∈ ⊗Z . (\begin{matrix}(∃y_{1} ∈ ⊗Y′_{1} . (z ˙∨ y_{1}) ∈ Γ_{1}) \\ → (∀y_{2} ∈ ⊗Y′_{2} . (z ˙∨ y_{2}) ∈ Γ_{2}) \end{matrix})

due to (a) above

⇔ (\begin{matrix}\{z ∈ ⊗Z | ∃y_{1} ∈ ⊗Y′_{1} . (z ˙∨ y_{1}) ∈ Γ_{1}\} \\ ⊆ \{z ∈ ⊗Z | ∀y_{2} ∈ ⊗Y′_{2} . (z ˙∨ y_{2}) ∈ Γ_{2}\} \end{matrix})

⇔ (\begin{matrix}[ & \begin{matrix}Z \\ z ⇝ ∃y_{1} ∈ ⊗Y′_{1} . (z ˙∨ y_{1}) ∈ Γ_{1} \end{matrix} & ] \\ ⊆ [\begin{matrix}Z \\ z ⇝ ∀y_{2} ∈ ⊗Y′_{2} . (z ˙∨ y_{2}) ∈ Γ_{2} \end{matrix}] \end{matrix})

⇔ pr (R, K) ⊆ cpj (R, K) due to 21.2.7

21.3.8 Lemma

Let X = [X_{i}|i ∈ I] be a proper schema, J ⊆ I and Y := pr (X, J).

(1) If R ∈ Rel(X) then (a) pr (R, J) = ⋂{S ∈ Rel(Y) | R ⊑ S}

(b) cpj (R, J) = ⋃{S ∈ Rel(Y) | S ⊑ R}

(2) If R ∈ Rel(Y) then (a) ⋃{S ∈ Rel(X) | pr (S, J) ⊆ R} = R ⊙ ⊤_{(X\Y )}

(b) ⋂{S ∈ Rel(X) | R ⊆ cpj (S, J)} = R ⊙ ⊤_{(X\Y )}

21.3.9 Proof of 21.3.8

(1) Let R = [X, Γ].

(a) Let R′ := pr (R, J) and S := {S ∈ Rel(Y) | R ⊑ S}. So we need to proof that R′ = ⋂ S. There is R′ ∈ Rel(Y) and R ⊑ pr (R, J), due to 21.3.3(9)(a), so R′ ∈ S. If S′ ∈ S, then R ⊑ S implies R′ ⊆ S, due to 21.3.3(10)(a). Thus R′ is the minimal element of S (with respect to the partial order ⊆ on Rel(Y)) and therefore R′ = ⋂ S.

(b) Similar to (a) we proof R′ = ⋃ S, where this time R′ := cpj (R, J) and S := {S ∈ Rel(Y) | S ⊑ R}. R′ ∈ Rel(Y) and cpj (R, J) ⊑ R, due to 21.3.3(9)(b), so R′ ∈ S. If S′ ∈ S, then S ⊑ R implies S ⊆ R′, due to 21.3.3(10)(b). Thus R′ is the (⊆–) maximal element of S and R′ = ⋃ S.

(2) Now let R = [Y, Γ].

(a) Let Γ′ := Γ ⊙ ⊗(X \ Y) and S := {Σ | Σ ∈ ⊗X, pr (Σ, J) ⊆ Γ}. There is Γ′ ∈ S, because Γ′ ⊆ ⊗(Y ˙∨ (X \ Y)) = ⊗X and

pr (Γ′, J) = {pr (ξ, J) | ξ ∈ (Γ ⊙ ⊗(X \ Y)}
= {pr (ξ_{1} ˙∨ ξ_{2}, J) | ξ_{1} ∈ Γ, ξ_{2} ∈ ⊗(X \ Y)}
= {ξ_{1} | ξ_{1} ∈ Γ, ξ_{2} ∈ ⊗(X \ Y)}
= Γ ⊆ Γ

Furthermore, Σ ∈ S implies Σ ⊆ Γ′, because

pr (Σ, J) = {υ ∈ ⊗Y | ∃ζ ∈ ⊗(X \ Y) . υ ˙∨ ζ ∈ Σ}

so that pr (Σ, J) ⊆ Γ implies Σ ⊆ Γ ⊙ ⊗(X \ Y) = Γ′. From Γ ∈ S and (Σ ∈ S implies Σ ⊆ Γ′) we derive that Γ′ = ⋃ S. So we obtain

⋃{S ∈ Rel(X) | pr (S, J) ⊆ R}

= ⋃ \{ [\begin{matrix}X \\ Σ \end{matrix}] pr ([\begin{matrix}X \\ Σ \end{matrix}], J) ⊆ [\begin{matrix}Y \\ Γ \end{matrix}] \}

= ⋃ \{ [\begin{matrix}X \\ Σ \end{matrix}] Σ ⊆ ⊗X, pr (Σ, J) ⊆ Γ \}

= [\begin{matrix}X \\ ⋃\{Σ | Σ ⊆ ⊗X, pr (Σ, J) ⊆ Γ\} \end{matrix}]

= [\begin{matrix}X \\ Γ ⊙ ⊗(X \ Y) \end{matrix}] because Γ′ = ⋃ S

= [\begin{matrix}Y ˙∨ (X \ Y) \\ Γ ⊙ ⊗(X \ Y) \end{matrix}]

= R ⊙ ⊤(X\Y ) due to 20.1.3

(b) Proof is similar to (a).

21.3.10 Lemma

Let X = [X|i ∈ I] be a proper schema, J ⊆ I and R = {R_{k} | k ∈ K} ⊆ Rel(X), then

(1) pr (⋂ R, J) ⊆ ⋂_{k∈K}pr (R_{k}, J)

(2) pr (⋃ R, J) = ⋃_{k∈K}pr (R_{k}, J)

(3) cpj (⋂ R, J) = ⋂_{k∈K}cpj (R_{k}, J)

(4) cpj (⋃ R, J) ⊇ ⋃_{k∈K}cpj (R_{k}, J)

21.3.11 Proof of 21.3.10

Let Y := pr (X, J) and R_{k} = [X, Γ_{k}], for each k ∈ K.

(1) For every k ∈ K holds ⋂ R ⊆ R_{k}. Applying 21.3.3(11)(a), it follows that pr (⋂ R, J) ⊆ pr (R_{k}, J), for every k ∈ K, so that pr (⋂ R, J) ⊆ ⋂{pr (R_{k}, J) | k ∈ K}.

(2) We have

pr (⋃ R, J)

= pr ([\begin{matrix}X \\ ⋃_{k∈K}Γ_{k} \end{matrix}], J) def. 19.5.3 of ⋃

= [\begin{matrix}Y \\ \{pr (x, J) | x ∈ ⋃\{Γ_{k} | k ∈ K\}\} \end{matrix}] def. 21.2.2

= [\begin{matrix}Y \\ ⋃_{k∈K}\{pr (x, J) | x ∈ Γ_{k}\} \end{matrix}]

= ⋃_{k∈K}[\begin{matrix}& Y \\ pr & (Γ_{k}, J) \end{matrix}]

= ⋃_{k∈K}pr (R_{k}, J)

(3) We have

cpj (⋂ R, J)

= ¬pr (¬ ⋂ R, J) def. 21.2.2 of the coprojection

= ¬pr ( ⋃_{k∈K}(¬R_{k}), J) de Morgan’s law

= ¬ ⋃_{k∈K}pr (¬R_{k}, J) due to (2)

= ⋂_{k∈K}¬pr (¬R_{k}, J) de Morgan’s law

= ⋂_{k∈K}cpj (R_{k}, J) again def. 21.2.2

(4) For every k ∈ K holds R_{k} ⊆ ⋃ R. Applying 21.3.3(11)(b), it follows that cpj (R_{k}, J) ⊆ cpj (⋃ R, J), for every k ∈ K, so that ⋃{cpj (R_{k}, J) | k ∈ K} ⊆ cpj (⋃ R, J).

21.3.12 Lemma

Let X = [X_{i}|i ∈ I] be a proper schema, R = [X, Γ] a relation and J ⊆ I.

(1) pr (¬R, J) = ¬cpj (R, J)

(2) cpj (¬R, J) = ¬pr (R, J)

21.3.13 Proof of 21.3.12

(1) We have

pr (¬R, J)

= ¬¬pr (¬R, J) due to 19.4.6 = ¬cpj (¬¬R, J) def. 21.2.2

= ¬cpj (R, J) due to 19.4.6, again

(2) Similarly, cpj (¬R, J) = ¬pr (¬¬R, J) = ¬pr (R, J)

21.3.14 Lemma

For every proper schema X = [X_{i}|i ∈ I] and every J ⊆ I holds:

(1) pr (⊥_{X}, J) = ⊥_{pr(X,J)}

(2) cpj (⊥_{X}, J) = ⊥_{pr(X,J)}

(3) pr (⊤_{X}, J) = ⊤_{pr(X,J)}

(4) cpj (⊤_{X}, J) = ⊤_{pr(X,J)}

21.3.15 Proof of 21.3.14

Let Y := pr (X, J). We first proof (1) and (3), and use the result in (2) and (4) by means of definition 21.2.2, (i.e. cpj (◯ 1 , ◯ 2 ) = ¬pr (¬◯ 1 , ◯ 2 )).

(1) pr (⊥_{X}, J) = pr ([\begin{matrix}X \\ ∅ \end{matrix}], J) = [\begin{matrix}pr & (X, J) \\ pr & (∅, J) \end{matrix}] = [\begin{matrix}Y \\ ∅ \end{matrix} ] = ⊥_{Y}

(3) pr (⊤_{X}, J) = pr ([\begin{matrix}X \\ ⊗X \end{matrix}], J) = [\begin{matrix}pr & (X, J) \\ pr & (⊗X, J) \end{matrix}] =

[\begin{matrix}Y \\ ⊗Y \end{matrix} ] = ⊤_{Y}

(2) cpj (⊥_{X}, J) = ¬pr (¬⊥_{X}, J) = ¬pr (⊤_{X}, J) = ¬⊤_{Y} = ⊥_{Y}

(3) cpj (⊤_{X}, J) = ¬pr (¬⊤_{X}, J) = ¬pr (⊥_{X}, J) = ¬⊥_{Y} = ⊤_{Y}

21.3.16 Lemma

Let R = {R_{k} | k ∈ K} be a pairwise distinct relation class and [J_{k}|k ∈ K] a schema with J_{k} ⊆ @(R_{k}) for each k ∈ K. So [J_{k}|k ∈ K] is a class partition of the class J := ⋃_{k∈K} J_{k}. Then

(1) pr (⊙R, J) = ⊙_{k∈K}pr (R_{k}, J_{k})

(2) cpj (⊙R, J) = ⊙_{k∈K}cpj (R_{k}, J_{k})

21.3.17 Proof of 21.3.16

For each k ∈ K let R_{k} = [X_{k}, Γ_{k}] and I_{k} := @(R_{k}), so J_{k} ⊆ I_{k}. R being pairwise distinct is saying that I_{l} ∩ I_{m} = ∅ and thus J_{l} ∩ J_{m} = ∅, for all l, m ∈ K with l ≠ m. If we put X := ˙⋁_{k∈K}X_{k} and Y := pr (X, J), then

Y = pr ( ˙⋁_{k∈K}X_{k}, ⋃_{k∈K}J_{k}) = ˙⋁_{k∈k}pr (X_{k}, J_{k})

according to 16.2.10(2). For each ξ ∈ ⊗X there is

ξ = ˙⋁_{k∈K}pr (ξ, J_{k})
= ˙⋁_{k∈K} (pr (ξ, J_{k}) ˙∨ pr (ξ, I_{k} \ J_{k}))

= \underbrace{( ˙⋁_{k∈K}pr (ξ, J_{k}))}_{∈⊗Y} ˙∨ \underbrace{( ˙⋁_{k∈K}pr (ξ, I_{k} \ J_{k}))}_{∈⊗(X\Y )}

So for ⊙_{k∈K}Γ_{k} ⊆ ⊗X we have

pr ( ⊙_{k∈K}Γ_{k}, J) = {pr (ξ, J) | ξ ∈ ⊙_{k∈K}Γ_{k}}
= { ˙⋁_{k∈K}pr (ξ^{k}, J^{k}) [ξ^{k}|k ∈ K] ∈ ⊗_{k∈K}Γ^{k} }
= ⊙_{k∈K}pr (Γ_{k}, J_{k})

(1) We have

pr (⊙R, J)

= pr ([ \begin{matrix}˙⋁_{k∈K}X_{k} \\ ⊙_{k∈K}Γ_{k} \end{matrix} ], J)

= [ \begin{matrix}pr & (X, J) \\ pr & ( ⊙_{k∈K}Γ_{k}, J) \end{matrix} ]

= [ \begin{matrix}& Y \\ \{ & pr (ξ, J) ξ ∈ ⊙_{k∈K}Γ^{k} & \} \end{matrix} ]

= [ \begin{matrix}& Y \\ \{ & ˙⋁_{k∈K}pr (ξ^{k}, J) [ξ^{k}|k ∈ K] ∈ ⊗_{k∈K}Γ^{k} & \} \end{matrix} ]

= [ \begin{matrix}& Y \\ \{ & ˙⋁_{k∈K}υ^{k} [υ^{k}|k ∈ K] ∈ ⊗_{k∈K}pr (Γ^{k}, J^{k}) & \} \end{matrix} ]

= [ \begin{matrix}˙⋁_{k∈K} & pr & (X_{k}, J_{k}) \\ ⊙_{k∈K} & pr & (Γ_{k}, J_{k}) \end{matrix} ]

= ⊙_{k∈K}pr (R_{k}, J_{k})

(2) We have

cpj (⊙R, J)

= cpj ([\begin{matrix}X \\ ⊙_{k∈K}Γ_{k} \end{matrix}], J)

= [ \begin{matrix}& Y \\ \{ & υ ∈ ⊗Y ∀υ′ ∈ ⊗(X \ Y) . υ ˙∨ υ′ ∈ ⊙_{k∈K}Γ^{k} & \} \end{matrix} ]

due to 21.2.7(2)

= [ \begin{matrix}& Y \\ \{ & \begin{matrix}υ ∈ ⊗ ( ˙⋁_{k∈K}pr (X_{k}, J_{k})) \\ ∀υ′ ∈ ⊗ ( ˙⋁_{k∈K}pr (X_{k}, I_{k} \ J_{k})) . \\ υ ˙∨ υ′ ∈ ⊙_{k∈K}Γ_{k} \end{matrix} & \} \end{matrix} ]

= [ \begin{matrix}⊙_{k∈K} & pr & (X_{k}, J_{k}) \\ \{ & ˙⋁_{k∈K}υ_{k} \begin{matrix}[υ_{k}|k ∈ K] ∈ ⊗_{k∈K} (⊗pr (X_{k}, J_{k})) , \\ ∀[υ′_{k}|k ∈ K] ∈ ⊗_{k∈K} (⊗pr (X_{k}, I_{k} \ J_{k})) . \\ ( ˙⋁_{k∈K}υ_{k}) ˙∨ ( ˙⋁_{k∈K}υ′_{k}) ∈ ⊙_{k∈K}Γ_{k} \end{matrix} & \} \end{matrix} ]

= ⊙_{k∈K}[ \begin{matrix}pr & (X_{k}, J_{k}) \\ \{ & \begin{matrix}υ_{k} ∈ ⊗pr (X_{k}, J_{k}) \\ ∀υ′_{k} ∈ ⊗pr (X_{k}, I_{k} \ J_{k}) . \\ υ_{k} ˙∨ υ′_{k} ∈ Γ_{k} \end{matrix} & \} \end{matrix} ]

= ⊙_{k∈K}cpj (R_{k}, J_{k}) due to 21.2.7(2)

21.4 (Attribute) Eliminations

21.4.1 Definition

Let X = [X_{i}|i ∈ I] be a schema and R ∈ Prel(X).

For every J ⊆ I we define

R ⇂ J := pr (R, @ (R) \ J)

the \underline{(general) supremum elimination} of J from R, or simply the \underline{upper} R \underline{without} J

R ↾ J := cpj (R, @ (R) \ J)

the \underline{(general) infimum elimination} of J from R, or simply the \underline{lower} R \underline{without} J

For every j ∈ I we define

R ⇂ j := R ⇂ {j}

the \underline{(singular) supremum elimination} of j from R, or simply the \underline{upper} R \underline{without} j

R ↾ j := R ↾ {j}

the \underline{(singular) infimum elimination} of j from R, or simply the \underline{lower} R \underline{without} j

21.4.2 Remark

While projection and coprojection specify the remaining attributes, supremum and infimum eliminations specify the attributes to be removed. From a constructive point of view, there is not much news here.

Eliminations are also similar to reductions. If X = [X_{i}|i ∈ I] is a schema, R = [X, Γ] is a relation and J a class, then

(1) R ⇂ J = R ⇓ pr (X, I ∩ J)

(2) R ↾ J = R ⇑ pr (X, I ∩ J)

Reductions will be defined and investigated in 21.6. But they were already introduced in 21.1.1. By means of (1) and (2) the ideas and table methods from 21.1.1 can be applied to eliminations as well. So we don’t bother with examples to illustrate the new concepts here and move on to list and proof some important properties. However similar the eliminations are to (co)projections and reductions, there are some specific algebraic specialities for eliminations which are worth to be mentioned and require a proof.

21.5 Properties of eliminations

21.5.1 Lemma basic properties general eliminations

Let X = [X_{i}|i ∈ I] be proper schema, R ∈ Prel(X), and J ⊆ I. Then

(1) x(R ⇂ J) = pr (x(R), @ (R) \ J)

(2) x(R ↾ J) = pr (x(R), @ (R) \ J)

(3) @(R ⇂ J) = @ (R) \ J

(4) @(R ↾ J) = @ (R) \ J

(5) gr(R ⇂ J) = pr (gr(R), @ (R) \ J)

(6) gr(R ↾ J)

= ⊗pr (X, @ (R) \ J) \ pr (⊗X \ gr(R), @ (R) \ J)

21.5.2 Proof of 21.5.1

Let R = [Y, Γ] and Y = [Y_{l}|l ∈ L], so that x(R) = Y, @ (R) = dom(Y) = L, and gr(R) = Γ.

(1) Schema of supremum elimination:

x(R ⇂ J)

= x(pr (R, L \ J)) def. 21.4.1 of sup.elim.

= x ([\begin{matrix}pr & (Y, L \ J) \\ pr & (Γ, L \ J) \end{matrix}]) def. 21.2.2 of projection

= pr (Y, L \ J)

(2) Schema of infimum elimination: similar proof..

(3) Attribute class of supremum elimination:

@(R ⇂ J)

= dom(x(R ⇂ J)) def. 17.2.2 of attribute class

= dom(pr (Y, L \ J)) due to (1)

= L \ J

(4) Attribute class of infimum elimination: similar proof.

(5) Graph of supremum elimination:

gr(R ⇂ J)

= gr(pr (R, L \ J)) def. 21.4.1 of sup.elim.

= gr ([\begin{matrix}pr & (Y, L \ J) \\ pr & (Γ, L \ J) \end{matrix}]) def. 21.2.2 of projection

= pr (Γ, L \ J)

(6) Graph of infimum elimination:

gr(R ↾ J)

= gr(cpj (R, L \ J)) def. 21.4.1 of inf.elim.

= gr ([\begin{matrix}pr & (Y, L \ J) \\ ⊗pr (Y, L \ J) \ pr (⊗Y \ Γ, L \ J) \end{matrix}])

due to 21.2.5

= ⊗pr (Y, L \ J) \ pr (⊗Y \ Γ, L \ J)

21.5.3 Lemma properties of general eliminations

Let X = [X_{i}|i ∈ I] be proper schema, R, S ∈ Prel(X), and J, K ⊆ I. Then

(1) R ⇂ J ⇂ K = R ⇂ (J ∪ K) (accumulation of sup.elim.)

(2) R ↾ J ↾ K = R ↾ (J ∪ K) (accumulation of inf.elim.)

(3) R ⇂ J ⇂ K = R ⇂ K ⇂ J (commutativity of sup.elim.)

(4) R ↾ J ↾ K = R ↾ K ↾ J (commutativity of inf.elim.)

(5) R ⇂ J ⇂ J = R ⇂ J (idempotency of sup.elim.)

(6) R ↾ J ↾ J = R ↾ J (idempotency of inf.elim.)

(7) R ⇂ ∅ = R (empty sup.elim.)

(8) R ↾ ∅ = R (empty inf.elim.)

(9) R ⇂ J = R ⇂ (@ (R) ∩ J) (essential att. of sup.elim.)

(10) R ↾ J = R ↾ (@ (R) ∩ J) (essential att. of inf.elim.)

(11) R ⇂ J = R iff @ (R) ∩ J = ∅ (neutral sup.elim.)

(12) R ↾ J = R iff @ (R) ∩ J = ∅ (neutral inf.elim.)

(13) J ⊆ K implies R ⇂ J ⊒ R ⇂ K (antitony of sup.elim.)

(14) J ⊆ K implies R ⇂ J ⊑ R ⇂ K (isotony of inf.elim.)

(15) R ⇂ J ⊒ R (supervalence of sup.elim)

(16) R ↾ J ⊑ R (subvalence of inf.elim.)

(17) R ↾ J ⇂ K ⊆ R ⇂ K ↾ J (non-commutativity of elim.)

(18) R ⊑ S implies R ⇂ J ⊑ S ⇂ J (isotony of sup.elim.)

(19) R ⊑ S implies R ↾ J ⊑ S ↾ J (isotony of inf.elim.)

21.5.4 Proof of 21.5.3

Let R = [Y, Γ] and Y = [Y_{l}|l ∈ L], so that x(R) = Y and @ (R) = dom(Y) = L.

(1) Accumulation of supremum elimiation:

R ⇂ J ⇂ K

= pr (R, L \ J) ⇂ K def. 21.4.1 = pr (pr (R, L \ J) , (L \ J) \ K) def. 21.4.1 = pr (R, (L \ J) \ K) due to 21.3.3(6)(a)

= pr (R, L \ (J ∪ K))

= R ⇂ J ∪ K def. 21.4.1, again

(2) Accumulation of infimum elimination: similar proof.

(3) Commutativity of supremum elimination:

R ⇂ J ⇂ K = R ⇂ (J ∪ K) due to (1) = R ⇂ (K ∪ J)

= R ⇂ K ⇂ J due to (1), again

(4) Commutativity of infimum elimination: similar proof.

(5) Idempotency of supremum elimination:

R ⇂ J ⇂ J

= R ⇂ J ∪ J due to (1)

= R ⇂ J

(6) Idempotency of infimum elimination: similar proof.

(7) Empty supremum elimination:

R ⇂ ∅

= pr (R, L \ ∅) def. 21.4.1

= pr (R, L)

= R due to 21.3.3(1)(a)

(8) Empty infimum elimination: similar proof.

(9) Essential attributes of supremum elimination: R ⇂ J

= pr (R, L \ J) def. 21.4.1

= pr (R, L \ (L ∩ J))

= R ⇂ L ∩ J def. 21.4.1, again

(10) Essential attributes of infimum elimination: similar proof.

(11) Neutral supremum eliminations: If L ∩ J ≠ ∅, then L \ J ≠ L, so x(R) = L ≠ L \ J = x(R ⇂ J) and R ≠ R ⇂ J. On the other hand, if L ∩ J = ∅, then R ⇂ J = R ⇂ L ∩ J = R ⇂ ∅ = R, due to (9) and (7).

(12) Neutral infimum eliminations: similar proof.

(13) Antitony of supremum elimination: If J ⊆ K, then L \ J ⊇ L \ K, so that

R ⇂ J

= pr (R, L \ J)

⊒ pr (R, L \ K) due to 21.3.3(8)(a)

= R ⇂ K

(14) Isotony of infimum elimination: similar proof.

(15) Supervalence of supremum elimination: R ⇂ J = pr (R, L \ J) ⊒ R, due to 21.3.3(9)(a).

(16) Subvalence of infimum elimination: similar proof.

(17) Recall, that R = [Y, Γ] with Y = [Y_{l}|l ∈ L]. We partition L into the following four distinct classes:

\begin{aligned}L′ & := & L \ (J ∪ K) \\ L′′ & := & L ∩ J ∩ K \\ J′ & := & (L ∩ J) \ K \\ K′ & := & (K ∩ L) \ J \end{aligned} [figure: L; J; K; L′; J′; K′; L′′]

Accordingly, we partition Y into four distinct schemas:

Y′ := pr (Y, L′)
Y′′ := pr (Y, L′′)
U := pr (Y, J′)
V := pr (Y, K′)
[figure: Y; Y′; U; V; Y′′]

We will use the following general logical rules (see. 5.5.11). If v and w are variables, C and D class symbols, and φ a formula, then

(a) ∃v ∈ C . ∀w ∈ D . φ ⇒ ∀w ∈ D . ∃v ∈ C . φ

(b) If C denotes a non–empty class, then ∀v ∈ C . φ ⇒ ∃v ∈ C . φ We now give the full proof:

R ↾ J ⇂ K

= pr (cpj (R, L′ ∪ K′) , L′) def 21.4.1

= pr ([ \begin{matrix}Y′ ˙∨ V \\ ξ ⇝ ∀ζ ∈ ⊗(U ˙∨ Y′′) . ξ ˙∨ ζ ∈ Γ \end{matrix} ], L′)

due to 21.2.7(2)

= [ \begin{matrix}Y′ \\ y′ ⇝ ∃v ∈ ⊗V . ∀ζ ∈ ⊗(U ˙∨ Y′′) . y′ ˙∨ v ˙∨ ζ ∈ Γ \end{matrix} ]

due to 21.2.7(1)

= [ \begin{matrix}Y′ \\ y′ ⇝ ∃v ∈ ⊗V . ∀u ∈ ⊗U . ∀y′′ ∈ ⊗Y′′ . \\ y′ ˙∨ v ˙∨ u ˙∨ y′′ ∈ Γ \end{matrix} ]

due to 16.6.5(4)

⊆ [ \begin{matrix}Y′ \\ y′ ⇝ ∀u ∈ ⊗U . ∃v ∈ ⊗V . ∀y′′ ∈ ⊗Y′′ . \\ y′ ˙∨ u ˙∨ v ˙∨ y′′ ∈ Γ \end{matrix} ]

due to (a)

⊆ [ \begin{matrix}Y′ \\ y′ ⇝ ∀u ∈ ⊗U . ∀v ∈ ⊗V . ∃y′′ ∈ ⊗Y′′ . \\ y′ ˙∨ u ˙∨ v ˙∨ y′′ ∈ Γ \end{matrix} ]

due to (b), with ⊗Y ′′ ≠ ∅

⊆ [ \begin{matrix}Y′ \\ y′ ⇝ ∀u ∈ ⊗U . ∃ζ ∈ ⊗(V ˙∨ Y′′) . \\ y′ ˙∨ u ˙∨ ζ ∈ Γ \end{matrix} ]

due to 16.6.5(4),again

= cpj ([ \begin{matrix}Y′ ˙∨ V \\ ξ ⇝ ∃ζ ∈ ⊗(V ˙∨ Y′′) . ξ ˙∨ ζ ∈ Γ \end{matrix} ], L′)

due to 21.2.7(2), again

= cpj (pr (R, L′ ∪ J′) , L′) due to 21.2.7(1), again = R ⇂ K ↾ J def. 21.4.1, again

(18) Recall, that Y = x(R) and L = @(R). So let Y′ = x(S) and L′ = @(S).

R ⊑ S ⇔ R ∥ (Y ∨ Y′) ⊆ S ∥ (Y ∨ Y′)

def. 20.2.2

⇔ R ⊙ ⊤_{(Y ′\Y )} ⊆ S ⊙ ⊤_{(Y \Y ′)}

due to 20.1.3(3)

⇒ ( ; \begin{matrix}pr & (R ⊙ ⊤_{(Y ′\Y )}, (L ∪ L′) \ J) \\ ⊆ pr (S ⊙ ⊤_{(Y \Y ′)}, (L ∪ L′) \ J) \end{matrix} ; )

due to 21.3.3(11)

⇔ ( pr (R, L \ J) ⊙ pr (⊤_{(Y ′\Y )}, L′ \ (L ∪ J)) ⊆ pr (S, L′ \ J) ⊙ pr (⊤_{(Y \Y ′)}, L \ (L′ ∪ J)) )

due to 21.3.16(1)

⇔ (\begin{matrix}pr (R, L \ J) ⊙ ⊤_{pr(Y ′,L′\(L∪J))} \\ ⊆ pr (S, L′ \ J) ⊙ ⊤_{pr(Y,L\(L′∪J))} \end{matrix})

due to 21.3.14(3)

⇔ (\begin{matrix}(R ⇂ J) ⊙ ⊤_{pr(Y ′,L′\(L∪J))} \\ ⊆ (S ⇂ J) ⊙ ⊤_{pr(Y,L\(L′∪J))} \end{matrix})

def. 21.4.1(1)

⇔ (\begin{matrix}(R ⇂ J) ∥ pr (Y ∨ Y′, (L ∪ L′) \ J) \\ ⊆ (S ⇂ J) ∥ pr (Y ∨ Y′, (L ∪ L′) \ J) \end{matrix})

due to 20.1.3

⇔ R ⇂ J ⊑ S ⇂ J def. 20.2.2

(19) Proof similar to (18).

21.5.5 Lemma

Let X = [X_{i}|i ∈ I] be a proper schema.

(1) If J ⊆ I and R ⊆ Prel(X) is pairwise distinct, then

(a) ( ⊙_{k∈K}R) ⇂ J = ⊙_{k∈K} (R_{k} ⇂ J)

(b) ( ⊙_{k∈K}R) ↾ J = ⊙_{k∈K} (R_{k} ↾ J)

(2) If J ⊆ I, Y ≤ X, and if we put

Y′ := pr (Y, dom(Y) \ J)

then

(a) ⊤_{Y} ⇂ J = ⊤_{Y ′}

(b) ⊤_{Y} ↾ J = ⊤_{Y ′}

(c) ⊥_{Y} ⇂ J = ⊥_{Y ′}

(d) ⊥_{Y} ↾ J = ⊥_{Y ′}

(3) If R ∈ Prel(X) and J ⊆ I, then (a) R ⇂ J = ¬((¬R) ↾ J)

(b) R ↾ J = ¬((¬R) ⇂ J)

(4) If J ⊆ I, Y ≤ X, R ∈ Prel(X), and if we put

Y′ := pr (Y, dom(Y) \ J)

then

(a) (R ∥ Y) ⇂ J = (R ⇂ J) ∥ Y′

(b) (R ∥ Y) ↾ J = (R ↾ J) ∥ Y′

21.5.6 Proof of 21.5.5

(1) Let L_{k} = @(R_{k}), for each k ∈ K. R being pairwise distinct means that for all k, k′ ∈ K with k ≠ k′, L_{k} ∩L_{k′} = ∅, and that implies (L_{k} \ J) ∩ (L_{k′} ∩ J) = ∅.

(a) ( ⊙_{k∈K}R_{k}) ⇂ J

= pr ( ⊙_{k∈K}R_{k}, @( ⊙_{k∈K}R_{k}) \ J) def. 21.4.1

= pr ( ⊙_{k∈K}R_{k}, ( ⋃_{k∈K}L_{k}) \ J)

= pr ( ⊙_{k∈K}R_{k}, ⋃_{k∈K}(L_{k} \ J))

= ⊙_{k∈K}pr (R_{k}, L_{k} \ J) due to 21.3.16(1)

= ⊙_{k∈K} (R_{k} ⇂ J)

(b) Has a similar proof.

(2) These four statements are a translation of the four (co)project statements in 21.3.14 in term of eliminations. By using 21.3.14(1), we obtain a proof of (a)

⊤_{Y} ⇂ J = pr (⊤_{Y} , dom(Y) \ J)
= ⊤_{pr(Y,dom(Y )\J)}
= ⊤_{Y ′}

The proofs for (b),(c), and (d) are likewise.

(3) Definition 21.2.2 of the coprojection and lemma 21.3.12 are the main tools in the following proofs for (a) and (b)

R ⇂ J = pr (R, @ (R) \ J)
= pr (¬¬R, @ (R) \ J)
= ¬cpj (¬R, @ (R) \ J)
= ¬((¬R) ↾ J)

R ↾ J = cpj (R, @ (R) \ J)
= ¬pr (¬R, @ (R) \ J)
= ¬((¬R) ⇂ J)

(4) Let us point out the following subclasses of I

\begin{aligned}L & := & dom(Y) \\ K & := & @ (R) \\ K′ & := & K \ L \\ L_{1} & := & L \ (K ∪ L) \\ L_{2} & := & (L ∩ J) \ K \\ L_{3} & := & (L ∩ K) \ J \\ L_{4} & := & L ∩ J ∩ K \end{aligned} [figure: L; J; K; K′; L_{1}; L_{2}; L_{3}; L_{4}; I]

so that L is the disjunct union of the L_{1}, L_{2}, L_{3}, L_{4}. We also split up the schema X accordingly

_{for i = 1, 2, 3, 4}^{Y_{i} := pr (Y, L_{i})}[figure: Y; Y_{1}; Y_{2}; Y_{3}; Y_{4}; X]

so that Y = Y_{1} ˙∨ Y_{2} ˙∨ Y_{3} ˙∨ Y_{4} and Y′ = Y_{1} ˙∨ Y_{3}.

(a) We can now see that

(R ∥ Y) ↾ J

= (R ⊙ ⊤(Y1 ˙∨ Y2)) ↾ J due to 20.1.3(3)

= pr (R ⊙ ⊤_{(Y1 ˙∨ Y2)}, (K ∪ L_{1} ∪ L_{2}) \ J)

def. 21.4.1

= pr (R ⊙ ⊤_{(Y1 ˙∨ Y2)}, K′ ∪ L_{3} ∪ L_{1})

= pr (R, K′ ∪ L_{3}) ⊙ pr (⊤_{(Y1 ˙∨ Y2)}, L_{1})

due to 21.3.16(1)

= pr (R, K \ J) ⊙ ⊤_{Y1}

= (R ⇂ J) ⊙ ⊤Y1 def. 21.4.1, again = (R ⇂ J) ∥ Y1 due to 20.1.3 = ((R ⇂ J) ∥ Y3) ∥ Y1 due to 20.1.11(3) = R ⇂ J ∥ (Y3 ∨ Y1) due to 20.1.11(1)

= R ⇂ J ∥ Y′

(b) Quite similar we obtain

(R ∥ Y) ↾ J

= cpj (R ∥ Y, (L ∪ K) \ J) def. 21.4.1

= cpj (R ∥ Y, K′ ∪ L_{3} ∪ L_{1})

= ¬pr (¬(R ∥ Y), K′ ∪ L_{3} ∪ L_{1}) def. 21.2.2

= ¬pr ((¬R) ∥ Y, K′ ∪ L_{3} ∪ L_{1})

due to 20.4.15(3)

= ¬pr ((¬R) ⊙ ⊤_{(Y1 ˙∨ Y2)}, K′ ∪ L_{3} ∪ L_{1})

due to 20.1.3

= ¬ (pr (¬R, K′ ∪ L_{3}) ⊙ pr (⊤_{(Y1 ˙∨ Y2)}, L_{1}))

due to 21.3.16(1)

= ¬ (pr (¬R, K \ J) ⊙ ⊤_{Y1} )

= ¬ (((¬R) ⇂ J) ⊙ ⊤_{Y1} ) def. 21.4.1 = ¬ (((¬R) ⇂ J) ∥ Y′) as in the proof of (a) = (¬((¬R) ⇂ J)) ∥ Y ′ due to 20.4.15(3) = R ↾ J ∥ Y ′ due to (3)(b)

21.5.7 Lemma general eliminations over junctions

Let X = [X_{i}|i ∈ I] be a proper schema. For each R = {R_{k} | k ∈ K} ⊆ Prel(X), all R, S ∈ Prel(X), and every J ⊆ I holds:

(1) ⊥ ⇂ J = ⊥

(2) ⊥ ↾ J = ⊥

(3) ⊤ ⇂ J = ⊤

(4) ⊤ ↾ J = ⊤

(5) (¬R) ⇂ J = ¬(R ↾ J)

(6) (¬R) ↾ J = ¬(R ⇂ J)

(7) (R ⊓ S) ⇂ J ⊆ (R ⇂ J) ⊓ (S ⇂ J)

(8) (R ⊓ S) ↾ J = (R ↾ J) ⊓ (S ↾ J)

(9) (R ⊔ S) ⇂ J = (R ⇂ J) ⊔ (S ⇂ J)

(10) (R ⊔ S) ↾ J ⊒ (R ↾ J) ⊔ (S ↾ J)

(11) (∏R) ⇂ J ⊆ ∏{R_{k} ⇂ J | k ∈ K}

(12) (∏R) ↾ J = ∏{R_{k} ↾ J | k ∈ K}

(13) (∐R) ⇂ J = ∐{R_{k} ⇂ J | k ∈ K}

(14) (∐R) ↾ J ⊇ ∐{R_{k} ↾ J | k ∈ K}

21.5.8 Proof of 21.5.7

(1) We have ⊥ ⇂ J

= pr (⊥, @ (⊥) \ J) def. 21.4.1

= pr (⊥, ∅)

= ⊥pr(⟨⟩,∅) due to 21.3.14(1)

= ⊥_{⟨⟩}

= ⊥ def. 19.3.1

(2),(3),(4) Proof similar to (1).

(5) We obtain

(¬R) ⇂ J

= pr (¬R, @ (R) \ J) def. 21.4.1 = ¬cpj (R, @ (R) \ J) due to 21.3.12(1) = ¬(R ↾ J) def. 21.4.1, again

(6) Proof similar to (5).

(7) This statement is just a special case of (11) proved below, because R ⊓ S = ∏ {R, S}, due to 20.4.21(9).

(8) Special case of (12).

(9) Special case of (13).

(10) Special case of (14).

For the last four statements we need some preparations. The relation class R ⊆ Prel(X) was given by R = {R_{k} | k ∈ K}. Now, for every k ∈ K let

A_{k} = @(R_{k})  X_{k} = x(R_{k})  Γ_{k} = gr(R_{k})

so that R_{k} = [X_{k}, Γ_{k}]. Furthermore, let

A := ⋃{A_{k} | k ∈ K} Z := ⋁{X_{k} | k ∈ K}

So @(∏R) = A and x(∏R) = Z. Finally, let us put

Z′ := pr (Z, A \ J)

Note, that

x (∏{R_{k} ⇂ J | k ∈ K}) =
x (∏{R_{k} ↾ J | k ∈ K}) =
x (∐{R_{k} ⇂ J | k ∈ K}) =
x (∐{R_{k} ↾ J | k ∈ K}) = Z′

And due to 21.5.5(4), we have for every k ∈ K,

(a) (R_{k} ∥ Z) ⇂ J = (R_{k} ⇂ J) ∥ Z′

(b) (R_{k} ∥ Z) ↾ J = (R_{k} ↾ J) ∥ Z′

We now obtain the proofs for (11) to (14)as follows

(11) We have

(∏R) ⇂ J

= pr (∏R, A \ J) due to 21.4.1

= pr (⋂{R_{k} ∥ Z | k ∈ K}, A \ J)

def. 20.2.4 of ∏

⊆ ⋂{pr (R_{k} ∥ Z, A \ J) | k ∈ K}

due to 21.3.10(1)

= ⋂{(R_{k} ∥ Z) ⇂ J | k ∈ K} def. 21.4.1 = ⋂{(R_{k} ⇂ J) ∥ Z′ | k ∈ K} due to (a)

= ∏{Rk ⇂ J | k ∈ K} def. 20.2.4 of ∏, again

(12) We have

(∏R) ↾ J

= cpj (∏R, A \ J) def. 21.4.1 = cpj (⋂{(R_{k} ∥ Z) | k ∈ K}, A \ J) def. 20.2.4

= ⋂{cpj ((R_{k} ∥ Z), A \ J) | k ∈ K}

due to 21.3.10(3)

= ⋂{(R_{k} ∥ Z) ↾ J | k ∈ K} def. 21.4.1 = ⋂{(R_{k} ↾ J) ∥ Z′ | k ∈ K} due to (b) = ∏{R_{k} ↾ J | k ∈ K} def. 20.2.4

(13) Using the justifications of the proof for (11), we obtain (∐R) ⇂ J = pr (⋃{R_{k} ∥ Z | k ∈ K}, A \ J) = ⋃{pr (R_{k} ∥ Z, A \ J) | k ∈ K}

due to 21.3.10(2)

= ∐{R_{k} ↾ J | k ∈ K}

(14) Finally and similar to (12)we obtain (⋃ R) ↾ J = cpj (⋃{(R_{k} ∥ Z) | k ∈ K}, A \ J) ⊇ ⋃{cpj (R_{k} ∥ Z, A \ J) | k ∈ K}

due to 21.3.10(4)

= ∐{R_{k} ↾ J | k ∈ K}

21.5.9 Lemma

Let X = [X_{i}|i ∈ I] be a proper schema, R ∈ Prel(X) and J ⊆ I. The following statements are equivalent:

(1) R ⇂ J ≡ R

(2) R ↾ J ≡ R

(3) R ⇂ j ≡ R for every j ∈ J

(4) R ↾ j ≡ R for every j ∈ J

21.5.10 Proof of 21.5.9

Suppose, R = [Y, Γ] with Y = [Y_{l}|l ∈ L]. (1)⇒(3) For every j ∈ J holds:

♣ R ⊑ R ⇂ j due to 21.5.3(15) ♣ R ⇂ j ⊑ R ⇂ J due to ??(13) so that

R ⇂ J ≡ R implies R ⇂ j ≡ R

¬(1)⇒ ¬(3) We derive

R ⇂ J ≢ R

⇔ R ⊏ R ⇂ J due to 21.5.3(15) ⇔ R ⊂ (R ⇂ J) ∥ Y def. 20.2.2 ⇔ R ⊂ (R ⇂ J) ⊙ ⊤pr(Y,J∩L) due to 20.1.3

⇔ [\begin{matrix}Y \\ Γ \end{matrix}] ⊂ [\begin{matrix}pr & (Y, L \ J) \\ pr & (Γ, L \ J) \end{matrix}] ⊙ [\begin{matrix}pr & (Y, J ∩ L) \\ ⊗pr (Y, J ∩ L) \end{matrix}]

⇔ Γ ⊂ pr (Γ, L \ J) ⊙ ⊗pr (Y, J ∩ L)

⇔ ∃ξ ∈ Γ . ∃υ ∈ ⊗pr (Y, J ∩ L) . pr (ξ, L \ J) ˙∨ υ ∉ Γ

In that case and for such ξ and υ we put J′ := {j ∈ (J ∩L) | ξ_{j} ≠ υ_{j}}. J′ is not empty, because then pr (ξ, L \ J) ˙∨ υ = ξ ∈ Γ. So there must be at least one j ∈ J′. And for this j we would have ξ ∈ R, but ξ ∉ R ⇂ j ∥ Y, and thus R ≢ R ⇂ j. (1)⇔(2) We have

R ⇂ J ≡ R ⇔ R ⇂ J ⊑ R

because R ⇂ J ⊒ R, due to 21.5.3(15)

⇔ pr (R ⇂ J, L \ J) ⊆ cpj (R, L \ J)

due to 21.3.6

⇔ R ⇂ J ⊆ R ↾ J

due to 21.3.3(1)(a) and def. 21.4.1(1)

⇔ pr (R, L \ J) ⊆ cpj (R ↾ J, L \ J)

def. 21.4.1(1) and due to 21.3.3(1)(b)

⇔ R ⊑ R ↾ J due to 21.3.6 again

⇔ R ↾ J ≡ R

because R ↾ J ⊑ R is due to 21.5.3(16)

(3)⇔(4) We just showed that R ↾ J ≡ R iff R ⇂ J ≡ R. As special case this implies R ↾ j ≡ R iff R ⇂ j ≡ R.

21.6 Reductions

21.6.1 Definition

Let X be a schema, R ∈ Prel(X) and Y ∈ Proj(X). We define

R ⇕ Y := the S ∈ Rel(Y) with S ≡ R

the \underline{equivalent reduction} of R onto Y

R ⇓ Y := ⋂{S ∈ Rel(Y) | R ⊑ S}

the \underline{supremum reduction} of R onto Y

R ⇑ Y := ⋃{S ∈ Rel(Y) | S ⊑ R}

the \underline{infimum reduction} of R onto Y 21.6.2 Lemma

If X is a relation, R ∈ Prel(X) and Y ∈ Proj(X), then

(1) If R ⇕ Y exists, then x(R ⇕ Y) = Y

(2) x(R ⇓ Y) = Y

(3) x(R ⇑ Y) = Y

21.6.3 Proof of 21.6.2

(1) is obvious. (2) and (3) are due to definition 19.5.3 of ⋂ and ⋃, which are operations on Rel(Y). Besides, there is no ambiguity here, which might occur for the expressions ⋂ ∅ and ⋃ ∅, because this empty class situation never occurs. There is always at least one S ∈ Rel(Y) which is subvalent (or supervalent, respectively) to R.

21.6.4 Lemma

Let X = [X_{i}|i ∈ I] and Y = [Y_{j}|j ∈ J] be two schemas and R = [X, Γ] a relation.

(1) If Y ≤ X then (a) R ⇓ Y = pr (R, J)

(b) R ⇑ Y = cpj (R, J)

(c) R ⇓ Y = R ⇂ (I \ J)

(d) R ⇑ Y = R ↾ (I \ J)

(2) If X ≤ Y then (a) R ⇓ Y = R ∥ Y

(b) R ⇑ Y = R ∥ Y

(3) If Y ⌣ X, then (a) R ⇓ Y = pr (R, J ∩ I) ⊙ ⊤_{Y \X}

(b) R ⇑ Y = cpj (R, J ∩ I) ⊙ ⊤_{Y \X}

(c) R ⇓ Y = R ⇂ (I \ J) ⊙ ⊤_{Y \X}

(d) R ⇑ Y = R ↾ (I \ J) ⊙ ⊤_{Y \X}

21.6.5 Proof of 21.6.4

Recall, that for every class C and A ∈ P(C).

(i) ⋂{B ∈ P(C) | A ⊆ B} = A (ii) ⋃{B ∈ P(C) | B ⊆ A} = A

Similar statements hold on Rel(Y) as well, i.e. for every T = [Y, Γ] ∈ Rel(Y) holds:

(i) We have ⋂{S ∈ Rel(Y) | T ⊆ S}

= ⋂ \{ [\begin{matrix}Y \\ Σ \end{matrix}] Σ ⊆ ⊗Y, Γ ⊆ Σ \}

= [ \begin{matrix}Y \\ ⋂\{Σ ∈ P(⊗Y) | Γ ⊆ Σ\} \end{matrix} ]

= [Y, Γ] due to (i) above

= T

and similarly, we also have (ii) ⋃{S ∈ Rel(Y) | S ⊆ T } = T

Now we proof in detail:

(1) If Y ≤ X, then J ⊆ I.

(a) We obtain R ⇓ Y

= ⋂{S ∈ Rel(Y) | R ⊑ S}

def. 21.6.1 of ⇓

= ⋂{S ∈ Rel(Y) | pr (R, J) ⊆ cpj (S, J)}

due to 21.3.6

= ⋂{S ∈ Rel(Y) | pr (R, J) ⊆ S}

due to 21.3.3(1)(b)

= pr (R, J) due to the initial remarks

(b) Similar to (a) we obtain

R ⇑ Y = ⋃{S ∈ Rel(Y) | S ⊑ R}
= ⋃{S ∈ Rel(Y) | pr (S, J) ⊆ cpj (R, J)}
= ⋃{S ∈ Rel(Y) | S ⊆ cpj (R, J)}
= cpj (R, J)

(c) We have R ⇓ Y

= pr (R, J) due to (a) = R ⇂ (I \ J) def. 21.4.1(1)

(d) Similar to (c), R ⇑ Y = cpj (R, J) = R ↾ (I \ J).

(2) Now X ≤ Y. (a) We have

R ⇓ Y = ⋂{S ∈ Rel(Y) | R ⊑ S}

def. 21.6.1 of ⇓

= ⋂{S ∈ Rel(Y) | R ∥ (X ∨ Y) ⊆ S ∥ (X ∨ Y)}

def. 20.2.2 of ⊑

= ⋂{S ∈ Rel(Y) | R ∥ Y ⊆ S ∥ Y }

because X ∨ Y = Y

= ⋂{S ∈ Rel(Y) | R ∥ Y ⊆ S}

because S ∥ Y = S

= R ∥ Y due to (i)

(b) Proof similar to (a).

(3) Now Y ⌣ X. (a) We have

R ⇓ Y = ⋂{S ∈ Rel(Y) | R ⊑ S}

def. 21.6.1 of ⇓

= ⋂{S ∈ Rel(Y) | pr (R, J ∩ I) ⊆ cpj (S, J ∩ I)}

due to 21.3.6

= pr (R, J ∩ I) ⊙ ⊤_{Y \X}

due to 21.3.8(2)(b)

(b) Similar to (a) we obtain

R ⇑ Y = ⋃{S ∈ Rel(Y) | S ⊑ R} = ⋃{S ∈ Rel(Y) | pr (S, J ∩ I) ⊆ cpj (R, J ∩ I)}

= cpj (R, J ∩ I) ⊙ ⊤Y \X due to 21.3.8(2)(a)

(c) We have

R ⇓ Y

= pr (R, J ∩ I) ⊙ ⊤Y \X due to (a) = pr (R, I \ (J ∩ I)) ⊙ ⊤Y \X def. 21.4.1(1)

= pr (R, I \ J) ⊙ ⊤_{Y \X}

(d) Proof similar to (c).

21.6.6 Lemma

Let X be a proper schema, R ∈ Prel(X) and Y ∈ Proj(X).

(1) R ⇑ Y ⊑ R ⊑ R ⇓ Y

(2) The following statements are equivalent: (a) R ⇕ Y is defined

(b) R ⇑ Y = R ⇓ Y

(3) In case R ⇕ Y is actually defined, then R ⇕ Y = R ⇑ Y = R ⇓ Y

21.6.7 Proof of 21.6.6 Suppose, R = [U, Γ] with U = [U_{k}|k ∈ K] and Y = [Y_{j}|j ∈ J].

(1) We have

R ⇑ Y

= pr (R, K ∩ J) ⊙ ⊤(Y \U) due to 21.6.4(3)(b) = pr (R, K ∩ J) ∥ (Y \ U) due to 20.1.3 ≡ pr (R, K ∩ J) due to 20.4.9(2) ⊑ R due to 21.3.3(9)(b) ⊑ cpj (R, K ∩ J) due to 21.3.3(9)(a) ≡ cpj (R, K ∩ J) ∥ (Y \ U) due to 20.4.9(2) = cpj (R, K ∩ J) ⊙ ⊤(Y \U) due to 20.1.3 = R ⇓ Y due to 21.6.4(3)(a)

(2) R ⇕ Y is defined iff there is a S ∈ Rel(Y) with S ≡ R. In that case,

R ⇓ Y = ⋂{S ∈ Rel(Y) | R ⊑ S}
≡ R ⇕ Y
≡ ⋃{S ∈ Rel(Y) | S ⊑ R}
= R ⇑ Y

(3) Immediate consequence of (1) and (2).

21.6.8 Remark The construction of the various reductions by means of double tables was already introduced in 21.1.1. At this point we have all the justifications available, so let us summarize the method for the general case.

Let X = [X_{i}|i ∈ I] and Y = [Y_{j}|j ∈ J] be two completely finite schemas with X ⌣ Y and R = [X, Γ] a relation.

For the construction of R ⇓ Y and R ⇑ Y we use lemma 21.6.4(3)

\begin{aligned}R ⇓ Y & = & pr (R, J ∩ I) ⊙ ⊤_{Y \X} \\ R ⇑ Y & = & cpj (R, J ∩ I) ⊙ ⊤_{Y \X} \end{aligned}

So we make two steps: ♣ We first construct the R′ := pr (R, J ∩ I) (or R′′ :=

cpj (R, J ∩ I)) according to the method 21.2.3. ♣ Then we generate R′ ⊙ ⊤_{Y \X} (or R′′ ⊙ ⊤_{Y \X}) according

to 20.1.5.

The contructions for R ⇓ Y and R ⇑ Y also give us a criterion for the existence of R ⇕ Y. Due to 21.6.6(2), R ⇕ Y is defined iff R ⇓ Y = R ⇑ Y. And in that case, all these reductions are identical according to 21.6.6(2).

21.7 Properties of the reductions

21.7.1 Lemma

Let X be a proper schema.

(1) For R = [U, Γ] ∈ Prel(X) and Y ∈ Proj(X)

(a) R ⇓ Y = R ⇓ (U ∧ Y) ∥ Y

(b) R ⇑ Y = R ⇑ (U ∧ Y) ∥ Y

(2) For R ∈ Prel(X) and Y ∈ Proj(X) holds:

(a) R ⇑ Y = ¬((¬R) ⇓ Y)

(b) R ⇓ Y = ¬((¬R) ⇑ Y)

(3) For R ∈ Prel(X) and Y, Z ∈ Proj(X) holds:

(a) R ⇓ Y = R ∥ Z ⇓ Y

(b) R ⇑ Y = R ∥ Z ⇑ Y

(4) For R, S ∈ Prel(X) and Y ∈ Proj(X) holds:

(a) R ≡ S implies R ⇓ Y = S ⇓ Y

(b) R ≡ S implies R ⇑ Y = S ⇑ Y

(5) For R, S ∈ Prel(X) and Y ∈ Proj(X) holds:

(a) R ⊑ S implies R ⇓ Y ⊑ S ⇓ Y

(b) R ⊑ S implies R ⇑ Y ⊑ S ⇑ Y

(6) For R ∈ Prel(X) and Y ∈ Proj(X) holds:

(a) R ⇓ Y ⊒ R

(b) R ⇑ Y ⊑ R

(7) For R = [U, Γ] ∈ Prel(X) and Y ∈ Proj(X) holds:

(a) U ≬ Y implies R ⇓ Y = \begin{cases}⊥_{Y} & if R ≡ ⊥ \\ ⊤_{Y} & else \end{cases}

(b) U ≬ Y implies R ⇑ Y = \begin{cases}⊤_{Y} & if R ≡ ⊤ \\ ⊥_{Y} & else \end{cases}

(8) For every R ∈ Prel(X) holds:

(a) R ⇓ ⟨⟩ = \begin{cases}⊥ & if R is empty \\ ⊤ & else \end{cases}

(b) R ⇑ ⟨⟩ = \begin{cases}⊤ & if R is full \\ ⊥ & else \end{cases}

(9) For R ∈ Prel(X) and Y, Z ∈ Proj(X) holds:

(a) Y ≤ Z implies R ⇓ Y ⊒ R ⇓ Z

(b) Y ≤ Z implies R ⇑ Y ⊑ R ⇑ Z

(10) For R ∈ Prel(X) and Y ∈ Proj(X) holds:

R ⇑ Y ⊆ R ⇓ Y (11) For every R ∈ Prel(X) and all Y, Z ∈ Proj(X)

holds:

R ⇑ Y ⇓ Z ⊑ R ⇓ Z ⇑ Y

(12) For all R ∈ Prel(X) holds:

R ⇕ X = R ∥ X = R ⇓ X = R ⇑ X

(13) For all R ∈ Prel(X) and Y_{1}, …, Y_{n} ∈ Proj(X) with n ≥ 1 holds

(a) R ⇓ Y_{1} ⇓ … ⇓ Y_{n} = R ⇓ ( ∧^{n}_{i∈1}Y_{i}) ∥ Y_{n}

(b) R ⇑ Y_{1} ⇑ … ⇑ Y_{n} = R ⇑ ( ∧^{n}_{i∈1}Y_{i}) ∥ Y_{n}

21.7.2 Proof of 21.7.1

(1) (a) Recall, that U, Y ∈ Proj(X) implies U ⌣ Y and that

U ∧ Y ≤ U. Now if J := dom(U) and K := dom(Y) then R ⇓ Y

= pr (R, J ∩ K) ⊙ ⊤Y \U due to 21.6.4(3)(a) = (R ⇓ (U ∧ Y)) ⊙ ⊤Y \U due to 21.6.4(1)(a)

= R ⇓ (U ∧ Y) ∥ (Y \ U) due to 20.1.3(3)

= R ⇓ (U ∧ Y) ∥ Y due to 20.1.3(1)

(b) Proof similar to (a).

(2) (a) We have R ⇑ Y = ⋃{S | S ∈ Rel(Y), S ⊑ R} def. 21.6.1 of ⇑ = ¬¬ ⋃{S | S ∈ Rel(Y), S ⊑ R} due to 19.4.6 = ¬ ⋂{¬S | S ∈ Rel(Y), S ⊑ R}

due to de Morgans law on Rel(Y )

= ¬ ⋂{S | S ∈ Rel(Y), ¬S ⊑ R} = ¬ ⋂{S ∈ Rel(Y) | ¬R ⊑ S} due to 20.4.24

= ¬((¬R) ⇓ Y) def. 21.6.1 of ⇓

(b) Proof similar to (a).

(3) (a) We have R ∥ Z ⇓ Y = ⋂{S ∈ Rel(Y) | (R ∥ Z) ⊑ S} def. 21.6.1 of ⇓ = ⋂{S ∈ Rel(Y) | R ⊑ S} because R ∥ Z ≡ R

= R ⇓ Y def. 21.6.1, again

(b) We have R ⇑ Y

= ¬((¬R) ⇓ Y) due to (2)(a)

= ¬((¬R) ∥ Z ⇓ Y) due to (a)

= ¬(¬(R ∥ Z) ⇓ Y) due to 20.4.15(3) = R ∥ Z ⇑ Y due to (2)(a), again

(4) (a) We have R ≡ S

⇒ R ∥ X = S ∥ X due to 20.4.9(4)(b)

⇒ R ∥ X ⇓ Y = S ∥ X ⇓ Y

⇒ R ⇓ Y = S ⇓ Y due to (3)(a)

(b) Proof similar to (a).

(5) (a) Suppose Y = [Y_{j}|j ∈ J], then R ⊑ S

⇒ R ∥ X ⊆ S ∥ X due to 20.4.9(4)(a) ⇒ pr (R ∥ X, J) ⊆ pr (S ∥ X, J) due to 21.3.3(11)(a) ⇒ R ∥ X ⇓ Y ⊆ S ∥ X ⇓ Y due to 21.6.4(1)(a) ⇒ R ⇓ Y ⊑ S ⇓ Y due to (3)(a)

(b) Proof similar to (b).

(6) (a) Suppose Y = [Y_{j}|j ∈ J], then R ⇓ Y

= R ∥ X ⇓ Y due to (3)(a) = pr (R ∥ X, J) due to 21.6.4(1)(a) ⊒ R ∥ X due to 21.3.3(9)(a)

≡ R

and so R ⇓ Y ⊒ R.

(b) Proof similar to (a).

(7) (a) Suppose U = [U_{l}|l ∈ L] and Y = [Y_{j}|j ∈ J], then R ⇓ Y

= pr (R, L ∩ J) ⊙ ⊤Y \U due to 21.6.4(3)(a) = pr (R, ∅) ⊙ ⊤Y because U ≬ Y

= \begin{cases}⊥ ⊙ ⊤_{Y} = ⊥_{Y} & if R is empty, i.e. R ≡ ⊥ \\ ⊤ ⊙ ⊤_{Y} = ⊤_{Y} & else \end{cases}

due to 21.3.3(3)(a)

(b) Proof similar to (a).

(8) For every schema Z holds Z ≬ ⟨⟩. So (8) is just the special case of (7), where Y = ⟨⟩.

(9) (a) Suppose Y = [Y_{j}|j ∈ J] and Z = [Z_{k}|k ∈ K], then Y ≤ Z means J ⊆ K. Then R ⇓ Y

= R ∥ X ⇓ Y due to (3)(a) = pr (R ∥ X, J) due to 21.6.4(1) ⊇ pr (R ∥ X, K) due to 21.3.3(8)(a)

= R ∥ X ⇓ Z = R ⇓ Z

(b) Proof similar to (a).

(10) From 21.6.6 we obtain R ⇑ Y ⊑ R ⇓ Y. And because x(R ⇑ Y) = x(R ⇓ Y) we derive R ⇑ Y ⊆ R ⇓ Y.

(11) Suppose that R = [U, Γ] and U = [U_{i}|i ∈ I], Y = [Y_{j}|j ∈ J], and Z = [Z_{k}|k ∈ K]. For the left hand side of the subvalence expression holds:

R ⇑ Y ⇓ Z = R ⇑ (U ∧ Y) ∥ Y ⇓ Z due to (1)(b)

= R ⇑ (U ∧ Y) ⇓ Z due to (3)(a)

= R ⇑ (U ∧ Y) ⇓ (U ∧ Y ∧ Z) ∥ Z due to (1)(a) ≡ R ⇑ (U ∧ Y) ⇓ (U ∧ Y ∧ Z) due to 20.4.9(2)

And because

@(R) = I
@(R ⇑ (U ∧ Y)) = dom(U ∧ Y)
= I ∩ J
= I \ (I \ J)
@(R ⇑ (U ∧ Y) ⇓ (U ∧ Y ∧ Z)) = I ∩ J ∩ K
= (I \ (I \ J)) \ (I \ K)

we obtain

R ⇑ (U ∧ Y) ⇓ (U ∧ Y ∧ Z) = R ↾ (I \ J) ⇂ (I \ K)

by applying 21.6.4(1)(c) and (d). Performing similar steps on the right hand side of the subvalence expression gives us

\begin{aligned}R ⇓ Z ⇑ Y & ≡ & R ⇓ (U ∧ Z) ⇑ (U ∧ Y ∧ Z) \\ & = & R ⇂ (I \ K) ↾ (I \ J) \end{aligned}

Having translated the reductions into eliminations this way, we can now apply 21.5.3(17):

R ⇑ Y ⇓ Z ≡ R ↾ (I \ J) ⇂ (I \ K)
⊆ R ⇂ (I \ K) ↾ (I \ J)
≡ R ⇓ Z ⇑ Y

and thus

R ⇑ Y ⇓ Z ⊑ R ⇓ Z ⇑ Y

(12) Suppose R = [Y, Γ]. Then Y ≤ X and R ⇓ X = R ∥ X due to 21.6.4(2)(a)

R ⇑ X = R ∥ X due to 21.6.4(2)(b)

Furthermore, R ∥ X ≡ R according to 20.4.9(2). So there is a (unique) R ∈ Rel(X) equivalent to R, namely R ∥ X, and so R ∥ X = R ⇕ X.

(13) Let R = [Y, Γ] with U = [U_{i}|i ∈ I] and dom(Y_{k}) = J_{i} for k = 1, …, n.

(a) We proof by induction on n: ♣ For n = 1 we have

R ⇓ Y_{1} = R ⇓ Y_{1} ∥ Y_{1}

which is a true statement according to 20.1.11(3) ♣ For n ↦ n + 1 we obtain

R ⇓ Y_{1} ⇓ … ⇓ Y_{n} ⇓ Y_{n+1}

= R ⇓ ( ∧^{n}_{i=1}Y_{i}) ∥ Yn ⇓ Yn+1 by induction

= R ⇓ ( ∧^{n}_{i=1}Y_{i}) ⇓ Yn+1 due to (3)(a)

= R ⇓ ( ∧^{n+1}_{i=1}Y_{i}) ∥ Yn+1 due to (1)(a)

(b) Proof similar to (a).

21.7.3 Lemma

For each schema X, all R = {R_{k} | k ∈ K} ⊆ Prel(X) and R, S ∈ Prel(X), and every Y ∈ Proj(X) holds:

(1) ⊥ ⇓ Y = ⊥_{Y}

(2) ⊥ ⇑ Y = ⊥_{Y}

(3) ⊤ ⇓ Y = ⊤_{Y}

(4) ⊤ ⇑ Y = ⊤_{Y}

(5) (¬R) ⇓ Y = ¬(R ⇑ Y)

(6) (¬R) ⇑ Y = ¬(R ⇓ Y)

(7) (R ⊓ S) ⇓ Y ⊆ (R ⇓ Y) ∩ (S ⇓ Y)

(8) (R ⊓ S) ⇑ Y = (R ⇑ Y) ∩ (S ⇑ Y)

(9) (R ⊔ S) ⇓ Y = (R ⇓ Y) ∪ (S ⇓ Y)

(10) (R ⊔ S) ⇑ Y ⊇ (R ⇑ Y) ∪ (S ⇑ Y)

(11) (∏R) ⇓ Y ⊆ ⋂{R_{k} ⇓ Y | k ∈ K}

(12) (∏R) ⇑ Y = ⋂{R_{k} ⇑ Y | k ∈ K}

(13) (∐R) ⇓ Y = ⋃{R_{k} ⇓ Y | k ∈ K}

(14) (∐R) ⇑ Y ⊇ ⋃{R_{k} ⇑ Y | k ∈ K}

21.7.4 Proof of 21.7.3

Let X = [X_{i}|i ∈ I] and dom(Y) = J, so that Y = [X_{j}|j ∈ J].

(1) We obtain ⊥ ⇓ Y

= ⋂{T ∈ Rel(Y) | ⊥ ⊑ T } def. 21.6.1 of ⇓ = ⋂ Rel(Y) due to 20.4.21(17)

= ⊥_{Y}

(2) Similar to (1) we obtain ⊥ ⇑ Y

= ⋃{T ∈ Rel(Y) | T ⊑ ⊥} def. 21.6.1 of ⇑

= ⋃{T ∈ Rel(Y) | T ⊆ ⊥_{Y} }

= ⋃ {⊤_{Y} }

= ⊥_{Y}

(3) Similar to (1) and (2).

(4) Similar to (1) and (2).

(5) We have (¬R) ⇓ Y

= ¬¬((¬R) ⇓ Y due to 19.4.6 = ¬(R ⇑ Y) due to 21.7.1(2)(b)

(6) Similar to (5).

(7) Due to

\begin{aligned}R ⊓ S & = & ∏R, S \\ (R ∥ Y) ⊓ (S ∥ Y) & = & ∏ \{(R ∥ Y), (S ∥ Y)\} \end{aligned}

this case (7) is just a special case of (11) (proof see below).

(8) Is a special case of (12).

(9) Is a special case of (13).

(10) Is a special case of (14).

(11) We have

(∏R) ⇓ Y

= (∏R) ∥ X ⇓ Y due to 21.7.1(5)(c) = ∏{Rk ∥ X | k ∈ K} ⇓ Y due to 20.4.15(8)

= ⋂{R_{k} ∥ X | k ∈ K} ⇓ Y def. 20.2.4 of ∏

= pr (⋂{R_{k} ∥ X | k ∈ K}, J) due to 21.6.4(1)(a) ⊆ ⋂{pr (R_{k} ∥ X, J) | k ∈ K} due to 21.3.10(1) = ⋂{Rk ∥ X ⇓ Y | k ∈ K} due to 21.6.4(1)(a), again = ⋂{Rk ⇓ Y | k ∈ K} due to 21.7.1(5)(c),again

(12) Similar to (11), we obtain

(∏R) ⇑ Y

= (∏R) ∥ X ⇑ Y due to 21.7.1(5)(d) = (∏{Rk ∥ X | k ∈ K}) ⇑ Y due to 20.4.15(8)

= (⋂{R_{k} ∥ X | k ∈ K}) ⇑ Y def. 20.2.4 of ∏

= pr (⋂{R_{k} ∥ X | k ∈ K}, J) due to 21.6.4(1)(b) = ⋂{pr (R_{k} ∥ X, J) | k ∈ K} due to 21.3.10(1) = ⋂{Rk ∥ X ⇑ Y | k ∈ K} due to 21.6.4(1)(b), again = ⋂{Rk ⇑ Y | k ∈ K} due to 21.7.1(5)(d), again

(13) Similar to (11) and (12), by applying 21.3.10(3).

(14) Similar to (11) and (12), by applying 21.3.10(4).

21.7.5 Lemma

Let R = [X, Γ] and S = [Y, Σ] be two compatible relations. We put Z := X ∧ Y.

(1) The following statements are equivalent: (a) R ⊑ S

(b) R ⇓ Z ⊆ S ⇑ Z

(c) R ⇓ Y ⊑ S ⇑ X

(2) The following statements are equivalent as well: (a) R ≡ S

(b) R ⇓ Z = R ⇑ Z = S ⇓ Z = S ⇑ Z

(c) R ⇕ Z and S ⇕ Z both exist and they are equal.

21.7.6 Proof of 21.7.5

Suppose, X = [X_{i}|i ∈ I] and Y = [Y_{j}|j ∈ J].

(1) (a) and (b) are equivalent, because R ⊑ S

⇔ pr (R, I ∩ J) ⊆ cpj (S, I ∩ J) due to 21.3.6

⇔ R ⇓ Z ⊆ S ⇑ Z due to 21.6.4(1)(a) and (b)

(b) and (c) are equivalent, because R ⇓ Y

= R ⇓ Z ∥ Y due to 21.7.1(1)(a)

≡ R ⇓ Z due to 20.4.9(2)

S ⇑ X

= S ⇑ Z ∥ X due to 21.7.1(1)(b)

≡ S ⇑ Z due to 20.4.9(2)

and thus

R ⇓ Z ⊆ S ⇑ Z iff R ⇓ Y ⊑ S ⇑ X

(2) (a) and (b) are equivalent, because

R ≡ S

iff R ⊑ S and S ⊑ R

due to 20.4.9(1)

iff R ⇓ Z ⊆ S ⇑ Z and S ⇓ Z ⊆ R ⇑ Z

due to (1)

iff R ⇓ Z = R ⇑ Z = S ⇓ Z = S ⇑ Z

because R ⇑ Z ⊆ R ⇓ Z and S ⇑ Z ⊆ S ⇓ Z according to 21.7.1(10)

(b) and (c) equivalent, due to 21.6.6 ♣ R ⇕ Z is defined iff R ⇑ Z = R ⇓ Z (then also = R ⇕ Z). ♣ S ⇕ Z is defined iff S ⇑ Z = S ⇓ Z (then also = S ⇕ Z).

and that entails the equivalence of (b) and (c).

21.7.7 Lemma

Let X = [X_{i}|i ∈ I] be a proper schema, [σ_{k}|k ∈ K] a schema partition of X, and for each k ∈ K let R_{k} ∈ Prel(σ_{k}) and Y_{k} ∈ Proj(σ_{k}). Then

(a) ( ⊙_{k∈K}R_{k}) ∥ ( ˙⋁_{k∈K}Y_{k}) = ⊙_{k∈K} (R_{k} ∥ Y_{k})

(b) ( ⊙_{k∈K}R_{k}) ⇓ ( ˙⋁_{k∈K}Y_{k}) = ⊙_{k∈K} (R_{k} ⇓ Y_{k})

(c) ( ⊙_{k∈K}R_{k}) ⇑ ( ˙⋁_{k∈K}Y_{k}) = ⊙_{k∈K} (R_{k} ⇑ Y_{k})

21.7.8 Proof of 21.7.7

First, let us state that every distinct product expression of 21.7.7 is well defined: the R_{k} are pairwise distinct by definition. And with R_{k} ∥ Y_{k} ∈ Prel(σ_{k}) and pairwise distinct σ_{k}, the R_{k} ∥ Y_{k} are pairwise distinct as well and their distinct product is well–defined. The same holds for the supremum and infimum reduction expressions.

For the subsequent proof we will use the following fact from the algebra of classes:

(i) Let C and K be classes, {A_{k} | k ∈ K} ⊆ P(C), and {B_{k} | k ∈ K} ⊆ P(C), such that k_{1} ≠ k_{2} implies A_{k1} ∩ B_{k2} = ∅, for all k_{1}, k_{2} ∈ K. Then

( ⋃_{k∈K}A_{k}) ∩ ( ⋃_{k∈K}B_{k}) = ⋃_{k∈K} (A_{k} ∩ B_{k})

Now, for each k ∈ K, let U_{k} = x(R_{k}), L_{k} = @(R_{k}) = dom(U_{k}), and J_{k} = dom(Y_{k}).

(a) The given statements is

( ⊙_{k∈K}R_{k}) ∥ ( ˙⋁_{k∈K}Y_{k}) = ⊙_{k∈K} (R_{k} ∥ Y_{k})

According to 20.4.9(5), both sides of the stated equation are equal iff they are both equivalent and have the same schema. Now the equivalence holds due to

\begin{aligned}( ⊙_{k∈K}R_{k}) ∥ ( ˙⋁_{k∈K}Y_{k}) & ≡ & ( ⊙_{k∈K}R_{k}) \\ & ≡ & ⊙_{k∈K} (R_{k} ∥ Y_{k}) \end{aligned}

and for the schemas holds

x (( ⊙_{k∈K}R_{k}) ∥ ( ˙⋁_{k∈K}Y_{k})) = ( ˙⋁_{k∈K}U_{k}) ∨ ( ˙⋁_{k∈K}Y_{k})
= ⋁_{k∈K} (U_{k} ∨ Y_{k})
= x ( ⊙_{k∈K} (R_{k} ∥ Y_{k}))

(b) We have

( ⊙_{k∈K}R_{k}) ⇓ ( ˙⋁_{k∈K}Y_{k})

= pr ( ⊙_{k∈K}R_{k}, ( ⋃_{k∈K}L_{k}) ∩ ( ⋃_{k∈K}J_{k})) ∥ ( ˙⋁_{k∈K}Y_{k})

due to 21.6.4(3)(a) and 20.1.3(3)

= pr ( ⊙_{k∈K}R_{k}, ⋃_{k∈K} (L_{k} ∩ J_{k})) ∥ ( ˙⋁_{k∈K}Y_{k}) due to (i)

= ( ⊙_{k∈K}pr (R_{k}, L_{k} ∩ J_{k})) ∥ ( ˙⋁_{k∈K}Y_{k}) due to 21.3.16(1)

= ( ⊙_{k∈K} (R_{k} ⇓ (U_{k} ∧ Y_{k}))) ∥ ( ˙⋁_{k∈K}Y_{k}) due to 21.6.4(1)(a)

= ⊙_{k∈K} (R_{k} ⇓ (U_{k} ∧ Y_{k}) ∥ Y_{k}) due to (a)

= ⊙_{k∈K} (R_{k} ⇓ Y_{k}) due to 21.7.1(1)(a)

(c) Similar to the proof of (b) we have

( ⊙_{k∈K}R_{k}) ⇑ ( ˙⋁_{k∈K}Y_{k})

= cpj ( ⊙_{k∈K}R_{k}, ( ⋃_{k∈K}L_{k}) ∩ ( ⋃_{k∈K}J_{k})) ∥ ( ˙⋁_{k∈K}Y_{k})

due to 21.6.4(3)(b) and 20.1.3(3)

= cpj ( ⊙_{k∈K}R_{k}, ⋃_{k∈K} (L_{k} ∩ J_{k})) ∥ ( ˙⋁_{k∈K}Y_{k}) due to (i)

= ( ⊙_{k∈K}cpj (R_{k}, L_{k} ∩ J_{k})) ∥ ( ˙⋁_{k∈K}Y_{k}) due to 21.3.16(2)

= ( ⊙_{k∈K} (R_{k} ⇑ (U_{k} ∧ Y_{k}))) ∥ ( ˙⋁_{k∈K}Y_{k}) due to 21.6.4(1)(b)

= ⊙_{k∈K} (R_{k} ⇑ (U_{k} ∧ Y_{k}) ∥ Y_{k}) due to (a)

= ⊙_{k∈K} (R_{k} ⇑ Y_{k}) due to 21.7.1(1)(b)

21.8 Redundancy of attributes

21.8.1 Remark introduction

We saw in 21.5.3(15) and (16), that

R ↾ j ⊑ R ⊑ R ⇂ j

for every relation R and attribute j. In fact, the left subvalence is proper iff the right one is, i.e. exactly one of the following situations is the case: Either

(a) R ↾ j ≡ R ≡ R ⇂ j or

(b) R ↾ j ⊏ R ⊏ R ⇂ j.

In case of (a), we say that j is \underline{redundant} for R. We can eliminate j from R without loosing any information, where “same information” means “being equivalent”. Neither does it matter how we eliminate j from R — supremum or infimum elimination, it is all the same in this case.

21.8.2 Definition

Let X = [X_{i}|i ∈ I] be a proper schema and R ∈ Prel(X).

(1) We call every j ∈ I (a) \underline{redundant for} R, iff

R ↾ j = R ⇂ j

(b) \underline{irredundant for} R, iff

R ↾ j ≠ R ⇂ j

And if j is an attribute of R, we call it (ir)redundant \underline{in} R.

(2) Each J ⊆ I is called (a) \underline{redundant for} R, if each j ∈ J is redundant for R

(b) \underline{irredundant for} R, if each j ∈ J is irredundant for R

And if J ⊆ @(R) we call J (ir)redundant \underline{in} R, accordingly.

(3) We define

redAt(R) := {j ∈ @(R) | R ↾ j = R ⇂ j}

the \underline{redundant attribute class} of R

irrAt(R) := {j ∈ @(R) | R ↾ j ≠ R ⇂ j}

the \underline{irredundant attribute class} of R

21.8.3 Remark Remark Note that in definition 21.8.2, each single j ∈ I is either redundant or irredundant for R. But a subclass J ⊆ I that has both redundant and irredundant members, is itself neither redundant nor irredundant for R.

Another terminology for “redundant” is “negative” and for “irredundant” is “positive”. But we will not use these terms here.

21.8.4 Example and table methods

Consider a relation R with schema X, where

X = [ \begin{matrix}a ↦ & 𝔹 \\ b ↦ & 𝔹 \\ c ↦ & 𝔹 \\ d ↦ & 𝔹 \end{matrix} ]  and  R = \begin{matrix}a & b & c & d \\ 0 & 0 & 0 & 0 & 1 \\ 1 & 0 & 0 & 0 & 1 \\ 0 & 1 & 0 & 0 & 0 \\ 1 & 1 & 0 & 0 & 1 \\ 0 & 0 & 1 & 0 & 0 \\ 1 & 0 & 1 & 0 & 0 \\ 0 & 1 & 1 & 0 & 0 \\ 1 & 1 & 1 & 0 & 0 \\ 0 & 0 & 0 & 1 & 1 \\ 1 & 0 & 0 & 1 & 1 \\ 0 & 1 & 0 & 1 & 0 \\ 1 & 1 & 0 & 1 & 1 \\ 0 & 0 & 1 & 1 & 0 \\ 1 & 0 & 1 & 1 & 0 \\ 0 & 1 & 1 & 1 & 0 \\ 1 & 1 & 1 & 1 & 0 \end{matrix}

(Actually, R is the truth table of the propositional formula [ [ a ∨ ¬b] ∧ ¬c ∧ [ d ∨ ¬d] ].)

Double tables (introduced in 17.6.1) provide an intuitive tool to decide, if a certain attribute, say a, is redundant. According to 21.6.4(1)(c) and (d), an elimination of a is a reduction onto pr (X, {b, c, d}). And this is done with double tables. We first represent R as a double table with a as the only attribute in the top schema:

R = \begin{aligned}& & & 0 & 1 & a \\ 0 & 0 & 0 & 1 & 1 \\ 1 & 0 & 0 & 0 & 1 \\ 0 & 1 & 0 & 0 & 0 \\ 1 & 1 & 0 & 0 & 0 \\ 0 & 0 & 1 & 1 & 1 \\ 1 & 0 & 1 & 0 & 1 \\ 0 & 1 & 1 & 0 & 0 \\ 1 & 1 & 1 & 0 & 0 \\ b & c & d \end{aligned}

Boolean conjunction ∧ of the two values in each row produces the infimum elimination:

R ↾ a = \begin{matrix}b & c & d \\ 0 & 0 & 0 & 1 ∧ 1 \\ 1 & 0 & 0 & 0 ∧ 1 \\ 0 & 1 & 0 & 0 ∧ 0 \\ 1 & 1 & 0 & 0 ∧ 0 \\ 0 & 0 & 1 & 1 ∧ 1 \\ 1 & 0 & 1 & 0 ∧ 1 \\ 0 & 1 & 1 & 0 ∧ 0 \\ 1 & 1 & 1 & 0 ∧ 0 \end{matrix} = \begin{matrix}b & c & d \\ 0 & 0 & 0 & 1 \\ 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 1 & 1 & 0 & 0 \\ 0 & 0 & 1 & 1 \\ 1 & 0 & 1 & 0 \\ 0 & 1 & 1 & 0 \\ 1 & 1 & 1 & 0 \end{matrix}

Similarly, we obtain the supremum elimination:

R ⇂ a = \begin{matrix}b & c & d \\ 0 & 0 & 0 & 1 ∨ 1 \\ 1 & 0 & 0 & 0 ∨ 1 \\ 0 & 1 & 0 & 0 ∨ 0 \\ 1 & 1 & 0 & 0 ∨ 0 \\ 0 & 0 & 1 & 1 ∨ 1 \\ 1 & 0 & 1 & 0 ∨ 1 \\ 0 & 1 & 1 & 0 ∨ 0 \\ 1 & 1 & 1 & 0 ∨ 0 \end{matrix} = \begin{matrix}b & c & d \\ 0 & 0 & 0 & 1 \\ 1 & 0 & 0 & 1 \\ 0 & 1 & 0 & 0 \\ 1 & 1 & 0 & 0 \\ 0 & 0 & 1 & 1 \\ 1 & 0 & 1 & 1 \\ 0 & 1 & 1 & 0 \\ 1 & 1 & 1 & 0 \end{matrix}

We see here that the two resulting tables are different, so R ↾ a ≠ R ⇂ a and thus a is irredundant in R.

On the other hand, if we perform the same process for the eliminations of d, we find R ↾ d = R ⇂ d:

R  R ↾ d  R ⇂ d^{\begin{aligned}& & & 0 & 1 & d \\ 0 & 0 & 0 & 1 & 1 \\ 1 & 0 & 0 & 1 & 1 \\ 0 & 1 & 0 & 0 & 0 \\ 1 & 1 & 0 & 1 & 1 \\ 0 & 0 & 1 & 0 & 0 \\ 1 & 0 & 1 & 0 & 0 \\ 0 & 1 & 1 & 0 & 0 \\ 1 & 1 & 1 & 0 & 0 \\ a & b & c \end{aligned}  \begin{matrix}a & b & c \\ 0 & 0 & 0 & 1 \\ 1 & 0 & 0 & 1 \\ 0 & 1 & 0 & 0 \\ 1 & 1 & 0 & 1 \\ 0 & 0 & 1 & 0 \\ 1 & 0 & 1 & 0 \\ 0 & 1 & 1 & 0 \\ 1 & 1 & 1 & 0 \end{matrix}  \begin{matrix}a & b & c \\ 0 & 0 & 0 & 1 \\ 1 & 0 & 0 & 1 \\ 0 & 1 & 0 & 0 \\ 1 & 1 & 0 & 1 \\ 0 & 0 & 1 & 0 \\ 1 & 0 & 1 & 0 \\ 0 & 1 & 1 & 0 \\ 1 & 1 & 1 & 0 \end{matrix}}

So d is redundant. If we do this test for the remaining two attributes b and c, we will find that the attribute class of R partitions into the following two subclasses:

redAt(R) = {d}
irrAt(R) = {a, b, c}

21.8.5 Remark

We mentioned, that the table R of the previous example 21.8.4 is the truth table of the propositional formula

φ = [ [ a ∨ ¬b] ∧ ¬c ∧ [ d ∨ ¬d] ]

This provides us with another clue for the understanding of the redundancy concept. The subformula [ d ∨ ¬d] is equivalent to 1. So it is a neutral element of this conjunction and may be deleted without changing the boolean semantics. In other words, [ [ a ∨ ¬b] ∧ ¬c] is still equivalent to φ. That d is redundant if φ is saying that there is an equivalent formula without d.

21.8.6 Lemma

Let X = [X_{i}|i ∈ I] be a proper schema, R ∈ Prel(X) and J ⊆ I. With K := @ (R) and Y := pr (X, K \ J) the following statements are equivalent:

(1) J is redundant for R

(2) K ∩ J is redundant in R

(3) R ↾ (K ∩ J) = R ⇂ (K ∩ J)

(4) R ↾ J = R ⇂ J

(5) R ⇂ J ≡ R

(6) R ↾ J ≡ R

(7) pr (R, K \ J) = cpj (R, K \ J)

(8) pr (R, K \ J) ≡ R

(9) cpj (R, K \ J) ≡ R

(10) R ⇑ Y = R ⇓ Y

(11) R ⇓ Y ≡ R

(12) R ⇑ Y ≡ R

(13) R ⇕ Y is well–defined

(14) Each j ∈ J is redundant for R

(15) Each j ∈ (K ∩ J) is redundant in R

(16) R ↾ j = R ⇂ j for each j ∈ J

(17) R ⇂ j ≡ R for each j ∈ J

(18) R ↾ j ≡ R for each j ∈ J

(19) K ∩ J ⊆ redAt(R)

21.8.7 Proof of 21.8.6 Our proof pictures the following network of equivalences:

(15) — (2) — (19)
|
(3)  (14) — (1)
|  |
(10) — (7) — (4)  (16)
|  |
(11) — (8) — (5) — (17)
|  |
(12) — (9) — (6) — (18)

|

(13)

The details of this argumentation: (14)⇔(16) due to definition 21.8.2(1)(a). (1)⇔(14) is exactly definition 21.8.2(2)(a). (2)⇔(15) again due to definition 21.8.2. (2)⇔(19) due to definition 21.8.2, once again. (3)⇔(4) holds due to 21.5.3(9) and (10), saying that R ⇂ J =

R ⇂ (K ∩ J) and R ↾ J = R ↾ (K ∩ J). (10)⇔(11)⇔(12)⇔(13) is true according to 21.6.6. (5)⇔(8)⇔(11) due to 21.6.4. (6)⇔(9)⇔(12) due to 21.6.4. (4)⇔(7)⇔(10) due to 21.6.4.

(17)⇔(18)⇔(16) Obviously, (16)⇔(17)∧(18). And (17)⇔(18),

as we know by now. Thus (16)⇔(17)and (16)⇔(18). (5)⇔(17)⇔(18)⇔(6) due to 21.5.9. (2)⇔(3) By now we have proof for (1)⇔(4). It follows that:

K ∩ J is redundant for R iff (3). And since K ∩ J ⊆ K, the statements “K ∩ J is redundant for R” and “K ∩ J is redundant in R” are equivalent.

22 Attribute translation

22.1 Introduction

22.1.1 Example

Consider an example relation R, given as

R :=

child : H father : H mother : H

c_{1}  f_{1}  m_{1}
c_{2}  f_{2}  m_{2}
c_{3}  f_{3}  m_{3}

where H is the class of human beings (or less suggestive and more formal, a class of names or strings). Also given a little translator, i.e. a function (or record) between attributes, by

τ := [ \begin{matrix}child ↦ & kind \\ father ↦ & vater \\ mother ↦ & mutter \end{matrix} ]

We define tr(R, τ), the (attribute) translation of R by τ, so that in our particular example

tr(R, τ) :=

kind : H vater : H mutter : H

c_{1}  f_{1}  m_{1}
c_{2}  f_{2}  m_{2}
c_{3}  f_{3}  m_{3}

The result is a “German translation” of the original “English relation”. In this case, the translation is simply a substitution of the attributes in the table.

22.1.2 Example

But things are not always that plain. Taking the same relation R from 22.1.1, but another translator

τ := [ \begin{matrix}father ↦ & parent \\ mother ↦ & parent \end{matrix} ]

we could argue if tr(R, τ) can be well–defined at all. But we do want a very general translation concept and we apply the following principles for its definition.

First of all, if R has an attribute that doesn’t occur in the domain of τ, we leave the attribute unchanged. In our example, child is such an attribute. So at this stage, our example becomes

tr(R, τ) :=

child : H parent : H parent : H

c_{1}  f_{1}  m_{1}
c_{2}  f_{2}  m_{2}
c_{3}  f_{3}  m_{3}

The result is not a well–defined relation, there cannot be two columns with the same attributes. So we merge the two parent columns into one. In order to do that, we treat each of the three graph records accordingly. For each of the three rows ξ ∈ R we produce the translation tr(ξ, τ). But for, say the first member

                   ξ = [ \begin{matrix}child ↦ & c_{1} \\ parent ↦ & f_{1} \\ parent ↦ & m_{1} \end{matrix} ]

the translation tr(ξ, τ) is defined only, if f_{1} = m_{1}. But we assume instead, that fathers and mothers are always two different specimen. tr(ξ, τ) is undefined for this ξ and the other two members as well. Thus we end up with

tr(R, τ) =

                         child : H parent : H

However empty, the result is still well–defined. Nevertheless, there are also examples of relations R and translators τ, where tr(R, τ) is not reasonably defineable.

22.1.3 Remark

In general, the τ–translation tr(R, τ) of a relation R = [X, Γ] is based on the τ–translation of records. The general method has two steps: ♣ First, produce the τ–translation X′ := tr(X, τ) of the

schema. If X′ is not well defined, the whole translation of R fails and aborts here. Otherwise:

♣ For each member x ∈ Γ, produce the τ–translation x′ := tr(x, τ). If x′ is well–defined, it becomes a member of the new graph Γ′. Eventually, [X′, Γ′] is returned as the overall result.

In 22.2, we first develop a general definition of record translations. The translation of relations is fully introduced in 22.4.

22.2 Translation of records

22.2.1 Remark Generalization of images and image classes

Let f : D ⟶ C be a function.

Recall (5.7.3 and 5.7.18), that

(1) for every d ∈ D,

f(d)

is the f–value of d or f–image of d

(2) for every D′ ⊆ D,

f[ D′ ] := {f(d) | d ∈ D′}

is the f–image class of D′

We will now generalize these notions as follows:

(3) For every class A and a ∈ A we define

f([a]) := \begin{cases}f(a) & if a ∈ D \\ a & if a ∉ D \end{cases}

(4) For every class A we define

f[[A]] := {f([a]) | a ∈ A}

Note, that,

(5) f([a]) and f[[A]] are proper generalizations of f(a) and f[ A], respecitvely, in the sense that: for every f : D ⟶ C and if a ∈ A ⊆ D, then f([a]) = f(a) and f[[A]] = f[ A]. So we could have used the same notation again.

(6) For every f : D ⟶ C and each class A we have

f[[A]] = (D \ A) ∪ f[ D ∩ A]

22.2.2 Remark records and pair classes

Recall, that functions can either be given as prescriptions (how to map given things to another thing) or as left–unique pair classes (i.e. argument–value pairs). We repeat this relation here again, but especially for records.

(1) Let A, B be two classes and Π ⊆ A × B. We put

\begin{aligned}L & := & \{a | ⟨a, b⟩ ∈ Π\} \\ R & := & \{b | ⟨a, b⟩ ∈ Π\} \end{aligned}

and we say that Π is

♣ \underline{right unique} iff

for each a ∈ L there is exactly one b ∈ R with ⟨a, b⟩ ∈ Π ♣ \underline{left unique} iff

for each b ∈ R there is exactly one a ∈ L with ⟨a, b⟩ ∈ Π

And in case Π is indeed right unique, we define

rec(Π) := [a ↦ the b ∈ R with ⟨a, b⟩ ∈ π|a ∈ L]

the \underline{record of Π}.

(2) On the other hand, let ξ = [ξ_{i}|i ∈ I] is a record, then

gr(ξ) := {⟨i, ξ_{i}⟩ | i ∈ I}

is \underline{the graph of ξ}.

Obviously, gr(ξ) is a right–unique pair class.

Right–unique pair classes and records can thus be seen as two representations of the same idea in the sense that

(3) for every right–unique pair class Π holds gr(rec(Π)) = Π

(4) for every record ξ holds rec(gr(ξ)) = ξ

In case of finite examples, this is somehow simply another way of writing:

[ \begin{matrix}i_{1} & ↦ & ξ_{1} \\ i_{2} & ↦ & ξ_{2} \\ ⋮ & & ⋮ \\ i_{n} & ↦ & ξ_{n} \end{matrix} ] ⇄_{rec}^{gr}  \{ ⟨i_{1}, ξ_{1}⟩ ; ⟨i_{2}, ξ_{2}⟩ ; ⋮ ; ⟨i_{n}, ξ_{n}⟩\}

record  right–unique

pair class 22.2.3 Definition

Let τ and ξ = [ξ_{i}|i ∈ I] be two records. We define

tr(ξ, τ) := rec(Ξ) where Ξ := {⟨τ([i]), ξ_{i}⟩ | i ∈ I}

is the \underline{(attribute) translation} of ξ by τ
or the τ–\underline{translation} of ξ.

Note, that tr(ξ, τ) is well–defined iff Ξ is right–unique. In that case, we say that ξ is \underline{translatable} by τ (or τ– \underline{translatable}).

22.2.4 Example

Let us investigate some examples similar to the situation in 22.1.1 and 22.1.2.

(1) Given

                                                                              ξ = [ \begin{matrix}child ↦ & c \\ father ↦ & f \\ mother ↦ & m \end{matrix} ] and τ = [ \begin{matrix}child ↦ & kind \\ father ↦ & vater \\ mother ↦ & mutter \end{matrix} ]

we put

Ξ := \begin{cases}⟨τ([child]), ξ(child)⟩ \\ ⟨τ([father]), ξ(father)⟩ \\ ⟨τ([mother]), ξ(mother)⟩ \end{cases}\} = \begin{cases}⟨kind, c⟩ \\ ⟨vater, f⟩ \\ ⟨mutter, m⟩ \end{cases}\}

and obtain

tr(ξ, τ) = rec(Ξ) = [ \begin{matrix}kind ↦ & c \\ vater ↦ & f \\ mutter ↦ & m \end{matrix} ]

(2) Given

                                                                              ξ = [ \begin{matrix}child ↦ & c \\ father ↦ & f \\ mother ↦ & m \end{matrix} ] and τ = [ \begin{matrix}father ↦ & parent \\ mother ↦ & parent \end{matrix} ]

we put

Ξ := \begin{cases}⟨τ([child]), ξ(child)⟩ \\ ⟨τ([father]), ξ(father)⟩ \\ ⟨τ([mother]), ξ(mother)⟩ \end{cases}\} = \begin{cases}⟨child, c⟩ \\ ⟨parent, f⟩ \\ ⟨parent, m⟩ \end{cases}\}

Ξ is not right–unique, tr(ξ, τ) is undefined.

(3) If we take the same τ and the schema X of the example relation R from 22.1.1, i.e.

                                                                              X = [ \begin{matrix}child ↦ & H \\ father ↦ & H \\ mother ↦ & H \end{matrix} ] and τ = [ \begin{matrix}father ↦ & parent \\ mother ↦ & parent \end{matrix} ]

We put

Ξ := \begin{cases}⟨τ([child]), X(child)⟩ \\ ⟨τ([father]), X(father)⟩ \\ ⟨τ([mother]), X(mother)⟩ \end{cases}\} = \begin{cases}⟨child, H⟩ \\ ⟨parent, H⟩ \\ ⟨parent, H⟩ \end{cases}\}

This time, Ξ is right–unique and we obtain

tr(X, τ) = rec(Ξ) = [ \begin{matrix}child ↦ & H \\ parent ↦ & H \end{matrix} ]

22.2.5 Example

Recall from 9.2.1, that a tuple is a special kind of record. We can use tuples as translators. Let us take τ = ⟨3, 2, 1, 4, 4, 6⟩ for example. We generate some τ–translations of records ξ that are tuples as well.

(1) For ξ = ⟨ξ_{1}, ξ_{2}, ξ_{3}⟩ we obtain

tr(ξ, τ) = rec (\begin{cases}⟨τ([1]), ξ_{1}⟩ \\ ⟨τ([2]), ξ_{2}⟩ \\ ⟨τ([3]), ξ_{3}⟩ \end{cases}\}) = rec (\begin{cases}⟨3, ξ_{1}⟩ \\ ⟨2, ξ_{2}⟩ \\ ⟨1, ξ_{3}⟩ \end{cases}\})

= [ \begin{matrix}1 ↦ & ξ_{3} \\ 2 ↦ & ξ_{2} \\ 3 ↦ & ξ_{1} \end{matrix} ] = ⟨ξ_{3}, ξ_{2}, ξ_{1}⟩

In other words, for a ternary tuple ξ, the τ–translation is a

reversion of its components.

(2) For ξ = ⟨ξ_{1}, ξ_{2}, ξ_{3}, ξ_{4}, ξ_{5}⟩ we obtain

tr(ξ, τ) = rec (\begin{cases}⟨3, ξ_{1}⟩ \\ ⟨2, ξ_{2}⟩ \\ ⟨1, ξ_{3}⟩ \\ ⟨4, ξ_{4}⟩ \\ ⟨4, ξ_{5}⟩ \end{cases}\})

The right hand of this equation is well–defined only, if ξ_{4} = ξ_{5}. If that is indeed the case, we obtain

tr(ξ, τ) = ⟨ξ_{3}, ξ_{2}, ξ_{1}, c, c⟩ with c := ξ_{4} = ξ_{5}

In other words, for tuples with 5 (or more) components, the τ–translation is defined only, if the fourth and fifth component are equal.

(3) For ξ = ⟨a, b, c, d, d, e⟩, the constraint ξ(4) = ξ(5) is satisfied. We obtain

tr(ξ, τ) = rec (\begin{cases}⟨3, a⟩ \\ ⟨2, b⟩ \\ ⟨1, c⟩ \\ ⟨4, d⟩ \\ ⟨4, d⟩ \\ ⟨6, e⟩ \end{cases}\}) = [ \begin{matrix}1 ↦ & c \\ 2 ↦ & b \\ 3 ↦ & a \\ 4 ↦ & d \\ 6 ↦ & e \end{matrix} ]

The result is well–defined, but not a tuple anymore. And that happens to all tuples ξ with more than five components.

22.2.6 Lemma

Let τ and ξ = [ξ_{i}|i ∈ I] be two records. If ξ′ := tr(ξ, τ) is well–defined, then

(1) dom(ξ′) = τ[[I]]

(2) cod(ξ′) ⊆ cod(ξ)

22.2.7 Proof of 22.2.6

(1) follows from definition 22.2.3, 22.2, and 22.2.2. (2) is due to the fact, that the values don’t change during translation.

22.3 Translations in Proj(ξ)

22.3.1 Remark

Recall 9.2.4, that for every two classes I and C,

[C|I] := [i ↦ C|i ∈ I]

is the univalent schema with index class I and value C. It maps each i ∈ I to the same value: the class C.

Accordingly and for every given class I

⊛[I|I] = {τ ∈ Rec | dom(τ) ⊆ I, cod(τ) ⊆ I}

That is the class of translations that stay inside I.

22.3.2 Remark and example

For future purposes we need an answer to the following question: Given a record ξ = [ξ_{i}|i ∈ I]. Which τ ∈ ⊛[I|I] translates ξ into one of its projections, i.e. tr(ξ, τ) ∈ Proj(ξ), i.e. tr(ξ, τ) ≤ ξ?

For example, let

I = \{a, b, c, p, q, x, y\}  and  ξ := [ \begin{matrix}a ↦ & 2 \\ b ↦ & 2 \\ c ↦ & 2 \\ p ↦ & 4 \\ q ↦ & 4 \\ x ↦ & 6 \\ y ↦ & 6 \end{matrix} ]

Three members of ⊛[I|I] are given by

τ_{1} := [ \begin{matrix}a ↦ & c \\ b ↦ & c \\ c ↦ & c \\ p ↦ & q \end{matrix} ]  τ_{2} := [ \begin{matrix}a ↦ & p \\ b ↦ & p \\ c ↦ & p \\ p ↦ & a \\ q ↦ & a \end{matrix} ]  τ_{3} := [ \begin{matrix}a ↦ & p \\ b ↦ & p \\ c ↦ & p \end{matrix} ]

The according translations are

tr(ξ, τ_{1}) = rec (\begin{cases}⟨c, 2⟩ \\ ⟨c, 2⟩ \\ ⟨c, 2⟩ \\ ⟨q, 4⟩ \\ ⟨q, 4⟩ \\ ⟨x, 6⟩ \\ ⟨y, 6⟩ \end{cases}\}) = [ \begin{matrix}c ↦ & 2 \\ q ↦ & 4 \\ x ↦ & 6 \\ y ↦ & 6 \end{matrix} ] ∈ Proj(ξ)

tr(ξ, τ_{2}) = rec (\begin{cases}⟨p, 2⟩ \\ ⟨p, 2⟩ \\ ⟨p, 2⟩ \\ ⟨a, 4⟩ \\ ⟨a, 4⟩ \\ ⟨x, 6⟩ \\ ⟨y, 6⟩ \end{cases}\}) = [ \begin{matrix}a ↦ & 4 \\ p ↦ & 2 \\ x ↦ & 6 \\ y ↦ & 6 \end{matrix} ] ∉ Proj(ξ)

tr(ξ, τ_{3}) = rec (\begin{cases}⟨p, 2⟩ \\ ⟨p, 2⟩ \\ ⟨p, 2⟩ \\ ⟨p, 4⟩ \\ ⟨q, 4⟩ \\ ⟨x, 6⟩ \\ ⟨y, 6⟩ \end{cases}\}) = undefined

A general answer to the question is the following

22.3.3 Definition

If ξ = [ξ_{i}|i ∈ I] is a record and k ∈ I, then

[ k]_{ξ} := {j ∈ I | ξ_{j} = ξ_{k}}
the the \underline{ξ–equivalence class of k}

22.3.4 Lemma

For every record ξ = [ξ_{i}|i ∈ I] and τ ∈ ⊛[I|I], the following statements are equivalent:

(1) The τ–translation of ξ is well–defined with tr(ξ, τ) ∈ Proj(ξ)

(2) ξ_{τ(i)} = ξ_{i} for every i ∈ dom(τ)

(3) τ ∈ ⊛ [ [ i]_{ξ} i ∈ I ]

(4) For every υ ∈ Proj(ξ) the τ–translation of υ is well– defined with tr(υ, τ) ∈ Proj(ξ).

22.3.5 Proof of 22.3.4

(1)⇔(2) Suppose, ξ′ := tr(ξ, τ) is a well–defined member of Proj(ξ). That means, ξ′ = [ξ_{j}|j ∈ J] for some J ⊆ I. For each i ∈ I, ξ′_{τ([i])} is defined as ξ, so ξ_{τ([i])} = ξ_{i}. In case i ∉ dom(τ), ξ′_{τ([i])} = ξ′_{i} = ξ_{i} anyway. So tr(ξ, τ) ∈ Proj(ξ) iff ξ_{τ([ξ])} = ξ_{i} for all i ∈ dom(τ).

(2)⇔(3) Due to the the definition of [ i]_{ξ}, we have ξ_{τ([i])} = ξ_{i} iff τ([i]) ∈ [ i]_{ξ}. Thus ξ_{τ([i])} = ξ_{i} for all i ∈ I iff τ ∈ ⊛ [ [ i]ξ i ∈ I ].

(1)⇔(4) υ ∈ Proj(ξ) is saying that υ ≤ ξ. An immediate consequence of definition 22.2.3 is the fact that the existence of tr(ξ, τ) and υ ≤ ξ implies the existence of tr(υ, τ) with tr(υ, τ) ≤ tr(ξ, τ). So (1)implies (4). And with ξ ≤ ξ, the other direction holds as well.

22.3.6 Example

Applied to the previous example ξ from ??: The class of all τ ∈ ⊛[I|I] such that tr(ξ, τ) is a (well–defined) element of Proj(ξ) is given by

⊛ [ [ i]_{ξ} i ∈ I ] = ⊛ [ \begin{matrix}a ↦ & \{a, b, c\} \\ b ↦ & \{a, b, c\} \\ c ↦ & \{a, b, c\} \\ p ↦ & \{p, q\} \\ q ↦ & \{p, q\} \\ x ↦ & \{x, y\} \\ y ↦ & \{x, y\} \end{matrix} ]

22.4 Translation of relations

22.4.1 Definition (attribute) translation of relations

Let R = [X, Γ] be a relation and τ a record. If tr(X, τ) is well–defined, we say that R is τ–\underline{translatable} and we define

tr(R, τ) := [ \begin{matrix}tr(X, τ) \\ \{tr(x, τ) | x ∈ Γ is τ–translatable\} \end{matrix} ]

the \underline{(attribute) translation} of R by τ.

22.4.2 Example

Consider example 22.1.1 again with

R :=

child : H father : H mother : H

c_{1}  f_{1}  m_{1}
c_{2}  f_{2}  m_{2}
c_{3}  f_{3}  m_{3}

= [ \begin{matrix}[ & child ↦ H father ↦ H mother ↦ H & ] \\ \{ & [ \begin{matrix}child ↦ & c_{1} \\ father ↦ & f_{1} \\ mother ↦ & m_{1} \end{matrix} ] , [ \begin{matrix}child ↦ & c_{2} \\ father ↦ & f_{2} \\ mother ↦ & m_{2} \end{matrix} ] , [ \begin{matrix}child ↦ & c_{3} \\ father ↦ & f_{3} \\ mother ↦ & m_{3} \end{matrix} ] & \} \end{matrix} ]

and

                τ := [ \begin{matrix}child ↦ & kind \\ father ↦ & vater \\ mother ↦ & mutter \end{matrix} ]

The τ–translation of the schema exists

       tr ([ \begin{matrix}child ↦ & H \\ father ↦ & H \\ mother ↦ & H \end{matrix} ] , τ) = [ \begin{matrix}kind ↦ & H \\ vater ↦ & H \\ mutter ↦ & H \end{matrix} ]

and for each

                   [ \begin{matrix}child ↦ & c_{i} \\ father ↦ & f_{i} \\ mother ↦ & m_{i} \end{matrix} ] ∈ R

we have

      tr ([ \begin{matrix}child ↦ & c_{i} \\ father ↦ & f_{i} \\ mother ↦ & m_{i} \end{matrix} ] , τ) = [ \begin{matrix}kind ↦ & c_{i} \\ vater ↦ & f_{i} \\ mutter ↦ & m_{i} \end{matrix} ]

so that

  tr(R, τ) = [ \begin{matrix}[ & kind ↦ H vater ↦ H mutter ↦ H & ] \\ \{ & [ \begin{matrix}kind ↦ & c_{1} \\ vater ↦ & f_{1} \\ mutter ↦ & m_{1} \end{matrix} ] , [ \begin{matrix}kind ↦ & c_{2} \\ vater ↦ & f_{2} \\ mutter ↦ & m_{2} \end{matrix} ] , [ \begin{matrix}kind ↦ & c_{3} \\ vater ↦ & f_{3} \\ mutter ↦ & m_{3} \end{matrix} ] & \} \end{matrix} ]

=

               kind : H vater : H mutter : H

c_{1}  f_{1}  m_{1}
c_{2}  f_{2}  m_{2}
c_{3}  f_{3}  m_{3}

as expected.

22.4.3 Example

Consider the common linear order relation on the set of integers ≤: ℤ ↭ ℤ. In example 22.2.5 we already used tuples as translators for tuples. Let us now take τ := ⟨2, 1⟩ as a translator for R.

In general, the τ–translation of any pair ξ = ⟨ξ_{1}, ξ_{2}⟩ is

tr(ξ, τ) = rec (\begin{cases}⟨⟨2, 1⟩([1]), ⟨ξ_{1}, ξ_{2}⟩(1)⟩ \\ ⟨⟨2, 1⟩([2]), ⟨ξ_{1}, ξ_{2}⟩(2)⟩ \end{cases}\})
= rec (\begin{cases}⟨2, ξ_{1}⟩ \\ ⟨1, ξ_{2}⟩ \end{cases}\}) = [ \begin{matrix}2 ↦ & ξ_{1} \\ 1 ↦ & ξ_{2} \end{matrix} ] = ⟨ξ_{2}, ξ_{1}⟩

We can use this result now first for the τ–translation of the schema ⟨ℤ, ℤ⟩ of R and obtain

tr(⟨ℤ, ℤ⟩, τ) = ⟨ℤ, ℤ⟩

This is a well–defined tuple, so R is τ–translatable with

tr(≤, τ) = [ \begin{matrix}⟨ℤ, ℤ⟩ \\ \{⟨b, a⟩ | a ≤ b\} \end{matrix} ]

and that is ≥, the greater–or–equal relation on ℤ.

22.4.4 Remark translations in mathematics

The example in 22.1.1 suggests that (attribute) translations are important operations in relational database applications. But they are also very useful in traditional mathematics. They provide the means to assign meanings to formulas of predicate logic.

A typical situation is a given expression like “R(x, y)” together with an interpretation I, that turns the relation symbol R into a proper binary endorelation R^{I} on a certain class C^{I}. By means of attribute translations, this expression “R(x, y)” has an own proper meaning: tr(R^{I}, ⟨x, y⟩). In more detail: ♣ R : C ↭ C is the given signature, it says that R is the

symbol of a binary endorelation, defined on on a class symbolized by C.

♣ R^{I} : C^{I} ↭ C^{I} is a concrete binary endorelation on C^{I}, given by say

R^{I} = [ \begin{matrix}C^{I} ↭ C^{I} \\ ⟨a, b⟩ ⇝ φ(a, b) \end{matrix} ]

♣ If the schema translation tr(⟨C^{I}, C^{I}⟩, ⟨x, y⟩) is well– defined then

tr(R^{I}, ⟨x, y⟩) = [ \begin{matrix}C^{I} ↭ C^{I} \\ [ \begin{matrix}x ↦ & a \\ y ↦ & b \end{matrix} ] ⇝ ⟨a, b⟩ ∈ R^{I} \end{matrix} ]

In traditional predicate logic, interpretations assign meanings to formulas only, if the formulas are closed. And then, their meaning is either true (when the interpretation is a model for the formula) or false. Atomic formulas like R(x, y) are not closed, x and y are free variables. But with attribute translations of this kind, we provide a semantics for R(x, y). And together with the other operations ⊓, ⊔, ¬, …, we now have a denotational semantics for all formulas, not only the closed ones.

22.5 Translations in Prel(X)

22.5.1 Remark introduction

We saw, that a translation of a given relation may or may not exist. But sometimes it is important to know in advance if the outcome is well–defined. When we consider a structure or algebra based on a carrier class R of relations, we want to know the class T of all the suitable relations for R. “Suitable” means, that R is the “T –closure” of R in the sense that, for every τ ∈ T and R ∈ R, the τ–translation of R is well–defined and again a member of R.

There is one relation class R which is important here, namely the class Prel(X), for a given schema X. We use Trans(X) to denote the “suitable” translation class for Prel(X). Given X = [X_{i}|i ∈ I], it makes sense to only include translations τ with arguments and values from I, i.e. τ ∈ ⊛[I|I].

22.5.2 Definition translator classes

Let X = [X_{i}|i ∈ I] be a proper schema. We define

Trans(X) := { τ ∈ ⊛[I|I] tr(R, τ) ∈ Prel(X) for each R ∈ Prel(X) }

the \underline{translator class} on X

22.5.3 Remark

Note, that in definition 22.5.2 the characterization “tr(R, τ) ∈ Prel(X) for each R ∈ Prel(X)” implies, that tr(R, τ) is actually well–defined for all R.

22.5.4 Lemma

If X = [X_{i}|i ∈ I] is a proper schema, then

Trans(X) = ⊛ [ [ i]_{X} i ∈ I ]

22.5.5 Proof of 22.5.4

So let X = [X_{i}|i ∈ I] be given.

Again (see 22.3.3), [ i]_{X} := {j ∈ I | X_{j} = X_{i}} is the X–equivalence class of i, for each i ∈ I. Prel(X) is (see 17.8.1) defined to be the class of all relations with a schema Y ∈ Proj(X). According to 22.4.1, tr(R, τ) is defined iff tr(Y, τ), the τ–translation of its schema, is defined. So

Trans(X) = { τ ∈ ⊛[I|I] tr(Y, τ) ∈ Proj(X) for each Y ∈ Proj(X) }

Due to 22.3.4, the right hand side of this equation is equal to ⊛ [ [ i]_{X} i ∈ I ].

22.5.6 Lemma

For every proper schema X = [X_{i}|i ∈ I] the following statments are equivalent:

(1) X is univalent (i.e. X_{i} = X_{j} for all i, j ∈ I)

(2) Trans(X) = ⊛[I|I]

22.5.7 Proof of 22.5.6

Trans (X) = ⊛[I|I]

⇔ tr (R, τ) ∈ Prel (X) for all R ∈ Prel (X) and τ ∈ ⊛[I|I]

⇔ tr (Y, τ) ∈ Proj (X) for all Y ∈ Proj (X) and τ ∈ ⊛[I|I]

⇔ X_{τ(i)} = X_{i} for each i ∈ I and τ ∈ ⊛[I|I]

due to 22.3.4

⇔ X_{j} = X_{k} for all j, k ∈ I

Part IX

Theory algebras of relations

23 Theory algebras on Prel (X)

23.0.8 introduction and overview

In this section we concentrate on the effect of the two relations ⊑ and ⊴ on a given relation class Prel (X). We already established that each one is a quasi–order relation (19.1.6 and 20.4.12). In fact, and that will be the theme here, each one turns Prel (X) into a complete quasi–boolean lattice.

Recall (see chapter III ) the difference between a quasi–boolean lattice in general and a boolean lattice in particular: for a real boolean lattice, the typical boolean operations (the join of two elements, the complement, the bottom element etc.) are unique, a boolean lattice is a boolean algebra. For a quasi– boolean lattice however, these operations do exists (that is the very meaning of the term), but they are not necessarily unique. Take the example (see 6.4) of the formulas Form (𝔸) on some 𝔸, together with the quasi–boolean order ⇒. There is a bottom element 0, but there are different other bottom elements as well: [ a ∧ ¬a], [ 0 ∧ 1 ], etc.

The structures imposed by ⊑ and ⊴ on Prel (X) are indeed “quasi” in this sense, at least if X is not trivial. We will proof that they are quasi–boolean lattices, but we also want two quasi–boolean algebras with an actual and well–defined set of boolean operators to operate with. The selection of various opertors we defined so far does provide all we need for the structure on ⊑: we have a meet ⊓ and join ⊔, a negator ¬ and two extremes ⊥ and ⊤.

For the structure on ⊴, the situation is more complicated. We have a couple of possibilities available to operate on the relation schemas: ∥, ⇓, ⇑, ⇂, ↾, pr, cpj and some others. But none of them is defined on relations only, they all have two different types of arguments. For example, ◯ 1 ⇓ ◯ 2 is defined on ◯ 1 ∈ Prel (X) and ◯ 2 ∈ Proj (Z). For our search for proper boolean operations we can either modify the domain of the available operations, which is quite easy: e.g. for R, S ∈ Prel (X) we could declare R ⇓ S := R ⇓ x (S). Or we could create an entire new set of operations. In the sequel, we will do both. And in the end, we have a couple of quasi–boolean algebras defined on ⟨Prel (X) , ⊴⟩.^{35}

The whole idea of a theory algebra as a double quasi–ordered structure is the core idea of this whole text. We have added a section on the theory algebra of bit value relations, where we take this simple and important relations and discuss and display their algebra in detail. In these examples, the important properties of all the more abstract cases are reflected already and a contemplation on the order diagrams displayed there may help to grasp the whole idea.

The structure on ⊴ is called syntactic, the structure on ⊑ is called semantic, the specific combination of the two is the theory structure (see 3.4.1 for the motivation of this terminology).

23.1 The semantic structures on

Prel (X)

23.1.1 Definition

If X is a proper schema, then

𝔓𝔯𝔢𝔩^{⊑}(X) := ⟨Prel (X) , ⊑, ≡, ⊥, ⊤, ⊓, ⊔, ∏, ∐, ¬⟩

is the \underline{semantic algebra} (on Prel (X)) (of X)

23.1.2 Lemma

𝔓𝔯𝔢𝔩^{⊑}(X) is a complete quasi–boolean algebra, for every proper schema X.

23.1.3 Proof of 23.1.2

Complete quasi–boolean algebras (see definition 7.6.2(5)), and 𝔓𝔯𝔢𝔩^{⊑}(X) in particular, must have the following properties:

(i) ⟨Prel (X) , ⊑, ≡⟩ is a quasi–ordered class.

That is true according to 20.4.12.

And in this quasi–ordered structure ⟨Prel (X) , ⊑, ≡⟩, (ii) ⊥ must be a least element and ⊤ a greatest element.

That is true according to 20.4.21(17) and (18). (iii) ∏ is a big conjunctor and ∐ is a big disjunctor.

In other words, ∏R is a greatest lower and ∐R a least upper bound, for every R ⊆ Prel (X). And that is true according to 20.4.19(3) and (4).

(iv) ⊓ is a meet and ⊔ is a join operator.

In other words, R ⊓ S is a greatest lower and R ⊔ S is a least upper bound of R and S, for all R, S ∈ Prel (X). And that means, that R⊓S ≡ ∏ {R, S} and R⊔S ≡ ∐ {R, S}, which is true according to 20.4.21(9) and (10).

(v) The structure is distributive.

R ⊓ (S ⊔ T) ≡ (R ⊓ S) ⊔ (R ⊓ T) is true, due to 20.4.21(11), R ⊔ (S ⊓ T) ≡ (R ⊔ S) ⊓ (R ⊔ T) is true, due to 20.4.21(12), for all R, S, T ∈ Prel (X).

(vi) ¬ is a complement function (7.5.2).

R ⊓ ¬R ≡ ⊥ and R ⊔ ¬R ≡ ⊤ is true for all R ∈ Prel (X), according to 20.4.21(21) and (22).

23.1.4 Lemma

⟨Prel (X) , ⊑⟩ is a complete quasi–boolean lattice, for every proper schema X.

23.1.5 Proof of 23.1.4

This is an immediate consequence of 23.1.2, according to definition 7.6.2(5).

35The practical applications for theory algebras will probably rather use the original mixed domain operators. For example, in logic, the quantor ∀◯ 1 . ◯ 2 is very much the infimum eliminator ◯ 2 ↾ ◯ 1 . But from a more theoretical point of view, it is much more elegant to just have one sort of arguments only.

23.2 Selective syntactic structures on Prel (X)

23.2.1 Definition

Let X be a proper schema. A \underline{syntactic selector} on X is a function ς : Proj (X) ⟶ Prel (X) such that x (ς (Y)) = Y, for all Y ∈ Proj (X).

23.2.2 Example

We already have defined some syntactic selectors: by restricting ⊥_{◯ 1} and ⊤_{◯ 1} from 19.3.1 and Id_{◯ 1} from 19.2.1 to Prel (X) for a given proper schema X we obtain three syntactic selectors on X:

(1) ⊥_{◯ 1} = [ \begin{matrix}Proj (X) ⟶ Prel (X) \\ Y ↦ [\begin{matrix}Y \\ ∅ \end{matrix} ] \end{matrix} ]

(2) ⊤_{◯ 1} = [ \begin{matrix}Proj (X) ⟶ Prel (X) \\ Y ↦ [\begin{matrix}Y \\ ⊗Y \end{matrix} ] \end{matrix} ]

(3) Id_{◯ 1} = [ \begin{matrix}Proj (X) ⟶ Prel (X) \\ Y ↦ [\begin{matrix}Y \\ υ ⇝ ∀i, j ∈ dom (Y) . υ_{j} = υ_{k} \end{matrix}] \end{matrix} ]

23.2.3 Definition

Let X be a proper schema and ς a syntactic selector on X. We define

𝔓𝔯𝔢𝔩_{ς}^{⊴}(X) := ⟨\begin{matrix}Prel (X) , \\ ⊴, ≜, ∅_{ς}, 1_{ς}, ∧_{ς}, ∨_{ς}, ⋀_{ς}, ⋁_{ς}, -_{ς} \end{matrix}⟩

the \underline{selective syntactic structure} of ς over X

where

∅_{ς} := ς(⟨⟩) 1_{ς} := ς(X)

◯ 1 ∧_{ς} ◯ 2 := [ \begin{matrix}Prel (X) × Prel (X) ⟶ Prel (X) \\ ⟨R, S⟩ ↦ ς (x (R) ∧ x (S)) \end{matrix} ]

◯ 1 ∨_{ς} ◯ 2 := [ \begin{matrix}Prel (X) × Prel (X) ⟶ Prel (X) \\ ⟨R, S⟩ ↦ ς (x (R) ∨ x (S)) \end{matrix} ]

⋀ς := [ \begin{matrix}P (Prel (X)) ⟶ Prel (X) \\ R ↦ \begin{cases}ς ( ⋀_{R∈R}x (R)) & if R ≠ ∅ \\ ς(X) & if R = ∅ \end{cases} \end{matrix} ]

⋁ς := [ \begin{matrix}P (Prel (X)) ⟶ Prel (X) \\ R ↦ ς ( ⋁_{R∈R}x (R)) \end{matrix} ]

-_{ς} := [ \begin{matrix}Prel (X) ⟶ Prel (X) \\ R ↦ ς (X \ x (R)) \end{matrix} ]

23.2.4 Lemma

𝔓𝔯𝔢𝔩_{ς}^{⊴}(X) is a complete quasi–boolean algebra, for every proper schema X and syntactic selector ς on X.

23.2.5 Proof of 23.2.4

Let X = [X_{i}|i ∈ I] be the given proper schema. Recall, that for all R, S ∈ Prel (X),

R ⊴ S iff x (R) ≤ x (S) iff @ (R) ⊆ @ (S)

We proceed with the same steps as in the proof of 23.1.2.

(i) ⟨Prel (X) , ⊴, ≜⟩ is a quasi–ordered class.

That is true, due to 19.1.6.

And in this quasi–ordered class we have: (ii) ∅_{ς} is a least and 1_{ς} is a top element.

For every R ∈ Prel (X) holds ∅_{ς} ⊴ R iff @ (∅_{ς}) ⊆ @ (R) iff ∅ ⊆ @ (R), and that is always true. On the other hand, R ⊴ 1_{ς} iff x (R) ≤ X, which is true because R ∈ Prel (X).

(iii) ⋀_{ς} is a big conjunctor and ⋁_{ς} is a big disjunctor. We proof this for ⋀_{ς}, a proof for ⋁_{ς} is similar. ⋀_{ς} is a big conjunctor iff ⋀_{ς} R is the greatest lower bound (g.l.b.) of R in ⟨Prel (X) , ⊴⟩, for every R ⊆ Prel (X). That is the case exactly when x (⋀_{ς} R) is the g.l.b. of {x (R) | R ∈ R} in ⟨Proj (X) , ≤⟩, i.e. iff ⋀{x (R) | R ∈ R} is the g.l.b of {x (R) | R ∈ R} in ⟨Proj (X) , ≤⟩. Which is true indeed, for every R (including R = ∅ in particular).

(iv) R ∧_{ς} S ≜ ⋀_{ς} {R, S} and R ∨_{ς} S ≜ ⋁_{ς} {R, S}. For R, S ∈ Prel (X) we have R ∧_{ς} S = ς ((x (R) ∧ x (S))) = ς (⋀ {x (R) , x (S)}) = ⋀_{ς} {R, S}. And similarly, R ∨_{ς} S ≡ ⋁_{ς} {R, S}.

(v) The distributive laws are satisfied.

If R, S, T ∈ Prel (X) with A = @ (R), B = @ (S), C = @ (T), then

\begin{aligned}& R ∧_{ς} (S ∨_{ς} T) ≜ (R ∧_{ς} S) ∨_{ς} (R ∧_{ς} T) \\ iff & A ∩ (B ∪ C) = (A ∩ B) ∪ (A ∩ C) \end{aligned}

and the latter is a general truth for all classes A, B, C. Similarly, we can see that R ∨_{ς} (S ∧_{ς} T) ≜ (R ∨_{ς} S) ∧_{ς} (R ∨_{ς} T).

(vi) -_{ς} is a complement function (7.5.2).

If R = [Y, Γ] ∈ Prel (X), then -_{ς}R = ς (X \ Y). We have R ∧_{ς} (-_{ς}R) = ς (Y ∧ (X \ Y)) = ∅_{ς} and R ∨_{ς} (-_{ς}R) = ς (Y ∨ (X \ Y)) = 1_{ς}. Thus -_{ς} is indeed a complement function.

23.2.6 Lemma

⟨Prel (X) , ⊴, ≜⟩ is a complete quasi–boolean lattice, for every proper schema X.

23.2.7 Proof of 23.2.6

Immediate consequence of 23.2.4 by means of 7.6.2(5).

23.3 The 3–carrier syntactic structures on Prel (X)

23.3.1 Repetition

(1) Recall 6.2.2, that the power structure of a given class I

𝔓 (I) = ⟨P (I) , ⊆, ∅, 1, ∩, ∪, ⋂, ⋃, ∁⟩

is the usual complete boolean algebra with

1 := I and ∁◯ 1 := [\begin{matrix}P (I) ⟶ P (I) \\ A ↦ C \ A \end{matrix}]

(2) Recall 11.9.1, that

𝔓𝔯𝔬𝔧 (X) = ⟨Proj (X) , ≤, ⟨⟩, X, ∧, ∨, ⋀, ⋁, -⟩

is the complete boolean algebra of projections of a record or schema X, where

⋀ ∅ := X and -◯ 1 := [\begin{matrix}Proj (X) ⟶ Proj (X) \\ Y ↦ X \ Y \end{matrix}]

(3) Recall 5.8.6, that 𝔖 † 𝔖′ is the combination of two structures 𝔖 and 𝔖′. The result basically is the union of the carrier classes and the operations.

23.3.2 Definition

For every proper schema X = [X_{i}|i ∈ I] we define

𝔓𝔯𝔢𝔩_{3}^{⊴}(X) := ⟨\begin{matrix}Prel (X) , Proj (X) , P (I) , \\ ⊴, ≜, ⊥_{◯ 1} , ⊤_{◯ 1} , @, x, ∥, ⇓, ⇑, ⇂, ↾ \end{matrix}⟩

the \underline{3–carrier syntactic structure} of X

𝔓𝔯𝔢𝔩_{3}^{⊴}(X) := 𝔓𝔯𝔢𝔩_{3}^{⊴}(X) † 𝔓𝔯𝔬𝔧 (X) † 𝔓 (I)

the \underline{3–structure syntactic structure} of X 23.3.3 Remark the 3–carrier syntactic structure

The 3–carrier syntactic structure of a given proper schema X = [X_{i}|i ∈ I] is the structure made of 3 carrier classes: relations Prel (X), schemas Proj (X) and attribute (or identifier) classes P (I). And a couple of operations, all defined in earlier chapters. Next to ⊴ and ≜, there are:

A couple of functions that serve as converters between the three carrier classes: ♣ ⊥_{◯ 1} , ⊤_{◯ 2} : Proj (X) ⟶ Prel (X) the empty and full re-

lation function (19.3.1) with ⊥_{⟨⟩} = ⊥ and ⊤_{⟨⟩} = ⊤, ♣ @ : Prel (X) ⟶ P (I) the attribute class function (??) ♣ x : Prel (X) ⟶ Proj (X) the schema function (??)

And operations to modify the schema of relations: ♣ ∥, ⇓, ⇑: Prel (X)×Proj (X) ⟶ Prel (X) the expander and

the supremum and infimum reductor (20.1.1 and 21.6.1) ♣ ⇂, ↾: Prel (X) × P (I) ⟶ Prel (X) the supremum and in-

fimum eliminators (21.4.1)

All these functions are well–defined on their entire domains, because both Prel (X) and Proj (X) are (pairwise) compatible.

23.3.4 Remark more or less operations

The selection of operations in 𝔓𝔯𝔢𝔩_{3}^{⊴} is somewhat arbitrary. Earlier on we defined a couple of other operations that could equally well added to the definition of this structure. Most of these additional operations are definable in terms of the chosen ones.

Additional schema comparing relations would have been:

♣ ≬: Prel (X) ↭ Prel (X) the distinctness relation

(19.1.2(3)), which can be derived by R ≬ S ⇔ (@R∩@S = ∅) ♣ ⌣: Prel (X) ↭ Prel (X) the compatibility relation; which

is superfluous in this context, because R ⌣ S holds anyway for all R, S ∈ Prel (X) (19.1.10(4)).

More carrier class conversions are: ♣ Id_{◯ 1} : Proj (X) ⟶ Prel (X) the identity relation con-

structor (19.2.1). This is indeed a converter between two of the carrier classes in 𝔓𝔯𝔢𝔩_{3}^{⊴}, one that cannot be derived from it in general and adds a whole new dimension. But we exclude it here for several reasons and treat it as an extra additional operation.

♣ dom : Proj (X) ⟶ P (I) is also a converter between two of the carrier classes. But neither its source nor its target is the relation class. And besides, it can be derived by dom (Y) = @ (⊥_{Y} ) = @ (⊤_{Y} ).

More relation schema modifiers are: ♣ pr, cpj : Prel (X) × P (I) −−→ Prel (X) are only defined as

partial functions in 21.2.2. And for their defined arguments, they can be derived in 𝔓𝔯𝔢𝔩_{3}^{⊴}(X) by

pr (R, J) = R ⇂ (@ (R) \ J) cpj (R, J) = R ↾ (@ (R) \ J)

♣ ⇕: Prel (X) × Proj (X) −−→ Prel (X) the equivalent reductor (21.6.1) is only a partial function. And the restriction to its defined arguments coincides with both ⇓ and ⇑, i.e. if R ⇕ Y is defined, then R ⇕ Y = R ⇑ Y = R ⇓ Y, according to 21.6.6(3).

23.3.5 Remark the 3–structure syntactic structure The 3–structure syntactic structure is fully given by

𝔓𝔯𝔢𝔩_{3}^{⊴}(X) = ⟨\begin{matrix}Prel (X) , Proj (X) , P (I) , \\ ⊴, ≜, ⊥_{◯ 1} , ⊤_{◯ 1} , @, x, ∥, ⇓, ⇑, ⇂, ↾, \\ ≤, ⟨⟩, X, ∧, ∨, ⋀, ⋁, -, ⊆, ∅, 1, ∩, ∪, ⋂, ⋃, ∁ \end{matrix}⟩

The addition of the operations of 𝔓𝔯𝔬𝔧 (X) and 𝔓 (I) enables us to simulate the full set of boolean operations on ⟨Prel (X) , ⊴⟩.

More precisely, we e.g. obtain a complete quasi–boolean algebra if we fix some constant T ∈ {⊥, ⊤} and define

𝔓𝔯𝔢𝔩_{T}^{⊴}(X) := ⟨Prel (X) , ⊴, ≜, ˆ∅, ˆ1, ˆ∧, ˆ∨, ˆ⋁, ˆ⋀,ˆ-⟩

and define

\begin{aligned}ˆ∅ & := & T \\ ˆ1 & := & T ∥ X \\ Rˆ∧S & := & T ∥ (x (R) ∧ x (S)) \\ Rˆ∨S & := & T ∥ (x (R) ∨ x (S)) \\ ˆ⋀R & := & T ∥ ⋀_{R∈R}x (R) \\ ˆ⋀R & := & T ∥ ⋀_{R∈R}x (R) \\ ˆ-R & := & T ∥ -x (R) \end{aligned}

for all R, S ∈ Prel (X) and R ⊆ Prel (X).

In fact, it is an easy exercise to confirm that

𝔓𝔯𝔢𝔩_{T}^{⊴}(X) = 𝔓𝔯𝔢𝔩_{ς}^{⊴}(X) with ς = \begin{cases}⊥_{◯ 1} & if T = ⊥ \\ ⊤_{◯ 2} & if T = ⊤ \end{cases}

23.4 The 2–carrier syntactic structures on Prel (X)

23.4.1 Remark

The 3–structure syntactic structure 𝔓𝔯𝔢𝔩_{3}^{⊴}(X) is somehow redundant, because the two structure 𝔓𝔯𝔬𝔧 (X) and 𝔓 (I) are isomorph (11.9.3). Since X is fixed in the context of this structure, we could represent each Y = [Y_{j}|j ∈ J] ∈ Proj (X) just by its domain J ∈ P (I), a reconstruction of Y is always given by Y = pr (X, J). This way, we could replace the whole structure 𝔓𝔯𝔬𝔧 (X) by its isomorph counterpart 𝔓 (I). We just need to replace the operations like ⇓: Prel (X) × Proj (X) ⟶ Prel (X) by a its according mutation ¨⇓ : Prel (X) × P (I) ⟶ Prel (X).

We use the two dots on ¨⇓ to explicitely distinguish this “2– carrier version” from the original ⇓. But in practice it should be save to write ⇓ again.

23.4.2 Definition

Let X = [X_{i}|i ∈ I] be a proper schema. We define

¨⊥_{◯ 1} := [ \begin{matrix}P (X) ⟶ Prel (X) \\ J ↦ ⊥_{pr(X,J)} \end{matrix} ]

¨⊤_{◯ 1} := [ \begin{matrix}P (X) ⟶ Prel (X) \\ J ↦ ⊤_{pr(X,J)} \end{matrix} ]

◯ 1 ¨∥◯ 2 := [ \begin{matrix}Prel (X) × P (I) ⟶ Prel (X) \\ ⟨R, J⟩ ↦ R ∥ pr (X, J) \end{matrix} ]

◯ 1 ¨⇓◯ 2 := [ \begin{matrix}Prel (X) × P (I) ⟶ Prel (X) \\ ⟨R, J⟩ ↦ R ⇓ pr (X, J) \end{matrix} ]

◯ 1 ¨⇑◯ 2 := [ \begin{matrix}Prel (X) × P (I) ⟶ Prel (X) \\ ⟨R, J⟩ ↦ R ⇑ pr (X, J) \end{matrix} ]

23.4.3 Definition

For every proper schema X = [X_{i}|i ∈ I] we define

𝔓𝔯𝔢𝔩_{2}^{⊴}(X) := ⟨\begin{matrix}Prel (X) , P (I) , \\ ⊴, ≜, ¨⊥_{◯ 1} , ¨⊤_{◯ 1} , @, ¨∥, ¨⇓, ¨⇑, ⇂, ↾ \end{matrix}⟩

the \underline{2–carrier syntactic structure} of X

𝔓𝔯𝔢𝔩_{2}^{⊴}(X) := 𝔓𝔯𝔢𝔩_{2}^{⊴}(X) † 𝔓 (I)

the \underline{2–structure syntactic structure} of X

23.5 The 1–carrier syntactic structures on Prel (X)

23.5.1 Remark

As yet another variation of the syntactic structure we could reduce the carrier classes even further and only keep the relation class Prel (X) itself. This way, we derive a “1–carrier syntactic structure” from the 2–carrier version by e.g. replacing R ⇂ J for R ∈ Prel (X) and J ∈ P (I) by R˙⇂@ (S) where R, S ∈ Prel (X).

From the ⊴–ordered point of view, there is a great resemblance between the 1–, 2–, and 3–carrier syntactic structures and it is easy to change from one to the other, as we demonstrated in 23.3.5, for example. In other words, operations from one structure can be simulated by operations of the other up to ≜–equivalence.^{36} With one exception: the 1–carrier syntactic structure 𝔓𝔯𝔢𝔩_{1}^{⊴}(X) is not able to quasi–simulate a complete quasi–boolean algebra on ⟨Prel (X) , ⊴⟩, but only the weaker generalized quasi–boolean algebra. In general, it might not have a top element and no complementation, but only the relative complementation (23.5.4).

Many mathematical surveys, universal algebra for example,

36Yet another criterion for this “equal power” of the structures is to say that, for every given class R of relations, its closure, i.e. the class of all the relations that can be generated from R with the given operations, is quasi–equal for each structure. We introduce subalgebras and closures properly at a later point. concentrate on algebras as structures with just one carrier class. With the 1–carrier structures on Prel (X), we can compare and integrate theory algebras in this broader contexts. This allows us to formulate universal properties like the associativity

(R ˙∥S) ˙∥T = R ˙∥(S ˙∥T)

(which actually happens to hold for ˙∥, but not for ˙⇓ and ˙⇑), etc.

Again we distinguish the new version, say ˙∥, of the original operation ∥ by an additional dot on top. And this notational distinction again should be superfluous in most practical circumstances.

23.5.2 Definition

Let X = [X_{i}|i ∈ I] be a proper schema. We define

˙⊥_{◯ 1} := [ \begin{matrix}Prel (X) ⟶ Prel (X) \\ R ↦ ⊥_{x(R)} \end{matrix} ]

˙⊤_{◯ 1} := [ \begin{matrix}Prel (X) ⟶ Prel (X) \\ R ↦ ⊤_{x(R)} \end{matrix} ]

◯ 1 ˙∥◯ 2 := [ \begin{matrix}Prel (X) × Prel (X) ⟶ Prel (X) \\ ⟨R, S⟩ ↦ R ∥ x (S) \end{matrix} ]

◯ 1 ˙⇓◯ 2 := [ \begin{matrix}Prel (X) × Prel (X) ⟶ Prel (X) \\ ⟨R, S⟩ ↦ R ⇓ x (S) \end{matrix} ]

◯ 1 ˙⇑◯ 2 := [ \begin{matrix}Prel (X) × Prel (X) ⟶ Prel (X) \\ ⟨R, S⟩ ↦ R ⇑ x (S) \end{matrix} ]

◯ 1 ˙⇂◯ 2 := [ \begin{matrix}Prel (X) × Prel (X) ⟶ Prel (X) \\ ⟨R, S⟩ ↦ R ⇂ @ (S) \end{matrix} ]

◯ 1 ˙↾◯ 2 := [ \begin{matrix}Prel (X) × Prel (X) ⟶ Prel (X) \\ ⟨R, S⟩ ↦ R ↾ @ (S) \end{matrix} ]

23.5.3 Definition

For every proper schema X = [X_{i}|i ∈ I] we define

𝔓𝔯𝔢𝔩_{1}^{⊴}(X) := ⟨Prel (X) , ⊴, ≜, ˙⊥_{◯ 1} , ˙⊤_{◯ 1} , ˙∥, ˙⇓, ˙⇑, ˙⇂, ˙↾⟩

the \underline{1–carrier syntactic structure} of X 23.5.4 Lemma

Given a proper schema X = [X_{i}|i ∈ I] and a syntactic selector ς on X. As described in 7.6.16 we construct

◯ 1 −_{ς} ◯ 2 := [ \begin{matrix}Prel (X) × Prel (X) ⟶ Prel (X) \\ ⟨R, S⟩ ↦ R ∧_{ς} (-_{ς}S) \end{matrix} ]

the relative complementor in 𝔓𝔯𝔢𝔩_{ς}^{⊴}(X). Now for all R, S ∈ Prel (X) the following statements are true:

(1) If ε ∈ {˙⇂, ˙↾} and ρ ∈ { ˙⇓, ˙⇑} then

(a) ∅_{ς} ≜ RεR

(b) R −_{ς} S ≜ RεS

(c) R ∧_{ς} S ≜ Rε (RεS)

(d) R ∨_{ς} S ≜ R ˙∥S ≜ S ˙∥R

(2) On the other hand

(a) ˙⊥_{R} ≜ R

(b) ˙⊤_{R} ≜ R

(c) R ˙∥S ≜ R ∨_{ς} S

(d) R ˙⇓S ≜ S

(e) R ˙⇑S ≜ S

(f) R˙⇂S ≜ R −_{ς} S

(g) R˙↾S ≜ R −_{ς} S

23.5.5 Proof of 23.5.4

We need to proof the truth of statements of the form σ_{1} ≜ σ_{2}. And obviously, the σ_{1}, σ_{2} are elements of Prel (X) in each case, no matter what ε and ρ we choose. Therefore our proof is given by a demonstration of @ (σ_{1}) = @ (σ_{2}). We repeat, that

(i) @ (R ∥ S) = @ (R) ∪ @ (S)

(ii) @ (RεS) = @ (R) \ @ (R) for each ε ∈ {˙⇂, ˙↾}

(iii) @ (RρS) = @ (S) for each ρ ∈ { ˙⇓, ˙⇑}

Applying this we derive

(1)(a) @ (∅_{ς}) = dom (⟨⟩) = ∅ = @ (R) \ @ (R) = @ (RεR)

(1)(b) @ (R −_{ς} S) = @ (R ∧_{ς} (-_{ς}S)) = @ (ς (x (R) ∧ x (ς (X \ x (S))))) = @ (ς (x (R) ∧ (X \ x (S)))) = @ (ς (x (R) \ x (S))) = @ (R) \ @ (S) = @ (RεS)

(1)(c) @ (R ∧_{ς} S) = @ (ς (x (R) ∧ x (S))) = dom (x (R) ∧ x (S)) = @ (R) ∩ @ (S) = @ (R) \ (@ (R) \ @ (S)) = @ (Rε (RεS))

(1)(d) @ (R ∨_{ς} S) = @ (ς (x (R) ∨ x (S))) = dom (x (R) ∨ x (S)) = @ (R) ∪ @ (S) = @ (R ˙∥S) = @ (S ˙∥R)

(2)(a) @ \binom{}{˙⊥_{R}} = @ (⊥_{x(R)}) = dom (x (R)) = @ (R)

(2)(b) similar to (a).

(2)(c) see (1)(d).

(2)(d) @ (R ˙⇓S) = @ (R ⇓ x (S)) = dom (x (S)) = @ (S)

(2)(e) similar to (d).

(2)(f) see (1)(b).

(2)(g) again see (1)(b).

23.6 Theory structures on Prel (X)

23.6.1 Remark

We now combine the semantic and syntactic structure on Prel (X) into a single “theory structure”. Formally speaking, the general idea here is to introduce

𝔓𝔯𝔢𝔩(X) := 𝔓𝔯𝔢𝔩^{⊑}(X) † 𝔓𝔯𝔢𝔩^{⊴}(X)

But since we have several versions of syntactic structures, we also have several of these theoretic structures as well.

23.6.2 Definition

For every proper schema X = [X_{i}|i ∈ I] we define:

𝔓𝔯𝔢𝔩_{1}(X) := 𝔓𝔯𝔢𝔩^{⊑}(X) † 𝔓𝔯𝔢𝔩_{1}^{⊴}(X)

the \underline{single–sort projection relation structure} of X

𝔓𝔯𝔢𝔩_{2}(X) := 𝔓𝔯𝔢𝔩^{⊑}(X) † 𝔓𝔯𝔢𝔩_{2}^{⊴}(X)

the \underline{two–sort projection relation structure} of X

𝔓𝔯𝔢𝔩_{3}(X) := 𝔓𝔯𝔢𝔩^{⊑}(X) † 𝔓𝔯𝔢𝔩_{3}^{⊴}(X)

the \underline{three–sort projection relation structure} of X

And if ς is a syntactic selector on X, then

𝔓𝔯𝔢𝔩_{ς}(X) := 𝔓𝔯𝔢𝔩^{⊑}(X) † 𝔓𝔯𝔢𝔩_{ς}^{⊴}(X)

the \underline{ς–selector projection relation structure} of X 23.6.3 Remark

Let us repeat these new structures in more detail, assuming that some proper schema X = [X_{i}|i ∈ I] is given. In all cases, we first list the carrier classes, then the syntactic and finally the semantic operations, where double occuring operations are only mentioned once.

(1) The single–sort projection relation structure of X is

𝔓𝔯𝔢𝔩_{1}(X) = ⟨\begin{matrix}Prel (X) , \\ ⊑, ≡, ⊥, ⊤, ⊓, ⊔, ∏, ∐, ¬, \\ ⊴, ≜, ˙⊥_{◯ 1} , ˙⊤_{◯ 1} , ˙∥, ˙⇓, ˙⇑, ˙⇂, ˙↾ \end{matrix}⟩

(2) The two–sort projection relation structure of X is

\begin{matrix}𝔓𝔯𝔢𝔩_{2}(X) = \\ ⟨ & \begin{matrix}Prel (X) , P (I) , ⊑, ≡, ⊥, ⊤, ⊓, ⊔, ∏, ∐, ¬, \\ ⊴, ≜, ¨⊥_{◯ 1} , ¨⊤_{◯ 1} , @, ¨∥, ¨⇓, ¨⇑, ⇂, ↾, ⊆, ∅, I, ∩, ∪, ⋂, ⋃, ∁ \end{matrix} & ⟩ \end{matrix}

(3) The three–sort projection relation structure of X is

𝔓𝔯𝔢𝔩_{3}(X) =

⟨\begin{matrix}Prel (X) , Proj (X) , P (I) , ⊑, ≡, ⊥, ⊤, ⊓, ⊔, ∏, ∐, ¬, \\ ⊴, ≜, ⊥_{◯ 1} , ⊤_{◯ 1} , @, x, ∥, ⇓, ⇑, ⇂, ↾, \\ ≤, ⟨⟩, X, ∧, ∨, ⋀, ⋁, -, ⊆, ∅, I, ∩, ∪, ⋂, ⋃, ∁ \end{matrix}⟩

(4) For every syntactic selector ς on X, the selective projection relation structure of X is

𝔓𝔯𝔢𝔩_{ς}(X) = ⟨\begin{matrix}Prel (X) , \\ ⊑, ≡, ⊥, ⊤, ⊓, ⊔, ∏, ∐, ¬, \\ ⊴, ≜, ∅_{ς}, 1_{ς}, ∧_{ς}, ∨_{ς}, ⋀_{ς}, ⋁_{ς}, -_{ς} \end{matrix}⟩

A Summary of symbols

Chapter I Introduction Chapter II The language of mathematics

o(ξ1, …, ξn) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.2.4) default notation for the \underline{application} of an operator o on arguments ξ1, …, ξn

◯ 1 , ◯ 2 , ◯ 3 , . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.2.4 and 5.2.5)

placeholders used in the definition of symbols ξ[ x/υ ] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.2.8)

\underline{substitution} of the expression υ for the identifier x in the expression ξ

ξ := ω . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.3.5)

assignment ξ : τ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.3.5)

type expression

ξ := [\begin{matrix}τ \\ ω \end{matrix}] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.3.5)

default notation for an operator definition let ◯ 1 in ◯ 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.3.7)

local definition with a \underline{let expression} ◯ 2 where ◯ 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.3.7)

local definition with a \underline{where expression} ⟨x1, …, xn⟩ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.4.1 and 9.2.1)

n–\underline{tuple} ⟨⟩ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.4.1, 5.7.6 and 9.2.2)

\underline{empty tuple}, \underline{empty function} or \underline{empty record} lg (x) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.4.1)

the \underline{length} of a tuple x x † y . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.4.1 and 10.5.1)

the \underline{concatenation} of two tuples x and y if φ then θ1 else θ2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.4.3)

conditional expression

\begin{cases}θ1 & & if φ1 \\ θ2 & & if φ2 \\ ⋮ & ⋮ \end{cases} . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.4.3)

default notation for nested conditional exressions the ◯ 1 with ◯ 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.4.4)

a \underline{description} sing (C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.4.4 and 5.6.13)

the unique element of a singelton class C ◯ 1 = ◯ 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.5.1)

\underline{equation} false or 0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .(5.5.2)

\underline{zero bit} or \underline{false} value true or 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.5.2)

\underline{unit bit} or \underline{true} value 𝔹 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.5.2 and 17.2.8)

\underline{bit value class} or \underline{boolean value class}; also the empty schema relation class

¬φ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.5.3)

\underline{not} φ or the \underline{negation} of φ φ1 ∧ … ∧ φn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.5.3 and 5.5.4)

φ1 \underline{and ... and} φn or \underline{conjunction} φ1 ∨ … ∨ φn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.5.3 and 5.5.4)

φ1 \underline{or ... or} φn or \underline{disjunction} φ1 → … → φn . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.5.3 and 5.5.4)

the \underline{subjunction} of φ1, …, φn φ1 ↔ … ↔ φn . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.5.3 and 5.5.4)

the \underline{equijunction} of φ1, …, φn ∃x . φ or ∃x : C . φ or ∃x ∈ C . φ . . . . . . . . . . . . . . . . . (5.5.5)

the \underline{existantialization} ∀x . φ or ∀x : C . φ or ∀x ∈ C . φ . . . . . . . . . . . . . . . . . (5.5.5)

the \underline{generalization} φ1 ⇒ φ2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.5.7)

means φ1 \underline{entails} φ2; the \underline{subvalence}, \underline{entailment} or \underline{consequence} relation

φ1 ⇔ φ2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.5.7)

the \underline{equivalence} or φ1 and φ2 {x | φ} or {x ∈ C | φ(x)} etc. . . . . . . . . . . . . . . . . . . . . . (5.6.2)

the usual class expressions ∅ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.6.2)

empty class e ∈ C or e ∉ C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.6.3)

the usual \underline{membership} or its negation, respectively C1 ⊆ C2 , C1 ⊈ C2 , C1 ⊂ C2 , C1 ⊇ C2 etc. . . . . . (5.6.13)

the usual \underline{inclusion} relation on classes with its standard variations C1 ∩ C2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.6.13)

the \underline{intersection} of classes C1 and C2 C1 ∪ C2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.6.13)

the \underline{union} of classes C1 and C2 C1 ⊎ C2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.6.13)

the \underline{disjunct union} of two (disjunct) classes C1 and C2 ⋂ K . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.6.13)

the \underline{(big) intersection} of K ⋃ K . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.6.13)

the \underline{(big) union} of K C1 \ C2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.6.13)

the \underline{difference} of two clases C1 and C2 C1 ▽ … ▽ C2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.6.6)

the \underline{opposition} or \underline{symmetric difference} of classes C1, …, Cn

∇K . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.6.6)

the \underline{(big) opposition} of a class P (C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.6.13)

the \underline{power class} of a class C Fin (C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.6.13)

the \underline{finite (sub)classes} of a class C Sg (C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.6.13)

the \underline{singleton} class of a class C f : D −−→ C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.6.8 and 5.7.15)

f is a \underline{partial function} from D to C f : D ⟶ C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.6.8 and 5.7.3)

f is a \underline{function} from D to C R : D1 ↭ … ↭ Dn . . . . . . . . . . . (5.6.8 and 5.7.10 and 17.3.1)

R is a \underline{n–ary} or \underline{ordinary relation} on D1, …, Dn R : Pty (D) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.6.8)

R is a \underline{unary relation} or \underline{property} on D R : 𝔹 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.6.8 and 5.5.2)

R is a \underline{nullary relation}, which is one of two values C1 × … × Cn . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.6.9 and 12.2.2)

the \underline{n–ary cartesian product} of classes C1, …, Cn Cn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.6.9 and 12.5.1)

the \underline{n–th (cartesian) power} or \underline{n–tuple class} of a class C C∗ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.6.9 and 12.5.1)

the \underline{Kleene closure} or \underline{tuple class} of C Char = {‘0‘, …, ‘9‘, ‘A‘, …, ‘a‘, …} . . . . . . . . . . . . . . . . . (5.6.10)

some \underline{character} class String . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.6.10)

the class of \underline{strings} or character tuples ”Hallo world” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.6.10)

an example \underline{string} ℕ := {0, 1, …} . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.6.11)

the \underline{natural number} class ℤ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.6.11)

the class of \underline{integers} ℚ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .(5.6.11)

the class of \underline{rational numbers} ℝ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (??)

the class of \underline{real numbers} 0 , 1 , + , − , · , / , ≤ , < , min , max , . . . . . . (5.6.12)

the usual operations on numbers card (C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.6.13)

the \underline{cardinality} or \underline{cardinal number} of C x ↦ θ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.7.1)

\underline{map(ping)} expression (x ↦ θ)(σ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.7.1)

the \underline{application} of a map on a term σ ⟨x1, …, xn⟩ ↦ θ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.7.1)

\underline{n–ary map(ping)} expression

[ \begin{matrix}ξ1 & ↦ & θ1 \\ ⋮ & & ⋮ \\ ξn & ↦ & θn \end{matrix} ] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.7.1 and 9.1.5)

conditional map expression or finite record expression

[\begin{matrix}D ⟶ C \\ x ↦ θ \end{matrix}] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.7.3)

default form of a \underline{(total) function}

[\begin{matrix}D −−→ C \\ x ↦ θ \end{matrix}] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.7.15)

default form of a \underline{partial function} dom (f) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.7.3 and 5.7.15)

the \underline{domain} of a (partial) function f cod (f) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.7.3 and 5.7.15)

the \underline{codomain} of a (partial) function f def (f) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.7.15)

the \underline{defined domain} of a partial function f f |Z . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.7.6)

the \underline{(domain) restriction} of a function f onto Z g ∘ f . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.7.6 and 5.7.17)

the \underline{composition} of two (partial) functions idC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.7.6)

the \underline{identity function} of a class C

f−1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.7.17)

the \underline{inverse} of a (partial) function f f[ A] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.7.18)

the \underline{image class} of A for a (partial) function f f−1[ A] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.7.18)

the \underline{coimage class} of A for a (partial) function f x ⇝ φ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.7.8)

a \underline{predicator} expression (x ⇝ φ)(θ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.7.8)

the \underline{application} of a predicator on a term θ ⟨x1, …, xn⟩ ⇝ φ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.7.8)

a \underline{n–ary predicator} expression

[ \begin{matrix}ξ1 & ⇝ & φ1 \\ ⋮ & & ⋮ \\ ξn & ⇝ & φn \end{matrix} ] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.7.8)

conditional predicator expression

[\begin{matrix}D1 ↭ … ↭ Dn \\ ⟨x1, …, xn⟩ ⇝ φ \end{matrix}] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.7.13)

the default form of a \underline{n–ary relation} dom (R) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.7.10 and 17.2.2)

the \underline{domain} of a relation R gr (R) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.7.10 and 17.2.2)

the \underline{graph} of a relation R x ∈ R (or x ∉ R ) . . . . . . . . . . . . . . . . . . . . . . . . (5.7.10 and 17.2.5) tuple or record x is (not) a \underline{member} of the relation R, or R \underline{holds} for x (or not)

R[ Z ] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.7.13) the \underline{image class} of Z for a binary relation R

R−1[ Z ] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.7.13)

the \underline{coimage class} of Z for a binary relation R 𝔖 = ⟨K, O⟩ and 𝔖 = ⟨C1, …, c1, …, f1, …, R1, …⟩ (5.8.1)

general forms for \underline{(ordinary) structures} 𝔅 = ⟨𝔹, ≤, 0, 1, -, ∧, ∨⟩ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.8.4)

the \underline{boolean (or bit) value algebra} ℨ = ⟨ℤ, 0, 1, +, −, ·, ≤⟩ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.8.5)

the linearly ordered \underline{integer ring} 𝔔 = ⟨ℚ, 0, 1, +, −, ·, /, ≤⟩ . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.8.5)

the linearly ordered \underline{field of rational numbers} 𝔖 † 𝔖′ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.8.6)

the \underline{combination} of two structures 𝔖 and 𝔖′ 𝔥 : 𝔖 ⟶ 𝔖′ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.8.9)

a \underline{homomorphism} from 𝔖 into 𝔖′ 𝔥 : 𝔖 ≅ 𝔖′ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.8.9)

an \underline{isomorphism} from 𝔖 into 𝔖′ 𝔖 ≅ 𝔖′ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5.8.9)

𝔖 and 𝔖′ are \underline{isomorph}

Chapter III Quasi–hierarchies

𝔓 (C) := ⟨P (C) , ⊆, ∅, 1, ∩, ∪, ⋂, ⋃, ∁⟩ . . . . . . . . . . . . . . . . . . . (6.2.2)

the \underline{power algebra} or \underline{subclass algebra} of C 𝔉𝔦𝔫 (C) := ⟨Fin (C) , ⊆, ∅, ∩, ∪, \⟩ . . . . . . . . . . . . . . . . . . . . . . (6.2.2)

the \underline{finite power algebra} of \underline{finite subclass algebra} of C ⟨C⋆, ⊆⋆, ≡⋆, ⟨⟩, ∩⋆, ∪⋆, \⋆⟩ . . . . . . . . . . . . . . . . . . . . . . . . . . . (6.3.1)

the generalized quasi–boolean algebra on tuples over C Form (A) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (6.4.1)

the \underline{propositional formula} class on A 𝔉𝔬𝔯𝔪 (A) = ⟨Form(A), ⇒, ⇔, f, t, ⊓, ⊔, ¬⟩ . . . . . . . . . . . . . . . (6.4.3)

the \underline{standard quasi–boolean algebra} on Form (A) @(φ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (6.4.4)

the \underline{atom class} of a given formula φ ⊴ ψ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (6.4.5)

the \underline{subatomic relation} on formulas φ ≜ ψ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (6.4.5)

the \underline{equiatomic relation} on formulas φ ∥ ⟨α1, …, αn⟩ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .(6.4.7)

the \underline{atomic expansion} of a formula φ by atoms α1, …, αn φ ⇑ ⟨α1, …, αn⟩ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (6.4.8)

the \underline{infimum reduction} of a formula φ onto α1, …, αn φ ⇓ ⟨α1, …, αn⟩ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (6.4.8)

the \underline{supremum reduction} of a formula φ onto α1, …, αn ⟨ℤ∞, ≤, −∞, ∞, min, max⟩ . . . . . . . . . . . . . . . . . . . . . . . . . . . . (6.5.2)

the expansion of the linearly ordered integers to a bounded lattice m | n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (6.5.4)

m \underline{divides} n ⟨𝔽, ≾, ≃, 0, 1, +, −, ·, ÷⟩ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (6.6.1)

the \underline{quasi–orderd field of fractions} ρ |C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (7.2.1)

the \underline{restriction} of a binary endorelation ρ onto C ⟨C, ⊑, ≡⟩ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (7.3.2)

one representation of a quasi–ordered class ⊥ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (7.4.1)

standard symbol for a \underline{bottom}, \underline{zero} or \underline{least} element ⊤ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (7.4.1)

standard symbol for a \underline{top}, \underline{unit} or \underline{greatest} element ◯ 1 ⊓ ◯ 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .(7.4.3)

standard symbol for a \underline{meet} function or \underline{conjunctor} ◯ 1 ⊔ ◯ 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .(7.4.3)

standard symbol for a \underline{join} function or \underline{disjunctor} min . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (7.4.4)

minimum function max . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (7.4.4)

maximum function ∏◯ 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (7.4.7)

standard symbol for a \underline{infimum} function or \underline{big conjunctor} ∐◯ 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (7.4.7)

standard symbol for a \underline{supremum} function or \underline{big disjunctor} ¬◯ 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (7.5.2)

standard symbol for a \underline{negator} or \underline{complement function} ◯ 1 − ◯ 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (7.5.5)

standard symbol for a \underline{relative complement function} ⟨Q, ⊑, ≡, ⊓, ⊔⟩ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (7.6.2)

standard form of a \underline{quasi–lattice algebra} ⟨Q, ⊑, ≡, ⊥, ⊤, ⊓, ⊔⟩ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (7.6.2)

standard form of a \underline{bounded quasi–lattice algebra} ⟨Q, ⊑, ≡, ⊥, ⊤, ⊓, ⊔, ∏, ∐⟩ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (7.6.2)

standard form of a \underline{complete quasi–lattice algebra} ⟨Q, ⊑, ≡, ⊥, ⊤, ⊓, ⊔, ¬⟩ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .(7.6.2)

standard form of a \underline{quasi–boolean algebra} ⟨Q, ⊑, ≡, ⊥, ⊤, ⊓, ⊔, ∏, ∐, ¬⟩ . . . . . . . . . . . . . . . . . . . . . . . . . . (7.6.2)

standard form of a \underline{complete quasi–boolean algebra} ⟨Q, ⊑, ≡, ⊥, ⊤, ⊓, ⊔, −⟩ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (7.6.2)

standard form of a \underline{generalized quasi–boolean algebra}

(→) or (→ x) or x1 → … → xn or \underrightarrow{n} ; i=1 xi …. (8.2.2 and 8.2.3)

subjunctions

(↔) or (↔ x) or x1 ↔ … ↔ xn or n ↔ ; i=1 xi …. (8.2.2 and 8.2.3)

equijunctions

Chapter IV Records

[i ↦ ξi|i ∈ I] or [ \frac{i ↦ ξi}{i ∈ I} ] . . . . . . . . . . . . . . . (9.1.2 and 9.1.3)

usual form of a \underline{record}

[ξi|i ∈ I] or [ \frac{ξ}{i ∈ I} ] . . . . . . . . . . . . . . . . . . . . . . . (9.1.2 and ??)

also a usual form of a \underline{record} dom (ξ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (9.1.2)

the \underline{domain} or \underline{index class} or \underline{attribute class} of a record ξ REC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (9.1.4)

the overall class of records

[ \begin{matrix}i1 & ↦ & ξ1 \\ ⋮ & ⋮ & ⋮ \\ in & ↦ & ξn \end{matrix} ] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (9.1.5)

representation for a finite record ⟨ξ1, …, ξn⟩ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (9.2.1)

n–ary tuple [c|I] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (9.2.4) representation for a \underline{univalent} record, which has the same value c for each index in I

⟨c | n⟩ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (9.2.6) representation for the univalent n–ary tuple where every component is c

[Xi|i ∈ I] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (9.3.1)

a \underline{schema} is a record, where each value Xi is a class ξ(i) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (10.1.1)

the \underline{value} at i or \underline{i–th component} of a record ξ dom (ξ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (10.1.1)

the \underline{domain} or \underline{index class} or \underline{attribute class} of a record ξ cod (ξ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (10.1.1)

the \underline{codomain} or \underline{value class} of a record ξ pr (ξ, J) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (10.2.1)

the \underline{projection} of a record ξ onto J Proj (ξ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (10.2.6)

the class of all projections of a given record ξ ξ ≬ υ (or ξ ≬̸ υ ) . . . . . . . . . . . . . . . . . . . . . . . . (10.3.2 and 10.3.3)

the records ξ and υ are \underline{distinct} (or not distinct) ξ ⌣ υ (or ξ ⌣̸ υ ) . . . . . . . . . . . . . . . . . . . . . . (10.3.2 and 10.3.3)

the records ξ and υ are \underline{compatible} (or not compatible) ξ ≤ υ (or ξ ≰ υ ) . . . . . . . . . . . . . . . . . . . . . . . (10.3.2 and 10.3.3)

ξ is \underline{subrecord} or \underline{smaller} then υ (or not) ξ < υ (or ξ ≮ υ ) . . . . . . . . . . . . . . . . . . . . . . . (10.3.2 and 10.3.3)

ξ is a \underline{proper subrecord} or \underline{strictly smaller} than υ (or not) ξ ˙∨ υ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (10.4.1)

the \underline{distinct join} of distinct records ξ and υ ˙⋁ Ξ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (10.4.1)

the \underline{distinct join} of a (pairwise) distinct record class Ξ

ξ1 † … † ξn or n † ; i=1ξi . . . . . . . . . . . . . . . . . . . . . . . . . . . . (10.5.1)

the \underline{concatenation} of tuples ξ1, …, ξn Rec (I, C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (11.2.2) the class of all the records with indices from I and values from C DΞ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (11.3.2)

the \underline{(total) domain} of a record class Ξ

D{⌣̸ \atop Ξ} . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (11.3.2)

the \underline{incompatible domain} of a record class Ξ D⌣ Ξ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (11.3.2)

the \underline{compatible domain} of a record class ξ ξ \ υ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (11.4.3)

the \underline{subtraction} of records ξ and υ, or ξ \underline{without} υ ξ ∧ υ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (11.4.3)

the \underline{meet} of records ξ and υ, or ξ \underline{and} υ ξ ⋉ υ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (11.4.3)

the \underline{rejection} of records ξ and υ, or ξ \underline{rejected by} υ ξ ▽ υ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (11.4.3)

the \underline{opposition} of records ξ and υ, or ξ \underline{opposed to} υ ξ ∨ υ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (11.4.3)

the \underline{join} of records ξ and υ, or ξ \underline{or} υ ξ√ υ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (11.4.3)

the \underline{update} of records ξ and υ, or ξ \underline{updated with} υ Ξ(k) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (11.7.2)

the value of a record class Ξ at k ⋁ Ξ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (11.7.2)

the \underline{supremum} or \underline{(big) disjunction} of a record class Ξ ⋀ Ξ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (11.7.2)

the \underline{infimum} or \underline{(big) conjunction} of a record class Ξ

∇Ξ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (11.7.2)

the \underline{(big) opposition} of a record class Ξ ℜ𝔈ℭ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (11.8.1)

the \underline{(general) record structure} 𝔓𝔯𝔬𝔧 (η) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (11.9.1)

the \underline{record projection structure} of a given record η

Chapter V Schemas and their various products

⊛X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (12.1.2)

the \underline{star product} or the \underline{(general) record class} of a schema X ⊗X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (12.1.2)

the \underline{(cartesian) product} or the \underline{expanded record class} of a schema X ⊕X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (12.1.2)

the \underline{coproduct} or \underline{disjunct union} or \underline{singular record class} or \underline{literal record class} of a schema X

C1 ⋆ … ⋆ Cn or n ⋆ ; i=1Ci . . . . . . . . . . . . . . . . . . . . . . . . . . (12.2.2)

the \underline{(ordinal) star product} of classes C1, …, Cn

C1 × … × Cn or n × ; i=1Ci . . . . . . . . . . . . . . . . . . . . . . . . . (12.2.2)

the \underline{(ordinal or cartesian) star product} of classes C1, …, Cn

C1 + … + Cn or n + ; i=1Ci . . . . . . . . . . . . . . . . . . . . . . . . . (12.2.2)

the \underline{(ordinal) coproduct} or \underline{disjunct union} of classes C1, …, Cn

L1 † … † Ln or n † ; i=1Li . . . . . . . . . . . . . . . . . . . . . . . . . . . (12.3.2)

the \underline{concatenation} of tuple classes L1, …, Ln CI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (12.5.1)

the I–th \underline{power (product)} of C, where I and C are classes Cn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (12.5.1)

the n–th \underline{power (product)} or the \underline{n–tuple class} of C, where C is a class and n ∈ ℕ

C∗ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (12.5.1)

the \underline{Kleene closure} or the \underline{tuple class} of a given class C ⊆ ⊈ ∩ ∪ \ ⋂ ⋃ . . . . . . . . . . . . . . . . . . . . . . . . . . (14.1.1)

\underline{inclusion}, \underline{intersection}, \underline{union} and \underline{difference} defined on schemas with identical domains

ℑ𝔫𝔠𝔩 (X) = ⟨Incl (X) , ⊆, [∅|I], X, ∩, ∪, ⋂, ⋃, ∁⟩ . . . . . . . . (14.3.1)

the \underline{inclusion algebra} of a given schema X

Chapter VI Graphs and their distinct product

@ (Ξ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (15.1.1)

the \underline{attribute class} of a given record class Ξ domα(Ξ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (15.1.1)

the α–\underline{domain} of a given record class Ξ and attribute α of Ξ x (Ξ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (15.1.1)

the \underline{schema} of a given recrod class Ξ doms (ρ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (16.2.1)

the \underline{domain–schema} or \underline{index schema} of a record–record ρ Γ1 ≬ … ≬ Γn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (16.3.1) the graphs (record classes) Ξ1, …, Ξn are \underline{relatively distinct}

⊙Γ or {⊙ \atop k∈K}Γ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (16.4.1)

the \underline{distinct product} or a relatively distinct graph record Γ

Γ1 ⊙ … ⊙ Γn or n ⊙ ; i=1Γi . . . . . . . . . . . . . . . . . . . . . . . . . . (16.4.1)

the \underline{distinct product} or relatively distinct graphs Γ1, …, Γn πΓ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (16.4.7) the bijection from ⊗Γ into ⊙Γ for a relatively distinct graph record Γ

pr (Γ, J) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (16.5.2)

the \underline{projection} of a graph onto a class J

Chapter VII Relations

[\begin{matrix}X \\ Γ \end{matrix}] or [X, Γ] . . . . . . . . . . . . . . . . . . . . . . . . . . (17.2.1 and 17.3.5)

(the \underline{schema–graph form} of) a \underline{relation} with schema X and graph Γ

[\begin{matrix}X \\ x ↦ φ \end{matrix}] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (17.3.5)

(the \underline{schema–predicator form} of) a \underline{relation}

[\begin{matrix}Rel & (X) \\ Γ \end{matrix}] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (17.3.5)

(the \underline{typed–graph form} of) a \underline{relation} with schema X and graph Γ

[\begin{matrix}Rel & (X) \\ x ↦ φ \end{matrix}] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (17.3.5)

(the \underline{typed–predicator form} of) a \underline{relation}

[\begin{matrix}D1 ↭ … ↭ Dn \\ ⟨x1, …, xn⟩ ⇝ φ \end{matrix}] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (17.3.1)

(the \underline{typed–predicator form} of) an \underline{ordinary relation}

[\begin{matrix}⟨D1, …, Dn⟩ \\ \{⟨x1, …, xn⟩ ∈ D1 × … × Dn | φ\} \end{matrix}] . . . . . . . . . . . . . . (17.3.1)

(the \underline{schema–graph form} of) an \underline{ordinary relation} χR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (17.4.2)

\underline{characteristic function} of a relation R rel (χ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (17.4.2)

the relation of a given characteristic function χ @ (R) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (17.2.2)

the \underline{attribute class} or \underline{index class} of a relation R x (R) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (17.2.2)

the \underline{schema} of a relation R gr (R) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (17.2.2)

the \underline{graph} of a relation R dom (R) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (17.2.2)

the \underline{domain} of a relation R domi(R) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (17.2.2)

the i–\underline{domain} of a relation R and each attribute i of R x ∈ R or x ∉ R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (17.2.5)

a record x is or is not a \underline{member} of a relation R REL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (17.2.6)

the overall class of relations Rel (X) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (17.2.6)

the class of all relations with schema X rngi(R) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (17.2.11)

the i–th \underline{range} of a relation R rng(R) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (17.2.11)

the \underline{range} of a relation R 𝔹 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (17.2.8)

the empty schema relation class (𝔹 = Rel (⟨⟩)), but also the bit value class (5.5.2); both are made of just two members

Tab (X) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (17.5.3)

the \underline{table} class of a given schema X Prel (X) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (17.8.1)

the \underline{projection relation class} of a given schema X Brel (A) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (17.8.4)

the \underline{bit value relation} class of a given class A

[\begin{matrix}X \\ Γ \end{matrix}] or [X, Γ] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (18.1.2)

a \underline{quasi–relation} with schema X and \underline{quasi–graph} Γ ⊆ ⊛X x ∥ X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (18.2.3)

the \underline{expansion} of x by a schema X, where x ∈ ⊛X rel (Q) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (18.2.6)

the relation of a given quasi–relation Q R ∥ Y . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (18.3.3 and 20.1.1)

the \underline{expansion} of a relation R by a schema Y

Chapter VIII Operations on relations

R ⊴ S (or R ⋬ S ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (19.1.2)

relation R is \underline{sub–schematic} to relation S (or not) R ≜ S (or R ≜̸ S ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (19.1.2)

relation R is \underline{equi–schematic} to relation S (or not) R ⌣ S (or R ⌣̸ S ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (19.1.2)

relations R and S are \underline{compatible} (or not) R ≬ S (or R ≬̸ S ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (19.1.2)

relations R and S are \underline{(attribute or schema) distinct} (or not) IdX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (19.2.1)

\underline{identity relation} of X ⊥X and ⊤X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (19.3.1)

the \underline{emtpy/bottom/zero} and \underline{full/top/unit} relation of a given schema X

⊥ and ⊤ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (19.3.1)

the \underline{empty/bottom/zero} and \underline{full/top/unit} relation ¬R or R̸ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (19.4.1)

the \underline{complement} or \underline{negation} of a relation R R ⊆ S (or R ⊈ S ) . . . . . . . . . . . . . . . . . . . . . (19.5.1 and 19.5.2)

relation R is \underline{included by} relation S (or not) R ⊂ S (or R ⊄ S ) . . . . . . . . . . . . . . . . . . . . . (19.5.1 and 19.5.2)

relation R is \underline{properly included by} relation S (or not) R ∩ S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (19.5.1)

the \underline{intersection} of equi–schematic relations R and S R ∪ S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (19.5.1)

the \underline{union} of equi–schematic relations R and S

⋂ R or ⋂ ; R∈RR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (19.5.3)

the \underline{(big) intersection} of a class R of equischematic relations

⋃ R or ⋂ ; R∈RR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (19.5.3)

the \underline{(big) union} of a class R of equischematic relations ℜ𝔢𝔩 (X) = ⟨Rel (X) , ⊆, ⊥X , ⊤X , ∩, ∪, ⋂, ⋃, ¬⟩ . . . . . . . (19.5.9)

the \underline{equi–schematic relation algebra} over a given schema X R ⊙ S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (19.6.2)

the \underline{distinct (cartesian) product} of two distinct relations R and S

⊙R or {⊙ \atop k∈K}Rk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (19.6.2)

the \underline{distinct (cartesian) product} of a (pairwise) distinct relation class R

R † S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (19.7.2)

the \underline{concatenation} of two orinary relations R and S R ∥ Y . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (20.1.1)

the \underline{expansion} of a relation R by a schema Y R ⊑ S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (20.2.2)

the \underline{subvalence} of R under S, for compatible relations R and S R ≡ S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (20.2.2)

the \underline{equivalence} of R and S, for compatible relations R and S R ⋢ S , R ⊒ S , R ⊏ S , R ≢ S , . . . . . . . . . . . . . . . . . . (20.2.3)

the usual derived operations of ⊑ and ≡ R1 ⊓ … ⊓ Rn . . . . . . . . . . . . . . . . . . . . . . . . . .(20.2.2 and 20.4.23)

the \underline{conjunction} of compatible relations R1, …, Rn R1 ⊔ … ⊔ Rn . . . . . . . . . . . . . . . . . . . . . . . . . .(20.2.2 and 20.4.23)

the \underline{disjunction} of compatible relations R1, …, Rn

∏R or ∏ ; R∈RR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (20.2.4)

the \underline{(big) conjunction} of a compatible relation class R

∐R or ∏ ; R∈RR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (20.2.4)

the \underline{(big) disjunction} of a compatible relation class R R − S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (20.5.2)

the \underline{subtraction} of R by S, for compatible relations R and S R → S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (20.5.2)

the \underline{subjunctions} of R and S, for compatible relations R and S R ↔ S . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (20.5.2)

the \underline{equijunctions} of R and S, for compatible relations R and S pr (R, J) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (21.2.2)

the \underline{projection} of a relation R onto a class J cpj (R, J) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (21.2.2)

the \underline{coprojection} of a relation R onto a class J R ⇂ J . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (21.4.1)

the \underline{upper} R \underline{without} J or the \underline{supremum elimination} of a class J from a relation R

R ⇂ j . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (21.4.1) the \underline{upper} R \underline{without} j or the \underline{supremum elimination} of a single j from a relation R

R ↾ J . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (21.4.1) the \underline{lower} R \underline{without} J or the \underline{infimum elimination} of a class J from a relation R

R ↾ j . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (21.4.1) the \underline{lower} R \underline{without} j or the \underline{infimum elimination} of a single j from a relation R

R ⇕ Y . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (21.1.2 and 21.6.1)

the \underline{equivalent reduction} of a relation R by a schema Y R ⇓ Y . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (21.6.1)

the \underline{supremum reduction} of a relation R by a schema Y R ⇑ Y . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (21.6.1)

the \underline{infimum reduction} of a relation R by a schema Y redAt (R) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (21.8.2)

the \underline{redundant attribute class} of a relation R irrAt (R) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (21.8.2)

the \underline{irredundant attribute class} of a relation R

f([a]) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (22.2.1)

the generalized f–value of a, for every function f and each a f[[A]] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (22.2.1)

the generalized f–image class of A, for every function f and each class A

rec (Π) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (22.2.2)

the \underline{record} of a pair class Π ⊆ A × B gr (ξ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (22.2.2)

the \underline{graph} of a record ξ tr (ξ, τ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (22.2.3)

the \underline{(attribute) translation} of a record ξ by a record τ [ k ]ξ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (22.3.3)

the ξ–\underline{equivalence class} of k, for a record ξ and attribute k tr (R, τ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (22.4.1)

the \underline{(attribute) translation} of a relation R by a record τ Trans (X) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (22.5.2)

the \underline{translator class} of a proper schema X

Chapter IX Theory algebras of relations

𝔓𝔯𝔢𝔩⊑(X) = ⟨Prel (X) , ⊑, ≡, ⊥, ⊤, ⊓, ⊔, ∏, ∐, ¬⟩ . . . . . (23.1.1) the \underline{semantic algebra} on Prel (X)

𝔓𝔯𝔢𝔩⊴ ς(X) = ⟨Prel (X) , ⊴, ≜, ∅ς , 1ς , ∧ς , ∨ς , ⋀ς , ⋁ς , -ς ⟩ (23.2.3) the \underline{selective syntactic structure} of ς over X

𝔓𝔯𝔢𝔩{⊴ \atop 3}(X) = ⟨\begin{matrix}Prel (X) , Proj (X) , P (I) , \\ ⊴, ≜, ⊥◯ 1 , ⊤◯ 1 , @, x, ∥, ⇓, ⇑, ⇂, ↾ \end{matrix}⟩ . . . . . (23.3.2)

the \underline{3–carrier syntactic structure} of X

𝔓𝔯𝔢𝔩⊴ 3(X) = ⟨\begin{matrix}Prel (X) , Proj (X) , P (I) , \\ ⊴, ≜, ⊥◯ 1 , ⊤◯ 1 , @, x, ∥, ⇓, ⇑, ⇂, ↾, \\ ≤, ⟨⟩, X, ∧, ∨, ⋀, ⋁, -, ⊆, ∅, 1, ∩, ∪, ⋂, ⋃, ∁ \end{matrix}⟩

(23.3.2) the \underline{3–structure syntactic structure} of X

𝔓𝔯𝔢𝔩{⊴ \atop 2}(X) = ⟨\begin{matrix}Prel (X) , P (I) , \\ ⊴, ≜, ¨⊥◯ 1 , ¨⊤◯ 1 , @, ¨∥, ¨⇓, ¨⇑, ⇂, ↾ \end{matrix}⟩ . . . . . . . (23.4.3)

the \underline{2–carrier syntactic structure} of X

𝔓𝔯𝔢𝔩⊴ 2(X) = ⟨\begin{matrix}Prel (X) , P (I) , \\ ⊴, ≜, ¨⊥◯ 1 , ¨⊤◯ 1 , @, ¨∥, ¨⇓, ¨⇑, ⇂, ↾, \\ ⊆, ∅, I, ∩, ∪, ⋂, ⋃, ∁ \end{matrix}⟩ . . . . . . (23.4.3)

the \underline{2–structure syntactic structure} of X

𝔓𝔯𝔢𝔩{⊴ \atop 1}(X) = ⟨Prel (X) , ⊴, ≜, ˙⊥◯ 1 , ˙⊤◯ 1 , ˙∥, ˙⇓, ˙⇑, ˙⇂, ˙↾⟩ . (23.5.3)

the \underline{1–carrier syntactic structure} of X

𝔓𝔯𝔢𝔩1(X) = ⟨\begin{matrix}Prel (X) , \\ ⊑, ≡, ⊥, ⊤, ⊓, ⊔, ∏, ∐, ¬, \\ ⊴, ≜, ˙⊥◯ 1 , ˙⊤◯ 1 , ˙∥, ˙⇓, ˙⇑, ˙⇂, ˙↾ \end{matrix}⟩ . . . . . . . . . . (23.6.2)

the \underline{single–sort projection relation structure} of X

𝔓𝔯𝔢𝔩2(X) = ⟨\begin{matrix}Prel (X) , P (I) , \\ ⊑, ≡, ⊥, ⊤, ⊓, ⊔, ∏, ∐, ¬, \\ ⊴, ≜, ¨⊥◯ 1 , ¨⊤◯ 1 , @, ¨∥, ¨⇓, ¨⇑, ⇂, ↾, \\ ⊆, ∅, I, ∩, ∪, ⋂, ⋃, ∁ \end{matrix}⟩ . . . . . . (23.6.2)

the \underline{two–sort projection relation structure} of X

𝔓𝔯𝔢𝔩3(X) = ⟨\begin{matrix}Prel (X) , Proj (X) , P (I) , \\ ⊑, ≡, ⊥, ⊤, ⊓, ⊔, ∏, ∐, ¬, \\ ⊴, ≜, ⊥◯ 1 , ⊤◯ 1 , @, x, ∥, ⇓, ⇑, ⇂, ↾, \\ ≤, ⟨⟩, X, ∧, ∨, ⋀, ⋁, -, ⊆, ∅, I, ∩, ∪, ⋂, ⋃, ∁ \end{matrix}⟩

(23.6.2)

the \underline{three–sort projection relation structure} of X

𝔓𝔯𝔢𝔩ς (X) = ⟨\begin{matrix}Prel (X) , \\ ⊑, ≡, ⊥, ⊤, ⊓, ⊔, ∏, ∐, ¬, \\ ⊴, ≜, ∅ς , 1ς , ∧ς , ∨ς , ⋀ς , ⋁ς , -ς \end{matrix} ⟩ . . . . . . . . (23.6.2)

the \underline{selective projection relation structure} of X

Index

R–coimage class of Z, 28 R–image class of Z, 28 ∼–compatible, 44 ς–selector projection relation structure, 168 ξ–equivalence class of k, 159 f of a, 28 f–coimage class of A, 29 f–image class of A, 29 i–, 54 i–domain, 99 i–th component, 21 i–th component of ξ, 56 i–th domain, 73 i–th range, 101 i-th domain, 54 n–ary, 14, 26, 27, 53 n–ary relation, 27 n–th (cartesian) power, 25 n–tuple, 21, 54 n–tuple class, 79 (atomic) expander, 35 (attribute or schema) distinct, 113 (attribute) translation, 158, 160 (big) conjunction, 68, 124 (big) disjunction, 68, 124 (big) intersection, 84, 117 (big) opposition, 68 (big) union, 84, 117 (binary) (cartesian) product construction, 81 (binary) (endo–)relation, 38 (binary) coproduct construction, 81 (cartesian) product, 73 (co)projection, 135 (concrete) (ordinary) structure, 29 (distributive) bounded quasi–lattice algebra, 41 (distributive) complete quasi–lattice algebra, 41 (distributive) quasi–lattice algebra, 41 (domain) restriction, 27 (general) infimum elimination, 145 (general) record class, 73 (general) record structure, 69 (general) supremum elimination, 145 (ordered) pairs, 21 (ordinary) relation class, 25 (pairwise) compatible, 57, 113 (pairwise) distinct, 57, 90, 113, 120 (pairwise) equi–schematic, 113 (partial) order, 38 (partially) ordered class, 38 (record) partition of, 91 (schema) compatible, 113 (singular) infimum elimination, 145 (singular) supremum elimination, 145 (small) intersection, 117 (small) union, 117 (total) domain, 61 (total) function, 26 (untyped) description, 21 (well-) defined, 19 (well-) instantiated, 19 (well-) typed, 19 1–carrier syntactic structure, 167 2–carrier syntactic structure, 166 2–structure syntactic structure, 166 3–carrier syntactic structure, 165 3–structure syntactic structure, 165

algebra, 29 and, 22, 63 anti–chain, 38 antisymmetric, 38 application, 17, 18, 26, 27 arity, 53 assignment, 19 asymmetric, 38 atom class function, 35 atoms, 34 attribute, 99 attribute class, 53, 56, 87 attributes, 53

belongs to, 24 big conjunctor, 40 big disjunctor, 40 big intersection, 24 big union, 24 bijection, 26 bijective, 26 binary, 53 bit, 22 bit value, 102 bit value relation, 107 boolean (or bit) value algebra, 29 boolean lattice, 41 boolean quasi–lattice, 41 boolean table (diagram), 103 boolean value, 22, 102 bottom, 39, 115 bounded, 40

canonic class, 38 canonic quasi–ordered class, 38 cardinal numbers, 25 cardinality, 25, 105 carrier, 29 cartesian, 75 cartesian graph, 88 cartesian product, 15, 25 chain, 38 chapter, 13 characteristic function, 28, 102 characters, 25 Class, 13 class, 23 class expression, 20, 23 class family, 23 class partition (record), 90 class partition of, 90 classes, 20 closed, 19 codomain, 20, 26, 28, 53, 56 cograph, 88 combination, 30 compatibility, 57 compatible domain, 61 complement, 32, 84, 116 complement function, 40 complemented, 40 complete lattice, 40 complete partial order, 60 complete quasi–boolean algebra, 41 complete quasi–lattice, 40 completely finite, 55, 73, 103 components, 54 composition, 27, 28 concatenation, 21, 25, 59, 76, 121 conditional expression, 21 congruence relation, 44 conjunction, 22, 124 conjunctor, 39 connex, 38 consequence, 22 constant, 29 constant (value), 19 context, 19 coproduct, 73, 75 coprojection, 135, 137 countable, 25 cpo, 60

default, 108 default n–ary function expression, 14 default n–ary relation expression, 14 default coproduct construction, 81 default product construction, 81 defined domain, 28 degenerated, 120 derived, 22 difference, 24, 84, 134 dimension, 53, 105 disjunct union, 24, 73, 75 disjunction, 124 disjunctor, 39 distinct, 90, 120 distinct (cartesian) product, 120 distinct join, 58, 90, 120 distinct product, 93, 120 distinctness, 57 distributive, 40 does not hold, 27 domain, 20, 26–28, 53, 56, 87, 99 domain form, 102 domain schema, 90 double tables, 104

element, 24 elementary, 105 elements, 23 elimination, 135 eliminations, 135 empty, 105, 115, 116 empty class, 23 empty function, 27, 54 empty record, 54 empty schema, 100 empty tuple, 21, 27, 54 endorelation, 105 entailment, 22, 34 entails, 22, 34 enumerable, 25 environment, 19 equal, 21 equality, 38 equation, 21 equi–schematic, 113 equi–schematic relation algebra, 118 equiatomic relation, 35 equijunction, 22, 134 equijunctor, 45 equivalence, 22, 111, 124 equivalence class, 43 equivalence relation, 38, 39 equivalent, 22, 34 equivalent reduction, 35, 135, 149 existentialization, 22 expanded graph, 88 expanded record class, 73 expands, 35 expansion, 35, 109–111, 122 expression, 17

false, 22 field of rational numbers, 30 finite, 25, 53, 55, 73, 103 finite class expression, 23 finite classes, 24 finite power algebra, 32 finite subclass algebra, 32 finite table, 103 follows (or derives) from, 22 formulas, 20 fractions, 36 full, 105, 115, 116 full class, 32 function class, 25

general graph, 88 generalization, 22 generalized boolean lattice, 41 generalized boolean quasi–lattice, 41 generalized quasi–boolean algebra, 42 graph, 15, 27, 88, 90, 99 graph form, 102 graph table (diagram), 100, 103 greatest, 39 greatest lower bound, 39, 40

Hasse diagrams, 39 hierarchy, 38 holds, 27 homomorphism, 30

identical, 21 Identifier, 13 identifier, 17, 18 identifiers, 53 identity (relation), 114 identity function, 27 identity relation, 38 if, 22 iff, 22 implies, 22 in, 100, 155 included schema class, 84 inclusion, 24, 84, 117 inclusion algebra, 84 inclusions, 84 incompatible domain, 61 index, 53, 56, 99 index schema, 90 indices, 53 infimum, 40, 68 infimum elimination, 135 infimum reduction, 135, 136, 149 infimum reductor, 35 injection, 26 injective, 26 instantiation, 19 integer ring, 30 integers, 25 intersection, 24, 84 inverse, 28 irredundant attribute class, 155 irredundant for, 155 irreflexive, 38 is a table, 103 is in, 24 is not in, 24 isomorph, 30 isomorphism, 30

join, 39, 63

Kleene closure, 25, 79 Kleene graph, 88 Kuratowski product construction, 81

lambda expression, 26 lambda expressions, 14 lattice, 40 least, 39 least upper bound, 39, 40 left unique, 158 length, 21 linar quasi–order, 38 linear order, 38 linearly ordered class, 38 linearly ordered field, 37 literal, 53, 105 local definition, 20 locally finite, 55 lower, 145, 173

map(ping) (expression), 26 map(ping) expression, 14 mapping, 14 maximum, 40 meet, 39, 63 meet semi–lattice, 60 member, 100 members, 23 membership, 24 minimum, 40 minus, 41

natural numbers, 25 negation, 22, 116 negator, 40 new word, 17 not, 22, 116 not in, 100 null value, 108 nullary, 53, 54 nullary product, 25

of, 26 open, 19 Operation, 13 operator expression, 20 operators, 20 opposed to, 63 opposition, 24, 63 or, 22, 63 order diagrams, 39 ordinal, 75 ordinary, 14, 15, 26, 27 ordinary map(ping) expression, 26 ordinary predicator (expression), 27 overloaded, 19

P–record, 53 paragraph, 13 partial function, 28 partial function class, 25 partial functions, 28 partial table, 108 partition, 38 pattern matching, 20 poclass, 38 power (product) of, 79 power algebra, 32 power class, 24 power class algebra, 118 predicator, 14 predicator (expression), 27 predicator expression, 14 predicator form, 102 product, 25, 75 projection, 56, 95, 135, 137 projection class, 56 projection relation class, 106 proper, 55, 73, 90–92, 100 proper incl., 24 proper subrecord, 57 property, 25 propositional formulas, 34

quadruples, 21 quasi–algebras, 41 quasi–boolean algebra, 41 quasi–boolean lattice, 41 quasi–chain, 38 quasi–class, 38 quasi–graph, 108 quasi–hierarchy, 38 quasi–lattice, 40 quasi–linear order, 38 quasi–linearly ordered class, 38 quasi–order, 38, 128 quasi–order diagrams, 39 quasi–ordered class, 38, 128 quasi–ordered field of fractions, 37 quasi–relation, 108 quasi–relation graph, 88 quotient class, 43 quotient function, 44 quotient relation, 44 quotient structure, 44

range, 101 rational numbers, 25, 37 real numbers, 25 record, 15, 53 record class, 60 record of Π, 158 record partition, 91 record projection structure, 70 record table, 73 record–record, 90 reduces, 135 reduction, 135 redundant, 136, 155 redundant attribute class, 155 redundant for, 155 reflexive, 38 rejected by, 63 rejector, 63 relation, 99, 102, 110 relation class, 100 relation graph, 88 relative complement, 41 relative complement function, 41 relatively distinct, 92, 120 restriction, 38 right unique, 158

schema, 15, 54, 73, 87, 99 schema form, 102 schema partition, 91 schema record, 90 schemas, 53, 54 schematic, 15 section, 13 selective syntactic structure, 164 semantic algebra, 163 semantics, 102 set, 23 similar, 30 single–sort projection relation structure, 168 singleton, 25 singleton class, 24 singular, 53, 105 singular (or literal) record class, 73 singular finite, 55 singular graph, 88 smaller, 57 standard form of an ordinal function definition, 26 standard quasi–boolean algebra, 34 star graph, 88 star product, 73, 75 strict smaller, 57 strings, 25 structured class, 38 sub–schematic, 113 subatomic, 35 subclass algebra, 32 subjunction, 22, 134 subjunctor, 45 subrecord, 57 subsection, 13 substitution, 18 substructure, 30 subtraction, 63, 134 subvalence, 22, 34, 124 sum, 25 supremum, 40, 68 supremum elimination, 135 supremum reduction, 135, 136, 149 supremum reductor, 35 surjection, 26 surjective, 26 symbol, 17, 18 symmetric, 38 symmetric difference, 24 syntactic selector, 164 syntax, 102

table class, 103 terms, 20 the, 115 the algebra (on), 118 the equivalence (relation) of, 128 the graph of ξ, 158 then, 22 three–sort projection relation structure, 168 token, 18 top, 39, 115 total, 38, 105 total in i, 105 transitive, 38 translatable, 158, 160 translation, 158 translator class, 161 triples, 21 true, 22 truth, 22 tuple, 15 tuple class, 25, 79 tuples, 53 two–sort projection relation structure, 168 type, 19 type expression, 14, 19, 100 typed description, 21 typed form, 102

unary, 53 union, 24, 84 unit, 39, 115 unit bit, 22 univalent, 54 updated with, 63 updater, 63 upper, 145, 173

value, 19, 56, 68 value class, 53, 56 values, 53 variable (value), 19

without, 41, 63, 145, 173

zero, 39, 115 zero bit, 22