occam-verify-cli 0.0.1063 → 0.0.1066
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/bin/action/verify.js +2 -0
- package/lib/assertion/contained.js +1 -2
- package/lib/assertion/defined.js +31 -47
- package/lib/assertion/subproof.js +3 -3
- package/lib/combinator/bracketed.js +135 -0
- package/lib/conclusion.js +5 -8
- package/lib/consequent.js +5 -8
- package/lib/constants.js +3 -3
- package/lib/constructor/bracketed.js +30 -11
- package/lib/context/file.js +39 -3
- package/lib/context/local.js +59 -7
- package/lib/metavariable.js +30 -33
- package/lib/mixins/statement/unify.js +2 -2
- package/lib/mixins/statement/verify.js +6 -6
- package/lib/premise.js +5 -8
- package/lib/proofStep.js +2 -2
- package/lib/ruleNames.js +1 -5
- package/lib/statement/unqualified.js +14 -1
- package/lib/statement.js +27 -19
- package/lib/substitution/frameForMetavariable.js +17 -2
- package/lib/substitution/statementForMetavariable.js +22 -27
- package/lib/substitution/termForVariable.js +28 -10
- package/lib/supposition.js +5 -8
- package/lib/unifier/intrinsicLevel.js +4 -4
- package/lib/unifier/metaLevel.js +8 -13
- package/lib/unifier/metavariable.js +4 -4
- package/lib/unify/simpleSubstitutionStatementWithComplexSubstitutionStatement.js +3 -3
- package/lib/unify/statementWithSttaemetnGivenEquivalences.js +5 -5
- package/lib/utilities/brackets.js +5 -10
- package/lib/utilities/node.js +29 -15
- package/lib/utilities/string.js +34 -16
- package/lib/utilities/tokens.js +16 -8
- package/lib/utilities/unify.js +4 -21
- package/lib/variable.js +14 -2
- package/package.json +1 -1
- package/src/assertion/contained.js +0 -2
- package/src/assertion/defined.js +34 -61
- package/src/assertion/subproof.js +2 -2
- package/src/combinator/bracketed.js +49 -0
- package/src/conclusion.js +5 -18
- package/src/consequent.js +5 -18
- package/src/constants.js +2 -2
- package/src/constructor/bracketed.js +32 -9
- package/src/context/file.js +35 -5
- package/src/context/local.js +64 -7
- package/src/metavariable.js +46 -33
- package/src/mixins/statement/unify.js +1 -1
- package/src/mixins/statement/verify.js +7 -6
- package/src/premise.js +5 -18
- package/src/proofStep.js +1 -1
- package/src/ruleNames.js +0 -1
- package/src/statement/unqualified.js +17 -0
- package/src/statement.js +54 -36
- package/src/substitution/frameForMetavariable.js +26 -1
- package/src/substitution/statementForMetavariable.js +27 -34
- package/src/substitution/termForVariable.js +45 -13
- package/src/supposition.js +5 -18
- package/src/unifier/intrinsicLevel.js +3 -3
- package/src/unifier/metaLevel.js +15 -21
- package/src/unifier/metavariable.js +3 -3
- package/src/unify/simpleSubstitutionStatementWithComplexSubstitutionStatement.js +2 -2
- package/src/unify/statementWithSttaemetnGivenEquivalences.js +4 -4
- package/src/utilities/brackets.js +2 -3
- package/src/utilities/node.js +30 -22
- package/src/utilities/string.js +39 -23
- package/src/utilities/tokens.js +17 -8
- package/src/utilities/unify.js +0 -14
- package/src/variable.js +20 -1
- package/lib/node/statement/bracketed.js +0 -16
- package/lib/node/statement/combinator/bracketed.js +0 -25
- package/lib/node/term/bracketed.js +0 -16
- package/lib/node/term/constructor/bracketed.js +0 -25
- package/lib/ocmbinator/bracketed.js +0 -157
- package/lib/substitution/statement.js +0 -163
- package/lib/unify/frameWithMetaType.js +0 -24
- package/lib/verifier/substitution.js +0 -161
- package/lib/verify/frameGivenMetaType.js +0 -37
- package/src/node/statement/bracketed.js +0 -9
- package/src/node/statement/combinator/bracketed.js +0 -10
- package/src/node/term/bracketed.js +0 -9
- package/src/node/term/constructor/bracketed.js +0 -10
- package/src/ocmbinator/bracketed.js +0 -26
- package/src/substitution/statement.js +0 -81
- package/src/unify/frameWithMetaType.js +0 -14
- package/src/verifier/substitution.js +0 -75
- package/src/verify/frameGivenMetaType.js +0 -31
|
@@ -6,7 +6,8 @@ import Substitution from "../substitution";
|
|
|
6
6
|
import { nodeQuery } from "../utilities/query";
|
|
7
7
|
import { stripBracketsFromTerm } from "../utilities/brackets";
|
|
8
8
|
|
|
9
|
-
const
|
|
9
|
+
const substitutionNodeQuery = nodeQuery("/statement/substitution"),
|
|
10
|
+
termVariableNodeQuery = nodeQuery("/term/variable!"),
|
|
10
11
|
substitutionTermNodeQuery = nodeQuery("/substitution/term!"),
|
|
11
12
|
substitutionsVariableNodeQuery = nodeQuery("/substitution/variable!");
|
|
12
13
|
|
|
@@ -83,7 +84,7 @@ export default class TermForVariableSubstitution extends Substitution {
|
|
|
83
84
|
return unifiedWithEquivalence;
|
|
84
85
|
}
|
|
85
86
|
|
|
86
|
-
static fromSubstitution(substitution) {
|
|
87
|
+
static fromSubstitution(substitution, localContext) {
|
|
87
88
|
let termForVariableSubstitution = null;
|
|
88
89
|
|
|
89
90
|
const substitutionNode = substitution.getNode();
|
|
@@ -91,30 +92,61 @@ export default class TermForVariableSubstitution extends Substitution {
|
|
|
91
92
|
let substitutionTermNode = substitutionTermNodeQuery(substitutionNode);
|
|
92
93
|
|
|
93
94
|
if (substitutionTermNode !== null) {
|
|
94
|
-
let termNode
|
|
95
|
-
|
|
96
|
-
termNode = stripBracketsFromTerm(termNode); ///
|
|
95
|
+
let termNode;
|
|
97
96
|
|
|
98
97
|
const substitutionVariableNode = substitutionsVariableNodeQuery(substitutionNode),
|
|
99
98
|
variableNode = substitutionVariableNode; ///
|
|
100
99
|
|
|
101
|
-
|
|
100
|
+
termNode = substitutionTermNode; ///
|
|
101
|
+
|
|
102
|
+
termNode = stripBracketsFromTerm(termNode); ///
|
|
103
|
+
|
|
104
|
+
const { Term, Variable } = shim,
|
|
105
|
+
term = Term.fromTermNode(termNode, localContext),
|
|
106
|
+
variable = Variable.fromVariableNode(variableNode, localContext),
|
|
107
|
+
string = stringFromTermAndVariable(term, variable);
|
|
108
|
+
|
|
109
|
+
termForVariableSubstitution = new TermForVariableSubstitution(string, termNode, variableNode);
|
|
102
110
|
}
|
|
103
111
|
|
|
104
112
|
return termForVariableSubstitution;
|
|
105
113
|
}
|
|
106
114
|
|
|
107
|
-
static
|
|
108
|
-
let
|
|
115
|
+
static fromStatementNode(statementNode, localContext) {
|
|
116
|
+
let termForVariableSubstitution = null;
|
|
109
117
|
|
|
110
|
-
|
|
118
|
+
const substitutionNode = substitutionNodeQuery(statementNode);
|
|
119
|
+
|
|
120
|
+
if (substitutionNode !== null) {
|
|
121
|
+
let substitutionTermNode = substitutionTermNodeQuery(substitutionNode);
|
|
122
|
+
|
|
123
|
+
if (substitutionTermNode !== null) {
|
|
124
|
+
let termNode;
|
|
111
125
|
|
|
112
|
-
|
|
126
|
+
const substitutionVariableNode = substitutionsVariableNodeQuery(substitutionNode),
|
|
127
|
+
variableNode = substitutionVariableNode; ///
|
|
113
128
|
|
|
114
|
-
|
|
129
|
+
termNode = substitutionTermNode; ///
|
|
130
|
+
|
|
131
|
+
const { Term, Variable } = shim,
|
|
132
|
+
term = Term.fromTermNode(termNode, localContext),
|
|
133
|
+
variable = Variable.fromVariableNode(variableNode, localContext),
|
|
134
|
+
string = stringFromTermAndVariable(term, variable);
|
|
135
|
+
|
|
136
|
+
termForVariableSubstitution = new TermForVariableSubstitution(string, termNode, variableNode);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
return termForVariableSubstitution;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
static fromTernAndVariable(term, variable) {
|
|
144
|
+
let termNode = term.getNode();
|
|
145
|
+
|
|
146
|
+
termNode = stripBracketsFromTerm(termNode); ///
|
|
115
147
|
|
|
116
|
-
const
|
|
117
|
-
|
|
148
|
+
const variableNode = variable.getNode(),
|
|
149
|
+
string = stringFromTermAndVariable(term, variable),
|
|
118
150
|
termForVariableSubstitution = new TermForVariableSubstitution(string, termNode, variableNode);
|
|
119
151
|
|
|
120
152
|
return termForVariableSubstitution;
|
package/src/supposition.js
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import shim from "./shim";
|
|
4
|
-
import LocalContext from "./context/local";
|
|
5
|
-
import metaLevelUnifier from "./unifier/metaLevel";
|
|
6
4
|
import SubproofAssertion from "./assertion/subproof";
|
|
7
5
|
import UnqualifiedStatement from "./statement/unqualified";
|
|
8
6
|
|
|
@@ -111,26 +109,15 @@ export default class Supposition {
|
|
|
111
109
|
unifyStatement(statement, substitutions, localContext) {
|
|
112
110
|
let statementUnified;
|
|
113
111
|
|
|
114
|
-
const
|
|
115
|
-
|
|
116
|
-
suppositionStatement = supposition.getStatement(),
|
|
117
|
-
suppositionStatementString = suppositionStatement.getString();
|
|
118
|
-
|
|
119
|
-
localContext.trace(`Unifying the '${statementString}' statement with the supposition's '${suppositionStatementString}' statement...`);
|
|
112
|
+
const statementString = statement.getString(),
|
|
113
|
+
suppositionString = this.getString();
|
|
120
114
|
|
|
121
|
-
|
|
122
|
-
suppositionStatementNode = suppositionStatement.getNode(),
|
|
123
|
-
nodeA = suppositionStatementNode, ///
|
|
124
|
-
nodeB = statementNode, ///
|
|
125
|
-
fileContextA = this.fileContext, ///
|
|
126
|
-
localContextA = LocalContext.fromFileContext(fileContextA),
|
|
127
|
-
localContextB = localContext, ///
|
|
128
|
-
unified = metaLevelUnifier.unify(nodeA, nodeB, substitutions, localContextA, localContextB);
|
|
115
|
+
localContext.trace(`Unifying the '${statementString}' statement with the '${suppositionString}' supposition...`);
|
|
129
116
|
|
|
130
|
-
statementUnified =
|
|
117
|
+
statementUnified = this.unqualifiedStatement.unifyStatement(statement, substitutions, this.fileContext, localContext);
|
|
131
118
|
|
|
132
119
|
if (statementUnified) {
|
|
133
|
-
localContext.debug(`...unified the '${statementString}' statement with the
|
|
120
|
+
localContext.debug(`...unified the '${statementString}' statement with the '${suppositionString}' supposition.`);
|
|
134
121
|
}
|
|
135
122
|
|
|
136
123
|
return statementUnified;
|
|
@@ -11,15 +11,15 @@ const termNodeQuery = nodeQuery("/term!"),
|
|
|
11
11
|
|
|
12
12
|
class IntrinsicLevelUnifier extends Unifier {
|
|
13
13
|
unify(nodeA, nodeB, substitutions, localContextA, localContextB) {
|
|
14
|
-
let
|
|
14
|
+
let unifiedAtIntrinsicLevel;
|
|
15
15
|
|
|
16
16
|
const nonTerminalNodeA = nodeA, ///
|
|
17
17
|
nonTerminalNodeB = nodeB, ///
|
|
18
18
|
nonTerminalNodeUnified = this.unifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, localContextA, localContextB);
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
unifiedAtIntrinsicLevel = nonTerminalNodeUnified; ///
|
|
21
21
|
|
|
22
|
-
return
|
|
22
|
+
return unifiedAtIntrinsicLevel;
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
static maps = [
|
package/src/unifier/metaLevel.js
CHANGED
|
@@ -16,15 +16,15 @@ const termNodeQuery = nodeQuery("/term!"),
|
|
|
16
16
|
|
|
17
17
|
class MetaLevelUnifier extends Unifier {
|
|
18
18
|
unify(nodeA, nodeB, substitutions, localContextA, localContextB) {
|
|
19
|
-
let
|
|
19
|
+
let unifiedAtMetaLevel;
|
|
20
20
|
|
|
21
21
|
const nonTerminalNodeA = nodeA, ///
|
|
22
22
|
nonTerminalNodeB = nodeB, ///
|
|
23
23
|
nonTerminalNodeUnified = this.unifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, substitutions, localContextA, localContextB);
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
unifiedAtMetaLevel = nonTerminalNodeUnified; ///
|
|
26
26
|
|
|
27
|
-
return
|
|
27
|
+
return unifiedAtMetaLevel;
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
static maps = [
|
|
@@ -39,30 +39,24 @@ class MetaLevelUnifier extends Unifier {
|
|
|
39
39
|
if (matches) {
|
|
40
40
|
statementUnified = true;
|
|
41
41
|
} else {
|
|
42
|
-
const
|
|
43
|
-
|
|
44
|
-
|
|
42
|
+
const statementNode = statementNodeA, ///
|
|
43
|
+
statementSubstitution = null, ///
|
|
44
|
+
statementMetavariableNode = statementMetavariableNodeQuery(statementNode);
|
|
45
45
|
|
|
46
|
-
if (
|
|
47
|
-
|
|
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, ///
|
|
46
|
+
if (statementMetavariableNode !== null) {
|
|
47
|
+
const { Statement } = shim,
|
|
48
|
+
metavariableNode = statementMetavariableNode, ///
|
|
59
49
|
metavariableName = metavariableNameFromMetavariableNode(metavariableNode),
|
|
60
|
-
metavariable = localContextA.findMetavariableByMetavariableName(metavariableName)
|
|
50
|
+
metavariable = localContextA.findMetavariableByMetavariableName(metavariableName),
|
|
51
|
+
substitution = statementSubstitution, ///
|
|
52
|
+
localContext = localContextB, ///
|
|
53
|
+
statementNode = statementNodeB, ///
|
|
54
|
+
statement = Statement.fromStatementNode(statementNode, localContext);
|
|
61
55
|
|
|
62
56
|
if (substitution === null) {
|
|
63
57
|
statementUnified = metavariable.unifyStatement(statement, substitutions, localContext);
|
|
64
58
|
} else {
|
|
65
|
-
const statementUnifiedGivenSubstitution =
|
|
59
|
+
const statementUnifiedGivenSubstitution = metavariable.unifyStatementGivenSubstitution(statement, substitution, substitutions, localContext);
|
|
66
60
|
|
|
67
61
|
statementUnified = statementUnifiedGivenSubstitution; ///
|
|
68
62
|
}
|
|
@@ -11,15 +11,15 @@ const typeNodeQuery = nodeQuery("/type!"),
|
|
|
11
11
|
|
|
12
12
|
class MetavariableUnifier extends Unifier {
|
|
13
13
|
unify(metavariableNodeA, metavariableNodeB, localContext) {
|
|
14
|
-
let
|
|
14
|
+
let metavariableUnified;
|
|
15
15
|
|
|
16
16
|
const nonTerminalNodeA = metavariableNodeA, ///
|
|
17
17
|
nonTerminalNodeB = metavariableNodeB, ///
|
|
18
18
|
nonTerminalNodeUnified = this.unifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, localContext);
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
metavariableUnified = nonTerminalNodeUnified; ///
|
|
21
21
|
|
|
22
|
-
return
|
|
22
|
+
return metavariableUnified;
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
static maps = [
|
|
@@ -15,9 +15,9 @@ export default function unifyComplexSubstitutionStatementWithSimpleSubstitutionS
|
|
|
15
15
|
|
|
16
16
|
localContextA = localContextB; ///
|
|
17
17
|
|
|
18
|
-
const
|
|
18
|
+
const unifiedAtMetaLevel = metaLevelUnifier.unify(nodeA, nodeB, substitutions, localContextA, localContextB);
|
|
19
19
|
|
|
20
|
-
simpleSubstitutionStatementUnifiedWithComplexSubstitutionStatement =
|
|
20
|
+
simpleSubstitutionStatementUnifiedWithComplexSubstitutionStatement = unifiedAtMetaLevel; ///
|
|
21
21
|
|
|
22
22
|
if (simpleSubstitutionStatementUnifiedWithComplexSubstitutionStatement) {
|
|
23
23
|
localContextB.trace(`...unified the simple substitution's '${simpleSubstitutionStatementString}' statement with the complex substitution's '${complexSubstitutionStatementString}' statement.`, simpleSubstitutionStatementNode);
|
|
@@ -15,9 +15,9 @@ export default function unifyStatementWithStatementGivenEquivalences(statementNo
|
|
|
15
15
|
const substitutions = Substitutions.fromNothing(),
|
|
16
16
|
nodeA = statementNodeA, ///
|
|
17
17
|
nodeB = statementNodeB, ///
|
|
18
|
-
|
|
18
|
+
unifiedAtIntrinsicLevel = intrinsicLevelUnifier.unify(nodeA, nodeB, substitutions, localContextA, localContextB);
|
|
19
19
|
|
|
20
|
-
if (
|
|
20
|
+
if (unifiedAtIntrinsicLevel) {
|
|
21
21
|
const substitutionsUnifiedWithEquivalences = substitutions.unifyWithEquivalences(equivalences, localContextA, localContextB);
|
|
22
22
|
|
|
23
23
|
statementUnifiedWithStatementGivenEquivalences = substitutionsUnifiedWithEquivalences; ///
|
|
@@ -34,9 +34,9 @@ export default function unifyStatementWithStatementGivenEquivalences(statementNo
|
|
|
34
34
|
const substitutions = Substitutions.fromNothing(),
|
|
35
35
|
nodeA = statementNodeB, ///
|
|
36
36
|
nodeB = statementNodeA, ///
|
|
37
|
-
|
|
37
|
+
unifiedAtIntrinsicLevel = intrinsicLevelUnifier.unify(nodeA, nodeB, substitutions, localContextA, localContextB);
|
|
38
38
|
|
|
39
|
-
if (
|
|
39
|
+
if (unifiedAtIntrinsicLevel) {
|
|
40
40
|
const substitutionsUnifiedWithEquivalences = substitutions.unifyWithEquivalences(equivalences, localContextA, localContextB);
|
|
41
41
|
|
|
42
42
|
statementUnifiedWithStatementGivenEquivalences = substitutionsUnifiedWithEquivalences; ///
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import bracketedTermNode from "../node/term/bracketed";
|
|
4
|
-
import bracketedStatementNode from "../node/statement/bracketed";
|
|
5
|
-
|
|
6
3
|
import { nodeQuery } from "../utilities/query";
|
|
4
|
+
import { bracketedTermNode } from "../constructor/bracketed";
|
|
5
|
+
import { bracketedStatementNode } from "../combinator/bracketed";
|
|
7
6
|
import { BRACKETED_TERM_DEPTH, BRACKETED_STATEMENT_DEPTH } from "../constants";
|
|
8
7
|
|
|
9
8
|
const bracketedTermChildNodeQuery = nodeQuery("/term/argument/term!"),
|
package/src/utilities/node.js
CHANGED
|
@@ -6,12 +6,10 @@ 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,
|
|
10
9
|
UNQUALIFIED_STATEMENT_RULE_NAME,
|
|
11
10
|
CONSTRUCTOR_DECLARATION_RULE_NAME } from "../ruleNames";
|
|
12
11
|
import { variableTokensFromVariableString,
|
|
13
12
|
metavariableTokensFromMetavariableString,
|
|
14
|
-
substitutionTokensFromSubstitutionString,
|
|
15
13
|
unqualifiedStatementTokensFromUnqualifiedStatementString,
|
|
16
14
|
constructorDeclarationTokensFromConstructorDeclarationString } from "../utilities/tokens";
|
|
17
15
|
|
|
@@ -24,11 +22,10 @@ const termNodeQuery = nodeQuery("/constructorDeclaration/term"),
|
|
|
24
22
|
statementNodeQuery = nodeQuery("/unqualifiedStatement/statement");
|
|
25
23
|
|
|
26
24
|
export function termNodeFromTermString(termString, lexer, parser) {
|
|
27
|
-
const constructorDeclarationString =
|
|
28
|
-
`,
|
|
25
|
+
const constructorDeclarationString = constructorDeclarationStringFromTermString(termString),
|
|
29
26
|
constructorDeclarationTokens = constructorDeclarationTokensFromConstructorDeclarationString(constructorDeclarationString, lexer),
|
|
30
27
|
constructorDeclarationNode = constructorDeclarationNodeFromConstructorDeclarationTokens(constructorDeclarationTokens, parser),
|
|
31
|
-
termNode =
|
|
28
|
+
termNode = termNodeFromConstructorDeclarationNode(constructorDeclarationNode);
|
|
32
29
|
|
|
33
30
|
return termNode;
|
|
34
31
|
}
|
|
@@ -41,15 +38,40 @@ export function variableNodeFromVariableString(variableString, lexer, parser) {
|
|
|
41
38
|
}
|
|
42
39
|
|
|
43
40
|
export function statementNodeFromStatementString(statementString, lexer, parser) {
|
|
44
|
-
const unqualifiedStatementString =
|
|
45
|
-
`,
|
|
41
|
+
const unqualifiedStatementString =unqualifiedStatementStringFromStatementString(statementString),
|
|
46
42
|
unqualifiedStatementTokens = unqualifiedStatementTokensFromUnqualifiedStatementString(unqualifiedStatementString, lexer),
|
|
47
43
|
unqualifiedStatementNode = unqualifiedStatementNodeFromUnqualifiedStatementTokens(unqualifiedStatementTokens, parser),
|
|
48
|
-
statementNode =
|
|
44
|
+
statementNode = statementNodeFromUnqualifiedStatementNode(unqualifiedStatementNode);
|
|
45
|
+
|
|
46
|
+
return statementNode;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export function termNodeFromConstructorDeclarationNode(constructorDeclarationNode) {
|
|
50
|
+
const termNode = termNodeQuery(constructorDeclarationNode, constructorDeclarationNode);
|
|
51
|
+
|
|
52
|
+
return termNode;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export function statementNodeFromUnqualifiedStatementNode(unqualifiedStatementNode) {
|
|
56
|
+
const statementNode = statementNodeQuery(unqualifiedStatementNode);
|
|
49
57
|
|
|
50
58
|
return statementNode;
|
|
51
59
|
}
|
|
52
60
|
|
|
61
|
+
export function constructorDeclarationStringFromTermString(termString) {
|
|
62
|
+
const constructorDeclarationString = `Constructor ${termString}
|
|
63
|
+
`;
|
|
64
|
+
|
|
65
|
+
return constructorDeclarationString;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
export function unqualifiedStatementStringFromStatementString(statementString) {
|
|
69
|
+
const unqualifiedStatementString = `${statementString}
|
|
70
|
+
`;
|
|
71
|
+
|
|
72
|
+
return unqualifiedStatementString;
|
|
73
|
+
}
|
|
74
|
+
|
|
53
75
|
export function metavariableNodeFromMetavariableString(metavariableString, lexer, parser) {
|
|
54
76
|
const metavariableTokens = metavariableTokensFromMetavariableString(metavariableString, lexer),
|
|
55
77
|
metavariableNode = metavariableNodeFromMetavariableTokens(metavariableTokens, parser);
|
|
@@ -57,13 +79,6 @@ export function metavariableNodeFromMetavariableString(metavariableString, lexer
|
|
|
57
79
|
return metavariableNode;
|
|
58
80
|
}
|
|
59
81
|
|
|
60
|
-
export function substitutionNodeFromSubstitutionString(substitutionString, lexer, parser) {
|
|
61
|
-
const substitutionTokens = substitutionTokensFromSubstitutionString(substitutionString, lexer),
|
|
62
|
-
substitutionNode = substitutionNodeFromSubstitutionTokens(substitutionTokens, parser);
|
|
63
|
-
|
|
64
|
-
return substitutionNode;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
82
|
export function variableNodeFromVariableTokens(variableTokens, parser) {
|
|
68
83
|
const ruleName = VARIABLE_RULE_NAME,
|
|
69
84
|
variableNode = nodeFromTokensRuleNameAndParser(variableTokens, ruleName, parser);
|
|
@@ -78,13 +93,6 @@ export function metavariableNodeFromMetavariableTokens(metavariableTokens, parse
|
|
|
78
93
|
return metavariableNode;
|
|
79
94
|
}
|
|
80
95
|
|
|
81
|
-
export function substitutionNodeFromSubstitutionTokens(substitutionTokens, parser) {
|
|
82
|
-
const ruleName = SUBSTITUTION_RULE_NAME,
|
|
83
|
-
substitutionNode = nodeFromTokensRuleNameAndParser(substitutionTokens, ruleName, parser);
|
|
84
|
-
|
|
85
|
-
return substitutionNode;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
96
|
export function unqualifiedStatementNodeFromUnqualifiedStatementTokens(unqualifiedStatementTokens, parser) {
|
|
89
97
|
const tokens = unqualifiedStatementTokens, ///
|
|
90
98
|
ruleName = UNQUALIFIED_STATEMENT_RULE_NAME,
|
package/src/utilities/string.js
CHANGED
|
@@ -11,17 +11,9 @@ export function trim(string) {
|
|
|
11
11
|
export function nodeAsString(node, tokens) {
|
|
12
12
|
let string;
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
if (nodeTerminalNode) {
|
|
17
|
-
const terminalNode = node; ///
|
|
18
|
-
|
|
19
|
-
string = terminalNodeAsString(terminalNode);
|
|
20
|
-
} else {
|
|
21
|
-
const nonTerminalNode = node; ///
|
|
14
|
+
tokens = nodeAsTokens(node, tokens); ///
|
|
22
15
|
|
|
23
|
-
|
|
24
|
-
}
|
|
16
|
+
string = tokensAsString(tokens);
|
|
25
17
|
|
|
26
18
|
return string;
|
|
27
19
|
}
|
|
@@ -40,14 +32,46 @@ export function nodesAsString(nodes, tokens) {
|
|
|
40
32
|
return string;
|
|
41
33
|
}
|
|
42
34
|
|
|
43
|
-
function
|
|
44
|
-
const
|
|
45
|
-
|
|
35
|
+
export function tokensAsString(tokens) {
|
|
36
|
+
const string = tokens.reduce((string, token) => {
|
|
37
|
+
const content = token.getContent();
|
|
38
|
+
|
|
39
|
+
string = `${string}${content}`;
|
|
40
|
+
|
|
41
|
+
return string;
|
|
42
|
+
}, EMPTY_STRING);
|
|
46
43
|
|
|
47
44
|
return string;
|
|
48
45
|
}
|
|
49
46
|
|
|
50
|
-
function
|
|
47
|
+
export function nodeAsTokens(node, tokens) {
|
|
48
|
+
const nodeTerminalNode = node.isTerminalNode();
|
|
49
|
+
|
|
50
|
+
if (nodeTerminalNode) {z
|
|
51
|
+
const terminalNode = node; ///
|
|
52
|
+
|
|
53
|
+
tokens = terminalNodeAsTokens(terminalNode, tokens);
|
|
54
|
+
} else {
|
|
55
|
+
const nonTerminalNode = node; ///
|
|
56
|
+
|
|
57
|
+
tokens = nonTerminalNodeAsTokens(nonTerminalNode, tokens);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
return tokens;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
function terminalNodeAsTokens(terminalNode, tokens) {
|
|
64
|
+
const significantToken = terminalNode.getSignificantToken(),
|
|
65
|
+
token = significantToken; ///
|
|
66
|
+
|
|
67
|
+
tokens = [ ///
|
|
68
|
+
token
|
|
69
|
+
];
|
|
70
|
+
|
|
71
|
+
return tokens;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
function nonTerminalNodeAsTokens(nonTerminalNode, tokens) {
|
|
51
75
|
const lastSignificantTokenIndex = nonTerminalNode.getLastSignificantTokenIndex(tokens),
|
|
52
76
|
firstSignificantTokenIndex = nonTerminalNode.getFirstSignificantTokenIndex(tokens),
|
|
53
77
|
start = firstSignificantTokenIndex, ///
|
|
@@ -55,13 +79,5 @@ function nonTerminalNodeAsString(nonTerminalNode, tokens) {
|
|
|
55
79
|
|
|
56
80
|
tokens = tokens.slice(start, end); ///
|
|
57
81
|
|
|
58
|
-
|
|
59
|
-
const content = token.getContent();
|
|
60
|
-
|
|
61
|
-
string = `${string}${content}`;
|
|
62
|
-
|
|
63
|
-
return string;
|
|
64
|
-
}, EMPTY_STRING);
|
|
65
|
-
|
|
66
|
-
return string;
|
|
82
|
+
return tokens;
|
|
67
83
|
}
|
package/src/utilities/tokens.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import { arrayUtilities } from "necessary";
|
|
3
4
|
import { lexersUtilities } from "occam-custom-grammars";
|
|
4
5
|
|
|
5
6
|
import { combinedCustomGrammarFromNothing } from "./customGrammar";
|
|
6
7
|
|
|
7
|
-
const {
|
|
8
|
+
const { front } = arrayUtilities,
|
|
9
|
+
{ nominalLexerFromCombinedCustomGrammar } = lexersUtilities;
|
|
8
10
|
|
|
9
11
|
const combinedCustomGrammar = combinedCustomGrammarFromNothing(),
|
|
10
12
|
nominalLexer = nominalLexerFromCombinedCustomGrammar(combinedCustomGrammar);
|
|
@@ -23,13 +25,6 @@ export function metavariableTokensFromMetavariableString(metavariableString, lex
|
|
|
23
25
|
return metavariableTokens;
|
|
24
26
|
}
|
|
25
27
|
|
|
26
|
-
export function substitutionTokensFromSubstitutionString(substitutionString, lexer) {
|
|
27
|
-
const substitutionContent = `${substitutionString}`,
|
|
28
|
-
substitutionTokens = tokensFromContentAndLexer(substitutionContent, lexer);
|
|
29
|
-
|
|
30
|
-
return substitutionTokens;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
28
|
export function unqualifiedStatementTokensFromUnqualifiedStatementString(unqualifiedStatementString, lexer) {
|
|
34
29
|
const content = unqualifiedStatementString, ///
|
|
35
30
|
unqualifiedStatementTokens = tokensFromContentAndLexer(content, lexer);
|
|
@@ -44,6 +39,20 @@ export function constructorDeclarationTokensFromConstructorDeclarationString(con
|
|
|
44
39
|
return constructorDeclarationTokens;
|
|
45
40
|
}
|
|
46
41
|
|
|
42
|
+
export function termTokensFromConstructorDeclarationTokens(constructorDeclarationTokens) {
|
|
43
|
+
const frontConstructorDeclarationTokens = front(constructorDeclarationTokens),
|
|
44
|
+
termTokens = frontConstructorDeclarationTokens; ///
|
|
45
|
+
|
|
46
|
+
return termTokens;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export function statementTokensFromUnqualifiedStatementTokens(unqualifiedStatementTokens) {
|
|
50
|
+
const frontUnqualifiedStatementTokens = front(unqualifiedStatementTokens),
|
|
51
|
+
statementTokens = frontUnqualifiedStatementTokens; ///
|
|
52
|
+
|
|
53
|
+
return statementTokens;
|
|
54
|
+
}
|
|
55
|
+
|
|
47
56
|
function tokensFromContentAndLexer(content, lexer = nominalLexer) {
|
|
48
57
|
const tokens = lexer.tokenise(content);
|
|
49
58
|
|
package/src/utilities/unify.js
CHANGED
|
@@ -21,17 +21,3 @@ export function metavariableFromFrameNode(frameNode, localContext) {
|
|
|
21
21
|
return metavariable;
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
-
export function metavariableFromStatementNode(statementNode, localContext) {
|
|
25
|
-
let metavariable = null;
|
|
26
|
-
|
|
27
|
-
const statementMetavariableNode = statementMetavariableNodeQuery(statementNode)
|
|
28
|
-
|
|
29
|
-
if (statementMetavariableNode !== null) {
|
|
30
|
-
const metavariableNode = statementMetavariableNode, ///
|
|
31
|
-
metavariableName = metavariableNameFromMetavariableNode(metavariableNode);
|
|
32
|
-
|
|
33
|
-
metavariable = localContext.findMetavariableByMetavariableName(metavariableName);
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
return metavariable;
|
|
37
|
-
}
|
package/src/variable.js
CHANGED
|
@@ -165,7 +165,7 @@ class Variable {
|
|
|
165
165
|
if (termVariable === variable) {
|
|
166
166
|
termUnified = true;
|
|
167
167
|
} else {
|
|
168
|
-
const termForVariableSubstitution = TermForVariableSubstitution.fromTernAndVariable(term, variable
|
|
168
|
+
const termForVariableSubstitution = TermForVariableSubstitution.fromTernAndVariable(term, variable),
|
|
169
169
|
substitution = termForVariableSubstitution; ///
|
|
170
170
|
|
|
171
171
|
substitutions.addSubstitution(substitution, localContext);
|
|
@@ -209,6 +209,25 @@ class Variable {
|
|
|
209
209
|
return variable;
|
|
210
210
|
}
|
|
211
211
|
|
|
212
|
+
static fromTermNode(termNode, localContext) {
|
|
213
|
+
let variable = null;
|
|
214
|
+
|
|
215
|
+
const termVariableNode = termVariableNodeQuery(termNode);
|
|
216
|
+
|
|
217
|
+
if (termVariableNode !== null) {
|
|
218
|
+
const variableNode = termVariableNode, ///
|
|
219
|
+
variableName = variableNameFromVariableNode(variableNode),
|
|
220
|
+
node = variableNode, ///
|
|
221
|
+
string = localContext.nodeAsString(node),
|
|
222
|
+
name = variableName, ///
|
|
223
|
+
type = null;
|
|
224
|
+
|
|
225
|
+
variable = new Variable(localContext, string, node, name, type);
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
return variable;
|
|
229
|
+
}
|
|
230
|
+
|
|
212
231
|
static fromVariableNode(variableNode, localContext) {
|
|
213
232
|
let variable = null;
|
|
214
233
|
|
|
@@ -1,16 +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 _default;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
var _node = require("../../utilities/node");
|
|
12
|
-
var bracketedStatementString = "(n=m)";
|
|
13
|
-
var bracketedStatementNode = (0, _node.statementNodeFromStatementString)(bracketedStatementString);
|
|
14
|
-
var _default = bracketedStatementNode;
|
|
15
|
-
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ub2RlL3N0YXRlbWVudC9icmFja2V0ZWQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IHN0YXRlbWVudE5vZGVGcm9tU3RhdGVtZW50U3RyaW5nIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9ub2RlXCI7XG5cbmNvbnN0IGJyYWNrZXRlZFN0YXRlbWVudFN0cmluZyA9IFwiKG49bSlcIjtcblxuY29uc3QgYnJhY2tldGVkU3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudE5vZGVGcm9tU3RhdGVtZW50U3RyaW5nKGJyYWNrZXRlZFN0YXRlbWVudFN0cmluZyk7XG5cbmV4cG9ydCBkZWZhdWx0IGJyYWNrZXRlZFN0YXRlbWVudE5vZGU7XG4iXSwibmFtZXMiOlsiYnJhY2tldGVkU3RhdGVtZW50U3RyaW5nIiwiYnJhY2tldGVkU3RhdGVtZW50Tm9kZSIsInN0YXRlbWVudE5vZGVGcm9tU3RhdGVtZW50U3RyaW5nIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkFRQTs7O2VBQUE7OztvQkFOaUQ7QUFFakQsSUFBTUEsMkJBQTJCO0FBRWpDLElBQU1DLHlCQUF5QkMsSUFBQUEsc0NBQWdDLEVBQUNGO0lBRWhFLFdBQWVDIn0=
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", {
|
|
3
|
-
value: true
|
|
4
|
-
});
|
|
5
|
-
function _export(target, all) {
|
|
6
|
-
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
-
enumerable: true,
|
|
8
|
-
get: all[name]
|
|
9
|
-
});
|
|
10
|
-
}
|
|
11
|
-
_export(exports, {
|
|
12
|
-
bracketedCombinatorStatementString: function() {
|
|
13
|
-
return bracketedCombinatorStatementString;
|
|
14
|
-
},
|
|
15
|
-
default: function() {
|
|
16
|
-
return _default;
|
|
17
|
-
}
|
|
18
|
-
});
|
|
19
|
-
var _metaTypeNames = require("../../../metaTypeNames");
|
|
20
|
-
var _node = require("../../../utilities/node");
|
|
21
|
-
var bracketedCombinatorStatementString = "(".concat(_metaTypeNames.STATEMENT_META_TYPE_NAME, ")");
|
|
22
|
-
var bracketedCombinatorStatementNode = (0, _node.statementNodeFromStatementString)(bracketedCombinatorStatementString);
|
|
23
|
-
var _default = bracketedCombinatorStatementNode;
|
|
24
|
-
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9ub2RlL3N0YXRlbWVudC9jb21iaW5hdG9yL2JyYWNrZXRlZC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgU1RBVEVNRU5UX01FVEFfVFlQRV9OQU1FIH0gZnJvbSBcIi4uLy4uLy4uL21ldGFUeXBlTmFtZXNcIjtcbmltcG9ydCB7IHN0YXRlbWVudE5vZGVGcm9tU3RhdGVtZW50U3RyaW5nIH0gZnJvbSBcIi4uLy4uLy4uL3V0aWxpdGllcy9ub2RlXCI7XG5cbmV4cG9ydCBjb25zdCBicmFja2V0ZWRDb21iaW5hdG9yU3RhdGVtZW50U3RyaW5nID0gYCgke1NUQVRFTUVOVF9NRVRBX1RZUEVfTkFNRX0pYDtcblxuY29uc3QgYnJhY2tldGVkQ29tYmluYXRvclN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlRnJvbVN0YXRlbWVudFN0cmluZyhicmFja2V0ZWRDb21iaW5hdG9yU3RhdGVtZW50U3RyaW5nKVxuXG5leHBvcnQgZGVmYXVsdCBicmFja2V0ZWRDb21iaW5hdG9yU3RhdGVtZW50Tm9kZTtcbiJdLCJuYW1lcyI6WyJicmFja2V0ZWRDb21iaW5hdG9yU3RhdGVtZW50U3RyaW5nIiwiU1RBVEVNRU5UX01FVEFfVFlQRV9OQU1FIiwiYnJhY2tldGVkQ29tYmluYXRvclN0YXRlbWVudE5vZGUiLCJzdGF0ZW1lbnROb2RlRnJvbVN0YXRlbWVudFN0cmluZyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O0lBS2FBLGtDQUFrQztlQUFsQ0E7O0lBSWIsT0FBZ0Q7ZUFBaEQ7Ozs2QkFQeUM7b0JBQ1E7QUFFMUMsSUFBTUEscUNBQXFDLEFBQUMsSUFBNEIsT0FBekJDLHVDQUF3QixFQUFDO0FBRS9FLElBQU1DLG1DQUFtQ0MsSUFBQUEsc0NBQWdDLEVBQUNIO0lBRTFFLFdBQWVFIn0=
|
|
@@ -1,16 +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 _default;
|
|
9
|
-
}
|
|
10
|
-
});
|
|
11
|
-
var _node = require("../../utilities/node");
|
|
12
|
-
var bracketedTermString = "(n)";
|
|
13
|
-
var bracketedTermNode = (0, _node.termNodeFromTermString)(bracketedTermString);
|
|
14
|
-
var _default = bracketedTermNode;
|
|
15
|
-
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ub2RlL3Rlcm0vYnJhY2tldGVkLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyB0ZXJtTm9kZUZyb21UZXJtU3RyaW5nIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9ub2RlXCI7XG5cbmNvbnN0IGJyYWNrZXRlZFRlcm1TdHJpbmcgPSBcIihuKVwiO1xuXG5jb25zdCBicmFja2V0ZWRUZXJtTm9kZSA9IHRlcm1Ob2RlRnJvbVRlcm1TdHJpbmcoYnJhY2tldGVkVGVybVN0cmluZyk7XG5cbmV4cG9ydCBkZWZhdWx0IGJyYWNrZXRlZFRlcm1Ob2RlO1xuIl0sIm5hbWVzIjpbImJyYWNrZXRlZFRlcm1TdHJpbmciLCJicmFja2V0ZWRUZXJtTm9kZSIsInRlcm1Ob2RlRnJvbVRlcm1TdHJpbmciXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQVFBOzs7ZUFBQTs7O29CQU51QztBQUV2QyxJQUFNQSxzQkFBc0I7QUFFNUIsSUFBTUMsb0JBQW9CQyxJQUFBQSw0QkFBc0IsRUFBQ0Y7SUFFakQsV0FBZUMifQ==
|