occam-verify-cli 0.0.1037 → 0.0.1039
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/assertion/subproof.js +13 -6
- package/lib/metavariable.js +43 -2
- package/lib/premise.js +3 -3
- package/lib/ruleNames.js +5 -1
- package/lib/statement.js +19 -5
- package/lib/substitution/frameForMetavariable.js +4 -4
- package/lib/substitution/statement.js +148 -0
- package/lib/substitution/statementForMetavariable.js +28 -19
- package/lib/substitution/termForVariable.js +17 -16
- package/lib/unifier/intrinsicLevel.js +4 -4
- package/lib/unifier/metaLevel.js +22 -19
- package/lib/utilities/node.js +15 -1
- package/lib/utilities/tokens.js +8 -1
- package/lib/verifier/intrinsicLevel.js +2 -2
- package/lib/verifier/metaLevel.js +2 -2
- package/package.json +1 -1
- package/src/assertion/subproof.js +11 -4
- package/src/metavariable.js +47 -1
- package/src/premise.js +1 -1
- package/src/ruleNames.js +1 -0
- package/src/statement.js +27 -5
- package/src/substitution/frameForMetavariable.js +3 -2
- package/src/substitution/statement.js +61 -0
- package/src/substitution/statementForMetavariable.js +32 -21
- package/src/substitution/termForVariable.js +21 -19
- package/src/unifier/intrinsicLevel.js +6 -7
- package/src/unifier/metaLevel.js +34 -33
- package/src/utilities/node.js +16 -0
- package/src/utilities/tokens.js +7 -0
- package/src/verifier/intrinsicLevel.js +3 -3
- package/src/verifier/metaLevel.js +3 -3
- package/lib/unify/metavariableWithStatementGivenSubstitution.js +0 -40
- package/src/unify/metavariableWithStatementGivenSubstitution.js +0 -41
|
@@ -29,16 +29,15 @@ class IntrinsicLevelUnifier extends Unifier {
|
|
|
29
29
|
unify: (termVariableNodeA, termNodeB, substitutions, localContextA, localContextB) => {
|
|
30
30
|
let termUnified = false;
|
|
31
31
|
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
|
|
32
|
+
const variableNode = termVariableNodeA, ///
|
|
33
|
+
variableName = variableNameFromVariableNode(variableNode),
|
|
34
|
+
variable = localContextA.findVariableByVariableName(variableName);
|
|
35
35
|
|
|
36
|
-
if (
|
|
36
|
+
if (variable !== null) {
|
|
37
37
|
const { Term } = shim,
|
|
38
|
-
termB = Term.fromTermNode(termNodeB, localContextB),
|
|
39
38
|
localContext = localContextB, ///
|
|
40
|
-
|
|
41
|
-
term =
|
|
39
|
+
termNode = termNodeB, ///
|
|
40
|
+
term = Term.fromTermNode(termNode, localContextB);
|
|
42
41
|
|
|
43
42
|
termUnified = variable.unifyTerm(term, substitutions, localContext);
|
|
44
43
|
}
|
package/src/unifier/metaLevel.js
CHANGED
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
import shim from "../shim";
|
|
4
4
|
import Unifier from "../unifier";
|
|
5
5
|
import unifyMetavariableWithFrame from "../unify/metavariableWithFrame";
|
|
6
|
-
import unifyMetavariableWithStatementGivenSubstitution from "../unify/metavariableWithStatementGivenSubstitution";
|
|
7
6
|
|
|
8
7
|
import { nodeQuery } from "../utilities/query";
|
|
9
8
|
import { variableNameFromVariableNode, metavariableNameFromMetavariableNode } from "../utilities/name";
|
|
@@ -13,7 +12,6 @@ const termNodeQuery = nodeQuery("/term!"),
|
|
|
13
12
|
statementNodeQuery = nodeQuery("/statement!"),
|
|
14
13
|
termVariableNodeQuery = nodeQuery("/term/variable!"),
|
|
15
14
|
frameMetavariableNodeQuery = nodeQuery("/frame/metavariable!"),
|
|
16
|
-
statementSubstitutionNodeQuery = nodeQuery("/statement/substitution!"),
|
|
17
15
|
statementMetavariableNodeQuery = nodeQuery("/statement/metavariable!");
|
|
18
16
|
|
|
19
17
|
class MetaLevelUnifier extends Unifier {
|
|
@@ -34,42 +32,46 @@ class MetaLevelUnifier extends Unifier {
|
|
|
34
32
|
nodeQueryA: statementNodeQuery,
|
|
35
33
|
nodeQueryB: statementNodeQuery,
|
|
36
34
|
unify: (statementNodeA, statementNodeB, substitutions, localContextA, localContextB) => {
|
|
37
|
-
let
|
|
35
|
+
let statementUnified;
|
|
38
36
|
|
|
39
37
|
const matches = statementNodeA.match(statementNodeB);
|
|
40
38
|
|
|
41
39
|
if (matches) {
|
|
42
|
-
|
|
40
|
+
statementUnified = true;
|
|
43
41
|
} else {
|
|
44
|
-
const
|
|
42
|
+
const { Statement } = shim,
|
|
43
|
+
statementB = Statement.fromStatementNode(statementNodeB, localContextB),
|
|
44
|
+
statementMetavariableNodeA = statementMetavariableNodeQuery(statementNodeA);
|
|
45
45
|
|
|
46
46
|
if (statementMetavariableNodeA !== null) {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
47
|
+
let statement;
|
|
48
|
+
|
|
49
|
+
const statementA = Statement.fromStatementNode(statementNodeA, localContextA);
|
|
50
|
+
|
|
51
|
+
statement = statementA; ///
|
|
52
|
+
|
|
53
|
+
const substitution = statement.getSubstitution();
|
|
54
|
+
|
|
55
|
+
statement = statementB; ///
|
|
56
|
+
|
|
57
|
+
const localContext = localContextB, ///
|
|
58
|
+
metavariableNode = statementMetavariableNodeA, ///
|
|
59
|
+
metavariableName = metavariableNameFromMetavariableNode(metavariableNode),
|
|
60
|
+
metavariable = localContextA.findMetavariableByMetavariableName(metavariableName);
|
|
61
|
+
|
|
62
|
+
if (substitution === null) {
|
|
63
|
+
statementUnified = metavariable.unifyStatement(statement, substitutions, localContext);
|
|
61
64
|
} else {
|
|
62
|
-
const
|
|
63
|
-
metavariableUnifiedWithStatementGivenSubstitution = unifyMetavariableWithStatementGivenSubstitution(metavariableNodeA, statementNodeB, substitutionNodeA, substitutions, localContextA, localContextB);
|
|
65
|
+
const statementUnifiedGivenSubstitution = metavariableNode.unifyStatementGivenSubstitution(statement, substitution, substitutions, localContext);
|
|
64
66
|
|
|
65
|
-
|
|
67
|
+
statementUnified = statementUnifiedGivenSubstitution; ///
|
|
66
68
|
}
|
|
67
69
|
} else {
|
|
68
|
-
|
|
70
|
+
statementUnified = unifyStatementWithStatement(statementNodeA, statementNodeB, substitutions, localContextA, localContextB);
|
|
69
71
|
}
|
|
70
72
|
}
|
|
71
73
|
|
|
72
|
-
return
|
|
74
|
+
return statementUnified;
|
|
73
75
|
}
|
|
74
76
|
},
|
|
75
77
|
{
|
|
@@ -90,16 +92,15 @@ class MetaLevelUnifier extends Unifier {
|
|
|
90
92
|
unify: (termVariableNodeA, termNodeB, substitutions, localContextA, localContextB) => {
|
|
91
93
|
let termUnified = false;
|
|
92
94
|
|
|
93
|
-
const
|
|
94
|
-
|
|
95
|
-
|
|
95
|
+
const variableNode = termVariableNodeA, ///
|
|
96
|
+
variableName = variableNameFromVariableNode(variableNode),
|
|
97
|
+
variable = localContextA.findVariableByVariableName(variableName);
|
|
96
98
|
|
|
97
|
-
if (
|
|
99
|
+
if (variable !== null) {
|
|
98
100
|
const { Term } = shim,
|
|
99
|
-
termB = Term.fromTermNode(termNodeB, localContextB),
|
|
100
101
|
localContext = localContextB, ///
|
|
101
|
-
|
|
102
|
-
term =
|
|
102
|
+
termNode = termNodeB, ///
|
|
103
|
+
term = Term.fromTermNode(termNode, localContextB);
|
|
103
104
|
|
|
104
105
|
termUnified = variable.unifyTerm(term, substitutions, localContext);
|
|
105
106
|
}
|
|
@@ -122,7 +123,7 @@ function unifyStatementWithStatement(statementNodeA, statementNodeB, substitutio
|
|
|
122
123
|
childNodesA = nonTerminalNodeAChildNodes, ///
|
|
123
124
|
childNodesB = nonTerminalNodeBChildNodes, ///
|
|
124
125
|
childNodesVerified = metaLevelUnifier.unifyChildNodes(childNodesA, childNodesB, substitutions, localContextA, localContextB),
|
|
125
|
-
|
|
126
|
+
statementUnified = childNodesVerified; ///
|
|
126
127
|
|
|
127
|
-
return
|
|
128
|
+
return statementUnified;
|
|
128
129
|
}
|
package/src/utilities/node.js
CHANGED
|
@@ -6,10 +6,12 @@ import { nodeQuery } from "../utilities/query";
|
|
|
6
6
|
import { combinedCustomGrammarFromNothing } from "./customGrammar";
|
|
7
7
|
import { VARIABLE_RULE_NAME,
|
|
8
8
|
METAVARIABLE_RULE_NAME,
|
|
9
|
+
SUBSTITUTION_RULE_NAME,
|
|
9
10
|
UNQUALIFIED_STATEMENT_RULE_NAME,
|
|
10
11
|
CONSTRUCTOR_DECLARATION_RULE_NAME } from "../ruleNames";
|
|
11
12
|
import { variableTokensFromVariableString,
|
|
12
13
|
metavariableTokensFromMetavariableString,
|
|
14
|
+
substitutionTokensFromSubstitutionString,
|
|
13
15
|
unqualifiedStatementTokensFromUnqualifiedStatementString,
|
|
14
16
|
constructorDeclarationTokensFromConstructorDeclarationString } from "../utilities/tokens";
|
|
15
17
|
|
|
@@ -55,6 +57,13 @@ export function metavariableNodeFromMetavariableString(metavariableString, lexer
|
|
|
55
57
|
return metavariableNode;
|
|
56
58
|
}
|
|
57
59
|
|
|
60
|
+
export function substitutionNodeFromSubstitutionString(substitutionString, lexer, parser) {
|
|
61
|
+
const substitutionTokens = substitutionTokensFromSubstitutionString(substitutionString, lexer),
|
|
62
|
+
substitutionNode = substitutionNodeFromSubstitutionTokens(substitutionTokens, parser);
|
|
63
|
+
|
|
64
|
+
return substitutionNode;
|
|
65
|
+
}
|
|
66
|
+
|
|
58
67
|
export function variableNodeFromVariableTokens(variableTokens, parser) {
|
|
59
68
|
const ruleName = VARIABLE_RULE_NAME,
|
|
60
69
|
variableNode = nodeFromTokensRuleNameAndParser(variableTokens, ruleName, parser);
|
|
@@ -69,6 +78,13 @@ export function metavariableNodeFromMetavariableTokens(metavariableTokens, parse
|
|
|
69
78
|
return metavariableNode;
|
|
70
79
|
}
|
|
71
80
|
|
|
81
|
+
export function substitutionNodeFromSubstitutionTokens(substitutionTokens, parser) {
|
|
82
|
+
const ruleName = SUBSTITUTION_RULE_NAME,
|
|
83
|
+
substitutionNode = nodeFromTokensRuleNameAndParser(substitutionTokens, ruleName, parser);
|
|
84
|
+
|
|
85
|
+
return substitutionNode;
|
|
86
|
+
}
|
|
87
|
+
|
|
72
88
|
export function unqualifiedStatementNodeFromUnqualifiedStatementTokens(unqualifiedStatementTokens, parser) {
|
|
73
89
|
const tokens = unqualifiedStatementTokens, ///
|
|
74
90
|
ruleName = UNQUALIFIED_STATEMENT_RULE_NAME,
|
package/src/utilities/tokens.js
CHANGED
|
@@ -23,6 +23,13 @@ export function metavariableTokensFromMetavariableString(metavariableString, lex
|
|
|
23
23
|
return metavariableTokens;
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
+
export function substitutionTokensFromSubstitutionString(substitutionString, lexer) {
|
|
27
|
+
const substitutionContent = `${substitutionString}`,
|
|
28
|
+
substitutionTokens = tokensFromContentAndLexer(substitutionContent, lexer);
|
|
29
|
+
|
|
30
|
+
return substitutionTokens;
|
|
31
|
+
}
|
|
32
|
+
|
|
26
33
|
export function unqualifiedStatementTokensFromUnqualifiedStatementString(unqualifiedStatementString, lexer) {
|
|
27
34
|
const content = unqualifiedStatementString, ///
|
|
28
35
|
unqualifiedStatementTokens = tokensFromContentAndLexer(content, lexer);
|
|
@@ -23,9 +23,9 @@ class IntrinsicLevelVerifier extends Verifier {
|
|
|
23
23
|
{
|
|
24
24
|
nodeQuery: termNodeQuery,
|
|
25
25
|
verify: (termNode, localContext) => {
|
|
26
|
-
const {
|
|
27
|
-
|
|
28
|
-
termVerified =
|
|
26
|
+
const { Term } = shim,
|
|
27
|
+
term = Term.fromTermNode(termNode, localContext),
|
|
28
|
+
termVerified = term.verify(localContext, () => {
|
|
29
29
|
const verifiedAhead = true;
|
|
30
30
|
|
|
31
31
|
return verifiedAhead;
|
|
@@ -35,9 +35,9 @@ class MetaLevelVerifier extends Verifier {
|
|
|
35
35
|
{
|
|
36
36
|
nodeQuery: termNodeQuery,
|
|
37
37
|
verify: (termNode, assignments, stated, localContext) => {
|
|
38
|
-
const {
|
|
39
|
-
|
|
40
|
-
termVerified =
|
|
38
|
+
const { Term } = shim,
|
|
39
|
+
term = Term.fromTermNode(termNode, localContext),
|
|
40
|
+
termVerified = term.verify(localContext, () => {
|
|
41
41
|
const verifiedAhead = true;
|
|
42
42
|
|
|
43
43
|
return verifiedAhead;
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
Object.defineProperty(exports, "default", {
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: function() {
|
|
8
|
-
return unifyMetavariableWithStatementGivenSubstitution;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
var _statementForMetavariable = /*#__PURE__*/ _interop_require_default(require("../substitution/statementForMetavariable"));
|
|
12
|
-
var _unify = require("../utilities/unify");
|
|
13
|
-
var _name = require("../utilities/name");
|
|
14
|
-
function _interop_require_default(obj) {
|
|
15
|
-
return obj && obj.__esModule ? obj : {
|
|
16
|
-
default: obj
|
|
17
|
-
};
|
|
18
|
-
}
|
|
19
|
-
function unifyMetavariableWithStatementGivenSubstitution(metavariableNodeA, statementNodeB, substitutionNodeA, substitutions, localContextA, localContextB) {
|
|
20
|
-
var metavariableUnifiedWithStatementGivenSubstitution = false;
|
|
21
|
-
var complexSubstitution = substitutions.findComplexSubstitutionByMetavariableNodeAndSubstitutionNode(metavariableNodeA, substitutionNodeA), substitution = complexSubstitution; ///
|
|
22
|
-
if (substitution !== null) {
|
|
23
|
-
var statementNodeMatches = substitution.matchStatementNode(statementNodeB);
|
|
24
|
-
if (statementNodeMatches) {
|
|
25
|
-
metavariableUnifiedWithStatementGivenSubstitution = true;
|
|
26
|
-
}
|
|
27
|
-
} else {
|
|
28
|
-
var metavariableNameA = (0, _name.metavariableNameFromMetavariableNode)(metavariableNodeA), metavariableA = localContextA.findMetavariableByMetavariableName(metavariableNameA), metavariableB = (0, _unify.metavariableFromStatementNode)(statementNodeB, localContextB);
|
|
29
|
-
if (metavariableA === metavariableB) {
|
|
30
|
-
metavariableUnifiedWithStatementGivenSubstitution = false; ///
|
|
31
|
-
} else {
|
|
32
|
-
var statementNode = statementNodeB, substitutionNode = substitutionNodeA, metavariableNode = metavariableNodeA, statementForMetavariableSubstitution = _statementForMetavariable.default.fromStatementNodeMetavariableNodeAndSubstitutionNode(statementNode, metavariableNode, substitutionNode, localContextA, localContextB), substitution1 = statementForMetavariableSubstitution; ///
|
|
33
|
-
substitutions.addSubstitution(substitution1, localContextA, localContextB);
|
|
34
|
-
metavariableUnifiedWithStatementGivenSubstitution = true;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
return metavariableUnifiedWithStatementGivenSubstitution;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91bmlmeS9tZXRhdmFyaWFibGVXaXRoU3RhdGVtZW50R2l2ZW5TdWJzdGl0dXRpb24uanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBTdGF0ZW1lbnRGb3JNZXRhdmFyaWFibGVTdWJzdGl0dXRpb24gZnJvbSBcIi4uL3N1YnN0aXR1dGlvbi9zdGF0ZW1lbnRGb3JNZXRhdmFyaWFibGVcIjtcblxuaW1wb3J0IHsgbWV0YXZhcmlhYmxlRnJvbVN0YXRlbWVudE5vZGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL3VuaWZ5XCI7XG5pbXBvcnQgeyBtZXRhdmFyaWFibGVOYW1lRnJvbU1ldGF2YXJpYWJsZU5vZGUgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL25hbWVcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdW5pZnlNZXRhdmFyaWFibGVXaXRoU3RhdGVtZW50R2l2ZW5TdWJzdGl0dXRpb24obWV0YXZhcmlhYmxlTm9kZUEsIHN0YXRlbWVudE5vZGVCLCBzdWJzdGl0dXRpb25Ob2RlQSwgc3Vic3RpdHV0aW9ucywgbG9jYWxDb250ZXh0QSwgbG9jYWxDb250ZXh0Qikge1xuICBsZXQgbWV0YXZhcmlhYmxlVW5pZmllZFdpdGhTdGF0ZW1lbnRHaXZlblN1YnN0aXR1dGlvbiA9IGZhbHNlO1xuXG4gIGNvbnN0IGNvbXBsZXhTdWJzdGl0dXRpb24gPSBzdWJzdGl0dXRpb25zLmZpbmRDb21wbGV4U3Vic3RpdHV0aW9uQnlNZXRhdmFyaWFibGVOb2RlQW5kU3Vic3RpdHV0aW9uTm9kZShtZXRhdmFyaWFibGVOb2RlQSwgc3Vic3RpdHV0aW9uTm9kZUEpLFxuICAgICAgICBzdWJzdGl0dXRpb24gPSBjb21wbGV4U3Vic3RpdHV0aW9uOyAvLy9cblxuICBpZiAoc3Vic3RpdHV0aW9uICE9PSBudWxsKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50Tm9kZU1hdGNoZXMgPSBzdWJzdGl0dXRpb24ubWF0Y2hTdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGVCKTtcblxuICAgIGlmIChzdGF0ZW1lbnROb2RlTWF0Y2hlcykge1xuICAgICAgbWV0YXZhcmlhYmxlVW5pZmllZFdpdGhTdGF0ZW1lbnRHaXZlblN1YnN0aXR1dGlvbiA9IHRydWU7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGNvbnN0IG1ldGF2YXJpYWJsZU5hbWVBID0gbWV0YXZhcmlhYmxlTmFtZUZyb21NZXRhdmFyaWFibGVOb2RlKG1ldGF2YXJpYWJsZU5vZGVBKSxcbiAgICAgICAgICBtZXRhdmFyaWFibGVBID0gbG9jYWxDb250ZXh0QS5maW5kTWV0YXZhcmlhYmxlQnlNZXRhdmFyaWFibGVOYW1lKG1ldGF2YXJpYWJsZU5hbWVBKSxcbiAgICAgICAgICBtZXRhdmFyaWFibGVCID0gbWV0YXZhcmlhYmxlRnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZUIsIGxvY2FsQ29udGV4dEIpO1xuXG4gICAgaWYgKG1ldGF2YXJpYWJsZUEgPT09IG1ldGF2YXJpYWJsZUIpIHtcbiAgICAgIG1ldGF2YXJpYWJsZVVuaWZpZWRXaXRoU3RhdGVtZW50R2l2ZW5TdWJzdGl0dXRpb24gPSBmYWxzZTsgIC8vL1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50Tm9kZUIsIC8vL1xuICAgICAgICAgICAgc3Vic3RpdHV0aW9uTm9kZSA9IHN1YnN0aXR1dGlvbk5vZGVBLCAvLy9cbiAgICAgICAgICAgIG1ldGF2YXJpYWJsZU5vZGUgPSBtZXRhdmFyaWFibGVOb2RlQSwgLy8vXG4gICAgICAgICAgICBzdGF0ZW1lbnRGb3JNZXRhdmFyaWFibGVTdWJzdGl0dXRpb24gPSBTdGF0ZW1lbnRGb3JNZXRhdmFyaWFibGVTdWJzdGl0dXRpb24uZnJvbVN0YXRlbWVudE5vZGVNZXRhdmFyaWFibGVOb2RlQW5kU3Vic3RpdHV0aW9uTm9kZShzdGF0ZW1lbnROb2RlLCBtZXRhdmFyaWFibGVOb2RlLCBzdWJzdGl0dXRpb25Ob2RlLCBsb2NhbENvbnRleHRBLCBsb2NhbENvbnRleHRCKSxcbiAgICAgICAgICAgIHN1YnN0aXR1dGlvbiA9IHN0YXRlbWVudEZvck1ldGF2YXJpYWJsZVN1YnN0aXR1dGlvbjsgIC8vL1xuXG4gICAgICBzdWJzdGl0dXRpb25zLmFkZFN1YnN0aXR1dGlvbihzdWJzdGl0dXRpb24sIGxvY2FsQ29udGV4dEEsIGxvY2FsQ29udGV4dEIpO1xuXG4gICAgICBtZXRhdmFyaWFibGVVbmlmaWVkV2l0aFN0YXRlbWVudEdpdmVuU3Vic3RpdHV0aW9uID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbWV0YXZhcmlhYmxlVW5pZmllZFdpdGhTdGF0ZW1lbnRHaXZlblN1YnN0aXR1dGlvbjtcbn1cbiJdLCJuYW1lcyI6WyJ1bmlmeU1ldGF2YXJpYWJsZVdpdGhTdGF0ZW1lbnRHaXZlblN1YnN0aXR1dGlvbiIsIm1ldGF2YXJpYWJsZU5vZGVBIiwic3RhdGVtZW50Tm9kZUIiLCJzdWJzdGl0dXRpb25Ob2RlQSIsInN1YnN0aXR1dGlvbnMiLCJsb2NhbENvbnRleHRBIiwibG9jYWxDb250ZXh0QiIsIm1ldGF2YXJpYWJsZVVuaWZpZWRXaXRoU3RhdGVtZW50R2l2ZW5TdWJzdGl0dXRpb24iLCJjb21wbGV4U3Vic3RpdHV0aW9uIiwiZmluZENvbXBsZXhTdWJzdGl0dXRpb25CeU1ldGF2YXJpYWJsZU5vZGVBbmRTdWJzdGl0dXRpb25Ob2RlIiwic3Vic3RpdHV0aW9uIiwic3RhdGVtZW50Tm9kZU1hdGNoZXMiLCJtYXRjaFN0YXRlbWVudE5vZGUiLCJtZXRhdmFyaWFibGVOYW1lQSIsIm1ldGF2YXJpYWJsZU5hbWVGcm9tTWV0YXZhcmlhYmxlTm9kZSIsIm1ldGF2YXJpYWJsZUEiLCJmaW5kTWV0YXZhcmlhYmxlQnlNZXRhdmFyaWFibGVOYW1lIiwibWV0YXZhcmlhYmxlQiIsIm1ldGF2YXJpYWJsZUZyb21TdGF0ZW1lbnROb2RlIiwic3RhdGVtZW50Tm9kZSIsInN1YnN0aXR1dGlvbk5vZGUiLCJtZXRhdmFyaWFibGVOb2RlIiwic3RhdGVtZW50Rm9yTWV0YXZhcmlhYmxlU3Vic3RpdHV0aW9uIiwiU3RhdGVtZW50Rm9yTWV0YXZhcmlhYmxlU3Vic3RpdHV0aW9uIiwiZnJvbVN0YXRlbWVudE5vZGVNZXRhdmFyaWFibGVOb2RlQW5kU3Vic3RpdHV0aW9uTm9kZSIsImFkZFN1YnN0aXR1dGlvbiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBT0E7OztlQUF3QkE7OzsrRUFMeUI7cUJBRUg7b0JBQ087Ozs7OztBQUV0QyxTQUFTQSxnREFBZ0RDLGlCQUFpQixFQUFFQyxjQUFjLEVBQUVDLGlCQUFpQixFQUFFQyxhQUFhLEVBQUVDLGFBQWEsRUFBRUMsYUFBYTtJQUN2SyxJQUFJQyxvREFBb0Q7SUFFeEQsSUFBTUMsc0JBQXNCSixjQUFjSyw0REFBNEQsQ0FBQ1IsbUJBQW1CRSxvQkFDcEhPLGVBQWVGLHFCQUFxQixHQUFHO0lBRTdDLElBQUlFLGlCQUFpQixNQUFNO1FBQ3pCLElBQU1DLHVCQUF1QkQsYUFBYUUsa0JBQWtCLENBQUNWO1FBRTdELElBQUlTLHNCQUFzQjtZQUN4Qkosb0RBQW9EO1FBQ3REO0lBQ0YsT0FBTztRQUNMLElBQU1NLG9CQUFvQkMsSUFBQUEsMENBQW9DLEVBQUNiLG9CQUN6RGMsZ0JBQWdCVixjQUFjVyxrQ0FBa0MsQ0FBQ0gsb0JBQ2pFSSxnQkFBZ0JDLElBQUFBLG9DQUE2QixFQUFDaEIsZ0JBQWdCSTtRQUVwRSxJQUFJUyxrQkFBa0JFLGVBQWU7WUFDbkNWLG9EQUFvRCxPQUFRLEdBQUc7UUFDakUsT0FBTztZQUNMLElBQU1ZLGdCQUFnQmpCLGdCQUNoQmtCLG1CQUFtQmpCLG1CQUNuQmtCLG1CQUFtQnBCLG1CQUNuQnFCLHVDQUF1Q0MsaUNBQW9DLENBQUNDLG9EQUFvRCxDQUFDTCxlQUFlRSxrQkFBa0JELGtCQUFrQmYsZUFBZUMsZ0JBQ25NSSxnQkFBZVksc0NBQXVDLEdBQUc7WUFFL0RsQixjQUFjcUIsZUFBZSxDQUFDZixlQUFjTCxlQUFlQztZQUUzREMsb0RBQW9EO1FBQ3REO0lBQ0Y7SUFFQSxPQUFPQTtBQUNUIn0=
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import StatementForMetavariableSubstitution from "../substitution/statementForMetavariable";
|
|
4
|
-
|
|
5
|
-
import { metavariableFromStatementNode } from "../utilities/unify";
|
|
6
|
-
import { metavariableNameFromMetavariableNode } from "../utilities/name";
|
|
7
|
-
|
|
8
|
-
export default function unifyMetavariableWithStatementGivenSubstitution(metavariableNodeA, statementNodeB, substitutionNodeA, substitutions, localContextA, localContextB) {
|
|
9
|
-
let metavariableUnifiedWithStatementGivenSubstitution = false;
|
|
10
|
-
|
|
11
|
-
const complexSubstitution = substitutions.findComplexSubstitutionByMetavariableNodeAndSubstitutionNode(metavariableNodeA, substitutionNodeA),
|
|
12
|
-
substitution = complexSubstitution; ///
|
|
13
|
-
|
|
14
|
-
if (substitution !== null) {
|
|
15
|
-
const statementNodeMatches = substitution.matchStatementNode(statementNodeB);
|
|
16
|
-
|
|
17
|
-
if (statementNodeMatches) {
|
|
18
|
-
metavariableUnifiedWithStatementGivenSubstitution = true;
|
|
19
|
-
}
|
|
20
|
-
} else {
|
|
21
|
-
const metavariableNameA = metavariableNameFromMetavariableNode(metavariableNodeA),
|
|
22
|
-
metavariableA = localContextA.findMetavariableByMetavariableName(metavariableNameA),
|
|
23
|
-
metavariableB = metavariableFromStatementNode(statementNodeB, localContextB);
|
|
24
|
-
|
|
25
|
-
if (metavariableA === metavariableB) {
|
|
26
|
-
metavariableUnifiedWithStatementGivenSubstitution = false; ///
|
|
27
|
-
} else {
|
|
28
|
-
const statementNode = statementNodeB, ///
|
|
29
|
-
substitutionNode = substitutionNodeA, ///
|
|
30
|
-
metavariableNode = metavariableNodeA, ///
|
|
31
|
-
statementForMetavariableSubstitution = StatementForMetavariableSubstitution.fromStatementNodeMetavariableNodeAndSubstitutionNode(statementNode, metavariableNode, substitutionNode, localContextA, localContextB),
|
|
32
|
-
substitution = statementForMetavariableSubstitution; ///
|
|
33
|
-
|
|
34
|
-
substitutions.addSubstitution(substitution, localContextA, localContextB);
|
|
35
|
-
|
|
36
|
-
metavariableUnifiedWithStatementGivenSubstitution = true;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
return metavariableUnifiedWithStatementGivenSubstitution;
|
|
41
|
-
}
|