occam-verify-cli 1.0.437 → 1.0.444
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/file.js +38 -35
- package/lib/context/local.js +10 -10
- package/lib/context/release.js +6 -6
- package/lib/context/temporary.js +14 -14
- package/lib/element/assertion/contained.js +45 -45
- package/lib/element/assertion/defined.js +13 -13
- package/lib/element/assertion/property.js +23 -22
- package/lib/element/assertion/satisfies.js +7 -6
- package/lib/element/assertion/subproof.js +20 -17
- package/lib/element/assertion/type.js +3 -2
- package/lib/element/assertion.js +1 -23
- package/lib/element/assumption.js +24 -22
- package/lib/element/axiom.js +9 -12
- package/lib/element/axiomLemmaTheoremConjecture.js +32 -32
- package/lib/element/{statement/combinator → combinator}/bracketed.js +16 -16
- package/lib/element/combinator.js +229 -0
- package/lib/element/conclusion.js +11 -9
- package/lib/element/{term/constructor → constructor}/bracketed.js +5 -5
- package/lib/element/constructor.js +232 -0
- package/lib/element/declaration/combinator.js +2 -16
- package/lib/element/declaration/complexType.js +12 -12
- package/lib/element/declaration/constructor.js +13 -11
- package/lib/element/declaration/simpleType.js +4 -4
- package/lib/element/declaration/typePrefix.js +2 -2
- package/lib/element/declaration/variable.js +3 -3
- package/lib/element/deduction.js +11 -9
- package/lib/element/derivation.js +5 -8
- package/lib/element/equivalence.js +10 -10
- package/lib/element/equivalences.js +5 -5
- package/lib/element/frame.js +32 -38
- package/lib/element/hypothesis.js +3 -3
- package/lib/element/judgement.js +6 -4
- package/lib/element/label.js +16 -18
- package/lib/element/metaLemmaMetatheorem.js +5 -5
- package/lib/element/metaType.js +17 -80
- package/lib/element/metavariable.js +34 -34
- package/lib/element/parameter.js +3 -3
- package/lib/element/premise.js +43 -52
- package/lib/element/property.js +9 -9
- package/lib/element/propertyRelation.js +13 -13
- package/lib/element/reference.js +14 -17
- package/lib/element/rule.js +26 -50
- package/lib/element/signature.js +11 -11
- package/lib/element/statement.js +54 -56
- package/lib/element/step.js +79 -51
- package/lib/element/subDerivation.js +7 -10
- package/lib/element/subproof.js +6 -14
- package/lib/element/substitution/frame.js +1 -7
- package/lib/element/substitution/reference.js +2 -3
- package/lib/element/substitution/statement.js +44 -15
- package/lib/element/substitution/term.js +10 -57
- package/lib/element/substitution.js +5 -11
- package/lib/element/substitutions.js +29 -29
- package/lib/element/supposition.js +63 -55
- package/lib/element/term.js +21 -34
- package/lib/element/type.js +47 -60
- package/lib/element/typePrefix.js +5 -5
- package/lib/element/variable.js +9 -9
- package/lib/element.js +27 -3
- package/lib/metaTypes.js +52 -0
- package/lib/node/axiomLemmaTheoremConjecture.js +9 -9
- package/lib/node/body/axiom.js +2 -25
- package/lib/node/body/conjecture.js +2 -25
- package/lib/node/body/lemma.js +2 -25
- package/lib/node/body/metaLemma.js +2 -25
- package/lib/node/body/metatheorem.js +2 -25
- package/lib/node/body/rule.js +15 -1
- package/lib/node/body/theorem.js +2 -25
- package/lib/node/body.js +25 -2
- package/lib/node/combinator.js +11 -2
- package/lib/node/constructor.js +11 -2
- package/lib/node/declaration/combinator.js +5 -5
- package/lib/node/declaration/constructor.js +8 -8
- package/lib/node/declaration/property.js +15 -15
- package/lib/node/declaration/simpleType.js +31 -31
- package/lib/node/declaration/variable.js +8 -8
- package/lib/node/equality.js +8 -8
- package/lib/node/frame.js +20 -20
- package/lib/node/header.js +22 -22
- package/lib/node/metaLemmaMetaTheorem.js +16 -16
- package/lib/node/metavariable.js +15 -15
- package/lib/node/property.js +8 -8
- package/lib/node/propertyRelation.js +8 -8
- package/lib/node/rule.js +16 -16
- package/lib/node/statement.js +12 -12
- package/lib/node/step.js +22 -22
- package/lib/node/subproof.js +8 -8
- package/lib/node/substitution/frame.js +19 -19
- package/lib/node/substitution/statement.js +19 -19
- package/lib/node/substitution/term.js +19 -19
- package/lib/node/term.js +35 -35
- package/lib/preamble.js +5 -5
- package/lib/process/instantiate.js +20 -2
- package/lib/process/unify.js +39 -42
- package/lib/process/validate.js +431 -0
- package/lib/process/verify.js +44 -135
- package/lib/types.js +27 -0
- package/lib/utilities/brackets.js +4 -4
- package/lib/utilities/element.js +100 -61
- package/lib/utilities/instance.js +18 -18
- package/lib/utilities/statement.js +11 -16
- package/lib/utilities/string.js +21 -10
- package/lib/utilities/unification.js +237 -0
- package/lib/utilities/validation.js +251 -0
- package/package.json +6 -6
- package/src/context/file.js +37 -31
- package/src/context/local.js +8 -8
- package/src/context/release.js +9 -6
- package/src/context/temporary.js +11 -11
- package/src/element/assertion/contained.js +19 -20
- package/src/element/assertion/defined.js +11 -12
- package/src/element/assertion/property.js +20 -20
- package/src/element/assertion/satisfies.js +6 -6
- package/src/element/assertion/subproof.js +17 -15
- package/src/element/assertion/type.js +2 -2
- package/src/element/assertion.js +0 -2
- package/src/element/assumption.js +22 -19
- package/src/element/axiom.js +7 -11
- package/src/element/axiomLemmaTheoremConjecture.js +36 -36
- package/src/element/{statement/combinator → combinator}/bracketed.js +7 -7
- package/src/element/combinator.js +90 -0
- package/src/element/conclusion.js +12 -10
- package/src/element/{term/constructor → constructor}/bracketed.js +5 -5
- package/src/element/{term/constructor.js → constructor.js} +17 -25
- package/src/element/declaration/combinator.js +1 -22
- package/src/element/declaration/complexType.js +11 -11
- package/src/element/declaration/constructor.js +13 -10
- package/src/element/declaration/simpleType.js +3 -3
- package/src/element/declaration/typePrefix.js +1 -1
- package/src/element/declaration/variable.js +2 -2
- package/src/element/deduction.js +12 -9
- package/src/element/derivation.js +4 -8
- package/src/element/equivalence.js +8 -8
- package/src/element/equivalences.js +4 -4
- package/src/element/frame.js +28 -30
- package/src/element/hypothesis.js +2 -2
- package/src/element/judgement.js +6 -3
- package/src/element/label.js +14 -21
- package/src/element/metaLemmaMetatheorem.js +4 -3
- package/src/element/metaType.js +9 -45
- package/src/element/metavariable.js +29 -31
- package/src/element/parameter.js +2 -2
- package/src/element/premise.js +56 -62
- package/src/element/property.js +6 -6
- package/src/element/propertyRelation.js +11 -11
- package/src/element/reference.js +12 -21
- package/src/element/rule.js +28 -72
- package/src/element/signature.js +10 -9
- package/src/element/statement.js +69 -56
- package/src/element/step.js +89 -51
- package/src/element/subDerivation.js +6 -10
- package/src/element/subproof.js +4 -12
- package/src/element/substitution/frame.js +0 -2
- package/src/element/substitution/reference.js +1 -5
- package/src/element/substitution/statement.js +44 -14
- package/src/element/substitution/term.js +10 -13
- package/src/element/substitution.js +3 -5
- package/src/element/substitutions.js +48 -30
- package/src/element/supposition.js +88 -70
- package/src/element/term.js +18 -28
- package/src/element/type.js +42 -36
- package/src/element/typePrefix.js +3 -3
- package/src/element/variable.js +7 -7
- package/src/element.js +15 -1
- package/src/metaTypes.js +42 -0
- package/src/node/axiomLemmaTheoremConjecture.js +6 -6
- package/src/node/body/axiom.js +0 -21
- package/src/node/body/conjecture.js +0 -23
- package/src/node/body/lemma.js +0 -23
- package/src/node/body/metaLemma.js +0 -23
- package/src/node/body/metatheorem.js +0 -23
- package/src/node/body/rule.js +12 -0
- package/src/node/body/theorem.js +0 -23
- package/src/node/body.js +23 -0
- package/src/node/combinator.js +9 -0
- package/src/node/constructor.js +9 -0
- package/src/node/declaration/combinator.js +5 -5
- package/src/node/declaration/constructor.js +8 -8
- package/src/node/declaration/property.js +14 -14
- package/src/node/declaration/simpleType.js +31 -31
- package/src/node/declaration/variable.js +7 -7
- package/src/node/equality.js +7 -7
- package/src/node/frame.js +21 -21
- package/src/node/header.js +22 -22
- package/src/node/metaLemmaMetaTheorem.js +14 -14
- package/src/node/metavariable.js +14 -14
- package/src/node/property.js +7 -7
- package/src/node/propertyRelation.js +7 -7
- package/src/node/rule.js +15 -15
- package/src/node/statement.js +12 -12
- package/src/node/step.js +21 -21
- package/src/node/subproof.js +7 -7
- package/src/node/substitution/frame.js +18 -18
- package/src/node/substitution/statement.js +18 -18
- package/src/node/substitution/term.js +18 -18
- package/src/node/term.js +34 -34
- package/src/preamble.js +4 -4
- package/src/process/instantiate.js +12 -0
- package/src/process/unify.js +53 -57
- package/src/process/validate.js +316 -0
- package/src/process/verify.js +50 -138
- package/src/types.js +18 -0
- package/src/utilities/brackets.js +10 -6
- package/src/utilities/element.js +138 -91
- package/src/utilities/instance.js +18 -18
- package/src/utilities/statement.js +27 -28
- package/src/utilities/string.js +34 -20
- package/src/{mixins/step/unify.js → utilities/unification.js} +82 -68
- package/src/utilities/validation.js +369 -0
- package/lib/element/statement/combinator.js +0 -105
- package/lib/element/term/constructor.js +0 -172
- package/lib/mixins/statement/verify.js +0 -198
- package/lib/mixins/step/unify.js +0 -228
- package/lib/mixins/term/verify.js +0 -65
- package/src/element/statement/combinator.js +0 -59
- package/src/mixins/statement/verify.js +0 -295
- package/src/mixins/term/verify.js +0 -81
|
@@ -26,7 +26,7 @@ export default define(class Equivalence extends Element {
|
|
|
26
26
|
const termString = term.getString(),
|
|
27
27
|
equivalenceString = this.asString(); ///
|
|
28
28
|
|
|
29
|
-
context.trace(`Adding the '${termString}' term to the '${equivalenceString}' equivalence
|
|
29
|
+
context.trace(`Adding the '${termString}' term to the '${equivalenceString}' equivalence...`);
|
|
30
30
|
|
|
31
31
|
const termA = term, ///
|
|
32
32
|
termPresent = this.someTerm((term) => {
|
|
@@ -76,9 +76,9 @@ export default define(class Equivalence extends Element {
|
|
|
76
76
|
return type;
|
|
77
77
|
}
|
|
78
78
|
|
|
79
|
-
|
|
79
|
+
compareTerm(term) {
|
|
80
80
|
const termA = term, ///
|
|
81
|
-
|
|
81
|
+
comparesToTerm = this.someTerm((term) => {
|
|
82
82
|
const termB = term, ///
|
|
83
83
|
termAEqualToTermB = termA.isEqualTo(termB);
|
|
84
84
|
|
|
@@ -87,14 +87,14 @@ export default define(class Equivalence extends Element {
|
|
|
87
87
|
}
|
|
88
88
|
});
|
|
89
89
|
|
|
90
|
-
return
|
|
90
|
+
return comparesToTerm;
|
|
91
91
|
}
|
|
92
92
|
|
|
93
93
|
matchTermNode(termNode) {
|
|
94
94
|
termNode = stripBracketsFromTermNode(termNode); ///
|
|
95
95
|
|
|
96
96
|
const termNodeMatches = this.someTerm((term) => {
|
|
97
|
-
const termNodeMatches = term.
|
|
97
|
+
const termNodeMatches = term.matchNode(termNode);
|
|
98
98
|
|
|
99
99
|
if (termNodeMatches) {
|
|
100
100
|
return true;
|
|
@@ -137,9 +137,9 @@ export default define(class Equivalence extends Element {
|
|
|
137
137
|
|
|
138
138
|
isDisjointFrom(equivalence) {
|
|
139
139
|
const disjointFrom = equivalence.everyTerm((term) => {
|
|
140
|
-
const
|
|
140
|
+
const comparesToTerm = this.compareTerm(term);
|
|
141
141
|
|
|
142
|
-
if (!
|
|
142
|
+
if (!comparesToTerm) {
|
|
143
143
|
return true;
|
|
144
144
|
}
|
|
145
145
|
});
|
|
@@ -196,7 +196,7 @@ export default define(class Equivalence extends Element {
|
|
|
196
196
|
if (termGrounded) {
|
|
197
197
|
const termMatchesGroundedTerm = groundedTerms.some((groundedTerm) => {
|
|
198
198
|
const groundedTermNode = groundedTerm.getNode(),
|
|
199
|
-
groundedTermNodeMatches = term.
|
|
199
|
+
groundedTermNodeMatches = term.matchNode(groundedTermNode);
|
|
200
200
|
|
|
201
201
|
if (groundedTermNodeMatches) {
|
|
202
202
|
return true;
|
|
@@ -51,9 +51,9 @@ export default define(class Equivalences extends Element {
|
|
|
51
51
|
|
|
52
52
|
findEquivalenceByTerm(term) {
|
|
53
53
|
const equivalence = this.array.find((equivalence) => {
|
|
54
|
-
const
|
|
54
|
+
const equivalenceComparesToTerm = equivalence.compareTerm(term);
|
|
55
55
|
|
|
56
|
-
if (
|
|
56
|
+
if (equivalenceComparesToTerm) {
|
|
57
57
|
return true;
|
|
58
58
|
}
|
|
59
59
|
}) || null;
|
|
@@ -63,9 +63,9 @@ export default define(class Equivalences extends Element {
|
|
|
63
63
|
|
|
64
64
|
findEquivalenceByTermNodes(termNodes) {
|
|
65
65
|
const equivalence = this.array.find((equivalence) => {
|
|
66
|
-
const
|
|
66
|
+
const termNodeMatches = equivalence.matchTermNodes(termNodes);
|
|
67
67
|
|
|
68
|
-
if (
|
|
68
|
+
if (termNodeMatches) {
|
|
69
69
|
return true;
|
|
70
70
|
}
|
|
71
71
|
}) || null;
|
package/src/element/frame.js
CHANGED
|
@@ -87,54 +87,52 @@ export default define(class Frame extends Element {
|
|
|
87
87
|
return metavariableEqualToMetavariable;
|
|
88
88
|
}
|
|
89
89
|
|
|
90
|
-
|
|
90
|
+
compareSubstitution(substitution, context) {
|
|
91
|
+
let comparesToSubstitution = false;
|
|
91
92
|
|
|
92
|
-
|
|
93
|
-
let substitutionMatches = false;
|
|
94
|
-
|
|
95
|
-
const frameString = this.string, ///
|
|
93
|
+
const frameString = this.getString(), ///
|
|
96
94
|
substitutionString = substitution.getString();
|
|
97
95
|
|
|
98
|
-
context.trace(`
|
|
96
|
+
context.trace(`Comparing the '${frameString}' frame to the '${substitutionString}' substitution...`);
|
|
99
97
|
|
|
100
|
-
if (!
|
|
101
|
-
|
|
102
|
-
const
|
|
98
|
+
if (!comparesToSubstitution) {
|
|
99
|
+
comparesToSubstitution = this.assumptions.some((assumption) => {
|
|
100
|
+
const assumptionComparesToSubstitution = assumption.compareSubstitution(substitution, context);
|
|
103
101
|
|
|
104
|
-
if (
|
|
102
|
+
if (assumptionComparesToSubstitution) {
|
|
105
103
|
return true;
|
|
106
104
|
}
|
|
107
105
|
});
|
|
108
106
|
}
|
|
109
107
|
|
|
110
|
-
if (
|
|
111
|
-
context.debug(`...
|
|
108
|
+
if (comparesToSubstitution) {
|
|
109
|
+
context.debug(`...compared the the '${frameString}' frame to the '${substitutionString}' substitutions.`);
|
|
112
110
|
}
|
|
113
111
|
|
|
114
|
-
return
|
|
112
|
+
return comparesToSubstitution;
|
|
115
113
|
}
|
|
116
114
|
|
|
117
|
-
|
|
118
|
-
let
|
|
115
|
+
compareSubstitutions(substitutions, context) {
|
|
116
|
+
let comparesToSubstitutions;
|
|
119
117
|
|
|
120
118
|
const frameString = this.string, ///
|
|
121
119
|
substitutionsString = substitutions.asString();
|
|
122
120
|
|
|
123
|
-
context.trace(`
|
|
121
|
+
context.trace(`Comparing the '${frameString}' frame to the '${substitutionsString}' substitutions...`);
|
|
124
122
|
|
|
125
|
-
|
|
126
|
-
const
|
|
123
|
+
comparesToSubstitutions = substitutions.everySubstitution((substitution) => {
|
|
124
|
+
const compaaresToSubstitution = this.compareSubstitution(substitution, context);
|
|
127
125
|
|
|
128
|
-
if (
|
|
126
|
+
if (compaaresToSubstitution) {
|
|
129
127
|
return true;
|
|
130
128
|
}
|
|
131
129
|
});
|
|
132
130
|
|
|
133
|
-
if (
|
|
134
|
-
context.debug(`...
|
|
131
|
+
if (comparesToSubstitutions) {
|
|
132
|
+
context.debug(`...compared the '${frameString}' frame to the '${substitutionsString}' substitutions.`);
|
|
135
133
|
}
|
|
136
134
|
|
|
137
|
-
return
|
|
135
|
+
return comparesToSubstitutions;
|
|
138
136
|
}
|
|
139
137
|
|
|
140
138
|
verify(assignments, stated, context) {
|
|
@@ -241,27 +239,27 @@ export default define(class Frame extends Element {
|
|
|
241
239
|
return assumptionsVerify;
|
|
242
240
|
}
|
|
243
241
|
|
|
244
|
-
|
|
245
|
-
let
|
|
242
|
+
validateGivenMetaType(metaType, assignments, stated, context) {
|
|
243
|
+
let validatesGivenMetaType = false;
|
|
246
244
|
|
|
247
245
|
const frameString = this.string, ///
|
|
248
246
|
metaTypeString = metaType.getString();
|
|
249
247
|
|
|
250
|
-
context.trace(`
|
|
248
|
+
context.trace(`Validatin the '${frameString}' frame given the '${metaTypeString}' meta-type...`);
|
|
251
249
|
|
|
252
250
|
const metaTypeName = metaType.getName();
|
|
253
251
|
|
|
254
252
|
if (metaTypeName === FRAME_META_TYPE_NAME) {
|
|
255
|
-
const
|
|
253
|
+
const validates = this.validate(assignments, stated, context)
|
|
256
254
|
|
|
257
|
-
|
|
255
|
+
validatesGivenMetaType = validates; ///
|
|
258
256
|
}
|
|
259
257
|
|
|
260
|
-
if (
|
|
261
|
-
context.debug(`...
|
|
258
|
+
if (validatesGivenMetaType) {
|
|
259
|
+
context.debug(`...validated the '${frameString}' frame given the '${metaTypeString}' meta-type.`);
|
|
262
260
|
}
|
|
263
261
|
|
|
264
|
-
return
|
|
262
|
+
return validatesGivenMetaType;
|
|
265
263
|
}
|
|
266
264
|
|
|
267
265
|
toJSON() {
|
|
@@ -30,9 +30,9 @@ export default define(class Hypothesis extends Element {
|
|
|
30
30
|
} else if (this.statement !== null) {
|
|
31
31
|
const stated = true,
|
|
32
32
|
assignments = [],
|
|
33
|
-
|
|
33
|
+
statementValidates = this.statement.validate(assignments, stated, context);
|
|
34
34
|
|
|
35
|
-
if (
|
|
35
|
+
if (statementValidates) {
|
|
36
36
|
const assignmentsAssigned = assignAssignments(assignments, context);
|
|
37
37
|
|
|
38
38
|
if (assignmentsAssigned) {
|
package/src/element/judgement.js
CHANGED
|
@@ -108,7 +108,7 @@ export default define(class Judgement extends Element {
|
|
|
108
108
|
}
|
|
109
109
|
|
|
110
110
|
verifyWhenDerived(context) {
|
|
111
|
-
let verifiesWhenDerived;
|
|
111
|
+
let verifiesWhenDerived = false;
|
|
112
112
|
|
|
113
113
|
const judgementString = this.string; ///
|
|
114
114
|
|
|
@@ -118,9 +118,12 @@ export default define(class Judgement extends Element {
|
|
|
118
118
|
reference = referenceFromMetavariable(metavariable, context),
|
|
119
119
|
metaLemmaMetatheorem = context.findMetaLemmaMetatheoremByReference(reference),
|
|
120
120
|
substitutions = metaLemmaMetatheorem.getSubstitutions(),
|
|
121
|
-
|
|
121
|
+
frameComparesToSubstitutions = this.frame.compareSubstitutions(substitutions, context);
|
|
122
122
|
|
|
123
|
-
|
|
123
|
+
if (frameComparesToSubstitutions) {
|
|
124
|
+
verifiesWhenDerived = true;
|
|
125
|
+
|
|
126
|
+
}
|
|
124
127
|
|
|
125
128
|
if (verifiesWhenDerived) {
|
|
126
129
|
context.debug(`...verified the '${judgementString}' derived judgement.`);
|
package/src/element/label.js
CHANGED
|
@@ -16,57 +16,50 @@ export default define(class Label extends Element {
|
|
|
16
16
|
return this.metavariable;
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
-
getMetavariableName() {
|
|
20
|
-
const metavariableName = this.metavariable.getName();
|
|
19
|
+
getMetavariableName() { return this.metavariable.getName(); }
|
|
21
20
|
|
|
22
|
-
|
|
23
|
-
}
|
|
21
|
+
getMetavariableNode() { return this.metavariable.getNode(); }
|
|
24
22
|
|
|
25
|
-
|
|
26
|
-
const metavariableNode = this.metavariable.getNode();
|
|
23
|
+
compareMetavariableName(metavariableName) { return this.metavariable.compareMetavariableName(metavariableName); }
|
|
27
24
|
|
|
28
|
-
|
|
29
|
-
}
|
|
25
|
+
isMetavariableEqualToMetavariable(metavariable) { return this.metavariable.isEqualTo(metavariable); }
|
|
30
26
|
|
|
31
|
-
|
|
27
|
+
compareReference(reference) {
|
|
32
28
|
const metavariable = reference.getMetavariable(),
|
|
33
29
|
metavariableEqualToMetavariable = this.isMetavariableEqualToMetavariable(metavariable),
|
|
34
|
-
|
|
30
|
+
comparesToReference = metavariableEqualToMetavariable; ///
|
|
35
31
|
|
|
36
|
-
return
|
|
32
|
+
return comparesToReference;
|
|
37
33
|
}
|
|
38
34
|
|
|
39
|
-
isMetavariableEqualToMetavariable(metavariable) { return this.metavariable.isEqualTo(metavariable); }
|
|
40
|
-
|
|
41
|
-
matchMetavariableName(metavariableName) { return this.metavariable.matchMetavariableName(metavariableName); }
|
|
42
|
-
|
|
43
35
|
verify(nameOnly) {
|
|
44
36
|
let verifies = false;
|
|
45
37
|
|
|
46
|
-
const
|
|
38
|
+
const context = this.getContext(),
|
|
39
|
+
labelString = this.getString(); ///
|
|
47
40
|
|
|
48
|
-
|
|
41
|
+
context.trace(`Verifying the '${labelString}' label...`);
|
|
49
42
|
|
|
50
43
|
let labelPresent;
|
|
51
44
|
|
|
52
45
|
if (nameOnly) {
|
|
53
46
|
const metavariableName = this.getMetavariableName();
|
|
54
47
|
|
|
55
|
-
labelPresent =
|
|
48
|
+
labelPresent = context.isLabelPresentByMetavariableName(metavariableName);
|
|
56
49
|
} else {
|
|
57
50
|
const metavariable = this.getMetavariable();
|
|
58
51
|
|
|
59
|
-
labelPresent =
|
|
52
|
+
labelPresent = context.isLabelPresentByMetavariable(metavariable);
|
|
60
53
|
}
|
|
61
54
|
|
|
62
55
|
if (labelPresent) {
|
|
63
|
-
|
|
56
|
+
context.debug(`The '${labelString}' label is already present.`);
|
|
64
57
|
} else {
|
|
65
58
|
verifies = true;
|
|
66
59
|
}
|
|
67
60
|
|
|
68
61
|
if (verifies) {
|
|
69
|
-
|
|
62
|
+
context.debug(`...verified the '${labelString}' label.`);
|
|
70
63
|
}
|
|
71
64
|
|
|
72
65
|
return verifies;
|
|
@@ -47,11 +47,12 @@ export default class MetaLemmaMetatheorem extends Element {
|
|
|
47
47
|
|
|
48
48
|
getStatement() { return this.deduction.getStatement(); }
|
|
49
49
|
|
|
50
|
-
|
|
50
|
+
compareReference(reference) {
|
|
51
51
|
const label = this.getLabel(),
|
|
52
|
-
|
|
52
|
+
labelComparesToRefference = label.compareReference(reference),
|
|
53
|
+
comparesToReference = labelComparesToRefference; ///
|
|
53
54
|
|
|
54
|
-
return
|
|
55
|
+
return comparesToReference;
|
|
55
56
|
}
|
|
56
57
|
|
|
57
58
|
verify() {
|
package/src/element/metaType.js
CHANGED
|
@@ -3,9 +3,8 @@
|
|
|
3
3
|
import Element from "../element";
|
|
4
4
|
|
|
5
5
|
import { define } from "../elements";
|
|
6
|
-
import { FRAME_META_TYPE_NAME, REFERENCE_META_TYPE_NAME, STATEMENT_META_TYPE_NAME } from "../metaTypeNames";
|
|
7
6
|
|
|
8
|
-
class MetaType extends Element {
|
|
7
|
+
export default define(class MetaType extends Element {
|
|
9
8
|
constructor(context, string, node, name) {
|
|
10
9
|
super(context, string, node);
|
|
11
10
|
|
|
@@ -22,10 +21,10 @@ class MetaType extends Element {
|
|
|
22
21
|
return equalTo;
|
|
23
22
|
}
|
|
24
23
|
|
|
25
|
-
|
|
26
|
-
const
|
|
24
|
+
compareMetaTypeName(metaTypeName) {
|
|
25
|
+
const comparesToMetaTypeName = (metaTypeName === this.name);
|
|
27
26
|
|
|
28
|
-
return
|
|
27
|
+
return comparesToMetaTypeName;
|
|
29
28
|
}
|
|
30
29
|
|
|
31
30
|
toJSON() {
|
|
@@ -46,48 +45,13 @@ class MetaType extends Element {
|
|
|
46
45
|
|
|
47
46
|
return metaType;
|
|
48
47
|
}
|
|
49
|
-
}
|
|
50
48
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
class FrameMetaType extends MetaType {
|
|
54
|
-
static fromNothing() {
|
|
55
|
-
const context = null,
|
|
56
|
-
string = null,
|
|
57
|
-
node = null,
|
|
58
|
-
name = FRAME_META_TYPE_NAME,
|
|
59
|
-
frameMetaType = new FrameMetaType(context, string, node, name);
|
|
60
|
-
|
|
61
|
-
return frameMetaType;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
class ReferenceMetaType extends MetaType {
|
|
66
|
-
static fromNothing() {
|
|
49
|
+
static fromName(name) {
|
|
67
50
|
const context = null,
|
|
68
|
-
string =
|
|
51
|
+
string = name,
|
|
69
52
|
node = null,
|
|
70
|
-
|
|
71
|
-
referenceMetaType = new ReferenceMetaType(context, string, node, name);
|
|
72
|
-
|
|
73
|
-
return referenceMetaType;
|
|
74
|
-
}
|
|
75
|
-
}
|
|
53
|
+
metaType = new MetaType(context, string, node, name);
|
|
76
54
|
|
|
77
|
-
|
|
78
|
-
static fromNothing() {
|
|
79
|
-
const context = null,
|
|
80
|
-
string = null,
|
|
81
|
-
node = null,
|
|
82
|
-
name = STATEMENT_META_TYPE_NAME,
|
|
83
|
-
statementMetaType = new StatementMetaType(context, string, node, name);
|
|
84
|
-
|
|
85
|
-
return statementMetaType;
|
|
55
|
+
return metaType;
|
|
86
56
|
}
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
export const frameMetaType = FrameMetaType.fromNothing();
|
|
90
|
-
|
|
91
|
-
export const referenceMetaType = ReferenceMetaType.fromNothing();
|
|
92
|
-
|
|
93
|
-
export const statementMetaType = StatementMetaType.fromNothing();
|
|
57
|
+
});
|
|
@@ -39,48 +39,46 @@ export default define(class Metavariable extends Element {
|
|
|
39
39
|
this.metaType = metaType;
|
|
40
40
|
}
|
|
41
41
|
|
|
42
|
-
|
|
43
|
-
const
|
|
44
|
-
nameMatches = (name === this.name),
|
|
45
|
-
parameterMatches = nameMatches; ///
|
|
42
|
+
isNameEqualTo(name) {
|
|
43
|
+
const nameEqualTo = (name === this.name);
|
|
46
44
|
|
|
47
|
-
return
|
|
45
|
+
return nameEqualTo;
|
|
48
46
|
}
|
|
49
47
|
|
|
50
|
-
|
|
51
|
-
const
|
|
48
|
+
compareMetavariableName(metavariableName) {
|
|
49
|
+
const comparesToMetavariableName = (metavariableName === this.name);
|
|
52
50
|
|
|
53
|
-
return
|
|
51
|
+
return comparesToMetavariableName;
|
|
54
52
|
}
|
|
55
53
|
|
|
56
54
|
isMetaTypeEqualTo(metaType) { return this.metaType.isEqualTo(metaType); }
|
|
57
55
|
|
|
58
|
-
|
|
59
|
-
let
|
|
56
|
+
validate(context) {
|
|
57
|
+
let validates;
|
|
60
58
|
|
|
61
|
-
const metavariableString = this.
|
|
59
|
+
const metavariableString = this.getString(); ///
|
|
62
60
|
|
|
63
|
-
context.trace(`
|
|
61
|
+
context.trace(`Validating the '${metavariableString}' metavariable...`);
|
|
64
62
|
|
|
65
63
|
const metavariable = this, ///
|
|
66
64
|
metavariablePresent = context.isMetavariablePresent(metavariable);
|
|
67
65
|
|
|
68
|
-
|
|
66
|
+
validates = metavariablePresent; ///
|
|
69
67
|
|
|
70
|
-
if (
|
|
71
|
-
context.debug(`...
|
|
68
|
+
if (validates) {
|
|
69
|
+
context.debug(`...va;idated the '${metavariableString}' metavariable.`);
|
|
72
70
|
}
|
|
73
71
|
|
|
74
|
-
return
|
|
72
|
+
return validates;
|
|
75
73
|
}
|
|
76
74
|
|
|
77
|
-
|
|
78
|
-
let
|
|
75
|
+
validateGivenMetaType(metaType, context) {
|
|
76
|
+
let validatesGivenMetaType = false;
|
|
79
77
|
|
|
80
|
-
const metavariableString = this.
|
|
78
|
+
const metavariableString = this.getString(), ///
|
|
81
79
|
metaTypeString = metaType.getString();
|
|
82
80
|
|
|
83
|
-
context.trace(`
|
|
81
|
+
context.trace(`Validating the '${metavariableString}' metavariable given the '${metaTypeString}' meta-type...`);
|
|
84
82
|
|
|
85
83
|
let metavariable = this; ///
|
|
86
84
|
|
|
@@ -89,21 +87,21 @@ export default define(class Metavariable extends Element {
|
|
|
89
87
|
if (metavariable !== null) {
|
|
90
88
|
const metavariableMetaTypeEqualToMetaType = metavariable.isMetaTypeEqualTo(metaType);
|
|
91
89
|
|
|
92
|
-
|
|
90
|
+
validatesGivenMetaType = metavariableMetaTypeEqualToMetaType; ///
|
|
93
91
|
}
|
|
94
92
|
|
|
95
|
-
if (
|
|
96
|
-
context.debug(`...
|
|
93
|
+
if (validatesGivenMetaType) {
|
|
94
|
+
context.debug(`...validated the '${metavariableString}' metavariable given the '${metaTypeString}' meta-type.`);
|
|
97
95
|
}
|
|
98
96
|
|
|
99
|
-
return
|
|
97
|
+
return validatesGivenMetaType;
|
|
100
98
|
}
|
|
101
99
|
|
|
102
100
|
unifyFrame(frame, substitutions, generalContext, specificContext) {
|
|
103
101
|
let frameUnifies = false;
|
|
104
102
|
|
|
105
103
|
const frameString = frame.getString(),
|
|
106
|
-
metavariableString = this.
|
|
104
|
+
metavariableString = this.getString(); ///
|
|
107
105
|
|
|
108
106
|
specificContext.trace(`Unifying the '${frameString}' frame with the '${metavariableString}' metavariable...`);
|
|
109
107
|
|
|
@@ -147,7 +145,7 @@ export default define(class Metavariable extends Element {
|
|
|
147
145
|
let statementUnifies = false;
|
|
148
146
|
|
|
149
147
|
const statementString = statement.getString(),
|
|
150
|
-
metavariableString = this.
|
|
148
|
+
metavariableString = this.getString(), ///
|
|
151
149
|
substitutionString = (substitution !== null) ?
|
|
152
150
|
substitution.getString() :
|
|
153
151
|
EMPTY_STRING;
|
|
@@ -195,7 +193,7 @@ export default define(class Metavariable extends Element {
|
|
|
195
193
|
let referenceUnifies = false;
|
|
196
194
|
|
|
197
195
|
const referenceString = reference.getString(),
|
|
198
|
-
metavariableString = this.
|
|
196
|
+
metavariableString = this.getString(); ///
|
|
199
197
|
|
|
200
198
|
specificContext.trace(`Unifying the '${referenceString}' reference with the '${metavariableString}' metavariable...`);
|
|
201
199
|
|
|
@@ -265,7 +263,7 @@ export default define(class Metavariable extends Element {
|
|
|
265
263
|
|
|
266
264
|
if (generalContextFilePath === specificContextFilePath) {
|
|
267
265
|
const metavariable = this,
|
|
268
|
-
metavariableString = this.
|
|
266
|
+
metavariableString = this.getString(), ///
|
|
269
267
|
frameMetavariableEqualToMetvariable = frame.isMetavariableEqualToMetavariable(metavariable, context);
|
|
270
268
|
|
|
271
269
|
if (frameMetavariableEqualToMetvariable) {
|
|
@@ -305,7 +303,7 @@ export default define(class Metavariable extends Element {
|
|
|
305
303
|
|
|
306
304
|
if (generalContextFilePath === specificContextFilePath) {
|
|
307
305
|
const metavariable = this, ///
|
|
308
|
-
metavariableString = this.
|
|
306
|
+
metavariableString = this.getString(), ///
|
|
309
307
|
statementMetavariableEqualToMetvariable = statement.isMetavariableEqualToMetavariable(metavariable, context);
|
|
310
308
|
|
|
311
309
|
if (statementMetavariableEqualToMetvariable) {
|
|
@@ -345,7 +343,7 @@ export default define(class Metavariable extends Element {
|
|
|
345
343
|
|
|
346
344
|
if (generalContextFilePath === specificContextFilePath) {
|
|
347
345
|
const metavariable = this, ///
|
|
348
|
-
metavariableString = this.
|
|
346
|
+
metavariableString = this.getString(), ///
|
|
349
347
|
referenceMetavariableEqualToMetvariable = reference.isMetavariableEqualToMetavariable(metavariable);
|
|
350
348
|
|
|
351
349
|
if (referenceMetavariableEqualToMetvariable) {
|
|
@@ -376,7 +374,7 @@ export default define(class Metavariable extends Element {
|
|
|
376
374
|
typeJSON = typeToTypeJSON(this.type),
|
|
377
375
|
type = typeJSON, ///
|
|
378
376
|
metaType = metaTypeJSON, ///
|
|
379
|
-
string = this.
|
|
377
|
+
string = this.getString(), ///
|
|
380
378
|
json = {
|
|
381
379
|
string,
|
|
382
380
|
type,
|
package/src/element/parameter.js
CHANGED
|
@@ -20,9 +20,9 @@ export default define(class Parameter extends Element {
|
|
|
20
20
|
|
|
21
21
|
const parameter = this, ///
|
|
22
22
|
substitution = substitutions.findSubstitution((substitution) => {
|
|
23
|
-
const
|
|
23
|
+
const substitutionComparesToParamter = substitution.compareParameter(parameter);
|
|
24
24
|
|
|
25
|
-
if (
|
|
25
|
+
if (substitutionComparesToParamter) {
|
|
26
26
|
return true;
|
|
27
27
|
}
|
|
28
28
|
});
|