
%%%%%
%%%%% SIGNATURE

A,A1 :: agent(A).
L,L1 :: location(L).

agent(emerson).
agent(thoreau).

location(harvard).
location(walden).

fc(loc(A)).
fc(pleased(A)).
fc(turbulent(A)).
domain(loc(A), L).

ac(A^move).
ac(A^writeTo^A1) :-
 A \= A1.

domain(A^move, L).
domain(A^move, ff).

%%%%%
%%%%% SYSTEM

caused loc(A)=L after A^move=L.
nonexecutable A^move=L if loc(A)=L.

caused pleased(A1) after A^writeTo^A1 :-
 A \= A1.
caused -turbulent(A) after A^writeTo^A1 :-
 A \= A1.

%%

inertial FC :-
 fc(FC).
exogenous(AC) :-
 ac(AC).

%%%%%
%%%%% NORMS

local_global.

% if Thoreau is at Walden, nobody else must be there

notpermitted loc(thoreau)=walden if loc(A)=walden :-
 A \= thoreau.

% Emerson ought not go to Harvard unless Thoreau goes too

emerson notpermitted emerson^move=harvard & -(thoreau^move=harvard).

% Thoreau should not to write to Emerson from Walden

thoreau notpermitted thoreau^writeTo^emerson if loc(thoreau)=walden.

