occam-verify-cli 1.0.405 → 1.0.415

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.
Files changed (132) hide show
  1. package/lib/constants.js +1 -5
  2. package/lib/context/file.js +7 -8
  3. package/lib/context/local.js +3 -3
  4. package/lib/context/release.js +2 -2
  5. package/lib/context/temporary.js +103 -54
  6. package/lib/mixins/statement/verify.js +2 -2
  7. package/lib/mixins/step/unify.js +2 -2
  8. package/lib/node/argument.js +2 -2
  9. package/lib/node/assumption.js +6 -6
  10. package/lib/node/frame.js +19 -7
  11. package/lib/node/judgement.js +8 -1
  12. package/lib/node/statement.js +34 -15
  13. package/lib/node/substitution/term.js +3 -11
  14. package/lib/node/term.js +20 -8
  15. package/lib/nonTerminalNode.js +3 -3
  16. package/lib/ontology/assertion/contained.js +7 -7
  17. package/lib/ontology/assertion/defined.js +8 -8
  18. package/lib/ontology/assertion/subproof.js +3 -3
  19. package/lib/ontology/assumption.js +49 -45
  20. package/lib/ontology/combinator.js +3 -3
  21. package/lib/ontology/constructor.js +3 -3
  22. package/lib/ontology/declaration/combinator.js +3 -3
  23. package/lib/ontology/declaration/constructor.js +3 -3
  24. package/lib/ontology/equality.js +4 -4
  25. package/lib/ontology/equivalence.js +2 -2
  26. package/lib/ontology/frame.js +37 -12
  27. package/lib/ontology/judgement.js +13 -6
  28. package/lib/ontology/metavariable.js +75 -76
  29. package/lib/ontology/propertyRelation.js +2 -2
  30. package/lib/ontology/reference.js +33 -4
  31. package/lib/ontology/signature.js +2 -2
  32. package/lib/ontology/statement.js +33 -8
  33. package/lib/ontology/step.js +4 -4
  34. package/lib/ontology/substitution/frame.js +13 -15
  35. package/lib/ontology/substitution/statement.js +31 -32
  36. package/lib/ontology/substitution/term.js +26 -25
  37. package/lib/ontology/substitution.js +2 -2
  38. package/lib/ontology/substitutions.js +4 -4
  39. package/lib/ontology/term.js +26 -12
  40. package/lib/ontology/variable.js +2 -2
  41. package/lib/process/equate.js +322 -0
  42. package/lib/process/unify.js +623 -0
  43. package/lib/process/verify.js +612 -0
  44. package/lib/utilities/brackets.js +3 -8
  45. package/lib/utilities/context.js +4 -14
  46. package/lib/utilities/json.js +18 -1
  47. package/lib/utilities/pass.js +68 -0
  48. package/lib/utilities/substitutions.js +11 -16
  49. package/package.json +11 -11
  50. package/src/constants.js +0 -1
  51. package/src/context/file.js +8 -8
  52. package/src/context/local.js +2 -2
  53. package/src/context/release.js +1 -1
  54. package/src/context/temporary.js +124 -54
  55. package/src/mixins/statement/verify.js +3 -1
  56. package/src/mixins/step/unify.js +0 -1
  57. package/src/node/argument.js +1 -1
  58. package/src/node/assumption.js +4 -4
  59. package/src/node/frame.js +19 -5
  60. package/src/node/judgement.js +7 -0
  61. package/src/node/statement.js +35 -13
  62. package/src/node/substitution/term.js +4 -14
  63. package/src/node/term.js +20 -6
  64. package/src/nonTerminalNode.js +1 -1
  65. package/src/ontology/assertion/contained.js +6 -6
  66. package/src/ontology/assertion/defined.js +7 -7
  67. package/src/ontology/assertion/subproof.js +1 -1
  68. package/src/ontology/assumption.js +52 -57
  69. package/src/ontology/combinator.js +1 -1
  70. package/src/ontology/constructor.js +1 -1
  71. package/src/ontology/declaration/combinator.js +2 -3
  72. package/src/ontology/declaration/constructor.js +2 -2
  73. package/src/ontology/equality.js +3 -3
  74. package/src/ontology/equivalence.js +1 -1
  75. package/src/ontology/frame.js +44 -10
  76. package/src/ontology/judgement.js +8 -3
  77. package/src/ontology/metavariable.js +108 -102
  78. package/src/ontology/propertyRelation.js +3 -2
  79. package/src/ontology/reference.js +39 -1
  80. package/src/ontology/signature.js +3 -3
  81. package/src/ontology/statement.js +38 -4
  82. package/src/ontology/step.js +7 -7
  83. package/src/ontology/substitution/frame.js +13 -17
  84. package/src/ontology/substitution/statement.js +45 -48
  85. package/src/ontology/substitution/term.js +19 -19
  86. package/src/ontology/substitution.js +3 -2
  87. package/src/ontology/substitutions.js +3 -3
  88. package/src/ontology/term.js +26 -5
  89. package/src/ontology/variable.js +3 -2
  90. package/src/process/equate.js +212 -0
  91. package/src/process/unify.js +634 -0
  92. package/src/process/verify.js +584 -0
  93. package/src/utilities/brackets.js +2 -11
  94. package/src/utilities/context.js +1 -21
  95. package/src/utilities/json.js +19 -0
  96. package/src/utilities/{unifier.js → pass.js} +17 -1
  97. package/src/utilities/substitutions.js +10 -20
  98. package/lib/unifier/equantional.js +0 -170
  99. package/lib/unifier/intrinsicLevel.js +0 -144
  100. package/lib/unifier/metaLevel.js +0 -197
  101. package/lib/unifier/metavariable.js +0 -140
  102. package/lib/unifier/statementWithCombinator.js +0 -177
  103. package/lib/unifier/termWithConstructor.js +0 -145
  104. package/lib/unifier.js +0 -241
  105. package/lib/utilities/arguments.js +0 -28
  106. package/lib/utilities/frame.js +0 -18
  107. package/lib/utilities/metavariable.js +0 -18
  108. package/lib/utilities/statement.js +0 -18
  109. package/lib/utilities/unification.js +0 -109
  110. package/lib/utilities/unifier.js +0 -51
  111. package/lib/utilities/variable.js +0 -18
  112. package/lib/verifier/combinator.js +0 -158
  113. package/lib/verifier/constructor.js +0 -230
  114. package/lib/verifier/topLevel.js +0 -242
  115. package/lib/verifier.js +0 -219
  116. package/src/unifier/equantional.js +0 -90
  117. package/src/unifier/intrinsicLevel.js +0 -52
  118. package/src/unifier/metaLevel.js +0 -151
  119. package/src/unifier/metavariable.js +0 -50
  120. package/src/unifier/statementWithCombinator.js +0 -114
  121. package/src/unifier/termWithConstructor.js +0 -56
  122. package/src/unifier.js +0 -183
  123. package/src/utilities/arguments.js +0 -21
  124. package/src/utilities/frame.js +0 -13
  125. package/src/utilities/metavariable.js +0 -13
  126. package/src/utilities/statement.js +0 -13
  127. package/src/utilities/unification.js +0 -136
  128. package/src/utilities/variable.js +0 -13
  129. package/src/verifier/combinator.js +0 -72
  130. package/src/verifier/constructor.js +0 -96
  131. package/src/verifier/topLevel.js +0 -204
  132. package/src/verifier.js +0 -150
@@ -1,136 +0,0 @@
1
- "use string";
2
-
3
- import TemporaryContext from "../context/temporary";
4
- import metaLevelUnifier from "../unifier/metaLevel";
5
- import metavariableUnifier from "../unifier/metavariable";
6
- import intrinsicLevelUnifier from "../unifier/intrinsicLevel";
7
- import termWithConstructorUnifier from "../unifier/termWithConstructor";
8
- import statementWithCombinatorUnifier from "../unifier/statementWithCombinator";
9
-
10
- export function unifyStatement(generalStatement, specificStatement, substitutions, generalContext, specificContext) {
11
- let statementUnifies = false;
12
-
13
- const generalStatementNode = generalStatement.getNode(),
14
- specificStatementNode = specificStatement.getNode(),
15
- generalNonTerminalNode = generalStatementNode, ///
16
- specificNonTerminalNode = specificStatementNode, ///
17
- unifiesAtMetaLevel = metaLevelUnifier.unify(generalNonTerminalNode, specificNonTerminalNode, substitutions, generalContext, specificContext);
18
-
19
- if (unifiesAtMetaLevel) {
20
- statementUnifies = true;
21
- }
22
-
23
- return statementUnifies;
24
- }
25
-
26
- export function unifySubstitution(generalSubstitution, specificSubstitution, substitutions, generalContext, specificContext) {
27
- let substitutionUnifies = false;
28
-
29
- const generalSubstitutionNode = generalSubstitution.getNode(),
30
- specificSubstitutionNode = specificSubstitution.getNode(),
31
- generalNonTerminalNode = generalSubstitutionNode, ///
32
- specificNonTerminalNode = specificSubstitutionNode,
33
- unifiesAtMetaLevel = metaLevelUnifier.unify(generalNonTerminalNode, specificNonTerminalNode, substitutions, generalContext, specificContext);
34
-
35
- if (unifiesAtMetaLevel) {
36
- substitutionUnifies = true;
37
- }
38
-
39
- return substitutionUnifies;
40
- }
41
-
42
- export function unifyMetavariable(generalMetavariable, specificMetavariable, generalContext, specificContext) {
43
- let metavariableUnifies;
44
-
45
- const generalMetavariableNode = generalMetavariable.getNode(),
46
- specificMetavariableNode = specificMetavariable.getNode(),
47
- generalMetavariableTokens = generalMetavariable.getTokens(),
48
- specificMetavariableTokens = specificMetavariable.getTokens();
49
-
50
- generalContext = contextFromTokens(generalMetavariableTokens, generalContext); ///
51
-
52
- specificContext = contextFromTokens(specificMetavariableTokens, specificContext); ///
53
-
54
- metavariableUnifies = metavariableUnifier.unify(generalMetavariableNode, specificMetavariableNode, generalContext, specificContext);
55
-
56
- return metavariableUnifies;
57
- }
58
-
59
- export function unifyTermWithConstructor(term, constructor, context) {
60
- let termUnifiesWithConstructor;
61
-
62
- const termNode = term.getNode(),
63
- constructorTerm = constructor.getTerm(),
64
- constructorTermNode = constructorTerm.getNode();
65
-
66
- termUnifiesWithConstructor = termWithConstructorUnifier.unify(constructorTermNode, termNode, context);
67
-
68
- return termUnifiesWithConstructor;
69
- }
70
-
71
- export function unifyStatementIntrinsically(generalStatement, specificStatement, substitutions, generalContext, specificContext) {
72
- let metavariableUnifiesIntrinsically;
73
-
74
- const generalStatementNode = generalStatement.getNode(),
75
- specificStatementNode = specificStatement.getNode(),
76
- generalStatementTokens = generalStatement.getTokens(),
77
- specificStatementTokens = specificStatement.getTokens();
78
-
79
- generalContext = contextFromTokens(generalStatementTokens, generalContext); ///
80
-
81
- specificContext = contextFromTokens(specificStatementTokens, specificContext); ///
82
-
83
- const generalNonTerminalNode = generalStatementNode, ///
84
- specificNonTerminalNode = specificStatementNode; ///
85
-
86
- metavariableUnifiesIntrinsically = intrinsicLevelUnifier.unify(generalNonTerminalNode, specificNonTerminalNode, substitutions, generalContext, specificContext);
87
-
88
- return metavariableUnifiesIntrinsically;
89
- }
90
-
91
- export function unifyStatementWithCombinator(statement, combinator, assignments, stated, context) {
92
- let statementUnifiesWithCombinator;
93
-
94
- const statementNode = statement.getNode(),
95
- combinatorStatement = combinator.getStatement(),
96
- combinatorStatementNode = combinatorStatement.getNode(),
97
- combinatorStatementTokens = combinatorStatement.getTokens();
98
-
99
- const specificContext = context; ///
100
-
101
- context = contextFromTokens(combinatorStatementTokens, context); ///
102
-
103
- const generalContext = context; ///
104
-
105
- statementUnifiesWithCombinator = statementWithCombinatorUnifier.unify(combinatorStatementNode, statementNode, assignments, stated, generalContext, specificContext);
106
-
107
- return statementUnifiesWithCombinator;
108
- }
109
-
110
- export function unifyMetavariableIntrinsically(generalMetavariable, specificMetavariable, substitutions, generalContext, specificContext) {
111
- let metavariableUnifiesIntrinsically;
112
-
113
- const generalMetavariableNode = generalMetavariable.getNode(),
114
- specificMetavariableNode = specificMetavariable.getNode(),
115
- generalMetavariableTokens = generalMetavariable.getTokens(),
116
- specificMetavariableTokens = specificMetavariable.getTokens();
117
-
118
- generalContext = contextFromTokens(generalMetavariableTokens, generalContext); ///
119
-
120
- specificContext = contextFromTokens(specificMetavariableTokens, specificContext); ///
121
-
122
- const generalNonTerminalNode = generalMetavariableNode, ///
123
- specificNonTerminalNode = specificMetavariableNode; ///
124
-
125
- metavariableUnifiesIntrinsically = intrinsicLevelUnifier.unify(generalNonTerminalNode, specificNonTerminalNode, substitutions, generalContext, specificContext);
126
-
127
- return metavariableUnifiesIntrinsically;
128
- }
129
-
130
- function contextFromTokens(tokens, context) {
131
- const temporaryContext = TemporaryContext.fromContextAndTokens(context, tokens);
132
-
133
- context = temporaryContext; ///
134
-
135
- return context;
136
- }
@@ -1,13 +0,0 @@
1
- "use strict";
2
-
3
- import { nodeQuery } from "../utilities/query";
4
-
5
- const termVariableIdentifierNodeQuery = nodeQuery("/term/variable!/@identifier!");
6
-
7
- export function termVariableIdentifierFromTermNode(TermNode) {
8
- const termVariableIdentifierTerminalNode = termVariableIdentifierNodeQuery(TermNode),
9
- termVariableIdentifierTerminalNodeContent = termVariableIdentifierTerminalNode.getContent(),
10
- termVariableIdentifier = termVariableIdentifierTerminalNodeContent; ///
11
-
12
- return termVariableIdentifier;
13
- }
@@ -1,72 +0,0 @@
1
- "use strict";
2
-
3
- import ontology from "../ontology";
4
- import Verifier from "../verifier";
5
-
6
- import { nodeQuery } from "../utilities/query";
7
-
8
- const termNodeQuery = nodeQuery("/term"),
9
- typeNodeQuery = nodeQuery("/type"),
10
- statementNodeQuery = nodeQuery("/statement");
11
-
12
- class CombinatorVerifier extends Verifier {
13
- verifyStatement(statementNode, context) {
14
- let statementVerifiesAsCombinator;
15
-
16
- const nonTerminalNode = statementNode, ///
17
- childNodes = nonTerminalNode.getChildNodes(),
18
- childNodesVerify = this.verifyChildNodes(childNodes, context);
19
-
20
- statementVerifiesAsCombinator = childNodesVerify; ///
21
-
22
- return statementVerifiesAsCombinator;
23
- }
24
-
25
- static maps = [
26
- {
27
- nodeQuery: statementNodeQuery,
28
- verify: (statementNode, context) => {
29
- const { Statement } = ontology,
30
- statement = Statement.fromStatementNode(statementNode, context),
31
- assignments = null,
32
- stated = false,
33
- statementVerifies = statement.verify(assignments, stated, context);
34
-
35
- return statementVerifies;
36
- }
37
- },
38
- {
39
- nodeQuery: termNodeQuery,
40
- verify: (termNode, context) => {
41
- const { Term } = ontology,
42
- term = Term.fromTermNode(termNode, context),
43
- termVerifies = term.verify(context, () => {
44
- const verifiesAhead = true;
45
-
46
- return verifiesAhead;
47
- });
48
-
49
- return termVerifies;
50
- }
51
- },
52
- {
53
- nodeQuery: typeNodeQuery,
54
- verify: (typeNode, context) => {
55
- let typeVerifies = false;
56
-
57
- const nominalTypeName = typeNode.getNominalTypeName(),
58
- typePresent = context.isTypePresentByNominalTypeName(nominalTypeName);
59
-
60
- if (typePresent) {
61
- typeVerifies = true;
62
- }
63
-
64
- return typeVerifies;
65
- }
66
- }
67
- ];
68
- }
69
-
70
- const combinatorVerifier = new CombinatorVerifier();
71
-
72
- export default combinatorVerifier;
@@ -1,96 +0,0 @@
1
- "use strict";
2
-
3
- import { arrayUtilities } from "necessary";
4
-
5
- import ontology from "../ontology";
6
- import Verifier from "../verifier";
7
-
8
- import { nodeQuery } from "../utilities/query";
9
- import { TYPE_TYPE } from "../constants";
10
-
11
- const { last } = arrayUtilities;
12
-
13
- const termNodeQuery = nodeQuery("/term"),
14
- typeNodeQuery = nodeQuery("/type");
15
-
16
- class ConstructorVerifier extends Verifier {
17
- verifyTerm(termNode, context) {
18
- let termVerifiesAsConstructor;
19
-
20
- const nonTerminalNode = termNode, ///
21
- childNodes = nonTerminalNode.getChildNodes(),
22
- childNodesVerify = this.verifyChildNodes(childNodes, context, () => {
23
- const verifiesAhead = true;
24
-
25
- return verifiesAhead;
26
- });
27
-
28
- termVerifiesAsConstructor = childNodesVerify; ///
29
-
30
- return termVerifiesAsConstructor;
31
- }
32
-
33
- verifyTerminalNode(terminalNode, ...remainingArguments) {
34
- let terminalNodeVerifies;
35
-
36
- const type = terminalNode.getType();
37
-
38
- if (type === TYPE_TYPE) {
39
- const verifyAhead = remainingArguments.pop(), ///
40
- lastRemainingArgument = last(remainingArguments),
41
- context = lastRemainingArgument, ///
42
- content = terminalNode.getContent(),
43
- typeString = content; ///
44
-
45
- context.debug(`The '${typeString}' type is present in the constructor but has not been declared beforehand.`);
46
-
47
- terminalNodeVerifies = false;
48
-
49
- remainingArguments.push(verifyAhead);
50
- } else {
51
- terminalNodeVerifies = super.verifyTerminalNode(terminalNode, ...remainingArguments);
52
- }
53
-
54
- return terminalNodeVerifies;
55
- }
56
-
57
- static maps = [
58
- {
59
- nodeQuery: termNodeQuery,
60
- verify: (termNode, context, verifyAhead) => {
61
- const { Term } = ontology,
62
- term = Term.fromTermNode(termNode, context),
63
- termVerifies = term.verify(context, verifyAhead);
64
-
65
- return termVerifies;
66
- }
67
- },
68
- {
69
- nodeQuery: typeNodeQuery,
70
- verify: (typeNode, context, verifyAhead) => {
71
- let typeVerifies;
72
-
73
- const nominalTypeName = typeNode.getNominalTypeName(),
74
- typePresent = context.isTypePresentByNominalTypeName(nominalTypeName);
75
-
76
- if (typePresent) {
77
- const verifiesAhead = verifyAhead();
78
-
79
- typeVerifies = verifiesAhead; ///
80
- } else {
81
- const typeString = nominalTypeName; ///
82
-
83
- context.debug(`The '${typeString}' type is not present.`);
84
-
85
- typeVerifies = false;
86
- }
87
-
88
- return typeVerifies;
89
- }
90
- }
91
- ];
92
- }
93
-
94
- const constructorVerifier = new ConstructorVerifier();
95
-
96
- export default constructorVerifier;
@@ -1,204 +0,0 @@
1
- "use strict";
2
-
3
- import ontology from "../ontology";
4
- import Verifier from "../verifier";
5
-
6
- import { nodeQuery } from "../utilities/query";
7
-
8
- const errorNodeQuery = nodeQuery("/error"),
9
- ruleNodeQuery = nodeQuery("/rule"),
10
- axiomNodeQuery = nodeQuery("/axiom"),
11
- lemmaNodeQuery = nodeQuery("/lemma"),
12
- sectionNodeQuery = nodeQuery("/section"),
13
- theoremNodeQuery = nodeQuery("/theorem"),
14
- metaLemmaNodeQuery = nodeQuery("/metaLemma"),
15
- conjectureNodeQuery = nodeQuery("/conjecture"),
16
- metatheoremNodeQuery = nodeQuery("/metatheorem"),
17
- variableDeclarationNodeQuery = nodeQuery("/variableDeclaration"),
18
- combinatorDeclarationNodeQuery = nodeQuery("/combinatorDeclaration"),
19
- simpleTypeDeclarationNodeQuery = nodeQuery("/simpleTypeDeclaration"),
20
- typePrefixDeclarationNodeQuery = nodeQuery("/typePrefixDeclaration"),
21
- constructorDeclarationNodeQuery = nodeQuery("/constructorDeclaration"),
22
- complexTypeDeclarationNodeQuery = nodeQuery("/complexTypeDeclaration"),
23
- metavariableDeclarationNodeQuery = nodeQuery("/metavariableDeclaration");
24
-
25
- class TopLevelVerifier extends Verifier {
26
- verify(node, fileContext) {
27
- let verifiesAtTopLevel;
28
-
29
- const context = fileContext, ///
30
- nonTerminalNode = node, ///
31
- nonTerminalNodeVerifies = this.verifyNonTerminalNode(nonTerminalNode, context);
32
-
33
- verifiesAtTopLevel = nonTerminalNodeVerifies; ///
34
-
35
- return verifiesAtTopLevel;
36
- }
37
-
38
- static maps = [
39
- {
40
- nodeQuery: errorNodeQuery,
41
- verify: (errorNode, context) => {
42
- const { Error } = ontology,
43
- error = Error.fromErrorNode(errorNode, context),
44
- errorVerifies = error.verify();
45
-
46
- return errorVerifies;
47
- }
48
- },
49
- {
50
- nodeQuery: ruleNodeQuery,
51
- verify: (ruleNode, context) => {
52
- const { Rule } = ontology,
53
- rule = Rule.fromRuleNode(ruleNode, context),
54
- ruleVerifies = rule.verify();
55
-
56
- return ruleVerifies;
57
- }
58
- },
59
- {
60
- nodeQuery: axiomNodeQuery,
61
- verify: (axiomNode, context) => {
62
- const { Axiom } = ontology,
63
- axiom = Axiom.fromAxiomNode(axiomNode, context),
64
- axiomVerifies = axiom.verify();
65
-
66
- return axiomVerifies;
67
- }
68
- },
69
- {
70
- nodeQuery: lemmaNodeQuery,
71
- verify: (lemmaNode, context) => {
72
- const { Lemma } = ontology,
73
- lemma = Lemma.fromLemmaNode(lemmaNode, context),
74
- lemmaVerifies = lemma.verify();
75
-
76
- return lemmaVerifies;
77
- }
78
- },
79
- {
80
- nodeQuery: sectionNodeQuery,
81
- verify: (sectionNode, context) => {
82
- const { Section } = ontology,
83
- section = Section.fromSectionNode(sectionNode, context),
84
- sectionVerifies = section.verify();
85
-
86
- return sectionVerifies;
87
- }
88
- },
89
- {
90
- nodeQuery: theoremNodeQuery,
91
- verify: (theoremNode, context) => {
92
- const { Theorem } = ontology,
93
- theorem = Theorem.fromTheoremNode(theoremNode, context),
94
- theoremVerifies = theorem.verify();
95
-
96
- return theoremVerifies;
97
- }
98
- },
99
- {
100
- nodeQuery: metaLemmaNodeQuery,
101
- verify: (metaLemmaNode, context) => {
102
- const { MetaLemma } = ontology,
103
- metaLemma = MetaLemma.fromMetaLemmaNode(metaLemmaNode, context),
104
- metaLemmaVerifies = metaLemma.verify();
105
-
106
- return metaLemmaVerifies;
107
- }
108
- },
109
- {
110
- nodeQuery: conjectureNodeQuery,
111
- verify: (conjectureNode, context) => {
112
- const { Conjecture } = ontology,
113
- conjecture = Conjecture.fromConjectureNode(conjectureNode, context),
114
- conjectureVerifies = conjecture.verify();
115
-
116
- return conjectureVerifies;
117
- }
118
- },
119
- {
120
- nodeQuery: metatheoremNodeQuery,
121
- verify: (metatheoremNode, context) => {
122
- const { Metatheorem } = ontology,
123
- metatheorem = Metatheorem.fromMetatheoremNode(metatheoremNode, context),
124
- metatheoremVerifies = metatheorem.verify();
125
-
126
- return metatheoremVerifies;
127
- }
128
- },
129
- {
130
- nodeQuery: variableDeclarationNodeQuery,
131
- verify: (variableDeclarationNode, context) => {
132
- const { VariableDeclaration } = ontology,
133
- variableDeclaration = VariableDeclaration.fromVariableDeclarationNode(variableDeclarationNode, context),
134
- variableDeclarationVerifies = variableDeclaration.verify();
135
-
136
- return variableDeclarationVerifies;
137
- }
138
- },
139
- {
140
- nodeQuery: simpleTypeDeclarationNodeQuery,
141
- verify: (simpleTypeDeclarationNode, context) => {
142
- const { SimpleTypeDeclaration } = ontology,
143
- simpleTypeDeclaration = SimpleTypeDeclaration.fromSimpleTypeDeclarationNode(simpleTypeDeclarationNode, context),
144
- simpleTypeDeclarationVerifies = simpleTypeDeclaration.verify();
145
-
146
- return simpleTypeDeclarationVerifies;
147
- }
148
- },
149
- {
150
- nodeQuery: typePrefixDeclarationNodeQuery,
151
- verify: (typePrefixDeclarationNode, context) => {
152
- const { TypePrefixDeclaration } = ontology,
153
- typePrefixDeclaration = TypePrefixDeclaration.fromTypePrefixDeclarationNode(typePrefixDeclarationNode, context),
154
- typePrefixDeclarationVerifies = typePrefixDeclaration.verify();
155
-
156
- return typePrefixDeclarationVerifies;
157
- }
158
- },
159
- {
160
- nodeQuery: combinatorDeclarationNodeQuery,
161
- verify: (combinatorDeclarationNode, context) => {
162
- const { CombinatorDeclaration } = ontology,
163
- combinatorDeclaration = CombinatorDeclaration.fromCombinatorDeclarationNode(combinatorDeclarationNode, context),
164
- combinatorDeclarationVerifies = combinatorDeclaration.verify();
165
-
166
- return combinatorDeclarationVerifies;
167
- }
168
- },
169
- {
170
- nodeQuery: constructorDeclarationNodeQuery,
171
- verify: (constructorDeclarationNode, context) => {
172
- const { ConstructorDeclaration } = ontology,
173
- constructorDeclaration = ConstructorDeclaration.fromConstructorDeclarationNode(constructorDeclarationNode, context),
174
- constructorDeclarationVerifies = constructorDeclaration.verify();
175
-
176
- return constructorDeclarationVerifies;
177
- }
178
- },
179
- {
180
- nodeQuery: complexTypeDeclarationNodeQuery,
181
- verify: (complexTypeDeclarationNode, context) => {
182
- const { ComplexTypeDeclaration } = ontology,
183
- complexTypeDeclaration = ComplexTypeDeclaration.fromComplexTypeDeclarationNode(complexTypeDeclarationNode, context),
184
- complexTypeDeclarationVerifies = complexTypeDeclaration.verify();
185
-
186
- return complexTypeDeclarationVerifies;
187
- }
188
- },
189
- {
190
- nodeQuery: metavariableDeclarationNodeQuery,
191
- verify: (metavariableDeclarationNode, context) => {
192
- const { MetavariableDeclaration } = ontology,
193
- metavariableDeclaration = MetavariableDeclaration.fromMetavariableDeclarationNode(metavariableDeclarationNode, context),
194
- metavariableDeclarationVerifies = metavariableDeclaration.verify();
195
-
196
- return metavariableDeclarationVerifies;
197
- }
198
- }
199
- ];
200
- }
201
-
202
- const topLevelVerifier = new TopLevelVerifier();
203
-
204
- export default topLevelVerifier;
package/src/verifier.js DELETED
@@ -1,150 +0,0 @@
1
- "use strict";
2
-
3
- import { nodeQuery } from "./utilities/query";
4
- import { isLastRemainingArgumentFunction } from "./utilities/arguments";
5
-
6
- const nonTerminalNodeQuery = nodeQuery("/*");
7
-
8
- export default class Verifier {
9
- verify(node, ...remainingArguments) {
10
- let verifies;
11
-
12
- const nodeVerifies = this.verifyNode(node, ...remainingArguments);
13
-
14
- verifies = nodeVerifies; ///
15
-
16
- return verifies;
17
- }
18
-
19
- verifyNode(node, ...remainingArguments) {
20
- let nodeVerifies;
21
-
22
- const nodeTerminalNode = node.isTerminalNode();
23
-
24
- if (nodeTerminalNode) {
25
- const terminalNode = node, ///
26
- terminalNodeVerifies = this.verifyTerminalNode(terminalNode, ...remainingArguments);
27
-
28
- nodeVerifies = terminalNodeVerifies; ///
29
- } else {
30
- const nonTerminalNode = node, ///
31
- nonTerminalNodeVerifies = this.verifyNonTerminalNode(nonTerminalNode, ...remainingArguments);
32
-
33
- nodeVerifies = nonTerminalNodeVerifies; ///
34
- }
35
-
36
- return nodeVerifies;
37
- }
38
-
39
- verifyChildNodes(childNodes, ...remainingArguments) {
40
- let childNodesVerify;
41
-
42
- const lastRemainingArgumentFunction = isLastRemainingArgumentFunction(remainingArguments);
43
-
44
- if (lastRemainingArgumentFunction) {
45
- const index = 0,
46
- childNodesVerifyAhead = this.verifyChildNodesAhead(index, childNodes, ...remainingArguments);
47
-
48
- childNodesVerify = childNodesVerifyAhead; ///
49
- } else {
50
- childNodesVerify = childNodes.every((childNode) => {
51
- const node = childNode, ///
52
- nodeVerifies = this.verifyNode(node, ...remainingArguments);
53
-
54
- if (nodeVerifies) {
55
- return true;
56
- }
57
- });
58
- }
59
-
60
- return childNodesVerify;
61
- }
62
-
63
- verifyTerminalNode(terminalNode, ...remainingArguments) {
64
- let terminalNodeVerifies;
65
-
66
- const lastRemainingArgumentFunction = isLastRemainingArgumentFunction(remainingArguments);
67
-
68
- if (lastRemainingArgumentFunction) {
69
- const verifyAhead = remainingArguments.pop(), ///
70
- verifiesAhead = verifyAhead();
71
-
72
- terminalNodeVerifies = verifiesAhead; ///
73
-
74
- remainingArguments.push(verifyAhead);
75
- } else {
76
- terminalNodeVerifies = true;
77
- }
78
-
79
- return terminalNodeVerifies;
80
- }
81
-
82
- verifyNonTerminalNode(nonTerminalNode, ...remainingArguments) {
83
- let nonTerminalNodeVerifies;
84
-
85
- let { maps } = this.constructor;
86
-
87
- maps = [ ///
88
- ...maps,
89
- {
90
- nodeQuery: nonTerminalNodeQuery,
91
- verify: (node, ...remainingArguments) => {
92
- let nonTerminalNodeVerifies;
93
-
94
- const childNodes = nonTerminalNode.getChildNodes(), ///
95
- childNodesVerify = this.verifyChildNodes(childNodes, ...remainingArguments);
96
-
97
- nonTerminalNodeVerifies = childNodesVerify; ///
98
-
99
- return nonTerminalNodeVerifies;
100
- }
101
- }
102
- ]
103
-
104
- let nodeVerifies = false;
105
-
106
- maps.some((map) => {
107
- const { nodeQuery, verify } = map;
108
-
109
- const node = nodeQuery(nonTerminalNode);
110
-
111
- if (node !== null) {
112
- nodeVerifies = verify(node, ...remainingArguments);
113
-
114
- return true;
115
- }
116
- });
117
-
118
- nonTerminalNodeVerifies = nodeVerifies; ///
119
-
120
- return nonTerminalNodeVerifies;
121
- }
122
-
123
- verifyChildNodesAhead(index, childNodes, ...remainingArguments) {
124
- let childNodesVerify;
125
-
126
- const verifyAhead = remainingArguments.pop(), ///
127
- childNodesLength = childNodes.length;
128
-
129
- if (index === childNodesLength) {
130
- const verifiesAhead = verifyAhead();
131
-
132
- childNodesVerify = verifiesAhead; ///
133
- } else {
134
- const childNode = childNodes[index],
135
- node = childNode, ///
136
- nodeVerifies = this.verifyNode(node, ...remainingArguments, () => {
137
- remainingArguments.push(verifyAhead);
138
-
139
- const aheadIndex = index + 1,
140
- childNodesVerifyAhead = this.verifyChildNodesAhead(aheadIndex, childNodes, ...remainingArguments);
141
-
142
- return childNodesVerifyAhead;
143
- });
144
-
145
- childNodesVerify = nodeVerifies; ///
146
- }
147
-
148
- return childNodesVerify;
149
- }
150
- }