occam-verify-cli 0.0.470 → 0.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.
Files changed (55) hide show
  1. package/lib/constants.js +4 -8
  2. package/lib/context/file.js +9 -9
  3. package/lib/context/metaproof.js +38 -32
  4. package/lib/context/proof.js +35 -29
  5. package/lib/equality.js +22 -0
  6. package/lib/metaSubstitution.js +12 -52
  7. package/lib/rule.js +15 -19
  8. package/lib/step/metaproof.js +114 -0
  9. package/lib/step/proof.js +68 -0
  10. package/lib/substitution.js +16 -56
  11. package/lib/utilities/array.js +2 -5
  12. package/lib/utilities/node.js +105 -0
  13. package/lib/verify/antecedent.js +4 -4
  14. package/lib/verify/derivation.js +16 -18
  15. package/lib/verify/equality.js +18 -5
  16. package/lib/verify/metaDerivation.js +16 -18
  17. package/lib/verify/metaproof.js +10 -51
  18. package/lib/verify/metastatement/qualified.js +1 -7
  19. package/lib/verify/metastatement/unqualified.js +2 -9
  20. package/lib/verify/premiseOrPremises.js +4 -4
  21. package/lib/verify/proof.js +11 -52
  22. package/lib/verify/statement/qualified.js +1 -7
  23. package/lib/verify/statement/unqualified.js +2 -9
  24. package/package.json +1 -1
  25. package/src/constants.js +1 -2
  26. package/src/context/file.js +6 -6
  27. package/src/context/metaproof.js +32 -31
  28. package/src/context/proof.js +30 -29
  29. package/src/equality.js +8 -0
  30. package/src/metaSubstitution.js +16 -87
  31. package/src/rule.js +19 -26
  32. package/src/step/metaproof.js +99 -0
  33. package/src/step/proof.js +30 -0
  34. package/src/substitution.js +19 -90
  35. package/src/utilities/array.js +1 -1
  36. package/src/utilities/node.js +149 -0
  37. package/src/verify/antecedent.js +3 -3
  38. package/src/verify/derivation.js +17 -18
  39. package/src/verify/equality.js +29 -11
  40. package/src/verify/metaDerivation.js +17 -18
  41. package/src/verify/metaproof.js +20 -91
  42. package/src/verify/metastatement/qualified.js +0 -9
  43. package/src/verify/metastatement/unqualified.js +1 -12
  44. package/src/verify/premiseOrPremises.js +3 -3
  45. package/src/verify/proof.js +21 -92
  46. package/src/verify/statement/qualified.js +0 -9
  47. package/src/verify/statement/unqualified.js +1 -13
  48. package/lib/assertion.js +0 -147
  49. package/lib/metaAssertion.js +0 -200
  50. package/lib/utilities/metastatement.js +0 -45
  51. package/lib/utilities/statement.js +0 -45
  52. package/src/assertion.js +0 -150
  53. package/src/metaAssertion.js +0 -245
  54. package/src/utilities/metastatement.js +0 -50
  55. package/src/utilities/statement.js +0 -50
@@ -1,245 +0,0 @@
1
- "use strict";
2
-
3
- import { first, second } from "./utilities/array";
4
- import { nodeQuery, nodesQuery } from "./utilities/query";
5
- import { matchBracketedMetastatementChildNode } from "./utilities/metastatement";
6
-
7
- const metastatementNodeQuery = nodeQuery("/*/metastatement!"),
8
- metastatementNodesQuery = nodesQuery("/metaSubproofAssertion/metastatement"),
9
- metaSubproofAssertionNodeQuery = nodeQuery("/metastatement/metaSubproofAssertion"),
10
- qualifiedOrUnqualifiedMetastatementMetastatementNodesQuery = nodesQuery("/metaSubproof/qualifiedMetastatement|unqualifiedMetastatement/metastatement!");
11
-
12
- export default class MetaAssertion {
13
- constructor(metaSubproofNode, metastatementNode) {
14
- this.metaSubproofNode = metaSubproofNode;
15
- this.metastatementNode = metastatementNode;
16
- }
17
-
18
- getMetaSubproofNode() {
19
- return this.metaSubproofNode;
20
- }
21
-
22
- getMetastatementNode() {
23
- return this.metastatementNode;
24
- }
25
-
26
- match(metaAssertion) {
27
- let matches = false;
28
-
29
- const metastatementNode = metaAssertion.getMetastatementNode();
30
-
31
- if (metastatementNode !== null) {
32
- const metaSubproofAssertionNode = metaSubproofAssertionNodeQuery(metastatementNode);
33
-
34
- if (metaSubproofAssertionNode === null) {
35
- const metastatementNodeMatches = this.matchMetastatementNode(metastatementNode);
36
-
37
- matches = metastatementNodeMatches; ///
38
- } else {
39
- const metaSubproofAssertionNodeMatches = this.matchMetaSubproofAssertionNode(metaSubproofAssertionNode);
40
-
41
- matches = metaSubproofAssertionNodeMatches; ///
42
- }
43
- }
44
-
45
- return matches;
46
- }
47
-
48
- matchMetastatementNode(metastatementNode) {
49
- let metastatementNodeMatches = false;
50
-
51
- if (this.metastatementNode !== null) {
52
- const topmostMetastatementNode = metastatementNode, ///
53
- topmostMetaAssertionMetastatementNode = this.metastatementNode, ///
54
- topmostMetaAssertionMetastatementNodeMatches = matchTopmostMetaAssertionMetastatementNode(topmostMetaAssertionMetastatementNode, topmostMetastatementNode);
55
-
56
- metastatementNodeMatches = topmostMetaAssertionMetastatementNodeMatches; ///
57
- }
58
-
59
- return metastatementNodeMatches;
60
- }
61
-
62
- matchMetaSubproofAssertionNode(metaSubproofAssertionNode) {
63
- let metaSubproofAssertionNodeMatches = false;
64
-
65
- if (this.metaSubproofNode !== null) {
66
- const metaSubproofAssertionMetastatementNodes = metastatementNodesQuery(metaSubproofAssertionNode),
67
- firstMetaSubproofAssertionMetastatementNode = first(metaSubproofAssertionMetastatementNodes),
68
- qualifiedOrUnqualifiedMetastatementMetastatementNodes = qualifiedOrUnqualifiedMetastatementMetastatementNodesQuery(this.metaSubproofNode),
69
- firstQualifiedOrUnqualifiedMetastatementMetastatementNode = first(qualifiedOrUnqualifiedMetastatementMetastatementNodes);
70
-
71
- const topmostMetastatementNode = firstMetaSubproofAssertionMetastatementNode, ///
72
- topmostMetaAssertionMetastatementNode = firstQualifiedOrUnqualifiedMetastatementMetastatementNode, ///
73
- topmostMetaAssertionMetastatementNodeMatches = matchTopmostMetaAssertionMetastatementNode(topmostMetaAssertionMetastatementNode, topmostMetastatementNode);
74
-
75
- if (topmostMetaAssertionMetastatementNodeMatches) {
76
- const secondMetaSubproofAssertionMetastatementNode = second(metaSubproofAssertionMetastatementNodes),
77
- secondQualifiedOrUnqualifiedMetastatementMetastatementNode = second(qualifiedOrUnqualifiedMetastatementMetastatementNodes);
78
-
79
- const topmostMetastatementNode = secondMetaSubproofAssertionMetastatementNode, ///
80
- topmostMetaAssertionMetastatementNode = secondQualifiedOrUnqualifiedMetastatementMetastatementNode, ///
81
- topmostMetaAssertionMetastatementNodeMatches = matchTopmostMetaAssertionMetastatementNode(topmostMetaAssertionMetastatementNode, topmostMetastatementNode);
82
-
83
- metaSubproofAssertionNodeMatches = topmostMetaAssertionMetastatementNodeMatches; ///
84
- }
85
- }
86
-
87
- return metaSubproofAssertionNodeMatches;
88
- }
89
-
90
- static fromMetaSubproofNode(metaSubproofNode) {
91
- const metastatementNode = null,
92
- metaAssertion = new MetaAssertion(metaSubproofNode, metastatementNode);
93
-
94
- return metaAssertion;
95
- }
96
-
97
- static fromMetastatementNode(metastatementNode) {
98
- const metaSubproofNode = null,
99
- metaAssertion = new MetaAssertion(metaSubproofNode, metastatementNode);
100
-
101
- return metaAssertion;
102
- }
103
-
104
- static fromQualifiedMetastatementNode(qualifiedMetastatementNode) {
105
- const metaSubproofNode = null,
106
- metastatementNode = metastatementNodeQuery(qualifiedMetastatementNode),
107
- metaAssertion = new MetaAssertion(metaSubproofNode, metastatementNode);
108
-
109
- return metaAssertion;
110
- }
111
-
112
- static fromUnqualifiedMetastatementNode(unqualifiedMetastatementNode) {
113
- const metaSubproofNode = null,
114
- metastatementNode = metastatementNodeQuery(unqualifiedMetastatementNode),
115
- metaAssertion = new MetaAssertion(metaSubproofNode, metastatementNode);
116
-
117
- return metaAssertion;
118
- }
119
- }
120
-
121
- function matchMetaAssertionNode(metaAssertionNode, node) {
122
- let metaAssertionNodeMatches = false;
123
-
124
- const nodeTerminalNode = node.isTerminalNode(),
125
- ruleNodeTerminalNode = metaAssertionNode.isTerminalNode();
126
-
127
- if (nodeTerminalNode === ruleNodeTerminalNode) {
128
- if (nodeTerminalNode) {
129
- const terminalNode = node, ///
130
- metaAssertionTerminalNode = metaAssertionNode, ///
131
- metaAssertionTerminalNodeMatches = matchMetaAssertionTerminalNode(metaAssertionTerminalNode, terminalNode);
132
-
133
- metaAssertionNodeMatches = metaAssertionTerminalNodeMatches; ///
134
- } else {
135
- const nonTerminalNode = node, ///
136
- metaAssertionNonTerminalNode = metaAssertionNode, ///
137
- metaAssertionNonTerminalNodeMatches = matchMetaAssertionNonTerminalNode(metaAssertionNonTerminalNode, nonTerminalNode);
138
-
139
- metaAssertionNodeMatches = metaAssertionNonTerminalNodeMatches; ///
140
- }
141
- }
142
-
143
- return metaAssertionNodeMatches;
144
- }
145
-
146
- function matchMetaAssertionNodes(metaAssertionNodes, nodes) {
147
- let metaAssertionNodesMatches = false;
148
-
149
- const nodesLength = nodes.length,
150
- metaAssertionNodesLength = metaAssertionNodes.length;
151
-
152
- if (nodesLength === metaAssertionNodesLength) {
153
- metaAssertionNodesMatches = nodes.every((node, index) => {
154
- const metaAssertionNode = metaAssertionNodes[index],
155
- metaAssertionNodeMatches = matchMetaAssertionNode(metaAssertionNode, node);
156
-
157
- if (metaAssertionNodeMatches) {
158
- return true;
159
- }
160
- });
161
- }
162
-
163
- return metaAssertionNodesMatches;
164
- }
165
-
166
- function matchMetaAssertionTerminalNode(metaAssertionTerminalNode, terminalNode) {
167
- let metaAssertionTerminalNodeMatches = false;
168
-
169
- const matches = metaAssertionTerminalNode.match(terminalNode);
170
-
171
- if (matches) {
172
- metaAssertionTerminalNodeMatches = true;
173
- }
174
-
175
- return metaAssertionTerminalNodeMatches;
176
- }
177
-
178
- function matchMetaAssertionNonTerminalNode(metaAssertionNonTerminalNode, nonTerminalNode) {
179
- let metaAssertionNonTerminalNodeMatches = false;
180
-
181
- const ruleName = nonTerminalNode.getRuleName(),
182
- metaAssertionRuleName = metaAssertionNonTerminalNode.getRuleName(); ///
183
-
184
- if (ruleName === metaAssertionRuleName) {
185
- const childNodes = nonTerminalNode.getChildNodes(),
186
- nodes = childNodes, ///
187
- metaAssertionChildNodes = metaAssertionNonTerminalNode.getChildNodes(),
188
- metaAssertionNodes = metaAssertionChildNodes, ///
189
- metaAssertionNodesMatches = matchMetaAssertionNodes(metaAssertionNodes, nodes);
190
-
191
- metaAssertionNonTerminalNodeMatches = metaAssertionNodesMatches; ///
192
- }
193
-
194
- return metaAssertionNonTerminalNodeMatches;
195
- }
196
-
197
- function matchMetaAssertionMetastatementNode(metaAssertionMetastatementNode, metastatementNode) {
198
- const nonTerminalNode = metastatementNode, ///
199
- metaAssertionNonTerminalNode = metaAssertionMetastatementNode, ///
200
- metaAssertionNonTerminalNodeMatches = matchMetaAssertionNonTerminalNode(metaAssertionNonTerminalNode, nonTerminalNode),
201
- metaAssertionMetastatementNodeNatches = metaAssertionNonTerminalNodeMatches; ///
202
-
203
- return metaAssertionMetastatementNodeNatches;
204
- }
205
-
206
- function matchTopmostMetaAssertionMetastatementNode(topmostMetaAssertionMetastatementNode, topmostMetastatementNode) {
207
- let metaAssertionMetastatementNodeMatches;
208
-
209
- const metastatementNode = topmostMetastatementNode, ///
210
- metaAssertionMetastatementNode = topmostMetaAssertionMetastatementNode; ///
211
-
212
- metaAssertionMetastatementNodeMatches = matchMetaAssertionMetastatementNode(metaAssertionMetastatementNode, metastatementNode);
213
-
214
- if (!metaAssertionMetastatementNodeMatches) {
215
- const nonTerminalNode = metastatementNode, ///
216
- childNodes = nonTerminalNode, ///
217
- bracketedMetastatementChildNodeMatches = matchBracketedMetastatementChildNode(childNodes, (bracketedMetastatementChildNode) => {
218
- const metastatementNode = bracketedMetastatementChildNode, ///
219
- metaAssertionMetastatementNodeMatches = matchMetaAssertionMetastatementNode(metaAssertionMetastatementNode, metastatementNode),
220
- bracketedMetastatementChildNodeMatches = metaAssertionMetastatementNodeMatches;
221
-
222
- return bracketedMetastatementChildNodeMatches;
223
- });
224
-
225
- metaAssertionMetastatementNodeMatches = bracketedMetastatementChildNodeMatches; ///
226
- }
227
-
228
- if (!metaAssertionMetastatementNodeMatches) {
229
- const metaAssertionNonTerminalNode = metaAssertionMetastatementNode, ///
230
- metaAssertionChildNodes = metaAssertionNonTerminalNode.getChildNodes(),
231
- bracketedMetaAssertionMetastatementChildNodeMatches = matchBracketedMetastatementChildNode(metaAssertionChildNodes, (bracketedMetaAssertionMetastatementChildNode) => {
232
- const metaAssertionMetastatementNode = bracketedMetaAssertionMetastatementChildNode, ///
233
- metaAssertionMetastatementNodeMatches = matchMetaAssertionMetastatementNode(metaAssertionMetastatementNode, metastatementNode),
234
- bracketedMetaAssertionMetastatementChildNodeMatches = metaAssertionMetastatementNodeMatches;
235
-
236
- return bracketedMetaAssertionMetastatementChildNodeMatches;
237
- });
238
-
239
- metaAssertionMetastatementNodeMatches = bracketedMetaAssertionMetastatementChildNodeMatches; ///
240
- }
241
-
242
- const topmostMetaAssertionMetastatementNodeMatches = metaAssertionMetastatementNodeMatches; ///
243
-
244
- return topmostMetaAssertionMetastatementNodeMatches;
245
- }
@@ -1,50 +0,0 @@
1
- "use strict";
2
-
3
- import { first, second, third } from "../utilities/array";
4
- import { METASTATEMENT_RULE_NAME } from "../ruleNames";
5
- import { LEFT_BRACKET, RIGHT_BRACKET, BRACKETED_METASTATEMENT_CHILD_NODES_LENGTH } from "../constants";
6
-
7
- export function bracketedMetastatementChildNodeFromChildNodes(childNodes) {
8
- let bracketedMetastatementChildNode = null;
9
-
10
- const childNodesLength = childNodes.length;
11
-
12
- if (childNodesLength === BRACKETED_METASTATEMENT_CHILD_NODES_LENGTH) {
13
- const firstChildNode = first(childNodes),
14
- thirdChildNode = third(childNodes),
15
- secondChildNode = second(childNodes),
16
- firstChildNodeTerminalNode = firstChildNode.isTerminalNode(),
17
- thirdChildNodeTerminalNode = thirdChildNode.isTerminalNode(),
18
- secondChildNodeNonTerminalNode = secondChildNode.isNonTerminalNode();
19
-
20
- if (firstChildNodeTerminalNode && secondChildNodeNonTerminalNode && thirdChildNodeTerminalNode) {
21
- const nonTerminalNode = secondChildNode, ///
22
- firstTerminalNode = firstChildNode, ///
23
- secondTerminalNode = thirdChildNode, ///
24
- nonTerminalNodeRuleName = nonTerminalNode.getRuleName(),
25
- firstTerminalNodeContent = firstTerminalNode.getContent(),
26
- secondTerminalNodeContent = secondTerminalNode.getContent(),
27
- firstTerminalNodeContentLeftBracket = (firstTerminalNodeContent === LEFT_BRACKET),
28
- secondTerminalNodeContentRightBracket = (secondTerminalNodeContent === RIGHT_BRACKET),
29
- nonTerminalNodeRuleNameMetastatementRuleName = (nonTerminalNodeRuleName === METASTATEMENT_RULE_NAME);
30
-
31
- if (firstTerminalNodeContentLeftBracket && nonTerminalNodeRuleNameMetastatementRuleName && secondTerminalNodeContentRightBracket) {
32
- bracketedMetastatementChildNode = nonTerminalNode; ///
33
- }
34
- }
35
- }
36
-
37
- return bracketedMetastatementChildNode;
38
- }
39
-
40
- export function matchBracketedMetastatementChildNode(childNodes, callback) {
41
- let bracketedMetastatementChildNodeMatches = false;
42
-
43
- const bracketedMetastatementChildNode = bracketedMetastatementChildNodeFromChildNodes(childNodes);
44
-
45
- if (bracketedMetastatementChildNode !== null) {
46
- bracketedMetastatementChildNodeMatches = callback(bracketedMetastatementChildNode);
47
- }
48
-
49
- return bracketedMetastatementChildNodeMatches;
50
- }
@@ -1,50 +0,0 @@
1
- "use strict";
2
-
3
- import { first, second, third } from "../utilities/array";
4
- import { STATEMENT_RULE_NAME } from "../ruleNames";
5
- import { LEFT_BRACKET, RIGHT_BRACKET, BRACKETED_STATEMENT_CHILD_NODES_LENGTH } from "../constants";
6
-
7
- export function bracketedStatementChildNodeFromChildNodes(childNodes) {
8
- let bracketedStatementChildNode = null;
9
-
10
- const childNodesLength = childNodes.length;
11
-
12
- if (childNodesLength === BRACKETED_STATEMENT_CHILD_NODES_LENGTH) {
13
- const firstChildNode = first(childNodes),
14
- thirdChildNode = third(childNodes),
15
- secondChildNode = second(childNodes),
16
- firstChildNodeTerminalNode = firstChildNode.isTerminalNode(),
17
- thirdChildNodeTerminalNode = thirdChildNode.isTerminalNode(),
18
- secondChildNodeNonTerminalNode = secondChildNode.isNonTerminalNode();
19
-
20
- if (firstChildNodeTerminalNode && secondChildNodeNonTerminalNode && thirdChildNodeTerminalNode) {
21
- const nonTerminalNode = secondChildNode, ///
22
- firstTerminalNode = firstChildNode, ///
23
- secondTerminalNode = thirdChildNode, ///
24
- nonTerminalNodeRuleName = nonTerminalNode.getRuleName(),
25
- firstTerminalNodeContent = firstTerminalNode.getContent(),
26
- secondTerminalNodeContent = secondTerminalNode.getContent(),
27
- firstTerminalNodeContentLeftBracket = (firstTerminalNodeContent === LEFT_BRACKET),
28
- secondTerminalNodeContentRightBracket = (secondTerminalNodeContent === RIGHT_BRACKET),
29
- nonTerminalNodeRuleNameStatementRuleName = (nonTerminalNodeRuleName === STATEMENT_RULE_NAME);
30
-
31
- if (firstTerminalNodeContentLeftBracket && nonTerminalNodeRuleNameStatementRuleName && secondTerminalNodeContentRightBracket) {
32
- bracketedStatementChildNode = nonTerminalNode; ///
33
- }
34
- }
35
- }
36
-
37
- return bracketedStatementChildNode;
38
- }
39
-
40
- export function matchBracketedStatementChildNode(childNodes, callback) {
41
- let bracketedStatementChildNodeMatches = false;
42
-
43
- const bracketedStatementChildNode = bracketedStatementChildNodeFromChildNodes(childNodes);
44
-
45
- if (bracketedStatementChildNode !== null) {
46
- bracketedStatementChildNodeMatches = callback(bracketedStatementChildNode);
47
- }
48
-
49
- return bracketedStatementChildNodeMatches;
50
- }