porolog 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8f03d8b0b9332d88e6a228ee79b552ff6adebc1186b877aa88311244655ac7dc
4
- data.tar.gz: aef65ad9a07b16846db6b693d58de8c88926980571e609b85686613d39dfee42
3
+ metadata.gz: 8dc5fd364c17d1e71e8bcfe0a999f38814acf7435af6d479825c02de9a549d68
4
+ data.tar.gz: 0622422f07dcd49faf16b3e91ecae63fd76ed32cf7c15beb337fd2a4fb127c97
5
5
  SHA512:
6
- metadata.gz: 0657c3e55a9c99651414f0af247984fae6d5855a1aa77ff568c0e91f07c6b2bef2c18cd862e0e99af5b18940b773d1672547ad658a622581a953785e3c1fe8d3
7
- data.tar.gz: bdbf3e032ca52befae3479954e3a198e7ba46f9fff45e2f7ee1ac46d9a537b0f20709699b3486e98247f58204cb548ff72eaeb16bdba968743c773ff0c192576
6
+ metadata.gz: 4339f072ce58ac3b2afe74fb93bf3cc629b2f3677984fd643f2999e1a7b90b1e540efeb1f3f61b0103e722d6ad8cbe3717eec7fdf3ec60647b1c69752d2e816c
7
+ data.tar.gz: c2fd162e0d3ea14fe60ff411e51ae990e0e07c79784fa16dc28f14747fe2e6c7558b73cbb369a92a98882a354b22d6b06545ed7d3701a040e164aa975fd84f90
data/README.md CHANGED
@@ -47,7 +47,7 @@ The main purpose of Porolog though is to add declarative logic programming to Ru
47
47
  allow hybrid programming, in the same way that Ruby allows hybrid programming in the
48
48
  functional programming paradigm.
49
49
 
50
- This then Ruby programs to be written spanning all the major programming paradigms:
50
+ This then enables Ruby programs to be written spanning all the major programming paradigms:
51
51
  - Imperative
52
52
  - Functional
53
53
  - Object Oriented
@@ -56,7 +56,7 @@ This then Ruby programs to be written spanning all the major programming paradig
56
56
  ### Basic Usage
57
57
 
58
58
  Using `porolog` involves creating logic from facts and rules.
59
- An example, of the most basic usage uses just facts.
59
+ An example of the most basic usage, using just facts.
60
60
 
61
61
  ```ruby
62
62
  require 'porolog'
@@ -87,7 +87,7 @@ include Porolog
87
87
  class Numbers
88
88
 
89
89
  Predicate.scope self
90
- predicate :prime
90
+ predicate :prime, class_base: self
91
91
 
92
92
  prime(2).fact!
93
93
  prime(3).fact!
@@ -120,6 +120,7 @@ A Predicate represents a Prolog predicate. They form the basis for rules and qu
120
120
 
121
121
  The Scope class enables you to have multiple logic programs embedded in the same
122
122
  Ruby program. A Scope object defines a scope for the predicates of a logic programme.
123
+ This allows you to have different predicates with the same name.
123
124
 
124
125
  ```ruby
125
126
  require 'porolog'
@@ -142,14 +143,9 @@ prime.('pump C').fact!
142
143
  prime.('pump D').fact!
143
144
 
144
145
  # -- Assertions --
145
- assert_equal [:default,:numbers,:pumps], Scope.scopes
146
-
147
- assert_scope Porolog::Scope[:default], :default, []
148
- assert_scope Porolog::Scope[:numbers], :first, [prime1]
149
- assert_scope Porolog::Scope[:pumps], :second, [prime2]
150
-
151
- assert_equal :prime, prime1.name
152
- assert_equal :prime, prime2.name
146
+ assert_equal [:default,:numbers,:pumps], Scope.scopes
147
+ assert_equal :prime, prime1.name
148
+ assert_equal :prime, prime2.name
153
149
 
154
150
  solutions = [
155
151
  { X: 2 },
@@ -158,7 +154,7 @@ solutions = [
158
154
  { X: 7 },
159
155
  { X: 11 },
160
156
  ]
161
- assert_equal solutions, prime1.(:X).solve
157
+ assert_equal solutions, prime1.(:X).solve
162
158
 
163
159
  solutions = [
164
160
  { X: 'pump A' },
@@ -166,9 +162,101 @@ solutions = [
166
162
  { X: 'pump C' },
167
163
  { X: 'pump D' },
168
164
  ]
169
- assert_equal solutions, prime2.(:X).solve
165
+ assert_equal solutions, prime2.(:X).solve
166
+ ```
167
+
168
+ ### A Complete Example
169
+
170
+ This example shows:
171
+
172
+ * how to define facts,
173
+ * how to define rules,
174
+ * how to encapsulate predicates within a class,
175
+ * how to specify a cut,
176
+ * how to use builtin predicates, and
177
+ * how to initiate queries.
178
+
179
+ ```ruby
180
+ require 'porolog'
181
+
182
+ include Porolog
183
+
184
+ class Numbers
185
+
186
+ Predicate.scope self
187
+ builtin :gtr, :is, :noteq, :between, class_base: self
188
+ predicate :prime, :search_prime, class_base: self
189
+
190
+ prime(2).fact!
191
+ prime(3).fact!
192
+ prime(:X) << [
193
+ between(:X, 4, 100),
194
+ is(:X_mod_2, :X) {|x| x % 2 },
195
+ noteq(:X_mod_2, 0),
196
+ :CUT,
197
+ search_prime(:X, 3),
198
+ ]
199
+
200
+ search_prime(:X, :N) << [
201
+ is(:N_squared, :N) {|n| n ** 2 },
202
+ gtr(:N_squared, :X),
203
+ :CUT
204
+ ]
205
+
206
+ search_prime(:X, :N) << [
207
+ is(:X_mod_N, :X, :N) {|x,n| x % n },
208
+ noteq(:X_mod_N, 0),
209
+ is(:M, :N) {|n| n + 2 },
210
+ :CUT,
211
+ search_prime(:X, :M),
212
+ ]
213
+
214
+ def show_primes
215
+ solutions = prime(:X).solve
216
+
217
+ solutions.each do |solution|
218
+ puts "#{solution[:X]} is prime"
219
+ end
220
+ end
221
+
222
+ def primes
223
+ Numbers.prime(:X).solve_for(:X)
224
+ end
225
+
226
+ def self.kind(number)
227
+ prime(number).valid? ? 'prime' : 'not prime'
228
+ end
229
+
230
+ def initialize(number)
231
+ @number = number
232
+ end
233
+
234
+ def kind
235
+ prime(@number).valid? ? :prime : :not_prime
236
+ end
237
+
238
+ end
239
+
240
+
241
+ numbers = Numbers.new 23
242
+ numbers.show_primes
243
+ puts numbers.primes.inspect
244
+
245
+ puts Numbers.prime(3).valid?.inspect
246
+
247
+ puts ARGV.inspect
248
+ ARGV.map(&:to_i).each do |arg|
249
+ puts "#{arg.inspect} is #{Numbers.kind(arg)}"
250
+ number = Numbers.new arg
251
+ puts number.kind.inspect
252
+ end
170
253
  ```
171
254
 
255
+ ### Porolog Wiki
256
+
257
+ See the Wiki for further details.
258
+ https://github.com/wizardofosmium/porolog/wiki
259
+
172
260
  ## Testing
173
261
 
174
262
  ```bash
@@ -14,7 +14,7 @@
14
14
  <img src="./assets/0.10.2/loading.gif" alt="loading"/>
15
15
  </div>
16
16
  <div id="wrapper" style="display:none;">
17
- <div class="timestamp">Generated <abbr class="timeago" title="2020-08-02T19:23:23+10:00">2020-08-02T19:23:23+10:00</abbr></div>
17
+ <div class="timestamp">Generated <abbr class="timeago" title="2020-08-06T22:13:52+10:00">2020-08-06T22:13:52+10:00</abbr></div>
18
18
  <ul class="group_tabs"></ul>
19
19
 
20
20
  <div id="content">
@@ -25,7 +25,7 @@
25
25
  covered at
26
26
  <span class="covered_strength">
27
27
  <span class="green">
28
- 17763.68
28
+ 17764.4
29
29
  </span>
30
30
  </span> hits/line)
31
31
  </h2>
@@ -97,7 +97,7 @@
97
97
  <td>146</td>
98
98
  <td>146</td>
99
99
  <td>0</td>
100
- <td>14683.7</td>
100
+ <td>14712.7</td>
101
101
  </tr>
102
102
 
103
103
  <tr>
@@ -107,7 +107,7 @@
107
107
  <td>146</td>
108
108
  <td>146</td>
109
109
  <td>0</td>
110
- <td>159315.8</td>
110
+ <td>159315.7</td>
111
111
  </tr>
112
112
 
113
113
  <tr>
@@ -177,7 +177,7 @@
177
177
  <td>129</td>
178
178
  <td>129</td>
179
179
  <td>0</td>
180
- <td>450212.5</td>
180
+ <td>450212.4</td>
181
181
  </tr>
182
182
 
183
183
  <tr>
@@ -411,7 +411,7 @@
411
411
  <li class="covered" data-hits="1" data-linenumber="14">
412
412
  <span class="hits">1</span>
413
413
 
414
- <code class="ruby"> VERSION = &#39;1.0.0&#39;.freeze</code>
414
+ <code class="ruby"> VERSION = &#39;1.0.1&#39;.freeze</code>
415
415
  </li>
416
416
 
417
417
  <li class="never" data-hits="" data-linenumber="15">
@@ -423,7 +423,7 @@
423
423
  <li class="covered" data-hits="1" data-linenumber="16">
424
424
  <span class="hits">1</span>
425
425
 
426
- <code class="ruby"> VERSION_DATE = &#39;2020-08-02&#39;.freeze</code>
426
+ <code class="ruby"> VERSION_DATE = &#39;2020-08-06&#39;.freeze</code>
427
427
  </li>
428
428
 
429
429
  <li class="never" data-hits="" data-linenumber="17">
@@ -7870,7 +7870,7 @@
7870
7870
  <li class="covered" data-hits="1" data-linenumber="71">
7871
7871
  <span class="hits">1</span>
7872
7872
 
7873
- <code class="ruby"> def falicy!</code>
7873
+ <code class="ruby"> def fallacy!</code>
7874
7874
  </li>
7875
7875
 
7876
7876
  <li class="covered" data-hits="4" data-linenumber="72">
@@ -7954,7 +7954,7 @@
7954
7954
  <li class="covered" data-hits="1" data-linenumber="85">
7955
7955
  <span class="hits">1</span>
7956
7956
 
7957
- <code class="ruby"> def cut_falicy!</code>
7957
+ <code class="ruby"> def cut_fallacy!</code>
7958
7958
  </li>
7959
7959
 
7960
7960
  <li class="covered" data-hits="2" data-linenumber="86">
@@ -10570,14 +10570,14 @@
10570
10570
  <code class="ruby"> def deleted?</code>
10571
10571
  </li>
10572
10572
 
10573
- <li class="covered" data-hits="7416" data-linenumber="125">
10574
- <span class="hits">7416</span>
10573
+ <li class="covered" data-hits="7414" data-linenumber="125">
10574
+ <span class="hits">7414</span>
10575
10575
 
10576
10576
  <code class="ruby"> @deleted ||= check_deleted</code>
10577
10577
  </li>
10578
10578
 
10579
- <li class="covered" data-hits="7416" data-linenumber="126">
10580
- <span class="hits">7416</span>
10579
+ <li class="covered" data-hits="7414" data-linenumber="126">
10580
+ <span class="hits">7414</span>
10581
10581
 
10582
10582
  <code class="ruby"> @deleted</code>
10583
10583
  </li>
@@ -10612,8 +10612,8 @@
10612
10612
  <code class="ruby"> def check_deleted</code>
10613
10613
  </li>
10614
10614
 
10615
- <li class="covered" data-hits="7408" data-linenumber="132">
10616
- <span class="hits">7408</span>
10615
+ <li class="covered" data-hits="7406" data-linenumber="132">
10616
+ <span class="hits">7406</span>
10617
10617
 
10618
10618
  <code class="ruby"> return false if @@goals.include?(self)</code>
10619
10619
  </li>
@@ -10624,20 +10624,20 @@
10624
10624
  <code class="ruby"> </code>
10625
10625
  </li>
10626
10626
 
10627
- <li class="covered" data-hits="7393" data-linenumber="134">
10628
- <span class="hits">7393</span>
10627
+ <li class="covered" data-hits="7391" data-linenumber="134">
10628
+ <span class="hits">7391</span>
10629
10629
 
10630
10630
  <code class="ruby"> @variables.delete_if do |_name,variable|</code>
10631
10631
  </li>
10632
10632
 
10633
- <li class="covered" data-hits="31385" data-linenumber="135">
10634
- <span class="hits">31385</span>
10633
+ <li class="covered" data-hits="31379" data-linenumber="135">
10634
+ <span class="hits">31379</span>
10635
10635
 
10636
10636
  <code class="ruby"> variable.remove</code>
10637
10637
  </li>
10638
10638
 
10639
- <li class="covered" data-hits="31385" data-linenumber="136">
10640
- <span class="hits">31385</span>
10639
+ <li class="covered" data-hits="31379" data-linenumber="136">
10640
+ <span class="hits">31379</span>
10641
10641
 
10642
10642
  <code class="ruby"> true</code>
10643
10643
  </li>
@@ -10654,8 +10654,8 @@
10654
10654
  <code class="ruby"> </code>
10655
10655
  </li>
10656
10656
 
10657
- <li class="covered" data-hits="7393" data-linenumber="139">
10658
- <span class="hits">7393</span>
10657
+ <li class="covered" data-hits="7391" data-linenumber="139">
10658
+ <span class="hits">7391</span>
10659
10659
 
10660
10660
  <code class="ruby"> @values.delete_if do |_name,value|</code>
10661
10661
  </li>
@@ -10684,8 +10684,8 @@
10684
10684
  <code class="ruby"> </code>
10685
10685
  </li>
10686
10686
 
10687
- <li class="covered" data-hits="7393" data-linenumber="144">
10688
- <span class="hits">7393</span>
10687
+ <li class="covered" data-hits="7391" data-linenumber="144">
10688
+ <span class="hits">7391</span>
10689
10689
 
10690
10690
  <code class="ruby"> true</code>
10691
10691
  </li>
@@ -10774,8 +10774,8 @@
10774
10774
  <code class="ruby"> def terminated?</code>
10775
10775
  </li>
10776
10776
 
10777
- <li class="covered" data-hits="3142" data-linenumber="159">
10778
- <span class="hits">3142</span>
10777
+ <li class="covered" data-hits="7402" data-linenumber="159">
10778
+ <span class="hits">7402</span>
10779
10779
 
10780
10780
  <code class="ruby"> @terminate</code>
10781
10781
  </li>
@@ -12545,14 +12545,14 @@
12545
12545
  <code class="ruby"> def signature</code>
12546
12546
  </li>
12547
12547
 
12548
- <li class="covered" data-hits="59864" data-linenumber="94">
12549
- <span class="hits">59864</span>
12548
+ <li class="covered" data-hits="59862" data-linenumber="94">
12549
+ <span class="hits">59862</span>
12550
12550
 
12551
12551
  <code class="ruby"> @signature ||= [@variable1, @index1, @variable2, @index2].freeze</code>
12552
12552
  </li>
12553
12553
 
12554
- <li class="covered" data-hits="59864" data-linenumber="95">
12555
- <span class="hits">59864</span>
12554
+ <li class="covered" data-hits="59862" data-linenumber="95">
12555
+ <span class="hits">59862</span>
12556
12556
 
12557
12557
  <code class="ruby"> @signature</code>
12558
12558
  </li>
@@ -12635,14 +12635,14 @@
12635
12635
  <code class="ruby"> def remove</code>
12636
12636
  </li>
12637
12637
 
12638
- <li class="covered" data-hits="29927" data-linenumber="109">
12639
- <span class="hits">29927</span>
12638
+ <li class="covered" data-hits="29925" data-linenumber="109">
12639
+ <span class="hits">29925</span>
12640
12640
 
12641
12641
  <code class="ruby"> @variable1.instantiations.delete(self) if @variable1.is_a?(Variable) || @variable1.is_a?(Value)</code>
12642
12642
  </li>
12643
12643
 
12644
- <li class="covered" data-hits="29927" data-linenumber="110">
12645
- <span class="hits">29927</span>
12644
+ <li class="covered" data-hits="29925" data-linenumber="110">
12645
+ <span class="hits">29925</span>
12646
12646
 
12647
12647
  <code class="ruby"> @variable2.instantiations.delete(self) if @variable2.is_a?(Variable) || @variable2.is_a?(Value)</code>
12648
12648
  </li>
@@ -12653,20 +12653,20 @@
12653
12653
  <code class="ruby"> </code>
12654
12654
  </li>
12655
12655
 
12656
- <li class="covered" data-hits="29927" data-linenumber="112">
12657
- <span class="hits">29927</span>
12656
+ <li class="covered" data-hits="29925" data-linenumber="112">
12657
+ <span class="hits">29925</span>
12658
12658
 
12659
12659
  <code class="ruby"> @deleted = true</code>
12660
12660
  </li>
12661
12661
 
12662
- <li class="covered" data-hits="29927" data-linenumber="113">
12663
- <span class="hits">29927</span>
12662
+ <li class="covered" data-hits="29925" data-linenumber="113">
12663
+ <span class="hits">29925</span>
12664
12664
 
12665
12665
  <code class="ruby"> @@instantiations.delete(signature)</code>
12666
12666
  </li>
12667
12667
 
12668
- <li class="covered" data-hits="29927" data-linenumber="114">
12669
- <span class="hits">29927</span>
12668
+ <li class="covered" data-hits="29925" data-linenumber="114">
12669
+ <span class="hits">29925</span>
12670
12670
 
12671
12671
  <code class="ruby"> @deleted</code>
12672
12672
  </li>
@@ -20849,7 +20849,7 @@
20849
20849
  <li class="covered" data-hits="77" data-linenumber="119">
20850
20850
  <span class="hits">77</span>
20851
20851
 
20852
- <code class="ruby"> block.call(subgoal)</code>
20852
+ <code class="ruby"> !goal.terminated? &amp;&amp; block.call(subgoal)</code>
20853
20853
  </li>
20854
20854
 
20855
20855
  <li class="never" data-hits="" data-linenumber="120">
@@ -20945,7 +20945,7 @@
20945
20945
  <li class="covered" data-hits="1" data-linenumber="135">
20946
20946
  <span class="hits">1</span>
20947
20947
 
20948
- <code class="ruby"> block.call(subgoal)</code>
20948
+ <code class="ruby"> !goal.terminated? &amp;&amp; block.call(subgoal)</code>
20949
20949
  </li>
20950
20950
 
20951
20951
  <li class="covered" data-hits="1" data-linenumber="136">
@@ -21023,7 +21023,7 @@
21023
21023
  <li class="covered" data-hits="457" data-linenumber="148">
21024
21024
  <span class="hits">457</span>
21025
21025
 
21026
- <code class="ruby"> block.call(goal)</code>
21026
+ <code class="ruby"> !goal.terminated? &amp;&amp; block.call(goal)</code>
21027
21027
  </li>
21028
21028
 
21029
21029
  <li class="never" data-hits="" data-linenumber="149">
@@ -21035,7 +21035,7 @@
21035
21035
  <li class="covered" data-hits="2824" data-linenumber="150">
21036
21036
  <span class="hits">2824</span>
21037
21037
 
21038
- <code class="ruby"> result = satisfy_conjunction(goal, subsubgoal, conjunction, &amp;block)</code>
21038
+ <code class="ruby"> result = !goal.terminated? &amp;&amp; satisfy_conjunction(goal, subsubgoal, conjunction, &amp;block)</code>
21039
21039
  </li>
21040
21040
 
21041
21041
  <li class="never" data-hits="" data-linenumber="151">
@@ -21077,7 +21077,7 @@
21077
21077
  <li class="covered" data-hits="3663" data-linenumber="157">
21078
21078
  <span class="hits">3663</span>
21079
21079
 
21080
- <code class="ruby"> result</code>
21080
+ <code class="ruby"> result &amp;&amp; !goal.terminated?</code>
21081
21081
  </li>
21082
21082
 
21083
21083
  <li class="never" data-hits="" data-linenumber="158">
@@ -24276,20 +24276,20 @@
24276
24276
  <code class="ruby"> def remove</code>
24277
24277
  </li>
24278
24278
 
24279
- <li class="covered" data-hits="31385" data-linenumber="265">
24280
- <span class="hits">31385</span>
24279
+ <li class="covered" data-hits="31379" data-linenumber="265">
24280
+ <span class="hits">31379</span>
24281
24281
 
24282
24282
  <code class="ruby"> @instantiations.dup.each(&amp;:remove)</code>
24283
24283
  </li>
24284
24284
 
24285
- <li class="covered" data-hits="31385" data-linenumber="266">
24286
- <span class="hits">31385</span>
24285
+ <li class="covered" data-hits="31379" data-linenumber="266">
24286
+ <span class="hits">31379</span>
24287
24287
 
24288
24288
  <code class="ruby"> @instantiations[0..-1] = []</code>
24289
24289
  </li>
24290
24290
 
24291
- <li class="covered" data-hits="31385" data-linenumber="267">
24292
- <span class="hits">31385</span>
24291
+ <li class="covered" data-hits="31379" data-linenumber="267">
24292
+ <span class="hits">31379</span>
24293
24293
 
24294
24294
  <code class="ruby"> true</code>
24295
24295
  </li>
@@ -30299,7 +30299,7 @@
30299
30299
  <li class="covered" data-hits="1" data-linenumber="647">
30300
30300
  <span class="hits">1</span>
30301
30301
 
30302
- <code class="ruby"> it &#39;should not solve a falicy&#39; do</code>
30302
+ <code class="ruby"> it &#39;should not solve a fallacy&#39; do</code>
30303
30303
  </li>
30304
30304
 
30305
30305
  <li class="covered" data-hits="1" data-linenumber="648">
@@ -30317,7 +30317,7 @@
30317
30317
  <li class="covered" data-hits="1" data-linenumber="650">
30318
30318
  <span class="hits">1</span>
30319
30319
 
30320
- <code class="ruby"> fact(42).falicy!</code>
30320
+ <code class="ruby"> fact(42).fallacy!</code>
30321
30321
  </li>
30322
30322
 
30323
30323
  <li class="never" data-hits="" data-linenumber="651">
@@ -54236,7 +54236,7 @@
54236
54236
  <li class="covered" data-hits="1" data-linenumber="396">
54237
54237
  <span class="hits">1</span>
54238
54238
 
54239
- <code class="ruby"> it &#39;should return no solutions when given unequal values&#39; do</code>
54239
+ <code class="ruby"> it &#39;should return a solution when given unequal values&#39; do</code>
54240
54240
  </li>
54241
54241
 
54242
54242
  <li class="covered" data-hits="1" data-linenumber="397">
@@ -54272,7 +54272,7 @@
54272
54272
  <li class="covered" data-hits="1" data-linenumber="402">
54273
54273
  <span class="hits">1</span>
54274
54274
 
54275
- <code class="ruby"> it &#39;should return a solution when given equal values&#39; do</code>
54275
+ <code class="ruby"> it &#39;should return no solutions when given equal values&#39; do</code>
54276
54276
  </li>
54277
54277
 
54278
54278
  <li class="covered" data-hits="1" data-linenumber="403">
@@ -54308,7 +54308,7 @@
54308
54308
  <li class="covered" data-hits="1" data-linenumber="408">
54309
54309
  <span class="hits">1</span>
54310
54310
 
54311
- <code class="ruby"> it &#39;should return a solution with an unbound variable when given the same unbound variable&#39; do</code>
54311
+ <code class="ruby"> it &#39;should return no solutions with an unbound variable when given the same unbound variable&#39; do</code>
54312
54312
  </li>
54313
54313
 
54314
54314
  <li class="covered" data-hits="1" data-linenumber="409">
@@ -54344,7 +54344,7 @@
54344
54344
  <li class="covered" data-hits="1" data-linenumber="414">
54345
54345
  <span class="hits">1</span>
54346
54346
 
54347
- <code class="ruby"> it &#39;should return no solutions when given two unbound variables&#39; do</code>
54347
+ <code class="ruby"> it &#39;should return a solution when given two unbound variables&#39; do</code>
54348
54348
  </li>
54349
54349
 
54350
54350
  <li class="covered" data-hits="1" data-linenumber="415">
@@ -54380,7 +54380,7 @@
54380
54380
  <li class="covered" data-hits="1" data-linenumber="420">
54381
54381
  <span class="hits">1</span>
54382
54382
 
54383
- <code class="ruby"> it &#39;should return one solution with unbound variables when given given two uninstantiated variables that are bound to each other&#39; do</code>
54383
+ <code class="ruby"> it &#39;should return no solutions with unbound variables when given given two uninstantiated variables that are bound to each other&#39; do</code>
54384
54384
  </li>
54385
54385
 
54386
54386
  <li class="covered" data-hits="1" data-linenumber="421">
@@ -54452,7 +54452,7 @@
54452
54452
  <li class="covered" data-hits="1" data-linenumber="432">
54453
54453
  <span class="hits">1</span>
54454
54454
 
54455
- <code class="ruby"> it &#39;should return no solutions when given two uninstantiated variables that are not bound to each other&#39; do</code>
54455
+ <code class="ruby"> it &#39;should return a solution when given two uninstantiated variables that are not bound to each other&#39; do</code>
54456
54456
  </li>
54457
54457
 
54458
54458
  <li class="covered" data-hits="1" data-linenumber="433">
@@ -61461,7 +61461,7 @@
61461
61461
  <li class="covered" data-hits="1" data-linenumber="257">
61462
61462
  <span class="hits">1</span>
61463
61463
 
61464
- <code class="ruby"> it &#39;should add new falicies to a predicate&#39; do</code>
61464
+ <code class="ruby"> it &#39;should add new fallacies to a predicate&#39; do</code>
61465
61465
  </li>
61466
61466
 
61467
61467
  <li class="covered" data-hits="1" data-linenumber="258">
@@ -61479,7 +61479,7 @@
61479
61479
  <li class="covered" data-hits="1" data-linenumber="260">
61480
61480
  <span class="hits">1</span>
61481
61481
 
61482
- <code class="ruby"> alpha.(&#39;p&#39;,&#39;q&#39;).falicy!</code>
61482
+ <code class="ruby"> alpha.(&#39;p&#39;,&#39;q&#39;).fallacy!</code>
61483
61483
  </li>
61484
61484
 
61485
61485
  <li class="never" data-hits="" data-linenumber="261">
@@ -80247,7 +80247,7 @@
80247
80247
  <li class="covered" data-hits="1" data-linenumber="123">
80248
80248
  <span class="hits">1</span>
80249
80249
 
80250
- <code class="ruby"> not_same(:X,:X).cut_falicy!</code>
80250
+ <code class="ruby"> not_same(:X,:X).cut_fallacy!</code>
80251
80251
  </li>
80252
80252
 
80253
80253
  <li class="covered" data-hits="1" data-linenumber="124">