occam-verify-cli 1.0.448 → 1.0.472

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 (222) hide show
  1. package/lib/constants.js +13 -5
  2. package/lib/context/ephemeral.js +270 -0
  3. package/lib/context/file.js +136 -128
  4. package/lib/context/liminal.js +120 -0
  5. package/lib/context/literal.js +92 -0
  6. package/lib/context/nominal.js +15 -1
  7. package/lib/context/release.js +68 -9
  8. package/lib/context/scoped.js +322 -0
  9. package/lib/context/synthetic.js +133 -0
  10. package/lib/element/assertion/contained.js +66 -66
  11. package/lib/element/assertion/defined.js +32 -32
  12. package/lib/element/assertion/property.js +39 -39
  13. package/lib/element/assertion/satisfies.js +22 -22
  14. package/lib/element/assumption.js +71 -87
  15. package/lib/element/combinator/bracketed.js +1 -10
  16. package/lib/element/conclusion.js +19 -15
  17. package/lib/element/constructor/bracketed.js +1 -10
  18. package/lib/element/constructor.js +2 -2
  19. package/lib/element/declaration/combinator.js +1 -2
  20. package/lib/element/declaration/metavariable.js +3 -3
  21. package/lib/element/declaration/variable.js +3 -3
  22. package/lib/element/deduction.js +26 -20
  23. package/lib/element/derivation.js +3 -3
  24. package/lib/element/equality.js +5 -5
  25. package/lib/element/equivalence.js +112 -107
  26. package/lib/element/equivalences.js +24 -10
  27. package/lib/element/error.js +3 -3
  28. package/lib/element/frame.js +73 -62
  29. package/lib/element/hypothesis.js +2 -2
  30. package/lib/element/judgement.js +40 -60
  31. package/lib/element/metaType.js +4 -4
  32. package/lib/element/metavariable.js +49 -38
  33. package/lib/element/parameter.js +13 -5
  34. package/lib/element/procedureCall.js +16 -16
  35. package/lib/element/proof.js +14 -13
  36. package/lib/element/proofAssertion/premise.js +319 -0
  37. package/lib/element/proofAssertion/step.js +309 -0
  38. package/lib/element/proofAssertion/supposition.js +333 -0
  39. package/lib/element/proofAssertion.js +20 -10
  40. package/lib/element/propertyRelation.js +2 -2
  41. package/lib/element/reference.js +72 -30
  42. package/lib/element/rule.js +26 -28
  43. package/lib/element/section.js +5 -5
  44. package/lib/element/signature.js +9 -6
  45. package/lib/element/statement.js +44 -36
  46. package/lib/element/subproof.js +18 -17
  47. package/lib/element/substitution/frame.js +86 -49
  48. package/lib/element/substitution/reference.js +101 -19
  49. package/lib/element/substitution/statement.js +128 -105
  50. package/lib/element/substitution/term.js +93 -57
  51. package/lib/element/substitution.js +20 -69
  52. package/lib/element/substitutions.js +49 -34
  53. package/lib/element/term.js +41 -30
  54. package/lib/element/topLevelAssertion/axiom.js +331 -0
  55. package/lib/element/{conjecture.js → topLevelAssertion/conjecture.js} +10 -10
  56. package/lib/element/{lemma.js → topLevelAssertion/lemma.js} +9 -9
  57. package/lib/element/{theorem.js → topLevelAssertion/theorem.js} +8 -8
  58. package/lib/element/topLevelAssertion.js +434 -0
  59. package/lib/element/{metaLemma.js → topLevelMetaAssertion/metaLemma.js} +8 -8
  60. package/lib/element/{metatheorem.js → topLevelMetaAssertion/metatheorem.js} +8 -8
  61. package/lib/element/topLevelMetaAssertion.js +293 -0
  62. package/lib/element/type.js +4 -4
  63. package/lib/element/variable.js +48 -40
  64. package/lib/index.js +3 -3
  65. package/lib/main.js +3 -3
  66. package/lib/metaTypes.js +18 -15
  67. package/lib/node/frame.js +2 -2
  68. package/lib/node/metavariable.js +4 -4
  69. package/lib/node/parameter.js +28 -7
  70. package/lib/node/proofAssertion/premise.js +116 -0
  71. package/lib/node/proofAssertion/step.js +152 -0
  72. package/lib/node/proofAssertion/supposition.js +116 -0
  73. package/lib/node/{premise.js → proofAssertion.js} +11 -18
  74. package/lib/node/statement.js +2 -2
  75. package/lib/node/substitution/frame.js +9 -31
  76. package/lib/node/substitution/reference.js +137 -0
  77. package/lib/node/substitution/statement.js +9 -31
  78. package/lib/node/substitution/term.js +9 -23
  79. package/lib/node/{axiom.js → topLevelAssertion/axiom.js} +7 -7
  80. package/lib/node/{conjecture.js → topLevelAssertion/conjecture.js} +7 -7
  81. package/lib/node/{lemma.js → topLevelAssertion/lemma.js} +7 -7
  82. package/lib/node/{theorem.js → topLevelAssertion/theorem.js} +7 -7
  83. package/lib/node/{axiomLemmaTheoremConjecture.js → topLevelAssertion.js} +9 -9
  84. package/lib/node/{metaLemma.js → topLevelMetaAssertion/metaLemma.js} +7 -7
  85. package/lib/node/{metatheorem.js → topLevelMetaAssertion/metatheorem.js} +7 -7
  86. package/lib/node/{metaLemmaMetaTheorem.js → topLevelMetaAssertion.js} +9 -9
  87. package/lib/nonTerminalNodeMap.js +15 -14
  88. package/lib/preamble.js +10 -10
  89. package/lib/process/instantiate.js +6 -21
  90. package/lib/process/unify.js +11 -10
  91. package/lib/tokenTypes.js +22 -0
  92. package/lib/types.js +3 -3
  93. package/lib/utilities/bnf.js +5 -5
  94. package/lib/utilities/context.js +63 -0
  95. package/lib/utilities/element.js +235 -408
  96. package/lib/utilities/instance.js +12 -34
  97. package/lib/utilities/json.js +3 -2
  98. package/lib/utilities/string.js +56 -21
  99. package/lib/utilities/unification.js +38 -32
  100. package/lib/utilities/validation.js +47 -50
  101. package/package.json +2 -2
  102. package/src/constants.js +12 -1
  103. package/src/context/ephemeral.js +257 -0
  104. package/src/context/file.js +108 -116
  105. package/src/context/liminal.js +67 -0
  106. package/src/context/literal.js +51 -0
  107. package/src/context/nominal.js +12 -0
  108. package/src/context/release.js +48 -8
  109. package/src/context/{local.js → scoped.js} +43 -125
  110. package/src/context/synthetic.js +60 -0
  111. package/src/element/assertion/contained.js +49 -47
  112. package/src/element/assertion/defined.js +29 -27
  113. package/src/element/assertion/property.js +35 -35
  114. package/src/element/assertion/satisfies.js +19 -18
  115. package/src/element/assumption.js +71 -93
  116. package/src/element/combinator/bracketed.js +0 -7
  117. package/src/element/conclusion.js +25 -24
  118. package/src/element/constructor/bracketed.js +0 -7
  119. package/src/element/constructor.js +1 -1
  120. package/src/element/declaration/combinator.js +0 -1
  121. package/src/element/declaration/metavariable.js +2 -2
  122. package/src/element/declaration/variable.js +5 -5
  123. package/src/element/deduction.js +33 -31
  124. package/src/element/derivation.js +2 -2
  125. package/src/element/equality.js +4 -4
  126. package/src/element/equivalence.js +115 -135
  127. package/src/element/equivalences.js +9 -7
  128. package/src/element/error.js +4 -2
  129. package/src/element/frame.js +80 -65
  130. package/src/element/hypothesis.js +1 -1
  131. package/src/element/judgement.js +42 -62
  132. package/src/element/metaType.js +3 -4
  133. package/src/element/metavariable.js +59 -56
  134. package/src/element/parameter.js +10 -5
  135. package/src/element/procedureCall.js +20 -18
  136. package/src/element/proof.js +14 -16
  137. package/src/element/{premise.js → proofAssertion/premise.js} +57 -53
  138. package/src/element/{step.js → proofAssertion/step.js} +59 -62
  139. package/src/element/{supposition.js → proofAssertion/supposition.js} +67 -56
  140. package/src/element/proofAssertion.js +24 -13
  141. package/src/element/propertyRelation.js +1 -1
  142. package/src/element/reference.js +87 -37
  143. package/src/element/rule.js +31 -37
  144. package/src/element/section.js +5 -5
  145. package/src/element/signature.js +8 -8
  146. package/src/element/statement.js +52 -48
  147. package/src/element/subproof.js +16 -18
  148. package/src/element/substitution/frame.js +104 -50
  149. package/src/element/substitution/reference.js +120 -20
  150. package/src/element/substitution/statement.js +169 -130
  151. package/src/element/substitution/term.js +104 -63
  152. package/src/element/substitution.js +16 -58
  153. package/src/element/substitutions.js +43 -41
  154. package/src/element/term.js +47 -41
  155. package/src/element/{axiom.js → topLevelAssertion/axiom.js} +22 -20
  156. package/src/element/{conjecture.js → topLevelAssertion/conjecture.js} +5 -6
  157. package/src/element/{lemma.js → topLevelAssertion/lemma.js} +5 -6
  158. package/src/element/{theorem.js → topLevelAssertion/theorem.js} +5 -5
  159. package/src/element/{axiomLemmaTheoremConjecture.js → topLevelAssertion.js} +37 -33
  160. package/src/element/{metaLemma.js → topLevelMetaAssertion/metaLemma.js} +5 -6
  161. package/src/element/{metatheorem.js → topLevelMetaAssertion/metatheorem.js} +5 -6
  162. package/src/element/{metaLemmaMetatheorem.js → topLevelMetaAssertion.js} +19 -17
  163. package/src/element/type.js +2 -4
  164. package/src/element/variable.js +47 -48
  165. package/src/index.js +2 -1
  166. package/src/main.js +2 -1
  167. package/src/metaTypes.js +25 -9
  168. package/src/node/frame.js +1 -1
  169. package/src/node/metavariable.js +3 -3
  170. package/src/node/parameter.js +32 -5
  171. package/src/node/proofAssertion/premise.js +16 -0
  172. package/src/node/{step.js → proofAssertion/step.js} +4 -18
  173. package/src/node/proofAssertion/supposition.js +16 -0
  174. package/src/node/proofAssertion.js +23 -0
  175. package/src/node/statement.js +1 -1
  176. package/src/node/substitution/frame.js +6 -32
  177. package/src/node/substitution/reference.js +38 -0
  178. package/src/node/substitution/statement.js +6 -32
  179. package/src/node/substitution/term.js +6 -22
  180. package/src/node/topLevelAssertion/axiom.js +13 -0
  181. package/src/node/topLevelAssertion/conjecture.js +13 -0
  182. package/src/node/topLevelAssertion/lemma.js +13 -0
  183. package/src/node/topLevelAssertion/theorem.js +13 -0
  184. package/src/node/{axiomLemmaTheoremConjecture.js → topLevelAssertion.js} +1 -1
  185. package/src/node/topLevelMetaAssertion/metaLemma.js +13 -0
  186. package/src/node/topLevelMetaAssertion/metatheorem.js +13 -0
  187. package/src/node/{metaLemmaMetaTheorem.js → topLevelMetaAssertion.js} +1 -1
  188. package/src/nonTerminalNodeMap.js +15 -12
  189. package/src/preamble.js +9 -9
  190. package/src/process/instantiate.js +27 -36
  191. package/src/process/unify.js +10 -9
  192. package/src/tokenTypes.js +4 -0
  193. package/src/types.js +4 -2
  194. package/src/utilities/bnf.js +3 -2
  195. package/src/utilities/context.js +46 -0
  196. package/src/utilities/element.js +302 -509
  197. package/src/utilities/instance.js +19 -42
  198. package/src/utilities/json.js +3 -1
  199. package/src/utilities/string.js +69 -28
  200. package/src/utilities/unification.js +41 -38
  201. package/src/utilities/validation.js +66 -75
  202. package/lib/context/local.js +0 -605
  203. package/lib/context/temporary.js +0 -752
  204. package/lib/element/axiom.js +0 -329
  205. package/lib/element/axiomLemmaTheoremConjecture.js +0 -427
  206. package/lib/element/metaLemmaMetatheorem.js +0 -289
  207. package/lib/element/premise.js +0 -307
  208. package/lib/element/step.js +0 -311
  209. package/lib/element/supposition.js +0 -320
  210. package/lib/log.js +0 -150
  211. package/lib/node/step.js +0 -166
  212. package/lib/node/supposition.js +0 -130
  213. package/src/context/temporary.js +0 -476
  214. package/src/log.js +0 -118
  215. package/src/node/axiom.js +0 -13
  216. package/src/node/conjecture.js +0 -13
  217. package/src/node/lemma.js +0 -13
  218. package/src/node/metaLemma.js +0 -13
  219. package/src/node/metatheorem.js +0 -13
  220. package/src/node/premise.js +0 -30
  221. package/src/node/supposition.js +0 -30
  222. package/src/node/theorem.js +0 -13
@@ -1,10 +1,10 @@
1
1
  "use strict";
2
2
 
3
- import NonTerminalNode from "../nonTerminalNode";
3
+ import ProofAssertionNode from "../../node/proofAssertion";
4
4
 
5
- import { NONSENSE_RULE_NAME, STATEMENT_RULE_NAME, QUALIFICATION_RULE_NAME } from "../ruleNames";
5
+ import { QUALIFICATION_RULE_NAME } from "../../ruleNames";
6
6
 
7
- export default class StepNode extends NonTerminalNode {
7
+ export default class StepNode extends ProofAssertionNode {
8
8
  isStepNode() {
9
9
  const stepNode = true;
10
10
 
@@ -41,20 +41,6 @@ export default class StepNode extends NonTerminalNode {
41
41
  return satisfiedAssertionNode;
42
42
  }
43
43
 
44
- getNonsenseNode() {
45
- const ruleName = NONSENSE_RULE_NAME,
46
- nonsenseNode = this.getNodeByRuleName(ruleName);
47
-
48
- return nonsenseNode;
49
- }
50
-
51
- getStatementNode() {
52
- const ruleName = STATEMENT_RULE_NAME,
53
- statementNode = this.getNodeByRuleName(ruleName);
54
-
55
- return statementNode;
56
- }
57
-
58
44
  getQualificationNode() {
59
45
  const ruleName = QUALIFICATION_RULE_NAME,
60
46
  qualificationNode = this.getNodeByRuleName(ruleName);
@@ -62,5 +48,5 @@ export default class StepNode extends NonTerminalNode {
62
48
  return qualificationNode;
63
49
  }
64
50
 
65
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(StepNode, ruleName, childNodes, opacity, precedence); }
51
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return ProofAssertionNode.fromRuleNameChildNodesOpacityAndPrecedence(StepNode, ruleName, childNodes, opacity, precedence); }
66
52
  }
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ import ProofAssertionNode from "../../node/proofAssertion";
4
+
5
+ import { PROCEDURE_CALL_RULE_NAME } from "../../ruleNames";
6
+
7
+ export default class SuppositionNode extends ProofAssertionNode {
8
+ getProcedureCallNode() {
9
+ const ruleName = PROCEDURE_CALL_RULE_NAME,
10
+ procedureCallNode = this.getNodeByRuleName(ruleName);
11
+
12
+ return procedureCallNode;
13
+ }
14
+
15
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return ProofAssertionNode.fromRuleNameChildNodesOpacityAndPrecedence(SuppositionNode, ruleName, childNodes, opacity, precedence); }
16
+ }
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+
3
+ import NonTerminalNode from "../nonTerminalNode";
4
+
5
+ import { NONSENSE_RULE_NAME, STATEMENT_RULE_NAME } from "../ruleNames";
6
+
7
+ export default class ProofAssertionNode extends NonTerminalNode {
8
+ getNonsenseNode() {
9
+ const ruleName = NONSENSE_RULE_NAME,
10
+ nonsenseNode = this.getNodeByRuleName(ruleName);
11
+
12
+ return nonsenseNode;
13
+ }
14
+
15
+ getStatementNode() {
16
+ const ruleName = STATEMENT_RULE_NAME,
17
+ statementNode = this.getNodeByRuleName(ruleName);
18
+
19
+ return statementNode;
20
+ }
21
+
22
+ static fromRuleNameChildNodesOpacityAndPrecedence(Class, ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(Class, ruleName, childNodes, opacity, precedence); }
23
+ }
@@ -36,7 +36,7 @@ export default class StatementNode extends NonTerminalNode {
36
36
 
37
37
  const metavariableNode = this.getMetavariableNode();
38
38
 
39
- if (metavariableName !== null) {
39
+ if (metavariableNode !== null) {
40
40
  metavariableName = metavariableNode.getMetavariableName();
41
41
  }
42
42
 
@@ -5,44 +5,18 @@ import SubstitutionNode from "../../node/substitution";
5
5
  import { FRAME_RULE_NAME } from "../../ruleNames";
6
6
 
7
7
  export default class FrameSubstitutionNode extends SubstitutionNode {
8
- getFrameNode() {
9
- const firstFrameNode = this.getFirstFrameNode(),
10
- frameNode = firstFrameNode; ///
11
-
12
- return frameNode;
13
- }
14
-
15
- getMetavariableNode() {
16
- const lastMetavariableNode = this.getLastMetavariableNode(),
17
- metavariableNode = lastMetavariableNode; ///
18
-
19
- return metavariableNode;
20
- }
21
-
22
- getLastMetavariableNode() {
23
- let lastMetavariableNode = null;
24
-
8
+ getTargetFrameNode() {
25
9
  const lastFrameNode = this.getLastFrameNode(),
26
- singularMetavariableNode = lastFrameNode.getSingularMetavariableNode();
27
-
28
- if (singularMetavariableNode !== null) {
29
- lastMetavariableNode = singularMetavariableNode; ///
30
- }
10
+ targetFrameNode = lastFrameNode; ///
31
11
 
32
- return lastMetavariableNode;
12
+ return targetFrameNode;
33
13
  }
34
14
 
35
- getFirstMetavariableNode() {
36
- let firstMetavariableNode = null;
37
-
15
+ getReplacementFrameNode() {
38
16
  const firstFrameNode = this.getFirstFrameNode(),
39
- singularMetavariableNode = firstFrameNode.getSingularMetavariableNode();
40
-
41
- if (singularMetavariableNode !== null) {
42
- firstMetavariableNode = singularMetavariableNode; ///
43
- }
17
+ replacementFrameNode = firstFrameNode; ///
44
18
 
45
- return firstMetavariableNode;
19
+ return replacementFrameNode;
46
20
  }
47
21
 
48
22
  getLastFrameNode() {
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+
3
+ import SubstitutionNode from "../../node/substitution";
4
+
5
+ import { REFERENCE_RULE_NAME } from "../../ruleNames";
6
+
7
+ export default class ReferenceSubstitutionNode extends SubstitutionNode {
8
+ getTargetReferenceNode() {
9
+ const lastReferenceNode = this.getLastReferenceNode(),
10
+ targetReferenceNode = lastReferenceNode; ///
11
+
12
+ return targetReferenceNode;
13
+ }
14
+
15
+ getReplacementReferenceNode() {
16
+ const firstReferenceNode = this.getFirstReferenceNode(),
17
+ replacementReferenceNode = firstReferenceNode; ///
18
+
19
+ return replacementReferenceNode;
20
+ }
21
+
22
+ getLastReferenceNode() {
23
+ const ruleName = REFERENCE_RULE_NAME,
24
+ lastReferenceNode = this.getLastNodeByRuleName(ruleName);
25
+
26
+ return lastReferenceNode;
27
+ }
28
+
29
+ getFirstReferenceNode() {
30
+ const ruleName = REFERENCE_RULE_NAME,
31
+ firstReferenceNode = this.getFirstNodeByRuleName(ruleName);
32
+
33
+ return firstReferenceNode;
34
+ }
35
+
36
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return SubstitutionNode.fromRuleNameChildNodesOpacityAndPrecedence(ReferenceSubstitutionNode, ruleName, childNodes, opacity, precedence); }
37
+ }
38
+
@@ -5,44 +5,18 @@ import SubstitutionNode from "../../node/substitution";
5
5
  import { STATEMENT_RULE_NAME } from "../../ruleNames";
6
6
 
7
7
  export default class StatementSubstitutionNode extends SubstitutionNode {
8
- getStatementNode() {
9
- const firstStatementNode = this.getFirstStatementNode(),
10
- statementNode = firstStatementNode; ///
11
-
12
- return statementNode;
13
- }
14
-
15
- getMetavariableNode() {
16
- const lastMetavariableNode = this.getLastVariableNode(),
17
- metavariableNode = lastMetavariableNode; ///
18
-
19
- return metavariableNode;
20
- }
21
-
22
- getLastMetavariableNode() {
23
- let lastMetavariableNode = null;
24
-
8
+ getTargetStatementNode() {
25
9
  const lastStatementNode = this.getLastStatementNode(),
26
- singularMetavariableNode = lastStatementNode.getSingularMetavariableNode();
27
-
28
- if (singularMetavariableNode !== null) {
29
- lastMetavariableNode = singularMetavariableNode; ///
30
- }
10
+ targetStatementNode = lastStatementNode; ///
31
11
 
32
- return lastMetavariableNode;
12
+ return targetStatementNode;
33
13
  }
34
14
 
35
- getFirstMetavariableNode() {
36
- let firstMetavariableNode = null;
37
-
15
+ getReplacementStatementNode() {
38
16
  const firstStatementNode = this.getFirstStatementNode(),
39
- singularMetavariableNode = firstStatementNode.getSingularMetavariableNode();
40
-
41
- if (singularMetavariableNode !== null) {
42
- firstMetavariableNode = singularMetavariableNode; ///
43
- }
17
+ replacementStatementNode = firstStatementNode; ///
44
18
 
45
- return firstMetavariableNode;
19
+ return replacementStatementNode;
46
20
  }
47
21
 
48
22
  getLastStatementNode() {
@@ -5,34 +5,18 @@ import SubstitutionNode from "../../node/substitution";
5
5
  import { TERM_RULE_NAME } from "../../ruleNames";
6
6
 
7
7
  export default class TermSubstitutionNode extends SubstitutionNode {
8
- getTermNode() {
9
- const firstTermNode = this.getFirstTermNode(),
10
- termNode = firstTermNode; ///
11
-
12
- return termNode;
13
- }
14
-
15
- getVariableNode() {
16
- const lastVariableNode = this.getLastVariableNode(),
17
- variableNode = lastVariableNode; ///
18
-
19
- return variableNode;
20
- }
21
-
22
- getLastVariableNode() {
8
+ getTargetTermNode() {
23
9
  const lastTermNode = this.getLastTermNode(),
24
- singularVariableNode = lastTermNode.getSingularVariableNode(),
25
- lastVariableNode = singularVariableNode; ///
10
+ targetTermNode = lastTermNode; ///
26
11
 
27
- return lastVariableNode;
12
+ return targetTermNode;
28
13
  }
29
14
 
30
- getFirstVariableNode() {
15
+ getReplacementTermNode() {
31
16
  const firstTermNode = this.getFirstTermNode(),
32
- singularVariableNode = firstTermNode.getSingularVariableNode(),
33
- firstVariableNode = singularVariableNode; ///
17
+ replacementTermNode = firstTermNode; ///
34
18
 
35
- return firstVariableNode;
19
+ return replacementTermNode;
36
20
  }
37
21
 
38
22
  getLastTermNode() {
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ import TopLevelAssertionNode from "../../node/topLevelAssertion";
4
+
5
+ import { AXIOM_BODY_RULE_NAME, AXIOM_HEADER_RULE_NAME } from "../../ruleNames";
6
+
7
+ export default class AxiomNode extends TopLevelAssertionNode {
8
+ static bodyRuleName = AXIOM_BODY_RULE_NAME;
9
+
10
+ static headerRuleName = AXIOM_HEADER_RULE_NAME;
11
+
12
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return TopLevelAssertionNode.fromRuleNameChildNodesOpacityAndPrecedence(AxiomNode, ruleName, childNodes, opacity, precedence); }
13
+ }
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ import TopLevelAssertionNode from "../../node/topLevelAssertion";
4
+
5
+ import { CONJECTURE_BODY_RULE_NAME, CONJECTURE_HEADER_RULE_NAME } from "../../ruleNames";
6
+
7
+ export default class ConjectureNode extends TopLevelAssertionNode {
8
+ static bodyRuleName = CONJECTURE_BODY_RULE_NAME;
9
+
10
+ static headerRuleName = CONJECTURE_HEADER_RULE_NAME;
11
+
12
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return TopLevelAssertionNode.fromRuleNameChildNodesOpacityAndPrecedence(ConjectureNode, ruleName, childNodes, opacity, precedence); }
13
+ }
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ import TopLevelAssertionNode from "../../node/topLevelAssertion";
4
+
5
+ import { LEMMA_BODY_RULE_NAME, LEMMA_HEADER_RULE_NAME } from "../../ruleNames";
6
+
7
+ export default class LemmaNode extends TopLevelAssertionNode {
8
+ static bodyRuleName = LEMMA_BODY_RULE_NAME;
9
+
10
+ static headerRuleName = LEMMA_HEADER_RULE_NAME;
11
+
12
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return TopLevelAssertionNode.fromRuleNameChildNodesOpacityAndPrecedence(LemmaNode, ruleName, childNodes, opacity, precedence); }
13
+ }
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ import TopLevelAssertionNode from "../../node/topLevelAssertion";
4
+
5
+ import { THEOREM_BODY_RULE_NAME, THEOREM_HEADER_RULE_NAME } from "../../ruleNames";
6
+
7
+ export default class TheoremNode extends TopLevelAssertionNode {
8
+ static bodyRuleName = THEOREM_BODY_RULE_NAME;
9
+
10
+ static headerRuleName = THEOREM_HEADER_RULE_NAME;
11
+
12
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return TopLevelAssertionNode.fromRuleNameChildNodesOpacityAndPrecedence(TheoremNode, ruleName, childNodes, opacity, precedence); }
13
+ }
@@ -2,7 +2,7 @@
2
2
 
3
3
  import NonTerminalNode from "../nonTerminalNode";
4
4
 
5
- export default class AxiomLemmaTheoremConjectureNode extends NonTerminalNode {
5
+ export default class TopLevelAssertionNode extends NonTerminalNode {
6
6
  getBodyNode() {
7
7
  const { bodyRuleName } = this.constructor,
8
8
  ruleName = bodyRuleName, ///
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ import TopLevelMetaAssertionNode from "../../node/topLevelMetaAssertion";
4
+
5
+ import { META_LEMMA_BODY_RULE_NAME, META_LEMMA_HEADER_RULE_NAME } from "../../ruleNames";
6
+
7
+ export default class MetaLemmaNode extends TopLevelMetaAssertionNode {
8
+ static bodyRuleName = META_LEMMA_BODY_RULE_NAME;
9
+
10
+ static headerRuleName = META_LEMMA_HEADER_RULE_NAME;
11
+
12
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return TopLevelMetaAssertionNode.fromRuleNameChildNodesOpacityAndPrecedence(MetaLemmaNode, ruleName, childNodes, opacity, precedence); }
13
+ }
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+
3
+ import TopLevelMetaAssertionNode from "../../node/topLevelMetaAssertion";
4
+
5
+ import { METATHEOREM_BODY_RULE_NAME, METATHEOREM_HEADER_RULE_NAME } from "../../ruleNames";
6
+
7
+ export default class MetatheoremNode extends TopLevelMetaAssertionNode {
8
+ static bodyRuleName = METATHEOREM_BODY_RULE_NAME;
9
+
10
+ static headerRuleName = METATHEOREM_HEADER_RULE_NAME;
11
+
12
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return TopLevelMetaAssertionNode.fromRuleNameChildNodesOpacityAndPrecedence(MetatheoremNode, ruleName, childNodes, opacity, precedence); }
13
+ }
@@ -2,7 +2,7 @@
2
2
 
3
3
  import NonTerminalNode from "../nonTerminalNode";
4
4
 
5
- export default class MetaLemmaMetaTheoremNode extends NonTerminalNode {
5
+ export default class TopLevelMetaAssertionNode extends NonTerminalNode {
6
6
  getBodyNode() {
7
7
  const { bodyRuleName } = this.constructor,
8
8
  ruleName = bodyRuleName, ///
@@ -2,32 +2,32 @@
2
2
 
3
3
  import TermNode from "./node/term";
4
4
  import RuleNode from "./node/rule";
5
- import StepNode from "./node/step";
5
+ import StepNode from "./node/proofAssertion/step";
6
6
  import TypeNode from "./node/type";
7
7
  import TypesNode from "./node/types";
8
8
  import ErrorNode from "./node/error";
9
9
  import FrameNode from "./node/frame";
10
- import AxiomNode from "./node/axiom";
11
- import LemmaNode from "./node/lemma";
10
+ import AxiomNode from "./node/topLevelAssertion/axiom";
11
+ import LemmaNode from "./node/topLevelAssertion/lemma";
12
12
  import ProofNode from "./node/proof";
13
13
  import LabelNode from "./node/label";
14
14
  import LabelsNode from "./node/labels";
15
15
  import SectionNode from "./node/section";
16
- import PremiseNode from "./node/premise";
17
- import TheoremNode from "./node/theorem";
16
+ import PremiseNode from "./node/proofAssertion/premise";
17
+ import TheoremNode from "./node/topLevelAssertion/theorem";
18
18
  import ArgumentNode from "./node/argument";
19
19
  import SubproofNode from "./node/subproof";
20
20
  import PropertyNode from "./node/property";
21
21
  import MetaTypeNode from "./node/metaType";
22
22
  import EqualityNode from "./node/equality";
23
23
  import VariableNode from "./node/variable";
24
- import RuleBodyNode from "./node/body/rule";
25
24
  import DocumentNode from "./node/document";
25
+ import RuleBodyNode from "./node/body/rule";
26
26
  import StatementNode from "./node/statement";
27
27
  import ReferenceNode from "./node/reference";
28
28
  import DeductionNode from "./node/deduction";
29
29
  import JudgementNode from "./node/judgement";
30
- import MetaLemmaNode from "./node/metaLemma";
30
+ import MetaLemmaNode from "./node/topLevelMetaAssertion/metaLemma";
31
31
  import ParameterNode from "./node/parameter";
32
32
  import SignatureNode from "./node/signature";
33
33
  import AxiomBodyNode from "./node/body/axiom";
@@ -35,19 +35,19 @@ import LemmaBodyNode from "./node/body/lemma";
35
35
  import DerivationNode from "./node/derivation";
36
36
  import CombinatorNode from "./node/combinator";
37
37
  import ConclusionNode from "./node/conclusion";
38
- import ConjectureNode from "./node/conjecture";
38
+ import ConjectureNode from "./node/topLevelAssertion/conjecture";
39
39
  import HypothesisNode from "./node/hypothesis";
40
40
  import TypePrefixNode from "./node/typePrefix";
41
41
  import AssumptionNode from "./node/assumption";
42
42
  import RuleHeaderNode from "./node/header/rule";
43
- import SuppositionNode from "./node/supposition";
43
+ import SuppositionNode from "./node/proofAssertion/supposition";
44
44
  import PlaceholderNode from "./node/placeholder";
45
45
  import ConstructorNode from "./node/constructor";
46
+ import MetatheoremNode from "./node/topLevelMetaAssertion/metatheorem";
47
+ import EquivalenceNode from "./node/equivalence";
46
48
  import TheoremBodyNode from "./node/body/theorem";
47
49
  import AxiomHeaderNode from "./node/header/axiom";
48
50
  import LemmaHeaderNode from "./node/header/lemma";
49
- import MetatheoremNode from "./node/metatheorem";
50
- import EquivalenceNode from "./node/equivalence";
51
51
  import EquivalencesNode from "./node/equivalences";
52
52
  import MetaArgumentNode from "./node/metaArgument";
53
53
  import MetavariableNode from "./node/metavariable";
@@ -68,13 +68,14 @@ import MetatheoremHeaderNode from "./node/header/metatheorem";
68
68
  import PropertyAssertionNode from "./node/assertion/property";
69
69
  import SubproofAssertionNode from "./node/assertion/subproof";
70
70
  import FrameSubstitutionNode from "./node/substitution/frame";
71
- import ProcedureReferenceNode from "./node/procedureReference";
72
71
  import ParenthesisedLabelNode from "./node/parenthesisedLabel";
72
+ import ProcedureReferenceNode from "./node/procedureReference";
73
73
  import ContainedAssertionNode from "./node/assertion/contained";
74
74
  import SatisfiesAssertionNode from "./node/assertion/satisfies";
75
75
  import ParenthesisedLabelsNode from "./node/parenthesisedLabels"
76
76
  import PropertyDeclarationNode from "./node/declaration/property";
77
77
  import VariableDeclarationNode from "./node/declaration/variable";
78
+ import ReferenceSubstitutionNode from "./node/substitution/reference";
78
79
  import StatementSubstitutionNode from "./node/substitution/statement";
79
80
  import SimpleTypeDeclarationNode from "./node/declaration/simpleType";
80
81
  import CombinatorDeclarationNode from "./node/declaration/combinator";
@@ -159,6 +160,7 @@ import {
159
160
  PARENTHESISED_LABELS_RULE_NAME,
160
161
  PROPERTY_DECLARATION_RULE_NAME,
161
162
  VARIABLE_DECLARATION_RULE_NAME,
163
+ REFERENCE_SUBSTITUTION_RULE_NAME,
162
164
  STATEMENT_SUBSTITUTION_RULE_NAME,
163
165
  COMBINATOR_DECLARATION_RULE_NAME,
164
166
  SIMPLE_TYPE_DECLARATION_RULE_NAME,
@@ -244,6 +246,7 @@ const NonTerminalNodeMap = {
244
246
  [VARIABLE_DECLARATION_RULE_NAME]: VariableDeclarationNode,
245
247
  [PROPERTY_DECLARATION_RULE_NAME]: PropertyDeclarationNode,
246
248
  [STATEMENT_SUBSTITUTION_RULE_NAME]: StatementSubstitutionNode,
249
+ [REFERENCE_SUBSTITUTION_RULE_NAME]: ReferenceSubstitutionNode,
247
250
  [COMBINATOR_DECLARATION_RULE_NAME]: CombinatorDeclarationNode,
248
251
  [SIMPLE_TYPE_DECLARATION_RULE_NAME]: SimpleTypeDeclarationNode,
249
252
  [TYPE_PREFIX_DECLARATION_RULE_NAME]: TypePrefixDeclarationNode,
package/src/preamble.js CHANGED
@@ -3,15 +3,15 @@
3
3
  import Type from "./element/type";
4
4
  import Term from "./element/term";
5
5
  import Rule from "./element/rule";
6
- import Step from "./element/step";
6
+ import Step from "./element/proofAssertion/step";
7
7
  import Label from "./element/label";
8
- import Axiom from "./element/axiom";
9
- import Lemma from "./element/lemma";
8
+ import Axiom from "./element/topLevelAssertion/axiom";
9
+ import Lemma from "./element/topLevelAssertion/lemma";
10
10
  import Frame from "./element/frame";
11
11
  import Proof from "./element/proof";
12
12
  import Error from "./element/error";
13
- import Premise from "./element/premise";
14
- import Theorem from "./element/theorem";
13
+ import Premise from "./element/proofAssertion/premise";
14
+ import Theorem from "./element/topLevelAssertion/theorem";
15
15
  import Section from "./element/section";
16
16
  import Equality from "./element/equality";
17
17
  import MetaType from "./element/metaType";
@@ -22,19 +22,19 @@ import Parameter from "./element/parameter";
22
22
  import Reference from "./element/reference";
23
23
  import Statement from "./element/statement";
24
24
  import Judgement from "./element/judgement";
25
- import MetaLemma from "./element/metaLemma";
25
+ import MetaLemma from "./element/topLevelMetaAssertion/metaLemma";
26
26
  import Deduction from "./element/deduction";
27
27
  import Signature from "./element/signature";
28
28
  import TypePrefix from "./element/typePrefix";
29
- import Conjecture from "./element/conjecture";
29
+ import Conjecture from "./element/topLevelAssertion/conjecture";
30
30
  import Conclusion from "./element/conclusion";
31
31
  import Derivation from "./element/derivation";
32
32
  import Hypothesis from "./element/hypothesis";
33
33
  import Assumption from "./element/assumption";
34
34
  import Combinator from "./element/combinator";
35
35
  import Constructor from "./element/constructor";
36
- import Supposition from "./element/supposition";
37
- import Metatheorem from "./element/metatheorem";
36
+ import Supposition from "./element/proofAssertion/supposition";
37
+ import Metatheorem from "./element/topLevelMetaAssertion/metatheorem";
38
38
  import Equivalence from "./element/equivalence";
39
39
  import Equivalences from "./element/equivalences";
40
40
  import Metavariable from "./element/metavariable";
@@ -1,40 +1,30 @@
1
1
  "use strict";
2
2
 
3
- import { ruleFromBNF } from "../utilities/bnf";
4
-
5
- const termPlaceholderBNF = ` _ ::= term... <END_OF_LINE> ; `,
6
- stepPlaceholderBNF = ` _ ::= step... <END_OF_LINE> ; `,
7
- variablePlaceholderBNF = ` _ ::= variable... <END_OF_LINE> ; `,
8
- referencePlaceholderBNF = ` _ ::= reference... <END_OF_LINE> ; `,
9
- statementPlaceholderBNF = ` _ ::= statement... <END_OF_LINE> ; `,
10
- combinatorPlaceholderBNF = ` _ ::= combinator... <END_OF_LINE> ; `,
11
- constructorPlaceholderBNF = ` _ ::= constructor... <END_OF_LINE> ; `,
12
- equivalencePlaceholderBNF = ` _ ::= equivalence... <END_OF_LINE> ; `,
13
- metavariablePlaceholderBNF = ` _ ::= metavariable... <END_OF_LINE> ; `,
14
- termSubstitutionPlaceholderBNF = ` _ ::= termSubstitution... <END_OF_LINE> ; `,
15
- frameSubstitutionPlaceholderBNF = ` _ ::= frameSubstitution... <END_OF_LINE> ; `,
16
- statementSubstitutionPlaceholderBNF = ` _ ::= statementSubstitution... <END_OF_LINE> ; `,
17
- referenceSubstitutionPlaceholderBNF = ` _ ::= referenceSubstitution... <END_OF_LINE> ; `,
18
- termPlaceholderRule = ruleFromBNF(termPlaceholderBNF),
19
- stepPlaceholderRule = ruleFromBNF(stepPlaceholderBNF),
20
- variablePlaceholderRule = ruleFromBNF(variablePlaceholderBNF),
21
- referencePlaceholderRule = ruleFromBNF(referencePlaceholderBNF),
22
- statementPlaceholderRule = ruleFromBNF(statementPlaceholderBNF),
23
- combinatorPlaceholderRule = ruleFromBNF(combinatorPlaceholderBNF),
24
- constructorPlaceholderRule = ruleFromBNF(constructorPlaceholderBNF),
25
- equivalencePlaceholderRule = ruleFromBNF(equivalencePlaceholderBNF),
26
- metavariablePlaceholderRule = ruleFromBNF(metavariablePlaceholderBNF),
27
- termSubstitutionPlaceholderRule = ruleFromBNF(termSubstitutionPlaceholderBNF),
28
- frameSubstitutionPlaceholderRule = ruleFromBNF(frameSubstitutionPlaceholderBNF),
29
- statementSubstitutionPlaceholderRule = ruleFromBNF(statementSubstitutionPlaceholderBNF),
30
- referenceSubstitutionPlaceholderRule = ruleFromBNF(referenceSubstitutionPlaceholderBNF);
3
+ import { ruleFromRuleName } from "../utilities/bnf";
4
+ import { TERM_RULE_NAME,
5
+ REFERENCE_RULE_NAME,
6
+ STATEMENT_RULE_NAME,
7
+ COMBINATOR_RULE_NAME,
8
+ CONSTRUCTOR_RULE_NAME,
9
+ EQUIVALENCE_RULE_NAME,
10
+ TERM_SUBSTITUTION_RULE_NAME,
11
+ FRAME_SUBSTITUTION_RULE_NAME,
12
+ STATEMENT_SUBSTITUTION_RULE_NAME,
13
+ REFERENCE_SUBSTITUTION_RULE_NAME } from "../ruleNames";
14
+
15
+ const termPlaceholderRule = ruleFromRuleName(TERM_RULE_NAME),
16
+ referencePlaceholderRule = ruleFromRuleName(REFERENCE_RULE_NAME),
17
+ statementPlaceholderRule = ruleFromRuleName(STATEMENT_RULE_NAME),
18
+ combinatorPlaceholderRule = ruleFromRuleName(COMBINATOR_RULE_NAME),
19
+ constructorPlaceholderRule = ruleFromRuleName(CONSTRUCTOR_RULE_NAME),
20
+ equivalencePlaceholderRule = ruleFromRuleName(EQUIVALENCE_RULE_NAME),
21
+ termSubstitutionPlaceholderRule = ruleFromRuleName(TERM_SUBSTITUTION_RULE_NAME),
22
+ frameSubstitutionPlaceholderRule = ruleFromRuleName(FRAME_SUBSTITUTION_RULE_NAME),
23
+ statementSubstitutionPlaceholderRule = ruleFromRuleName(STATEMENT_SUBSTITUTION_RULE_NAME),
24
+ referenceSubstitutionPlaceholderRule = ruleFromRuleName(REFERENCE_SUBSTITUTION_RULE_NAME);
31
25
 
32
26
  export function instantiateTerm(string, context) { return instantiate(termPlaceholderRule, string, context); }
33
27
 
34
- export function instantiateStep(string, context) { return instantiate(stepPlaceholderRule, string, context); }
35
-
36
- export function instantiateVariable(string, context) { return instantiate(variablePlaceholderRule, string, context); }
37
-
38
28
  export function instantiateReference(string, context) { return instantiate(referencePlaceholderRule, string, context); }
39
29
 
40
30
  export function instantiateStatement(string, context) { return instantiate(statementPlaceholderRule, string, context); }
@@ -45,8 +35,6 @@ export function instantiateConstructor(string, context) { return instantiate(con
45
35
 
46
36
  export function instantiateEquivalence(string, context) { return instantiate(equivalencePlaceholderRule, string, context); }
47
37
 
48
- export function instantiateMetavariable(string, context) { return instantiate(metavariablePlaceholderRule, string, context); }
49
-
50
38
  export function instantiateTermSubstitution(string, context) { return instantiate(termSubstitutionPlaceholderRule, string, context); }
51
39
 
52
40
  export function instantiateFrameSubstitution(string, context) { return instantiate(frameSubstitutionPlaceholderRule, string, context); }
@@ -62,8 +50,11 @@ function instantiate(placeholderRule, string, context) {
62
50
  parser = context.getParser(),
63
51
  content = `${string}
64
52
  `,
65
- tokens = lexer.tokenise(content),
66
- startRule = placeholderRule; ///
53
+ tokens = lexer.tokenise(content);
54
+
55
+ context.setTokens(tokens);
56
+
57
+ const startRule = placeholderRule; ///
67
58
 
68
59
  node = parser.parse(tokens, startRule);
69
60