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.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +9 -0
  3. data/lib/mini_kraken/atomic/all_atomic.rb +4 -0
  4. data/lib/mini_kraken/{core → atomic}/atomic_term.rb +23 -9
  5. data/lib/mini_kraken/atomic/k_boolean.rb +42 -0
  6. data/lib/mini_kraken/{core → atomic}/k_integer.rb +2 -1
  7. data/lib/mini_kraken/{core → atomic}/k_symbol.rb +5 -3
  8. data/lib/mini_kraken/{core → composite}/composite_term.rb +6 -4
  9. data/lib/mini_kraken/composite/cons_cell.rb +132 -0
  10. data/lib/mini_kraken/{core → composite}/cons_cell_visitor.rb +1 -1
  11. data/lib/mini_kraken/core/association_walker.rb +14 -14
  12. data/lib/mini_kraken/core/binary_relation.rb +10 -10
  13. data/lib/mini_kraken/core/equals.rb +159 -161
  14. data/lib/mini_kraken/core/goal_relation.rb +2 -2
  15. data/lib/mini_kraken/core/goal_template.rb +7 -7
  16. data/lib/mini_kraken/core/{variable.rb → log_var.rb} +10 -3
  17. data/lib/mini_kraken/core/{variable_ref.rb → log_var_ref.rb} +3 -3
  18. data/lib/mini_kraken/core/tap.rb +46 -0
  19. data/lib/mini_kraken/core/vocabulary.rb +8 -8
  20. data/lib/mini_kraken/glue/dsl.rb +21 -17
  21. data/lib/mini_kraken/glue/fresh_env.rb +7 -2
  22. data/lib/mini_kraken/glue/fresh_env_factory.rb +1 -1
  23. data/lib/mini_kraken/glue/run_star_expression.rb +2 -2
  24. data/lib/mini_kraken/version.rb +1 -1
  25. data/spec/.rubocop.yml +1 -1
  26. data/spec/atomic/atomic_term_spec.rb +94 -0
  27. data/spec/{core → atomic}/k_boolean_spec.rb +19 -34
  28. data/spec/{core → atomic}/k_symbol_spec.rb +3 -11
  29. data/spec/{core → composite}/cons_cell_spec.rb +10 -8
  30. data/spec/{core → composite}/cons_cell_visitor_spec.rb +11 -10
  31. data/spec/core/association_spec.rb +6 -4
  32. data/spec/core/association_walker_spec.rb +8 -6
  33. data/spec/core/conde_spec.rb +19 -17
  34. data/spec/core/conj2_spec.rb +10 -8
  35. data/spec/core/def_relation_spec.rb +9 -7
  36. data/spec/core/disj2_spec.rb +11 -10
  37. data/spec/core/environment_spec.rb +12 -10
  38. data/spec/core/equals_spec.rb +12 -10
  39. data/spec/core/goal_spec.rb +6 -5
  40. data/spec/core/goal_template_spec.rb +5 -5
  41. data/spec/core/{variable_ref_spec.rb → log_var_ref_spec.rb} +4 -4
  42. data/spec/core/{variable_spec.rb → log_var_spec.rb} +4 -4
  43. data/spec/core/vocabulary_spec.rb +12 -11
  44. data/spec/glue/dsl_chap1_spec.rb +0 -45
  45. data/spec/glue/dsl_chap2_spec.rb +115 -7
  46. data/spec/glue/fresh_env_factory_spec.rb +11 -9
  47. data/spec/glue/fresh_env_spec.rb +3 -3
  48. data/spec/glue/run_star_expression_spec.rb +13 -11
  49. data/spec/support/factory_atomic.rb +22 -0
  50. data/spec/support/factory_methods.rb +11 -26
  51. metadata +28 -23
  52. data/lib/mini_kraken/core/cons_cell.rb +0 -82
  53. data/lib/mini_kraken/core/k_boolean.rb +0 -35
@@ -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
- require_relative '../../lib/mini_kraken/core/k_symbol'
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/k_symbol'
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) { VariableRef.new('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/variable_ref'
6
+ require_relative '../../lib/mini_kraken/core/log_var_ref'
7
7
 
8
8
  module MiniKraken
9
9
  module Core
10
- describe VariableRef do
11
- subject { VariableRef.new('q') }
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 { VariableRef.new('q') }.not_to raise_error
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/variable'
7
+ require_relative '../../lib/mini_kraken/core/log_var'
8
8
 
9
9
 
10
10
  module MiniKraken
11
11
  module Core
12
- describe Variable do
12
+ describe LogVar do
13
13
  let(:env) { Environment.new }
14
- subject { Variable.new('q') }
14
+ subject { LogVar.new('q') }
15
15
 
16
16
  context 'Initialization:' do
17
17
  it 'should be initialized with a name' do
18
- expect { Variable.new('q') }.not_to raise_error
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 '../../lib/mini_kraken/core/k_symbol'
5
- require_relative '../../lib/mini_kraken/core/variable'
6
- require_relative '../../lib/mini_kraken/core/variable_ref'
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 VariableBearer
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] = Variable.new(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) { KSymbol.new(:pea) }
69
- let(:pod) { KSymbol.new(:pod) }
70
- let(:ref_q) { VariableRef.new('q') }
71
- let(:ref_x) { VariableRef.new('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(VariableBearer)
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(VariableBearer)
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
@@ -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))