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.
- package/lib/constants.js +13 -5
- package/lib/context/ephemeral.js +270 -0
- package/lib/context/file.js +136 -128
- package/lib/context/liminal.js +120 -0
- package/lib/context/literal.js +92 -0
- package/lib/context/nominal.js +15 -1
- package/lib/context/release.js +68 -9
- package/lib/context/scoped.js +322 -0
- package/lib/context/synthetic.js +133 -0
- package/lib/element/assertion/contained.js +66 -66
- package/lib/element/assertion/defined.js +32 -32
- package/lib/element/assertion/property.js +39 -39
- package/lib/element/assertion/satisfies.js +22 -22
- package/lib/element/assumption.js +71 -87
- package/lib/element/combinator/bracketed.js +1 -10
- package/lib/element/conclusion.js +19 -15
- package/lib/element/constructor/bracketed.js +1 -10
- package/lib/element/constructor.js +2 -2
- 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 +26 -20
- package/lib/element/derivation.js +3 -3
- package/lib/element/equality.js +5 -5
- package/lib/element/equivalence.js +112 -107
- package/lib/element/equivalences.js +24 -10
- package/lib/element/error.js +3 -3
- package/lib/element/frame.js +73 -62
- package/lib/element/hypothesis.js +2 -2
- package/lib/element/judgement.js +40 -60
- package/lib/element/metaType.js +4 -4
- package/lib/element/metavariable.js +49 -38
- package/lib/element/parameter.js +13 -5
- package/lib/element/procedureCall.js +16 -16
- package/lib/element/proof.js +14 -13
- package/lib/element/proofAssertion/premise.js +319 -0
- package/lib/element/proofAssertion/step.js +309 -0
- package/lib/element/proofAssertion/supposition.js +333 -0
- package/lib/element/proofAssertion.js +20 -10
- package/lib/element/propertyRelation.js +2 -2
- package/lib/element/reference.js +72 -30
- package/lib/element/rule.js +26 -28
- package/lib/element/section.js +5 -5
- package/lib/element/signature.js +9 -6
- package/lib/element/statement.js +44 -36
- package/lib/element/subproof.js +18 -17
- package/lib/element/substitution/frame.js +86 -49
- package/lib/element/substitution/reference.js +101 -19
- package/lib/element/substitution/statement.js +128 -105
- package/lib/element/substitution/term.js +93 -57
- package/lib/element/substitution.js +20 -69
- package/lib/element/substitutions.js +49 -34
- package/lib/element/term.js +41 -30
- package/lib/element/topLevelAssertion/axiom.js +331 -0
- package/lib/element/{conjecture.js → topLevelAssertion/conjecture.js} +10 -10
- package/lib/element/{lemma.js → topLevelAssertion/lemma.js} +9 -9
- package/lib/element/{theorem.js → topLevelAssertion/theorem.js} +8 -8
- package/lib/element/topLevelAssertion.js +434 -0
- package/lib/element/{metaLemma.js → topLevelMetaAssertion/metaLemma.js} +8 -8
- package/lib/element/{metatheorem.js → topLevelMetaAssertion/metatheorem.js} +8 -8
- package/lib/element/topLevelMetaAssertion.js +293 -0
- package/lib/element/type.js +4 -4
- package/lib/element/variable.js +48 -40
- package/lib/index.js +3 -3
- package/lib/main.js +3 -3
- package/lib/metaTypes.js +18 -15
- package/lib/node/frame.js +2 -2
- package/lib/node/metavariable.js +4 -4
- package/lib/node/parameter.js +28 -7
- 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/substitution/frame.js +9 -31
- package/lib/node/substitution/reference.js +137 -0
- package/lib/node/substitution/statement.js +9 -31
- package/lib/node/substitution/term.js +9 -23
- 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 +15 -14
- package/lib/preamble.js +10 -10
- package/lib/process/instantiate.js +6 -21
- package/lib/process/unify.js +11 -10
- package/lib/tokenTypes.js +22 -0
- package/lib/types.js +3 -3
- package/lib/utilities/bnf.js +5 -5
- package/lib/utilities/context.js +63 -0
- package/lib/utilities/element.js +235 -408
- package/lib/utilities/instance.js +12 -34
- package/lib/utilities/json.js +3 -2
- package/lib/utilities/string.js +56 -21
- package/lib/utilities/unification.js +38 -32
- package/lib/utilities/validation.js +47 -50
- package/package.json +2 -2
- package/src/constants.js +12 -1
- package/src/context/ephemeral.js +257 -0
- package/src/context/file.js +108 -116
- package/src/context/liminal.js +67 -0
- package/src/context/literal.js +51 -0
- package/src/context/nominal.js +12 -0
- package/src/context/release.js +48 -8
- package/src/context/{local.js → scoped.js} +43 -125
- package/src/context/synthetic.js +60 -0
- package/src/element/assertion/contained.js +49 -47
- package/src/element/assertion/defined.js +29 -27
- package/src/element/assertion/property.js +35 -35
- package/src/element/assertion/satisfies.js +19 -18
- package/src/element/assumption.js +71 -93
- package/src/element/combinator/bracketed.js +0 -7
- package/src/element/conclusion.js +25 -24
- package/src/element/constructor/bracketed.js +0 -7
- package/src/element/constructor.js +1 -1
- 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 +33 -31
- package/src/element/derivation.js +2 -2
- package/src/element/equality.js +4 -4
- package/src/element/equivalence.js +115 -135
- package/src/element/equivalences.js +9 -7
- package/src/element/error.js +4 -2
- package/src/element/frame.js +80 -65
- package/src/element/hypothesis.js +1 -1
- package/src/element/judgement.js +42 -62
- package/src/element/metaType.js +3 -4
- package/src/element/metavariable.js +59 -56
- package/src/element/parameter.js +10 -5
- package/src/element/procedureCall.js +20 -18
- package/src/element/proof.js +14 -16
- package/src/element/{premise.js → proofAssertion/premise.js} +57 -53
- package/src/element/{step.js → proofAssertion/step.js} +59 -62
- package/src/element/{supposition.js → proofAssertion/supposition.js} +67 -56
- package/src/element/proofAssertion.js +24 -13
- package/src/element/propertyRelation.js +1 -1
- package/src/element/reference.js +87 -37
- package/src/element/rule.js +31 -37
- package/src/element/section.js +5 -5
- package/src/element/signature.js +8 -8
- package/src/element/statement.js +52 -48
- package/src/element/subproof.js +16 -18
- package/src/element/substitution/frame.js +104 -50
- package/src/element/substitution/reference.js +120 -20
- package/src/element/substitution/statement.js +169 -130
- package/src/element/substitution/term.js +104 -63
- package/src/element/substitution.js +16 -58
- package/src/element/substitutions.js +43 -41
- package/src/element/term.js +47 -41
- package/src/element/{axiom.js → topLevelAssertion/axiom.js} +22 -20
- package/src/element/{conjecture.js → topLevelAssertion/conjecture.js} +5 -6
- package/src/element/{lemma.js → topLevelAssertion/lemma.js} +5 -6
- package/src/element/{theorem.js → topLevelAssertion/theorem.js} +5 -5
- package/src/element/{axiomLemmaTheoremConjecture.js → topLevelAssertion.js} +37 -33
- package/src/element/{metaLemma.js → topLevelMetaAssertion/metaLemma.js} +5 -6
- package/src/element/{metatheorem.js → topLevelMetaAssertion/metatheorem.js} +5 -6
- package/src/element/{metaLemmaMetatheorem.js → topLevelMetaAssertion.js} +19 -17
- package/src/element/type.js +2 -4
- package/src/element/variable.js +47 -48
- package/src/index.js +2 -1
- package/src/main.js +2 -1
- package/src/metaTypes.js +25 -9
- package/src/node/frame.js +1 -1
- package/src/node/metavariable.js +3 -3
- package/src/node/parameter.js +32 -5
- 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/substitution/frame.js +6 -32
- package/src/node/substitution/reference.js +38 -0
- package/src/node/substitution/statement.js +6 -32
- package/src/node/substitution/term.js +6 -22
- 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 +15 -12
- package/src/preamble.js +9 -9
- package/src/process/instantiate.js +27 -36
- package/src/process/unify.js +10 -9
- package/src/tokenTypes.js +4 -0
- package/src/types.js +4 -2
- package/src/utilities/bnf.js +3 -2
- package/src/utilities/context.js +46 -0
- package/src/utilities/element.js +302 -509
- package/src/utilities/instance.js +19 -42
- package/src/utilities/json.js +3 -1
- package/src/utilities/string.js +69 -28
- package/src/utilities/unification.js +41 -38
- package/src/utilities/validation.js +66 -75
- 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 -427
- package/lib/element/metaLemmaMetatheorem.js +0 -289
- package/lib/element/premise.js +0 -307
- package/lib/element/step.js +0 -311
- package/lib/element/supposition.js +0 -320
- package/lib/log.js +0 -150
- package/lib/node/step.js +0 -166
- package/lib/node/supposition.js +0 -130
- package/src/context/temporary.js +0 -476
- package/src/log.js +0 -118
- 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/release.js
CHANGED
|
@@ -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) {
|
|
435
|
+
trace(message, filePath = null, lineIndex = null) {
|
|
436
|
+
const level = TRACE_LEVEL;
|
|
434
437
|
|
|
435
|
-
|
|
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
|
-
|
|
450
|
+
this.writeToLog(level, message, filePath, lineIndex);
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
warning(message, filePath = null, lineIndex = null) {
|
|
454
|
+
const level = WARNING_LEVEL;
|
|
438
455
|
|
|
439
|
-
|
|
456
|
+
this.writeToLog(level, message, filePath, lineIndex);
|
|
457
|
+
}
|
|
440
458
|
|
|
441
|
-
error(message, filePath = null, lineIndex = null) {
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
248
|
-
|
|
249
|
-
|
|
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
|
-
|
|
293
|
-
|
|
294
|
-
|
|
199
|
+
if (variableComparesToVariableIdentifier) {
|
|
200
|
+
return true;
|
|
201
|
+
}
|
|
202
|
+
}) || null;
|
|
295
203
|
|
|
296
|
-
return
|
|
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
|
-
|
|
362
|
-
|
|
363
|
-
nodesAsString(node) { return this.context.nodesAsString(node); }
|
|
283
|
+
getFileContext() { return this.context.getFileContext(); }
|
|
364
284
|
|
|
365
|
-
|
|
285
|
+
getDepth() {
|
|
286
|
+
let depth = this.context.getDepth();
|
|
366
287
|
|
|
367
|
-
|
|
288
|
+
depth++;
|
|
368
289
|
|
|
369
|
-
|
|
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
|
-
|
|
299
|
+
scopedContext = new ScopedContext(context, variables, judgements, equivalences, subproofOrProofAssertions);
|
|
382
300
|
|
|
383
|
-
return
|
|
301
|
+
return scopedContext;
|
|
384
302
|
}
|
|
385
303
|
}
|
|
386
304
|
|
|
387
|
-
export default
|
|
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(
|
|
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
|
-
|
|
35
|
-
let
|
|
34
|
+
validate(assignments, stated, context) {
|
|
35
|
+
let validates = false;
|
|
36
36
|
|
|
37
37
|
const containedAssertionString = this.getString(); ///
|
|
38
38
|
|
|
39
|
-
context.trace(`
|
|
39
|
+
context.trace(`Validating the '${containedAssertionString}' contained assertion...`);
|
|
40
40
|
|
|
41
41
|
const termValidates = this.validateTerm(assignments, stated, context),
|
|
42
|
-
frameVerifies = this.
|
|
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
|
|
47
|
-
|
|
46
|
+
let validatesWhenStated = false,
|
|
47
|
+
validatesWhenDerived = false;
|
|
48
48
|
|
|
49
49
|
if (stated) {
|
|
50
|
-
|
|
50
|
+
validatesWhenStated = this.validateWhenStated(assignments, context);
|
|
51
51
|
} else {
|
|
52
|
-
|
|
52
|
+
validatesWhenDerived = this.validateWhenDerived(context);
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
-
if (
|
|
56
|
-
|
|
55
|
+
if (validatesWhenStated || validatesWhenDerived) {
|
|
56
|
+
validates = true;
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
59
|
|
|
60
|
-
if (
|
|
61
|
-
context.debug(`...
|
|
60
|
+
if (validates) {
|
|
61
|
+
context.debug(`...validated the '${containedAssertionString}' contained assertion.`);
|
|
62
62
|
}
|
|
63
63
|
|
|
64
|
-
return
|
|
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
|
|
82
|
+
const validatesAhead = true;
|
|
82
83
|
|
|
83
|
-
return
|
|
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
|
-
|
|
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(`
|
|
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.
|
|
114
|
+
frameVerifies = this.frame.validate(assignments, stated, context);
|
|
113
115
|
|
|
114
116
|
if (frameVerifies) {
|
|
115
|
-
context.debug(`...
|
|
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
|
-
|
|
146
|
-
let
|
|
147
|
+
validateWhenStated(assignments, context) {
|
|
148
|
+
let validatesWhenStated;
|
|
147
149
|
|
|
148
150
|
const containedAssertionString = this.getString(); ///
|
|
149
151
|
|
|
150
|
-
context.trace(`
|
|
152
|
+
context.trace(`Validating the '${containedAssertionString}' stated contained assertion...`);
|
|
151
153
|
|
|
152
|
-
|
|
154
|
+
validatesWhenStated = true;
|
|
153
155
|
|
|
154
|
-
if (
|
|
155
|
-
context.debug(`...
|
|
156
|
+
if (validatesWhenStated) {
|
|
157
|
+
context.debug(`...validated the '${containedAssertionString}' stated contained assertion.`);
|
|
156
158
|
}
|
|
157
159
|
|
|
158
|
-
return
|
|
160
|
+
return validatesWhenStated;
|
|
159
161
|
}
|
|
160
162
|
|
|
161
|
-
|
|
162
|
-
let
|
|
163
|
+
validateWhenDerived(context) {
|
|
164
|
+
let validatesWhenDerived;
|
|
163
165
|
|
|
164
166
|
const containedAssertionString = this.getString(); ///
|
|
165
167
|
|
|
166
|
-
context.trace(`
|
|
168
|
+
context.trace(`Validating the '${containedAssertionString}' derived contained assertion...`);
|
|
167
169
|
|
|
168
170
|
const generalCotnext = null,
|
|
169
171
|
specificContext = context; ///
|
|
170
172
|
|
|
171
|
-
|
|
173
|
+
validatesWhenDerived = validateWhenDerived(this.term, this.frame, this.statement, this.negated, generalCotnext, specificContext);
|
|
172
174
|
|
|
173
|
-
if (
|
|
174
|
-
context.debug(`...
|
|
175
|
+
if (validatesWhenDerived) {
|
|
176
|
+
context.debug(`...validated the '${containedAssertionString}' derived contained assertion.`);
|
|
175
177
|
}
|
|
176
178
|
|
|
177
|
-
return
|
|
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
|
-
|
|
193
|
+
validatesWhenDerived = validateWhenDerived(term, frame, statement, this.negated, generalContext, specificContext);
|
|
192
194
|
|
|
193
|
-
unifiesIndependently =
|
|
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
|
|
206
|
-
let
|
|
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
|
-
|
|
217
|
+
validatesWhenDerived = true;
|
|
216
218
|
}
|
|
217
219
|
|
|
218
220
|
if (negated && !termContained) {
|
|
219
|
-
|
|
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
|
-
|
|
229
|
+
validatesWhenDerived = true;
|
|
228
230
|
}
|
|
229
231
|
|
|
230
232
|
if (negated && !frameContained) {
|
|
231
|
-
|
|
233
|
+
validatesWhenDerived = true;
|
|
232
234
|
}
|
|
233
235
|
}
|
|
234
236
|
}
|
|
235
237
|
|
|
236
|
-
return
|
|
238
|
+
return validatesWhenDerived;
|
|
237
239
|
}
|