occam-verify-cli 0.0.469 → 0.0.471

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 (45) hide show
  1. package/lib/context/file.js +9 -9
  2. package/lib/context/metaproof.js +30 -31
  3. package/lib/context/proof.js +30 -24
  4. package/lib/metaSubstitution.js +4 -4
  5. package/lib/rule.js +15 -19
  6. package/lib/step/metaproof.js +114 -0
  7. package/lib/step/proof.js +68 -0
  8. package/lib/utilities/array.js +2 -5
  9. package/lib/utilities/metaAssertion.js +117 -0
  10. package/lib/utilities/node.js +52 -0
  11. package/lib/verify/antecedent.js +4 -4
  12. package/lib/verify/derivation.js +13 -13
  13. package/lib/verify/equality.js +18 -5
  14. package/lib/verify/metaDerivation.js +13 -13
  15. package/lib/verify/metaproof.js +13 -51
  16. package/lib/verify/metastatement/unqualified.js +2 -3
  17. package/lib/verify/premiseOrPremises.js +4 -4
  18. package/lib/verify/proof.js +14 -62
  19. package/lib/verify/statement/unqualified.js +2 -3
  20. package/package.json +1 -1
  21. package/src/context/file.js +6 -6
  22. package/src/context/metaproof.js +28 -31
  23. package/src/context/proof.js +29 -26
  24. package/src/metaSubstitution.js +1 -1
  25. package/src/rule.js +19 -26
  26. package/src/step/metaproof.js +100 -0
  27. package/src/step/proof.js +30 -0
  28. package/src/utilities/array.js +1 -1
  29. package/src/utilities/metaAssertion.js +176 -0
  30. package/src/utilities/node.js +72 -0
  31. package/src/verify/antecedent.js +3 -3
  32. package/src/verify/derivation.js +14 -10
  33. package/src/verify/equality.js +29 -11
  34. package/src/verify/metaDerivation.js +14 -10
  35. package/src/verify/metaproof.js +26 -91
  36. package/src/verify/metastatement/unqualified.js +1 -3
  37. package/src/verify/premiseOrPremises.js +3 -3
  38. package/src/verify/proof.js +23 -97
  39. package/src/verify/statement/unqualified.js +1 -4
  40. package/lib/assertion.js +0 -147
  41. package/lib/metaAssertion.js +0 -200
  42. package/lib/utilities/metastatement.js +0 -45
  43. package/src/assertion.js +0 -150
  44. package/src/metaAssertion.js +0 -245
  45. package/src/utilities/metastatement.js +0 -50
@@ -0,0 +1,176 @@
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 matchBracketedMetastatementChildNode(childNodes, callback) {
8
+ let bracketedMetastatementChildNodeMatches = false;
9
+
10
+ const bracketedMetastatementChildNode = bracketedMetastatementChildNodeFromChildNodes(childNodes);
11
+
12
+ if (bracketedMetastatementChildNode !== null) {
13
+ bracketedMetastatementChildNodeMatches = callback(bracketedMetastatementChildNode);
14
+ }
15
+
16
+ return bracketedMetastatementChildNodeMatches;
17
+ }
18
+
19
+ export function matchTopmostMetaAssertionMetastatementNode(topmostMetaAssertionMetastatementNode, topmostMetastatementNode) {
20
+ let metaAssertionMetastatementNodeMatches;
21
+
22
+ const metastatementNode = topmostMetastatementNode, ///
23
+ metaAssertionMetastatementNode = topmostMetaAssertionMetastatementNode; ///
24
+
25
+ metaAssertionMetastatementNodeMatches = matchMetaAssertionMetastatementNode(metaAssertionMetastatementNode, metastatementNode);
26
+
27
+ if (!metaAssertionMetastatementNodeMatches) {
28
+ const nonTerminalNode = metastatementNode, ///
29
+ childNodes = nonTerminalNode, ///
30
+ bracketedMetastatementChildNodeMatches = matchBracketedMetastatementChildNode(childNodes, (bracketedMetastatementChildNode) => {
31
+ const metastatementNode = bracketedMetastatementChildNode, ///
32
+ metaAssertionMetastatementNodeMatches = matchMetaAssertionMetastatementNode(metaAssertionMetastatementNode, metastatementNode),
33
+ bracketedMetastatementChildNodeMatches = metaAssertionMetastatementNodeMatches;
34
+
35
+ return bracketedMetastatementChildNodeMatches;
36
+ });
37
+
38
+ metaAssertionMetastatementNodeMatches = bracketedMetastatementChildNodeMatches; ///
39
+ }
40
+
41
+ if (!metaAssertionMetastatementNodeMatches) {
42
+ const metaAssertionNonTerminalNode = metaAssertionMetastatementNode, ///
43
+ metaAssertionChildNodes = metaAssertionNonTerminalNode.getChildNodes(),
44
+ bracketedMetaAssertionMetastatementChildNodeMatches = matchBracketedMetastatementChildNode(metaAssertionChildNodes, (bracketedMetaAssertionMetastatementChildNode) => {
45
+ const metaAssertionMetastatementNode = bracketedMetaAssertionMetastatementChildNode, ///
46
+ metaAssertionMetastatementNodeMatches = matchMetaAssertionMetastatementNode(metaAssertionMetastatementNode, metastatementNode),
47
+ bracketedMetaAssertionMetastatementChildNodeMatches = metaAssertionMetastatementNodeMatches;
48
+
49
+ return bracketedMetaAssertionMetastatementChildNodeMatches;
50
+ });
51
+
52
+ metaAssertionMetastatementNodeMatches = bracketedMetaAssertionMetastatementChildNodeMatches; ///
53
+ }
54
+
55
+ const topmostMetaAssertionMetastatementNodeMatches = metaAssertionMetastatementNodeMatches; ///
56
+
57
+ return topmostMetaAssertionMetastatementNodeMatches;
58
+ }
59
+
60
+ export function bracketedMetastatementChildNodeFromChildNodes(childNodes) {
61
+ let bracketedMetastatementChildNode = null;
62
+
63
+ const childNodesLength = childNodes.length;
64
+
65
+ if (childNodesLength === BRACKETED_METASTATEMENT_CHILD_NODES_LENGTH) {
66
+ const firstChildNode = first(childNodes),
67
+ thirdChildNode = third(childNodes),
68
+ secondChildNode = second(childNodes),
69
+ firstChildNodeTerminalNode = firstChildNode.isTerminalNode(),
70
+ thirdChildNodeTerminalNode = thirdChildNode.isTerminalNode(),
71
+ secondChildNodeNonTerminalNode = secondChildNode.isNonTerminalNode();
72
+
73
+ if (firstChildNodeTerminalNode && secondChildNodeNonTerminalNode && thirdChildNodeTerminalNode) {
74
+ const nonTerminalNode = secondChildNode, ///
75
+ firstTerminalNode = firstChildNode, ///
76
+ secondTerminalNode = thirdChildNode, ///
77
+ nonTerminalNodeRuleName = nonTerminalNode.getRuleName(),
78
+ firstTerminalNodeContent = firstTerminalNode.getContent(),
79
+ secondTerminalNodeContent = secondTerminalNode.getContent(),
80
+ firstTerminalNodeContentLeftBracket = (firstTerminalNodeContent === LEFT_BRACKET),
81
+ secondTerminalNodeContentRightBracket = (secondTerminalNodeContent === RIGHT_BRACKET),
82
+ nonTerminalNodeRuleNameMetastatementRuleName = (nonTerminalNodeRuleName === METASTATEMENT_RULE_NAME);
83
+
84
+ if (firstTerminalNodeContentLeftBracket && nonTerminalNodeRuleNameMetastatementRuleName && secondTerminalNodeContentRightBracket) {
85
+ bracketedMetastatementChildNode = nonTerminalNode; ///
86
+ }
87
+ }
88
+ }
89
+
90
+ return bracketedMetastatementChildNode;
91
+ }
92
+
93
+ function matchMetaAssertionNode(metaAssertionNode, node) {
94
+ let metaAssertionNodeMatches = false;
95
+
96
+ const nodeTerminalNode = node.isTerminalNode(),
97
+ ruleNodeTerminalNode = metaAssertionNode.isTerminalNode();
98
+
99
+ if (nodeTerminalNode === ruleNodeTerminalNode) {
100
+ if (nodeTerminalNode) {
101
+ const terminalNode = node, ///
102
+ metaAssertionTerminalNode = metaAssertionNode, ///
103
+ metaAssertionTerminalNodeMatches = matchMetaAssertionTerminalNode(metaAssertionTerminalNode, terminalNode);
104
+
105
+ metaAssertionNodeMatches = metaAssertionTerminalNodeMatches; ///
106
+ } else {
107
+ const nonTerminalNode = node, ///
108
+ metaAssertionNonTerminalNode = metaAssertionNode, ///
109
+ metaAssertionNonTerminalNodeMatches = matchMetaAssertionNonTerminalNode(metaAssertionNonTerminalNode, nonTerminalNode);
110
+
111
+ metaAssertionNodeMatches = metaAssertionNonTerminalNodeMatches; ///
112
+ }
113
+ }
114
+
115
+ return metaAssertionNodeMatches;
116
+ }
117
+
118
+ function matchMetaAssertionNodes(metaAssertionNodes, nodes) {
119
+ let metaAssertionNodesMatches = false;
120
+
121
+ const nodesLength = nodes.length,
122
+ metaAssertionNodesLength = metaAssertionNodes.length;
123
+
124
+ if (nodesLength === metaAssertionNodesLength) {
125
+ metaAssertionNodesMatches = nodes.every((node, index) => {
126
+ const metaAssertionNode = metaAssertionNodes[index],
127
+ metaAssertionNodeMatches = matchMetaAssertionNode(metaAssertionNode, node);
128
+
129
+ if (metaAssertionNodeMatches) {
130
+ return true;
131
+ }
132
+ });
133
+ }
134
+
135
+ return metaAssertionNodesMatches;
136
+ }
137
+
138
+ function matchMetaAssertionTerminalNode(metaAssertionTerminalNode, terminalNode) {
139
+ let metaAssertionTerminalNodeMatches = false;
140
+
141
+ const matches = metaAssertionTerminalNode.match(terminalNode);
142
+
143
+ if (matches) {
144
+ metaAssertionTerminalNodeMatches = true;
145
+ }
146
+
147
+ return metaAssertionTerminalNodeMatches;
148
+ }
149
+
150
+ function matchMetaAssertionNonTerminalNode(metaAssertionNonTerminalNode, nonTerminalNode) {
151
+ let metaAssertionNonTerminalNodeMatches = false;
152
+
153
+ const ruleName = nonTerminalNode.getRuleName(),
154
+ metaAssertionRuleName = metaAssertionNonTerminalNode.getRuleName(); ///
155
+
156
+ if (ruleName === metaAssertionRuleName) {
157
+ const childNodes = nonTerminalNode.getChildNodes(),
158
+ nodes = childNodes, ///
159
+ metaAssertionChildNodes = metaAssertionNonTerminalNode.getChildNodes(),
160
+ metaAssertionNodes = metaAssertionChildNodes, ///
161
+ metaAssertionNodesMatches = matchMetaAssertionNodes(metaAssertionNodes, nodes);
162
+
163
+ metaAssertionNonTerminalNodeMatches = metaAssertionNodesMatches; ///
164
+ }
165
+
166
+ return metaAssertionNonTerminalNodeMatches;
167
+ }
168
+
169
+ function matchMetaAssertionMetastatementNode(metaAssertionMetastatementNode, metastatementNode) {
170
+ const nonTerminalNode = metastatementNode, ///
171
+ metaAssertionNonTerminalNode = metaAssertionMetastatementNode, ///
172
+ metaAssertionNonTerminalNodeMatches = matchMetaAssertionNonTerminalNode(metaAssertionNonTerminalNode, nonTerminalNode),
173
+ metaAssertionMetastatementNodeNatches = metaAssertionNonTerminalNodeMatches; ///
174
+
175
+ return metaAssertionMetastatementNodeNatches;
176
+ }
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+
3
+ export function matchNode(nodeA, nodeB) {
4
+ let nodeMatches = false;
5
+
6
+ const nodeATerminalNode = nodeA.isTerminalNode(),
7
+ nodeBTerminalNode = nodeB.isTerminalNode();
8
+
9
+ if (nodeATerminalNode === nodeBTerminalNode) {
10
+ if (nodeATerminalNode) {
11
+ const terminalNodeA = nodeA, ///
12
+ terminalNodeB = nodeB, ///
13
+ terminalNodeMatches = matchTerminalNode(terminalNodeA, terminalNodeB);
14
+
15
+ nodeMatches = terminalNodeMatches; ///
16
+ } else {
17
+ const nonTerminalNodeA = nodeA, ///
18
+ nonTerminalNodeB = nodeB, ///
19
+ nonTerminalNodeMatches = matchNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB);
20
+
21
+ nodeMatches = nonTerminalNodeMatches; ///
22
+ }
23
+ }
24
+
25
+ return nodeMatches;
26
+ }
27
+
28
+ function matchNodes(nodesA, nodesB) {
29
+ let nodesMatch = false;
30
+
31
+ const nodesALength = nodesA.length,
32
+ nodesBLength = nodesB.length;
33
+
34
+ if (nodesALength === nodesBLength) {
35
+ nodesMatch = nodesA.every((nodeA, index) => {
36
+ const nodeB = nodesB[index],
37
+ nodeMatches = matchNode(nodeA, nodeB);
38
+
39
+ if (nodeMatches) {
40
+ return true;
41
+ }
42
+ })
43
+ }
44
+
45
+ return nodesMatch;
46
+ }
47
+
48
+ function matchTerminalNode(terminalNodeA, terminalNodeB) {
49
+ const matches = terminalNodeA.match(terminalNodeB),
50
+ terminalNodeMatches = matches; ///
51
+
52
+ return terminalNodeMatches;
53
+ }
54
+
55
+ function matchNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB) {
56
+ let nonTerminalNodeMatches = false;
57
+
58
+ const nonTerminalNodeARuleName = nonTerminalNodeA.getRuleName(), ///
59
+ nonTerminalNodeBRuleName = nonTerminalNodeB.getRuleName(); ///
60
+
61
+ if (nonTerminalNodeARuleName === nonTerminalNodeBRuleName) {
62
+ const nonTerminalNodeAChildNodes = nonTerminalNodeA.getChildNodes(),
63
+ nonTerminalNodeBChildNodes = nonTerminalNodeB.getChildNodes(),
64
+ nodesA = nonTerminalNodeAChildNodes, ///
65
+ nodesB = nonTerminalNodeBChildNodes, ///
66
+ nodesMatch = matchNodes(nodesA, nodesB);
67
+
68
+ nonTerminalNodeMatches = nodesMatch; ///
69
+ }
70
+
71
+ return nonTerminalNodeMatches;
72
+ }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import Assertion from "../assertion";
3
+ import ProofStep from "../step/proof";
4
4
  import Antecedent from "../antecedent";
5
5
  import verifyUnqualifiedStatement from "../verify/statement/unqualified";
6
6
 
@@ -19,12 +19,12 @@ export default function verifyAntecedent(antecedentNode, antecedents, proofConte
19
19
 
20
20
  if (unqualifiedStatementVerified) {
21
21
  const statementNode = statementNodeQuery(unqualifiedStatementNode),
22
- assertion = Assertion.fromUnqualifiedStatementNode(unqualifiedStatementNode),
22
+ proofStep = ProofStep.fromStatementNode(statementNode),
23
23
  antecedent = Antecedent.fromStatementNode(statementNode);
24
24
 
25
25
  antecedents.push(antecedent);
26
26
 
27
- proofContext.addAssertion(assertion);
27
+ proofContext.addProofStep(proofStep);
28
28
 
29
29
  antecedentOrAntecedentsVerified = true;
30
30
  }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import Assertion from "../assertion";
3
+ import ProofStep from "../step/proof";
4
4
  import ProofContext from "../context/proof";
5
5
  import verifyQualifiedStatement from "../verify/statement/qualified";
6
6
  import verifyUnqualifiedStatement from "../verify/statement/unqualified";
@@ -8,7 +8,8 @@ import verifyUnqualifiedStatement from "../verify/statement/unqualified";
8
8
  import { nodeQuery, nodesQuery } from "../utilities/query";
9
9
  import { SUBPROOF_RULE_NAME, QUALIFIED_STATEMENT_RULE_NAME, UNQUALIFIED_STATEMENT_RULE_NAME } from "../ruleNames";
10
10
 
11
- const derivationNodeQuery = nodeQuery("/subproof/derivation|abridgedDerivation!"), ///
11
+ const statementNodeQuery = nodeQuery("/qualifiedStatement|unqualifiedStatement/statement!"),
12
+ derivationNodeQuery = nodeQuery("/subproof/derivation|abridgedDerivation!"), ///
12
13
  derivationChildNodesQuery = nodesQuery("/derivation|abridgedDerivation/*"),
13
14
  unqualifiedStatementNodesQuery = nodesQuery("/subproof/unqualifiedStatement")
14
15
 
@@ -54,9 +55,9 @@ function verifyDerivationChild(derivationChildNode, proofContext) {
54
55
  subproofVerified = verifySubproof(subproofNode, proofContext);
55
56
 
56
57
  if (subproofVerified) {
57
- const assertion = Assertion.fromSubproofNode(subproofNode);
58
+ const proofStep = ProofStep.fromSubproofNode(subproofNode);
58
59
 
59
- proofContext.addAssertion(assertion);
60
+ proofContext.addProofStep(proofStep);
60
61
 
61
62
  derivationChildVerified = true;
62
63
  }
@@ -69,9 +70,10 @@ function verifyDerivationChild(derivationChildNode, proofContext) {
69
70
  qualifiedStatementVerified = verifyQualifiedStatement(qualifiedStatementNode, proofContext);
70
71
 
71
72
  if (qualifiedStatementVerified) {
72
- const assertion = Assertion.fromQualifiedStatementNode(qualifiedStatementNode);
73
+ const statementNode = statementNodeQuery(qualifiedStatementNode),
74
+ proofStep = ProofStep.fromStatementNode(statementNode);
73
75
 
74
- proofContext.addAssertion(assertion);
76
+ proofContext.addProofStep(proofStep);
75
77
 
76
78
  derivationChildVerified = qualifiedStatementVerified; ///
77
79
  }
@@ -84,9 +86,10 @@ function verifyDerivationChild(derivationChildNode, proofContext) {
84
86
  unqualifiedStatementVerified = verifyUnqualifiedStatement(unqualifiedStatementNode, proofContext);
85
87
 
86
88
  if (unqualifiedStatementVerified) {
87
- const assertion = Assertion.fromUnqualifiedStatementNode(unqualifiedStatementNode);
89
+ const statementNode = statementNodeQuery(unqualifiedStatementNode),
90
+ proofStep = ProofStep.fromStatementNode(statementNode);
88
91
 
89
- proofContext.addAssertion(assertion);
92
+ proofContext.addProofStep(proofStep);
90
93
 
91
94
  derivationChildVerified = true;
92
95
  }
@@ -114,9 +117,10 @@ function verifySubproof(subproofNode, proofContext) {
114
117
 
115
118
  if (unqualifiedStatementsVerified) {
116
119
  unqualifiedStatementNodes.forEach((unqualifiedStatementNode) => {
117
- const assertion = Assertion.fromUnqualifiedStatementNode(unqualifiedStatementNode);
120
+ const statementNode = statementNodeQuery(unqualifiedStatementNode),
121
+ proofStep = ProofStep.fromStatementNode(statementNode);
118
122
 
119
- proofContext.addAssertion(assertion);
123
+ proofContext.addProofStep(proofStep);
120
124
  });
121
125
 
122
126
  const derivationNode = derivationNodeQuery(subproofNode),
@@ -18,19 +18,14 @@ export default function verifyEquality(equalityNode, proofContext) {
18
18
 
19
19
  proofContext.debug(`Verifying the '${equalityString}' equality...`);
20
20
 
21
- const types = [],
22
- context = proofContext,
23
- firstTermNode = firstTermNodeQuery(equalityNode),
24
- secondTermNode = secondTermNodeQuery(equalityNode),
25
- firstTermVerified = verifyTerm(firstTermNode, types, context),
26
- secondTermVerified = verifyTerm(secondTermNode, types, context);
21
+ const equalityTypesVerified = verifyEqualityTypes(equalityNode, proofContext);
27
22
 
28
- if (firstTermVerified && secondTermVerified) {
29
- const firstType = first(types),
30
- secondType = second(types),
31
- firstTypeEqualToSubTypeOfOrSuperTypeOfSecondType = firstType.isEqualToSubTypeOfOrSuperTypeOf(secondType);
23
+ if (equalityTypesVerified) {
24
+ const derived = proofContext.isDerived();
32
25
 
33
- if (firstTypeEqualToSubTypeOfOrSuperTypeOfSecondType) {
26
+ if (derived) {
27
+ debugger
28
+ } else {
34
29
  equalityVerified = true;
35
30
  }
36
31
  }
@@ -45,3 +40,26 @@ export default function verifyEquality(equalityNode, proofContext) {
45
40
 
46
41
  return equalityVerified;
47
42
  }
43
+
44
+ function verifyEqualityTypes(equalityNode, proofContext) {
45
+ let equalityTypesVerified = false;
46
+
47
+ const types = [],
48
+ context = proofContext, ///
49
+ firstTermNode = firstTermNodeQuery(equalityNode),
50
+ secondTermNode = secondTermNodeQuery(equalityNode),
51
+ firstTermVerified = verifyTerm(firstTermNode, types, context),
52
+ secondTermVerified = verifyTerm(secondTermNode, types, context);
53
+
54
+ if (firstTermVerified && secondTermVerified) {
55
+ const firstType = first(types),
56
+ secondType = second(types),
57
+ firstTypeEqualToSubTypeOfOrSuperTypeOfSecondType = firstType.isEqualToSubTypeOfOrSuperTypeOf(secondType);
58
+
59
+ if (firstTypeEqualToSubTypeOfOrSuperTypeOfSecondType) {
60
+ equalityTypesVerified = true;
61
+ }
62
+ }
63
+
64
+ return equalityTypesVerified;
65
+ }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import MetaAssertion from "../metaAssertion";
3
+ import MetaproofStep from "../step/metaproof";
4
4
  import MetaproofContext from "../context/metaproof";
5
5
  import verifyQualifiedMetastatement from "../verify/metastatement/qualified";
6
6
  import verifyUnqualifiedMetastatement from "../verify/metastatement/unqualified";
@@ -8,7 +8,8 @@ import verifyUnqualifiedMetastatement from "../verify/metastatement/unqualified"
8
8
  import { nodeQuery, nodesQuery } from "../utilities/query";
9
9
  import { META_SUBPROOF_RULE_NAME, QUALIFIED_METASTATEMENT_RULE_NAME, UNQUALIFIED_METASTATEMENT_RULE_NAME } from "../ruleNames";
10
10
 
11
- const metaDerivationNodeQuery = nodeQuery("/metaSubproof/metaDerivation|abridgedMetaDerivation!"), ///
11
+ const metastatementNodeQuery = nodeQuery("/qualifiedMetastatement|unqualifiedMetastatement/metastatement!"),
12
+ metaDerivationNodeQuery = nodeQuery("/metaSubproof/metaDerivation|abridgedMetaDerivation!"), ///
12
13
  metaDerivationChildNodesQuery = nodesQuery("/metaDerivation|abridgedMetaDerivation/*"),
13
14
  unqualifiedMetastatementNodesQuery = nodesQuery("/metaSubproof/unqualifiedMetastatement")
14
15
 
@@ -54,9 +55,9 @@ function verifyMetaDerivationChild(metaDerivationChildNode, metaproofContext) {
54
55
  metaSubproofVerified = verifyMetaSubproof(metaSubproofNode, metaproofContext);
55
56
 
56
57
  if (metaSubproofVerified) {
57
- const metaAssertion = MetaAssertion.fromMetaSubproofNode(metaSubproofNode);
58
+ const metaproofStep = MetaproofStep.fromMetaSubproofNode(metaSubproofNode);
58
59
 
59
- metaproofContext.addMetaAssertion(metaAssertion);
60
+ metaproofContext.addMetaproofStep(metaproofStep);
60
61
 
61
62
  metaDerivationChildVerified = true;
62
63
  }
@@ -69,9 +70,10 @@ function verifyMetaDerivationChild(metaDerivationChildNode, metaproofContext) {
69
70
  qualifiedMetastatementVerified = verifyQualifiedMetastatement(qualifiedMetastatementNode, metaproofContext);
70
71
 
71
72
  if (qualifiedMetastatementVerified) {
72
- const metaAssertion = MetaAssertion.fromQualifiedMetastatementNode(qualifiedMetastatementNode);
73
+ const metastatementNode = metastatementNodeQuery(qualifiedMetastatementNode),
74
+ metaproofStep = MetaproofStep.fromMetastatementNode(metastatementNode);
73
75
 
74
- metaproofContext.addMetaAssertion(metaAssertion);
76
+ metaproofContext.addMetaproofStep(metaproofStep);
75
77
 
76
78
  metaDerivationChildVerified = qualifiedMetastatementVerified; ///
77
79
  }
@@ -84,9 +86,10 @@ function verifyMetaDerivationChild(metaDerivationChildNode, metaproofContext) {
84
86
  unqualifiedMetastatementVerified = verifyUnqualifiedMetastatement(unqualifiedMetastatementNode, metaproofContext);
85
87
 
86
88
  if (unqualifiedMetastatementVerified) {
87
- const metaAssertion = MetaAssertion.fromUnqualifiedMetastatementNode(unqualifiedMetastatementNode);
89
+ const metastatementNode = metastatementNodeQuery(unqualifiedMetastatementNode),
90
+ metaproofStep = MetaproofStep.fromMetastatementNode(metastatementNode);
88
91
 
89
- metaproofContext.addMetaAssertion(metaAssertion);
92
+ metaproofContext.addMetaproofStep(metaproofStep);
90
93
 
91
94
  metaDerivationChildVerified = true;
92
95
  }
@@ -114,9 +117,10 @@ function verifyMetaSubproof(metaSubproofNode, metaproofContext) {
114
117
 
115
118
  if (unqualifiedMetastatementsVerified) {
116
119
  unqualifiedMetastatementNodes.forEach((unqualifiedMetastatementNode) => {
117
- const metaAssertion = MetaAssertion.fromUnqualifiedMetastatementNode(unqualifiedMetastatementNode);
120
+ const metastatementNode = metastatementNodeQuery(unqualifiedMetastatementNode),
121
+ metaproofStep = MetaproofStep.fromMetastatementNode(metastatementNode);
118
122
 
119
- metaproofContext.addMetaAssertion(metaAssertion);
123
+ metaproofContext.addMetaproofStep(metaproofStep);
120
124
  });
121
125
 
122
126
  const metaDerivationNode = metaDerivationNodeQuery(metaSubproofNode),
@@ -1,12 +1,14 @@
1
1
  "use strict";
2
2
 
3
- import MetaAssertion from "../metaAssertion";
3
+ import MetaproofStep from "../step/metaproof";
4
4
  import verifyMetaDerivation from "../verify/metaDerivation";
5
5
  import verifyQualifiedMetastatement from "./metastatement/qualified";
6
6
 
7
+ import { matchNode } from "../utilities/node";
7
8
  import { nodeQuery } from "../utilities/query";
8
9
 
9
- const metaDerivationNodeQuery = nodeQuery("/metaproof/metaDerivation!"),
10
+ const metastatementNodeQuery = nodeQuery("/qualifiedMetastatement/metastatement!"),
11
+ metaDerivationNodeQuery = nodeQuery("/metaproof/metaDerivation!"),
10
12
  qualifiedMetastatementNodeQuery = nodeQuery("/metaproof/qualifiedMetastatement!");
11
13
 
12
14
  export default function verifyMetaproof(metaproofNode, conclusion, metaproofContext) {
@@ -25,23 +27,36 @@ export default function verifyMetaproof(metaproofNode, conclusion, metaproofCont
25
27
  }
26
28
 
27
29
  if (qualifiedMetastatementNode !== null) {
30
+ let derived;
31
+
32
+ derived = true;
33
+
34
+ metaproofContext.setDerived(derived);
35
+
28
36
  qualifiedMetastatementVerified = verifyQualifiedMetastatement(qualifiedMetastatementNode, metaproofContext);
29
37
 
38
+ derived = false;
39
+
40
+ metaproofContext.setDerived(derived);
41
+
30
42
  if (qualifiedMetastatementVerified) {
31
- const metaAssertion = MetaAssertion.fromQualifiedMetastatementNode(qualifiedMetastatementNode);
43
+ const metastatementNode = metastatementNodeQuery(qualifiedMetastatementNode),
44
+ metaproofStep = MetaproofStep.fromMetastatementNode(metastatementNode);
32
45
 
33
- metaproofContext.addMetaAssertion(metaAssertion);
46
+ metaproofContext.addMetaproofStep(metaproofStep);
34
47
  }
35
48
  }
36
49
 
37
50
  if (metaDerivationVerified || qualifiedMetastatementVerified) {
38
- const lastMetaAssertion = metaproofContext.getLastMetaAssertion(),
39
- metaAssertion = lastMetaAssertion, ///
40
- metastatementNode = conclusion.getMetastatementNode(),
41
- metaAssertionMetastatementNode = metaAssertion.getMetastatementNode(),
42
- metaAssertionMetastatementNodeMatches = matchMetaProofMetastatementNode(metaAssertionMetastatementNode, metastatementNode);
43
-
44
- metaproofVerified = metaAssertionMetastatementNodeMatches; ///
51
+ const lastMetaproofStep = metaproofContext.getLastMetaproofStep(),
52
+ metaproofStep = lastMetaproofStep, ///
53
+ metastatementNode = metaproofStep.getMetastatementNode(),
54
+ conclusionMetastatementNode = conclusion.getMetastatementNode(),
55
+ nodeA = metastatementNode, ///
56
+ nodeB = conclusionMetastatementNode, ///
57
+ nodeMatches = matchNode(nodeA, nodeB);
58
+
59
+ metaproofVerified = nodeMatches; ///
45
60
  }
46
61
 
47
62
  metaproofVerified ?
@@ -50,83 +65,3 @@ export default function verifyMetaproof(metaproofNode, conclusion, metaproofCont
50
65
 
51
66
  return metaproofVerified;
52
67
  }
53
-
54
- function matchMetaProofMetastatementNode(metaAssertionMetastatementNode, metastatementNode) {
55
- const metaAssertionNonTerminalNode = metaAssertionMetastatementNode, ///
56
- nonTerminalNode = metastatementNode, ///
57
- metaAssertionNonTerminalNodeMatches = matchMetaProofNonTerminalNode(metaAssertionNonTerminalNode, nonTerminalNode),
58
- metaAssertionMetastatementNodeMatches = metaAssertionNonTerminalNodeMatches; ///
59
-
60
- return metaAssertionMetastatementNodeMatches;
61
- }
62
-
63
- function matchMetaProofNode(metaAssertionNode, node) {
64
- let metaAssertionNodeMatches = false;
65
-
66
- const nodeTerminalNode = node.isTerminalNode(),
67
- ruleNodeTerminalNode = metaAssertionNode.isTerminalNode();
68
-
69
- if (nodeTerminalNode === ruleNodeTerminalNode) {
70
- if (nodeTerminalNode) {
71
- const terminalNode = node, ///
72
- metaAssertionTerminalNode = metaAssertionNode, ///
73
- metaAssertionTerminalNodeMatches = matchMetaProofTerminalNode(metaAssertionTerminalNode, terminalNode);
74
-
75
- metaAssertionNodeMatches = metaAssertionTerminalNodeMatches; ///
76
- } else {
77
- const nonTerminalNode = node, ///
78
- metaAssertionNonTerminalNode = metaAssertionNode, ///
79
- metaAssertionNonTerminalNodeMatches = matchMetaProofNonTerminalNode(metaAssertionNonTerminalNode, nonTerminalNode);
80
-
81
- metaAssertionNodeMatches = metaAssertionNonTerminalNodeMatches; ///
82
- }
83
- }
84
-
85
- return metaAssertionNodeMatches;
86
- }
87
-
88
- function matchMetaProofNodes(metaAssertionNodes, nodes) {
89
- let metaAssertionNodesMatches = false;
90
-
91
- const nodesLength = nodes.length,
92
- metaAssertionNodesLength = metaAssertionNodes.length;
93
-
94
- if (nodesLength === metaAssertionNodesLength) {
95
- metaAssertionNodesMatches = nodes.every((node, index) => {
96
- const metaAssertionNode = metaAssertionNodes[index],
97
- metaAssertionNodeMatches = matchMetaProofNode(metaAssertionNode, node);
98
-
99
- if (metaAssertionNodeMatches) {
100
- return true;
101
- }
102
- })
103
- }
104
-
105
- return metaAssertionNodesMatches;
106
- }
107
-
108
- function matchMetaProofTerminalNode(metaAssertionTerminalNode, terminalNode) {
109
- const matches = metaAssertionTerminalNode.match(terminalNode),
110
- metaAssertionTerminalNodeMatches = matches; ///
111
-
112
- return metaAssertionTerminalNodeMatches;
113
- }
114
-
115
- function matchMetaProofNonTerminalNode(metaAssertionNonTerminalNode, nonTerminalNode) {
116
- let metaAssertionNonTerminalNodeMatches = false;
117
-
118
- const ruleName = nonTerminalNode.getRuleName(),
119
- metaAssertionRuleName = metaAssertionNonTerminalNode.getRuleName(); ///
120
-
121
- if (ruleName === metaAssertionRuleName) {
122
- const childNodes = nonTerminalNode.getChildNodes(),
123
- metaAssertionChildNodes = metaAssertionNonTerminalNode.getChildNodes(),
124
- nodes = childNodes, ///
125
- metaAssertionNodes = metaAssertionChildNodes, ///
126
- metaAssertionNodesMatches = matchMetaProofNodes(metaAssertionNodes, nodes);
127
-
128
- metaAssertionNonTerminalNodeMatches = metaAssertionNodesMatches; ///
129
- }
130
-
131
- return metaAssertionNonTerminalNodeMatches;
132
- }
@@ -1,6 +1,5 @@
1
1
  "use strict";
2
2
 
3
- import MetaAssertion from "../../metaAssertion";
4
3
  import verifyMetastatement from "../../verify/metastatement";
5
4
 
6
5
  import { nodeQuery } from "../../utilities/query";
@@ -26,8 +25,7 @@ export default function verifyUnqualifiedMetastatement(unqualifiedMetastatementN
26
25
  const derived = metaproofContext.isDerived();
27
26
 
28
27
  if (derived) {
29
- const metaAssertion = MetaAssertion.fromMetastatementNode(metastatementNode),
30
- metaAssertionMatches = metaproofContext.matchMetaAssertion(metaAssertion);
28
+ const metaAssertionMatches = metaproofContext.matchMetastatement(metastatementNode);
31
29
 
32
30
  unqualifiedMetastatementVerified = metaAssertionMatches; ///
33
31
  } else {
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import Premise from "../premise";
4
- import MetaAssertion from "../metaAssertion";
4
+ import MetaproofStep from "../step/metaproof";
5
5
  import verifyUnqualifiedMetastatement from "../verify/metastatement/unqualified";
6
6
 
7
7
  import { nodeQuery, nodesQuery } from "../utilities/query";
@@ -21,12 +21,12 @@ export default function verifyPremiseOrPremises(premiseOrPremisesNode, premises,
21
21
 
22
22
  if (unqualifiedMetastatementVerified) {
23
23
  const metastatementNode = metastatementNodeQuery(unqualifiedMetastatementNode),
24
- metaAssertion = MetaAssertion.fromUnqualifiedMetastatementNode(unqualifiedMetastatementNode),
24
+ metaproofStep = MetaproofStep.fromMetastatementNode(metastatementNode),
25
25
  premise = Premise.fromMetastatementNode(metastatementNode);
26
26
 
27
27
  premises.push(premise);
28
28
 
29
- metaproofContext.addMetaAssertion(metaAssertion);
29
+ metaproofContext.addMetaproofStep(metaproofStep);
30
30
 
31
31
  return true;
32
32
  }