occam-verify-cli 0.0.1061 → 0.0.1065
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 +184 -0
- package/lib/assertion/defined.js +171 -0
- package/lib/assertion/subproof.js +5 -5
- package/lib/assertion/type.js +13 -6
- package/lib/conclusion.js +5 -8
- package/lib/consequent.js +5 -8
- package/lib/context/release.js +3 -2
- package/lib/declaration.js +6 -50
- package/lib/equality.js +6 -7
- package/lib/equivalence.js +3 -2
- package/lib/frame.js +160 -64
- package/lib/metavariable.js +49 -39
- package/lib/mixins/statement/verify.js +24 -32
- package/lib/premise.js +5 -8
- package/lib/proofStep.js +2 -2
- package/lib/statement/unqualified.js +14 -1
- package/lib/statement.js +77 -23
- package/lib/substitution/statement.js +17 -2
- package/lib/substitution/statementForMetavariable.js +22 -27
- package/lib/substitution/termForVariable.js +9 -9
- package/lib/supposition.js +5 -8
- package/lib/term.js +46 -3
- package/lib/unifier/intrinsicLevel.js +4 -4
- package/lib/unifier/metaLevel.js +9 -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/unify.js +4 -21
- package/lib/variable.js +19 -3
- package/lib/verifier/intrinsicLevel.js +4 -4
- package/lib/verifier/metaLevel.js +4 -4
- package/lib/verifier/substitution.js +161 -0
- package/lib/verifier/topLevel.js +4 -4
- package/package.json +1 -1
- package/src/assertion/contained.js +170 -0
- package/src/assertion/defined.js +161 -0
- package/src/assertion/subproof.js +5 -4
- package/src/assertion/type.js +18 -7
- package/src/conclusion.js +5 -18
- package/src/consequent.js +5 -18
- package/src/context/release.js +3 -1
- package/src/declaration.js +49 -49
- package/src/equality.js +7 -8
- package/src/equivalence.js +3 -1
- package/src/frame.js +204 -59
- package/src/metavariable.js +82 -45
- package/src/mixins/statement/verify.js +30 -42
- package/src/premise.js +5 -18
- package/src/proofStep.js +1 -1
- package/src/statement/unqualified.js +17 -0
- package/src/statement.js +116 -32
- package/src/substitution/statement.js +22 -2
- package/src/substitution/statementForMetavariable.js +27 -34
- package/src/substitution/termForVariable.js +15 -12
- package/src/supposition.js +5 -18
- package/src/term.js +61 -3
- package/src/unifier/intrinsicLevel.js +3 -3
- package/src/unifier/metaLevel.js +16 -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/unify.js +0 -14
- package/src/variable.js +27 -3
- package/src/verifier/intrinsicLevel.js +3 -3
- package/src/verifier/metaLevel.js +3 -3
- package/src/verifier/substitution.js +75 -0
- package/src/verifier/topLevel.js +3 -3
- package/lib/unify/frameWithMetaType.js +0 -24
- package/lib/verify/assertion/contained.js +0 -107
- package/lib/verify/assertion/defined.js +0 -98
- package/lib/verify/assertion/subproof.js +0 -16
- package/lib/verify/frameGivenMetaType.js +0 -37
- package/src/unify/frameWithMetaType.js +0 -14
- package/src/verify/assertion/contained.js +0 -134
- package/src/verify/assertion/defined.js +0 -120
- package/src/verify/assertion/subproof.js +0 -9
- package/src/verify/frameGivenMetaType.js +0 -31
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import shim from "../shim";
|
|
4
|
+
|
|
5
|
+
import { isAssertionNegated } from "../utilities/assertion";
|
|
6
|
+
|
|
7
|
+
export default class DefinedAssertion {
|
|
8
|
+
constructor(string, node, term, frame, negated) {
|
|
9
|
+
this.string = string;
|
|
10
|
+
this.node = node;
|
|
11
|
+
this.term = term;
|
|
12
|
+
this.frame= frame;
|
|
13
|
+
this.negated = negated;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
getString() {
|
|
17
|
+
return this.string;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
getNode() {
|
|
21
|
+
return this.node;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
getTerm() {
|
|
25
|
+
return this.term;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
getFrame() {
|
|
29
|
+
return this.frame;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
isNegated() {
|
|
33
|
+
return this.negated;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
verify(assignments, stated, localContext) {
|
|
37
|
+
let verified = false;
|
|
38
|
+
|
|
39
|
+
const definedAssertionString = this.string; ///
|
|
40
|
+
|
|
41
|
+
localContext.trace(`Verifying the '${definedAssertionString}' defined assertion...`);
|
|
42
|
+
|
|
43
|
+
assignments = null; ///
|
|
44
|
+
|
|
45
|
+
let termVerified = true, ///
|
|
46
|
+
frameVerified = true; ///
|
|
47
|
+
|
|
48
|
+
if (this.term !== null) {
|
|
49
|
+
termVerified = this.term.verify(localContext, () => {
|
|
50
|
+
const verifiedAhead = true;
|
|
51
|
+
|
|
52
|
+
return verifiedAhead;
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
if (this.frame!== null) {
|
|
57
|
+
frameVerified = this.frame.verify(localContext);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
if (termVerified && frameVerified) {
|
|
61
|
+
let verifiedWhenStated = false,
|
|
62
|
+
verifiedWhenDerived = false;
|
|
63
|
+
|
|
64
|
+
if (stated) {
|
|
65
|
+
verifiedWhenStated = this.verifyWhenStated(localContext);
|
|
66
|
+
} else {
|
|
67
|
+
verifiedWhenDerived = this.verifyWhenDerived(localContext);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
if (verifiedWhenStated || verifiedWhenDerived) {
|
|
71
|
+
verified = true;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
if (verified) {
|
|
76
|
+
localContext.debug(`...verified the '${definedAssertionString}' defined assertion.`);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
return verified;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
verifyWhenStated(localContext) {
|
|
83
|
+
let verifiedWhenStated;
|
|
84
|
+
|
|
85
|
+
const definedAssertionString = this.string; ///
|
|
86
|
+
|
|
87
|
+
localContext.trace(`Verifying the '${definedAssertionString}' stated defined assertion...`);
|
|
88
|
+
|
|
89
|
+
verifiedWhenStated = true;
|
|
90
|
+
|
|
91
|
+
if (verifiedWhenStated) {
|
|
92
|
+
localContext.debug(`...verified the '${definedAssertionString}' stated defined assertion.`);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
return verifiedWhenStated;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
verifyWhenDerived(localContext) {
|
|
99
|
+
let verifiedWhenDerived = false;
|
|
100
|
+
|
|
101
|
+
const definedAssertionString = this.string; ///
|
|
102
|
+
|
|
103
|
+
localContext.trace(`Verifying the '${definedAssertionString}' derived defined assertion...`);
|
|
104
|
+
|
|
105
|
+
if (this.term !== null) {
|
|
106
|
+
const { Variable } = shim,
|
|
107
|
+
termNode = this.term.getNode(),
|
|
108
|
+
variable = Variable.fromTermNode(termNode, localContext),
|
|
109
|
+
variableDefined = localContext.isVariableDefined(variable);
|
|
110
|
+
|
|
111
|
+
if (!this.negated && variableDefined) {
|
|
112
|
+
verifiedWhenDerived = true;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
if (this.negated && !variableDefined) {
|
|
116
|
+
verifiedWhenDerived = true;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
if (this.frame!== null) {
|
|
121
|
+
debugger
|
|
122
|
+
|
|
123
|
+
const { Metavariable } = shim,
|
|
124
|
+
frameNode = this.frame.getNode(),
|
|
125
|
+
metavariable = Metavariable.fromTermNode(frameNode, localContext),
|
|
126
|
+
metavariableDefined = localContext.isMetametavariableDefined(metavariable);
|
|
127
|
+
|
|
128
|
+
if (!this.negated && metavariableDefined) {
|
|
129
|
+
verifiedWhenDerived = true;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
if (this.negated && !metavariableDefined) {
|
|
133
|
+
verifiedWhenDerived = true;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
if (verifiedWhenDerived) {
|
|
138
|
+
localContext.debug(`...verified the '${definedAssertionString}' derived defined assertion.`);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
return verifiedWhenDerived;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
static fromDefinedAssertionNode(definedAssertionNode, localContext) {
|
|
145
|
+
let definedAssertion = null;
|
|
146
|
+
|
|
147
|
+
if (definedAssertionNode !== null) {
|
|
148
|
+
const { Term, Frame } = shim,
|
|
149
|
+
node = definedAssertionNode, ///
|
|
150
|
+
string = localContext.nodeAsString(node),
|
|
151
|
+
term = Term.fromDefinedAssertionNode(definedAssertionNode, localContext),
|
|
152
|
+
frame = Frame.fromDefinedAssertionNode(definedAssertionNode, localContext),
|
|
153
|
+
definedAssertionNegated = isAssertionNegated(definedAssertionNode),
|
|
154
|
+
negated = definedAssertionNegated; ///
|
|
155
|
+
|
|
156
|
+
definedAssertion = new DefinedAssertion(string, node, term, frame, negated);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
return definedAssertion;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
@@ -54,9 +54,10 @@ export default class SubproofAssertion {
|
|
|
54
54
|
|
|
55
55
|
stated = true; ///
|
|
56
56
|
|
|
57
|
-
const subproofAssertionNode = this.node
|
|
57
|
+
const subproofAssertionNode = this.node, ///
|
|
58
|
+
verifiedAtMetaLevel = metaLevelVerifier.verify(subproofAssertionNode, assignments, stated, localContext);
|
|
58
59
|
|
|
59
|
-
verified =
|
|
60
|
+
verified = verifiedAtMetaLevel; ///
|
|
60
61
|
}
|
|
61
62
|
|
|
62
63
|
if (verified) {
|
|
@@ -113,9 +114,9 @@ export default class SubproofAssertion {
|
|
|
113
114
|
fileContextA = fileContext, ///
|
|
114
115
|
localContextA = LocalContext.fromFileContext(fileContextA),
|
|
115
116
|
localContextB = localContext, ///
|
|
116
|
-
|
|
117
|
+
unifiedAtMetaLevel = metaLevelUnifier.unify(nodeA, nodeB, substitutions, localContextA, localContextB);
|
|
117
118
|
|
|
118
|
-
if (
|
|
119
|
+
if (unifiedAtMetaLevel) {
|
|
119
120
|
return true;
|
|
120
121
|
}
|
|
121
122
|
});
|
package/src/assertion/type.js
CHANGED
|
@@ -5,7 +5,7 @@ import Variable from "../variable";
|
|
|
5
5
|
import VariableAssignment from "../assignment/variable";
|
|
6
6
|
|
|
7
7
|
import { nodeQuery } from "../utilities/query";
|
|
8
|
-
import {objectType} from "../type";
|
|
8
|
+
import { objectType } from "../type";
|
|
9
9
|
|
|
10
10
|
const termNodeQuery = nodeQuery("/typeAssertion/term"),
|
|
11
11
|
typeNodeQuery = nodeQuery("/typeAssertion/type"),
|
|
@@ -36,16 +36,27 @@ export default class TypeAssertion {
|
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
verify(assignments, stated, localContext) {
|
|
39
|
-
let verified;
|
|
39
|
+
let verified = false;
|
|
40
40
|
|
|
41
|
-
|
|
42
|
-
|
|
41
|
+
let typeAssertionString = this.string; ///
|
|
42
|
+
|
|
43
|
+
localContext.trace(`Verifying the '$${typeAssertionString}' type assertion...`);
|
|
43
44
|
|
|
44
|
-
|
|
45
|
+
let verifiedWhenStated = false,
|
|
46
|
+
verifiedWhenDerived = false;
|
|
47
|
+
|
|
48
|
+
if (stated) {
|
|
49
|
+
verifiedWhenStated = this.verifyWhenStated(assignments, localContext);
|
|
45
50
|
} else {
|
|
46
|
-
|
|
51
|
+
verifiedWhenDerived = this.verifyWhenDerived(localContext);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
if (verifiedWhenStated || verifiedWhenDerived) {
|
|
55
|
+
verified = true;
|
|
56
|
+
}
|
|
47
57
|
|
|
48
|
-
|
|
58
|
+
if (verified) {
|
|
59
|
+
localContext.debug(`...verified the '$${typeAssertionString}' type assertion.`);
|
|
49
60
|
}
|
|
50
61
|
|
|
51
62
|
return verified;
|
package/src/conclusion.js
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import LocalContext from "./context/local";
|
|
4
|
-
import metaLevelUnifier from "./unifier/metaLevel";
|
|
5
3
|
import UnqualifiedStatement from "./statement/unqualified";
|
|
6
4
|
|
|
7
5
|
import { nodeQuery } from "./utilities/query";
|
|
@@ -29,26 +27,15 @@ export default class Conclusion {
|
|
|
29
27
|
unifyStatement(statement, substitutions, localContext) {
|
|
30
28
|
let statementUnified;
|
|
31
29
|
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
conclusionStatement = conclusion.getStatement(),
|
|
35
|
-
conclusionStatementString = conclusionStatement.getString();
|
|
30
|
+
const statementString = statement.getString(),
|
|
31
|
+
conclusionString = this.getString();
|
|
36
32
|
|
|
37
|
-
localContext.trace(`Unifying the '${statementString}' statement with the
|
|
33
|
+
localContext.trace(`Unifying the '${statementString}' statement with the '${conclusionString}' conclusion...`);
|
|
38
34
|
|
|
39
|
-
|
|
40
|
-
conclusionStatementNode = conclusionStatement.getNode(),
|
|
41
|
-
nodeA = conclusionStatementNode, ///
|
|
42
|
-
nodeB = statementNode, ///
|
|
43
|
-
fileContextA = this.fileContext, ///
|
|
44
|
-
localContextA = LocalContext.fromFileContext(fileContextA),
|
|
45
|
-
localContextB = localContext, ///
|
|
46
|
-
unified = metaLevelUnifier.unify(nodeA, nodeB, substitutions, localContextA, localContextB);
|
|
47
|
-
|
|
48
|
-
statementUnified = unified; ///
|
|
35
|
+
statementUnified = this.unqualifiedStatement.unifyStatement(statement, substitutions, this.fileContext, localContext);
|
|
49
36
|
|
|
50
37
|
if (statementUnified) {
|
|
51
|
-
localContext.debug(`...unified the '${statementString}' statement with the
|
|
38
|
+
localContext.debug(`...unified the '${statementString}' statement with the '${conclusionString}' conclusion.`);
|
|
52
39
|
}
|
|
53
40
|
|
|
54
41
|
return statementUnified;
|
package/src/consequent.js
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import LocalContext from "./context/local";
|
|
4
|
-
import metaLevelUnifier from "./unifier/metaLevel";
|
|
5
3
|
import UnqualifiedStatement from "./statement/unqualified";
|
|
6
4
|
|
|
7
5
|
import { nodeQuery } from "./utilities/query";
|
|
@@ -29,26 +27,15 @@ export default class Consequent {
|
|
|
29
27
|
unifyStatement(statement, substitutions, localContext) {
|
|
30
28
|
let statementUnified;
|
|
31
29
|
|
|
32
|
-
const
|
|
33
|
-
|
|
34
|
-
consequentStatement = consequent.getStatement(),
|
|
35
|
-
consequentStatementString = consequentStatement.getString();
|
|
30
|
+
const statementString = statement.getString(),
|
|
31
|
+
consequentString = this.getString();
|
|
36
32
|
|
|
37
|
-
localContext.trace(`Unifying the '${statementString}' statement with the
|
|
33
|
+
localContext.trace(`Unifying the '${statementString}' statement with the '${consequentString}' consequent...`);
|
|
38
34
|
|
|
39
|
-
|
|
40
|
-
consequentStatementNode = consequentStatement.getNode(),
|
|
41
|
-
nodeA = consequentStatementNode, ///
|
|
42
|
-
nodeB = statementNode, ///
|
|
43
|
-
fileContextA = this.fileContext, ///
|
|
44
|
-
localContextA = LocalContext.fromFileContext(fileContextA),
|
|
45
|
-
localContextB = localContext, ///
|
|
46
|
-
unified = metaLevelUnifier.unify(nodeA, nodeB, substitutions, localContextA, localContextB);
|
|
47
|
-
|
|
48
|
-
statementUnified = unified; ///
|
|
35
|
+
statementUnified = this.unqualifiedStatement.unifyStatement(statement, substitutions, this.fileContext, localContext);
|
|
49
36
|
|
|
50
37
|
if (statementUnified) {
|
|
51
|
-
localContext.debug(`...unified the '${statementString}' statement with the
|
|
38
|
+
localContext.debug(`...unified the '${statementString}' statement with the '${consequentString}' consequent.`);
|
|
52
39
|
}
|
|
53
40
|
|
|
54
41
|
return statementUnified;
|
package/src/context/release.js
CHANGED
|
@@ -512,7 +512,9 @@ function verifyFileContext(fileContext) {
|
|
|
512
512
|
if (node !== null) {
|
|
513
513
|
fileContext.reset();
|
|
514
514
|
|
|
515
|
-
|
|
515
|
+
const verifiedAtTopLevel = topLevelVerifier.verify(node, fileContext);
|
|
516
|
+
|
|
517
|
+
fileContextVerified = verifiedAtTopLevel; ///
|
|
516
518
|
}
|
|
517
519
|
|
|
518
520
|
return fileContextVerified;
|
package/src/declaration.js
CHANGED
|
@@ -3,60 +3,60 @@
|
|
|
3
3
|
import { stripBracketsFromStatement } from "./utilities/brackets";
|
|
4
4
|
|
|
5
5
|
export default class Declaration {
|
|
6
|
-
constructor(reference,
|
|
6
|
+
constructor(reference, statement) {
|
|
7
7
|
this.reference = reference;
|
|
8
|
-
this.
|
|
8
|
+
this.statement = statement;
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
getReference() {
|
|
12
12
|
return this.reference;
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
return this.
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
getMetavariableNode() { return this.reference.getMetavariableNode(); }
|
|
20
|
-
|
|
21
|
-
unifyStatement(statementNode) {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
unifySubstitution(substitution) {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
unifyMetavariable(metavariable) {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
unifyMetaLemmaOrMetatheorem(metaLemmaMetatheorem) {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
static fromReferenceAndStatementNode(reference, statementNode) {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
}
|
|
15
|
+
getStatement() {
|
|
16
|
+
return this.statement;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
// getMetavariableNode() { return this.reference.getMetavariableNode(); }
|
|
20
|
+
//
|
|
21
|
+
// unifyStatement(statementNode) {
|
|
22
|
+
// statementNode = stripBracketsFromStatement(statementNode); ///
|
|
23
|
+
//
|
|
24
|
+
// const statementNodeMatches = this.statementNode.match(statementNode),
|
|
25
|
+
// statementUnified = statementNodeMatches; ///
|
|
26
|
+
//
|
|
27
|
+
// return statementUnified;
|
|
28
|
+
// }
|
|
29
|
+
//
|
|
30
|
+
// unifySubstitution(substitution) {
|
|
31
|
+
// const statementNode = substitution.getStatementNode(),
|
|
32
|
+
// metavariableNode = substitution.getMetavariableNode(),
|
|
33
|
+
// statementUnified = this.unifyStatement(statementNode),
|
|
34
|
+
// metavariableUnified = this.unifyMetavariable(metavariableNode),
|
|
35
|
+
// substitutionUnified = (metavariableUnified && statementUnified);
|
|
36
|
+
//
|
|
37
|
+
// return substitutionUnified;
|
|
38
|
+
// }
|
|
39
|
+
//
|
|
40
|
+
// unifyMetavariable(metavariable) {
|
|
41
|
+
// const metavariableNodeMatches = this.reference.matchMetavariableNode(metavariable);
|
|
42
|
+
//
|
|
43
|
+
// return metavariableNodeMatches;
|
|
44
|
+
// }
|
|
45
|
+
//
|
|
46
|
+
// unifyMetaLemmaOrMetatheorem(metaLemmaMetatheorem) {
|
|
47
|
+
// const consequent = metaLemmaMetatheorem.getConsequent(),
|
|
48
|
+
// statementNode = consequent.getStatementNode(),
|
|
49
|
+
// statementNodeMatches = this.statementNode.match(statementNode),
|
|
50
|
+
// metaLemmaOrMetaTheoremUnified = statementNodeMatches; ///
|
|
51
|
+
//
|
|
52
|
+
// return metaLemmaOrMetaTheoremUnified;
|
|
53
|
+
// }
|
|
54
|
+
//
|
|
55
|
+
// static fromReferenceAndStatementNode(reference, statementNode) {
|
|
56
|
+
// statementNode = stripBracketsFromStatement(statementNode); ///
|
|
57
|
+
//
|
|
58
|
+
// const declaration = new Declaration(reference, statementNode);
|
|
59
|
+
//
|
|
60
|
+
// return declaration;
|
|
61
|
+
// }
|
|
62
62
|
}
|
package/src/equality.js
CHANGED
|
@@ -45,23 +45,22 @@ export default class Equality {
|
|
|
45
45
|
}
|
|
46
46
|
|
|
47
47
|
verify(assignments, stated, localContext) {
|
|
48
|
-
let verified;
|
|
48
|
+
let verified = false;
|
|
49
49
|
|
|
50
50
|
const equalityString = this.string; ///
|
|
51
51
|
|
|
52
52
|
localContext.trace(`Verifying the '${equalityString}' equality...`);
|
|
53
53
|
|
|
54
|
-
|
|
55
|
-
|
|
54
|
+
let verifiedWhenStated = false,
|
|
55
|
+
verifiedWhenDerived = false;
|
|
56
56
|
|
|
57
|
-
|
|
57
|
+
if (stated) {
|
|
58
|
+
verifiedWhenStated = this.verifyWhenStated(localContext);
|
|
58
59
|
} else {
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
verified = verifiedWhenDerived; ///
|
|
60
|
+
verifiedWhenDerived = this.verifyWhenDerived(localContext);
|
|
62
61
|
}
|
|
63
62
|
|
|
64
|
-
if (
|
|
63
|
+
if (verifiedWhenStated || verifiedWhenDerived) {
|
|
65
64
|
if (assignments !== null) {
|
|
66
65
|
const equality = this, //
|
|
67
66
|
equalityAssignment = EqualityAssignment.fromEquality(equality),
|
package/src/equivalence.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { nodeQuery } from "./utilities/query";
|
|
4
4
|
import { stripBracketsFromTerm } from "./utilities/brackets";
|
|
5
|
+
import { variableNameFromVariableNode } from "./utilities/name";
|
|
5
6
|
|
|
6
7
|
const variableNodeQuery = nodeQuery("/term/variable!");
|
|
7
8
|
|
|
@@ -227,7 +228,8 @@ function termTypeFromTerm(term, localContext) {
|
|
|
227
228
|
variableNode = variableNodeQuery(termNode);
|
|
228
229
|
|
|
229
230
|
if (variableNode !== null) {
|
|
230
|
-
const
|
|
231
|
+
const variableName = variableNameFromVariableNode(variableNode),
|
|
232
|
+
variable = localContext.findVariableByVariableName(variableName),
|
|
231
233
|
variableType = variable.getType();
|
|
232
234
|
|
|
233
235
|
termType = variableType; ///
|