occam-verify-cli 1.0.444 → 1.0.457
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.
- package/lib/constants.js +1 -5
- package/lib/context/file.js +54 -82
- package/lib/context/fragment.js +77 -0
- package/lib/context/release.js +5 -9
- package/lib/context/scoped.js +314 -0
- package/lib/context/transient.js +371 -0
- package/lib/element/assumption.js +71 -84
- package/lib/element/combinator/bracketed.js +1 -10
- package/lib/element/conclusion.js +11 -8
- package/lib/element/constructor/bracketed.js +1 -10
- package/lib/element/declaration/combinator.js +1 -2
- package/lib/element/declaration/metavariable.js +3 -3
- package/lib/element/declaration/variable.js +3 -3
- package/lib/element/deduction.js +18 -13
- package/lib/element/derivation.js +14 -14
- package/lib/element/frame.js +40 -46
- package/lib/element/hypothesis.js +14 -55
- package/lib/element/judgement.js +35 -56
- package/lib/element/metaType.js +5 -4
- package/lib/element/metavariable.js +14 -10
- package/lib/element/proof.js +10 -10
- package/lib/element/proofAssertion/premise.js +308 -0
- package/lib/element/proofAssertion/step.js +305 -0
- package/lib/element/proofAssertion/supposition.js +322 -0
- package/lib/element/proofAssertion.js +199 -0
- package/lib/element/reference.js +28 -25
- package/lib/element/rule.js +29 -29
- package/lib/element/section.js +4 -4
- package/lib/element/statement.js +9 -14
- package/lib/element/subDerivation.js +14 -14
- package/lib/element/subproof.js +14 -14
- package/lib/element/substitution/frame.js +7 -7
- package/lib/element/substitution/statement.js +15 -39
- package/lib/element/substitution.js +5 -5
- package/lib/element/term.js +12 -10
- package/lib/element/topLevelAssertion/axiom.js +329 -0
- package/lib/element/{conjecture.js → topLevelAssertion/conjecture.js} +7 -7
- package/lib/element/{lemma.js → topLevelAssertion/lemma.js} +6 -6
- package/lib/element/{theorem.js → topLevelAssertion/theorem.js} +7 -7
- package/lib/element/topLevelAssertion.js +427 -0
- package/lib/element/{metaLemma.js → topLevelMetaAssertion/metaLemma.js} +7 -7
- package/lib/element/{metatheorem.js → topLevelMetaAssertion/metatheorem.js} +7 -7
- package/lib/element/topLevelMetaAssertion.js +289 -0
- package/lib/element/type.js +4 -4
- package/lib/element/variable.js +20 -20
- package/lib/metaTypes.js +33 -19
- package/lib/node/proofAssertion/premise.js +116 -0
- package/lib/node/proofAssertion/step.js +152 -0
- package/lib/node/proofAssertion/supposition.js +116 -0
- package/lib/node/{premise.js → proofAssertion.js} +11 -18
- package/lib/node/statement.js +2 -2
- package/lib/node/subDerivation.js +1 -8
- package/lib/node/subproof.js +1 -8
- package/lib/node/substitution/statement.js +2 -2
- package/lib/node/{axiom.js → topLevelAssertion/axiom.js} +7 -7
- package/lib/node/{conjecture.js → topLevelAssertion/conjecture.js} +7 -7
- package/lib/node/{lemma.js → topLevelAssertion/lemma.js} +7 -7
- package/lib/node/{theorem.js → topLevelAssertion/theorem.js} +7 -7
- package/lib/node/{axiomLemmaTheoremConjecture.js → topLevelAssertion.js} +9 -9
- package/lib/node/{metaLemma.js → topLevelMetaAssertion/metaLemma.js} +7 -7
- package/lib/node/{metatheorem.js → topLevelMetaAssertion/metatheorem.js} +7 -7
- package/lib/node/{metaLemmaMetaTheorem.js → topLevelMetaAssertion.js} +9 -9
- package/lib/nonTerminalNodeMap.js +13 -13
- package/lib/preamble.js +10 -10
- package/lib/process/instantiate.js +6 -9
- package/lib/process/unify.js +7 -6
- package/lib/types.js +3 -3
- package/lib/utilities/bnf.js +5 -5
- package/lib/utilities/brackets.js +6 -11
- package/lib/utilities/context.js +28 -0
- package/lib/utilities/element.js +101 -99
- package/lib/utilities/fragment.js +23 -0
- package/lib/utilities/instance.js +12 -21
- package/lib/utilities/json.js +3 -2
- package/lib/utilities/string.js +44 -23
- package/lib/utilities/unification.js +36 -36
- package/lib/utilities/validation.js +22 -25
- package/package.json +6 -6
- package/src/constants.js +0 -1
- package/src/context/file.js +51 -58
- package/src/context/fragment.js +38 -0
- package/src/context/release.js +6 -11
- package/src/context/{local.js → scoped.js} +35 -127
- package/src/context/{temporary.js → transient.js} +9 -131
- package/src/element/assumption.js +69 -85
- package/src/element/combinator/bracketed.js +0 -7
- package/src/element/conclusion.js +14 -10
- package/src/element/constructor/bracketed.js +0 -7
- package/src/element/declaration/combinator.js +0 -1
- package/src/element/declaration/metavariable.js +2 -2
- package/src/element/declaration/variable.js +5 -5
- package/src/element/deduction.js +22 -15
- package/src/element/derivation.js +12 -12
- package/src/element/frame.js +36 -48
- package/src/element/hypothesis.js +14 -16
- package/src/element/judgement.js +33 -58
- package/src/element/metaType.js +4 -4
- package/src/element/metavariable.js +17 -10
- package/src/element/proof.js +9 -9
- package/src/element/{premise.js → proofAssertion/premise.js} +107 -75
- package/src/element/{step.js → proofAssertion/step.js} +43 -89
- package/src/element/{supposition.js → proofAssertion/supposition.js} +89 -88
- package/src/element/proofAssertion.js +69 -0
- package/src/element/reference.js +27 -23
- package/src/element/rule.js +25 -25
- package/src/element/section.js +4 -4
- package/src/element/statement.js +8 -15
- package/src/element/subDerivation.js +12 -12
- package/src/element/subproof.js +10 -10
- package/src/element/substitution/frame.js +10 -13
- package/src/element/substitution/statement.js +20 -52
- package/src/element/substitution.js +3 -3
- package/src/element/term.js +10 -9
- package/src/element/{axiom.js → topLevelAssertion/axiom.js} +41 -41
- package/src/element/{conjecture.js → topLevelAssertion/conjecture.js} +4 -4
- package/src/element/{lemma.js → topLevelAssertion/lemma.js} +3 -3
- package/src/element/{theorem.js → topLevelAssertion/theorem.js} +4 -4
- package/src/element/{axiomLemmaTheoremConjecture.js → topLevelAssertion.js} +30 -49
- package/src/element/{metaLemma.js → topLevelMetaAssertion/metaLemma.js} +4 -4
- package/src/element/{metatheorem.js → topLevelMetaAssertion/metatheorem.js} +4 -4
- package/src/element/{metaLemmaMetatheorem.js → topLevelMetaAssertion.js} +7 -72
- package/src/element/type.js +2 -4
- package/src/element/variable.js +17 -17
- package/src/metaTypes.js +42 -13
- package/src/node/proofAssertion/premise.js +16 -0
- package/src/node/{step.js → proofAssertion/step.js} +4 -18
- package/src/node/proofAssertion/supposition.js +16 -0
- package/src/node/proofAssertion.js +23 -0
- package/src/node/statement.js +1 -1
- package/src/node/subDerivation.js +0 -7
- package/src/node/subproof.js +0 -7
- package/src/node/substitution/statement.js +1 -1
- package/src/node/topLevelAssertion/axiom.js +13 -0
- package/src/node/topLevelAssertion/conjecture.js +13 -0
- package/src/node/topLevelAssertion/lemma.js +13 -0
- package/src/node/topLevelAssertion/theorem.js +13 -0
- package/src/node/{axiomLemmaTheoremConjecture.js → topLevelAssertion.js} +1 -1
- package/src/node/topLevelMetaAssertion/metaLemma.js +13 -0
- package/src/node/topLevelMetaAssertion/metatheorem.js +13 -0
- package/src/node/{metaLemmaMetaTheorem.js → topLevelMetaAssertion.js} +1 -1
- package/src/nonTerminalNodeMap.js +12 -12
- package/src/preamble.js +9 -9
- package/src/process/instantiate.js +31 -32
- package/src/process/unify.js +6 -5
- package/src/types.js +4 -2
- package/src/utilities/bnf.js +3 -2
- package/src/utilities/brackets.js +5 -8
- package/src/utilities/context.js +20 -0
- package/src/utilities/element.js +169 -162
- package/src/utilities/fragment.js +11 -0
- package/src/utilities/instance.js +19 -24
- package/src/utilities/json.js +3 -1
- package/src/utilities/string.js +57 -32
- package/src/utilities/unification.js +39 -39
- package/src/utilities/validation.js +26 -35
- package/lib/context/local.js +0 -605
- package/lib/context/temporary.js +0 -752
- package/lib/element/axiom.js +0 -329
- package/lib/element/axiomLemmaTheoremConjecture.js +0 -434
- package/lib/element/metaLemmaMetatheorem.js +0 -322
- package/lib/element/premise.js +0 -380
- package/lib/element/step.js +0 -390
- package/lib/element/supposition.js +0 -410
- package/lib/node/step.js +0 -166
- package/lib/node/supposition.js +0 -130
- package/src/node/axiom.js +0 -13
- package/src/node/conjecture.js +0 -13
- package/src/node/lemma.js +0 -13
- package/src/node/metaLemma.js +0 -13
- package/src/node/metatheorem.js +0 -13
- package/src/node/premise.js +0 -30
- package/src/node/supposition.js +0 -30
- package/src/node/theorem.js +0 -13
package/src/context/file.js
CHANGED
|
@@ -5,6 +5,7 @@ import { arrayUtilities } from "necessary";
|
|
|
5
5
|
import elements from "../elements";
|
|
6
6
|
|
|
7
7
|
import { verifyFile } from "../process/verify";
|
|
8
|
+
import { chainContext } from "../utilities/context";
|
|
8
9
|
import { baseTypeFromNothing } from "../types";
|
|
9
10
|
import { nodeAsString, nodesAsString } from "../utilities/node";
|
|
10
11
|
import { typesFromJSON,
|
|
@@ -35,8 +36,8 @@ import { typesFromJSON,
|
|
|
35
36
|
const { push, filter } = arrayUtilities;
|
|
36
37
|
|
|
37
38
|
export default class FileContext {
|
|
38
|
-
constructor(
|
|
39
|
-
this.
|
|
39
|
+
constructor(context, filePath, lineIndex, tokens, node, types, rules, axioms, lemmas, theorems, variables, metaLemmas, conjectures, combinators, typePrefixes, constructors, metatheorems, metavariables) {
|
|
40
|
+
this.context = context;
|
|
40
41
|
this.filePath = filePath;
|
|
41
42
|
this.lineIndex = lineIndex;
|
|
42
43
|
this.tokens = tokens;
|
|
@@ -54,10 +55,12 @@ export default class FileContext {
|
|
|
54
55
|
this.constructors = constructors;
|
|
55
56
|
this.metatheorems = metatheorems;
|
|
56
57
|
this.metavariables = metavariables;
|
|
58
|
+
|
|
59
|
+
return chainContext(this);
|
|
57
60
|
}
|
|
58
61
|
|
|
59
|
-
|
|
60
|
-
return this.
|
|
62
|
+
getContext() {
|
|
63
|
+
return this.context;
|
|
61
64
|
}
|
|
62
65
|
|
|
63
66
|
getFilePath() {
|
|
@@ -76,14 +79,6 @@ export default class FileContext {
|
|
|
76
79
|
return this.node;
|
|
77
80
|
}
|
|
78
81
|
|
|
79
|
-
getLexer() { return this.releaseContext.getLexer(); }
|
|
80
|
-
|
|
81
|
-
getParser() { return this.releaseContext.getParser(); }
|
|
82
|
-
|
|
83
|
-
getMetaTypes() { return this.releaseContext.getMetaTypes(); }
|
|
84
|
-
|
|
85
|
-
getTypePrefix() { return this.releaseContext.getTypePrefix(); }
|
|
86
|
-
|
|
87
82
|
getJudgements() {
|
|
88
83
|
const judgements = [];
|
|
89
84
|
|
|
@@ -97,17 +92,17 @@ export default class FileContext {
|
|
|
97
92
|
return equivalences;
|
|
98
93
|
}
|
|
99
94
|
|
|
100
|
-
|
|
101
|
-
const
|
|
95
|
+
getSubproofOrProofAssertions() {
|
|
96
|
+
const subproofOrProofAssertions = [];
|
|
102
97
|
|
|
103
|
-
return
|
|
98
|
+
return subproofOrProofAssertions;
|
|
104
99
|
}
|
|
105
100
|
|
|
106
101
|
getLabels(includeRelease = true) {
|
|
107
102
|
const labels = [];
|
|
108
103
|
|
|
109
104
|
if (includeRelease) {
|
|
110
|
-
const releaseContextLabels = this.
|
|
105
|
+
const releaseContextLabels = this.context.getLabels();
|
|
111
106
|
|
|
112
107
|
push(labels, releaseContextLabels);
|
|
113
108
|
} else {
|
|
@@ -153,7 +148,7 @@ export default class FileContext {
|
|
|
153
148
|
|
|
154
149
|
getTypes(includeRelease = true, includeDependencies = true) {
|
|
155
150
|
const types = includeRelease ?
|
|
156
|
-
this.
|
|
151
|
+
this.context.getTypes(includeDependencies) :
|
|
157
152
|
this.types;
|
|
158
153
|
|
|
159
154
|
return types;
|
|
@@ -161,7 +156,7 @@ export default class FileContext {
|
|
|
161
156
|
|
|
162
157
|
getRules(includeRelease = true) {
|
|
163
158
|
const rules = includeRelease ?
|
|
164
|
-
this.
|
|
159
|
+
this.context.getRules() :
|
|
165
160
|
this.rules;
|
|
166
161
|
|
|
167
162
|
return rules;
|
|
@@ -169,7 +164,7 @@ export default class FileContext {
|
|
|
169
164
|
|
|
170
165
|
getAxioms(includeRelease = true) {
|
|
171
166
|
const axioms = includeRelease ?
|
|
172
|
-
this.
|
|
167
|
+
this.context.getAxioms() :
|
|
173
168
|
this.axioms;
|
|
174
169
|
|
|
175
170
|
return axioms;
|
|
@@ -177,7 +172,7 @@ export default class FileContext {
|
|
|
177
172
|
|
|
178
173
|
getLemmas(includeRelease = true) {
|
|
179
174
|
const lemmas = includeRelease ?
|
|
180
|
-
this.
|
|
175
|
+
this.context.getLemmas() :
|
|
181
176
|
this.lemmas;
|
|
182
177
|
|
|
183
178
|
return lemmas;
|
|
@@ -185,7 +180,7 @@ export default class FileContext {
|
|
|
185
180
|
|
|
186
181
|
getTheorems(includeRelease = true) {
|
|
187
182
|
const theorems = includeRelease ?
|
|
188
|
-
this.
|
|
183
|
+
this.context.getTheorems() :
|
|
189
184
|
this.theorems;
|
|
190
185
|
|
|
191
186
|
return theorems;
|
|
@@ -197,7 +192,7 @@ export default class FileContext {
|
|
|
197
192
|
|
|
198
193
|
getProcedures(includeRelease = true) {
|
|
199
194
|
const procedures = includeRelease ?
|
|
200
|
-
this.
|
|
195
|
+
this.context.getProcedures() :
|
|
201
196
|
null; ///
|
|
202
197
|
|
|
203
198
|
return procedures;
|
|
@@ -205,7 +200,7 @@ export default class FileContext {
|
|
|
205
200
|
|
|
206
201
|
getMetaLemmas(includeRelease = true) {
|
|
207
202
|
const metaLemmas = includeRelease ?
|
|
208
|
-
this.
|
|
203
|
+
this.context.getMetaLemmas() :
|
|
209
204
|
this.metaLemmas;
|
|
210
205
|
|
|
211
206
|
return metaLemmas;
|
|
@@ -213,7 +208,7 @@ export default class FileContext {
|
|
|
213
208
|
|
|
214
209
|
getConjectures(includeRelease = true) {
|
|
215
210
|
const conjectures = includeRelease ?
|
|
216
|
-
this.
|
|
211
|
+
this.context.getConjectures() :
|
|
217
212
|
this.conjectures;
|
|
218
213
|
|
|
219
214
|
return conjectures;
|
|
@@ -221,7 +216,7 @@ export default class FileContext {
|
|
|
221
216
|
|
|
222
217
|
getCombinators(includeRelease = true) {
|
|
223
218
|
const combinators = includeRelease ?
|
|
224
|
-
this.
|
|
219
|
+
this.context.getCombinators() :
|
|
225
220
|
this.combinators;
|
|
226
221
|
|
|
227
222
|
return combinators;
|
|
@@ -229,7 +224,7 @@ export default class FileContext {
|
|
|
229
224
|
|
|
230
225
|
getTypePrefixes(includeRelease = true) {
|
|
231
226
|
const typePrefixes = includeRelease ?
|
|
232
|
-
this.
|
|
227
|
+
this.context.getTypePrefixes() :
|
|
233
228
|
this.typePrefixes;
|
|
234
229
|
|
|
235
230
|
return typePrefixes;
|
|
@@ -237,7 +232,7 @@ export default class FileContext {
|
|
|
237
232
|
|
|
238
233
|
getConstructors(includeRelease = true) {
|
|
239
234
|
const constructors = includeRelease ?
|
|
240
|
-
this.
|
|
235
|
+
this.context.getConstructors() :
|
|
241
236
|
this.constructors;
|
|
242
237
|
|
|
243
238
|
return constructors;
|
|
@@ -245,7 +240,7 @@ export default class FileContext {
|
|
|
245
240
|
|
|
246
241
|
getMetatheorems(includeRelease = true) {
|
|
247
242
|
const metatheorems = includeRelease ?
|
|
248
|
-
this.
|
|
243
|
+
this.context.getMetatheorems() :
|
|
249
244
|
this.metatheorems;
|
|
250
245
|
|
|
251
246
|
return metatheorems;
|
|
@@ -440,10 +435,10 @@ export default class FileContext {
|
|
|
440
435
|
|
|
441
436
|
filter(metaLemmas, (metaLemma) => {
|
|
442
437
|
const context = this, ///
|
|
443
|
-
|
|
444
|
-
|
|
438
|
+
topLevelMetaAssertion = metaLemma, ///
|
|
439
|
+
topLevelMetaAssertionUnifies = reference.unifyTopLevelMetaAssertion(topLevelMetaAssertion, context);
|
|
445
440
|
|
|
446
|
-
if (
|
|
441
|
+
if (topLevelMetaAssertionUnifies) {
|
|
447
442
|
return true;
|
|
448
443
|
}
|
|
449
444
|
});
|
|
@@ -456,10 +451,10 @@ export default class FileContext {
|
|
|
456
451
|
|
|
457
452
|
filter(metatheorems, (metatheorem) => {
|
|
458
453
|
const context = this, ///
|
|
459
|
-
|
|
460
|
-
|
|
454
|
+
topLevelMetaAssertion = metatheorem, ///
|
|
455
|
+
topLevelMetaAssertionUnifies = reference.unifyTopLevelMetaAssertion(topLevelMetaAssertion, context);
|
|
461
456
|
|
|
462
|
-
if (
|
|
457
|
+
if (topLevelMetaAssertionUnifies) {
|
|
463
458
|
return true;
|
|
464
459
|
}
|
|
465
460
|
});
|
|
@@ -467,33 +462,33 @@ export default class FileContext {
|
|
|
467
462
|
return metatheorems;
|
|
468
463
|
}
|
|
469
464
|
|
|
470
|
-
|
|
465
|
+
findTopLevelMetaAssertionByReference(reference) {
|
|
471
466
|
const metaLemma = this.findMetaLemmaByReference(reference),
|
|
472
467
|
metatheorem = this.findMetatheoremByReference(reference),
|
|
473
|
-
|
|
468
|
+
topLevelMetaAssertion = (metaLemma || metatheorem); ///
|
|
474
469
|
|
|
475
|
-
return
|
|
470
|
+
return topLevelMetaAssertion;
|
|
476
471
|
}
|
|
477
472
|
|
|
478
|
-
|
|
473
|
+
findTopLevelMetaAssertionsByReference(reference) {
|
|
479
474
|
const metaLemmas = this.findMetaLemmasByReference(reference),
|
|
480
475
|
metatheorems = this.findMetatheoremsByReference(reference),
|
|
481
|
-
|
|
476
|
+
topLevelMetaAssertions = [
|
|
482
477
|
...metaLemmas,
|
|
483
478
|
...metatheorems
|
|
484
479
|
];
|
|
485
480
|
|
|
486
|
-
return
|
|
481
|
+
return topLevelMetaAssertions;
|
|
487
482
|
}
|
|
488
483
|
|
|
489
|
-
|
|
484
|
+
findTopLevelAssertionByReference(reference) {
|
|
490
485
|
const axiom = this.findAxiomByReference(reference),
|
|
491
486
|
lemma = this.findLemmaByReference(reference),
|
|
492
487
|
theorem = this.findTheoremByReference(reference),
|
|
493
488
|
conjecture = this.findConjectureByReference(reference),
|
|
494
|
-
|
|
489
|
+
topLevelAssertion = (axiom || lemma || theorem || conjecture);
|
|
495
490
|
|
|
496
|
-
return
|
|
491
|
+
return topLevelAssertion;
|
|
497
492
|
}
|
|
498
493
|
|
|
499
494
|
findMetavariable(metavariable) {
|
|
@@ -776,11 +771,11 @@ export default class FileContext {
|
|
|
776
771
|
return metavariablePresent;
|
|
777
772
|
}
|
|
778
773
|
|
|
779
|
-
|
|
780
|
-
const
|
|
781
|
-
|
|
774
|
+
isTopLevelMetaAssertionPresentByReference(reference) {
|
|
775
|
+
const topLevelMetaAssertion = this.findTopLevelMetaAssertionByReference(reference),
|
|
776
|
+
topLevelMetaAssertionPresent = (topLevelMetaAssertion !== null);
|
|
782
777
|
|
|
783
|
-
return
|
|
778
|
+
return topLevelMetaAssertionPresent;
|
|
784
779
|
}
|
|
785
780
|
|
|
786
781
|
nodeAsString(node) {
|
|
@@ -795,36 +790,34 @@ export default class FileContext {
|
|
|
795
790
|
return string;
|
|
796
791
|
}
|
|
797
792
|
|
|
798
|
-
findFile(filePath) { return this.releaseContext.findFile(filePath); }
|
|
799
|
-
|
|
800
793
|
trace(message, node = null) {
|
|
801
794
|
this.lineIndex = lineIndexFromNodeAndTokens(node, this.tokens, this.lineIndex);
|
|
802
795
|
|
|
803
|
-
this.
|
|
796
|
+
this.context.trace(message, this.filePath, this.lineIndex);
|
|
804
797
|
}
|
|
805
798
|
|
|
806
799
|
debug(message, node = null) {
|
|
807
800
|
this.lineIndex = lineIndexFromNodeAndTokens(node, this.tokens, this.lineIndex);
|
|
808
801
|
|
|
809
|
-
this.
|
|
802
|
+
this.context.debug(message, this.filePath, this.lineIndex);
|
|
810
803
|
}
|
|
811
804
|
|
|
812
805
|
info(message, node = null) {
|
|
813
806
|
this.lineIndex = lineIndexFromNodeAndTokens(node, this.tokens, this.lineIndex);
|
|
814
807
|
|
|
815
|
-
this.
|
|
808
|
+
this.context.info(message, this.filePath, this.lineIndex);
|
|
816
809
|
}
|
|
817
810
|
|
|
818
811
|
warning(message, node = null) {
|
|
819
812
|
this.lineIndex = lineIndexFromNodeAndTokens(node, this.tokens, this.lineIndex);
|
|
820
813
|
|
|
821
|
-
this.
|
|
814
|
+
this.context.warning(message, this.filePath, this.lineIndex);
|
|
822
815
|
}
|
|
823
816
|
|
|
824
817
|
error(message, node = null) {
|
|
825
818
|
this.lineIndex = lineIndexFromNodeAndTokens(node, this.tokens, this.lineIndex);
|
|
826
819
|
|
|
827
|
-
this.
|
|
820
|
+
this.context.error(message, this.filePath, this.lineIndex);
|
|
828
821
|
}
|
|
829
822
|
|
|
830
823
|
verify() {
|
|
@@ -961,7 +954,7 @@ export default class FileContext {
|
|
|
961
954
|
return json;
|
|
962
955
|
}
|
|
963
956
|
|
|
964
|
-
static fromFile(file,
|
|
957
|
+
static fromFile(file, context) {
|
|
965
958
|
const filePath = file.getPath(),
|
|
966
959
|
lineIndex = null,
|
|
967
960
|
tokens = null,
|
|
@@ -979,12 +972,12 @@ export default class FileContext {
|
|
|
979
972
|
constructors = [],
|
|
980
973
|
metatheorems = [],
|
|
981
974
|
metavariables = [],
|
|
982
|
-
fileContext = new FileContext(
|
|
975
|
+
fileContext = new FileContext(context, filePath, lineIndex, tokens, node, types, rules, axioms, lemmas, theorems, variables, metaLemmas, conjectures, combinators, typePrefixes, constructors, metatheorems, metavariables);
|
|
983
976
|
|
|
984
977
|
return fileContext;
|
|
985
978
|
}
|
|
986
979
|
|
|
987
|
-
static fromFilePath(filePath,
|
|
980
|
+
static fromFilePath(filePath, context) {
|
|
988
981
|
const lineIndex = null,
|
|
989
982
|
tokens = null,
|
|
990
983
|
node = null,
|
|
@@ -1001,7 +994,7 @@ export default class FileContext {
|
|
|
1001
994
|
constructors = null,
|
|
1002
995
|
metatheorems = null,
|
|
1003
996
|
metavariables = null,
|
|
1004
|
-
fileContext = new FileContext(
|
|
997
|
+
fileContext = new FileContext(context, filePath, lineIndex, tokens, node, types, rules, axioms, lemmas, theorems, variables, metaLemmas, conjectures, combinators, typePrefixes, constructors, metatheorems, metavariables);
|
|
1005
998
|
|
|
1006
999
|
return fileContext;
|
|
1007
1000
|
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { nodeAsString } from "../utilities/node";
|
|
4
|
+
import { chainContext } from "../utilities/context";
|
|
5
|
+
|
|
6
|
+
export default class FragmentContext {
|
|
7
|
+
constructor(context, tokens) {
|
|
8
|
+
this.context = context;
|
|
9
|
+
this.tokens = tokens;
|
|
10
|
+
|
|
11
|
+
return chainContext(this);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
getContext() {
|
|
15
|
+
return this.context;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
getTokens() {
|
|
19
|
+
return this.tokens;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
setTokens(tokens) {
|
|
23
|
+
this.tokens = tokens;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
nodeAsString(node) {
|
|
27
|
+
const string = nodeAsString(node, this.tokens);
|
|
28
|
+
|
|
29
|
+
return string;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
static fromNothing(context) {
|
|
33
|
+
const tokens = null,
|
|
34
|
+
fragmentContext = new FragmentContext(context, tokens);
|
|
35
|
+
|
|
36
|
+
return fragmentContext;
|
|
37
|
+
}
|
|
38
|
+
}
|
package/src/context/release.js
CHANGED
|
@@ -10,8 +10,8 @@ import FileContext from "../context/file";
|
|
|
10
10
|
import NominalLexer from "../nominal/lexer";
|
|
11
11
|
import NominalParser from "../nominal/parser";
|
|
12
12
|
|
|
13
|
+
import { getMetaTypes } from "../metaTypes";
|
|
13
14
|
import { customGrammarFromNameAndEntries, combinedCustomGrammarFromReleaseContexts } from "../utilities/customGrammar";
|
|
14
|
-
import { frameMetaTypeFromNothing, referenceMetaTypeFromNothing, statementMetaTypeFromNothing } from "../metaTypes";
|
|
15
15
|
|
|
16
16
|
const { nominalLexerFromCombinedCustomGrammar } = lexersUtilities,
|
|
17
17
|
{ nominalParserFromCombinedCustomGrammar } = parsersUtilities,
|
|
@@ -58,14 +58,7 @@ export default class ReleaseContext {
|
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
getMetaTypes() {
|
|
61
|
-
const
|
|
62
|
-
referenceMetaType = referenceMetaTypeFromNothing(),
|
|
63
|
-
statementMetaType = statementMetaTypeFromNothing(),
|
|
64
|
-
metaTypes = [
|
|
65
|
-
frameMetaType,
|
|
66
|
-
referenceMetaType,
|
|
67
|
-
statementMetaType
|
|
68
|
-
];
|
|
61
|
+
const metaTypes = getMetaTypes();
|
|
69
62
|
|
|
70
63
|
return metaTypes;
|
|
71
64
|
}
|
|
@@ -589,7 +582,8 @@ function fileContextsFromJSON(json,fileContexts, releaseContext) {
|
|
|
589
582
|
}
|
|
590
583
|
|
|
591
584
|
if (filePathNominalFilePath) {
|
|
592
|
-
const
|
|
585
|
+
const context = releaseContext, ///
|
|
586
|
+
fileContext = FileContext.fromFilePath(filePath, context);
|
|
593
587
|
|
|
594
588
|
fileContexts.push(fileContext);
|
|
595
589
|
|
|
@@ -612,7 +606,8 @@ function fileContextsFromEntries(entries, fileContexts, releaseContext) {
|
|
|
612
606
|
}
|
|
613
607
|
|
|
614
608
|
if (filePathNominalFilePath) {
|
|
615
|
-
const
|
|
609
|
+
const context = releaseContext, ///
|
|
610
|
+
fileContext = FileContext.fromFile(file, context);
|
|
616
611
|
|
|
617
612
|
fileContexts.push(fileContext);
|
|
618
613
|
}
|
|
@@ -4,15 +4,19 @@ import { arrayUtilities } from "necessary";
|
|
|
4
4
|
|
|
5
5
|
import elements from "../elements";
|
|
6
6
|
|
|
7
|
+
import { chainContext } from "../utilities/context";
|
|
8
|
+
|
|
7
9
|
const { last } = arrayUtilities;
|
|
8
10
|
|
|
9
|
-
class
|
|
10
|
-
constructor(context, variables, judgements, equivalences,
|
|
11
|
+
class ScopedContext {
|
|
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
|
-
this.
|
|
17
|
+
this.subproofOrProofAssertions = subproofOrProofAssertions;
|
|
18
|
+
|
|
19
|
+
return chainContext(this);
|
|
16
20
|
}
|
|
17
21
|
|
|
18
22
|
getContext() {
|
|
@@ -55,69 +59,43 @@ class LocalContext {
|
|
|
55
59
|
return equivalences;
|
|
56
60
|
}
|
|
57
61
|
|
|
58
|
-
|
|
59
|
-
const
|
|
60
|
-
|
|
61
|
-
const
|
|
62
|
+
getProofAssertions() {
|
|
63
|
+
const subproofOrProofAssertions = this.getSubproofOrProofAssertions(),
|
|
64
|
+
proofAssertions = subproofOrProofAssertions.filter((subproofOrProofAssertion) => {
|
|
65
|
+
const subproofOrProofAssertionproofAssertion = subproofOrProofAssertion.isProofAssertion();
|
|
62
66
|
|
|
63
|
-
if (
|
|
67
|
+
if (subproofOrProofAssertionproofAssertion) {
|
|
64
68
|
return true;
|
|
65
69
|
}
|
|
66
70
|
});
|
|
67
71
|
|
|
68
|
-
return
|
|
72
|
+
return proofAssertions;
|
|
69
73
|
}
|
|
70
74
|
|
|
71
|
-
|
|
72
|
-
let
|
|
75
|
+
getLastProofAssertion() {
|
|
76
|
+
let lastProofAssertion = null;
|
|
73
77
|
|
|
74
|
-
const
|
|
75
|
-
|
|
78
|
+
const proofAssertions = this.getProofAssertions(),
|
|
79
|
+
proofAssertionsLength = proofAssertions.length;
|
|
76
80
|
|
|
77
|
-
if (
|
|
78
|
-
|
|
81
|
+
if (proofAssertionsLength > 0) {
|
|
82
|
+
lastProofAssertion = last(proofAssertions);
|
|
79
83
|
}
|
|
80
84
|
|
|
81
|
-
return
|
|
85
|
+
return lastProofAssertion;
|
|
82
86
|
}
|
|
83
87
|
|
|
84
|
-
|
|
85
|
-
let
|
|
88
|
+
getSubproofOrProofAssertions() {
|
|
89
|
+
let subproofOrProofAssertions = this.context.getSubproofOrProofAssertions();
|
|
86
90
|
|
|
87
|
-
|
|
88
|
-
...
|
|
89
|
-
...this.
|
|
91
|
+
subproofOrProofAssertions = [ ///
|
|
92
|
+
...subproofOrProofAssertions,
|
|
93
|
+
...this.subproofOrProofAssertions
|
|
90
94
|
];
|
|
91
95
|
|
|
92
|
-
return
|
|
96
|
+
return subproofOrProofAssertions;
|
|
93
97
|
}
|
|
94
98
|
|
|
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
99
|
addEquality(equality) {
|
|
122
100
|
let equalityAdded;
|
|
123
101
|
|
|
@@ -187,32 +165,10 @@ class LocalContext {
|
|
|
187
165
|
return judgementAdded;
|
|
188
166
|
}
|
|
189
167
|
|
|
190
|
-
|
|
191
|
-
this.
|
|
168
|
+
addSubproofOrProofAssertion(subproofOrProofAssertion) {
|
|
169
|
+
this.subproofOrProofAssertions.push(subproofOrProofAssertion);
|
|
192
170
|
}
|
|
193
171
|
|
|
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
172
|
findVariableByVariableIdentifier(variableIdentifier, nested = true) {
|
|
217
173
|
const variables = this.getVariables(nested),
|
|
218
174
|
variable = variables.find((variable) => {
|
|
@@ -246,36 +202,8 @@ class LocalContext {
|
|
|
246
202
|
|
|
247
203
|
findEquivalenceByTerm(term) { return this.equivalences.findEquivalenceByTerm(term); }
|
|
248
204
|
|
|
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
205
|
isTypePresentByTypeName(typeName, includeRelease = true, includeDependencies = true) { return this.context.isTypePresentByTypeName(typeName, includeRelease, includeDependencies); }
|
|
272
206
|
|
|
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
207
|
isVariablePresentByVariableIdentifier(variableIdentifier, nested = true) {
|
|
280
208
|
const variable = this.findVariableByVariableIdentifier(variableIdentifier, nested),
|
|
281
209
|
variablePresent = (variable !== null);
|
|
@@ -283,12 +211,6 @@ class LocalContext {
|
|
|
283
211
|
return variablePresent;
|
|
284
212
|
}
|
|
285
213
|
|
|
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); }
|
|
291
|
-
|
|
292
214
|
isJudgementPresentByMetavariable(metavariable) {
|
|
293
215
|
const judgement = this.findJudgementByMetavariable(metavariable),
|
|
294
216
|
judgementPresent = (judgement !== null);
|
|
@@ -346,9 +268,9 @@ class LocalContext {
|
|
|
346
268
|
|
|
347
269
|
compareTermAndPropertyRelation(term, propertyRelation) {
|
|
348
270
|
const context = this, ///
|
|
349
|
-
|
|
350
|
-
comparesToTermAndPropertyRelation =
|
|
351
|
-
const comparesToTermAndPropertyRelation =
|
|
271
|
+
proofAssertions = this.getProofAssertions(),
|
|
272
|
+
comparesToTermAndPropertyRelation = proofAssertions.some((proofAssertion) => {
|
|
273
|
+
const comparesToTermAndPropertyRelation = proofAssertion.compareTermAndPropertyRelation(term, propertyRelation, context);
|
|
352
274
|
|
|
353
275
|
if (comparesToTermAndPropertyRelation) {
|
|
354
276
|
return true;
|
|
@@ -358,30 +280,16 @@ 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); }
|
|
364
|
-
|
|
365
|
-
trace(message, node = null) { this.context.trace(message, node); }
|
|
366
|
-
|
|
367
|
-
debug(message, node = null) { this.context.debug(message, node); }
|
|
368
|
-
|
|
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); }
|
|
374
|
-
|
|
375
283
|
static fromNothing(context) {
|
|
376
284
|
const { Equivalences } = elements,
|
|
377
285
|
variables = [],
|
|
378
286
|
judgements = [],
|
|
379
287
|
equivalences = Equivalences.fromNothing(),
|
|
380
|
-
|
|
381
|
-
|
|
288
|
+
subproofOrProofAssertions = [],
|
|
289
|
+
scopedContext = new ScopedContext(context, variables, judgements, equivalences, subproofOrProofAssertions);
|
|
382
290
|
|
|
383
|
-
return
|
|
291
|
+
return scopedContext;
|
|
384
292
|
}
|
|
385
293
|
}
|
|
386
294
|
|
|
387
|
-
export default
|
|
295
|
+
export default ScopedContext;
|