find [R: Relation(X,X)] {
    not exists [S: Relation(X, X)] {
        R = S*S'
    }
}


======================================

find [R: Relation(X,X)] {
    not exists [S: Relation(X, X)] {
        all x y (R(x,y) iff exists z (S(x,z) & S(z,y)))
    }
}

======================================

find [R: Relation(X,X)] {
    [all x y z (R(x,y) and R(y,z) -> R(x,z))]
    and
    [all x y (R(x,y) -> R(y,x))]
    and
    [not (all x R(x,x))]
}

======================================

find [f: Function(Relation(X), Relation(X))] {
    (all [R: Relation(X)] f(f(R)) = R)
    and 
    (all [R,S: Relation(X)] f(R * S) = f(S) * f(R))
}

======================================

find [R: Relation(X)] {
    {not exists [f: Function(X,X)] (all [x,y:X] (R(x,y) iff f(x) = f(y)))}
    and
    {all [x:X]  R(x,x)}
}

======================================

find E: Relation(X,X).
find a,b: X.

% this is included by default.
type x,y,z: X.
type f: X -> Pow(X).

all x (E(x,x)).
all x y (E(x,y) -> E(y,x)).
all x y z (E(x,y) & E(y,z) -> E(x,z)).

...
