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,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import { matchBracketedStatementChildNode, bracketedStatementChildNodeFromChildNodes } from "./utilities/statement";
3
+ import { matchNodes, bracketedChildNodeFromChildNodes } from "./utilities/node";
4
4
 
5
5
  export default class Substitution {
6
6
  constructor(variableName, nodes) {
@@ -19,112 +19,41 @@ export default class Substitution {
19
19
  matchNodes(nodes) {
20
20
  let matches;
21
21
 
22
- const substitutionNodes = this.nodes, ///
23
- substitutionNonTerminalNodeMatches = matchSubstitutionNodes(substitutionNodes, nodes);
22
+ const nodesA = this.nodes, ///
23
+ nodesB = nodes,
24
+ metaSubstitutionNodesMatch = matchNodes(nodesA, nodesB);
24
25
 
25
- matches = substitutionNonTerminalNodeMatches; ///
26
+ matches = metaSubstitutionNodesMatch; ///
26
27
 
27
28
  if (!matches) {
28
29
  const childNodes = nodes, ///
29
- bracketedStatementChildNodeMatches = matchBracketedStatementChildNode(childNodes, (bracketedStatementChildNode) => {
30
- const nonTerminalNode = bracketedStatementChildNode, ///
31
- childNodes = nonTerminalNode.getChildNodes(),
32
- nodes = childNodes, ///
33
- assertionNonTerminalNodeMatches = matchSubstitutionNodes(substitutionNodes, nodes),
34
- bracketedStatementChildNodeMatches = assertionNonTerminalNodeMatches; ///
30
+ bracketedChildNode = bracketedChildNodeFromChildNodes(childNodes);
35
31
 
36
- return bracketedStatementChildNodeMatches;
37
- });
32
+ if (bracketedChildNode !== null) {
33
+ const nonTerminalNode = bracketedChildNode, ///
34
+ childNodes = nonTerminalNode.getChildNodes(),
35
+ nodesB = childNodes, ///
36
+ nodesMatch = matchNodes(nodesA, nodesB);
38
37
 
39
- matches = bracketedStatementChildNodeMatches; ///
38
+ matches = nodesMatch; ///
39
+ }
40
40
  }
41
41
 
42
42
  return matches;
43
43
  }
44
44
 
45
- static fromVariableNameAndNodes(variableName, nodes) {
46
- const bracketedStatementChildNode = bracketedStatementChildNodeFromChildNodes(nodes);
45
+ static fromMetavariableNameAndNodes(variableName, nodes) {
46
+ const bracketedChildNode = bracketedChildNodeFromChildNodes(nodes);
47
47
 
48
- if (bracketedStatementChildNode !== null) {
49
- const nonTerminalNode = bracketedStatementChildNode, ///
48
+ if (bracketedChildNode !== null) {
49
+ const nonTerminalNode = bracketedChildNode, ///
50
50
  childNodes = nonTerminalNode.getChildNodes();
51
51
 
52
52
  nodes = childNodes; ///
53
53
  }
54
54
 
55
- const substitution = new Substitution(variableName, nodes);
56
-
57
- return substitution;
58
- }
59
- }
60
-
61
- function matchSubstitutionNode(substitutionNode, node) {
62
- let substitutionNodeMatches = false;
63
-
64
- const nodeTerminalNode = node.isTerminalNode(),
65
- ruleNodeTerminalNode = substitutionNode.isTerminalNode();
66
-
67
- if (nodeTerminalNode === ruleNodeTerminalNode) {
68
- if (nodeTerminalNode) {
69
- const terminalNode = node, ///
70
- substitutionTerminalNode = substitutionNode, ///
71
- substitutionTerminalNodeMatches = matchSubstitutionTerminalNode(substitutionTerminalNode, terminalNode);
72
-
73
- substitutionNodeMatches = substitutionTerminalNodeMatches; ///
74
- } else {
75
- const nonTerminalNode = node, ///
76
- substitutionNonTerminalNode = substitutionNode, ///
77
- substitutionNonTerminalNodeMatches = matchSubstitutionNonTerminalNode(substitutionNonTerminalNode, nonTerminalNode);
78
-
79
- substitutionNodeMatches = substitutionNonTerminalNodeMatches; ///
80
- }
81
- }
82
-
83
- return substitutionNodeMatches;
84
- }
85
-
86
- function matchSubstitutionNodes(substitutionNodes, nodes) {
87
- let substitutionNodesMatches = false;
55
+ const metaSubstitution = new Substitution(variableName, nodes);
88
56
 
89
- const nodesLength = nodes.length,
90
- substitutionNodesLength = substitutionNodes.length;
91
-
92
- if (nodesLength === substitutionNodesLength) {
93
- substitutionNodesMatches = nodes.every((node, index) => {
94
- const substitutionNode = substitutionNodes[index],
95
- substitutionNodeMatches = matchSubstitutionNode(substitutionNode, node);
96
-
97
- if (substitutionNodeMatches) {
98
- return true;
99
- }
100
- })
101
- }
102
-
103
- return substitutionNodesMatches;
104
- }
105
-
106
- function matchSubstitutionTerminalNode(substitutionTerminalNode, terminalNode) {
107
- const matches = substitutionTerminalNode.match(terminalNode),
108
- substitutionTerminalNodeMatches = matches; ///
109
-
110
- return substitutionTerminalNodeMatches;
111
- }
112
-
113
- function matchSubstitutionNonTerminalNode(substitutionNonTerminalNode, nonTerminalNode) {
114
- let substitutionNonTerminalNodeMatches = false;
115
-
116
- const ruleName = nonTerminalNode.getRuleName(),
117
- substitutionRuleName = substitutionNonTerminalNode.getRuleName(); ///
118
-
119
- if (ruleName === substitutionRuleName) {
120
- const childNodes = nonTerminalNode.getChildNodes(),
121
- substitutionChildNodes = substitutionNonTerminalNode.getChildNodes(),
122
- nodes = childNodes, ///
123
- substitutionNodes = substitutionChildNodes, ///
124
- substitutionNodesMatches = matchSubstitutionNodes(substitutionNodes, nodes);
125
-
126
- substitutionNonTerminalNodeMatches = substitutionNodesMatches; ///
57
+ return metaSubstitution;
127
58
  }
128
-
129
- return substitutionNonTerminalNodeMatches;
130
59
  }
@@ -6,7 +6,7 @@ import permutationsMatrix from "../permutationsMatrix";
6
6
 
7
7
  import { MAXIMUM_INDEXES_LENGTH, MAXIMUM_PERMUTATION_LENGTH } from "../constants";
8
8
 
9
- export const { front, first, second, third, last, push, prune, filter } = arrayUtilities;
9
+ export const { first, second, third, last, push, prune, filter } = arrayUtilities;
10
10
 
11
11
  export function someSubArray(array, subArrayLength, callback) {
12
12
  let found = false;
@@ -0,0 +1,149 @@
1
+ "use strict";
2
+
3
+ import { first, second, third } from "./array";
4
+ import { METASTATEMENT_RULE_NAME } from "../ruleNames";
5
+ import { BRACKETED_CHILD_NODES_LENGTH, LEFT_BRACKET, RIGHT_BRACKET } from "../constants";
6
+
7
+ export function matchNode(nodeA, nodeB) {
8
+ let nodeMatches = false;
9
+
10
+ const nodeATerminalNode = nodeA.isTerminalNode(),
11
+ nodeBTerminalNode = nodeB.isTerminalNode();
12
+
13
+ if (nodeATerminalNode === nodeBTerminalNode) {
14
+ if (nodeATerminalNode) {
15
+ const terminalNodeA = nodeA, ///
16
+ terminalNodeB = nodeB, ///
17
+ terminalNodeMatches = matchTerminalNode(terminalNodeA, terminalNodeB);
18
+
19
+ nodeMatches = terminalNodeMatches; ///
20
+ } else {
21
+ const nonTerminalNodeA = nodeA, ///
22
+ nonTerminalNodeB = nodeB, ///
23
+ nonTerminalNodeMatches = matchNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB);
24
+
25
+ nodeMatches = nonTerminalNodeMatches; ///
26
+ }
27
+ }
28
+
29
+ return nodeMatches;
30
+ }
31
+
32
+ export function matchNodes(nodesA, nodesB) {
33
+ let nodesMatch = false;
34
+
35
+ const nodesALength = nodesA.length,
36
+ nodesBLength = nodesB.length;
37
+
38
+ if (nodesALength === nodesBLength) {
39
+ nodesMatch = nodesA.every((nodeA, index) => {
40
+ const nodeB = nodesB[index],
41
+ nodeMatches = matchNode(nodeA, nodeB);
42
+
43
+ if (nodeMatches) {
44
+ return true;
45
+ }
46
+ })
47
+ }
48
+
49
+ return nodesMatch;
50
+ }
51
+
52
+ export function matchBracketedNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB) {
53
+ let bracketedNodeMatches = false;
54
+
55
+ if (!bracketedNodeMatches) {
56
+ const nonTerminalNodeMatches = matchNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB);
57
+
58
+ bracketedNodeMatches = nonTerminalNodeMatches; ///
59
+ }
60
+
61
+ if (!bracketedNodeMatches) {
62
+ const nonTerminalNodeAChildNodes = nonTerminalNodeA.getChildNodes(),
63
+ childNodesA = nonTerminalNodeAChildNodes, ///
64
+ bracketedChildNodeA = bracketedChildNodeFromChildNodes(childNodesA);
65
+
66
+ if (bracketedChildNodeA !== null) {
67
+ const nodeA = bracketedChildNodeA, ///
68
+ nodeB = nonTerminalNodeB, ///
69
+ nodeMatches = matchNode(nodeA, nodeB);
70
+
71
+ bracketedNodeMatches = nodeMatches; ///
72
+ }
73
+ }
74
+
75
+ if (!bracketedNodeMatches) {
76
+ const nonTerminalNodeBChildNodes = nonTerminalNodeB.getChildNodes(),
77
+ childNodesB = nonTerminalNodeBChildNodes, ///
78
+ bracketedChildNodeB = bracketedChildNodeFromChildNodes(childNodesB);
79
+
80
+ if (bracketedChildNodeB !== null) {
81
+ const nodeB = bracketedChildNodeB, ///
82
+ nodeA = nonTerminalNodeA, ///
83
+ nodeMatches = matchNode(nodeA, nodeB);
84
+
85
+ bracketedNodeMatches = nodeMatches; ///
86
+ }
87
+ }
88
+
89
+ return bracketedNodeMatches;
90
+ }
91
+
92
+ export function bracketedChildNodeFromChildNodes(childNodes) {
93
+ let bracketedChildNode = null;
94
+
95
+ const childNodesLength = childNodes.length;
96
+
97
+ if (childNodesLength === BRACKETED_CHILD_NODES_LENGTH) {
98
+ const firstChildNode = first(childNodes),
99
+ thirdChildNode = third(childNodes),
100
+ secondChildNode = second(childNodes),
101
+ firstChildNodeTerminalNode = firstChildNode.isTerminalNode(),
102
+ thirdChildNodeTerminalNode = thirdChildNode.isTerminalNode(),
103
+ secondChildNodeNonTerminalNode = secondChildNode.isNonTerminalNode();
104
+
105
+ if (firstChildNodeTerminalNode && secondChildNodeNonTerminalNode && thirdChildNodeTerminalNode) {
106
+ const nonTerminalNode = secondChildNode, ///
107
+ firstTerminalNode = firstChildNode, ///
108
+ secondTerminalNode = thirdChildNode, ///
109
+ nonTerminalNodeRuleName = nonTerminalNode.getRuleName(),
110
+ firstTerminalNodeContent = firstTerminalNode.getContent(),
111
+ secondTerminalNodeContent = secondTerminalNode.getContent(),
112
+ firstTerminalNodeContentLeftBracket = (firstTerminalNodeContent === LEFT_BRACKET),
113
+ secondTerminalNodeContentRightBracket = (secondTerminalNodeContent === RIGHT_BRACKET),
114
+ nonTerminalNodeRuleNameMetastatementRuleName = (nonTerminalNodeRuleName === METASTATEMENT_RULE_NAME);
115
+
116
+ if (firstTerminalNodeContentLeftBracket && nonTerminalNodeRuleNameMetastatementRuleName && secondTerminalNodeContentRightBracket) {
117
+ bracketedChildNode = nonTerminalNode; ///
118
+ }
119
+ }
120
+ }
121
+
122
+ return bracketedChildNode;
123
+ }
124
+
125
+ function matchTerminalNode(terminalNodeA, terminalNodeB) {
126
+ const matches = terminalNodeA.match(terminalNodeB),
127
+ terminalNodeMatches = matches; ///
128
+
129
+ return terminalNodeMatches;
130
+ }
131
+
132
+ function matchNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB) {
133
+ let nonTerminalNodeMatches = false;
134
+
135
+ const nonTerminalNodeARuleName = nonTerminalNodeA.getRuleName(), ///
136
+ nonTerminalNodeBRuleName = nonTerminalNodeB.getRuleName(); ///
137
+
138
+ if (nonTerminalNodeARuleName === nonTerminalNodeBRuleName) {
139
+ const nonTerminalNodeAChildNodes = nonTerminalNodeA.getChildNodes(),
140
+ nonTerminalNodeBChildNodes = nonTerminalNodeB.getChildNodes(),
141
+ nodesA = nonTerminalNodeAChildNodes, ///
142
+ nodesB = nonTerminalNodeBChildNodes, ///
143
+ nodesMatch = matchNodes(nodesA, nodesB);
144
+
145
+ nonTerminalNodeMatches = nodesMatch; ///
146
+ }
147
+
148
+ return nonTerminalNodeMatches;
149
+ }
@@ -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,19 +8,17 @@ 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
 
15
16
  export default function verifyDerivation(derivationNode, proofContext) {
16
- let derivationVerified,
17
- derived;
17
+ let derivationVerified;
18
18
 
19
19
  proofContext.begin(derivationNode);
20
20
 
21
- derived = true;
22
-
23
- proofContext.setDerived(derived);
21
+ proofContext.setDerived();
24
22
 
25
23
  const derivationChildNodes = derivationChildNodesQuery(derivationNode);
26
24
 
@@ -32,9 +30,7 @@ export default function verifyDerivation(derivationNode, proofContext) {
32
30
  }
33
31
  });
34
32
 
35
- derived = false;
36
-
37
- proofContext.setDerived(derived);
33
+ proofContext.setDerived();
38
34
 
39
35
  derivationVerified ?
40
36
  proofContext.complete(derivationNode) :
@@ -54,9 +50,9 @@ function verifyDerivationChild(derivationChildNode, proofContext) {
54
50
  subproofVerified = verifySubproof(subproofNode, proofContext);
55
51
 
56
52
  if (subproofVerified) {
57
- const assertion = Assertion.fromSubproofNode(subproofNode);
53
+ const proofStep = ProofStep.fromSubproofNode(subproofNode);
58
54
 
59
- proofContext.addAssertion(assertion);
55
+ proofContext.addProofStep(proofStep);
60
56
 
61
57
  derivationChildVerified = true;
62
58
  }
@@ -69,9 +65,10 @@ function verifyDerivationChild(derivationChildNode, proofContext) {
69
65
  qualifiedStatementVerified = verifyQualifiedStatement(qualifiedStatementNode, proofContext);
70
66
 
71
67
  if (qualifiedStatementVerified) {
72
- const assertion = Assertion.fromQualifiedStatementNode(qualifiedStatementNode);
68
+ const statementNode = statementNodeQuery(qualifiedStatementNode),
69
+ proofStep = ProofStep.fromStatementNode(statementNode);
73
70
 
74
- proofContext.addAssertion(assertion);
71
+ proofContext.addProofStep(proofStep);
75
72
 
76
73
  derivationChildVerified = qualifiedStatementVerified; ///
77
74
  }
@@ -84,9 +81,10 @@ function verifyDerivationChild(derivationChildNode, proofContext) {
84
81
  unqualifiedStatementVerified = verifyUnqualifiedStatement(unqualifiedStatementNode, proofContext);
85
82
 
86
83
  if (unqualifiedStatementVerified) {
87
- const assertion = Assertion.fromUnqualifiedStatementNode(unqualifiedStatementNode);
84
+ const statementNode = statementNodeQuery(unqualifiedStatementNode),
85
+ proofStep = ProofStep.fromStatementNode(statementNode);
88
86
 
89
- proofContext.addAssertion(assertion);
87
+ proofContext.addProofStep(proofStep);
90
88
 
91
89
  derivationChildVerified = true;
92
90
  }
@@ -114,9 +112,10 @@ function verifySubproof(subproofNode, proofContext) {
114
112
 
115
113
  if (unqualifiedStatementsVerified) {
116
114
  unqualifiedStatementNodes.forEach((unqualifiedStatementNode) => {
117
- const assertion = Assertion.fromUnqualifiedStatementNode(unqualifiedStatementNode);
115
+ const statementNode = statementNodeQuery(unqualifiedStatementNode),
116
+ proofStep = ProofStep.fromStatementNode(statementNode);
118
117
 
119
- proofContext.addAssertion(assertion);
118
+ proofContext.addProofStep(proofStep);
120
119
  });
121
120
 
122
121
  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,19 +8,17 @@ 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
 
15
16
  export default function verifyMetaDerivation(metaDerivationNode, metaproofContext) {
16
- let metaDerivationVerified,
17
- derived;
17
+ let metaDerivationVerified;
18
18
 
19
19
  metaproofContext.begin(metaDerivationNode);
20
20
 
21
- derived = true;
22
-
23
- metaproofContext.setDerived(derived);
21
+ metaproofContext.setDerived();
24
22
 
25
23
  const metaDerivationChildNodes = metaDerivationChildNodesQuery(metaDerivationNode);
26
24
 
@@ -32,9 +30,7 @@ export default function verifyMetaDerivation(metaDerivationNode, metaproofContex
32
30
  }
33
31
  });
34
32
 
35
- derived = false;
36
-
37
- metaproofContext.setDerived(derived);
33
+ metaproofContext.resetDerived();
38
34
 
39
35
  metaDerivationVerified ?
40
36
  metaproofContext.complete(metaDerivationNode) :
@@ -54,9 +50,9 @@ function verifyMetaDerivationChild(metaDerivationChildNode, metaproofContext) {
54
50
  metaSubproofVerified = verifyMetaSubproof(metaSubproofNode, metaproofContext);
55
51
 
56
52
  if (metaSubproofVerified) {
57
- const metaAssertion = MetaAssertion.fromMetaSubproofNode(metaSubproofNode);
53
+ const metaproofStep = MetaproofStep.fromMetaSubproofNode(metaSubproofNode);
58
54
 
59
- metaproofContext.addMetaAssertion(metaAssertion);
55
+ metaproofContext.addMetaproofStep(metaproofStep);
60
56
 
61
57
  metaDerivationChildVerified = true;
62
58
  }
@@ -69,9 +65,10 @@ function verifyMetaDerivationChild(metaDerivationChildNode, metaproofContext) {
69
65
  qualifiedMetastatementVerified = verifyQualifiedMetastatement(qualifiedMetastatementNode, metaproofContext);
70
66
 
71
67
  if (qualifiedMetastatementVerified) {
72
- const metaAssertion = MetaAssertion.fromQualifiedMetastatementNode(qualifiedMetastatementNode);
68
+ const metastatementNode = metastatementNodeQuery(qualifiedMetastatementNode),
69
+ metaproofStep = MetaproofStep.fromMetastatementNode(metastatementNode);
73
70
 
74
- metaproofContext.addMetaAssertion(metaAssertion);
71
+ metaproofContext.addMetaproofStep(metaproofStep);
75
72
 
76
73
  metaDerivationChildVerified = qualifiedMetastatementVerified; ///
77
74
  }
@@ -84,9 +81,10 @@ function verifyMetaDerivationChild(metaDerivationChildNode, metaproofContext) {
84
81
  unqualifiedMetastatementVerified = verifyUnqualifiedMetastatement(unqualifiedMetastatementNode, metaproofContext);
85
82
 
86
83
  if (unqualifiedMetastatementVerified) {
87
- const metaAssertion = MetaAssertion.fromUnqualifiedMetastatementNode(unqualifiedMetastatementNode);
84
+ const metastatementNode = metastatementNodeQuery(unqualifiedMetastatementNode),
85
+ metaproofStep = MetaproofStep.fromMetastatementNode(metastatementNode);
88
86
 
89
- metaproofContext.addMetaAssertion(metaAssertion);
87
+ metaproofContext.addMetaproofStep(metaproofStep);
90
88
 
91
89
  metaDerivationChildVerified = true;
92
90
  }
@@ -114,9 +112,10 @@ function verifyMetaSubproof(metaSubproofNode, metaproofContext) {
114
112
 
115
113
  if (unqualifiedMetastatementsVerified) {
116
114
  unqualifiedMetastatementNodes.forEach((unqualifiedMetastatementNode) => {
117
- const metaAssertion = MetaAssertion.fromUnqualifiedMetastatementNode(unqualifiedMetastatementNode);
115
+ const metastatementNode = metastatementNodeQuery(unqualifiedMetastatementNode),
116
+ metaproofStep = MetaproofStep.fromMetastatementNode(metastatementNode);
118
117
 
119
- metaproofContext.addMetaAssertion(metaAssertion);
118
+ metaproofContext.addMetaproofStep(metaproofStep);
120
119
  });
121
120
 
122
121
  const metaDerivationNode = metaDerivationNodeQuery(metaSubproofNode),