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,6 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import { nodeQuery } from "../utilities/query";
4
+ import { findMetaTypeByMetaTypeName } from "../metaTypes";
4
5
  import { termFromTermNode, frameFromFrameNode, statementFromStatementNode } from "../utilities/element";
5
6
  import { terminalNodeMapFromNodes, areTerminalNodeMapsEqual, isLastRemainingArgumentFunction } from "../utilities/pass";
6
7
 
@@ -344,7 +345,7 @@ class CombinatorPass extends Pass {
344
345
  context = generalContext; ///
345
346
 
346
347
  const metaTypeName = metaTypeNode.getMetaTypeName(),
347
- metaType = context.findMetaTypeByMetaTypeName(metaTypeName);
348
+ metaType = findMetaTypeByMetaTypeName(metaTypeName);
348
349
 
349
350
  context = specificContext; ///
350
351
 
@@ -372,7 +373,7 @@ class CombinatorPass extends Pass {
372
373
  context = generalContext; ///
373
374
 
374
375
  const metaTypeName = metaTypeNode.getMetaTypeName(),
375
- metaType = context.findMetaTypeByMetaTypeName(metaTypeName);
376
+ metaType = findMetaTypeByMetaTypeName(metaTypeName);
376
377
 
377
378
  context = specificContext; ///
378
379
 
@@ -406,7 +407,7 @@ class CombinatorPass extends Pass {
406
407
  context = specificContext; ///
407
408
 
408
409
  const term = termFromTermNode(termNode, context),
409
- termValidatesGivenType = term.validateGivenType(type, generalContext, specificContext);
410
+ termValidatesGivenType = term.validateGivenType(type, context);
410
411
 
411
412
  if (termValidatesGivenType) {
412
413
  success = true;
@@ -441,7 +442,7 @@ class ConstructorPass extends Pass {
441
442
  context = specificContext; ///
442
443
 
443
444
  const term = termFromTermNode(termNode, context),
444
- termValidatesGivenType = term.validateGivenType(type, generalContext, specificContext);
445
+ termValidatesGivenType = term.validateGivenType(type, context);
445
446
 
446
447
  if (termValidatesGivenType) {
447
448
  success = true;
@@ -468,7 +469,7 @@ class MetavariablePass extends Pass {
468
469
  type = generalContext.findTypeByNominalTypeName(nominalTypeName),
469
470
  context = specificContext, ///
470
471
  term = context.findTermByTermNode(termNode),
471
- termValidatesGivenType = term.validateGivenType(type, generalContext, specificContext);
472
+ termValidatesGivenType = term.validateGivenType(type, context);
472
473
 
473
474
  if (termValidatesGivenType) {
474
475
  success = true;
@@ -485,7 +486,7 @@ class IntrinsicLevelPass extends Pass {
485
486
  {
486
487
  generalNodeQuery: termVariableNodeQuery,
487
488
  specificNodeQuery: termNodeQuery,
488
- run: (generalTermVariableNode, specificTermNode, substitutions, generalContext, specificContext) => {
489
+ run: (generalTermVariableNode, specificTermNode, generalContext, specificContext) => {
489
490
  let success = false;
490
491
 
491
492
  const termNode = specificTermNode, ///
@@ -501,7 +502,7 @@ class IntrinsicLevelPass extends Pass {
501
502
  context = specificContext; ///
502
503
 
503
504
  const term = context.findTermByTermNode(termNode),
504
- termUnifies = variable.unifyTerm(term, substitutions, generalContext, specificContext);
505
+ termUnifies = variable.unifyTerm(term, generalContext, specificContext);
505
506
 
506
507
  if (termUnifies) {
507
508
  success = true;
@@ -611,14 +612,14 @@ export function unifyStatementWithCombinator(statement, combinator, assignments,
611
612
  return statementUnifiesWithCombinator;
612
613
  }
613
614
 
614
- export function unifyMetavariableIntrinsically(generalMetavariable, specificMetavariable, substitutions, generalContext, specificContext) {
615
+ export function unifyMetavariableIntrinsically(generalMetavariable, specificMetavariable, generalContext, specificContext) {
615
616
  let metavariableUnifiesIntrinsically = false;
616
617
 
617
618
  const generalMetavariableNode = generalMetavariable.getNode(),
618
619
  specificMetavariableNode = specificMetavariable.getNode(),
619
620
  generalNode = generalMetavariableNode, ///
620
621
  specificNode = specificMetavariableNode, ///
621
- success = intrinsicLevelPass.run(generalNode, specificNode, substitutions, generalContext, specificContext);
622
+ success = intrinsicLevelPass.run(generalNode, specificNode, generalContext, specificContext);
622
623
 
623
624
  if (success) {
624
625
  metavariableUnifiesIntrinsically = true;
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export const NAME_TOKEN_TYPE = "name";
4
+ export const IDENTIFIER_TOKEN_TYPE = "identifier";
package/src/types.js CHANGED
@@ -9,9 +9,11 @@ let baseType = null;
9
9
  export function baseTypeFromNothing() {
10
10
  if (baseType === null) {
11
11
  const { Type } = elements,
12
- name = BASE_TYPE_SYMBOL; ///
12
+ name = BASE_TYPE_SYMBOL, ///
13
+ context = null,
14
+ provisional = false;
13
15
 
14
- baseType = Type.fromName(name);
16
+ baseType = Type.fromNameAndProvisional(name, provisional, context);
15
17
  }
16
18
 
17
19
  return baseType;
@@ -9,8 +9,9 @@ const { first } = arrayUtilities;
9
9
  const bnfLexer = BNFLexer.fromNothing(),
10
10
  bnfParser = BNFParser.fromNothing();
11
11
 
12
- export function ruleFromBNF(bnf) {
13
- const tokens = bnfLexer.tokensFromBNF(bnf),
12
+ export function ruleFromRuleName(ruleName) {
13
+ const bnf = ` _ ::= ${ruleName}... <END_OF_LINE> ; `,
14
+ tokens = bnfLexer.tokensFromBNF(bnf),
14
15
  rules = bnfParser.rulesFromTokens(tokens),
15
16
  firstRule = first(rules),
16
17
  rule = firstRule; ///
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+
3
+ import ScopedContext from "../context/scoped";
4
+ import LiminalContext from "../context/liminal";
5
+ import LiteralContext from "../context/literal";
6
+ import EphemeralContext from "../context/ephemeral";
7
+ import SyntheticContext from "../context/synthetic";
8
+
9
+ export function scope(innerFunction, context) {
10
+ const scopedContext = ScopedContext.fromNothing(context);
11
+
12
+ context = scopedContext; ///
13
+
14
+ return innerFunction(context);
15
+ }
16
+
17
+ export function attempt(innerFunction, context) {
18
+ const ephemeralContext = EphemeralContext.fromNothing(context);
19
+
20
+ context = ephemeralContext; ///
21
+
22
+ return innerFunction(context);
23
+ }
24
+
25
+ export function liminally(innerFunction, context) {
26
+ const liminalContext = LiminalContext.fromNothing(context);
27
+
28
+ context = liminalContext; ///
29
+
30
+ return innerFunction(context);
31
+ }
32
+
33
+ export function literally(innerFunction, context) {
34
+ const literalContext = LiteralContext.fromNothing(context);
35
+
36
+ context = literalContext; ///
37
+
38
+ return innerFunction(context);
39
+ }
40
+
41
+ export function synthetically(innerFunction, generalContext, specificContext) {
42
+ const syntheticContext = SyntheticContext.fromNothing(generalContext, specificContext),
43
+ context = syntheticContext; ///
44
+
45
+ return innerFunction(context);
46
+ }