occam-verify-cli 0.0.1003 → 0.0.1006

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 (183) hide show
  1. package/README.md +0 -2
  2. package/bin/abbreviations.js +1 -3
  3. package/bin/action/help.js +0 -2
  4. package/bin/action/verify.js +4 -24
  5. package/bin/defaults.js +0 -2
  6. package/bin/main.js +3 -4
  7. package/bin/options.js +0 -2
  8. package/bin/utilities/releaseContext.js +9 -2
  9. package/lib/assertion/subproof.js +106 -0
  10. package/lib/assignment/metavariable.js +2 -2
  11. package/lib/combinator.js +50 -16
  12. package/lib/conclusion.js +74 -14
  13. package/lib/context/file.js +191 -31
  14. package/lib/context/local.js +37 -49
  15. package/lib/context/release.js +25 -81
  16. package/lib/declaration/combinator.js +83 -0
  17. package/lib/derivation.js +86 -0
  18. package/lib/equality.js +3 -11
  19. package/lib/index.js +1 -1
  20. package/lib/judgement.js +3 -10
  21. package/lib/label.js +58 -16
  22. package/lib/log.js +3 -11
  23. package/lib/metaType.js +31 -19
  24. package/lib/metavariable.js +39 -12
  25. package/lib/mixins/statement/qualified/unify.js +118 -0
  26. package/lib/mixins/statement/unify.js +57 -0
  27. package/lib/mixins/statement/verify.js +184 -0
  28. package/lib/node/statement/combinator/bracketed.js +15 -11
  29. package/lib/ocmbinator/bracketed.js +52 -8
  30. package/lib/premise.js +109 -55
  31. package/lib/proof.js +91 -0
  32. package/lib/proofStep.js +78 -25
  33. package/lib/reference.js +62 -16
  34. package/lib/rule.js +146 -26
  35. package/lib/ruleNames.js +5 -5
  36. package/lib/statement/qualified.js +127 -0
  37. package/lib/statement/unqualified.js +89 -0
  38. package/lib/statement.js +176 -0
  39. package/lib/subDerivation.js +86 -0
  40. package/lib/subproof.js +155 -0
  41. package/lib/substitution/frameForMetavariable.js +14 -15
  42. package/lib/substitution/statementForMetavariable.js +23 -24
  43. package/lib/substitution/termForVariable.js +11 -12
  44. package/lib/substitution.js +9 -2
  45. package/lib/substitutions.js +14 -14
  46. package/lib/supposition.js +92 -61
  47. package/lib/unifier/statementWithCombinator.js +3 -3
  48. package/lib/unify/metavariableWithFrame.js +2 -2
  49. package/lib/unify/metavariableWithStatement.js +2 -2
  50. package/lib/unify/metavariableWithStatementGivenSubstitution.js +2 -2
  51. package/lib/unify/variableWithTerm.js +2 -2
  52. package/lib/utilities/node.js +13 -11
  53. package/lib/utilities/releaseContext.js +5 -6
  54. package/lib/utilities/string.js +8 -2
  55. package/lib/utilities/subproof.js +5 -5
  56. package/lib/utilities/tokens.js +10 -10
  57. package/lib/variable.js +1 -10
  58. package/lib/verifier/metaLevel.js +2 -2
  59. package/lib/verifier/topLevel.js +5 -5
  60. package/lib/verify/axiom.js +3 -5
  61. package/lib/verify/conjecture.js +4 -7
  62. package/lib/verify/consequent.js +2 -3
  63. package/lib/verify/declaration/combinator.js +2 -14
  64. package/lib/verify/declaration/metavariable.js +9 -10
  65. package/lib/verify/files.js +4 -4
  66. package/lib/verify/frame.js +12 -12
  67. package/lib/verify/lemma.js +4 -7
  68. package/lib/verify/metaLemma.js +4 -7
  69. package/lib/verify/metatheorem.js +4 -7
  70. package/lib/verify/proofStep.js +2 -31
  71. package/lib/verify/theorem.js +4 -7
  72. package/package.json +1 -1
  73. package/src/assertion/subproof.js +84 -0
  74. package/src/assignment/metavariable.js +2 -2
  75. package/src/combinator.js +45 -15
  76. package/src/conclusion.js +85 -13
  77. package/src/context/file.js +223 -11
  78. package/src/context/local.js +12 -16
  79. package/src/context/release.js +31 -100
  80. package/src/declaration/combinator.js +44 -0
  81. package/src/derivation.js +50 -0
  82. package/src/equality.js +2 -9
  83. package/src/index.js +0 -1
  84. package/src/judgement.js +2 -8
  85. package/src/label.js +56 -13
  86. package/src/log.js +2 -9
  87. package/src/metaType.js +26 -14
  88. package/src/metavariable.js +57 -9
  89. package/src/mixins/statement/qualified/unify.js +186 -0
  90. package/src/mixins/statement/unify.js +70 -0
  91. package/src/mixins/statement/verify.js +274 -0
  92. package/src/node/statement/combinator/bracketed.js +4 -3
  93. package/src/ocmbinator/bracketed.js +15 -12
  94. package/src/premise.js +138 -44
  95. package/src/proof.js +58 -0
  96. package/src/proofStep.js +92 -22
  97. package/src/reference.js +58 -12
  98. package/src/rule.js +199 -30
  99. package/src/ruleNames.js +1 -1
  100. package/src/statement/qualified.js +104 -0
  101. package/src/statement/unqualified.js +60 -0
  102. package/src/statement.js +179 -0
  103. package/src/subDerivation.js +52 -0
  104. package/src/subproof.js +99 -0
  105. package/src/substitution/frameForMetavariable.js +20 -17
  106. package/src/substitution/statementForMetavariable.js +31 -29
  107. package/src/substitution/termForVariable.js +15 -14
  108. package/src/substitution.js +8 -0
  109. package/src/substitutions.js +12 -13
  110. package/src/supposition.js +96 -51
  111. package/src/unifier/statementWithCombinator.js +6 -3
  112. package/src/unify/metavariableWithFrame.js +1 -1
  113. package/src/unify/metavariableWithStatement.js +1 -1
  114. package/src/unify/metavariableWithStatementGivenSubstitution.js +1 -1
  115. package/src/unify/variableWithTerm.js +1 -1
  116. package/src/utilities/node.js +18 -12
  117. package/src/utilities/releaseContext.js +5 -8
  118. package/src/utilities/string.js +6 -2
  119. package/src/utilities/subproof.js +2 -2
  120. package/src/utilities/tokens.js +7 -7
  121. package/src/variable.js +0 -10
  122. package/src/verifier/metaLevel.js +3 -2
  123. package/src/verifier/topLevel.js +6 -4
  124. package/src/verify/axiom.js +1 -2
  125. package/src/verify/conjecture.js +2 -3
  126. package/src/verify/consequent.js +1 -1
  127. package/src/verify/declaration/combinator.js +0 -20
  128. package/src/verify/declaration/metavariable.js +8 -12
  129. package/src/verify/files.js +3 -3
  130. package/src/verify/frame.js +11 -11
  131. package/src/verify/lemma.js +2 -3
  132. package/src/verify/metaLemma.js +2 -3
  133. package/src/verify/metatheorem.js +2 -3
  134. package/src/verify/proofStep.js +0 -41
  135. package/src/verify/theorem.js +2 -3
  136. package/lib/tokens/combinatorStatement/bracketed.js +0 -17
  137. package/lib/unify/premiseWithProofStep.js +0 -41
  138. package/lib/unify/premisesWithProofSteps.js +0 -31
  139. package/lib/unify/qualifiedStatement.js +0 -136
  140. package/lib/unify/statementWithBracketedCombinator.js +0 -30
  141. package/lib/unify/statementWithCombinator.js +0 -29
  142. package/lib/unify/statementWithCombinators.js +0 -31
  143. package/lib/unify/statementWithMetaType.js +0 -24
  144. package/lib/verify/conclusion.js +0 -39
  145. package/lib/verify/derivation.js +0 -31
  146. package/lib/verify/label.js +0 -37
  147. package/lib/verify/labels.js +0 -28
  148. package/lib/verify/premise.js +0 -45
  149. package/lib/verify/premises.js +0 -28
  150. package/lib/verify/proof.js +0 -34
  151. package/lib/verify/rule.js +0 -56
  152. package/lib/verify/statement/qualified.js +0 -41
  153. package/lib/verify/statement/unqualified.js +0 -45
  154. package/lib/verify/statement.js +0 -219
  155. package/lib/verify/statementAsCombinator.js +0 -33
  156. package/lib/verify/statementGivenMetaType.js +0 -52
  157. package/lib/verify/subproof.js +0 -34
  158. package/lib/verify/supposition.js +0 -45
  159. package/lib/verify/suppositions.js +0 -28
  160. package/src/tokens/combinatorStatement/bracketed.js +0 -10
  161. package/src/unify/premiseWithProofStep.js +0 -54
  162. package/src/unify/premisesWithProofSteps.js +0 -23
  163. package/src/unify/qualifiedStatement.js +0 -208
  164. package/src/unify/statementWithBracketedCombinator.js +0 -22
  165. package/src/unify/statementWithCombinator.js +0 -22
  166. package/src/unify/statementWithCombinators.js +0 -23
  167. package/src/unify/statementWithMetaType.js +0 -14
  168. package/src/verify/conclusion.js +0 -40
  169. package/src/verify/derivation.js +0 -23
  170. package/src/verify/label.js +0 -34
  171. package/src/verify/labels.js +0 -17
  172. package/src/verify/premise.js +0 -49
  173. package/src/verify/premises.js +0 -17
  174. package/src/verify/proof.js +0 -31
  175. package/src/verify/rule.js +0 -71
  176. package/src/verify/statement/qualified.js +0 -40
  177. package/src/verify/statement/unqualified.js +0 -49
  178. package/src/verify/statement.js +0 -312
  179. package/src/verify/statementAsCombinator.js +0 -27
  180. package/src/verify/statementGivenMetaType.js +0 -52
  181. package/src/verify/subproof.js +0 -32
  182. package/src/verify/supposition.js +0 -49
  183. package/src/verify/suppositions.js +0 -17
@@ -1,49 +0,0 @@
1
- "use strict";
2
-
3
- import Premise from "../premise";
4
- import ProofStep from "../proofStep";
5
- import verifyStatement from "../verify/statement";
6
-
7
- import { nodeQuery } from "../utilities/query";
8
- import { assignAssignments } from "../utilities/assignments";
9
-
10
- const statementNodeQuery = nodeQuery("/unqualifiedStatement/statement!"),
11
- unqualifiedStatementNodeQuery = nodeQuery("/premise/unqualifiedStatement!");
12
-
13
- export default function verifyPremise(premiseNode, premises, localContext) {
14
- let premiseVerified;
15
-
16
- const premiseString = localContext.nodeAsString(premiseNode);
17
-
18
- localContext.trace(`Verifying the '${premiseString}' premise...`, premiseNode);
19
-
20
- const unqualifiedStatementNode = unqualifiedStatementNodeQuery(premiseNode);
21
-
22
- if (unqualifiedStatementNode !== null) {
23
- const stated = true,
24
- assignments = [],
25
- statementNode = statementNodeQuery(unqualifiedStatementNode),
26
- statementVerified = verifyStatement(statementNode, assignments, stated, localContext);
27
-
28
- if (statementVerified) {
29
- const assignmentsAssigned = assignAssignments(assignments, localContext);
30
-
31
- if (assignmentsAssigned) {
32
- const premise = Premise.fromStatementNode(statementNode),
33
- proofStep = ProofStep.fromStatementNode(statementNode);
34
-
35
- premises.push(premise);
36
-
37
- localContext.addProofStep(proofStep);
38
-
39
- premiseVerified = true;
40
- }
41
- }
42
- }
43
-
44
- if (premiseVerified) {
45
- localContext.debug(`...verified the '${premiseString}' premise.`, premiseNode);
46
- }
47
-
48
- return premiseVerified;
49
- }
@@ -1,17 +0,0 @@
1
- "use strict";
2
-
3
- import verifyPremise from "../verify/premise";
4
-
5
- export default function verifyPremises(premiseNodes, premises, localContext) {
6
- let premisesVerified;
7
-
8
- premisesVerified = premiseNodes.every((premiseNode) => {
9
- const premiseVerified = verifyPremise(premiseNode, premises, localContext);
10
-
11
- if (premiseVerified) {
12
- return true;
13
- }
14
- });
15
-
16
- return premisesVerified;
17
- }
@@ -1,31 +0,0 @@
1
- "use strict";
2
-
3
- import LocalContext from "../context/local";
4
- import verifyDerivation from "../verify/derivation";
5
-
6
- import { nodeQuery } from "../utilities/query";
7
-
8
- const derivationNodeQuery = nodeQuery("/proof/derivation!");
9
-
10
- export default function verifyProof(proofNode, statementNode, substitutions, localContext) {
11
- let proofVerified = false;
12
-
13
- localContext = LocalContext.fromLocalContext(localContext); ///
14
-
15
- const derivationNode = derivationNodeQuery(proofNode),
16
- derivationVerified = verifyDerivation(derivationNode, substitutions, localContext);
17
-
18
- if (derivationVerified) {
19
- const lastProofStep = localContext.getLastProofStep();
20
-
21
- if (lastProofStep !== null) {
22
- const lastProofStepStatementNode = lastProofStep.getStatementNode(),
23
- lastStatementNode = lastProofStepStatementNode, ///
24
- statementNodeMatchesLastStatementNode = statementNode.match(lastStatementNode);
25
-
26
- proofVerified = statementNodeMatchesLastStatementNode; ///
27
- }
28
- }
29
-
30
- return proofVerified;
31
- }
@@ -1,71 +0,0 @@
1
- "use strict";
2
-
3
- import Rule from "../rule";
4
- import verifyProof from "../verify/proof";
5
- import LocalContext from "../context/local";
6
- import verifyLabels from "../verify/labels";
7
- import verifyPremises from "../verify/premises";
8
- import verifyConclusion from "../verify/conclusion";
9
-
10
- import { first } from "../utilities/array";
11
- import { nodeQuery, nodesQuery } from "../utilities/query";
12
- import Substitutions from "../substitutions";
13
-
14
- const proofNodeQuery = nodeQuery("/rule/proof!"),
15
- labelNodesQuery = nodesQuery("/rule/label"),
16
- premisesNodeQuery = nodesQuery("/rule/premise"),
17
- conclusionNodeQuery = nodeQuery("/rule/conclusion!");
18
-
19
- export default function verifyRule(ruleNode, fileContext) {
20
- let ruleVerified = false;
21
-
22
- const labelNodes = labelNodesQuery(ruleNode),
23
- labelsString = fileContext.nodesAsString(labelNodes);
24
-
25
- fileContext.trace(`Verifying the '${labelsString}' rule...`, ruleNode);
26
-
27
- const labels = [],
28
- labelsVerified = verifyLabels(labelNodes, labels, fileContext);
29
-
30
- if (labelsVerified) {
31
- const localContext = LocalContext.fromFileContext(fileContext),
32
- premises = [],
33
- premiseNodes = premisesNodeQuery(ruleNode),
34
- premisesVerified = verifyPremises(premiseNodes, premises, localContext);
35
-
36
- if (premisesVerified) {
37
- const conclusions = [],
38
- conclusionNode = conclusionNodeQuery(ruleNode),
39
- conclusionVerified = verifyConclusion(conclusionNode, conclusions, localContext);
40
-
41
- if (conclusionVerified) {
42
- let proofVerified = true; ///
43
-
44
- const firstConclusion = first(conclusions),
45
- proofNode = proofNodeQuery(ruleNode),
46
- conclusion = firstConclusion; ///
47
-
48
- if (proofNode !== null) {
49
- const substitutions = Substitutions.fromNothing(),
50
- statementNode = conclusion.getStatementNode();
51
-
52
- proofVerified = verifyProof(proofNode, statementNode, substitutions, localContext);
53
- }
54
-
55
- if (proofVerified) {
56
- const rule = Rule.fromLabelsPremisesConclusionAndFileContext(labels, premises, conclusion, fileContext);
57
-
58
- fileContext.addRule(rule);
59
-
60
- ruleVerified = true;
61
- }
62
- }
63
- }
64
- }
65
-
66
- if (ruleVerified) {
67
- fileContext.debug(`...verified the '${labelsString}' rule.`, ruleNode);
68
- }
69
-
70
- return ruleVerified;
71
- }
@@ -1,40 +0,0 @@
1
- "use strict";
2
-
3
- import verifyStatement from "../../verify/statement";
4
- import unifyQualifiedStatement from "../../unify/qualifiedStatement";
5
-
6
- import { nodeQuery } from "../../utilities/query";
7
- import { assignAssignments } from "../../utilities/assignments";
8
-
9
- const statementNodeQuery = nodeQuery("/qualifiedStatement/statement!");
10
-
11
- export default function verifyQualifiedStatement(qualifiedStatementNode, substitutions, localContext) {
12
- let qualifiedStatementVerified = false;
13
-
14
- const qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
15
-
16
- localContext.trace(`Verifying the '${qualifiedStatementString}' qualified statement...`, qualifiedStatementNode);
17
-
18
- if (!qualifiedStatementVerified) {
19
- const stated = true,
20
- assignments = [],
21
- statementNode = statementNodeQuery(qualifiedStatementNode),
22
- statementVerified = verifyStatement(statementNode, assignments, stated, localContext);
23
-
24
- if (statementVerified) {
25
- const qualifiedStatementUnified = unifyQualifiedStatement(qualifiedStatementNode, substitutions, localContext);
26
-
27
- if (qualifiedStatementUnified) {
28
- const assignmentsAssigned = assignAssignments(assignments, localContext);
29
-
30
- qualifiedStatementVerified = assignmentsAssigned; ///
31
- }
32
- }
33
- }
34
-
35
- if (qualifiedStatementVerified) {
36
- localContext.debug(`...verified the '${qualifiedStatementString}' qualified statement.`, qualifiedStatementNode);
37
- }
38
-
39
- return qualifiedStatementVerified;
40
- }
@@ -1,49 +0,0 @@
1
- "use strict";
2
-
3
- import verifyStatement from "../../verify/statement";
4
- import unifyUnqualifiedStatement from "../../unify/unqualifiedStatement";
5
-
6
- import { nodeQuery } from "../../utilities/query";
7
- import { assignAssignments } from "../../utilities/assignments";
8
-
9
- const statementNodeQuery = nodeQuery("/unqualifiedStatement/statement!");
10
-
11
- export default function verifyUnqualifiedStatement(unqualifiedStatementNode, localContext) {
12
- let unqualifiedStatementVerified = false;
13
-
14
- const unqualifiedStatementString = localContext.nodeAsString(unqualifiedStatementNode);
15
-
16
- localContext.trace(`Verifying the '${unqualifiedStatementString}' unqualified statement...`, unqualifiedStatementNode);
17
-
18
- if (!unqualifiedStatementVerified) {
19
- const stated = false,
20
- assignments = [],
21
- statementNode = statementNodeQuery(unqualifiedStatementNode),
22
- statementVerified = verifyStatement(statementNode, assignments, stated, localContext);
23
-
24
- if (statementVerified) {
25
- const assignmentsAssigned = assignAssignments(assignments, localContext);
26
-
27
- unqualifiedStatementVerified = assignmentsAssigned; ///
28
- }
29
- }
30
-
31
- if (!unqualifiedStatementVerified) {
32
- const stated = true,
33
- assignments = null,
34
- statementNode = statementNodeQuery(unqualifiedStatementNode),
35
- statementVerified = verifyStatement(statementNode, assignments, stated, localContext);
36
-
37
- if (statementVerified) {
38
- const unqualifiedStatementUnified = unifyUnqualifiedStatement(unqualifiedStatementNode, localContext);
39
-
40
- unqualifiedStatementVerified = unqualifiedStatementUnified; ///
41
- }
42
- }
43
-
44
- if (unqualifiedStatementVerified) {
45
- localContext.debug(`...verified the '${unqualifiedStatementString}' unqualified statement.`, unqualifiedStatementNode);
46
- }
47
-
48
- return unqualifiedStatementVerified;
49
- }
@@ -1,312 +0,0 @@
1
- "use strict";
2
-
3
- import shim from "../shim";
4
- import verifyFrame from "../verify/frame";
5
- import verifyEquality from "../verify/equality";
6
- import verifyJudgement from "../verify/judgement";
7
- import verifyDeclaration from "../verify/declaration";
8
- import verifyTypeAssertion from "../verify/assertion/type";
9
- import metavariableUnifier from "../unifier/metavariable";
10
- import verifyDefinedAssertion from "../verify/assertion/defined";
11
- import verifySubproofAssertion from "../verify/assertion/subproof";
12
- import verifyContainedAssertion from "../verify/assertion/contained";
13
- import unifyStatementWithCombinators from "../unify/statementWithCombinators";
14
- import unifyStatementWithBracketedCombinator from "../unify/statementWithBracketedCombinator";
15
-
16
- import { nodeQuery } from "../utilities/query";
17
- import { metavariableNameFromMetavariableNode } from "../utilities/name";
18
-
19
- const frameNodeQuery = nodeQuery("/statement/frame!"),
20
- equalityNodeQuery = nodeQuery("/statement/equality!"),
21
- judgementNodeQuery = nodeQuery("/statement/judgement!"),
22
- declarationNodeQuery = nodeQuery("/statement/declaration!"),
23
- metavariableNodeQuery = nodeQuery("/statement/metavariable!"),
24
- typeAssertionNodeQuery = nodeQuery("/statement/typeAssertion!"),
25
- definedAssertionNodeQuery = nodeQuery("/statement/definedAssertion!"),
26
- subproofAssertionNodeQuery = nodeQuery("/statement/subproofAssertion!"),
27
- containedAssertionNodeQuery = nodeQuery("/statement/containedAssertion!");
28
-
29
- const unifyStatementFunctions = [
30
- unifyStatementWithBracketedCombinator,
31
- unifyStatementWithCombinators
32
- ],
33
- verifyStatementFunctions = [
34
- verifyStatementAsMetavariable,
35
- verifyStatementAsEquality,
36
- verifyStatementAsFrame,
37
- verifyStatementAsJudgement,
38
- verifyStatementAsDeclaration,
39
- verifyStatementAsTypeAssertion,
40
- verifyStatementAsDefinedAssertion,
41
- verifyStatementAsSubproofAssertion,
42
- verifyStatementAsContainedAssertion
43
- ];
44
-
45
- function verifyStatement(statementNode, assignments, stated, localContext) {
46
- let statementVerified = false;
47
-
48
- const statementString = localContext.nodeAsString(statementNode);
49
-
50
- localContext.trace(`Verifying the '${statementString}' statement...`, statementNode);
51
-
52
- if (!statementVerified) {
53
- const statementUnified = unifyStatementFunctions.some((unifyStatementFunction) => {
54
- const statementUnified = unifyStatementFunction(statementNode, assignments, stated, localContext);
55
-
56
- if (statementUnified) {
57
- return true;
58
- }
59
- });
60
-
61
- statementVerified = statementUnified; ///
62
- }
63
-
64
- if (!statementVerified) {
65
- statementVerified = verifyStatementFunctions.some((verifyStatementFunction) => {
66
- const statementVerified = verifyStatementFunction(statementNode, assignments, stated, localContext);
67
-
68
- if (statementVerified) {
69
- return true;
70
- }
71
- });
72
- }
73
-
74
- if (statementVerified) {
75
- localContext.debug(`...verified the '${statementString}' statement.`, statementNode);
76
- }
77
-
78
- return statementVerified;
79
- }
80
-
81
- Object.assign(shim, {
82
- verifyStatement
83
- });
84
-
85
- export default verifyStatement;
86
-
87
- function verifyStatementAsMetavariable(statementNode, assignments, stated, localContext) {
88
- let statementVerifiedAsMetavariable = false;
89
-
90
- const metavariableNode = metavariableNodeQuery(statementNode);
91
-
92
- if (metavariableNode !== null) {
93
- const statementString = localContext.nodeAsString(statementNode);
94
-
95
- localContext.trace(`Verifying the '${statementString}' statement as a metavariable...`, statementNode);
96
-
97
- const metavariableUnified = unifyMetavariable(metavariableNode, localContext);
98
-
99
- statementVerifiedAsMetavariable = metavariableUnified; ///
100
-
101
- if (statementVerifiedAsMetavariable) {
102
- localContext.debug(`...verified the '${statementString}' statement as a metavariable.`, statementNode);
103
- }
104
- }
105
-
106
- return statementVerifiedAsMetavariable;
107
- }
108
-
109
- function verifyStatementAsEquality(statementNode, assignments, stated, localContext) {
110
- let statementVerifiedAsEquality = false;
111
-
112
- const equalityNode = equalityNodeQuery(statementNode);
113
-
114
- if (equalityNode !== null) {
115
- const statementString = localContext.nodeAsString(statementNode);
116
-
117
- localContext.trace(`Verifying the '${statementString}' statement as an equality...`, statementNode);
118
-
119
- const equalityVerified = verifyEquality(equalityNode, assignments, stated, localContext);
120
-
121
- statementVerifiedAsEquality = equalityVerified; ///
122
-
123
- if (statementVerifiedAsEquality) {
124
- localContext.debug(`...verified the '${statementString}' statement as an equality.`, statementNode);
125
- }
126
- }
127
-
128
- return statementVerifiedAsEquality;
129
- }
130
-
131
- function verifyStatementAsFrame(statementNode, assignments, stated, localContext) {
132
- let statementVerifiedAsFrame = false;
133
-
134
- const frameNode = frameNodeQuery(statementNode);
135
-
136
- if (frameNode !== null) {
137
- const statementString = localContext.nodeAsString(statementNode);
138
-
139
- localContext.trace(`Verifying the '${statementString}' statement as a frame...`, statementNode);
140
-
141
- const frameVerified = verifyFrame(frameNode, assignments, stated, localContext);
142
-
143
- statementVerifiedAsFrame = frameVerified; ///
144
-
145
- if (statementVerifiedAsFrame) {
146
- localContext.debug(`...verified the '${statementString}' statement as a frame.`, statementNode);
147
- }
148
- }
149
-
150
- return statementVerifiedAsFrame;
151
- }
152
-
153
- function verifyStatementAsJudgement(statementNode, assignments, stated, localContext) {
154
- let statementVerifiedAsJudgement = false;
155
-
156
- const judgementNode = judgementNodeQuery(statementNode);
157
-
158
- if (judgementNode !== null) {
159
- const statementString = localContext.nodeAsString(statementNode);
160
-
161
- localContext.trace(`Verifying the '${statementString}' statement as a judgement...`, statementNode);
162
-
163
- const judgementVerified = verifyJudgement(judgementNode, assignments, stated, localContext);
164
-
165
- statementVerifiedAsJudgement = judgementVerified; ///
166
-
167
- if (statementVerifiedAsJudgement) {
168
- localContext.debug(`...verified the '${statementString}' statement as a judgement.`, statementNode);
169
- }
170
- }
171
-
172
- return statementVerifiedAsJudgement;
173
- }
174
-
175
- function verifyStatementAsDeclaration(statementNode, assignments, stated, localContext) {
176
- let statementVerifiedAsDeclaration = false;
177
-
178
- const declarationNode = declarationNodeQuery(statementNode);
179
-
180
- if (declarationNode !== null) {
181
- const statementString = localContext.nodeAsString(statementNode);
182
-
183
- localContext.trace(`Verifying the '${statementString}' statement as a declaration...`, statementNode);
184
-
185
- const declarationVerified = verifyDeclaration(declarationNode, assignments, stated, localContext);
186
-
187
- statementVerifiedAsDeclaration = declarationVerified; ///
188
-
189
- if (statementVerifiedAsDeclaration) {
190
- localContext.debug(`...verified the '${statementString}' statement as a declaration.`, statementNode);
191
- }
192
- }
193
-
194
- return statementVerifiedAsDeclaration;
195
- }
196
-
197
- function verifyStatementAsTypeAssertion(statementNode, assignments, stated, localContext) {
198
- let statementVerifiedAsTypeAssertion = false;
199
-
200
- const typeAssertionNode = typeAssertionNodeQuery(statementNode);
201
-
202
- if (typeAssertionNode !== null) {
203
- const statementString = localContext.nodeAsString(statementNode);
204
-
205
- localContext.trace(`Verifying the '${statementString}' statement as a type assertion...`, statementNode);
206
-
207
- const typeAssertionVerified = verifyTypeAssertion(typeAssertionNode, assignments, stated, localContext);
208
-
209
- statementVerifiedAsTypeAssertion = typeAssertionVerified; ///
210
-
211
- if (statementVerifiedAsTypeAssertion) {
212
- localContext.debug(`...verified the '${statementString}' statement as a type assertion.`, statementNode);
213
- }
214
- }
215
-
216
- return statementVerifiedAsTypeAssertion;
217
- }
218
-
219
- function verifyStatementAsDefinedAssertion(statementNode, assignments, stated, localContext) {
220
- let statementVerifiedAsDefinedAssertion = false;
221
-
222
- const definedAssertionNode = definedAssertionNodeQuery(statementNode);
223
-
224
- if (definedAssertionNode !== null) {
225
- const statementString = localContext.nodeAsString(statementNode);
226
-
227
- localContext.trace(`Verifying the '${statementString}' statement as a defined assertion...`, statementNode);
228
-
229
- const definedAssertionVerified = verifyDefinedAssertion(definedAssertionNode, assignments, stated, localContext);
230
-
231
- statementVerifiedAsDefinedAssertion = definedAssertionVerified; ///
232
-
233
- if (statementVerifiedAsDefinedAssertion) {
234
- localContext.debug(`...verified the '${statementString}' statement as a defined assertion.`, statementNode);
235
- }
236
- }
237
-
238
- return statementVerifiedAsDefinedAssertion;
239
- }
240
-
241
- function verifyStatementAsSubproofAssertion(statementNode, assignments, stated, localContext) {
242
- let statementVerifiedAsSubproofAssertion = false;
243
-
244
- const subproofAssertionNode = subproofAssertionNodeQuery(statementNode);
245
-
246
- if (subproofAssertionNode !== null) {
247
- const statementString = localContext.nodeAsString(statementNode);
248
-
249
- localContext.trace(`Verifying the '${statementString}' statement as a subproof assertion...`, statementNode);
250
-
251
- const subproofAssertionVerified = verifySubproofAssertion(subproofAssertionNode, assignments, stated, localContext);
252
-
253
- statementVerifiedAsSubproofAssertion = subproofAssertionVerified; ///
254
-
255
- if (statementVerifiedAsSubproofAssertion) {
256
- localContext.debug(`...verified the '${statementString}' statement as a subproof assertion.`, statementNode);
257
- }
258
- }
259
-
260
- return statementVerifiedAsSubproofAssertion;
261
- }
262
-
263
- function verifyStatementAsContainedAssertion(statementNode, assignments, stated, localContext) {
264
- let statementVerifiedAsContainedAssertion = false;
265
-
266
- const containedAssertionNode = containedAssertionNodeQuery(statementNode);
267
-
268
- if (containedAssertionNode !== null) {
269
- const statementString = localContext.nodeAsString(statementNode);
270
-
271
- localContext.trace(`Verifying the '${statementString}' statement as a contained assertion...`, statementNode);
272
-
273
- const containedAssertionVerified = verifyContainedAssertion(containedAssertionNode, assignments, stated, localContext);
274
-
275
- statementVerifiedAsContainedAssertion = containedAssertionVerified; ///
276
-
277
- if (statementVerifiedAsContainedAssertion) {
278
- localContext.debug(`...verified the '${statementString}' statement as a contained assertion.`, statementNode);
279
- }
280
- }
281
-
282
- return statementVerifiedAsContainedAssertion;
283
- }
284
-
285
- function unifyMetavariable(metavariableNode, localContext) {
286
- let metavariableUnified;
287
-
288
- const metavariableString = localContext.nodeAsString(metavariableNode);
289
-
290
- localContext.trace(`Unifying the '${metavariableString}' metavariable...`, metavariableNode);
291
-
292
- const metavariableName = metavariableNameFromMetavariableNode(metavariableNode),
293
- metavariable = localContext.findMetavariableByMetavariableName(metavariableName);
294
-
295
- if (metavariable !== null) {
296
- const metavariableNodeA = metavariableNode; ///
297
-
298
- metavariableNode = metavariable.getNode();
299
-
300
- const metavariableNodeB = metavariableNode; ///
301
-
302
- const unified = metavariableUnifier.unify(metavariableNodeA, metavariableNodeB, localContext);
303
-
304
- metavariableUnified = unified; ///
305
- }
306
-
307
- if (metavariableUnified) {
308
- localContext.debug(`...unified the '${metavariableString}' metavariable.`, metavariableNode);
309
- }
310
-
311
- return metavariableUnified;
312
- }
@@ -1,27 +0,0 @@
1
- "use strict";
2
-
3
- import Combinator from "../combinator";
4
- import statementAsCombinatorVerifier from "../verifier/statementAsCombinator";
5
-
6
- export default function verifyStatementAsCombinator(statementNode, fileContext) {
7
- let statementVerifiedAsCombinator;
8
-
9
- const statementString = fileContext.nodeAsString(statementNode);
10
-
11
- fileContext.trace(`Verifying the '${statementString}' statement as a combinator...`, statementNode);
12
-
13
- statementVerifiedAsCombinator = statementAsCombinatorVerifier.verifyStatement(statementNode, fileContext);
14
-
15
- if (statementVerifiedAsCombinator) {
16
- const tokens = fileContext.getTokens(),
17
- combinator = Combinator.fromStatementNodeAndTokens(statementNode, tokens);
18
-
19
- fileContext.addCombinator(combinator);
20
- }
21
-
22
- if (statementVerifiedAsCombinator) {
23
- fileContext.debug(`...verified the '${statementString}' statement as a combinator.`, statementNode);
24
- }
25
-
26
- return statementVerifiedAsCombinator;
27
- }
@@ -1,52 +0,0 @@
1
- "use strict";
2
-
3
- import shim from "../shim";
4
-
5
- import { nodeQuery } from "../utilities/query";
6
- import { metavariableNameFromMetavariableNode } from "../utilities/name";
7
- import { FRAME_META_TYPE_NAME, REFERENCE_META_TYPE_NAME, STATEMENT_META_TYPE_NAME } from "../metaTypeNames";
8
-
9
- const metavariableNodeQuery = nodeQuery("/statement/metavariable!");
10
-
11
- export default function verifyStatementGivenMetaType(statementNode, metaType, assignments, stated, localContext) {
12
- let statementVerifiedGivenMetaType;
13
-
14
- const metaTypeName = metaType.getName();
15
-
16
- switch (metaTypeName) {
17
- case FRAME_META_TYPE_NAME:
18
- case REFERENCE_META_TYPE_NAME: {
19
- debugger
20
-
21
- statementVerifiedGivenMetaType = false;
22
-
23
- const metavariableNode = metavariableNodeQuery(statementNode);
24
-
25
- if (metavariableNode !== null) {
26
- const metavariableName = metavariableNameFromMetavariableNode(metavariableNode),
27
- metavariable = localContext.findMetavariableByMetavariableName(metavariableName);
28
-
29
- if (metavariable !== null) {
30
- const metavariableMetaType = metavariable.getMetaType();
31
-
32
- if (metavariableMetaType === metaType) {
33
- statementVerifiedGivenMetaType = true;
34
- }
35
- }
36
- }
37
-
38
- break;
39
- }
40
-
41
- case STATEMENT_META_TYPE_NAME: {
42
- const { verifyStatement } = shim,
43
- statementVerified = verifyStatement(statementNode, assignments, stated, localContext)
44
-
45
- statementVerifiedGivenMetaType = statementVerified; ///
46
-
47
- break;
48
- }
49
- }
50
-
51
- return statementVerifiedGivenMetaType;
52
- }
@@ -1,32 +0,0 @@
1
- "use strict";
2
-
3
- import LocalContext from "../context/local";
4
- import verifySuppositions from "../verify/suppositions";
5
- import verifySubDerivation from "../verify/subDerivation";
6
-
7
- import { nodeQuery, nodesQuery } from "../utilities/query";
8
-
9
- const suppositionNodesQuery = nodesQuery("/subproof/supposition"),
10
- subDerivationNodeQuery = nodeQuery("/subproof/subDerivation");
11
-
12
- export default function verifySubproof(subproofNode, substitutions, localContext) {
13
- let subproofVerified = false;
14
-
15
- localContext = LocalContext.fromLocalContext(localContext); ///
16
-
17
- const suppositions = [],
18
- suppositionNodes = suppositionNodesQuery(subproofNode),
19
- suppositionsVerified = verifySuppositions(suppositionNodes, suppositions, localContext);
20
-
21
- if (suppositionsVerified) {
22
- const subDerivationNode = subDerivationNodeQuery(subproofNode),
23
- subDerivationVerified = verifySubDerivation(subDerivationNode, substitutions, localContext);
24
-
25
- if (subDerivationVerified) {
26
- subproofVerified = true;
27
- }
28
- }
29
-
30
- return subproofVerified;
31
- }
32
-