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.
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))