occam-verify-cli 0.0.960 → 0.0.962

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 (67) hide show
  1. package/lib/context/local.js +3 -9
  2. package/lib/proofStep.js +8 -5
  3. package/lib/substitution/termForVariable.js +24 -25
  4. package/lib/unifier/statementWithCombinator.js +6 -6
  5. package/lib/unify/statementAtainstStatement.js +16 -16
  6. package/lib/unify/statementWithBracketedCombinator.js +30 -0
  7. package/lib/unify/statementWithCombinators.js +40 -0
  8. package/lib/unify/statementWithMetaType.js +6 -30
  9. package/lib/unify/termWithBracketedConstructor.js +39 -0
  10. package/lib/unify/termWithConstructors.js +61 -0
  11. package/lib/unify/termWithType.js +4 -12
  12. package/lib/utilities/assignments.js +9 -12
  13. package/lib/verifier/intrinsicLevel.js +140 -0
  14. package/lib/verifier/metaLevel.js +11 -20
  15. package/lib/verifier/statementAsCombinator.js +9 -9
  16. package/lib/verifier/termAsConstructor.js +5 -5
  17. package/lib/verify/assertion/contained.js +2 -3
  18. package/lib/verify/assertion/defined.js +2 -4
  19. package/lib/verify/assertion/subproof.js +20 -18
  20. package/lib/verify/assertion/type.js +1 -2
  21. package/lib/verify/declaration.js +27 -9
  22. package/lib/verify/frame.js +25 -6
  23. package/lib/verify/premise.js +3 -3
  24. package/lib/verify/proofStep.js +23 -30
  25. package/lib/verify/statement/qualified.js +93 -137
  26. package/lib/verify/statement/unqualified.js +18 -104
  27. package/lib/verify/statement.js +95 -76
  28. package/lib/verify/statementAsCombinator.js +2 -2
  29. package/lib/verify/statementGivenMetaType.js +41 -0
  30. package/lib/verify/supposition.js +3 -3
  31. package/lib/verify/term.js +39 -65
  32. package/lib/verify/termAsConstructor.js +2 -2
  33. package/lib/verify/termGivenType.js +34 -0
  34. package/package.json +1 -1
  35. package/src/context/local.js +4 -13
  36. package/src/proofStep.js +10 -5
  37. package/src/substitution/termForVariable.js +33 -30
  38. package/src/unifier/statementWithCombinator.js +5 -5
  39. package/src/unify/statementAtainstStatement.js +13 -13
  40. package/src/unify/statementWithBracketedCombinator.js +22 -0
  41. package/src/unify/statementWithCombinators.js +38 -0
  42. package/src/unify/statementWithMetaType.js +6 -42
  43. package/src/unify/termWithBracketedConstructor.js +39 -0
  44. package/src/unify/termWithConstructors.js +63 -0
  45. package/src/unify/termWithType.js +4 -20
  46. package/src/utilities/assignments.js +6 -13
  47. package/src/verifier/intrinsicLevel.js +42 -0
  48. package/src/verifier/metaLevel.js +13 -21
  49. package/src/verifier/statementAsCombinator.js +11 -7
  50. package/src/verifier/termAsConstructor.js +4 -3
  51. package/src/verify/assertion/contained.js +1 -3
  52. package/src/verify/assertion/defined.js +1 -4
  53. package/src/verify/assertion/subproof.js +22 -18
  54. package/src/verify/assertion/type.js +0 -1
  55. package/src/verify/declaration.js +34 -11
  56. package/src/verify/frame.js +32 -5
  57. package/src/verify/premise.js +3 -3
  58. package/src/verify/proofStep.js +26 -38
  59. package/src/verify/statement/qualified.js +104 -184
  60. package/src/verify/statement/unqualified.js +19 -149
  61. package/src/verify/statement.js +126 -72
  62. package/src/verify/statementAsCombinator.js +1 -1
  63. package/src/verify/statementGivenMetaType.js +37 -0
  64. package/src/verify/supposition.js +3 -3
  65. package/src/verify/term.js +44 -93
  66. package/src/verify/termAsConstructor.js +1 -1
  67. package/src/verify/termGivenType.js +32 -0
@@ -5,7 +5,7 @@ import ProofStep from "../proofStep";
5
5
  import verifyUnqualifiedStatement from "../verify/statement/unqualified";
6
6
 
7
7
  import { nodeQuery } from "../utilities/query";
8
- import { assignAssignment } from "../utilities/assignments";
8
+ import { assignAssignments } from "../utilities/assignments";
9
9
 
10
10
  const statementNodeQuery = nodeQuery("/unqualifiedStatement/statement!"),
11
11
  unqualifiedStatementNodeQuery = nodeQuery("/premise/unqualifiedStatement!");
@@ -25,9 +25,9 @@ export default function verifyPremise(premiseNode, premises, localContext) {
25
25
  unqualifiedStatementVerified = verifyUnqualifiedStatement(unqualifiedStatementNode, assignments, derived, localContext);
26
26
 
27
27
  if (unqualifiedStatementVerified) {
28
- const assignmentAssigned = assignAssignment(assignments, localContext);
28
+ const assignmentsAssigned = assignAssignments(assignments, localContext);
29
29
 
30
- if (assignmentAssigned) {
30
+ if (assignmentsAssigned) {
31
31
  const statementNode = statementNodeQuery(unqualifiedStatementNode),
32
32
  metaproofStep = ProofStep.fromStatementNode(statementNode),
33
33
  premise = Premise.fromStatementNode(statementNode);
@@ -7,7 +7,7 @@ import verifyQualifiedStatement from "../verify/statement/qualified";
7
7
  import verifyUnqualifiedStatement from "../verify/statement/unqualified";
8
8
 
9
9
  import { nodeQuery } from "../utilities/query";
10
- import { assignAssignment } from "../utilities/assignments";
10
+ import { assignAssignments } from "../utilities/assignments";
11
11
 
12
12
  const subproofNodeQuery = nodeQuery("/proofStep|lastProofStep/subproof!"),
13
13
  statementNodeQuery = nodeQuery("/qualifiedStatement|unqualifiedStatement/statement!"),
@@ -21,63 +21,51 @@ export default function verifyProofStep(proofStepNode, substitutions, localConte
21
21
  qualifiedStatementNode = qualifiedStatementNodeQuery(proofStepNode),
22
22
  unqualifiedStatementNode = unqualifiedStatementNodeQuery(proofStepNode);
23
23
 
24
- if (false) {
25
- ///
26
- } else if (subproofNode !== null) {
24
+ let proofStep = null;
25
+
26
+ if (subproofNode !== null) {
27
27
  let subproofVerified;
28
28
 
29
29
  subproofVerified = verifySubproof(subproofNode, substitutions, localContext);
30
30
 
31
31
  if (subproofVerified) {
32
- const proofStep = ProofStep.fromSubproofNode(subproofNode);
33
-
34
- localContext.addProofStep(proofStep);
35
-
36
- proofStepVerified = true;
32
+ proofStep = ProofStep.fromSubproofNode(subproofNode);
37
33
  }
38
- } else if (qualifiedStatementNode !== null) {
39
- let qualifiedStatementVerified;
40
-
41
- const assignments = [];
34
+ } else {
35
+ const derived = true,
36
+ assignments = [];
42
37
 
43
- qualifiedStatementVerified = verifyQualifiedStatement(qualifiedStatementNode, substitutions, assignments, localContext);
38
+ let statementVerified = false;
44
39
 
45
- if (qualifiedStatementVerified) {
46
- const assignmentAssigned = assignAssignment(assignments, localContext);
40
+ if (qualifiedStatementNode !== null) {
41
+ const qualifiedStatementVerified = verifyQualifiedStatement(qualifiedStatementNode, substitutions, assignments, derived, localContext);
47
42
 
48
- qualifiedStatementVerified = assignmentAssigned; ///
49
- }
43
+ const statementNode = statementNodeQuery(qualifiedStatementNode);
50
44
 
51
- if (qualifiedStatementVerified) {
52
- const statementNode = statementNodeQuery(qualifiedStatementNode),
53
- proofStep = ProofStep.fromStatementNode(statementNode);
45
+ proofStep = ProofStep.fromStatementNode(statementNode);
54
46
 
55
- localContext.addProofStep(proofStep);
56
-
57
- proofStepVerified = true;
47
+ statementVerified = qualifiedStatementVerified; ///
58
48
  }
59
- } else if (unqualifiedStatementNode !== null) {
60
- let unqualifiedStatementVerified;
61
49
 
62
- const derived = true,
63
- assignments = [];
50
+ if (unqualifiedStatementNode !== null) {
51
+ const unqualifiedStatementVerified = verifyUnqualifiedStatement(unqualifiedStatementNode, assignments, derived, localContext);
64
52
 
65
- unqualifiedStatementVerified = verifyUnqualifiedStatement(unqualifiedStatementNode, assignments, derived, localContext);
53
+ const statementNode = statementNodeQuery(unqualifiedStatementNode);
66
54
 
67
- if (unqualifiedStatementVerified) {
68
- const assignmentAssigned = assignAssignment(assignments, localContext);
55
+ proofStep = ProofStep.fromStatementNode(statementNode);
69
56
 
70
- unqualifiedStatementVerified = assignmentAssigned; ///
57
+ statementVerified = unqualifiedStatementVerified; ///
71
58
  }
72
59
 
73
- if (unqualifiedStatementVerified) {
74
- const statementNode = statementNodeQuery(unqualifiedStatementNode),
75
- proofStep = ProofStep.fromStatementNode(statementNode);
60
+ if (statementVerified) {
61
+ assignAssignments(assignments, localContext);
62
+ }
63
+ }
76
64
 
77
- localContext.addProofStep(proofStep);
65
+ if (proofStep !== null) {
66
+ localContext.addProofStep(proofStep);
78
67
 
79
- proofStepVerified = true;
80
- }
68
+ proofStepVerified = true;
81
69
  }
82
70
 
83
71
  return proofStepVerified;
@@ -1,48 +1,39 @@
1
1
  "use strict";
2
2
 
3
- import verifyEquality from "../equality";
4
- import verifyJudgement from "../judgement";
5
- import verifyTypeAssertion from "../assertion/type";
6
- import unifyMetavariableWithStatement from "../../unify/metavariableWithStatement";
3
+ import verifyStatement from "../../verify/statement";
7
4
 
8
5
  import { nodeQuery } from "../../utilities/query";
9
6
 
10
7
  const statementNodeQuery = nodeQuery("/qualifiedStatement/statement!"),
11
- equalityNodeQuery = nodeQuery("/statement/equality!"),
12
- judgementNodeQuery = nodeQuery("/statement/judgement!"),
13
- metavariableNodeQuery = nodeQuery("/qualifiedStatement/reference/metavariable!"),
14
- typeAssertionNodeQuery = nodeQuery("/statement/typeAssertion!");
15
-
16
- export default function verifyQualifiedStatement(qualifiedStatementNode, substitutions, assignments, localContext) {
8
+ metavariableNodeQuery = nodeQuery("/qualifiedStatement/reference/metavariable!");
9
+
10
+ const unifyDerivedQualifiedStatementFunctions = [
11
+ unifyDerivedQualifiedStatementAWithRule,
12
+ unifyDerivedQualifiedStatementAWithAxiom,
13
+ unifyDerivedQualifiedStatementAWithLemma,
14
+ unifyDerivedQualifiedStatementAWithTheorem,
15
+ unifyDerivedQualifiedStatementAWithConjecture,
16
+ unifyDerivedQualifiedStatementAWithReference
17
+ ];
18
+
19
+ export default function verifyQualifiedStatement(qualifiedStatementNode, substitutions, assignments, derived, localContext) {
17
20
  let qualifiedStatementVerified;
18
21
 
19
22
  const qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
20
23
 
21
24
  localContext.trace(`Verifying the '${qualifiedStatementString}' qualified statement...`, qualifiedStatementNode);
22
25
 
23
- const unifyQualifiedStatementFunctions = [
24
- unifyQualifiedStatementAWithRule,
25
- unifyQualifiedStatementAWithAxiom,
26
- unifyQualifiedStatementAWithLemma,
27
- unifyQualifiedStatementAWithTheorem,
28
- unifyQualifiedStatementAWithConjecture,
29
- unifyQualifiedStatementAWithReference
30
- ];
26
+ const statementNode = statementNodeQuery(qualifiedStatementNode),
27
+ statementVerified = verifyStatement(statementNode, assignments, derived, localContext);
31
28
 
32
- const qualifiedStatementUnified = unifyQualifiedStatementFunctions.some((unifyQualifiedStatementFunction) => { ///
33
- const qualifiedStatementUnified = unifyQualifiedStatementFunction(qualifiedStatementNode, substitutions, localContext);
29
+ if (statementVerified) {
30
+ if (derived) {
31
+ const derivedQualifiedStatementVerified = verifyDerivedQualifiedStatement(qualifiedStatementNode, substitutions, localContext);
34
32
 
35
- if (qualifiedStatementUnified) {
36
- return true;
33
+ qualifiedStatementVerified = derivedQualifiedStatementVerified; ///
34
+ } else {
35
+ qualifiedStatementVerified = true;
37
36
  }
38
- });
39
-
40
- if (qualifiedStatementUnified) {
41
- const derived = false,
42
- statementNode = statementNodeQuery(qualifiedStatementNode),
43
- statedStatementVerified = verifyStatedStatement(statementNode, assignments, derived, localContext);
44
-
45
- qualifiedStatementVerified = statedStatementVerified; ///
46
37
  }
47
38
 
48
39
  if (qualifiedStatementVerified) {
@@ -52,8 +43,30 @@ export default function verifyQualifiedStatement(qualifiedStatementNode, substit
52
43
  return qualifiedStatementVerified;
53
44
  }
54
45
 
55
- function unifyQualifiedStatementAWithRule(qualifiedStatementNode, substitutions, localContext) {
56
- let qualifiedStatementUnifiedWithRule = false;
46
+ function verifyDerivedQualifiedStatement(qualifiedStatementNode, substitutions, localContext) {
47
+ let derivedQualifiedStatementVerified;
48
+
49
+ const qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
50
+
51
+ localContext.trace(`Verifying the '${qualifiedStatementString}' derived qualified statement...`, qualifiedStatementNode);
52
+
53
+ const derivedQualifiedStatementUnified = unifyDerivedQualifiedStatementFunctions.some((unifyDerivedQualifiedStatementFunction) => {
54
+ const derivedQualifiedStatementUnified = unifyDerivedQualifiedStatementFunction(qualifiedStatementNode, substitutions, localContext);
55
+
56
+ return derivedQualifiedStatementUnified;
57
+ });
58
+
59
+ derivedQualifiedStatementVerified = derivedQualifiedStatementUnified; ///
60
+
61
+ if (derivedQualifiedStatementVerified) {
62
+ localContext.debug(`...verified the '${qualifiedStatementString}' derived qualified statement.`, qualifiedStatementNode);
63
+ }
64
+
65
+ return derivedQualifiedStatementVerified;
66
+ }
67
+
68
+ function unifyDerivedQualifiedStatementAWithRule(qualifiedStatementNode, substitutions, localContext) {
69
+ let derivedQualifiedStatementUnifiedWithRule = false;
57
70
 
58
71
  const metavariableNode = metavariableNodeQuery(qualifiedStatementNode),
59
72
  rule = localContext.findRuleByMetavariableNode(metavariableNode);
@@ -63,22 +76,22 @@ function unifyQualifiedStatementAWithRule(qualifiedStatementNode, substitutions,
63
76
  metavariableString = localContext.nodeAsString(metavariableNode),
64
77
  qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
65
78
 
66
- localContext.trace(`Unifying the '${qualifiedStatementString}' qualified statement with the '${metavariableString}' rule...`, qualifiedStatementNode);
79
+ localContext.trace(`Unifying the '${qualifiedStatementString}' derived qualified statement with the '${metavariableString}' rule...`, qualifiedStatementNode);
67
80
 
68
- const ruleMatchesStatement = rule.unifyStatement(statementNode, localContext);
81
+ const statementUnified = rule.unifyStatement(statementNode, localContext);
69
82
 
70
- qualifiedStatementUnifiedWithRule = ruleMatchesStatement; ///
83
+ derivedQualifiedStatementUnifiedWithRule = statementUnified; ///
71
84
 
72
- if (qualifiedStatementUnifiedWithRule) {
73
- localContext.debug(`...unified the '${qualifiedStatementString}' qualified statement with the '${metavariableString}' rule.`, qualifiedStatementNode);
85
+ if (derivedQualifiedStatementUnifiedWithRule) {
86
+ localContext.debug(`...unified the '${qualifiedStatementString}' derived qualified statement with the '${metavariableString}' rule.`, qualifiedStatementNode);
74
87
  }
75
88
  }
76
89
 
77
- return qualifiedStatementUnifiedWithRule;
90
+ return derivedQualifiedStatementUnifiedWithRule;
78
91
  }
79
92
 
80
- function unifyQualifiedStatementAWithAxiom(qualifiedStatementNode, substitutions, localContext) {
81
- let qualifiedStatementUnifiedWithAxiom = false;
93
+ function unifyDerivedQualifiedStatementAWithAxiom(qualifiedStatementNode, substitutions, localContext) {
94
+ let derivedQualifiedStatementUnifiedWithAxiom = false;
82
95
 
83
96
  const metavariableNode = metavariableNodeQuery(qualifiedStatementNode),
84
97
  axiom = localContext.findAxiomByMetavariableNode(metavariableNode);
@@ -88,22 +101,22 @@ function unifyQualifiedStatementAWithAxiom(qualifiedStatementNode, substitutions
88
101
  metavariableString = localContext.nodeAsString(metavariableNode),
89
102
  qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
90
103
 
91
- localContext.trace(`Unifying the '${qualifiedStatementString}' qualified statement with the '${metavariableString}' axiom...`, qualifiedStatementNode);
104
+ localContext.trace(`Unifying the '${qualifiedStatementString}' derived qualified statement with the '${metavariableString}' axiom...`, qualifiedStatementNode);
92
105
 
93
- const axiomMatchesStatement = axiom.unifyStatement(statementNode, localContext);
106
+ const statementUnified = axiom.unifyStatement(statementNode, localContext);
94
107
 
95
- qualifiedStatementUnifiedWithAxiom = axiomMatchesStatement; ///
108
+ derivedQualifiedStatementUnifiedWithAxiom = statementUnified; ///
96
109
 
97
- if (qualifiedStatementUnifiedWithAxiom) {
98
- localContext.debug(`...unified the '${qualifiedStatementString}' qualified statement with the '${metavariableString}' axiom.`, qualifiedStatementNode);
110
+ if (derivedQualifiedStatementUnifiedWithAxiom) {
111
+ localContext.debug(`...unified the '${qualifiedStatementString}' derived qualified statement with the '${metavariableString}' axiom.`, qualifiedStatementNode);
99
112
  }
100
113
  }
101
114
 
102
- return qualifiedStatementUnifiedWithAxiom;
115
+ return derivedQualifiedStatementUnifiedWithAxiom;
103
116
  }
104
117
 
105
- function unifyQualifiedStatementAWithLemma(qualifiedStatementNode, substitutions, localContext) {
106
- let qualifiedStatementUnifiedWithLemma = false;
118
+ function unifyDerivedQualifiedStatementAWithLemma(qualifiedStatementNode, substitutions, localContext) {
119
+ let derivedQualifiedStatementUnifiedWithLemma = false;
107
120
 
108
121
  const metavariableNode = metavariableNodeQuery(qualifiedStatementNode),
109
122
  lemma = localContext.findLemmaByMetavariableNode(metavariableNode);
@@ -113,22 +126,22 @@ function unifyQualifiedStatementAWithLemma(qualifiedStatementNode, substitutions
113
126
  metavariableString = localContext.nodeAsString(metavariableNode),
114
127
  qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
115
128
 
116
- localContext.trace(`Unifying the '${qualifiedStatementString}' qualified statement with the '${metavariableString}' lemma...`, qualifiedStatementNode);
129
+ localContext.trace(`Unifying the '${qualifiedStatementString}' derived qualified statement with the '${metavariableString}' lemma...`, qualifiedStatementNode);
117
130
 
118
- const lemmaMatchesStatement = lemma.unifyStatement(statementNode, localContext);
131
+ const statementUnified = lemma.unifyStatement(statementNode, localContext);
119
132
 
120
- qualifiedStatementUnifiedWithLemma = lemmaMatchesStatement; ///
133
+ derivedQualifiedStatementUnifiedWithLemma = statementUnified; ///
121
134
 
122
- if (qualifiedStatementUnifiedWithLemma) {
123
- localContext.debug(`...unified the '${qualifiedStatementString}' qualified statement with the '${metavariableString}' lemma.`, qualifiedStatementNode);
135
+ if (derivedQualifiedStatementUnifiedWithLemma) {
136
+ localContext.debug(`...unified the '${qualifiedStatementString}' derived qualified statement with the '${metavariableString}' lemma.`, qualifiedStatementNode);
124
137
  }
125
138
  }
126
139
 
127
- return qualifiedStatementUnifiedWithLemma;
140
+ return derivedQualifiedStatementUnifiedWithLemma;
128
141
  }
129
142
 
130
- function unifyQualifiedStatementAWithTheorem(qualifiedStatementNode, substitutions, localContext) {
131
- let qualifiedStatementUnifiedWithTheorem = false;
143
+ function unifyDerivedQualifiedStatementAWithTheorem(qualifiedStatementNode, substitutions, localContext) {
144
+ let derivedQualifiedStatementUnifiedWithTheorem = false;
132
145
 
133
146
  const metavariableNode = metavariableNodeQuery(qualifiedStatementNode),
134
147
  theorem = localContext.findTheoremByMetavariableNode(metavariableNode);
@@ -138,22 +151,22 @@ function unifyQualifiedStatementAWithTheorem(qualifiedStatementNode, substitutio
138
151
  metavariableString = localContext.nodeAsString(metavariableNode),
139
152
  qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
140
153
 
141
- localContext.trace(`Unifying the '${qualifiedStatementString}' qualified statement with the '${metavariableString}' theorem...`, qualifiedStatementNode);
154
+ localContext.trace(`Unifying the '${qualifiedStatementString}' derived qualified statement with the '${metavariableString}' theorem...`, qualifiedStatementNode);
142
155
 
143
- const theoremMatchesStatement = theorem.unifyStatement(statementNode, localContext);
156
+ const statementUnified = theorem.unifyStatement(statementNode, localContext);
144
157
 
145
- qualifiedStatementUnifiedWithTheorem = theoremMatchesStatement; ///
158
+ derivedQualifiedStatementUnifiedWithTheorem = statementUnified; ///
146
159
 
147
- if (qualifiedStatementUnifiedWithTheorem) {
148
- localContext.debug(`...unified the '${qualifiedStatementString}' qualified statement with the '${metavariableString}' theorem.`, qualifiedStatementNode);
160
+ if (derivedQualifiedStatementUnifiedWithTheorem) {
161
+ localContext.debug(`...unified the '${qualifiedStatementString}' derived qualified statement with the '${metavariableString}' theorem.`, qualifiedStatementNode);
149
162
  }
150
163
  }
151
164
 
152
- return qualifiedStatementUnifiedWithTheorem;
165
+ return derivedQualifiedStatementUnifiedWithTheorem;
153
166
  }
154
167
 
155
- function unifyQualifiedStatementAWithConjecture(qualifiedStatementNode, substitutions, localContext) {
156
- let qualifiedStatementUnifiedWithConjecture = false;
168
+ function unifyDerivedQualifiedStatementAWithConjecture(qualifiedStatementNode, substitutions, localContext) {
169
+ let derivedQualifiedStatementUnifiedWithConjecture = false;
157
170
 
158
171
  const metavariableNode = metavariableNodeQuery(qualifiedStatementNode),
159
172
  conjecture = localContext.findConjectureByMetavariableNode(metavariableNode);
@@ -163,145 +176,52 @@ function unifyQualifiedStatementAWithConjecture(qualifiedStatementNode, substitu
163
176
  metavariableString = localContext.nodeAsString(metavariableNode),
164
177
  qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
165
178
 
166
- localContext.trace(`Unifying the '${qualifiedStatementString}' qualified statement with the '${metavariableString}' conjecture...`, qualifiedStatementNode);
179
+ localContext.trace(`Unifying the '${qualifiedStatementString}' derived qualified statement with the '${metavariableString}' conjecture...`, qualifiedStatementNode);
167
180
 
168
- const conjectureMatchesStatement = conjecture.unifyStatement(statementNode, localContext);
181
+ const statementUnified = conjecture.unifyStatement(statementNode, localContext);
169
182
 
170
- qualifiedStatementUnifiedWithConjecture = conjectureMatchesStatement; ///
183
+ derivedQualifiedStatementUnifiedWithConjecture = statementUnified; ///
171
184
 
172
- if (qualifiedStatementUnifiedWithConjecture) {
173
- localContext.debug(`...unified the '${qualifiedStatementString}' qualified statement with the '${metavariableString}' conjecture.`, qualifiedStatementNode);
185
+ if (derivedQualifiedStatementUnifiedWithConjecture) {
186
+ localContext.debug(`...unified the '${qualifiedStatementString}' derived qualified statement with the '${metavariableString}' conjecture.`, qualifiedStatementNode);
174
187
  }
175
188
  }
176
189
 
177
- return qualifiedStatementUnifiedWithConjecture;
190
+ return derivedQualifiedStatementUnifiedWithConjecture;
178
191
  }
179
192
 
180
- function unifyQualifiedStatementAWithReference(qualifiedStatementNode, substitutions, localContext) {
181
- let qualifiedStatementUnifiedWithReference = false;
193
+ function unifyDerivedQualifiedStatementAWithReference(qualifiedStatementNode, substitutions, localContext) {
194
+ let derivedQualifiedStatementUnifiedWithReference = false;
182
195
 
183
196
  const metavariableNode = metavariableNodeQuery(qualifiedStatementNode),
184
197
  metavariableString = localContext.nodeAsString(metavariableNode),
185
198
  metavariablePresent = localContext.isMetavariablePresentByMetavariableNode(metavariableNode),
186
199
  qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
187
200
 
188
- localContext.trace(`Unifying the '${qualifiedStatementString}' qualified statement with the '${metavariableString}' reference...`, qualifiedStatementNode);
201
+ localContext.trace(`Unifying the '${qualifiedStatementString}' derived qualified statement with the '${metavariableString}' reference...`, qualifiedStatementNode);
189
202
 
190
203
  if (metavariablePresent) {
191
- const statementNode = statementNodeQuery(qualifiedStatementNode),
192
- localContextA = null,
193
- localContextB = localContext, ///
194
- statementNodeB = statementNode, ///
195
- substitutionNodeA = null,
196
- metavariableNodeA = metavariableNode, ///
197
- metavariableUnifiedWithStatement = unifyMetavariableWithStatement(metavariableNodeA, statementNodeB, substitutionNodeA, substitutions, localContextA, localContextB, () => {
198
- const verifiedAhead = true;
199
-
200
- return verifiedAhead;
201
- });
202
-
203
- qualifiedStatementUnifiedWithReference = metavariableUnifiedWithStatement; ///
204
- }
205
-
206
- if (qualifiedStatementUnifiedWithReference) {
207
- localContext.debug(`...unified the '${qualifiedStatementString}' qualified statement with the '${metavariableString}' reference.`, qualifiedStatementNode);
208
- }
209
-
210
- return qualifiedStatementUnifiedWithReference;
211
- }
212
-
213
- function verifyStatedStatement(statementNode, assignments, derived, localContext) {
214
- let statedStatementVerified;
215
-
216
- const statementString = localContext.nodeAsString(statementNode);
217
-
218
- localContext.trace(`Verifying the '${statementString}' stated statement...`, statementNode);
219
-
220
- const verifyStatedStatementFunctions = [
221
- verifyStatedStatementAsEquality,
222
- verifyStatedStatementAsJudgement,
223
- verifyStatedStatementAsTypeAssertion
224
- ];
225
-
226
- verifyStatedStatementFunctions.every((verifyStatedStatementFunction) => { ///
227
- const statedStatementVerified = verifyStatedStatementFunction(statementNode, assignments, derived, localContext);
228
-
229
- if (statedStatementVerified) {
230
- return true;
231
- }
232
- });
233
-
234
- statedStatementVerified = true; ///
235
204
 
236
- if (statedStatementVerified) {
237
- localContext.debug(`...verified the '${statementString}' stated statement.`, statementNode);
205
+ debugger
206
+
207
+ // const statementNode = statementNodeQuery(qualifiedStatementNode),
208
+ // localContextA = null,
209
+ // localContextB = localContext, ///
210
+ // statementNodeB = statementNode, ///
211
+ // substitutionNodeA = null,
212
+ // metavariableNodeA = metavariableNode, ///
213
+ // metavariableUnifiedWithStatement = unifyMetavariableWithStatement(metavariableNodeA, statementNodeB, substitutionNodeA, substitutions, localContextA, localContextB, () => {
214
+ // const verifiedAhead = true;
215
+ //
216
+ // return verifiedAhead;
217
+ // });
218
+ //
219
+ // derivedQualifiedStatementUnifiedWithReference = metavariableUnifiedWithStatement; ///
238
220
  }
239
221
 
240
- return statedStatementVerified;
241
- }
242
-
243
- function verifyStatedStatementAsEquality(statementNode, assignments, derived, localContext) {
244
- let statedStatementVerifiedAsEquality = true; ///
245
-
246
- const equalityNode = equalityNodeQuery(statementNode);
247
-
248
- if (equalityNode !== null) {
249
- const statementString = localContext.nodeAsString(statementNode);
250
-
251
- localContext.trace(`Verifying the '${statementString}' stated statement as an equality...`, statementNode);
252
-
253
- const equalityVerified = verifyEquality(equalityNode, assignments, derived, localContext);
254
-
255
- statedStatementVerifiedAsEquality = equalityVerified; ///
256
-
257
- if (statedStatementVerifiedAsEquality) {
258
- localContext.debug(`...verified the '${statementString}' stated statement as an equality.`, statementNode);
259
- }
260
- }
261
-
262
- return statedStatementVerifiedAsEquality;
263
- }
264
-
265
- function verifyStatedStatementAsJudgement(statementNode, assignments, derived, localContext) {
266
- let statedStatementVerifiedAsJudgement = true;
267
-
268
- const judgementNode = judgementNodeQuery(statementNode);
269
-
270
- if (judgementNode !== null) {
271
- const statementString = localContext.nodeAsString(statementNode);
272
-
273
- localContext.trace(`Verifying the '${statementString}' stated statement as a judgement...`, statementNode);
274
-
275
- const judgementVerified = verifyJudgement(judgementNode, assignments, derived, localContext);
276
-
277
- statedStatementVerifiedAsJudgement = judgementVerified; ///
278
-
279
- if (statedStatementVerifiedAsJudgement) {
280
- localContext.debug(`...verified the '${statementString}' stated statement as a judgement.`, statementNode);
281
- }
282
- }
283
-
284
- return statedStatementVerifiedAsJudgement;
285
- }
286
-
287
- function verifyStatedStatementAsTypeAssertion(statementNode, assignments, derived, localContext) {
288
- let statementVerifiedAsTypeAssertion = true; ///
289
-
290
- const typeAssertionNode = typeAssertionNodeQuery(statementNode);
291
-
292
- if (typeAssertionNode !== null) {
293
- const statementString = localContext.nodeAsString(statementNode);
294
-
295
- localContext.trace(`Verifying the '${statementString}' stated statement as a type assertion...`, statementNode);
296
-
297
- const typeAssertionVerified = verifyTypeAssertion(typeAssertionNode, assignments, derived, localContext);
298
-
299
- statementVerifiedAsTypeAssertion = typeAssertionVerified; ///
300
-
301
- if (statementVerifiedAsTypeAssertion) {
302
- localContext.debug(`...verified the '${statementString}' stated statement as a type assertion.`, statementNode);
303
- }
222
+ if (derivedQualifiedStatementUnifiedWithReference) {
223
+ localContext.debug(`...unified the '${qualifiedStatementString}' derived qualified statement with the '${metavariableString}' reference.`, qualifiedStatementNode);
304
224
  }
305
225
 
306
- return statementVerifiedAsTypeAssertion;
226
+ return derivedQualifiedStatementUnifiedWithReference;
307
227
  }