!7
class Prop implements IStatement {}
record $HappensBefore$(A event1, B event2) extends Prop {}
record $HappensAtDay$(A event, B y) extends Prop {}
record $LessThan$(A x, A y) extends Prop {}
// we can fully define a statement on primitive values
full define $LessThan(int x, int y) = x < y;
// we can output a variable
full define $LessThan(int x, var y) = y := any int bigger than x;
/*
Event 1 happens before event 2 :=
vars {event 1, event 2, X, Y}
Event 1 happens at day X.
Event 2 happens at day Y.
X < Y.
*/