occam-verify-cli 0.0.921 → 0.0.923

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 (120) hide show
  1. package/lib/axiomLemmaTheoremConjecture.js +3 -4
  2. package/lib/conclusion.js +13 -43
  3. package/lib/constants.js +1 -5
  4. package/lib/context/local.js +386 -0
  5. package/lib/declaration.js +15 -15
  6. package/lib/metaLemmaMetatheorem.js +59 -59
  7. package/lib/mixins/context.js +17 -13
  8. package/lib/mixins/nodesVerifier/metaLevel.js +6 -6
  9. package/lib/premise.js +16 -94
  10. package/lib/{step/proof.js → proofStep.js} +1 -1
  11. package/lib/rule.js +1 -45
  12. package/lib/ruleNames.js +1 -9
  13. package/lib/substitution/statementForMetavariable.js +9 -1
  14. package/lib/substitution.js +1 -8
  15. package/lib/supposition.js +55 -1
  16. package/lib/utilities/customGrammar.js +2 -2
  17. package/lib/utilities/match.js +13 -50
  18. package/lib/utilities/node.js +2 -27
  19. package/lib/utilities/tokens.js +1 -8
  20. package/lib/utilities/verify.js +8 -24
  21. package/lib/verifier/nodes/intrinsicLevelAgainstMetaLevel.js +29 -29
  22. package/lib/verifier/nodes/metaLevel.js +13 -13
  23. package/lib/verify/axiom.js +3 -3
  24. package/lib/verify/conclusion.js +10 -11
  25. package/lib/verify/conjecture.js +3 -3
  26. package/lib/verify/declaration.js +6 -6
  27. package/lib/verify/lemma.js +3 -3
  28. package/lib/verify/metaLemma.js +13 -13
  29. package/lib/verify/metastatement.js +64 -64
  30. package/lib/verify/metatheorem.js +13 -13
  31. package/lib/verify/premise.js +11 -30
  32. package/lib/verify/proof.js +3 -4
  33. package/lib/verify/proofStep.js +5 -5
  34. package/lib/verify/rule.js +11 -11
  35. package/lib/verify/statement/qualified.js +35 -9
  36. package/lib/verify/statement/unqualified.js +1 -1
  37. package/lib/verify/subproof.js +3 -4
  38. package/lib/verify/supposition.js +3 -3
  39. package/lib/verify/termAsConstructor.js +3 -3
  40. package/lib/verify/theorem.js +3 -3
  41. package/package.json +4 -4
  42. package/src/axiomLemmaTheoremConjecture.js +2 -4
  43. package/src/conclusion.js +15 -54
  44. package/src/constants.js +0 -1
  45. package/src/context/{local/intrinsicLevel.js → local.js} +182 -97
  46. package/src/declaration.js +19 -19
  47. package/src/metaLemmaMetatheorem.js +58 -58
  48. package/src/mixins/context.js +12 -9
  49. package/src/mixins/nodesVerifier/metaLevel.js +8 -8
  50. package/src/premise.js +25 -143
  51. package/src/rule.js +0 -67
  52. package/src/ruleNames.js +0 -2
  53. package/src/substitution/statementForMetavariable.js +14 -0
  54. package/src/substitution.js +0 -6
  55. package/src/supposition.js +46 -0
  56. package/src/utilities/customGrammar.js +1 -2
  57. package/src/utilities/match.js +13 -60
  58. package/src/utilities/node.js +3 -32
  59. package/src/utilities/tokens.js +0 -8
  60. package/src/utilities/verify.js +4 -20
  61. package/src/verifier/nodes/intrinsicLevelAgainstMetaLevel.js +36 -37
  62. package/src/verifier/nodes/metaLevel.js +17 -17
  63. package/src/verify/axiom.js +3 -4
  64. package/src/verify/conclusion.js +9 -13
  65. package/src/verify/conjecture.js +3 -4
  66. package/src/verify/declaration.js +7 -7
  67. package/src/verify/lemma.js +3 -4
  68. package/src/verify/metaLemma.js +24 -25
  69. package/src/verify/metastatement.js +64 -64
  70. package/src/verify/metatheorem.js +23 -24
  71. package/src/verify/premise.js +14 -46
  72. package/src/verify/proof.js +2 -4
  73. package/src/verify/proofStep.js +1 -1
  74. package/src/verify/rule.js +11 -12
  75. package/src/verify/statement/qualified.js +43 -9
  76. package/src/verify/statement/unqualified.js +1 -1
  77. package/src/verify/subproof.js +2 -4
  78. package/src/verify/supposition.js +1 -1
  79. package/src/verify/termAsConstructor.js +3 -4
  80. package/src/verify/theorem.js +3 -4
  81. package/lib/context/local/intrinsicLevel.js +0 -326
  82. package/lib/context/local/metaLevel.js +0 -282
  83. package/lib/metaConsequent.js +0 -108
  84. package/lib/metaSupposition.js +0 -160
  85. package/lib/node/metastatement/bracketed.js +0 -16
  86. package/lib/step/metaproof.js +0 -106
  87. package/lib/substitution/metastatementForMetavariable.js +0 -173
  88. package/lib/verify/metaConsequent.js +0 -50
  89. package/lib/verify/metaDerivation.js +0 -31
  90. package/lib/verify/metaSubDerivation.js +0 -25
  91. package/lib/verify/metaSubproof.js +0 -35
  92. package/lib/verify/metaSupposition.js +0 -61
  93. package/lib/verify/metaSuppositions.js +0 -28
  94. package/lib/verify/metaproof.js +0 -32
  95. package/lib/verify/metaproofStep.js +0 -98
  96. package/lib/verify/metastatement/qualified.js +0 -95
  97. package/lib/verify/metastatement/unqualified.js +0 -37
  98. package/lib/verify/metastatementAsContainedAssertion.js +0 -109
  99. package/lib/verify/metastatementAsDefinedAssertion.js +0 -132
  100. package/lib/verify/metavariableAgainstMetastatement.js +0 -44
  101. package/src/context/local/metaLevel.js +0 -191
  102. package/src/metaConsequent.js +0 -83
  103. package/src/metaSupposition.js +0 -127
  104. package/src/node/metastatement/bracketed.js +0 -9
  105. package/src/step/metaproof.js +0 -73
  106. package/src/substitution/metastatementForMetavariable.js +0 -90
  107. package/src/verify/metaConsequent.js +0 -61
  108. package/src/verify/metaDerivation.js +0 -23
  109. package/src/verify/metaSubDerivation.js +0 -22
  110. package/src/verify/metaSubproof.js +0 -34
  111. package/src/verify/metaSupposition.js +0 -78
  112. package/src/verify/metaSuppositions.js +0 -17
  113. package/src/verify/metaproof.js +0 -30
  114. package/src/verify/metaproofStep.js +0 -137
  115. package/src/verify/metastatement/qualified.js +0 -130
  116. package/src/verify/metastatement/unqualified.js +0 -34
  117. package/src/verify/metastatementAsContainedAssertion.js +0 -127
  118. package/src/verify/metastatementAsDefinedAssertion.js +0 -156
  119. package/src/verify/metavariableAgainstMetastatement.js +0 -42
  120. /package/src/{step/proof.js → proofStep.js} +0 -0
@@ -1,191 +0,0 @@
1
- "use strict";
2
-
3
- import IntrinsicLevelLocalContext from "../../context/local/intrinsicLevel";
4
-
5
- import { last, reverse } from "../../utilities/array";
6
-
7
- class MetaLevelLocalContext extends IntrinsicLevelLocalContext {
8
- constructor(context, variables, proofSteps, equivalences, judgements, metavariables, metaproofSteps) {
9
- super(context, variables, proofSteps, equivalences);
10
-
11
- this.judgements = judgements;
12
- this.metavariables = metavariables;
13
- this.metaproofSteps = metaproofSteps;
14
- }
15
-
16
- getJudgements() {
17
- let judgements = this.context.getJudgements();
18
-
19
- judgements = [ ///
20
- ...this.judgements,
21
- ...judgements
22
- ]
23
-
24
- return judgements;
25
- }
26
-
27
- getMetavariables() {
28
- let metavariables = this.context.getMetavariables();
29
-
30
- metavariables = [ ///
31
- ...this.metavariables,
32
- ...metavariables
33
- ]
34
-
35
- return metavariables;
36
- }
37
-
38
- getMetaproofSteps() {
39
- let metaproofSteps = this.context.getMetaproofSteps();
40
-
41
- metaproofSteps = [ ///
42
- ...metaproofSteps,
43
- ...this.metaproofSteps
44
- ];
45
-
46
- return metaproofSteps;
47
- }
48
-
49
- isIntrinsicLevel() {
50
- const intrinsicLevel = false;
51
-
52
- return intrinsicLevel;
53
- }
54
-
55
- getLastMetaproofStep() {
56
- let lastMetaproofStep = null;
57
-
58
- const metaproofStepsLength = this.metaproofSteps.length;
59
-
60
- if (metaproofStepsLength > 0) {
61
- lastMetaproofStep = last(this.metaproofSteps);
62
- }
63
-
64
- return lastMetaproofStep;
65
- }
66
-
67
- addJudgement(judgement) {
68
- let judgementAdded = false;
69
-
70
- const metavariableNode = judgement.getMetavariableNode(),
71
- judgementPresent = this.isJudgementPresentByMetavariableNode(metavariableNode);
72
-
73
- if (!judgementPresent) {
74
- this.judgements.push(judgement);
75
-
76
- judgementAdded = true;
77
- }
78
-
79
- return judgementAdded;
80
- }
81
-
82
- addMetavariable(metavariable) {
83
- let metavariableAdded = false;
84
-
85
- const node = metavariable.getName(),
86
- metavariablePresent = this.metavariables.some((metavariable) => {
87
- const metavariableMatchesNode = metavariable.matchNode(node);
88
-
89
- if (metavariableMatchesNode) {
90
- return true;
91
- }
92
- });
93
-
94
- if (!metavariablePresent) {
95
- this.metavariables.push(metavariable);
96
-
97
- metavariableAdded = true;
98
- }
99
-
100
- return metavariableAdded;
101
- }
102
-
103
- addMetaproofStep(metaproofStep) {
104
- this.metaproofSteps.push(metaproofStep);
105
- }
106
-
107
- matchMetastatementNode(metastatementNode) {
108
- let metaproofSteps = this.getMetaproofSteps();
109
-
110
- metaproofSteps = reverse(metaproofSteps); ///
111
-
112
- const matchesMetastatementNode = metaproofSteps.some((metaproofStep) => {
113
- const metaproofStepMatchesMetastatementNode = metaproofStep.matchMetastatementNode(metastatementNode);
114
-
115
- if (metaproofStepMatchesMetastatementNode) {
116
- return true;
117
- }
118
- });
119
-
120
- return matchesMetastatementNode;
121
- }
122
-
123
- findMetavariableByMetavariableNode(metavariableNode, metaLevelLocalContext) {
124
- const node = metavariableNode, ///
125
- metavariables = this.getMetavariables(),
126
- metavariable = metavariables.find((metavariable) => {
127
- const matches = metavariable.matchNode(node, metaLevelLocalContext);
128
-
129
- if (matches) {
130
- return true;
131
- }
132
- }) || null;
133
-
134
- return metavariable;
135
- }
136
-
137
- findJudgementByMetavariableNode(metavariableNode) {
138
- const judgements = this.getJudgements(),
139
- judgement = judgements.find((judgement) => {
140
- const judgementMatchesMetavariableNode = judgement.matchMetavariableNode(metavariableNode);
141
-
142
- if (judgementMatchesMetavariableNode) {
143
- return true;
144
- }
145
- }) || null;
146
-
147
- return judgement;
148
- }
149
-
150
- isMetavariablePresentByMetavariableNode(metavariableNode, metaLevelLocalContext) {
151
- const metavariable = this.findMetavariableByMetavariableNode(metavariableNode, metaLevelLocalContext),
152
- metavariablePresent = (metavariable !== null);
153
-
154
- return metavariablePresent;
155
- }
156
-
157
- isJudgementPresentByMetavariableNode(metavariableNode) {
158
- const judgement = this.findJudgementByMetavariableNode(metavariableNode),
159
- judgementPresent = (judgement !== null);
160
-
161
- return judgementPresent;
162
- }
163
-
164
- static fromFileContext(fileContext) {
165
- const context = fileContext, ///
166
- variables = [],
167
- proofSteps = [],
168
- equivalences = [],
169
- judgements = [],
170
- metavariables = [],
171
- metaproofSteps = [],
172
- metaLevelLocalContext = new MetaLevelLocalContext(context, variables, proofSteps, equivalences, judgements, metavariables, metaproofSteps);
173
-
174
- return metaLevelLocalContext;
175
- }
176
-
177
- static fromLocalContext(localContext) {
178
- const context = localContext, ///
179
- variables = [],
180
- proofSteps = [],
181
- equivalences = [],
182
- judgements = [],
183
- metavariables = [],
184
- metaproofSteps = [],
185
- metaLevelLocalContext = new MetaLevelLocalContext(context, variables, proofSteps, equivalences, judgements, metavariables, metaproofSteps); ///
186
-
187
- return metaLevelLocalContext;
188
- }
189
- }
190
-
191
- export default MetaLevelLocalContext;
@@ -1,83 +0,0 @@
1
- "use strict";
2
-
3
- import metaLevelNodesVerifier from "./verifier/nodes/metaLevel";
4
- import MetaLevelLocalContext from "./context/local/metaLevel";
5
-
6
- import { nodeAsString } from "./utilities/string";
7
- import { statementNodeFromStatementString, metastatementNodeFromMetastatementString } from "./utilities/node";
8
-
9
- export default class MetaConsequent {
10
- constructor(metastatementNode, statementNode) {
11
- this.metastatementNode = metastatementNode;
12
- this.statementNode = statementNode;
13
- }
14
-
15
- getMetastatementNode() {
16
- return this.metastatementNode;
17
- }
18
-
19
- getStatementNode() {
20
- return this.statementNode;
21
- }
22
-
23
- matchMetastatementNode(metastatementNode, substitutions, fileContext, localContext) {
24
- let matchesMetastatementNode = false;
25
-
26
- if (this.metastatementNode !== null) {
27
- const metaLevelLocalContext = MetaLevelLocalContext.fromFileContext(fileContext),
28
- nonTerminalNodeA = this.metastatementNode, ///
29
- nonTerminalNodeB = metastatementNode, ///
30
- localContextA = metaLevelLocalContext, ///
31
- localContextB = localContext, ///
32
- nonTerminalNodeVerified = metaLevelNodesVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, localContextA, localContextB, () => {
33
- const verifiedAhead = true;
34
-
35
- return verifiedAhead;
36
- });
37
-
38
- matchesMetastatementNode = nonTerminalNodeVerified; ///
39
- }
40
-
41
- return matchesMetastatementNode;
42
- }
43
-
44
- toJSON(tokens) {
45
- const metastatementString = nodeAsString(this.metastatementNode, tokens),
46
- statementString = nodeAsString(this.statementNode, tokens),
47
- metastatement = metastatementString, ///
48
- statement = statementString, ///
49
- json = {
50
- metastatement,
51
- statement
52
- };
53
-
54
- return json;
55
- }
56
-
57
- static fromStatementNode(statementNode) {
58
- const metastatementNode = null,
59
- metaConsequent = new MetaConsequent(metastatementNode, statementNode);
60
-
61
- return metaConsequent;
62
- }
63
-
64
- static fromMetastatementNode(metastatementNode) {
65
- const statementNode = null,
66
- metaConsequent = new MetaConsequent(metastatementNode, statementNode);
67
-
68
- return metaConsequent;
69
- }
70
-
71
- static fromJSONAndFileContext(json, fileContext) {
72
- const { metastatement, statement } = json,
73
- metastatementString = metastatement, ///
74
- statementString = statement, ///
75
- lexer = fileContext.getLexer(),
76
- parser = fileContext.getParser(),
77
- metastatementNode = metastatementNodeFromMetastatementString(metastatementString, lexer, parser),
78
- statementNode = statementNodeFromStatementString(statementString, lexer, parser),
79
- metaConsequent = new MetaConsequent(metastatementNode, statementNode);
80
-
81
- return metaConsequent;
82
- }
83
- }
@@ -1,127 +0,0 @@
1
- "use strict";
2
-
3
- import MetaLevelLocalContext from "./context/local/metaLevel";
4
- import metaLevelNodesVerifier from "./verifier/nodes/metaLevel";
5
-
6
- import { match } from "./utilities/array";
7
- import { nodeAsString } from "./utilities/string";
8
- import { nodeQuery, nodesQuery } from "./utilities/query";
9
- import { statementNodeFromStatementString, metastatementNodeFromMetastatementString } from "./utilities/node";
10
-
11
- const subproofAssertionNodeQuery = nodeQuery("/metastatement/subproofAssertion!"),
12
- subproofAssertionMetastatementNodesQuery = nodesQuery("/subproofAssertion/metastatement"),
13
- metaSubproofMetaSuppositionMetastatementNodesQuery = nodesQuery("/metaSubproof/metaSupposition/unqualifiedMetastatement/metastatement!"),
14
- metaSubproofLastMetpProofStepMetastatementNodeQuery = nodeQuery("/metaSubproof/metaSubDerivation/lastMetpProofStep/unqualifiedMetastatement|qualifiedMetastatement/metastatement!");
15
-
16
- export default class MetaSupposition {
17
- constructor(metastatementNode, statementNode) {
18
- this.metastatementNode = metastatementNode;
19
- this.statementNode = statementNode;
20
- }
21
-
22
- getMetastatementNode() {
23
- return this.metastatementNode;
24
- }
25
-
26
- getStatementNode() {
27
- return this.statementNode;
28
- }
29
-
30
- matchMetaSubproofNode(metaSubproofNode, substitutions, fileContext, localContext) {
31
- let matchesMetaSubproofNode = false;
32
-
33
- if (this.metastatementNode !== null) {
34
- const subproofAssertionNode = subproofAssertionNodeQuery(this.metastatementNode);
35
-
36
- if (subproofAssertionNode !== null) {
37
- const metaSubproofMetaSuppositionMetastatementNodes = metaSubproofMetaSuppositionMetastatementNodesQuery(metaSubproofNode),
38
- metaSubproofLastMetpProofStepMetastatementNode = metaSubproofLastMetpProofStepMetastatementNodeQuery(metaSubproofNode),
39
- metaSubproofMetastatementNodes = [
40
- ...metaSubproofMetaSuppositionMetastatementNodes,
41
- metaSubproofLastMetpProofStepMetastatementNode
42
- ],
43
- subproofAssertionMetastatementNodes = subproofAssertionMetastatementNodesQuery(subproofAssertionNode);
44
-
45
- matchesMetaSubproofNode = match(subproofAssertionMetastatementNodes, metaSubproofMetastatementNodes, (subproofAssertionMetastatementNode, ruleSubproofMetastatementNode) => {
46
- const metaLevelLocalContext = MetaLevelLocalContext.fromFileContext(fileContext),
47
- nonTerminalNodeA = subproofAssertionMetastatementNode, ///
48
- nonTerminalNodeB = ruleSubproofMetastatementNode, ///
49
- localContextA = metaLevelLocalContext, ///
50
- localContextB = localContext, ///
51
- nonTerminalNodeVerified = metaLevelNodesVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, localContextA, localContextB, () => {
52
- const verifiedAhead = true;
53
-
54
- return verifiedAhead;
55
- });
56
-
57
- if (nonTerminalNodeVerified) {
58
- return true;
59
- }
60
- });
61
- }
62
- }
63
-
64
- return matchesMetaSubproofNode;
65
- }
66
-
67
- matchMetastatementNode(metastatementNode, substitutions, fileContext, localContext) {
68
- let matchesMetastatementNode = false;
69
-
70
- if (this.metastatementNode !== null) {
71
- const metaLevelLocalContext = MetaLevelLocalContext.fromFileContext(fileContext),
72
- nonTerminalNodeA = this.metastatementNode, ///
73
- nonTerminalNodeB = metastatementNode, ///
74
- localContextA = metaLevelLocalContext, ///
75
- localContextB = localContext, ///
76
- nonTerminalNodeVerified = metaLevelNodesVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, localContextA, localContextB, () => {
77
- const verifiedAhead = true;
78
-
79
- return verifiedAhead;
80
- });
81
-
82
- matchesMetastatementNode = nonTerminalNodeVerified; ///
83
- }
84
-
85
- return matchesMetastatementNode;
86
- }
87
-
88
- toJSON(tokens) {
89
- const metastatementString = nodeAsString(this.metastatementNode, tokens),
90
- statementString = nodeAsString(this.statementNode, tokens),
91
- metastatement = metastatementString, ///
92
- statement = statementString, ///
93
- json = {
94
- metastatement,
95
- statement
96
- };
97
-
98
- return json;
99
- }
100
-
101
- static fromStatementNode(statementNode) {
102
- const metastatementNode = null,
103
- metaSupposition = new MetaSupposition(metastatementNode, statementNode);
104
-
105
- return metaSupposition;
106
- }
107
-
108
- static fromMetastatementNode(metastatementNode) {
109
- const statementNode = null,
110
- metaSupposition = new MetaSupposition(metastatementNode, statementNode);
111
-
112
- return metaSupposition;
113
- }
114
-
115
- static fromJSONAndFileContext(json, fileContext) {
116
- const { metastatement, statement } = json,
117
- metastatementString = metastatement, ///
118
- statementString = statement, ///
119
- lexer = fileContext.getLexer(),
120
- parser = fileContext.getParser(),
121
- metastatementNode = metastatementNodeFromMetastatementString(metastatementString, lexer, parser),
122
- statementNode = statementNodeFromStatementString(statementString, lexer, parser),
123
- metaSupposition = new MetaSupposition(metastatementNode, statementNode);
124
-
125
- return metaSupposition;
126
- }
127
- }
@@ -1,9 +0,0 @@
1
- "use strict";
2
-
3
- import { metastatementNodeFromMetastatementString } from "../../utilities/node";
4
-
5
- const bracketedMetastatementString = "(A)";
6
-
7
- const bracketedMetastatementNode = metastatementNodeFromMetastatementString(bracketedMetastatementString);
8
-
9
- export default bracketedMetastatementNode;
@@ -1,73 +0,0 @@
1
- "use strict";
2
-
3
- export default class MetaproofStep {
4
- constructor(statementNode, ruleSubproofNode, metaSubproofNode, metastatementNode) {
5
- this.statementNode = statementNode;
6
- this.ruleSubproofNode = ruleSubproofNode;
7
- this.metaSubproofNode = metaSubproofNode;
8
- this.metastatementNode = metastatementNode;
9
- }
10
-
11
- getStatementNode() {
12
- return this.statementNode;
13
- }
14
-
15
- getRuleSubproofNode() {
16
- return this.ruleSubproofNode;
17
- }
18
-
19
- getMetaSubproofNode() {
20
- return this.metaSubproofNode;
21
- }
22
-
23
- getMetastatementNode() {
24
- return this.metastatementNode;
25
- }
26
-
27
- matchMetastatementNode(metastatementNode) {
28
- let matchesMetastatementNode = false;
29
-
30
- if (this.metastatementNode !== null) {
31
- matchesMetastatementNode = this.metastatementNode.match(metastatementNode);
32
- }
33
-
34
- return matchesMetastatementNode;
35
- }
36
-
37
- static fromStatementNode(statementNode) {
38
- const ruleSubproofNode = null,
39
- metaSubproofNode = null,
40
- metastatementNode = null,
41
- metaproofStep = new MetaproofStep(statementNode, ruleSubproofNode, metaSubproofNode, metastatementNode);
42
-
43
- return metaproofStep;
44
- }
45
-
46
- static fromRuleSubproofNode(ruleSubproofNode) {
47
- const statementNode = null,
48
- metaSubproofNode = null,
49
- metastatementNode = null,
50
- metaproofStep = new MetaproofStep(statementNode, ruleSubproofNode, metaSubproofNode, metastatementNode);
51
-
52
- return metaproofStep;
53
- }
54
-
55
- static fromMetaSubproofNode(metaSubproofNode) {
56
- const statementNode = null,
57
- ruleSubproofNode = null,
58
- metastatementNode = null,
59
- metaproofStep = new MetaproofStep(statementNode, ruleSubproofNode, metaSubproofNode, metastatementNode);
60
-
61
- return metaproofStep;
62
-
63
- }
64
-
65
- static fromMetastatementNode(metastatementNode) {
66
- const statementNode = null,
67
- ruleSubproofNode = null,
68
- metaSubproofNode = null,
69
- metaproofStep = new MetaproofStep(statementNode, ruleSubproofNode, metaSubproofNode, metastatementNode);
70
-
71
- return metaproofStep;
72
- }
73
- }
@@ -1,90 +0,0 @@
1
- "use strict";
2
-
3
- import Substitution from "../substitution";
4
-
5
- import { nodeAsString } from "../utilities/string";
6
- import { bracketedMetastatementChildNodeFromMetastatementNode } from "../utilities/match";
7
- import { metavariableNodeFromMetavariableString, metastatementNodeFromMetastatementString } from "../utilities/node";
8
-
9
- export default class MetastatementForMetavariableSubstitution extends Substitution {
10
- constructor(metavariableNode, metastatementNode) {
11
- super();
12
-
13
- this.metavariableNode = metavariableNode;
14
- this.metastatementNode = metastatementNode;
15
- }
16
-
17
- getMetavariableNode() {
18
- return this.metavariableNode;
19
- }
20
-
21
- getMetastatementNode() {
22
- return this.metastatementNode;
23
- }
24
-
25
- matchMetavariableNode(metavariableNode) {
26
- const matchesMetavariableNode = this.metavariableNode.match(metavariableNode);
27
-
28
- return matchesMetavariableNode;
29
- }
30
-
31
- matchMetastatementNode(metastatementNode) {
32
- let matchesMetastatementNode;
33
-
34
- matchesMetastatementNode = this.metastatementNode.match(metastatementNode)
35
-
36
- if (!matchesMetastatementNode) {
37
- const bracketedMetastatementChildNode = bracketedMetastatementChildNodeFromMetastatementNode(metastatementNode);
38
-
39
- if (bracketedMetastatementChildNode !== null) {
40
- const metastatementNode = bracketedMetastatementChildNode; ///
41
-
42
- matchesMetastatementNode = this.metastatementNode.match(metastatementNode);
43
- }
44
- }
45
-
46
- return matchesMetastatementNode;
47
- }
48
-
49
- toJSON(tokens) {
50
- const metavariableString = nodeAsString(this.metavariableNode, tokens),
51
- metastatementString = nodeAsString(this.metastatementNode, tokens),
52
- metavariable = metavariableString, ///
53
- metastatement = metastatementString, ///
54
- json = {
55
- metavariable,
56
- metastatement
57
- };
58
-
59
- return json;
60
- }
61
-
62
- static fromJSONAndFileContext(json, fileContext) {
63
- const { metavariable, metastatement } = json,
64
- metavariableString = metavariable, ///
65
- metastatementString = metastatement, ///
66
- lexer = fileContext.getLexer(),
67
- parser = fileContext.getParser(),
68
- metastatementNode = metastatementNodeFromMetastatementString(metastatementString, lexer, parser),
69
- metavariableNode = metavariableNodeFromMetavariableString(metavariableString, lexer, parser),
70
- metastatementForMetavariableSubstitution = new MetastatementForMetavariableSubstitution(metastatementNode, metavariableNode);
71
-
72
- return metastatementForMetavariableSubstitution;
73
- }
74
-
75
- static fromMetavariableNodeAndMetastatementNode(metavariableNode, metastatementNode) {
76
- let metastatementForMetavariableSubstitution;
77
-
78
- metastatementForMetavariableSubstitution = new MetastatementForMetavariableSubstitution(metavariableNode, metastatementNode);
79
-
80
- const bracketedMetastatementChildNode = bracketedMetastatementChildNodeFromMetastatementNode(metastatementNode);
81
-
82
- if (bracketedMetastatementChildNode !== null) {
83
- const metastatementNode = bracketedMetastatementChildNode; ///
84
-
85
- metastatementForMetavariableSubstitution = new MetastatementForMetavariableSubstitution(metavariableNode, metastatementNode);
86
- }
87
-
88
- return metastatementForMetavariableSubstitution;
89
- }
90
- }
@@ -1,61 +0,0 @@
1
- "use strict";
2
-
3
- import MetaConsequent from "../metaConsequent";
4
- import verifyUnqualifiedStatement from "./statement/unqualified";
5
- import verifyUnqualifiedMetastatement from "./metastatement/unqualified";
6
-
7
- import { nodeQuery } from "../utilities/query";
8
-
9
- const statementNodeQuery = nodeQuery("/unqualifiedStatement/statement!"),
10
- metastatementNodeQuery = nodeQuery("/unqualifiedMetastatement/metastatement!"),
11
- unqualifiedStatementNodeQuery = nodeQuery("/metaConsequent/unqualifiedStatement!"),
12
- unqualifiedMetastatementNodeQuery = nodeQuery("/metaConsequent/unqualifiedMetastatement!");
13
-
14
- export default function verifyMetaConsequent(metaConsequentNode, metaConsequents, substitutions, localContext) {
15
- let metaConsequentVerified = false;
16
-
17
- const metaConsequentString = localContext.nodeAsString(metaConsequentNode);
18
-
19
- localContext.trace(`Verifying the '${metaConsequentString}' meta-consequent...`, metaConsequentNode);
20
-
21
- const unqualifiedStatementNode = unqualifiedStatementNodeQuery(metaConsequentNode),
22
- unqualifiedMetastatementNode = unqualifiedMetastatementNodeQuery(metaConsequentNode);
23
-
24
- if (unqualifiedStatementNode !== null) {
25
- const derived = false,
26
- assignments = [],
27
- unqualifiedStatementVerified = verifyUnqualifiedStatement(unqualifiedStatementNode, assignments, derived, localContext);
28
-
29
- metaConsequentVerified = unqualifiedStatementVerified; ///
30
- }
31
-
32
- if (unqualifiedMetastatementNode !== null) {
33
- const derived = false,
34
- assignments = [],
35
- unqualifiedMetastatementVerified = verifyUnqualifiedMetastatement(unqualifiedMetastatementNode, assignments, derived, localContext);
36
-
37
- metaConsequentVerified = unqualifiedMetastatementVerified; ///
38
- }
39
-
40
- if (metaConsequentVerified) {
41
- let metaConsequent;
42
-
43
- if (unqualifiedStatementNode !== null) {
44
- const statementNode = statementNodeQuery(unqualifiedStatementNode);
45
-
46
- metaConsequent = MetaConsequent.fromStatementNode(statementNode);
47
- }
48
-
49
- if (unqualifiedMetastatementNode !== null) {
50
- const metastatementNode = metastatementNodeQuery(unqualifiedMetastatementNode);
51
-
52
- metaConsequent = MetaConsequent.fromMetastatementNode(metastatementNode);
53
- }
54
-
55
- metaConsequents.push(metaConsequent);
56
-
57
- localContext.debug(`...verified the '${metaConsequentString}' meta-consequent.`, metaConsequentNode);
58
- }
59
-
60
- return metaConsequentVerified;
61
- }
@@ -1,23 +0,0 @@
1
- "use strict";
2
-
3
- import verifyMetaproofStep from "../verify/metaproofStep";
4
-
5
- import { nodesQuery } from "../utilities/query";
6
-
7
- const metaproofStepNodesQuery = nodesQuery("/metaDerivation/metaproofStep|lastMetaproofStep");
8
-
9
- export default function verifyMetaDerivation(metaDerivationNode, substitutions, localContext) {
10
- let metaDerivationVerified;
11
-
12
- const metaproofStepNodes = metaproofStepNodesQuery(metaDerivationNode);
13
-
14
- metaDerivationVerified = metaproofStepNodes.every((metaproofStepNode) => {
15
- const metaproofStepVerified = verifyMetaproofStep(metaproofStepNode, substitutions, localContext);
16
-
17
- if (metaproofStepVerified) {
18
- return true;
19
- }
20
- });
21
-
22
- return metaDerivationVerified;
23
- }
@@ -1,22 +0,0 @@
1
- "use strict";
2
-
3
- import { nodesQuery } from "../utilities/query";
4
-
5
- const metaproofStepNodesQuery = nodesQuery("/metaSubDerivation/metaproofStep|lastMetaproofStep");
6
-
7
- export default function verifyMetaSubDerivation(metaSubDerivationNode, substitutions, localContext) {
8
- let metaSubDerivationVerified;
9
-
10
- const metaproofStepNodes = metaproofStepNodesQuery(metaSubDerivationNode);
11
-
12
- metaSubDerivationVerified = metaproofStepNodes.every((metaproofStepNode) => {
13
- const { verifyMetaproofStep } = verifyMetaSubDerivation,
14
- metaproofStepVerified = verifyMetaproofStep(metaproofStepNode, substitutions, localContext);
15
-
16
- if (metaproofStepVerified) {
17
- return true;
18
- }
19
- });
20
-
21
- return metaSubDerivationVerified;
22
- }