occam-verify-cli 0.0.967 → 0.0.971

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 (146) hide show
  1. package/bin/action/verify.js +6 -22
  2. package/bin/main.js +27 -0
  3. package/lib/constants.js +5 -1
  4. package/lib/context/file.js +48 -53
  5. package/lib/context/local.js +45 -39
  6. package/lib/context/release.js +3 -3
  7. package/lib/declaration.js +9 -7
  8. package/lib/equivalence.js +23 -21
  9. package/lib/judgement.js +3 -3
  10. package/lib/label.js +3 -3
  11. package/lib/log.js +3 -3
  12. package/lib/metaType.js +7 -7
  13. package/lib/metavariable.js +12 -43
  14. package/lib/node/term/bracketed.js +16 -0
  15. package/lib/proofStep.js +3 -29
  16. package/lib/releaseContext/initialise.js +11 -17
  17. package/lib/resolve/substitutions.js +99 -0
  18. package/lib/rule.js +10 -6
  19. package/lib/substitution/statementForMetavariable.js +93 -98
  20. package/lib/substitution/termForVariable.js +45 -54
  21. package/lib/substitution.js +51 -9
  22. package/lib/substitutions.js +165 -12
  23. package/lib/term.js +8 -1
  24. package/lib/topLevelAssertion.js +10 -6
  25. package/lib/type.js +5 -5
  26. package/lib/unifier/metaLevel.js +10 -3
  27. package/lib/unifier/statementWithCombinator.js +6 -6
  28. package/lib/unifier.js +2 -2
  29. package/lib/unify/metavariableWithStatement.js +13 -48
  30. package/lib/unify/metavariableWithStatementGivenSubstitution.js +39 -0
  31. package/lib/unify/premiseWithProofStep.js +3 -3
  32. package/lib/unify/statement/qualified.js +117 -0
  33. package/lib/unify/statement/unqualified.js +25 -0
  34. package/lib/unify/statementWithBracketedCombinator.js +3 -3
  35. package/lib/unify/statementWithCombinators.js +5 -5
  36. package/lib/unify/statementWithMetaType.js +3 -3
  37. package/lib/unify/statementWithSttaemetnGivenEquivalences.js +45 -0
  38. package/lib/unify/suppositionWithProffStep.js +3 -3
  39. package/lib/unify/variableWithTerm.js +11 -26
  40. package/lib/utilities/array.js +5 -14
  41. package/lib/utilities/assertion.js +24 -0
  42. package/lib/utilities/brackets.js +60 -0
  43. package/lib/utilities/message.js +52 -0
  44. package/lib/utilities/name.js +7 -7
  45. package/lib/utilities/node.js +10 -17
  46. package/lib/utilities/string.js +1 -7
  47. package/lib/utilities/subproof.js +19 -0
  48. package/lib/utilities/unify.js +30 -11
  49. package/lib/variable.js +8 -8
  50. package/lib/verifier/metaLevel.js +6 -6
  51. package/lib/verifier/statementAsCombinator.js +2 -2
  52. package/lib/verify/assertion/contained.js +62 -34
  53. package/lib/verify/assertion/defined.js +53 -48
  54. package/lib/verify/assertion/subproof.js +9 -9
  55. package/lib/verify/assertion/type.js +11 -11
  56. package/lib/verify/conclusion.js +6 -6
  57. package/lib/verify/consequent.js +6 -6
  58. package/lib/verify/declaration/metavariable.js +2 -2
  59. package/lib/verify/declaration.js +34 -20
  60. package/lib/verify/equality.js +13 -13
  61. package/lib/verify/frame.js +38 -24
  62. package/lib/verify/judgement.js +13 -13
  63. package/lib/verify/metavariable.js +2 -2
  64. package/lib/verify/premise.js +5 -5
  65. package/lib/verify/proofStep.js +15 -24
  66. package/lib/verify/statement/qualified.js +15 -124
  67. package/lib/verify/statement/unqualified.js +23 -24
  68. package/lib/verify/statement.js +24 -24
  69. package/lib/verify/statementGivenMetaType.js +18 -9
  70. package/lib/verify/supposition.js +5 -5
  71. package/package.json +2 -2
  72. package/src/constants.js +1 -0
  73. package/src/context/file.js +49 -55
  74. package/src/context/local.js +34 -31
  75. package/src/context/release.js +2 -2
  76. package/src/declaration.js +12 -10
  77. package/src/equivalence.js +27 -26
  78. package/src/judgement.js +2 -2
  79. package/src/label.js +2 -2
  80. package/src/log.js +1 -1
  81. package/src/metaType.js +7 -7
  82. package/src/metavariable.js +10 -49
  83. package/src/node/term/bracketed.js +9 -0
  84. package/src/proofStep.js +3 -48
  85. package/src/releaseContext/initialise.js +13 -24
  86. package/src/resolve/substitutions.js +134 -0
  87. package/src/rule.js +10 -5
  88. package/src/substitution/statementForMetavariable.js +99 -85
  89. package/src/substitution/termForVariable.js +50 -65
  90. package/src/substitution.js +46 -8
  91. package/src/substitutions.js +176 -10
  92. package/src/term.js +6 -0
  93. package/src/topLevelAssertion.js +10 -5
  94. package/src/type.js +4 -4
  95. package/src/unifier/metaLevel.js +11 -3
  96. package/src/unifier/statementWithCombinator.js +5 -5
  97. package/src/unifier.js +1 -1
  98. package/src/unify/metavariableWithStatement.js +17 -71
  99. package/src/unify/metavariableWithStatementGivenSubstitution.js +39 -0
  100. package/src/unify/premiseWithProofStep.js +1 -1
  101. package/src/unify/statement/qualified.js +183 -0
  102. package/src/unify/statement/unqualified.js +24 -0
  103. package/src/unify/statementWithBracketedCombinator.js +2 -2
  104. package/src/unify/statementWithCombinators.js +4 -4
  105. package/src/unify/statementWithMetaType.js +2 -2
  106. package/src/unify/statementWithSttaemetnGivenEquivalences.js +51 -0
  107. package/src/unify/suppositionWithProffStep.js +1 -1
  108. package/src/unify/variableWithTerm.js +14 -35
  109. package/src/utilities/array.js +1 -16
  110. package/src/utilities/assertion.js +19 -0
  111. package/src/utilities/brackets.js +56 -0
  112. package/src/utilities/name.js +8 -8
  113. package/src/utilities/node.js +14 -17
  114. package/src/utilities/string.js +2 -2
  115. package/src/utilities/subproof.js +18 -0
  116. package/src/utilities/unify.js +24 -12
  117. package/src/variable.js +11 -11
  118. package/src/verifier/metaLevel.js +5 -5
  119. package/src/verifier/statementAsCombinator.js +2 -2
  120. package/src/verify/assertion/contained.js +80 -40
  121. package/src/verify/assertion/defined.js +66 -57
  122. package/src/verify/assertion/subproof.js +8 -8
  123. package/src/verify/assertion/type.js +11 -11
  124. package/src/verify/conclusion.js +8 -8
  125. package/src/verify/consequent.js +8 -8
  126. package/src/verify/declaration/metavariable.js +4 -3
  127. package/src/verify/declaration.js +46 -23
  128. package/src/verify/equality.js +13 -13
  129. package/src/verify/frame.js +48 -28
  130. package/src/verify/judgement.js +13 -13
  131. package/src/verify/metavariable.js +3 -3
  132. package/src/verify/premise.js +6 -6
  133. package/src/verify/proofStep.js +14 -31
  134. package/src/verify/statement/qualified.js +18 -199
  135. package/src/verify/statement/unqualified.js +25 -31
  136. package/src/verify/statement.js +23 -23
  137. package/src/verify/statementGivenMetaType.js +23 -12
  138. package/src/verify/supposition.js +6 -6
  139. package/lib/unify/statementAtainstStatement.js +0 -49
  140. package/lib/utilities/lineIndex.js +0 -52
  141. package/lib/utilities/match.js +0 -59
  142. package/lib/utilities/verify.js +0 -19
  143. package/src/unify/statementAtainstStatement.js +0 -56
  144. package/src/utilities/match.js +0 -53
  145. package/src/utilities/verify.js +0 -14
  146. /package/src/utilities/{lineIndex.js → message.js} +0 -0
@@ -11,20 +11,20 @@ import { nodeQuery } from "../utilities/query";
11
11
  const frameNodeQuery = nodeQuery("/judgement/frame!"),
12
12
  metavariableNodeQuery = nodeQuery("/judgement/metavariable!");
13
13
 
14
- export default function verifyJudgement(judgementNode, assignments, derived, localContext) {
14
+ const verifyJudgementFunctions = [
15
+ verifyDerivedJudgement,
16
+ verifyStatedJudgement
17
+ ];
18
+
19
+ export default function verifyJudgement(judgementNode, assignments, stated, localContext) {
15
20
  let judgementVerified;
16
21
 
17
22
  const judgementString = localContext.nodeAsString(judgementNode);
18
23
 
19
24
  localContext.trace(`Verifying the '${judgementString}' judgement...`, judgementNode);
20
25
 
21
- const verifyJudgementFunctions = [
22
- verifyDerivedJudgement,
23
- verifyStatedJudgement
24
- ];
25
-
26
26
  judgementVerified = verifyJudgementFunctions.some((verifyJudgementFunction) => {
27
- const judgementVerified = verifyJudgementFunction(judgementNode, assignments, derived, localContext);
27
+ const judgementVerified = verifyJudgementFunction(judgementNode, assignments, stated, localContext);
28
28
 
29
29
  if (judgementVerified) {
30
30
  return true;
@@ -38,10 +38,10 @@ export default function verifyJudgement(judgementNode, assignments, derived, loc
38
38
  return judgementVerified;
39
39
  }
40
40
 
41
- function verifyDerivedJudgement(judgementNode, assignments, derived, localContext) {
41
+ function verifyDerivedJudgement(judgementNode, assignments, stated, localContext) {
42
42
  let derivedJudgementVerified = false;
43
43
 
44
- if (derived) {
44
+ if (!stated) {
45
45
  const judgementString = localContext.nodeAsString(judgementNode);
46
46
 
47
47
  localContext.trace(`Verifying the '${judgementString}' derived judgement...`, judgementNode);
@@ -55,7 +55,7 @@ function verifyDerivedJudgement(judgementNode, assignments, derived, localContex
55
55
  if (judgement !== null) {
56
56
  const frames = [],
57
57
  frameNode = frameNodeQuery(judgementNode),
58
- frameVerified = verifyFrame(frameNode, frames, assignments, derived, localContext);
58
+ frameVerified = verifyFrame(frameNode, frames, assignments, stated, localContext);
59
59
 
60
60
  if (frameVerified) {
61
61
  const firstFrame = first(frames),
@@ -100,10 +100,10 @@ function verifyDerivedJudgement(judgementNode, assignments, derived, localContex
100
100
  return derivedJudgementVerified;
101
101
  }
102
102
 
103
- function verifyStatedJudgement(judgementNode, assignments, derived, localContext) {
103
+ function verifyStatedJudgement(judgementNode, assignments, stated, localContext) {
104
104
  let statedJudgementVerified = false;
105
105
 
106
- if (!derived) {
106
+ if (stated) {
107
107
  const judgementString = localContext.nodeAsString(judgementNode);
108
108
 
109
109
  localContext.trace(`Verifying the '${judgementString}' stated judgement...`, judgementNode);
@@ -114,7 +114,7 @@ function verifyStatedJudgement(judgementNode, assignments, derived, localContext
114
114
  if (metavariableVerified) {
115
115
  const frames = [],
116
116
  frameNode = frameNodeQuery(judgementNode),
117
- frameVerified = verifyFrame(frameNode, frames, assignments, derived, localContext);
117
+ frameVerified = verifyFrame(frameNode, frames, stated, localContext);
118
118
 
119
119
  if (frameVerified) {
120
120
  const firstFrame = first(frames),
@@ -2,7 +2,7 @@
2
2
 
3
3
  import { nodeQuery } from "../utilities/query";
4
4
  import { unifyTermWithTermType } from "../metavariable";
5
- import { nameFromMetavariableNode } from "../utilities/name";
5
+ import { metavariableNameFromMetavariableNode } from "../utilities/name";
6
6
 
7
7
  const termNodeQuery = nodeQuery("/metavariable/argument/term"),
8
8
  typeNodeQuery = nodeQuery("/metavariable/argument/type");
@@ -14,8 +14,8 @@ export default function verifyMetavariable(metavariableNode, localContext) {
14
14
 
15
15
  localContext.trace(`Verifying the '${metavariableString}' metavariable...`, metavariableNode);
16
16
 
17
- const name = nameFromMetavariableNode(metavariableNode),
18
- metavariable = localContext.findMetavariableByName(name);
17
+ const metavariableName = metavariableNameFromMetavariableNode(metavariableNode),
18
+ metavariable = localContext.findMetavariableByMetavariableName(metavariableName);
19
19
 
20
20
  if (metavariable === null) {
21
21
  localContext.debug(`The metavariable '${metavariableString}' is not present.`, metavariableNode);
@@ -2,7 +2,7 @@
2
2
 
3
3
  import Premise from "../premise";
4
4
  import ProofStep from "../proofStep";
5
- import verifyUnqualifiedStatement from "../verify/statement/unqualified";
5
+ import verifyStatement from "../verify/statement";
6
6
 
7
7
  import { nodeQuery } from "../utilities/query";
8
8
  import { assignAssignments } from "../utilities/assignments";
@@ -20,16 +20,16 @@ export default function verifyPremise(premiseNode, premises, localContext) {
20
20
  const unqualifiedStatementNode = unqualifiedStatementNodeQuery(premiseNode);
21
21
 
22
22
  if (unqualifiedStatementNode !== null) {
23
- const derived = false,
23
+ const stated = true,
24
24
  assignments = [],
25
- unqualifiedStatementVerified = verifyUnqualifiedStatement(unqualifiedStatementNode, assignments, derived, localContext);
25
+ statementNode = statementNodeQuery(unqualifiedStatementNode),
26
+ statementVerified = verifyStatement(statementNode, assignments, stated, localContext);
26
27
 
27
- if (unqualifiedStatementVerified) {
28
+ if (statementVerified) {
28
29
  const assignmentsAssigned = assignAssignments(assignments, localContext);
29
30
 
30
31
  if (assignmentsAssigned) {
31
- const statementNode = statementNodeQuery(unqualifiedStatementNode),
32
- metaproofStep = ProofStep.fromStatementNode(statementNode),
32
+ const metaproofStep = ProofStep.fromStatementNode(statementNode),
33
33
  premise = Premise.fromStatementNode(statementNode);
34
34
 
35
35
  premises.push(premise);
@@ -7,7 +7,6 @@ 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 { assignAssignments } from "../utilities/assignments";
11
10
 
12
11
  const subproofNodeQuery = nodeQuery("/proofStep|lastProofStep/subproof!"),
13
12
  statementNodeQuery = nodeQuery("/qualifiedStatement|unqualifiedStatement/statement!"),
@@ -23,45 +22,29 @@ export default function verifyProofStep(proofStepNode, substitutions, localConte
23
22
 
24
23
  let proofStep = null;
25
24
 
26
- if (subproofNode !== null) {
27
- let subproofVerified;
28
-
29
- subproofVerified = verifySubproof(subproofNode, substitutions, localContext);
25
+ if (false) {
26
+ ///
27
+ } else if (subproofNode !== null) {
28
+ const subproofVerified = verifySubproof(subproofNode, substitutions, localContext);
30
29
 
31
30
  if (subproofVerified) {
32
31
  proofStep = ProofStep.fromSubproofNode(subproofNode);
33
32
  }
34
- } else {
35
- if (qualifiedStatementNode !== null) {
36
- const derived = false, ///
37
- assignments = [],
38
- qualifiedStatementVerified = verifyQualifiedStatement(qualifiedStatementNode, substitutions, assignments, derived, localContext);
39
-
40
- if (qualifiedStatementVerified) {
41
- const assignmentsAssigned = assignAssignments(assignments, localContext);
33
+ } else if (qualifiedStatementNode !== null) {
34
+ const qualifiedStatementVerified = verifyQualifiedStatement(qualifiedStatementNode, substitutions, localContext);
42
35
 
43
- if (assignmentsAssigned) {
44
- const statementNode = statementNodeQuery(qualifiedStatementNode);
36
+ if (qualifiedStatementVerified) {
37
+ const statementNode = statementNodeQuery(qualifiedStatementNode);
45
38
 
46
- proofStep = ProofStep.fromStatementNode(statementNode);
47
- }
48
- }
39
+ proofStep = ProofStep.fromStatementNode(statementNode);
49
40
  }
41
+ } else if (unqualifiedStatementNode !== null) {
42
+ const unqualifiedStatementVerified = verifyUnqualifiedStatement(unqualifiedStatementNode, localContext);
50
43
 
51
- if (unqualifiedStatementNode !== null) {
52
- const derived = true,
53
- assignments = [],
54
- unqualifiedStatementVerified = verifyUnqualifiedStatement(unqualifiedStatementNode, assignments, derived, localContext);
55
-
56
- if (unqualifiedStatementVerified) {
57
- const assignmentsAssigned = assignAssignments(assignments, localContext);
58
-
59
- if (assignmentsAssigned) {
60
- const statementNode = statementNodeQuery(unqualifiedStatementNode);
44
+ if (unqualifiedStatementVerified) {
45
+ const statementNode = statementNodeQuery(unqualifiedStatementNode);
61
46
 
62
- proofStep = ProofStep.fromStatementNode(statementNode);
63
- }
64
- }
47
+ proofStep = ProofStep.fromStatementNode(statementNode);
65
48
  }
66
49
  }
67
50
 
@@ -1,35 +1,35 @@
1
1
  "use strict";
2
2
 
3
3
  import verifyStatement from "../../verify/statement";
4
+ import unifyQualifiedStatement from "../../unify/statement/qualified";
4
5
 
5
6
  import { nodeQuery } from "../../utilities/query";
7
+ import { assignAssignments } from "../../utilities/assignments";
6
8
 
7
- const statementNodeQuery = nodeQuery("/qualifiedStatement/statement!"),
8
- metavariableNodeQuery = nodeQuery("/qualifiedStatement/reference/metavariable!");
9
+ const statementNodeQuery = nodeQuery("/qualifiedStatement/statement!");
9
10
 
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) {
20
- let qualifiedStatementVerified;
11
+ export default function verifyQualifiedStatement(qualifiedStatementNode, substitutions, localContext) {
12
+ let qualifiedStatementVerified = false;
21
13
 
22
14
  const qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
23
15
 
24
16
  localContext.trace(`Verifying the '${qualifiedStatementString}' qualified statement...`, qualifiedStatementNode);
25
17
 
26
- const statementNode = statementNodeQuery(qualifiedStatementNode),
27
- statementVerified = verifyStatement(statementNode, assignments, derived, localContext);
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);
28
26
 
29
- if (statementVerified) {
30
- const derivedQualifiedStatementUnified = unifyDerivedQualifiedStatement(qualifiedStatementNode, substitutions, localContext);
27
+ if (qualifiedStatementUnified) {
28
+ const assignmentsAssigned = assignAssignments(assignments, localContext);
31
29
 
32
- qualifiedStatementVerified = derivedQualifiedStatementUnified; ///
30
+ qualifiedStatementVerified = assignmentsAssigned; ///
31
+ }
32
+ }
33
33
  }
34
34
 
35
35
  if (qualifiedStatementVerified) {
@@ -38,184 +38,3 @@ export default function verifyQualifiedStatement(qualifiedStatementNode, substit
38
38
 
39
39
  return qualifiedStatementVerified;
40
40
  }
41
-
42
- function unifyDerivedQualifiedStatement(qualifiedStatementNode, substitutions, localContext) {
43
- let derivedQualifiedStatementUnified;
44
-
45
- const qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
46
-
47
- localContext.trace(`Unifying the '${qualifiedStatementString}' derived qualified statement...`, qualifiedStatementNode);
48
-
49
- derivedQualifiedStatementUnified = unifyDerivedQualifiedStatementFunctions.some((unifyDerivedQualifiedStatementFunction) => {
50
- const derivedQualifiedStatementUnified = unifyDerivedQualifiedStatementFunction(qualifiedStatementNode, substitutions, localContext);
51
-
52
- return derivedQualifiedStatementUnified;
53
- });
54
-
55
- if (derivedQualifiedStatementUnified) {
56
- localContext.debug(`...unified the '${qualifiedStatementString}' derived qualified statement.`, qualifiedStatementNode);
57
- }
58
-
59
- return derivedQualifiedStatementUnified;
60
- }
61
-
62
- function unifyDerivedQualifiedStatementAWithRule(qualifiedStatementNode, substitutions, localContext) {
63
- let derivedQualifiedStatementUnifiedWithRule = false;
64
-
65
- const metavariableNode = metavariableNodeQuery(qualifiedStatementNode),
66
- rule = localContext.findRuleByMetavariableNode(metavariableNode);
67
-
68
- if (rule !== null) {
69
- const statementNode = statementNodeQuery(qualifiedStatementNode),
70
- metavariableString = localContext.nodeAsString(metavariableNode),
71
- qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
72
-
73
- localContext.trace(`Unifying the '${qualifiedStatementString}' derived qualified statement with the '${metavariableString}' rule...`, qualifiedStatementNode);
74
-
75
- const statementUnified = rule.unifyStatement(statementNode, localContext);
76
-
77
- derivedQualifiedStatementUnifiedWithRule = statementUnified; ///
78
-
79
- if (derivedQualifiedStatementUnifiedWithRule) {
80
- localContext.debug(`...unified the '${qualifiedStatementString}' derived qualified statement with the '${metavariableString}' rule.`, qualifiedStatementNode);
81
- }
82
- }
83
-
84
- return derivedQualifiedStatementUnifiedWithRule;
85
- }
86
-
87
- function unifyDerivedQualifiedStatementAWithAxiom(qualifiedStatementNode, substitutions, localContext) {
88
- let derivedQualifiedStatementUnifiedWithAxiom = false;
89
-
90
- const metavariableNode = metavariableNodeQuery(qualifiedStatementNode),
91
- axiom = localContext.findAxiomByMetavariableNode(metavariableNode);
92
-
93
- if (axiom !== null) {
94
- const statementNode = statementNodeQuery(qualifiedStatementNode),
95
- metavariableString = localContext.nodeAsString(metavariableNode),
96
- qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
97
-
98
- localContext.trace(`Unifying the '${qualifiedStatementString}' derived qualified statement with the '${metavariableString}' axiom...`, qualifiedStatementNode);
99
-
100
- const statementUnified = axiom.unifyStatement(statementNode, localContext);
101
-
102
- derivedQualifiedStatementUnifiedWithAxiom = statementUnified; ///
103
-
104
- if (derivedQualifiedStatementUnifiedWithAxiom) {
105
- localContext.debug(`...unified the '${qualifiedStatementString}' derived qualified statement with the '${metavariableString}' axiom.`, qualifiedStatementNode);
106
- }
107
- }
108
-
109
- return derivedQualifiedStatementUnifiedWithAxiom;
110
- }
111
-
112
- function unifyDerivedQualifiedStatementAWithLemma(qualifiedStatementNode, substitutions, localContext) {
113
- let derivedQualifiedStatementUnifiedWithLemma = false;
114
-
115
- const metavariableNode = metavariableNodeQuery(qualifiedStatementNode),
116
- lemma = localContext.findLemmaByMetavariableNode(metavariableNode);
117
-
118
- if (lemma !== null) {
119
- const statementNode = statementNodeQuery(qualifiedStatementNode),
120
- metavariableString = localContext.nodeAsString(metavariableNode),
121
- qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
122
-
123
- localContext.trace(`Unifying the '${qualifiedStatementString}' derived qualified statement with the '${metavariableString}' lemma...`, qualifiedStatementNode);
124
-
125
- const statementUnified = lemma.unifyStatement(statementNode, localContext);
126
-
127
- derivedQualifiedStatementUnifiedWithLemma = statementUnified; ///
128
-
129
- if (derivedQualifiedStatementUnifiedWithLemma) {
130
- localContext.debug(`...unified the '${qualifiedStatementString}' derived qualified statement with the '${metavariableString}' lemma.`, qualifiedStatementNode);
131
- }
132
- }
133
-
134
- return derivedQualifiedStatementUnifiedWithLemma;
135
- }
136
-
137
- function unifyDerivedQualifiedStatementAWithTheorem(qualifiedStatementNode, substitutions, localContext) {
138
- let derivedQualifiedStatementUnifiedWithTheorem = false;
139
-
140
- const metavariableNode = metavariableNodeQuery(qualifiedStatementNode),
141
- theorem = localContext.findTheoremByMetavariableNode(metavariableNode);
142
-
143
- if (theorem !== null) {
144
- const statementNode = statementNodeQuery(qualifiedStatementNode),
145
- metavariableString = localContext.nodeAsString(metavariableNode),
146
- qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
147
-
148
- localContext.trace(`Unifying the '${qualifiedStatementString}' derived qualified statement with the '${metavariableString}' theorem...`, qualifiedStatementNode);
149
-
150
- const statementUnified = theorem.unifyStatement(statementNode, localContext);
151
-
152
- derivedQualifiedStatementUnifiedWithTheorem = statementUnified; ///
153
-
154
- if (derivedQualifiedStatementUnifiedWithTheorem) {
155
- localContext.debug(`...unified the '${qualifiedStatementString}' derived qualified statement with the '${metavariableString}' theorem.`, qualifiedStatementNode);
156
- }
157
- }
158
-
159
- return derivedQualifiedStatementUnifiedWithTheorem;
160
- }
161
-
162
- function unifyDerivedQualifiedStatementAWithConjecture(qualifiedStatementNode, substitutions, localContext) {
163
- let derivedQualifiedStatementUnifiedWithConjecture = false;
164
-
165
- const metavariableNode = metavariableNodeQuery(qualifiedStatementNode),
166
- conjecture = localContext.findConjectureByMetavariableNode(metavariableNode);
167
-
168
- if (conjecture !== null) {
169
- const statementNode = statementNodeQuery(qualifiedStatementNode),
170
- metavariableString = localContext.nodeAsString(metavariableNode),
171
- qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
172
-
173
- localContext.trace(`Unifying the '${qualifiedStatementString}' derived qualified statement with the '${metavariableString}' conjecture...`, qualifiedStatementNode);
174
-
175
- const statementUnified = conjecture.unifyStatement(statementNode, localContext);
176
-
177
- derivedQualifiedStatementUnifiedWithConjecture = statementUnified; ///
178
-
179
- if (derivedQualifiedStatementUnifiedWithConjecture) {
180
- localContext.debug(`...unified the '${qualifiedStatementString}' derived qualified statement with the '${metavariableString}' conjecture.`, qualifiedStatementNode);
181
- }
182
- }
183
-
184
- return derivedQualifiedStatementUnifiedWithConjecture;
185
- }
186
-
187
- function unifyDerivedQualifiedStatementAWithReference(qualifiedStatementNode, substitutions, localContext) {
188
- let derivedQualifiedStatementUnifiedWithReference = false;
189
-
190
- const metavariableNode = metavariableNodeQuery(qualifiedStatementNode),
191
- metavariableString = localContext.nodeAsString(metavariableNode),
192
- metavariablePresent = localContext.isMetavariablePresentByMetavariableNode(metavariableNode),
193
- qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
194
-
195
- localContext.trace(`Unifying the '${qualifiedStatementString}' derived qualified statement with the '${metavariableString}' reference...`, qualifiedStatementNode);
196
-
197
- if (metavariablePresent) {
198
-
199
- debugger
200
-
201
- // const statementNode = statementNodeQuery(qualifiedStatementNode),
202
- // localContextA = null,
203
- // localContextB = localContext, ///
204
- // statementNodeB = statementNode, ///
205
- // substitutionNodeA = null,
206
- // metavariableNodeA = metavariableNode, ///
207
- // metavariableUnifiedWithStatement = unifyMetavariableWithStatement(metavariableNodeA, statementNodeB, substitutionNodeA, substitutions, localContextA, localContextB, () => {
208
- // const verifiedAhead = true;
209
- //
210
- // return verifiedAhead;
211
- // });
212
- //
213
- // derivedQualifiedStatementUnifiedWithReference = metavariableUnifiedWithStatement; ///
214
- }
215
-
216
- if (derivedQualifiedStatementUnifiedWithReference) {
217
- localContext.debug(`...unified the '${qualifiedStatementString}' derived qualified statement with the '${metavariableString}' reference.`, qualifiedStatementNode);
218
- }
219
-
220
- return derivedQualifiedStatementUnifiedWithReference;
221
- }
@@ -1,35 +1,48 @@
1
1
  "use strict";
2
2
 
3
3
  import verifyStatement from "../../verify/statement";
4
+ import unifyUnqualifiedStatement from "../../unify/statement/unqualified";
4
5
 
5
6
  import { nodeQuery } from "../../utilities/query";
7
+ import { assignAssignments } from "../../utilities/assignments";
6
8
  import { verifyStatementTrivially } from "../../verify/statement";
7
9
 
8
10
  const statementNodeQuery = nodeQuery("/unqualifiedStatement/statement!");
9
11
 
10
- export default function verifyUnqualifiedStatement(unqualifiedStatementNode, assignments, derived, localContext) {
11
- let unqualifiedStatementVerified;
12
+ export default function verifyUnqualifiedStatement(unqualifiedStatementNode, localContext) {
13
+ let unqualifiedStatementVerified = false;
12
14
 
13
15
  const unqualifiedStatementString = localContext.nodeAsString(unqualifiedStatementNode);
14
16
 
15
17
  localContext.trace(`Verifying the '${unqualifiedStatementString}' unqualified statement...`, unqualifiedStatementNode);
16
18
 
17
- const statementNode = statementNodeQuery(unqualifiedStatementNode),
18
- statementVerified = verifyStatement(statementNode, assignments, derived, localContext);
19
+ if (!unqualifiedStatementVerified) {
20
+ const stated = true,
21
+ assignments = [],
22
+ statementNode = statementNodeQuery(unqualifiedStatementNode),
23
+ statementVerified = verifyStatement(statementNode, assignments, stated, localContext);
19
24
 
20
- if (statementVerified) {
21
- if (derived) {
25
+ if (statementVerified) {
26
+ const unqualifiedStatementUnified = unifyUnqualifiedStatement(unqualifiedStatementNode, localContext);
27
+
28
+ unqualifiedStatementVerified = unqualifiedStatementUnified; ///
29
+ }
30
+ }
31
+
32
+ if (!unqualifiedStatementVerified) {
33
+ const stated = false,
34
+ assignments = [],
35
+ statementNode = statementNodeQuery(unqualifiedStatementNode),
36
+ statementVerified = verifyStatement(statementNode, assignments, stated, localContext);
37
+
38
+ if (statementVerified) {
22
39
  const statementVerifiedTrivially = verifyStatementTrivially(statementNode, localContext);
23
40
 
24
41
  if (statementVerifiedTrivially) {
25
- unqualifiedStatementVerified = true;
26
- } else {
27
- const derivedUnqualifiedStatementUnified = unifyDerivedUnqualifiedStatement(unqualifiedStatementNode, localContext);
42
+ const assignmentsAssigned = assignAssignments(assignments, localContext);
28
43
 
29
- unqualifiedStatementVerified = derivedUnqualifiedStatementUnified; ///
44
+ unqualifiedStatementVerified = assignmentsAssigned; ///
30
45
  }
31
- } else {
32
- unqualifiedStatementVerified = true;
33
46
  }
34
47
  }
35
48
 
@@ -39,22 +52,3 @@ export default function verifyUnqualifiedStatement(unqualifiedStatementNode, ass
39
52
 
40
53
  return unqualifiedStatementVerified;
41
54
  }
42
-
43
- function unifyDerivedUnqualifiedStatement(unqualifiedStatementNode, localContext) {
44
- let derivedUnqualifiedStatementUnified;
45
-
46
- const unqualifiedStatementString = localContext.nodeAsString(unqualifiedStatementNode);
47
-
48
- localContext.trace(`Unifying the '${unqualifiedStatementString}' derived unqualified statement...`, unqualifiedStatementNode);
49
-
50
- const statementNode = statementNodeQuery(unqualifiedStatementNode),
51
- statementUnified = localContext.unifyStatement(statementNode, localContext);
52
-
53
- derivedUnqualifiedStatementUnified = statementUnified; ///
54
-
55
- if (derivedUnqualifiedStatementUnified) {
56
- localContext.debug(`...unified the '${unqualifiedStatementString}' derived unqualified statement.`, unqualifiedStatementNode);
57
- }
58
-
59
- return derivedUnqualifiedStatementUnified;
60
- }