occam-verify-cli 1.0.612 → 1.0.631
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/context/ephemeral.js +210 -77
- package/lib/context/file/nominal.js +157 -135
- package/lib/context/liminal.js +34 -59
- package/lib/context/scoped.js +37 -58
- package/lib/context.js +103 -53
- package/lib/element/assertion/contained.js +3 -1
- package/lib/element/assertion/defined.js +3 -1
- package/lib/element/assertion/property.js +10 -58
- package/lib/element/assertion/satisfies.js +3 -1
- package/lib/element/assertion/subproof.js +3 -1
- package/lib/element/assertion/type.js +63 -109
- package/lib/element/assertion.js +5 -9
- package/lib/element/assumption.js +50 -19
- package/lib/element/combinator.js +8 -1
- package/lib/element/conclusion.js +8 -1
- package/lib/element/constructor.js +8 -1
- package/lib/element/declaration.js +3 -7
- package/lib/element/deduction.js +8 -1
- package/lib/element/derivation.js +15 -10
- package/lib/element/equality.js +109 -62
- package/lib/element/equivalence.js +13 -6
- package/lib/element/equivalences.js +11 -4
- package/lib/element/error.js +10 -7
- package/lib/element/frame.js +21 -21
- package/lib/element/hypothesis.js +12 -7
- package/lib/element/judgement.js +55 -26
- package/lib/element/label.js +8 -1
- package/lib/element/metaType.js +9 -2
- package/lib/element/metavariable.js +16 -10
- package/lib/element/parameter.js +8 -1
- package/lib/element/procedureCall.js +21 -29
- package/lib/element/procedureReference.js +15 -1
- package/lib/element/proof.js +8 -1
- package/lib/element/proofAssertion.js +8 -1
- package/lib/element/property.js +8 -1
- package/lib/element/propertyRelation.js +8 -1
- package/lib/element/reference.js +16 -28
- package/lib/element/rule.js +22 -21
- package/lib/element/section.js +8 -1
- package/lib/element/signature.js +8 -1
- package/lib/element/statement.js +34 -40
- package/lib/element/subDerivation.js +11 -6
- package/lib/element/subproof.js +8 -1
- package/lib/element/substitution/frame.js +6 -6
- package/lib/element/substitution/reference.js +6 -6
- package/lib/element/substitution/statement.js +6 -6
- package/lib/element/substitution/term.js +9 -3
- package/lib/element/substitution.js +73 -49
- package/lib/element/term.js +15 -1
- package/lib/element/topLevelAssertion/axiom.js +8 -1
- package/lib/element/topLevelAssertion/conjecture.js +8 -1
- package/lib/element/topLevelAssertion/lemma.js +8 -1
- package/lib/element/topLevelAssertion/theorem.js +8 -1
- package/lib/element/topLevelAssertion.js +11 -17
- package/lib/element/topLevelMetaAssertion/metaLemma.js +8 -1
- package/lib/element/topLevelMetaAssertion/metatheorem.js +8 -1
- package/lib/element/topLevelMetaAssertion.js +9 -11
- package/lib/element/type.js +8 -1
- package/lib/element/typePrefix.js +8 -1
- package/lib/element/variable.js +51 -5
- package/lib/preamble.js +1 -2
- package/lib/process/assign.js +96 -27
- package/lib/process/unify.js +3 -4
- package/lib/process/validate.js +2 -2
- package/lib/process/verify.js +2 -2
- package/lib/utilities/element.js +74 -12
- package/lib/utilities/json.js +2 -2
- package/lib/utilities/string.js +9 -24
- package/lib/utilities/substitutions.js +15 -23
- package/package.json +2 -2
- package/src/context/ephemeral.js +234 -82
- package/src/context/file/nominal.js +195 -135
- package/src/context/liminal.js +43 -80
- package/src/context/scoped.js +56 -81
- package/src/context.js +97 -46
- package/src/element/assertion/contained.js +4 -0
- package/src/element/assertion/defined.js +4 -0
- package/src/element/assertion/property.js +15 -26
- package/src/element/assertion/satisfies.js +4 -0
- package/src/element/assertion/subproof.js +4 -0
- package/src/element/assertion/type.js +67 -77
- package/src/element/assertion.js +4 -8
- package/src/element/assumption.js +57 -18
- package/src/element/combinator.js +7 -0
- package/src/element/conclusion.js +7 -0
- package/src/element/constructor.js +7 -0
- package/src/element/declaration.js +1 -3
- package/src/element/deduction.js +7 -0
- package/src/element/derivation.js +10 -5
- package/src/element/equality.js +116 -74
- package/src/element/equivalence.js +15 -7
- package/src/element/equivalences.js +14 -5
- package/src/element/error.js +5 -2
- package/src/element/frame.js +25 -25
- package/src/element/hypothesis.js +11 -6
- package/src/element/judgement.js +62 -26
- package/src/element/label.js +7 -0
- package/src/element/metaType.js +8 -1
- package/src/element/metavariable.js +20 -14
- package/src/element/parameter.js +7 -0
- package/src/element/procedureCall.js +21 -14
- package/src/element/procedureReference.js +13 -0
- package/src/element/proof.js +7 -0
- package/src/element/proofAssertion.js +7 -0
- package/src/element/property.js +7 -0
- package/src/element/propertyRelation.js +7 -0
- package/src/element/reference.js +20 -33
- package/src/element/rule.js +16 -19
- package/src/element/section.js +7 -0
- package/src/element/signature.js +7 -0
- package/src/element/statement.js +36 -44
- package/src/element/subDerivation.js +10 -5
- package/src/element/subproof.js +7 -0
- package/src/element/substitution/frame.js +3 -3
- package/src/element/substitution/reference.js +3 -3
- package/src/element/substitution/statement.js +3 -3
- package/src/element/substitution/term.js +4 -2
- package/src/element/substitution.js +60 -40
- package/src/element/term.js +20 -2
- package/src/element/topLevelAssertion/axiom.js +7 -0
- package/src/element/topLevelAssertion/conjecture.js +7 -0
- package/src/element/topLevelAssertion/lemma.js +7 -0
- package/src/element/topLevelAssertion/theorem.js +7 -0
- package/src/element/topLevelAssertion.js +5 -15
- package/src/element/topLevelMetaAssertion/metaLemma.js +7 -0
- package/src/element/topLevelMetaAssertion/metatheorem.js +7 -0
- package/src/element/topLevelMetaAssertion.js +4 -6
- package/src/element/type.js +7 -0
- package/src/element/typePrefix.js +7 -0
- package/src/element/variable.js +9 -4
- package/src/preamble.js +0 -1
- package/src/process/assign.js +113 -38
- package/src/process/unify.js +2 -3
- package/src/process/validate.js +1 -1
- package/src/process/verify.js +1 -1
- package/src/utilities/element.js +83 -26
- package/src/utilities/json.js +1 -1
- package/src/utilities/string.js +7 -29
- package/src/utilities/substitutions.js +19 -30
- package/lib/element/substitutions.js +0 -225
- package/src/element/substitutions.js +0 -84
|
@@ -47,7 +47,7 @@ export default define(class ReferenceSubstitution extends Substitution {
|
|
|
47
47
|
|
|
48
48
|
getMetavariableName() { return this.targetReference.getMetavariableName(); }
|
|
49
49
|
|
|
50
|
-
|
|
50
|
+
compareMetavariableName(metavariableName) { return this.targetReference.compareMetavariableName(metavariableName); }
|
|
51
51
|
|
|
52
52
|
isTrivial() {
|
|
53
53
|
const targetReferenceEqualToReplacementReference = this.targetReference.isEqualTo(this.replacementReference),
|
|
@@ -99,9 +99,9 @@ export default define(class ReferenceSubstitution extends Substitution {
|
|
|
99
99
|
}
|
|
100
100
|
|
|
101
101
|
if (validates) {
|
|
102
|
-
const
|
|
102
|
+
const subsitution = this; ///
|
|
103
103
|
|
|
104
|
-
context.addSubstitution(
|
|
104
|
+
context.addSubstitution(subsitution);
|
|
105
105
|
|
|
106
106
|
context.debug(`...validated the '${referenceSubstitutionString}' reference substitution.`);
|
|
107
107
|
}
|
|
@@ -68,7 +68,7 @@ export default define(class StatementSubstitution extends Substitution {
|
|
|
68
68
|
|
|
69
69
|
getMetavariableName() { return this.targetStatement.getMetavariableName(); }
|
|
70
70
|
|
|
71
|
-
|
|
71
|
+
compareMetavariableName(metavariableName) { return this.targetStatement.compareMetavariableName(metavariableName); }
|
|
72
72
|
|
|
73
73
|
compareStatement(statement, context) {
|
|
74
74
|
statement = stripBracketsFromStatement(statement, context); ///
|
|
@@ -135,9 +135,9 @@ export default define(class StatementSubstitution extends Substitution {
|
|
|
135
135
|
}
|
|
136
136
|
|
|
137
137
|
if (validates) {
|
|
138
|
-
const
|
|
138
|
+
const substitution = this; ///
|
|
139
139
|
|
|
140
|
-
context.addSubstitution(
|
|
140
|
+
context.addSubstitution(substitution);
|
|
141
141
|
|
|
142
142
|
context.debug(`...validated the '${statementSubstitutionString}' statement substitution.`);
|
|
143
143
|
}
|
|
@@ -48,6 +48,8 @@ export default define(class TermSubstitution extends Substitution {
|
|
|
48
48
|
|
|
49
49
|
getVariableIdentifier() { return this.targetTerm.getVariableIdentifier(); }
|
|
50
50
|
|
|
51
|
+
compareVariableIdentifier(variableIdentifier) { return this.targetTerm.compareVariableIdentifier(variableIdentifier); }
|
|
52
|
+
|
|
51
53
|
isTrivial() {
|
|
52
54
|
const targetTermEqualToReplacementTerm = this.targetTerm.isEqualTo(this.replacementTerm),
|
|
53
55
|
trivial = targetTermEqualToReplacementTerm; ///
|
|
@@ -100,9 +102,9 @@ export default define(class TermSubstitution extends Substitution {
|
|
|
100
102
|
}
|
|
101
103
|
|
|
102
104
|
if (validates) {
|
|
103
|
-
const
|
|
105
|
+
const substitution = this; ///
|
|
104
106
|
|
|
105
|
-
context.addSubstitution(
|
|
107
|
+
context.addSubstitution(substitution);
|
|
106
108
|
|
|
107
109
|
context.debug(`...validated the '${termSubstitutionString}' term substitution.`);
|
|
108
110
|
}
|
|
@@ -6,16 +6,6 @@ import { primitiveUtilities } from "occam-furtle";
|
|
|
6
6
|
const { primitiveFromNode } =primitiveUtilities;
|
|
7
7
|
|
|
8
8
|
export default class Substitution extends Element {
|
|
9
|
-
constructor(context, string, node) {
|
|
10
|
-
super(context, string, node);
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
getSubstitution() {
|
|
14
|
-
const substitution = null;
|
|
15
|
-
|
|
16
|
-
return substitution;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
9
|
getPrimitive() {
|
|
20
10
|
const context = this.getContext(),
|
|
21
11
|
replacementNode = this.getReplacementNode(),
|
|
@@ -32,18 +22,6 @@ export default class Substitution extends Element {
|
|
|
32
22
|
return substitutionNode;
|
|
33
23
|
}
|
|
34
24
|
|
|
35
|
-
getNetavariableName() {
|
|
36
|
-
const metavariableName = null;
|
|
37
|
-
|
|
38
|
-
return metavariableName;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
getVariableIdentifier() {
|
|
42
|
-
const variableIdentifier = null;
|
|
43
|
-
|
|
44
|
-
return variableIdentifier;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
25
|
matchSubstitutionNode(substitutionNode) {
|
|
48
26
|
const substitutionNodeA = substitutionNode; ///
|
|
49
27
|
|
|
@@ -72,12 +50,6 @@ export default class Substitution extends Element {
|
|
|
72
50
|
return equalTo;
|
|
73
51
|
}
|
|
74
52
|
|
|
75
|
-
isSimple() {
|
|
76
|
-
const simple = true;
|
|
77
|
-
|
|
78
|
-
return simple;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
53
|
isComplex() {
|
|
82
54
|
const simple = this.isSimple(),
|
|
83
55
|
complex = !simple;
|
|
@@ -85,12 +57,6 @@ export default class Substitution extends Element {
|
|
|
85
57
|
return complex;
|
|
86
58
|
}
|
|
87
59
|
|
|
88
|
-
isTrivial() {
|
|
89
|
-
const trivial = false;
|
|
90
|
-
|
|
91
|
-
return trivial;
|
|
92
|
-
}
|
|
93
|
-
|
|
94
60
|
isNonTrivial() {
|
|
95
61
|
const trivial = this.isTrivial(),
|
|
96
62
|
nonTrivlal = !trivial;
|
|
@@ -98,22 +64,64 @@ export default class Substitution extends Element {
|
|
|
98
64
|
return nonTrivlal;
|
|
99
65
|
}
|
|
100
66
|
|
|
67
|
+
getVariable() {
|
|
68
|
+
const variable = null;
|
|
69
|
+
|
|
70
|
+
return variable;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
getSubstitution() {
|
|
74
|
+
const substitution = null;
|
|
75
|
+
|
|
76
|
+
return substitution;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
getMetavariable() {
|
|
80
|
+
const metavariable = null;
|
|
81
|
+
|
|
82
|
+
return metavariable;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
getMetavariableName() {
|
|
86
|
+
const metavariableName = null;
|
|
87
|
+
|
|
88
|
+
return metavariableName;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
getVariableIdentifier() {
|
|
92
|
+
const variableIdentifier = null;
|
|
93
|
+
|
|
94
|
+
return variableIdentifier;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
isSimple() {
|
|
98
|
+
const simple = true;
|
|
99
|
+
|
|
100
|
+
return simple;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
isTermEqualToTerm(term) {
|
|
104
|
+
const termEqualToTerm = false;
|
|
105
|
+
|
|
106
|
+
return termEqualToTerm;
|
|
107
|
+
}
|
|
108
|
+
|
|
101
109
|
isFrameEqualToFrame(frame) {
|
|
102
110
|
const frameEqualToFrame = false;
|
|
103
111
|
|
|
104
112
|
return frameEqualToFrame;
|
|
105
113
|
}
|
|
106
114
|
|
|
107
|
-
|
|
108
|
-
const
|
|
115
|
+
isStatementEqualToStatement(statement) {
|
|
116
|
+
const statementEqualToStatement = false;
|
|
109
117
|
|
|
110
|
-
return
|
|
118
|
+
return statementEqualToStatement;
|
|
111
119
|
}
|
|
112
120
|
|
|
113
|
-
|
|
114
|
-
const
|
|
121
|
+
isReferenceEqualToReference(reference) {
|
|
122
|
+
const referenceEqualToReference = false;
|
|
115
123
|
|
|
116
|
-
return
|
|
124
|
+
return referenceEqualToReference;
|
|
117
125
|
}
|
|
118
126
|
|
|
119
127
|
compareTerm(term, context) {
|
|
@@ -140,6 +148,18 @@ export default class Substitution extends Element {
|
|
|
140
148
|
return compaaresToMetavariable;
|
|
141
149
|
}
|
|
142
150
|
|
|
151
|
+
compareMetavariableName(metavariableName) {
|
|
152
|
+
const comparesToMetavariableName = false;
|
|
153
|
+
|
|
154
|
+
return comparesToMetavariableName;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
compareVariableIdentifier(variableIdentifier) {
|
|
158
|
+
const comparesToVariableIdentifier = false;
|
|
159
|
+
|
|
160
|
+
return comparesToVariableIdentifier;
|
|
161
|
+
}
|
|
162
|
+
|
|
143
163
|
resolve(substitutions, generalContext, specificContext) {
|
|
144
164
|
const resolved = true;
|
|
145
165
|
|
package/src/element/term.js
CHANGED
|
@@ -44,12 +44,30 @@ export default define(class Term extends Element {
|
|
|
44
44
|
termNode = this.getTermNode();
|
|
45
45
|
|
|
46
46
|
const termNodeB = termNode, ///
|
|
47
|
-
|
|
48
|
-
|
|
47
|
+
termNodeAAMatchesTermBNodeB = termNodeA.match(termNodeB),
|
|
48
|
+
equalTo = termNodeAAMatchesTermBNodeB; ///
|
|
49
49
|
|
|
50
50
|
return equalTo;
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
+
compareVariableIdentifier(variableIdentifier) {
|
|
54
|
+
let comparesToVariableIdentifier = false;
|
|
55
|
+
|
|
56
|
+
const singular = this.isSingular();
|
|
57
|
+
|
|
58
|
+
if (singular) {
|
|
59
|
+
const variableIdentifierA = variableIdentifier; ///
|
|
60
|
+
|
|
61
|
+
variableIdentifier = this.getVariableIdentifier();
|
|
62
|
+
|
|
63
|
+
const variableIdentifierB = variableIdentifier;
|
|
64
|
+
|
|
65
|
+
comparesToVariableIdentifier = (variableIdentifierA === variableIdentifierB);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
return comparesToVariableIdentifier;
|
|
69
|
+
}
|
|
70
|
+
|
|
53
71
|
isValid(context) {
|
|
54
72
|
const termNode = this.getTermNode(),
|
|
55
73
|
termPresent = context.isTermPresentByTermNode(termNode),
|
|
@@ -5,6 +5,13 @@ import TopLevelAssertion from "../../node/topLevelAssertion";
|
|
|
5
5
|
import { define } from "../../elements";
|
|
6
6
|
|
|
7
7
|
export default define(class Axiom extends TopLevelAssertion {
|
|
8
|
+
getAxiomNode() {
|
|
9
|
+
const node = this.getNode(),
|
|
10
|
+
axiomNode = node; ///
|
|
11
|
+
|
|
12
|
+
return axiomNode;
|
|
13
|
+
}
|
|
14
|
+
|
|
8
15
|
isSatisfiable() {
|
|
9
16
|
const signature = this.getSignature(),
|
|
10
17
|
satisfiable = (signature !== null);
|
|
@@ -5,6 +5,13 @@ import TopLevelAssertion from "../topLevelAssertion";
|
|
|
5
5
|
import { define } from "../../elements";
|
|
6
6
|
|
|
7
7
|
export default define(class Conjecture extends TopLevelAssertion {
|
|
8
|
+
getConjectureNode() {
|
|
9
|
+
const node = this.getNode(),
|
|
10
|
+
conjectureNode = node; ///
|
|
11
|
+
|
|
12
|
+
return conjectureNode;
|
|
13
|
+
}
|
|
14
|
+
|
|
8
15
|
async verify() {
|
|
9
16
|
let verifies;
|
|
10
17
|
|
|
@@ -5,6 +5,13 @@ import TopLevelAssertion from "../topLevelAssertion";
|
|
|
5
5
|
import { define } from "../../elements";
|
|
6
6
|
|
|
7
7
|
export default define(class Lemma extends TopLevelAssertion {
|
|
8
|
+
getLemmaNode() {
|
|
9
|
+
const node = this.getNode(),
|
|
10
|
+
lemmaNode = node; ///
|
|
11
|
+
|
|
12
|
+
return lemmaNode;
|
|
13
|
+
}
|
|
14
|
+
|
|
8
15
|
async verify() {
|
|
9
16
|
let verifies;
|
|
10
17
|
|
|
@@ -5,6 +5,13 @@ import TopLevelAssertion from "../topLevelAssertion";
|
|
|
5
5
|
import { define } from "../../elements";
|
|
6
6
|
|
|
7
7
|
export default define(class Theorem extends TopLevelAssertion {
|
|
8
|
+
getThoeremNode() {
|
|
9
|
+
const node = this.getNode(),
|
|
10
|
+
theoremNode = node; ///
|
|
11
|
+
|
|
12
|
+
return theoremNode;
|
|
13
|
+
}
|
|
14
|
+
|
|
8
15
|
async verify() {
|
|
9
16
|
let verifies;
|
|
10
17
|
|
|
@@ -255,15 +255,13 @@ export default class TopLevelAssertion extends Element {
|
|
|
255
255
|
suppositionVerifies = await supposition.verify(assignments, context)
|
|
256
256
|
|
|
257
257
|
if (suppositionVerifies) {
|
|
258
|
-
|
|
258
|
+
assignAssignments(assignments, context);
|
|
259
259
|
|
|
260
|
-
|
|
261
|
-
const subproofOrProofAssertion = supposition; ////
|
|
260
|
+
const subproofOrProofAssertion = supposition; ////
|
|
262
261
|
|
|
263
|
-
|
|
262
|
+
context.addSubproofOrProofAssertion(subproofOrProofAssertion);
|
|
264
263
|
|
|
265
|
-
|
|
266
|
-
}
|
|
264
|
+
return true;
|
|
267
265
|
}
|
|
268
266
|
});
|
|
269
267
|
|
|
@@ -286,15 +284,7 @@ export default class TopLevelAssertion extends Element {
|
|
|
286
284
|
const subproofOrProofAssertionsUnifiesWithSuppositions = await this.unifySubproofOrProofAssertionsWithSuppositions(subproofOrProofAssertions, context);
|
|
287
285
|
|
|
288
286
|
if (subproofOrProofAssertionsUnifiesWithSuppositions) {
|
|
289
|
-
const
|
|
290
|
-
|
|
291
|
-
context = this.getContext();
|
|
292
|
-
|
|
293
|
-
const generalContext = context; ///
|
|
294
|
-
|
|
295
|
-
context = specificContext; ///
|
|
296
|
-
|
|
297
|
-
const substitutionsResolved = context.areSubstitutionsResolved(generalContext, specificContext);
|
|
287
|
+
const substitutionsResolved = context.areSubstitutionsResolved();
|
|
298
288
|
|
|
299
289
|
if (substitutionsResolved) {
|
|
300
290
|
statementAndSubproofOrProofAssertionsUnify = true;
|
|
@@ -5,6 +5,13 @@ import TopLevelMetaAssertion from "./../topLevelMetaAssertion";
|
|
|
5
5
|
import { define } from "../../elements";
|
|
6
6
|
|
|
7
7
|
export default define(class MetaLemma extends TopLevelMetaAssertion {
|
|
8
|
+
getMetaLemmaNode() {
|
|
9
|
+
const node = this.getNode(),
|
|
10
|
+
metaLemmaNode = node; ///
|
|
11
|
+
|
|
12
|
+
return metaLemmaNode;
|
|
13
|
+
}
|
|
14
|
+
|
|
8
15
|
async verify() {
|
|
9
16
|
let verifies;
|
|
10
17
|
|
|
@@ -5,6 +5,13 @@ import TopLevelMetaAssertion from "../topLevelMetaAssertion";
|
|
|
5
5
|
import { define } from "../../elements";
|
|
6
6
|
|
|
7
7
|
export default define(class Metatheorem extends TopLevelMetaAssertion {
|
|
8
|
+
getMetatheoremNode() {
|
|
9
|
+
const node = this.getNode(),
|
|
10
|
+
metatheoremNode = node; ///
|
|
11
|
+
|
|
12
|
+
return metatheoremNode;
|
|
13
|
+
}
|
|
14
|
+
|
|
8
15
|
async verify() {
|
|
9
16
|
let verifies;
|
|
10
17
|
|
|
@@ -159,15 +159,13 @@ export default class TopLevelMetaAssertion extends Element {
|
|
|
159
159
|
suppositionVerifies = await supposition.verify(assignments, context)
|
|
160
160
|
|
|
161
161
|
if (suppositionVerifies) {
|
|
162
|
-
|
|
162
|
+
assignAssignments(assignments, context);
|
|
163
163
|
|
|
164
|
-
|
|
165
|
-
const subproofOrProofAssertion = supposition; ////
|
|
164
|
+
const subproofOrProofAssertion = supposition; ////
|
|
166
165
|
|
|
167
|
-
|
|
166
|
+
context.addSubproofOrProofAssertion(subproofOrProofAssertion);
|
|
168
167
|
|
|
169
|
-
|
|
170
|
-
}
|
|
168
|
+
return true;
|
|
171
169
|
}
|
|
172
170
|
});
|
|
173
171
|
|
package/src/element/type.js
CHANGED
|
@@ -32,6 +32,13 @@ export default define(class Type extends Element {
|
|
|
32
32
|
return this.superTypes;
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
+
getTypeNode() {
|
|
36
|
+
const node = this.getNode(),
|
|
37
|
+
typeNode = node; ///
|
|
38
|
+
|
|
39
|
+
return typeNode;
|
|
40
|
+
}
|
|
41
|
+
|
|
35
42
|
getProperties(includeSuperTypes = true) {
|
|
36
43
|
const properties = [];
|
|
37
44
|
|
|
@@ -15,6 +15,13 @@ export default define(class TypePrefix extends Element {
|
|
|
15
15
|
return this.name;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
+
getTypePrefixNode() {
|
|
19
|
+
const node = this.getNode(),
|
|
20
|
+
typePrefixNode = node; ///
|
|
21
|
+
|
|
22
|
+
return typePrefixNode;
|
|
23
|
+
}
|
|
24
|
+
|
|
18
25
|
compareTypePrefixName(typePrefixName) {
|
|
19
26
|
const comparesToTypePrefixName = (this.name === typePrefixName);
|
|
20
27
|
|
package/src/element/variable.js
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
import { Element } from "occam-languages";
|
|
4
4
|
|
|
5
|
+
import elements from "../elements";
|
|
6
|
+
|
|
5
7
|
import { define } from "../elements";
|
|
6
8
|
import { typeToTypeJSON } from "../utilities/json";
|
|
7
9
|
|
|
@@ -30,6 +32,13 @@ export default define(class Variable extends Element {
|
|
|
30
32
|
this.type = type;
|
|
31
33
|
}
|
|
32
34
|
|
|
35
|
+
getVariableNode() {
|
|
36
|
+
const node = this.getNode(),
|
|
37
|
+
variableNode = node; //
|
|
38
|
+
|
|
39
|
+
return variableNode;
|
|
40
|
+
}
|
|
41
|
+
|
|
33
42
|
getTypeString() { return this.type.getString(); }
|
|
34
43
|
|
|
35
44
|
isIdentifierEqualTo(identifier) {
|
|
@@ -162,10 +171,6 @@ export default define(class Variable extends Element {
|
|
|
162
171
|
termSubstitutionValidates = termSubstitution.validate(generalContext, specificContext);
|
|
163
172
|
|
|
164
173
|
if (termSubstitutionValidates) {
|
|
165
|
-
substitution = termSubstitution; ///
|
|
166
|
-
|
|
167
|
-
context.addSubstitution(substitution);
|
|
168
|
-
|
|
169
174
|
termUnifies = true;
|
|
170
175
|
}
|
|
171
176
|
}
|
package/src/preamble.js
CHANGED
|
@@ -38,7 +38,6 @@ import Metatheorem from "./element/topLevelMetaAssertion/metatheorem";
|
|
|
38
38
|
import Equivalence from "./element/equivalence";
|
|
39
39
|
import Equivalences from "./element/equivalences";
|
|
40
40
|
import Metavariable from "./element/metavariable";
|
|
41
|
-
import Substitutions from "./element/substitutions";
|
|
42
41
|
import ProcedureCall from "./element/procedureCall";
|
|
43
42
|
import SubDerivation from "./element/subDerivation";
|
|
44
43
|
import TypeAssertion from "./element/assertion/type";
|
package/src/process/assign.js
CHANGED
|
@@ -1,59 +1,134 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
return function (context) {
|
|
5
|
-
const nested = false;
|
|
3
|
+
import { variableFromVariableNode } from "../utilities/element";
|
|
6
4
|
|
|
7
|
-
|
|
5
|
+
export function equalityAssignmentFromEquality(equality, context) {
|
|
6
|
+
const equalityAssignment = (context) => {
|
|
7
|
+
const equalityAdded = context.addEquality(equality);
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
assigned = true;
|
|
9
|
+
return equalityAdded;
|
|
10
|
+
};
|
|
12
11
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
context.debug(`Unable to assign the '${variableString}' variable with type '${variableTypeString}'.`);
|
|
12
|
+
return equalityAssignment;
|
|
13
|
+
}
|
|
16
14
|
|
|
17
|
-
|
|
15
|
+
export function judgementAssignmentFromJudgement(judgement, context) {
|
|
16
|
+
const judgementAssignment = (context) => {
|
|
17
|
+
const judgementAdded = context.addJudgement(judgement);
|
|
18
|
+
|
|
19
|
+
return judgementAdded;
|
|
18
20
|
};
|
|
21
|
+
|
|
22
|
+
return judgementAssignment;
|
|
19
23
|
}
|
|
20
24
|
|
|
21
|
-
export function
|
|
22
|
-
|
|
23
|
-
const equalityString = equality.getString(),
|
|
24
|
-
equalityAdded = context.addEquality(equality),
|
|
25
|
-
assigned = equalityAdded; ///
|
|
25
|
+
export function leftVariableAssignmentFromEquality(equality, context) {
|
|
26
|
+
let leftVariableAssignment = null;
|
|
26
27
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
context.debug(`Unable to assign the '${equalityString}' equality.`);
|
|
28
|
+
const leftTermNode = equality.getLeftTermNode(),
|
|
29
|
+
singularVariableNode = leftTermNode.getSingularVariableNode();
|
|
30
30
|
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
if (singularVariableNode !== null) {
|
|
32
|
+
const type = equality.getType(),
|
|
33
|
+
leftVariableNode = singularVariableNode; ///
|
|
34
|
+
|
|
35
|
+
leftVariableAssignment = variableAssignmentFromVariableNodeAndType(leftVariableNode, type, context);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
return leftVariableAssignment;
|
|
33
39
|
}
|
|
34
40
|
|
|
35
|
-
export function
|
|
36
|
-
|
|
37
|
-
const judgementString = judgement.getString(),
|
|
38
|
-
judgementAdded = context.addJudgement(judgement),
|
|
39
|
-
assigned = judgementAdded; ///
|
|
41
|
+
export function rightVariableAssignmentFromEquality(equality, context) {
|
|
42
|
+
let rightVariableAssignment = null;
|
|
40
43
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
context.debug(`Unable to assign the '${judgementString}' judgement.`);
|
|
44
|
+
const rightTermNode = equality.getRightTermNode(),
|
|
45
|
+
singularVariableNode = rightTermNode.getSingularVariableNode();
|
|
44
46
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
+
if (singularVariableNode !== null) {
|
|
48
|
+
const type = equality.getType(),
|
|
49
|
+
rightVariableNode = singularVariableNode; ///
|
|
50
|
+
|
|
51
|
+
rightVariableAssignment = variableAssignmentFromVariableNodeAndType(rightVariableNode, type, context);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
return rightVariableAssignment;
|
|
47
55
|
}
|
|
48
56
|
|
|
49
|
-
export
|
|
50
|
-
|
|
51
|
-
|
|
57
|
+
export function variableAssignmentFromTypeAssertion(typeAssertion, context) {
|
|
58
|
+
|
|
59
|
+
debugger
|
|
52
60
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
61
|
+
// const { Type, Variable } = elements,
|
|
62
|
+
// termNode = this.term.getNode();
|
|
63
|
+
//
|
|
64
|
+
// let type,
|
|
65
|
+
// provisional;
|
|
66
|
+
//
|
|
67
|
+
// provisional = this.type.isProvisional();
|
|
68
|
+
//
|
|
69
|
+
// if (!provisional) {
|
|
70
|
+
// type = this.type;
|
|
71
|
+
// } else {
|
|
72
|
+
// provisional = false;
|
|
73
|
+
//
|
|
74
|
+
// type = Type.fromTypeAndProvisional(this.type, provisional);
|
|
75
|
+
// }
|
|
76
|
+
//
|
|
77
|
+
// const singularVariableNode = termNode.getSingularVariableNode();
|
|
78
|
+
//
|
|
79
|
+
// if (singularVariableNode !== null) {
|
|
80
|
+
// const variableNode = singularVariableNode, ///
|
|
81
|
+
// variable = Variable.fromVariableNodeAndType(variableNode, type, context),
|
|
82
|
+
// variableAssignment = variableAssignmentFromVariable(variable),
|
|
83
|
+
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
export function variableAssignmentFromPrepertyAssertion(propertyAssertion, context) {
|
|
87
|
+
|
|
88
|
+
debugger
|
|
89
|
+
|
|
90
|
+
// let variable;
|
|
91
|
+
//
|
|
92
|
+
// const { Variable } = elements,
|
|
93
|
+
// termNode = this.term.getNode();
|
|
94
|
+
//
|
|
95
|
+
// variable = Variable.fromTermNode(termNode, context);
|
|
96
|
+
//
|
|
97
|
+
// if (variable !== null) {
|
|
98
|
+
// const variableIdentifier = variable.getIdentifier();
|
|
99
|
+
//
|
|
100
|
+
// variable = context.findVariableByVariableIdentifier(variableIdentifier);
|
|
101
|
+
//
|
|
102
|
+
// variable = Variable.fromVariableAndPropertyRelation(variable, this.propertyRelation);
|
|
103
|
+
//
|
|
104
|
+
// const variableAssignment = variableAssignmentFromVariable(variable),
|
|
105
|
+
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
export default function assignAssignments(assignments, context) {
|
|
109
|
+
assignments.forEach((assignment) => {
|
|
110
|
+
assignment(context);
|
|
56
111
|
});
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
function variableAssignmentFromVariableNodeAndType(variableNode, type, context) {
|
|
115
|
+
const variable = variableFromVariableNode(variableNode, context);
|
|
116
|
+
|
|
117
|
+
variable.setType(type);
|
|
118
|
+
|
|
119
|
+
const variableAssignment = (context) => {
|
|
120
|
+
context.addVariable(variable);
|
|
121
|
+
|
|
122
|
+
const variableTypeString = variable.getTypeString(),
|
|
123
|
+
variableString = variable.getString(),
|
|
124
|
+
assigned = true;
|
|
125
|
+
|
|
126
|
+
assigned ?
|
|
127
|
+
context.trace(`Assigned the '${variableString}' variable with type '${variableTypeString}'.`) :
|
|
128
|
+
context.debug(`Unable to assign the '${variableString}' variable with type '${variableTypeString}'.`);
|
|
129
|
+
|
|
130
|
+
return assigned;
|
|
131
|
+
};
|
|
57
132
|
|
|
58
|
-
return
|
|
133
|
+
return variableAssignment;
|
|
59
134
|
}
|
package/src/process/unify.js
CHANGED
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
import { ZipPass, queryUtilities } from "occam-languages";
|
|
4
4
|
|
|
5
|
-
import { findMetaTypeByMetaTypeName } from "../metaTypes";
|
|
6
5
|
import { termFromTermNode, frameFromFrameNode, statementFromStatementNode } from "../utilities/element";
|
|
7
6
|
|
|
8
7
|
const { nodeQuery } = queryUtilities;
|
|
@@ -161,7 +160,7 @@ class CombinatorPass extends ZipPass {
|
|
|
161
160
|
context = generalContext; ///
|
|
162
161
|
|
|
163
162
|
const metaTypeName = metaTypeNode.getMetaTypeName(),
|
|
164
|
-
metaType = findMetaTypeByMetaTypeName(metaTypeName);
|
|
163
|
+
metaType = context.findMetaTypeByMetaTypeName(metaTypeName);
|
|
165
164
|
|
|
166
165
|
context = specificContext; ///
|
|
167
166
|
|
|
@@ -189,7 +188,7 @@ class CombinatorPass extends ZipPass {
|
|
|
189
188
|
context = generalContext; ///
|
|
190
189
|
|
|
191
190
|
const metaTypeName = metaTypeNode.getMetaTypeName(),
|
|
192
|
-
metaType = findMetaTypeByMetaTypeName(metaTypeName);
|
|
191
|
+
metaType = context.findMetaTypeByMetaTypeName(metaTypeName);
|
|
193
192
|
|
|
194
193
|
context = specificContext; ///
|
|
195
194
|
|
package/src/process/validate.js
CHANGED
|
@@ -92,8 +92,8 @@ class StatementPass extends ForwardPass {
|
|
|
92
92
|
let success = false;
|
|
93
93
|
|
|
94
94
|
const statement = statementFromStatementNode(statementNode, context),
|
|
95
|
-
assignments = null,
|
|
96
95
|
stated = false,
|
|
96
|
+
assignments = null,
|
|
97
97
|
statementValidates = statement.validate(assignments, stated, context);
|
|
98
98
|
|
|
99
99
|
if (statementValidates) {
|