Warning: session_start(): open(/var/lib/php/sessions/sess_5lfjt7mrvi1sh1j82f8h2cf159, 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 {}
record Var(S name) { toString { ret name; } }
record StatementsWithVars(Set vars, L statements) {
*(Fact... statements) {
this.statements = asList(statements);
collectVars();
}
void collectVars {
vars = new Set;
fOr (Fact f : statements)
vars.addAll(print("Vars", findVars(f)));
}
}
L scanObject(O o) {
ret filter(nonStaticNonPrimitiveNonTransientFieldValues(o),
v -> v != null && !v instanceof S && v != Obj.this);
}
L findVars(Fact statement) {
Cl out = transitiveHullOfFunction(o -> scanObject(o), (O) statement);
print(classNames(out));
ret instancesOf Var(out);
}
bool matchIndividual(O a, O b, Map map) {
if (a cast Var)
ret strictPut(map, a, b);
else
ret eq(a, b);
}
Map matchFacts(Fact f1, Fact f2) {
if (f1 == null || f2 == null) null;
if (f1.getClass() != f2.getClass()) null;
L fields = nonStaticNonTransientFieldObjects(f1);
new Map map;
for (Field f : fields)
if (!matchIndividual(fieldGet(f, f1), fieldGet(f, f2), map))
null;
ret map;
}
void recSolve(L statements, Map map, IVF1