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
; Step with alternating feet, left before right
(relation left (i64))
(relation right (i64))
(relation middle (i64))
(left 0)
(right 0)
(ruleset step-left)
(rule ((left x) (right x))
((left (+ x 1)))
:ruleset step-left)
(ruleset step-right)
(rule ((left x) (right y) (= x (+ y 1)))
((right x))
:ruleset step-right)
(ruleset step-middle)
(rule ((left x))
((middle x))
:ruleset step-middle)
(unstable-combined-ruleset
my-combination
step-left step-right
step-middle)
(run-schedule (repeat 1 my-combination))
(check (left 1))
(check (right 0))
;; middle didn't observe anything except original step
(check (middle 0))
(fail (check (left 2)))
(fail (check (right 1)))
(fail (check (middle 1)))
(fail (check (middle 2)))
(run-schedule
(repeat 9
(saturate step-right)
my-combination
(saturate step-right)))
(check (left 10))
(check (right 10))
;; middle didn't get a chance to observe (left 10)
(check (middle 9))
(fail (check (middle 10)))
(fail (check (left 11)))
(fail (check (right 11)))