occam-verify-cli 1.0.562 → 1.0.569

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 (87) hide show
  1. package/lib/context/ephemeral.js +1 -1
  2. package/lib/context/file/nominal.js +1 -13
  3. package/lib/context/liminal.js +84 -6
  4. package/lib/element/assertion/satisfies.js +4 -46
  5. package/lib/element/assumption.js +49 -69
  6. package/lib/element/conclusion.js +3 -3
  7. package/lib/element/declaration/metavariable.js +2 -1
  8. package/lib/element/declaration/variable.js +2 -1
  9. package/lib/element/frame.js +56 -42
  10. package/lib/element/judgement.js +2 -2
  11. package/lib/element/metavariable.js +26 -35
  12. package/lib/element/proofAssertion/premise.js +26 -29
  13. package/lib/element/proofAssertion/step.js +4 -44
  14. package/lib/element/proofAssertion/supposition.js +161 -32
  15. package/lib/element/proofAssertion.js +5 -5
  16. package/lib/element/reference.js +30 -12
  17. package/lib/element/rule.js +21 -55
  18. package/lib/element/statement.js +11 -4
  19. package/lib/element/subproof.js +2 -2
  20. package/lib/element/substitution/frame.js +1 -2
  21. package/lib/element/substitution/reference.js +1 -2
  22. package/lib/element/substitution/statement.js +3 -46
  23. package/lib/element/substitution/term.js +1 -2
  24. package/lib/element/substitution.js +8 -1
  25. package/lib/element/substitutions.js +1 -53
  26. package/lib/element/term.js +9 -2
  27. package/lib/element/topLevelAssertion/axiom.js +25 -15
  28. package/lib/element/topLevelAssertion/conjecture.js +22 -12
  29. package/lib/element/topLevelAssertion/lemma.js +27 -12
  30. package/lib/element/topLevelAssertion/theorem.js +22 -12
  31. package/lib/element/topLevelAssertion.js +331 -58
  32. package/lib/element/topLevelMetaAssertion/metaLemma.js +4 -2
  33. package/lib/element/topLevelMetaAssertion/metatheorem.js +4 -2
  34. package/lib/element/variable.js +6 -7
  35. package/lib/node/assumption.js +1 -12
  36. package/lib/node/frame.js +8 -34
  37. package/lib/process/assign.js +9 -9
  38. package/lib/process/instantiate.js +2 -14
  39. package/lib/process/unify.js +14 -14
  40. package/lib/process/validate.js +1 -1
  41. package/lib/utilities/context.js +169 -1
  42. package/lib/utilities/element.js +111 -252
  43. package/lib/utilities/unification.js +3 -5
  44. package/package.json +4 -4
  45. package/src/context/ephemeral.js +1 -1
  46. package/src/context/file/nominal.js +0 -13
  47. package/src/context/liminal.js +90 -7
  48. package/src/element/assertion/satisfies.js +2 -5
  49. package/src/element/assumption.js +62 -86
  50. package/src/element/conclusion.js +2 -2
  51. package/src/element/declaration/metavariable.js +2 -0
  52. package/src/element/declaration/variable.js +2 -0
  53. package/src/element/frame.js +72 -45
  54. package/src/element/judgement.js +2 -1
  55. package/src/element/metavariable.js +31 -39
  56. package/src/element/proofAssertion/premise.js +30 -35
  57. package/src/element/proofAssertion/step.js +4 -4
  58. package/src/element/proofAssertion/supposition.js +3 -1
  59. package/src/element/proofAssertion.js +4 -4
  60. package/src/element/reference.js +38 -13
  61. package/src/element/rule.js +25 -17
  62. package/src/element/statement.js +15 -3
  63. package/src/element/subproof.js +2 -3
  64. package/src/element/substitution/frame.js +0 -2
  65. package/src/element/substitution/reference.js +0 -2
  66. package/src/element/substitution/statement.js +1 -7
  67. package/src/element/substitution/term.js +0 -2
  68. package/src/element/substitution.js +11 -0
  69. package/src/element/substitutions.js +0 -53
  70. package/src/element/term.js +13 -1
  71. package/src/element/topLevelAssertion/axiom.js +5 -2
  72. package/src/element/topLevelAssertion/conjecture.js +5 -2
  73. package/src/element/topLevelAssertion/lemma.js +6 -3
  74. package/src/element/topLevelAssertion/theorem.js +5 -2
  75. package/src/element/topLevelAssertion.js +40 -38
  76. package/src/element/topLevelMetaAssertion/metaLemma.js +5 -2
  77. package/src/element/topLevelMetaAssertion/metatheorem.js +5 -2
  78. package/src/element/variable.js +8 -6
  79. package/src/node/assumption.js +0 -12
  80. package/src/node/frame.js +6 -34
  81. package/src/process/assign.js +16 -16
  82. package/src/process/instantiate.js +2 -10
  83. package/src/process/unify.js +14 -14
  84. package/src/process/validate.js +2 -2
  85. package/src/utilities/context.js +17 -0
  86. package/src/utilities/element.js +181 -357
  87. package/src/utilities/unification.js +3 -7
@@ -5,18 +5,6 @@ import { NonTerminalNode } from "occam-languages";
5
5
  import { STATEMENT_RULE_NAME, METAVARIABLE_RULE_NAME } from "../ruleNames";
6
6
 
7
7
  export default class AssumptionpNode extends NonTerminalNode {
8
- isSingular() {
9
- let singular = false;
10
-
11
- const statementNode = this.getStatementNode();
12
-
13
- if (statementNode === null) {
14
- singular = true;
15
- }
16
-
17
- return singular;
18
- }
19
-
20
8
  getStatementNode() {
21
9
  const ruleName = STATEMENT_RULE_NAME,
22
10
  statementNode = this.getNodeByRuleName(ruleName);
package/src/node/frame.js CHANGED
@@ -8,10 +8,10 @@ export default class FrameNode extends NonTerminalNode {
8
8
  isSingular() {
9
9
  let singular = false;
10
10
 
11
- const singularAssumptionNode = this.getSingularAssumptionNode();
11
+ const metavariableNode = this.getMetavariableNode();
12
12
 
13
- if (singularAssumptionNode !== null) {
14
- singular = singularAssumptionNode.isSingular();
13
+ if (metavariableNode !== null) {
14
+ singular = true;
15
15
  }
16
16
 
17
17
  return singular;
@@ -29,27 +29,6 @@ export default class FrameNode extends NonTerminalNode {
29
29
  return metavariableName;
30
30
  }
31
31
 
32
- getMetavariableNode() {
33
- const singularMetavariableNode = this.getSingularMetavariableNode(),
34
- metavariableNode = singularMetavariableNode; ///
35
-
36
- return metavariableNode;
37
- }
38
-
39
- getSingularMetavariableNode() {
40
- let singularMetavariableNode = null;
41
-
42
- const singularAssumptionNode = this.getSingularAssumptionNode();
43
-
44
- if (singularAssumptionNode !== null) {
45
- const metavariableNode = singularAssumptionNode.getMetavariableNode();
46
-
47
- singularMetavariableNode = metavariableNode; ///
48
- }
49
-
50
- return singularMetavariableNode;
51
- }
52
-
53
32
  getAssumptionNodes() {
54
33
  const ruleName = ASSUMPTION_RULE_NAME,
55
34
  declarationNodes = this.getNodesByRuleName(ruleName);
@@ -57,18 +36,11 @@ export default class FrameNode extends NonTerminalNode {
57
36
  return declarationNodes;
58
37
  }
59
38
 
60
- getMetavariableNodes() {
39
+ getMetavariableNode() {
61
40
  const ruleName = METAVARIABLE_RULE_NAME,
62
- metavariableNodes = this.getNodesByRuleName(ruleName);
41
+ metavariableNode = this.getNodeByRuleName(ruleName);
63
42
 
64
- return metavariableNodes;
65
- }
66
-
67
- getSingularAssumptionNode() {
68
- const ruleName = ASSUMPTION_RULE_NAME,
69
- singularAssumptionNode = this.getSingularNodeByRuleName(ruleName);
70
-
71
- return singularAssumptionNode;
43
+ return metavariableNode;
72
44
  }
73
45
 
74
46
  static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(FrameNode, ruleName, childNodes, opacity, precedence); }
@@ -1,14 +1,18 @@
1
1
  "use strict";
2
2
 
3
- export function judgementAssignmentFromJudgement(judgement) {
3
+ export function variableAssignmentFromVariable(variable) {
4
4
  return function (context) {
5
- const judgementString = judgement.getString(),
6
- judgementAdded = context.addJudgement(judgement),
7
- assigned = judgementAdded; ///
5
+ const nested = false;
6
+
7
+ context.addVariable(variable, nested);
8
+
9
+ const variableTypeString = variable.getTypeString(),
10
+ variableString = variable.getString(),
11
+ assigned = true;
8
12
 
9
13
  assigned ?
10
- context.trace(`Assigned the '${judgementString}' judgement.`) :
11
- context.debug(`Unable to assign the '${judgementString}' judgement.`);
14
+ context.trace(`Assigned the '${variableString}' variable with type '${variableTypeString}'.`) :
15
+ context.debug(`Unable to assign the '${variableString}' variable with type '${variableTypeString}'.`);
12
16
 
13
17
  return assigned;
14
18
  };
@@ -28,19 +32,15 @@ export function equalityAssignmentFromEquality(equality) {
28
32
  };
29
33
  }
30
34
 
31
- export function variableAssignmentFromVariable(variable) {
35
+ export function judgementAssignmentFromJudgement(judgement) {
32
36
  return function (context) {
33
- const nested = false;
34
-
35
- context.addVariable(variable, nested);
36
-
37
- const variableTypeString = variable.getTypeString(),
38
- variableString = variable.getString(),
39
- assigned = true;
37
+ const judgementString = judgement.getString(),
38
+ judgementAdded = context.addJudgement(judgement),
39
+ assigned = judgementAdded; ///
40
40
 
41
41
  assigned ?
42
- context.trace(`Assigned the '${variableString}' variable with type '${variableTypeString}'.`) :
43
- context.debug(`Unable to assign the '${variableString}' variable with type '${variableTypeString}'.`);
42
+ context.trace(`Assigned the '${judgementString}' judgement.`) :
43
+ context.debug(`Unable to assign the '${judgementString}' judgement.`);
44
44
 
45
45
  return assigned;
46
46
  };
@@ -1,9 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import { ruleFromRuleName } from "../utilities/bnf";
4
- import { TERM_RULE_NAME,
5
- REFERENCE_RULE_NAME,
6
- STATEMENT_RULE_NAME,
4
+ import { REFERENCE_RULE_NAME,
7
5
  COMBINATOR_RULE_NAME,
8
6
  CONSTRUCTOR_RULE_NAME,
9
7
  EQUIVALENCE_RULE_NAME,
@@ -12,9 +10,7 @@ import { TERM_RULE_NAME,
12
10
  STATEMENT_SUBSTITUTION_RULE_NAME,
13
11
  REFERENCE_SUBSTITUTION_RULE_NAME } from "../ruleNames";
14
12
 
15
- const termPlaceholderRule = ruleFromRuleName(TERM_RULE_NAME),
16
- referencePlaceholderRule = ruleFromRuleName(REFERENCE_RULE_NAME),
17
- statementPlaceholderRule = ruleFromRuleName(STATEMENT_RULE_NAME),
13
+ const referencePlaceholderRule = ruleFromRuleName(REFERENCE_RULE_NAME),
18
14
  combinatorPlaceholderRule = ruleFromRuleName(COMBINATOR_RULE_NAME),
19
15
  constructorPlaceholderRule = ruleFromRuleName(CONSTRUCTOR_RULE_NAME),
20
16
  equivalencePlaceholderRule = ruleFromRuleName(EQUIVALENCE_RULE_NAME),
@@ -23,12 +19,8 @@ const termPlaceholderRule = ruleFromRuleName(TERM_RULE_NAME),
23
19
  statementSubstitutionPlaceholderRule = ruleFromRuleName(STATEMENT_SUBSTITUTION_RULE_NAME),
24
20
  referenceSubstitutionPlaceholderRule = ruleFromRuleName(REFERENCE_SUBSTITUTION_RULE_NAME);
25
21
 
26
- export function instantiateTerm(string, context) { return instantiate(termPlaceholderRule, string, context); }
27
-
28
22
  export function instantiateReference(string, context) { return instantiate(referencePlaceholderRule, string, context); }
29
23
 
30
- export function instantiateStatement(string, context) { return instantiate(statementPlaceholderRule, string, context); }
31
-
32
24
  export function instantiateCombinator(string, context) { return instantiate(combinatorPlaceholderRule, string, context); }
33
25
 
34
26
  export function instantiateConstructor(string, context) { return instantiate(constructorPlaceholderRule, string, context); }
@@ -13,16 +13,16 @@ const typeNodeQuery = nodeQuery("/type"),
13
13
  metaTypeNodeQuery = nodeQuery("/metaType"),
14
14
  statementNodeQuery = nodeQuery("/statement"),
15
15
  termVariableNodeQuery = nodeQuery("/term/variable!"),
16
+ frameAMetavariableNodeQuery = nodeQuery("/frame/metavariable!"),
16
17
  statementMetavariableNodeQuery = nodeQuery("/statement/metavariable!"),
17
- assumptionMetavariableNodeQuery = nodeQuery("/assumption/metavariable!"),
18
- frameAssumptionMetavariableNodeQuery = nodeQuery("/frame/assumption!/metavariable!");
18
+ assumptionMetavariableNodeQuery = nodeQuery("/assumption/metavariable!");
19
19
 
20
20
  class MetaLevelPass extends ZipPass {
21
21
  static maps = [
22
22
  {
23
23
  generalNodeQuery: assumptionMetavariableNodeQuery,
24
24
  specificNodeQuery: assumptionMetavariableNodeQuery,
25
- run: (generalAssumptionMetavariableNode, specificAssumptionMetavariableNode, substitutions, generalContext, specificContext) => {
25
+ run: (generalAssumptionMetavariableNode, specificAssumptionMetavariableNode, generalContext, specificContext) => {
26
26
  let success = false;
27
27
 
28
28
  let context,
@@ -40,7 +40,7 @@ class MetaLevelPass extends ZipPass {
40
40
  metavariableNode = specificAssumptionMetavariableNode; ///
41
41
 
42
42
  const reference = context.findReferenceByMetavariableNode(metavariableNode),
43
- referenceUnifies = metavariable.unifyReference(reference, substitutions, generalContext, specificContext);
43
+ referenceUnifies = metavariable.unifyReference(reference, generalContext, specificContext);
44
44
 
45
45
  if (referenceUnifies) {
46
46
  success = true;
@@ -52,7 +52,7 @@ class MetaLevelPass extends ZipPass {
52
52
  {
53
53
  generalNodeQuery: statementMetavariableNodeQuery,
54
54
  specificNodeQuery: statementNodeQuery,
55
- run: (generalStatementMetavariableNode, specificStatementNode, substitutions, generalContext, specificContext) => {
55
+ run: (generalStatementMetavariableNode, specificStatementNode, generalContext, specificContext) => {
56
56
  let success = false;
57
57
 
58
58
  let context,
@@ -79,7 +79,7 @@ class MetaLevelPass extends ZipPass {
79
79
  statementNode = specificStatementNode; ///
80
80
 
81
81
  const statement = context.findStatementByStatementNode(statementNode),
82
- statementUnifies = metavariable.unifyStatement(statement, substitution, substitutions, generalContext, specificContext);
82
+ statementUnifies = metavariable.unifyStatement(statement, substitution, generalContext, specificContext);
83
83
 
84
84
  if (statementUnifies) {
85
85
  success = true;
@@ -89,13 +89,13 @@ class MetaLevelPass extends ZipPass {
89
89
  }
90
90
  },
91
91
  {
92
- generalNodeQuery: frameAssumptionMetavariableNodeQuery,
92
+ generalNodeQuery: frameAMetavariableNodeQuery,
93
93
  specificNodeQuery: frameNodeQuery,
94
- run: (generalFrameAssumptionMetavariableNode, specificFrameNode, substitutions, generalContext, specificContext) => {
94
+ run: (generalFrameMetavariableNode, specificFrameNode, generalContext, specificContext) => {
95
95
  let success = false;
96
96
 
97
97
  const frameNode = specificFrameNode, ///
98
- metavariableNode = generalFrameAssumptionMetavariableNode, ///
98
+ metavariableNode = generalFrameMetavariableNode, ///
99
99
  metavariableName = metavariableNode.getMetavariableName();
100
100
 
101
101
  let context;
@@ -107,7 +107,7 @@ class MetaLevelPass extends ZipPass {
107
107
  context = specificContext; ///
108
108
 
109
109
  const frame = context.findFrameByFrameNode(frameNode),
110
- frameUnifies = metavariable.unifyFrame(frame, substitutions, generalContext, specificContext);
110
+ frameUnifies = metavariable.unifyFrame(frame, generalContext, specificContext);
111
111
 
112
112
  if (frameUnifies) {
113
113
  success = true;
@@ -119,7 +119,7 @@ class MetaLevelPass extends ZipPass {
119
119
  {
120
120
  generalNodeQuery: termVariableNodeQuery,
121
121
  specificNodeQuery: termNodeQuery,
122
- run: (generalTermVariableNode, specificTermNode, substitutions, generalContext, specificContext) => {
122
+ run: (generalTermVariableNode, specificTermNode, generalContext, specificContext) => {
123
123
  let success = false;
124
124
 
125
125
  const termNode = specificTermNode, ///
@@ -135,7 +135,7 @@ class MetaLevelPass extends ZipPass {
135
135
  context = specificContext; ///
136
136
 
137
137
  const term = context.findTermByTermNode(termNode),
138
- termUnifies = variable.unifyTerm(term, substitutions, generalContext, specificContext);
138
+ termUnifies = variable.unifyTerm(term, generalContext, specificContext);
139
139
 
140
140
  if (termUnifies) {
141
141
  success = true;
@@ -338,14 +338,14 @@ const metaLevelPass = new MetaLevelPass(),
338
338
  metavariablePass = new MetavariablePass(),
339
339
  intrinsicLevelPass = new IntrinsicLevelPass();
340
340
 
341
- export function unifyStatement(generalStatement, specificStatement, substitutions, generalContext, specificContext) {
341
+ export function unifyStatement(generalStatement, specificStatement, generalContext, specificContext) {
342
342
  let statementUnifies = false;
343
343
 
344
344
  const generalStatementNode = generalStatement.getNode(),
345
345
  specificStatementNode = specificStatement.getNode(),
346
346
  generalNode = generalStatementNode, ///
347
347
  specificNode = specificStatementNode, ///
348
- success = metaLevelPass.run(generalNode, specificNode, substitutions, generalContext, specificContext);
348
+ success = metaLevelPass.run(generalNode, specificNode, generalContext, specificContext);
349
349
 
350
350
  if (success) {
351
351
  statementUnifies = true;
@@ -17,7 +17,7 @@ class TermPass extends ForwardPass {
17
17
 
18
18
  const nonTerminalNode = statementNode, ///
19
19
  childNodes = nonTerminalNode.getChildNodes(), ///
20
- descended = this.descend(childNodes,context);
20
+ descended = this.descend(childNodes, context);
21
21
 
22
22
  if (descended) {
23
23
  success = true;
@@ -76,7 +76,7 @@ class StatementPass extends ForwardPass {
76
76
 
77
77
  const nonTerminalNode = statementNode, ///
78
78
  childNodes = nonTerminalNode.getChildNodes(), ///
79
- descended = this.descend(childNodes,context);
79
+ descended = this.descend(childNodes, context);
80
80
 
81
81
  if (descended) {
82
82
  success = true;
@@ -44,3 +44,20 @@ export function synthetically(innerFunction, generalContext, specificContext) {
44
44
 
45
45
  return innerFunction(context);
46
46
  }
47
+
48
+ export async function asyncAttempt(innerFunction, context) {
49
+ const ephemeralContext = EphemeralContext.fromNothing(context);
50
+
51
+ context = ephemeralContext; ///
52
+
53
+ return await innerFunction(context);
54
+ }
55
+
56
+ export async function asyncScope(innerFunction, context) {
57
+ const scopedContext = ScopedContext.fromNothing(context);
58
+
59
+ context = scopedContext; ///
60
+
61
+ return await innerFunction(context);
62
+ }
63
+