2017-08-10 19:17:28 +00:00
|
|
|
#lang syndicate
|
2016-06-14 08:01:54 +00:00
|
|
|
;; Minimal syndicate/actor variation on examples/forward-chaining.rkt.
|
|
|
|
|
2017-02-15 23:18:19 +00:00
|
|
|
(spawn (assert `(parent john douglas)))
|
|
|
|
(spawn (assert `(parent bob john)))
|
|
|
|
(spawn (assert `(parent ebbon bob)))
|
2016-06-14 08:01:54 +00:00
|
|
|
|
|
|
|
;; This looks like an implication:
|
|
|
|
;; (parent A C) ⇒ ((ancestor A C) ∧ ((ancestor C B) ⇒ (ancestor A B)))
|
|
|
|
;;
|
2017-02-15 23:18:19 +00:00
|
|
|
(spawn (during `(parent ,$A ,$C)
|
2016-08-24 16:35:38 +00:00
|
|
|
(assert `(ancestor ,A ,C))
|
|
|
|
(during `(ancestor ,C ,$B)
|
|
|
|
(assert `(ancestor ,A ,B)))))
|
2016-06-14 08:01:54 +00:00
|
|
|
|
2017-02-15 23:18:19 +00:00
|
|
|
(spawn (on (asserted `(ancestor ,$A ,$B))
|
2016-08-24 16:35:38 +00:00
|
|
|
(log-info "~a is an ancestor of ~a" A B)))
|