occam-verify-cli 0.0.892 → 0.0.894

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 (57) hide show
  1. package/lib/axiomLemmaTheoremConjecture.js +5 -5
  2. package/lib/conclusion.js +4 -3
  3. package/lib/metaConsequent.js +4 -3
  4. package/lib/metaLemmaMetatheorem.js +16 -16
  5. package/lib/metaSupposition.js +19 -20
  6. package/lib/premise.js +63 -20
  7. package/lib/rule.js +43 -31
  8. package/lib/step/metaproof.js +19 -5
  9. package/lib/utilities/array.js +5 -2
  10. package/lib/verifier/nodes/metaLevel.js +7 -7
  11. package/lib/verify/derivation.js +10 -90
  12. package/lib/verify/metaDerivation.js +7 -87
  13. package/lib/verify/metaProofStep.js +76 -0
  14. package/lib/verify/metaSubDerivation.js +25 -0
  15. package/lib/verify/metaSubproof.js +34 -0
  16. package/lib/verify/metaproof.js +7 -8
  17. package/lib/verify/metastatement/qualified.js +71 -35
  18. package/lib/verify/metastatement/unqualified.js +16 -19
  19. package/lib/verify/proofStep.js +70 -0
  20. package/lib/verify/ruleDerivation.js +7 -85
  21. package/lib/verify/ruleProofStep.js +88 -0
  22. package/lib/verify/ruleSubDerivation.js +25 -0
  23. package/lib/verify/ruleSubproof.js +34 -0
  24. package/lib/verify/statement/qualified.js +74 -100
  25. package/lib/verify/statement/unqualified.js +16 -19
  26. package/lib/verify/statement.js +7 -1
  27. package/lib/verify/subDerivation.js +25 -0
  28. package/lib/verify/subproof.js +34 -0
  29. package/package.json +4 -4
  30. package/src/axiomLemmaTheoremConjecture.js +6 -5
  31. package/src/conclusion.js +6 -4
  32. package/src/metaConsequent.js +6 -4
  33. package/src/metaLemmaMetatheorem.js +16 -16
  34. package/src/metaSupposition.js +32 -33
  35. package/src/premise.js +106 -35
  36. package/src/rule.js +48 -30
  37. package/src/step/metaproof.js +24 -7
  38. package/src/utilities/array.js +1 -1
  39. package/src/verifier/nodes/metaLevel.js +6 -6
  40. package/src/verify/derivation.js +10 -138
  41. package/src/verify/metaDerivation.js +7 -135
  42. package/src/verify/metaProofStep.js +98 -0
  43. package/src/verify/metaSubDerivation.js +22 -0
  44. package/src/verify/metaSubproof.js +32 -0
  45. package/src/verify/metaproof.js +11 -11
  46. package/src/verify/metastatement/qualified.js +98 -32
  47. package/src/verify/metastatement/unqualified.js +16 -19
  48. package/src/verify/proofStep.js +88 -0
  49. package/src/verify/ruleDerivation.js +7 -133
  50. package/src/verify/ruleProofStep.js +121 -0
  51. package/src/verify/ruleSubDerivation.js +22 -0
  52. package/src/verify/ruleSubproof.js +32 -0
  53. package/src/verify/statement/qualified.js +83 -125
  54. package/src/verify/statement/unqualified.js +16 -19
  55. package/src/verify/statement.js +2 -2
  56. package/src/verify/subDerivation.js +22 -0
  57. package/src/verify/subproof.js +32 -0
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+
3
+ import MetaproofStep from "../step/metaproof";
4
+ import verifyMetaSubproof from "../verify/metaSubproof";
5
+ import verifyMetaSubDerivation from "../verify/metaSubDerivation";
6
+ import verifyQualifiedStatement from "../verify/statement/qualified";
7
+ import verifyUnqualifiedStatement from "../verify/statement/unqualified";
8
+ import verifyQualifiedMetastatement from "../verify/metastatement/qualified";
9
+ import verifyUnqualifiedMetastatement from "../verify/metastatement/unqualified";
10
+
11
+ import { nodeQuery } from "../utilities/query";
12
+ import { assignAssignment } from "../utilities/assignments";
13
+
14
+ const metaSubproofNodeQuery = nodeQuery("/metaProofStep|lastMetaProofStep/metaSubproof!"),
15
+ metastatementNodeQuery = nodeQuery("/qualifiedMetastatement|unqualifiedMetastatement/metastatement!"),
16
+ qualifiedStatementNodeQuery = nodeQuery("/metaProofStep|lastMetaProofStep/qualifiedStatement!"),
17
+ unqualifiedStatementNodeQuery = nodeQuery("/metaProofStep|lastMetaProofStep/unqualifiedStatement!"),
18
+ qualifiedMetastatementNodeQuery = nodeQuery("/metaProofStep|lastMetaProofStep/qualifiedMetastatement!"),
19
+ unqualifiedMetastatementNodeQuery = nodeQuery("/metaProofStep|lastMetaProofStep/unqualifiedMetastatement!");
20
+
21
+ export default function verifyMetaProofStep(metaProofStepNode, substitutions, localMetaContext) {
22
+ let metaProofStepVerified = false;
23
+
24
+ const metaSubproofNode = metaSubproofNodeQuery(metaProofStepNode),
25
+ qualifiedStatementNode = qualifiedStatementNodeQuery(metaProofStepNode),
26
+ unqualifiedStatementNode = unqualifiedStatementNodeQuery(metaProofStepNode),
27
+ qualifiedMetastatementNode = qualifiedMetastatementNodeQuery(metaProofStepNode),
28
+ unqualifiedMetastatementNode = unqualifiedMetastatementNodeQuery(metaProofStepNode);
29
+
30
+ if (false) {
31
+ ///
32
+ } else if (metaSubproofNode !== null) {
33
+ let metaSubproofVerified;
34
+
35
+ metaSubproofVerified = verifyMetaSubproof(metaSubproofNode, substitutions, localMetaContext);
36
+
37
+ if (metaSubproofVerified) {
38
+ const metaproofStep = MetaproofStep.fromMetaSubproofNode(metaSubproofNode);
39
+
40
+ localMetaContext.addMetaproofStep(metaproofStep);
41
+
42
+ metaProofStepVerified = true;
43
+ }
44
+ } else if (qualifiedStatementNode !== null) {
45
+ debugger
46
+ } else if (unqualifiedStatementNode !== null) {
47
+ debugger
48
+ } else if (qualifiedMetastatementNode !== null) {
49
+ let qualifiedMetastatementVerified;
50
+
51
+ const assignments = [];
52
+
53
+ qualifiedMetastatementVerified = verifyQualifiedMetastatement(qualifiedMetastatementNode, substitutions, assignments, localMetaContext);
54
+
55
+ if (qualifiedMetastatementVerified) {
56
+ const assignmentAssigned = assignAssignment(assignments, localMetaContext);
57
+
58
+ qualifiedMetastatementVerified = assignmentAssigned; ///
59
+ }
60
+
61
+ if (qualifiedMetastatementVerified) {
62
+ const metastatementNode = metastatementNodeQuery(qualifiedMetastatementNode),
63
+ metaproofStep = MetaproofStep.fromMetastatementNode(metastatementNode);
64
+
65
+ localMetaContext.addMetaproofStep(metaproofStep);
66
+
67
+ metaProofStepVerified = qualifiedMetastatementVerified; ///
68
+ }
69
+ } else if (unqualifiedMetastatementNode !== null) {
70
+ let unqualifiedMetastatementVerified;
71
+
72
+ const derived = true,
73
+ assignments = [];
74
+
75
+ unqualifiedMetastatementVerified = verifyUnqualifiedMetastatement(unqualifiedMetastatementNode, assignments, derived, localMetaContext);
76
+
77
+ if (unqualifiedMetastatementVerified) {
78
+ const assignmentAssigned = assignAssignment(assignments, localMetaContext);
79
+
80
+ unqualifiedMetastatementVerified = assignmentAssigned; ///
81
+ }
82
+
83
+ if (unqualifiedMetastatementVerified) {
84
+ const metastatementNode = metastatementNodeQuery(unqualifiedMetastatementNode),
85
+ metaproofStep = MetaproofStep.fromMetastatementNode(metastatementNode);
86
+
87
+ localMetaContext.addMetaproofStep(metaproofStep);
88
+
89
+ metaProofStepVerified = true;
90
+ }
91
+ }
92
+
93
+ return metaProofStepVerified;
94
+ }
95
+
96
+ Object.assign(verifyMetaSubDerivation, {
97
+ verifyMetaProofStep
98
+ });
@@ -0,0 +1,22 @@
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, localMetaContext) {
8
+ let metaSubDerivationVerified;
9
+
10
+ const metaProofStepNodes = metaProofStepNodesQuery(metaSubDerivationNode);
11
+
12
+ metaSubDerivationVerified = metaProofStepNodes.every((metaProofStepNode) => {
13
+ const { verifyMetaProofStep } = verifyMetaSubDerivation,
14
+ metaProofStepVerified = verifyMetaProofStep(metaProofStepNode, substitutions, localMetaContext);
15
+
16
+ if (metaProofStepVerified) {
17
+ return true;
18
+ }
19
+ });
20
+
21
+ return metaSubDerivationVerified;
22
+ }
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+
3
+ import LocalMetaContext from "../context/localMeta";
4
+ import verifyMetaSuppositions from "../verify/metaSuppositions";
5
+ import verifyMetaSubDerivation from "../verify/metaSubDerivation";
6
+
7
+ import { nodeQuery, nodesQuery } from "../utilities/query";
8
+
9
+ const suppositionNodesQuery = nodesQuery("/metaSubproof/supposition"),
10
+ metaSubDerivationNodeQuery = nodeQuery("/metaSubproof/metaSubDerivation");
11
+
12
+ export default function verifyMetaSubproof(metaSubproofNode, substitutions, localMetaContext) {
13
+ let metaSubproofVerified = false;
14
+
15
+ localMetaContext = LocalMetaContext.fromLocalMetaContext(localMetaContext); ///
16
+
17
+ const metaSuppositions = [],
18
+ suppositionNodes = suppositionNodesQuery(metaSubproofNode),
19
+ metaSuppositionsVerified = verifyMetaSuppositions(suppositionNodes, metaSuppositions, localMetaContext);
20
+
21
+ if (metaSuppositionsVerified) {
22
+ const metaSubDerivationNode = metaSubDerivationNodeQuery(metaSubproofNode),
23
+ metaSubDerivationVerified = verifyMetaSubDerivation(metaSubDerivationNode, substitutions, localMetaContext);
24
+
25
+ if (metaSubDerivationVerified) {
26
+ metaSubproofVerified = true;
27
+ }
28
+ }
29
+
30
+ return metaSubproofVerified;
31
+ }
32
+
@@ -1,28 +1,28 @@
1
1
  "use strict";
2
2
 
3
+ import LocalMetaContext from "../context/localMeta";
3
4
  import verifyMetaDerivation from "../verify/metaDerivation";
4
5
 
5
6
  import { nodeQuery } from "../utilities/query";
6
7
 
7
8
  const metaDerivationNodeQuery = nodeQuery("/metaproof/metaDerivation!");
8
9
 
9
- export default function verifyMetaproof(metaproofNode, conclusion, substitutions, localMetaproof) {
10
+ export default function verifyMetaproof(metaproofNode, conclusion, substitutions, localMetaContext) {
10
11
  let metaproofVerified = false;
11
12
 
13
+ localMetaContext = LocalMetaContext.fromLocalMetaContext(localMetaContext); ///
14
+
12
15
  const metaDerivationNode = metaDerivationNodeQuery(metaproofNode),
13
- metaDerivationVerified = verifyMetaDerivation(metaDerivationNode, substitutions, localMetaproof);
16
+ metaDerivationVerified = verifyMetaDerivation(metaDerivationNode, substitutions, localMetaContext);
14
17
 
15
18
  if (metaDerivationVerified) {
16
- const lastMetaproofStep = localMetaproof.getLastMetaproofStep();
17
-
18
- if (lastMetaproofStep !== null) {
19
- const metaproofStep = lastMetaproofStep, ///
20
- metastatementNode = metaproofStep.getMetastatementNode(),
21
- conclusionMetastatementNode = conclusion.getMetastatementNode(),
22
- metastatementNodeMatchesConclusionMetastatementNode = metastatementNode.match(conclusionMetastatementNode);
19
+ const lastMetaproofStep = localMetaContext.getLastMetaproofStep(),
20
+ metaproofStep = lastMetaproofStep, ///
21
+ metastatementNode = metaproofStep.getMetastatementNode(),
22
+ conclusionMetastatementNode = conclusion.getMetastatementNode(),
23
+ metastatementNodeMatchesConclusionMetastatementNode = metastatementNode.match(conclusionMetastatementNode);
23
24
 
24
- metaproofVerified = metastatementNodeMatchesConclusionMetastatementNode; ///
25
- }
25
+ metaproofVerified = metastatementNodeMatchesConclusionMetastatementNode; ///
26
26
  }
27
27
 
28
28
  return metaproofVerified;
@@ -1,6 +1,5 @@
1
1
  "use strict";
2
2
 
3
- import verifyMetastatement from "../metastatement";
4
3
  import verifyMetavariableAgainstMetastatement from "../../verify/metavariableAgainstMetastatement";
5
4
 
6
5
  import { nodeQuery } from "../../utilities/query";
@@ -8,57 +7,124 @@ import { nodeQuery } from "../../utilities/query";
8
7
  const metavariableNodeQuery = nodeQuery("/qualifiedMetastatement/reference!/metavariable!"),
9
8
  metastatementNodeQuery = nodeQuery("/qualifiedMetastatement/metastatement!");
10
9
 
11
- export default function verifyQualifiedMetastatement(qualifiedMetastatementNode, substitutions, assignments, derived, localMetaContext) {
12
- let qualifiedMetastatementVerified = false;
10
+ export default function verifyQualifiedMetastatement(qualifiedMetastatementNode, substitutions, assignments, localMetaContext) {
11
+ let qualifiedMetastatementVerified;
13
12
 
14
- const metastatementNode = metastatementNodeQuery(qualifiedMetastatementNode);
13
+ const qualifiedMetastatementString = localMetaContext.nodeAsString(qualifiedMetastatementNode);
15
14
 
16
- if (metastatementNode !== null) {
17
- const metastatementString = localMetaContext.nodeAsString(metastatementNode),
18
- metastatementLocalMetaContext = localMetaContext; ///
15
+ localMetaContext.trace(`Verifying the '${qualifiedMetastatementString}' qualified metastatement...`, qualifiedMetastatementNode);
19
16
 
20
- localMetaContext.trace(`Verifying the '${metastatementString}' qualified metastatement...`, qualifiedMetastatementNode);
17
+ const metavariableNode = metavariableNodeQuery(qualifiedMetastatementNode),
18
+ verifyQualifiedMetastatementFunctions = [
19
+ verifyQualifiedMetastatementAAgainstRule,
20
+ verifyQualifiedMetastatementAAgainstReference
21
+ ];
21
22
 
22
- const metavariableNode = metavariableNodeQuery(qualifiedMetastatementNode);
23
+ qualifiedMetastatementVerified = verifyQualifiedMetastatementFunctions.some((verifyQualifiedMetastatementFunction) => { ///
24
+ const qualifiedMetastatementVerified = verifyQualifiedMetastatementFunction(qualifiedMetastatementNode, metavariableNode, substitutions, localMetaContext);
23
25
 
24
- if (!qualifiedMetastatementVerified) {
25
- const rule = localMetaContext.findRuleByMetavariableNode(metavariableNode);
26
-
27
- if (rule !== null) {
28
- const ruleMatchesMetastatement = rule.matchMetastatement(metastatementNode, metastatementLocalMetaContext);
29
-
30
- qualifiedMetastatementVerified = ruleMatchesMetastatement; ///
31
- }
26
+ if (qualifiedMetastatementVerified) {
27
+ return true;
32
28
  }
29
+ });
33
30
 
34
- if (!qualifiedMetastatementVerified) {
35
- if (substitutions !== null) {
36
- const metavariablePresent = localMetaContext.isMetavariablePresentByMetavariableNode(metavariableNode, localMetaContext);
37
-
38
- if (metavariablePresent) {
39
- const metastatementVerified = verifyMetastatement(metastatementNode, assignments, derived, localMetaContext, () => {
31
+ if (qualifiedMetastatementVerified) {
32
+ const derived = false,
33
+ metastatementNode = metastatementNodeQuery(qualifiedMetastatementNode),
34
+ metastatementVerified = verifyMetastatement(metastatementNode, assignments, derived, localMetaContext, () => {
40
35
  const verifiedAhead = true;
41
36
 
42
37
  return verifiedAhead;
43
38
  });
44
39
 
45
- if (metastatementVerified) {
46
- const metavariableVerifiedAgainstMetastatement = verifyMetavariableAgainstMetastatement(metavariableNode, metastatementNode, substitutions, () => {
40
+ qualifiedMetastatementVerified = metastatementVerified; ///
41
+ }
42
+
43
+ if (qualifiedMetastatementVerified) {
44
+ localMetaContext.debug(`...verified the '${qualifiedMetastatementString}' qualified metastatement.`, qualifiedMetastatementNode);
45
+ }
46
+
47
+ return qualifiedMetastatementVerified;
48
+ }
49
+
50
+ function verifyQualifiedMetastatementAAgainstRule(qualifiedMetastatementNode, metavariableNode, substitutions, localMetaContext) {
51
+ let qualifiedMetastatementVerifiedAgainstRule = false;
52
+
53
+ const rule = localMetaContext.findRuleByMetavariableNode(metavariableNode);
54
+
55
+ if (rule !== null) {
56
+ const metastatementNode = metastatementNodeQuery(qualifiedMetastatementNode),
57
+ metavariableString = localMetaContext.nodeAsString(metavariableNode),
58
+ qualifiedMetastatementString = localMetaContext.nodeAsString(qualifiedMetastatementNode);
59
+
60
+ localMetaContext.trace(`Verifying the '${qualifiedMetastatementString}' qualified metastatement against the '${metavariableString}' rule...`, qualifiedMetastatementNode);
61
+
62
+ const ruleMatchesMetastatement = rule.matchMetastatement(metastatementNode, localMetaContext);
63
+
64
+ qualifiedMetastatementVerifiedAgainstRule = ruleMatchesMetastatement; ///
65
+
66
+ if (qualifiedMetastatementVerifiedAgainstRule) {
67
+ localMetaContext.debug(`...verified the '${qualifiedMetastatementString}' qualified metastatement against the '${metavariableString}' rule.`, qualifiedMetastatementNode);
68
+ }
69
+ }
70
+
71
+ return qualifiedMetastatementVerifiedAgainstRule;
72
+ }
73
+
74
+ function verifyQualifiedMetastatementAAgainstReference(qualifiedMetastatementNode, metavariableNode, substitutions, localMetaContext) {
75
+ let qualifiedMetastatementVerifiedAgainstReference = false;
76
+
77
+ if (substitutions !== null) {
78
+ const metavariableString = localMetaContext.nodeAsString(metavariableNode),
79
+ metavariablePresent = localMetaContext.isMetavariablePresentByMetavariableNode(metavariableNode, localMetaContext),
80
+ qualifiedMetastatementString = localMetaContext.nodeAsString(qualifiedMetastatementNode);
81
+
82
+ localMetaContext.trace(`Verifying the '${qualifiedMetastatementString}' qualified metastatement against the '${metavariableString}' reference...`, qualifiedMetastatementNode);
83
+
84
+ if (metavariablePresent) {
85
+ const metastatementNode = metastatementNodeQuery(qualifiedMetastatementNode),
86
+ metavariableVerifiedAgainstMetastatement = verifyMetavariableAgainstMetastatement(metavariableNode, metastatementNode, substitutions, () => {
47
87
  const verifiedAhead = true;
48
88
 
49
89
  return verifiedAhead;
50
90
  });
51
91
 
52
- qualifiedMetastatementVerified = metavariableVerifiedAgainstMetastatement; ///
53
- }
54
- }
55
- }
92
+ qualifiedMetastatementVerifiedAgainstReference = metavariableVerifiedAgainstMetastatement; ///
56
93
  }
57
94
 
58
- if (qualifiedMetastatementVerified) {
59
- localMetaContext.debug(`...verified the '${metastatementString}' qualified metastatement.`, qualifiedMetastatementNode);
95
+ if (qualifiedMetastatementVerifiedAgainstReference) {
96
+ localMetaContext.debug(`...verified the '${qualifiedMetastatementString}' qualified metastatement against the '${metavariableString}' reference.`, qualifiedMetastatementNode);
60
97
  }
61
98
  }
62
99
 
63
- return qualifiedMetastatementVerified;
100
+ return qualifiedMetastatementVerifiedAgainstReference;
101
+ }
102
+
103
+ function verifyMetastatement(metastatementNode, assignments, derived, localMetaContext) {
104
+ let metastatementVerified;
105
+
106
+ const metastatementString = localMetaContext.nodeAsString(metastatementNode);
107
+
108
+ localMetaContext.trace(`Verifying the '${metastatementString}' metastatement...`, metastatementNode);
109
+
110
+ const verifyMetaStatementFunctions = [
111
+ ///
112
+ ];
113
+
114
+ verifyMetaStatementFunctions.some((verifyStatementFunction) => {
115
+ const metastatementVerified = verifyStatementFunction(metastatementNode, assignments, derived, localMetaContext);
116
+
117
+ if (metastatementVerified) {
118
+ return true;
119
+ }
120
+ });
121
+
122
+ metastatementVerified = true; ///
123
+
124
+ if (metastatementVerified) {
125
+ localMetaContext.debug(`...verified the '${metastatementString}' metastatement.`, metastatementNode);
126
+ }
127
+
128
+ return metastatementVerified;
64
129
  }
130
+
@@ -9,32 +9,29 @@ const metastatementNodeQuery = nodeQuery("/unqualifiedMetastatement/metastatemen
9
9
  export default function verifyUnqualifiedMetastatement(unqualifiedMetastatementNode, assignments, derived, localMetaContext) {
10
10
  let unqualifiedMetastatementVerified = false;
11
11
 
12
- const metastatementNode = metastatementNodeQuery(unqualifiedMetastatementNode);
12
+ const metastatementNode = metastatementNodeQuery(unqualifiedMetastatementNode),
13
+ unqualifiedMetastatementString = localMetaContext.nodeAsString(unqualifiedMetastatementNode);
13
14
 
14
- if (metastatementNode !== null) {
15
- const metastatementString = localMetaContext.nodeAsString(metastatementNode);
15
+ localMetaContext.trace(`Verifying the '${unqualifiedMetastatementString}' unqualified metastatement...`, unqualifiedMetastatementNode);
16
16
 
17
- localMetaContext.trace(`Verifying the '${metastatementString}' unqualified metastatement...`, unqualifiedMetastatementNode);
17
+ if (derived) {
18
+ const metastatementMatches = localMetaContext.matchMetastatement(metastatementNode);
18
19
 
19
- if (derived) {
20
- const metastatementMatches = localMetaContext.matchMetastatement(metastatementNode);
21
-
22
- unqualifiedMetastatementVerified = metastatementMatches; ///
23
- }
20
+ unqualifiedMetastatementVerified = metastatementMatches; ///
21
+ }
24
22
 
25
- if (!unqualifiedMetastatementVerified) {
26
- const metastatementVerified = verifyMetastatement(metastatementNode, assignments, derived, localMetaContext, () => {
27
- const verifiedAhead = true;
23
+ if (!unqualifiedMetastatementVerified) {
24
+ const metastatementVerified = verifyMetastatement(metastatementNode, assignments, derived, localMetaContext, () => {
25
+ const verifiedAhead = true;
28
26
 
29
- return verifiedAhead;
30
- });
27
+ return verifiedAhead;
28
+ });
31
29
 
32
- unqualifiedMetastatementVerified = metastatementVerified; ///
33
- }
30
+ unqualifiedMetastatementVerified = metastatementVerified; ///
31
+ }
34
32
 
35
- if (unqualifiedMetastatementVerified) {
36
- localMetaContext.debug(`...verified the '${metastatementString}' unqualified metastatement.`, unqualifiedMetastatementNode);
37
- }
33
+ if (unqualifiedMetastatementVerified) {
34
+ localMetaContext.debug(`...verified the '${unqualifiedMetastatementString}' unqualified metastatement.`, unqualifiedMetastatementNode);
38
35
  }
39
36
 
40
37
  return unqualifiedMetastatementVerified;
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+
3
+ import ProofStep from "../step/proof";
4
+ import verifySubproof from "../verify/subproof";
5
+ import verifySubDerivation from "../verify/subDerivation";
6
+ import verifyQualifiedStatement from "../verify/statement/qualified";
7
+ import verifyUnqualifiedStatement from "../verify/statement/unqualified";
8
+
9
+ import { nodeQuery } from "../utilities/query";
10
+ import { assignAssignment } from "../utilities/assignments";
11
+
12
+ const subproofNodeQuery = nodeQuery("/proofStep|lastProofStep/subproof!"),
13
+ statementNodeQuery = nodeQuery("/qualifiedStatement|unqualifiedStatement/statement!"),
14
+ qualifiedStatementNodeQuery = nodeQuery("/proofStep|lastProofStep/qualifiedStatement!"),
15
+ unqualifiedStatementNodeQuery = nodeQuery("/proofStep|lastProofStep/unqualifiedStatement!");
16
+
17
+ export default function verifyProofStep(proofStepNode, localContext) {
18
+ let proofStepVerified = false;
19
+
20
+ const subproofNode = subproofNodeQuery(proofStepNode),
21
+ qualifiedStatementNode = qualifiedStatementNodeQuery(proofStepNode),
22
+ unqualifiedStatementNode = unqualifiedStatementNodeQuery(proofStepNode);
23
+
24
+ if (false) {
25
+ ///
26
+ } else if (subproofNode !== null) {
27
+ let subproofVerified;
28
+
29
+ subproofVerified = verifySubproof(subproofNode, localContext);
30
+
31
+ if (subproofVerified) {
32
+ const proofStep = ProofStep.fromSubproofNode(subproofNode);
33
+
34
+ localContext.addProofStep(proofStep);
35
+
36
+ proofStepVerified = true;
37
+ }
38
+ } else if (qualifiedStatementNode !== null) {
39
+ let qualifiedStatementVerified;
40
+
41
+ const assignments = [];
42
+
43
+ qualifiedStatementVerified = verifyQualifiedStatement(qualifiedStatementNode, assignments, localContext);
44
+
45
+ if (qualifiedStatementVerified) {
46
+ const assignmentAssigned = assignAssignment(assignments, localContext);
47
+
48
+ qualifiedStatementVerified = assignmentAssigned; ///
49
+ }
50
+
51
+ if (qualifiedStatementVerified) {
52
+ const statementNode = statementNodeQuery(qualifiedStatementNode),
53
+ proofStep = ProofStep.fromStatementNode(statementNode);
54
+
55
+ localContext.addProofStep(proofStep);
56
+
57
+ proofStepVerified = true;
58
+ }
59
+ } else if (unqualifiedStatementNode !== null) {
60
+ let unqualifiedStatementVerified;
61
+
62
+ const derived = true,
63
+ assignments = [];
64
+
65
+ unqualifiedStatementVerified = verifyUnqualifiedStatement(unqualifiedStatementNode, assignments, derived, localContext);
66
+
67
+ if (unqualifiedStatementVerified) {
68
+ const assignmentAssigned = assignAssignment(assignments, localContext);
69
+
70
+ unqualifiedStatementVerified = assignmentAssigned; ///
71
+ }
72
+
73
+ if (unqualifiedStatementVerified) {
74
+ const statementNode = statementNodeQuery(unqualifiedStatementNode),
75
+ proofStep = ProofStep.fromStatementNode(statementNode);
76
+
77
+ localContext.addProofStep(proofStep);
78
+
79
+ proofStepVerified = true;
80
+ }
81
+ }
82
+
83
+ return proofStepVerified;
84
+ }
85
+
86
+ Object.assign(verifySubDerivation, {
87
+ verifyProofStep
88
+ });
@@ -1,149 +1,23 @@
1
1
  "use strict";
2
2
 
3
- import MetaproofStep from "../step/metaproof";
4
- import verifyPremises from "../verify/premises";
5
- import LocalMetaContext from "../context/localMeta";
6
- import verifyQualifiedMetastatement from "../verify/metastatement/qualified";
7
- import verifyUnqualifiedMetastatement from "../verify/metastatement/unqualified";
3
+ import verifyRuleProofStep from "../verify/ruleProofStep";
8
4
 
9
- import { assignAssignment } from "../utilities/assignments";
10
- import { nodeQuery, nodesQuery } from "../utilities/query";
11
- import { RULE_SUBPROOF_RULE_NAME, QUALIFIED_METASTATEMENT_RULE_NAME, UNQUALIFIED_METASTATEMENT_RULE_NAME } from "../ruleNames";
5
+ import { nodesQuery } from "../utilities/query";
12
6
 
13
- const childNodesQuery = nodesQuery("/ruleDerivation|ruleSubDerivation/*"),
14
- premiseNodesQuery = nodesQuery("/ruleSubproof/premise"),
15
- metastatementNodeQuery = nodeQuery("/qualifiedMetastatement|unqualifiedMetastatement/metastatement!"),
16
- ruleSubDerivationNodeQuery = nodeQuery("/ruleSubproof/ruleSubDerivation");
7
+ const ruleProofStepNodesQuery = nodesQuery("/ruleDerivation/ruleProofStep|lastRuleProofStep");
17
8
 
18
9
  export default function verifyRuleDerivation(ruleDerivationNode, localMetaContext) {
19
10
  let ruleDerivationVerified;
20
11
 
21
- const childNodes = childNodesQuery(ruleDerivationNode);
12
+ const ruleProofStepNodes = ruleProofStepNodesQuery(ruleDerivationNode);
22
13
 
23
- ruleDerivationVerified = childNodes.every((childNode) => {
24
- const childVerified = verifyChild(childNode, localMetaContext);
14
+ ruleDerivationVerified = ruleProofStepNodes.every((ruleProofStepNode) => {
15
+ const ruleProofStepVerified = verifyRuleProofStep(ruleProofStepNode, localMetaContext);
25
16
 
26
- if (childVerified) {
17
+ if (ruleProofStepVerified) {
27
18
  return true;
28
19
  }
29
20
  });
30
21
 
31
22
  return ruleDerivationVerified;
32
23
  }
33
-
34
- function verifyRuleSubDerivation(ruleSubDerivationNode, localMetaContext) {
35
- let ruleSubDerivationVerified;
36
-
37
- const childNodes = childNodesQuery(ruleSubDerivationNode);
38
-
39
- ruleSubDerivationVerified = childNodes.every((childNode) => {
40
- const childVerified = verifyChild(childNode, localMetaContext);
41
-
42
- if (childVerified) {
43
- return true;
44
- }
45
- });
46
-
47
- return ruleSubDerivationVerified;
48
- }
49
-
50
- function verifyRuleSubproof(ruleSubproofNode, localMetaContext) {
51
- let ruleSubproofVerified = false;
52
-
53
- localMetaContext = LocalMetaContext.fromLocalMetaContext(localMetaContext); ///
54
-
55
- const premises = [],
56
- premiseNodes = premiseNodesQuery(ruleSubproofNode),
57
- premisesVerified = verifyPremises(premiseNodes, premises, localMetaContext);
58
-
59
- if (premisesVerified) {
60
- const ruleSubDerivationNode = ruleSubDerivationNodeQuery(ruleSubproofNode),
61
- ruleSubDerivationVerified = verifyRuleSubDerivation(ruleSubDerivationNode, localMetaContext);
62
-
63
- if (ruleSubDerivationVerified) {
64
- ruleSubproofVerified = true;
65
- }
66
- }
67
-
68
- return ruleSubproofVerified;
69
- }
70
-
71
- function verifyChild(childNode, localMetaContext) {
72
- let childVerified;
73
-
74
- const childNodeRuleName = childNode.getRuleName();
75
-
76
- switch (childNodeRuleName) {
77
- case RULE_SUBPROOF_RULE_NAME: {
78
- const ruleSubproofNode = childNode, ///
79
- ruleSubproofVerified = verifyRuleSubproof(ruleSubproofNode, localMetaContext);
80
-
81
- if (ruleSubproofVerified) {
82
- const metaproofStep = MetaproofStep.fromRuleSubproofNode(ruleSubproofNode);
83
-
84
- localMetaContext.addMetaproofStep(metaproofStep);
85
-
86
- childVerified = true;
87
- }
88
-
89
- break;
90
- }
91
-
92
- case QUALIFIED_METASTATEMENT_RULE_NAME: {
93
- let qualifiedMetastatementVerified;
94
-
95
- const derived = true,
96
- assignments = [],
97
- substitutions = null,
98
- qualifiedMetastatementNode = childNode; ///
99
-
100
- qualifiedMetastatementVerified = verifyQualifiedMetastatement(qualifiedMetastatementNode, substitutions, assignments, derived, localMetaContext);
101
-
102
- if (qualifiedMetastatementVerified) {
103
- const assignmentAssigned = assignAssignment(assignments, localMetaContext);
104
-
105
- qualifiedMetastatementVerified = assignmentAssigned; ///
106
- }
107
-
108
- if (qualifiedMetastatementVerified) {
109
- const metastatementNode = metastatementNodeQuery(qualifiedMetastatementNode),
110
- metaproofStep = MetaproofStep.fromMetastatementNode(metastatementNode);
111
-
112
- localMetaContext.addMetaproofStep(metaproofStep);
113
-
114
- childVerified = qualifiedMetastatementVerified; ///
115
- }
116
-
117
- break;
118
- }
119
-
120
- case UNQUALIFIED_METASTATEMENT_RULE_NAME: {
121
- let unqualifiedMetastatementVerified;
122
-
123
- const derived = true,
124
- assignments = [],
125
- unqualifiedMetastatementNode = childNode; ///
126
-
127
- unqualifiedMetastatementVerified = verifyUnqualifiedMetastatement(unqualifiedMetastatementNode, assignments, derived, localMetaContext);
128
-
129
- if (unqualifiedMetastatementVerified) {
130
- const assignmentAssigned = assignAssignment(assignments, localMetaContext);
131
-
132
- unqualifiedMetastatementVerified = assignmentAssigned; ///
133
- }
134
-
135
- if (unqualifiedMetastatementVerified) {
136
- const metastatementNode = metastatementNodeQuery(unqualifiedMetastatementNode),
137
- metaproofStep = MetaproofStep.fromMetastatementNode(metastatementNode);
138
-
139
- localMetaContext.addMetaproofStep(metaproofStep);
140
-
141
- childVerified = true;
142
- }
143
-
144
- break;
145
- }
146
- }
147
-
148
- return childVerified;
149
- }