-
Notifications
You must be signed in to change notification settings - Fork 3
/
unifier-basic.scm
44 lines (36 loc) · 1.04 KB
/
unifier-basic.scm
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
;
; unifier-basic.scm -- Very baic unifier demo.
;
(use-modules (opencog) (opencog exec))
(use-modules (opencog unify))
; Populate the AtomSpace with some data.
(Inheritance (Concept "A") (Concept "B"))
; Define an inference rule joiner.
(define joiner
(Unifier
(Inheritance (Variable "$X") (Concept "B"))
(Inheritance (Concept "A") (Variable "$Y"))
(List (Variable "$X") (Variable "$Y"))))
; Run it.
(cog-execute! joiner)
; Here it is, with a more complex rewrite:
(define join-and-make
(Unifier
(Inheritance (Variable "$X") (Concept "B"))
(Inheritance (Concept "A") (Variable "$Y"))
(Evaluation
(Predicate "put it together")
(List (Variable "$X") (Variable "$Y")))))
; Run it.
(cog-execute! join-and-make)
; Because the above is so simple, it provides the same results as
; the IdenticalLink:
(define ident
(Bind
(Identical
(Inheritance (Variable "$X") (Concept "B"))
(Inheritance (Concept "A") (Variable "$Y")))
(Evaluation
(Predicate "put it together")
(List (Variable "$X") (Variable "$Y")))))
(cog-execute! ident)