eyelang 1.3.8 → 1.4.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.
Files changed (219) hide show
  1. package/README.md +19 -14
  2. package/SPEC.md +4 -4
  3. package/conformance/expected/core/001_fact_query.out +0 -8
  4. package/conformance/expected/core/002_rule_recursion.out +0 -41
  5. package/conformance/expected/core/003_terms_and_readback.out +0 -104
  6. package/conformance/expected/core/004_conjunction_and_parentheses.out +0 -25
  7. package/conformance/expected/core/005_list_deconstruction.out +0 -32
  8. package/conformance/expected/core/006_comma_formula_data.out +0 -15
  9. package/conformance/expected/core/007_anonymous_variables.out +0 -19
  10. package/conformance/expected/core/008_graphic_atoms.out +0 -24
  11. package/conformance/expected/core/009_comments_and_whitespace.out +0 -30
  12. package/conformance/expected/core/010_variable_scope_and_reuse.out +0 -52
  13. package/conformance/expected/core/011_predicate_arity.out +0 -30
  14. package/conformance/expected/core/012_nested_compound_unification.out +0 -30
  15. package/conformance/expected/core/013_multiple_clauses_order.out +0 -44
  16. package/conformance/expected/core/014_failure_filters_answers.out +0 -19
  17. package/conformance/expected/core/015_improper_list_unification.out +0 -45
  18. package/conformance/expected/core/016_zero_arity_compound.out +0 -15
  19. package/conformance/expected/core/017_three_step_recursion.out +0 -99
  20. package/conformance/expected/core/018_quoted_atom_readback.out +0 -45
  21. package/conformance/expected/core/019_parenthesized_three_conjuncts.out +0 -36
  22. package/conformance/expected/core/020_nested_list_terms.out +0 -30
  23. package/conformance/expected/extension/001_default_derived_output.out +0 -56
  24. package/conformance/expected/extension/002_materialize_focus.out +0 -22
  25. package/conformance/expected/extension/003_arithmetic_and_comparison.out +0 -148
  26. package/conformance/expected/extension/004_strings_and_atoms.out +0 -58
  27. package/conformance/expected/extension/005_lists_aggregation_ordering.out +0 -135
  28. package/conformance/expected/extension/006_formula_terms.out +0 -76
  29. package/conformance/expected/extension/007_negation_once_generators.out +0 -40
  30. package/conformance/expected/extension/008_equality_and_inequality.out +0 -58
  31. package/conformance/expected/extension/009_list_relations.out +0 -73
  32. package/conformance/expected/extension/010_append_splits.out +0 -45
  33. package/conformance/expected/extension/011_matching_and_comparison.out +0 -70
  34. package/conformance/expected/extension/012_memoize_declaration.out +0 -41
  35. package/conformance/expected/extension/013_numeric_functions.out +0 -105
  36. package/conformance/expected/extension/014_between_enumeration.out +0 -45
  37. package/conformance/expected/extension/015_smallest_divisor.out +0 -15
  38. package/conformance/expected/extension/016_negation_filter.out +0 -38
  39. package/conformance/expected/extension/017_once_user_predicate.out +0 -21
  40. package/conformance/expected/extension/018_findall_user_goal.out +0 -15
  41. package/conformance/expected/extension/019_sort_deduplicates_atoms.out +0 -15
  42. package/conformance/expected/extension/020_append_bound_prefix_suffix.out +0 -30
  43. package/conformance/expected/extension/021_nth0_index_generation.out +0 -15
  44. package/conformance/expected/extension/022_set_nth0_edges.out +0 -30
  45. package/conformance/expected/extension/023_select_duplicate_occurrences.out +0 -30
  46. package/conformance/expected/extension/024_not_member_filter.out +0 -19
  47. package/conformance/expected/extension/025_is_list_filter.out +0 -19
  48. package/conformance/expected/extension/026_nested_formula_terms.out +0 -114
  49. package/conformance/expected/extension/027_materialize_excludes_source_fact.out +0 -14
  50. package/conformance/expected/extension/028_numeric_and_lexical_comparison.out +0 -42
  51. package/conformance/expected/extension/029_string_matching_filters.out +0 -38
  52. package/conformance/expected/extension/030_string_and_atom_concat.out +0 -30
  53. package/conformance/expected/extension/031_countall_empty_and_nonempty.out +0 -18
  54. package/conformance/expected/extension/032_sumall_numeric_template.out +0 -8
  55. package/conformance/expected/extension/033_aggregate_min_template.out +0 -8
  56. package/conformance/expected/extension/034_aggregate_max_compound_key.out +0 -8
  57. package/examples/output/access-control-policy.pl +0 -156
  58. package/examples/output/ackermann.pl +0 -1240
  59. package/examples/output/age.pl +0 -69
  60. package/examples/output/aliases-and-namespaces.pl +0 -73
  61. package/examples/output/alignment-demo.pl +0 -862
  62. package/examples/output/allen-interval-calculus.pl +0 -9169
  63. package/examples/output/ancestor.pl +0 -134
  64. package/examples/output/animal.pl +0 -64
  65. package/examples/output/annotation.pl +0 -76
  66. package/examples/output/backward.pl +0 -21
  67. package/examples/output/basic-monadic.pl +0 -22770
  68. package/examples/output/bayes-diagnosis.pl +0 -195
  69. package/examples/output/bayes-therapy.pl +0 -34873
  70. package/examples/output/beam-deflection.pl +0 -222
  71. package/examples/output/blocks-world-planning.pl +0 -1339
  72. package/examples/output/bmi.pl +0 -1903
  73. package/examples/output/braking-safety-worlds.pl +0 -2452
  74. package/examples/output/buck-converter-design.pl +0 -663
  75. package/examples/output/cache-performance.pl +0 -306
  76. package/examples/output/canary-release.pl +0 -167
  77. package/examples/output/cat-koko.pl +0 -83
  78. package/examples/output/clinical-trial-screening.pl +0 -380
  79. package/examples/output/collatz-1000.pl +0 -19000
  80. package/examples/output/combinatorics-findall-sort.pl +0 -56
  81. package/examples/output/competitive-enzyme-kinetics.pl +0 -563
  82. package/examples/output/complex-matrix-stability.pl +0 -250
  83. package/examples/output/complex.pl +0 -653
  84. package/examples/output/composition-of-injective-functions-is-injective.pl +0 -256
  85. package/examples/output/context-association.pl +0 -75
  86. package/examples/output/control-system.pl +0 -328
  87. package/examples/output/cryptarithmetic-send-more-money.pl +0 -168
  88. package/examples/output/cyclic-path.pl +0 -504
  89. package/examples/output/d3-group.pl +0 -56
  90. package/examples/output/dairy-energy-balance.pl +0 -1034
  91. package/examples/output/data-negotiation.pl +0 -75
  92. package/examples/output/deep-taxonomy-10.pl +0 -1235
  93. package/examples/output/deep-taxonomy-100.pl +0 -1235
  94. package/examples/output/deep-taxonomy-1000.pl +0 -1235
  95. package/examples/output/deep-taxonomy-10000.pl +0 -2915
  96. package/examples/output/deep-taxonomy-100000.pl +0 -20240
  97. package/examples/output/delfour.pl +0 -2829
  98. package/examples/output/dense-hamiltonian-cycle.pl +0 -207
  99. package/examples/output/deontic-logic.pl +0 -105
  100. package/examples/output/derived-rule.pl +0 -41
  101. package/examples/output/diamond-property.pl +0 -303
  102. package/examples/output/dijkstra-findall-sort.pl +0 -484
  103. package/examples/output/dijkstra-risk-path.pl +0 -4841
  104. package/examples/output/dijkstra.pl +0 -1336
  105. package/examples/output/dining-philosophers.pl +0 -21646
  106. package/examples/output/dog.pl +0 -30
  107. package/examples/output/drone-corridor-planner.pl +0 -2466
  108. package/examples/output/easter-computus.pl +0 -5690
  109. package/examples/output/electrical-rc-filter.pl +0 -102
  110. package/examples/output/epidemic-policy.pl +0 -760
  111. package/examples/output/equivalence-classes-overlap-implies-same-class.pl +0 -1080
  112. package/examples/output/eulerian-path.pl +0 -383
  113. package/examples/output/ev-range-worlds.pl +0 -2294
  114. package/examples/output/exact-cover-sudoku.pl +0 -396
  115. package/examples/output/existential-rule.pl +0 -38
  116. package/examples/output/exoplanet-validation-worlds.pl +0 -1904
  117. package/examples/output/expression-eval.pl +0 -104
  118. package/examples/output/family-cousins.pl +0 -3852
  119. package/examples/output/fastpow.pl +0 -1064
  120. package/examples/output/fft8-numeric.pl +0 -2556
  121. package/examples/output/fibonacci.pl +0 -2060
  122. package/examples/output/field-nitrogen-balance.pl +0 -1452
  123. package/examples/output/floating-point.pl +0 -151
  124. package/examples/output/four-color-map.pl +0 -191
  125. package/examples/output/fundamental-theorem-arithmetic.pl +0 -1610
  126. package/examples/output/gcd-bezout-identity.pl +0 -1842
  127. package/examples/output/gd-step-certified.pl +0 -32354
  128. package/examples/output/gdpr-compliance.pl +0 -193
  129. package/examples/output/goldbach-1000.pl +0 -17490
  130. package/examples/output/good-cobbler.pl +0 -15
  131. package/examples/output/gps.pl +0 -4166
  132. package/examples/output/graph-reachability.pl +0 -148
  133. package/examples/output/gray-code-counter.pl +0 -835
  134. package/examples/output/greatest-lower-bound-uniqueness.pl +0 -148
  135. package/examples/output/group-inverse-uniqueness.pl +0 -82
  136. package/examples/output/hamiltonian-cycle.pl +0 -102
  137. package/examples/output/hamiltonian-path.pl +0 -14157
  138. package/examples/output/hamming-code.pl +0 -2665
  139. package/examples/output/hanoi.pl +0 -184
  140. package/examples/output/heat-loss.pl +0 -223
  141. package/examples/output/heron-theorem.pl +0 -253
  142. package/examples/output/ideal-gas-law.pl +0 -148
  143. package/examples/output/illegitimate-reasoning.pl +0 -530
  144. package/examples/output/kaprekar.pl +0 -208
  145. package/examples/output/law-of-cosines.pl +0 -165
  146. package/examples/output/least-squares-regression.pl +0 -1447
  147. package/examples/output/list-collection.pl +0 -49
  148. package/examples/output/lldm.pl +0 -17298
  149. package/examples/output/manufacturing-quality-control.pl +0 -562
  150. package/examples/output/matrix.pl +0 -206
  151. package/examples/output/microgrid-dispatch.pl +0 -787
  152. package/examples/output/monkey-bananas.pl +0 -575
  153. package/examples/output/n-queens.pl +0 -2046
  154. package/examples/output/network-sla.pl +0 -282
  155. package/examples/output/newton-raphson.pl +0 -756
  156. package/examples/output/nixon-diamond.pl +0 -176
  157. package/examples/output/odrl-dpv-healthcare-risk-ranked.pl +0 -6148
  158. package/examples/output/odrl-dpv-risk-ranked.pl +0 -12961
  159. package/examples/output/orbital-transfer-design.pl +0 -961
  160. package/examples/output/path-discovery.pl +0 -333
  161. package/examples/output/peano-arithmetic.pl +0 -1432
  162. package/examples/output/peasant.pl +0 -190
  163. package/examples/output/pendulum-period.pl +0 -271
  164. package/examples/output/polynomial.pl +0 -7952
  165. package/examples/output/project-portfolio-optimization.pl +0 -93
  166. package/examples/output/proof-contrapositive.pl +0 -75
  167. package/examples/output/quadratic-formula.pl +0 -454
  168. package/examples/output/quine-mccluskey.pl +0 -188
  169. package/examples/output/radioactive-decay.pl +0 -299
  170. package/examples/output/sat-dpll.pl +0 -121
  171. package/examples/output/security-incident-correlation.pl +0 -267
  172. package/examples/output/service-impact.pl +0 -457
  173. package/examples/output/sieve.pl +0 -19
  174. package/examples/output/skolem-functions.pl +0 -264
  175. package/examples/output/socket-age.pl +0 -31
  176. package/examples/output/socket-family.pl +0 -56
  177. package/examples/output/socrates.pl +0 -36
  178. package/examples/output/statistics-summary.pl +0 -741
  179. package/examples/output/sudoku.pl +0 -38
  180. package/examples/output/superdense-coding.pl +0 -476
  181. package/examples/output/traveling-salesman.pl +0 -284
  182. package/examples/output/turing.pl +0 -2144
  183. package/examples/output/vector-similarity.pl +0 -421
  184. package/examples/output/witch.pl +0 -209
  185. package/examples/output/wolf-goat-cabbage.pl +0 -900
  186. package/examples/output/zebra.pl +0 -401
  187. package/examples/proof/age.pl +71 -0
  188. package/examples/proof/aliases-and-namespaces.pl +78 -0
  189. package/examples/proof/ancestor.pl +140 -0
  190. package/examples/proof/animal.pl +68 -0
  191. package/examples/proof/annotation.pl +80 -0
  192. package/examples/proof/backward.pl +22 -0
  193. package/examples/proof/cat-koko.pl +86 -0
  194. package/examples/proof/data-negotiation.pl +76 -0
  195. package/examples/proof/derived-rule.pl +43 -0
  196. package/examples/proof/dog.pl +31 -0
  197. package/examples/proof/electrical-rc-filter.pl +105 -0
  198. package/examples/proof/existential-rule.pl +40 -0
  199. package/examples/proof/floating-point.pl +160 -0
  200. package/examples/proof/good-cobbler.pl +16 -0
  201. package/examples/proof/group-inverse-uniqueness.pl +84 -0
  202. package/examples/proof/list-collection.pl +52 -0
  203. package/examples/proof/proof-contrapositive.pl +78 -0
  204. package/examples/proof/socket-age.pl +32 -0
  205. package/examples/proof/socket-family.pl +59 -0
  206. package/examples/proof/socrates.pl +38 -0
  207. package/examples/socket-age.pl +4 -4
  208. package/examples/socket-family.pl +4 -4
  209. package/package.json +1 -1
  210. package/playground-worker.mjs +4 -4
  211. package/playground.html +15 -15
  212. package/src/cli.js +10 -10
  213. package/src/index.js +3 -2
  214. package/src/parser.js +130 -1
  215. package/src/program.js +33 -27
  216. package/test/run-all.js +0 -0
  217. package/test/run-conformance.js +0 -0
  218. package/test/run-examples.js +38 -8
  219. package/test/run-regression.js +29 -28
@@ -1,1473 +1,21 @@
1
1
  status(low_input, under_supplied).
2
- why(
3
- status(low_input, under_supplied),
4
- proof(
5
- goal(status(low_input, under_supplied)),
6
- by(rule("field-nitrogen-balance.pl", clause(19))),
7
- bindings([binding("F", low_input), binding("D", 51.5)]),
8
- uses([
9
- proof(
10
- goal(deficit_n(low_input, 51.5)),
11
- by(rule("field-nitrogen-balance.pl", clause(16))),
12
- bindings([binding("F", low_input), binding("Deficit", 51.5), binding("Avail", 58.5), binding("__anon11", 25), binding("__anon12", 40), binding("__anon13", 0.10), binding("Demand", 110)]),
13
- uses([
14
- proof(
15
- goal(available_n(low_input, 58.5)),
16
- by(rule("field-nitrogen-balance.pl", clause(13))),
17
- bindings([binding("F", low_input), binding("Avail", 58.5), binding("Total", 65), binding("__anon2", 25), binding("__anon3", 40), binding("Loss", 0.10), binding("__anon4", 110), binding("Retained", 0.90000000000000002)]),
18
- uses([
19
- proof(
20
- goal(total_n(low_input, 65)),
21
- by(rule("field-nitrogen-balance.pl", clause(12))),
22
- bindings([binding("F", low_input), binding("Total", 65), binding("Soil", 25), binding("Fert", 40), binding("__anon0", 0.10), binding("__anon1", 110)]),
23
- uses([
24
- proof(
25
- goal(field(low_input, 25, 40, 0.10, 110)),
26
- by(fact("field-nitrogen-balance.pl", clause(8)))
27
- ),
28
- proof(
29
- goal(add(25, 40, 65)),
30
- by(builtin(add, 3))
31
- )
32
- ])
33
- ),
34
- proof(
35
- goal(field(low_input, 25, 40, 0.10, 110)),
36
- by(fact("field-nitrogen-balance.pl", clause(8)))
37
- ),
38
- proof(
39
- goal(sub(1.0, 0.10, 0.90000000000000002)),
40
- by(builtin(sub, 3))
41
- ),
42
- proof(
43
- goal(mul(65, 0.90000000000000002, 58.5)),
44
- by(builtin(mul, 3))
45
- )
46
- ])
47
- ),
48
- proof(
49
- goal(field(low_input, 25, 40, 0.10, 110)),
50
- by(fact("field-nitrogen-balance.pl", clause(8)))
51
- ),
52
- proof(
53
- goal(lt(58.5, 110)),
54
- by(builtin(lt, 2))
55
- ),
56
- proof(
57
- goal(sub(110, 58.5, 51.5)),
58
- by(builtin(sub, 3))
59
- )
60
- ])
61
- ),
62
- proof(
63
- goal(gt(51.5, 10.0)),
64
- by(builtin(gt, 2))
65
- )
66
- ])
67
- )
68
- ).
69
-
70
2
  status(balanced_loam, balanced).
71
- why(
72
- status(balanced_loam, balanced),
73
- proof(
74
- goal(status(balanced_loam, balanced)),
75
- by(rule("field-nitrogen-balance.pl", clause(20))),
76
- bindings([binding("F", balanced_loam), binding("D", 0.0), binding("S", 0.0)]),
77
- uses([
78
- proof(
79
- goal(deficit_n(balanced_loam, 0.0)),
80
- by(rule("field-nitrogen-balance.pl", clause(17))),
81
- bindings([binding("F", balanced_loam), binding("Avail", 110.0), binding("__anon14", 45), binding("__anon15", 80), binding("__anon16", 0.12), binding("Demand", 110)]),
82
- uses([
83
- proof(
84
- goal(available_n(balanced_loam, 110.0)),
85
- by(rule("field-nitrogen-balance.pl", clause(13))),
86
- bindings([binding("F", balanced_loam), binding("Avail", 110.0), binding("Total", 125), binding("__anon2", 45), binding("__anon3", 80), binding("Loss", 0.12), binding("__anon4", 110), binding("Retained", 0.88)]),
87
- uses([
88
- proof(
89
- goal(total_n(balanced_loam, 125)),
90
- by(rule("field-nitrogen-balance.pl", clause(12))),
91
- bindings([binding("F", balanced_loam), binding("Total", 125), binding("Soil", 45), binding("Fert", 80), binding("__anon0", 0.12), binding("__anon1", 110)]),
92
- uses([
93
- proof(
94
- goal(field(balanced_loam, 45, 80, 0.12, 110)),
95
- by(fact("field-nitrogen-balance.pl", clause(9)))
96
- ),
97
- proof(
98
- goal(add(45, 80, 125)),
99
- by(builtin(add, 3))
100
- )
101
- ])
102
- ),
103
- proof(
104
- goal(field(balanced_loam, 45, 80, 0.12, 110)),
105
- by(fact("field-nitrogen-balance.pl", clause(9)))
106
- ),
107
- proof(
108
- goal(sub(1.0, 0.12, 0.88)),
109
- by(builtin(sub, 3))
110
- ),
111
- proof(
112
- goal(mul(125, 0.88, 110.0)),
113
- by(builtin(mul, 3))
114
- )
115
- ])
116
- ),
117
- proof(
118
- goal(field(balanced_loam, 45, 80, 0.12, 110)),
119
- by(fact("field-nitrogen-balance.pl", clause(9)))
120
- ),
121
- proof(
122
- goal(ge(110.0, 110)),
123
- by(builtin(ge, 2))
124
- )
125
- ])
126
- ),
127
- proof(
128
- goal(surplus_n(balanced_loam, 0.0)),
129
- by(rule("field-nitrogen-balance.pl", clause(15))),
130
- bindings([binding("F", balanced_loam), binding("Avail", 110.0), binding("__anon8", 45), binding("__anon9", 80), binding("__anon10", 0.12), binding("Demand", 110)]),
131
- uses([
132
- proof(
133
- goal(available_n(balanced_loam, 110.0)),
134
- by(rule("field-nitrogen-balance.pl", clause(13))),
135
- bindings([binding("F", balanced_loam), binding("Avail", 110.0), binding("Total", 125), binding("__anon2", 45), binding("__anon3", 80), binding("Loss", 0.12), binding("__anon4", 110), binding("Retained", 0.88)]),
136
- uses([
137
- proof(
138
- goal(total_n(balanced_loam, 125)),
139
- by(rule("field-nitrogen-balance.pl", clause(12))),
140
- bindings([binding("F", balanced_loam), binding("Total", 125), binding("Soil", 45), binding("Fert", 80), binding("__anon0", 0.12), binding("__anon1", 110)]),
141
- uses([
142
- proof(
143
- goal(field(balanced_loam, 45, 80, 0.12, 110)),
144
- by(fact("field-nitrogen-balance.pl", clause(9)))
145
- ),
146
- proof(
147
- goal(add(45, 80, 125)),
148
- by(builtin(add, 3))
149
- )
150
- ])
151
- ),
152
- proof(
153
- goal(field(balanced_loam, 45, 80, 0.12, 110)),
154
- by(fact("field-nitrogen-balance.pl", clause(9)))
155
- ),
156
- proof(
157
- goal(sub(1.0, 0.12, 0.88)),
158
- by(builtin(sub, 3))
159
- ),
160
- proof(
161
- goal(mul(125, 0.88, 110.0)),
162
- by(builtin(mul, 3))
163
- )
164
- ])
165
- ),
166
- proof(
167
- goal(field(balanced_loam, 45, 80, 0.12, 110)),
168
- by(fact("field-nitrogen-balance.pl", clause(9)))
169
- ),
170
- proof(
171
- goal(le(110.0, 110)),
172
- by(builtin(le, 2))
173
- )
174
- ])
175
- ),
176
- proof(
177
- goal(le(0.0, 10.0)),
178
- by(builtin(le, 2))
179
- ),
180
- proof(
181
- goal(le(0.0, 10.0)),
182
- by(builtin(le, 2))
183
- )
184
- ])
185
- )
186
- ).
187
-
188
3
  status(sandy_high, over_supplied).
189
- why(
190
- status(sandy_high, over_supplied),
191
- proof(
192
- goal(status(sandy_high, over_supplied)),
193
- by(rule("field-nitrogen-balance.pl", clause(21))),
194
- bindings([binding("F", sandy_high), binding("S", 12.0)]),
195
- uses([
196
- proof(
197
- goal(surplus_n(sandy_high, 12.0)),
198
- by(rule("field-nitrogen-balance.pl", clause(14))),
199
- bindings([binding("F", sandy_high), binding("Surplus", 12.0), binding("Avail", 117.0), binding("__anon5", 30), binding("__anon6", 150), binding("__anon7", 0.35), binding("Demand", 105)]),
200
- uses([
201
- proof(
202
- goal(available_n(sandy_high, 117.0)),
203
- by(rule("field-nitrogen-balance.pl", clause(13))),
204
- bindings([binding("F", sandy_high), binding("Avail", 117.0), binding("Total", 180), binding("__anon2", 30), binding("__anon3", 150), binding("Loss", 0.35), binding("__anon4", 105), binding("Retained", 0.65000000000000002)]),
205
- uses([
206
- proof(
207
- goal(total_n(sandy_high, 180)),
208
- by(rule("field-nitrogen-balance.pl", clause(12))),
209
- bindings([binding("F", sandy_high), binding("Total", 180), binding("Soil", 30), binding("Fert", 150), binding("__anon0", 0.35), binding("__anon1", 105)]),
210
- uses([
211
- proof(
212
- goal(field(sandy_high, 30, 150, 0.35, 105)),
213
- by(fact("field-nitrogen-balance.pl", clause(10)))
214
- ),
215
- proof(
216
- goal(add(30, 150, 180)),
217
- by(builtin(add, 3))
218
- )
219
- ])
220
- ),
221
- proof(
222
- goal(field(sandy_high, 30, 150, 0.35, 105)),
223
- by(fact("field-nitrogen-balance.pl", clause(10)))
224
- ),
225
- proof(
226
- goal(sub(1.0, 0.35, 0.65000000000000002)),
227
- by(builtin(sub, 3))
228
- ),
229
- proof(
230
- goal(mul(180, 0.65000000000000002, 117.0)),
231
- by(builtin(mul, 3))
232
- )
233
- ])
234
- ),
235
- proof(
236
- goal(field(sandy_high, 30, 150, 0.35, 105)),
237
- by(fact("field-nitrogen-balance.pl", clause(10)))
238
- ),
239
- proof(
240
- goal(gt(117.0, 105)),
241
- by(builtin(gt, 2))
242
- ),
243
- proof(
244
- goal(sub(117.0, 105, 12.0)),
245
- by(builtin(sub, 3))
246
- )
247
- ])
248
- ),
249
- proof(
250
- goal(gt(12.0, 10.0)),
251
- by(builtin(gt, 2))
252
- )
253
- ])
254
- )
255
- ).
256
-
257
4
  status(clay_surplus, over_supplied).
258
- why(
259
- status(clay_surplus, over_supplied),
260
- proof(
261
- goal(status(clay_surplus, over_supplied)),
262
- by(rule("field-nitrogen-balance.pl", clause(21))),
263
- bindings([binding("F", clay_surplus), binding("S", 27.200000000000017)]),
264
- uses([
265
- proof(
266
- goal(surplus_n(clay_surplus, 27.200000000000017)),
267
- by(rule("field-nitrogen-balance.pl", clause(14))),
268
- bindings([binding("F", clay_surplus), binding("Surplus", 27.200000000000017), binding("Avail", 147.20000000000002), binding("__anon5", 70), binding("__anon6", 90), binding("__anon7", 0.08), binding("Demand", 120)]),
269
- uses([
270
- proof(
271
- goal(available_n(clay_surplus, 147.20000000000002)),
272
- by(rule("field-nitrogen-balance.pl", clause(13))),
273
- bindings([binding("F", clay_surplus), binding("Avail", 147.20000000000002), binding("Total", 160), binding("__anon2", 70), binding("__anon3", 90), binding("Loss", 0.08), binding("__anon4", 120), binding("Retained", 0.92000000000000004)]),
274
- uses([
275
- proof(
276
- goal(total_n(clay_surplus, 160)),
277
- by(rule("field-nitrogen-balance.pl", clause(12))),
278
- bindings([binding("F", clay_surplus), binding("Total", 160), binding("Soil", 70), binding("Fert", 90), binding("__anon0", 0.08), binding("__anon1", 120)]),
279
- uses([
280
- proof(
281
- goal(field(clay_surplus, 70, 90, 0.08, 120)),
282
- by(fact("field-nitrogen-balance.pl", clause(11)))
283
- ),
284
- proof(
285
- goal(add(70, 90, 160)),
286
- by(builtin(add, 3))
287
- )
288
- ])
289
- ),
290
- proof(
291
- goal(field(clay_surplus, 70, 90, 0.08, 120)),
292
- by(fact("field-nitrogen-balance.pl", clause(11)))
293
- ),
294
- proof(
295
- goal(sub(1.0, 0.08, 0.92000000000000004)),
296
- by(builtin(sub, 3))
297
- ),
298
- proof(
299
- goal(mul(160, 0.92000000000000004, 147.20000000000002)),
300
- by(builtin(mul, 3))
301
- )
302
- ])
303
- ),
304
- proof(
305
- goal(field(clay_surplus, 70, 90, 0.08, 120)),
306
- by(fact("field-nitrogen-balance.pl", clause(11)))
307
- ),
308
- proof(
309
- goal(gt(147.20000000000002, 120)),
310
- by(builtin(gt, 2))
311
- ),
312
- proof(
313
- goal(sub(147.20000000000002, 120, 27.200000000000017)),
314
- by(builtin(sub, 3))
315
- )
316
- ])
317
- ),
318
- proof(
319
- goal(gt(27.200000000000017, 10.0)),
320
- by(builtin(gt, 2))
321
- )
322
- ])
323
- )
324
- ).
325
-
326
5
  availableN_kg_ha(low_input, 58.5).
327
- why(
328
- availableN_kg_ha(low_input, 58.5),
329
- proof(
330
- goal(availableN_kg_ha(low_input, 58.5)),
331
- by(rule("field-nitrogen-balance.pl", clause(22))),
332
- bindings([binding("F", low_input), binding("A", 58.5)]),
333
- uses([
334
- proof(
335
- goal(available_n(low_input, 58.5)),
336
- by(rule("field-nitrogen-balance.pl", clause(13))),
337
- bindings([binding("F", low_input), binding("Avail", 58.5), binding("Total", 65), binding("__anon2", 25), binding("__anon3", 40), binding("Loss", 0.10), binding("__anon4", 110), binding("Retained", 0.90000000000000002)]),
338
- uses([
339
- proof(
340
- goal(total_n(low_input, 65)),
341
- by(rule("field-nitrogen-balance.pl", clause(12))),
342
- bindings([binding("F", low_input), binding("Total", 65), binding("Soil", 25), binding("Fert", 40), binding("__anon0", 0.10), binding("__anon1", 110)]),
343
- uses([
344
- proof(
345
- goal(field(low_input, 25, 40, 0.10, 110)),
346
- by(fact("field-nitrogen-balance.pl", clause(8)))
347
- ),
348
- proof(
349
- goal(add(25, 40, 65)),
350
- by(builtin(add, 3))
351
- )
352
- ])
353
- ),
354
- proof(
355
- goal(field(low_input, 25, 40, 0.10, 110)),
356
- by(fact("field-nitrogen-balance.pl", clause(8)))
357
- ),
358
- proof(
359
- goal(sub(1.0, 0.10, 0.90000000000000002)),
360
- by(builtin(sub, 3))
361
- ),
362
- proof(
363
- goal(mul(65, 0.90000000000000002, 58.5)),
364
- by(builtin(mul, 3))
365
- )
366
- ])
367
- )
368
- ])
369
- )
370
- ).
371
-
372
6
  availableN_kg_ha(balanced_loam, 110.0).
373
- why(
374
- availableN_kg_ha(balanced_loam, 110.0),
375
- proof(
376
- goal(availableN_kg_ha(balanced_loam, 110.0)),
377
- by(rule("field-nitrogen-balance.pl", clause(22))),
378
- bindings([binding("F", balanced_loam), binding("A", 110.0)]),
379
- uses([
380
- proof(
381
- goal(available_n(balanced_loam, 110.0)),
382
- by(rule("field-nitrogen-balance.pl", clause(13))),
383
- bindings([binding("F", balanced_loam), binding("Avail", 110.0), binding("Total", 125), binding("__anon2", 45), binding("__anon3", 80), binding("Loss", 0.12), binding("__anon4", 110), binding("Retained", 0.88)]),
384
- uses([
385
- proof(
386
- goal(total_n(balanced_loam, 125)),
387
- by(rule("field-nitrogen-balance.pl", clause(12))),
388
- bindings([binding("F", balanced_loam), binding("Total", 125), binding("Soil", 45), binding("Fert", 80), binding("__anon0", 0.12), binding("__anon1", 110)]),
389
- uses([
390
- proof(
391
- goal(field(balanced_loam, 45, 80, 0.12, 110)),
392
- by(fact("field-nitrogen-balance.pl", clause(9)))
393
- ),
394
- proof(
395
- goal(add(45, 80, 125)),
396
- by(builtin(add, 3))
397
- )
398
- ])
399
- ),
400
- proof(
401
- goal(field(balanced_loam, 45, 80, 0.12, 110)),
402
- by(fact("field-nitrogen-balance.pl", clause(9)))
403
- ),
404
- proof(
405
- goal(sub(1.0, 0.12, 0.88)),
406
- by(builtin(sub, 3))
407
- ),
408
- proof(
409
- goal(mul(125, 0.88, 110.0)),
410
- by(builtin(mul, 3))
411
- )
412
- ])
413
- )
414
- ])
415
- )
416
- ).
417
-
418
7
  availableN_kg_ha(sandy_high, 117.0).
419
- why(
420
- availableN_kg_ha(sandy_high, 117.0),
421
- proof(
422
- goal(availableN_kg_ha(sandy_high, 117.0)),
423
- by(rule("field-nitrogen-balance.pl", clause(22))),
424
- bindings([binding("F", sandy_high), binding("A", 117.0)]),
425
- uses([
426
- proof(
427
- goal(available_n(sandy_high, 117.0)),
428
- by(rule("field-nitrogen-balance.pl", clause(13))),
429
- bindings([binding("F", sandy_high), binding("Avail", 117.0), binding("Total", 180), binding("__anon2", 30), binding("__anon3", 150), binding("Loss", 0.35), binding("__anon4", 105), binding("Retained", 0.65000000000000002)]),
430
- uses([
431
- proof(
432
- goal(total_n(sandy_high, 180)),
433
- by(rule("field-nitrogen-balance.pl", clause(12))),
434
- bindings([binding("F", sandy_high), binding("Total", 180), binding("Soil", 30), binding("Fert", 150), binding("__anon0", 0.35), binding("__anon1", 105)]),
435
- uses([
436
- proof(
437
- goal(field(sandy_high, 30, 150, 0.35, 105)),
438
- by(fact("field-nitrogen-balance.pl", clause(10)))
439
- ),
440
- proof(
441
- goal(add(30, 150, 180)),
442
- by(builtin(add, 3))
443
- )
444
- ])
445
- ),
446
- proof(
447
- goal(field(sandy_high, 30, 150, 0.35, 105)),
448
- by(fact("field-nitrogen-balance.pl", clause(10)))
449
- ),
450
- proof(
451
- goal(sub(1.0, 0.35, 0.65000000000000002)),
452
- by(builtin(sub, 3))
453
- ),
454
- proof(
455
- goal(mul(180, 0.65000000000000002, 117.0)),
456
- by(builtin(mul, 3))
457
- )
458
- ])
459
- )
460
- ])
461
- )
462
- ).
463
-
464
8
  availableN_kg_ha(clay_surplus, 147.20000000000002).
465
- why(
466
- availableN_kg_ha(clay_surplus, 147.20000000000002),
467
- proof(
468
- goal(availableN_kg_ha(clay_surplus, 147.20000000000002)),
469
- by(rule("field-nitrogen-balance.pl", clause(22))),
470
- bindings([binding("F", clay_surplus), binding("A", 147.20000000000002)]),
471
- uses([
472
- proof(
473
- goal(available_n(clay_surplus, 147.20000000000002)),
474
- by(rule("field-nitrogen-balance.pl", clause(13))),
475
- bindings([binding("F", clay_surplus), binding("Avail", 147.20000000000002), binding("Total", 160), binding("__anon2", 70), binding("__anon3", 90), binding("Loss", 0.08), binding("__anon4", 120), binding("Retained", 0.92000000000000004)]),
476
- uses([
477
- proof(
478
- goal(total_n(clay_surplus, 160)),
479
- by(rule("field-nitrogen-balance.pl", clause(12))),
480
- bindings([binding("F", clay_surplus), binding("Total", 160), binding("Soil", 70), binding("Fert", 90), binding("__anon0", 0.08), binding("__anon1", 120)]),
481
- uses([
482
- proof(
483
- goal(field(clay_surplus, 70, 90, 0.08, 120)),
484
- by(fact("field-nitrogen-balance.pl", clause(11)))
485
- ),
486
- proof(
487
- goal(add(70, 90, 160)),
488
- by(builtin(add, 3))
489
- )
490
- ])
491
- ),
492
- proof(
493
- goal(field(clay_surplus, 70, 90, 0.08, 120)),
494
- by(fact("field-nitrogen-balance.pl", clause(11)))
495
- ),
496
- proof(
497
- goal(sub(1.0, 0.08, 0.92000000000000004)),
498
- by(builtin(sub, 3))
499
- ),
500
- proof(
501
- goal(mul(160, 0.92000000000000004, 147.20000000000002)),
502
- by(builtin(mul, 3))
503
- )
504
- ])
505
- )
506
- ])
507
- )
508
- ).
509
-
510
9
  deficitN_kg_ha(low_input, 51.5).
511
- why(
512
- deficitN_kg_ha(low_input, 51.5),
513
- proof(
514
- goal(deficitN_kg_ha(low_input, 51.5)),
515
- by(rule("field-nitrogen-balance.pl", clause(23))),
516
- bindings([binding("F", low_input), binding("D", 51.5)]),
517
- uses([
518
- proof(
519
- goal(deficit_n(low_input, 51.5)),
520
- by(rule("field-nitrogen-balance.pl", clause(16))),
521
- bindings([binding("F", low_input), binding("Deficit", 51.5), binding("Avail", 58.5), binding("__anon11", 25), binding("__anon12", 40), binding("__anon13", 0.10), binding("Demand", 110)]),
522
- uses([
523
- proof(
524
- goal(available_n(low_input, 58.5)),
525
- by(rule("field-nitrogen-balance.pl", clause(13))),
526
- bindings([binding("F", low_input), binding("Avail", 58.5), binding("Total", 65), binding("__anon2", 25), binding("__anon3", 40), binding("Loss", 0.10), binding("__anon4", 110), binding("Retained", 0.90000000000000002)]),
527
- uses([
528
- proof(
529
- goal(total_n(low_input, 65)),
530
- by(rule("field-nitrogen-balance.pl", clause(12))),
531
- bindings([binding("F", low_input), binding("Total", 65), binding("Soil", 25), binding("Fert", 40), binding("__anon0", 0.10), binding("__anon1", 110)]),
532
- uses([
533
- proof(
534
- goal(field(low_input, 25, 40, 0.10, 110)),
535
- by(fact("field-nitrogen-balance.pl", clause(8)))
536
- ),
537
- proof(
538
- goal(add(25, 40, 65)),
539
- by(builtin(add, 3))
540
- )
541
- ])
542
- ),
543
- proof(
544
- goal(field(low_input, 25, 40, 0.10, 110)),
545
- by(fact("field-nitrogen-balance.pl", clause(8)))
546
- ),
547
- proof(
548
- goal(sub(1.0, 0.10, 0.90000000000000002)),
549
- by(builtin(sub, 3))
550
- ),
551
- proof(
552
- goal(mul(65, 0.90000000000000002, 58.5)),
553
- by(builtin(mul, 3))
554
- )
555
- ])
556
- ),
557
- proof(
558
- goal(field(low_input, 25, 40, 0.10, 110)),
559
- by(fact("field-nitrogen-balance.pl", clause(8)))
560
- ),
561
- proof(
562
- goal(lt(58.5, 110)),
563
- by(builtin(lt, 2))
564
- ),
565
- proof(
566
- goal(sub(110, 58.5, 51.5)),
567
- by(builtin(sub, 3))
568
- )
569
- ])
570
- )
571
- ])
572
- )
573
- ).
574
-
575
10
  deficitN_kg_ha(balanced_loam, 0.0).
576
- why(
577
- deficitN_kg_ha(balanced_loam, 0.0),
578
- proof(
579
- goal(deficitN_kg_ha(balanced_loam, 0.0)),
580
- by(rule("field-nitrogen-balance.pl", clause(23))),
581
- bindings([binding("F", balanced_loam), binding("D", 0.0)]),
582
- uses([
583
- proof(
584
- goal(deficit_n(balanced_loam, 0.0)),
585
- by(rule("field-nitrogen-balance.pl", clause(17))),
586
- bindings([binding("F", balanced_loam), binding("Avail", 110.0), binding("__anon14", 45), binding("__anon15", 80), binding("__anon16", 0.12), binding("Demand", 110)]),
587
- uses([
588
- proof(
589
- goal(available_n(balanced_loam, 110.0)),
590
- by(rule("field-nitrogen-balance.pl", clause(13))),
591
- bindings([binding("F", balanced_loam), binding("Avail", 110.0), binding("Total", 125), binding("__anon2", 45), binding("__anon3", 80), binding("Loss", 0.12), binding("__anon4", 110), binding("Retained", 0.88)]),
592
- uses([
593
- proof(
594
- goal(total_n(balanced_loam, 125)),
595
- by(rule("field-nitrogen-balance.pl", clause(12))),
596
- bindings([binding("F", balanced_loam), binding("Total", 125), binding("Soil", 45), binding("Fert", 80), binding("__anon0", 0.12), binding("__anon1", 110)]),
597
- uses([
598
- proof(
599
- goal(field(balanced_loam, 45, 80, 0.12, 110)),
600
- by(fact("field-nitrogen-balance.pl", clause(9)))
601
- ),
602
- proof(
603
- goal(add(45, 80, 125)),
604
- by(builtin(add, 3))
605
- )
606
- ])
607
- ),
608
- proof(
609
- goal(field(balanced_loam, 45, 80, 0.12, 110)),
610
- by(fact("field-nitrogen-balance.pl", clause(9)))
611
- ),
612
- proof(
613
- goal(sub(1.0, 0.12, 0.88)),
614
- by(builtin(sub, 3))
615
- ),
616
- proof(
617
- goal(mul(125, 0.88, 110.0)),
618
- by(builtin(mul, 3))
619
- )
620
- ])
621
- ),
622
- proof(
623
- goal(field(balanced_loam, 45, 80, 0.12, 110)),
624
- by(fact("field-nitrogen-balance.pl", clause(9)))
625
- ),
626
- proof(
627
- goal(ge(110.0, 110)),
628
- by(builtin(ge, 2))
629
- )
630
- ])
631
- )
632
- ])
633
- )
634
- ).
635
-
636
11
  deficitN_kg_ha(sandy_high, 0.0).
637
- why(
638
- deficitN_kg_ha(sandy_high, 0.0),
639
- proof(
640
- goal(deficitN_kg_ha(sandy_high, 0.0)),
641
- by(rule("field-nitrogen-balance.pl", clause(23))),
642
- bindings([binding("F", sandy_high), binding("D", 0.0)]),
643
- uses([
644
- proof(
645
- goal(deficit_n(sandy_high, 0.0)),
646
- by(rule("field-nitrogen-balance.pl", clause(17))),
647
- bindings([binding("F", sandy_high), binding("Avail", 117.0), binding("__anon14", 30), binding("__anon15", 150), binding("__anon16", 0.35), binding("Demand", 105)]),
648
- uses([
649
- proof(
650
- goal(available_n(sandy_high, 117.0)),
651
- by(rule("field-nitrogen-balance.pl", clause(13))),
652
- bindings([binding("F", sandy_high), binding("Avail", 117.0), binding("Total", 180), binding("__anon2", 30), binding("__anon3", 150), binding("Loss", 0.35), binding("__anon4", 105), binding("Retained", 0.65000000000000002)]),
653
- uses([
654
- proof(
655
- goal(total_n(sandy_high, 180)),
656
- by(rule("field-nitrogen-balance.pl", clause(12))),
657
- bindings([binding("F", sandy_high), binding("Total", 180), binding("Soil", 30), binding("Fert", 150), binding("__anon0", 0.35), binding("__anon1", 105)]),
658
- uses([
659
- proof(
660
- goal(field(sandy_high, 30, 150, 0.35, 105)),
661
- by(fact("field-nitrogen-balance.pl", clause(10)))
662
- ),
663
- proof(
664
- goal(add(30, 150, 180)),
665
- by(builtin(add, 3))
666
- )
667
- ])
668
- ),
669
- proof(
670
- goal(field(sandy_high, 30, 150, 0.35, 105)),
671
- by(fact("field-nitrogen-balance.pl", clause(10)))
672
- ),
673
- proof(
674
- goal(sub(1.0, 0.35, 0.65000000000000002)),
675
- by(builtin(sub, 3))
676
- ),
677
- proof(
678
- goal(mul(180, 0.65000000000000002, 117.0)),
679
- by(builtin(mul, 3))
680
- )
681
- ])
682
- ),
683
- proof(
684
- goal(field(sandy_high, 30, 150, 0.35, 105)),
685
- by(fact("field-nitrogen-balance.pl", clause(10)))
686
- ),
687
- proof(
688
- goal(ge(117.0, 105)),
689
- by(builtin(ge, 2))
690
- )
691
- ])
692
- )
693
- ])
694
- )
695
- ).
696
-
697
12
  deficitN_kg_ha(clay_surplus, 0.0).
698
- why(
699
- deficitN_kg_ha(clay_surplus, 0.0),
700
- proof(
701
- goal(deficitN_kg_ha(clay_surplus, 0.0)),
702
- by(rule("field-nitrogen-balance.pl", clause(23))),
703
- bindings([binding("F", clay_surplus), binding("D", 0.0)]),
704
- uses([
705
- proof(
706
- goal(deficit_n(clay_surplus, 0.0)),
707
- by(rule("field-nitrogen-balance.pl", clause(17))),
708
- bindings([binding("F", clay_surplus), binding("Avail", 147.20000000000002), binding("__anon14", 70), binding("__anon15", 90), binding("__anon16", 0.08), binding("Demand", 120)]),
709
- uses([
710
- proof(
711
- goal(available_n(clay_surplus, 147.20000000000002)),
712
- by(rule("field-nitrogen-balance.pl", clause(13))),
713
- bindings([binding("F", clay_surplus), binding("Avail", 147.20000000000002), binding("Total", 160), binding("__anon2", 70), binding("__anon3", 90), binding("Loss", 0.08), binding("__anon4", 120), binding("Retained", 0.92000000000000004)]),
714
- uses([
715
- proof(
716
- goal(total_n(clay_surplus, 160)),
717
- by(rule("field-nitrogen-balance.pl", clause(12))),
718
- bindings([binding("F", clay_surplus), binding("Total", 160), binding("Soil", 70), binding("Fert", 90), binding("__anon0", 0.08), binding("__anon1", 120)]),
719
- uses([
720
- proof(
721
- goal(field(clay_surplus, 70, 90, 0.08, 120)),
722
- by(fact("field-nitrogen-balance.pl", clause(11)))
723
- ),
724
- proof(
725
- goal(add(70, 90, 160)),
726
- by(builtin(add, 3))
727
- )
728
- ])
729
- ),
730
- proof(
731
- goal(field(clay_surplus, 70, 90, 0.08, 120)),
732
- by(fact("field-nitrogen-balance.pl", clause(11)))
733
- ),
734
- proof(
735
- goal(sub(1.0, 0.08, 0.92000000000000004)),
736
- by(builtin(sub, 3))
737
- ),
738
- proof(
739
- goal(mul(160, 0.92000000000000004, 147.20000000000002)),
740
- by(builtin(mul, 3))
741
- )
742
- ])
743
- ),
744
- proof(
745
- goal(field(clay_surplus, 70, 90, 0.08, 120)),
746
- by(fact("field-nitrogen-balance.pl", clause(11)))
747
- ),
748
- proof(
749
- goal(ge(147.20000000000002, 120)),
750
- by(builtin(ge, 2))
751
- )
752
- ])
753
- )
754
- ])
755
- )
756
- ).
757
-
758
13
  surplusN_kg_ha(sandy_high, 12.0).
759
- why(
760
- surplusN_kg_ha(sandy_high, 12.0),
761
- proof(
762
- goal(surplusN_kg_ha(sandy_high, 12.0)),
763
- by(rule("field-nitrogen-balance.pl", clause(24))),
764
- bindings([binding("F", sandy_high), binding("S", 12.0)]),
765
- uses([
766
- proof(
767
- goal(surplus_n(sandy_high, 12.0)),
768
- by(rule("field-nitrogen-balance.pl", clause(14))),
769
- bindings([binding("F", sandy_high), binding("Surplus", 12.0), binding("Avail", 117.0), binding("__anon5", 30), binding("__anon6", 150), binding("__anon7", 0.35), binding("Demand", 105)]),
770
- uses([
771
- proof(
772
- goal(available_n(sandy_high, 117.0)),
773
- by(rule("field-nitrogen-balance.pl", clause(13))),
774
- bindings([binding("F", sandy_high), binding("Avail", 117.0), binding("Total", 180), binding("__anon2", 30), binding("__anon3", 150), binding("Loss", 0.35), binding("__anon4", 105), binding("Retained", 0.65000000000000002)]),
775
- uses([
776
- proof(
777
- goal(total_n(sandy_high, 180)),
778
- by(rule("field-nitrogen-balance.pl", clause(12))),
779
- bindings([binding("F", sandy_high), binding("Total", 180), binding("Soil", 30), binding("Fert", 150), binding("__anon0", 0.35), binding("__anon1", 105)]),
780
- uses([
781
- proof(
782
- goal(field(sandy_high, 30, 150, 0.35, 105)),
783
- by(fact("field-nitrogen-balance.pl", clause(10)))
784
- ),
785
- proof(
786
- goal(add(30, 150, 180)),
787
- by(builtin(add, 3))
788
- )
789
- ])
790
- ),
791
- proof(
792
- goal(field(sandy_high, 30, 150, 0.35, 105)),
793
- by(fact("field-nitrogen-balance.pl", clause(10)))
794
- ),
795
- proof(
796
- goal(sub(1.0, 0.35, 0.65000000000000002)),
797
- by(builtin(sub, 3))
798
- ),
799
- proof(
800
- goal(mul(180, 0.65000000000000002, 117.0)),
801
- by(builtin(mul, 3))
802
- )
803
- ])
804
- ),
805
- proof(
806
- goal(field(sandy_high, 30, 150, 0.35, 105)),
807
- by(fact("field-nitrogen-balance.pl", clause(10)))
808
- ),
809
- proof(
810
- goal(gt(117.0, 105)),
811
- by(builtin(gt, 2))
812
- ),
813
- proof(
814
- goal(sub(117.0, 105, 12.0)),
815
- by(builtin(sub, 3))
816
- )
817
- ])
818
- )
819
- ])
820
- )
821
- ).
822
-
823
14
  surplusN_kg_ha(clay_surplus, 27.200000000000017).
824
- why(
825
- surplusN_kg_ha(clay_surplus, 27.200000000000017),
826
- proof(
827
- goal(surplusN_kg_ha(clay_surplus, 27.200000000000017)),
828
- by(rule("field-nitrogen-balance.pl", clause(24))),
829
- bindings([binding("F", clay_surplus), binding("S", 27.200000000000017)]),
830
- uses([
831
- proof(
832
- goal(surplus_n(clay_surplus, 27.200000000000017)),
833
- by(rule("field-nitrogen-balance.pl", clause(14))),
834
- bindings([binding("F", clay_surplus), binding("Surplus", 27.200000000000017), binding("Avail", 147.20000000000002), binding("__anon5", 70), binding("__anon6", 90), binding("__anon7", 0.08), binding("Demand", 120)]),
835
- uses([
836
- proof(
837
- goal(available_n(clay_surplus, 147.20000000000002)),
838
- by(rule("field-nitrogen-balance.pl", clause(13))),
839
- bindings([binding("F", clay_surplus), binding("Avail", 147.20000000000002), binding("Total", 160), binding("__anon2", 70), binding("__anon3", 90), binding("Loss", 0.08), binding("__anon4", 120), binding("Retained", 0.92000000000000004)]),
840
- uses([
841
- proof(
842
- goal(total_n(clay_surplus, 160)),
843
- by(rule("field-nitrogen-balance.pl", clause(12))),
844
- bindings([binding("F", clay_surplus), binding("Total", 160), binding("Soil", 70), binding("Fert", 90), binding("__anon0", 0.08), binding("__anon1", 120)]),
845
- uses([
846
- proof(
847
- goal(field(clay_surplus, 70, 90, 0.08, 120)),
848
- by(fact("field-nitrogen-balance.pl", clause(11)))
849
- ),
850
- proof(
851
- goal(add(70, 90, 160)),
852
- by(builtin(add, 3))
853
- )
854
- ])
855
- ),
856
- proof(
857
- goal(field(clay_surplus, 70, 90, 0.08, 120)),
858
- by(fact("field-nitrogen-balance.pl", clause(11)))
859
- ),
860
- proof(
861
- goal(sub(1.0, 0.08, 0.92000000000000004)),
862
- by(builtin(sub, 3))
863
- ),
864
- proof(
865
- goal(mul(160, 0.92000000000000004, 147.20000000000002)),
866
- by(builtin(mul, 3))
867
- )
868
- ])
869
- ),
870
- proof(
871
- goal(field(clay_surplus, 70, 90, 0.08, 120)),
872
- by(fact("field-nitrogen-balance.pl", clause(11)))
873
- ),
874
- proof(
875
- goal(gt(147.20000000000002, 120)),
876
- by(builtin(gt, 2))
877
- ),
878
- proof(
879
- goal(sub(147.20000000000002, 120, 27.200000000000017)),
880
- by(builtin(sub, 3))
881
- )
882
- ])
883
- )
884
- ])
885
- )
886
- ).
887
-
888
15
  surplusN_kg_ha(low_input, 0.0).
889
- why(
890
- surplusN_kg_ha(low_input, 0.0),
891
- proof(
892
- goal(surplusN_kg_ha(low_input, 0.0)),
893
- by(rule("field-nitrogen-balance.pl", clause(24))),
894
- bindings([binding("F", low_input), binding("S", 0.0)]),
895
- uses([
896
- proof(
897
- goal(surplus_n(low_input, 0.0)),
898
- by(rule("field-nitrogen-balance.pl", clause(15))),
899
- bindings([binding("F", low_input), binding("Avail", 58.5), binding("__anon8", 25), binding("__anon9", 40), binding("__anon10", 0.10), binding("Demand", 110)]),
900
- uses([
901
- proof(
902
- goal(available_n(low_input, 58.5)),
903
- by(rule("field-nitrogen-balance.pl", clause(13))),
904
- bindings([binding("F", low_input), binding("Avail", 58.5), binding("Total", 65), binding("__anon2", 25), binding("__anon3", 40), binding("Loss", 0.10), binding("__anon4", 110), binding("Retained", 0.90000000000000002)]),
905
- uses([
906
- proof(
907
- goal(total_n(low_input, 65)),
908
- by(rule("field-nitrogen-balance.pl", clause(12))),
909
- bindings([binding("F", low_input), binding("Total", 65), binding("Soil", 25), binding("Fert", 40), binding("__anon0", 0.10), binding("__anon1", 110)]),
910
- uses([
911
- proof(
912
- goal(field(low_input, 25, 40, 0.10, 110)),
913
- by(fact("field-nitrogen-balance.pl", clause(8)))
914
- ),
915
- proof(
916
- goal(add(25, 40, 65)),
917
- by(builtin(add, 3))
918
- )
919
- ])
920
- ),
921
- proof(
922
- goal(field(low_input, 25, 40, 0.10, 110)),
923
- by(fact("field-nitrogen-balance.pl", clause(8)))
924
- ),
925
- proof(
926
- goal(sub(1.0, 0.10, 0.90000000000000002)),
927
- by(builtin(sub, 3))
928
- ),
929
- proof(
930
- goal(mul(65, 0.90000000000000002, 58.5)),
931
- by(builtin(mul, 3))
932
- )
933
- ])
934
- ),
935
- proof(
936
- goal(field(low_input, 25, 40, 0.10, 110)),
937
- by(fact("field-nitrogen-balance.pl", clause(8)))
938
- ),
939
- proof(
940
- goal(le(58.5, 110)),
941
- by(builtin(le, 2))
942
- )
943
- ])
944
- )
945
- ])
946
- )
947
- ).
948
-
949
16
  surplusN_kg_ha(balanced_loam, 0.0).
950
- why(
951
- surplusN_kg_ha(balanced_loam, 0.0),
952
- proof(
953
- goal(surplusN_kg_ha(balanced_loam, 0.0)),
954
- by(rule("field-nitrogen-balance.pl", clause(24))),
955
- bindings([binding("F", balanced_loam), binding("S", 0.0)]),
956
- uses([
957
- proof(
958
- goal(surplus_n(balanced_loam, 0.0)),
959
- by(rule("field-nitrogen-balance.pl", clause(15))),
960
- bindings([binding("F", balanced_loam), binding("Avail", 110.0), binding("__anon8", 45), binding("__anon9", 80), binding("__anon10", 0.12), binding("Demand", 110)]),
961
- uses([
962
- proof(
963
- goal(available_n(balanced_loam, 110.0)),
964
- by(rule("field-nitrogen-balance.pl", clause(13))),
965
- bindings([binding("F", balanced_loam), binding("Avail", 110.0), binding("Total", 125), binding("__anon2", 45), binding("__anon3", 80), binding("Loss", 0.12), binding("__anon4", 110), binding("Retained", 0.88)]),
966
- uses([
967
- proof(
968
- goal(total_n(balanced_loam, 125)),
969
- by(rule("field-nitrogen-balance.pl", clause(12))),
970
- bindings([binding("F", balanced_loam), binding("Total", 125), binding("Soil", 45), binding("Fert", 80), binding("__anon0", 0.12), binding("__anon1", 110)]),
971
- uses([
972
- proof(
973
- goal(field(balanced_loam, 45, 80, 0.12, 110)),
974
- by(fact("field-nitrogen-balance.pl", clause(9)))
975
- ),
976
- proof(
977
- goal(add(45, 80, 125)),
978
- by(builtin(add, 3))
979
- )
980
- ])
981
- ),
982
- proof(
983
- goal(field(balanced_loam, 45, 80, 0.12, 110)),
984
- by(fact("field-nitrogen-balance.pl", clause(9)))
985
- ),
986
- proof(
987
- goal(sub(1.0, 0.12, 0.88)),
988
- by(builtin(sub, 3))
989
- ),
990
- proof(
991
- goal(mul(125, 0.88, 110.0)),
992
- by(builtin(mul, 3))
993
- )
994
- ])
995
- ),
996
- proof(
997
- goal(field(balanced_loam, 45, 80, 0.12, 110)),
998
- by(fact("field-nitrogen-balance.pl", clause(9)))
999
- ),
1000
- proof(
1001
- goal(le(110.0, 110)),
1002
- by(builtin(le, 2))
1003
- )
1004
- ])
1005
- )
1006
- ])
1007
- )
1008
- ).
1009
-
1010
17
  leachingIndex(sandy_high, 4.1999999999999993).
1011
- why(
1012
- leachingIndex(sandy_high, 4.1999999999999993),
1013
- proof(
1014
- goal(leachingIndex(sandy_high, 4.1999999999999993)),
1015
- by(rule("field-nitrogen-balance.pl", clause(25))),
1016
- bindings([binding("F", sandy_high), binding("I", 4.1999999999999993)]),
1017
- uses([
1018
- proof(
1019
- goal(leaching_index(sandy_high, 4.1999999999999993)),
1020
- by(rule("field-nitrogen-balance.pl", clause(18))),
1021
- bindings([binding("F", sandy_high), binding("Index", 4.1999999999999993), binding("Surplus", 12.0), binding("__anon17", 30), binding("__anon18", 150), binding("Loss", 0.35), binding("__anon19", 105)]),
1022
- uses([
1023
- proof(
1024
- goal(surplus_n(sandy_high, 12.0)),
1025
- by(rule("field-nitrogen-balance.pl", clause(14))),
1026
- bindings([binding("F", sandy_high), binding("Surplus", 12.0), binding("Avail", 117.0), binding("__anon5", 30), binding("__anon6", 150), binding("__anon7", 0.35), binding("Demand", 105)]),
1027
- uses([
1028
- proof(
1029
- goal(available_n(sandy_high, 117.0)),
1030
- by(rule("field-nitrogen-balance.pl", clause(13))),
1031
- bindings([binding("F", sandy_high), binding("Avail", 117.0), binding("Total", 180), binding("__anon2", 30), binding("__anon3", 150), binding("Loss", 0.35), binding("__anon4", 105), binding("Retained", 0.65000000000000002)]),
1032
- uses([
1033
- proof(
1034
- goal(total_n(sandy_high, 180)),
1035
- by(rule("field-nitrogen-balance.pl", clause(12))),
1036
- bindings([binding("F", sandy_high), binding("Total", 180), binding("Soil", 30), binding("Fert", 150), binding("__anon0", 0.35), binding("__anon1", 105)]),
1037
- uses([
1038
- proof(
1039
- goal(field(sandy_high, 30, 150, 0.35, 105)),
1040
- by(fact("field-nitrogen-balance.pl", clause(10)))
1041
- ),
1042
- proof(
1043
- goal(add(30, 150, 180)),
1044
- by(builtin(add, 3))
1045
- )
1046
- ])
1047
- ),
1048
- proof(
1049
- goal(field(sandy_high, 30, 150, 0.35, 105)),
1050
- by(fact("field-nitrogen-balance.pl", clause(10)))
1051
- ),
1052
- proof(
1053
- goal(sub(1.0, 0.35, 0.65000000000000002)),
1054
- by(builtin(sub, 3))
1055
- ),
1056
- proof(
1057
- goal(mul(180, 0.65000000000000002, 117.0)),
1058
- by(builtin(mul, 3))
1059
- )
1060
- ])
1061
- ),
1062
- proof(
1063
- goal(field(sandy_high, 30, 150, 0.35, 105)),
1064
- by(fact("field-nitrogen-balance.pl", clause(10)))
1065
- ),
1066
- proof(
1067
- goal(gt(117.0, 105)),
1068
- by(builtin(gt, 2))
1069
- ),
1070
- proof(
1071
- goal(sub(117.0, 105, 12.0)),
1072
- by(builtin(sub, 3))
1073
- )
1074
- ])
1075
- ),
1076
- proof(
1077
- goal(field(sandy_high, 30, 150, 0.35, 105)),
1078
- by(fact("field-nitrogen-balance.pl", clause(10)))
1079
- ),
1080
- proof(
1081
- goal(mul(12.0, 0.35, 4.1999999999999993)),
1082
- by(builtin(mul, 3))
1083
- )
1084
- ])
1085
- )
1086
- ])
1087
- )
1088
- ).
1089
-
1090
18
  leachingIndex(clay_surplus, 2.1760000000000015).
1091
- why(
1092
- leachingIndex(clay_surplus, 2.1760000000000015),
1093
- proof(
1094
- goal(leachingIndex(clay_surplus, 2.1760000000000015)),
1095
- by(rule("field-nitrogen-balance.pl", clause(25))),
1096
- bindings([binding("F", clay_surplus), binding("I", 2.1760000000000015)]),
1097
- uses([
1098
- proof(
1099
- goal(leaching_index(clay_surplus, 2.1760000000000015)),
1100
- by(rule("field-nitrogen-balance.pl", clause(18))),
1101
- bindings([binding("F", clay_surplus), binding("Index", 2.1760000000000015), binding("Surplus", 27.200000000000017), binding("__anon17", 70), binding("__anon18", 90), binding("Loss", 0.08), binding("__anon19", 120)]),
1102
- uses([
1103
- proof(
1104
- goal(surplus_n(clay_surplus, 27.200000000000017)),
1105
- by(rule("field-nitrogen-balance.pl", clause(14))),
1106
- bindings([binding("F", clay_surplus), binding("Surplus", 27.200000000000017), binding("Avail", 147.20000000000002), binding("__anon5", 70), binding("__anon6", 90), binding("__anon7", 0.08), binding("Demand", 120)]),
1107
- uses([
1108
- proof(
1109
- goal(available_n(clay_surplus, 147.20000000000002)),
1110
- by(rule("field-nitrogen-balance.pl", clause(13))),
1111
- bindings([binding("F", clay_surplus), binding("Avail", 147.20000000000002), binding("Total", 160), binding("__anon2", 70), binding("__anon3", 90), binding("Loss", 0.08), binding("__anon4", 120), binding("Retained", 0.92000000000000004)]),
1112
- uses([
1113
- proof(
1114
- goal(total_n(clay_surplus, 160)),
1115
- by(rule("field-nitrogen-balance.pl", clause(12))),
1116
- bindings([binding("F", clay_surplus), binding("Total", 160), binding("Soil", 70), binding("Fert", 90), binding("__anon0", 0.08), binding("__anon1", 120)]),
1117
- uses([
1118
- proof(
1119
- goal(field(clay_surplus, 70, 90, 0.08, 120)),
1120
- by(fact("field-nitrogen-balance.pl", clause(11)))
1121
- ),
1122
- proof(
1123
- goal(add(70, 90, 160)),
1124
- by(builtin(add, 3))
1125
- )
1126
- ])
1127
- ),
1128
- proof(
1129
- goal(field(clay_surplus, 70, 90, 0.08, 120)),
1130
- by(fact("field-nitrogen-balance.pl", clause(11)))
1131
- ),
1132
- proof(
1133
- goal(sub(1.0, 0.08, 0.92000000000000004)),
1134
- by(builtin(sub, 3))
1135
- ),
1136
- proof(
1137
- goal(mul(160, 0.92000000000000004, 147.20000000000002)),
1138
- by(builtin(mul, 3))
1139
- )
1140
- ])
1141
- ),
1142
- proof(
1143
- goal(field(clay_surplus, 70, 90, 0.08, 120)),
1144
- by(fact("field-nitrogen-balance.pl", clause(11)))
1145
- ),
1146
- proof(
1147
- goal(gt(147.20000000000002, 120)),
1148
- by(builtin(gt, 2))
1149
- ),
1150
- proof(
1151
- goal(sub(147.20000000000002, 120, 27.200000000000017)),
1152
- by(builtin(sub, 3))
1153
- )
1154
- ])
1155
- ),
1156
- proof(
1157
- goal(field(clay_surplus, 70, 90, 0.08, 120)),
1158
- by(fact("field-nitrogen-balance.pl", clause(11)))
1159
- ),
1160
- proof(
1161
- goal(mul(27.200000000000017, 0.08, 2.1760000000000015)),
1162
- by(builtin(mul, 3))
1163
- )
1164
- ])
1165
- )
1166
- ])
1167
- )
1168
- ).
1169
-
1170
19
  leachingIndex(low_input, 0.0).
1171
- why(
1172
- leachingIndex(low_input, 0.0),
1173
- proof(
1174
- goal(leachingIndex(low_input, 0.0)),
1175
- by(rule("field-nitrogen-balance.pl", clause(25))),
1176
- bindings([binding("F", low_input), binding("I", 0.0)]),
1177
- uses([
1178
- proof(
1179
- goal(leaching_index(low_input, 0.0)),
1180
- by(rule("field-nitrogen-balance.pl", clause(18))),
1181
- bindings([binding("F", low_input), binding("Index", 0.0), binding("Surplus", 0.0), binding("__anon17", 25), binding("__anon18", 40), binding("Loss", 0.10), binding("__anon19", 110)]),
1182
- uses([
1183
- proof(
1184
- goal(surplus_n(low_input, 0.0)),
1185
- by(rule("field-nitrogen-balance.pl", clause(15))),
1186
- bindings([binding("F", low_input), binding("Avail", 58.5), binding("__anon8", 25), binding("__anon9", 40), binding("__anon10", 0.10), binding("Demand", 110)]),
1187
- uses([
1188
- proof(
1189
- goal(available_n(low_input, 58.5)),
1190
- by(rule("field-nitrogen-balance.pl", clause(13))),
1191
- bindings([binding("F", low_input), binding("Avail", 58.5), binding("Total", 65), binding("__anon2", 25), binding("__anon3", 40), binding("Loss", 0.10), binding("__anon4", 110), binding("Retained", 0.90000000000000002)]),
1192
- uses([
1193
- proof(
1194
- goal(total_n(low_input, 65)),
1195
- by(rule("field-nitrogen-balance.pl", clause(12))),
1196
- bindings([binding("F", low_input), binding("Total", 65), binding("Soil", 25), binding("Fert", 40), binding("__anon0", 0.10), binding("__anon1", 110)]),
1197
- uses([
1198
- proof(
1199
- goal(field(low_input, 25, 40, 0.10, 110)),
1200
- by(fact("field-nitrogen-balance.pl", clause(8)))
1201
- ),
1202
- proof(
1203
- goal(add(25, 40, 65)),
1204
- by(builtin(add, 3))
1205
- )
1206
- ])
1207
- ),
1208
- proof(
1209
- goal(field(low_input, 25, 40, 0.10, 110)),
1210
- by(fact("field-nitrogen-balance.pl", clause(8)))
1211
- ),
1212
- proof(
1213
- goal(sub(1.0, 0.10, 0.90000000000000002)),
1214
- by(builtin(sub, 3))
1215
- ),
1216
- proof(
1217
- goal(mul(65, 0.90000000000000002, 58.5)),
1218
- by(builtin(mul, 3))
1219
- )
1220
- ])
1221
- ),
1222
- proof(
1223
- goal(field(low_input, 25, 40, 0.10, 110)),
1224
- by(fact("field-nitrogen-balance.pl", clause(8)))
1225
- ),
1226
- proof(
1227
- goal(le(58.5, 110)),
1228
- by(builtin(le, 2))
1229
- )
1230
- ])
1231
- ),
1232
- proof(
1233
- goal(field(low_input, 25, 40, 0.10, 110)),
1234
- by(fact("field-nitrogen-balance.pl", clause(8)))
1235
- ),
1236
- proof(
1237
- goal(mul(0.0, 0.10, 0.0)),
1238
- by(builtin(mul, 3))
1239
- )
1240
- ])
1241
- )
1242
- ])
1243
- )
1244
- ).
1245
-
1246
20
  leachingIndex(balanced_loam, 0.0).
1247
- why(
1248
- leachingIndex(balanced_loam, 0.0),
1249
- proof(
1250
- goal(leachingIndex(balanced_loam, 0.0)),
1251
- by(rule("field-nitrogen-balance.pl", clause(25))),
1252
- bindings([binding("F", balanced_loam), binding("I", 0.0)]),
1253
- uses([
1254
- proof(
1255
- goal(leaching_index(balanced_loam, 0.0)),
1256
- by(rule("field-nitrogen-balance.pl", clause(18))),
1257
- bindings([binding("F", balanced_loam), binding("Index", 0.0), binding("Surplus", 0.0), binding("__anon17", 45), binding("__anon18", 80), binding("Loss", 0.12), binding("__anon19", 110)]),
1258
- uses([
1259
- proof(
1260
- goal(surplus_n(balanced_loam, 0.0)),
1261
- by(rule("field-nitrogen-balance.pl", clause(15))),
1262
- bindings([binding("F", balanced_loam), binding("Avail", 110.0), binding("__anon8", 45), binding("__anon9", 80), binding("__anon10", 0.12), binding("Demand", 110)]),
1263
- uses([
1264
- proof(
1265
- goal(available_n(balanced_loam, 110.0)),
1266
- by(rule("field-nitrogen-balance.pl", clause(13))),
1267
- bindings([binding("F", balanced_loam), binding("Avail", 110.0), binding("Total", 125), binding("__anon2", 45), binding("__anon3", 80), binding("Loss", 0.12), binding("__anon4", 110), binding("Retained", 0.88)]),
1268
- uses([
1269
- proof(
1270
- goal(total_n(balanced_loam, 125)),
1271
- by(rule("field-nitrogen-balance.pl", clause(12))),
1272
- bindings([binding("F", balanced_loam), binding("Total", 125), binding("Soil", 45), binding("Fert", 80), binding("__anon0", 0.12), binding("__anon1", 110)]),
1273
- uses([
1274
- proof(
1275
- goal(field(balanced_loam, 45, 80, 0.12, 110)),
1276
- by(fact("field-nitrogen-balance.pl", clause(9)))
1277
- ),
1278
- proof(
1279
- goal(add(45, 80, 125)),
1280
- by(builtin(add, 3))
1281
- )
1282
- ])
1283
- ),
1284
- proof(
1285
- goal(field(balanced_loam, 45, 80, 0.12, 110)),
1286
- by(fact("field-nitrogen-balance.pl", clause(9)))
1287
- ),
1288
- proof(
1289
- goal(sub(1.0, 0.12, 0.88)),
1290
- by(builtin(sub, 3))
1291
- ),
1292
- proof(
1293
- goal(mul(125, 0.88, 110.0)),
1294
- by(builtin(mul, 3))
1295
- )
1296
- ])
1297
- ),
1298
- proof(
1299
- goal(field(balanced_loam, 45, 80, 0.12, 110)),
1300
- by(fact("field-nitrogen-balance.pl", clause(9)))
1301
- ),
1302
- proof(
1303
- goal(le(110.0, 110)),
1304
- by(builtin(le, 2))
1305
- )
1306
- ])
1307
- ),
1308
- proof(
1309
- goal(field(balanced_loam, 45, 80, 0.12, 110)),
1310
- by(fact("field-nitrogen-balance.pl", clause(9)))
1311
- ),
1312
- proof(
1313
- goal(mul(0.0, 0.12, 0.0)),
1314
- by(builtin(mul, 3))
1315
- )
1316
- ])
1317
- )
1318
- ])
1319
- )
1320
- ).
1321
-
1322
21
  highestLeachingRisk(field_nitrogen_balance, sandy_high).
1323
- why(
1324
- highestLeachingRisk(field_nitrogen_balance, sandy_high),
1325
- proof(
1326
- goal(highestLeachingRisk(field_nitrogen_balance, sandy_high)),
1327
- by(rule("field-nitrogen-balance.pl", clause(26))),
1328
- bindings([binding("Sandy", 4.1999999999999993), binding("Clay", 2.1760000000000015)]),
1329
- uses([
1330
- proof(
1331
- goal(leaching_index(sandy_high, 4.1999999999999993)),
1332
- by(rule("field-nitrogen-balance.pl", clause(18))),
1333
- bindings([binding("F", sandy_high), binding("Index", 4.1999999999999993), binding("Surplus", 12.0), binding("__anon17", 30), binding("__anon18", 150), binding("Loss", 0.35), binding("__anon19", 105)]),
1334
- uses([
1335
- proof(
1336
- goal(surplus_n(sandy_high, 12.0)),
1337
- by(rule("field-nitrogen-balance.pl", clause(14))),
1338
- bindings([binding("F", sandy_high), binding("Surplus", 12.0), binding("Avail", 117.0), binding("__anon5", 30), binding("__anon6", 150), binding("__anon7", 0.35), binding("Demand", 105)]),
1339
- uses([
1340
- proof(
1341
- goal(available_n(sandy_high, 117.0)),
1342
- by(rule("field-nitrogen-balance.pl", clause(13))),
1343
- bindings([binding("F", sandy_high), binding("Avail", 117.0), binding("Total", 180), binding("__anon2", 30), binding("__anon3", 150), binding("Loss", 0.35), binding("__anon4", 105), binding("Retained", 0.65000000000000002)]),
1344
- uses([
1345
- proof(
1346
- goal(total_n(sandy_high, 180)),
1347
- by(rule("field-nitrogen-balance.pl", clause(12))),
1348
- bindings([binding("F", sandy_high), binding("Total", 180), binding("Soil", 30), binding("Fert", 150), binding("__anon0", 0.35), binding("__anon1", 105)]),
1349
- uses([
1350
- proof(
1351
- goal(field(sandy_high, 30, 150, 0.35, 105)),
1352
- by(fact("field-nitrogen-balance.pl", clause(10)))
1353
- ),
1354
- proof(
1355
- goal(add(30, 150, 180)),
1356
- by(builtin(add, 3))
1357
- )
1358
- ])
1359
- ),
1360
- proof(
1361
- goal(field(sandy_high, 30, 150, 0.35, 105)),
1362
- by(fact("field-nitrogen-balance.pl", clause(10)))
1363
- ),
1364
- proof(
1365
- goal(sub(1.0, 0.35, 0.65000000000000002)),
1366
- by(builtin(sub, 3))
1367
- ),
1368
- proof(
1369
- goal(mul(180, 0.65000000000000002, 117.0)),
1370
- by(builtin(mul, 3))
1371
- )
1372
- ])
1373
- ),
1374
- proof(
1375
- goal(field(sandy_high, 30, 150, 0.35, 105)),
1376
- by(fact("field-nitrogen-balance.pl", clause(10)))
1377
- ),
1378
- proof(
1379
- goal(gt(117.0, 105)),
1380
- by(builtin(gt, 2))
1381
- ),
1382
- proof(
1383
- goal(sub(117.0, 105, 12.0)),
1384
- by(builtin(sub, 3))
1385
- )
1386
- ])
1387
- ),
1388
- proof(
1389
- goal(field(sandy_high, 30, 150, 0.35, 105)),
1390
- by(fact("field-nitrogen-balance.pl", clause(10)))
1391
- ),
1392
- proof(
1393
- goal(mul(12.0, 0.35, 4.1999999999999993)),
1394
- by(builtin(mul, 3))
1395
- )
1396
- ])
1397
- ),
1398
- proof(
1399
- goal(leaching_index(clay_surplus, 2.1760000000000015)),
1400
- by(rule("field-nitrogen-balance.pl", clause(18))),
1401
- bindings([binding("F", clay_surplus), binding("Index", 2.1760000000000015), binding("Surplus", 27.200000000000017), binding("__anon17", 70), binding("__anon18", 90), binding("Loss", 0.08), binding("__anon19", 120)]),
1402
- uses([
1403
- proof(
1404
- goal(surplus_n(clay_surplus, 27.200000000000017)),
1405
- by(rule("field-nitrogen-balance.pl", clause(14))),
1406
- bindings([binding("F", clay_surplus), binding("Surplus", 27.200000000000017), binding("Avail", 147.20000000000002), binding("__anon5", 70), binding("__anon6", 90), binding("__anon7", 0.08), binding("Demand", 120)]),
1407
- uses([
1408
- proof(
1409
- goal(available_n(clay_surplus, 147.20000000000002)),
1410
- by(rule("field-nitrogen-balance.pl", clause(13))),
1411
- bindings([binding("F", clay_surplus), binding("Avail", 147.20000000000002), binding("Total", 160), binding("__anon2", 70), binding("__anon3", 90), binding("Loss", 0.08), binding("__anon4", 120), binding("Retained", 0.92000000000000004)]),
1412
- uses([
1413
- proof(
1414
- goal(total_n(clay_surplus, 160)),
1415
- by(rule("field-nitrogen-balance.pl", clause(12))),
1416
- bindings([binding("F", clay_surplus), binding("Total", 160), binding("Soil", 70), binding("Fert", 90), binding("__anon0", 0.08), binding("__anon1", 120)]),
1417
- uses([
1418
- proof(
1419
- goal(field(clay_surplus, 70, 90, 0.08, 120)),
1420
- by(fact("field-nitrogen-balance.pl", clause(11)))
1421
- ),
1422
- proof(
1423
- goal(add(70, 90, 160)),
1424
- by(builtin(add, 3))
1425
- )
1426
- ])
1427
- ),
1428
- proof(
1429
- goal(field(clay_surplus, 70, 90, 0.08, 120)),
1430
- by(fact("field-nitrogen-balance.pl", clause(11)))
1431
- ),
1432
- proof(
1433
- goal(sub(1.0, 0.08, 0.92000000000000004)),
1434
- by(builtin(sub, 3))
1435
- ),
1436
- proof(
1437
- goal(mul(160, 0.92000000000000004, 147.20000000000002)),
1438
- by(builtin(mul, 3))
1439
- )
1440
- ])
1441
- ),
1442
- proof(
1443
- goal(field(clay_surplus, 70, 90, 0.08, 120)),
1444
- by(fact("field-nitrogen-balance.pl", clause(11)))
1445
- ),
1446
- proof(
1447
- goal(gt(147.20000000000002, 120)),
1448
- by(builtin(gt, 2))
1449
- ),
1450
- proof(
1451
- goal(sub(147.20000000000002, 120, 27.200000000000017)),
1452
- by(builtin(sub, 3))
1453
- )
1454
- ])
1455
- ),
1456
- proof(
1457
- goal(field(clay_surplus, 70, 90, 0.08, 120)),
1458
- by(fact("field-nitrogen-balance.pl", clause(11)))
1459
- ),
1460
- proof(
1461
- goal(mul(27.200000000000017, 0.08, 2.1760000000000015)),
1462
- by(builtin(mul, 3))
1463
- )
1464
- ])
1465
- ),
1466
- proof(
1467
- goal(gt(4.1999999999999993, 2.1760000000000015)),
1468
- by(builtin(gt, 2))
1469
- )
1470
- ])
1471
- )
1472
- ).
1473
-