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.
- package/lib/context/file/nominal.js +3 -3
- package/lib/context.js +10 -8
- package/lib/element/assertion/contained.js +1 -8
- package/lib/element/assertion/defined.js +1 -8
- package/lib/element/assertion/property.js +1 -8
- package/lib/element/assertion/satisfies.js +1 -8
- package/lib/element/assertion/subproof.js +1 -8
- package/lib/element/assertion.js +8 -1
- package/lib/element/assumption.js +1 -11
- package/lib/element/declaration/metavariable.js +21 -37
- package/lib/element/equality.js +2 -2
- package/lib/element/frame.js +24 -45
- package/lib/element/metavariable.js +91 -36
- package/lib/element/proofAssertion/step.js +4 -4
- package/lib/element/proofAssertion.js +2 -2
- package/lib/element/reference.js +33 -32
- package/lib/element/statement.js +1 -18
- package/lib/element/substitution/frame.js +1 -8
- package/lib/element/substitution/reference.js +1 -8
- package/lib/element/substitution/statement.js +1 -8
- package/lib/element/substitution/term.js +1 -8
- package/lib/element/substitution.js +8 -1
- package/lib/element/variable.js +1 -17
- package/lib/process/equate.js +5 -5
- package/lib/process/unify.js +20 -17
- package/lib/process/validate.js +2 -120
- package/lib/utilities/element.js +36 -3
- package/package.json +1 -1
- package/src/context/file/nominal.js +8 -9
- package/src/context.js +14 -10
- package/src/element/assertion/contained.js +0 -11
- package/src/element/assertion/defined.js +0 -11
- package/src/element/assertion/property.js +0 -11
- package/src/element/assertion/satisfies.js +0 -11
- package/src/element/assertion/subproof.js +0 -11
- package/src/element/assertion.js +11 -0
- package/src/element/assumption.js +1 -18
- package/src/element/declaration/metavariable.js +30 -53
- package/src/element/equality.js +1 -3
- package/src/element/frame.js +31 -62
- package/src/element/metavariable.js +129 -43
- package/src/element/proofAssertion/step.js +3 -3
- package/src/element/proofAssertion.js +1 -3
- package/src/element/reference.js +46 -47
- package/src/element/statement.js +1 -27
- package/src/element/substitution/frame.js +0 -11
- package/src/element/substitution/reference.js +0 -11
- package/src/element/substitution/statement.js +0 -11
- package/src/element/substitution/term.js +0 -11
- package/src/element/substitution.js +11 -0
- package/src/element/variable.js +0 -25
- package/src/process/equate.js +8 -4
- package/src/process/unify.js +23 -22
- package/src/process/validate.js +2 -168
- package/src/utilities/element.js +46 -6
package/src/process/unify.js
CHANGED
|
@@ -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
|
-
|
|
159
|
+
metaTypeName = metaTypeNode.getMetaTypeName(),
|
|
160
|
+
metaTypeNameStatementMetaTypeName = (metaTypeName === STATEMENT_META_TYPE_NAME);
|
|
159
161
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
162
|
+
if (metaTypeNameStatementMetaTypeName) {
|
|
163
|
+
const context = specificContext, ///
|
|
164
|
+
statementNode = specificStatementNode; ///
|
|
163
165
|
|
|
164
|
-
|
|
165
|
-
metaType = context.findMetaTypeByMetaTypeName(metaTypeName);
|
|
166
|
+
let statement;
|
|
166
167
|
|
|
167
|
-
|
|
168
|
+
statement = statementFromStatementNode(statementNode, context);
|
|
168
169
|
|
|
169
|
-
|
|
170
|
-
statementValidatesGivenType = statement.validateGivenMetaType(metaType, stated, context);
|
|
170
|
+
statement = statement.validate(stated, context); ///
|
|
171
171
|
|
|
172
|
-
|
|
173
|
-
|
|
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
|
-
|
|
187
|
+
metaTypeName = metaTypeNode.getMetaTypeName(),
|
|
188
|
+
metaTypeNameFrameMetaTypeName = (metaTypeName === FRAME_META_TYPE_NAME);
|
|
187
189
|
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
190
|
+
if (metaTypeNameFrameMetaTypeName) {
|
|
191
|
+
const context = specificContext, ///
|
|
192
|
+
frameNode = specificFrameNode; ///
|
|
191
193
|
|
|
192
|
-
|
|
193
|
-
metaType = context.findMetaTypeByMetaTypeName(metaTypeName);
|
|
194
|
+
let frame;
|
|
194
195
|
|
|
195
|
-
|
|
196
|
+
frame = frameFromFrameNode(frameNode, context);
|
|
196
197
|
|
|
197
|
-
|
|
198
|
-
frameValidatesGivenMetaType = frame.validateGivenMetaType(metaType, stated, context);
|
|
198
|
+
frame = frame.validate(stated, context); ///
|
|
199
199
|
|
|
200
|
-
|
|
201
|
-
|
|
200
|
+
if (frame !== null) {
|
|
201
|
+
success = true;
|
|
202
|
+
}
|
|
202
203
|
}
|
|
203
204
|
|
|
204
205
|
return success;
|
package/src/process/validate.js
CHANGED
|
@@ -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
|
|
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
|
|
package/src/utilities/element.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
540
|
-
|
|
541
|
-
type =
|
|
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
|
|