mini_kraken 0.2.03 → 0.2.04
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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))
|