porolog 0.0.8 → 1.0.0

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.
@@ -146,6 +146,30 @@
146
146
  <p>An Array with the Object being the head and the other Object being the tail.</p>
147
147
  </div></span>
148
148
 
149
+ </li>
150
+
151
+
152
+ <li class="public ">
153
+ <span class="summary_signature">
154
+
155
+ <a href="#clean-instance_method" title="#clean (instance method)">#<strong>clean</strong> &#x21d2; Array </a>
156
+
157
+
158
+
159
+ </span>
160
+
161
+
162
+
163
+
164
+
165
+
166
+
167
+
168
+
169
+ <span class="summary_desc"><div class='inline'>
170
+ <p>Removes Porolog processing objects.</p>
171
+ </div></span>
172
+
149
173
  </li>
150
174
 
151
175
 
@@ -272,7 +296,7 @@
272
296
  <li class="public ">
273
297
  <span class="summary_signature">
274
298
 
275
- <a href="#value-instance_method" title="#value (instance method)">#<strong>value</strong>(*args) &#x21d2; Array </a>
299
+ <a href="#value-instance_method" title="#value (instance method)">#<strong>value</strong>(visited = []) &#x21d2; Array </a>
276
300
 
277
301
 
278
302
 
@@ -390,16 +414,16 @@
390
414
  <pre class="lines">
391
415
 
392
416
 
393
- 128
394
- 129
395
- 130
396
- 131
397
- 132
398
- 133
399
- 134</pre>
417
+ 146
418
+ 147
419
+ 148
420
+ 149
421
+ 150
422
+ 151
423
+ 152</pre>
400
424
  </td>
401
425
  <td>
402
- <pre class="code"><span class="info file"># File 'lib/porolog/core_ext.rb', line 128</span>
426
+ <pre class="code"><span class="info file"># File 'lib/porolog/core_ext.rb', line 146</span>
403
427
 
404
428
  <span class='kw'>def</span> <span class='op'>/</span><span class='lparen'>(</span><span class='id identifier rubyid_other'>other</span><span class='rparen'>)</span>
405
429
  <span class='kw'>if</span> <span class='id identifier rubyid_other'>other</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="Porolog.html" title="Porolog (module)">Porolog</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Porolog/Variable.html" title="Porolog::Variable (class)">Variable</a></span></span><span class='rparen'>)</span> <span class='op'>||</span> <span class='id identifier rubyid_other'>other</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="Symbol.html" title="Symbol (class)">Symbol</a></span></span><span class='rparen'>)</span>
@@ -411,6 +435,85 @@
411
435
  </td>
412
436
  </tr>
413
437
  </table>
438
+ </div>
439
+
440
+ <div class="method_details ">
441
+ <h3 class="signature " id="clean-instance_method">
442
+
443
+ #<strong>clean</strong> &#x21d2; <tt><span class='object_link'><a href="" title="Array (class)">Array</a></span></tt>
444
+
445
+
446
+
447
+
448
+
449
+ </h3><div class="docstring">
450
+ <div class="discussion">
451
+
452
+ <p>Removes Porolog processing objects.</p>
453
+
454
+
455
+ </div>
456
+ </div>
457
+ <div class="tags">
458
+
459
+ <p class="tag_title">Returns:</p>
460
+ <ul class="return">
461
+
462
+ <li>
463
+
464
+
465
+ <span class='type'>(<tt><span class='object_link'><a href="" title="Array (class)">Array</a></span></tt>)</span>
466
+
467
+
468
+
469
+ &mdash;
470
+ <div class='inline'>
471
+ <p>the values of its elements with variables replaced by nil and Tails replaced by UNKNOWN_TAIL.</p>
472
+ </div>
473
+
474
+ </li>
475
+
476
+ </ul>
477
+
478
+ </div><table class="source_code">
479
+ <tr>
480
+ <td>
481
+ <pre class="lines">
482
+
483
+
484
+ 125
485
+ 126
486
+ 127
487
+ 128
488
+ 129
489
+ 130
490
+ 131
491
+ 132
492
+ 133
493
+ 134
494
+ 135
495
+ 136
496
+ 137</pre>
497
+ </td>
498
+ <td>
499
+ <pre class="code"><span class="info file"># File 'lib/porolog/core_ext.rb', line 125</span>
500
+
501
+ <span class='kw'>def</span> <span class='id identifier rubyid_clean'>clean</span>
502
+ <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_element'>element</span><span class='op'>|</span>
503
+ <span class='kw'>if</span> <span class='id identifier rubyid_element'>element</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="" title="Array (class)">Array</a></span></span><span class='rparen'>)</span>
504
+ <span class='id identifier rubyid_element'>element</span><span class='period'>.</span><span class='id identifier rubyid_clean'>clean</span>
505
+ <span class='kw'>elsif</span> <span class='id identifier rubyid_element'>element</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Tail</span><span class='rparen'>)</span>
506
+ <span class='const'>UNKNOWN_TAIL</span>
507
+ <span class='kw'>elsif</span> <span class='id identifier rubyid_element'>element</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Variable</span><span class='rparen'>)</span>
508
+ <span class='kw'>nil</span>
509
+ <span class='kw'>else</span>
510
+ <span class='id identifier rubyid_element'>element</span><span class='period'>.</span><span class='id identifier rubyid_value'>value</span>
511
+ <span class='kw'>end</span>
512
+ <span class='rbrace'>}</span>
513
+ <span class='kw'>end</span></pre>
514
+ </td>
515
+ </tr>
516
+ </table>
414
517
  </div>
415
518
 
416
519
  <div class="method_details ">
@@ -457,12 +560,12 @@
457
560
  <pre class="lines">
458
561
 
459
562
 
460
- 166
461
- 167
462
- 168</pre>
563
+ 184
564
+ 185
565
+ 186</pre>
463
566
  </td>
464
567
  <td>
465
- <pre class="code"><span class="info file"># File 'lib/porolog/core_ext.rb', line 166</span>
568
+ <pre class="code"><span class="info file"># File 'lib/porolog/core_ext.rb', line 184</span>
466
569
 
467
570
  <span class='kw'>def</span> <span class='id identifier rubyid_goal'>goal</span>
468
571
  <span class='id identifier rubyid_map'>map</span><span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_element'>element</span><span class='op'>|</span> <span class='id identifier rubyid_element'>element</span><span class='period'>.</span><span class='id identifier rubyid_goal'>goal</span> <span class='kw'>if</span> <span class='id identifier rubyid_element'>element</span><span class='period'>.</span><span class='id identifier rubyid_respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='symbol'>:goal</span><span class='rparen'>)</span> <span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_flatten'>flatten</span><span class='period'>.</span><span class='id identifier rubyid_find'>find</span><span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_goal'>goal</span><span class='op'>|</span> <span class='id identifier rubyid_goal'>goal</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="Porolog.html" title="Porolog (module)">Porolog</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Porolog/Goal.html" title="Porolog::Goal (class)">Goal</a></span></span><span class='rparen'>)</span> <span class='rbrace'>}</span>
@@ -538,20 +641,20 @@
538
641
  <pre class="lines">
539
642
 
540
643
 
541
- 138
542
- 139
543
- 140
544
- 141
545
- 142
546
- 143
547
- 144
548
- 145
549
- 146
550
- 147
551
- 148</pre>
644
+ 156
645
+ 157
646
+ 158
647
+ 159
648
+ 160
649
+ 161
650
+ 162
651
+ 163
652
+ 164
653
+ 165
654
+ 166</pre>
552
655
  </td>
553
656
  <td>
554
- <pre class="code"><span class="info file"># File 'lib/porolog/core_ext.rb', line 138</span>
657
+ <pre class="code"><span class="info file"># File 'lib/porolog/core_ext.rb', line 156</span>
555
658
 
556
659
  <span class='kw'>def</span> <span class='id identifier rubyid_head'>head</span><span class='lparen'>(</span><span class='id identifier rubyid_head_size'>head_size</span> <span class='op'>=</span> <span class='int'>1</span><span class='rparen'>)</span>
557
660
  <span class='kw'>if</span> <span class='id identifier rubyid_head_size'>head_size</span> <span class='op'>==</span> <span class='int'>1</span>
@@ -613,12 +716,12 @@
613
716
  <pre class="lines">
614
717
 
615
718
 
616
- 161
617
- 162
618
- 163</pre>
719
+ 179
720
+ 180
721
+ 181</pre>
619
722
  </td>
620
723
  <td>
621
- <pre class="code"><span class="info file"># File 'lib/porolog/core_ext.rb', line 161</span>
724
+ <pre class="code"><span class="info file"># File 'lib/porolog/core_ext.rb', line 179</span>
622
725
 
623
726
  <span class='kw'>def</span> <span class='id identifier rubyid_headtail?'>headtail?</span>
624
727
  <span class='id identifier rubyid_length'>length</span> <span class='op'>==</span> <span class='int'>2</span> <span class='op'>&amp;&amp;</span> <span class='lparen'>(</span><span class='id identifier rubyid_last'>last</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Tail</span><span class='rparen'>)</span> <span class='op'>||</span> <span class='id identifier rubyid_last'>last</span> <span class='op'>==</span> <span class='const'>UNKNOWN_TAIL</span><span class='rparen'>)</span>
@@ -694,16 +797,16 @@
694
797
  <pre class="lines">
695
798
 
696
799
 
697
- 152
698
- 153
699
- 154
700
- 155
701
- 156
702
- 157
703
- 158</pre>
800
+ 170
801
+ 171
802
+ 172
803
+ 173
804
+ 174
805
+ 175
806
+ 176</pre>
704
807
  </td>
705
808
  <td>
706
- <pre class="code"><span class="info file"># File 'lib/porolog/core_ext.rb', line 152</span>
809
+ <pre class="code"><span class="info file"># File 'lib/porolog/core_ext.rb', line 170</span>
707
810
 
708
811
  <span class='kw'>def</span> <span class='id identifier rubyid_tail'>tail</span><span class='lparen'>(</span><span class='id identifier rubyid_head_size'>head_size</span> <span class='op'>=</span> <span class='int'>1</span><span class='rparen'>)</span>
709
812
  <span class='kw'>if</span> <span class='id identifier rubyid_last'>last</span> <span class='op'>==</span> <span class='const'><span class='object_link'><a href="Porolog.html" title="Porolog (module)">Porolog</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Porolog.html#UNKNOWN_TAIL-constant" title="Porolog::UNKNOWN_TAIL (constant)">UNKNOWN_TAIL</a></span></span>
@@ -761,12 +864,12 @@
761
864
  <pre class="lines">
762
865
 
763
866
 
764
- 122
765
- 123
766
- 124</pre>
867
+ 140
868
+ 141
869
+ 142</pre>
767
870
  </td>
768
871
  <td>
769
- <pre class="code"><span class="info file"># File 'lib/porolog/core_ext.rb', line 122</span>
872
+ <pre class="code"><span class="info file"># File 'lib/porolog/core_ext.rb', line 140</span>
770
873
 
771
874
  <span class='kw'>def</span> <span class='id identifier rubyid_type'>type</span>
772
875
  <span class='symbol'>:array</span>
@@ -779,7 +882,7 @@
779
882
  <div class="method_details ">
780
883
  <h3 class="signature " id="value-instance_method">
781
884
 
782
- #<strong>value</strong>(*args) &#x21d2; <tt><span class='object_link'><a href="" title="Array (class)">Array</a></span></tt>
885
+ #<strong>value</strong>(visited = []) &#x21d2; <tt><span class='object_link'><a href="" title="Array (class)">Array</a></span></tt>
783
886
 
784
887
 
785
888
 
@@ -847,23 +950,27 @@
847
950
  116
848
951
  117
849
952
  118
850
- 119</pre>
953
+ 119
954
+ 120
955
+ 121</pre>
851
956
  </td>
852
957
  <td>
853
958
  <pre class="code"><span class="info file"># File 'lib/porolog/core_ext.rb', line 92</span>
854
959
 
855
- <span class='kw'>def</span> <span class='id identifier rubyid_value'>value</span><span class='lparen'>(</span><span class='op'>*</span><span class='id identifier rubyid_args'>args</span><span class='rparen'>)</span>
856
- <span class='id identifier rubyid_map'>map</span><span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_element'>element</span><span class='op'>|</span>
960
+ <span class='kw'>def</span> <span class='id identifier rubyid_value'>value</span><span class='lparen'>(</span><span class='id identifier rubyid_visited'>visited</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span><span class='rparen'>)</span>
961
+ <span class='kw'>return</span> <span class='kw'>self</span> <span class='kw'>if</span> <span class='id identifier rubyid_visited'>visited</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='kw'>self</span><span class='rparen'>)</span>
962
+ <span class='id identifier rubyid_visited'>visited</span> <span class='op'>=</span> <span class='id identifier rubyid_visited'>visited</span> <span class='op'>+</span> <span class='lbracket'>[</span><span class='kw'>self</span><span class='rbracket'>]</span>
963
+ <span class='id identifier rubyid_flat_map'>flat_map</span><span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_element'>element</span><span class='op'>|</span>
857
964
  <span class='kw'>if</span> <span class='id identifier rubyid_element'>element</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Tail</span><span class='rparen'>)</span>
858
- <span class='id identifier rubyid_tail'>tail</span> <span class='op'>=</span> <span class='id identifier rubyid_element'>element</span><span class='period'>.</span><span class='id identifier rubyid_value'>value</span><span class='lparen'>(</span><span class='op'>*</span><span class='id identifier rubyid_args'>args</span><span class='rparen'>)</span>
965
+ <span class='id identifier rubyid_tail'>tail</span> <span class='op'>=</span> <span class='id identifier rubyid_element'>element</span><span class='period'>.</span><span class='id identifier rubyid_value'>value</span><span class='lparen'>(</span><span class='id identifier rubyid_visited'>visited</span><span class='rparen'>)</span>
859
966
  <span class='kw'>if</span> <span class='id identifier rubyid_tail'>tail</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="" title="Array (class)">Array</a></span></span><span class='rparen'>)</span>
860
967
  <span class='id identifier rubyid_tail'>tail</span>
861
968
  <span class='kw'>elsif</span> <span class='id identifier rubyid_tail'>tail</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Variable</span><span class='rparen'>)</span> <span class='op'>||</span> <span class='id identifier rubyid_tail'>tail</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Value</span><span class='rparen'>)</span>
862
- <span class='id identifier rubyid_tail'>tail</span> <span class='op'>=</span> <span class='id identifier rubyid_tail'>tail</span><span class='period'>.</span><span class='id identifier rubyid_value'>value</span><span class='lparen'>(</span><span class='op'>*</span><span class='id identifier rubyid_args'>args</span><span class='rparen'>)</span>
969
+ <span class='id identifier rubyid_tail'>tail</span> <span class='op'>=</span> <span class='id identifier rubyid_tail'>tail</span><span class='period'>.</span><span class='id identifier rubyid_value'>value</span><span class='lparen'>(</span><span class='id identifier rubyid_visited'>visited</span><span class='rparen'>)</span>
863
970
  <span class='kw'>if</span> <span class='id identifier rubyid_tail'>tail</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="" title="Array (class)">Array</a></span></span><span class='rparen'>)</span>
864
971
  <span class='id identifier rubyid_tail'>tail</span>
865
972
  <span class='kw'>elsif</span> <span class='id identifier rubyid_tail'>tail</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Variable</span><span class='rparen'>)</span> <span class='op'>||</span> <span class='id identifier rubyid_tail'>tail</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Value</span><span class='rparen'>)</span>
866
- <span class='id identifier rubyid_tail'>tail</span> <span class='op'>=</span> <span class='id identifier rubyid_tail'>tail</span><span class='period'>.</span><span class='id identifier rubyid_goal'>goal</span><span class='period'>.</span><span class='id identifier rubyid_variablise'>variablise</span><span class='lparen'>(</span><span class='id identifier rubyid_tail'>tail</span><span class='period'>.</span><span class='id identifier rubyid_value'>value</span><span class='lparen'>(</span><span class='op'>*</span><span class='id identifier rubyid_args'>args</span><span class='rparen'>)</span><span class='rparen'>)</span>
973
+ <span class='id identifier rubyid_tail'>tail</span> <span class='op'>=</span> <span class='id identifier rubyid_tail'>tail</span><span class='period'>.</span><span class='id identifier rubyid_goal'>goal</span><span class='period'>.</span><span class='id identifier rubyid_variablise'>variablise</span><span class='lparen'>(</span><span class='id identifier rubyid_tail'>tail</span><span class='period'>.</span><span class='id identifier rubyid_value'>value</span><span class='lparen'>(</span><span class='id identifier rubyid_visited'>visited</span><span class='rparen'>)</span><span class='rparen'>)</span>
867
974
  <span class='kw'>if</span> <span class='id identifier rubyid_tail'>tail</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="" title="Array (class)">Array</a></span></span><span class='rparen'>)</span>
868
975
  <span class='id identifier rubyid_tail'>tail</span>
869
976
  <span class='kw'>else</span>
@@ -876,9 +983,9 @@
876
983
  <span class='lbracket'>[</span><span class='id identifier rubyid_element'>element</span><span class='rbracket'>]</span>
877
984
  <span class='kw'>end</span>
878
985
  <span class='kw'>else</span>
879
- <span class='lbracket'>[</span><span class='id identifier rubyid_element'>element</span><span class='period'>.</span><span class='id identifier rubyid_value'>value</span><span class='lparen'>(</span><span class='op'>*</span><span class='id identifier rubyid_args'>args</span><span class='rparen'>)</span><span class='rbracket'>]</span>
986
+ <span class='lbracket'>[</span><span class='id identifier rubyid_element'>element</span><span class='period'>.</span><span class='id identifier rubyid_value'>value</span><span class='lparen'>(</span><span class='id identifier rubyid_visited'>visited</span><span class='rparen'>)</span><span class='rbracket'>]</span>
880
987
  <span class='kw'>end</span>
881
- <span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_flatten'>flatten</span><span class='lparen'>(</span><span class='int'>1</span><span class='rparen'>)</span>
988
+ <span class='rbrace'>}</span>
882
989
  <span class='kw'>end</span></pre>
883
990
  </td>
884
991
  </tr>
@@ -949,7 +1056,7 @@
949
1056
  </div>
950
1057
 
951
1058
  <div id="footer">
952
- Generated on Mon Jul 6 22:54:46 2020 by
1059
+ Generated on Sun Aug 2 19:24:17 2020 by
953
1060
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
954
1061
  0.9.19 (ruby-2.6.5).
955
1062
  </div>
@@ -383,7 +383,7 @@
383
383
  <pre class="code"><span class="info file"># File 'lib/porolog/core_ext.rb', line 16</span>
384
384
 
385
385
  <span class='kw'>def</span> <span class='id identifier rubyid_myid'>myid</span>
386
- <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_inspect'>inspect</span>
386
+ <span class='id identifier rubyid_inspect'>inspect</span>
387
387
  <span class='kw'>end</span></pre>
388
388
  </td>
389
389
  </tr>
@@ -664,7 +664,7 @@
664
664
  </div>
665
665
 
666
666
  <div id="footer">
667
- Generated on Mon Jul 6 22:54:46 2020 by
667
+ Generated on Sun Aug 2 19:24:17 2020 by
668
668
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
669
669
  0.9.19 (ruby-2.6.5).
670
670
  </div>
@@ -79,7 +79,7 @@
79
79
  <dl>
80
80
  <dt>Defined in:</dt>
81
81
  <dd>lib/porolog.rb<span class="defines">,<br />
82
- lib/porolog/goal.rb,<br /> lib/porolog/rule.rb,<br /> lib/porolog/tail.rb,<br /> lib/porolog/error.rb,<br /> lib/porolog/scope.rb,<br /> lib/porolog/value.rb,<br /> lib/porolog/variable.rb,<br /> lib/porolog/arguments.rb,<br /> lib/porolog/predicate.rb,<br /> lib/porolog/instantiation.rb</span>
82
+ lib/porolog/goal.rb,<br /> lib/porolog/rule.rb,<br /> lib/porolog/tail.rb,<br /> lib/porolog/error.rb,<br /> lib/porolog/scope.rb,<br /> lib/porolog/value.rb,<br /> lib/porolog/variable.rb,<br /> lib/porolog/arguments.rb,<br /> lib/porolog/predicate.rb,<br /> lib/porolog/instantiation.rb,<br /> lib/porolog/predicate/builtin.rb</span>
83
83
  </dd>
84
84
  </dl>
85
85
 
@@ -88,9 +88,9 @@
88
88
  <h2>Overview</h2><div class="docstring">
89
89
  <div class="discussion">
90
90
 
91
- <p>lib/porolog/instantiation.rb - Plain Old Ruby Objects Prolog Engine – Instantiation</p>
91
+ <p>lib/porolog/predicate/builtin.rb - Plain Old Ruby Objects Prolog Engine – Builtin Predicates</p>
92
92
 
93
- <pre class="code ruby"><code class="ruby">Luis Esteban 2 May 2018
93
+ <pre class="code ruby"><code class="ruby">Luis Esteban 29 July 2020
94
94
  created
95
95
  </code></pre>
96
96
 
@@ -106,7 +106,7 @@
106
106
 
107
107
 
108
108
 
109
- <strong class="classes">Classes:</strong> <span class='object_link'><a href="Porolog/Arguments.html" title="Porolog::Arguments (class)">Arguments</a></span>, <span class='object_link'><a href="Porolog/Goal.html" title="Porolog::Goal (class)">Goal</a></span>, <span class='object_link'><a href="Porolog/Instantiation.html" title="Porolog::Instantiation (class)">Instantiation</a></span>, <span class='object_link'><a href="Porolog/NoGoalError.html" title="Porolog::NoGoalError (class)">NoGoalError</a></span>, <span class='object_link'><a href="Porolog/PorologError.html" title="Porolog::PorologError (class)">PorologError</a></span>, <span class='object_link'><a href="Porolog/Predicate.html" title="Porolog::Predicate (class)">Predicate</a></span>, <span class='object_link'><a href="Porolog/Rule.html" title="Porolog::Rule (class)">Rule</a></span>, <span class='object_link'><a href="Porolog/Scope.html" title="Porolog::Scope (class)">Scope</a></span>, <span class='object_link'><a href="Porolog/Tail.html" title="Porolog::Tail (class)">Tail</a></span>, <span class='object_link'><a href="Porolog/Value.html" title="Porolog::Value (class)">Value</a></span>, <span class='object_link'><a href="Porolog/Variable.html" title="Porolog::Variable (class)">Variable</a></span>
109
+ <strong class="classes">Classes:</strong> <span class='object_link'><a href="Porolog/Arguments.html" title="Porolog::Arguments (class)">Arguments</a></span>, <span class='object_link'><a href="Porolog/Goal.html" title="Porolog::Goal (class)">Goal</a></span>, <span class='object_link'><a href="Porolog/Instantiation.html" title="Porolog::Instantiation (class)">Instantiation</a></span>, <span class='object_link'><a href="Porolog/NoGoalError.html" title="Porolog::NoGoalError (class)">NoGoalError</a></span>, <span class='object_link'><a href="Porolog/NonVariableError.html" title="Porolog::NonVariableError (class)">NonVariableError</a></span>, <span class='object_link'><a href="Porolog/PorologError.html" title="Porolog::PorologError (class)">PorologError</a></span>, <span class='object_link'><a href="Porolog/Predicate.html" title="Porolog::Predicate (class)">Predicate</a></span>, <span class='object_link'><a href="Porolog/Rule.html" title="Porolog::Rule (class)">Rule</a></span>, <span class='object_link'><a href="Porolog/Scope.html" title="Porolog::Scope (class)">Scope</a></span>, <span class='object_link'><a href="Porolog/Tail.html" title="Porolog::Tail (class)">Tail</a></span>, <span class='object_link'><a href="Porolog/Value.html" title="Porolog::Value (class)">Value</a></span>, <span class='object_link'><a href="Porolog/Variable.html" title="Porolog::Variable (class)">Variable</a></span>
110
110
 
111
111
 
112
112
  </p>
@@ -133,7 +133,7 @@
133
133
 
134
134
  </div>
135
135
  </dt>
136
- <dd><pre class="code"><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>0.0.8</span><span class='tstring_end'>&#39;</span></span><span class='period'>.</span><span class='id identifier rubyid_freeze'>freeze</span></pre></dd>
136
+ <dd><pre class="code"><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>1.0.0</span><span class='tstring_end'>&#39;</span></span><span class='period'>.</span><span class='id identifier rubyid_freeze'>freeze</span></pre></dd>
137
137
 
138
138
  <dt id="VERSION_DATE-constant" class="">VERSION_DATE =
139
139
  <div class="docstring">
@@ -149,7 +149,7 @@
149
149
 
150
150
  </div>
151
151
  </dt>
152
- <dd><pre class="code"><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>2020-07-06</span><span class='tstring_end'>&#39;</span></span><span class='period'>.</span><span class='id identifier rubyid_freeze'>freeze</span></pre></dd>
152
+ <dd><pre class="code"><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>2020-08-02</span><span class='tstring_end'>&#39;</span></span><span class='period'>.</span><span class='id identifier rubyid_freeze'>freeze</span></pre></dd>
153
153
 
154
154
  <dt id="UNKNOWN_TAIL-constant" class="">UNKNOWN_TAIL =
155
155
  <div class="docstring">
@@ -183,6 +183,22 @@
183
183
  </dt>
184
184
  <dd><pre class="code"><span class='lbracket'>[</span><span class='const'><span class='object_link'><a href="#UNKNOWN_TAIL-constant" title="Porolog::UNKNOWN_TAIL (constant)">UNKNOWN_TAIL</a></span></span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_freeze'>freeze</span></pre></dd>
185
185
 
186
+ <dt id="ANONYMOUS-constant" class="">ANONYMOUS =
187
+ <div class="docstring">
188
+ <div class="discussion">
189
+
190
+ <p>Stores the next unique anonymous variable name.</p>
191
+
192
+
193
+ </div>
194
+ </div>
195
+ <div class="tags">
196
+
197
+
198
+ </div>
199
+ </dt>
200
+ <dd><pre class="code"><span class='lbracket'>[</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>_a</span><span class='tstring_end'>&#39;</span></span><span class='rbracket'>]</span></pre></dd>
201
+
186
202
  </dl>
187
203
 
188
204
 
@@ -203,6 +219,56 @@
203
219
  <li class="public ">
204
220
  <span class="summary_signature">
205
221
 
222
+ <a href="#anonymous-instance_method" title="#anonymous (instance method)">#<strong>anonymous</strong> &#x21d2; Symbol </a>
223
+
224
+
225
+
226
+ (also: #_)
227
+
228
+ </span>
229
+
230
+
231
+
232
+
233
+
234
+
235
+
236
+
237
+
238
+ <span class="summary_desc"><div class='inline'>
239
+ <p>A unique variable name.</p>
240
+ </div></span>
241
+
242
+ </li>
243
+
244
+
245
+ <li class="public ">
246
+ <span class="summary_signature">
247
+
248
+ <a href="#builtin-instance_method" title="#builtin (instance method)">#<strong>builtin</strong>(*names, class_base: Object) &#x21d2; Porolog::Predicate<sup>+</sup> </a>
249
+
250
+
251
+
252
+ </span>
253
+
254
+
255
+
256
+
257
+
258
+
259
+
260
+
261
+
262
+ <span class="summary_desc"><div class='inline'>
263
+ <p>A method to declare use of a standard / builtin Predicate, along with a method that returns an Arguments based on the arguments provided to the method.</p>
264
+ </div></span>
265
+
266
+ </li>
267
+
268
+
269
+ <li class="public ">
270
+ <span class="summary_signature">
271
+
206
272
  <a href="#expand_splat-instance_method" title="#expand_splat (instance method)">#<strong>expand_splat</strong>(array) &#x21d2; Array </a>
207
273
 
208
274
 
@@ -275,7 +341,7 @@
275
341
  <li class="public ">
276
342
  <span class="summary_signature">
277
343
 
278
- <a href="#predicate-instance_method" title="#predicate (instance method)">#<strong>predicate</strong>(*names) &#x21d2; Porolog::Predicate<sup>+</sup> </a>
344
+ <a href="#predicate-instance_method" title="#predicate (instance method)">#<strong>predicate</strong>(*names, class_base: Object) &#x21d2; Porolog::Predicate<sup>+</sup> </a>
279
345
 
280
346
 
281
347
 
@@ -419,7 +485,7 @@
419
485
  <li class="public ">
420
486
  <span class="summary_signature">
421
487
 
422
- <a href="#unify_goals-instance_method" title="#unify_goals (instance method)">#<strong>unify_goals</strong>(goal, subgoal) &#x21d2; Boolean </a>
488
+ <a href="#unify_goals-instance_method" title="#unify_goals (instance method)">#<strong>unify_goals</strong>(goal, subgoal) &#x21d2; Array&lt;Porolog::Instantiation&gt;, ... </a>
423
489
 
424
490
 
425
491
 
@@ -546,57 +612,41 @@
546
612
 
547
613
 
548
614
  <div class="method_details first">
549
- <h3 class="signature first" id="expand_splat-instance_method">
615
+ <h3 class="signature first" id="anonymous-instance_method">
550
616
 
551
- #<strong>expand_splat</strong>(array) &#x21d2; <tt><span class='object_link'><a href="Array.html" title="Array (class)">Array</a></span></tt>
617
+ #<strong>anonymous</strong> &#x21d2; <tt><span class='object_link'><a href="Symbol.html" title="Symbol (class)">Symbol</a></span></tt>
552
618
 
553
619
 
554
620
 
621
+ <span class="aliases">Also known as:
622
+ <span class="names"><span id='_-instance_method'>_</span></span>
623
+ </span>
624
+
555
625
 
556
626
 
557
627
  </h3><div class="docstring">
558
628
  <div class="discussion">
559
629
 
560
- <p>Expands a superfluous splat.</p>
630
+ <p>Returns a unique variable name.</p>
561
631
 
562
632
 
563
633
  </div>
564
634
  </div>
565
635
  <div class="tags">
566
- <p class="tag_title">Parameters:</p>
567
- <ul class="param">
568
-
569
- <li>
570
-
571
- <span class='name'>array</span>
572
-
573
-
574
- <span class='type'>(<tt><span class='object_link'><a href="Array.html" title="Array (class)">Array</a></span></tt>)</span>
575
-
576
-
577
-
578
- &mdash;
579
- <div class='inline'>
580
- <p>the given Array.</p>
581
- </div>
582
-
583
- </li>
584
636
 
585
- </ul>
586
-
587
637
  <p class="tag_title">Returns:</p>
588
638
  <ul class="return">
589
639
 
590
640
  <li>
591
641
 
592
642
 
593
- <span class='type'>(<tt><span class='object_link'><a href="Array.html" title="Array (class)">Array</a></span></tt>)</span>
643
+ <span class='type'>(<tt><span class='object_link'><a href="Symbol.html" title="Symbol (class)">Symbol</a></span></tt>)</span>
594
644
 
595
645
 
596
646
 
597
647
  &mdash;
598
648
  <div class='inline'>
599
- <p>the given Array with any superfluous splats expanded.</p>
649
+ <p>a unique variable name.</p>
600
650
  </div>
601
651
 
602
652
  </li>
@@ -609,39 +659,19 @@
609
659
  <pre class="lines">
610
660
 
611
661
 
612
- 339
613
- 340
614
- 341
615
- 342
616
- 343
617
- 344
618
- 345
619
- 346
620
- 347
621
- 348
622
- 349
623
- 350
624
- 351
625
- 352
626
- 353</pre>
662
+ 128
663
+ 129
664
+ 130
665
+ 131
666
+ 132</pre>
627
667
  </td>
628
668
  <td>
629
- <pre class="code"><span class="info file"># File 'lib/porolog.rb', line 339</span>
669
+ <pre class="code"><span class="info file"># File 'lib/porolog.rb', line 128</span>
630
670
 
631
- <span class='kw'>def</span> <span class='id identifier rubyid_expand_splat'>expand_splat</span><span class='lparen'>(</span><span class='id identifier rubyid_array'>array</span><span class='rparen'>)</span>
632
- <span class='id identifier rubyid_array'>array</span> <span class='op'>=</span> <span class='id identifier rubyid_array'>array</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span><span class='period'>.</span><span class='id identifier rubyid_value'>value</span> <span class='kw'>if</span> <span class='id identifier rubyid_array'>array</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="Array.html" title="Array (class)">Array</a></span></span><span class='rparen'>)</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_array'>array</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span> <span class='op'>==</span> <span class='int'>1</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_array'>array</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="Porolog/Tail.html" title="Porolog::Tail (class)">Tail</a></span></span><span class='rparen'>)</span>
633
-
634
- <span class='kw'>if</span> <span class='id identifier rubyid_array'>array</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="Array.html" title="Array (class)">Array</a></span></span><span class='rparen'>)</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_array'>array</span><span class='period'>.</span><span class='id identifier rubyid_last'>last</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="Porolog/Tail.html" title="Porolog::Tail (class)">Tail</a></span></span><span class='rparen'>)</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_array'>array</span><span class='period'>.</span><span class='id identifier rubyid_last'>last</span><span class='period'>.</span><span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="Array.html" title="Array (class)">Array</a></span></span><span class='rparen'>)</span>
635
- <span class='id identifier rubyid_array'>array</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='op'>*</span><span class='id identifier rubyid_array'>array</span><span class='lbracket'>[</span><span class='int'>0</span><span class='op'>...</span><span class='op'>-</span><span class='int'>1</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='op'>*</span><span class='id identifier rubyid_array'>array</span><span class='period'>.</span><span class='id identifier rubyid_last'>last</span><span class='period'>.</span><span class='id identifier rubyid_value'>value</span><span class='rbracket'>]</span>
636
- <span class='kw'>end</span>
637
-
638
- <span class='kw'>if</span> <span class='id identifier rubyid_array'>array</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="Array.html" title="Array (class)">Array</a></span></span><span class='rparen'>)</span>
639
- <span class='id identifier rubyid_array'>array</span> <span class='op'>=</span> <span class='id identifier rubyid_array'>array</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_element'>element</span><span class='op'>|</span>
640
- <span class='id identifier rubyid_expand_splat'>expand_splat</span><span class='lparen'>(</span><span class='id identifier rubyid_element'>element</span><span class='rparen'>)</span>
641
- <span class='rbrace'>}</span>
642
- <span class='kw'>end</span>
643
-
644
- <span class='id identifier rubyid_array'>array</span>
671
+ <span class='kw'>def</span> <span class='id identifier rubyid_anonymous'>anonymous</span>
672
+ <span class='id identifier rubyid_anonymous'>anonymous</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="#ANONYMOUS-constant" title="Porolog::ANONYMOUS (constant)">ANONYMOUS</a></span></span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_to_sym'>to_sym</span>
673
+ <span class='const'><span class='object_link'><a href="#ANONYMOUS-constant" title="Porolog::ANONYMOUS (constant)">ANONYMOUS</a></span></span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_succ!'>succ!</span>
674
+ <span class='id identifier rubyid_anonymous'>anonymous</span>
645
675
  <span class='kw'>end</span></pre>
646
676
  </td>
647
677
  </tr>
@@ -649,9 +679,9 @@
649
679
  </div>
650
680
 
651
681
  <div class="method_details ">
652
- <h3 class="signature " id="has_tail?-instance_method">
682
+ <h3 class="signature " id="builtin-instance_method">
653
683
 
654
- #<strong>has_tail?</strong>(value, apply_value = true) &#x21d2; <tt>Boolean</tt>
684
+ #<strong>builtin</strong>(*names, class_base: Object) &#x21d2; <tt><span class='object_link'><a href="Porolog/Predicate.html" title="Porolog::Predicate (class)">Porolog::Predicate</a></span></tt><sup>+</sup>
655
685
 
656
686
 
657
687
 
@@ -660,137 +690,85 @@
660
690
  </h3><div class="docstring">
661
691
  <div class="discussion">
662
692
 
663
- <p>Returns whether the provided value has a Tail.</p>
693
+ <p>A method to declare use of a standard / builtin Predicate, along with a method that returns an Arguments based on the arguments provided to the method.</p>
664
694
 
665
695
 
666
696
  </div>
667
697
  </div>
668
698
  <div class="tags">
669
- <p class="tag_title">Parameters:</p>
699
+
700
+ <div class="examples">
701
+ <p class="tag_title">Examples:</p>
702
+
703
+
704
+ <pre class="example code"><code><span class='id identifier rubyid_builtin'>builtin</span> <span class='symbol'>:is</span><span class='comma'>,</span> <span class='symbol'>:member</span><span class='comma'>,</span> <span class='symbol'>:append</span>
705
+ <span class='id identifier rubyid_member'>member</span><span class='lparen'>(</span><span class='symbol'>:e</span><span class='comma'>,</span><span class='symbol'>:l</span><span class='rparen'>)</span> <span class='comment'># --&gt; Porolog::Arguments</span></code></pre>
706
+
707
+ </div>
708
+ <p class="tag_title">Parameters:</p>
670
709
  <ul class="param">
671
710
 
672
711
  <li>
673
712
 
674
- <span class='name'>value</span>
713
+ <span class='name'>names</span>
675
714
 
676
715
 
677
- <span class='type'>(<tt><span class='object_link'><a href="Object.html" title="Object (class)">Object</a></span></tt>)</span>
716
+ <span class='type'>(<tt><span class='object_link'><a href="Array.html" title="Array (class)">Array</a></span>&lt;#to_sym&gt;</tt>)</span>
678
717
 
679
718
 
680
719
 
681
720
  &mdash;
682
721
  <div class='inline'>
683
- <p>the provided value.</p>
722
+ <p>names of the Predicates to declare.</p>
684
723
  </div>
685
724
 
686
725
  </li>
687
726
 
688
- </ul>
689
-
690
- <p class="tag_title">Returns:</p>
691
- <ul class="return">
692
-
693
727
  <li>
694
728
 
729
+ <span class='name'>class_base</span>
695
730
 
696
- <span class='type'>(<tt>Boolean</tt>)</span>
731
+
732
+ <span class='type'>(<tt>Class</tt>)</span>
697
733
 
698
734
 
699
735
 
700
736
  &mdash;
701
737
  <div class='inline'>
702
- <p>whether the provided value has a Tail.</p>
738
+ <p>class to define the method in.</p>
703
739
  </div>
704
740
 
705
741
  </li>
706
742
 
707
743
  </ul>
708
744
 
709
- </div><table class="source_code">
710
- <tr>
711
- <td>
712
- <pre class="lines">
713
-
714
-
715
- 326
716
- 327
717
- 328
718
- 329
719
- 330
720
- 331
721
- 332
722
- 333
723
- 334</pre>
724
- </td>
725
- <td>
726
- <pre class="code"><span class="info file"># File 'lib/porolog.rb', line 326</span>
727
-
728
- <span class='kw'>def</span> <span class='id identifier rubyid_has_tail?'>has_tail?</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='comma'>,</span> <span class='id identifier rubyid_apply_value'>apply_value</span> <span class='op'>=</span> <span class='kw'>true</span><span class='rparen'>)</span>
729
- <span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_value'>value</span> <span class='kw'>if</span> <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='symbol'>:value</span><span class='rparen'>)</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_apply_value'>apply_value</span>
730
-
731
- <span class='kw'>if</span> <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="Array.html" title="Array (class)">Array</a></span></span><span class='rparen'>)</span>
732
- <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_last'>last</span> <span class='op'>==</span> <span class='const'><span class='object_link'><a href="#UNKNOWN_TAIL-constant" title="Porolog::UNKNOWN_TAIL (constant)">UNKNOWN_TAIL</a></span></span> <span class='op'>||</span> <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_last'>last</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="Porolog/Tail.html" title="Porolog::Tail (class)">Tail</a></span></span><span class='rparen'>)</span>
733
- <span class='kw'>else</span>
734
- <span class='kw'>false</span>
735
- <span class='kw'>end</span>
736
- <span class='kw'>end</span></pre>
737
- </td>
738
- </tr>
739
- </table>
740
- </div>
741
-
742
- <div class="method_details ">
743
- <h3 class="signature " id="instantiate_unifications-instance_method">
744
-
745
- #<strong>instantiate_unifications</strong>(unifications) &#x21d2; <tt>Boolean</tt>
746
-
747
-
748
-
749
-
750
-
751
- </h3><div class="docstring">
752
- <div class="discussion">
753
-
754
- <p>Instantiates the unifications from an attempt to unify.</p>
755
-
756
-
757
- </div>
758
- </div>
759
- <div class="tags">
760
- <p class="tag_title">Parameters:</p>
761
- <ul class="param">
745
+ <p class="tag_title">Returns:</p>
746
+ <ul class="return">
762
747
 
763
748
  <li>
764
749
 
765
- <span class='name'>unifications</span>
766
-
767
750
 
768
- <span class='type'>(<tt><span class='object_link'><a href="Array.html" title="Array (class)">Array</a></span></tt>)</span>
751
+ <span class='type'>(<tt><span class='object_link'><a href="Porolog/Predicate.html" title="Porolog::Predicate (class)">Porolog::Predicate</a></span></tt>)</span>
769
752
 
770
753
 
771
754
 
772
755
  &mdash;
773
756
  <div class='inline'>
774
- <p>unifications to instantiate.</p>
757
+ <p>Predicate created if only one name is provided</p>
775
758
  </div>
776
759
 
777
760
  </li>
778
761
 
779
- </ul>
780
-
781
- <p class="tag_title">Returns:</p>
782
- <ul class="return">
783
-
784
762
  <li>
785
763
 
786
764
 
787
- <span class='type'>(<tt>Boolean</tt>)</span>
765
+ <span class='type'>(<tt><span class='object_link'><a href="Array.html" title="Array (class)">Array</a></span>&lt;<span class='object_link'><a href="Porolog/Predicate.html" title="Porolog::Predicate (class)">Porolog::Predicate</a></span>&gt;</tt>)</span>
788
766
 
789
767
 
790
768
 
791
769
  &mdash;
792
770
  <div class='inline'>
793
- <p>whether the instantiations could be made.</p>
771
+ <p>Predicates created if multiple names are provided</p>
794
772
  </div>
795
773
 
796
774
  </li>
@@ -839,55 +817,47 @@
839
817
  122
840
818
  123
841
819
  124
842
- 125
843
- 126
844
- 127
845
- 128
846
- 129</pre>
820
+ 125</pre>
847
821
  </td>
848
822
  <td>
849
823
  <pre class="code"><span class="info file"># File 'lib/porolog.rb', line 89</span>
850
824
 
851
- <span class='kw'>def</span> <span class='id identifier rubyid_instantiate_unifications'>instantiate_unifications</span><span class='lparen'>(</span><span class='id identifier rubyid_unifications'>unifications</span><span class='rparen'>)</span>
852
- <span class='comment'># -- Gather Unifications --
853
- </span> <span class='id identifier rubyid_goals_variables'>goals_variables</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span>
854
-
855
- <span class='id identifier rubyid_return_false'>return_false</span> <span class='op'>=</span> <span class='kw'>false</span>
856
- <span class='id identifier rubyid_unifications'>unifications</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_unification'>unification</span><span class='op'>|</span>
857
- <span class='id identifier rubyid_left'>left</span><span class='comma'>,</span> <span class='id identifier rubyid_right'>right</span><span class='comma'>,</span> <span class='id identifier rubyid_left_goal'>left_goal</span><span class='comma'>,</span> <span class='id identifier rubyid_right_goal'>right_goal</span> <span class='op'>=</span> <span class='id identifier rubyid_unification'>unification</span>
858
-
859
- <span class='id identifier rubyid_goals_variables'>goals_variables</span><span class='lbracket'>[</span><span class='id identifier rubyid_left_goal'>left_goal</span><span class='rbracket'>]</span> <span class='op'>||=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span>
860
- <span class='id identifier rubyid_goals_variables'>goals_variables</span><span class='lbracket'>[</span><span class='id identifier rubyid_left_goal'>left_goal</span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='id identifier rubyid_left'>left</span><span class='rbracket'>]</span> <span class='op'>||=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
861
- <span class='id identifier rubyid_goals_variables'>goals_variables</span><span class='lbracket'>[</span><span class='id identifier rubyid_left_goal'>left_goal</span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='id identifier rubyid_left'>left</span><span class='rbracket'>]</span> <span class='op'>&lt;&lt;</span> <span class='lbracket'>[</span><span class='id identifier rubyid_right_goal'>right_goal</span><span class='comma'>,</span><span class='id identifier rubyid_right'>right</span><span class='rbracket'>]</span>
862
-
863
- <span class='id identifier rubyid_return_false'>return_false</span> <span class='op'>=</span> <span class='kw'>true</span> <span class='kw'>if</span> <span class='id identifier rubyid_goals_variables'>goals_variables</span><span class='lbracket'>[</span><span class='id identifier rubyid_left_goal'>left_goal</span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='id identifier rubyid_left'>left</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='symbol'>:last</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_reject'>reject</span><span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_value'>value</span><span class='op'>|</span>
864
- <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="Porolog/Variable.html" title="Porolog::Variable (class)">Variable</a></span></span><span class='rparen'>)</span> <span class='op'>||</span> <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="Symbol.html" title="Symbol (class)">Symbol</a></span></span><span class='rparen'>)</span>
865
- <span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_uniq'>uniq</span><span class='period'>.</span><span class='id identifier rubyid_size'>size</span> <span class='op'>&gt;</span> <span class='int'>1</span>
866
-
867
- <span class='kw'>return</span> <span class='kw'>false</span> <span class='kw'>if</span> <span class='id identifier rubyid_return_false'>return_false</span>
868
- <span class='kw'>end</span>
869
-
870
- <span class='comment'># -- Make Instantiations --
871
- </span> <span class='id identifier rubyid_instantiations'>instantiations</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
872
- <span class='id identifier rubyid_consistent'>consistent</span> <span class='op'>=</span> <span class='kw'>true</span>
825
+ <span class='kw'>def</span> <span class='id identifier rubyid_builtin'>builtin</span><span class='lparen'>(</span><span class='op'>*</span><span class='id identifier rubyid_names'>names</span><span class='comma'>,</span> <span class='label'>class_base:</span> <span class='const'><span class='object_link'><a href="Object.html" title="Object (class)">Object</a></span></span><span class='rparen'>)</span>
826
+ <span class='id identifier rubyid_names'>names</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='id identifier rubyid_names'>names</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_flatten'>flatten</span>
873
827
 
874
- <span class='id identifier rubyid_goals_variables'>goals_variables</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_goal'>goal</span><span class='comma'>,</span><span class='id identifier rubyid_variables'>variables</span><span class='op'>|</span>
875
- <span class='id identifier rubyid_variables'>variables</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_name'>name</span><span class='comma'>,</span><span class='id identifier rubyid_others'>others</span><span class='op'>|</span>
876
- <span class='id identifier rubyid_others'>others</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_other_goal'>other_goal</span><span class='comma'>,</span><span class='id identifier rubyid_other'>other</span><span class='op'>|</span>
877
- <span class='id identifier rubyid_instantiation'>instantiation</span> <span class='op'>=</span> <span class='id identifier rubyid_goal'>goal</span><span class='period'>.</span><span class='id identifier rubyid_instantiate'>instantiate</span><span class='lparen'>(</span><span class='id identifier rubyid_name'>name</span><span class='comma'>,</span> <span class='id identifier rubyid_other'>other</span><span class='comma'>,</span> <span class='id identifier rubyid_other_goal'>other_goal</span><span class='rparen'>)</span>
878
- <span class='kw'>if</span> <span class='id identifier rubyid_instantiation'>instantiation</span>
879
- <span class='id identifier rubyid_instantiations'>instantiations</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_instantiation'>instantiation</span>
880
- <span class='kw'>else</span>
881
- <span class='id identifier rubyid_consistent'>consistent</span> <span class='op'>=</span> <span class='kw'>false</span>
882
- <span class='kw'>end</span>
883
- <span class='kw'>end</span>
828
+ <span class='id identifier rubyid_predicates'>predicates</span> <span class='op'>=</span> <span class='id identifier rubyid_names'>names</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_name'>name</span><span class='op'>|</span>
829
+ <span class='id identifier rubyid_method'>method</span> <span class='op'>=</span> <span class='id identifier rubyid_name'>name</span><span class='period'>.</span><span class='id identifier rubyid_to_sym'>to_sym</span>
830
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'>NameError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Undefined builtin predicate </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_name'>name</span><span class='period'>.</span><span class='id identifier rubyid_inspect'>inspect</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span> <span class='kw'>unless</span> <span class='const'><span class='object_link'><a href="Porolog/Predicate.html" title="Porolog::Predicate (class)">Predicate</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="Porolog/Predicate/Builtin.html" title="Porolog::Predicate::Builtin (module)">Builtin</a></span></span><span class='period'>.</span><span class='id identifier rubyid_instance_methods'>instance_methods</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='id identifier rubyid_method'>method</span><span class='rparen'>)</span>
831
+ <span class='id identifier rubyid_predicate'>predicate</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="Porolog/Predicate.html" title="Porolog::Predicate (class)">Predicate</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="Porolog/Predicate.html#new-class_method" title="Porolog::Predicate.new (method)">new</a></span></span><span class='lparen'>(</span><span class='id identifier rubyid_name'>name</span><span class='comma'>,</span> <span class='label'>builtin:</span> <span class='kw'>true</span><span class='rparen'>)</span>
832
+ <span class='kw'>if</span> <span class='id identifier rubyid_class_base'>class_base</span> <span class='op'>==</span> <span class='const'><span class='object_link'><a href="Object.html" title="Object (class)">Object</a></span></span>
833
+ <span class='comment'># -- Add Global Method --
834
+ </span> <span class='id identifier rubyid_class_base'>class_base</span><span class='period'>.</span><span class='id identifier rubyid_class_eval'>class_eval</span><span class='lbrace'>{</span>
835
+ <span class='id identifier rubyid_remove_method'>remove_method</span><span class='lparen'>(</span><span class='id identifier rubyid_method'>method</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_method_defined?'>method_defined?</span><span class='lparen'>(</span><span class='id identifier rubyid_method'>method</span><span class='rparen'>)</span>
836
+ <span class='id identifier rubyid_define_method'>define_method</span><span class='lparen'>(</span><span class='id identifier rubyid_method'>method</span><span class='rparen'>)</span><span class='lbrace'>{</span><span class='op'>|</span><span class='op'>*</span><span class='id identifier rubyid_args'>args</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='op'>|</span>
837
+ <span class='id identifier rubyid_predicate'>predicate</span><span class='period'>.</span><span class='lparen'>(</span><span class='op'>*</span><span class='id identifier rubyid_args'>args</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
838
+ <span class='rbrace'>}</span>
839
+ <span class='rbrace'>}</span>
840
+ <span class='kw'>else</span>
841
+ <span class='comment'># -- Add Instance Method --
842
+ </span> <span class='id identifier rubyid_class_base'>class_base</span><span class='period'>.</span><span class='id identifier rubyid_class_eval'>class_eval</span><span class='lbrace'>{</span>
843
+ <span class='id identifier rubyid_remove_method'>remove_method</span><span class='lparen'>(</span><span class='id identifier rubyid_method'>method</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_methods'>methods</span><span class='lparen'>(</span><span class='kw'>false</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='id identifier rubyid_method'>method</span><span class='rparen'>)</span>
844
+ <span class='id identifier rubyid_define_method'>define_method</span><span class='lparen'>(</span><span class='id identifier rubyid_method'>method</span><span class='rparen'>)</span><span class='lbrace'>{</span><span class='op'>|</span><span class='op'>*</span><span class='id identifier rubyid_args'>args</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='op'>|</span>
845
+ <span class='id identifier rubyid_predicate'>predicate</span><span class='period'>.</span><span class='lparen'>(</span><span class='op'>*</span><span class='id identifier rubyid_args'>args</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
846
+ <span class='rbrace'>}</span>
847
+ <span class='rbrace'>}</span>
848
+
849
+ <span class='comment'># -- Add Class Method --
850
+ </span> <span class='lparen'>(</span><span class='kw'>class</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_class_base'>class_base</span><span class='semicolon'>;</span> <span class='kw'>self</span><span class='semicolon'>;</span> <span class='kw'>end</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_instance_eval'>instance_eval</span> <span class='lbrace'>{</span>
851
+ <span class='id identifier rubyid_remove_method'>remove_method</span><span class='lparen'>(</span><span class='id identifier rubyid_method'>method</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_methods'>methods</span><span class='lparen'>(</span><span class='kw'>false</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='id identifier rubyid_method'>method</span><span class='rparen'>)</span>
852
+ <span class='id identifier rubyid_define_method'>define_method</span><span class='lparen'>(</span><span class='id identifier rubyid_method'>method</span><span class='rparen'>)</span><span class='lbrace'>{</span><span class='op'>|</span><span class='op'>*</span><span class='id identifier rubyid_args'>args</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='op'>|</span>
853
+ <span class='id identifier rubyid_predicate'>predicate</span><span class='period'>.</span><span class='lparen'>(</span><span class='op'>*</span><span class='id identifier rubyid_args'>args</span><span class='comma'>,</span> <span class='op'>&amp;</span><span class='id identifier rubyid_block'>block</span><span class='rparen'>)</span>
854
+ <span class='rbrace'>}</span>
855
+ <span class='rbrace'>}</span>
884
856
  <span class='kw'>end</span>
885
- <span class='kw'>end</span>
886
-
887
- <span class='comment'># -- Revert if inconsistent --
888
- </span> <span class='id identifier rubyid_instantiations'>instantiations</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='symbol'>:remove</span><span class='rparen'>)</span> <span class='kw'>unless</span> <span class='id identifier rubyid_consistent'>consistent</span>
857
+ <span class='id identifier rubyid_predicate'>predicate</span>
858
+ <span class='rbrace'>}</span>
889
859
 
890
- <span class='id identifier rubyid_consistent'>consistent</span>
860
+ <span class='id identifier rubyid_predicates'>predicates</span><span class='period'>.</span><span class='id identifier rubyid_size'>size</span> <span class='op'>&gt;</span> <span class='int'>1</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_predicates'>predicates</span> <span class='op'>||</span> <span class='id identifier rubyid_predicates'>predicates</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span>
891
861
  <span class='kw'>end</span></pre>
892
862
  </td>
893
863
  </tr>
@@ -895,9 +865,9 @@
895
865
  </div>
896
866
 
897
867
  <div class="method_details ">
898
- <h3 class="signature " id="predicate-instance_method">
868
+ <h3 class="signature " id="expand_splat-instance_method">
899
869
 
900
- #<strong>predicate</strong>(*names) &#x21d2; <tt><span class='object_link'><a href="Porolog/Predicate.html" title="Porolog::Predicate (class)">Porolog::Predicate</a></span></tt><sup>+</sup>
870
+ #<strong>expand_splat</strong>(array) &#x21d2; <tt><span class='object_link'><a href="Array.html" title="Array (class)">Array</a></span></tt>
901
871
 
902
872
 
903
873
 
@@ -906,36 +876,27 @@
906
876
  </h3><div class="docstring">
907
877
  <div class="discussion">
908
878
 
909
- <p>A convenience method to create a Predicate, along with a method that returns an Arguments based on the arguments provided to the method.</p>
879
+ <p>Expands a superfluous splat.</p>
910
880
 
911
881
 
912
882
  </div>
913
883
  </div>
914
884
  <div class="tags">
915
-
916
- <div class="examples">
917
- <p class="tag_title">Examples:</p>
918
-
919
-
920
- <pre class="example code"><code><span class='id identifier rubyid_predicate'>predicate</span> <span class='symbol'>:combobulator</span>
921
- <span class='id identifier rubyid_combobulator'>combobulator</span><span class='lparen'>(</span><span class='symbol'>:x</span><span class='comma'>,</span><span class='symbol'>:y</span><span class='rparen'>)</span> <span class='comment'># --&gt; Porolog::Arguments</span></code></pre>
922
-
923
- </div>
924
- <p class="tag_title">Parameters:</p>
925
- <ul class="param">
885
+ <p class="tag_title">Parameters:</p>
886
+ <ul class="param">
926
887
 
927
888
  <li>
928
889
 
929
- <span class='name'>names</span>
890
+ <span class='name'>array</span>
930
891
 
931
892
 
932
- <span class='type'>(<tt><span class='object_link'><a href="Array.html" title="Array (class)">Array</a></span>&lt;#to_sym&gt;</tt>)</span>
893
+ <span class='type'>(<tt><span class='object_link'><a href="Array.html" title="Array (class)">Array</a></span></tt>)</span>
933
894
 
934
895
 
935
896
 
936
897
  &mdash;
937
898
  <div class='inline'>
938
- <p>names of the Predicates to create.</p>
899
+ <p>the given Array.</p>
939
900
  </div>
940
901
 
941
902
  </li>
@@ -948,27 +909,13 @@
948
909
  <li>
949
910
 
950
911
 
951
- <span class='type'>(<tt><span class='object_link'><a href="Porolog/Predicate.html" title="Porolog::Predicate (class)">Porolog::Predicate</a></span></tt>)</span>
952
-
953
-
954
-
955
- &mdash;
956
- <div class='inline'>
957
- <p>Predicate created if only one name is provided</p>
958
- </div>
959
-
960
- </li>
961
-
962
- <li>
963
-
964
-
965
- <span class='type'>(<tt><span class='object_link'><a href="Array.html" title="Array (class)">Array</a></span>&lt;<span class='object_link'><a href="Porolog/Predicate.html" title="Porolog::Predicate (class)">Porolog::Predicate</a></span>&gt;</tt>)</span>
912
+ <span class='type'>(<tt><span class='object_link'><a href="Array.html" title="Array (class)">Array</a></span></tt>)</span>
966
913
 
967
914
 
968
915
 
969
916
  &mdash;
970
917
  <div class='inline'>
971
- <p>Predicates created if multiple names are provided</p>
918
+ <p>the given Array with any superfluous splats expanded.</p>
972
919
  </div>
973
920
 
974
921
  </li>
@@ -981,43 +928,39 @@
981
928
  <pre class="lines">
982
929
 
983
930
 
984
- 45
985
- 46
986
- 47
987
- 48
988
- 49
989
- 50
990
- 51
991
- 52
992
- 53
993
- 54
994
- 55
995
- 56
996
- 57
997
- 58
998
- 59
999
- 60
1000
- 61</pre>
931
+ 464
932
+ 465
933
+ 466
934
+ 467
935
+ 468
936
+ 469
937
+ 470
938
+ 471
939
+ 472
940
+ 473
941
+ 474
942
+ 475
943
+ 476
944
+ 477
945
+ 478</pre>
1001
946
  </td>
1002
947
  <td>
1003
- <pre class="code"><span class="info file"># File 'lib/porolog.rb', line 45</span>
948
+ <pre class="code"><span class="info file"># File 'lib/porolog.rb', line 464</span>
1004
949
 
1005
- <span class='kw'>def</span> <span class='id identifier rubyid_predicate'>predicate</span><span class='lparen'>(</span><span class='op'>*</span><span class='id identifier rubyid_names'>names</span><span class='rparen'>)</span>
1006
- <span class='id identifier rubyid_names'>names</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='id identifier rubyid_names'>names</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_flatten'>flatten</span>
950
+ <span class='kw'>def</span> <span class='id identifier rubyid_expand_splat'>expand_splat</span><span class='lparen'>(</span><span class='id identifier rubyid_array'>array</span><span class='rparen'>)</span>
951
+ <span class='id identifier rubyid_array'>array</span> <span class='op'>=</span> <span class='id identifier rubyid_array'>array</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span><span class='period'>.</span><span class='id identifier rubyid_value'>value</span> <span class='kw'>if</span> <span class='id identifier rubyid_array'>array</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="Array.html" title="Array (class)">Array</a></span></span><span class='rparen'>)</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_array'>array</span><span class='period'>.</span><span class='id identifier rubyid_length'>length</span> <span class='op'>==</span> <span class='int'>1</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_array'>array</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="Porolog/Tail.html" title="Porolog::Tail (class)">Tail</a></span></span><span class='rparen'>)</span>
1007
952
 
1008
- <span class='id identifier rubyid_predicates'>predicates</span> <span class='op'>=</span> <span class='id identifier rubyid_names'>names</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_name'>name</span><span class='op'>|</span>
1009
- <span class='id identifier rubyid_method'>method</span> <span class='op'>=</span> <span class='id identifier rubyid_name'>name</span><span class='period'>.</span><span class='id identifier rubyid_to_sym'>to_sym</span>
1010
- <span class='id identifier rubyid_predicate'>predicate</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="Porolog/Predicate.html" title="Porolog::Predicate (class)">Predicate</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="Porolog/Predicate.html#new-class_method" title="Porolog::Predicate.new (method)">new</a></span></span><span class='lparen'>(</span><span class='id identifier rubyid_name'>name</span><span class='rparen'>)</span>
1011
- <span class='const'><span class='object_link'><a href="Object.html" title="Object (class)">Object</a></span></span><span class='period'>.</span><span class='id identifier rubyid_class_eval'>class_eval</span><span class='lbrace'>{</span>
1012
- <span class='id identifier rubyid_remove_method'>remove_method</span><span class='lparen'>(</span><span class='id identifier rubyid_method'>method</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_public_method_defined?'>public_method_defined?</span><span class='lparen'>(</span><span class='id identifier rubyid_method'>method</span><span class='rparen'>)</span>
1013
- <span class='id identifier rubyid_define_method'>define_method</span><span class='lparen'>(</span><span class='id identifier rubyid_method'>method</span><span class='rparen'>)</span><span class='lbrace'>{</span><span class='op'>|</span><span class='op'>*</span><span class='id identifier rubyid_args'>args</span><span class='op'>|</span>
1014
- <span class='id identifier rubyid_predicate'>predicate</span><span class='period'>.</span><span class='lparen'>(</span><span class='op'>*</span><span class='id identifier rubyid_args'>args</span><span class='rparen'>)</span>
1015
- <span class='rbrace'>}</span>
953
+ <span class='kw'>if</span> <span class='id identifier rubyid_array'>array</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="Array.html" title="Array (class)">Array</a></span></span><span class='rparen'>)</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_array'>array</span><span class='period'>.</span><span class='id identifier rubyid_last'>last</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="Porolog/Tail.html" title="Porolog::Tail (class)">Tail</a></span></span><span class='rparen'>)</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_array'>array</span><span class='period'>.</span><span class='id identifier rubyid_last'>last</span><span class='period'>.</span><span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="Array.html" title="Array (class)">Array</a></span></span><span class='rparen'>)</span>
954
+ <span class='id identifier rubyid_array'>array</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='op'>*</span><span class='id identifier rubyid_array'>array</span><span class='lbracket'>[</span><span class='int'>0</span><span class='op'>...</span><span class='op'>-</span><span class='int'>1</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='op'>*</span><span class='id identifier rubyid_array'>array</span><span class='period'>.</span><span class='id identifier rubyid_last'>last</span><span class='period'>.</span><span class='id identifier rubyid_value'>value</span><span class='rbracket'>]</span>
955
+ <span class='kw'>end</span>
956
+
957
+ <span class='kw'>if</span> <span class='id identifier rubyid_array'>array</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="Array.html" title="Array (class)">Array</a></span></span><span class='rparen'>)</span>
958
+ <span class='id identifier rubyid_array'>array</span> <span class='op'>=</span> <span class='id identifier rubyid_array'>array</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_element'>element</span><span class='op'>|</span>
959
+ <span class='id identifier rubyid_expand_splat'>expand_splat</span><span class='lparen'>(</span><span class='id identifier rubyid_element'>element</span><span class='rparen'>)</span>
1016
960
  <span class='rbrace'>}</span>
1017
- <span class='id identifier rubyid_predicate'>predicate</span>
1018
- <span class='rbrace'>}</span>
961
+ <span class='kw'>end</span>
1019
962
 
1020
- <span class='id identifier rubyid_predicates'>predicates</span><span class='period'>.</span><span class='id identifier rubyid_size'>size</span> <span class='op'>&gt;</span> <span class='int'>1</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_predicates'>predicates</span> <span class='op'>||</span> <span class='id identifier rubyid_predicates'>predicates</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span>
963
+ <span class='id identifier rubyid_array'>array</span>
1021
964
  <span class='kw'>end</span></pre>
1022
965
  </td>
1023
966
  </tr>
@@ -1025,9 +968,9 @@
1025
968
  </div>
1026
969
 
1027
970
  <div class="method_details ">
1028
- <h3 class="signature " id="unify-instance_method">
971
+ <h3 class="signature " id="has_tail?-instance_method">
1029
972
 
1030
- #<strong>unify</strong>(left, right, left_goal, right_goal = left_goal, visited = []) &#x21d2; <tt><span class='object_link'><a href="Array.html" title="Array (class)">Array</a></span></tt><sup>?</sup>
973
+ #<strong>has_tail?</strong>(value, apply_value = true) &#x21d2; <tt>Boolean</tt>
1031
974
 
1032
975
 
1033
976
 
@@ -1036,7 +979,7 @@
1036
979
  </h3><div class="docstring">
1037
980
  <div class="discussion">
1038
981
 
1039
- <p>Attempt to unify two entities of two goals.</p>
982
+ <p>Returns whether the provided value has a Tail.</p>
1040
983
 
1041
984
 
1042
985
  </div>
@@ -1047,7 +990,7 @@
1047
990
 
1048
991
  <li>
1049
992
 
1050
- <span class='name'>left</span>
993
+ <span class='name'>value</span>
1051
994
 
1052
995
 
1053
996
  <span class='type'>(<tt><span class='object_link'><a href="Object.html" title="Object (class)">Object</a></span></tt>)</span>
@@ -1056,75 +999,98 @@
1056
999
 
1057
1000
  &mdash;
1058
1001
  <div class='inline'>
1059
- <p>left hand side entity.</p>
1002
+ <p>the provided value.</p>
1060
1003
  </div>
1061
1004
 
1062
1005
  </li>
1063
1006
 
1007
+ </ul>
1008
+
1009
+ <p class="tag_title">Returns:</p>
1010
+ <ul class="return">
1011
+
1064
1012
  <li>
1065
1013
 
1066
- <span class='name'>right</span>
1067
-
1068
1014
 
1069
- <span class='type'>(<tt><span class='object_link'><a href="Object.html" title="Object (class)">Object</a></span></tt>)</span>
1015
+ <span class='type'>(<tt>Boolean</tt>)</span>
1070
1016
 
1071
1017
 
1072
1018
 
1073
1019
  &mdash;
1074
1020
  <div class='inline'>
1075
- <p>right hand side entity.</p>
1021
+ <p>whether the provided value has a Tail.</p>
1076
1022
  </div>
1077
1023
 
1078
1024
  </li>
1079
1025
 
1080
- <li>
1081
-
1082
- <span class='name'>left_goal</span>
1083
-
1084
-
1085
- <span class='type'>(<tt><span class='object_link'><a href="Porolog/Goal.html" title="Porolog::Goal (class)">Porolog::Goal</a></span></tt>)</span>
1086
-
1087
-
1088
-
1089
- &mdash;
1090
- <div class='inline'>
1091
- <p>goal of left hand side entity.</p>
1026
+ </ul>
1027
+
1028
+ </div><table class="source_code">
1029
+ <tr>
1030
+ <td>
1031
+ <pre class="lines">
1032
+
1033
+
1034
+ 451
1035
+ 452
1036
+ 453
1037
+ 454
1038
+ 455
1039
+ 456
1040
+ 457
1041
+ 458
1042
+ 459</pre>
1043
+ </td>
1044
+ <td>
1045
+ <pre class="code"><span class="info file"># File 'lib/porolog.rb', line 451</span>
1046
+
1047
+ <span class='kw'>def</span> <span class='id identifier rubyid_has_tail?'>has_tail?</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='comma'>,</span> <span class='id identifier rubyid_apply_value'>apply_value</span> <span class='op'>=</span> <span class='kw'>true</span><span class='rparen'>)</span>
1048
+ <span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_value'>value</span> <span class='kw'>if</span> <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='symbol'>:value</span><span class='rparen'>)</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_apply_value'>apply_value</span>
1049
+
1050
+ <span class='kw'>if</span> <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="Array.html" title="Array (class)">Array</a></span></span><span class='rparen'>)</span>
1051
+ <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_last'>last</span> <span class='op'>==</span> <span class='const'><span class='object_link'><a href="#UNKNOWN_TAIL-constant" title="Porolog::UNKNOWN_TAIL (constant)">UNKNOWN_TAIL</a></span></span> <span class='op'>||</span> <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_last'>last</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="Porolog/Tail.html" title="Porolog::Tail (class)">Tail</a></span></span><span class='rparen'>)</span>
1052
+ <span class='kw'>else</span>
1053
+ <span class='kw'>false</span>
1054
+ <span class='kw'>end</span>
1055
+ <span class='kw'>end</span></pre>
1056
+ </td>
1057
+ </tr>
1058
+ </table>
1092
1059
  </div>
1093
-
1094
- </li>
1060
+
1061
+ <div class="method_details ">
1062
+ <h3 class="signature " id="instantiate_unifications-instance_method">
1095
1063
 
1096
- <li>
1097
-
1098
- <span class='name'>right_goal</span>
1099
-
1100
-
1101
- <span class='type'>(<tt><span class='object_link'><a href="Porolog/Goal.html" title="Porolog::Goal (class)">Porolog::Goal</a></span></tt>)</span>
1102
-
1103
-
1104
- <em class="default">(defaults to: <tt>left_goal</tt>)</em>
1105
-
1106
-
1107
- &mdash;
1108
- <div class='inline'>
1109
- <p>goal of right hand side entity.</p>
1064
+ #<strong>instantiate_unifications</strong>(unifications) &#x21d2; <tt>Boolean</tt>
1065
+
1066
+
1067
+
1068
+
1069
+
1070
+ </h3><div class="docstring">
1071
+ <div class="discussion">
1072
+
1073
+ <p>Instantiates the unifications from an attempt to unify.</p>
1074
+
1075
+
1076
+ </div>
1110
1077
  </div>
1111
-
1112
- </li>
1078
+ <div class="tags">
1079
+ <p class="tag_title">Parameters:</p>
1080
+ <ul class="param">
1113
1081
 
1114
1082
  <li>
1115
1083
 
1116
- <span class='name'>visited</span>
1084
+ <span class='name'>unifications</span>
1117
1085
 
1118
1086
 
1119
1087
  <span class='type'>(<tt><span class='object_link'><a href="Array.html" title="Array (class)">Array</a></span></tt>)</span>
1120
1088
 
1121
1089
 
1122
- <em class="default">(defaults to: <tt>[]</tt>)</em>
1123
-
1124
1090
 
1125
1091
  &mdash;
1126
1092
  <div class='inline'>
1127
- <p>prevents infinite recursion.</p>
1093
+ <p>unifications to instantiate.</p>
1128
1094
  </div>
1129
1095
 
1130
1096
  </li>
@@ -1137,27 +1103,13 @@
1137
1103
  <li>
1138
1104
 
1139
1105
 
1140
- <span class='type'>(<tt><span class='object_link'><a href="Array.html" title="Array (class)">Array</a></span></tt>)</span>
1141
-
1142
-
1143
-
1144
- &mdash;
1145
- <div class='inline'>
1146
- <p>an Array of unifications when the left hand side can be unified with the right hand.</p>
1147
- </div>
1148
-
1149
- </li>
1150
-
1151
- <li>
1152
-
1153
-
1154
- <span class='type'>(<tt>nil</tt>)</span>
1106
+ <span class='type'>(<tt>Boolean</tt>)</span>
1155
1107
 
1156
1108
 
1157
1109
 
1158
1110
  &mdash;
1159
1111
  <div class='inline'>
1160
- <p>nil if they cannot be unified.</p>
1112
+ <p>whether the instantiations could be made.</p>
1161
1113
  </div>
1162
1114
 
1163
1115
  </li>
@@ -1170,31 +1122,6 @@
1170
1122
  <pre class="lines">
1171
1123
 
1172
1124
 
1173
- 139
1174
- 140
1175
- 141
1176
- 142
1177
- 143
1178
- 144
1179
- 145
1180
- 146
1181
- 147
1182
- 148
1183
- 149
1184
- 150
1185
- 151
1186
- 152
1187
- 153
1188
- 154
1189
- 155
1190
- 156
1191
- 157
1192
- 158
1193
- 159
1194
- 160
1195
- 161
1196
- 162
1197
- 163
1198
1125
  164
1199
1126
  165
1200
1127
  166
@@ -1259,56 +1186,548 @@
1259
1186
  225
1260
1187
  226
1261
1188
  227
1262
- 228
1263
- 229
1264
- 230
1265
- 231
1266
- 232
1267
- 233
1268
- 234
1269
- 235
1270
- 236
1271
- 237
1272
- 238
1273
- 239
1274
- 240
1275
- 241
1276
- 242
1277
- 243
1278
- 244
1279
- 245
1280
- 246
1281
- 247
1282
- 248
1283
- 249
1284
- 250
1285
- 251</pre>
1189
+ 228</pre>
1286
1190
  </td>
1287
1191
  <td>
1288
- <pre class="code"><span class="info file"># File 'lib/porolog.rb', line 139</span>
1192
+ <pre class="code"><span class="info file"># File 'lib/porolog.rb', line 164</span>
1289
1193
 
1290
- <span class='kw'>def</span> <span class='id identifier rubyid_unify'>unify</span><span class='lparen'>(</span><span class='id identifier rubyid_left'>left</span><span class='comma'>,</span> <span class='id identifier rubyid_right'>right</span><span class='comma'>,</span> <span class='id identifier rubyid_left_goal'>left_goal</span><span class='comma'>,</span> <span class='id identifier rubyid_right_goal'>right_goal</span> <span class='op'>=</span> <span class='id identifier rubyid_left_goal'>left_goal</span><span class='comma'>,</span> <span class='id identifier rubyid_visited'>visited</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span><span class='rparen'>)</span>
1291
- <span class='id identifier rubyid_right_goal'>right_goal</span> <span class='op'>||=</span> <span class='id identifier rubyid_left_goal'>left_goal</span>
1292
- <span class='id identifier rubyid_goals'>goals</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='id identifier rubyid_left_goal'>left_goal</span><span class='comma'>,</span> <span class='id identifier rubyid_right_goal'>right_goal</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_uniq'>uniq</span>
1293
- <span class='id identifier rubyid_signature'>signature</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='id identifier rubyid_left'>left</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='id identifier rubyid_right'>right</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span><span class='rbracket'>]</span>
1294
-
1295
- <span class='comment'># -- Nil is Uninstantiated (can always unify) --
1296
- </span> <span class='kw'>return</span> <span class='lbracket'>[</span><span class='rbracket'>]</span> <span class='kw'>unless</span> <span class='id identifier rubyid_left'>left</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_right'>right</span>
1194
+ <span class='kw'>def</span> <span class='id identifier rubyid_instantiate_unifications'>instantiate_unifications</span><span class='lparen'>(</span><span class='id identifier rubyid_unifications'>unifications</span><span class='rparen'>)</span>
1195
+ <span class='comment'># -- Gather Unifications --
1196
+ </span> <span class='id identifier rubyid_goals_variables'>goals_variables</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span>
1297
1197
 
1298
- <span class='comment'># -- Set HeadTail Goals --
1299
- </span> <span class='kw'>case</span> <span class='id identifier rubyid_signature'>signature</span>
1300
- <span class='kw'>when</span> <span class='lbracket'>[</span><span class='symbol'>:atomic</span><span class='comma'>,</span> <span class='symbol'>:atomic</span><span class='rbracket'>]</span>
1301
- <span class='kw'>if</span> <span class='id identifier rubyid_left'>left</span> <span class='op'>==</span> <span class='id identifier rubyid_right'>right</span>
1302
- <span class='lbracket'>[</span><span class='rbracket'>]</span>
1303
- <span class='kw'>else</span>
1304
- <span class='id identifier rubyid_msg'>msg</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Cannot unify because </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_left'>left</span><span class='period'>.</span><span class='id identifier rubyid_inspect'>inspect</span><span class='embexpr_end'>}</span><span class='tstring_content'> != </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_right'>right</span><span class='period'>.</span><span class='id identifier rubyid_inspect'>inspect</span><span class='embexpr_end'>}</span><span class='tstring_content'> (atomic != atomic)</span><span class='tstring_end'>&quot;</span></span>
1305
- <span class='id identifier rubyid_goals'>goals</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span><span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_goal'>goal</span><span class='op'>|</span> <span class='id identifier rubyid_goal'>goal</span><span class='period'>.</span><span class='id identifier rubyid_log'>log</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_msg'>msg</span> <span class='rbrace'>}</span>
1306
- <span class='kw'>nil</span>
1307
- <span class='kw'>end</span>
1198
+ <span class='id identifier rubyid_return_false'>return_false</span> <span class='op'>=</span> <span class='kw'>false</span>
1199
+ <span class='id identifier rubyid_unifications'>unifications</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_unification'>unification</span><span class='op'>|</span>
1200
+ <span class='id identifier rubyid_left'>left</span><span class='comma'>,</span> <span class='id identifier rubyid_right'>right</span><span class='comma'>,</span> <span class='id identifier rubyid_left_goal'>left_goal</span><span class='comma'>,</span> <span class='id identifier rubyid_right_goal'>right_goal</span> <span class='op'>=</span> <span class='id identifier rubyid_unification'>unification</span>
1308
1201
 
1309
- <span class='kw'>when</span> <span class='lbracket'>[</span><span class='symbol'>:array</span><span class='comma'>,</span> <span class='symbol'>:array</span><span class='rbracket'>]</span>
1310
- <span class='id identifier rubyid__merged'>_merged</span><span class='comma'>,</span> <span class='id identifier rubyid_unifications'>unifications</span> <span class='op'>=</span> <span class='id identifier rubyid_unify_arrays'>unify_arrays</span><span class='lparen'>(</span><span class='id identifier rubyid_left'>left</span><span class='comma'>,</span> <span class='id identifier rubyid_right'>right</span><span class='comma'>,</span> <span class='id identifier rubyid_left_goal'>left_goal</span><span class='comma'>,</span> <span class='id identifier rubyid_right_goal'>right_goal</span><span class='comma'>,</span> <span class='id identifier rubyid_visited'>visited</span><span class='rparen'>)</span>
1311
- <span class='kw'>if</span> <span class='id identifier rubyid_unifications'>unifications</span>
1202
+ <span class='id identifier rubyid_goals_variables'>goals_variables</span><span class='lbracket'>[</span><span class='id identifier rubyid_left_goal'>left_goal</span><span class='rbracket'>]</span> <span class='op'>||=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span>
1203
+ <span class='id identifier rubyid_goals_variables'>goals_variables</span><span class='lbracket'>[</span><span class='id identifier rubyid_left_goal'>left_goal</span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='id identifier rubyid_left'>left</span><span class='rbracket'>]</span> <span class='op'>||=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
1204
+ <span class='id identifier rubyid_goals_variables'>goals_variables</span><span class='lbracket'>[</span><span class='id identifier rubyid_left_goal'>left_goal</span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='id identifier rubyid_left'>left</span><span class='rbracket'>]</span> <span class='op'>&lt;&lt;</span> <span class='lbracket'>[</span><span class='id identifier rubyid_right_goal'>right_goal</span><span class='comma'>,</span><span class='id identifier rubyid_right'>right</span><span class='rbracket'>]</span>
1205
+
1206
+ <span class='comment'># -- Check Consistency --
1207
+ </span> <span class='id identifier rubyid_goals_variables'>goals_variables</span><span class='lbracket'>[</span><span class='id identifier rubyid_left_goal'>left_goal</span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='id identifier rubyid_left'>left</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='symbol'>:last</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='symbol'>:value</span><span class='rparen'>)</span>
1208
+ <span class='id identifier rubyid_values'>values</span> <span class='op'>=</span> <span class='id identifier rubyid_goals_variables'>goals_variables</span><span class='lbracket'>[</span><span class='id identifier rubyid_left_goal'>left_goal</span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='id identifier rubyid_left'>left</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_value'>value</span><span class='op'>|</span>
1209
+ <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_last'>last</span><span class='period'>.</span><span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_value'>value</span>
1210
+ <span class='rbrace'>}</span>
1211
+ <span class='kw'>next</span> <span class='kw'>if</span> <span class='id identifier rubyid_values'>values</span><span class='period'>.</span><span class='id identifier rubyid_size'>size</span> <span class='op'>&lt;</span> <span class='int'>2</span>
1212
+
1213
+ <span class='id identifier rubyid_arrays'>arrays</span> <span class='op'>=</span> <span class='id identifier rubyid_values'>values</span><span class='period'>.</span><span class='id identifier rubyid_any?'>any?</span><span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_value'>value</span><span class='op'>|</span> <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="Array.html" title="Array (class)">Array</a></span></span><span class='rparen'>)</span> <span class='rbrace'>}</span>
1214
+ <span class='kw'>if</span> <span class='id identifier rubyid_arrays'>arrays</span> <span class='op'>&amp;&amp;</span> <span class='op'>!</span><span class='id identifier rubyid_values'>values</span><span class='period'>.</span><span class='id identifier rubyid_variables'>variables</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span>
1215
+ <span class='id identifier rubyid_zipped_values'>zipped_values</span> <span class='op'>=</span> <span class='id identifier rubyid_values'>values</span><span class='lbracket'>[</span><span class='int'>0</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_zip'>zip</span><span class='lparen'>(</span><span class='op'>*</span><span class='id identifier rubyid_values'>values</span><span class='lbracket'>[</span><span class='int'>1</span><span class='op'>..</span><span class='op'>-</span><span class='int'>1</span><span class='rbracket'>]</span><span class='rparen'>)</span>
1216
+ <span class='id identifier rubyid_zipped_values'>zipped_values</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_zipped_value'>zipped_value</span><span class='op'>|</span>
1217
+ <span class='id identifier rubyid_vars'>vars</span><span class='comma'>,</span> <span class='id identifier rubyid_atomics'>atomics</span> <span class='op'>=</span> <span class='id identifier rubyid_zipped_value'>zipped_value</span><span class='period'>.</span><span class='id identifier rubyid_partition'>partition</span><span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_v'>v</span><span class='op'>|</span> <span class='id identifier rubyid_v'>v</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>==</span> <span class='symbol'>:variable</span> <span class='rbrace'>}</span>
1218
+ <span class='id identifier rubyid_return_false'>return_false</span> <span class='op'>=</span> <span class='kw'>true</span> <span class='kw'>if</span> <span class='id identifier rubyid_atomics'>atomics</span><span class='period'>.</span><span class='id identifier rubyid_uniq'>uniq</span><span class='period'>.</span><span class='id identifier rubyid_size'>size</span> <span class='op'>&gt;</span> <span class='int'>1</span>
1219
+ <span class='id identifier rubyid_vars'>vars</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_var'>var</span><span class='op'>|</span>
1220
+ <span class='id identifier rubyid_goals_variables'>goals_variables</span><span class='lbracket'>[</span><span class='id identifier rubyid_var'>var</span><span class='period'>.</span><span class='id identifier rubyid_goal'>goal</span><span class='rbracket'>]</span> <span class='op'>||=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span>
1221
+ <span class='id identifier rubyid_goals_variables'>goals_variables</span><span class='lbracket'>[</span><span class='id identifier rubyid_var'>var</span><span class='period'>.</span><span class='id identifier rubyid_goal'>goal</span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='id identifier rubyid_var'>var</span><span class='rbracket'>]</span> <span class='op'>||=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
1222
+ <span class='id identifier rubyid_goals_variables'>goals_variables</span><span class='lbracket'>[</span><span class='id identifier rubyid_var'>var</span><span class='period'>.</span><span class='id identifier rubyid_goal'>goal</span><span class='rbracket'>]</span><span class='lbracket'>[</span><span class='id identifier rubyid_var'>var</span><span class='rbracket'>]</span> <span class='op'>&lt;&lt;</span> <span class='lbracket'>[</span><span class='lparen'>(</span><span class='lbracket'>[</span><span class='id identifier rubyid_left_goal'>left_goal</span><span class='comma'>,</span><span class='id identifier rubyid_right_goal'>right_goal</span><span class='rbracket'>]</span><span class='op'>-</span><span class='lbracket'>[</span><span class='id identifier rubyid_var'>var</span><span class='period'>.</span><span class='id identifier rubyid_goal'>goal</span><span class='rbracket'>]</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span><span class='comma'>,</span><span class='id identifier rubyid_atomics'>atomics</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span><span class='rbracket'>]</span>
1223
+ <span class='kw'>end</span>
1224
+ <span class='kw'>end</span>
1225
+ <span class='kw'>else</span>
1226
+ <span class='id identifier rubyid_return_false'>return_false</span> <span class='op'>=</span> <span class='id identifier rubyid_values'>values</span><span class='period'>.</span><span class='id identifier rubyid_reject'>reject</span><span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_value'>value</span><span class='op'>|</span>
1227
+ <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="Porolog/Variable.html" title="Porolog::Variable (class)">Variable</a></span></span><span class='rparen'>)</span> <span class='op'>||</span> <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="Symbol.html" title="Symbol (class)">Symbol</a></span></span><span class='rparen'>)</span>
1228
+ <span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_uniq'>uniq</span><span class='period'>.</span><span class='id identifier rubyid_size'>size</span> <span class='op'>&gt;</span> <span class='int'>1</span>
1229
+ <span class='kw'>end</span>
1230
+
1231
+ <span class='kw'>return</span> <span class='kw'>false</span> <span class='kw'>if</span> <span class='id identifier rubyid_return_false'>return_false</span>
1232
+ <span class='kw'>end</span>
1233
+
1234
+ <span class='comment'># -- Make Instantiations --
1235
+ </span> <span class='id identifier rubyid_instantiations'>instantiations</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
1236
+ <span class='id identifier rubyid_consistent'>consistent</span> <span class='op'>=</span> <span class='kw'>true</span>
1237
+
1238
+ <span class='id identifier rubyid_goals_variables'>goals_variables</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_goal'>goal</span><span class='comma'>,</span> <span class='id identifier rubyid_variables'>variables</span><span class='op'>|</span>
1239
+ <span class='id identifier rubyid_variables'>variables</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_name'>name</span><span class='comma'>,</span> <span class='id identifier rubyid_others'>others</span><span class='op'>|</span>
1240
+ <span class='id identifier rubyid_others'>others</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_other_goal'>other_goal</span><span class='comma'>,</span> <span class='id identifier rubyid_other'>other</span><span class='op'>|</span>
1241
+ <span class='id identifier rubyid_instantiation'>instantiation</span> <span class='op'>=</span> <span class='id identifier rubyid_goal'>goal</span><span class='period'>.</span><span class='id identifier rubyid_instantiate'>instantiate</span><span class='lparen'>(</span><span class='id identifier rubyid_name'>name</span><span class='comma'>,</span> <span class='id identifier rubyid_other'>other</span><span class='comma'>,</span> <span class='id identifier rubyid_other_goal'>other_goal</span><span class='rparen'>)</span>
1242
+ <span class='kw'>if</span> <span class='id identifier rubyid_instantiation'>instantiation</span>
1243
+ <span class='id identifier rubyid_instantiations'>instantiations</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_instantiation'>instantiation</span>
1244
+ <span class='kw'>else</span>
1245
+ <span class='id identifier rubyid_consistent'>consistent</span> <span class='op'>=</span> <span class='kw'>false</span>
1246
+ <span class='kw'>end</span>
1247
+ <span class='kw'>end</span>
1248
+ <span class='kw'>end</span>
1249
+ <span class='kw'>end</span>
1250
+
1251
+ <span class='comment'># -- Revert if inconsistent --
1252
+ </span> <span class='kw'>if</span> <span class='id identifier rubyid_consistent'>consistent</span>
1253
+ <span class='id identifier rubyid_instantiations'>instantiations</span>
1254
+ <span class='kw'>else</span>
1255
+ <span class='id identifier rubyid_instantiations'>instantiations</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='symbol'>:remove</span><span class='rparen'>)</span>
1256
+ <span class='kw'>nil</span>
1257
+ <span class='kw'>end</span>
1258
+ <span class='kw'>end</span></pre>
1259
+ </td>
1260
+ </tr>
1261
+ </table>
1262
+ </div>
1263
+
1264
+ <div class="method_details ">
1265
+ <h3 class="signature " id="predicate-instance_method">
1266
+
1267
+ #<strong>predicate</strong>(*names, class_base: Object) &#x21d2; <tt><span class='object_link'><a href="Porolog/Predicate.html" title="Porolog::Predicate (class)">Porolog::Predicate</a></span></tt><sup>+</sup>
1268
+
1269
+
1270
+
1271
+
1272
+
1273
+ </h3><div class="docstring">
1274
+ <div class="discussion">
1275
+
1276
+ <p>A convenience method to create a Predicate, along with a method that returns an Arguments based on the arguments provided to the method.</p>
1277
+
1278
+
1279
+ </div>
1280
+ </div>
1281
+ <div class="tags">
1282
+
1283
+ <div class="examples">
1284
+ <p class="tag_title">Examples:</p>
1285
+
1286
+
1287
+ <pre class="example code"><code><span class='id identifier rubyid_predicate'>predicate</span> <span class='symbol'>:combobulator</span>
1288
+ <span class='id identifier rubyid_combobulator'>combobulator</span><span class='lparen'>(</span><span class='symbol'>:x</span><span class='comma'>,</span><span class='symbol'>:y</span><span class='rparen'>)</span> <span class='comment'># --&gt; Porolog::Arguments</span></code></pre>
1289
+
1290
+ </div>
1291
+ <p class="tag_title">Parameters:</p>
1292
+ <ul class="param">
1293
+
1294
+ <li>
1295
+
1296
+ <span class='name'>names</span>
1297
+
1298
+
1299
+ <span class='type'>(<tt><span class='object_link'><a href="Array.html" title="Array (class)">Array</a></span>&lt;#to_sym&gt;</tt>)</span>
1300
+
1301
+
1302
+
1303
+ &mdash;
1304
+ <div class='inline'>
1305
+ <p>names of the Predicates to create.</p>
1306
+ </div>
1307
+
1308
+ </li>
1309
+
1310
+ <li>
1311
+
1312
+ <span class='name'>class_base</span>
1313
+
1314
+
1315
+ <span class='type'>(<tt>Class</tt>)</span>
1316
+
1317
+
1318
+
1319
+ &mdash;
1320
+ <div class='inline'>
1321
+ <p>class to define the method in.</p>
1322
+ </div>
1323
+
1324
+ </li>
1325
+
1326
+ </ul>
1327
+
1328
+ <p class="tag_title">Returns:</p>
1329
+ <ul class="return">
1330
+
1331
+ <li>
1332
+
1333
+
1334
+ <span class='type'>(<tt><span class='object_link'><a href="Porolog/Predicate.html" title="Porolog::Predicate (class)">Porolog::Predicate</a></span></tt>)</span>
1335
+
1336
+
1337
+
1338
+ &mdash;
1339
+ <div class='inline'>
1340
+ <p>Predicate created if only one name is provided</p>
1341
+ </div>
1342
+
1343
+ </li>
1344
+
1345
+ <li>
1346
+
1347
+
1348
+ <span class='type'>(<tt><span class='object_link'><a href="Array.html" title="Array (class)">Array</a></span>&lt;<span class='object_link'><a href="Porolog/Predicate.html" title="Porolog::Predicate (class)">Porolog::Predicate</a></span>&gt;</tt>)</span>
1349
+
1350
+
1351
+
1352
+ &mdash;
1353
+ <div class='inline'>
1354
+ <p>Predicates created if multiple names are provided</p>
1355
+ </div>
1356
+
1357
+ </li>
1358
+
1359
+ </ul>
1360
+
1361
+ </div><table class="source_code">
1362
+ <tr>
1363
+ <td>
1364
+ <pre class="lines">
1365
+
1366
+
1367
+ 55
1368
+ 56
1369
+ 57
1370
+ 58
1371
+ 59
1372
+ 60
1373
+ 61
1374
+ 62
1375
+ 63
1376
+ 64
1377
+ 65
1378
+ 66
1379
+ 67
1380
+ 68
1381
+ 69
1382
+ 70
1383
+ 71
1384
+ 72
1385
+ 73
1386
+ 74
1387
+ 75
1388
+ 76
1389
+ 77</pre>
1390
+ </td>
1391
+ <td>
1392
+ <pre class="code"><span class="info file"># File 'lib/porolog.rb', line 55</span>
1393
+
1394
+ <span class='kw'>def</span> <span class='id identifier rubyid_predicate'>predicate</span><span class='lparen'>(</span><span class='op'>*</span><span class='id identifier rubyid_names'>names</span><span class='comma'>,</span> <span class='label'>class_base:</span> <span class='const'><span class='object_link'><a href="Object.html" title="Object (class)">Object</a></span></span><span class='rparen'>)</span>
1395
+ <span class='id identifier rubyid_names'>names</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='id identifier rubyid_names'>names</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_flatten'>flatten</span>
1396
+
1397
+ <span class='id identifier rubyid_predicates'>predicates</span> <span class='op'>=</span> <span class='id identifier rubyid_names'>names</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_name'>name</span><span class='op'>|</span>
1398
+ <span class='id identifier rubyid_method'>method</span> <span class='op'>=</span> <span class='id identifier rubyid_name'>name</span><span class='period'>.</span><span class='id identifier rubyid_to_sym'>to_sym</span>
1399
+ <span class='id identifier rubyid_predicate'>predicate</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="Porolog/Predicate.html" title="Porolog::Predicate (class)">Predicate</a></span></span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="Porolog/Predicate.html#new-class_method" title="Porolog::Predicate.new (method)">new</a></span></span><span class='lparen'>(</span><span class='id identifier rubyid_name'>name</span><span class='rparen'>)</span>
1400
+ <span class='id identifier rubyid_class_base'>class_base</span><span class='period'>.</span><span class='id identifier rubyid_class_eval'>class_eval</span><span class='lbrace'>{</span>
1401
+ <span class='id identifier rubyid_remove_method'>remove_method</span><span class='lparen'>(</span><span class='id identifier rubyid_method'>method</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_public_method_defined?'>public_method_defined?</span><span class='lparen'>(</span><span class='id identifier rubyid_method'>method</span><span class='rparen'>)</span>
1402
+ <span class='id identifier rubyid_define_method'>define_method</span><span class='lparen'>(</span><span class='id identifier rubyid_method'>method</span><span class='rparen'>)</span><span class='lbrace'>{</span><span class='op'>|</span><span class='op'>*</span><span class='id identifier rubyid_args'>args</span><span class='op'>|</span>
1403
+ <span class='id identifier rubyid_predicate'>predicate</span><span class='period'>.</span><span class='lparen'>(</span><span class='op'>*</span><span class='id identifier rubyid_args'>args</span><span class='rparen'>)</span>
1404
+ <span class='rbrace'>}</span>
1405
+ <span class='rbrace'>}</span>
1406
+ <span class='lparen'>(</span><span class='kw'>class</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_class_base'>class_base</span><span class='semicolon'>;</span> <span class='kw'>self</span><span class='semicolon'>;</span> <span class='kw'>end</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_instance_eval'>instance_eval</span> <span class='lbrace'>{</span>
1407
+ <span class='id identifier rubyid_remove_method'>remove_method</span><span class='lparen'>(</span><span class='id identifier rubyid_method'>method</span><span class='rparen'>)</span> <span class='kw'>if</span> <span class='id identifier rubyid_public_method_defined?'>public_method_defined?</span><span class='lparen'>(</span><span class='id identifier rubyid_method'>method</span><span class='rparen'>)</span>
1408
+ <span class='id identifier rubyid_define_method'>define_method</span><span class='lparen'>(</span><span class='id identifier rubyid_method'>method</span><span class='rparen'>)</span><span class='lbrace'>{</span><span class='op'>|</span><span class='op'>*</span><span class='id identifier rubyid_args'>args</span><span class='op'>|</span>
1409
+ <span class='id identifier rubyid_predicate'>predicate</span><span class='period'>.</span><span class='lparen'>(</span><span class='op'>*</span><span class='id identifier rubyid_args'>args</span><span class='rparen'>)</span>
1410
+ <span class='rbrace'>}</span>
1411
+ <span class='rbrace'>}</span> <span class='kw'>unless</span> <span class='id identifier rubyid_class_base'>class_base</span> <span class='op'>==</span> <span class='const'><span class='object_link'><a href="Object.html" title="Object (class)">Object</a></span></span>
1412
+ <span class='id identifier rubyid_predicate'>predicate</span>
1413
+ <span class='rbrace'>}</span>
1414
+
1415
+ <span class='id identifier rubyid_predicates'>predicates</span><span class='period'>.</span><span class='id identifier rubyid_size'>size</span> <span class='op'>&gt;</span> <span class='int'>1</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_predicates'>predicates</span> <span class='op'>||</span> <span class='id identifier rubyid_predicates'>predicates</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span>
1416
+ <span class='kw'>end</span></pre>
1417
+ </td>
1418
+ </tr>
1419
+ </table>
1420
+ </div>
1421
+
1422
+ <div class="method_details ">
1423
+ <h3 class="signature " id="unify-instance_method">
1424
+
1425
+ #<strong>unify</strong>(left, right, left_goal, right_goal = left_goal, visited = []) &#x21d2; <tt><span class='object_link'><a href="Array.html" title="Array (class)">Array</a></span></tt><sup>?</sup>
1426
+
1427
+
1428
+
1429
+
1430
+
1431
+ </h3><div class="docstring">
1432
+ <div class="discussion">
1433
+
1434
+ <p>Attempt to unify two entities of two goals.</p>
1435
+
1436
+
1437
+ </div>
1438
+ </div>
1439
+ <div class="tags">
1440
+ <p class="tag_title">Parameters:</p>
1441
+ <ul class="param">
1442
+
1443
+ <li>
1444
+
1445
+ <span class='name'>left</span>
1446
+
1447
+
1448
+ <span class='type'>(<tt><span class='object_link'><a href="Object.html" title="Object (class)">Object</a></span></tt>)</span>
1449
+
1450
+
1451
+
1452
+ &mdash;
1453
+ <div class='inline'>
1454
+ <p>left hand side entity.</p>
1455
+ </div>
1456
+
1457
+ </li>
1458
+
1459
+ <li>
1460
+
1461
+ <span class='name'>right</span>
1462
+
1463
+
1464
+ <span class='type'>(<tt><span class='object_link'><a href="Object.html" title="Object (class)">Object</a></span></tt>)</span>
1465
+
1466
+
1467
+
1468
+ &mdash;
1469
+ <div class='inline'>
1470
+ <p>right hand side entity.</p>
1471
+ </div>
1472
+
1473
+ </li>
1474
+
1475
+ <li>
1476
+
1477
+ <span class='name'>left_goal</span>
1478
+
1479
+
1480
+ <span class='type'>(<tt><span class='object_link'><a href="Porolog/Goal.html" title="Porolog::Goal (class)">Porolog::Goal</a></span></tt>)</span>
1481
+
1482
+
1483
+
1484
+ &mdash;
1485
+ <div class='inline'>
1486
+ <p>goal of left hand side entity.</p>
1487
+ </div>
1488
+
1489
+ </li>
1490
+
1491
+ <li>
1492
+
1493
+ <span class='name'>right_goal</span>
1494
+
1495
+
1496
+ <span class='type'>(<tt><span class='object_link'><a href="Porolog/Goal.html" title="Porolog::Goal (class)">Porolog::Goal</a></span></tt>)</span>
1497
+
1498
+
1499
+ <em class="default">(defaults to: <tt>left_goal</tt>)</em>
1500
+
1501
+
1502
+ &mdash;
1503
+ <div class='inline'>
1504
+ <p>goal of right hand side entity.</p>
1505
+ </div>
1506
+
1507
+ </li>
1508
+
1509
+ <li>
1510
+
1511
+ <span class='name'>visited</span>
1512
+
1513
+
1514
+ <span class='type'>(<tt><span class='object_link'><a href="Array.html" title="Array (class)">Array</a></span></tt>)</span>
1515
+
1516
+
1517
+ <em class="default">(defaults to: <tt>[]</tt>)</em>
1518
+
1519
+
1520
+ &mdash;
1521
+ <div class='inline'>
1522
+ <p>prevents infinite recursion.</p>
1523
+ </div>
1524
+
1525
+ </li>
1526
+
1527
+ </ul>
1528
+
1529
+ <p class="tag_title">Returns:</p>
1530
+ <ul class="return">
1531
+
1532
+ <li>
1533
+
1534
+
1535
+ <span class='type'>(<tt><span class='object_link'><a href="Array.html" title="Array (class)">Array</a></span></tt>)</span>
1536
+
1537
+
1538
+
1539
+ &mdash;
1540
+ <div class='inline'>
1541
+ <p>an Array of unifications when the left hand side can be unified with the right hand.</p>
1542
+ </div>
1543
+
1544
+ </li>
1545
+
1546
+ <li>
1547
+
1548
+
1549
+ <span class='type'>(<tt>nil</tt>)</span>
1550
+
1551
+
1552
+
1553
+ &mdash;
1554
+ <div class='inline'>
1555
+ <p>nil if they cannot be unified.</p>
1556
+ </div>
1557
+
1558
+ </li>
1559
+
1560
+ </ul>
1561
+
1562
+ </div><table class="source_code">
1563
+ <tr>
1564
+ <td>
1565
+ <pre class="lines">
1566
+
1567
+
1568
+ 238
1569
+ 239
1570
+ 240
1571
+ 241
1572
+ 242
1573
+ 243
1574
+ 244
1575
+ 245
1576
+ 246
1577
+ 247
1578
+ 248
1579
+ 249
1580
+ 250
1581
+ 251
1582
+ 252
1583
+ 253
1584
+ 254
1585
+ 255
1586
+ 256
1587
+ 257
1588
+ 258
1589
+ 259
1590
+ 260
1591
+ 261
1592
+ 262
1593
+ 263
1594
+ 264
1595
+ 265
1596
+ 266
1597
+ 267
1598
+ 268
1599
+ 269
1600
+ 270
1601
+ 271
1602
+ 272
1603
+ 273
1604
+ 274
1605
+ 275
1606
+ 276
1607
+ 277
1608
+ 278
1609
+ 279
1610
+ 280
1611
+ 281
1612
+ 282
1613
+ 283
1614
+ 284
1615
+ 285
1616
+ 286
1617
+ 287
1618
+ 288
1619
+ 289
1620
+ 290
1621
+ 291
1622
+ 292
1623
+ 293
1624
+ 294
1625
+ 295
1626
+ 296
1627
+ 297
1628
+ 298
1629
+ 299
1630
+ 300
1631
+ 301
1632
+ 302
1633
+ 303
1634
+ 304
1635
+ 305
1636
+ 306
1637
+ 307
1638
+ 308
1639
+ 309
1640
+ 310
1641
+ 311
1642
+ 312
1643
+ 313
1644
+ 314
1645
+ 315
1646
+ 316
1647
+ 317
1648
+ 318
1649
+ 319
1650
+ 320
1651
+ 321
1652
+ 322
1653
+ 323
1654
+ 324
1655
+ 325
1656
+ 326
1657
+ 327
1658
+ 328
1659
+ 329
1660
+ 330
1661
+ 331
1662
+ 332
1663
+ 333
1664
+ 334
1665
+ 335
1666
+ 336
1667
+ 337
1668
+ 338
1669
+ 339
1670
+ 340
1671
+ 341
1672
+ 342
1673
+ 343
1674
+ 344
1675
+ 345
1676
+ 346
1677
+ 347
1678
+ 348
1679
+ 349
1680
+ 350
1681
+ 351
1682
+ 352
1683
+ 353
1684
+ 354
1685
+ 355
1686
+ 356
1687
+ 357
1688
+ 358
1689
+ 359
1690
+ 360
1691
+ 361
1692
+ 362
1693
+ 363
1694
+ 364
1695
+ 365
1696
+ 366
1697
+ 367
1698
+ 368
1699
+ 369
1700
+ 370
1701
+ 371
1702
+ 372
1703
+ 373
1704
+ 374</pre>
1705
+ </td>
1706
+ <td>
1707
+ <pre class="code"><span class="info file"># File 'lib/porolog.rb', line 238</span>
1708
+
1709
+ <span class='kw'>def</span> <span class='id identifier rubyid_unify'>unify</span><span class='lparen'>(</span><span class='id identifier rubyid_left'>left</span><span class='comma'>,</span> <span class='id identifier rubyid_right'>right</span><span class='comma'>,</span> <span class='id identifier rubyid_left_goal'>left_goal</span><span class='comma'>,</span> <span class='id identifier rubyid_right_goal'>right_goal</span> <span class='op'>=</span> <span class='id identifier rubyid_left_goal'>left_goal</span><span class='comma'>,</span> <span class='id identifier rubyid_visited'>visited</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span><span class='rparen'>)</span>
1710
+ <span class='id identifier rubyid_right_goal'>right_goal</span> <span class='op'>||=</span> <span class='id identifier rubyid_left_goal'>left_goal</span>
1711
+ <span class='id identifier rubyid_goals'>goals</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='id identifier rubyid_left_goal'>left_goal</span><span class='comma'>,</span> <span class='id identifier rubyid_right_goal'>right_goal</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_uniq'>uniq</span>
1712
+ <span class='id identifier rubyid_signature'>signature</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='id identifier rubyid_left'>left</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span><span class='comma'>,</span> <span class='id identifier rubyid_right'>right</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span><span class='rbracket'>]</span>
1713
+
1714
+ <span class='comment'># -- Nil is Uninstantiated (can always unify) --
1715
+ </span> <span class='kw'>return</span> <span class='lbracket'>[</span><span class='rbracket'>]</span> <span class='kw'>unless</span> <span class='id identifier rubyid_left'>left</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_right'>right</span>
1716
+
1717
+ <span class='comment'># -- Set HeadTail Goals --
1718
+ </span> <span class='kw'>case</span> <span class='id identifier rubyid_signature'>signature</span>
1719
+ <span class='kw'>when</span> <span class='lbracket'>[</span><span class='symbol'>:atomic</span><span class='comma'>,</span> <span class='symbol'>:atomic</span><span class='rbracket'>]</span>
1720
+ <span class='kw'>if</span> <span class='id identifier rubyid_left'>left</span> <span class='op'>==</span> <span class='id identifier rubyid_right'>right</span>
1721
+ <span class='lbracket'>[</span><span class='rbracket'>]</span>
1722
+ <span class='kw'>else</span>
1723
+ <span class='id identifier rubyid_msg'>msg</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Cannot unify because </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_left'>left</span><span class='period'>.</span><span class='id identifier rubyid_inspect'>inspect</span><span class='embexpr_end'>}</span><span class='tstring_content'> != </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_right'>right</span><span class='period'>.</span><span class='id identifier rubyid_inspect'>inspect</span><span class='embexpr_end'>}</span><span class='tstring_content'> (atomic != atomic)</span><span class='tstring_end'>&quot;</span></span>
1724
+ <span class='id identifier rubyid_goals'>goals</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span><span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_goal'>goal</span><span class='op'>|</span> <span class='id identifier rubyid_goal'>goal</span><span class='period'>.</span><span class='id identifier rubyid_log'>log</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_msg'>msg</span> <span class='rbrace'>}</span>
1725
+ <span class='kw'>nil</span>
1726
+ <span class='kw'>end</span>
1727
+
1728
+ <span class='kw'>when</span> <span class='lbracket'>[</span><span class='symbol'>:array</span><span class='comma'>,</span> <span class='symbol'>:array</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='lbracket'>[</span><span class='symbol'>:tail</span><span class='comma'>,</span> <span class='symbol'>:tail</span><span class='rbracket'>]</span>
1729
+ <span class='id identifier rubyid__merged'>_merged</span><span class='comma'>,</span> <span class='id identifier rubyid_unifications'>unifications</span> <span class='op'>=</span> <span class='id identifier rubyid_unify_arrays'>unify_arrays</span><span class='lparen'>(</span><span class='id identifier rubyid_left'>left</span><span class='comma'>,</span> <span class='id identifier rubyid_right'>right</span><span class='comma'>,</span> <span class='id identifier rubyid_left_goal'>left_goal</span><span class='comma'>,</span> <span class='id identifier rubyid_right_goal'>right_goal</span><span class='comma'>,</span> <span class='id identifier rubyid_visited'>visited</span><span class='rparen'>)</span>
1730
+ <span class='kw'>if</span> <span class='id identifier rubyid_unifications'>unifications</span>
1312
1731
  <span class='id identifier rubyid_unifications'>unifications</span>
1313
1732
  <span class='kw'>else</span>
1314
1733
  <span class='id identifier rubyid_msg'>msg</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Cannot unify because </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_left'>left</span><span class='period'>.</span><span class='id identifier rubyid_inspect'>inspect</span><span class='embexpr_end'>}</span><span class='tstring_content'> != </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_right'>right</span><span class='period'>.</span><span class='id identifier rubyid_inspect'>inspect</span><span class='embexpr_end'>}</span><span class='tstring_content'> (array != array)</span><span class='tstring_end'>&quot;</span></span>
@@ -1316,6 +1735,26 @@
1316
1735
  <span class='kw'>nil</span>
1317
1736
  <span class='kw'>end</span>
1318
1737
 
1738
+ <span class='kw'>when</span> <span class='lbracket'>[</span><span class='symbol'>:array</span><span class='comma'>,</span> <span class='symbol'>:tail</span><span class='rbracket'>]</span>
1739
+ <span class='id identifier rubyid__merged'>_merged</span><span class='comma'>,</span> <span class='id identifier rubyid_unifications'>unifications</span> <span class='op'>=</span> <span class='id identifier rubyid_unify_arrays'>unify_arrays</span><span class='lparen'>(</span><span class='lbracket'>[</span><span class='id identifier rubyid_left'>left</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='id identifier rubyid_right'>right</span><span class='period'>.</span><span class='id identifier rubyid_value'>value</span><span class='comma'>,</span> <span class='id identifier rubyid_left_goal'>left_goal</span><span class='comma'>,</span> <span class='id identifier rubyid_right_goal'>right_goal</span><span class='comma'>,</span> <span class='id identifier rubyid_visited'>visited</span><span class='rparen'>)</span>
1740
+ <span class='kw'>if</span> <span class='id identifier rubyid_unifications'>unifications</span>
1741
+ <span class='id identifier rubyid_unifications'>unifications</span>
1742
+ <span class='kw'>else</span>
1743
+ <span class='id identifier rubyid_msg'>msg</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Cannot unify because </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_left'>left</span><span class='period'>.</span><span class='id identifier rubyid_inspect'>inspect</span><span class='embexpr_end'>}</span><span class='tstring_content'> != </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_right'>right</span><span class='period'>.</span><span class='id identifier rubyid_inspect'>inspect</span><span class='embexpr_end'>}</span><span class='tstring_content'> (array != tail)</span><span class='tstring_end'>&quot;</span></span>
1744
+ <span class='id identifier rubyid_goals'>goals</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span><span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_goal'>goal</span><span class='op'>|</span> <span class='id identifier rubyid_goal'>goal</span><span class='period'>.</span><span class='id identifier rubyid_log'>log</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_msg'>msg</span> <span class='rbrace'>}</span>
1745
+ <span class='kw'>nil</span>
1746
+ <span class='kw'>end</span>
1747
+
1748
+ <span class='kw'>when</span> <span class='lbracket'>[</span><span class='symbol'>:tail</span><span class='comma'>,</span> <span class='symbol'>:array</span><span class='rbracket'>]</span>
1749
+ <span class='id identifier rubyid__merged'>_merged</span><span class='comma'>,</span> <span class='id identifier rubyid_unifications'>unifications</span> <span class='op'>=</span> <span class='id identifier rubyid_unify_arrays'>unify_arrays</span><span class='lparen'>(</span><span class='id identifier rubyid_left'>left</span><span class='period'>.</span><span class='id identifier rubyid_value'>value</span><span class='comma'>,</span> <span class='lbracket'>[</span><span class='id identifier rubyid_right'>right</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='id identifier rubyid_left_goal'>left_goal</span><span class='comma'>,</span> <span class='id identifier rubyid_right_goal'>right_goal</span><span class='comma'>,</span> <span class='id identifier rubyid_visited'>visited</span><span class='rparen'>)</span>
1750
+ <span class='kw'>if</span> <span class='id identifier rubyid_unifications'>unifications</span>
1751
+ <span class='id identifier rubyid_unifications'>unifications</span>
1752
+ <span class='kw'>else</span>
1753
+ <span class='id identifier rubyid_msg'>msg</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Cannot unify because </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_left'>left</span><span class='period'>.</span><span class='id identifier rubyid_inspect'>inspect</span><span class='embexpr_end'>}</span><span class='tstring_content'> != </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_right'>right</span><span class='period'>.</span><span class='id identifier rubyid_inspect'>inspect</span><span class='embexpr_end'>}</span><span class='tstring_content'> (tail != array)</span><span class='tstring_end'>&quot;</span></span>
1754
+ <span class='id identifier rubyid_goals'>goals</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span><span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_goal'>goal</span><span class='op'>|</span> <span class='id identifier rubyid_goal'>goal</span><span class='period'>.</span><span class='id identifier rubyid_log'>log</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_msg'>msg</span> <span class='rbrace'>}</span>
1755
+ <span class='kw'>nil</span>
1756
+ <span class='kw'>end</span>
1757
+
1319
1758
  <span class='kw'>when</span> <span class='lbracket'>[</span><span class='symbol'>:variable</span><span class='comma'>,</span> <span class='symbol'>:atomic</span><span class='rbracket'>]</span>
1320
1759
  <span class='id identifier rubyid_left_value'>left_value</span> <span class='op'>=</span> <span class='id identifier rubyid_left_goal'>left_goal</span><span class='period'>.</span><span class='id identifier rubyid_value_of'>value_of</span><span class='lparen'>(</span><span class='id identifier rubyid_left'>left</span><span class='comma'>,</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='id identifier rubyid_visited'>visited</span><span class='rparen'>)</span>
1321
1760
  <span class='id identifier rubyid_right_value'>right_value</span> <span class='op'>=</span> <span class='id identifier rubyid_right'>right</span>
@@ -1339,17 +1778,21 @@
1339
1778
  <span class='kw'>end</span>
1340
1779
 
1341
1780
  <span class='kw'>when</span> <span class='lbracket'>[</span><span class='symbol'>:variable</span><span class='comma'>,</span> <span class='symbol'>:variable</span><span class='rbracket'>]</span>
1342
- <span class='id identifier rubyid_left_value'>left_value</span> <span class='op'>=</span> <span class='id identifier rubyid_left_goal'>left_goal</span><span class='period'>.</span><span class='id identifier rubyid_value_of'>value_of</span><span class='lparen'>(</span><span class='id identifier rubyid_left'>left</span><span class='comma'>,</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='id identifier rubyid_visited'>visited</span><span class='rparen'>)</span>
1343
- <span class='id identifier rubyid_right_value'>right_value</span> <span class='op'>=</span> <span class='id identifier rubyid_right_goal'>right_goal</span><span class='period'>.</span><span class='id identifier rubyid_value_of'>value_of</span><span class='lparen'>(</span><span class='id identifier rubyid_right'>right</span><span class='comma'>,</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='id identifier rubyid_visited'>visited</span><span class='rparen'>)</span>
1781
+ <span class='id identifier rubyid_left_value'>left_value</span> <span class='op'>=</span> <span class='id identifier rubyid_left_goal'>left_goal</span><span class='period'>.</span><span class='id identifier rubyid_value_of'>value_of</span><span class='lparen'>(</span><span class='id identifier rubyid_left'>left</span><span class='comma'>,</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='id identifier rubyid_visited'>visited</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_value'>value</span>
1782
+ <span class='id identifier rubyid_right_value'>right_value</span> <span class='op'>=</span> <span class='id identifier rubyid_right_goal'>right_goal</span><span class='period'>.</span><span class='id identifier rubyid_value_of'>value_of</span><span class='lparen'>(</span><span class='id identifier rubyid_right'>right</span><span class='comma'>,</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='id identifier rubyid_visited'>visited</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_value'>value</span>
1344
1783
  <span class='kw'>if</span> <span class='id identifier rubyid_left_value'>left_value</span> <span class='op'>==</span> <span class='id identifier rubyid_right_value'>right_value</span> <span class='op'>||</span> <span class='id identifier rubyid_left_value'>left_value</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="Porolog/Variable.html" title="Porolog::Variable (class)">Variable</a></span></span><span class='rparen'>)</span> <span class='op'>||</span> <span class='id identifier rubyid_right_value'>right_value</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="Porolog/Variable.html" title="Porolog::Variable (class)">Variable</a></span></span><span class='rparen'>)</span> <span class='op'>||</span> <span class='id identifier rubyid_left_value'>left_value</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span> <span class='op'>||</span> <span class='id identifier rubyid_right_value'>right_value</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
1345
1784
  <span class='lbracket'>[</span><span class='lbracket'>[</span><span class='id identifier rubyid_left'>left</span><span class='comma'>,</span> <span class='id identifier rubyid_right'>right</span><span class='comma'>,</span> <span class='id identifier rubyid_left_goal'>left_goal</span><span class='comma'>,</span> <span class='id identifier rubyid_right_goal'>right_goal</span><span class='rbracket'>]</span><span class='rbracket'>]</span>
1785
+ <span class='kw'>elsif</span> <span class='id identifier rubyid_left_value'>left_value</span> <span class='op'>==</span> <span class='const'><span class='object_link'><a href="#UNKNOWN_ARRAY-constant" title="Porolog::UNKNOWN_ARRAY (constant)">UNKNOWN_ARRAY</a></span></span> <span class='op'>&amp;&amp;</span> <span class='lparen'>(</span><span class='id identifier rubyid_right_value'>right_value</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="Porolog/Variable.html" title="Porolog::Variable (class)">Variable</a></span></span><span class='rparen'>)</span> <span class='op'>||</span> <span class='id identifier rubyid_right_value'>right_value</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span> <span class='op'>||</span> <span class='id identifier rubyid_right_value'>right_value</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="Array.html" title="Array (class)">Array</a></span></span><span class='rparen'>)</span><span class='rparen'>)</span>
1786
+ <span class='lbracket'>[</span><span class='lbracket'>[</span><span class='id identifier rubyid_left'>left</span><span class='comma'>,</span> <span class='id identifier rubyid_right'>right</span><span class='comma'>,</span> <span class='id identifier rubyid_left_goal'>left_goal</span><span class='comma'>,</span> <span class='id identifier rubyid_right_goal'>right_goal</span><span class='rbracket'>]</span><span class='rbracket'>]</span>
1787
+ <span class='kw'>elsif</span> <span class='id identifier rubyid_right_value'>right_value</span> <span class='op'>==</span> <span class='const'><span class='object_link'><a href="#UNKNOWN_ARRAY-constant" title="Porolog::UNKNOWN_ARRAY (constant)">UNKNOWN_ARRAY</a></span></span> <span class='op'>&amp;&amp;</span> <span class='lparen'>(</span><span class='id identifier rubyid_left_value'>left_value</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="Porolog/Variable.html" title="Porolog::Variable (class)">Variable</a></span></span><span class='rparen'>)</span> <span class='op'>||</span> <span class='id identifier rubyid_left_value'>left_value</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span> <span class='op'>||</span> <span class='id identifier rubyid_left_value'>left_value</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="Array.html" title="Array (class)">Array</a></span></span><span class='rparen'>)</span><span class='rparen'>)</span>
1788
+ <span class='lbracket'>[</span><span class='lbracket'>[</span><span class='id identifier rubyid_left'>left</span><span class='comma'>,</span> <span class='id identifier rubyid_right'>right</span><span class='comma'>,</span> <span class='id identifier rubyid_left_goal'>left_goal</span><span class='comma'>,</span> <span class='id identifier rubyid_right_goal'>right_goal</span><span class='rbracket'>]</span><span class='rbracket'>]</span>
1346
1789
  <span class='kw'>else</span>
1347
1790
  <span class='id identifier rubyid_msg'>msg</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Cannot unify because </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_left_value'>left_value</span><span class='period'>.</span><span class='id identifier rubyid_inspect'>inspect</span><span class='embexpr_end'>}</span><span class='tstring_content'> != </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_right_value'>right_value</span><span class='period'>.</span><span class='id identifier rubyid_inspect'>inspect</span><span class='embexpr_end'>}</span><span class='tstring_content'> (variable != variable)</span><span class='tstring_end'>&quot;</span></span>
1348
1791
  <span class='id identifier rubyid_goals'>goals</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span><span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_goal'>goal</span><span class='op'>|</span> <span class='id identifier rubyid_goal'>goal</span><span class='period'>.</span><span class='id identifier rubyid_log'>log</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_msg'>msg</span> <span class='rbrace'>}</span>
1349
1792
  <span class='kw'>nil</span>
1350
1793
  <span class='kw'>end</span>
1351
1794
 
1352
- <span class='kw'>when</span> <span class='lbracket'>[</span><span class='symbol'>:variable</span><span class='comma'>,</span> <span class='symbol'>:array</span><span class='rbracket'>]</span>
1795
+ <span class='kw'>when</span> <span class='lbracket'>[</span><span class='symbol'>:variable</span><span class='comma'>,</span> <span class='symbol'>:array</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='lbracket'>[</span><span class='symbol'>:variable</span><span class='comma'>,</span> <span class='symbol'>:tail</span><span class='rbracket'>]</span>
1353
1796
  <span class='id identifier rubyid_left_value'>left_value</span> <span class='op'>=</span> <span class='id identifier rubyid_left_goal'>left_goal</span><span class='period'>.</span><span class='id identifier rubyid_value_of'>value_of</span><span class='lparen'>(</span><span class='id identifier rubyid_left'>left</span><span class='comma'>,</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='id identifier rubyid_visited'>visited</span><span class='rparen'>)</span>
1354
1797
  <span class='id identifier rubyid_right_value'>right_value</span> <span class='op'>=</span> <span class='id identifier rubyid_right'>right</span>
1355
1798
  <span class='kw'>if</span> <span class='id identifier rubyid_left_value'>left_value</span> <span class='op'>==</span> <span class='id identifier rubyid_right_value'>right_value</span> <span class='op'>||</span> <span class='id identifier rubyid_left_value'>left_value</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="Porolog/Variable.html" title="Porolog::Variable (class)">Variable</a></span></span><span class='rparen'>)</span> <span class='op'>||</span> <span class='id identifier rubyid_left_value'>left_value</span> <span class='op'>==</span> <span class='const'><span class='object_link'><a href="#UNKNOWN_ARRAY-constant" title="Porolog::UNKNOWN_ARRAY (constant)">UNKNOWN_ARRAY</a></span></span> <span class='op'>||</span> <span class='id identifier rubyid_left_value'>left_value</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
@@ -1369,7 +1812,7 @@
1369
1812
  <span class='kw'>nil</span>
1370
1813
  <span class='kw'>end</span>
1371
1814
 
1372
- <span class='kw'>when</span> <span class='lbracket'>[</span><span class='symbol'>:array</span><span class='comma'>,</span> <span class='symbol'>:variable</span><span class='rbracket'>]</span>
1815
+ <span class='kw'>when</span> <span class='lbracket'>[</span><span class='symbol'>:array</span><span class='comma'>,</span> <span class='symbol'>:variable</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='lbracket'>[</span><span class='symbol'>:tail</span><span class='comma'>,</span> <span class='symbol'>:variable</span><span class='rbracket'>]</span>
1373
1816
  <span class='id identifier rubyid_left_value'>left_value</span> <span class='op'>=</span> <span class='id identifier rubyid_left'>left</span>
1374
1817
  <span class='id identifier rubyid_right_value'>right_value</span> <span class='op'>=</span> <span class='id identifier rubyid_right_goal'>right_goal</span><span class='period'>.</span><span class='id identifier rubyid_value_of'>value_of</span><span class='lparen'>(</span><span class='id identifier rubyid_right'>right</span><span class='comma'>,</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='id identifier rubyid_visited'>visited</span><span class='rparen'>)</span>
1375
1818
  <span class='kw'>if</span> <span class='id identifier rubyid_left_value'>left_value</span> <span class='op'>==</span> <span class='id identifier rubyid_right_value'>right_value</span> <span class='op'>||</span> <span class='id identifier rubyid_right_value'>right_value</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="Porolog/Variable.html" title="Porolog::Variable (class)">Variable</a></span></span><span class='rparen'>)</span> <span class='op'>||</span> <span class='id identifier rubyid_right_value'>right_value</span> <span class='op'>==</span> <span class='const'><span class='object_link'><a href="#UNKNOWN_ARRAY-constant" title="Porolog::UNKNOWN_ARRAY (constant)">UNKNOWN_ARRAY</a></span></span> <span class='op'>||</span> <span class='id identifier rubyid_right_value'>right_value</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
@@ -1389,8 +1832,8 @@
1389
1832
  <span class='kw'>nil</span>
1390
1833
  <span class='kw'>end</span>
1391
1834
 
1392
- <span class='kw'>when</span> <span class='lbracket'>[</span><span class='symbol'>:array</span><span class='comma'>,</span><span class='symbol'>:atomic</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='lbracket'>[</span><span class='symbol'>:atomic</span><span class='comma'>,</span><span class='symbol'>:array</span><span class='rbracket'>]</span>
1393
- <span class='id identifier rubyid_msg'>msg</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Cannot unify </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_left'>left</span><span class='period'>.</span><span class='id identifier rubyid_inspect'>inspect</span><span class='embexpr_end'>}</span><span class='tstring_content'> with </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_right'>right</span><span class='period'>.</span><span class='id identifier rubyid_inspect'>inspect</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
1835
+ <span class='kw'>when</span> <span class='lbracket'>[</span><span class='symbol'>:array</span><span class='comma'>,</span> <span class='symbol'>:atomic</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='lbracket'>[</span><span class='symbol'>:atomic</span><span class='comma'>,</span> <span class='symbol'>:array</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='lbracket'>[</span><span class='symbol'>:tail</span><span class='comma'>,</span> <span class='symbol'>:atomic</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='lbracket'>[</span><span class='symbol'>:atomic</span><span class='comma'>,</span> <span class='symbol'>:tail</span><span class='rbracket'>]</span>
1836
+ <span class='id identifier rubyid_msg'>msg</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Cannot unify </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_left'>left</span><span class='period'>.</span><span class='id identifier rubyid_inspect'>inspect</span><span class='embexpr_end'>}</span><span class='tstring_content'> with </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_right'>right</span><span class='period'>.</span><span class='id identifier rubyid_inspect'>inspect</span><span class='embexpr_end'>}</span><span class='tstring_content'> (</span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_signature'>signature</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'> != </span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='embexpr_end'>}</span><span class='tstring_content'>)</span><span class='tstring_end'>&quot;</span></span>
1394
1837
  <span class='id identifier rubyid_goals'>goals</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span><span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_goal'>goal</span><span class='op'>|</span> <span class='id identifier rubyid_goal'>goal</span><span class='period'>.</span><span class='id identifier rubyid_log'>log</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_msg'>msg</span> <span class='rbrace'>}</span>
1395
1838
  <span class='kw'>nil</span>
1396
1839
 
@@ -1551,47 +1994,47 @@
1551
1994
  <pre class="lines">
1552
1995
 
1553
1996
 
1554
- 261
1555
- 262
1556
- 263
1557
- 264
1558
- 265
1559
- 266
1560
- 267
1561
- 268
1562
- 269
1563
- 270
1564
- 271
1565
- 272
1566
- 273
1567
- 274
1568
- 275
1569
- 276
1570
- 277
1571
- 278
1572
- 279
1573
- 280
1574
- 281
1575
- 282
1576
- 283
1577
- 284
1578
- 285
1579
- 286
1580
- 287
1581
- 288
1582
- 289</pre>
1997
+ 384
1998
+ 385
1999
+ 386
2000
+ 387
2001
+ 388
2002
+ 389
2003
+ 390
2004
+ 391
2005
+ 392
2006
+ 393
2007
+ 394
2008
+ 395
2009
+ 396
2010
+ 397
2011
+ 398
2012
+ 399
2013
+ 400
2014
+ 401
2015
+ 402
2016
+ 403
2017
+ 404
2018
+ 405
2019
+ 406
2020
+ 407
2021
+ 408
2022
+ 409
2023
+ 410
2024
+ 411
2025
+ 412</pre>
1583
2026
  </td>
1584
2027
  <td>
1585
- <pre class="code"><span class="info file"># File 'lib/porolog.rb', line 261</span>
2028
+ <pre class="code"><span class="info file"># File 'lib/porolog.rb', line 384</span>
1586
2029
 
1587
2030
  <span class='kw'>def</span> <span class='id identifier rubyid_unify_arrays'>unify_arrays</span><span class='lparen'>(</span><span class='id identifier rubyid_left'>left</span><span class='comma'>,</span> <span class='id identifier rubyid_right'>right</span><span class='comma'>,</span> <span class='id identifier rubyid_left_goal'>left_goal</span><span class='comma'>,</span> <span class='id identifier rubyid_right_goal'>right_goal</span> <span class='op'>=</span> <span class='id identifier rubyid_left_goal'>left_goal</span><span class='comma'>,</span> <span class='id identifier rubyid_visited'>visited</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span><span class='rparen'>)</span>
1588
2031
  <span class='id identifier rubyid_arrays'>arrays</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='id identifier rubyid_left'>left</span><span class='comma'>,</span> <span class='id identifier rubyid_right'>right</span><span class='rbracket'>]</span>
1589
2032
  <span class='id identifier rubyid_arrays_goals'>arrays_goals</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='id identifier rubyid_left_goal'>left_goal</span><span class='comma'>,</span> <span class='id identifier rubyid_right_goal'>right_goal</span><span class='rbracket'>]</span>
1590
- <span class='id identifier rubyid_arrays_values'>arrays_values</span> <span class='op'>=</span> <span class='id identifier rubyid_arrays'>arrays</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='symbol'>:value</span><span class='rparen'>)</span>
2033
+ <span class='id identifier rubyid_arrays_values'>arrays_values</span> <span class='op'>=</span> <span class='id identifier rubyid_arrays'>arrays</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_array'>array</span><span class='op'>|</span> <span class='id identifier rubyid_array'>array</span><span class='period'>.</span><span class='id identifier rubyid_value'>value</span><span class='lparen'>(</span><span class='id identifier rubyid_visited'>visited</span><span class='rparen'>)</span> <span class='rbrace'>}</span>
1591
2034
 
1592
2035
  <span class='comment'># -- Trivial Unifications --
1593
- </span> <span class='kw'>return</span> <span class='lbracket'>[</span><span class='id identifier rubyid_left_goal'>left_goal</span><span class='period'>.</span> <span class='id identifier rubyid_variablise'>variablise</span><span class='lparen'>(</span><span class='id identifier rubyid_left'>left</span><span class='rparen'>)</span><span class='comma'>,</span> <span class='lbracket'>[</span><span class='rbracket'>]</span><span class='rbracket'>]</span> <span class='kw'>if</span> <span class='id identifier rubyid_right'>right</span> <span class='op'>==</span> <span class='const'><span class='object_link'><a href="#UNKNOWN_ARRAY-constant" title="Porolog::UNKNOWN_ARRAY (constant)">UNKNOWN_ARRAY</a></span></span>
1594
- <span class='kw'>return</span> <span class='lbracket'>[</span><span class='id identifier rubyid_right_goal'>right_goal</span><span class='period'>.</span><span class='id identifier rubyid_variablise'>variablise</span><span class='lparen'>(</span><span class='id identifier rubyid_right'>right</span><span class='rparen'>)</span><span class='comma'>,</span><span class='lbracket'>[</span><span class='rbracket'>]</span><span class='rbracket'>]</span> <span class='kw'>if</span> <span class='id identifier rubyid_left'>left</span> <span class='op'>==</span> <span class='const'><span class='object_link'><a href="#UNKNOWN_ARRAY-constant" title="Porolog::UNKNOWN_ARRAY (constant)">UNKNOWN_ARRAY</a></span></span>
2036
+ </span> <span class='kw'>return</span> <span class='lbracket'>[</span><span class='id identifier rubyid_left_goal'>left_goal</span><span class='period'>.</span> <span class='id identifier rubyid_variablise'>variablise</span><span class='lparen'>(</span><span class='id identifier rubyid_left'>left</span><span class='rparen'>)</span><span class='comma'>,</span> <span class='lbracket'>[</span><span class='rbracket'>]</span><span class='rbracket'>]</span> <span class='kw'>if</span> <span class='id identifier rubyid_right'>right</span> <span class='op'>==</span> <span class='const'><span class='object_link'><a href="#UNKNOWN_ARRAY-constant" title="Porolog::UNKNOWN_ARRAY (constant)">UNKNOWN_ARRAY</a></span></span>
2037
+ <span class='kw'>return</span> <span class='lbracket'>[</span><span class='id identifier rubyid_right_goal'>right_goal</span><span class='period'>.</span><span class='id identifier rubyid_variablise'>variablise</span><span class='lparen'>(</span><span class='id identifier rubyid_right'>right</span><span class='rparen'>)</span><span class='comma'>,</span> <span class='lbracket'>[</span><span class='rbracket'>]</span><span class='rbracket'>]</span> <span class='kw'>if</span> <span class='id identifier rubyid_left'>left</span> <span class='op'>==</span> <span class='const'><span class='object_link'><a href="#UNKNOWN_ARRAY-constant" title="Porolog::UNKNOWN_ARRAY (constant)">UNKNOWN_ARRAY</a></span></span>
1595
2038
 
1596
2039
  <span class='comment'># -- Validate Arrays --
1597
2040
  </span> <span class='kw'>unless</span> <span class='id identifier rubyid_arrays_values'>arrays_values</span><span class='period'>.</span><span class='id identifier rubyid_all?'>all?</span><span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_array'>array</span><span class='op'>|</span> <span class='id identifier rubyid_array'>array</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="Array.html" title="Array (class)">Array</a></span></span><span class='rparen'>)</span> <span class='op'>||</span> <span class='id identifier rubyid_array'>array</span> <span class='op'>==</span> <span class='const'><span class='object_link'><a href="#UNKNOWN_TAIL-constant" title="Porolog::UNKNOWN_TAIL (constant)">UNKNOWN_TAIL</a></span></span> <span class='rbrace'>}</span>
@@ -1605,7 +2048,7 @@
1605
2048
  <span class='id identifier rubyid_number_of_tails'>number_of_tails</span> <span class='op'>=</span> <span class='id identifier rubyid_arrays'>arrays</span><span class='period'>.</span><span class='id identifier rubyid_count'>count</span><span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_array'>array</span><span class='op'>|</span> <span class='id identifier rubyid_has_tail?'>has_tail?</span><span class='lparen'>(</span><span class='id identifier rubyid_array'>array</span><span class='rparen'>)</span> <span class='rbrace'>}</span>
1606
2049
 
1607
2050
  <span class='comment'># -- Handle Tails --
1608
- </span> <span class='kw'>if</span> <span class='id identifier rubyid_number_of_tails'>number_of_tails</span> <span class='op'>==</span> <span class='int'>0</span>
2051
+ </span> <span class='kw'>if</span> <span class='id identifier rubyid_number_of_tails'>number_of_tails</span><span class='period'>.</span><span class='id identifier rubyid_zero?'>zero?</span>
1609
2052
  <span class='id identifier rubyid_unify_arrays_with_no_tails'>unify_arrays_with_no_tails</span><span class='lparen'>(</span><span class='id identifier rubyid_arrays'>arrays</span><span class='comma'>,</span> <span class='id identifier rubyid_arrays_goals'>arrays_goals</span><span class='comma'>,</span> <span class='id identifier rubyid_visited'>visited</span><span class='rparen'>)</span>
1610
2053
  <span class='kw'>elsif</span> <span class='id identifier rubyid_number_of_tails'>number_of_tails</span> <span class='op'>==</span> <span class='id identifier rubyid_number_of_arrays'>number_of_arrays</span>
1611
2054
  <span class='id identifier rubyid_unify_arrays_with_all_tails'>unify_arrays_with_all_tails</span><span class='lparen'>(</span><span class='id identifier rubyid_arrays'>arrays</span><span class='comma'>,</span> <span class='id identifier rubyid_arrays_goals'>arrays_goals</span><span class='comma'>,</span> <span class='id identifier rubyid_visited'>visited</span><span class='rparen'>)</span>
@@ -1702,90 +2145,80 @@
1702
2145
  &mdash;
1703
2146
  <div class='inline'>
1704
2147
  <p>the merged Array and the unifications to be instantiated.</p>
1705
- </div>
1706
-
1707
- </li>
1708
-
1709
- <li>
1710
-
1711
-
1712
- <span class='type'>(<tt>nil</tt>)</span>
1713
-
1714
-
1715
-
1716
- &mdash;
1717
- <div class='inline'>
1718
- <p>if the Arrays cannot be unified.</p>
1719
- </div>
1720
-
1721
- </li>
1722
-
1723
- </ul>
1724
-
1725
- </div><table class="source_code">
1726
- <tr>
1727
- <td>
1728
- <pre class="lines">
1729
-
1730
-
1731
- 529
1732
- 530
1733
- 531
1734
- 532
1735
- 533
1736
- 534
1737
- 535
1738
- 536
1739
- 537
1740
- 538
1741
- 539
1742
- 540
1743
- 541
1744
- 542
1745
- 543
1746
- 544
1747
- 545
1748
- 546
1749
- 547
1750
- 548
1751
- 549
1752
- 550
1753
- 551
1754
- 552
1755
- 553
1756
- 554
1757
- 555
1758
- 556
1759
- 557
1760
- 558
1761
- 559
1762
- 560
1763
- 561
1764
- 562
1765
- 563
1766
- 564
1767
- 565
1768
- 566
1769
- 567
1770
- 568
1771
- 569
1772
- 570
1773
- 571
1774
- 572</pre>
2148
+ </div>
2149
+
2150
+ </li>
2151
+
2152
+ <li>
2153
+
2154
+
2155
+ <span class='type'>(<tt>nil</tt>)</span>
2156
+
2157
+
2158
+
2159
+ &mdash;
2160
+ <div class='inline'>
2161
+ <p>if the Arrays cannot be unified.</p>
2162
+ </div>
2163
+
2164
+ </li>
2165
+
2166
+ </ul>
2167
+
2168
+ </div><table class="source_code">
2169
+ <tr>
2170
+ <td>
2171
+ <pre class="lines">
2172
+
2173
+
2174
+ 656
2175
+ 657
2176
+ 658
2177
+ 659
2178
+ 660
2179
+ 661
2180
+ 662
2181
+ 663
2182
+ 664
2183
+ 665
2184
+ 666
2185
+ 667
2186
+ 668
2187
+ 669
2188
+ 670
2189
+ 671
2190
+ 672
2191
+ 673
2192
+ 674
2193
+ 675
2194
+ 676
2195
+ 677
2196
+ 678
2197
+ 679
2198
+ 680
2199
+ 681
2200
+ 682
2201
+ 683
2202
+ 684
2203
+ 685
2204
+ 686
2205
+ 687
2206
+ 688
2207
+ 689
2208
+ 690
2209
+ 691
2210
+ 692
2211
+ 693
2212
+ 694</pre>
1775
2213
  </td>
1776
2214
  <td>
1777
- <pre class="code"><span class="info file"># File 'lib/porolog.rb', line 529</span>
2215
+ <pre class="code"><span class="info file"># File 'lib/porolog.rb', line 656</span>
1778
2216
 
1779
2217
  <span class='kw'>def</span> <span class='id identifier rubyid_unify_arrays_with_all_tails'>unify_arrays_with_all_tails</span><span class='lparen'>(</span><span class='id identifier rubyid_arrays'>arrays</span><span class='comma'>,</span> <span class='id identifier rubyid_arrays_goals'>arrays_goals</span><span class='comma'>,</span> <span class='id identifier rubyid_visited'>visited</span><span class='rparen'>)</span>
1780
- <span class='id identifier rubyid_unifications'>unifications</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
1781
- <span class='id identifier rubyid_merged'>merged</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
1782
-
1783
2218
  <span class='comment'># -- All tails --
1784
- </span> <span class='id identifier rubyid_signature'>signature</span> <span class='op'>=</span> <span class='id identifier rubyid_arrays'>arrays</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='symbol'>:headtail?</span><span class='rparen'>)</span>
1785
- <span class='id identifier rubyid_arrays'>arrays</span> <span class='op'>=</span> <span class='id identifier rubyid_arrays'>arrays</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_array'>array</span><span class='op'>|</span>
2219
+ </span> <span class='id identifier rubyid_arrays'>arrays</span> <span class='op'>=</span> <span class='id identifier rubyid_arrays'>arrays</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_array'>array</span><span class='op'>|</span>
1786
2220
  <span class='id identifier rubyid_expand_splat'>expand_splat</span><span class='lparen'>(</span><span class='id identifier rubyid_array'>array</span><span class='period'>.</span><span class='id identifier rubyid_headtail?'>headtail?</span> <span class='op'>?</span> <span class='id identifier rubyid_array'>array</span> <span class='op'>:</span> <span class='id identifier rubyid_array'>array</span><span class='period'>.</span><span class='id identifier rubyid_value'>value</span><span class='rparen'>)</span>
1787
2221
  <span class='rbrace'>}</span>
1788
- <span class='id identifier rubyid_signature'>signature</span> <span class='op'>=</span> <span class='id identifier rubyid_arrays'>arrays</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='symbol'>:headtail?</span><span class='rparen'>)</span>
1789
2222
 
1790
2223
  <span class='comment'># -- Unify Embedded Arrays --
1791
2224
  </span> <span class='kw'>if</span> <span class='id identifier rubyid_arrays'>arrays</span><span class='period'>.</span><span class='id identifier rubyid_any?'>any?</span><span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_array'>array</span><span class='op'>|</span> <span class='id identifier rubyid_array'>array</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>==</span> <span class='symbol'>:variable</span> <span class='rbrace'>}</span>
@@ -1815,9 +2248,9 @@
1815
2248
  <span class='kw'>end</span>
1816
2249
 
1817
2250
  <span class='kw'>if</span> <span class='id identifier rubyid_unifications'>unifications</span>
1818
- <span class='kw'>return</span> <span class='lbracket'>[</span><span class='id identifier rubyid_merged'>merged</span><span class='comma'>,</span> <span class='id identifier rubyid_unifications'>unifications</span><span class='rbracket'>]</span>
2251
+ <span class='lbracket'>[</span><span class='id identifier rubyid_merged'>merged</span><span class='comma'>,</span> <span class='id identifier rubyid_unifications'>unifications</span><span class='rbracket'>]</span>
1819
2252
  <span class='kw'>else</span>
1820
- <span class='kw'>return</span> <span class='kw'>nil</span>
2253
+ <span class='kw'>nil</span>
1821
2254
  <span class='kw'>end</span>
1822
2255
  <span class='kw'>end</span></pre>
1823
2256
  </td>
@@ -1935,131 +2368,6 @@
1935
2368
  <pre class="lines">
1936
2369
 
1937
2370
 
1938
- 361
1939
- 362
1940
- 363
1941
- 364
1942
- 365
1943
- 366
1944
- 367
1945
- 368
1946
- 369
1947
- 370
1948
- 371
1949
- 372
1950
- 373
1951
- 374
1952
- 375
1953
- 376
1954
- 377
1955
- 378
1956
- 379
1957
- 380
1958
- 381
1959
- 382
1960
- 383
1961
- 384
1962
- 385
1963
- 386
1964
- 387
1965
- 388
1966
- 389
1967
- 390
1968
- 391
1969
- 392
1970
- 393
1971
- 394
1972
- 395
1973
- 396
1974
- 397
1975
- 398
1976
- 399
1977
- 400
1978
- 401
1979
- 402
1980
- 403
1981
- 404
1982
- 405
1983
- 406
1984
- 407
1985
- 408
1986
- 409
1987
- 410
1988
- 411
1989
- 412
1990
- 413
1991
- 414
1992
- 415
1993
- 416
1994
- 417
1995
- 418
1996
- 419
1997
- 420
1998
- 421
1999
- 422
2000
- 423
2001
- 424
2002
- 425
2003
- 426
2004
- 427
2005
- 428
2006
- 429
2007
- 430
2008
- 431
2009
- 432
2010
- 433
2011
- 434
2012
- 435
2013
- 436
2014
- 437
2015
- 438
2016
- 439
2017
- 440
2018
- 441
2019
- 442
2020
- 443
2021
- 444
2022
- 445
2023
- 446
2024
- 447
2025
- 448
2026
- 449
2027
- 450
2028
- 451
2029
- 452
2030
- 453
2031
- 454
2032
- 455
2033
- 456
2034
- 457
2035
- 458
2036
- 459
2037
- 460
2038
- 461
2039
- 462
2040
- 463
2041
- 464
2042
- 465
2043
- 466
2044
- 467
2045
- 468
2046
- 469
2047
- 470
2048
- 471
2049
- 472
2050
- 473
2051
- 474
2052
- 475
2053
- 476
2054
- 477
2055
- 478
2056
- 479
2057
- 480
2058
- 481
2059
- 482
2060
- 483
2061
- 484
2062
- 485
2063
2371
  486
2064
2372
  487
2065
2373
  488
@@ -2095,10 +2403,137 @@
2095
2403
  518
2096
2404
  519
2097
2405
  520
2098
- 521</pre>
2406
+ 521
2407
+ 522
2408
+ 523
2409
+ 524
2410
+ 525
2411
+ 526
2412
+ 527
2413
+ 528
2414
+ 529
2415
+ 530
2416
+ 531
2417
+ 532
2418
+ 533
2419
+ 534
2420
+ 535
2421
+ 536
2422
+ 537
2423
+ 538
2424
+ 539
2425
+ 540
2426
+ 541
2427
+ 542
2428
+ 543
2429
+ 544
2430
+ 545
2431
+ 546
2432
+ 547
2433
+ 548
2434
+ 549
2435
+ 550
2436
+ 551
2437
+ 552
2438
+ 553
2439
+ 554
2440
+ 555
2441
+ 556
2442
+ 557
2443
+ 558
2444
+ 559
2445
+ 560
2446
+ 561
2447
+ 562
2448
+ 563
2449
+ 564
2450
+ 565
2451
+ 566
2452
+ 567
2453
+ 568
2454
+ 569
2455
+ 570
2456
+ 571
2457
+ 572
2458
+ 573
2459
+ 574
2460
+ 575
2461
+ 576
2462
+ 577
2463
+ 578
2464
+ 579
2465
+ 580
2466
+ 581
2467
+ 582
2468
+ 583
2469
+ 584
2470
+ 585
2471
+ 586
2472
+ 587
2473
+ 588
2474
+ 589
2475
+ 590
2476
+ 591
2477
+ 592
2478
+ 593
2479
+ 594
2480
+ 595
2481
+ 596
2482
+ 597
2483
+ 598
2484
+ 599
2485
+ 600
2486
+ 601
2487
+ 602
2488
+ 603
2489
+ 604
2490
+ 605
2491
+ 606
2492
+ 607
2493
+ 608
2494
+ 609
2495
+ 610
2496
+ 611
2497
+ 612
2498
+ 613
2499
+ 614
2500
+ 615
2501
+ 616
2502
+ 617
2503
+ 618
2504
+ 619
2505
+ 620
2506
+ 621
2507
+ 622
2508
+ 623
2509
+ 624
2510
+ 625
2511
+ 626
2512
+ 627
2513
+ 628
2514
+ 629
2515
+ 630
2516
+ 631
2517
+ 632
2518
+ 633
2519
+ 634
2520
+ 635
2521
+ 636
2522
+ 637
2523
+ 638
2524
+ 639
2525
+ 640
2526
+ 641
2527
+ 642
2528
+ 643
2529
+ 644
2530
+ 645
2531
+ 646
2532
+ 647
2533
+ 648</pre>
2099
2534
  </td>
2100
2535
  <td>
2101
- <pre class="code"><span class="info file"># File 'lib/porolog.rb', line 361</span>
2536
+ <pre class="code"><span class="info file"># File 'lib/porolog.rb', line 486</span>
2102
2537
 
2103
2538
  <span class='kw'>def</span> <span class='id identifier rubyid_unify_arrays_with_no_tails'>unify_arrays_with_no_tails</span><span class='lparen'>(</span><span class='id identifier rubyid_arrays'>arrays</span><span class='comma'>,</span> <span class='id identifier rubyid_arrays_goals'>arrays_goals</span><span class='comma'>,</span> <span class='id identifier rubyid_visited'>visited</span><span class='rparen'>)</span>
2104
2539
  <span class='comment'># -- Validate Arrays --
@@ -2125,12 +2560,14 @@
2125
2560
 
2126
2561
  <span class='kw'>if</span> <span class='id identifier rubyid_arrays_goals'>arrays_goals</span><span class='lbracket'>[</span><span class='id identifier rubyid_index'>index</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
2127
2562
  <span class='id identifier rubyid_value_with_goal'>value_with_goal</span> <span class='op'>=</span> <span class='id identifier rubyid_array'>array</span><span class='period'>.</span><span class='id identifier rubyid_find'>find</span><span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_element'>element</span><span class='op'>|</span> <span class='id identifier rubyid_element'>element</span><span class='period'>.</span><span class='id identifier rubyid_respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='symbol'>:goal</span><span class='rparen'>)</span> <span class='rbrace'>}</span>
2128
- <span class='id identifier rubyid_arrays_goals'>arrays_goals</span><span class='lbracket'>[</span><span class='id identifier rubyid_index'>index</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_value_with_goal'>value_with_goal</span><span class='period'>.</span><span class='id identifier rubyid_goal'>goal</span> <span class='kw'>if</span> <span class='id identifier rubyid_value_with_goal'>value_with_goal</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_value_with_goal'>value_with_goal</span><span class='period'>.</span><span class='id identifier rubyid_goal'>goal</span>
2563
+ <span class='id identifier rubyid_arrays_goals'>arrays_goals</span><span class='lbracket'>[</span><span class='id identifier rubyid_index'>index</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_value_with_goal'>value_with_goal</span><span class='period'>.</span><span class='id identifier rubyid_goal'>goal</span> <span class='kw'>if</span> <span class='id identifier rubyid_value_with_goal'>value_with_goal</span><span class='op'>&amp;.</span><span class='id identifier rubyid_goal'>goal</span>
2129
2564
  <span class='kw'>end</span>
2130
2565
 
2131
2566
  <span class='kw'>if</span> <span class='id identifier rubyid_arrays_goals'>arrays_goals</span><span class='lbracket'>[</span><span class='id identifier rubyid_index'>index</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
2132
- <span class='id identifier rubyid_raise'>raise</span> <span class='const'><span class='object_link'><a href="Porolog/NoGoalError.html" title="Porolog::NoGoalError (class)">NoGoalError</a></span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Array </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_array'>array</span><span class='period'>.</span><span class='id identifier rubyid_inspect'>inspect</span><span class='embexpr_end'>}</span><span class='tstring_content'> has no goal for unification</span><span class='tstring_end'>&quot;</span></span>
2133
- <span class='kw'>end</span>
2567
+ <span class='comment'># :nocov:
2568
+ </span> <span class='id identifier rubyid_raise'>raise</span> <span class='const'><span class='object_link'><a href="Porolog/NoGoalError.html" title="Porolog::NoGoalError (class)">NoGoalError</a></span></span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Array </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_array'>array</span><span class='period'>.</span><span class='id identifier rubyid_inspect'>inspect</span><span class='embexpr_end'>}</span><span class='tstring_content'> has no goal for unification</span><span class='tstring_end'>&quot;</span></span>
2569
+ <span class='comment'># :nocov:
2570
+ </span> <span class='kw'>end</span>
2134
2571
 
2135
2572
  <span class='id identifier rubyid_arrays_values'>arrays_values</span><span class='lbracket'>[</span><span class='id identifier rubyid_index'>index</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='id identifier rubyid_expand_splat'>expand_splat</span><span class='lparen'>(</span><span class='id identifier rubyid_arrays_values'>arrays_values</span><span class='lbracket'>[</span><span class='id identifier rubyid_index'>index</span><span class='rbracket'>]</span><span class='rparen'>)</span>
2136
2573
  <span class='kw'>end</span>
@@ -2145,10 +2582,10 @@
2145
2582
 
2146
2583
  <span class='comment'># -- Remap Arrays so that they are variablised and valuised with their Goals --
2147
2584
  </span> <span class='id identifier rubyid_new_arrays'>new_arrays</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
2148
- <span class='id identifier rubyid_arrays_variables'>arrays_variables</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_goal'>goal</span><span class='comma'>,</span><span class='id identifier rubyid_variables'>variables</span><span class='op'>|</span>
2585
+ <span class='id identifier rubyid_arrays_variables'>arrays_variables</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_goal'>goal</span><span class='comma'>,</span> <span class='id identifier rubyid_variables'>variables</span><span class='op'>|</span>
2149
2586
  <span class='id identifier rubyid_new_array'>new_array</span> <span class='op'>=</span> <span class='id identifier rubyid_variables'>variables</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_variable'>variable</span><span class='op'>|</span>
2150
2587
  <span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='id identifier rubyid_goal'>goal</span><span class='period'>.</span><span class='id identifier rubyid_value_of'>value_of</span><span class='lparen'>(</span><span class='id identifier rubyid_variable'>variable</span><span class='comma'>,</span> <span class='kw'>nil</span><span class='comma'>,</span> <span class='id identifier rubyid_visited'>visited</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_value'>value</span>
2151
- <span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='id identifier rubyid_variable'>variable</span> <span class='kw'>if</span> <span class='id identifier rubyid_value'>value</span> <span class='op'>==</span> <span class='const'><span class='object_link'><a href="#UNKNOWN_TAIL-constant" title="Porolog::UNKNOWN_TAIL (constant)">UNKNOWN_TAIL</a></span></span> <span class='op'>||</span> <span class='id identifier rubyid_value'>value</span> <span class='op'>==</span> <span class='const'><span class='object_link'><a href="#UNKNOWN_ARRAY-constant" title="Porolog::UNKNOWN_ARRAY (constant)">UNKNOWN_ARRAY</a></span></span>
2588
+ <span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='id identifier rubyid_variable'>variable</span> <span class='kw'>if</span> <span class='lbracket'>[</span><span class='const'><span class='object_link'><a href="#UNKNOWN_TAIL-constant" title="Porolog::UNKNOWN_TAIL (constant)">UNKNOWN_TAIL</a></span></span><span class='comma'>,</span> <span class='const'><span class='object_link'><a href="#UNKNOWN_ARRAY-constant" title="Porolog::UNKNOWN_ARRAY (constant)">UNKNOWN_ARRAY</a></span></span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='rparen'>)</span>
2152
2589
 
2153
2590
  <span class='kw'>if</span> <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>==</span> <span class='symbol'>:variable</span>
2154
2591
  <span class='id identifier rubyid_value'>value</span> <span class='op'>=</span> <span class='id identifier rubyid_goal'>goal</span><span class='period'>.</span><span class='id identifier rubyid_variable'>variable</span><span class='lparen'>(</span><span class='id identifier rubyid_value'>value</span><span class='rparen'>)</span>
@@ -2182,10 +2619,10 @@
2182
2619
  <span class='id identifier rubyid_merged'>merged</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span>
2183
2620
 
2184
2621
  <span class='comment'># TODO: Change these names
2185
- </span> <span class='id identifier rubyid_zipped'>zipped</span><span class='period'>.</span><span class='id identifier rubyid_each_with_index'>each_with_index</span><span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_values_to_unify'>values_to_unify</span><span class='comma'>,</span> <span class='id identifier rubyid_index'>index</span><span class='op'>|</span>
2622
+ </span> <span class='id identifier rubyid_zipped'>zipped</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span><span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_values_to_unify'>values_to_unify</span><span class='op'>|</span>
2186
2623
  <span class='id identifier rubyid_values_to_unify_values'>values_to_unify_values</span> <span class='op'>=</span> <span class='id identifier rubyid_values_to_unify'>values_to_unify</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_value'>value</span><span class='op'>|</span>
2187
2624
  <span class='id identifier rubyid_value_value'>value_value</span> <span class='op'>=</span> <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_value'>value</span>
2188
- <span class='kw'>if</span> <span class='id identifier rubyid_value_value'>value_value</span> <span class='op'>==</span> <span class='const'><span class='object_link'><a href="#UNKNOWN_TAIL-constant" title="Porolog::UNKNOWN_TAIL (constant)">UNKNOWN_TAIL</a></span></span> <span class='op'>||</span> <span class='id identifier rubyid_value_value'>value_value</span> <span class='op'>==</span> <span class='const'><span class='object_link'><a href="#UNKNOWN_ARRAY-constant" title="Porolog::UNKNOWN_ARRAY (constant)">UNKNOWN_ARRAY</a></span></span>
2625
+ <span class='kw'>if</span> <span class='lbracket'>[</span><span class='const'><span class='object_link'><a href="#UNKNOWN_TAIL-constant" title="Porolog::UNKNOWN_TAIL (constant)">UNKNOWN_TAIL</a></span></span><span class='comma'>,</span> <span class='const'><span class='object_link'><a href="#UNKNOWN_ARRAY-constant" title="Porolog::UNKNOWN_ARRAY (constant)">UNKNOWN_ARRAY</a></span></span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='id identifier rubyid_value_value'>value_value</span><span class='rparen'>)</span>
2189
2626
  <span class='id identifier rubyid_value'>value</span>
2190
2627
  <span class='kw'>else</span>
2191
2628
  <span class='id identifier rubyid_value_value'>value_value</span>
@@ -2376,128 +2813,127 @@
2376
2813
  <pre class="lines">
2377
2814
 
2378
2815
 
2379
- 927
2380
- 928
2381
- 929
2382
- 930
2383
- 931
2384
- 932
2385
- 933
2386
- 934
2387
- 935
2388
- 936
2389
- 937
2390
- 938
2391
- 939
2392
- 940
2393
- 941
2394
- 942
2395
- 943
2396
- 944
2397
- 945
2398
- 946
2399
- 947
2400
- 948
2401
- 949
2402
- 950
2403
- 951
2404
- 952
2405
- 953
2406
- 954
2407
- 955
2408
- 956
2409
- 957
2410
- 958
2411
- 959
2412
- 960
2413
- 961
2414
- 962
2415
- 963
2416
- 964
2417
- 965
2418
- 966
2419
- 967
2420
- 968
2421
- 969
2422
- 970
2423
- 971
2424
- 972
2425
- 973
2426
- 974
2427
- 975
2428
- 976
2429
- 977
2430
- 978
2431
- 979
2432
- 980
2433
- 981
2434
- 982
2435
- 983
2436
- 984
2437
- 985
2438
- 986
2439
- 987
2440
- 988
2441
- 989
2442
- 990
2443
- 991
2444
- 992
2445
- 993
2446
- 994
2447
- 995
2448
- 996
2449
- 997
2450
- 998
2451
- 999
2452
- 1000
2453
- 1001
2454
- 1002
2455
- 1003
2456
- 1004
2457
- 1005
2458
- 1006
2459
- 1007
2460
- 1008
2461
- 1009
2462
- 1010
2463
- 1011
2464
- 1012
2465
- 1013
2466
- 1014
2467
- 1015
2468
- 1016
2469
- 1017
2470
- 1018
2471
- 1019
2472
- 1020
2473
- 1021
2474
- 1022
2475
- 1023
2476
- 1024
2477
- 1025
2478
- 1026
2479
- 1027
2480
- 1028
2481
- 1029
2482
- 1030
2483
- 1031
2484
- 1032
2485
- 1033
2486
- 1034
2487
- 1035
2488
- 1036
2489
- 1037
2490
- 1038
2491
- 1039
2492
- 1040
2493
- 1041
2494
- 1042
2495
- 1043
2496
- 1044
2497
- 1045</pre>
2816
+ 1051
2817
+ 1052
2818
+ 1053
2819
+ 1054
2820
+ 1055
2821
+ 1056
2822
+ 1057
2823
+ 1058
2824
+ 1059
2825
+ 1060
2826
+ 1061
2827
+ 1062
2828
+ 1063
2829
+ 1064
2830
+ 1065
2831
+ 1066
2832
+ 1067
2833
+ 1068
2834
+ 1069
2835
+ 1070
2836
+ 1071
2837
+ 1072
2838
+ 1073
2839
+ 1074
2840
+ 1075
2841
+ 1076
2842
+ 1077
2843
+ 1078
2844
+ 1079
2845
+ 1080
2846
+ 1081
2847
+ 1082
2848
+ 1083
2849
+ 1084
2850
+ 1085
2851
+ 1086
2852
+ 1087
2853
+ 1088
2854
+ 1089
2855
+ 1090
2856
+ 1091
2857
+ 1092
2858
+ 1093
2859
+ 1094
2860
+ 1095
2861
+ 1096
2862
+ 1097
2863
+ 1098
2864
+ 1099
2865
+ 1100
2866
+ 1101
2867
+ 1102
2868
+ 1103
2869
+ 1104
2870
+ 1105
2871
+ 1106
2872
+ 1107
2873
+ 1108
2874
+ 1109
2875
+ 1110
2876
+ 1111
2877
+ 1112
2878
+ 1113
2879
+ 1114
2880
+ 1115
2881
+ 1116
2882
+ 1117
2883
+ 1118
2884
+ 1119
2885
+ 1120
2886
+ 1121
2887
+ 1122
2888
+ 1123
2889
+ 1124
2890
+ 1125
2891
+ 1126
2892
+ 1127
2893
+ 1128
2894
+ 1129
2895
+ 1130
2896
+ 1131
2897
+ 1132
2898
+ 1133
2899
+ 1134
2900
+ 1135
2901
+ 1136
2902
+ 1137
2903
+ 1138
2904
+ 1139
2905
+ 1140
2906
+ 1141
2907
+ 1142
2908
+ 1143
2909
+ 1144
2910
+ 1145
2911
+ 1146
2912
+ 1147
2913
+ 1148
2914
+ 1149
2915
+ 1150
2916
+ 1151
2917
+ 1152
2918
+ 1153
2919
+ 1154
2920
+ 1155
2921
+ 1156
2922
+ 1157
2923
+ 1158
2924
+ 1159
2925
+ 1160
2926
+ 1161
2927
+ 1162
2928
+ 1163
2929
+ 1164
2930
+ 1165
2931
+ 1166
2932
+ 1167
2933
+ 1168</pre>
2498
2934
  </td>
2499
2935
  <td>
2500
- <pre class="code"><span class="info file"># File 'lib/porolog.rb', line 927</span>
2936
+ <pre class="code"><span class="info file"># File 'lib/porolog.rb', line 1051</span>
2501
2937
 
2502
2938
  <span class='kw'>def</span> <span class='id identifier rubyid_unify_arrays_with_some_tails'>unify_arrays_with_some_tails</span><span class='lparen'>(</span><span class='id identifier rubyid_arrays'>arrays</span><span class='comma'>,</span> <span class='id identifier rubyid_arrays_goals'>arrays_goals</span><span class='comma'>,</span> <span class='id identifier rubyid_visited'>visited</span><span class='rparen'>)</span>
2503
2939
  <span class='comment'># -- Variablise Arrays --
@@ -2506,7 +2942,7 @@
2506
2942
  <span class='id identifier rubyid_goal'>goal</span> <span class='op'>=</span> <span class='id identifier rubyid_array'>array</span><span class='period'>.</span><span class='id identifier rubyid_goal'>goal</span> <span class='kw'>if</span> <span class='id identifier rubyid_array'>array</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="Porolog/Value.html" title="Porolog::Value (class)">Value</a></span></span><span class='rparen'>)</span>
2507
2943
  <span class='kw'>if</span> <span class='id identifier rubyid_goal'>goal</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_array'>array</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="Array.html" title="Array (class)">Array</a></span></span><span class='rparen'>)</span>
2508
2944
  <span class='id identifier rubyid_v'>v</span> <span class='op'>=</span> <span class='id identifier rubyid_array'>array</span><span class='period'>.</span><span class='id identifier rubyid_find'>find</span><span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_element'>element</span><span class='op'>|</span> <span class='id identifier rubyid_element'>element</span><span class='period'>.</span><span class='id identifier rubyid_respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='symbol'>:goal</span><span class='rparen'>)</span> <span class='rbrace'>}</span>
2509
- <span class='id identifier rubyid_goal'>goal</span> <span class='op'>=</span> <span class='id identifier rubyid_v'>v</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_v'>v</span><span class='period'>.</span><span class='id identifier rubyid_goal'>goal</span>
2945
+ <span class='id identifier rubyid_goal'>goal</span> <span class='op'>=</span> <span class='id identifier rubyid_v'>v</span><span class='op'>&amp;.</span><span class='id identifier rubyid_goal'>goal</span>
2510
2946
  <span class='kw'>end</span>
2511
2947
  <span class='kw'>end</span>
2512
2948
  <span class='id identifier rubyid_goal'>goal</span> <span class='op'>=</span> <span class='id identifier rubyid_arrays_goals'>arrays_goals</span><span class='period'>.</span><span class='id identifier rubyid_compact'>compact</span><span class='period'>.</span><span class='id identifier rubyid_last'>last</span> <span class='kw'>if</span> <span class='id identifier rubyid_goal'>goal</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
@@ -2576,7 +3012,6 @@
2576
3012
  <span class='id identifier rubyid_value_values'>value_values</span> <span class='op'>=</span> <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='symbol'>:value</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_compact'>compact</span><span class='period'>.</span><span class='id identifier rubyid_uniq'>uniq</span>
2577
3013
  <span class='kw'>if</span> <span class='id identifier rubyid_value_values'>value_values</span><span class='period'>.</span><span class='id identifier rubyid_size'>size</span> <span class='op'>&lt;=</span> <span class='int'>1</span>
2578
3014
  <span class='id identifier rubyid_m'>m</span> <span class='op'>=</span> <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span><span class='period'>.</span><span class='id identifier rubyid_value'>value</span>
2579
- <span class='id identifier rubyid_m'>m</span> <span class='op'>=</span> <span class='kw'>nil</span> <span class='kw'>if</span> <span class='id identifier rubyid_m'>m</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>==</span> <span class='symbol'>:variable</span>
2580
3015
  <span class='id identifier rubyid_merged'>merged</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_m'>m</span>
2581
3016
  <span class='kw'>else</span>
2582
3017
  <span class='kw'>if</span> <span class='id identifier rubyid_values'>values</span><span class='period'>.</span><span class='id identifier rubyid_variables'>variables</span><span class='period'>.</span><span class='id identifier rubyid_empty?'>empty?</span>
@@ -2589,7 +3024,6 @@
2589
3024
  <span class='id identifier rubyid__variables'>_variables</span><span class='comma'>,</span> <span class='id identifier rubyid_nonvariables'>nonvariables</span> <span class='op'>=</span> <span class='id identifier rubyid_values'>values</span><span class='period'>.</span><span class='id identifier rubyid_reject'>reject</span><span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_v'>v</span><span class='op'>|</span> <span class='id identifier rubyid_v'>v</span><span class='period'>.</span><span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span> <span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_partition'>partition</span><span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_element'>element</span><span class='op'>|</span> <span class='id identifier rubyid_element'>element</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>==</span> <span class='symbol'>:variable</span> <span class='rbrace'>}</span>
2590
3025
  <span class='kw'>if</span> <span class='id identifier rubyid_nonvariables'>nonvariables</span><span class='period'>.</span><span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_uniq'>uniq</span><span class='period'>.</span><span class='id identifier rubyid_size'>size</span> <span class='op'>&lt;=</span> <span class='int'>1</span>
2591
3026
  <span class='id identifier rubyid_m'>m</span> <span class='op'>=</span> <span class='id identifier rubyid_nonvariables'>nonvariables</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span><span class='period'>.</span><span class='id identifier rubyid_value'>value</span>
2592
- <span class='id identifier rubyid_m'>m</span> <span class='op'>=</span> <span class='kw'>nil</span> <span class='kw'>if</span> <span class='id identifier rubyid_m'>m</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span> <span class='op'>==</span> <span class='symbol'>:variable</span>
2593
3027
  <span class='id identifier rubyid_merged'>merged</span> <span class='op'>&lt;&lt;</span> <span class='id identifier rubyid_m'>m</span>
2594
3028
 
2595
3029
  <span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_combination'>combination</span><span class='lparen'>(</span><span class='int'>2</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_vl'>vl</span><span class='comma'>,</span> <span class='id identifier rubyid_vr'>vr</span><span class='op'>|</span>
@@ -2610,7 +3044,8 @@
2610
3044
  <span class='kw'>end</span>
2611
3045
  <span class='rbrace'>}</span>
2612
3046
 
2613
- <span class='id identifier rubyid_tails'>tails</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_head_size'>head_size</span><span class='comma'>,</span><span class='id identifier rubyid_tail'>tail</span><span class='comma'>,</span><span class='id identifier rubyid_goal'>goal</span><span class='op'>|</span>
3047
+ <span class='comment'># -- Unify Tails --
3048
+ </span> <span class='id identifier rubyid_tails'>tails</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_head_size'>head_size</span><span class='comma'>,</span><span class='id identifier rubyid_tail'>tail</span><span class='comma'>,</span><span class='id identifier rubyid_goal'>goal</span><span class='op'>|</span>
2614
3049
  <span class='kw'>next</span> <span class='kw'>if</span> <span class='id identifier rubyid_tail'>tail</span> <span class='op'>==</span> <span class='const'><span class='object_link'><a href="#UNKNOWN_TAIL-constant" title="Porolog::UNKNOWN_TAIL (constant)">UNKNOWN_TAIL</a></span></span>
2615
3050
  <span class='id identifier rubyid_merged_goals'>merged_goals</span> <span class='op'>=</span> <span class='id identifier rubyid_arrays_goals'>arrays_goals</span> <span class='op'>-</span> <span class='lbracket'>[</span><span class='id identifier rubyid_goal'>goal</span><span class='rbracket'>]</span> <span class='op'>+</span> <span class='lbracket'>[</span><span class='id identifier rubyid_goal'>goal</span><span class='rbracket'>]</span>
2616
3051
  <span class='id identifier rubyid_unifications'>unifications</span> <span class='op'>&lt;&lt;</span> <span class='lbracket'>[</span><span class='id identifier rubyid_tail'>tail</span><span class='period'>.</span><span class='id identifier rubyid_value'>value</span><span class='lparen'>(</span><span class='id identifier rubyid_visited'>visited</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_value'>value</span><span class='lparen'>(</span><span class='id identifier rubyid_visited'>visited</span><span class='rparen'>)</span><span class='comma'>,</span> <span class='id identifier rubyid_merged'>merged</span><span class='lbracket'>[</span><span class='id identifier rubyid_head_size'>head_size</span><span class='op'>..</span><span class='op'>-</span><span class='int'>1</span><span class='rbracket'>]</span><span class='comma'>,</span> <span class='id identifier rubyid_goal'>goal</span><span class='comma'>,</span> <span class='id identifier rubyid_merged_goals'>merged_goals</span><span class='period'>.</span><span class='id identifier rubyid_compact'>compact</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span><span class='rbracket'>]</span>
@@ -2626,7 +3061,7 @@
2626
3061
  <div class="method_details ">
2627
3062
  <h3 class="signature " id="unify_goals-instance_method">
2628
3063
 
2629
- #<strong>unify_goals</strong>(goal, subgoal) &#x21d2; <tt>Boolean</tt>
3064
+ #<strong>unify_goals</strong>(goal, subgoal) &#x21d2; <tt><span class='object_link'><a href="Array.html" title="Array (class)">Array</a></span>&lt;<span class='object_link'><a href="Porolog/Instantiation.html" title="Porolog::Instantiation (class)">Porolog::Instantiation</a></span>&gt;</tt>, ...
2630
3065
 
2631
3066
 
2632
3067
 
@@ -2684,13 +3119,41 @@
2684
3119
  <li>
2685
3120
 
2686
3121
 
2687
- <span class='type'>(<tt>Boolean</tt>)</span>
3122
+ <span class='type'>(<tt><span class='object_link'><a href="Array.html" title="Array (class)">Array</a></span>&lt;<span class='object_link'><a href="Porolog/Instantiation.html" title="Porolog::Instantiation (class)">Porolog::Instantiation</a></span>&gt;</tt>)</span>
3123
+
3124
+
3125
+
3126
+ &mdash;
3127
+ <div class='inline'>
3128
+ <p>the instantiations if the goals can be unified and instantiated.</p>
3129
+ </div>
3130
+
3131
+ </li>
3132
+
3133
+ <li>
3134
+
3135
+
3136
+ <span class='type'>(<tt>false</tt>)</span>
3137
+
3138
+
3139
+
3140
+ &mdash;
3141
+ <div class='inline'>
3142
+ <p>if they cannot be unified.</p>
3143
+ </div>
3144
+
3145
+ </li>
3146
+
3147
+ <li>
3148
+
3149
+
3150
+ <span class='type'>(<tt>nil</tt>)</span>
2688
3151
 
2689
3152
 
2690
3153
 
2691
3154
  &mdash;
2692
3155
  <div class='inline'>
2693
- <p>whether the Goals can be unified.</p>
3156
+ <p>if they can be unified but the instantiations are inconsistent.</p>
2694
3157
  </div>
2695
3158
 
2696
3159
  </li>
@@ -2703,27 +3166,27 @@
2703
3166
  <pre class="lines">
2704
3167
 
2705
3168
 
2706
- 67
2707
- 68
2708
- 69
2709
- 70
2710
- 71
2711
- 72
2712
- 73
2713
- 74
2714
- 75
2715
- 76
2716
- 77
2717
- 78
2718
- 79
2719
- 80
2720
- 81
2721
- 82
2722
- 83
2723
- 84</pre>
3169
+ 142
3170
+ 143
3171
+ 144
3172
+ 145
3173
+ 146
3174
+ 147
3175
+ 148
3176
+ 149
3177
+ 150
3178
+ 151
3179
+ 152
3180
+ 153
3181
+ 154
3182
+ 155
3183
+ 156
3184
+ 157
3185
+ 158
3186
+ 159</pre>
2724
3187
  </td>
2725
3188
  <td>
2726
- <pre class="code"><span class="info file"># File 'lib/porolog.rb', line 67</span>
3189
+ <pre class="code"><span class="info file"># File 'lib/porolog.rb', line 142</span>
2727
3190
 
2728
3191
  <span class='kw'>def</span> <span class='id identifier rubyid_unify_goals'>unify_goals</span><span class='lparen'>(</span><span class='id identifier rubyid_goal'>goal</span><span class='comma'>,</span> <span class='id identifier rubyid_subgoal'>subgoal</span><span class='rparen'>)</span>
2729
3192
  <span class='kw'>if</span> <span class='id identifier rubyid_goal'>goal</span><span class='period'>.</span><span class='id identifier rubyid_arguments'>arguments</span><span class='period'>.</span><span class='id identifier rubyid_predicate'>predicate</span> <span class='op'>==</span> <span class='id identifier rubyid_subgoal'>subgoal</span><span class='period'>.</span><span class='id identifier rubyid_arguments'>arguments</span><span class='period'>.</span><span class='id identifier rubyid_predicate'>predicate</span>
@@ -2827,94 +3290,94 @@
2827
3290
 
2828
3291
  <span class='type'>(<tt><span class='object_link'><a href="Array.html" title="Array (class)">Array</a></span>&lt;<span class='object_link'><a href="Array.html" title="Array (class)">Array</a></span>, <span class='object_link'><a href="Array.html" title="Array (class)">Array</a></span>&gt;</tt>)</span>
2829
3292
 
2830
-
2831
-
2832
- &mdash;
2833
- <div class='inline'>
2834
- <p>the merged Array and the unifications to be instantiated.</p>
2835
- </div>
2836
-
2837
- </li>
2838
-
2839
- <li>
2840
-
2841
-
2842
- <span class='type'>(<tt>nil</tt>)</span>
2843
-
2844
-
2845
-
2846
- &mdash;
2847
- <div class='inline'>
2848
- <p>if the Arrays cannot be unified.</p>
2849
- </div>
2850
-
2851
- </li>
2852
-
2853
- </ul>
2854
-
2855
- </div><table class="source_code">
2856
- <tr>
2857
- <td>
2858
- <pre class="lines">
2859
-
2860
-
2861
- 866
2862
- 867
2863
- 868
2864
- 869
2865
- 870
2866
- 871
2867
- 872
2868
- 873
2869
- 874
2870
- 875
2871
- 876
2872
- 877
2873
- 878
2874
- 879
2875
- 880
2876
- 881
2877
- 882
2878
- 883
2879
- 884
2880
- 885
2881
- 886
2882
- 887
2883
- 888
2884
- 889
2885
- 890
2886
- 891
2887
- 892
2888
- 893
2889
- 894
2890
- 895
2891
- 896
2892
- 897
2893
- 898
2894
- 899
2895
- 900
2896
- 901
2897
- 902
2898
- 903
2899
- 904
2900
- 905
2901
- 906
2902
- 907
2903
- 908
2904
- 909
2905
- 910
2906
- 911
2907
- 912
2908
- 913
2909
- 914
2910
- 915
2911
- 916
2912
- 917
2913
- 918
2914
- 919</pre>
3293
+
3294
+
3295
+ &mdash;
3296
+ <div class='inline'>
3297
+ <p>the merged Array and the unifications to be instantiated.</p>
3298
+ </div>
3299
+
3300
+ </li>
3301
+
3302
+ <li>
3303
+
3304
+
3305
+ <span class='type'>(<tt>nil</tt>)</span>
3306
+
3307
+
3308
+
3309
+ &mdash;
3310
+ <div class='inline'>
3311
+ <p>if the Arrays cannot be unified.</p>
3312
+ </div>
3313
+
3314
+ </li>
3315
+
3316
+ </ul>
3317
+
3318
+ </div><table class="source_code">
3319
+ <tr>
3320
+ <td>
3321
+ <pre class="lines">
3322
+
3323
+
3324
+ 990
3325
+ 991
3326
+ 992
3327
+ 993
3328
+ 994
3329
+ 995
3330
+ 996
3331
+ 997
3332
+ 998
3333
+ 999
3334
+ 1000
3335
+ 1001
3336
+ 1002
3337
+ 1003
3338
+ 1004
3339
+ 1005
3340
+ 1006
3341
+ 1007
3342
+ 1008
3343
+ 1009
3344
+ 1010
3345
+ 1011
3346
+ 1012
3347
+ 1013
3348
+ 1014
3349
+ 1015
3350
+ 1016
3351
+ 1017
3352
+ 1018
3353
+ 1019
3354
+ 1020
3355
+ 1021
3356
+ 1022
3357
+ 1023
3358
+ 1024
3359
+ 1025
3360
+ 1026
3361
+ 1027
3362
+ 1028
3363
+ 1029
3364
+ 1030
3365
+ 1031
3366
+ 1032
3367
+ 1033
3368
+ 1034
3369
+ 1035
3370
+ 1036
3371
+ 1037
3372
+ 1038
3373
+ 1039
3374
+ 1040
3375
+ 1041
3376
+ 1042
3377
+ 1043</pre>
2915
3378
  </td>
2916
3379
  <td>
2917
- <pre class="code"><span class="info file"># File 'lib/porolog.rb', line 866</span>
3380
+ <pre class="code"><span class="info file"># File 'lib/porolog.rb', line 990</span>
2918
3381
 
2919
3382
  <span class='kw'>def</span> <span class='id identifier rubyid_unify_headtail_with_headtail'>unify_headtail_with_headtail</span><span class='lparen'>(</span><span class='id identifier rubyid_arrays'>arrays</span><span class='comma'>,</span> <span class='id identifier rubyid_arrays_goals'>arrays_goals</span><span class='comma'>,</span> <span class='id identifier rubyid_visited'>visited</span><span class='rparen'>)</span>
2920
3383
  <span class='kw'>unless</span> <span class='id identifier rubyid_arrays'>arrays</span><span class='period'>.</span><span class='id identifier rubyid_all?'>all?</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='symbol'>:headtail?</span><span class='rparen'>)</span>
@@ -3085,126 +3548,6 @@
3085
3548
  <pre class="lines">
3086
3549
 
3087
3550
 
3088
- 670
3089
- 671
3090
- 672
3091
- 673
3092
- 674
3093
- 675
3094
- 676
3095
- 677
3096
- 678
3097
- 679
3098
- 680
3099
- 681
3100
- 682
3101
- 683
3102
- 684
3103
- 685
3104
- 686
3105
- 687
3106
- 688
3107
- 689
3108
- 690
3109
- 691
3110
- 692
3111
- 693
3112
- 694
3113
- 695
3114
- 696
3115
- 697
3116
- 698
3117
- 699
3118
- 700
3119
- 701
3120
- 702
3121
- 703
3122
- 704
3123
- 705
3124
- 706
3125
- 707
3126
- 708
3127
- 709
3128
- 710
3129
- 711
3130
- 712
3131
- 713
3132
- 714
3133
- 715
3134
- 716
3135
- 717
3136
- 718
3137
- 719
3138
- 720
3139
- 721
3140
- 722
3141
- 723
3142
- 724
3143
- 725
3144
- 726
3145
- 727
3146
- 728
3147
- 729
3148
- 730
3149
- 731
3150
- 732
3151
- 733
3152
- 734
3153
- 735
3154
- 736
3155
- 737
3156
- 738
3157
- 739
3158
- 740
3159
- 741
3160
- 742
3161
- 743
3162
- 744
3163
- 745
3164
- 746
3165
- 747
3166
- 748
3167
- 749
3168
- 750
3169
- 751
3170
- 752
3171
- 753
3172
- 754
3173
- 755
3174
- 756
3175
- 757
3176
- 758
3177
- 759
3178
- 760
3179
- 761
3180
- 762
3181
- 763
3182
- 764
3183
- 765
3184
- 766
3185
- 767
3186
- 768
3187
- 769
3188
- 770
3189
- 771
3190
- 772
3191
- 773
3192
- 774
3193
- 775
3194
- 776
3195
- 777
3196
- 778
3197
- 779
3198
- 780
3199
- 781
3200
- 782
3201
- 783
3202
- 784
3203
- 785
3204
- 786
3205
- 787
3206
- 788
3207
- 789
3208
3551
  790
3209
3552
  791
3210
3553
  792
@@ -3273,10 +3616,134 @@
3273
3616
  855
3274
3617
  856
3275
3618
  857
3276
- 858</pre>
3619
+ 858
3620
+ 859
3621
+ 860
3622
+ 861
3623
+ 862
3624
+ 863
3625
+ 864
3626
+ 865
3627
+ 866
3628
+ 867
3629
+ 868
3630
+ 869
3631
+ 870
3632
+ 871
3633
+ 872
3634
+ 873
3635
+ 874
3636
+ 875
3637
+ 876
3638
+ 877
3639
+ 878
3640
+ 879
3641
+ 880
3642
+ 881
3643
+ 882
3644
+ 883
3645
+ 884
3646
+ 885
3647
+ 886
3648
+ 887
3649
+ 888
3650
+ 889
3651
+ 890
3652
+ 891
3653
+ 892
3654
+ 893
3655
+ 894
3656
+ 895
3657
+ 896
3658
+ 897
3659
+ 898
3660
+ 899
3661
+ 900
3662
+ 901
3663
+ 902
3664
+ 903
3665
+ 904
3666
+ 905
3667
+ 906
3668
+ 907
3669
+ 908
3670
+ 909
3671
+ 910
3672
+ 911
3673
+ 912
3674
+ 913
3675
+ 914
3676
+ 915
3677
+ 916
3678
+ 917
3679
+ 918
3680
+ 919
3681
+ 920
3682
+ 921
3683
+ 922
3684
+ 923
3685
+ 924
3686
+ 925
3687
+ 926
3688
+ 927
3689
+ 928
3690
+ 929
3691
+ 930
3692
+ 931
3693
+ 932
3694
+ 933
3695
+ 934
3696
+ 935
3697
+ 936
3698
+ 937
3699
+ 938
3700
+ 939
3701
+ 940
3702
+ 941
3703
+ 942
3704
+ 943
3705
+ 944
3706
+ 945
3707
+ 946
3708
+ 947
3709
+ 948
3710
+ 949
3711
+ 950
3712
+ 951
3713
+ 952
3714
+ 953
3715
+ 954
3716
+ 955
3717
+ 956
3718
+ 957
3719
+ 958
3720
+ 959
3721
+ 960
3722
+ 961
3723
+ 962
3724
+ 963
3725
+ 964
3726
+ 965
3727
+ 966
3728
+ 967
3729
+ 968
3730
+ 969
3731
+ 970
3732
+ 971
3733
+ 972
3734
+ 973
3735
+ 974
3736
+ 975
3737
+ 976
3738
+ 977
3739
+ 978
3740
+ 979
3741
+ 980
3742
+ 981
3743
+ 982</pre>
3277
3744
  </td>
3278
3745
  <td>
3279
- <pre class="code"><span class="info file"># File 'lib/porolog.rb', line 670</span>
3746
+ <pre class="code"><span class="info file"># File 'lib/porolog.rb', line 790</span>
3280
3747
 
3281
3748
  <span class='kw'>def</span> <span class='id identifier rubyid_unify_headtail_with_tail'>unify_headtail_with_tail</span><span class='lparen'>(</span><span class='id identifier rubyid_arrays'>arrays</span><span class='comma'>,</span> <span class='id identifier rubyid_arrays_goals'>arrays_goals</span><span class='comma'>,</span> <span class='id identifier rubyid_visited'>visited</span><span class='rparen'>)</span>
3282
3749
  <span class='comment'># -- Validate Arrays --
@@ -3293,19 +3760,23 @@
3293
3760
 
3294
3761
  <span class='comment'># -- Variablise Arrays --
3295
3762
  </span> <span class='id identifier rubyid_arrays'>arrays</span> <span class='op'>=</span> <span class='id identifier rubyid_arrays_goals'>arrays_goals</span><span class='period'>.</span><span class='id identifier rubyid_zip'>zip</span><span class='lparen'>(</span><span class='id identifier rubyid_arrays'>arrays</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_goal'>goal</span><span class='comma'>,</span> <span class='id identifier rubyid_array'>array</span><span class='op'>|</span>
3296
- <span class='id identifier rubyid_goal'>goal</span><span class='period'>.</span><span class='id identifier rubyid_variablise'>variablise</span><span class='lparen'>(</span><span class='id identifier rubyid_array'>array</span><span class='rparen'>)</span>
3763
+ <span class='kw'>if</span> <span class='id identifier rubyid_array'>array</span> <span class='op'>==</span> <span class='const'><span class='object_link'><a href="#UNKNOWN_ARRAY-constant" title="Porolog::UNKNOWN_ARRAY (constant)">UNKNOWN_ARRAY</a></span></span>
3764
+ <span class='id identifier rubyid_array'>array</span>
3765
+ <span class='kw'>else</span>
3766
+ <span class='id identifier rubyid_goal'>goal</span><span class='period'>.</span><span class='id identifier rubyid_variablise'>variablise</span><span class='lparen'>(</span><span class='id identifier rubyid_array'>array</span><span class='rparen'>)</span>
3767
+ <span class='kw'>end</span>
3297
3768
  <span class='kw'>end</span>
3298
3769
 
3299
3770
  <span class='comment'># -- Determine the fixed length (if any) --
3300
3771
  </span> <span class='id identifier rubyid_fixed_length'>fixed_length</span> <span class='op'>=</span> <span class='kw'>nil</span>
3301
3772
  <span class='id identifier rubyid_arrays'>arrays</span><span class='period'>.</span><span class='id identifier rubyid_each'>each</span> <span class='kw'>do</span> <span class='op'>|</span><span class='id identifier rubyid_array'>array</span><span class='op'>|</span>
3302
- <span class='kw'>unless</span> <span class='id identifier rubyid_has_tail?'>has_tail?</span><span class='lparen'>(</span><span class='id identifier rubyid_array'>array</span><span class='rparen'>)</span>
3303
- <span class='id identifier rubyid_array_length'>array_length</span> <span class='op'>=</span> <span class='id identifier rubyid_array'>array</span><span class='period'>.</span><span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_size'>size</span>
3304
- <span class='id identifier rubyid_fixed_length'>fixed_length</span> <span class='op'>||=</span> <span class='id identifier rubyid_array_length'>array_length</span>
3305
- <span class='kw'>unless</span> <span class='id identifier rubyid_fixed_length'>fixed_length</span> <span class='op'>==</span> <span class='id identifier rubyid_array_length'>array_length</span>
3306
- <span class='id identifier rubyid_array'>array</span><span class='period'>.</span><span class='id identifier rubyid_goal'>goal</span><span class='period'>.</span><span class='id identifier rubyid_log'>log</span> <span class='op'>&lt;&lt;</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Cannot unify </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_array'>array</span><span class='period'>.</span><span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_inspect'>inspect</span><span class='embexpr_end'>}</span><span class='tstring_content'> because it has a different length from </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_fixed_length'>fixed_length</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
3307
- <span class='kw'>return</span> <span class='kw'>nil</span>
3308
- <span class='kw'>end</span>
3773
+ <span class='kw'>next</span> <span class='kw'>if</span> <span class='id identifier rubyid_has_tail?'>has_tail?</span><span class='lparen'>(</span><span class='id identifier rubyid_array'>array</span><span class='rparen'>)</span>
3774
+
3775
+ <span class='id identifier rubyid_array_length'>array_length</span> <span class='op'>=</span> <span class='id identifier rubyid_array'>array</span><span class='period'>.</span><span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_size'>size</span>
3776
+ <span class='id identifier rubyid_fixed_length'>fixed_length</span> <span class='op'>||=</span> <span class='id identifier rubyid_array_length'>array_length</span>
3777
+ <span class='kw'>unless</span> <span class='id identifier rubyid_fixed_length'>fixed_length</span> <span class='op'>==</span> <span class='id identifier rubyid_array_length'>array_length</span>
3778
+ <span class='id identifier rubyid_array'>array</span><span class='period'>.</span><span class='id identifier rubyid_goal'>goal</span><span class='period'>.</span><span class='id identifier rubyid_log'>log</span> <span class='op'>&lt;&lt;</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Cannot unify </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_array'>array</span><span class='period'>.</span><span class='id identifier rubyid_value'>value</span><span class='period'>.</span><span class='id identifier rubyid_inspect'>inspect</span><span class='embexpr_end'>}</span><span class='tstring_content'> because it has a different length from </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_fixed_length'>fixed_length</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
3779
+ <span class='kw'>return</span> <span class='kw'>nil</span>
3309
3780
  <span class='kw'>end</span>
3310
3781
  <span class='kw'>end</span>
3311
3782
 
@@ -3314,7 +3785,7 @@
3314
3785
 
3315
3786
  <span class='comment'># -- Unify All HeadTail Arrays --
3316
3787
  </span> <span class='kw'>if</span> <span class='id identifier rubyid_headtail_arrays'>headtail_arrays</span><span class='period'>.</span><span class='id identifier rubyid_size'>size</span> <span class='op'>&gt;</span> <span class='int'>1</span>
3317
- <span class='id identifier rubyid_headtail_goals'>headtail_goals</span> <span class='op'>=</span> <span class='id identifier rubyid_headtail_arrays'>headtail_arrays</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_array'>array</span><span class='op'>|</span> <span class='id identifier rubyid_array'>array</span><span class='period'>.</span><span class='id identifier rubyid_goal'>goal</span> <span class='rbrace'>}</span>
3788
+ <span class='id identifier rubyid_headtail_goals'>headtail_goals</span> <span class='op'>=</span> <span class='id identifier rubyid_headtail_arrays'>headtail_arrays</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='symbol'>:goal</span><span class='rparen'>)</span>
3318
3789
  <span class='id identifier rubyid_merged_headtails'>merged_headtails</span><span class='comma'>,</span> <span class='id identifier rubyid_headtail_unifications'>headtail_unifications</span> <span class='op'>=</span> <span class='id identifier rubyid_unify_headtail_with_headtail'>unify_headtail_with_headtail</span><span class='lparen'>(</span><span class='id identifier rubyid_headtail_arrays'>headtail_arrays</span><span class='comma'>,</span> <span class='id identifier rubyid_headtail_goals'>headtail_goals</span><span class='comma'>,</span> <span class='id identifier rubyid_visited'>visited</span><span class='rparen'>)</span>
3319
3790
  <span class='kw'>unless</span> <span class='id identifier rubyid_merged_headtails'>merged_headtails</span>
3320
3791
  <span class='id identifier rubyid_msg'>msg</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Could not unify headtail arrays: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_headtail_arrays'>headtail_arrays</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='symbol'>:value</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='symbol'>:inspect</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'> with </span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
@@ -3335,7 +3806,7 @@
3335
3806
 
3336
3807
  <span class='comment'># -- Unify All Tail Arrays --
3337
3808
  </span> <span class='kw'>if</span> <span class='id identifier rubyid_tail_arrays'>tail_arrays</span><span class='period'>.</span><span class='id identifier rubyid_size'>size</span> <span class='op'>&gt;</span> <span class='int'>1</span>
3338
- <span class='id identifier rubyid_tail_goals'>tail_goals</span> <span class='op'>=</span> <span class='id identifier rubyid_tail_arrays'>tail_arrays</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_array'>array</span><span class='op'>|</span> <span class='id identifier rubyid_array'>array</span><span class='period'>.</span><span class='id identifier rubyid_goal'>goal</span> <span class='rbrace'>}</span>
3809
+ <span class='id identifier rubyid_tail_goals'>tail_goals</span> <span class='op'>=</span> <span class='id identifier rubyid_tail_arrays'>tail_arrays</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='symbol'>:goal</span><span class='rparen'>)</span>
3339
3810
  <span class='id identifier rubyid_merged_tails'>merged_tails</span><span class='comma'>,</span> <span class='id identifier rubyid_tail_unifications'>tail_unifications</span> <span class='op'>=</span> <span class='id identifier rubyid_unify_tail_with_tail'>unify_tail_with_tail</span><span class='lparen'>(</span><span class='id identifier rubyid_tail_arrays'>tail_arrays</span><span class='comma'>,</span> <span class='id identifier rubyid_tail_goals'>tail_goals</span><span class='comma'>,</span> <span class='id identifier rubyid_visited'>visited</span><span class='rparen'>)</span>
3340
3811
  <span class='kw'>return</span> <span class='kw'>nil</span> <span class='kw'>unless</span> <span class='id identifier rubyid_merged_tails'>merged_tails</span>
3341
3812
  <span class='id identifier rubyid_unifications'>unifications</span> <span class='op'>+=</span> <span class='id identifier rubyid_tail_unifications'>tail_unifications</span>
@@ -3423,7 +3894,7 @@
3423
3894
  <span class='kw'>case</span> <span class='id identifier rubyid_element'>element</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span>
3424
3895
  <span class='kw'>when</span> <span class='symbol'>:atomic</span>
3425
3896
  <span class='int'>0</span>
3426
- <span class='kw'>when</span> <span class='symbol'>:array</span>
3897
+ <span class='kw'>when</span> <span class='symbol'>:array</span><span class='comma'>,</span> <span class='symbol'>:tail</span>
3427
3898
  <span class='kw'>if</span> <span class='lbracket'>[</span><span class='const'><span class='object_link'><a href="#UNKNOWN_TAIL-constant" title="Porolog::UNKNOWN_TAIL (constant)">UNKNOWN_TAIL</a></span></span><span class='comma'>,</span> <span class='const'><span class='object_link'><a href="#UNKNOWN_ARRAY-constant" title="Porolog::UNKNOWN_ARRAY (constant)">UNKNOWN_ARRAY</a></span></span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='id identifier rubyid_element'>element</span><span class='rparen'>)</span>
3428
3899
  <span class='int'>3</span>
3429
3900
  <span class='kw'>else</span>
@@ -3584,38 +4055,42 @@
3584
4055
  <pre class="lines">
3585
4056
 
3586
4057
 
3587
- 297
3588
- 298
3589
- 299
3590
- 300
3591
- 301
3592
- 302
3593
- 303
3594
- 304
3595
- 305
3596
- 306
3597
- 307
3598
- 308
3599
- 309
3600
- 310
3601
- 311
3602
- 312
3603
- 313
3604
- 314
3605
- 315
3606
- 316
3607
- 317
3608
- 318
3609
- 319
3610
- 320
3611
- 321
3612
- 322</pre>
4058
+ 420
4059
+ 421
4060
+ 422
4061
+ 423
4062
+ 424
4063
+ 425
4064
+ 426
4065
+ 427
4066
+ 428
4067
+ 429
4068
+ 430
4069
+ 431
4070
+ 432
4071
+ 433
4072
+ 434
4073
+ 435
4074
+ 436
4075
+ 437
4076
+ 438
4077
+ 439
4078
+ 440
4079
+ 441
4080
+ 442
4081
+ 443
4082
+ 444
4083
+ 445
4084
+ 446
4085
+ 447</pre>
3613
4086
  </td>
3614
4087
  <td>
3615
- <pre class="code"><span class="info file"># File 'lib/porolog.rb', line 297</span>
4088
+ <pre class="code"><span class="info file"># File 'lib/porolog.rb', line 420</span>
3616
4089
 
3617
4090
  <span class='kw'>def</span> <span class='id identifier rubyid_unify_many_arrays'>unify_many_arrays</span><span class='lparen'>(</span><span class='id identifier rubyid_arrays'>arrays</span><span class='comma'>,</span> <span class='id identifier rubyid_arrays_goals'>arrays_goals</span><span class='comma'>,</span> <span class='id identifier rubyid_visited'>visited</span> <span class='op'>=</span> <span class='lbracket'>[</span><span class='rbracket'>]</span><span class='rparen'>)</span>
3618
- <span class='id identifier rubyid_arrays_values'>arrays_values</span> <span class='op'>=</span> <span class='id identifier rubyid_arrays'>arrays</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_array'>array</span><span class='op'>|</span> <span class='id identifier rubyid_expand_splat'>expand_splat</span><span class='lparen'>(</span><span class='id identifier rubyid_array'>array</span><span class='rparen'>)</span> <span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_array'>array</span><span class='op'>|</span> <span class='id identifier rubyid_array'>array</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="Array.html" title="Array (class)">Array</a></span></span><span class='rparen'>)</span> <span class='op'>?</span> <span class='id identifier rubyid_array'>array</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_element'>element</span><span class='op'>|</span> <span class='id identifier rubyid_element'>element</span><span class='period'>.</span><span class='id identifier rubyid_value'>value</span> <span class='rbrace'>}</span> <span class='op'>:</span> <span class='id identifier rubyid_array'>array</span><span class='period'>.</span><span class='id identifier rubyid_value'>value</span> <span class='rbrace'>}</span>
4091
+ <span class='id identifier rubyid_arrays_values'>arrays_values</span> <span class='op'>=</span> <span class='id identifier rubyid_arrays'>arrays</span><span class='period'>.</span>
4092
+ <span class='id identifier rubyid_map'>map</span><span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_array'>array</span><span class='op'>|</span> <span class='id identifier rubyid_expand_splat'>expand_splat</span><span class='lparen'>(</span><span class='id identifier rubyid_array'>array</span><span class='rparen'>)</span> <span class='rbrace'>}</span><span class='period'>.</span>
4093
+ <span class='id identifier rubyid_map'>map</span><span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_array'>array</span><span class='op'>|</span> <span class='id identifier rubyid_array'>array</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'><span class='object_link'><a href="Array.html" title="Array (class)">Array</a></span></span><span class='rparen'>)</span> <span class='op'>?</span> <span class='id identifier rubyid_array'>array</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='symbol'>:value</span><span class='rparen'>)</span> <span class='op'>:</span> <span class='id identifier rubyid_array'>array</span><span class='period'>.</span><span class='id identifier rubyid_value'>value</span> <span class='rbrace'>}</span>
3619
4094
 
3620
4095
  <span class='kw'>unless</span> <span class='id identifier rubyid_arrays_values'>arrays_values</span><span class='period'>.</span><span class='id identifier rubyid_all?'>all?</span><span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_array_values'>array_values</span><span class='op'>|</span> <span class='lbracket'>[</span><span class='symbol'>:array</span><span class='comma'>,</span><span class='symbol'>:variable</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_include?'>include?</span><span class='lparen'>(</span><span class='id identifier rubyid_array_values'>array_values</span><span class='period'>.</span><span class='id identifier rubyid_type'>type</span><span class='rparen'>)</span> <span class='rbrace'>}</span>
3621
4096
  <span class='id identifier rubyid_msg'>msg</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Cannot unify: </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_arrays'>arrays</span><span class='period'>.</span><span class='id identifier rubyid_map'>map</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='symbol'>:inspect</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_join'>join</span><span class='lparen'>(</span><span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'> with </span><span class='tstring_end'>&#39;</span></span><span class='rparen'>)</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span>
@@ -3623,7 +4098,7 @@
3623
4098
  <span class='kw'>return</span> <span class='kw'>nil</span>
3624
4099
  <span class='kw'>end</span>
3625
4100
 
3626
- <span class='comment'># TODO: Fix
4101
+ <span class='comment'># TODO: Fix / improve
3627
4102
  </span> <span class='kw'>if</span> <span class='id identifier rubyid_arrays_values'>arrays_values</span><span class='period'>.</span><span class='id identifier rubyid_size'>size</span> <span class='op'>==</span> <span class='int'>2</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_arrays_values'>arrays_values</span><span class='period'>.</span><span class='id identifier rubyid_any?'>any?</span><span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_array'>array</span><span class='op'>|</span> <span class='id identifier rubyid_array'>array</span> <span class='op'>==</span> <span class='const'><span class='object_link'><a href="#UNKNOWN_ARRAY-constant" title="Porolog::UNKNOWN_ARRAY (constant)">UNKNOWN_ARRAY</a></span></span> <span class='rbrace'>}</span>
3628
4103
  <span class='id identifier rubyid_merged'>merged</span> <span class='op'>=</span> <span class='id identifier rubyid_arrays_values'>arrays_values</span><span class='period'>.</span><span class='id identifier rubyid_reject'>reject</span><span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_array'>array</span><span class='op'>|</span> <span class='id identifier rubyid_array'>array</span> <span class='op'>==</span> <span class='const'><span class='object_link'><a href="#UNKNOWN_ARRAY-constant" title="Porolog::UNKNOWN_ARRAY (constant)">UNKNOWN_ARRAY</a></span></span> <span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span>
3629
4104
  <span class='kw'>return</span> <span class='lbracket'>[</span><span class='id identifier rubyid_merged'>merged</span><span class='comma'>,</span><span class='lbracket'>[</span><span class='rbracket'>]</span><span class='rbracket'>]</span>
@@ -3632,7 +4107,7 @@
3632
4107
  <span class='id identifier rubyid_number_of_arrays'>number_of_arrays</span> <span class='op'>=</span> <span class='id identifier rubyid_arrays'>arrays</span><span class='period'>.</span><span class='id identifier rubyid_size'>size</span>
3633
4108
  <span class='id identifier rubyid_number_of_tails'>number_of_tails</span> <span class='op'>=</span> <span class='id identifier rubyid_arrays'>arrays</span><span class='period'>.</span><span class='id identifier rubyid_count'>count</span><span class='lbrace'>{</span><span class='op'>|</span><span class='id identifier rubyid_array'>array</span><span class='op'>|</span> <span class='id identifier rubyid_has_tail?'>has_tail?</span><span class='lparen'>(</span><span class='id identifier rubyid_array'>array</span><span class='rparen'>)</span> <span class='rbrace'>}</span>
3634
4109
 
3635
- <span class='kw'>if</span> <span class='id identifier rubyid_number_of_tails'>number_of_tails</span> <span class='op'>==</span> <span class='int'>0</span>
4110
+ <span class='kw'>if</span> <span class='id identifier rubyid_number_of_tails'>number_of_tails</span><span class='period'>.</span><span class='id identifier rubyid_zero?'>zero?</span>
3636
4111
  <span class='id identifier rubyid_unify_arrays_with_no_tails'>unify_arrays_with_no_tails</span><span class='lparen'>(</span><span class='id identifier rubyid_arrays'>arrays</span><span class='comma'>,</span> <span class='id identifier rubyid_arrays_goals'>arrays_goals</span><span class='comma'>,</span> <span class='id identifier rubyid_visited'>visited</span><span class='rparen'>)</span>
3637
4112
  <span class='kw'>elsif</span> <span class='id identifier rubyid_number_of_tails'>number_of_tails</span> <span class='op'>==</span> <span class='id identifier rubyid_number_of_arrays'>number_of_arrays</span>
3638
4113
  <span class='id identifier rubyid_unify_arrays_with_all_tails'>unify_arrays_with_all_tails</span><span class='lparen'>(</span><span class='id identifier rubyid_arrays'>arrays</span><span class='comma'>,</span> <span class='id identifier rubyid_arrays_goals'>arrays_goals</span><span class='comma'>,</span> <span class='id identifier rubyid_visited'>visited</span><span class='rparen'>)</span>
@@ -3755,92 +4230,90 @@
3755
4230
  <pre class="lines">
3756
4231
 
3757
4232
 
3758
- 580
3759
- 581
3760
- 582
3761
- 583
3762
- 584
3763
- 585
3764
- 586
3765
- 587
3766
- 588
3767
- 589
3768
- 590
3769
- 591
3770
- 592
3771
- 593
3772
- 594
3773
- 595
3774
- 596
3775
- 597
3776
- 598
3777
- 599
3778
- 600
3779
- 601
3780
- 602
3781
- 603
3782
- 604
3783
- 605
3784
- 606
3785
- 607
3786
- 608
3787
- 609
3788
- 610
3789
- 611
3790
- 612
3791
- 613
3792
- 614
3793
- 615
3794
- 616
3795
- 617
3796
- 618
3797
- 619
3798
- 620
3799
- 621
3800
- 622
3801
- 623
3802
- 624
3803
- 625
3804
- 626
3805
- 627
3806
- 628
3807
- 629
3808
- 630
3809
- 631
3810
- 632
3811
- 633
3812
- 634
3813
- 635
3814
- 636
3815
- 637
3816
- 638
3817
- 639
3818
- 640
3819
- 641
3820
- 642
3821
- 643
3822
- 644
3823
- 645
3824
- 646
3825
- 647
3826
- 648
3827
- 649
3828
- 650
3829
- 651
3830
- 652
3831
- 653
3832
- 654
3833
- 655
3834
- 656
3835
- 657
3836
- 658
3837
- 659
3838
- 660
3839
- 661
3840
- 662</pre>
4233
+ 702
4234
+ 703
4235
+ 704
4236
+ 705
4237
+ 706
4238
+ 707
4239
+ 708
4240
+ 709
4241
+ 710
4242
+ 711
4243
+ 712
4244
+ 713
4245
+ 714
4246
+ 715
4247
+ 716
4248
+ 717
4249
+ 718
4250
+ 719
4251
+ 720
4252
+ 721
4253
+ 722
4254
+ 723
4255
+ 724
4256
+ 725
4257
+ 726
4258
+ 727
4259
+ 728
4260
+ 729
4261
+ 730
4262
+ 731
4263
+ 732
4264
+ 733
4265
+ 734
4266
+ 735
4267
+ 736
4268
+ 737
4269
+ 738
4270
+ 739
4271
+ 740
4272
+ 741
4273
+ 742
4274
+ 743
4275
+ 744
4276
+ 745
4277
+ 746
4278
+ 747
4279
+ 748
4280
+ 749
4281
+ 750
4282
+ 751
4283
+ 752
4284
+ 753
4285
+ 754
4286
+ 755
4287
+ 756
4288
+ 757
4289
+ 758
4290
+ 759
4291
+ 760
4292
+ 761
4293
+ 762
4294
+ 763
4295
+ 764
4296
+ 765
4297
+ 766
4298
+ 767
4299
+ 768
4300
+ 769
4301
+ 770
4302
+ 771
4303
+ 772
4304
+ 773
4305
+ 774
4306
+ 775
4307
+ 776
4308
+ 777
4309
+ 778
4310
+ 779
4311
+ 780
4312
+ 781
4313
+ 782</pre>
3841
4314
  </td>
3842
4315
  <td>
3843
- <pre class="code"><span class="info file"># File 'lib/porolog.rb', line 580</span>
4316
+ <pre class="code"><span class="info file"># File 'lib/porolog.rb', line 702</span>
3844
4317
 
3845
4318
  <span class='kw'>def</span> <span class='id identifier rubyid_unify_tail_with_tail'>unify_tail_with_tail</span><span class='lparen'>(</span><span class='id identifier rubyid_arrays'>arrays</span><span class='comma'>,</span> <span class='id identifier rubyid_arrays_goals'>arrays_goals</span><span class='comma'>,</span> <span class='id identifier rubyid_visited'>visited</span><span class='rparen'>)</span>
3846
4319
  <span class='comment'># -- Validate Arrays --
@@ -3880,10 +4353,8 @@
3880
4353
  <span class='id identifier rubyid_first_goal'>first_goal</span> <span class='op'>=</span> <span class='id identifier rubyid_pair'>pair</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span><span class='period'>.</span><span class='id identifier rubyid_goal'>goal</span> <span class='kw'>if</span> <span class='id identifier rubyid_pair'>pair</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span><span class='period'>.</span><span class='id identifier rubyid_respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='symbol'>:goal</span><span class='rparen'>)</span>
3881
4354
  <span class='id identifier rubyid_last_goal'>last_goal</span> <span class='op'>=</span> <span class='id identifier rubyid_pair'>pair</span><span class='period'>.</span><span class='id identifier rubyid_last'>last</span><span class='period'>.</span><span class='id identifier rubyid_goal'>goal</span> <span class='kw'>if</span> <span class='id identifier rubyid_pair'>pair</span><span class='period'>.</span><span class='id identifier rubyid_last'>last</span><span class='period'>.</span><span class='id identifier rubyid_respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='symbol'>:goal</span><span class='rparen'>)</span>
3882
4355
  <span class='id identifier rubyid_m'>m</span><span class='comma'>,</span><span class='id identifier rubyid_u'>u</span> <span class='op'>=</span> <span class='id identifier rubyid_unify_arrays'>unify_arrays</span><span class='lparen'>(</span><span class='id identifier rubyid_first_goal'>first_goal</span><span class='period'>.</span><span class='id identifier rubyid_variablise'>variablise</span><span class='lparen'>(</span><span class='lbracket'>[</span><span class='id identifier rubyid_pair'>pair</span><span class='period'>.</span><span class='id identifier rubyid_first'>first</span><span class='rbracket'>]</span><span class='rparen'>)</span><span class='comma'>,</span> <span class='id identifier rubyid_last_goal'>last_goal</span><span class='period'>.</span><span class='id identifier rubyid_variablise'>variablise</span><span class='lparen'>(</span><span class='lbracket'>[</span><span class='id identifier rubyid_pair'>pair</span><span class='period'>.</span><span class='id identifier rubyid_last'>last</span><span class='rbracket'>]</span><span class='rparen'>)</span><span class='comma'>,</span> <span class='id identifier rubyid_first_goal'>first_goal</span><span class='comma'>,</span> <span class='id identifier rubyid_last_goal'>last_goal</span><span class='comma'>,</span> <span class='id identifier rubyid_visited'>visited</span><span class='rparen'>)</span>
3883
- <span class='kw'>unless</span> <span class='id identifier rubyid_m'>m</span>
3884
- <span class='kw'>return</span> <span class='kw'>nil</span>
3885
- <span class='kw'>end</span>
3886
- <span class='id identifier rubyid_m'>m</span><span class='lbracket'>[</span><span class='op'>-</span><span class='int'>1</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="#UNKNOWN_TAIL-constant" title="Porolog::UNKNOWN_TAIL (constant)">UNKNOWN_TAIL</a></span></span> <span class='kw'>if</span> <span class='id identifier rubyid_m'>m</span><span class='lbracket'>[</span><span class='op'>-</span><span class='int'>1</span><span class='rbracket'>]</span> <span class='op'>==</span> <span class='kw'>nil</span>
4356
+ <span class='kw'>return</span> <span class='kw'>nil</span> <span class='kw'>unless</span> <span class='id identifier rubyid_m'>m</span>
4357
+ <span class='id identifier rubyid_m'>m</span><span class='lbracket'>[</span><span class='op'>-</span><span class='int'>1</span><span class='rbracket'>]</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="#UNKNOWN_TAIL-constant" title="Porolog::UNKNOWN_TAIL (constant)">UNKNOWN_TAIL</a></span></span> <span class='kw'>if</span> <span class='id identifier rubyid_m'>m</span><span class='lbracket'>[</span><span class='op'>-</span><span class='int'>1</span><span class='rbracket'>]</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
3887
4358
  <span class='id identifier rubyid_merged_tails'>merged_tails</span> <span class='op'>+=</span> <span class='id identifier rubyid_m'>m</span>
3888
4359
  <span class='id identifier rubyid_unifications'>unifications</span> <span class='op'>+=</span> <span class='id identifier rubyid_u'>u</span>
3889
4360
  <span class='kw'>end</span>
@@ -3935,7 +4406,7 @@
3935
4406
  </div>
3936
4407
 
3937
4408
  <div id="footer">
3938
- Generated on Mon Jul 6 22:54:45 2020 by
4409
+ Generated on Sun Aug 2 19:24:16 2020 by
3939
4410
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
3940
4411
  0.9.19 (ruby-2.6.5).
3941
4412
  </div>