-
-
Notifications
You must be signed in to change notification settings - Fork 3
/
chu_space.txt
53 lines (38 loc) · 1.14 KB
/
chu_space.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
//
// A Chu space based on introduction example for Cartesian frames:
// https://www.lesswrong.com/posts/BSpdshJWGAW6TuNzZ/introduction-to-cartesian-frames
//
// Do not allow multiple `not`s.
uniq not
// Generate negative roles (this makes them right-exclusive).
not'(X) : Y :- X : Y, X != not'(Z).
// Create negative agents.
(not'(X), agent) :- (X, agent), X != not'(Y).
// Create negative environments.
(not'(X), env) :- (X, env), X != not'(Y).
// Commute agent and environment to make roles
// both right-exclusive and left-exclusive.
(Y, X) :- (X, Y), (X, agent), (Y, env).
// Make agent vs agent relations ambiguous.
amb :- (X, Y), (X, agent), (Y, agent).
// Make environment vs environment relations ambiguous.
amb :- (X, Y), (X, env), (Y, env).
// Generate all simple products of agents and environments.
(X, Y) :- (X, agent), (Y, env), (X, prod), (Y, prod).
// Generate the negative agent for destructive environments.
(not'(X), Y) :- (X, agent), (Y, env), (Y, destr), X != not'(Z).
u : umbrella
n : no_umbrella
r : rain
s : sun
m : meteorite
(u, agent)
(n, agent)
(u, prod)
(n, prod)
(r, env)
(s, env)
(m, env)
(r, prod)
(s, prod)
(m, destr)