Relational operators

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.

Converse

A relation can be altered by swapping the elements of every pair in the relation. Mathematically, (a,b)(a, b) is a different from (b,a)(b,a). This operation is called the converse operator. It produces a new relation from an existing one. It is denoted by writing \smallsmile\ (pronounced 'wok' or ’flip’) after the relation name. This is how converse is defined:

a(r)b  b r aa(r\smallsmile)b\ \Leftrightarrow\ b\ r\ a

If rr has type[A×B][A\times B], then r\smallsmile\ has type [B×A][B\times A].

Composition

The composition operator is denoted by a semicolon ;; between two terms. It is pronounced as 'composed with'. Let us take a look at rr composed with ss. Let r[A×B]r_{[A\times B]} and s[B×C]s_{[B\times C]} be two relations, with the target of r being the same as the source of s. Then the composition of rr and ss is defined by:

a(r;s)c  bB  a r bb s ca(r;s)c\ \Leftrightarrow\ ∃ b∈B\ ∙\ a\ r\ b ∧ b\ s\ c

If rr has type[A×B][A\times B]and sshas type[B×C][B\times C], then r;sr;s has type [A×C][A\times C].

How to type boolean operators in your script

This page shows how you can type boolean (and other) operators in your Ampersand script.

Other explanation

Would you like a different explanation of the relational operators? This page explains the relational operators in terms of set theory. This page explains them in natural language. Click here for some algebraic rules about relational operators.

Last updated