arrow-left

All pages
gitbookPowered by GitBook
1 of 3

Loading...

Loading...

Loading...

Relational operators in algebra

hashtag
Purpose of relational operators

To say things such as "the name of the owner", we want to string together multiple relations (viz. name and owner). Relational operators allow us to make such statements.

There are two relational operators: the converse (⌣\smallsmile⌣) and the composition (semicolon ;;; ). This page discusses the most important laws about these operators.

hashtag
Converse

There are two things you should know about the converse operator. The first is that the converse of the converse gives you the relation itself, whatever that relation may be:

The second thing you should know is that arguments switch places if the converse is brought outside (or inside) brackets

hashtag
Composition

The composition operator is denoted by a semicolon (;) between two terms. It is pronounced as 'composed with', in this case: composed with .

Composition is associative, which means:

The meaning stays the same, no matter how you place the brackets. So Ampersand lets you omit brackets entirely. You may write instead of or .

Composition has a left and a right identity. Let be a relation, then

hashtag
How to type relational operators in your script

shows how you can write these things in your Ampersand script.

hashtag
Other explanation

Would you like a different explanation of the semantics of the relational operators? for an explanation in sets. explains them in natural language. explains the relational operators in logic.

r⌣⌣ = r{r\smallsmile}\smallsmile\ =\ rr⌣⌣ = r
r⌣;s⌣ = (s;r)⌣r\smallsmile ; s\smallsmile\ =\ (s;r)\smallsmiler⌣;s⌣ = (s;r)⌣
rrr
sss
r;(s;t) = (r;s);tr;(s;t)\ =\ (r;s);tr;(s;t) = (r;s);t
r;s;tr;s;tr;s;t
r;(s;t)r;(s;t)r;(s;t)
(r;s);t(r;s);t(r;s);t
r[A×B]r_{[A\times B]}r[A×B]​
IA;r = r   and   r;IB = rI_A;r\ =\ r\ \ \ \text{and}\ \ \ r;I_B\ =\ rIA​;r = r   and   r;IB​ = r
This page
Click here
This page
This page

Boolean operators in algebra

The boolean operators of Ampersand behave as one would expect in any boolean algebra. Union (∪\cup∪) and intersection (∩\cap∩) are both idempotent, commutative, and associative operators. In Ampersand we use a binary difference operator over with the usual semantics: (r−s)∪(r∩s)=r(r-s)\cup(r\cap s) = r(r−s)∪(r∩s)=r. The (more customary) complement operator is a partial function, because Ampersand supports heterogeneous relation algebra.

hashtag
Union

The operator ∪\cup∪ (union) satisfies the following axioms:

  1. (commutativity of )

  2. (associativity of )

  3. (idempotence of )

hashtag
Difference

The difference is the smallest relation that satisfies . Smallest means: If there is a for which , this implies that .

hashtag
Intersection

The intersection is defined as:

hashtag
Complement

The complement operator is defined as . The type comes from the term(s) in which is embedded. If that type does not exist or if it is ambiguous, Ampersand will refuse to compile with an appropriate error message.

hashtag
How to type boolean operators in your script

shows how you can write these things in your Ampersand script.

hashtag
Other explanation

∪\cup∪
r∪s = s∪rr\cup s\ =\ s\cup rr∪s = s∪r
∪\cup∪
r∪(s∪t) = (r∪s)∪tr\cup (s\cup t)\ =\ (r\cup s)\cup tr∪(s∪t) = (r∪s)∪t
∪\cup∪
r∪r = rr\cup r\ =\ rr∪r = r
r−sr-sr−s
ttt
r ⊆ s∪tr\ \subseteq\ s\cup tr ⊆ s∪t
t′t't′
s∪t′=rs\cup t'=rs∪t′=r
t∪t′=t′t\cup t'=t't∪t′=t′
∩\cap∩
r∩s=r−(r−s)r \cap s = r-(r-s)r∩s=r−(r−s)
t‾=V[A×B]−t\overline{t} = V_{[A\times B]} - tt=V[A×B]​−t
[A×B][A\times B][A×B]
ttt
This page

Semantics of terms, defined algebraically

This chapter discusses the and the in the following sections.

boolean operators
relational operators