occam-verify-cli 0.0.914 → 0.0.916

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 (117) hide show
  1. package/lib/assignment/judgement.js +62 -0
  2. package/lib/axiomLemmaTheoremConjecture.js +4 -3
  3. package/lib/conclusion.js +5 -5
  4. package/lib/context/file.js +7 -7
  5. package/lib/context/local/intrinsicLevel.js +326 -0
  6. package/lib/context/local/metaLevel.js +290 -0
  7. package/lib/judgement.js +87 -0
  8. package/lib/metaConsequent.js +4 -4
  9. package/lib/metaLemmaMetatheorem.js +11 -11
  10. package/lib/metaSupposition.js +7 -7
  11. package/lib/metavariable.js +5 -5
  12. package/lib/premise.js +12 -12
  13. package/lib/rule.js +12 -12
  14. package/lib/verifier/node/metaLevel.js +214 -0
  15. package/lib/verifier/node/statementAsCombinator.js +9 -9
  16. package/lib/verifier/node/termAsConstructor.js +7 -7
  17. package/lib/verify/axiom.js +3 -3
  18. package/lib/verify/conclusion.js +7 -7
  19. package/lib/verify/conjecture.js +3 -3
  20. package/lib/verify/containedAssertion.js +23 -4
  21. package/lib/verify/declaration.js +15 -15
  22. package/lib/verify/definedAssertion.js +18 -4
  23. package/lib/verify/derivation.js +3 -3
  24. package/lib/verify/frame.js +19 -19
  25. package/lib/verify/judgement.js +121 -0
  26. package/lib/verify/lemma.js +3 -3
  27. package/lib/verify/metaConsequent.js +7 -7
  28. package/lib/verify/metaDerivation.js +3 -3
  29. package/lib/verify/metaLemma.js +6 -6
  30. package/lib/verify/metaSubDerivation.js +3 -3
  31. package/lib/verify/metaSubproof.js +7 -6
  32. package/lib/verify/metaSupposition.js +9 -9
  33. package/lib/verify/metaSuppositions.js +3 -3
  34. package/lib/verify/metaproof.js +7 -6
  35. package/lib/verify/metaproofStep.js +16 -16
  36. package/lib/verify/metastatement/qualified.js +22 -22
  37. package/lib/verify/metastatement/unqualified.js +7 -7
  38. package/lib/verify/metastatement.js +37 -37
  39. package/lib/verify/metatheorem.js +6 -6
  40. package/lib/verify/metavariable.js +6 -6
  41. package/lib/verify/premise.js +9 -9
  42. package/lib/verify/premises.js +3 -3
  43. package/lib/verify/proof.js +4 -3
  44. package/lib/verify/rule.js +6 -6
  45. package/lib/verify/ruleDerivation.js +3 -3
  46. package/lib/verify/ruleProof.js +7 -6
  47. package/lib/verify/ruleProofStep.js +16 -16
  48. package/lib/verify/ruleSubDerivation.js +3 -3
  49. package/lib/verify/ruleSubproof.js +7 -6
  50. package/lib/verify/statement.js +4 -17
  51. package/lib/verify/subDerivation.js +3 -3
  52. package/lib/verify/subproof.js +4 -3
  53. package/lib/verify/termAsConstructor.js +3 -3
  54. package/lib/verify/theorem.js +4 -4
  55. package/package.json +2 -2
  56. package/src/assignment/judgement.js +30 -0
  57. package/src/axiomLemmaTheoremConjecture.js +4 -2
  58. package/src/conclusion.js +7 -7
  59. package/src/context/file.js +5 -5
  60. package/src/context/{local.js → local/intrinsicLevel.js} +25 -20
  61. package/src/context/{localMeta.js → local/metaLevel.js} +50 -45
  62. package/src/{frameAssertion.js → judgement.js} +5 -5
  63. package/src/metaConsequent.js +7 -7
  64. package/src/metaLemmaMetatheorem.js +11 -11
  65. package/src/metaSupposition.js +13 -13
  66. package/src/metavariable.js +6 -7
  67. package/src/premise.js +26 -26
  68. package/src/rule.js +12 -12
  69. package/src/verifier/node/{metastatement.js → metaLevel.js} +19 -21
  70. package/src/verifier/node/statementAsCombinator.js +8 -8
  71. package/src/verifier/node/termAsConstructor.js +6 -6
  72. package/src/verify/axiom.js +4 -3
  73. package/src/verify/conclusion.js +5 -6
  74. package/src/verify/conjecture.js +4 -3
  75. package/src/verify/containedAssertion.js +24 -3
  76. package/src/verify/declaration.js +15 -15
  77. package/src/verify/definedAssertion.js +23 -3
  78. package/src/verify/derivation.js +2 -2
  79. package/src/verify/frame.js +18 -18
  80. package/src/verify/judgement.js +169 -0
  81. package/src/verify/lemma.js +4 -3
  82. package/src/verify/metaConsequent.js +5 -6
  83. package/src/verify/metaDerivation.js +2 -2
  84. package/src/verify/metaLemma.js +8 -7
  85. package/src/verify/metaSubDerivation.js +2 -2
  86. package/src/verify/metaSubproof.js +7 -5
  87. package/src/verify/metaSupposition.js +7 -8
  88. package/src/verify/metaSuppositions.js +2 -2
  89. package/src/verify/metaproof.js +7 -5
  90. package/src/verify/metaproofStep.js +13 -17
  91. package/src/verify/metastatement/qualified.js +24 -24
  92. package/src/verify/metastatement/unqualified.js +6 -6
  93. package/src/verify/metastatement.js +36 -36
  94. package/src/verify/metatheorem.js +8 -7
  95. package/src/verify/metavariable.js +5 -5
  96. package/src/verify/premise.js +7 -8
  97. package/src/verify/premises.js +2 -2
  98. package/src/verify/proof.js +4 -2
  99. package/src/verify/rule.js +8 -7
  100. package/src/verify/ruleDerivation.js +2 -2
  101. package/src/verify/ruleProof.js +7 -5
  102. package/src/verify/ruleProofStep.js +13 -17
  103. package/src/verify/ruleSubDerivation.js +2 -2
  104. package/src/verify/ruleSubproof.js +7 -5
  105. package/src/verify/statement.js +2 -22
  106. package/src/verify/subDerivation.js +2 -2
  107. package/src/verify/subproof.js +4 -2
  108. package/src/verify/termAsConstructor.js +4 -3
  109. package/src/verify/theorem.js +5 -4
  110. package/lib/assignment/frameAssertion.js +0 -62
  111. package/lib/context/local.js +0 -320
  112. package/lib/context/localMeta.js +0 -284
  113. package/lib/frameAssertion.js +0 -87
  114. package/lib/verifier/node/metastatement.js +0 -214
  115. package/lib/verify/frameAssertion.js +0 -121
  116. package/src/assignment/frameAssertion.js +0 -30
  117. package/src/verify/frameAssertion.js +0 -169
@@ -13,18 +13,18 @@ const termNodeQuery = nodeQuery("/term!"),
13
13
  nonTerminalNodeQuery = nodeQuery("/*"),
14
14
  metavariableNodeQuery = nodeQuery("/metavariable!");
15
15
 
16
- class MetastatementNodeVerifier extends NodeVerifier {
17
- verifyNonTerminalNode(nonTerminalNode, localMetaContext, verifyAhead) {
16
+ class MetaLevelNodeVerifier extends NodeVerifier {
17
+ verifyNonTerminalNode(nonTerminalNode, localContext, verifyAhead) {
18
18
  let nonTerminalNodeVerified;
19
19
 
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 MetastatementNodeVerifier extends NodeVerifier {
33
33
  },
34
34
  {
35
35
  nodeQuery: variableNodeQuery,
36
- verifyNode: (node, localMetaContext, verifyAhead) => {
36
+ verifyNode: (node, localContext, verifyAhead) => {
37
37
  let nonTerminalNodeVerified;
38
38
 
39
39
  const variableNode = node, ///
40
- variableNodeVerified = this.verifyVariableNode(variableNode, localMetaContext, verifyAhead);
40
+ variableNodeVerified = this.verifyVariableNode(variableNode, localContext, verifyAhead);
41
41
 
42
42
  nonTerminalNodeVerified = variableNodeVerified; ///
43
43
 
@@ -46,11 +46,11 @@ class MetastatementNodeVerifier extends NodeVerifier {
46
46
  },
47
47
  {
48
48
  nodeQuery: metavariableNodeQuery,
49
- verifyNode: (node, localMetaContext, verifyAhead) => {
49
+ verifyNode: (node, localContext, verifyAhead) => {
50
50
  let nonTerminalNodeVerified;
51
51
 
52
52
  const metavariableNode = node, ///
53
- metavariableNodeVerified = this.verifyMetavariableNode(metavariableNode, localMetaContext, verifyAhead);
53
+ metavariableNodeVerified = this.verifyMetavariableNode(metavariableNode, localContext, verifyAhead);
54
54
 
55
55
  nonTerminalNodeVerified = metavariableNodeVerified; ///
56
56
 
@@ -59,51 +59,49 @@ class MetastatementNodeVerifier 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
  }
73
73
  }
74
74
  ];
75
75
 
76
- const nodeVerified = verifyNode(nodeQueryMaps, nonTerminalNode, localMetaContext, verifyAhead);
76
+ const nodeVerified = verifyNode(nodeQueryMaps, nonTerminalNode, localContext, verifyAhead);
77
77
 
78
78
  nonTerminalNodeVerified = nodeVerified; ///
79
79
 
80
80
  return nonTerminalNodeVerified;
81
81
  }
82
82
 
83
- verifyMetavariableNode(metavariableNode, localMetaContext, verifyAhead) {
84
- const standaloneMetavariableVerified = verifyStandaloneMetavariable(metavariableNode, localMetaContext, verifyAhead),
83
+ verifyMetavariableNode(metavariableNode, localContext, verifyAhead) {
84
+ const standaloneMetavariableVerified = verifyStandaloneMetavariable(metavariableNode, localContext, verifyAhead),
85
85
  metavariableNodeVerified = standaloneMetavariableVerified; ///
86
86
 
87
87
  return metavariableNodeVerified;
88
88
  }
89
89
 
90
- verifyVariableNode(variableNode, localMetaContext, verifyAhead) {
91
- const localContext = localMetaContext, ///
92
- standaloneVariableVerified = verifyStandaloneVariable(variableNode, localContext, verifyAhead),
90
+ verifyVariableNode(variableNode, localContext, verifyAhead) {
91
+ const standaloneVariableVerified = verifyStandaloneVariable(variableNode, localContext, verifyAhead),
93
92
  variableNodeVerified = standaloneVariableVerified; ///
94
93
 
95
94
  return variableNodeVerified;
96
95
  }
97
96
 
98
- verifyTermNode(termNode, localMetaContext, verifyAhead) {
99
- const localContext = localMetaContext, ///
100
- standaloneTermVerified = verifyStandaloneTerm(termNode, localContext, verifyAhead),
97
+ verifyTermNode(termNode, localContext, verifyAhead) {
98
+ const standaloneTermVerified = verifyStandaloneTerm(termNode, localContext, verifyAhead),
101
99
  termNodeVerified = standaloneTermVerified; ///
102
100
 
103
101
  return termNodeVerified;
104
102
  }
105
103
  }
106
104
 
107
- const metastatementNodeVerifier = new MetastatementNodeVerifier();
105
+ const metaLevelNodeVerifier = new MetaLevelNodeVerifier();
108
106
 
109
- export default metastatementNodeVerifier;
107
+ export default metaLevelNodeVerifier;
@@ -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,48 +43,48 @@ 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 judgement = localContext.findJudgementByMetavariableNode(metavariableNode);
66
66
 
67
- if (frameAssertion !== null) {
68
- const frameAssertionDeclarations = frameAssertion.getDeclarations();
67
+ if (judgement !== null) {
68
+ const judgementDeclarations = judgement.getDeclarations();
69
69
 
70
- push(declarations, frameAssertionDeclarations);
70
+ push(declarations, judgementDeclarations);
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 judgement 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;