occam-verify-cli 0.0.986 → 0.0.988
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/resolve/complexSubstitutionAgainstSimpleSubstitution.js +7 -4
- package/lib/substitution/frameForMetavariable.js +7 -59
- package/lib/substitution/statementForMetavariable.js +1 -8
- package/lib/substitution/termForVariable.js +2 -3
- package/lib/unifier/statementWithCombinator.js +11 -2
- package/lib/unify/complexSubstitutionStatementWithSimpleSubstitutionStatement.js +6 -1
- package/lib/unify/frameWithMetaType.js +24 -0
- package/lib/verify/assertion/contained.js +34 -37
- package/lib/verify/assertion/defined.js +23 -26
- package/lib/verify/frame.js +7 -2
- package/lib/verify/frameGivenMetaType.js +37 -0
- package/lib/verify/statementGivenMetaType.js +2 -1
- package/package.json +2 -2
- package/src/resolve/complexSubstitutionAgainstSimpleSubstitution.js +14 -5
- package/src/substitution/frameForMetavariable.js +8 -67
- package/src/substitution/statementForMetavariable.js +0 -6
- package/src/substitution/termForVariable.js +2 -3
- package/src/unifier/statementWithCombinator.js +13 -0
- package/src/unify/complexSubstitutionStatementWithSimpleSubstitutionStatement.js +9 -0
- package/src/unify/frameWithMetaType.js +14 -0
- package/src/verify/assertion/contained.js +44 -47
- package/src/verify/assertion/defined.js +29 -32
- package/src/verify/frame.js +8 -1
- package/src/verify/frameGivenMetaType.js +31 -0
- package/src/verify/statementGivenMetaType.js +2 -0
|
@@ -90,9 +90,8 @@ export default class TermForVariableSubstitution extends Substitution {
|
|
|
90
90
|
const termNodeB = this.termNode, ///
|
|
91
91
|
termStringB = localContextB.nodeAsString(termNodeB),
|
|
92
92
|
variableNodeA = this.variableNode, ///
|
|
93
|
-
variableStringA = localContextA.nodeAsString(variableNodeA)
|
|
94
|
-
|
|
95
|
-
const string = `[${termStringB} for ${variableStringA}]`;
|
|
93
|
+
variableStringA = localContextA.nodeAsString(variableNodeA),
|
|
94
|
+
string = `[${termStringB} for ${variableStringA}]`;
|
|
96
95
|
|
|
97
96
|
return string;
|
|
98
97
|
}
|
|
@@ -2,12 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
import Unifier from "../unifier";
|
|
4
4
|
import unifyTermWithType from "../unify/termWithType";
|
|
5
|
+
import unifyFrameWithMetaType from "../unify/frameWithMetaType";
|
|
5
6
|
import unifyStatementWithMetaType from "../unify/statementWithMetaType";
|
|
6
7
|
|
|
7
8
|
import { nodeQuery } from "../utilities/query";
|
|
8
9
|
|
|
9
10
|
const termNodeQuery = nodeQuery("/term!"),
|
|
10
11
|
typeNodeQuery = nodeQuery("/type!"),
|
|
12
|
+
frameNodeQuery = nodeQuery("/frame!"),
|
|
11
13
|
metaTypeNodeQuery = nodeQuery("/metaType!"),
|
|
12
14
|
statementNodeQuery = nodeQuery("/statement!");
|
|
13
15
|
|
|
@@ -36,6 +38,17 @@ class StatementWithCombinatorUnifier extends Unifier {
|
|
|
36
38
|
return statementUnifiedWithMetaType;
|
|
37
39
|
}
|
|
38
40
|
},
|
|
41
|
+
{
|
|
42
|
+
nodeQueryA: frameNodeQuery,
|
|
43
|
+
nodeQueryB: metaTypeNodeQuery,
|
|
44
|
+
unify: (frameNodeA, metaTypeNodeB, assignments, stated, localContext) => {
|
|
45
|
+
const metaTypeNode = metaTypeNodeB, ///
|
|
46
|
+
frameNode = frameNodeA, ///
|
|
47
|
+
frameUnifiedWithMetaType = unifyFrameWithMetaType(frameNode, metaTypeNode, assignments, stated, localContext);
|
|
48
|
+
|
|
49
|
+
return frameUnifiedWithMetaType;
|
|
50
|
+
}
|
|
51
|
+
},
|
|
39
52
|
{
|
|
40
53
|
nodeQueryA: termNodeQuery,
|
|
41
54
|
nodeQueryB: typeNodeQuery,
|
|
@@ -5,6 +5,11 @@ import metaLevelUnifier from "../unifier/metaLevel";
|
|
|
5
5
|
export default function unifyComplexSubstitutionStatementWithSimpleSubstitutionStatement(complexSubstitutionStatementNode, simpleSubstitutionStatementNode, substitutions, localContextA, localContextB) {
|
|
6
6
|
let complexSubstitutionStatementWithSimpleSubstitutionStatement;
|
|
7
7
|
|
|
8
|
+
const complexSubstitutionStatementString = localContextB.nodeAsString(complexSubstitutionStatementNode),
|
|
9
|
+
simpleSubstitutionStatementString = localContextB.nodeAsString(simpleSubstitutionStatementNode);
|
|
10
|
+
|
|
11
|
+
localContextB.trace(`Unifying the complex substitution's '${complexSubstitutionStatementString}' statement with the simple substitution's '${simpleSubstitutionStatementString}' statement...`, simpleSubstitutionStatementNode);
|
|
12
|
+
|
|
8
13
|
const nodeA = complexSubstitutionStatementNode, ///
|
|
9
14
|
nodeB = simpleSubstitutionStatementNode; ///
|
|
10
15
|
|
|
@@ -14,5 +19,9 @@ export default function unifyComplexSubstitutionStatementWithSimpleSubstitutionS
|
|
|
14
19
|
|
|
15
20
|
complexSubstitutionStatementWithSimpleSubstitutionStatement = unified; ///
|
|
16
21
|
|
|
22
|
+
if (complexSubstitutionStatementWithSimpleSubstitutionStatement) {
|
|
23
|
+
localContextB.trace(`...unified the complex substitution's '${complexSubstitutionStatementString}' statement with the simple substitution's '${simpleSubstitutionStatementString}' statement.`, simpleSubstitutionStatementNode);
|
|
24
|
+
}
|
|
25
|
+
|
|
17
26
|
return complexSubstitutionStatementWithSimpleSubstitutionStatement;
|
|
18
27
|
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import verifyFrameGivenMetaType from "../verify/frameGivenMetaType";
|
|
4
|
+
|
|
5
|
+
export default function unifyFrameWithMetaType(frameNode, metaTypeNode, assignments, stated, localContext) {
|
|
6
|
+
let frameUnifiedWithMetaType;
|
|
7
|
+
|
|
8
|
+
const metaType = localContext.findMetaTypeByMetaTypeNode(metaTypeNode),
|
|
9
|
+
frameVerifiedGivenMetaType = verifyFrameGivenMetaType(frameNode, metaType, assignments, stated, localContext);
|
|
10
|
+
|
|
11
|
+
frameUnifiedWithMetaType = frameVerifiedGivenMetaType; ///
|
|
12
|
+
|
|
13
|
+
return frameUnifiedWithMetaType;
|
|
14
|
+
}
|
|
@@ -5,8 +5,8 @@ import metaLevelVerifier from "../../verifier/metaLevel";
|
|
|
5
5
|
import { isAssertionNegated } from "../../utilities/assertion";
|
|
6
6
|
import { nodeQuery, nodesQuery } from "../../utilities/query";
|
|
7
7
|
|
|
8
|
-
const
|
|
9
|
-
|
|
8
|
+
const termVariableNodeQuery = nodeQuery("/containedAssertion/term/variable!"),
|
|
9
|
+
frameMetavariableNodeQuery = nodeQuery("/containedAssertion/frame/metavariable!"),
|
|
10
10
|
statementVariableNodesQuery = nodesQuery("/containedAssertion/statement//variable"),
|
|
11
11
|
statementMetavariableNodesQuery = nodesQuery("/containedAssertion/statement//metavariable");
|
|
12
12
|
|
|
@@ -56,56 +56,53 @@ function verifyDerivedContainedAssertion(containedAssertionNode, assignments, st
|
|
|
56
56
|
|
|
57
57
|
localContext.trace(`Verifying the '${containedAssertionString}' derived contained assertion...`, containedAssertionNode);
|
|
58
58
|
|
|
59
|
-
const
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
if (variableNodeMatchesStatementMetavariableNode) {
|
|
80
|
-
derivedContainedAssertionVerified = true;
|
|
81
|
-
}
|
|
59
|
+
const assertionNegated = isAssertionNegated(containedAssertionNode),
|
|
60
|
+
frameMetavariableNode = frameMetavariableNodeQuery(containedAssertionNode),
|
|
61
|
+
termVariableNode = termVariableNodeQuery(containedAssertionNode),
|
|
62
|
+
negated = assertionNegated; ///
|
|
63
|
+
|
|
64
|
+
if (false) {
|
|
65
|
+
///
|
|
66
|
+
} else if (frameMetavariableNode !== null) {
|
|
67
|
+
const statementMetavariableNodes = statementMetavariableNodesQuery(containedAssertionNode),
|
|
68
|
+
frameMetavariableNodeMatchesStatementMetavariableNode = statementMetavariableNodes.some((statementMetavariableNode) => {
|
|
69
|
+
const frameMetavariableNodeMatchesStatementMetavariableNode = frameMetavariableNode.match(statementMetavariableNode);
|
|
70
|
+
|
|
71
|
+
if (frameMetavariableNodeMatchesStatementMetavariableNode) {
|
|
72
|
+
return true;
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
if (!negated) {
|
|
77
|
+
if (frameMetavariableNodeMatchesStatementMetavariableNode) {
|
|
78
|
+
derivedContainedAssertionVerified = true;
|
|
82
79
|
}
|
|
80
|
+
}
|
|
83
81
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
}
|
|
82
|
+
if (negated) {
|
|
83
|
+
if (!frameMetavariableNodeMatchesStatementMetavariableNode) {
|
|
84
|
+
derivedContainedAssertionVerified = true;
|
|
88
85
|
}
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
86
|
+
}
|
|
87
|
+
} else if (termVariableNode !== null) {
|
|
88
|
+
const statementVariableNodes = statementVariableNodesQuery(containedAssertionNode),
|
|
89
|
+
termVariableNodeMatchesStatementVariableNode = statementVariableNodes.some((statementVariableNode) => {
|
|
90
|
+
const termVariableNodeMatchesStatementVariableNode = termVariableNode.match(statementVariableNode);
|
|
91
|
+
|
|
92
|
+
if (termVariableNodeMatchesStatementVariableNode) {
|
|
93
|
+
return true;
|
|
94
|
+
}
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
if (!negated) {
|
|
98
|
+
if (termVariableNodeMatchesStatementVariableNode) {
|
|
99
|
+
derivedContainedAssertionVerified = true;
|
|
103
100
|
}
|
|
101
|
+
}
|
|
104
102
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
}
|
|
103
|
+
if (negated) {
|
|
104
|
+
if (!termVariableNodeMatchesStatementVariableNode) {
|
|
105
|
+
derivedContainedAssertionVerified = true;
|
|
109
106
|
}
|
|
110
107
|
}
|
|
111
108
|
}
|
|
@@ -55,43 +55,40 @@ function verifyDerivedDefinedAssertion(definedAssertionNode, assignments, stated
|
|
|
55
55
|
|
|
56
56
|
localContext.trace(`Verifying the '${definedAssertionString}' derived defined assertion...`, definedAssertionNode);
|
|
57
57
|
|
|
58
|
-
const
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
if (metavariableDefinedByMetavariableName) {
|
|
72
|
-
derivedDefinedAssertionVerified = true;
|
|
73
|
-
}
|
|
58
|
+
const assertionNegated = isAssertionNegated(definedAssertionNode),
|
|
59
|
+
metavariableNode = metavariableNodeQuery(definedAssertionNode),
|
|
60
|
+
variableNode = variableNodeQuery(definedAssertionNode);
|
|
61
|
+
|
|
62
|
+
if (false) {
|
|
63
|
+
///
|
|
64
|
+
} else if (metavariableNode !== null) {
|
|
65
|
+
const metavariableName = metavariableNameFromMetavariableNode(metavariableNode),
|
|
66
|
+
metavariableDefinedByMetavariableName = localContext.isMetavariableDefinedByMetavariableName(metavariableName);
|
|
67
|
+
|
|
68
|
+
if (!assertionNegated) {
|
|
69
|
+
if (metavariableDefinedByMetavariableName) {
|
|
70
|
+
derivedDefinedAssertionVerified = true;
|
|
74
71
|
}
|
|
72
|
+
}
|
|
75
73
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
}
|
|
74
|
+
if (assertionNegated) {
|
|
75
|
+
if (!metavariableDefinedByMetavariableName) {
|
|
76
|
+
derivedDefinedAssertionVerified = true;
|
|
80
77
|
}
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
78
|
+
}
|
|
79
|
+
} else if (variableNode !== null) {
|
|
80
|
+
const variable = localContext.findVariableByVariableNode(variableNode),
|
|
81
|
+
variableDefined = localContext.isVariableDefined(variable);
|
|
82
|
+
|
|
83
|
+
if (!assertionNegated) {
|
|
84
|
+
if (variableDefined) {
|
|
85
|
+
derivedDefinedAssertionVerified = true;
|
|
89
86
|
}
|
|
87
|
+
}
|
|
90
88
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
}
|
|
89
|
+
if (assertionNegated) {
|
|
90
|
+
if (!variableDefined) {
|
|
91
|
+
derivedDefinedAssertionVerified = true;
|
|
95
92
|
}
|
|
96
93
|
}
|
|
97
94
|
}
|
package/src/verify/frame.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import shim from "../shim";
|
|
3
4
|
import Frame from "../frame";
|
|
4
5
|
import frameMetaType from "../metaType/frame";
|
|
5
6
|
import verifyDeclaration from "../verify/declaration";
|
|
@@ -17,7 +18,7 @@ const verifyFrameFunctions = [
|
|
|
17
18
|
verifyStatedFrame
|
|
18
19
|
];
|
|
19
20
|
|
|
20
|
-
|
|
21
|
+
function verifyFrame(frameNode, frames, stated, localContext) {
|
|
21
22
|
let frameVerified;
|
|
22
23
|
|
|
23
24
|
const frameString = localContext.nodeAsString(frameNode);
|
|
@@ -39,6 +40,12 @@ export default function verifyFrame(frameNode, frames, stated, localContext) {
|
|
|
39
40
|
return frameVerified;
|
|
40
41
|
}
|
|
41
42
|
|
|
43
|
+
Object.assign(shim, {
|
|
44
|
+
verifyFrame
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
export default verifyFrame;
|
|
48
|
+
|
|
42
49
|
function verifyDerivedFrame(frameNode, frames, stated, localContext) {
|
|
43
50
|
let derivedFrameVerified;
|
|
44
51
|
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import shim from "../shim";
|
|
4
|
+
|
|
5
|
+
import { FRAME_META_TYPE_NAME } from "../metaTypeNames";
|
|
6
|
+
|
|
7
|
+
export default function verifyFrameGivenMetaType(frameNode, metaType, assignments, stated, localContext) {
|
|
8
|
+
let frameVerifiedGivenMetaType;
|
|
9
|
+
|
|
10
|
+
const metaTypeName = metaType.getName();
|
|
11
|
+
|
|
12
|
+
switch (metaTypeName) {
|
|
13
|
+
case FRAME_META_TYPE_NAME: {
|
|
14
|
+
const { verifyFrame } = shim,
|
|
15
|
+
frames = [],
|
|
16
|
+
frameVerified = verifyFrame(frameNode, frames, stated, localContext)
|
|
17
|
+
|
|
18
|
+
frameVerifiedGivenMetaType = frameVerified; ///
|
|
19
|
+
|
|
20
|
+
break;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
default: {
|
|
24
|
+
debugger
|
|
25
|
+
|
|
26
|
+
break;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
return frameVerifiedGivenMetaType;
|
|
31
|
+
}
|
|
@@ -16,6 +16,8 @@ export default function verifyStatementGivenMetaType(statementNode, metaType, as
|
|
|
16
16
|
switch (metaTypeName) {
|
|
17
17
|
case FRAME_META_TYPE_NAME:
|
|
18
18
|
case REFERENCE_META_TYPE_NAME: {
|
|
19
|
+
debugger
|
|
20
|
+
|
|
19
21
|
statementVerifiedGivenMetaType = false;
|
|
20
22
|
|
|
21
23
|
const metavariableNode = metavariableNodeQuery(statementNode);
|