mini_kraken 0.2.03 → 0.2.04
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +9 -0
- data/lib/mini_kraken/atomic/all_atomic.rb +4 -0
- data/lib/mini_kraken/{core → atomic}/atomic_term.rb +23 -9
- data/lib/mini_kraken/atomic/k_boolean.rb +42 -0
- data/lib/mini_kraken/{core → atomic}/k_integer.rb +2 -1
- data/lib/mini_kraken/{core → atomic}/k_symbol.rb +5 -3
- data/lib/mini_kraken/{core → composite}/composite_term.rb +6 -4
- data/lib/mini_kraken/composite/cons_cell.rb +132 -0
- data/lib/mini_kraken/{core → composite}/cons_cell_visitor.rb +1 -1
- data/lib/mini_kraken/core/association_walker.rb +14 -14
- data/lib/mini_kraken/core/binary_relation.rb +10 -10
- data/lib/mini_kraken/core/equals.rb +159 -161
- data/lib/mini_kraken/core/goal_relation.rb +2 -2
- data/lib/mini_kraken/core/goal_template.rb +7 -7
- data/lib/mini_kraken/core/{variable.rb → log_var.rb} +10 -3
- data/lib/mini_kraken/core/{variable_ref.rb → log_var_ref.rb} +3 -3
- data/lib/mini_kraken/core/tap.rb +46 -0
- data/lib/mini_kraken/core/vocabulary.rb +8 -8
- data/lib/mini_kraken/glue/dsl.rb +21 -17
- data/lib/mini_kraken/glue/fresh_env.rb +7 -2
- data/lib/mini_kraken/glue/fresh_env_factory.rb +1 -1
- data/lib/mini_kraken/glue/run_star_expression.rb +2 -2
- data/lib/mini_kraken/version.rb +1 -1
- data/spec/.rubocop.yml +1 -1
- data/spec/atomic/atomic_term_spec.rb +94 -0
- data/spec/{core → atomic}/k_boolean_spec.rb +19 -34
- data/spec/{core → atomic}/k_symbol_spec.rb +3 -11
- data/spec/{core → composite}/cons_cell_spec.rb +10 -8
- data/spec/{core → composite}/cons_cell_visitor_spec.rb +11 -10
- data/spec/core/association_spec.rb +6 -4
- data/spec/core/association_walker_spec.rb +8 -6
- data/spec/core/conde_spec.rb +19 -17
- data/spec/core/conj2_spec.rb +10 -8
- data/spec/core/def_relation_spec.rb +9 -7
- data/spec/core/disj2_spec.rb +11 -10
- data/spec/core/environment_spec.rb +12 -10
- data/spec/core/equals_spec.rb +12 -10
- data/spec/core/goal_spec.rb +6 -5
- data/spec/core/goal_template_spec.rb +5 -5
- data/spec/core/{variable_ref_spec.rb → log_var_ref_spec.rb} +4 -4
- data/spec/core/{variable_spec.rb → log_var_spec.rb} +4 -4
- data/spec/core/vocabulary_spec.rb +12 -11
- data/spec/glue/dsl_chap1_spec.rb +0 -45
- data/spec/glue/dsl_chap2_spec.rb +115 -7
- data/spec/glue/fresh_env_factory_spec.rb +11 -9
- data/spec/glue/fresh_env_spec.rb +3 -3
- data/spec/glue/run_star_expression_spec.rb +13 -11
- data/spec/support/factory_atomic.rb +22 -0
- data/spec/support/factory_methods.rb +11 -26
- metadata +28 -23
- data/lib/mini_kraken/core/cons_cell.rb +0 -82
- data/lib/mini_kraken/core/k_boolean.rb +0 -35
data/spec/core/goal_spec.rb
CHANGED
@@ -1,10 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require_relative '../spec_helper' # Use the RSpec framework
|
4
|
+
require_relative '../../lib/mini_kraken/atomic/k_symbol'
|
4
5
|
require_relative '../../lib/mini_kraken/core/environment'
|
5
6
|
require_relative '../../lib/mini_kraken/core/equals'
|
6
7
|
require_relative '../../lib/mini_kraken/core/fail'
|
7
|
-
|
8
|
+
|
8
9
|
|
9
10
|
# Load the class under test
|
10
11
|
require_relative '../../lib/mini_kraken/core/goal'
|
@@ -16,7 +17,7 @@ module MiniKraken
|
|
16
17
|
subject { Goal.new(nullary_relation, []) }
|
17
18
|
let(:binary_relation) { Equals.instance }
|
18
19
|
let(:env) { Environment.new }
|
19
|
-
subject { Goal.new(binary_relation, [KSymbol.new(:pea), KSymbol.new(:pod)]) }
|
20
|
+
subject { Goal.new(binary_relation, [Atomic::KSymbol.new(:pea), Atomic::KSymbol.new(:pod)]) }
|
20
21
|
|
21
22
|
context 'Initialization:' do
|
22
23
|
it 'should accept one nullary relation and empty argument array' do
|
@@ -24,7 +25,7 @@ module MiniKraken
|
|
24
25
|
end
|
25
26
|
|
26
27
|
it 'should accept one binary relation and 2-elements array' do
|
27
|
-
expect { Goal.new(binary_relation, [KSymbol.new(:pea), KSymbol.new(:pod)]) }.not_to raise_error
|
28
|
+
expect { Goal.new(binary_relation, [Atomic::KSymbol.new(:pea), Atomic::KSymbol.new(:pod)]) }.not_to raise_error
|
28
29
|
end
|
29
30
|
|
30
31
|
it 'should know its relation' do
|
@@ -32,7 +33,7 @@ module MiniKraken
|
|
32
33
|
end
|
33
34
|
|
34
35
|
it 'should know its actual arguments' do
|
35
|
-
expectations = [KSymbol.new(:pea), KSymbol.new(:pod)]
|
36
|
+
expectations = [Atomic::KSymbol.new(:pea), Atomic::KSymbol.new(:pod)]
|
36
37
|
expect(subject.actuals).to eq(expectations)
|
37
38
|
end
|
38
39
|
end # context
|
@@ -47,7 +48,7 @@ module MiniKraken
|
|
47
48
|
end
|
48
49
|
|
49
50
|
it 'should succeed if relation succeeds' do
|
50
|
-
instance = Goal.new(binary_relation, [KSymbol.new(:pea), KSymbol.new(:pea)])
|
51
|
+
instance = Goal.new(binary_relation, [Atomic::KSymbol.new(:pea), Atomic::KSymbol.new(:pea)])
|
51
52
|
|
52
53
|
solver = instance.attain(env)
|
53
54
|
expect(solver.resume).to be_success
|
@@ -1,13 +1,13 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require_relative '../spec_helper' # Use the RSpec framework
|
4
|
+
require_relative '../../lib/mini_kraken/atomic/k_symbol'
|
4
5
|
require_relative '../../lib/mini_kraken/core/disj2'
|
5
6
|
require_relative '../../lib/mini_kraken/core/equals'
|
6
7
|
require_relative '../../lib/mini_kraken/core/formal_arg'
|
7
8
|
require_relative '../../lib/mini_kraken/core/formal_ref'
|
8
9
|
require_relative '../../lib/mini_kraken/core/goal'
|
9
|
-
require_relative '../../lib/mini_kraken/core/
|
10
|
-
require_relative '../../lib/mini_kraken/core/variable_ref'
|
10
|
+
require_relative '../../lib/mini_kraken/core/log_var_ref'
|
11
11
|
# require_relative '../../lib/mini_kraken/core/environment'
|
12
12
|
|
13
13
|
# Load the class under test
|
@@ -17,7 +17,7 @@ require_relative '../../lib/mini_kraken/core/goal_template'
|
|
17
17
|
module MiniKraken
|
18
18
|
module Core
|
19
19
|
describe GoalTemplate do
|
20
|
-
let(:tea) { KSymbol.new(:tea) }
|
20
|
+
let(:tea) { Atomic::KSymbol.new(:tea) }
|
21
21
|
let(:t_ref) { FormalRef.new('t') }
|
22
22
|
subject { GoalTemplate.new(Equals.instance, [tea, t_ref]) }
|
23
23
|
|
@@ -38,8 +38,8 @@ module MiniKraken
|
|
38
38
|
|
39
39
|
context 'Provided services:' do
|
40
40
|
let(:formal_t) { FormalArg.new('t') }
|
41
|
-
let(:cup) { KSymbol.new(:cup) }
|
42
|
-
let(:ref_x) {
|
41
|
+
let(:cup) { Atomic::KSymbol.new(:cup) }
|
42
|
+
let(:ref_x) { LogVarRef.new('x') }
|
43
43
|
# let(:env) { Environment.new }
|
44
44
|
|
45
45
|
it 'should instantiate a single-node goal' do
|
@@ -3,16 +3,16 @@
|
|
3
3
|
require_relative '../spec_helper' # Use the RSpec framework
|
4
4
|
|
5
5
|
# Load the class under test
|
6
|
-
require_relative '../../lib/mini_kraken/core/
|
6
|
+
require_relative '../../lib/mini_kraken/core/log_var_ref'
|
7
7
|
|
8
8
|
module MiniKraken
|
9
9
|
module Core
|
10
|
-
describe
|
11
|
-
subject {
|
10
|
+
describe LogVarRef do
|
11
|
+
subject { LogVarRef.new('q') }
|
12
12
|
|
13
13
|
context 'Initialization:' do
|
14
14
|
it 'should be initialized with the name of variable' do
|
15
|
-
expect {
|
15
|
+
expect { LogVarRef.new('q') }.not_to raise_error
|
16
16
|
end
|
17
17
|
|
18
18
|
it 'should know the name of a variable' do
|
@@ -4,18 +4,18 @@ require_relative '../spec_helper' # Use the RSpec framework
|
|
4
4
|
require_relative '../../lib/mini_kraken/core/environment'
|
5
5
|
|
6
6
|
# Load the class under test
|
7
|
-
require_relative '../../lib/mini_kraken/core/
|
7
|
+
require_relative '../../lib/mini_kraken/core/log_var'
|
8
8
|
|
9
9
|
|
10
10
|
module MiniKraken
|
11
11
|
module Core
|
12
|
-
describe
|
12
|
+
describe LogVar do
|
13
13
|
let(:env) { Environment.new }
|
14
|
-
subject {
|
14
|
+
subject { LogVar.new('q') }
|
15
15
|
|
16
16
|
context 'Initialization:' do
|
17
17
|
it 'should be initialized with a name' do
|
18
|
-
expect {
|
18
|
+
expect { LogVar.new('q') }.not_to raise_error
|
19
19
|
end
|
20
20
|
|
21
21
|
it 'should know its name' do
|
@@ -1,9 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require_relative '../spec_helper' # Use the RSpec framework
|
4
|
-
require_relative '
|
5
|
-
require_relative '../../lib/mini_kraken/core/
|
6
|
-
require_relative '../../lib/mini_kraken/core/
|
4
|
+
require_relative '../support/factory_atomic'
|
5
|
+
require_relative '../../lib/mini_kraken/core/log_var'
|
6
|
+
require_relative '../../lib/mini_kraken/core/log_var_ref'
|
7
7
|
require_relative '../support/factory_methods'
|
8
8
|
|
9
9
|
# Load the class under test
|
@@ -22,7 +22,7 @@ module MiniKraken
|
|
22
22
|
end # class
|
23
23
|
|
24
24
|
# Helper module that simulates an environment-like object.
|
25
|
-
module
|
25
|
+
module LogVarBearer
|
26
26
|
attr_reader :vars
|
27
27
|
attr_accessor :ivars
|
28
28
|
|
@@ -33,12 +33,13 @@ module MiniKraken
|
|
33
33
|
end
|
34
34
|
|
35
35
|
def add_var(aVarName)
|
36
|
-
vars[aVarName] =
|
36
|
+
vars[aVarName] = LogVar.new(aVarName)
|
37
37
|
ivars[aVarName] = Set.new([aVarName])
|
38
38
|
end
|
39
39
|
end # module
|
40
40
|
|
41
41
|
describe Vocabulary do
|
42
|
+
include MiniKraken::FactoryAtomic # Use mix-in module
|
42
43
|
include FactoryMethods
|
43
44
|
|
44
45
|
let(:parent) { TestVocabulary.new }
|
@@ -65,13 +66,13 @@ module MiniKraken
|
|
65
66
|
end # context
|
66
67
|
|
67
68
|
context 'Provided services:' do
|
68
|
-
let(:pea) {
|
69
|
-
let(:pod) {
|
70
|
-
let(:ref_q) {
|
71
|
-
let(:ref_x) {
|
69
|
+
let(:pea) { k_symbol(:pea) }
|
70
|
+
let(:pod) { k_symbol(:pod) }
|
71
|
+
let(:ref_q) { LogVarRef.new('q') }
|
72
|
+
let(:ref_x) { LogVarRef.new('x') }
|
72
73
|
let(:grandma) do
|
73
74
|
voc = TestVocabulary.new
|
74
|
-
voc.extend(
|
75
|
+
voc.extend(LogVarBearer)
|
75
76
|
voc.init_var_bearer
|
76
77
|
end
|
77
78
|
let(:mother) { TestVocabulary.new(grandma) }
|
@@ -93,7 +94,7 @@ module MiniKraken
|
|
93
94
|
expect(grandma.include?('x')).to be_truthy
|
94
95
|
expect(mother.include?('x')).to be_truthy
|
95
96
|
expect(subject.include?('x')).to be_truthy
|
96
|
-
subject.extend(
|
97
|
+
subject.extend(LogVarBearer)
|
97
98
|
subject.init_var_bearer
|
98
99
|
subject.add_var('y')
|
99
100
|
expect(subject.include?('y')).to be_truthy
|
data/spec/glue/dsl_chap1_spec.rb
CHANGED
@@ -13,7 +13,6 @@ module MiniKraken
|
|
13
13
|
|
14
14
|
context 'Chapter 1 examples:' do
|
15
15
|
it 'passes frame 1:7' do
|
16
|
-
# Reasoned S2, frame 1:7
|
17
16
|
# (run* q #u) ;; => ()
|
18
17
|
|
19
18
|
result = run_star('q', _fail)
|
@@ -21,7 +20,6 @@ module MiniKraken
|
|
21
20
|
end
|
22
21
|
|
23
22
|
it 'passes frame 1:10' do
|
24
|
-
# Reasoned S2, frame 1:10
|
25
23
|
# (run* q (== 'pea 'pod) ;; => ()
|
26
24
|
|
27
25
|
result = run_star('q', equals(:pea, :pod))
|
@@ -29,7 +27,6 @@ module MiniKraken
|
|
29
27
|
end
|
30
28
|
|
31
29
|
it 'passes frame 1:11' do
|
32
|
-
# Reasoned S2, frame 1:11
|
33
30
|
# (run* q (== q 'pea) ;; => (pea)
|
34
31
|
|
35
32
|
result = run_star('q', equals(q, :pea))
|
@@ -45,7 +42,6 @@ module MiniKraken
|
|
45
42
|
end
|
46
43
|
|
47
44
|
it 'passes frame 1:17' do
|
48
|
-
# Reasoned S2, frame 1:17
|
49
45
|
# (run* q succeed) ;; => (_0)
|
50
46
|
|
51
47
|
result = run_star('q', succeed)
|
@@ -61,7 +57,6 @@ module MiniKraken
|
|
61
57
|
end
|
62
58
|
|
63
59
|
it 'passes frame 1:20' do
|
64
|
-
# Reasoned S2, frame 1:20
|
65
60
|
# (run* q (== q q)) ;; => (_0)
|
66
61
|
|
67
62
|
result = run_star('q', equals(q, q))
|
@@ -77,7 +72,6 @@ module MiniKraken
|
|
77
72
|
end
|
78
73
|
|
79
74
|
it 'passes frame 1:25' do
|
80
|
-
# Reasoned S2, frame 1:25
|
81
75
|
# (run* q (fresh (x) (== (cons x '()) q))) ;; => ((_0))
|
82
76
|
# require 'debug' Invalid goal argument
|
83
77
|
result = run_star('q', fresh('x', equals(cons(x, null), q)))
|
@@ -85,7 +79,6 @@ module MiniKraken
|
|
85
79
|
end
|
86
80
|
|
87
81
|
it 'passes frame 1:31' do
|
88
|
-
# Reasoned S2, frame 1:31
|
89
82
|
# (run* q (fresh (x) (== x q))) ;; => (_0)
|
90
83
|
|
91
84
|
result = run_star('q', fresh('x', equals(x, q)))
|
@@ -93,7 +86,6 @@ module MiniKraken
|
|
93
86
|
end
|
94
87
|
|
95
88
|
it 'passes frame 1:32' do
|
96
|
-
# Reasoned S2, frame 1:32
|
97
89
|
# (run* q (== '(((pea)) pod) '(((pea)) pod))) ;; => (_0)
|
98
90
|
|
99
91
|
result = run_star('q', equals(cons(cons(:pea), :pod), cons(cons(:pea), :pod)))
|
@@ -102,7 +94,6 @@ module MiniKraken
|
|
102
94
|
|
103
95
|
it 'passes frame 1:33' do
|
104
96
|
# Beware: quasiquoting
|
105
|
-
# Reasoned S2, frame 1:33
|
106
97
|
# (run* q (== '(((pea)) pod) '(((pea)) ,q))) ;; => ('pod)
|
107
98
|
|
108
99
|
result = run_star('q', equals(cons(cons(:pea), :pod), cons(cons(:pea), q)))
|
@@ -110,7 +101,6 @@ module MiniKraken
|
|
110
101
|
end
|
111
102
|
|
112
103
|
it 'passes frame 1:34' do
|
113
|
-
# Reasoned S2, frame 1:34
|
114
104
|
# (run* q (== '(((,q)) pod) `(((pea)) pod))) ;; => ('pea)
|
115
105
|
|
116
106
|
expr1 = cons(cons(cons(q)), cons(:pod))
|
@@ -122,7 +112,6 @@ module MiniKraken
|
|
122
112
|
end
|
123
113
|
|
124
114
|
it 'passes frame 1:35' do
|
125
|
-
# Reasoned S2, frame 1:35
|
126
115
|
# (run* q (fresh (x) (== '(((,q)) pod) `(((,x)) pod)))) ;; => (_0)
|
127
116
|
|
128
117
|
result = run_star('q', fresh('x', equals(cons(cons(q), :pod), cons(cons(x), :pod))))
|
@@ -130,7 +119,6 @@ module MiniKraken
|
|
130
119
|
end
|
131
120
|
|
132
121
|
it 'passes frame 1:36' do
|
133
|
-
# Reasoned S2, frame 1:36
|
134
122
|
# (run* q (fresh (x) (== '(((,q)) ,x) `(((,x)) pod)))) ;; => ('pod)
|
135
123
|
|
136
124
|
expr1 = cons(cons(cons(q)), cons(x))
|
@@ -142,7 +130,6 @@ module MiniKraken
|
|
142
130
|
end
|
143
131
|
|
144
132
|
it 'passes frame 1:37' do
|
145
|
-
# Reasoned S2, frame 1:37
|
146
133
|
# (run* q (fresh (x) (== '( ,x ,x) q))) ;; => (_0 _0)
|
147
134
|
|
148
135
|
result = run_star('q', fresh('x', equals(cons(x, cons(x)), q)))
|
@@ -150,7 +137,6 @@ module MiniKraken
|
|
150
137
|
end
|
151
138
|
|
152
139
|
it 'passes frame 1:38' do
|
153
|
-
# Reasoned S2, frame 1:38
|
154
140
|
# (run* q (fresh (x) (fresh (y) (== '( ,q ,y) '((,x ,y) ,x))))) ;; => (_0 _0)
|
155
141
|
|
156
142
|
result = run_star('q', fresh('x', fresh('y', equals(cons(q, cons(y)), cons(cons(x, cons(y)), cons(x))))))
|
@@ -167,7 +153,6 @@ module MiniKraken
|
|
167
153
|
end
|
168
154
|
|
169
155
|
it 'passes frame 1:42' do
|
170
|
-
# Reasoned S2, frame 1:42
|
171
156
|
# (run* s (fresh (t) (fresh (u) (== '( ,t ,u) s)))) ;; => (_0 _1)
|
172
157
|
|
173
158
|
result = run_star('s', fresh('t', fresh('u', equals(cons(t, cons(u)), s))))
|
@@ -176,7 +161,6 @@ module MiniKraken
|
|
176
161
|
end
|
177
162
|
|
178
163
|
it 'passes frame 1:43' do
|
179
|
-
# Reasoned S2, frame 1:43
|
180
164
|
# (run* q (fresh (x) (fresh (y) (== '( ,x ,y ,x) q)))) ;; => (_0 _1 _0)
|
181
165
|
|
182
166
|
result = run_star('q', fresh('x', fresh('y', equals(cons(x, cons(y, cons(x))), q))))
|
@@ -193,7 +177,6 @@ module MiniKraken
|
|
193
177
|
end
|
194
178
|
|
195
179
|
it 'passes frame 1:51' do
|
196
|
-
# Reasoned S2, frame 1:51
|
197
180
|
# (run* q (conj2 succeed (== 'corn q)) ;; => ('corn)
|
198
181
|
|
199
182
|
result = run_star('q', conj2(succeed, equals(:corn, q)))
|
@@ -201,7 +184,6 @@ module MiniKraken
|
|
201
184
|
end
|
202
185
|
|
203
186
|
it 'passes frame 1:52' do
|
204
|
-
# Reasoned S2, frame 1:52
|
205
187
|
# (run* q (conj2 fail (== 'corn q)) ;; => ()
|
206
188
|
|
207
189
|
result = run_star('q', conj2(_fail, equals(:corn, q)))
|
@@ -217,7 +199,6 @@ module MiniKraken
|
|
217
199
|
end
|
218
200
|
|
219
201
|
it 'passes frame 1:54' do
|
220
|
-
# Reasoned S2, frame 1:54
|
221
202
|
# (run* q (conj2 (== 'corn q)(== 'corn q)) ;; => ('corn)
|
222
203
|
|
223
204
|
result = run_star('q', conj2(equals(:corn, q), equals(:corn, q)))
|
@@ -225,7 +206,6 @@ module MiniKraken
|
|
225
206
|
end
|
226
207
|
|
227
208
|
it "supports 'disj2' and passes frame 1:55" do
|
228
|
-
# Reasoned S2, frame 1:55
|
229
209
|
# (run* q (disj2 fail fail)) ;; => ()
|
230
210
|
|
231
211
|
result = run_star('q', disj2(_fail, _fail))
|
@@ -233,7 +213,6 @@ module MiniKraken
|
|
233
213
|
end
|
234
214
|
|
235
215
|
it 'passes frame 1:56' do
|
236
|
-
# Reasoned S2, frame 1:56
|
237
216
|
# (run* q (disj2 (== 'olive q) fail)) ;; => ('olive)
|
238
217
|
|
239
218
|
result = run_star('q', disj2(equals(:olive, q), _fail))
|
@@ -241,7 +220,6 @@ module MiniKraken
|
|
241
220
|
end
|
242
221
|
|
243
222
|
it 'passes frame 1:57' do
|
244
|
-
# Reasoned S2, frame 1:57
|
245
223
|
# (run* q (disj2 fail (== 'oil q))) ;; => (oil)
|
246
224
|
|
247
225
|
result = run_star('q', disj2(_fail, equals(:oil, q)))
|
@@ -249,7 +227,6 @@ module MiniKraken
|
|
249
227
|
end
|
250
228
|
|
251
229
|
it 'passes frame 1:58' do
|
252
|
-
# Reasoned S2, frame 1:58
|
253
230
|
# (run* q (disj2 (== 'olive q) (== 'oil q))) ;; => (olive oil)
|
254
231
|
|
255
232
|
result = run_star('q', disj2(equals(:olive, q), equals(:oil, q)))
|
@@ -258,7 +235,6 @@ module MiniKraken
|
|
258
235
|
end
|
259
236
|
|
260
237
|
it 'passes frame 1:59' do
|
261
|
-
# Reasoned S2, frame 1:59
|
262
238
|
# (run* q (fresh (x) (fresh (y) (disj2 (== '( ,x ,y ) q) (== '( ,x ,y ) q)))))
|
263
239
|
# ;; => ((_0 _1) (_0 _1))
|
264
240
|
|
@@ -269,7 +245,6 @@ module MiniKraken
|
|
269
245
|
end
|
270
246
|
|
271
247
|
it 'passes frame 1:62' do
|
272
|
-
# Reasoned S2, frame 1:62
|
273
248
|
# (run* x (disj2
|
274
249
|
# (conj2 (== 'olive x) fail)
|
275
250
|
# (== 'oil x))) ;; => (oil)
|
@@ -279,7 +254,6 @@ module MiniKraken
|
|
279
254
|
end
|
280
255
|
|
281
256
|
it 'passes frame 1:63' do
|
282
|
-
# Reasoned S2, frame 1:63
|
283
257
|
# (run* x (disj2
|
284
258
|
# (conj2 (== 'olive x) succeed)
|
285
259
|
# ('oil x))) ;; => (olive oil)
|
@@ -289,7 +263,6 @@ module MiniKraken
|
|
289
263
|
end
|
290
264
|
|
291
265
|
it 'passes frame 1:64' do
|
292
|
-
# Reasoned S2, frame 1:64
|
293
266
|
# (run* x (disj2
|
294
267
|
# (== 'oil x)
|
295
268
|
# (conj2 (== 'olive x) succeed))) ;; => (oil olive)
|
@@ -299,7 +272,6 @@ module MiniKraken
|
|
299
272
|
end
|
300
273
|
|
301
274
|
it 'passes frame 1:65' do
|
302
|
-
# Reasoned S2, frame 1:65
|
303
275
|
# (run* x (disj2
|
304
276
|
# (conj2(== 'virgin x) fail)
|
305
277
|
# (disj2
|
@@ -314,7 +286,6 @@ module MiniKraken
|
|
314
286
|
end
|
315
287
|
|
316
288
|
it 'passes frame 1:67' do
|
317
|
-
# Reasoned S2, frame 1:67
|
318
289
|
# (run* r
|
319
290
|
# (fresh x
|
320
291
|
# (fresh y
|
@@ -331,7 +302,6 @@ module MiniKraken
|
|
331
302
|
end
|
332
303
|
|
333
304
|
it 'passes frame 1:68' do
|
334
|
-
# Reasoned S2, frame 1:68
|
335
305
|
# (run* r
|
336
306
|
# (fresh x
|
337
307
|
# (fresh y
|
@@ -348,7 +318,6 @@ module MiniKraken
|
|
348
318
|
end
|
349
319
|
|
350
320
|
it 'passes frame 1:70' do
|
351
|
-
# Reasoned S2, frame 1:70
|
352
321
|
# (run* r
|
353
322
|
# (fresh (x y)
|
354
323
|
# (conj2
|
@@ -364,7 +333,6 @@ module MiniKraken
|
|
364
333
|
end
|
365
334
|
|
366
335
|
it 'passes frame 1:72' do
|
367
|
-
# Reasoned S2, frame 1:72
|
368
336
|
# (run* (r x y)
|
369
337
|
# (conj2
|
370
338
|
# (conj2
|
@@ -397,7 +365,6 @@ module MiniKraken
|
|
397
365
|
end
|
398
366
|
|
399
367
|
it 'passes frame 1:75' do
|
400
|
-
# Reasoned S2, frame 1:75
|
401
368
|
# (run* (x y)
|
402
369
|
# (conj2
|
403
370
|
# (== 'split x)
|
@@ -408,7 +375,6 @@ module MiniKraken
|
|
408
375
|
end
|
409
376
|
|
410
377
|
it 'passes frame 1:76' do
|
411
|
-
# Reasoned S2, frame 1:76
|
412
378
|
# (run* (x y)
|
413
379
|
# (disj2
|
414
380
|
# (conj2 (== 'split x) (== 'pea y))
|
@@ -422,7 +388,6 @@ module MiniKraken
|
|
422
388
|
end
|
423
389
|
|
424
390
|
it 'passes frame 1:77' do
|
425
|
-
# Reasoned S2, frame 1:77
|
426
391
|
# (run* r
|
427
392
|
# (fresh (x y)
|
428
393
|
# (conj2
|
@@ -442,7 +407,6 @@ module MiniKraken
|
|
442
407
|
end
|
443
408
|
|
444
409
|
it 'passes frame 1:78' do
|
445
|
-
# Reasoned S2, frame 1:78
|
446
410
|
# (run* r
|
447
411
|
# (fresh (x y)
|
448
412
|
# (disj2
|
@@ -460,7 +424,6 @@ module MiniKraken
|
|
460
424
|
end
|
461
425
|
|
462
426
|
it 'passes frame 1:80' do
|
463
|
-
# Reasoned S2, frame 1:80
|
464
427
|
# (run* (x y z)
|
465
428
|
# (disj2
|
466
429
|
# (conj2 (== 'split x) (== 'pea y))
|
@@ -476,7 +439,6 @@ module MiniKraken
|
|
476
439
|
end
|
477
440
|
|
478
441
|
it 'passes frame 1:81' do
|
479
|
-
# Reasoned S2, frame 1:81
|
480
442
|
# (run* (x y)
|
481
443
|
# (== 'split x)
|
482
444
|
# (== 'pea y)) ;; => ((split pea))
|
@@ -486,7 +448,6 @@ module MiniKraken
|
|
486
448
|
end
|
487
449
|
|
488
450
|
it "supports 'defrel' and passes frame 1:82" do
|
489
|
-
# Reasoned S2, frame 1:82
|
490
451
|
# (defrel (teacupo t)
|
491
452
|
# (disj2 (== 'tea t) (== 'cup t)))
|
492
453
|
|
@@ -551,7 +512,6 @@ module MiniKraken
|
|
551
512
|
end
|
552
513
|
|
553
514
|
it 'passes frame 1:85' do
|
554
|
-
# Reasoned S2, frame 1:85
|
555
515
|
# (run* (x y)
|
556
516
|
# (teacupo x)
|
557
517
|
# (teacupo y)) ;; => ((tea tea)(tea cup)(cup tea)(cup c))
|
@@ -566,7 +526,6 @@ module MiniKraken
|
|
566
526
|
end
|
567
527
|
|
568
528
|
it 'passes frame 1:86' do
|
569
|
-
# Reasoned S2, frame 1:86
|
570
529
|
# (run* (x y)
|
571
530
|
# (teacupo x)
|
572
531
|
# (teacupo x)) ;; => ((tea _0)(cup _0))
|
@@ -577,7 +536,6 @@ module MiniKraken
|
|
577
536
|
end
|
578
537
|
|
579
538
|
it 'passes frame 1:87' do
|
580
|
-
# Reasoned S2, frame 1:87
|
581
539
|
# (run* (x y)
|
582
540
|
# (disj2
|
583
541
|
# (conj2 (teacupo x) (teacupo x))
|
@@ -598,7 +556,6 @@ module MiniKraken
|
|
598
556
|
end
|
599
557
|
|
600
558
|
it 'supports conde and passes frame 1:88 (i)' do
|
601
|
-
# Reasoned S2, frame 1:88
|
602
559
|
# (run* (x y)
|
603
560
|
# (conde
|
604
561
|
# ((teacupo x) (teacupo x))
|
@@ -643,7 +600,6 @@ module MiniKraken
|
|
643
600
|
end
|
644
601
|
|
645
602
|
it 'passes frame 1:90' do
|
646
|
-
# Reasoned S2, frame 1:90
|
647
603
|
# (run* (x y)
|
648
604
|
# (conde
|
649
605
|
# ((fresh (z)
|
@@ -658,7 +614,6 @@ module MiniKraken
|
|
658
614
|
end
|
659
615
|
|
660
616
|
it 'passes frame 1:91' do
|
661
|
-
# Reasoned S2, frame 1:91
|
662
617
|
# (run* (x y)
|
663
618
|
# (conde
|
664
619
|
# ((== 'split x) (== 'pea y))
|