-
Notifications
You must be signed in to change notification settings - Fork 57
/
Copy pathc2_spaces.metta
58 lines (53 loc) · 1.77 KB
/
c2_spaces.metta
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
54
55
56
57
58
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Spaces are also represented as grounded symbols in the program.
; Importing another script into a separate space
; TODO: replace symbol by string
!(import! &kb c2_spaces_kb)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; We can `match` over `&self` or another space
!(assertEqualToResult
(match &kb
(, ($obj is $prop)
($prop is-a Color)
($obj is-a Planet))
(Color of Planet $obj is $prop))
((Color of Planet Mars is Red)))
; The knowledge in `&kb` is not in `&self`
!(assertEqualToResult
(match &self ($p is-a Color) $p)
())
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Checking that grounded symbols from different spaces are compatible
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
!(assertEqual
(match &kb
(, (Venus orbit $x au)
(Mars orbit $y au))
(- $y $x))
0.8)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Different spaces can be used
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(Ball is Red)
(Chair is High)
!(assertEqualToResult
(match &kb ($prop is-a Color)
(match &self ($obj is $prop)
$obj))
(Ball))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; We can import into `&self`
; TODO: replace symbol by string
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
!(import! &self c2_spaces_kb)
!(assertEqualToResult
(match &self
(, ($obj is $prop)
($prop is-a Color)
($obj is-a Planet))
(Color of Planet $obj is $prop))
((Color of Planet Mars is Red)))