occam-verify-cli 1.0.448 → 1.0.472

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 (222) hide show
  1. package/lib/constants.js +13 -5
  2. package/lib/context/ephemeral.js +270 -0
  3. package/lib/context/file.js +136 -128
  4. package/lib/context/liminal.js +120 -0
  5. package/lib/context/literal.js +92 -0
  6. package/lib/context/nominal.js +15 -1
  7. package/lib/context/release.js +68 -9
  8. package/lib/context/scoped.js +322 -0
  9. package/lib/context/synthetic.js +133 -0
  10. package/lib/element/assertion/contained.js +66 -66
  11. package/lib/element/assertion/defined.js +32 -32
  12. package/lib/element/assertion/property.js +39 -39
  13. package/lib/element/assertion/satisfies.js +22 -22
  14. package/lib/element/assumption.js +71 -87
  15. package/lib/element/combinator/bracketed.js +1 -10
  16. package/lib/element/conclusion.js +19 -15
  17. package/lib/element/constructor/bracketed.js +1 -10
  18. package/lib/element/constructor.js +2 -2
  19. package/lib/element/declaration/combinator.js +1 -2
  20. package/lib/element/declaration/metavariable.js +3 -3
  21. package/lib/element/declaration/variable.js +3 -3
  22. package/lib/element/deduction.js +26 -20
  23. package/lib/element/derivation.js +3 -3
  24. package/lib/element/equality.js +5 -5
  25. package/lib/element/equivalence.js +112 -107
  26. package/lib/element/equivalences.js +24 -10
  27. package/lib/element/error.js +3 -3
  28. package/lib/element/frame.js +73 -62
  29. package/lib/element/hypothesis.js +2 -2
  30. package/lib/element/judgement.js +40 -60
  31. package/lib/element/metaType.js +4 -4
  32. package/lib/element/metavariable.js +49 -38
  33. package/lib/element/parameter.js +13 -5
  34. package/lib/element/procedureCall.js +16 -16
  35. package/lib/element/proof.js +14 -13
  36. package/lib/element/proofAssertion/premise.js +319 -0
  37. package/lib/element/proofAssertion/step.js +309 -0
  38. package/lib/element/proofAssertion/supposition.js +333 -0
  39. package/lib/element/proofAssertion.js +20 -10
  40. package/lib/element/propertyRelation.js +2 -2
  41. package/lib/element/reference.js +72 -30
  42. package/lib/element/rule.js +26 -28
  43. package/lib/element/section.js +5 -5
  44. package/lib/element/signature.js +9 -6
  45. package/lib/element/statement.js +44 -36
  46. package/lib/element/subproof.js +18 -17
  47. package/lib/element/substitution/frame.js +86 -49
  48. package/lib/element/substitution/reference.js +101 -19
  49. package/lib/element/substitution/statement.js +128 -105
  50. package/lib/element/substitution/term.js +93 -57
  51. package/lib/element/substitution.js +20 -69
  52. package/lib/element/substitutions.js +49 -34
  53. package/lib/element/term.js +41 -30
  54. package/lib/element/topLevelAssertion/axiom.js +331 -0
  55. package/lib/element/{conjecture.js → topLevelAssertion/conjecture.js} +10 -10
  56. package/lib/element/{lemma.js → topLevelAssertion/lemma.js} +9 -9
  57. package/lib/element/{theorem.js → topLevelAssertion/theorem.js} +8 -8
  58. package/lib/element/topLevelAssertion.js +434 -0
  59. package/lib/element/{metaLemma.js → topLevelMetaAssertion/metaLemma.js} +8 -8
  60. package/lib/element/{metatheorem.js → topLevelMetaAssertion/metatheorem.js} +8 -8
  61. package/lib/element/topLevelMetaAssertion.js +293 -0
  62. package/lib/element/type.js +4 -4
  63. package/lib/element/variable.js +48 -40
  64. package/lib/index.js +3 -3
  65. package/lib/main.js +3 -3
  66. package/lib/metaTypes.js +18 -15
  67. package/lib/node/frame.js +2 -2
  68. package/lib/node/metavariable.js +4 -4
  69. package/lib/node/parameter.js +28 -7
  70. package/lib/node/proofAssertion/premise.js +116 -0
  71. package/lib/node/proofAssertion/step.js +152 -0
  72. package/lib/node/proofAssertion/supposition.js +116 -0
  73. package/lib/node/{premise.js → proofAssertion.js} +11 -18
  74. package/lib/node/statement.js +2 -2
  75. package/lib/node/substitution/frame.js +9 -31
  76. package/lib/node/substitution/reference.js +137 -0
  77. package/lib/node/substitution/statement.js +9 -31
  78. package/lib/node/substitution/term.js +9 -23
  79. package/lib/node/{axiom.js → topLevelAssertion/axiom.js} +7 -7
  80. package/lib/node/{conjecture.js → topLevelAssertion/conjecture.js} +7 -7
  81. package/lib/node/{lemma.js → topLevelAssertion/lemma.js} +7 -7
  82. package/lib/node/{theorem.js → topLevelAssertion/theorem.js} +7 -7
  83. package/lib/node/{axiomLemmaTheoremConjecture.js → topLevelAssertion.js} +9 -9
  84. package/lib/node/{metaLemma.js → topLevelMetaAssertion/metaLemma.js} +7 -7
  85. package/lib/node/{metatheorem.js → topLevelMetaAssertion/metatheorem.js} +7 -7
  86. package/lib/node/{metaLemmaMetaTheorem.js → topLevelMetaAssertion.js} +9 -9
  87. package/lib/nonTerminalNodeMap.js +15 -14
  88. package/lib/preamble.js +10 -10
  89. package/lib/process/instantiate.js +6 -21
  90. package/lib/process/unify.js +11 -10
  91. package/lib/tokenTypes.js +22 -0
  92. package/lib/types.js +3 -3
  93. package/lib/utilities/bnf.js +5 -5
  94. package/lib/utilities/context.js +63 -0
  95. package/lib/utilities/element.js +235 -408
  96. package/lib/utilities/instance.js +12 -34
  97. package/lib/utilities/json.js +3 -2
  98. package/lib/utilities/string.js +56 -21
  99. package/lib/utilities/unification.js +38 -32
  100. package/lib/utilities/validation.js +47 -50
  101. package/package.json +2 -2
  102. package/src/constants.js +12 -1
  103. package/src/context/ephemeral.js +257 -0
  104. package/src/context/file.js +108 -116
  105. package/src/context/liminal.js +67 -0
  106. package/src/context/literal.js +51 -0
  107. package/src/context/nominal.js +12 -0
  108. package/src/context/release.js +48 -8
  109. package/src/context/{local.js → scoped.js} +43 -125
  110. package/src/context/synthetic.js +60 -0
  111. package/src/element/assertion/contained.js +49 -47
  112. package/src/element/assertion/defined.js +29 -27
  113. package/src/element/assertion/property.js +35 -35
  114. package/src/element/assertion/satisfies.js +19 -18
  115. package/src/element/assumption.js +71 -93
  116. package/src/element/combinator/bracketed.js +0 -7
  117. package/src/element/conclusion.js +25 -24
  118. package/src/element/constructor/bracketed.js +0 -7
  119. package/src/element/constructor.js +1 -1
  120. package/src/element/declaration/combinator.js +0 -1
  121. package/src/element/declaration/metavariable.js +2 -2
  122. package/src/element/declaration/variable.js +5 -5
  123. package/src/element/deduction.js +33 -31
  124. package/src/element/derivation.js +2 -2
  125. package/src/element/equality.js +4 -4
  126. package/src/element/equivalence.js +115 -135
  127. package/src/element/equivalences.js +9 -7
  128. package/src/element/error.js +4 -2
  129. package/src/element/frame.js +80 -65
  130. package/src/element/hypothesis.js +1 -1
  131. package/src/element/judgement.js +42 -62
  132. package/src/element/metaType.js +3 -4
  133. package/src/element/metavariable.js +59 -56
  134. package/src/element/parameter.js +10 -5
  135. package/src/element/procedureCall.js +20 -18
  136. package/src/element/proof.js +14 -16
  137. package/src/element/{premise.js → proofAssertion/premise.js} +57 -53
  138. package/src/element/{step.js → proofAssertion/step.js} +59 -62
  139. package/src/element/{supposition.js → proofAssertion/supposition.js} +67 -56
  140. package/src/element/proofAssertion.js +24 -13
  141. package/src/element/propertyRelation.js +1 -1
  142. package/src/element/reference.js +87 -37
  143. package/src/element/rule.js +31 -37
  144. package/src/element/section.js +5 -5
  145. package/src/element/signature.js +8 -8
  146. package/src/element/statement.js +52 -48
  147. package/src/element/subproof.js +16 -18
  148. package/src/element/substitution/frame.js +104 -50
  149. package/src/element/substitution/reference.js +120 -20
  150. package/src/element/substitution/statement.js +169 -130
  151. package/src/element/substitution/term.js +104 -63
  152. package/src/element/substitution.js +16 -58
  153. package/src/element/substitutions.js +43 -41
  154. package/src/element/term.js +47 -41
  155. package/src/element/{axiom.js → topLevelAssertion/axiom.js} +22 -20
  156. package/src/element/{conjecture.js → topLevelAssertion/conjecture.js} +5 -6
  157. package/src/element/{lemma.js → topLevelAssertion/lemma.js} +5 -6
  158. package/src/element/{theorem.js → topLevelAssertion/theorem.js} +5 -5
  159. package/src/element/{axiomLemmaTheoremConjecture.js → topLevelAssertion.js} +37 -33
  160. package/src/element/{metaLemma.js → topLevelMetaAssertion/metaLemma.js} +5 -6
  161. package/src/element/{metatheorem.js → topLevelMetaAssertion/metatheorem.js} +5 -6
  162. package/src/element/{metaLemmaMetatheorem.js → topLevelMetaAssertion.js} +19 -17
  163. package/src/element/type.js +2 -4
  164. package/src/element/variable.js +47 -48
  165. package/src/index.js +2 -1
  166. package/src/main.js +2 -1
  167. package/src/metaTypes.js +25 -9
  168. package/src/node/frame.js +1 -1
  169. package/src/node/metavariable.js +3 -3
  170. package/src/node/parameter.js +32 -5
  171. package/src/node/proofAssertion/premise.js +16 -0
  172. package/src/node/{step.js → proofAssertion/step.js} +4 -18
  173. package/src/node/proofAssertion/supposition.js +16 -0
  174. package/src/node/proofAssertion.js +23 -0
  175. package/src/node/statement.js +1 -1
  176. package/src/node/substitution/frame.js +6 -32
  177. package/src/node/substitution/reference.js +38 -0
  178. package/src/node/substitution/statement.js +6 -32
  179. package/src/node/substitution/term.js +6 -22
  180. package/src/node/topLevelAssertion/axiom.js +13 -0
  181. package/src/node/topLevelAssertion/conjecture.js +13 -0
  182. package/src/node/topLevelAssertion/lemma.js +13 -0
  183. package/src/node/topLevelAssertion/theorem.js +13 -0
  184. package/src/node/{axiomLemmaTheoremConjecture.js → topLevelAssertion.js} +1 -1
  185. package/src/node/topLevelMetaAssertion/metaLemma.js +13 -0
  186. package/src/node/topLevelMetaAssertion/metatheorem.js +13 -0
  187. package/src/node/{metaLemmaMetaTheorem.js → topLevelMetaAssertion.js} +1 -1
  188. package/src/nonTerminalNodeMap.js +15 -12
  189. package/src/preamble.js +9 -9
  190. package/src/process/instantiate.js +27 -36
  191. package/src/process/unify.js +10 -9
  192. package/src/tokenTypes.js +4 -0
  193. package/src/types.js +4 -2
  194. package/src/utilities/bnf.js +3 -2
  195. package/src/utilities/context.js +46 -0
  196. package/src/utilities/element.js +302 -509
  197. package/src/utilities/instance.js +19 -42
  198. package/src/utilities/json.js +3 -1
  199. package/src/utilities/string.js +69 -28
  200. package/src/utilities/unification.js +41 -38
  201. package/src/utilities/validation.js +66 -75
  202. package/lib/context/local.js +0 -605
  203. package/lib/context/temporary.js +0 -752
  204. package/lib/element/axiom.js +0 -329
  205. package/lib/element/axiomLemmaTheoremConjecture.js +0 -427
  206. package/lib/element/metaLemmaMetatheorem.js +0 -289
  207. package/lib/element/premise.js +0 -307
  208. package/lib/element/step.js +0 -311
  209. package/lib/element/supposition.js +0 -320
  210. package/lib/log.js +0 -150
  211. package/lib/node/step.js +0 -166
  212. package/lib/node/supposition.js +0 -130
  213. package/src/context/temporary.js +0 -476
  214. package/src/log.js +0 -118
  215. package/src/node/axiom.js +0 -13
  216. package/src/node/conjecture.js +0 -13
  217. package/src/node/lemma.js +0 -13
  218. package/src/node/metaLemma.js +0 -13
  219. package/src/node/metatheorem.js +0 -13
  220. package/src/node/premise.js +0 -30
  221. package/src/node/supposition.js +0 -30
  222. package/src/node/theorem.js +0 -13
@@ -10,13 +10,15 @@ import FileContext from "../context/file";
10
10
  import NominalLexer from "../nominal/lexer";
11
11
  import NominalParser from "../nominal/parser";
12
12
 
13
+ import { LEVELS } from "../constants";
13
14
  import { getMetaTypes } from "../metaTypes";
14
15
  import { customGrammarFromNameAndEntries, combinedCustomGrammarFromReleaseContexts } from "../utilities/customGrammar";
15
16
 
16
17
  const { nominalLexerFromCombinedCustomGrammar } = lexersUtilities,
17
18
  { nominalParserFromCombinedCustomGrammar } = parsersUtilities,
18
19
  { tail, push, first, clear, filter, resolve, compress } = arrayUtilities,
19
- { isFilePathFurtleFilePath, isFilePathNominalFilePath } = filePathUtilities;
20
+ { isFilePathFurtleFilePath, isFilePathNominalFilePath } = filePathUtilities,
21
+ [ TRACE_LEVEL, DEBUG_LEVEL, INFO_LEVEL, WARNING_LEVEL, ERROR_LEVEL ] = LEVELS;
20
22
 
21
23
  export default class ReleaseContext {
22
24
  constructor(log, name, json, entries, lexer, parser, verified, initialised, fileContexts, customGrammar, dependencyReleaseContexts) {
@@ -430,15 +432,51 @@ export default class ReleaseContext {
430
432
 
431
433
  matchShortenedVersion(shortenedVersion) { return this.entries.matchShortenedVersion(shortenedVersion); }
432
434
 
433
- trace(message, filePath = null, lineIndex = null) { this.log.trace(message, filePath, lineIndex); }
435
+ trace(message, filePath = null, lineIndex = null) {
436
+ const level = TRACE_LEVEL;
434
437
 
435
- debug(message, filePath = null, lineIndex = null) { this.log.debug(message, filePath, lineIndex); }
438
+ this.writeToLog(level, message, filePath, lineIndex);
439
+ }
440
+
441
+ debug(message, filePath = null, lineIndex = null) {
442
+ const level = DEBUG_LEVEL
443
+
444
+ this.writeToLog(level, message, filePath, lineIndex);
445
+ }
446
+
447
+ info(message, filePath = null, lineIndex = null) {
448
+ const level = INFO_LEVEL;
436
449
 
437
- info(message, filePath = null, lineIndex = null) { this.log.info(message, filePath, lineIndex); }
450
+ this.writeToLog(level, message, filePath, lineIndex);
451
+ }
452
+
453
+ warning(message, filePath = null, lineIndex = null) {
454
+ const level = WARNING_LEVEL;
438
455
 
439
- warning(message, filePath = null, lineIndex = null) { this.log.warning(message, filePath, lineIndex); }
456
+ this.writeToLog(level, message, filePath, lineIndex);
457
+ }
440
458
 
441
- error(message, filePath = null, lineIndex = null) { this.log.error(message, filePath, lineIndex); }
459
+ error(message, filePath = null, lineIndex = null) {
460
+ const level = ERROR_LEVEL;
461
+
462
+ this.writeToLog(level, message, filePath, lineIndex);
463
+ }
464
+
465
+ writeToLog(level, message, filePath, lineIndex) {
466
+ this.log.write(level, message, filePath, lineIndex);
467
+ }
468
+
469
+ getFileContext() {
470
+ const fileContext = null;
471
+
472
+ return fileContext;
473
+ }
474
+
475
+ getDepth() {
476
+ const depth = -1;
477
+
478
+ return depth;
479
+ }
442
480
 
443
481
  initialise(releaseContexts) {
444
482
  const combinedCustomGrammar = combinedCustomGrammarFromReleaseContexts(releaseContexts),
@@ -582,7 +620,8 @@ function fileContextsFromJSON(json,fileContexts, releaseContext) {
582
620
  }
583
621
 
584
622
  if (filePathNominalFilePath) {
585
- const fileContext = FileContext.fromFilePath(filePath, releaseContext);
623
+ const context = releaseContext, ///
624
+ fileContext = FileContext.fromFilePath(filePath, context);
586
625
 
587
626
  fileContexts.push(fileContext);
588
627
 
@@ -605,7 +644,8 @@ function fileContextsFromEntries(entries, fileContexts, releaseContext) {
605
644
  }
606
645
 
607
646
  if (filePathNominalFilePath) {
608
- const fileContext = FileContext.fromFile(file, releaseContext);
647
+ const context = releaseContext, ///
648
+ fileContext = FileContext.fromFile(file, context);
609
649
 
610
650
  fileContexts.push(fileContext);
611
651
  }
@@ -1,18 +1,22 @@
1
1
  "use strict";
2
2
 
3
3
  import { arrayUtilities } from "necessary";
4
+ import { contextUtilities } from "occam-furtle";
4
5
 
5
6
  import elements from "../elements";
6
7
 
7
- const { last } = arrayUtilities;
8
+ const { last } = arrayUtilities,
9
+ { chainContext } = contextUtilities;
8
10
 
9
- class LocalContext {
11
+ class ScopedContext {
10
12
  constructor(context, variables, judgements, equivalences, subproofOrProofAssertions) {
11
13
  this.context = context;
12
14
  this.variables = variables;
13
15
  this.judgements = judgements;
14
16
  this.equivalences = equivalences;
15
17
  this.subproofOrProofAssertions = subproofOrProofAssertions;
18
+
19
+ return chainContext(this);
16
20
  }
17
21
 
18
22
  getContext() {
@@ -50,7 +54,9 @@ class LocalContext {
50
54
  getEquivalences() {
51
55
  let equivalences = this.context.getEquivalences();
52
56
 
53
- equivalences = this.equivalences.mergedWith(equivalences); ///
57
+ const context = this; ///
58
+
59
+ equivalences = this.equivalences.mergedWith(equivalences, context); ///
54
60
 
55
61
  return equivalences;
56
62
  }
@@ -92,32 +98,6 @@ class LocalContext {
92
98
  return subproofOrProofAssertions;
93
99
  }
94
100
 
95
- getFilePath() { return this.context.getFilePath(); }
96
-
97
- getLexer() { return this.context.getLexer(); }
98
-
99
- getParser() { return this.context.getParser(); }
100
-
101
- getAxioms() { return this.context.getAxioms(); }
102
-
103
- getLemmas() { return this.context.getLemmas(); }
104
-
105
- getTheorems() { return this.context.getTheorems(); }
106
-
107
- getConjectures() { return this.context.getConjectures(); }
108
-
109
- getCombinators() { return this.context.getCombinators(); }
110
-
111
- getConstructors() { return this.context.getConstructors(); }
112
-
113
- getTypePrefix() { return this.context.getTypePrefix(); }
114
-
115
- addAxiom(axiom) { this.context.addAxiom(axiom); }
116
-
117
- addLemma(lemma) { this.context.addLemma(lemma); }
118
-
119
- addTheorem(theorem) { this.context.addTheorem(theorem); }
120
-
121
101
  addEquality(equality) {
122
102
  let equalityAdded;
123
103
 
@@ -191,40 +171,7 @@ class LocalContext {
191
171
  this.subproofOrProofAssertions.push(subproofOrProofAssertion);
192
172
  }
193
173
 
194
- findProcedureByName(name) { return this.context.findProcedureByName(name); }
195
-
196
- findLabelByReference(reference, context) { return this.context.findLabelByReference(reference, context); }
197
-
198
- findRuleByReference(reference) { return this.context.findRuleByReference(reference); }
199
-
200
- findAxiomByReference(reference) { return this.context.findAxiomByReference(reference); }
201
-
202
- findLemmaByReference(reference) { return this.context.findLemmaByReference(reference); }
203
-
204
- findTheoremByReference(reference) { return this.context.findTheoremByReference(reference); }
205
-
206
- findConjectureByReference(reference) { return this.context.findConjectureByReference(reference); }
207
-
208
- findMetaLemmasByReference(reference) { return this.context.findMetaLemmasByReference(reference); }
209
-
210
- findMetatheoremsByReference(reference) { return this.context.findMetatheoremsByReference(reference); }
211
-
212
- findMetaLemmaMetatheoremByReference(reference) { return this.context.findMetaLemmaMetatheoremByReference(reference); }
213
-
214
- findMetaLemmaMetatheoremsByReference(reference) { return this.context.findMetaLemmaMetatheoremsByReference(reference); }
215
-
216
- findVariableByVariableIdentifier(variableIdentifier, nested = true) {
217
- const variables = this.getVariables(nested),
218
- variable = variables.find((variable) => {
219
- const variableComparesToVariableIdentifier = variable.compareVariableIdentifier(variableIdentifier);
220
-
221
- if (variableComparesToVariableIdentifier) {
222
- return true;
223
- }
224
- }) || null;
225
-
226
- return variable;
227
- }
174
+ findEquivalenceByTerm(term) { return this.equivalences.findEquivalenceByTerm(term); }
228
175
 
229
176
  findJudgementByMetavariable(metavariable) {
230
177
  const judgements = this.getJudgements(),
@@ -244,56 +191,17 @@ class LocalContext {
244
191
  return judgement;
245
192
  }
246
193
 
247
- findEquivalenceByTerm(term) { return this.equivalences.findEquivalenceByTerm(term); }
248
-
249
- findMetavariable(metavariable) { return this.context.findMetavariable(metavariable); }
250
-
251
- findLabelByMetavariable(metavariable) { return this.context.findLabelByMetavariable(metavariable); }
252
-
253
- findTypeByNominalTypeName(nominalTypeName) { return this.context.findTypeByNominalTypeName(nominalTypeName); }
254
-
255
- findMetaTypeByMetaTypeName(metaTypeName) { return this.context.findMetaTypeByMetaTypeName(metaTypeName); }
256
-
257
- findMetavariableByMetavariableName(metavariableName) { return this.context.findMetavariableByMetavariableName(metavariableName); }
258
-
259
- isProcedurePresentByName(name) { return this.context.isProcedurePresentByName(name); }
260
-
261
- isLabelPresentByReference(reference) { return this.context.isLabelPresentByReference(reference); }
262
-
263
- isMetavariablePresentByReference(reference) { return this.context.isMetavariablePresentByReference(reference); }
264
-
265
- isMetaLemmaMetatheoremPresentByReference(reference) { return this.context.isMetaLemmaMetatheoremPresentByReference(reference); }
266
-
267
- findAxiomLemmaTheoremOrConjectureByReference(reference) { return this.context.findAxiomLemmaTheoremOrConjectureByReference(reference); }
268
-
269
- isMetavariablePresent(metavariable) { return this.context.isMetavariablePresent(metavariable); }
270
-
271
- isTypePresentByTypeName(typeName, includeRelease = true, includeDependencies = true) { return this.context.isTypePresentByTypeName(typeName, includeRelease, includeDependencies); }
272
-
273
- isTypePresentByNominalTypeName(nominalTypeName) { return this.context.isTypePresentByNominalTypeName(nominalTypeName); }
274
-
275
- isTypePresentByPrefixedTypeName(prefixedTypeName) { return this.context.isTypePresentByPrefixedTypeName(prefixedTypeName); }
276
-
277
- isTypePrefixPresentByTypePrefixName(typePrefixName) { return this.context.isTypePrefixPresentByTypePrefixName(typePrefixName); }
278
-
279
- isVariablePresentByVariableIdentifier(variableIdentifier, nested = true) {
280
- const variable = this.findVariableByVariableIdentifier(variableIdentifier, nested),
281
- variablePresent = (variable !== null);
282
-
283
- return variablePresent;
284
- }
285
-
286
- isLabelPresentByMetavariableName(metavariableName) { return this.context.isLabelPresentByMetavariableName(metavariableName); }
287
-
288
- isLabelPresentByMetavariable(metavariable) { return this.context.isLabelPresentByMetavariable(metavariable); }
289
-
290
- isMetavariablePresentByMetavariableName(metavariableNode) { return this.context.isMetavariablePresentByMetavariableName(metavariableNode); }
194
+ findVariableByVariableIdentifier(variableIdentifier, nested = true) {
195
+ const variables = this.getVariables(nested),
196
+ variable = variables.find((variable) => {
197
+ const variableComparesToVariableIdentifier = variable.compareVariableIdentifier(variableIdentifier);
291
198
 
292
- isJudgementPresentByMetavariable(metavariable) {
293
- const judgement = this.findJudgementByMetavariable(metavariable),
294
- judgementPresent = (judgement !== null);
199
+ if (variableComparesToVariableIdentifier) {
200
+ return true;
201
+ }
202
+ }) || null;
295
203
 
296
- return judgementPresent;
204
+ return variable;
297
205
  }
298
206
 
299
207
  isTermGrounded(term) {
@@ -344,6 +252,20 @@ class LocalContext {
344
252
  return metavariableDefined
345
253
  }
346
254
 
255
+ isJudgementPresentByMetavariable(metavariable) {
256
+ const judgement = this.findJudgementByMetavariable(metavariable),
257
+ judgementPresent = (judgement !== null);
258
+
259
+ return judgementPresent;
260
+ }
261
+
262
+ isVariablePresentByVariableIdentifier(variableIdentifier, nested = true) {
263
+ const variable = this.findVariableByVariableIdentifier(variableIdentifier, nested),
264
+ variablePresent = (variable !== null);
265
+
266
+ return variablePresent;
267
+ }
268
+
347
269
  compareTermAndPropertyRelation(term, propertyRelation) {
348
270
  const context = this, ///
349
271
  proofAssertions = this.getProofAssertions(),
@@ -358,30 +280,26 @@ class LocalContext {
358
280
  return comparesToTermAndPropertyRelation;
359
281
  }
360
282
 
361
- nodeAsString(node) { return this.context.nodeAsString(node); }
362
-
363
- nodesAsString(node) { return this.context.nodesAsString(node); }
283
+ getFileContext() { return this.context.getFileContext(); }
364
284
 
365
- trace(message, node = null) { this.context.trace(message, node); }
285
+ getDepth() {
286
+ let depth = this.context.getDepth();
366
287
 
367
- debug(message, node = null) { this.context.debug(message, node); }
288
+ depth++;
368
289
 
369
- info(message, node = null) { this.context.info(message, node); }
370
-
371
- warning(message, node = null) { this.context.warning(message, node); }
372
-
373
- error(message, node = null) { this.context.error(message, node); }
290
+ return depth;
291
+ }
374
292
 
375
293
  static fromNothing(context) {
376
294
  const { Equivalences } = elements,
377
295
  variables = [],
378
296
  judgements = [],
379
- equivalences = Equivalences.fromNothing(),
297
+ equivalences = Equivalences.fromNothing(context),
380
298
  subproofOrProofAssertions = [],
381
- localContext = new LocalContext(context, variables, judgements, equivalences, subproofOrProofAssertions);
299
+ scopedContext = new ScopedContext(context, variables, judgements, equivalences, subproofOrProofAssertions);
382
300
 
383
- return localContext;
301
+ return scopedContext;
384
302
  }
385
303
  }
386
304
 
387
- export default LocalContext;
305
+ export default ScopedContext;
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+
3
+ import { contextUtilities } from "occam-furtle";
4
+
5
+ const { chainContext } = contextUtilities;
6
+
7
+ export default class SyntheticContext {
8
+ constructor(context, generalContext, specificContext) {
9
+ this.context = context;
10
+ this.generalContext = generalContext;
11
+ this.specificContext = specificContext;
12
+
13
+ return chainContext(this);
14
+ }
15
+
16
+ getContext() {
17
+ return this.context;
18
+ }
19
+
20
+ getGeneralContext() {
21
+ return this.generalContext;
22
+ }
23
+
24
+ getSpecificContext() {
25
+ return this.specificContext;
26
+ }
27
+
28
+ findTermByTermNode(termNode) { return this.specificContext.findTermByTermNode(termNode); }
29
+
30
+ findFrameByFrameNode(frameNode) { return this.specificContext.findFrameByFrameNode(frameNode); }
31
+
32
+ findTypeByNominalTypeName(nominalTypeName) { return this.specificContext.findTypeByNominalTypeName(nominalTypeName); }
33
+
34
+ isTypePresentByNominalTypeName(nominalTypeName) { return this.specificContext.isTypePresentByNominalTypeName(nominalTypeName); }
35
+
36
+ findVariableByVariableIdentifier(variableIdentifier) { return this.generalContext.findVariableByVariableIdentifier(variableIdentifier); }
37
+
38
+ findMetavariableByMetavariableName(metavariableName) { return this.generalContext.findMetavariableByMetavariableName(metavariableName); }
39
+
40
+ isVariablePresentByVariableIdentifier(variableIdentifier) { this.generalContext.isVariablePresentByVariableIdentifier(variableIdentifier); }
41
+
42
+ isMetavariablePresentByMetavariableName(metavariableName) { this.generalContext.isMetavariablePresentByMetavariableName(metavariableName); }
43
+
44
+ getFileContext() { return this.context.getFileContext(); }
45
+
46
+ getDepth() {
47
+ let depth = this.context.getDepth();
48
+
49
+ depth++;
50
+
51
+ return depth;
52
+ }
53
+
54
+ static fromNothing(generalContext, specificContext) {
55
+ const context = specificContext, ///
56
+ syntheticContext = new SyntheticContext(context, generalContext, specificContext);
57
+
58
+ return syntheticContext;
59
+ }
60
+ }
@@ -6,7 +6,7 @@ import { define } from "../../elements";
6
6
  import { termFromTermAndSubstitutions, frameFromFrameAndSubstitutions, statementFromStatementAndSubstitutions } from "../../utilities/substitutions";
7
7
 
8
8
  export default define(class ContainedAssertion extends Assertion {
9
- constructor(cpontext, string, node, term, frame, negated, statement) {
9
+ constructor(context, string, node, term, frame, negated, statement) {
10
10
  super(context, string, node);
11
11
 
12
12
  this.term = term;
@@ -31,46 +31,47 @@ export default define(class ContainedAssertion extends Assertion {
31
31
  return this.statement;
32
32
  }
33
33
 
34
- verify(assignments, stated, context) {
35
- let verifies = false;
34
+ validate(assignments, stated, context) {
35
+ let validates = false;
36
36
 
37
37
  const containedAssertionString = this.getString(); ///
38
38
 
39
- context.trace(`Verifying the '${containedAssertionString}' contained assertion...`);
39
+ context.trace(`Validating the '${containedAssertionString}' contained assertion...`);
40
40
 
41
41
  const termValidates = this.validateTerm(assignments, stated, context),
42
- frameVerifies = this.verifyFrame(assignments, stated, context),
42
+ frameVerifies = this.validateFrame(assignments, stated, context),
43
43
  statementValidates = this.validateStatement(assignments, stated, context)
44
44
 
45
45
  if (termValidates || frameVerifies || statementValidates) {
46
- let verifiesWhenStated = false,
47
- verifiesWhenDerived = false;
46
+ let validatesWhenStated = false,
47
+ validatesWhenDerived = false;
48
48
 
49
49
  if (stated) {
50
- verifiesWhenStated = this.verifyWhenStated(assignments, context);
50
+ validatesWhenStated = this.validateWhenStated(assignments, context);
51
51
  } else {
52
- verifiesWhenDerived = this.verifyWhenDerived(context);
52
+ validatesWhenDerived = this.validateWhenDerived(context);
53
53
  }
54
54
 
55
- if (verifiesWhenStated || verifiesWhenDerived) {
56
- verifies = true;
55
+ if (validatesWhenStated || validatesWhenDerived) {
56
+ validates = true;
57
57
  }
58
58
  }
59
59
 
60
- if (verifies) {
61
- context.debug(`...verified the '${containedAssertionString}' contained assertion.`);
60
+ if (validates) {
61
+ context.debug(`...validated the '${containedAssertionString}' contained assertion.`);
62
62
  }
63
63
 
64
- return verifies;
64
+ return validates;
65
65
  }
66
66
 
67
67
  validateTerm(assignments, stated, context) {
68
68
  let termValidates = false;
69
69
 
70
70
  if (this.term !== null) {
71
- const termString = this.term.getString();
71
+ const termString = this.term.getString(),
72
+ containedAssertionString = this.getString(); ///
72
73
 
73
- context.trace(`Validating the '${termString}' term...`);
74
+ context.trace(`Validating the '${containedAssertionString}' contained assertino's '${termString}' term...`);
74
75
 
75
76
  const termSingular = this.term.isSingular();
76
77
 
@@ -78,13 +79,13 @@ export default define(class ContainedAssertion extends Assertion {
78
79
  context.debug(`The '${termString}' term is not singular.`);
79
80
  } else {
80
81
  termValidates = this.term.validate(context, () => {
81
- const verifiesAhead = true;
82
+ const validatesAhead = true;
82
83
 
83
- return verifiesAhead;
84
+ return validatesAhead;
84
85
  });
85
86
 
86
87
  if (termValidates) {
87
- context.debug(`...validated the '${termString}' term.`);
88
+ context.debug(`...validated the '${containedAssertionString}' contained assertino's '${termString}' term.`);
88
89
  }
89
90
  }
90
91
  }
@@ -92,13 +93,14 @@ export default define(class ContainedAssertion extends Assertion {
92
93
  return termValidates;
93
94
  }
94
95
 
95
- verifyFrame(assignments, stated, context) {
96
+ validateFrame(assignments, stated, context) {
96
97
  let frameVerifies = false;
97
98
 
98
99
  if (this.frame !== null) {
99
- const frameString = this.frame.getString();
100
+ const frameString = this.frame.getString(),
101
+ containedAssertionString = this.getString(); ///
100
102
 
101
- context.trace(`Verifying the '${frameString}' frame...`);
103
+ context.trace(`Validating the '${containedAssertionString}' contained assertino's '${frameString}' frame...`);
102
104
 
103
105
  const frameSingular = this.frame.isSingular();
104
106
 
@@ -109,10 +111,10 @@ export default define(class ContainedAssertion extends Assertion {
109
111
 
110
112
  assignments = null; ///
111
113
 
112
- frameVerifies = this.frame.verify(assignments, stated, context);
114
+ frameVerifies = this.frame.validate(assignments, stated, context);
113
115
 
114
116
  if (frameVerifies) {
115
- context.debug(`...verified the '${frameString}' frame.`);
117
+ context.debug(`...validated the '${containedAssertionString}' contained assertino's '${frameString}' frame.`);
116
118
  }
117
119
  }
118
120
  }
@@ -142,39 +144,39 @@ export default define(class ContainedAssertion extends Assertion {
142
144
  return statementValidates;
143
145
  }
144
146
 
145
- verifyWhenStated(assignments, context) {
146
- let verifiesWhenStated;
147
+ validateWhenStated(assignments, context) {
148
+ let validatesWhenStated;
147
149
 
148
150
  const containedAssertionString = this.getString(); ///
149
151
 
150
- context.trace(`Verifying the '${containedAssertionString}' stated contained assertion...`);
152
+ context.trace(`Validating the '${containedAssertionString}' stated contained assertion...`);
151
153
 
152
- verifiesWhenStated = true;
154
+ validatesWhenStated = true;
153
155
 
154
- if (verifiesWhenStated) {
155
- context.debug(`...verified the '${containedAssertionString}' stated contained assertion.`);
156
+ if (validatesWhenStated) {
157
+ context.debug(`...validated the '${containedAssertionString}' stated contained assertion.`);
156
158
  }
157
159
 
158
- return verifiesWhenStated;
160
+ return validatesWhenStated;
159
161
  }
160
162
 
161
- verifyWhenDerived(context) {
162
- let verifiesWhenDerived;
163
+ validateWhenDerived(context) {
164
+ let validatesWhenDerived;
163
165
 
164
166
  const containedAssertionString = this.getString(); ///
165
167
 
166
- context.trace(`Verifying the '${containedAssertionString}' derived contained assertion...`);
168
+ context.trace(`Validating the '${containedAssertionString}' derived contained assertion...`);
167
169
 
168
170
  const generalCotnext = null,
169
171
  specificContext = context; ///
170
172
 
171
- verifiesWhenDerived = verifyWhenDerived(this.term, this.frame, this.statement, this.negated, generalCotnext, specificContext);
173
+ validatesWhenDerived = validateWhenDerived(this.term, this.frame, this.statement, this.negated, generalCotnext, specificContext);
172
174
 
173
- if (verifiesWhenDerived) {
174
- context.debug(`...verified the '${containedAssertionString}' derived contained assertion.`);
175
+ if (validatesWhenDerived) {
176
+ context.debug(`...validated the '${containedAssertionString}' derived contained assertion.`);
175
177
  }
176
178
 
177
- return verifiesWhenDerived;
179
+ return validatesWhenDerived;
178
180
  }
179
181
 
180
182
  unifyIndependently(substitutions, generalContext, specificContext) {
@@ -188,9 +190,9 @@ export default define(class ContainedAssertion extends Assertion {
188
190
  const term = termFromTermAndSubstitutions(this.term, substitutions, generalContext, specificContext),
189
191
  frame = frameFromFrameAndSubstitutions(this.frame, substitutions, generalContext, specificContext),
190
192
  statement = statementFromStatementAndSubstitutions(this.statement, substitutions, generalContext, specificContext),
191
- verifiesWhenDerived = verifyWhenDerived(term, frame, statement, this.negated, generalContext, specificContext);
193
+ validatesWhenDerived = validateWhenDerived(term, frame, statement, this.negated, generalContext, specificContext);
192
194
 
193
- unifiesIndependently = verifiesWhenDerived; ///
195
+ unifiesIndependently = validatesWhenDerived; ///
194
196
 
195
197
  if (unifiesIndependently) {
196
198
  context.debug(`...unified the '${containedAssertionString}' contained assertion independently.`);
@@ -202,8 +204,8 @@ export default define(class ContainedAssertion extends Assertion {
202
204
  static name = "ContainedAssertion";
203
205
  });
204
206
 
205
- function verifyWhenDerived(term, frame, statement, negated, generalContext, specificContext) {
206
- let verifiesWhenDerived = false;
207
+ function validateWhenDerived(term, frame, statement, negated, generalContext, specificContext) {
208
+ let validatesWhenDerived = false;
207
209
 
208
210
  const context = specificContext; ///
209
211
 
@@ -212,11 +214,11 @@ function verifyWhenDerived(term, frame, statement, negated, generalContext, spec
212
214
  const termContained = statement.isTermContained(term, context);
213
215
 
214
216
  if (!negated && termContained) {
215
- verifiesWhenDerived = true;
217
+ validatesWhenDerived = true;
216
218
  }
217
219
 
218
220
  if (negated && !termContained) {
219
- verifiesWhenDerived = true;
221
+ validatesWhenDerived = true;
220
222
  }
221
223
  }
222
224
 
@@ -224,14 +226,14 @@ function verifyWhenDerived(term, frame, statement, negated, generalContext, spec
224
226
  const frameContained = statement.isFrameContained(frame, context);
225
227
 
226
228
  if (!negated && frameContained) {
227
- verifiesWhenDerived = true;
229
+ validatesWhenDerived = true;
228
230
  }
229
231
 
230
232
  if (negated && !frameContained) {
231
- verifiesWhenDerived = true;
233
+ validatesWhenDerived = true;
232
234
  }
233
235
  }
234
236
  }
235
237
 
236
- return verifiesWhenDerived;
238
+ return validatesWhenDerived;
237
239
  }