formulas(sos).

% Definition: WorldAt(x,d)
all x all d ((Object(x) & Point(d)) -> (WorldAt(x,d) <-> (SituationAt(x,d) & (exists d2 (Point(d2) & (all p (Proposition(p) -> (TrueInAt(p,x,d2) <-> True(p,d2))))))))).

% Sorting: WorldAt(x,d)
all x all d (WorldAt(x,d) -> Object(x) & Point(d)).

% Logical Theorem (Corollary to Lemma 2): TrueInAt(p,x,d) is rigid.
all x all p ((Object(x) & Proposition(p)) ->
 ((exists d (Point(d) & TrueInAt(p,x,d))) -> (all d (Point(d) -> TrueInAt(p,x,d))))).

% Definition: NecessarilyTrue(p)
all p (NecessarilyTrue(p) <-> (all d (Point(d) -> True(p,d)))).

% Logical Axiom: W is a distinguished point.
Point(W).

% Definition: World(x)
all x (World(x) <-> WorldAt(x,W)).

% Definition:  TrueIn(p,x)
all x all p (TrueIn(p,x) <-> TrueInAt(p,x,W)).

end_of_list.

formulas(goals).
% Logical Theorem: If p is necessarily true, p is true in all worlds.
all p (Proposition(p) -> (NecessarilyTrue(p) -> (all x (World(x) -> TrueIn(p,x))))).
end_of_list.
