occam-verify-cli 1.0.715 → 1.0.721

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 (55) hide show
  1. package/lib/context/file/nominal.js +3 -3
  2. package/lib/context.js +10 -8
  3. package/lib/element/assertion/contained.js +1 -8
  4. package/lib/element/assertion/defined.js +1 -8
  5. package/lib/element/assertion/property.js +1 -8
  6. package/lib/element/assertion/satisfies.js +1 -8
  7. package/lib/element/assertion/subproof.js +1 -8
  8. package/lib/element/assertion.js +8 -1
  9. package/lib/element/assumption.js +1 -11
  10. package/lib/element/declaration/metavariable.js +21 -37
  11. package/lib/element/equality.js +2 -2
  12. package/lib/element/frame.js +24 -45
  13. package/lib/element/metavariable.js +91 -36
  14. package/lib/element/proofAssertion/step.js +4 -4
  15. package/lib/element/proofAssertion.js +2 -2
  16. package/lib/element/reference.js +33 -32
  17. package/lib/element/statement.js +1 -18
  18. package/lib/element/substitution/frame.js +1 -8
  19. package/lib/element/substitution/reference.js +1 -8
  20. package/lib/element/substitution/statement.js +1 -8
  21. package/lib/element/substitution/term.js +1 -8
  22. package/lib/element/substitution.js +8 -1
  23. package/lib/element/variable.js +1 -17
  24. package/lib/process/equate.js +5 -5
  25. package/lib/process/unify.js +20 -17
  26. package/lib/process/validate.js +2 -120
  27. package/lib/utilities/element.js +36 -3
  28. package/package.json +1 -1
  29. package/src/context/file/nominal.js +8 -9
  30. package/src/context.js +14 -10
  31. package/src/element/assertion/contained.js +0 -11
  32. package/src/element/assertion/defined.js +0 -11
  33. package/src/element/assertion/property.js +0 -11
  34. package/src/element/assertion/satisfies.js +0 -11
  35. package/src/element/assertion/subproof.js +0 -11
  36. package/src/element/assertion.js +11 -0
  37. package/src/element/assumption.js +1 -18
  38. package/src/element/declaration/metavariable.js +30 -53
  39. package/src/element/equality.js +1 -3
  40. package/src/element/frame.js +31 -62
  41. package/src/element/metavariable.js +129 -43
  42. package/src/element/proofAssertion/step.js +3 -3
  43. package/src/element/proofAssertion.js +1 -3
  44. package/src/element/reference.js +46 -47
  45. package/src/element/statement.js +1 -27
  46. package/src/element/substitution/frame.js +0 -11
  47. package/src/element/substitution/reference.js +0 -11
  48. package/src/element/substitution/statement.js +0 -11
  49. package/src/element/substitution/term.js +0 -11
  50. package/src/element/substitution.js +11 -0
  51. package/src/element/variable.js +0 -25
  52. package/src/process/equate.js +8 -4
  53. package/src/process/unify.js +23 -22
  54. package/src/process/validate.js +2 -168
  55. package/src/utilities/element.js +46 -6
@@ -4,6 +4,7 @@ import { queryUtilities, ZipPass as ZipPassBase } from "occam-languages";
4
4
 
5
5
  import ZipPass from "../pass/zip";
6
6
 
7
+ import { FRAME_META_TYPE_NAME, STATEMENT_META_TYPE_NAME } from "../metaTypeNames";
7
8
  import { termFromTermNode, frameFromFrameNode, statementFromStatementNode } from "../utilities/element";
8
9
 
9
10
  const { nodeQuery } = queryUtilities;
@@ -155,22 +156,22 @@ class CombinatorPass extends ZipPass {
155
156
  let success = false;
156
157
 
157
158
  const metaTypeNode = generalMetaTypeNode, ///
158
- statementNode = specificStatementNode; ///
159
+ metaTypeName = metaTypeNode.getMetaTypeName(),
160
+ metaTypeNameStatementMetaTypeName = (metaTypeName === STATEMENT_META_TYPE_NAME);
159
161
 
160
- let context;
161
-
162
- context = generalContext; ///
162
+ if (metaTypeNameStatementMetaTypeName) {
163
+ const context = specificContext, ///
164
+ statementNode = specificStatementNode; ///
163
165
 
164
- const metaTypeName = metaTypeNode.getMetaTypeName(),
165
- metaType = context.findMetaTypeByMetaTypeName(metaTypeName);
166
+ let statement;
166
167
 
167
- context = specificContext; ///
168
+ statement = statementFromStatementNode(statementNode, context);
168
169
 
169
- const statement = statementFromStatementNode(statementNode, context),
170
- statementValidatesGivenType = statement.validateGivenMetaType(metaType, stated, context);
170
+ statement = statement.validate(stated, context); ///
171
171
 
172
- if (statementValidatesGivenType) {
173
- success = true;
172
+ if (statement !== null) {
173
+ success = true;
174
+ }
174
175
  }
175
176
 
176
177
  return success;
@@ -183,22 +184,22 @@ class CombinatorPass extends ZipPass {
183
184
  let success = false;
184
185
 
185
186
  const metaTypeNode = generalMetaTypeNode, ///
186
- frameNode = specificFrameNode; ///
187
+ metaTypeName = metaTypeNode.getMetaTypeName(),
188
+ metaTypeNameFrameMetaTypeName = (metaTypeName === FRAME_META_TYPE_NAME);
187
189
 
188
- let context;
189
-
190
- context = generalContext; ///
190
+ if (metaTypeNameFrameMetaTypeName) {
191
+ const context = specificContext, ///
192
+ frameNode = specificFrameNode; ///
191
193
 
192
- const metaTypeName = metaTypeNode.getMetaTypeName(),
193
- metaType = context.findMetaTypeByMetaTypeName(metaTypeName);
194
+ let frame;
194
195
 
195
- context = specificContext; ///
196
+ frame = frameFromFrameNode(frameNode, context);
196
197
 
197
- const frame = frameFromFrameNode(frameNode, context),
198
- frameValidatesGivenMetaType = frame.validateGivenMetaType(metaType, stated, context);
198
+ frame = frame.validate(stated, context); ///
199
199
 
200
- if (frameValidatesGivenMetaType) {
201
- success = true;
200
+ if (frame !== null) {
201
+ success = true;
202
+ }
202
203
  }
203
204
 
204
205
  return success;
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
+ import { SimplePass } from "occam-languages";
3
4
  import { queryUtilities } from "occam-languages";
4
- import { SimplePass, ForwardPass } from "occam-languages";
5
5
 
6
6
  import { termFromTermNode, statementFromStatementNode } from "../utilities/element";
7
7
 
@@ -11,144 +11,6 @@ const termNodeQuery = nodeQuery("/term"),
11
11
  typeNodeQuery = nodeQuery("/type"),
12
12
  statementNodeQuery = nodeQuery("/statement");
13
13
 
14
- class TermPass extends ForwardPass {
15
- run(statementNode, context) {
16
- let success = false;
17
-
18
- const nonTerminalNode = statementNode, ///
19
- childNodes = nonTerminalNode.getChildNodes(), ///
20
- descended = this.descend(childNodes, context);
21
-
22
- if (descended) {
23
- success = true;
24
- }
25
-
26
- return success;
27
- }
28
-
29
- static maps = [
30
- {
31
- nodeQuery: termNodeQuery,
32
- run: (termNode, context, validateForwards) => {
33
- let success = false;
34
-
35
- let term;
36
-
37
- term = termFromTermNode(termNode, context);
38
-
39
- term = term.validate(context, validateForwards); ///
40
-
41
- if (term !== null) {
42
- success = true;
43
- }
44
-
45
- return success;
46
- }
47
- },
48
- {
49
- nodeQuery: typeNodeQuery,
50
- run: (typeNode, context, validateForwards) => {
51
- let success = false;
52
-
53
- const nominalTypeName = typeNode.getNominalTypeName(),
54
- typePresent = context.isTypePresentByNominalTypeName(nominalTypeName);
55
-
56
- if (typePresent) {
57
- const validatesForwards = validateForwards();
58
-
59
- if (validatesForwards) {
60
- success = true;
61
- }
62
- } else {
63
- const typeString = nominalTypeName; ///
64
-
65
- context.debug(`The '${typeString}' type is not present.`);
66
-
67
- success = false;
68
- }
69
-
70
- return success;
71
- }
72
- }
73
- ];
74
- }
75
-
76
- class StatementPass extends SimplePass {
77
- run(statementNode, context) {
78
- let success = false;
79
-
80
- const nonTerminalNode = statementNode, ///
81
- childNodes = nonTerminalNode.getChildNodes(), ///
82
- descended = this.descend(childNodes, context);
83
-
84
- if (descended) {
85
- success = true;
86
- }
87
-
88
- return success;
89
- }
90
-
91
- static maps = [
92
- {
93
- nodeQuery: statementNodeQuery,
94
- run: (statementNode, context) => {
95
- let success = false;
96
-
97
- let statement;
98
-
99
- const stated = true;
100
-
101
- statement = statementFromStatementNode(statementNode, context);
102
-
103
- statement = statement.validate(stated, context); ///
104
-
105
- if (statement !== null) {
106
- success = true;
107
- }
108
-
109
- return success;
110
- }
111
- },
112
- {
113
- nodeQuery: termNodeQuery,
114
- run: (termNode, context) => {
115
- let success = false;
116
-
117
- let term;
118
-
119
- term = termFromTermNode(termNode, context);
120
-
121
- term = term.validate(context, () => { ///
122
- const validatesForwards = true;
123
-
124
- return validatesForwards;
125
- });
126
-
127
- if (term !== null) {
128
- success = true;
129
- }
130
-
131
- return success;
132
- }
133
- },
134
- {
135
- nodeQuery: typeNodeQuery,
136
- run: (typeNode, context) => {
137
- let success = false;
138
-
139
- const nominalTypeName = typeNode.getNominalTypeName(),
140
- typePresent = context.isTypePresentByNominalTypeName(nominalTypeName);
141
-
142
- if (typePresent) {
143
- success = true;
144
- }
145
-
146
- return success;
147
- }
148
- }
149
- ];
150
- }
151
-
152
14
  class ConbinatorPass extends SimplePass {
153
15
  run(statementNode, context) {
154
16
  let success = false;
@@ -281,37 +143,9 @@ class ConstructorPass extends SimplePass {
281
143
  ];
282
144
  }
283
145
 
284
- const termPass = new TermPass(),
285
- statementPass = new StatementPass(),
286
- combinatorPass = new ConbinatorPass(),
146
+ const combinatorPass = new ConbinatorPass(),
287
147
  constructorPass = new ConstructorPass();
288
148
 
289
- export function validateTerm(termNode, context, validateForwards) {
290
- let termValidates = false;
291
-
292
- const node = termNode, ///
293
- sucess = termPass.run(node, context, validateForwards);
294
-
295
- if (sucess) {
296
- termValidates = true;
297
- }
298
-
299
- return termValidates;
300
- }
301
-
302
- export function validateStatement(statementNode, context) {
303
- let statementValidates = false;
304
-
305
- const node = statementNode, ///
306
- sucess = statementPass.run(node, context);
307
-
308
- if (sucess) {
309
- statementValidates = true;
310
- }
311
-
312
- return statementValidates;
313
- }
314
-
315
149
  export function validateTermAsConstructor(term, context) {
316
150
  let termValidatesAsConstructor = false;
317
151
 
@@ -320,8 +320,11 @@ export function referenceFromReferenceNode(referenceNode, context) {
320
320
  const { Reference } = elements,
321
321
  node = referenceNode, ///
322
322
  string = context.nodeAsString(node),
323
- metavariable = metavariableFromReferenceNode(referenceNode, context),
324
- reference = new Reference(context, string, node, metavariable);
323
+ metavariable = metavariableFromReferenceNode(referenceNode, context);
324
+
325
+ context = null;
326
+
327
+ const reference = new Reference(context, string, node, metavariable);
325
328
 
326
329
  return reference;
327
330
  }
@@ -532,15 +535,28 @@ export function metatheoremFromMetatheoremNode(metatheoremNode, context) {
532
535
  return metatheorem;
533
536
  }
534
537
 
538
+ export function referencesFromMetavariableNode(metavariableNode, context) {
539
+ const { Reference } = elements,
540
+ node = metavariableNode, ///
541
+ string = context.nodeAsString(node),
542
+ metavariable = metavariableFromMetavariableNode(metavariableNode, context);
543
+
544
+ context = null;
545
+
546
+ const reference = new Reference(context, string, node, metavariable);
547
+
548
+ return reference
549
+ }
550
+
535
551
  export function metavariableFromMetavariableNode(metavariableNode, context) {
536
552
  const { Metavariable } = elements,
537
553
  node = metavariableNode, ///
538
554
  string = context.nodeAsString(node),
539
- metavariableName = metavariableNode.getMetavariableName(),
540
- name = metavariableName, ///
541
- type = null,
555
+ name = nameFromMetavariableNode(metavariableNode, context),
556
+ term = termFromMetavariableNode(metavariableNode, context),
557
+ type = typeFromMetavariableNode(metavariableNode, context),
542
558
  metaType = null,
543
- metavariable = new Metavariable(context, string, node, name, type, metaType);
559
+ metavariable = new Metavariable(context, string, node, name, term, type, metaType);
544
560
 
545
561
  return metavariable;
546
562
  }
@@ -1045,6 +1061,30 @@ export function nameFromMetavariableNode(metavariableNode, context) {
1045
1061
  return name;
1046
1062
  }
1047
1063
 
1064
+ export function termFromMetavariableNode(metavariableNode, context) {
1065
+ let term = null;
1066
+
1067
+ const termNode = metavariableNode.getTermNode();
1068
+
1069
+ if (termNode !== null) {
1070
+ term = termFromTermNode(termNode, context);
1071
+ }
1072
+
1073
+ return term;
1074
+ }
1075
+
1076
+ export function typeFromMetavariableNode(metavariableNode, context) {
1077
+ let type = null;
1078
+
1079
+ const typemNode = metavariableNode.getTypeNode();
1080
+
1081
+ if (typemNode !== null) {
1082
+ type = typeFromTypeNode(typemNode, context);
1083
+ }
1084
+
1085
+ return type;
1086
+ }
1087
+
1048
1088
  export function metavariableFromFrameNode(frameNode, context) {
1049
1089
  let metavariable = null;
1050
1090