occam-verify-cli 0.0.876 → 0.0.878
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/assignment/metaEquality.js +62 -0
- package/lib/context/file.js +12 -4
- package/lib/context/local.js +7 -1
- package/lib/context/localMeta.js +40 -13
- package/lib/metaEquality.js +101 -0
- package/lib/utilities/assignments.js +3 -3
- package/lib/utilities/metaEquivalences.js +15 -0
- package/lib/verify/context.js +34 -0
- package/lib/verify/declaration.js +47 -0
- package/lib/verify/judgement.js +46 -0
- package/lib/verify/metaEquality.js +69 -0
- package/lib/verify/metastatement/qualified.js +2 -2
- package/lib/verify/metastatement/unqualified.js +2 -2
- package/lib/verify/metastatement.js +61 -6
- package/lib/verify/premise.js +6 -4
- package/lib/verify/ruleDerivation.js +16 -3
- package/package.json +2 -2
- package/src/assignment/metaEquality.js +30 -0
- package/src/context/file.js +10 -3
- package/src/context/local.js +2 -0
- package/src/context/localMeta.js +41 -15
- package/src/metaEquality.js +84 -0
- package/src/utilities/assignments.js +2 -2
- package/src/utilities/metaEquivalences.js +5 -0
- package/src/verify/context.js +30 -0
- package/src/verify/declaration.js +52 -0
- package/src/verify/judgement.js +48 -0
- package/src/verify/metaEquality.js +83 -0
- package/src/verify/metastatement/qualified.js +4 -4
- package/src/verify/metastatement/unqualified.js +4 -4
- package/src/verify/metastatement.js +91 -7
- package/src/verify/premise.js +7 -4
- package/src/verify/ruleDerivation.js +24 -5
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import labelMetaType from "../metaType/label";
|
|
4
|
+
import metastatementNodeVerifier from "../verifier/node/metastatement";
|
|
5
|
+
|
|
6
|
+
import { nodeQuery } from "../utilities/query";
|
|
7
|
+
|
|
8
|
+
const metavariableNodeQuery = nodeQuery("/declaration/metavariable!"),
|
|
9
|
+
metastatementNodeQuery = nodeQuery("/declaration/metastatement!");
|
|
10
|
+
|
|
11
|
+
export default function verifyDeclaration(declarationNode, derived, localMetaContext) {
|
|
12
|
+
let declarationVerified = false;
|
|
13
|
+
|
|
14
|
+
const declarationString = localMetaContext.nodeAsString(declarationNode);
|
|
15
|
+
|
|
16
|
+
localMetaContext.trace(`Verifying the '${declarationString}' declaration...`, declarationNode);
|
|
17
|
+
|
|
18
|
+
const metavariableNode = metavariableNodeQuery(declarationNode),
|
|
19
|
+
metavariable = localMetaContext.findMetavariableByMetavariableNode(metavariableNode, localMetaContext);
|
|
20
|
+
|
|
21
|
+
if (metavariable !== null) {
|
|
22
|
+
const metaType = metavariable.getMetaType();
|
|
23
|
+
|
|
24
|
+
if (metaType === labelMetaType) {
|
|
25
|
+
const metastatementNode = metastatementNodeQuery(declarationNode);
|
|
26
|
+
|
|
27
|
+
if (metastatementNode !== null) {
|
|
28
|
+
const { verifyMetastatement } = metastatementNodeVerifier,
|
|
29
|
+
assignments = [],
|
|
30
|
+
metastatementVerified = verifyMetastatement(metastatementNode, assignments, derived, localMetaContext, () => {
|
|
31
|
+
const verifiedAhead = true;
|
|
32
|
+
|
|
33
|
+
return verifiedAhead;
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
declarationVerified = metastatementVerified; ///
|
|
37
|
+
}
|
|
38
|
+
} else {
|
|
39
|
+
const metavariableString = localMetaContext.nodeAsString(metavariableNode),
|
|
40
|
+
labelMetaTypeName = labelMetaType.getName(),
|
|
41
|
+
metaTypeString = metaType.asString();
|
|
42
|
+
|
|
43
|
+
localMetaContext.debug(`The '${metavariableString}' metavariable's meta-type is '${metaTypeString}' when it should be '${labelMetaTypeName}'.`, declarationNode);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
if (declarationVerified) {
|
|
48
|
+
localMetaContext.debug(`...verified the '${declarationString}' declaration.`, declarationNode);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
return declarationVerified;
|
|
52
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import verifyContext from "../verify/context";
|
|
4
|
+
import contextMetaType from "../metaType/context";
|
|
5
|
+
|
|
6
|
+
import { nodeQuery } from "../utilities/query";
|
|
7
|
+
|
|
8
|
+
const contextNodeQuery = nodeQuery("/judgement/metastatement/context!"),
|
|
9
|
+
metavariableNodeQuery = nodeQuery("/judgement/metavariable!");
|
|
10
|
+
|
|
11
|
+
export default function verifyJudgement(judgementNode, derived, localMetaContext) {
|
|
12
|
+
let judgementVerified = false;
|
|
13
|
+
|
|
14
|
+
const judgementString = localMetaContext.nodeAsString(judgementNode);
|
|
15
|
+
|
|
16
|
+
localMetaContext.trace(`Verifying the '${judgementString}' judgement...`, judgementNode);
|
|
17
|
+
|
|
18
|
+
const metavariableNode = metavariableNodeQuery(judgementNode),
|
|
19
|
+
metavariable = localMetaContext.findMetavariableByMetavariableNode(metavariableNode, localMetaContext);
|
|
20
|
+
|
|
21
|
+
if (metavariable !== null) {
|
|
22
|
+
const metaType = metavariable.getMetaType();
|
|
23
|
+
|
|
24
|
+
if (metaType === contextMetaType) {
|
|
25
|
+
const contextNode = contextNodeQuery(judgementNode);
|
|
26
|
+
|
|
27
|
+
if (contextNode !== null) {
|
|
28
|
+
const contextVerified = verifyContext(contextNode, derived, localMetaContext);
|
|
29
|
+
|
|
30
|
+
judgementVerified = contextVerified; ///
|
|
31
|
+
} else {
|
|
32
|
+
localMetaContext.debug(`The right hand side of the '${judgementString}' judgement must be a context.`, judgementNode);
|
|
33
|
+
}
|
|
34
|
+
} else {
|
|
35
|
+
const contextMetaTypeName = contextMetaType.getName(),
|
|
36
|
+
metavariableString = localMetaContext.nodeAsString(metavariableNode),
|
|
37
|
+
metaTypeString = metaType.asString();
|
|
38
|
+
|
|
39
|
+
localMetaContext.debug(`The '${metavariableString}' metavariable's meta-type is '${metaTypeString}' when it should be '${contextMetaTypeName}'.`, judgementNode);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
if (judgementVerified) {
|
|
44
|
+
localMetaContext.debug(`...verified the '${judgementString}' judgement.`, judgementNode);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
return judgementVerified;
|
|
48
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import MetaEquality from "../metaEquality";
|
|
4
|
+
import MetaEqualityAssignment from "../assignment/metaEquality";
|
|
5
|
+
|
|
6
|
+
import { nodeQuery } from "../utilities/query";
|
|
7
|
+
|
|
8
|
+
const leftMetastatementNodeQuery = nodeQuery("/metaEquality/metastatement[0]"),
|
|
9
|
+
rightMetastatementNodeQuery = nodeQuery("/metaEquality/metastatement[1]");
|
|
10
|
+
|
|
11
|
+
export default function verifyMetaEquality(metaEqualityNode, assignments, derived, localMetaContext) {
|
|
12
|
+
let metaEqualityVerified;
|
|
13
|
+
|
|
14
|
+
const metaEqualityString = localMetaContext.nodeAsString(metaEqualityNode);
|
|
15
|
+
|
|
16
|
+
localMetaContext.trace(`Verifying the '${metaEqualityString}' meta-equality...`, metaEqualityNode);
|
|
17
|
+
|
|
18
|
+
const verifyMetaEqualityFunctions = [
|
|
19
|
+
verifyDerivedMetaEquality,
|
|
20
|
+
verifyStatedMetaEquality
|
|
21
|
+
];
|
|
22
|
+
|
|
23
|
+
metaEqualityVerified = verifyMetaEqualityFunctions.some((verifyMetaEqualityFunction) => {
|
|
24
|
+
const metaEqualityVerified = verifyMetaEqualityFunction(metaEqualityNode, assignments, derived, localMetaContext);
|
|
25
|
+
|
|
26
|
+
if (metaEqualityVerified) {
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
if (metaEqualityVerified) {
|
|
32
|
+
localMetaContext.debug(`...verified the '${metaEqualityString}' meta-equality.`, metaEqualityNode);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
return metaEqualityVerified;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
function verifyDerivedMetaEquality(metaEqualityNode, assignments, derived, localMetaContext) {
|
|
39
|
+
let derivedMetaEqualityVerified = false;
|
|
40
|
+
|
|
41
|
+
if (derived) {
|
|
42
|
+
const metaEqualityString = localMetaContext.nodeAsString(metaEqualityNode);
|
|
43
|
+
|
|
44
|
+
localMetaContext.trace(`Verifying the '${metaEqualityString}' derived meta-equality...`, metaEqualityNode);
|
|
45
|
+
|
|
46
|
+
const leftMetastatementNode = leftMetastatementNodeQuery(metaEqualityNode),
|
|
47
|
+
rightMetastatementNode = rightMetastatementNodeQuery(metaEqualityNode),
|
|
48
|
+
metaEquality = MetaEquality.fromLeftMetastatementNodeRightMetastatementNodeAndMetaEqualityNode(leftMetastatementNode, rightMetastatementNode, metaEqualityNode, localMetaContext);
|
|
49
|
+
|
|
50
|
+
if (metaEquality !== null) {
|
|
51
|
+
const metaEqualityAssignment = MetaEqualityAssignment.fromMetaEquality(metaEquality),
|
|
52
|
+
assignment = metaEqualityAssignment; ///
|
|
53
|
+
|
|
54
|
+
assignments.push(assignment);
|
|
55
|
+
|
|
56
|
+
derivedMetaEqualityVerified = true;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
if (derivedMetaEqualityVerified) {
|
|
60
|
+
localMetaContext.debug(`...verified the '${metaEqualityString}' derived meta-equality.`, metaEqualityNode);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
return derivedMetaEqualityVerified;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
function verifyStatedMetaEquality(metaEqualityNode, assignments, derived, localMetaContext) {
|
|
68
|
+
let statedMetaEqualityVerified = false;
|
|
69
|
+
|
|
70
|
+
if (!derived) {
|
|
71
|
+
const metaEqualityString = localMetaContext.nodeAsString(metaEqualityNode);
|
|
72
|
+
|
|
73
|
+
localMetaContext.trace(`Verifying the '${metaEqualityString}' stated meta-equality...`, metaEqualityNode);
|
|
74
|
+
|
|
75
|
+
debugger
|
|
76
|
+
|
|
77
|
+
if (statedMetaEqualityVerified) {
|
|
78
|
+
localMetaContext.debug(`...verified the '${metaEqualityString}' stated meta-equality.`, metaEqualityNode);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
return statedMetaEqualityVerified;
|
|
83
|
+
}
|
|
@@ -32,11 +32,11 @@ export default function verifyQualifiedMetastatement(qualifiedMetastatementNode,
|
|
|
32
32
|
metavariablePresent = localMetaContext.isMetavariablePresentByMetavariableNode(metavariableNode, localMetaContext);
|
|
33
33
|
|
|
34
34
|
if (metavariablePresent) {
|
|
35
|
-
const metastatementVerified = verifyMetastatement(metastatementNode, derived, localMetaContext, () => {
|
|
36
|
-
|
|
35
|
+
const metastatementVerified = verifyMetastatement(metastatementNode, assignments, derived, localMetaContext, () => {
|
|
36
|
+
const verifiedAhead = true;
|
|
37
37
|
|
|
38
|
-
|
|
39
|
-
|
|
38
|
+
return verifiedAhead;
|
|
39
|
+
});
|
|
40
40
|
|
|
41
41
|
qualifiedMetastatementVerified = metastatementVerified; ///
|
|
42
42
|
}
|
|
@@ -23,11 +23,11 @@ export default function verifyUnqualifiedMetastatement(unqualifiedMetastatementN
|
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
if (!unqualifiedMetastatementVerified) {
|
|
26
|
-
const metastatementVerified = verifyMetastatement(metastatementNode, derived, localMetaContext, () => {
|
|
27
|
-
|
|
26
|
+
const metastatementVerified = verifyMetastatement(metastatementNode, assignments, derived, localMetaContext, () => {
|
|
27
|
+
const verifiedAhead = true;
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
return verifiedAhead;
|
|
30
|
+
});
|
|
31
31
|
|
|
32
32
|
unqualifiedMetastatementVerified = metastatementVerified; ///
|
|
33
33
|
}
|
|
@@ -1,22 +1,34 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import verifyJudgement from "../verify/judgement";
|
|
4
|
+
import verifyMetaEquality from "../verify/metaEquality";
|
|
3
5
|
import metastatementNodeVerifier from "../verifier/node/metastatement";
|
|
4
6
|
|
|
5
|
-
|
|
7
|
+
import { nodeQuery } from "../utilities/query";
|
|
8
|
+
|
|
9
|
+
const judgementNodeQuery = nodeQuery("/metastatement/judgement!"),
|
|
10
|
+
metaEqualityNodeQuery = nodeQuery("/metastatement/metaEquality!");
|
|
11
|
+
|
|
12
|
+
function verifyMetastatement(metastatementNode, assignments, derived, localMetaContext) {
|
|
6
13
|
let metastatementVerified;
|
|
7
14
|
|
|
8
15
|
const metastatementString = localMetaContext.nodeAsString(metastatementNode);
|
|
9
16
|
|
|
10
17
|
localMetaContext.trace(`Verifying the '${metastatementString}' metastatement...`, metastatementNode);
|
|
11
18
|
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
|
|
19
|
+
const verifyMetaStatementFunctions = [
|
|
20
|
+
verifyMetastatementAsMetaEquality,
|
|
21
|
+
verifyMetastatementAsJudgement,
|
|
22
|
+
verifyMetastatementAsIs
|
|
23
|
+
];
|
|
15
24
|
|
|
16
|
-
|
|
17
|
-
|
|
25
|
+
metastatementVerified = verifyMetaStatementFunctions.some((verifyStatementFunction) => {
|
|
26
|
+
const metastatementVerified = verifyStatementFunction(metastatementNode, assignments, derived, localMetaContext);
|
|
18
27
|
|
|
19
|
-
|
|
28
|
+
if (metastatementVerified) {
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
});
|
|
20
32
|
|
|
21
33
|
if (metastatementVerified) {
|
|
22
34
|
localMetaContext.debug(`...verified the '${metastatementString}' metastatement.`, metastatementNode);
|
|
@@ -30,3 +42,75 @@ Object.assign(metastatementNodeVerifier, {
|
|
|
30
42
|
});
|
|
31
43
|
|
|
32
44
|
export default verifyMetastatement;
|
|
45
|
+
|
|
46
|
+
function verifyMetastatementAsMetaEquality(metastatementNode, assignments, derived, localMetaContext) {
|
|
47
|
+
let metastatementVerifiedAsMetaEquality = false;
|
|
48
|
+
|
|
49
|
+
const metaEqualityNode = metaEqualityNodeQuery(metastatementNode);
|
|
50
|
+
|
|
51
|
+
if (metaEqualityNode !== null) {
|
|
52
|
+
const metastatementString = localMetaContext.nodeAsString(metastatementNode);
|
|
53
|
+
|
|
54
|
+
localMetaContext.trace(`Verifying the '${metastatementString}' metastatement as a meta-equality...`, metastatementNode);
|
|
55
|
+
|
|
56
|
+
const metaEqualityVerified = verifyMetaEquality(metaEqualityNode, assignments, derived, localMetaContext);
|
|
57
|
+
|
|
58
|
+
metastatementVerifiedAsMetaEquality = metaEqualityVerified; ///
|
|
59
|
+
|
|
60
|
+
if (metastatementVerifiedAsMetaEquality) {
|
|
61
|
+
localMetaContext.debug(`...verified the '${metastatementString}' metastatement as a meta-equality.`, metastatementNode);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
return metastatementVerifiedAsMetaEquality;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
function verifyMetastatementAsJudgement(metastatementNode, assignments, derived, localMetaContext) {
|
|
69
|
+
let metastatementVerifiedAsJudgement = false;
|
|
70
|
+
|
|
71
|
+
const judgementNode = judgementNodeQuery(metastatementNode);
|
|
72
|
+
|
|
73
|
+
if (judgementNode !== null) {
|
|
74
|
+
const metastatementString = localMetaContext.nodeAsString(metastatementNode);
|
|
75
|
+
|
|
76
|
+
localMetaContext.trace(`Verifying the '${metastatementString}' metastatement as a judgement...`, metastatementNode);
|
|
77
|
+
|
|
78
|
+
const judgementVerified = verifyJudgement(judgementNode, derived, localMetaContext);
|
|
79
|
+
|
|
80
|
+
metastatementVerifiedAsJudgement = judgementVerified; ///
|
|
81
|
+
|
|
82
|
+
if (metastatementVerifiedAsJudgement) {
|
|
83
|
+
localMetaContext.debug(`...verified the '${metastatementString}' metastatement as a judgement.`, metastatementNode);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
return metastatementVerifiedAsJudgement;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
function verifyMetastatementAsIs(metastatementNode, assignments, derived, localMetaContext) {
|
|
91
|
+
let metastatementVerifiedAsIs = false;
|
|
92
|
+
|
|
93
|
+
const judgementNode = judgementNodeQuery(metastatementNode),
|
|
94
|
+
metaEqualityNode = metaEqualityNodeQuery(metastatementNode);
|
|
95
|
+
|
|
96
|
+
if ((judgementNode === null) && (metaEqualityNode === null)) {
|
|
97
|
+
const metastatementString = localMetaContext.nodeAsString(metastatementNode);
|
|
98
|
+
|
|
99
|
+
localMetaContext.trace(`Verifying the '${metastatementString}' metastatement as is...`, metastatementNode);
|
|
100
|
+
|
|
101
|
+
const nonTerminalNode = metastatementNode, ///
|
|
102
|
+
nonTerminalNodeVerified = metastatementNodeVerifier.verifyNonTerminalNode(nonTerminalNode, localMetaContext, () => {
|
|
103
|
+
const verifiedAhead = true;
|
|
104
|
+
|
|
105
|
+
return verifiedAhead;
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
metastatementVerifiedAsIs = nonTerminalNodeVerified; ///
|
|
109
|
+
|
|
110
|
+
if (metastatementVerifiedAsIs) {
|
|
111
|
+
localMetaContext.debug(`...verified the '${metastatementString}' metastatement as is.`, metastatementNode);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
return metastatementVerifiedAsIs;
|
|
116
|
+
}
|
package/src/verify/premise.js
CHANGED
|
@@ -5,6 +5,7 @@ import MetaproofStep from "../step/metaproof";
|
|
|
5
5
|
import verifyUnqualifiedMetastatement from "../verify/metastatement/unqualified";
|
|
6
6
|
|
|
7
7
|
import { nodeQuery } from "../utilities/query";
|
|
8
|
+
import { assignAssignment } from "../utilities/assignments";
|
|
8
9
|
|
|
9
10
|
const metastatementNodeQuery = nodeQuery("/unqualifiedMetastatement/metastatement!"),
|
|
10
11
|
unqualifiedMetastatementNodeQuery = nodeQuery("/premise/unqualifiedMetastatement!");
|
|
@@ -22,6 +23,12 @@ export default function verifyPremise(premiseNode, premises, localMetaContext) {
|
|
|
22
23
|
unqualifiedMetastatementVerified = verifyUnqualifiedMetastatement(unqualifiedMetastatementNode, assignments, derived, localMetaContext);
|
|
23
24
|
|
|
24
25
|
if (unqualifiedMetastatementVerified) {
|
|
26
|
+
const assignmentAssigned = assignAssignment(assignments, localMetaContext);
|
|
27
|
+
|
|
28
|
+
premiseVerified = assignmentAssigned; ///
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
if (premiseVerified) {
|
|
25
32
|
const metastatementNode = metastatementNodeQuery(unqualifiedMetastatementNode),
|
|
26
33
|
metaproofStep = MetaproofStep.fromMetastatementNode(metastatementNode),
|
|
27
34
|
premise = Premise.fromMetastatementNode(metastatementNode);
|
|
@@ -30,10 +37,6 @@ export default function verifyPremise(premiseNode, premises, localMetaContext) {
|
|
|
30
37
|
|
|
31
38
|
localMetaContext.addMetaproofStep(metaproofStep);
|
|
32
39
|
|
|
33
|
-
premiseVerified = true;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
if (premiseVerified) {
|
|
37
40
|
localMetaContext.debug(`...verified the '${premiseString}' premise.`, premiseNode);
|
|
38
41
|
}
|
|
39
42
|
|
|
@@ -6,6 +6,7 @@ import LocalMetaContext from "../context/localMeta";
|
|
|
6
6
|
import verifyQualifiedMetastatement from "../verify/metastatement/qualified";
|
|
7
7
|
import verifyUnqualifiedMetastatement from "../verify/metastatement/unqualified";
|
|
8
8
|
|
|
9
|
+
import { assignAssignment } from "../utilities/assignments";
|
|
9
10
|
import { nodeQuery, nodesQuery } from "../utilities/query";
|
|
10
11
|
import { RULE_SUBPROOF_RULE_NAME, QUALIFIED_METASTATEMENT_RULE_NAME, UNQUALIFIED_METASTATEMENT_RULE_NAME } from "../ruleNames";
|
|
11
12
|
|
|
@@ -89,11 +90,20 @@ function verifyChild(childNode, localMetaContext) {
|
|
|
89
90
|
}
|
|
90
91
|
|
|
91
92
|
case QUALIFIED_METASTATEMENT_RULE_NAME: {
|
|
93
|
+
let qualifiedMetastatementVerified;
|
|
94
|
+
|
|
92
95
|
const derived = true,
|
|
93
96
|
assignments = [],
|
|
94
97
|
metavariableReferences = true,
|
|
95
|
-
qualifiedMetastatementNode = childNode
|
|
96
|
-
|
|
98
|
+
qualifiedMetastatementNode = childNode; ///
|
|
99
|
+
|
|
100
|
+
qualifiedMetastatementVerified = verifyQualifiedMetastatement(qualifiedMetastatementNode, metavariableReferences, assignments, derived, localMetaContext);
|
|
101
|
+
|
|
102
|
+
if (qualifiedMetastatementVerified) {
|
|
103
|
+
const assignmentAssigned = assignAssignment(assignments, localMetaContext);
|
|
104
|
+
|
|
105
|
+
qualifiedMetastatementVerified = assignmentAssigned; ///
|
|
106
|
+
}
|
|
97
107
|
|
|
98
108
|
if (qualifiedMetastatementVerified) {
|
|
99
109
|
const metastatementNode = metastatementNodeQuery(qualifiedMetastatementNode),
|
|
@@ -108,10 +118,19 @@ function verifyChild(childNode, localMetaContext) {
|
|
|
108
118
|
}
|
|
109
119
|
|
|
110
120
|
case UNQUALIFIED_METASTATEMENT_RULE_NAME: {
|
|
121
|
+
let unqualifiedMetastatementVerified;
|
|
122
|
+
|
|
111
123
|
const derived = true,
|
|
112
|
-
assignments =
|
|
113
|
-
unqualifiedMetastatementNode = childNode
|
|
114
|
-
|
|
124
|
+
assignments = [],
|
|
125
|
+
unqualifiedMetastatementNode = childNode; ///
|
|
126
|
+
|
|
127
|
+
unqualifiedMetastatementVerified = verifyUnqualifiedMetastatement(unqualifiedMetastatementNode, assignments, derived, localMetaContext);
|
|
128
|
+
|
|
129
|
+
if (unqualifiedMetastatementVerified) {
|
|
130
|
+
const assignmentAssigned = assignAssignment(assignments, localMetaContext);
|
|
131
|
+
|
|
132
|
+
unqualifiedMetastatementVerified = assignmentAssigned; ///
|
|
133
|
+
}
|
|
115
134
|
|
|
116
135
|
if (unqualifiedMetastatementVerified) {
|
|
117
136
|
const metastatementNode = metastatementNodeQuery(unqualifiedMetastatementNode),
|