eyeling 1.5.12 → 1.5.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/README.md +1 -2
  2. package/examples/age.n3 +29 -0
  3. package/examples/backward.n3 +24 -0
  4. package/examples/basic-monadic.n3 +10032 -0
  5. package/examples/cat-koko.n3 +29 -0
  6. package/examples/collect-all-in.n3 +32 -0
  7. package/examples/complex.n3 +142 -0
  8. package/examples/control-system.n3 +77 -0
  9. package/examples/crypto-builtins-tests.n3 +60 -0
  10. package/examples/deep-taxonomy-10.n3 +21 -0
  11. package/examples/deep-taxonomy-100.n3 +111 -0
  12. package/examples/deep-taxonomy-1000.n3 +1011 -0
  13. package/examples/deep-taxonomy-10000.n3 +10011 -0
  14. package/examples/derived-backward-rule-2.n3 +28 -0
  15. package/examples/derived-backward-rule.n3 +32 -0
  16. package/examples/derived-rule.n3 +19 -0
  17. package/examples/dijkstra.n3 +64 -0
  18. package/examples/dog.n3 +21 -0
  19. package/examples/equals.n3 +12 -0
  20. package/examples/existential-rule.n3 +18 -0
  21. package/examples/fibonacci.n3 +34 -0
  22. package/examples/for-all-in.n3 +21 -0
  23. package/examples/french-cities.n3 +32 -0
  24. package/examples/fuse.n3 +13 -0
  25. package/examples/good-cobbler.n3 +18 -0
  26. package/examples/gray-code-counter.n3 +64 -0
  27. package/examples/hanoi.n3 +21 -0
  28. package/examples/liar.n3 +6 -0
  29. package/examples/list-builtins-tests.n3 +84 -0
  30. package/examples/lldm.n3 +133 -0
  31. package/examples/math-builtins-tests.n3 +612 -0
  32. package/examples/monkey.n3 +11 -0
  33. package/examples/output/age.n3 +20 -0
  34. package/examples/output/backward.n3 +18 -0
  35. package/examples/output/basic-monadic.n3 +122 -0
  36. package/examples/output/cat-koko.n3 +125 -0
  37. package/examples/output/collect-all-in.n3 +122 -0
  38. package/examples/output/complex.n3 +57 -0
  39. package/examples/output/control-system.n3 +79 -0
  40. package/examples/output/crypto-builtins-tests.n3 +66 -0
  41. package/examples/output/deep-taxonomy-10.n3 +636 -0
  42. package/examples/output/deep-taxonomy-100.n3 +6036 -0
  43. package/examples/output/deep-taxonomy-1000.n3 +60036 -0
  44. package/examples/output/deep-taxonomy-10000.n3 +600036 -0
  45. package/examples/output/derived-backward-rule-2.n3 +71 -0
  46. package/examples/output/derived-backward-rule.n3 +53 -0
  47. package/examples/output/derived-rule.n3 +52 -0
  48. package/examples/output/dijkstra.n3 +315 -0
  49. package/examples/output/dog.n3 +33 -0
  50. package/examples/output/equals.n3 +18 -0
  51. package/examples/output/existential-rule.n3 +38 -0
  52. package/examples/output/fibonacci.n3 +44 -0
  53. package/examples/output/for-all-in.n3 +30 -0
  54. package/examples/output/french-cities.n3 +507 -0
  55. package/examples/output/fuse.n3 +1 -0
  56. package/examples/output/good-cobbler.n3 +27 -0
  57. package/examples/output/gray-code-counter.n3 +20 -0
  58. package/examples/output/hanoi.n3 +20 -0
  59. package/examples/output/liar.n3 +1 -0
  60. package/examples/output/list-builtins-tests.n3 +148 -0
  61. package/examples/output/lldm.n3 +1000 -0
  62. package/examples/output/math-builtins-tests.n3 +4479 -0
  63. package/examples/output/monkey.n3 +40 -0
  64. package/examples/output/peano.n3 +26 -0
  65. package/examples/output/pi.n3 +20 -0
  66. package/examples/output/polygon.n3 +20 -0
  67. package/examples/output/reordering.n3 +29 -0
  68. package/examples/output/rule-matching.n3 +29 -0
  69. package/examples/output/self-referential.n3 +88 -0
  70. package/examples/output/similar.n3 +18 -0
  71. package/examples/output/skolem.n3 +20 -0
  72. package/examples/output/snaf.n3 +26 -0
  73. package/examples/output/socrates.n3 +24 -0
  74. package/examples/output/string-builtins-tests.n3 +258 -0
  75. package/examples/output/turing.n3 +44 -0
  76. package/examples/output/uri.n3 +46 -0
  77. package/examples/output/witch.n3 +115 -0
  78. package/examples/output/zebra.n3 +114 -0
  79. package/examples/peano.n3 +45 -0
  80. package/examples/pi.n3 +32 -0
  81. package/examples/polygon.n3 +26 -0
  82. package/examples/reordering.n3 +23 -0
  83. package/examples/rule-matching.n3 +15 -0
  84. package/examples/self-referential.n3 +32 -0
  85. package/examples/similar.n3 +28 -0
  86. package/examples/skolem.n3 +15 -0
  87. package/examples/snaf.n3 +18 -0
  88. package/examples/socrates.n3 +19 -0
  89. package/examples/string-builtins-tests.n3 +210 -0
  90. package/examples/test +154 -0
  91. package/examples/turing.n3 +93 -0
  92. package/examples/uri.n3 +17 -0
  93. package/examples/witch.n3 +33 -0
  94. package/examples/zebra.n3 +47 -0
  95. package/package.json +6 -2
  96. package/test/api.test.js +22 -0
@@ -0,0 +1,29 @@
1
+ # --------
2
+ # Cat Koko
3
+ #---------
4
+ #
5
+ # Example from Patrick Hochstenbach
6
+
7
+ @prefix : <https://eyereasoner.github.io/ns#>.
8
+ @prefix log: <http://www.w3.org/2000/10/swap/log#>.
9
+
10
+ :Koko a :Animal.
11
+
12
+ {
13
+ :Koko a :Animal
14
+ }
15
+ =>
16
+ {
17
+ { :Koko a :Animal } => { _:x a :Cat } .
18
+ { :Koko a :Animal } => { _:x a :BritishShortHair } .
19
+ }.
20
+
21
+ {
22
+ ?X a :Cat .
23
+ ?Y a :BritishShortHair .
24
+ ?X log:notEqualTo ?Y.
25
+ }
26
+ =>
27
+ {
28
+ :test :is true .
29
+ }.
@@ -0,0 +1,32 @@
1
+ # ------------------------
2
+ # log:collectAllIn example
3
+ # ------------------------
4
+
5
+ @prefix : <http://example.org/>.
6
+ @prefix log: <http://www.w3.org/2000/10/swap/log#> .
7
+ @prefix string: <http://www.w3.org/2000/10/swap/string#> .
8
+
9
+ :Let :param "Huey" .
10
+ :Let :param "Dewey" .
11
+ :Let :param "Louie" .
12
+
13
+ {
14
+ ( ?param { :Let :param ?param } ?allParams ) log:collectAllIn _:x .
15
+
16
+ # Variable to be collected can also be part of a list or graph term
17
+ ( (?param) { :Let :param ?param } ?nestedParams ) log:collectAllIn _:x .
18
+
19
+ # Add some extra criteria on variable values to be collected
20
+ ( ?param
21
+ {
22
+ :Let :param ?param .
23
+ ?param string:lessThan "Louie" .
24
+ }
25
+ ?filteredParams ) log:collectAllIn _:x .
26
+ }
27
+ =>
28
+ {
29
+ :result1 :is ?allParams .
30
+ :result2 :is ?nestedParams .
31
+ :result3 :is ?filteredParams .
32
+ } .
@@ -0,0 +1,142 @@
1
+ # ---------------
2
+ # Complex numbers
3
+ # ---------------
4
+ #
5
+ # See https://en.wikipedia.org/wiki/Complex_number
6
+
7
+ @prefix math: <http://www.w3.org/2000/10/swap/math#>.
8
+ @prefix log: <http://www.w3.org/2000/10/swap/log#>.
9
+ @prefix complex: <https://eyereasoner.github.io/eye/complex#>.
10
+ @prefix : <http://example.org/#>.
11
+
12
+ {
13
+ ((?A ?B) (?C ?D)) complex:exponentiation (?E ?F).
14
+ } <= {
15
+ (?A ?B) complex:polar (?R ?T).
16
+ (?R ?C) math:exponentiation ?Z1.
17
+ ?D math:negation ?Z2.
18
+ (?Z2 ?T) math:product ?Z3.
19
+ (2.718281828459045 ?Z3) math:exponentiation ?Z4.
20
+ (2.718281828459045 ?Z5) math:exponentiation ?R.
21
+ (?D ?Z5) math:product ?Z6.
22
+ (?C ?T) math:product ?Z7.
23
+ (?Z6 ?Z7) math:sum ?Z8.
24
+ ?Z8 math:cos ?Z9.
25
+ (?Z1 ?Z4 ?Z9) math:product ?E.
26
+ ?Z8 math:sin ?Z10.
27
+ (?Z1 ?Z4 ?Z10) math:product ?F.
28
+ }.
29
+
30
+ {
31
+ (?A ?B) complex:asin (?C ?D).
32
+ } <= {
33
+ (1 ?A) math:sum ?Z1.
34
+ (?Z1 2) math:exponentiation ?Z2.
35
+ (?B 2) math:exponentiation ?Z3.
36
+ (?Z2 ?Z3) math:sum ?Z4.
37
+ (?Z4 0.5) math:exponentiation ?Z5.
38
+ (1 ?A) math:difference ?Z6.
39
+ (?Z6 2) math:exponentiation ?Z7.
40
+ (?Z7 ?Z3) math:sum ?Z8.
41
+ (?Z8 0.5) math:exponentiation ?Z9.
42
+ (?Z5 ?Z9) math:difference ?Z10.
43
+ (?Z10 2) math:quotient ?E.
44
+ (?Z5 ?Z9) math:sum ?Z11.
45
+ (?Z11 2) math:quotient ?F.
46
+ ?E math:asin ?C.
47
+ (?F 2) math:exponentiation ?Z12.
48
+ (?Z12 1) math:difference ?Z13.
49
+ (?Z13 0.5) math:exponentiation ?Z14.
50
+ (?F ?Z14) math:sum ?Z15.
51
+ (2.718281828459045 ?D) math:exponentiation ?Z15.
52
+ }.
53
+
54
+ {
55
+ (?A ?B) complex:acos (?C ?D).
56
+ } <= {
57
+ (1 ?A) math:sum ?Z1.
58
+ (?Z1 2) math:exponentiation ?Z2.
59
+ (?B 2) math:exponentiation ?Z3.
60
+ (?Z2 ?Z3) math:sum ?Z4.
61
+ (?Z4 0.5) math:exponentiation ?Z5.
62
+ (1 ?A) math:difference ?Z6.
63
+ (?Z6 2) math:exponentiation ?Z7.
64
+ (?Z7 ?Z3) math:sum ?Z8.
65
+ (?Z8 0.5) math:exponentiation ?Z9.
66
+ (?Z5 ?Z9) math:difference ?Z10.
67
+ (?Z10 2) math:quotient ?E.
68
+ (?Z5 ?Z9) math:sum ?Z11.
69
+ (?Z11 2) math:quotient ?F.
70
+ ?E math:acos ?C.
71
+ (?F 2) math:exponentiation ?Z12.
72
+ (?Z12 1) math:difference ?Z13.
73
+ (?Z13 0.5) math:exponentiation ?Z14.
74
+ (?F ?Z14) math:sum ?Z15.
75
+ (2.718281828459045 ?U) math:exponentiation ?Z15.
76
+ ?U math:negation ?D.
77
+ }.
78
+
79
+ {
80
+ (?X ?Y) complex:polar(?R ?Tp).
81
+ } <= {
82
+ (?X 2) math:exponentiation ?Z1.
83
+ (?Y 2) math:exponentiation ?Z2.
84
+ (?Z1 ?Z2) math:sum ?Z3.
85
+ (?Z3 0.5) math:exponentiation ?R.
86
+ ?X math:absoluteValue ?Z4.
87
+ (?Z4 ?R) math:quotient ?Z5.
88
+ ?Z5 math:acos ?T.
89
+ (?X ?Y ?T) complex:dial ?Tp.
90
+ }.
91
+
92
+ {
93
+ (?X ?Y ?T) complex:dial ?Tp.
94
+ } <= {
95
+ ?X math:notLessThan 0.
96
+ ?Y math:notLessThan 0.
97
+ (0 ?T) math:sum ?Tp.
98
+ }.
99
+
100
+ {
101
+ (?X ?Y ?T) complex:dial ?Tp.
102
+ } <= {
103
+ ?X math:lessThan 0.
104
+ ?Y math:notLessThan 0.
105
+ (3.141592653589793 ?T) math:difference ?Tp.
106
+ }.
107
+
108
+ {
109
+ (?X ?Y ?T) complex:dial ?Tp.
110
+ } <= {
111
+ ?X math:lessThan 0.
112
+ ?Y math:lessThan 0.
113
+ (3.141592653589793 ?T) math:sum ?Tp.
114
+ }.
115
+
116
+ {
117
+ (?X ?Y ?T) complex:dial ?Tp.
118
+ } <= {
119
+ ?X math:notLessThan 0.
120
+ ?Y math:lessThan 0.
121
+ (3.141592653589793 2) math:product ?Z1.
122
+ (?Z1 ?T) math:difference ?Tp.
123
+ }.
124
+
125
+ # test
126
+ {
127
+ ((-1 0) (0.5 0)) complex:exponentiation ?C1.
128
+ ((2.718281828459045 0) (0 3.141592653589793)) complex:exponentiation ?C2.
129
+ ((0 1) (0 1)) complex:exponentiation ?C3.
130
+ ((2.718281828459045 0) (-1.57079632679 0)) complex:exponentiation ?C4.
131
+ (2 0) complex:asin ?C5.
132
+ (2 0) complex:acos ?C6.
133
+ } => {
134
+ :test :is {
135
+ ((-1 0) (0.5 0)) complex:exponentiation ?C1.
136
+ ((2.718281828459045 0) (0 3.141592653589793)) complex:exponentiation ?C2.
137
+ ((0 1) (0 1)) complex:exponentiation ?C3.
138
+ ((2.718281828459045 0) (-1.57079632679 0)) complex:exponentiation ?C4.
139
+ (2 0) complex:asin ?C5.
140
+ (2 0) complex:acos ?C6.
141
+ }.
142
+ }.
@@ -0,0 +1,77 @@
1
+ # --------------
2
+ # Control System
3
+ # --------------
4
+
5
+ @prefix math: <http://www.w3.org/2000/10/swap/math#>.
6
+ @prefix : <https://eyereasoner.github.io/eye/reasoning/cs#>.
7
+
8
+ # input
9
+ :input1 :measurement1 (6 11).
10
+ :input2 :measurement2 true.
11
+ :input3 :measurement3 56967.
12
+
13
+ # disturbance
14
+ :disturbance1 :measurement3 35766.
15
+ :disturbance2 :measurement1 (45 39).
16
+
17
+ # state
18
+ :state1 :observation1 80.
19
+ :state2 :observation2 false.
20
+ :state3 :observation3 22.
21
+
22
+ # output
23
+ :output2 :measurement4 24.
24
+ :output2 :target2 29.
25
+
26
+ # forward rules
27
+ {
28
+ :input1 :measurement10 ?M1.
29
+ :input2 :measurement2 true.
30
+ :disturbance1 :measurement3 ?D1.
31
+ (?M1 19.6) math:product ?C1. # proportial part
32
+ (10 ?C2) math:exponentiation ?D1. # compensation part
33
+ (?C1 ?C2) math:difference ?C. # simple feedforward control
34
+ }
35
+ =>
36
+ {
37
+ :actuator1 :control1 ?C.
38
+ }.
39
+
40
+ {
41
+ :input3 :measurement3 ?M3.
42
+ :state3 :observation3 ?P3.
43
+ :output2 :measurement4 ?M4.
44
+ :output2 :target2 ?T2.
45
+ (?T2 ?M4) math:difference ?E. # error
46
+ (?P3 ?M4) math:difference ?D. # differential error
47
+ (5.8 ?E) math:product ?C1. # proportial part
48
+ (7.3 ?E) math:quotient ?N. # nonlinear factor
49
+ (?N ?D) math:product ?C2. # nonlinear differential part
50
+ (?C1 ?C2) math:sum ?C. # PND feedback control
51
+ }
52
+ =>
53
+ {
54
+ :actuator2 :control1 ?C.
55
+ }.
56
+
57
+ # backward rules
58
+ {
59
+ ?I :measurement10 ?M.
60
+ }
61
+ <=
62
+ {
63
+ ?I :measurement1 (?M1 ?M2).
64
+ ?M1 math:lessThan ?M2.
65
+ (?M2 ?M1) math:difference ?M3.
66
+ (?M3 0.5) math:exponentiation ?M.
67
+ }.
68
+
69
+ {
70
+ ?I :measurement10 ?M1.
71
+ }
72
+ <=
73
+ {
74
+ ?I :measurement1 (?M1 ?M2).
75
+ ?M1 math:notLessThan ?M2.
76
+ }.
77
+
@@ -0,0 +1,60 @@
1
+ # ---------------------
2
+ # crypto builtins tests
3
+ # ---------------------
4
+
5
+ @prefix : <https://eyereasoner.github.io/ns#> .
6
+ @prefix crypto: <http://www.w3.org/2000/10/swap/crypto#> .
7
+
8
+ # ============================================================
9
+ # 4.1 crypto: builtins
10
+ # plus EYE-style md5 / sha256 / sha512
11
+ # ============================================================
12
+
13
+ # 4.1.1 crypto:sha (SHA-1)
14
+ # "hello world" → 2aae6c35c94fcfb415dbe95f408b9ce91ee846ed
15
+ {
16
+ "hello world" crypto:sha
17
+ "2aae6c35c94fcfb415dbe95f408b9ce91ee846ed" .
18
+ }
19
+ =>
20
+ {
21
+ :ok_crypto_sha_1 a :Pass .
22
+ } .
23
+
24
+ # Extra: crypto:md5
25
+ # "hello world" → 5eb63bbbe01eeed093cb22bb8f5acdc3
26
+ {
27
+ "hello world" crypto:md5
28
+ "5eb63bbbe01eeed093cb22bb8f5acdc3" .
29
+ }
30
+ =>
31
+ {
32
+ :ok_crypto_md5_1 a :Pass .
33
+ } .
34
+
35
+ # Extra: crypto:sha256
36
+ # "hello world" → b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9
37
+ {
38
+ "hello world" crypto:sha256
39
+ "b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9" .
40
+ }
41
+ =>
42
+ {
43
+ :ok_crypto_sha256_1 a :Pass .
44
+ } .
45
+
46
+ # Extra: crypto:sha512
47
+ # "hello world" →
48
+ # 309ecc489c12d6eb4cc40f50c902f2b4
49
+ # d0ed77ee511a7c7a9bcd3ca86d4cd86f
50
+ # 989dd35bc5ff499670da34255b45b0cf
51
+ # d830e81f605dcf7dc5542e93ae9cd76f
52
+ {
53
+ "hello world" crypto:sha512
54
+ "309ecc489c12d6eb4cc40f50c902f2b4d0ed77ee511a7c7a9bcd3ca86d4cd86f989dd35bc5ff499670da34255b45b0cfd830e81f605dcf7dc5542e93ae9cd76f" .
55
+ }
56
+ =>
57
+ {
58
+ :ok_crypto_sha512_1 a :Pass .
59
+ } .
60
+
@@ -0,0 +1,21 @@
1
+ @prefix : <http://eulersharp.sourceforge.net/2009/12dtb/test#>.
2
+
3
+ # fact
4
+ :ind a :N0.
5
+
6
+ # rules
7
+
8
+ {:ind a :A2} => {:test :is true}.
9
+
10
+ {?X a :N0} => {?X a :N1, :I1, :J1}.
11
+ {?X a :N1} => {?X a :N2, :I2, :J2}.
12
+ {?X a :N2} => {?X a :N3, :I3, :J3}.
13
+ {?X a :N3} => {?X a :N4, :I4, :J4}.
14
+ {?X a :N4} => {?X a :N5, :I5, :J5}.
15
+ {?X a :N5} => {?X a :N6, :I6, :J6}.
16
+ {?X a :N6} => {?X a :N7, :I7, :J7}.
17
+ {?X a :N7} => {?X a :N8, :I8, :J8}.
18
+ {?X a :N8} => {?X a :N9, :I9, :J9}.
19
+ {?X a :N9} => {?X a :N10, :I10, :J10}.
20
+
21
+ {?X a :N10} => {?X a :A2}.
@@ -0,0 +1,111 @@
1
+ @prefix : <http://eulersharp.sourceforge.net/2009/12dtb/test#>.
2
+
3
+ # fact
4
+ :ind a :N0.
5
+
6
+ # rules
7
+
8
+ {:ind a :A2} => {:test :is true}.
9
+
10
+ {?X a :N0} => {?X a :N1, :I1, :J1}.
11
+ {?X a :N1} => {?X a :N2, :I2, :J2}.
12
+ {?X a :N2} => {?X a :N3, :I3, :J3}.
13
+ {?X a :N3} => {?X a :N4, :I4, :J4}.
14
+ {?X a :N4} => {?X a :N5, :I5, :J5}.
15
+ {?X a :N5} => {?X a :N6, :I6, :J6}.
16
+ {?X a :N6} => {?X a :N7, :I7, :J7}.
17
+ {?X a :N7} => {?X a :N8, :I8, :J8}.
18
+ {?X a :N8} => {?X a :N9, :I9, :J9}.
19
+ {?X a :N9} => {?X a :N10, :I10, :J10}.
20
+ {?X a :N10} => {?X a :N11, :I11, :J11}.
21
+ {?X a :N11} => {?X a :N12, :I12, :J12}.
22
+ {?X a :N12} => {?X a :N13, :I13, :J13}.
23
+ {?X a :N13} => {?X a :N14, :I14, :J14}.
24
+ {?X a :N14} => {?X a :N15, :I15, :J15}.
25
+ {?X a :N15} => {?X a :N16, :I16, :J16}.
26
+ {?X a :N16} => {?X a :N17, :I17, :J17}.
27
+ {?X a :N17} => {?X a :N18, :I18, :J18}.
28
+ {?X a :N18} => {?X a :N19, :I19, :J19}.
29
+ {?X a :N19} => {?X a :N20, :I20, :J20}.
30
+ {?X a :N20} => {?X a :N21, :I21, :J21}.
31
+ {?X a :N21} => {?X a :N22, :I22, :J22}.
32
+ {?X a :N22} => {?X a :N23, :I23, :J23}.
33
+ {?X a :N23} => {?X a :N24, :I24, :J24}.
34
+ {?X a :N24} => {?X a :N25, :I25, :J25}.
35
+ {?X a :N25} => {?X a :N26, :I26, :J26}.
36
+ {?X a :N26} => {?X a :N27, :I27, :J27}.
37
+ {?X a :N27} => {?X a :N28, :I28, :J28}.
38
+ {?X a :N28} => {?X a :N29, :I29, :J29}.
39
+ {?X a :N29} => {?X a :N30, :I30, :J30}.
40
+ {?X a :N30} => {?X a :N31, :I31, :J31}.
41
+ {?X a :N31} => {?X a :N32, :I32, :J32}.
42
+ {?X a :N32} => {?X a :N33, :I33, :J33}.
43
+ {?X a :N33} => {?X a :N34, :I34, :J34}.
44
+ {?X a :N34} => {?X a :N35, :I35, :J35}.
45
+ {?X a :N35} => {?X a :N36, :I36, :J36}.
46
+ {?X a :N36} => {?X a :N37, :I37, :J37}.
47
+ {?X a :N37} => {?X a :N38, :I38, :J38}.
48
+ {?X a :N38} => {?X a :N39, :I39, :J39}.
49
+ {?X a :N39} => {?X a :N40, :I40, :J40}.
50
+ {?X a :N40} => {?X a :N41, :I41, :J41}.
51
+ {?X a :N41} => {?X a :N42, :I42, :J42}.
52
+ {?X a :N42} => {?X a :N43, :I43, :J43}.
53
+ {?X a :N43} => {?X a :N44, :I44, :J44}.
54
+ {?X a :N44} => {?X a :N45, :I45, :J45}.
55
+ {?X a :N45} => {?X a :N46, :I46, :J46}.
56
+ {?X a :N46} => {?X a :N47, :I47, :J47}.
57
+ {?X a :N47} => {?X a :N48, :I48, :J48}.
58
+ {?X a :N48} => {?X a :N49, :I49, :J49}.
59
+ {?X a :N49} => {?X a :N50, :I50, :J50}.
60
+ {?X a :N50} => {?X a :N51, :I51, :J51}.
61
+ {?X a :N51} => {?X a :N52, :I52, :J52}.
62
+ {?X a :N52} => {?X a :N53, :I53, :J53}.
63
+ {?X a :N53} => {?X a :N54, :I54, :J54}.
64
+ {?X a :N54} => {?X a :N55, :I55, :J55}.
65
+ {?X a :N55} => {?X a :N56, :I56, :J56}.
66
+ {?X a :N56} => {?X a :N57, :I57, :J57}.
67
+ {?X a :N57} => {?X a :N58, :I58, :J58}.
68
+ {?X a :N58} => {?X a :N59, :I59, :J59}.
69
+ {?X a :N59} => {?X a :N60, :I60, :J60}.
70
+ {?X a :N60} => {?X a :N61, :I61, :J61}.
71
+ {?X a :N61} => {?X a :N62, :I62, :J62}.
72
+ {?X a :N62} => {?X a :N63, :I63, :J63}.
73
+ {?X a :N63} => {?X a :N64, :I64, :J64}.
74
+ {?X a :N64} => {?X a :N65, :I65, :J65}.
75
+ {?X a :N65} => {?X a :N66, :I66, :J66}.
76
+ {?X a :N66} => {?X a :N67, :I67, :J67}.
77
+ {?X a :N67} => {?X a :N68, :I68, :J68}.
78
+ {?X a :N68} => {?X a :N69, :I69, :J69}.
79
+ {?X a :N69} => {?X a :N70, :I70, :J70}.
80
+ {?X a :N70} => {?X a :N71, :I71, :J71}.
81
+ {?X a :N71} => {?X a :N72, :I72, :J72}.
82
+ {?X a :N72} => {?X a :N73, :I73, :J73}.
83
+ {?X a :N73} => {?X a :N74, :I74, :J74}.
84
+ {?X a :N74} => {?X a :N75, :I75, :J75}.
85
+ {?X a :N75} => {?X a :N76, :I76, :J76}.
86
+ {?X a :N76} => {?X a :N77, :I77, :J77}.
87
+ {?X a :N77} => {?X a :N78, :I78, :J78}.
88
+ {?X a :N78} => {?X a :N79, :I79, :J79}.
89
+ {?X a :N79} => {?X a :N80, :I80, :J80}.
90
+ {?X a :N80} => {?X a :N81, :I81, :J81}.
91
+ {?X a :N81} => {?X a :N82, :I82, :J82}.
92
+ {?X a :N82} => {?X a :N83, :I83, :J83}.
93
+ {?X a :N83} => {?X a :N84, :I84, :J84}.
94
+ {?X a :N84} => {?X a :N85, :I85, :J85}.
95
+ {?X a :N85} => {?X a :N86, :I86, :J86}.
96
+ {?X a :N86} => {?X a :N87, :I87, :J87}.
97
+ {?X a :N87} => {?X a :N88, :I88, :J88}.
98
+ {?X a :N88} => {?X a :N89, :I89, :J89}.
99
+ {?X a :N89} => {?X a :N90, :I90, :J90}.
100
+ {?X a :N90} => {?X a :N91, :I91, :J91}.
101
+ {?X a :N91} => {?X a :N92, :I92, :J92}.
102
+ {?X a :N92} => {?X a :N93, :I93, :J93}.
103
+ {?X a :N93} => {?X a :N94, :I94, :J94}.
104
+ {?X a :N94} => {?X a :N95, :I95, :J95}.
105
+ {?X a :N95} => {?X a :N96, :I96, :J96}.
106
+ {?X a :N96} => {?X a :N97, :I97, :J97}.
107
+ {?X a :N97} => {?X a :N98, :I98, :J98}.
108
+ {?X a :N98} => {?X a :N99, :I99, :J99}.
109
+ {?X a :N99} => {?X a :N100, :I100, :J100}.
110
+
111
+ {?X a :N100} => {?X a :A2}.