occam-verify-cli 1.0.220 → 1.0.224
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/context/file.js +19 -19
- package/lib/context/local.js +5 -43
- package/lib/context/release.js +11 -11
- package/lib/dom/assertion/contained.js +44 -44
- package/lib/dom/assertion/defined.js +40 -40
- package/lib/dom/assertion/property.js +37 -35
- package/lib/dom/assertion/satisfies.js +26 -25
- package/lib/dom/assertion/subproof.js +16 -16
- package/lib/dom/assertion/type.js +34 -32
- package/lib/dom/axiom.js +52 -52
- package/lib/dom/combinator/bracketed.js +5 -5
- package/lib/dom/combinator.js +6 -6
- package/lib/dom/conclusion.js +10 -10
- package/lib/dom/conjecture.js +5 -5
- package/lib/dom/constructor/bracketed.js +12 -12
- package/lib/dom/constructor.js +9 -9
- package/lib/dom/declaration/combinator.js +11 -11
- package/lib/dom/declaration/complexType.js +133 -63
- package/lib/dom/declaration/constructor.js +17 -17
- package/lib/dom/declaration/metavariable.js +17 -17
- package/lib/dom/declaration/simpleType.js +229 -0
- package/lib/dom/declaration/variable.js +17 -17
- package/lib/dom/declaration.js +54 -52
- package/lib/dom/deduction.js +15 -15
- package/lib/dom/derivation.js +8 -8
- package/lib/dom/equality.js +49 -34
- package/lib/dom/error.js +3 -3
- package/lib/dom/frame.js +38 -38
- package/lib/dom/judgement.js +31 -29
- package/lib/dom/label.js +5 -5
- package/lib/dom/lemma.js +5 -5
- package/lib/dom/metaLemma.js +5 -5
- package/lib/dom/metatheorem.js +5 -5
- package/lib/dom/metavariable.js +55 -55
- package/lib/dom/premise.js +36 -34
- package/lib/dom/procedureCall.js +9 -9
- package/lib/dom/proof.js +6 -6
- package/lib/dom/propertyRelation.js +18 -18
- package/lib/dom/reference.js +28 -28
- package/lib/dom/rule.js +63 -48
- package/lib/dom/signature.js +17 -17
- package/lib/dom/statement.js +36 -36
- package/lib/dom/step.js +32 -35
- package/lib/dom/subDerivation.js +8 -8
- package/lib/dom/subproof.js +27 -30
- package/lib/dom/substitution/statement.js +7 -7
- package/lib/dom/substitution/term.js +2 -16
- package/lib/dom/substitution.js +1 -15
- package/lib/dom/supposition.js +39 -39
- package/lib/dom/term.js +15 -15
- package/lib/dom/theorem.js +5 -5
- package/lib/dom/topLevelAssertion.js +60 -71
- package/lib/dom/topLevelMetaAssertion.js +28 -20
- package/lib/dom/type.js +18 -24
- package/lib/dom/variable.js +16 -16
- package/lib/equivalence.js +54 -33
- package/lib/equivalences.js +57 -101
- package/lib/index.js +2 -2
- package/lib/mixins/statement/verify.js +52 -52
- package/lib/mixins/step/unify.js +79 -61
- package/lib/mixins/term/verify.js +17 -17
- package/lib/substitutions.js +7 -7
- package/lib/unifier/equantional.js +170 -0
- package/lib/unifier/intrinsicLevel.js +8 -8
- package/lib/unifier/metaLevel.js +21 -21
- package/lib/unifier/metavariable.js +9 -9
- package/lib/unifier/statementWithCombinator.js +18 -18
- package/lib/unifier/termWithConstructor.js +10 -10
- package/lib/unifier.js +41 -41
- package/lib/utilities/brackets.js +2 -2
- package/lib/utilities/release.js +18 -17
- package/lib/utilities/subproof.js +2 -2
- package/lib/utilities/type.js +2 -2
- package/lib/utilities/unification.js +28 -34
- package/lib/verifier/combinator.js +14 -14
- package/lib/verifier/constructor.js +18 -18
- package/lib/verifier/topLevel.js +38 -38
- package/lib/verifier.js +30 -30
- package/package.json +1 -1
- package/src/context/file.js +18 -18
- package/src/context/local.js +5 -48
- package/src/context/release.js +11 -11
- package/src/dom/assertion/contained.js +46 -46
- package/src/dom/assertion/defined.js +41 -41
- package/src/dom/assertion/property.js +37 -35
- package/src/dom/assertion/satisfies.js +26 -25
- package/src/dom/assertion/subproof.js +15 -15
- package/src/dom/assertion/type.js +34 -32
- package/src/dom/axiom.js +56 -54
- package/src/dom/combinator/bracketed.js +4 -4
- package/src/dom/combinator.js +5 -5
- package/src/dom/conclusion.js +9 -9
- package/src/dom/conjecture.js +4 -4
- package/src/dom/constructor/bracketed.js +11 -11
- package/src/dom/constructor.js +8 -8
- package/src/dom/declaration/combinator.js +10 -10
- package/src/dom/declaration/complexType.js +129 -64
- package/src/dom/declaration/constructor.js +16 -16
- package/src/dom/declaration/metavariable.js +16 -16
- package/src/dom/declaration/simpleType.js +179 -0
- package/src/dom/declaration/variable.js +16 -16
- package/src/dom/declaration.js +54 -52
- package/src/dom/deduction.js +14 -14
- package/src/dom/derivation.js +7 -7
- package/src/dom/equality.js +55 -38
- package/src/dom/error.js +2 -2
- package/src/dom/frame.js +38 -38
- package/src/dom/judgement.js +31 -29
- package/src/dom/label.js +4 -4
- package/src/dom/lemma.js +4 -4
- package/src/dom/metaLemma.js +4 -4
- package/src/dom/metatheorem.js +4 -4
- package/src/dom/metavariable.js +54 -54
- package/src/dom/premise.js +35 -33
- package/src/dom/procedureCall.js +8 -8
- package/src/dom/proof.js +5 -5
- package/src/dom/propertyRelation.js +17 -17
- package/src/dom/reference.js +27 -27
- package/src/dom/rule.js +72 -49
- package/src/dom/signature.js +15 -15
- package/src/dom/statement.js +34 -34
- package/src/dom/step.js +42 -48
- package/src/dom/subDerivation.js +7 -7
- package/src/dom/subproof.js +30 -40
- package/src/dom/substitution/statement.js +6 -6
- package/src/dom/substitution/term.js +1 -19
- package/src/dom/substitution.js +0 -13
- package/src/dom/supposition.js +38 -38
- package/src/dom/term.js +14 -14
- package/src/dom/theorem.js +4 -4
- package/src/dom/topLevelAssertion.js +62 -81
- package/src/dom/topLevelMetaAssertion.js +35 -20
- package/src/dom/type.js +23 -33
- package/src/dom/variable.js +16 -15
- package/src/equivalence.js +69 -46
- package/src/equivalences.js +53 -115
- package/src/index.js +1 -1
- package/src/mixins/statement/verify.js +51 -51
- package/src/mixins/step/unify.js +88 -67
- package/src/mixins/term/verify.js +16 -16
- package/src/substitutions.js +5 -6
- package/src/unifier/equantional.js +90 -0
- package/src/unifier/intrinsicLevel.js +7 -7
- package/src/unifier/metaLevel.js +20 -21
- package/src/unifier/metavariable.js +8 -8
- package/src/unifier/statementWithCombinator.js +17 -17
- package/src/unifier/termWithConstructor.js +9 -9
- package/src/unifier.js +40 -40
- package/src/utilities/brackets.js +1 -1
- package/src/utilities/release.js +18 -18
- package/src/utilities/subproof.js +1 -1
- package/src/utilities/type.js +1 -1
- package/src/utilities/unification.js +27 -37
- package/src/verifier/combinator.js +13 -13
- package/src/verifier/constructor.js +17 -17
- package/src/verifier/topLevel.js +41 -41
- package/src/verifier.js +29 -29
- package/lib/dom/declaration/type.js +0 -209
- package/lib/unifier/equality.js +0 -155
- package/src/dom/declaration/type.js +0 -150
- package/src/unifier/equality.js +0 -70
|
@@ -1,28 +1,14 @@
|
|
|
1
1
|
"use string";
|
|
2
2
|
|
|
3
3
|
import LocalContext from "../context/local";
|
|
4
|
-
import equalityUnifier from "../unifier/equality";
|
|
5
4
|
import metaLevelUnifier from "../unifier/metaLevel";
|
|
6
5
|
import metavariableUnifier from "../unifier/metavariable";
|
|
7
6
|
import intrinsicLevelUnifier from "../unifier/intrinsicLevel";
|
|
8
7
|
import termWithConstructorUnifier from "../unifier/termWithConstructor";
|
|
9
8
|
import statementWithCombinatorUnifier from "../unifier/statementWithCombinator";
|
|
10
9
|
|
|
11
|
-
export function unifyEquality(equality, context) {
|
|
12
|
-
let equalityUnified;
|
|
13
|
-
|
|
14
|
-
const leftTerm = equality.getLeftTerm(),
|
|
15
|
-
rightTerm = equality.getRightTerm(),
|
|
16
|
-
leftTermNode = leftTerm.getNode(),
|
|
17
|
-
rightTermNode = rightTerm.getNode();
|
|
18
|
-
|
|
19
|
-
equalityUnified = equalityUnifier.unify(leftTermNode, rightTermNode, context);
|
|
20
|
-
|
|
21
|
-
return equalityUnified;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
10
|
export function unifyStatement(generalStatement, specificStatement, substitutions, generalContext, specificContext) {
|
|
25
|
-
let
|
|
11
|
+
let statementUnifies = false;
|
|
26
12
|
|
|
27
13
|
const generalStatementNode = generalStatement.getNode(),
|
|
28
14
|
specificStatementNode = specificStatement.getNode(),
|
|
@@ -35,15 +21,17 @@ export function unifyStatement(generalStatement, specificStatement, substitution
|
|
|
35
21
|
|
|
36
22
|
const generalNonTerminalNode = generalStatementNode, ///
|
|
37
23
|
specificNonTerminalNode = specificStatementNode, ///
|
|
38
|
-
|
|
24
|
+
unifiesAtMetaLevel = metaLevelUnifier.unify(generalNonTerminalNode, specificNonTerminalNode, substitutions, generalContext, specificContext);
|
|
39
25
|
|
|
40
|
-
|
|
26
|
+
if (unifiesAtMetaLevel) {
|
|
27
|
+
statementUnifies = true;
|
|
28
|
+
}
|
|
41
29
|
|
|
42
|
-
return
|
|
30
|
+
return statementUnifies;
|
|
43
31
|
}
|
|
44
32
|
|
|
45
33
|
export function unifySubstitution(generalSubstitution, specificSubstitution, substitutions, generalContext, specificContext) {
|
|
46
|
-
let
|
|
34
|
+
let substitutionUnifies = false;
|
|
47
35
|
|
|
48
36
|
const generalSubstitutionNode = generalSubstitution.getNode(),
|
|
49
37
|
specificSubstitutionNode = specificSubstitution.getNode(),
|
|
@@ -56,15 +44,17 @@ export function unifySubstitution(generalSubstitution, specificSubstitution, sub
|
|
|
56
44
|
|
|
57
45
|
const generalNonTerminalNode = generalSubstitutionNode, ///
|
|
58
46
|
specificNonTerminalNode = specificSubstitutionNode,
|
|
59
|
-
|
|
47
|
+
unifiesAtMetaLevel = metaLevelUnifier.unify(generalNonTerminalNode, specificNonTerminalNode, substitutions, generalContext, specificContext);
|
|
60
48
|
|
|
61
|
-
|
|
49
|
+
if (unifiesAtMetaLevel) {
|
|
50
|
+
substitutionUnifies = true;
|
|
51
|
+
}
|
|
62
52
|
|
|
63
|
-
return
|
|
53
|
+
return substitutionUnifies;
|
|
64
54
|
}
|
|
65
55
|
|
|
66
56
|
export function unifyMetavariable(generalMetavariable, specificMetavariable, generalContext, specificContext) {
|
|
67
|
-
let
|
|
57
|
+
let metavariableUnifies;
|
|
68
58
|
|
|
69
59
|
const generalMetavariableNode = generalMetavariable.getNode(),
|
|
70
60
|
specificMetavariableNode = specificMetavariable.getNode(),
|
|
@@ -75,25 +65,25 @@ export function unifyMetavariable(generalMetavariable, specificMetavariable, gen
|
|
|
75
65
|
|
|
76
66
|
specificContext = contextFromTokens(specificMetavariableTokens, specificContext); ///
|
|
77
67
|
|
|
78
|
-
|
|
68
|
+
metavariableUnifies = metavariableUnifier.unify(generalMetavariableNode, specificMetavariableNode, generalContext, specificContext);
|
|
79
69
|
|
|
80
|
-
return
|
|
70
|
+
return metavariableUnifies;
|
|
81
71
|
}
|
|
82
72
|
|
|
83
73
|
export function unifyTermWithConstructor(term, constructor, context) {
|
|
84
|
-
let
|
|
74
|
+
let termUnifiesWithConstructor;
|
|
85
75
|
|
|
86
76
|
const termNode = term.getNode(),
|
|
87
77
|
constructorTerm = constructor.getTerm(),
|
|
88
78
|
constructorTermNode = constructorTerm.getNode();
|
|
89
79
|
|
|
90
|
-
|
|
80
|
+
termUnifiesWithConstructor = termWithConstructorUnifier.unify(constructorTermNode, termNode, context);
|
|
91
81
|
|
|
92
|
-
return
|
|
82
|
+
return termUnifiesWithConstructor;
|
|
93
83
|
}
|
|
94
84
|
|
|
95
85
|
export function unifyStatementIntrinsically(generalStatement, specificStatement, substitutions, generalContext, specificContext) {
|
|
96
|
-
let
|
|
86
|
+
let metavariableUnifiesIntrinsically;
|
|
97
87
|
|
|
98
88
|
const generalStatementNode = generalStatement.getNode(),
|
|
99
89
|
specificStatementNode = specificStatement.getNode(),
|
|
@@ -107,13 +97,13 @@ export function unifyStatementIntrinsically(generalStatement, specificStatement,
|
|
|
107
97
|
const generalNonTerminalNode = generalStatementNode, ///
|
|
108
98
|
specificNonTerminalNode = specificStatementNode; ///
|
|
109
99
|
|
|
110
|
-
|
|
100
|
+
metavariableUnifiesIntrinsically = intrinsicLevelUnifier.unify(generalNonTerminalNode, specificNonTerminalNode, substitutions, generalContext, specificContext);
|
|
111
101
|
|
|
112
|
-
return
|
|
102
|
+
return metavariableUnifiesIntrinsically;
|
|
113
103
|
}
|
|
114
104
|
|
|
115
105
|
export function unifyStatementWithCombinator(statement, combinator, assignments, stated, context) {
|
|
116
|
-
let
|
|
106
|
+
let statementUnifiesWithCombinator;
|
|
117
107
|
|
|
118
108
|
const statementNode = statement.getNode(),
|
|
119
109
|
statementTokens = statement.getTokens(),
|
|
@@ -128,13 +118,13 @@ export function unifyStatementWithCombinator(statement, combinator, assignments,
|
|
|
128
118
|
|
|
129
119
|
specificContext = contextFromTokens(statementTokens, specificContext); ///
|
|
130
120
|
|
|
131
|
-
|
|
121
|
+
statementUnifiesWithCombinator = statementWithCombinatorUnifier.unify(combinatorStatementNode, statementNode, assignments, stated, generalContext, specificContext);
|
|
132
122
|
|
|
133
|
-
return
|
|
123
|
+
return statementUnifiesWithCombinator;
|
|
134
124
|
}
|
|
135
125
|
|
|
136
126
|
export function unifyMetavariableIntrinsically(generalMetavariable, specificMetavariable, substitutions, generalContext, specificContext) {
|
|
137
|
-
let
|
|
127
|
+
let metavariableUnifiesIntrinsically;
|
|
138
128
|
|
|
139
129
|
const generalMetavariableNode = generalMetavariable.getNode(),
|
|
140
130
|
specificMetavariableNode = specificMetavariable.getNode(),
|
|
@@ -148,9 +138,9 @@ export function unifyMetavariableIntrinsically(generalMetavariable, specificMeta
|
|
|
148
138
|
const generalNonTerminalNode = generalMetavariableNode, ///
|
|
149
139
|
specificNonTerminalNode = specificMetavariableNode; ///
|
|
150
140
|
|
|
151
|
-
|
|
141
|
+
metavariableUnifiesIntrinsically = intrinsicLevelUnifier.unify(generalNonTerminalNode, specificNonTerminalNode, substitutions, generalContext, specificContext);
|
|
152
142
|
|
|
153
|
-
return
|
|
143
|
+
return metavariableUnifiesIntrinsically;
|
|
154
144
|
}
|
|
155
145
|
|
|
156
146
|
function contextFromTokens(tokens, context) {
|
|
@@ -12,15 +12,15 @@ const termNodeQuery = nodeQuery("/term"),
|
|
|
12
12
|
|
|
13
13
|
class CombinatorVerifier extends Verifier {
|
|
14
14
|
verifyStatement(statementNode, fileContext) {
|
|
15
|
-
let
|
|
15
|
+
let statementVerifiesAsCombinator;
|
|
16
16
|
|
|
17
17
|
const nonTerminalNode = statementNode, ///
|
|
18
18
|
childNodes = nonTerminalNode.getChildNodes(),
|
|
19
|
-
|
|
19
|
+
childNodesVerify = this.verifyChildNodes(childNodes, fileContext);
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
statementVerifiesAsCombinator = childNodesVerify; ///
|
|
22
22
|
|
|
23
|
-
return
|
|
23
|
+
return statementVerifiesAsCombinator;
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
static maps = [
|
|
@@ -33,9 +33,9 @@ class CombinatorVerifier extends Verifier {
|
|
|
33
33
|
statement = Statement.fromStatementNode(statementNode, context),
|
|
34
34
|
assignments = null,
|
|
35
35
|
stated = false,
|
|
36
|
-
|
|
36
|
+
statementVerifies = statement.verify(assignments, stated, context);
|
|
37
37
|
|
|
38
|
-
return
|
|
38
|
+
return statementVerifies;
|
|
39
39
|
}
|
|
40
40
|
},
|
|
41
41
|
{
|
|
@@ -45,28 +45,28 @@ class CombinatorVerifier extends Verifier {
|
|
|
45
45
|
localContext = LocalContext.fromFileContext(fileContext),
|
|
46
46
|
context = localContext, ///
|
|
47
47
|
term = Term.fromTermNode(termNode, context),
|
|
48
|
-
|
|
49
|
-
const
|
|
48
|
+
termVerifies = term.verify(context, () => {
|
|
49
|
+
const verifiesAhead = true;
|
|
50
50
|
|
|
51
|
-
return
|
|
51
|
+
return verifiesAhead;
|
|
52
52
|
});
|
|
53
53
|
|
|
54
|
-
return
|
|
54
|
+
return termVerifies;
|
|
55
55
|
}
|
|
56
56
|
},
|
|
57
57
|
{
|
|
58
58
|
nodeQuery: typeNodeQuery,
|
|
59
59
|
verify: (typeNode, fileContext) => {
|
|
60
|
-
let
|
|
60
|
+
let typeVerifies = false;
|
|
61
61
|
|
|
62
62
|
const typeName = typeNode.getTypeName(),
|
|
63
63
|
typePresent = fileContext.isTypePresentByTypeName(typeName);
|
|
64
64
|
|
|
65
65
|
if (typePresent) {
|
|
66
|
-
|
|
66
|
+
typeVerifies = true;
|
|
67
67
|
}
|
|
68
68
|
|
|
69
|
-
return
|
|
69
|
+
return typeVerifies;
|
|
70
70
|
}
|
|
71
71
|
}
|
|
72
72
|
];
|
|
@@ -16,23 +16,23 @@ const termNodeQuery = nodeQuery("/term"),
|
|
|
16
16
|
|
|
17
17
|
class ConstructorVerifier extends Verifier {
|
|
18
18
|
verifyTerm(termNode, fileContext) {
|
|
19
|
-
let
|
|
19
|
+
let termVerifiesAsConstructor;
|
|
20
20
|
|
|
21
21
|
const nonTerminalNode = termNode, ///
|
|
22
22
|
childNodes = nonTerminalNode.getChildNodes(),
|
|
23
|
-
|
|
24
|
-
const
|
|
23
|
+
childNodesVerify = this.verifyChildNodes(childNodes, fileContext, () => {
|
|
24
|
+
const verifiesAhead = true;
|
|
25
25
|
|
|
26
|
-
return
|
|
26
|
+
return verifiesAhead;
|
|
27
27
|
});
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
termVerifiesAsConstructor = childNodesVerify; ///
|
|
30
30
|
|
|
31
|
-
return
|
|
31
|
+
return termVerifiesAsConstructor;
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
verifyTerminalNode(terminalNode, ...remainingArguments) {
|
|
35
|
-
let
|
|
35
|
+
let terminalNodeVerifies;
|
|
36
36
|
|
|
37
37
|
const type = terminalNode.getType();
|
|
38
38
|
|
|
@@ -45,14 +45,14 @@ class ConstructorVerifier extends Verifier {
|
|
|
45
45
|
|
|
46
46
|
fileContext.debug(`The '${typeString}' type is present in the constructor but has not been declared beforehand.`);
|
|
47
47
|
|
|
48
|
-
|
|
48
|
+
terminalNodeVerifies = false;
|
|
49
49
|
|
|
50
50
|
remainingArguments.push(verifyAhead);
|
|
51
51
|
} else {
|
|
52
|
-
|
|
52
|
+
terminalNodeVerifies = super.verifyTerminalNode(terminalNode, ...remainingArguments);
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
-
return
|
|
55
|
+
return terminalNodeVerifies;
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
static maps = [
|
|
@@ -63,32 +63,32 @@ class ConstructorVerifier extends Verifier {
|
|
|
63
63
|
localContext = LocalContext.fromFileContext(fileContext),
|
|
64
64
|
context = localContext, ///
|
|
65
65
|
term = Term.fromTermNode(termNode, context),
|
|
66
|
-
|
|
66
|
+
termVerifies = term.verify(localContext, verifyAhead);
|
|
67
67
|
|
|
68
|
-
return
|
|
68
|
+
return termVerifies;
|
|
69
69
|
}
|
|
70
70
|
},
|
|
71
71
|
{
|
|
72
72
|
nodeQuery: typeNodeQuery,
|
|
73
73
|
verify: (typeNode, fileContext, verifyAhead) => {
|
|
74
|
-
let
|
|
74
|
+
let typeVerifies;
|
|
75
75
|
|
|
76
76
|
const typeName = typeNode.getTypeName(),
|
|
77
77
|
typePresent = fileContext.isTypePresentByTypeName(typeName);
|
|
78
78
|
|
|
79
79
|
if (typePresent) {
|
|
80
|
-
const
|
|
80
|
+
const verifiesAhead = verifyAhead();
|
|
81
81
|
|
|
82
|
-
|
|
82
|
+
typeVerifies = verifiesAhead; ///
|
|
83
83
|
} else {
|
|
84
84
|
const typeString = typeName; ///
|
|
85
85
|
|
|
86
86
|
fileContext.debug(`The '${typeString}' type is not present.`);
|
|
87
87
|
|
|
88
|
-
|
|
88
|
+
typeVerifies = false;
|
|
89
89
|
}
|
|
90
90
|
|
|
91
|
-
return
|
|
91
|
+
return typeVerifies;
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
94
|
];
|
package/src/verifier/topLevel.js
CHANGED
|
@@ -13,23 +13,23 @@ const errorNodeQuery = nodeQuery("/error"),
|
|
|
13
13
|
metaLemmaNodeQuery = nodeQuery("/metaLemma"),
|
|
14
14
|
conjectureNodeQuery = nodeQuery("/conjecture"),
|
|
15
15
|
metatheoremNodeQuery = nodeQuery("/metatheorem"),
|
|
16
|
-
typeDeclarationNodeQuery = nodeQuery("/typeDeclaration"),
|
|
17
16
|
variableDeclarationNodeQuery = nodeQuery("/variableDeclaration"),
|
|
18
17
|
combinatorDeclarationNodeQuery = nodeQuery("/combinatorDeclaration"),
|
|
18
|
+
simpleTypeDeclarationNodeQuery = nodeQuery("/simpleTypeDeclaration"),
|
|
19
19
|
constructorDeclarationNodeQuery = nodeQuery("/constructorDeclaration"),
|
|
20
20
|
complexTypeDeclarationNodeQuery = nodeQuery("/complexTypeDeclaration"),
|
|
21
21
|
metavariableDeclarationNodeQuery = nodeQuery("/metavariableDeclaration");
|
|
22
22
|
|
|
23
23
|
class TopLevelVerifier extends Verifier {
|
|
24
24
|
verify(node, fileContext) {
|
|
25
|
-
let
|
|
25
|
+
let verifiesAtTopLevel;
|
|
26
26
|
|
|
27
27
|
const nonTerminalNode = node, ///
|
|
28
|
-
|
|
28
|
+
nonTerminalNodeVerifies = this.verifyNonTerminalNode(nonTerminalNode, fileContext);
|
|
29
29
|
|
|
30
|
-
|
|
30
|
+
verifiesAtTopLevel = nonTerminalNodeVerifies; ///
|
|
31
31
|
|
|
32
|
-
return
|
|
32
|
+
return verifiesAtTopLevel;
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
static maps = [
|
|
@@ -38,9 +38,9 @@ class TopLevelVerifier extends Verifier {
|
|
|
38
38
|
verify: (errorNode, fileContext) => {
|
|
39
39
|
const { Error } = dom,
|
|
40
40
|
error = Error.fromErrorNode(errorNode, fileContext),
|
|
41
|
-
|
|
41
|
+
errorVerifies = error.verify();
|
|
42
42
|
|
|
43
|
-
return
|
|
43
|
+
return errorVerifies;
|
|
44
44
|
}
|
|
45
45
|
},
|
|
46
46
|
{
|
|
@@ -48,9 +48,9 @@ class TopLevelVerifier extends Verifier {
|
|
|
48
48
|
verify: (ruleNode, fileContext) => {
|
|
49
49
|
const { Rule } = dom,
|
|
50
50
|
rule = Rule.fromRuleNode(ruleNode, fileContext),
|
|
51
|
-
|
|
51
|
+
ruleVerifies = rule.verify();
|
|
52
52
|
|
|
53
|
-
return
|
|
53
|
+
return ruleVerifies;
|
|
54
54
|
}
|
|
55
55
|
},
|
|
56
56
|
{
|
|
@@ -58,9 +58,9 @@ class TopLevelVerifier extends Verifier {
|
|
|
58
58
|
verify: (axiomNode, fileContext) => {
|
|
59
59
|
const { Axiom } = dom,
|
|
60
60
|
axiom = Axiom.fromAxiomNode(axiomNode, fileContext),
|
|
61
|
-
|
|
61
|
+
axiomVerifies = axiom.verify();
|
|
62
62
|
|
|
63
|
-
return
|
|
63
|
+
return axiomVerifies;
|
|
64
64
|
}
|
|
65
65
|
},
|
|
66
66
|
{
|
|
@@ -68,9 +68,9 @@ class TopLevelVerifier extends Verifier {
|
|
|
68
68
|
verify: (lemmaNode, fileContext) => {
|
|
69
69
|
const { Lemma } = dom,
|
|
70
70
|
lemma = Lemma.fromLemmaNode(lemmaNode, fileContext),
|
|
71
|
-
|
|
71
|
+
lemmaVerifies = lemma.verify();
|
|
72
72
|
|
|
73
|
-
return
|
|
73
|
+
return lemmaVerifies;
|
|
74
74
|
}
|
|
75
75
|
},
|
|
76
76
|
{
|
|
@@ -78,9 +78,9 @@ class TopLevelVerifier extends Verifier {
|
|
|
78
78
|
verify: (theoremNode, fileContext) => {
|
|
79
79
|
const { Theorem } = dom,
|
|
80
80
|
theorem = Theorem.fromTheoremNode(theoremNode, fileContext),
|
|
81
|
-
|
|
81
|
+
theoremVerifies = theorem.verify();
|
|
82
82
|
|
|
83
|
-
return
|
|
83
|
+
return theoremVerifies;
|
|
84
84
|
}
|
|
85
85
|
},
|
|
86
86
|
{
|
|
@@ -88,9 +88,9 @@ class TopLevelVerifier extends Verifier {
|
|
|
88
88
|
verify: (metaLemmaNode, fileContext) => {
|
|
89
89
|
const { MetaLemma } = dom,
|
|
90
90
|
metaLemma = MetaLemma.fromMetaLemmaNode(metaLemmaNode, fileContext),
|
|
91
|
-
|
|
91
|
+
metaLemmaVerifies = metaLemma.verify();
|
|
92
92
|
|
|
93
|
-
return
|
|
93
|
+
return metaLemmaVerifies;
|
|
94
94
|
}
|
|
95
95
|
},
|
|
96
96
|
{
|
|
@@ -98,9 +98,9 @@ class TopLevelVerifier extends Verifier {
|
|
|
98
98
|
verify: (conjectureNode, fileContext) => {
|
|
99
99
|
const { Conjecture } = dom,
|
|
100
100
|
conjecture = Conjecture.fromConjectureNode(conjectureNode, fileContext),
|
|
101
|
-
|
|
101
|
+
conjectureVerifies = conjecture.verify();
|
|
102
102
|
|
|
103
|
-
return
|
|
103
|
+
return conjectureVerifies;
|
|
104
104
|
}
|
|
105
105
|
},
|
|
106
106
|
{
|
|
@@ -108,19 +108,9 @@ class TopLevelVerifier extends Verifier {
|
|
|
108
108
|
verify: (metatheoremNode, fileContext) => {
|
|
109
109
|
const { Metatheorem } = dom,
|
|
110
110
|
metatheorem = Metatheorem.fromMetatheoremNode(metatheoremNode, fileContext),
|
|
111
|
-
|
|
111
|
+
metatheoremVerifies = metatheorem.verify();
|
|
112
112
|
|
|
113
|
-
return
|
|
114
|
-
}
|
|
115
|
-
},
|
|
116
|
-
{
|
|
117
|
-
nodeQuery: typeDeclarationNodeQuery,
|
|
118
|
-
verify: (typeDeclarationNode, fileContext) => {
|
|
119
|
-
const { TypeDeclaration } = dom,
|
|
120
|
-
typeDeclaration = TypeDeclaration.fromTypeDeclarationNode(typeDeclarationNode, fileContext),
|
|
121
|
-
typeDeclarationVerified = typeDeclaration.verify();
|
|
122
|
-
|
|
123
|
-
return typeDeclarationVerified;
|
|
113
|
+
return metatheoremVerifies;
|
|
124
114
|
}
|
|
125
115
|
},
|
|
126
116
|
{
|
|
@@ -128,9 +118,19 @@ class TopLevelVerifier extends Verifier {
|
|
|
128
118
|
verify: (variableDeclarationNode, fileContext) => {
|
|
129
119
|
const { VariableDeclaration } = dom,
|
|
130
120
|
variableDeclaration = VariableDeclaration.fromVariableDeclarationNode(variableDeclarationNode, fileContext),
|
|
131
|
-
|
|
121
|
+
variableDeclarationVerifies = variableDeclaration.verify();
|
|
122
|
+
|
|
123
|
+
return variableDeclarationVerifies;
|
|
124
|
+
}
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
nodeQuery: simpleTypeDeclarationNodeQuery,
|
|
128
|
+
verify: (simpleTypeDeclarationNode, fileContext) => {
|
|
129
|
+
const { SimpleTypeDeclaration } = dom,
|
|
130
|
+
simpleTypeDeclaration = SimpleTypeDeclaration.fromSimpleTypeDeclarationNode(simpleTypeDeclarationNode, fileContext),
|
|
131
|
+
simpleTypeDeclarationVerifies = simpleTypeDeclaration.verify();
|
|
132
132
|
|
|
133
|
-
return
|
|
133
|
+
return simpleTypeDeclarationVerifies;
|
|
134
134
|
}
|
|
135
135
|
},
|
|
136
136
|
{
|
|
@@ -138,9 +138,9 @@ class TopLevelVerifier extends Verifier {
|
|
|
138
138
|
verify: (combinatorDeclarationNode, fileContext) => {
|
|
139
139
|
const { CombinatorDeclaration } = dom,
|
|
140
140
|
combinatorDeclaration = CombinatorDeclaration.fromCombinatorDeclarationNode(combinatorDeclarationNode, fileContext),
|
|
141
|
-
|
|
141
|
+
combinatorDeclarationVerifies = combinatorDeclaration.verify();
|
|
142
142
|
|
|
143
|
-
return
|
|
143
|
+
return combinatorDeclarationVerifies;
|
|
144
144
|
}
|
|
145
145
|
},
|
|
146
146
|
{
|
|
@@ -148,9 +148,9 @@ class TopLevelVerifier extends Verifier {
|
|
|
148
148
|
verify: (constructorDeclarationNode, fileContext) => {
|
|
149
149
|
const { ConstructorDeclaration } = dom,
|
|
150
150
|
constructorDeclaration = ConstructorDeclaration.fromConstructorDeclarationNode(constructorDeclarationNode, fileContext),
|
|
151
|
-
|
|
151
|
+
constructorDeclarationVerifies = constructorDeclaration.verify();
|
|
152
152
|
|
|
153
|
-
return
|
|
153
|
+
return constructorDeclarationVerifies;
|
|
154
154
|
}
|
|
155
155
|
},
|
|
156
156
|
{
|
|
@@ -158,9 +158,9 @@ class TopLevelVerifier extends Verifier {
|
|
|
158
158
|
verify: (complexTypeDeclarationNode, fileContext) => {
|
|
159
159
|
const { ComplexTypeDeclaration } = dom,
|
|
160
160
|
complexTypeDeclaration = ComplexTypeDeclaration.fromComplexTypeDeclarationNode(complexTypeDeclarationNode, fileContext),
|
|
161
|
-
|
|
161
|
+
complexTypeDeclarationVerifies = complexTypeDeclaration.verify();
|
|
162
162
|
|
|
163
|
-
return
|
|
163
|
+
return complexTypeDeclarationVerifies;
|
|
164
164
|
}
|
|
165
165
|
},
|
|
166
166
|
{
|
|
@@ -168,9 +168,9 @@ class TopLevelVerifier extends Verifier {
|
|
|
168
168
|
verify: (metavariableDeclarationNode, fileContext) => {
|
|
169
169
|
const { MetavariableDeclaration } = dom,
|
|
170
170
|
metavariableDeclaration = MetavariableDeclaration.fromMetavariableDeclarationNode(metavariableDeclarationNode, fileContext),
|
|
171
|
-
|
|
171
|
+
metavariableDeclarationVerifies = metavariableDeclaration.verify();
|
|
172
172
|
|
|
173
|
-
return
|
|
173
|
+
return metavariableDeclarationVerifies;
|
|
174
174
|
}
|
|
175
175
|
}
|
|
176
176
|
];
|
package/src/verifier.js
CHANGED
|
@@ -7,33 +7,33 @@ const nonTerminalNodeQuery = nodeQuery("/*");
|
|
|
7
7
|
|
|
8
8
|
export default class Verifier {
|
|
9
9
|
verify(node, ...remainingArguments) {
|
|
10
|
-
let
|
|
10
|
+
let verifies;
|
|
11
11
|
|
|
12
|
-
const
|
|
12
|
+
const nodeVerifies = this.verifyNode(node, ...remainingArguments);
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
verifies = nodeVerifies; ///
|
|
15
15
|
|
|
16
|
-
return
|
|
16
|
+
return verifies;
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
verifyNode(node, ...remainingArguments) {
|
|
20
|
-
let
|
|
20
|
+
let nodeVerifies;
|
|
21
21
|
|
|
22
22
|
const nodeTerminalNode = node.isTerminalNode();
|
|
23
23
|
|
|
24
24
|
if (nodeTerminalNode) {
|
|
25
25
|
const terminalNode = node, ///
|
|
26
|
-
|
|
26
|
+
terminalNodeVerifies = this.verifyTerminalNode(terminalNode, ...remainingArguments);
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
nodeVerifies = terminalNodeVerifies; ///
|
|
29
29
|
} else {
|
|
30
30
|
const nonTerminalNode = node, ///
|
|
31
|
-
|
|
31
|
+
nonTerminalNodeVerifies = this.verifyNonTerminalNode(nonTerminalNode, ...remainingArguments);
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
nodeVerifies = nonTerminalNodeVerifies; ///
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
return
|
|
36
|
+
return nodeVerifies;
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
verifyChildNodes(childNodes, ...remainingArguments) {
|
|
@@ -49,9 +49,9 @@ export default class Verifier {
|
|
|
49
49
|
} else {
|
|
50
50
|
childNodesVerify = childNodes.every((childNode) => {
|
|
51
51
|
const node = childNode, ///
|
|
52
|
-
|
|
52
|
+
nodeVerifies = this.verifyNode(node, ...remainingArguments);
|
|
53
53
|
|
|
54
|
-
if (
|
|
54
|
+
if (nodeVerifies) {
|
|
55
55
|
return true;
|
|
56
56
|
}
|
|
57
57
|
});
|
|
@@ -61,26 +61,26 @@ export default class Verifier {
|
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
verifyTerminalNode(terminalNode, ...remainingArguments) {
|
|
64
|
-
let
|
|
64
|
+
let terminalNodeVerifies;
|
|
65
65
|
|
|
66
66
|
const lastRemainingArgumentFunction = isLastRemainingArgumentFunction(remainingArguments);
|
|
67
67
|
|
|
68
68
|
if (lastRemainingArgumentFunction) {
|
|
69
69
|
const verifyAhead = remainingArguments.pop(), ///
|
|
70
|
-
|
|
70
|
+
verifiesAhead = verifyAhead();
|
|
71
71
|
|
|
72
|
-
|
|
72
|
+
terminalNodeVerifies = verifiesAhead; ///
|
|
73
73
|
|
|
74
74
|
remainingArguments.push(verifyAhead);
|
|
75
75
|
} else {
|
|
76
|
-
|
|
76
|
+
terminalNodeVerifies = true;
|
|
77
77
|
}
|
|
78
78
|
|
|
79
|
-
return
|
|
79
|
+
return terminalNodeVerifies;
|
|
80
80
|
}
|
|
81
81
|
|
|
82
82
|
verifyNonTerminalNode(nonTerminalNode, ...remainingArguments) {
|
|
83
|
-
let
|
|
83
|
+
let nonTerminalNodeVerifies;
|
|
84
84
|
|
|
85
85
|
let { maps } = this.constructor;
|
|
86
86
|
|
|
@@ -89,19 +89,19 @@ export default class Verifier {
|
|
|
89
89
|
{
|
|
90
90
|
nodeQuery: nonTerminalNodeQuery,
|
|
91
91
|
verify: (node, ...remainingArguments) => {
|
|
92
|
-
let
|
|
92
|
+
let nonTerminalNodeVerifies;
|
|
93
93
|
|
|
94
94
|
const childNodes = nonTerminalNode.getChildNodes(), ///
|
|
95
95
|
childNodesVerify = this.verifyChildNodes(childNodes, ...remainingArguments);
|
|
96
96
|
|
|
97
|
-
|
|
97
|
+
nonTerminalNodeVerifies = childNodesVerify; ///
|
|
98
98
|
|
|
99
|
-
return
|
|
99
|
+
return nonTerminalNodeVerifies;
|
|
100
100
|
}
|
|
101
101
|
}
|
|
102
102
|
]
|
|
103
103
|
|
|
104
|
-
let
|
|
104
|
+
let nodeVerifies = false;
|
|
105
105
|
|
|
106
106
|
maps.some((map) => {
|
|
107
107
|
const { nodeQuery, verify } = map;
|
|
@@ -109,15 +109,15 @@ export default class Verifier {
|
|
|
109
109
|
const node = nodeQuery(nonTerminalNode);
|
|
110
110
|
|
|
111
111
|
if (node !== null) {
|
|
112
|
-
|
|
112
|
+
nodeVerifies = verify(node, ...remainingArguments);
|
|
113
113
|
|
|
114
114
|
return true;
|
|
115
115
|
}
|
|
116
116
|
});
|
|
117
117
|
|
|
118
|
-
|
|
118
|
+
nonTerminalNodeVerifies = nodeVerifies; ///
|
|
119
119
|
|
|
120
|
-
return
|
|
120
|
+
return nonTerminalNodeVerifies;
|
|
121
121
|
}
|
|
122
122
|
|
|
123
123
|
verifyChildNodesAhead(index, childNodes, ...remainingArguments) {
|
|
@@ -127,13 +127,13 @@ export default class Verifier {
|
|
|
127
127
|
childNodesLength = childNodes.length;
|
|
128
128
|
|
|
129
129
|
if (index === childNodesLength) {
|
|
130
|
-
const
|
|
130
|
+
const verifiesAhead = verifyAhead();
|
|
131
131
|
|
|
132
|
-
childNodesVerify =
|
|
132
|
+
childNodesVerify = verifiesAhead; ///
|
|
133
133
|
} else {
|
|
134
134
|
const childNode = childNodes[index],
|
|
135
135
|
node = childNode, ///
|
|
136
|
-
|
|
136
|
+
nodeVerifies = this.verifyNode(node, ...remainingArguments, () => {
|
|
137
137
|
remainingArguments.push(verifyAhead);
|
|
138
138
|
|
|
139
139
|
const aheadIndex = index + 1,
|
|
@@ -142,7 +142,7 @@ export default class Verifier {
|
|
|
142
142
|
return childNodesVerifyAhead;
|
|
143
143
|
});
|
|
144
144
|
|
|
145
|
-
childNodesVerify =
|
|
145
|
+
childNodesVerify = nodeVerifies; ///
|
|
146
146
|
}
|
|
147
147
|
|
|
148
148
|
return childNodesVerify;
|