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/process/unify.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { nodeQuery } from "../utilities/query";
|
|
4
|
+
import { findMetaTypeByMetaTypeName } from "../metaTypes";
|
|
4
5
|
import { termFromTermNode, frameFromFrameNode, statementFromStatementNode } from "../utilities/element";
|
|
5
6
|
import { terminalNodeMapFromNodes, areTerminalNodeMapsEqual, isLastRemainingArgumentFunction } from "../utilities/pass";
|
|
6
7
|
|
|
@@ -344,7 +345,7 @@ class CombinatorPass extends Pass {
|
|
|
344
345
|
context = generalContext; ///
|
|
345
346
|
|
|
346
347
|
const metaTypeName = metaTypeNode.getMetaTypeName(),
|
|
347
|
-
metaType =
|
|
348
|
+
metaType = findMetaTypeByMetaTypeName(metaTypeName);
|
|
348
349
|
|
|
349
350
|
context = specificContext; ///
|
|
350
351
|
|
|
@@ -372,7 +373,7 @@ class CombinatorPass extends Pass {
|
|
|
372
373
|
context = generalContext; ///
|
|
373
374
|
|
|
374
375
|
const metaTypeName = metaTypeNode.getMetaTypeName(),
|
|
375
|
-
metaType =
|
|
376
|
+
metaType = findMetaTypeByMetaTypeName(metaTypeName);
|
|
376
377
|
|
|
377
378
|
context = specificContext; ///
|
|
378
379
|
|
|
@@ -406,7 +407,7 @@ class CombinatorPass extends Pass {
|
|
|
406
407
|
context = specificContext; ///
|
|
407
408
|
|
|
408
409
|
const term = termFromTermNode(termNode, context),
|
|
409
|
-
termValidatesGivenType = term.validateGivenType(type,
|
|
410
|
+
termValidatesGivenType = term.validateGivenType(type, context);
|
|
410
411
|
|
|
411
412
|
if (termValidatesGivenType) {
|
|
412
413
|
success = true;
|
|
@@ -441,7 +442,7 @@ class ConstructorPass extends Pass {
|
|
|
441
442
|
context = specificContext; ///
|
|
442
443
|
|
|
443
444
|
const term = termFromTermNode(termNode, context),
|
|
444
|
-
termValidatesGivenType = term.validateGivenType(type,
|
|
445
|
+
termValidatesGivenType = term.validateGivenType(type, context);
|
|
445
446
|
|
|
446
447
|
if (termValidatesGivenType) {
|
|
447
448
|
success = true;
|
|
@@ -468,7 +469,7 @@ class MetavariablePass extends Pass {
|
|
|
468
469
|
type = generalContext.findTypeByNominalTypeName(nominalTypeName),
|
|
469
470
|
context = specificContext, ///
|
|
470
471
|
term = context.findTermByTermNode(termNode),
|
|
471
|
-
termValidatesGivenType = term.validateGivenType(type,
|
|
472
|
+
termValidatesGivenType = term.validateGivenType(type, context);
|
|
472
473
|
|
|
473
474
|
if (termValidatesGivenType) {
|
|
474
475
|
success = true;
|
|
@@ -485,7 +486,7 @@ class IntrinsicLevelPass extends Pass {
|
|
|
485
486
|
{
|
|
486
487
|
generalNodeQuery: termVariableNodeQuery,
|
|
487
488
|
specificNodeQuery: termNodeQuery,
|
|
488
|
-
run: (generalTermVariableNode, specificTermNode,
|
|
489
|
+
run: (generalTermVariableNode, specificTermNode, generalContext, specificContext) => {
|
|
489
490
|
let success = false;
|
|
490
491
|
|
|
491
492
|
const termNode = specificTermNode, ///
|
|
@@ -501,7 +502,7 @@ class IntrinsicLevelPass extends Pass {
|
|
|
501
502
|
context = specificContext; ///
|
|
502
503
|
|
|
503
504
|
const term = context.findTermByTermNode(termNode),
|
|
504
|
-
termUnifies = variable.unifyTerm(term,
|
|
505
|
+
termUnifies = variable.unifyTerm(term, generalContext, specificContext);
|
|
505
506
|
|
|
506
507
|
if (termUnifies) {
|
|
507
508
|
success = true;
|
|
@@ -611,14 +612,14 @@ export function unifyStatementWithCombinator(statement, combinator, assignments,
|
|
|
611
612
|
return statementUnifiesWithCombinator;
|
|
612
613
|
}
|
|
613
614
|
|
|
614
|
-
export function unifyMetavariableIntrinsically(generalMetavariable, specificMetavariable,
|
|
615
|
+
export function unifyMetavariableIntrinsically(generalMetavariable, specificMetavariable, generalContext, specificContext) {
|
|
615
616
|
let metavariableUnifiesIntrinsically = false;
|
|
616
617
|
|
|
617
618
|
const generalMetavariableNode = generalMetavariable.getNode(),
|
|
618
619
|
specificMetavariableNode = specificMetavariable.getNode(),
|
|
619
620
|
generalNode = generalMetavariableNode, ///
|
|
620
621
|
specificNode = specificMetavariableNode, ///
|
|
621
|
-
success = intrinsicLevelPass.run(generalNode, specificNode,
|
|
622
|
+
success = intrinsicLevelPass.run(generalNode, specificNode, generalContext, specificContext);
|
|
622
623
|
|
|
623
624
|
if (success) {
|
|
624
625
|
metavariableUnifiesIntrinsically = true;
|
package/src/types.js
CHANGED
|
@@ -9,9 +9,11 @@ let baseType = null;
|
|
|
9
9
|
export function baseTypeFromNothing() {
|
|
10
10
|
if (baseType === null) {
|
|
11
11
|
const { Type } = elements,
|
|
12
|
-
name = BASE_TYPE_SYMBOL
|
|
12
|
+
name = BASE_TYPE_SYMBOL, ///
|
|
13
|
+
context = null,
|
|
14
|
+
provisional = false;
|
|
13
15
|
|
|
14
|
-
baseType = Type.
|
|
16
|
+
baseType = Type.fromNameAndProvisional(name, provisional, context);
|
|
15
17
|
}
|
|
16
18
|
|
|
17
19
|
return baseType;
|
package/src/utilities/bnf.js
CHANGED
|
@@ -9,8 +9,9 @@ const { first } = arrayUtilities;
|
|
|
9
9
|
const bnfLexer = BNFLexer.fromNothing(),
|
|
10
10
|
bnfParser = BNFParser.fromNothing();
|
|
11
11
|
|
|
12
|
-
export function
|
|
13
|
-
const
|
|
12
|
+
export function ruleFromRuleName(ruleName) {
|
|
13
|
+
const bnf = ` _ ::= ${ruleName}... <END_OF_LINE> ; `,
|
|
14
|
+
tokens = bnfLexer.tokensFromBNF(bnf),
|
|
14
15
|
rules = bnfParser.rulesFromTokens(tokens),
|
|
15
16
|
firstRule = first(rules),
|
|
16
17
|
rule = firstRule; ///
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import ScopedContext from "../context/scoped";
|
|
4
|
+
import LiminalContext from "../context/liminal";
|
|
5
|
+
import LiteralContext from "../context/literal";
|
|
6
|
+
import EphemeralContext from "../context/ephemeral";
|
|
7
|
+
import SyntheticContext from "../context/synthetic";
|
|
8
|
+
|
|
9
|
+
export function scope(innerFunction, context) {
|
|
10
|
+
const scopedContext = ScopedContext.fromNothing(context);
|
|
11
|
+
|
|
12
|
+
context = scopedContext; ///
|
|
13
|
+
|
|
14
|
+
return innerFunction(context);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export function attempt(innerFunction, context) {
|
|
18
|
+
const ephemeralContext = EphemeralContext.fromNothing(context);
|
|
19
|
+
|
|
20
|
+
context = ephemeralContext; ///
|
|
21
|
+
|
|
22
|
+
return innerFunction(context);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export function liminally(innerFunction, context) {
|
|
26
|
+
const liminalContext = LiminalContext.fromNothing(context);
|
|
27
|
+
|
|
28
|
+
context = liminalContext; ///
|
|
29
|
+
|
|
30
|
+
return innerFunction(context);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export function literally(innerFunction, context) {
|
|
34
|
+
const literalContext = LiteralContext.fromNothing(context);
|
|
35
|
+
|
|
36
|
+
context = literalContext; ///
|
|
37
|
+
|
|
38
|
+
return innerFunction(context);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
export function synthetically(innerFunction, generalContext, specificContext) {
|
|
42
|
+
const syntheticContext = SyntheticContext.fromNothing(generalContext, specificContext),
|
|
43
|
+
context = syntheticContext; ///
|
|
44
|
+
|
|
45
|
+
return innerFunction(context);
|
|
46
|
+
}
|