#
# Some examples from the documentation for the Omega Calculator
# This is the input for figures 2 and 3.
#

R := { [i] -> [i'] : 1 <= i,i' <= 10 && i' = i+1 };
R;
inverse R;
domain R;
range R;
R compose R;
R+;             # closure of R = R union (R compose R) union (R compose R ...
complement R;
S := {[i] : 5 <= i <= 25};
S;
R(S);           # apply R to S
R \ S;          # restrict domain of R to S
R / S;          # restrict range of R to S
(R\S) union (R/S);
(R\S) intersection (R/S);
(R/S) - (R\S);
S*S;            # cross product 
D := S - {[9:16:2]} - {[17:19]};
D;
T :=  { [i] : 1 <= i <= 11 & exists (a : i = 2a) };
T;
Hull T;
Hull D;
codegen D;
codegen {[i,j] : 1 <= i+j,j <= 10};