occam-verify-cli 1.0.718 → 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 +1 -1
- package/lib/element/assumption.js +1 -11
- package/lib/element/declaration/metavariable.js +18 -34
- package/lib/element/equality.js +2 -2
- package/lib/element/frame.js +37 -61
- package/lib/element/metavariable.js +90 -35
- 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/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 +29 -16
- package/package.json +1 -1
- package/src/context/file/nominal.js +6 -6
- package/src/element/assumption.js +1 -18
- package/src/element/declaration/metavariable.js +26 -49
- package/src/element/equality.js +1 -3
- package/src/element/frame.js +45 -83
- package/src/element/metavariable.js +128 -42
- 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 +0 -26
- 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 +36 -21
|
@@ -38,9 +38,7 @@ export default class ProofAssertion extends Element {
|
|
|
38
38
|
|
|
39
39
|
const leftStatement = statement, ///
|
|
40
40
|
rightStatement = this.statement, ///
|
|
41
|
-
|
|
42
|
-
rightStatementNode = rightStatement.getNode(),
|
|
43
|
-
statementsEquate = equateStatements(leftStatementNode, rightStatementNode, context);
|
|
41
|
+
statementsEquate = equateStatements(leftStatement, rightStatement, context);
|
|
44
42
|
|
|
45
43
|
if (statementsEquate) {
|
|
46
44
|
comparesToStatement = true;
|
package/src/element/reference.js
CHANGED
|
@@ -125,20 +125,41 @@ export default define(class Reference extends Element {
|
|
|
125
125
|
} else {
|
|
126
126
|
let validates = false;
|
|
127
127
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
128
|
+
const metavariableValidates = this.validateMetavariable(context);
|
|
129
|
+
|
|
130
|
+
if (metavariableValidates) {
|
|
131
|
+
const referenceMetaTypeName = REFERENCE_META_TYPE_NAME,
|
|
132
|
+
referenceMetaType = context.findMetaTypeByMetaTypeName(referenceMetaTypeName),
|
|
133
|
+
metaType = this.metavariable.getMetaType();
|
|
134
|
+
|
|
135
|
+
if (metaType === null) {
|
|
136
|
+
const reference = this, ///
|
|
137
|
+
labelPresent = context.isLabelPresentByReference(reference);
|
|
138
|
+
|
|
139
|
+
if (labelPresent) {
|
|
140
|
+
validates = true;
|
|
141
|
+
} else {
|
|
142
|
+
context.debug(`There is no label for the '${referenceString}' reference.`);
|
|
143
|
+
}
|
|
144
|
+
} else {
|
|
145
|
+
const metavariableMetaTypeEqualToReferenceMetaType = this.metavariable.isMetaTypeEqualTo(referenceMetaType);
|
|
146
|
+
|
|
147
|
+
if (metavariableMetaTypeEqualToReferenceMetaType) {
|
|
148
|
+
const reference = this, ///
|
|
149
|
+
metavariablePresent = context.isMetavariablePresentByReference(reference);
|
|
150
|
+
|
|
151
|
+
if (metavariablePresent) {
|
|
152
|
+
validates = true;
|
|
153
|
+
} else {
|
|
154
|
+
context.debug(`There is no metavariable for the '${referenceString}' reference.`);
|
|
155
|
+
}
|
|
156
|
+
} else {
|
|
157
|
+
const metaTypeString = metaType.getString(),
|
|
158
|
+
metavariableString = this.metavariable.getString(),
|
|
159
|
+
reerenceMetaTypeString = referenceMetaType.getString();
|
|
160
|
+
|
|
161
|
+
context.debug(`The '${referenceString}' reference's '${metavariableString}' metavariable's '${metaTypeString}' meta-type should be the '${reerenceMetaTypeString}' meta-type.`);
|
|
162
|
+
}
|
|
142
163
|
}
|
|
143
164
|
}
|
|
144
165
|
|
|
@@ -162,44 +183,19 @@ export default define(class Reference extends Element {
|
|
|
162
183
|
|
|
163
184
|
context.trace(`Validating the '${referenceString}' reference's '${metavariableString}' metavariable...'`);
|
|
164
185
|
|
|
165
|
-
const
|
|
166
|
-
referenceMetaType = context.findMetaTypeByMetaTypeName(metaTypeName),
|
|
167
|
-
metaType = referenceMetaType, ///
|
|
168
|
-
metavariable = context.findMetavariable(this.metavariable, context);
|
|
186
|
+
const metavariable = this.metavariable.validate(context);
|
|
169
187
|
|
|
170
188
|
if (metavariable !== null) {
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
if (metavariableValidatesGivenMetaType) {
|
|
174
|
-
metavariableValidates = true;
|
|
175
|
-
}
|
|
176
|
-
} else {
|
|
177
|
-
context.debug(`The '${metavariableString}' metavariable is not present.`);
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
return metavariableValidates;
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
validateAsMetavariable(context) {
|
|
184
|
-
let validatesAsMetavariable = false;
|
|
185
|
-
|
|
186
|
-
const referenceString = this.getString(); ///
|
|
189
|
+
this.metavariable = metavariable;
|
|
187
190
|
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
const metavariable = this.getMetavariable(),
|
|
191
|
-
metavariableName = metavariable.getName(),
|
|
192
|
-
metavariablePresent = context.isMetavariablePresentByMetavariableName(metavariableName);
|
|
193
|
-
|
|
194
|
-
if (metavariablePresent) {
|
|
195
|
-
validatesAsMetavariable = true;
|
|
191
|
+
metavariableValidates = true;
|
|
196
192
|
}
|
|
197
193
|
|
|
198
|
-
if (
|
|
199
|
-
context.debug(`...validated the '${referenceString}' reference
|
|
194
|
+
if (metavariableValidates) {
|
|
195
|
+
context.debug(`...validated the '${referenceString}' reference's '${metavariableString}' metavariable.'`);
|
|
200
196
|
}
|
|
201
197
|
|
|
202
|
-
return
|
|
198
|
+
return metavariableValidates;
|
|
203
199
|
}
|
|
204
200
|
|
|
205
201
|
unifyLabel(label, context) {
|
|
@@ -301,8 +297,11 @@ export default define(class Reference extends Element {
|
|
|
301
297
|
const { string } = json,
|
|
302
298
|
referenceNode = instantiateReference(string, context),
|
|
303
299
|
node = referenceNode, ///
|
|
304
|
-
metavariable = metavariableFromReferenceNode(referenceNode, context)
|
|
305
|
-
|
|
300
|
+
metavariable = metavariableFromReferenceNode(referenceNode, context);
|
|
301
|
+
|
|
302
|
+
context = null;
|
|
303
|
+
|
|
304
|
+
const reference = new Reference(context, string, node, metavariable);
|
|
306
305
|
|
|
307
306
|
return reference;
|
|
308
307
|
}, context);
|
package/src/element/statement.js
CHANGED
|
@@ -8,7 +8,6 @@ import { literally } from "../utilities/context";
|
|
|
8
8
|
import { unifyStatement } from "../process/unify";
|
|
9
9
|
import { validateStatements } from "../utilities/validation";
|
|
10
10
|
import { instantiateStatement } from "../process/instantiate";
|
|
11
|
-
import { STATEMENT_META_TYPE_NAME } from "../metaTypeNames";
|
|
12
11
|
|
|
13
12
|
const { match, backwardsSome } = arrayUtilities;
|
|
14
13
|
|
|
@@ -209,31 +208,6 @@ export default define(class Statement extends Element {
|
|
|
209
208
|
return statement;
|
|
210
209
|
}
|
|
211
210
|
|
|
212
|
-
validateGivenMetaType(metaType, stated, context) {
|
|
213
|
-
let validatesGivenMetaType = false;
|
|
214
|
-
|
|
215
|
-
const metaTypeString = metaType.getString(),
|
|
216
|
-
statementString = this.getString(); ///
|
|
217
|
-
|
|
218
|
-
context.trace(`Validating the '${statementString}' statement given the '${metaTypeString}' meta-type...`);
|
|
219
|
-
|
|
220
|
-
const metaTypeName = metaType.getName();
|
|
221
|
-
|
|
222
|
-
if (metaTypeName === STATEMENT_META_TYPE_NAME) {
|
|
223
|
-
const statement = this.validate(stated, context)
|
|
224
|
-
|
|
225
|
-
if (statement !== null) {
|
|
226
|
-
validatesGivenMetaType = true;
|
|
227
|
-
}
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
if (validatesGivenMetaType) {
|
|
231
|
-
context.debug(`...validated the '${statementString}' statement given the '${metaTypeString}' meta-type.`);
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
return validatesGivenMetaType;
|
|
235
|
-
}
|
|
236
|
-
|
|
237
211
|
unifySubproof(subproof, generalContext, specificContext) {
|
|
238
212
|
let subproofUnifies = false;
|
|
239
213
|
|
package/src/element/variable.js
CHANGED
|
@@ -95,31 +95,6 @@ export default define(class Variable extends Element {
|
|
|
95
95
|
return validates;
|
|
96
96
|
}
|
|
97
97
|
|
|
98
|
-
validateType(context) {
|
|
99
|
-
let typeValidates = false;
|
|
100
|
-
|
|
101
|
-
const typeString = this.type.getString();
|
|
102
|
-
|
|
103
|
-
context.trace(`Validating the '${typeString}' type...`);
|
|
104
|
-
|
|
105
|
-
const prefixedTypeName = this.type.getPrefixedName(),
|
|
106
|
-
type = context.findTypeByPrefixedTypeName(prefixedTypeName);
|
|
107
|
-
|
|
108
|
-
if (type === null) {
|
|
109
|
-
context.debug(`The '${typeString}' type is not present.`);
|
|
110
|
-
} else {
|
|
111
|
-
this.type = type; ///
|
|
112
|
-
|
|
113
|
-
typeValidates = true;
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
if (typeValidates) {
|
|
117
|
-
context.debug(`...validated the '${typeString}' type.`);
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
return typeValidates;
|
|
121
|
-
}
|
|
122
|
-
|
|
123
98
|
unifyTerm(term, generalContext, specificContext) {
|
|
124
99
|
let termUnifies = false;
|
|
125
100
|
|
package/src/process/equate.js
CHANGED
|
@@ -63,10 +63,12 @@ class EquationalPass extends EquivalencePass {
|
|
|
63
63
|
|
|
64
64
|
const equationalPass = new EquationalPass();
|
|
65
65
|
|
|
66
|
-
export function equateTerms(
|
|
66
|
+
export function equateTerms(leftTerm, rightTerm, context) {
|
|
67
67
|
let termsEquate;
|
|
68
68
|
|
|
69
|
-
const
|
|
69
|
+
const leftTermNode = leftTerm.getNode(),
|
|
70
|
+
rightTermNode = rightTerm.getNode(),
|
|
71
|
+
leftNode = leftTermNode, ///
|
|
70
72
|
rightNode = rightTermNode, ///
|
|
71
73
|
success = equationalPass.run(leftNode, rightNode, context);
|
|
72
74
|
|
|
@@ -75,10 +77,12 @@ export function equateTerms(leftTermNode, rightTermNode, context) {
|
|
|
75
77
|
return termsEquate;
|
|
76
78
|
}
|
|
77
79
|
|
|
78
|
-
export function equateStatements(
|
|
80
|
+
export function equateStatements(leftStatement, rightStatement, context) {
|
|
79
81
|
let statementsEquate;
|
|
80
82
|
|
|
81
|
-
const
|
|
83
|
+
const leftStatementNode = leftStatement.getNode(),
|
|
84
|
+
rightStatementNode = rightStatement.getNode(),
|
|
85
|
+
leftNode = leftStatementNode, ///
|
|
82
86
|
rightNode = rightStatementNode, ///
|
|
83
87
|
success = equationalPass.run(leftNode, rightNode, context);
|
|
84
88
|
|
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
|
@@ -123,12 +123,12 @@ export function frameFromFrameNode(frameNode, context) {
|
|
|
123
123
|
const { Frame } = elements,
|
|
124
124
|
node = frameNode, ///
|
|
125
125
|
string = context.nodeAsString(node),
|
|
126
|
-
|
|
127
|
-
|
|
126
|
+
assumptions = assumptionsFromFrameNode(frameNode, context),
|
|
127
|
+
metavariable = metavariableFromFrameNode(frameNode, context);
|
|
128
128
|
|
|
129
129
|
context = null;
|
|
130
130
|
|
|
131
|
-
const frame = new Frame(context, string, node,
|
|
131
|
+
const frame = new Frame(context, string, node, assumptions, metavariable);
|
|
132
132
|
|
|
133
133
|
return frame;
|
|
134
134
|
}
|
|
@@ -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
|
}
|
|
@@ -549,11 +552,11 @@ export function metavariableFromMetavariableNode(metavariableNode, context) {
|
|
|
549
552
|
const { Metavariable } = elements,
|
|
550
553
|
node = metavariableNode, ///
|
|
551
554
|
string = context.nodeAsString(node),
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
type =
|
|
555
|
+
name = nameFromMetavariableNode(metavariableNode, context),
|
|
556
|
+
term = termFromMetavariableNode(metavariableNode, context),
|
|
557
|
+
type = typeFromMetavariableNode(metavariableNode, context),
|
|
555
558
|
metaType = null,
|
|
556
|
-
metavariable = new Metavariable(context, string, node, name, type, metaType);
|
|
559
|
+
metavariable = new Metavariable(context, string, node, name, term, type, metaType);
|
|
557
560
|
|
|
558
561
|
return metavariable;
|
|
559
562
|
}
|
|
@@ -966,18 +969,6 @@ export function conclusionFromRuleNode(ruleNode, context) {
|
|
|
966
969
|
return conclusion;
|
|
967
970
|
}
|
|
968
971
|
|
|
969
|
-
export function referenceFromFrameNode(frameNode, context) {
|
|
970
|
-
let reference = null;
|
|
971
|
-
|
|
972
|
-
const metavariableNode = frameNode.getMetavariableNode();
|
|
973
|
-
|
|
974
|
-
if (metavariableNode !== null) {
|
|
975
|
-
reference = referencesFromMetavariableNode(metavariableNode, context);
|
|
976
|
-
}
|
|
977
|
-
|
|
978
|
-
return reference;
|
|
979
|
-
}
|
|
980
|
-
|
|
981
972
|
export function theoremFromSectionNode(sectionNode, context) {
|
|
982
973
|
let theorem = null;
|
|
983
974
|
|
|
@@ -1070,6 +1061,30 @@ export function nameFromMetavariableNode(metavariableNode, context) {
|
|
|
1070
1061
|
return name;
|
|
1071
1062
|
}
|
|
1072
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
|
+
|
|
1073
1088
|
export function metavariableFromFrameNode(frameNode, context) {
|
|
1074
1089
|
let metavariable = null;
|
|
1075
1090
|
|