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
|
@@ -2,9 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
import { arrayUtilities } from "necessary";
|
|
4
4
|
|
|
5
|
+
import { chainContext } from "../utilities/context";
|
|
6
|
+
|
|
5
7
|
const { extract, compress } = arrayUtilities;
|
|
6
8
|
|
|
7
|
-
export default class
|
|
9
|
+
export default class TransientContext {
|
|
8
10
|
constructor(context, terms, frames, statements, assertions, references, substitutions) {
|
|
9
11
|
this.context = context;
|
|
10
12
|
this.terms = terms;
|
|
@@ -13,6 +15,8 @@ export default class TemporaryContext {
|
|
|
13
15
|
this.assertions = assertions;
|
|
14
16
|
this.references = references;
|
|
15
17
|
this.substitutions = substitutions;
|
|
18
|
+
|
|
19
|
+
return chainContext(this);
|
|
16
20
|
}
|
|
17
21
|
|
|
18
22
|
getContext() {
|
|
@@ -231,140 +235,14 @@ export default class TemporaryContext {
|
|
|
231
235
|
|
|
232
236
|
getVariables(nested = true) { return this.context.getVariables(nested); }
|
|
233
237
|
|
|
234
|
-
getJudgements() { return this.context.getJudgements(); }
|
|
235
|
-
|
|
236
|
-
getEquivalences() { return this.context.getEquivalences(); }
|
|
237
|
-
|
|
238
|
-
getSteps() { return this.context.getSteps(); }
|
|
239
|
-
|
|
240
|
-
getLastStep() { return this.context.getLastStep(); }
|
|
241
|
-
|
|
242
|
-
getStepsOrSubproofs() { return this.context.getStepsOrSubproofs(); }
|
|
243
|
-
|
|
244
|
-
getFilePath() { return this.context.getFilePath(); }
|
|
245
|
-
|
|
246
|
-
getLexer() { return this.context.getLexer(); }
|
|
247
|
-
|
|
248
|
-
getParser() { return this.context.getParser(); }
|
|
249
|
-
|
|
250
|
-
getAxioms() { return this.context.getAxioms(); }
|
|
251
|
-
|
|
252
|
-
getLemmas() { return this.context.getLemmas(); }
|
|
253
|
-
|
|
254
|
-
getTheorems() { return this.context.getTheorems(); }
|
|
255
|
-
|
|
256
|
-
getConjectures() { return this.context.getConjectures(); }
|
|
257
|
-
|
|
258
|
-
getCombinators() { return this.context.getCombinators(); }
|
|
259
|
-
|
|
260
|
-
getConstructors() { return this.context.getConstructors(); }
|
|
261
|
-
|
|
262
|
-
getTypePrefix() { return this.context.getTypePrefix(); }
|
|
263
|
-
|
|
264
|
-
addAxiom(axiom) { this.context.addAxiom(axiom); }
|
|
265
|
-
|
|
266
|
-
addLemma(lemma) { this.context.addLemma(lemma); }
|
|
267
|
-
|
|
268
|
-
addTheorem(theorem) { this.context.addTheorem(theorem); }
|
|
269
|
-
|
|
270
|
-
addEquality(equality) { return this.context.addEquality(equality); }
|
|
271
|
-
|
|
272
238
|
addVariable(variable, nested = true) { return this.context.addVariable(variable, nested); }
|
|
273
239
|
|
|
274
|
-
addJudgement(judgement) { return this.context.addJudgement(judgement); }
|
|
275
|
-
|
|
276
|
-
addStepOrSubproof(stepOrSubproof) { this.context.addStepOrSubproof(stepOrSubproof); }
|
|
277
|
-
|
|
278
|
-
findProcedureByName(name) { return this.context.findProcedureByName(name); }
|
|
279
|
-
|
|
280
|
-
findLabelByReference(reference, context) { return this.context.findLabelByReference(reference, context); }
|
|
281
|
-
|
|
282
|
-
findRuleByReference(reference) { return this.context.findRuleByReference(reference); }
|
|
283
|
-
|
|
284
|
-
findAxiomByReference(reference) { return this.context.findAxiomByReference(reference); }
|
|
285
|
-
|
|
286
|
-
findLemmaByReference(reference) { return this.context.findLemmaByReference(reference); }
|
|
287
|
-
|
|
288
|
-
findTheoremByReference(reference) { return this.context.findTheoremByReference(reference); }
|
|
289
|
-
|
|
290
|
-
findConjectureByReference(reference) { return this.context.findConjectureByReference(reference); }
|
|
291
|
-
|
|
292
|
-
findMetaLemmasByReference(reference) { return this.context.findMetaLemmasByReference(reference); }
|
|
293
|
-
|
|
294
|
-
findMetatheoremsByReference(reference) { return this.context.findMetatheoremsByReference(reference); }
|
|
295
|
-
|
|
296
|
-
findMetaLemmaMetatheoremByReference(reference) { return this.context.findMetaLemmaMetatheoremByReference(reference); }
|
|
297
|
-
|
|
298
|
-
findMetaLemmaMetatheoremsByReference(reference) { return this.context.findMetaLemmaMetatheoremsByReference(reference); }
|
|
299
|
-
|
|
300
240
|
findVariableByVariableIdentifier(variableIdentifier, nested = true) { return this.context.findVariableByVariableIdentifier(variableIdentifier, nested); }
|
|
301
241
|
|
|
302
|
-
findJudgementByMetavariable(metavariable) { return this.context.findJudgementByMetavariable(metavariable); }
|
|
303
|
-
|
|
304
|
-
findEquivalenceByTerm(term) { return this.context.findEquivalenceByTerm(term); }
|
|
305
|
-
|
|
306
|
-
findMetavariable(metavariable) { return this.context.findMetavariable(metavariable); }
|
|
307
|
-
|
|
308
|
-
findLabelByMetavariable(metavariable) { return this.context.findLabelByMetavariable(metavariable); }
|
|
309
|
-
|
|
310
|
-
findTypeByNominalTypeName(nominalTypeName) { return this.context.findTypeByNominalTypeName(nominalTypeName); }
|
|
311
|
-
|
|
312
|
-
findMetaTypeByMetaTypeName(metaTypeName) { return this.context.findMetaTypeByMetaTypeName(metaTypeName); }
|
|
313
|
-
|
|
314
|
-
findMetavariableByMetavariableName(metavariableName) { return this.context.findMetavariableByMetavariableName(metavariableName); }
|
|
315
|
-
|
|
316
|
-
isProcedurePresentByName(name) { return this.context.isProcedurePresentByName(name); }
|
|
317
|
-
|
|
318
|
-
isLabelPresentByReference(reference) { return this.context.isLabelPresentByReference(reference); }
|
|
319
|
-
|
|
320
|
-
isMetavariablePresentByReference(reference) { return this.context.isMetavariablePresentByReference(reference); }
|
|
321
|
-
|
|
322
|
-
isMetaLemmaMetatheoremPresentByReference(reference) { return this.context.isMetaLemmaMetatheoremPresentByReference(reference); }
|
|
323
|
-
|
|
324
|
-
findAxiomLemmaTheoremOrConjectureByReference(reference) { return this.context.findAxiomLemmaTheoremOrConjectureByReference(reference); }
|
|
325
|
-
|
|
326
|
-
isMetavariablePresent(metavariable) { return this.context.isMetavariablePresent(metavariable); }
|
|
327
|
-
|
|
328
242
|
isTypePresentByTypeName(typeName, includeRelease = true, includeDependencies = true) { return this.context.isTypePresentByTypeName(typeName, includeRelease, includeDependencies); }
|
|
329
243
|
|
|
330
|
-
isTypePresentByNominalTypeName(nominalTypeName) { return this.context.isTypePresentByNominalTypeName(nominalTypeName); }
|
|
331
|
-
|
|
332
|
-
isTypePresentByPrefixedTypeName(prefixedTypeName) { return this.context.isTypePresentByPrefixedTypeName(prefixedTypeName); }
|
|
333
|
-
|
|
334
|
-
isTypePrefixPresentByTypePrefixName(typePrefixName) { return this.context.isTypePrefixPresentByTypePrefixName(typePrefixName); }
|
|
335
|
-
|
|
336
244
|
isVariablePresentByVariableIdentifier(variableIdentifier, nested = true) { return this.context.findVariableByVariableIdentifier(variableIdentifier, nested); }
|
|
337
245
|
|
|
338
|
-
isLabelPresentByMetavariableName(metavariableName) { return this.context.isLabelPresentByMetavariableName(metavariableName); }
|
|
339
|
-
|
|
340
|
-
isLabelPresentByMetavariable(metavariable) { return this.context.isLabelPresentByMetavariable(metavariable); }
|
|
341
|
-
|
|
342
|
-
isMetavariablePresentByMetavariableName(metavariableNode) { return this.context.isMetavariablePresentByMetavariableName(metavariableNode); }
|
|
343
|
-
|
|
344
|
-
isJudgementPresentByMetavariable(metavariable) { return this.context.isJudgementPresentByMetavariable(metavariable); }
|
|
345
|
-
|
|
346
|
-
isTermGrounded(term) { return this.context.isTermGrounded(term); }
|
|
347
|
-
|
|
348
|
-
isVariableDefined(variable) { return this.context.isVariableDefined(variable); }
|
|
349
|
-
|
|
350
|
-
isMetavariableDefined(metavariable) { return this.context.isMetavariableDefined(metavariable); }
|
|
351
|
-
|
|
352
|
-
compareTermAndPropertyRelation(term, propertyRelation) { return this.context.compareTermAndPropertyRelation(term, propertyRelation); }
|
|
353
|
-
|
|
354
|
-
nodeAsString(node) { return this.context.nodeAsString(node); }
|
|
355
|
-
|
|
356
|
-
nodesAsString(node) { return this.context.nodesAsString(node); }
|
|
357
|
-
|
|
358
|
-
trace(message, node = null) { this.context.trace(message, node); }
|
|
359
|
-
|
|
360
|
-
debug(message, node = null) { this.context.debug(message, node); }
|
|
361
|
-
|
|
362
|
-
info(message, node = null) { this.context.info(message, node); }
|
|
363
|
-
|
|
364
|
-
warning(message, node = null) { this.context.warning(message, node); }
|
|
365
|
-
|
|
366
|
-
error(message, node = null) { this.context.error(message, node); }
|
|
367
|
-
|
|
368
246
|
merge(context) {
|
|
369
247
|
const terms = context.getTerms(),
|
|
370
248
|
frames = context.getFrames(),
|
|
@@ -459,9 +337,9 @@ export default class TemporaryContext {
|
|
|
459
337
|
assertions = [],
|
|
460
338
|
references = [],
|
|
461
339
|
substitutions = [],
|
|
462
|
-
|
|
340
|
+
transientContext = new TransientContext(context, terms, frames, statements, assertions, references, substitutions);
|
|
463
341
|
|
|
464
|
-
return
|
|
342
|
+
return transientContext;
|
|
465
343
|
}
|
|
466
344
|
|
|
467
345
|
static fromTermsAndFrames(terms, frames, context) {
|
|
@@ -469,8 +347,8 @@ export default class TemporaryContext {
|
|
|
469
347
|
assertions = [],
|
|
470
348
|
references = [],
|
|
471
349
|
substitutions = [],
|
|
472
|
-
|
|
350
|
+
transientContext = new TransientContext(context, terms, frames, statements, assertions, references, substitutions);
|
|
473
351
|
|
|
474
|
-
return
|
|
352
|
+
return transientContext;
|
|
475
353
|
}
|
|
476
354
|
}
|
|
@@ -34,7 +34,7 @@ export default define(class Assumption extends Element {
|
|
|
34
34
|
compareSubstitution(substitution, context) {
|
|
35
35
|
let comparesToSubstituion = false;
|
|
36
36
|
|
|
37
|
-
const assumptionString = this.
|
|
37
|
+
const assumptionString = this.getString(), ///
|
|
38
38
|
substitutionString = substitution.getString();
|
|
39
39
|
|
|
40
40
|
context.trace(`Comparing the '${assumptionString}' assumption to the '${substitutionString}' substitution...`);
|
|
@@ -71,75 +71,59 @@ export default define(class Assumption extends Element {
|
|
|
71
71
|
return comparesToSubstituion;
|
|
72
72
|
}
|
|
73
73
|
|
|
74
|
-
|
|
75
|
-
let
|
|
74
|
+
validate(assignments, stated, context) {
|
|
75
|
+
let validates = false;
|
|
76
76
|
|
|
77
|
-
const assumptionString = this.
|
|
77
|
+
const assumptionString = this.getString(); ///
|
|
78
78
|
|
|
79
|
-
context.trace(`
|
|
79
|
+
context.trace(`Validating the '${assumptionString}' assumption...`);
|
|
80
80
|
|
|
81
81
|
const simple = this.isSimple();
|
|
82
82
|
|
|
83
83
|
if (simple) {
|
|
84
|
-
const
|
|
84
|
+
const referenceValidatesAsMetavariable = this.validateReferenceAsMetavariable(assignments, stated, context);
|
|
85
85
|
|
|
86
|
-
|
|
86
|
+
if (referenceValidatesAsMetavariable) {
|
|
87
|
+
validates = true;
|
|
88
|
+
}
|
|
87
89
|
} else {
|
|
88
|
-
const
|
|
90
|
+
const referenceValidates = this.reference.validate(context);
|
|
89
91
|
|
|
90
|
-
if (
|
|
92
|
+
if (referenceValidates) {
|
|
91
93
|
const statementValidates = this.validateStatement(assignments, stated, context);
|
|
92
94
|
|
|
93
95
|
if (statementValidates) {
|
|
94
|
-
let
|
|
95
|
-
|
|
96
|
+
let validatesWhenStated = false,
|
|
97
|
+
validatesWhenDerived = false;
|
|
96
98
|
|
|
97
99
|
if (stated) {
|
|
98
|
-
|
|
100
|
+
validatesWhenStated = this.validateWhenStated(assignments, context);
|
|
99
101
|
} else {
|
|
100
|
-
|
|
102
|
+
validatesWhenDerived = this.validateWhenDerived(context);
|
|
101
103
|
}
|
|
102
104
|
|
|
103
|
-
if (
|
|
104
|
-
|
|
105
|
+
if (validatesWhenStated || validatesWhenDerived) {
|
|
106
|
+
validates = true;
|
|
105
107
|
}
|
|
106
108
|
}
|
|
107
109
|
}
|
|
108
110
|
|
|
109
|
-
if (
|
|
110
|
-
context.debug(`...
|
|
111
|
+
if (validates) {
|
|
112
|
+
context.debug(`...validated the '${assumptionString}' assumption.`);
|
|
111
113
|
}
|
|
112
114
|
}
|
|
113
115
|
|
|
114
|
-
return
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
verifyReference(assignments, stated, context) {
|
|
118
|
-
let referenceVerified;
|
|
119
|
-
|
|
120
|
-
const referenceString = this.reference.getString(),
|
|
121
|
-
assumptionString = this.string; ///
|
|
122
|
-
|
|
123
|
-
context.trace(`Verifying the '${assumptionString}' assumption's '${referenceString}' reference...`);
|
|
124
|
-
|
|
125
|
-
referenceVerified = this.reference.verify(context);
|
|
126
|
-
|
|
127
|
-
if (referenceVerified) {
|
|
128
|
-
context.debug(`...verified the '${assumptionString}' assumption's '${referenceString}' reference.`);
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
return referenceVerified;
|
|
116
|
+
return validates;
|
|
132
117
|
}
|
|
133
118
|
|
|
134
119
|
validateStatement(assignments, stated, context) {
|
|
135
|
-
let statementValidates;
|
|
120
|
+
let statementValidates = true; ///
|
|
136
121
|
|
|
137
|
-
if (this.statement
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
const statementString = this.statement.getString();
|
|
122
|
+
if (this.statement !== null) {
|
|
123
|
+
const assumptionString = this.getString(),
|
|
124
|
+
statementString = this.statement.getString();
|
|
141
125
|
|
|
142
|
-
context.trace(`Validating the '${statementString}' statement...`);
|
|
126
|
+
context.trace(`Validating the '${assumptionString}' assumption's '${statementString}' statement...`);
|
|
143
127
|
|
|
144
128
|
stated = true; ///
|
|
145
129
|
|
|
@@ -148,83 +132,83 @@ export default define(class Assumption extends Element {
|
|
|
148
132
|
statementValidates = this.statement.validate(assignments, stated, context);
|
|
149
133
|
|
|
150
134
|
if (statementValidates) {
|
|
151
|
-
context.debug(`...validated the '${statementString}' statement.`);
|
|
135
|
+
context.debug(`...validated the '${assumptionString}' assumption's '${statementString}' statement.`);
|
|
152
136
|
}
|
|
153
137
|
}
|
|
154
138
|
|
|
155
139
|
return statementValidates;
|
|
156
140
|
}
|
|
157
141
|
|
|
158
|
-
|
|
159
|
-
let
|
|
142
|
+
validateReferenceAsMetavariable(assignments, stated, context) {
|
|
143
|
+
let referenceValidatesAsMetavariable = false;
|
|
160
144
|
|
|
161
145
|
const referenceString = this.reference.getString(),
|
|
162
|
-
assumptionString = this.
|
|
146
|
+
assumptionString = this.getString(); ///
|
|
163
147
|
|
|
164
|
-
context.trace(`
|
|
148
|
+
context.trace(`Validating the '${assumptionString}' assumption's '${referenceString}' reference as s metavariable...`);
|
|
165
149
|
|
|
166
150
|
const metavariable = this.reference.getMetavariable(),
|
|
167
151
|
metavariableName = metavariable.getName(),
|
|
168
152
|
metavariablePresent = context.isMetavariablePresentByMetavariableName(metavariableName);
|
|
169
153
|
|
|
170
154
|
if (metavariablePresent) {
|
|
171
|
-
|
|
155
|
+
referenceValidatesAsMetavariable = true;
|
|
172
156
|
}
|
|
173
157
|
|
|
174
|
-
if (
|
|
175
|
-
context.debug(`...
|
|
158
|
+
if (referenceValidatesAsMetavariable) {
|
|
159
|
+
context.debug(`...validated the '${assumptionString}' assumption's '${referenceString}' reference as a metavariable.`);
|
|
176
160
|
}
|
|
177
161
|
|
|
178
|
-
return
|
|
162
|
+
return referenceValidatesAsMetavariable;
|
|
179
163
|
}
|
|
180
164
|
|
|
181
|
-
|
|
182
|
-
let
|
|
165
|
+
validateWhenStated(assignments, context) {
|
|
166
|
+
let validatesWhenStated;
|
|
183
167
|
|
|
184
|
-
const assumptionString = this.
|
|
168
|
+
const assumptionString = this.getString(); ///
|
|
185
169
|
|
|
186
|
-
context.trace(`
|
|
170
|
+
context.trace(`Validating the '${assumptionString}' stated assumption...`);
|
|
187
171
|
|
|
188
172
|
const metavariablePresent = context.isMetavariablePresentByReference(this.reference);
|
|
189
173
|
|
|
190
174
|
if (metavariablePresent) {
|
|
191
|
-
|
|
175
|
+
validatesWhenStated = true;
|
|
192
176
|
} else {
|
|
193
|
-
const
|
|
194
|
-
|
|
195
|
-
const
|
|
177
|
+
const topLevelMetaAssertions = context.findTopLevelMetaAssertionsByReference(this.reference),
|
|
178
|
+
topLevelMetaAssertionsUnify = topLevelMetaAssertions.every((topLevelMetaAssertion) => {
|
|
179
|
+
const topLevelMetaAssertionUnifies = this.unifyTopLevelMetaAssertion(topLevelMetaAssertion, context);
|
|
196
180
|
|
|
197
|
-
if (
|
|
181
|
+
if (topLevelMetaAssertionUnifies) {
|
|
198
182
|
return true;
|
|
199
183
|
}
|
|
200
184
|
});
|
|
201
185
|
|
|
202
|
-
|
|
186
|
+
validatesWhenStated = topLevelMetaAssertionsUnify; ///
|
|
203
187
|
}
|
|
204
188
|
|
|
205
|
-
if (
|
|
206
|
-
context.debug(`...
|
|
189
|
+
if (validatesWhenStated) {
|
|
190
|
+
context.debug(`...validated the '${assumptionString}' stated assumption.`);
|
|
207
191
|
}
|
|
208
192
|
|
|
209
|
-
return
|
|
193
|
+
return validatesWhenStated;
|
|
210
194
|
}
|
|
211
195
|
|
|
212
|
-
|
|
213
|
-
let
|
|
196
|
+
validateWhenDerived(context) {
|
|
197
|
+
let validatesWhenDerived;
|
|
214
198
|
|
|
215
|
-
const assumptionString = this.
|
|
199
|
+
const assumptionString = this.getString(); ///
|
|
216
200
|
|
|
217
|
-
context.trace(`
|
|
201
|
+
context.trace(`Validating the '${assumptionString}' derived assumption...`);
|
|
218
202
|
|
|
219
|
-
const
|
|
203
|
+
const topLevelMetaAssertionPresent = context.isTopLevelMetaAssertionPresentByReference(this.reference);
|
|
220
204
|
|
|
221
|
-
|
|
205
|
+
validatesWhenDerived = topLevelMetaAssertionPresent; ///
|
|
222
206
|
|
|
223
|
-
if (
|
|
224
|
-
context.debug(`...
|
|
207
|
+
if (validatesWhenDerived) {
|
|
208
|
+
context.debug(`...validated the '${assumptionString}' derived assumption.`);
|
|
225
209
|
}
|
|
226
210
|
|
|
227
|
-
return
|
|
211
|
+
return validatesWhenDerived;
|
|
228
212
|
}
|
|
229
213
|
|
|
230
214
|
unifyStatement(statement, substitutions, generalContext, specificContext) {
|
|
@@ -260,7 +244,7 @@ export default define(class Assumption extends Element {
|
|
|
260
244
|
|
|
261
245
|
const context = generalContext, ///
|
|
262
246
|
labelString = label.getString(),
|
|
263
|
-
assumptionString = this.
|
|
247
|
+
assumptionString = this.getString(); //;/
|
|
264
248
|
|
|
265
249
|
context.trace(`Unifying the '${labelString}' label with the '${assumptionString}' assumption...`);
|
|
266
250
|
|
|
@@ -275,28 +259,28 @@ export default define(class Assumption extends Element {
|
|
|
275
259
|
return labelUnifiesWithReference;
|
|
276
260
|
}
|
|
277
261
|
|
|
278
|
-
|
|
279
|
-
let
|
|
262
|
+
unifyTopLevelMetaAssertion(topLevelMetaAssertion, context) {
|
|
263
|
+
let topLevelMetaAssertionUnifies = false;
|
|
280
264
|
|
|
281
|
-
const assumptionString = this.
|
|
282
|
-
|
|
265
|
+
const assumptionString = this.getString(), ///
|
|
266
|
+
topLevelMetaAssertionString = topLevelMetaAssertion.getString();
|
|
283
267
|
|
|
284
|
-
context.trace(`Unifying the '${
|
|
268
|
+
context.trace(`Unifying the '${topLevelMetaAssertionString}' top level meta-assertion with the '${assumptionString}' assumption...`);
|
|
285
269
|
|
|
286
270
|
const generalContext = context; ///
|
|
287
271
|
|
|
288
|
-
context =
|
|
272
|
+
context = topLevelMetaAssertion.getContext(); ///
|
|
289
273
|
|
|
290
274
|
const { Substitutions } = elements,
|
|
291
275
|
specificContext = context, ///
|
|
292
276
|
labelSubstitutions = Substitutions.fromNothing(),
|
|
293
|
-
label =
|
|
277
|
+
label = topLevelMetaAssertion.getLabel(),
|
|
294
278
|
substitutions = labelSubstitutions, ///
|
|
295
279
|
labelUnifies = this.unifyLabel(label, substitutions, generalContext, specificContext);
|
|
296
280
|
|
|
297
281
|
if (labelUnifies) {
|
|
298
282
|
const statementSubstitutions = Substitutions.fromNothing(),
|
|
299
|
-
statement =
|
|
283
|
+
statement = topLevelMetaAssertion.getStatement(),
|
|
300
284
|
substitutions = statementSubstitutions, ///
|
|
301
285
|
statementUUnifies = this.unifyStatement(statement, substitutions, generalContext, specificContext);
|
|
302
286
|
|
|
@@ -304,18 +288,18 @@ export default define(class Assumption extends Element {
|
|
|
304
288
|
const labelSubstitutionsCorrelateStatementSubstitutions = labelSubstitutions.correlateSubstitutions(statementSubstitutions);
|
|
305
289
|
|
|
306
290
|
if (labelSubstitutionsCorrelateStatementSubstitutions) {
|
|
307
|
-
|
|
291
|
+
topLevelMetaAssertionUnifies = true; ///
|
|
308
292
|
}
|
|
309
293
|
}
|
|
310
294
|
}
|
|
311
295
|
|
|
312
|
-
if (
|
|
296
|
+
if (topLevelMetaAssertionUnifies) {
|
|
313
297
|
context = generalContext; ///
|
|
314
298
|
|
|
315
|
-
context.trace(`...unified the '${
|
|
299
|
+
context.trace(`...unified the '${topLevelMetaAssertionString}' top level meta-assertion with the '${assumptionString}' assumption...`);
|
|
316
300
|
}
|
|
317
301
|
|
|
318
|
-
return
|
|
302
|
+
return topLevelMetaAssertionUnifies;
|
|
319
303
|
}
|
|
320
304
|
|
|
321
305
|
toJSON() {
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
import Combinator from "../combinator";
|
|
4
4
|
|
|
5
5
|
import { define } from "../../elements";
|
|
6
|
-
import { bracketedCombinatorFromNothing } from "../../utilities/instance";
|
|
7
6
|
|
|
8
7
|
export default define(class BracketedCombinator extends Combinator {
|
|
9
8
|
unifyStatement(statement, assignments, stated, context) {
|
|
@@ -23,10 +22,4 @@ export default define(class BracketedCombinator extends Combinator {
|
|
|
23
22
|
}
|
|
24
23
|
|
|
25
24
|
static name = "BracketedCombinator";
|
|
26
|
-
|
|
27
|
-
static fromNothing() {
|
|
28
|
-
const bracketedCombinator = bracketedCombinatorFromNothing();
|
|
29
|
-
|
|
30
|
-
return bracketedCombinator;
|
|
31
|
-
}
|
|
32
25
|
});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import Element from "../element";
|
|
4
|
-
import
|
|
4
|
+
import TransientContext from "../context/transient";
|
|
5
5
|
|
|
6
6
|
import { define } from "../elements";
|
|
7
7
|
import { termsFromJSON, framesFromJSON, statementFromJSON, termsToTermsJSON, framesToFramesJSON, statementToStatementJSON } from "../utilities/json";
|
|
@@ -20,9 +20,9 @@ export default define(class Conclusion extends Element {
|
|
|
20
20
|
verify(context) {
|
|
21
21
|
let verifies = false;
|
|
22
22
|
|
|
23
|
-
const
|
|
23
|
+
const transientContext = TransientContext.fromNothing(context);
|
|
24
24
|
|
|
25
|
-
context =
|
|
25
|
+
context = transientContext; ///
|
|
26
26
|
|
|
27
27
|
const node = this.getNode(),
|
|
28
28
|
conclusionString = this.getString(); ///
|
|
@@ -53,14 +53,18 @@ export default define(class Conclusion extends Element {
|
|
|
53
53
|
unifyStatement(statement, substitutions, context) {
|
|
54
54
|
let statementUnifies;
|
|
55
55
|
|
|
56
|
-
const
|
|
57
|
-
|
|
58
|
-
conclusionString = conclusion.getString();
|
|
56
|
+
const statementString = statement.getString(),
|
|
57
|
+
conclusionString = this.getString(); ///
|
|
59
58
|
|
|
60
59
|
context.trace(`Unifying the '${statementString}' statement with the '${conclusionString}' conclusion...`);
|
|
61
60
|
|
|
62
|
-
const
|
|
63
|
-
|
|
61
|
+
const specificContext = context; ///
|
|
62
|
+
|
|
63
|
+
context = this.getContext();
|
|
64
|
+
|
|
65
|
+
const generalContext = context; ///
|
|
66
|
+
|
|
67
|
+
context = specificContext; ///
|
|
64
68
|
|
|
65
69
|
statementUnifies = this.statement.unifyStatement(statement, substitutions, generalContext, specificContext);
|
|
66
70
|
|
|
@@ -105,9 +109,9 @@ export default define(class Conclusion extends Element {
|
|
|
105
109
|
statement = statementFromJSON(json, context),
|
|
106
110
|
node = null,
|
|
107
111
|
string = statement.getString(),
|
|
108
|
-
|
|
112
|
+
transientContext = TransientContext.fromTermsAndFrames(terms, frames, context);
|
|
109
113
|
|
|
110
|
-
context =
|
|
114
|
+
context = transientContext; ///
|
|
111
115
|
|
|
112
116
|
const conclusion = new Conclusion(context, string, node, statement);
|
|
113
117
|
|
|
@@ -4,7 +4,6 @@ import elements from "../../elements";
|
|
|
4
4
|
import Constructor from "../constructor";
|
|
5
5
|
|
|
6
6
|
import { define } from "../../elements";
|
|
7
|
-
import { bracketedConstructorFromNothing } from "../../utilities/instance";
|
|
8
7
|
|
|
9
8
|
export default define(class BracketedConstructor extends Constructor {
|
|
10
9
|
unifyTerm(term, context, verifyAhead) {
|
|
@@ -53,10 +52,4 @@ export default define(class BracketedConstructor extends Constructor {
|
|
|
53
52
|
}
|
|
54
53
|
|
|
55
54
|
static name = "BracketedConstructor";
|
|
56
|
-
|
|
57
|
-
static fromNothing() {
|
|
58
|
-
const bracketedConstructor = bracketedConstructorFromNothing();
|
|
59
|
-
|
|
60
|
-
return bracketedConstructor;
|
|
61
|
-
}
|
|
62
55
|
});
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
import Declaration from "../declaration";
|
|
4
4
|
|
|
5
5
|
import { define } from "../../elements";
|
|
6
|
-
import { verifyStatement } from "../../process/verify";
|
|
7
6
|
|
|
8
7
|
export default define(class CombinatorDeclaration extends Declaration {
|
|
9
8
|
constructor(context, string, node, combinator) {
|
|
@@ -76,7 +76,7 @@ export default define(class MetavariableDeclaration extends Declaration {
|
|
|
76
76
|
context = this.getContext(),
|
|
77
77
|
metavariableString = metavariable.getString();
|
|
78
78
|
|
|
79
|
-
context.trace(`Verifying the '${metavariableString}' metavariable
|
|
79
|
+
context.trace(`Verifying the '${metavariableString}' metavariable...`, node);
|
|
80
80
|
|
|
81
81
|
const metavariableNode = metavariable.getNode(), ///
|
|
82
82
|
termNode = metavariableNode.getTermNode();
|
|
@@ -98,7 +98,7 @@ export default define(class MetavariableDeclaration extends Declaration {
|
|
|
98
98
|
}
|
|
99
99
|
|
|
100
100
|
if (metavariableVerifies) {
|
|
101
|
-
context.debug(`...verified the '${metavariableString}' metavariable
|
|
101
|
+
context.debug(`...verified the '${metavariableString}' metavariable.`, node);
|
|
102
102
|
}
|
|
103
103
|
|
|
104
104
|
return metavariableVerifies;
|
|
@@ -65,7 +65,7 @@ export default define(class VariableDeclaration extends Declaration {
|
|
|
65
65
|
context.debug(`...verified the '${variableString}' variable.`, node);
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
-
return
|
|
68
|
+
return variableVerifies;
|
|
69
69
|
}
|
|
70
70
|
|
|
71
71
|
verifyVariableType() {
|
|
@@ -82,7 +82,9 @@ export default define(class VariableDeclaration extends Declaration {
|
|
|
82
82
|
|
|
83
83
|
context.trace(`Verifying the '${typeString}' type...`, node);
|
|
84
84
|
|
|
85
|
-
const
|
|
85
|
+
const includeSupertypes = false,
|
|
86
|
+
provisional = type.isProvisional(includeSupertypes),
|
|
87
|
+
nominalTypeName = type.getNominalTypeName();
|
|
86
88
|
|
|
87
89
|
type = context.findTypeByNominalTypeName(nominalTypeName);
|
|
88
90
|
|
|
@@ -91,9 +93,7 @@ export default define(class VariableDeclaration extends Declaration {
|
|
|
91
93
|
if (!typePresent) {
|
|
92
94
|
context.debug(`The '${typeString}' type is not present.`, node);
|
|
93
95
|
} else {
|
|
94
|
-
const
|
|
95
|
-
provisional = type.isProvisional(includeSupertypes),
|
|
96
|
-
typeComparesToProvisional = type.compareProvisional(provisional);
|
|
96
|
+
const typeComparesToProvisional = type.compareProvisional(provisional);
|
|
97
97
|
|
|
98
98
|
if (!typeComparesToProvisional) {
|
|
99
99
|
provisional ?
|