occam-verify-cli 0.0.913 → 0.0.915

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 (110) hide show
  1. package/lib/assignment/frameAssertion.js +4 -4
  2. package/lib/axiomLemmaTheoremConjecture.js +4 -3
  3. package/lib/conclusion.js +5 -5
  4. package/lib/context/file.js +3 -3
  5. package/lib/context/local/intrinsicLevel.js +326 -0
  6. package/lib/context/local/metaLevel.js +290 -0
  7. package/lib/metaConsequent.js +4 -4
  8. package/lib/metaLemmaMetatheorem.js +11 -11
  9. package/lib/metaSupposition.js +7 -7
  10. package/lib/metavariable.js +5 -5
  11. package/lib/premise.js +12 -12
  12. package/lib/rule.js +12 -12
  13. package/lib/verifier/node/metaLevel.js +214 -0
  14. package/lib/verifier/node/statementAsCombinator.js +9 -9
  15. package/lib/verifier/node/termAsConstructor.js +7 -7
  16. package/lib/verify/axiom.js +3 -3
  17. package/lib/verify/conclusion.js +7 -7
  18. package/lib/verify/conjecture.js +3 -3
  19. package/lib/verify/containedAssertion.js +23 -4
  20. package/lib/verify/declaration.js +15 -15
  21. package/lib/verify/definedAssertion.js +18 -4
  22. package/lib/verify/derivation.js +3 -3
  23. package/lib/verify/frame.js +16 -16
  24. package/lib/verify/frameAssertion.js +33 -33
  25. package/lib/verify/lemma.js +3 -3
  26. package/lib/verify/metaConsequent.js +7 -7
  27. package/lib/verify/metaDerivation.js +3 -3
  28. package/lib/verify/metaLemma.js +6 -6
  29. package/lib/verify/metaSubDerivation.js +3 -3
  30. package/lib/verify/metaSubproof.js +7 -6
  31. package/lib/verify/metaSupposition.js +9 -9
  32. package/lib/verify/metaSuppositions.js +3 -3
  33. package/lib/verify/metaproof.js +7 -6
  34. package/lib/verify/metaproofStep.js +23 -23
  35. package/lib/verify/metastatement/qualified.js +22 -22
  36. package/lib/verify/metastatement/unqualified.js +7 -7
  37. package/lib/verify/metastatement.js +26 -26
  38. package/lib/verify/metatheorem.js +6 -6
  39. package/lib/verify/metavariable.js +6 -6
  40. package/lib/verify/premise.js +9 -9
  41. package/lib/verify/premises.js +3 -3
  42. package/lib/verify/proof.js +4 -3
  43. package/lib/verify/rule.js +6 -6
  44. package/lib/verify/ruleDerivation.js +3 -3
  45. package/lib/verify/ruleProof.js +7 -6
  46. package/lib/verify/ruleProofStep.js +26 -25
  47. package/lib/verify/ruleSubDerivation.js +3 -3
  48. package/lib/verify/ruleSubproof.js +7 -6
  49. package/lib/verify/statement.js +4 -17
  50. package/lib/verify/subDerivation.js +3 -3
  51. package/lib/verify/subproof.js +4 -3
  52. package/lib/verify/termAsConstructor.js +3 -3
  53. package/lib/verify/theorem.js +4 -4
  54. package/package.json +2 -2
  55. package/src/assignment/frameAssertion.js +5 -5
  56. package/src/axiomLemmaTheoremConjecture.js +4 -2
  57. package/src/conclusion.js +7 -7
  58. package/src/context/file.js +2 -2
  59. package/src/context/{local.js → local/intrinsicLevel.js} +25 -20
  60. package/src/context/{localMeta.js → local/metaLevel.js} +21 -16
  61. package/src/metaConsequent.js +7 -7
  62. package/src/metaLemmaMetatheorem.js +11 -11
  63. package/src/metaSupposition.js +13 -13
  64. package/src/metavariable.js +6 -7
  65. package/src/premise.js +26 -26
  66. package/src/rule.js +12 -12
  67. package/src/verifier/node/{metastatement.js → metaLevel.js} +19 -21
  68. package/src/verifier/node/statementAsCombinator.js +8 -8
  69. package/src/verifier/node/termAsConstructor.js +6 -6
  70. package/src/verify/axiom.js +4 -3
  71. package/src/verify/conclusion.js +5 -6
  72. package/src/verify/conjecture.js +4 -3
  73. package/src/verify/containedAssertion.js +24 -3
  74. package/src/verify/declaration.js +15 -15
  75. package/src/verify/definedAssertion.js +23 -3
  76. package/src/verify/derivation.js +2 -2
  77. package/src/verify/frame.js +15 -15
  78. package/src/verify/frameAssertion.js +33 -33
  79. package/src/verify/lemma.js +4 -3
  80. package/src/verify/metaConsequent.js +5 -6
  81. package/src/verify/metaDerivation.js +2 -2
  82. package/src/verify/metaLemma.js +8 -7
  83. package/src/verify/metaSubDerivation.js +2 -2
  84. package/src/verify/metaSubproof.js +7 -5
  85. package/src/verify/metaSupposition.js +7 -8
  86. package/src/verify/metaSuppositions.js +2 -2
  87. package/src/verify/metaproof.js +7 -5
  88. package/src/verify/metaproofStep.js +21 -25
  89. package/src/verify/metastatement/qualified.js +24 -24
  90. package/src/verify/metastatement/unqualified.js +6 -6
  91. package/src/verify/metastatement.js +25 -25
  92. package/src/verify/metatheorem.js +8 -7
  93. package/src/verify/metavariable.js +5 -5
  94. package/src/verify/premise.js +7 -8
  95. package/src/verify/premises.js +2 -2
  96. package/src/verify/proof.js +4 -2
  97. package/src/verify/rule.js +8 -7
  98. package/src/verify/ruleDerivation.js +2 -2
  99. package/src/verify/ruleProof.js +7 -5
  100. package/src/verify/ruleProofStep.js +22 -25
  101. package/src/verify/ruleSubDerivation.js +2 -2
  102. package/src/verify/ruleSubproof.js +7 -5
  103. package/src/verify/statement.js +2 -22
  104. package/src/verify/subDerivation.js +2 -2
  105. package/src/verify/subproof.js +4 -2
  106. package/src/verify/termAsConstructor.js +4 -3
  107. package/src/verify/theorem.js +5 -4
  108. package/lib/context/local.js +0 -320
  109. package/lib/context/localMeta.js +0 -284
  110. package/lib/verifier/node/metastatement.js +0 -214
@@ -20,11 +20,11 @@ class StatementAsCombinatorNodeVerifier extends NodeVerifier {
20
20
  const nodeQueryMaps = [
21
21
  {
22
22
  nodeQuery: termNodeQuery,
23
- verifyNode: (node, localMetaContext, verifyAhead) => {
23
+ verifyNode: (node, localContext, verifyAhead) => {
24
24
  let nonTerminalNodeVerified;
25
25
 
26
26
  const termNode = node, ///
27
- termNodeVerified = this.verifyTermNode(termNode, localMetaContext, verifyAhead);
27
+ termNodeVerified = this.verifyTermNode(termNode, localContext, verifyAhead);
28
28
 
29
29
  nonTerminalNodeVerified = termNodeVerified; ///
30
30
 
@@ -33,11 +33,11 @@ class StatementAsCombinatorNodeVerifier extends NodeVerifier {
33
33
  },
34
34
  {
35
35
  nodeQuery: typeNodeQuery,
36
- verifyNode: (node, localMetaContext, verifyAhead) => {
36
+ verifyNode: (node, localContext, verifyAhead) => {
37
37
  let nonTerminalNodeVerified;
38
38
 
39
39
  const typeNode = node, ///
40
- typeNodeVerified = this.verifyTypeNode(typeNode, localMetaContext, verifyAhead);
40
+ typeNodeVerified = this.verifyTypeNode(typeNode, localContext, verifyAhead);
41
41
 
42
42
  nonTerminalNodeVerified = typeNodeVerified; ///
43
43
 
@@ -46,11 +46,11 @@ class StatementAsCombinatorNodeVerifier extends NodeVerifier {
46
46
  },
47
47
  {
48
48
  nodeQuery: statementNodeQuery,
49
- verifyNode: (node, localMetaContext, verifyAhead) => {
49
+ verifyNode: (node, localContext, verifyAhead) => {
50
50
  let nonTerminalNodeVerified;
51
51
 
52
52
  const statementNode = node, ///
53
- statementNodeVerified = this.verifyStatementNode(statementNode, localMetaContext, verifyAhead);
53
+ statementNodeVerified = this.verifyStatementNode(statementNode, localContext, verifyAhead);
54
54
 
55
55
  nonTerminalNodeVerified = statementNodeVerified; ///
56
56
 
@@ -59,14 +59,14 @@ class StatementAsCombinatorNodeVerifier extends NodeVerifier {
59
59
  },
60
60
  {
61
61
  nodeQuery: nonTerminalNodeQuery,
62
- verifyNode: (node, localMetaContext, verifyAhead) => {
62
+ verifyNode: (node, localContext, verifyAhead) => {
63
63
  let nonTerminalNodeVerified;
64
64
 
65
65
  const nonTerminalNode = node; ///
66
66
 
67
67
  nonTerminalNodeVerified =
68
68
 
69
- super.verifyNonTerminalNode(nonTerminalNode, localMetaContext, verifyAhead);
69
+ super.verifyNonTerminalNode(nonTerminalNode, localContext, verifyAhead);
70
70
 
71
71
  return nonTerminalNodeVerified;
72
72
  }
@@ -18,11 +18,11 @@ class TermAsConstructorNodeVerifier extends NodeVerifier {
18
18
  const nodeQueryMaps = [
19
19
  {
20
20
  nodeQuery: termNodeQuery,
21
- verifyNode: (node, localMetaContext, verifyAhead) => {
21
+ verifyNode: (node, localContext, verifyAhead) => {
22
22
  let nonTerminalNodeVerified;
23
23
 
24
24
  const termNode = node, ///
25
- termNodeVerified = this.verifyTermNode(termNode, localMetaContext, verifyAhead);
25
+ termNodeVerified = this.verifyTermNode(termNode, localContext, verifyAhead);
26
26
 
27
27
  nonTerminalNodeVerified = termNodeVerified; ///
28
28
 
@@ -31,11 +31,11 @@ class TermAsConstructorNodeVerifier extends NodeVerifier {
31
31
  },
32
32
  {
33
33
  nodeQuery: typeNodeQuery,
34
- verifyNode: (node, localMetaContext, verifyAhead) => {
34
+ verifyNode: (node, localContext, verifyAhead) => {
35
35
  let nonTerminalNodeVerified;
36
36
 
37
37
  const typeNode = node, ///
38
- typeNodeVerified = this.verifyTypeNode(typeNode, localMetaContext, verifyAhead);
38
+ typeNodeVerified = this.verifyTypeNode(typeNode, localContext, verifyAhead);
39
39
 
40
40
  nonTerminalNodeVerified = typeNodeVerified; ///
41
41
 
@@ -44,14 +44,14 @@ class TermAsConstructorNodeVerifier extends NodeVerifier {
44
44
  },
45
45
  {
46
46
  nodeQuery: nonTerminalNodeQuery,
47
- verifyNode: (node, localMetaContext, verifyAhead) => {
47
+ verifyNode: (node, localContext, verifyAhead) => {
48
48
  let nonTerminalNodeVerified;
49
49
 
50
50
  const nonTerminalNode = node; ///
51
51
 
52
52
  nonTerminalNodeVerified =
53
53
 
54
- super.verifyNonTerminalNode(nonTerminalNode, localMetaContext, verifyAhead);
54
+ super.verifyNonTerminalNode(nonTerminalNode, localContext, verifyAhead);
55
55
 
56
56
  return nonTerminalNodeVerified;
57
57
  }
@@ -1,10 +1,10 @@
1
1
  "use strict";
2
2
 
3
3
  import Axiom from "../axiom";
4
- import LocalContext from "../context/local";
5
4
  import verifyLabels from "../verify/labels";
6
5
  import verifyConsequent from "../verify/consequent";
7
6
  import verifySuppositions from "../verify/suppositions";
7
+ import IntrinsicLevelLocalContext from "../context/local/intrinsicLevel";
8
8
 
9
9
  import { first } from "../utilities/array";
10
10
  import { nodeQuery, nodesQuery } from "../utilities/query";
@@ -16,9 +16,10 @@ const labelNodesQuery = nodesQuery("/axiom/label"),
16
16
  export default function verifyAxiom(axiomNode, fileContext) {
17
17
  let axiomVerified = false;
18
18
 
19
- const labelNodes = labelNodesQuery(axiomNode),
19
+ const intrinsicLevelLocalContext = IntrinsicLevelLocalContext.fromFileContext(fileContext),
20
+ labelNodes = labelNodesQuery(axiomNode),
20
21
  labelsString = fileContext.nodesAsString(labelNodes),
21
- localContext = LocalContext.fromFileContext(fileContext);
22
+ localContext = intrinsicLevelLocalContext; ///
22
23
 
23
24
  fileContext.trace(`Verifying the '${labelsString}' axiom...`, axiomNode);
24
25
 
@@ -11,12 +11,12 @@ const statementNodeQuery = nodeQuery("/unqualifiedStatement/statement!"),
11
11
  unqualifiedStatementNodeQuery = nodeQuery("/conclusion/unqualifiedStatement!"),
12
12
  unqualifiedMetastatementNodeQuery = nodeQuery("/conclusion/unqualifiedMetastatement!");
13
13
 
14
- export default function verifyConclusion(conclusionNode, conclusions, localMetaContext) {
14
+ export default function verifyConclusion(conclusionNode, conclusions, localContext) {
15
15
  let conclusionVerified = false;
16
16
 
17
- const conclusionString = localMetaContext.nodeAsString(conclusionNode);
17
+ const conclusionString = localContext.nodeAsString(conclusionNode);
18
18
 
19
- localMetaContext.trace(`Verifying the '${conclusionString}' conclusion...`, conclusionNode);
19
+ localContext.trace(`Verifying the '${conclusionString}' conclusion...`, conclusionNode);
20
20
 
21
21
  const unqualifiedStatementNode = unqualifiedStatementNodeQuery(conclusionNode),
22
22
  unqualifiedMetastatementNode = unqualifiedMetastatementNodeQuery(conclusionNode);
@@ -24,7 +24,6 @@ export default function verifyConclusion(conclusionNode, conclusions, localMetaC
24
24
  if (unqualifiedStatementNode !== null) {
25
25
  const derived = false,
26
26
  assignments = [],
27
- localContext = localMetaContext, ///
28
27
  unqualifiedStatementVerified = verifyUnqualifiedStatement(unqualifiedStatementNode, assignments, derived, localContext);
29
28
 
30
29
  conclusionVerified = unqualifiedStatementVerified; ///
@@ -33,7 +32,7 @@ export default function verifyConclusion(conclusionNode, conclusions, localMetaC
33
32
  if (unqualifiedMetastatementNode !== null) {
34
33
  const derived = false,
35
34
  assignments = [],
36
- unqualifiedMetastatementVerified = verifyUnqualifiedMetastatement(unqualifiedMetastatementNode, assignments, derived, localMetaContext);
35
+ unqualifiedMetastatementVerified = verifyUnqualifiedMetastatement(unqualifiedMetastatementNode, assignments, derived, localContext);
37
36
 
38
37
  conclusionVerified = unqualifiedMetastatementVerified; ///
39
38
  }
@@ -55,7 +54,7 @@ export default function verifyConclusion(conclusionNode, conclusions, localMetaC
55
54
 
56
55
  conclusions.push(conclusion);
57
56
 
58
- localMetaContext.debug(`...verified the '${conclusionString}' conclusion.`, conclusionNode);
57
+ localContext.debug(`...verified the '${conclusionString}' conclusion.`, conclusionNode);
59
58
  }
60
59
 
61
60
  return conclusionVerified;
@@ -2,10 +2,10 @@
2
2
 
3
3
  import Conjecture from "../conjecture";
4
4
  import verifyProof from "../verify/proof";
5
- import LocalContext from "../context/local";
6
5
  import verifyLabels from "../verify/labels";
7
6
  import verifyConsequent from "../verify/consequent";
8
7
  import verifySuppositions from "../verify/suppositions";
8
+ import IntrinsicLevelLocalContext from "../context/local/intrinsicLevel";
9
9
 
10
10
  import { first } from "../utilities/array";
11
11
  import { nodeQuery, nodesQuery } from "../utilities/query";
@@ -18,9 +18,10 @@ const proofNodeQuery = nodeQuery("/conjecture/proof!"),
18
18
  export default function verifyConjecture(conjectureNode, fileContext) {
19
19
  let conjectureVerified = false;
20
20
 
21
- const labelNodes = labelNodesQuery(conjectureNode),
21
+ const intrinsicLevelLocalContext = IntrinsicLevelLocalContext.fromFileContext(fileContext),
22
+ labelNodes = labelNodesQuery(conjectureNode),
22
23
  labelsString = fileContext.nodesAsString(labelNodes),
23
- localContext = LocalContext.fromFileContext(fileContext);
24
+ localContext = intrinsicLevelLocalContext; ///
24
25
 
25
26
  fileContext.trace(`Verifying the '${labelsString}' conjecture...`, conjectureNode);
26
27
 
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
2
 
3
+ import metaLevelNodeVerifier from "../verifier/node/metaLevel";
4
+
3
5
  import { isAssertionNegated } from "../utilities/verify";
4
6
  import { nodeQuery, nodesQuery } from "../utilities/query";
5
7
 
@@ -79,13 +81,32 @@ function verifyDerivedContainedAssertion(containedAssertionNode, assignments, de
79
81
  }
80
82
 
81
83
  function verifyStatedContainedAssertion(containedAssertionNode, assignments, derived, localContext) {
82
- let derivedStatedAssertionVerified = false;
84
+ let statedContainedAssertionVerified = false;
83
85
 
84
86
  if (!derived) {
85
87
  const containedAssertionString = localContext.nodeAsString(containedAssertionNode);
86
88
 
87
- localContext.debug(`The stated '${containedAssertionString}' contained assertion cannot be verified.`, containedAssertionNode);
89
+ localContext.trace(`Verifying the stated '${containedAssertionString}' contained assertion...`, containedAssertionNode);
90
+
91
+ const intrinsicLevel = localContext.isIntrinsicLevel();
92
+
93
+ if (intrinsicLevel) {
94
+ localContext.debug(`The stated '${containedAssertionString}' contained assertion cannot be verified at intrinsic level.`, containedAssertionNode);
95
+ } else {
96
+ const nonTerminalNode = containedAssertionNode, ///
97
+ nonTerminalNodeVerified = metaLevelNodeVerifier.verifyNonTerminalNode(nonTerminalNode, localContext, () => {
98
+ const verifiedAhead = true;
99
+
100
+ return verifiedAhead;
101
+ });
102
+
103
+ statedContainedAssertionVerified = nonTerminalNodeVerified; ///
104
+ }
105
+
106
+ if (statedContainedAssertionVerified) {
107
+ localContext.debug(`...verified the stated '${containedAssertionString}' contained assertion.`, containedAssertionNode);
108
+ }
88
109
  }
89
110
 
90
- return derivedStatedAssertionVerified;
111
+ return statedContainedAssertionVerified;
91
112
  }
@@ -2,7 +2,7 @@
2
2
 
3
3
  import Declaration from "../declaration"
4
4
  import referenceMetaType from "../metaType/reference";
5
- import metastatementNodeVerifier from "../verifier/node/metastatement";
5
+ import metaLevelNodeVerifier from "../verifier/node/metaLevel";
6
6
 
7
7
  import { nodeQuery } from "../utilities/query";
8
8
 
@@ -10,23 +10,23 @@ const referenceNodeQuery = nodeQuery("/declaration/reference!"),
10
10
  metavariableNodeQuery = nodeQuery("/reference/metavariable!"),
11
11
  metastatementNodeQuery = nodeQuery("/declaration/metastatement!");
12
12
 
13
- export default function verifyDeclaration(declarationNode, declarations, localMetaContext) {
13
+ export default function verifyDeclaration(declarationNode, declarations, localContext) {
14
14
  let declarationVerified = false;
15
15
 
16
- const declarationString = localMetaContext.nodeAsString(declarationNode);
16
+ const declarationString = localContext.nodeAsString(declarationNode);
17
17
 
18
- localMetaContext.trace(`Verifying the '${declarationString}' declaration...`, declarationNode);
18
+ localContext.trace(`Verifying the '${declarationString}' declaration...`, declarationNode);
19
19
 
20
20
  const referenceNode = referenceNodeQuery(declarationNode),
21
- referenceVerified = verifyReference(referenceNode, localMetaContext);
21
+ referenceVerified = verifyReference(referenceNode, localContext);
22
22
 
23
23
  if (referenceVerified) {
24
24
  const metastatementNode = metastatementNodeQuery(declarationNode);
25
25
 
26
- const { verifyMetastatement } = metastatementNodeVerifier,
26
+ const { verifyMetastatement } = metaLevelNodeVerifier,
27
27
  derived = false,
28
28
  assignments = [],
29
- metastatementVerified = verifyMetastatement(metastatementNode, assignments, derived, localMetaContext, () => {
29
+ metastatementVerified = verifyMetastatement(metastatementNode, assignments, derived, localContext, () => {
30
30
  const verifiedAhead = true;
31
31
 
32
32
  return verifiedAhead;
@@ -43,21 +43,21 @@ export default function verifyDeclaration(declarationNode, declarations, localMe
43
43
  }
44
44
 
45
45
  if (declarationVerified) {
46
- localMetaContext.debug(`...verified the '${declarationString}' declaration.`, declarationNode);
46
+ localContext.debug(`...verified the '${declarationString}' declaration.`, declarationNode);
47
47
  }
48
48
 
49
49
  return declarationVerified;
50
50
  }
51
51
 
52
- function verifyReference(referenceNode, localMetaContext) {
52
+ function verifyReference(referenceNode, localContext) {
53
53
  let referenceVerified = false;
54
54
 
55
- const referenceString = localMetaContext.nodeAsString(referenceNode);
55
+ const referenceString = localContext.nodeAsString(referenceNode);
56
56
 
57
- localMetaContext.trace(`Verifying the '${referenceString}' reference...`, referenceNode);
57
+ localContext.trace(`Verifying the '${referenceString}' reference...`, referenceNode);
58
58
 
59
59
  const metavariableNode = metavariableNodeQuery(referenceNode),
60
- metavariable = localMetaContext.findMetavariableByMetavariableNode(metavariableNode, localMetaContext);
60
+ metavariable = localContext.findMetavariableByMetavariableNode(metavariableNode, localContext);
61
61
 
62
62
  if (metavariable !== null) {
63
63
  const metaType = metavariable.getMetaType();
@@ -68,14 +68,14 @@ function verifyReference(referenceNode, localMetaContext) {
68
68
  const referenceMetaTypeName = referenceMetaType.getName(),
69
69
  metaTypeString = metaType.asString();
70
70
 
71
- localMetaContext.debug(`The '${referenceString}' metavariable's meta-type is '${metaTypeString}' when it should be '${referenceMetaTypeName}'.`, referenceNode);
71
+ localContext.debug(`The '${referenceString}' metavariable's meta-type is '${metaTypeString}' when it should be '${referenceMetaTypeName}'.`, referenceNode);
72
72
  }
73
73
  } else {
74
- localMetaContext.debug(`The '${referenceString}' metavariable is not present'.`, referenceNode);
74
+ localContext.debug(`The '${referenceString}' metavariable is not present'.`, referenceNode);
75
75
  }
76
76
 
77
77
  if (referenceVerified) {
78
- localMetaContext.debug(`...verified the '${referenceString}' reference.`, referenceNode);
78
+ localContext.debug(`...verified the '${referenceString}' reference.`, referenceNode);
79
79
  }
80
80
 
81
81
  return referenceVerified;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import verifyTerm from "./term";
4
+ import metaLevelNodeVerifier from "../verifier/node/metaLevel";
4
5
 
5
6
  import { first } from "../utilities/array";
6
7
  import { nodeQuery } from "../utilities/query";
@@ -105,13 +106,32 @@ function verifyDerivedDefinedAssertion(definedAssertionNode, assignments, derive
105
106
  }
106
107
 
107
108
  function verifyStatedDefinedAssertion(definedAssertionNode, assignments, derived, localContext) {
108
- let derivedStatedAssertionVerified = false;
109
+ let statedDefinedAssertionVerified = false;
109
110
 
110
111
  if (!derived) {
111
112
  const definedAssertionString = localContext.nodeAsString(definedAssertionNode);
112
113
 
113
- localContext.debug(`The stated '${definedAssertionString}' defined assertion cannot be verified.`, definedAssertionNode);
114
+ localContext.trace(`Verifying the stated '${definedAssertionString}' defined assertion...`, definedAssertionNode);
115
+
116
+ const intrinsicLevel = localContext.isIntrinsicLevel();
117
+
118
+ if (intrinsicLevel) {
119
+ localContext.debug(`The stated '${definedAssertionString}' defined assertion cannot be verified at intrinsic level.`, definedAssertionNode);
120
+ } else {
121
+ const nonTerminalNode = definedAssertionNode, ///
122
+ nonTerminalNodeVerified = metaLevelNodeVerifier.verifyNonTerminalNode(nonTerminalNode, localContext, () => {
123
+ const verifiedAhead = true;
124
+
125
+ return verifiedAhead;
126
+ });
127
+
128
+ statedDefinedAssertionVerified = nonTerminalNodeVerified; ///
129
+ }
130
+
131
+ if (statedDefinedAssertionVerified) {
132
+ localContext.debug(`...verified the stated '${definedAssertionString}' defined assertion.`, definedAssertionNode);
133
+ }
114
134
  }
115
135
 
116
- return derivedStatedAssertionVerified;
136
+ return statedDefinedAssertionVerified;
117
137
  }
@@ -6,13 +6,13 @@ import { nodesQuery } from "../utilities/query";
6
6
 
7
7
  const proofStepNodesQuery = nodesQuery("/derivation/proofStep|lastProofStep");
8
8
 
9
- export default function verifyDerivation(ruleDerivationNode, localMetaContext) {
9
+ export default function verifyDerivation(ruleDerivationNode, localContext) {
10
10
  let ruleDerivationVerified;
11
11
 
12
12
  const proofStepNodes = proofStepNodesQuery(ruleDerivationNode);
13
13
 
14
14
  ruleDerivationVerified = proofStepNodes.every((proofStepNode) => {
15
- const proofStepVerified = verifyProofStep(proofStepNode, localMetaContext);
15
+ const proofStepVerified = verifyProofStep(proofStepNode, localContext);
16
16
 
17
17
  if (proofStepVerified) {
18
18
  return true;
@@ -10,17 +10,17 @@ import { nodesQuery } from "../utilities/query";
10
10
  const declarationNodesQuery = nodesQuery("/frame/declaration"),
11
11
  metavariableNodesQuery = nodesQuery("/frame/metavariable");
12
12
 
13
- export default function verifyFrame(frameNode, frames, assignments, derived, localMetaContext) {
13
+ export default function verifyFrame(frameNode, frames, assignments, derived, localContext) {
14
14
  let frameVerified;
15
15
 
16
- const frameString = localMetaContext.nodeAsString(frameNode);
16
+ const frameString = localContext.nodeAsString(frameNode);
17
17
 
18
- localMetaContext.trace(`Verifying the '${frameString}' frame...`, frameNode);
18
+ localContext.trace(`Verifying the '${frameString}' frame...`, frameNode);
19
19
 
20
20
  const declarations = [],
21
21
  declarationNodes = declarationNodesQuery(frameNode),
22
22
  declarationsVerified = declarationNodes.every((declarationNode) => {
23
- const declarationVerified = verifyDeclaration(declarationNode, declarations, localMetaContext);
23
+ const declarationVerified = verifyDeclaration(declarationNode, declarations, localContext);
24
24
 
25
25
  return declarationVerified;
26
26
  });
@@ -28,7 +28,7 @@ export default function verifyFrame(frameNode, frames, assignments, derived, loc
28
28
  if (declarationsVerified) {
29
29
  const metavariableNodes = metavariableNodesQuery(frameNode),
30
30
  metavariablesVerified = metavariableNodes.every((metavariableNode) => {
31
- const metavariableVerified = verifyMetavariable(metavariableNode, declarations, localMetaContext);
31
+ const metavariableVerified = verifyMetavariable(metavariableNode, declarations, localContext);
32
32
 
33
33
  return metavariableVerified;
34
34
  });
@@ -43,26 +43,26 @@ export default function verifyFrame(frameNode, frames, assignments, derived, loc
43
43
  }
44
44
 
45
45
  if (frameVerified) {
46
- localMetaContext.debug(`...verified the '${frameString}' frame.`, frameNode);
46
+ localContext.debug(`...verified the '${frameString}' frame.`, frameNode);
47
47
  }
48
48
 
49
49
  return frameVerified;
50
50
  }
51
51
 
52
- function verifyMetavariable(metavariableNode, declarations, localMetaContext) {
52
+ function verifyMetavariable(metavariableNode, declarations, localContext) {
53
53
  let metavariableVerified = false;
54
54
 
55
- const metavariableString = localMetaContext.nodeAsString(metavariableNode);
55
+ const metavariableString = localContext.nodeAsString(metavariableNode);
56
56
 
57
- localMetaContext.trace(`Verifying the '${metavariableString}' metavariable...`, metavariableNode);
57
+ localContext.trace(`Verifying the '${metavariableString}' metavariable...`, metavariableNode);
58
58
 
59
- const metavariable = localMetaContext.findMetavariableByMetavariableNode(metavariableNode, localMetaContext);
59
+ const metavariable = localContext.findMetavariableByMetavariableNode(metavariableNode, localContext);
60
60
 
61
61
  if (metavariable !== null) {
62
62
  const metaType = metavariable.getMetaType();
63
63
 
64
64
  if (metaType === frameMetaType) {
65
- const frameAssertion = localMetaContext.findFrameAssertionByMetavariableNode(metavariableNode);
65
+ const frameAssertion = localContext.findFrameAssertionByMetavariableNode(metavariableNode);
66
66
 
67
67
  if (frameAssertion !== null) {
68
68
  const frameAssertionDeclarations = frameAssertion.getDeclarations();
@@ -71,20 +71,20 @@ function verifyMetavariable(metavariableNode, declarations, localMetaContext) {
71
71
 
72
72
  metavariableVerified = true;
73
73
  } else {
74
- localMetaContext.debug(`There is no frame assertion for the '${metavariableString}' metavariable.`, metavariableNode);
74
+ localContext.debug(`There is no frame assertion for the '${metavariableString}' metavariable.`, metavariableNode);
75
75
  }
76
76
  } else {
77
77
  const frameMetaTypeName = frameMetaType.getName(),
78
78
  metaTypeString = metaType.asString();
79
79
 
80
- localMetaContext.debug(`The '${metavariableString}' metavariable's meta-type is '${metaTypeString}' when it should be '${frameMetaTypeName}'.`, metavariableNode);
80
+ localContext.debug(`The '${metavariableString}' metavariable's meta-type is '${metaTypeString}' when it should be '${frameMetaTypeName}'.`, metavariableNode);
81
81
  }
82
82
  } else {
83
- localMetaContext.debug(`The '${metavariableString}' metavariable is not present'.`, metavariableNode);
83
+ localContext.debug(`The '${metavariableString}' metavariable is not present'.`, metavariableNode);
84
84
  }
85
85
 
86
86
  if (metavariableVerified) {
87
- localMetaContext.debug(`...verified the '${metavariableString}' metavariable.`, metavariableNode);
87
+ localContext.debug(`...verified the '${metavariableString}' metavariable.`, metavariableNode);
88
88
  }
89
89
 
90
90
  return metavariableVerified;
@@ -11,12 +11,12 @@ import { nodeQuery } from "../utilities/query";
11
11
  const frameNodeQuery = nodeQuery("/frameAssertion/frame!"),
12
12
  metavariableNodeQuery = nodeQuery("/frameAssertion/metavariable!");
13
13
 
14
- export default function verifyFrameAssertion(frameAssertionNode, assignments, derived, localMetaContext) {
14
+ export default function verifyFrameAssertion(frameAssertionNode, assignments, derived, localContext) {
15
15
  let frameAssertionVerified;
16
16
 
17
- const frameAssertionString = localMetaContext.nodeAsString(frameAssertionNode);
17
+ const frameAssertionString = localContext.nodeAsString(frameAssertionNode);
18
18
 
19
- localMetaContext.trace(`Verifying the '${frameAssertionString}' frame assertion...`, frameAssertionNode);
19
+ localContext.trace(`Verifying the '${frameAssertionString}' frame assertion...`, frameAssertionNode);
20
20
 
21
21
  const verifyFrameAssertionFunctions = [
22
22
  verifyDerivedFrameAssertion,
@@ -24,7 +24,7 @@ export default function verifyFrameAssertion(frameAssertionNode, assignments, de
24
24
  ];
25
25
 
26
26
  frameAssertionVerified = verifyFrameAssertionFunctions.some((verifyFrameAssertionFunction) => {
27
- const frameAssertionVerified = verifyFrameAssertionFunction(frameAssertionNode, assignments, derived, localMetaContext);
27
+ const frameAssertionVerified = verifyFrameAssertionFunction(frameAssertionNode, assignments, derived, localContext);
28
28
 
29
29
  if (frameAssertionVerified) {
30
30
  return true;
@@ -32,30 +32,30 @@ export default function verifyFrameAssertion(frameAssertionNode, assignments, de
32
32
  });
33
33
 
34
34
  if (frameAssertionVerified) {
35
- localMetaContext.debug(`...verified the '${frameAssertionString}' frame assertion.`, frameAssertionNode);
35
+ localContext.debug(`...verified the '${frameAssertionString}' frame assertion.`, frameAssertionNode);
36
36
  }
37
37
 
38
38
  return frameAssertionVerified;
39
39
  }
40
40
 
41
- function verifyDerivedFrameAssertion(frameAssertionNode, assignments, derived, localMetaContext) {
41
+ function verifyDerivedFrameAssertion(frameAssertionNode, assignments, derived, localContext) {
42
42
  let derivedFrameAssertionVerified = false;
43
43
 
44
44
  if (derived) {
45
- const frameAssertionString = localMetaContext.nodeAsString(frameAssertionNode);
45
+ const frameAssertionString = localContext.nodeAsString(frameAssertionNode);
46
46
 
47
- localMetaContext.trace(`Verifying the '${frameAssertionString}' derived frame assertion...`, frameAssertionNode);
47
+ localContext.trace(`Verifying the '${frameAssertionString}' derived frame assertion...`, frameAssertionNode);
48
48
 
49
49
  const metavariableNode = metavariableNodeQuery(frameAssertionNode),
50
- metavariableVerified = verifyMetavariable(metavariableNode, localMetaContext);
50
+ metavariableVerified = verifyMetavariable(metavariableNode, localContext);
51
51
 
52
52
  if (metavariableVerified) {
53
- const frameAssertion = localMetaContext.findFrameAssertionByMetavariableNode(metavariableNode);
53
+ const frameAssertion = localContext.findFrameAssertionByMetavariableNode(metavariableNode);
54
54
 
55
55
  if (frameAssertion !== null) {
56
56
  const frames = [],
57
57
  frameNode = frameNodeQuery(frameAssertionNode),
58
- frameVerified = verifyFrame(frameNode, frames, assignments, derived, localMetaContext);
58
+ frameVerified = verifyFrame(frameNode, frames, assignments, derived, localContext);
59
59
 
60
60
  if (frameVerified) {
61
61
  const firstFrame = first(frames),
@@ -65,8 +65,8 @@ function verifyDerivedFrameAssertion(frameAssertionNode, assignments, derived, l
65
65
  if (frameSingular) {
66
66
  const declaration = frame.getDeclaration(),
67
67
  metavariableNode = declaration.getMetavariableNode(),
68
- metaLemma = localMetaContext.findMetaLemmaByMetavariableNode(metavariableNode),
69
- metatheorem = localMetaContext.findMetatheoremByMetavariableNode(metavariableNode),
68
+ metaLemma = localContext.findMetaLemmaByMetavariableNode(metavariableNode),
69
+ metatheorem = localContext.findMetatheoremByMetavariableNode(metavariableNode),
70
70
  metaLemmaMetatheorem = (metaLemma || metatheorem); ///
71
71
 
72
72
  if (metaLemmaMetatheorem !== null) {
@@ -75,46 +75,46 @@ function verifyDerivedFrameAssertion(frameAssertionNode, assignments, derived, l
75
75
 
76
76
  derivedFrameAssertionVerified = (declarationMatchesMetaLemmaMetatheorem && frameAssertionMatchesMetaLemmaMetatheorem);
77
77
  } else {
78
- const metavariableString = localMetaContext.nodeAsString(metavariableNode);
78
+ const metavariableString = localContext.nodeAsString(metavariableNode);
79
79
 
80
- localMetaContext.debug(`There are no meta-lemmas or metatheorems corresponding to the '${metavariableString}' metavariable.`, frameAssertionNode);
80
+ localContext.debug(`There are no meta-lemmas or metatheorems corresponding to the '${metavariableString}' metavariable.`, frameAssertionNode);
81
81
  }
82
82
  } else {
83
- const frameString = localMetaContext.nodeAsString(frameNode);
83
+ const frameString = localContext.nodeAsString(frameNode);
84
84
 
85
- localMetaContext.debug(`The '${frameString}' is not singular.`, frameAssertionNode);
85
+ localContext.debug(`The '${frameString}' is not singular.`, frameAssertionNode);
86
86
  }
87
87
  }
88
88
  } else {
89
- const metavariableString = localMetaContext.nodeAsString(metavariableNode);
89
+ const metavariableString = localContext.nodeAsString(metavariableNode);
90
90
 
91
- localMetaContext.debug(`There is no frameAssertion present for the '${metavariableString}' metavariable.`, frameAssertionNode);
91
+ localContext.debug(`There is no frameAssertion present for the '${metavariableString}' metavariable.`, frameAssertionNode);
92
92
  }
93
93
  }
94
94
 
95
95
  if (derivedFrameAssertionVerified) {
96
- localMetaContext.debug(`...verified the '${frameAssertionString}' derived frame assertion.`, frameAssertionNode);
96
+ localContext.debug(`...verified the '${frameAssertionString}' derived frame assertion.`, frameAssertionNode);
97
97
  }
98
98
  }
99
99
 
100
100
  return derivedFrameAssertionVerified;
101
101
  }
102
102
 
103
- function verifyStatedFrameAssertion(frameAssertionNode, assignments, derived, localMetaContext) {
103
+ function verifyStatedFrameAssertion(frameAssertionNode, assignments, derived, localContext) {
104
104
  let statedFrameAssertionVerified = false;
105
105
 
106
106
  if (!derived) {
107
- const frameAssertionString = localMetaContext.nodeAsString(frameAssertionNode);
107
+ const frameAssertionString = localContext.nodeAsString(frameAssertionNode);
108
108
 
109
- localMetaContext.trace(`Verifying the '${frameAssertionString}' stated frame assertion...`, frameAssertionNode);
109
+ localContext.trace(`Verifying the '${frameAssertionString}' stated frame assertion...`, frameAssertionNode);
110
110
 
111
111
  const metavariableNode = metavariableNodeQuery(frameAssertionNode),
112
- metavariableVerified = verifyMetavariable(metavariableNode, localMetaContext);
112
+ metavariableVerified = verifyMetavariable(metavariableNode, localContext);
113
113
 
114
114
  if (metavariableVerified) {
115
115
  const frames = [],
116
116
  frameNode = frameNodeQuery(frameAssertionNode),
117
- frameVerified = verifyFrame(frameNode, frames, assignments, derived, localMetaContext);
117
+ frameVerified = verifyFrame(frameNode, frames, assignments, derived, localContext);
118
118
 
119
119
  if (frameVerified) {
120
120
  const firstFrame = first(frames),
@@ -130,21 +130,21 @@ function verifyStatedFrameAssertion(frameAssertionNode, assignments, derived, lo
130
130
  }
131
131
 
132
132
  if (statedFrameAssertionVerified) {
133
- localMetaContext.debug(`...verified the '${frameAssertionString}' stated frame assertion.`, frameAssertionNode);
133
+ localContext.debug(`...verified the '${frameAssertionString}' stated frame assertion.`, frameAssertionNode);
134
134
  }
135
135
  }
136
136
 
137
137
  return statedFrameAssertionVerified;
138
138
  }
139
139
 
140
- function verifyMetavariable(metavariableNode, localMetaContext) {
140
+ function verifyMetavariable(metavariableNode, localContext) {
141
141
  let metavariableVerified = false;
142
142
 
143
- const metavariableString = localMetaContext.nodeAsString(metavariableNode);
143
+ const metavariableString = localContext.nodeAsString(metavariableNode);
144
144
 
145
- localMetaContext.trace(`Verifying the '${metavariableString}' metavariable...`, metavariableNode);
145
+ localContext.trace(`Verifying the '${metavariableString}' metavariable...`, metavariableNode);
146
146
 
147
- const metavariable = localMetaContext.findMetavariableByMetavariableNode(metavariableNode, localMetaContext);
147
+ const metavariable = localContext.findMetavariableByMetavariableNode(metavariableNode, localContext);
148
148
 
149
149
  if (metavariable !== null) {
150
150
  const metaType = metavariable.getMetaType();
@@ -155,14 +155,14 @@ function verifyMetavariable(metavariableNode, localMetaContext) {
155
155
  const frameMetaTypeName = frameMetaType.getName(),
156
156
  metaTypeString = metaType.asString();
157
157
 
158
- localMetaContext.debug(`The '${metavariableString}' metavariable's meta-type is '${metaTypeString}' when it should be '${frameMetaTypeName}'.`, metavariableNode);
158
+ localContext.debug(`The '${metavariableString}' metavariable's meta-type is '${metaTypeString}' when it should be '${frameMetaTypeName}'.`, metavariableNode);
159
159
  }
160
160
  } else {
161
- localMetaContext.debug(`The '${metavariableString}' metavariable is not present'.`, metavariableNode);
161
+ localContext.debug(`The '${metavariableString}' metavariable is not present'.`, metavariableNode);
162
162
  }
163
163
 
164
164
  if (metavariableVerified) {
165
- localMetaContext.debug(`...verified the '${metavariableString}' metavariable.`, metavariableNode);
165
+ localContext.debug(`...verified the '${metavariableString}' metavariable.`, metavariableNode);
166
166
  }
167
167
 
168
168
  return metavariableVerified;