occam-verify-cli 1.0.612 → 1.0.631

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 (141) hide show
  1. package/lib/context/ephemeral.js +210 -77
  2. package/lib/context/file/nominal.js +157 -135
  3. package/lib/context/liminal.js +34 -59
  4. package/lib/context/scoped.js +37 -58
  5. package/lib/context.js +103 -53
  6. package/lib/element/assertion/contained.js +3 -1
  7. package/lib/element/assertion/defined.js +3 -1
  8. package/lib/element/assertion/property.js +10 -58
  9. package/lib/element/assertion/satisfies.js +3 -1
  10. package/lib/element/assertion/subproof.js +3 -1
  11. package/lib/element/assertion/type.js +63 -109
  12. package/lib/element/assertion.js +5 -9
  13. package/lib/element/assumption.js +50 -19
  14. package/lib/element/combinator.js +8 -1
  15. package/lib/element/conclusion.js +8 -1
  16. package/lib/element/constructor.js +8 -1
  17. package/lib/element/declaration.js +3 -7
  18. package/lib/element/deduction.js +8 -1
  19. package/lib/element/derivation.js +15 -10
  20. package/lib/element/equality.js +109 -62
  21. package/lib/element/equivalence.js +13 -6
  22. package/lib/element/equivalences.js +11 -4
  23. package/lib/element/error.js +10 -7
  24. package/lib/element/frame.js +21 -21
  25. package/lib/element/hypothesis.js +12 -7
  26. package/lib/element/judgement.js +55 -26
  27. package/lib/element/label.js +8 -1
  28. package/lib/element/metaType.js +9 -2
  29. package/lib/element/metavariable.js +16 -10
  30. package/lib/element/parameter.js +8 -1
  31. package/lib/element/procedureCall.js +21 -29
  32. package/lib/element/procedureReference.js +15 -1
  33. package/lib/element/proof.js +8 -1
  34. package/lib/element/proofAssertion.js +8 -1
  35. package/lib/element/property.js +8 -1
  36. package/lib/element/propertyRelation.js +8 -1
  37. package/lib/element/reference.js +16 -28
  38. package/lib/element/rule.js +22 -21
  39. package/lib/element/section.js +8 -1
  40. package/lib/element/signature.js +8 -1
  41. package/lib/element/statement.js +34 -40
  42. package/lib/element/subDerivation.js +11 -6
  43. package/lib/element/subproof.js +8 -1
  44. package/lib/element/substitution/frame.js +6 -6
  45. package/lib/element/substitution/reference.js +6 -6
  46. package/lib/element/substitution/statement.js +6 -6
  47. package/lib/element/substitution/term.js +9 -3
  48. package/lib/element/substitution.js +73 -49
  49. package/lib/element/term.js +15 -1
  50. package/lib/element/topLevelAssertion/axiom.js +8 -1
  51. package/lib/element/topLevelAssertion/conjecture.js +8 -1
  52. package/lib/element/topLevelAssertion/lemma.js +8 -1
  53. package/lib/element/topLevelAssertion/theorem.js +8 -1
  54. package/lib/element/topLevelAssertion.js +11 -17
  55. package/lib/element/topLevelMetaAssertion/metaLemma.js +8 -1
  56. package/lib/element/topLevelMetaAssertion/metatheorem.js +8 -1
  57. package/lib/element/topLevelMetaAssertion.js +9 -11
  58. package/lib/element/type.js +8 -1
  59. package/lib/element/typePrefix.js +8 -1
  60. package/lib/element/variable.js +51 -5
  61. package/lib/preamble.js +1 -2
  62. package/lib/process/assign.js +96 -27
  63. package/lib/process/unify.js +3 -4
  64. package/lib/process/validate.js +2 -2
  65. package/lib/process/verify.js +2 -2
  66. package/lib/utilities/element.js +74 -12
  67. package/lib/utilities/json.js +2 -2
  68. package/lib/utilities/string.js +9 -24
  69. package/lib/utilities/substitutions.js +15 -23
  70. package/package.json +2 -2
  71. package/src/context/ephemeral.js +234 -82
  72. package/src/context/file/nominal.js +195 -135
  73. package/src/context/liminal.js +43 -80
  74. package/src/context/scoped.js +56 -81
  75. package/src/context.js +97 -46
  76. package/src/element/assertion/contained.js +4 -0
  77. package/src/element/assertion/defined.js +4 -0
  78. package/src/element/assertion/property.js +15 -26
  79. package/src/element/assertion/satisfies.js +4 -0
  80. package/src/element/assertion/subproof.js +4 -0
  81. package/src/element/assertion/type.js +67 -77
  82. package/src/element/assertion.js +4 -8
  83. package/src/element/assumption.js +57 -18
  84. package/src/element/combinator.js +7 -0
  85. package/src/element/conclusion.js +7 -0
  86. package/src/element/constructor.js +7 -0
  87. package/src/element/declaration.js +1 -3
  88. package/src/element/deduction.js +7 -0
  89. package/src/element/derivation.js +10 -5
  90. package/src/element/equality.js +116 -74
  91. package/src/element/equivalence.js +15 -7
  92. package/src/element/equivalences.js +14 -5
  93. package/src/element/error.js +5 -2
  94. package/src/element/frame.js +25 -25
  95. package/src/element/hypothesis.js +11 -6
  96. package/src/element/judgement.js +62 -26
  97. package/src/element/label.js +7 -0
  98. package/src/element/metaType.js +8 -1
  99. package/src/element/metavariable.js +20 -14
  100. package/src/element/parameter.js +7 -0
  101. package/src/element/procedureCall.js +21 -14
  102. package/src/element/procedureReference.js +13 -0
  103. package/src/element/proof.js +7 -0
  104. package/src/element/proofAssertion.js +7 -0
  105. package/src/element/property.js +7 -0
  106. package/src/element/propertyRelation.js +7 -0
  107. package/src/element/reference.js +20 -33
  108. package/src/element/rule.js +16 -19
  109. package/src/element/section.js +7 -0
  110. package/src/element/signature.js +7 -0
  111. package/src/element/statement.js +36 -44
  112. package/src/element/subDerivation.js +10 -5
  113. package/src/element/subproof.js +7 -0
  114. package/src/element/substitution/frame.js +3 -3
  115. package/src/element/substitution/reference.js +3 -3
  116. package/src/element/substitution/statement.js +3 -3
  117. package/src/element/substitution/term.js +4 -2
  118. package/src/element/substitution.js +60 -40
  119. package/src/element/term.js +20 -2
  120. package/src/element/topLevelAssertion/axiom.js +7 -0
  121. package/src/element/topLevelAssertion/conjecture.js +7 -0
  122. package/src/element/topLevelAssertion/lemma.js +7 -0
  123. package/src/element/topLevelAssertion/theorem.js +7 -0
  124. package/src/element/topLevelAssertion.js +5 -15
  125. package/src/element/topLevelMetaAssertion/metaLemma.js +7 -0
  126. package/src/element/topLevelMetaAssertion/metatheorem.js +7 -0
  127. package/src/element/topLevelMetaAssertion.js +4 -6
  128. package/src/element/type.js +7 -0
  129. package/src/element/typePrefix.js +7 -0
  130. package/src/element/variable.js +9 -4
  131. package/src/preamble.js +0 -1
  132. package/src/process/assign.js +113 -38
  133. package/src/process/unify.js +2 -3
  134. package/src/process/validate.js +1 -1
  135. package/src/process/verify.js +1 -1
  136. package/src/utilities/element.js +83 -26
  137. package/src/utilities/json.js +1 -1
  138. package/src/utilities/string.js +7 -29
  139. package/src/utilities/substitutions.js +19 -30
  140. package/lib/element/substitutions.js +0 -225
  141. package/src/element/substitutions.js +0 -84
@@ -47,7 +47,7 @@ export default define(class ReferenceSubstitution extends Substitution {
47
47
 
48
48
  getMetavariableName() { return this.targetReference.getMetavariableName(); }
49
49
 
50
- matchMetavariableName(metavariableName) { return this.targetReference.matchMetavariableName(metavariableName); }
50
+ compareMetavariableName(metavariableName) { return this.targetReference.compareMetavariableName(metavariableName); }
51
51
 
52
52
  isTrivial() {
53
53
  const targetReferenceEqualToReplacementReference = this.targetReference.isEqualTo(this.replacementReference),
@@ -99,9 +99,9 @@ export default define(class ReferenceSubstitution extends Substitution {
99
99
  }
100
100
 
101
101
  if (validates) {
102
- const substititoin = this; ///
102
+ const subsitution = this; ///
103
103
 
104
- context.addSubstitution(substititoin);
104
+ context.addSubstitution(subsitution);
105
105
 
106
106
  context.debug(`...validated the '${referenceSubstitutionString}' reference substitution.`);
107
107
  }
@@ -68,7 +68,7 @@ export default define(class StatementSubstitution extends Substitution {
68
68
 
69
69
  getMetavariableName() { return this.targetStatement.getMetavariableName(); }
70
70
 
71
- matchMetavariableName(metavariableName) { return this.targetStatement.matchMetavariableName(metavariableName); }
71
+ compareMetavariableName(metavariableName) { return this.targetStatement.compareMetavariableName(metavariableName); }
72
72
 
73
73
  compareStatement(statement, context) {
74
74
  statement = stripBracketsFromStatement(statement, context); ///
@@ -135,9 +135,9 @@ export default define(class StatementSubstitution extends Substitution {
135
135
  }
136
136
 
137
137
  if (validates) {
138
- const substititoin = this; ///
138
+ const substitution = this; ///
139
139
 
140
- context.addSubstitution(substititoin);
140
+ context.addSubstitution(substitution);
141
141
 
142
142
  context.debug(`...validated the '${statementSubstitutionString}' statement substitution.`);
143
143
  }
@@ -48,6 +48,8 @@ export default define(class TermSubstitution extends Substitution {
48
48
 
49
49
  getVariableIdentifier() { return this.targetTerm.getVariableIdentifier(); }
50
50
 
51
+ compareVariableIdentifier(variableIdentifier) { return this.targetTerm.compareVariableIdentifier(variableIdentifier); }
52
+
51
53
  isTrivial() {
52
54
  const targetTermEqualToReplacementTerm = this.targetTerm.isEqualTo(this.replacementTerm),
53
55
  trivial = targetTermEqualToReplacementTerm; ///
@@ -100,9 +102,9 @@ export default define(class TermSubstitution extends Substitution {
100
102
  }
101
103
 
102
104
  if (validates) {
103
- const substititoin = this; ///
105
+ const substitution = this; ///
104
106
 
105
- context.addSubstitution(substititoin);
107
+ context.addSubstitution(substitution);
106
108
 
107
109
  context.debug(`...validated the '${termSubstitutionString}' term substitution.`);
108
110
  }
@@ -6,16 +6,6 @@ import { primitiveUtilities } from "occam-furtle";
6
6
  const { primitiveFromNode } =primitiveUtilities;
7
7
 
8
8
  export default class Substitution extends Element {
9
- constructor(context, string, node) {
10
- super(context, string, node);
11
- }
12
-
13
- getSubstitution() {
14
- const substitution = null;
15
-
16
- return substitution;
17
- }
18
-
19
9
  getPrimitive() {
20
10
  const context = this.getContext(),
21
11
  replacementNode = this.getReplacementNode(),
@@ -32,18 +22,6 @@ export default class Substitution extends Element {
32
22
  return substitutionNode;
33
23
  }
34
24
 
35
- getNetavariableName() {
36
- const metavariableName = null;
37
-
38
- return metavariableName;
39
- }
40
-
41
- getVariableIdentifier() {
42
- const variableIdentifier = null;
43
-
44
- return variableIdentifier;
45
- }
46
-
47
25
  matchSubstitutionNode(substitutionNode) {
48
26
  const substitutionNodeA = substitutionNode; ///
49
27
 
@@ -72,12 +50,6 @@ export default class Substitution extends Element {
72
50
  return equalTo;
73
51
  }
74
52
 
75
- isSimple() {
76
- const simple = true;
77
-
78
- return simple;
79
- }
80
-
81
53
  isComplex() {
82
54
  const simple = this.isSimple(),
83
55
  complex = !simple;
@@ -85,12 +57,6 @@ export default class Substitution extends Element {
85
57
  return complex;
86
58
  }
87
59
 
88
- isTrivial() {
89
- const trivial = false;
90
-
91
- return trivial;
92
- }
93
-
94
60
  isNonTrivial() {
95
61
  const trivial = this.isTrivial(),
96
62
  nonTrivlal = !trivial;
@@ -98,22 +64,64 @@ export default class Substitution extends Element {
98
64
  return nonTrivlal;
99
65
  }
100
66
 
67
+ getVariable() {
68
+ const variable = null;
69
+
70
+ return variable;
71
+ }
72
+
73
+ getSubstitution() {
74
+ const substitution = null;
75
+
76
+ return substitution;
77
+ }
78
+
79
+ getMetavariable() {
80
+ const metavariable = null;
81
+
82
+ return metavariable;
83
+ }
84
+
85
+ getMetavariableName() {
86
+ const metavariableName = null;
87
+
88
+ return metavariableName;
89
+ }
90
+
91
+ getVariableIdentifier() {
92
+ const variableIdentifier = null;
93
+
94
+ return variableIdentifier;
95
+ }
96
+
97
+ isSimple() {
98
+ const simple = true;
99
+
100
+ return simple;
101
+ }
102
+
103
+ isTermEqualToTerm(term) {
104
+ const termEqualToTerm = false;
105
+
106
+ return termEqualToTerm;
107
+ }
108
+
101
109
  isFrameEqualToFrame(frame) {
102
110
  const frameEqualToFrame = false;
103
111
 
104
112
  return frameEqualToFrame;
105
113
  }
106
114
 
107
- isReferenceEqualToReference(reference) {
108
- const referenceEqualToReference = false;
115
+ isStatementEqualToStatement(statement) {
116
+ const statementEqualToStatement = false;
109
117
 
110
- return referenceEqualToReference;
118
+ return statementEqualToStatement;
111
119
  }
112
120
 
113
- compare(substitution) {
114
- const comparesToSubstitution = false;
121
+ isReferenceEqualToReference(reference) {
122
+ const referenceEqualToReference = false;
115
123
 
116
- return comparesToSubstitution;
124
+ return referenceEqualToReference;
117
125
  }
118
126
 
119
127
  compareTerm(term, context) {
@@ -140,6 +148,18 @@ export default class Substitution extends Element {
140
148
  return compaaresToMetavariable;
141
149
  }
142
150
 
151
+ compareMetavariableName(metavariableName) {
152
+ const comparesToMetavariableName = false;
153
+
154
+ return comparesToMetavariableName;
155
+ }
156
+
157
+ compareVariableIdentifier(variableIdentifier) {
158
+ const comparesToVariableIdentifier = false;
159
+
160
+ return comparesToVariableIdentifier;
161
+ }
162
+
143
163
  resolve(substitutions, generalContext, specificContext) {
144
164
  const resolved = true;
145
165
 
@@ -44,12 +44,30 @@ export default define(class Term extends Element {
44
44
  termNode = this.getTermNode();
45
45
 
46
46
  const termNodeB = termNode, ///
47
- termNodeAAMatchesTermBNodeB = termNodeA.match(termNodeB),
48
- equalTo = termNodeAAMatchesTermBNodeB; ///
47
+ termNodeAAMatchesTermBNodeB = termNodeA.match(termNodeB),
48
+ equalTo = termNodeAAMatchesTermBNodeB; ///
49
49
 
50
50
  return equalTo;
51
51
  }
52
52
 
53
+ compareVariableIdentifier(variableIdentifier) {
54
+ let comparesToVariableIdentifier = false;
55
+
56
+ const singular = this.isSingular();
57
+
58
+ if (singular) {
59
+ const variableIdentifierA = variableIdentifier; ///
60
+
61
+ variableIdentifier = this.getVariableIdentifier();
62
+
63
+ const variableIdentifierB = variableIdentifier;
64
+
65
+ comparesToVariableIdentifier = (variableIdentifierA === variableIdentifierB);
66
+ }
67
+
68
+ return comparesToVariableIdentifier;
69
+ }
70
+
53
71
  isValid(context) {
54
72
  const termNode = this.getTermNode(),
55
73
  termPresent = context.isTermPresentByTermNode(termNode),
@@ -5,6 +5,13 @@ import TopLevelAssertion from "../../node/topLevelAssertion";
5
5
  import { define } from "../../elements";
6
6
 
7
7
  export default define(class Axiom extends TopLevelAssertion {
8
+ getAxiomNode() {
9
+ const node = this.getNode(),
10
+ axiomNode = node; ///
11
+
12
+ return axiomNode;
13
+ }
14
+
8
15
  isSatisfiable() {
9
16
  const signature = this.getSignature(),
10
17
  satisfiable = (signature !== null);
@@ -5,6 +5,13 @@ import TopLevelAssertion from "../topLevelAssertion";
5
5
  import { define } from "../../elements";
6
6
 
7
7
  export default define(class Conjecture extends TopLevelAssertion {
8
+ getConjectureNode() {
9
+ const node = this.getNode(),
10
+ conjectureNode = node; ///
11
+
12
+ return conjectureNode;
13
+ }
14
+
8
15
  async verify() {
9
16
  let verifies;
10
17
 
@@ -5,6 +5,13 @@ import TopLevelAssertion from "../topLevelAssertion";
5
5
  import { define } from "../../elements";
6
6
 
7
7
  export default define(class Lemma extends TopLevelAssertion {
8
+ getLemmaNode() {
9
+ const node = this.getNode(),
10
+ lemmaNode = node; ///
11
+
12
+ return lemmaNode;
13
+ }
14
+
8
15
  async verify() {
9
16
  let verifies;
10
17
 
@@ -5,6 +5,13 @@ import TopLevelAssertion from "../topLevelAssertion";
5
5
  import { define } from "../../elements";
6
6
 
7
7
  export default define(class Theorem extends TopLevelAssertion {
8
+ getThoeremNode() {
9
+ const node = this.getNode(),
10
+ theoremNode = node; ///
11
+
12
+ return theoremNode;
13
+ }
14
+
8
15
  async verify() {
9
16
  let verifies;
10
17
 
@@ -255,15 +255,13 @@ export default class TopLevelAssertion extends Element {
255
255
  suppositionVerifies = await supposition.verify(assignments, context)
256
256
 
257
257
  if (suppositionVerifies) {
258
- const assignmentsAssigned = assignAssignments(assignments, context);
258
+ assignAssignments(assignments, context);
259
259
 
260
- if (assignmentsAssigned) {
261
- const subproofOrProofAssertion = supposition; ////
260
+ const subproofOrProofAssertion = supposition; ////
262
261
 
263
- context.addSubproofOrProofAssertion(subproofOrProofAssertion);
262
+ context.addSubproofOrProofAssertion(subproofOrProofAssertion);
264
263
 
265
- return true;
266
- }
264
+ return true;
267
265
  }
268
266
  });
269
267
 
@@ -286,15 +284,7 @@ export default class TopLevelAssertion extends Element {
286
284
  const subproofOrProofAssertionsUnifiesWithSuppositions = await this.unifySubproofOrProofAssertionsWithSuppositions(subproofOrProofAssertions, context);
287
285
 
288
286
  if (subproofOrProofAssertionsUnifiesWithSuppositions) {
289
- const specificContext = context; ///
290
-
291
- context = this.getContext();
292
-
293
- const generalContext = context; ///
294
-
295
- context = specificContext; ///
296
-
297
- const substitutionsResolved = context.areSubstitutionsResolved(generalContext, specificContext);
287
+ const substitutionsResolved = context.areSubstitutionsResolved();
298
288
 
299
289
  if (substitutionsResolved) {
300
290
  statementAndSubproofOrProofAssertionsUnify = true;
@@ -5,6 +5,13 @@ import TopLevelMetaAssertion from "./../topLevelMetaAssertion";
5
5
  import { define } from "../../elements";
6
6
 
7
7
  export default define(class MetaLemma extends TopLevelMetaAssertion {
8
+ getMetaLemmaNode() {
9
+ const node = this.getNode(),
10
+ metaLemmaNode = node; ///
11
+
12
+ return metaLemmaNode;
13
+ }
14
+
8
15
  async verify() {
9
16
  let verifies;
10
17
 
@@ -5,6 +5,13 @@ import TopLevelMetaAssertion from "../topLevelMetaAssertion";
5
5
  import { define } from "../../elements";
6
6
 
7
7
  export default define(class Metatheorem extends TopLevelMetaAssertion {
8
+ getMetatheoremNode() {
9
+ const node = this.getNode(),
10
+ metatheoremNode = node; ///
11
+
12
+ return metatheoremNode;
13
+ }
14
+
8
15
  async verify() {
9
16
  let verifies;
10
17
 
@@ -159,15 +159,13 @@ export default class TopLevelMetaAssertion extends Element {
159
159
  suppositionVerifies = await supposition.verify(assignments, context)
160
160
 
161
161
  if (suppositionVerifies) {
162
- const assignmentsAssigned = assignAssignments(assignments, context);
162
+ assignAssignments(assignments, context);
163
163
 
164
- if (assignmentsAssigned) {
165
- const subproofOrProofAssertion = supposition; ////
164
+ const subproofOrProofAssertion = supposition; ////
166
165
 
167
- context.addSubproofOrProofAssertion(subproofOrProofAssertion);
166
+ context.addSubproofOrProofAssertion(subproofOrProofAssertion);
168
167
 
169
- return true;
170
- }
168
+ return true;
171
169
  }
172
170
  });
173
171
 
@@ -32,6 +32,13 @@ export default define(class Type extends Element {
32
32
  return this.superTypes;
33
33
  }
34
34
 
35
+ getTypeNode() {
36
+ const node = this.getNode(),
37
+ typeNode = node; ///
38
+
39
+ return typeNode;
40
+ }
41
+
35
42
  getProperties(includeSuperTypes = true) {
36
43
  const properties = [];
37
44
 
@@ -15,6 +15,13 @@ export default define(class TypePrefix extends Element {
15
15
  return this.name;
16
16
  }
17
17
 
18
+ getTypePrefixNode() {
19
+ const node = this.getNode(),
20
+ typePrefixNode = node; ///
21
+
22
+ return typePrefixNode;
23
+ }
24
+
18
25
  compareTypePrefixName(typePrefixName) {
19
26
  const comparesToTypePrefixName = (this.name === typePrefixName);
20
27
 
@@ -2,6 +2,8 @@
2
2
 
3
3
  import { Element } from "occam-languages";
4
4
 
5
+ import elements from "../elements";
6
+
5
7
  import { define } from "../elements";
6
8
  import { typeToTypeJSON } from "../utilities/json";
7
9
 
@@ -30,6 +32,13 @@ export default define(class Variable extends Element {
30
32
  this.type = type;
31
33
  }
32
34
 
35
+ getVariableNode() {
36
+ const node = this.getNode(),
37
+ variableNode = node; //
38
+
39
+ return variableNode;
40
+ }
41
+
33
42
  getTypeString() { return this.type.getString(); }
34
43
 
35
44
  isIdentifierEqualTo(identifier) {
@@ -162,10 +171,6 @@ export default define(class Variable extends Element {
162
171
  termSubstitutionValidates = termSubstitution.validate(generalContext, specificContext);
163
172
 
164
173
  if (termSubstitutionValidates) {
165
- substitution = termSubstitution; ///
166
-
167
- context.addSubstitution(substitution);
168
-
169
174
  termUnifies = true;
170
175
  }
171
176
  }
package/src/preamble.js CHANGED
@@ -38,7 +38,6 @@ 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";
41
- import Substitutions from "./element/substitutions";
42
41
  import ProcedureCall from "./element/procedureCall";
43
42
  import SubDerivation from "./element/subDerivation";
44
43
  import TypeAssertion from "./element/assertion/type";
@@ -1,59 +1,134 @@
1
1
  "use strict";
2
2
 
3
- export function variableAssignmentFromVariable(variable) {
4
- return function (context) {
5
- const nested = false;
3
+ import { variableFromVariableNode } from "../utilities/element";
6
4
 
7
- context.addVariable(variable, nested);
5
+ export function equalityAssignmentFromEquality(equality, context) {
6
+ const equalityAssignment = (context) => {
7
+ const equalityAdded = context.addEquality(equality);
8
8
 
9
- const variableTypeString = variable.getTypeString(),
10
- variableString = variable.getString(),
11
- assigned = true;
9
+ return equalityAdded;
10
+ };
12
11
 
13
- assigned ?
14
- context.trace(`Assigned the '${variableString}' variable with type '${variableTypeString}'.`) :
15
- context.debug(`Unable to assign the '${variableString}' variable with type '${variableTypeString}'.`);
12
+ return equalityAssignment;
13
+ }
16
14
 
17
- return assigned;
15
+ export function judgementAssignmentFromJudgement(judgement, context) {
16
+ const judgementAssignment = (context) => {
17
+ const judgementAdded = context.addJudgement(judgement);
18
+
19
+ return judgementAdded;
18
20
  };
21
+
22
+ return judgementAssignment;
19
23
  }
20
24
 
21
- export function equalityAssignmentFromEquality(equality) {
22
- return function (context) {
23
- const equalityString = equality.getString(),
24
- equalityAdded = context.addEquality(equality),
25
- assigned = equalityAdded; ///
25
+ export function leftVariableAssignmentFromEquality(equality, context) {
26
+ let leftVariableAssignment = null;
26
27
 
27
- assigned ?
28
- context.trace(`Assigned the '${equalityString}' equality.`) :
29
- context.debug(`Unable to assign the '${equalityString}' equality.`);
28
+ const leftTermNode = equality.getLeftTermNode(),
29
+ singularVariableNode = leftTermNode.getSingularVariableNode();
30
30
 
31
- return assigned;
32
- };
31
+ if (singularVariableNode !== null) {
32
+ const type = equality.getType(),
33
+ leftVariableNode = singularVariableNode; ///
34
+
35
+ leftVariableAssignment = variableAssignmentFromVariableNodeAndType(leftVariableNode, type, context);
36
+ }
37
+
38
+ return leftVariableAssignment;
33
39
  }
34
40
 
35
- export function judgementAssignmentFromJudgement(judgement) {
36
- return function (context) {
37
- const judgementString = judgement.getString(),
38
- judgementAdded = context.addJudgement(judgement),
39
- assigned = judgementAdded; ///
41
+ export function rightVariableAssignmentFromEquality(equality, context) {
42
+ let rightVariableAssignment = null;
40
43
 
41
- assigned ?
42
- context.trace(`Assigned the '${judgementString}' judgement.`) :
43
- context.debug(`Unable to assign the '${judgementString}' judgement.`);
44
+ const rightTermNode = equality.getRightTermNode(),
45
+ singularVariableNode = rightTermNode.getSingularVariableNode();
44
46
 
45
- return assigned;
46
- };
47
+ if (singularVariableNode !== null) {
48
+ const type = equality.getType(),
49
+ rightVariableNode = singularVariableNode; ///
50
+
51
+ rightVariableAssignment = variableAssignmentFromVariableNodeAndType(rightVariableNode, type, context);
52
+ }
53
+
54
+ return rightVariableAssignment;
47
55
  }
48
56
 
49
- export default function assignAssignments(assignments, context) {
50
- const assignmentsAssigned = assignments.every((assigment) => {
51
- const assigned = assigment(context);
57
+ export function variableAssignmentFromTypeAssertion(typeAssertion, context) {
58
+
59
+ debugger
52
60
 
53
- if (assigned) {
54
- return true;
55
- }
61
+ // const { Type, Variable } = elements,
62
+ // termNode = this.term.getNode();
63
+ //
64
+ // let type,
65
+ // provisional;
66
+ //
67
+ // provisional = this.type.isProvisional();
68
+ //
69
+ // if (!provisional) {
70
+ // type = this.type;
71
+ // } else {
72
+ // provisional = false;
73
+ //
74
+ // type = Type.fromTypeAndProvisional(this.type, provisional);
75
+ // }
76
+ //
77
+ // const singularVariableNode = termNode.getSingularVariableNode();
78
+ //
79
+ // if (singularVariableNode !== null) {
80
+ // const variableNode = singularVariableNode, ///
81
+ // variable = Variable.fromVariableNodeAndType(variableNode, type, context),
82
+ // variableAssignment = variableAssignmentFromVariable(variable),
83
+
84
+ }
85
+
86
+ export function variableAssignmentFromPrepertyAssertion(propertyAssertion, context) {
87
+
88
+ debugger
89
+
90
+ // let variable;
91
+ //
92
+ // const { Variable } = elements,
93
+ // termNode = this.term.getNode();
94
+ //
95
+ // variable = Variable.fromTermNode(termNode, context);
96
+ //
97
+ // if (variable !== null) {
98
+ // const variableIdentifier = variable.getIdentifier();
99
+ //
100
+ // variable = context.findVariableByVariableIdentifier(variableIdentifier);
101
+ //
102
+ // variable = Variable.fromVariableAndPropertyRelation(variable, this.propertyRelation);
103
+ //
104
+ // const variableAssignment = variableAssignmentFromVariable(variable),
105
+
106
+ }
107
+
108
+ export default function assignAssignments(assignments, context) {
109
+ assignments.forEach((assignment) => {
110
+ assignment(context);
56
111
  });
112
+ }
113
+
114
+ function variableAssignmentFromVariableNodeAndType(variableNode, type, context) {
115
+ const variable = variableFromVariableNode(variableNode, context);
116
+
117
+ variable.setType(type);
118
+
119
+ const variableAssignment = (context) => {
120
+ context.addVariable(variable);
121
+
122
+ const variableTypeString = variable.getTypeString(),
123
+ variableString = variable.getString(),
124
+ assigned = true;
125
+
126
+ assigned ?
127
+ context.trace(`Assigned the '${variableString}' variable with type '${variableTypeString}'.`) :
128
+ context.debug(`Unable to assign the '${variableString}' variable with type '${variableTypeString}'.`);
129
+
130
+ return assigned;
131
+ };
57
132
 
58
- return assignmentsAssigned;
133
+ return variableAssignment;
59
134
  }
@@ -2,7 +2,6 @@
2
2
 
3
3
  import { ZipPass, queryUtilities } from "occam-languages";
4
4
 
5
- import { findMetaTypeByMetaTypeName } from "../metaTypes";
6
5
  import { termFromTermNode, frameFromFrameNode, statementFromStatementNode } from "../utilities/element";
7
6
 
8
7
  const { nodeQuery } = queryUtilities;
@@ -161,7 +160,7 @@ class CombinatorPass extends ZipPass {
161
160
  context = generalContext; ///
162
161
 
163
162
  const metaTypeName = metaTypeNode.getMetaTypeName(),
164
- metaType = findMetaTypeByMetaTypeName(metaTypeName);
163
+ metaType = context.findMetaTypeByMetaTypeName(metaTypeName);
165
164
 
166
165
  context = specificContext; ///
167
166
 
@@ -189,7 +188,7 @@ class CombinatorPass extends ZipPass {
189
188
  context = generalContext; ///
190
189
 
191
190
  const metaTypeName = metaTypeNode.getMetaTypeName(),
192
- metaType = findMetaTypeByMetaTypeName(metaTypeName);
191
+ metaType = context.findMetaTypeByMetaTypeName(metaTypeName);
193
192
 
194
193
  context = specificContext; ///
195
194
 
@@ -92,8 +92,8 @@ class StatementPass extends ForwardPass {
92
92
  let success = false;
93
93
 
94
94
  const statement = statementFromStatementNode(statementNode, context),
95
- assignments = null,
96
95
  stated = false,
96
+ assignments = null,
97
97
  statementValidates = statement.validate(assignments, stated, context);
98
98
 
99
99
  if (statementValidates) {