Warning: session_start(): open(/var/lib/php/sessions/sess_77jtk5le72sct435o8i5la4f20, O_RDWR) failed: No space left on device (28) in /var/www/tb-usercake/models/config.php on line 51
Warning: session_start(): Failed to read session data: files (path: /var/lib/php/sessions) in /var/www/tb-usercake/models/config.php on line 51
!7
/*
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.
*/
sclass Obj {
class Fact {}
class StatementsWithVars {
L statements;
Set vars;
*() {}
*(Fact... statements) {
statements = asList(statements);
collectVars();
}
void collectVars {
vars = new Set;
fOr (Fact f : statements)
vars.addAll(print("Vars", findVars(statement)));
}
}
L findVars(Fact statement) {
Cl out = transitiveHullOfFunction
nonStaticNonPrimitiveNonTransientFieldValues(statement);
print(classNames(out));
ret instancesOf Var(out);
}
record $HappensBefore$(A event1, B event2) extends Fact {}
record $HappensAtDay$(A event, B y) extends Fact {}
record $LessThan$(A x, A y) extends Fact {}
// Enrolling happens before graduation.
// Enrolling happens at day 200.
// Graduation happens at day 100. // Contradiction!
L facts = ll(
new $HappensBefore$("enrolling", "graduation"),
new $HappensAtDay$("enrolling", 200),
new $HappensAtDay$("graduation", 200)
);
void rule1($HappensBefore$ in) {
O event1 = in.event1, event2 = in.event2;
Var X = new("X"), Y = new("Y");
emit(new StatementsWithVars(
$HappensAtDay$(event1, X),
$HappensAtDay$(event2, Y),
$LessThan$(X, Y)
));
}
*() {
pnlWithHeading("Facts", facts);
}
}
p-exp { new Obj; }