occam-verify-cli 1.0.617 → 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 +152 -47
- package/lib/context/file/nominal.js +136 -140
- package/lib/context/liminal.js +16 -26
- package/lib/context/scoped.js +26 -55
- 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/assumption.js +40 -16
- package/lib/element/derivation.js +8 -10
- package/lib/element/equality.js +102 -62
- package/lib/element/equivalence.js +6 -6
- package/lib/element/equivalences.js +4 -4
- package/lib/element/frame.js +21 -21
- package/lib/element/hypothesis.js +5 -7
- package/lib/element/judgement.js +47 -25
- package/lib/element/metaType.js +2 -2
- package/lib/element/metavariable.js +12 -3
- package/lib/element/reference.js +9 -21
- package/lib/element/rule.js +13 -15
- package/lib/element/statement.js +23 -25
- package/lib/element/subDerivation.js +4 -6
- package/lib/element/substitution/frame.js +4 -4
- package/lib/element/substitution/reference.js +4 -4
- package/lib/element/substitution/statement.js +4 -4
- package/lib/element/substitution/term.js +7 -1
- package/lib/element/substitution.js +71 -43
- package/lib/element/term.js +15 -1
- package/lib/element/topLevelAssertion.js +9 -11
- package/lib/element/topLevelMetaAssertion.js +9 -11
- package/lib/element/variable.js +44 -3
- package/lib/process/assign.js +96 -26
- 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 +14 -22
- package/package.json +1 -1
- package/src/context/ephemeral.js +170 -50
- package/src/context/file/nominal.js +136 -141
- package/src/context/liminal.js +22 -34
- package/src/context/scoped.js +33 -74
- 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/assumption.js +48 -16
- package/src/element/derivation.js +3 -5
- package/src/element/equality.js +109 -74
- package/src/element/equivalence.js +7 -7
- package/src/element/equivalences.js +7 -5
- package/src/element/frame.js +25 -25
- package/src/element/hypothesis.js +4 -6
- package/src/element/judgement.js +54 -24
- package/src/element/metaType.js +1 -1
- package/src/element/metavariable.js +16 -3
- package/src/element/reference.js +12 -26
- package/src/element/rule.js +8 -10
- package/src/element/statement.js +27 -30
- package/src/element/subDerivation.js +3 -5
- package/src/element/substitution/frame.js +1 -1
- package/src/element/substitution/reference.js +1 -1
- package/src/element/substitution/statement.js +1 -1
- package/src/element/substitution/term.js +2 -0
- package/src/element/substitution.js +60 -36
- package/src/element/term.js +20 -2
- package/src/element/topLevelAssertion.js +4 -6
- package/src/element/topLevelMetaAssertion.js +4 -6
- package/src/element/variable.js +2 -0
- package/src/process/assign.js +114 -37
- 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 +18 -29
|
@@ -5,9 +5,9 @@ import { arrayUtilities } from "necessary";
|
|
|
5
5
|
|
|
6
6
|
import { define } from "../elements";
|
|
7
7
|
import { literally } from "../utilities/context";
|
|
8
|
-
import { termsStringFromTerms } from "../utilities/string";
|
|
9
8
|
import { instantiateEquivalence } from "../process/instantiate";
|
|
10
9
|
import { stripBracketsFromTermNode } from "../utilities/brackets";
|
|
10
|
+
import { equivalenceStringFromTerms } from "../utilities/string";
|
|
11
11
|
import { equivalenceFromEquivalenceNode } from "../utilities/element";
|
|
12
12
|
|
|
13
13
|
const { compress } = arrayUtilities;
|
|
@@ -57,7 +57,7 @@ export default define(class Equivalence extends Element {
|
|
|
57
57
|
if (termGrounded) {
|
|
58
58
|
const termMatchesGroundedTerm = groundedTerms.some((groundedTerm) => {
|
|
59
59
|
const groundedTermNode = groundedTerm.getNode(),
|
|
60
|
-
groundedTermNodeMatches = term.
|
|
60
|
+
groundedTermNodeMatches = term.matchTermNode(groundedTermNode);
|
|
61
61
|
|
|
62
62
|
if (groundedTermNodeMatches) {
|
|
63
63
|
return true;
|
|
@@ -151,7 +151,7 @@ export default define(class Equivalence extends Element {
|
|
|
151
151
|
termNode = stripBracketsFromTermNode(termNode); ///
|
|
152
152
|
|
|
153
153
|
const termNodeMatches = this.someTerm((term) => {
|
|
154
|
-
const termNodeMatches = term.
|
|
154
|
+
const termNodeMatches = term.matchTermNode(termNode);
|
|
155
155
|
|
|
156
156
|
if (termNodeMatches) {
|
|
157
157
|
return true;
|
|
@@ -234,8 +234,8 @@ export default define(class Equivalence extends Element {
|
|
|
234
234
|
|
|
235
235
|
return literally((context) => {
|
|
236
236
|
const terms = combinedTerms, ///
|
|
237
|
-
|
|
238
|
-
string =
|
|
237
|
+
equivalenceString = equivalenceStringFromTerms(terms),
|
|
238
|
+
string = equivalenceString, ///
|
|
239
239
|
equivalenceNode = instantiateEquivalence(string, context),
|
|
240
240
|
equivalence = equivalenceFromEquivalenceNode(equivalenceNode, context);
|
|
241
241
|
|
|
@@ -248,8 +248,8 @@ export default define(class Equivalence extends Element {
|
|
|
248
248
|
static fromEquality(equality, context) {
|
|
249
249
|
return literally((context) => {
|
|
250
250
|
const terms = equality.getTerms(),
|
|
251
|
-
|
|
252
|
-
string =
|
|
251
|
+
equivalenceString = equivalenceStringFromTerms(terms),
|
|
252
|
+
string = equivalenceString, ///
|
|
253
253
|
equivalenceNode = instantiateEquivalence(string, context),
|
|
254
254
|
equivalence = equivalenceFromEquivalenceNode(equivalenceNode, context);
|
|
255
255
|
|
|
@@ -80,7 +80,7 @@ export default define(class Equivalences extends Element {
|
|
|
80
80
|
}
|
|
81
81
|
|
|
82
82
|
mergedWith(equivalences, context) {
|
|
83
|
-
let mergedEquivalences = this.clone(); ///
|
|
83
|
+
let mergedEquivalences = this.clone(context); ///
|
|
84
84
|
|
|
85
85
|
equivalences.forEachEquivalence((equivalence) => {
|
|
86
86
|
mergedEquivalences = mergedEquivalences.mergedWithEquivalence(equivalence, context);
|
|
@@ -139,7 +139,7 @@ export default define(class Equivalences extends Element {
|
|
|
139
139
|
}
|
|
140
140
|
|
|
141
141
|
separateGroundedTermsAndDefinedVariables(groundedTerms, definedVariables, context) {
|
|
142
|
-
let equivalences = this,
|
|
142
|
+
let equivalences = this, ///
|
|
143
143
|
groundedEquivalences,
|
|
144
144
|
remainingEquivalences,
|
|
145
145
|
initiallyGroundedEquivalences,
|
|
@@ -187,11 +187,13 @@ export default define(class Equivalences extends Element {
|
|
|
187
187
|
}
|
|
188
188
|
}
|
|
189
189
|
|
|
190
|
-
clone() {
|
|
191
|
-
const
|
|
190
|
+
clone(context) {
|
|
191
|
+
const string = EMPTY_STRING,
|
|
192
|
+
node = null,
|
|
193
|
+
array = [
|
|
192
194
|
...this.array
|
|
193
195
|
],
|
|
194
|
-
equivalences = new Equivalences(array);
|
|
196
|
+
equivalences = new Equivalences(context, string, node, array);
|
|
195
197
|
|
|
196
198
|
return equivalences;
|
|
197
199
|
}
|
package/src/element/frame.js
CHANGED
|
@@ -51,9 +51,9 @@ export default define(class Frame extends Element {
|
|
|
51
51
|
|
|
52
52
|
const frameNodeB = frameNode, ///
|
|
53
53
|
frameNodeAAMatchesFrameBNodeB = frameNodeA.match(frameNodeB),
|
|
54
|
-
|
|
54
|
+
frameNodeMatches = frameNodeAAMatchesFrameBNodeB; ///
|
|
55
55
|
|
|
56
|
-
return
|
|
56
|
+
return frameNodeMatches;
|
|
57
57
|
}
|
|
58
58
|
|
|
59
59
|
isValid(context) {
|
|
@@ -79,24 +79,6 @@ export default define(class Frame extends Element {
|
|
|
79
79
|
return singular;
|
|
80
80
|
}
|
|
81
81
|
|
|
82
|
-
matchMetavariableName(metavariableName) {
|
|
83
|
-
let metavariableNameMatches = false;
|
|
84
|
-
|
|
85
|
-
const singular = this.isSingular();
|
|
86
|
-
|
|
87
|
-
if (singular) {
|
|
88
|
-
const metavariableNameA = metavariableName ///
|
|
89
|
-
|
|
90
|
-
metavariableName = this.getMetavariableName();
|
|
91
|
-
|
|
92
|
-
const metavariableNameB = metavariableName; ///
|
|
93
|
-
|
|
94
|
-
metavariableNameMatches = (metavariableNameA === metavariableNameB);
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
return metavariableNameMatches;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
82
|
compareParameter(parameter) {
|
|
101
83
|
let comparesToParamter = false;
|
|
102
84
|
|
|
@@ -165,6 +147,24 @@ export default define(class Frame extends Element {
|
|
|
165
147
|
return comparesToSubstitutions;
|
|
166
148
|
}
|
|
167
149
|
|
|
150
|
+
compareMetavariableName(metavariableName) {
|
|
151
|
+
let comparesToMetavariableName = false;
|
|
152
|
+
|
|
153
|
+
const singular = this.isSingular();
|
|
154
|
+
|
|
155
|
+
if (singular) {
|
|
156
|
+
const metavariableNameA = metavariableName ///
|
|
157
|
+
|
|
158
|
+
metavariableName = this.getMetavariableName();
|
|
159
|
+
|
|
160
|
+
const metavariableNameB = metavariableName; ///
|
|
161
|
+
|
|
162
|
+
comparesToMetavariableName = (metavariableNameA === metavariableNameB);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
return comparesToMetavariableName;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
168
|
validate(assignments, stated, context) {
|
|
169
169
|
let validates = false;
|
|
170
170
|
|
|
@@ -184,7 +184,7 @@ export default define(class Frame extends Element {
|
|
|
184
184
|
|
|
185
185
|
if (assumptionsValidate && metavariablevalidates) {
|
|
186
186
|
let validatesWhenStated = false,
|
|
187
|
-
|
|
187
|
+
validatesWhenDerived = false;
|
|
188
188
|
|
|
189
189
|
if (stated) {
|
|
190
190
|
validatesWhenStated = this.validateWhenStated(assignments, context);
|
|
@@ -289,12 +289,12 @@ export default define(class Frame extends Element {
|
|
|
289
289
|
|
|
290
290
|
context.trace(`Validating the '${frameString}' frame's '${metavraibleString}' metavariable...`);
|
|
291
291
|
|
|
292
|
-
const
|
|
292
|
+
const metavariablePresent = context.isMetavariablePresent(this.metavariable);
|
|
293
293
|
|
|
294
|
-
if (
|
|
294
|
+
if (metavariablePresent) {
|
|
295
295
|
const metaTypeName = FRAME_META_TYPE_NAME,
|
|
296
|
-
frameMetaType = findMetaTypeByMetaTypeName(metaTypeName),
|
|
297
|
-
metavariableValidateGivenMetaType = metavariable.validateGivenMetaType(frameMetaType, context);
|
|
296
|
+
frameMetaType = context.findMetaTypeByMetaTypeName(metaTypeName),
|
|
297
|
+
metavariableValidateGivenMetaType = this.metavariable.validateGivenMetaType(frameMetaType, context);
|
|
298
298
|
|
|
299
299
|
if (metavariableValidateGivenMetaType) {
|
|
300
300
|
metavariableValidates = true;
|
|
@@ -40,15 +40,13 @@ export default define(class Hypothesis extends Element {
|
|
|
40
40
|
statementValidates = this.statement.validate(assignments, stated, context);
|
|
41
41
|
|
|
42
42
|
if (statementValidates) {
|
|
43
|
-
|
|
43
|
+
assignAssignments(assignments, context);
|
|
44
44
|
|
|
45
|
-
|
|
46
|
-
const subproofOrProofAssertion = this; ///
|
|
45
|
+
const subproofOrProofAssertion = this; ///
|
|
47
46
|
|
|
48
|
-
|
|
47
|
+
context.addSubproofOrProofAssertion(subproofOrProofAssertion);
|
|
49
48
|
|
|
50
|
-
|
|
51
|
-
}
|
|
49
|
+
verifies = true;
|
|
52
50
|
}
|
|
53
51
|
} else {
|
|
54
52
|
context.debug(`Unable to verify the '${hypothesisString}' hypothesis because it is nonsense.`);
|
package/src/element/judgement.js
CHANGED
|
@@ -37,7 +37,27 @@ export default define(class Judgement extends Element {
|
|
|
37
37
|
|
|
38
38
|
getMetavariable() { return this.frame.getMetavariable(); }
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
compareMetavariableName(metavariableName) { return this.frame.compareMetavariableName(metavariableName); }
|
|
41
|
+
|
|
42
|
+
matchJudgementNode(judgementNode) {
|
|
43
|
+
const judgementNodeA = judgementNode; ///
|
|
44
|
+
|
|
45
|
+
judgementNode = this.getJudgementNode();
|
|
46
|
+
|
|
47
|
+
const judgementNodeB = judgementNode, ///
|
|
48
|
+
judgementNodeAAMatchesJudgementBNodeB = judgementNodeA.match(judgementNodeB),
|
|
49
|
+
judgementNodeMatches = judgementNodeAAMatchesJudgementBNodeB; ///
|
|
50
|
+
|
|
51
|
+
return judgementNodeMatches;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
isValid(context) {
|
|
55
|
+
const judgementNode = this.getJudgementNode(),
|
|
56
|
+
judgementPresent = context.isJudgementPresentByJudgementNode(judgementNode),
|
|
57
|
+
valid = judgementPresent; ///
|
|
58
|
+
|
|
59
|
+
return valid;
|
|
60
|
+
}
|
|
41
61
|
|
|
42
62
|
validate(assignments, stated, context) {
|
|
43
63
|
let validates = false;
|
|
@@ -46,35 +66,41 @@ export default define(class Judgement extends Element {
|
|
|
46
66
|
|
|
47
67
|
context.trace(`Validating the '${judgementString}' judgement...`);
|
|
48
68
|
|
|
49
|
-
const
|
|
69
|
+
const valid = this.isValid(context);
|
|
50
70
|
|
|
51
|
-
if (
|
|
52
|
-
|
|
71
|
+
if (valid) {
|
|
72
|
+
validates = true;
|
|
53
73
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
74
|
+
context.debug(`...the '${judgementString}' judgement is already valid.`);
|
|
75
|
+
} else {
|
|
76
|
+
const frameValidates = this.frame.validate(assignments, stated, context);
|
|
57
77
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
} else {
|
|
61
|
-
validatesWhenDerived = this.validateWhenDerived(context);
|
|
62
|
-
}
|
|
78
|
+
if (frameValidates) {
|
|
79
|
+
const assumptionValidates = this.assumption.validate(assignments, stated, context);
|
|
63
80
|
|
|
64
|
-
if (
|
|
65
|
-
|
|
81
|
+
if (assumptionValidates) {
|
|
82
|
+
let validatesWhenStated = false,
|
|
83
|
+
validatesWhenDerived = false;
|
|
84
|
+
|
|
85
|
+
if (stated) {
|
|
86
|
+
validatesWhenStated = this.validateWhenStated(assignments, context);
|
|
87
|
+
} else {
|
|
88
|
+
validatesWhenDerived = this.validateWhenDerived(context);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
if (validatesWhenStated || validatesWhenDerived) {
|
|
92
|
+
validates = true;
|
|
93
|
+
}
|
|
66
94
|
}
|
|
67
95
|
}
|
|
68
|
-
}
|
|
69
96
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
this.assign(assignments, context);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
97
|
+
if (validates) {
|
|
98
|
+
const judgement = this; ///
|
|
75
99
|
|
|
76
|
-
|
|
77
|
-
|
|
100
|
+
context.addJudgement(judgement)
|
|
101
|
+
|
|
102
|
+
context.debug(`...validated the '${judgementString}' judgement.`);
|
|
103
|
+
}
|
|
78
104
|
}
|
|
79
105
|
|
|
80
106
|
return validates;
|
|
@@ -120,13 +146,17 @@ export default define(class Judgement extends Element {
|
|
|
120
146
|
return validatesWhenDerived;
|
|
121
147
|
}
|
|
122
148
|
|
|
123
|
-
assign(assignments, context) {
|
|
149
|
+
assign(assignments, stated, context) {
|
|
124
150
|
if (assignments === null) {
|
|
125
151
|
return;
|
|
126
152
|
}
|
|
127
153
|
|
|
154
|
+
if (!stated) {
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
|
|
128
158
|
const judgement = this, ///
|
|
129
|
-
judgementAssignment = judgementAssignmentFromJudgement(judgement),
|
|
159
|
+
judgementAssignment = judgementAssignmentFromJudgement(judgement, context),
|
|
130
160
|
assignment = judgementAssignment; ///
|
|
131
161
|
|
|
132
162
|
assignments.push(assignment);
|
package/src/element/metaType.js
CHANGED
|
@@ -48,7 +48,7 @@ export default define(class MetaType extends Element {
|
|
|
48
48
|
static fromJSON(json, context) {
|
|
49
49
|
const { name } = json,
|
|
50
50
|
metaTypeName = name, ///
|
|
51
|
-
metaType = findMetaTypeByMetaTypeName(metaTypeName);
|
|
51
|
+
metaType = context.findMetaTypeByMetaTypeName(metaTypeName);
|
|
52
52
|
|
|
53
53
|
return metaType;
|
|
54
54
|
}
|
|
@@ -54,8 +54,9 @@ export default define(class Metavariable extends Element {
|
|
|
54
54
|
}
|
|
55
55
|
|
|
56
56
|
compare(metavariable) {
|
|
57
|
-
const
|
|
58
|
-
|
|
57
|
+
const metavariableName = metavariable.getName(),
|
|
58
|
+
comparesToMetavariableName = this.compareMetavariableName(metavariableName),
|
|
59
|
+
comparesToMetavariable = comparesToMetavariableName; ///
|
|
59
60
|
|
|
60
61
|
return comparesToMetavariable;
|
|
61
62
|
}
|
|
@@ -69,6 +70,18 @@ export default define(class Metavariable extends Element {
|
|
|
69
70
|
return comparesToMetavariableName;
|
|
70
71
|
}
|
|
71
72
|
|
|
73
|
+
matchMetavariableNode(metavariableNode) {
|
|
74
|
+
const metavariableNodeA = metavariableNode; ///
|
|
75
|
+
|
|
76
|
+
metavariableNode = this.getMetavariableNode(); ///
|
|
77
|
+
|
|
78
|
+
const metavariableNodeB = metavariableNode, ///
|
|
79
|
+
metavariableNodeAMatchesMetavariableNodeB = metavariableNodeA.match(metavariableNodeB),
|
|
80
|
+
metavariableNodeMatches = metavariableNodeAMatchesMetavariableNodeB; ///
|
|
81
|
+
|
|
82
|
+
return metavariableNodeMatches;
|
|
83
|
+
}
|
|
84
|
+
|
|
72
85
|
validate(context) {
|
|
73
86
|
let validates = false;
|
|
74
87
|
|
|
@@ -306,7 +319,7 @@ export default define(class Metavariable extends Element {
|
|
|
306
319
|
|
|
307
320
|
if (generalContextFilePath === specificContextFilePath) {
|
|
308
321
|
const metavariableName = this.getMetavariableName(), ///
|
|
309
|
-
frameMetavariableComparesToMetvariable = frame.
|
|
322
|
+
frameMetavariableComparesToMetvariable = frame.compareMetavariableName(metavariableName);
|
|
310
323
|
|
|
311
324
|
if (frameMetavariableComparesToMetvariable) {
|
|
312
325
|
frameMetavariableUnifies = true;
|
package/src/element/reference.js
CHANGED
|
@@ -54,32 +54,18 @@ export default define(class Reference extends Element {
|
|
|
54
54
|
return equalTo;
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
-
matchMetavariableName(metavariableName) {
|
|
58
|
-
let metavariableNameMatches = false;
|
|
59
|
-
|
|
60
|
-
const metavariableNameA = metavariableName ///
|
|
61
|
-
|
|
62
|
-
metavariableName = this.getMetavariableName();
|
|
63
|
-
|
|
64
|
-
const metavariableNameB = metavariableName; ///
|
|
65
|
-
|
|
66
|
-
metavariableNameMatches = (metavariableNameA === metavariableNameB);
|
|
67
|
-
|
|
68
|
-
return metavariableNameMatches;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
57
|
isValid(context) {
|
|
72
|
-
const
|
|
73
|
-
|
|
74
|
-
valid =
|
|
58
|
+
const metavariableNode = this.getMetavariableNode(),
|
|
59
|
+
referencePresent = context.isReferencePresentByMetavariableNode(metavariableNode),
|
|
60
|
+
valid = referencePresent; ///
|
|
75
61
|
|
|
76
62
|
return valid;
|
|
77
63
|
}
|
|
78
64
|
|
|
79
|
-
isEqualTo(
|
|
80
|
-
const
|
|
81
|
-
|
|
82
|
-
equalTo =
|
|
65
|
+
isEqualTo(reference) {
|
|
66
|
+
const referenceNode = reference.getNode(),
|
|
67
|
+
referenceNodeMatches = this.matchReferenceNode(referenceNode),
|
|
68
|
+
equalTo = referenceNodeMatches; ///
|
|
83
69
|
|
|
84
70
|
return equalTo;
|
|
85
71
|
}
|
|
@@ -101,7 +87,7 @@ export default define(class Reference extends Element {
|
|
|
101
87
|
}
|
|
102
88
|
|
|
103
89
|
compareMetavariable(metavariable) {
|
|
104
|
-
let
|
|
90
|
+
let comparesToMetavariable = false;
|
|
105
91
|
|
|
106
92
|
let metavariableName;
|
|
107
93
|
|
|
@@ -114,15 +100,15 @@ export default define(class Reference extends Element {
|
|
|
114
100
|
const metavariableNameB = metavariableName; ///
|
|
115
101
|
|
|
116
102
|
if (metavariableNameA === metavariableNameB) {
|
|
117
|
-
|
|
103
|
+
comparesToMetavariable = true;
|
|
118
104
|
}
|
|
119
105
|
|
|
120
|
-
return
|
|
106
|
+
return comparesToMetavariable;
|
|
121
107
|
}
|
|
122
108
|
|
|
123
109
|
compareMetavariableName(metavariableName) { return this.metavariable.compareMetavariableName(metavariableName); }
|
|
124
110
|
|
|
125
|
-
matchMetavariableNode(metavariableNode) { return this.metavariable.
|
|
111
|
+
matchMetavariableNode(metavariableNode) { return this.metavariable.matchMetavariableNode(metavariableNode); }
|
|
126
112
|
|
|
127
113
|
validate(context) {
|
|
128
114
|
let validates = false;
|
|
@@ -168,7 +154,7 @@ export default define(class Reference extends Element {
|
|
|
168
154
|
context.trace(`Validating the '${referenceString}' reference's '${metavariableString}' metavariable....'`);
|
|
169
155
|
|
|
170
156
|
const metaTypeName = REFERENCE_META_TYPE_NAME,
|
|
171
|
-
referenceMetaType = findMetaTypeByMetaTypeName(metaTypeName),
|
|
157
|
+
referenceMetaType = context.findMetaTypeByMetaTypeName(metaTypeName),
|
|
172
158
|
metaType = referenceMetaType, ///
|
|
173
159
|
metavariable = context.findMetavariable(this.metavariable);
|
|
174
160
|
|
package/src/element/rule.js
CHANGED
|
@@ -132,10 +132,6 @@ export default define(class Rule extends Element {
|
|
|
132
132
|
const proofVerifies = await this.verifyProof(context);
|
|
133
133
|
|
|
134
134
|
if (proofVerifies) {
|
|
135
|
-
const rule = this; ///
|
|
136
|
-
|
|
137
|
-
context.addRule(rule);
|
|
138
|
-
|
|
139
135
|
verifies = true;
|
|
140
136
|
}
|
|
141
137
|
}
|
|
@@ -144,6 +140,10 @@ export default define(class Rule extends Element {
|
|
|
144
140
|
}, context);
|
|
145
141
|
|
|
146
142
|
if (verifies) {
|
|
143
|
+
const rule = this;
|
|
144
|
+
|
|
145
|
+
context.addRule(rule);
|
|
146
|
+
|
|
147
147
|
context.debug(`...verified the '${ruleString}' rule.`);
|
|
148
148
|
}
|
|
149
149
|
|
|
@@ -184,15 +184,13 @@ export default define(class Rule extends Element {
|
|
|
184
184
|
premiseVerifies = await premise.verify(assignments, context)
|
|
185
185
|
|
|
186
186
|
if (premiseVerifies) {
|
|
187
|
-
|
|
187
|
+
assignAssignments(assignments, context);
|
|
188
188
|
|
|
189
|
-
|
|
190
|
-
const subproofOrProofAssertion = premise; ////
|
|
189
|
+
const subproofOrProofAssertion = premise; ////
|
|
191
190
|
|
|
192
|
-
|
|
191
|
+
context.addSubproofOrProofAssertion(subproofOrProofAssertion);
|
|
193
192
|
|
|
194
|
-
|
|
195
|
-
}
|
|
193
|
+
return true;
|
|
196
194
|
}
|
|
197
195
|
});
|
|
198
196
|
|
package/src/element/statement.js
CHANGED
|
@@ -44,8 +44,8 @@ export default define(class Statement extends Element {
|
|
|
44
44
|
return equalTo;
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
-
|
|
48
|
-
let
|
|
47
|
+
compareMetavariableName(metavariableName) {
|
|
48
|
+
let comparesToMetavariableName = false;
|
|
49
49
|
|
|
50
50
|
const singular = this.isSingular();
|
|
51
51
|
|
|
@@ -56,10 +56,10 @@ export default define(class Statement extends Element {
|
|
|
56
56
|
|
|
57
57
|
const metavariableNameB = metavariableName; ///
|
|
58
58
|
|
|
59
|
-
|
|
59
|
+
comparesToMetavariableName = (metavariableNameA === metavariableNameB);
|
|
60
60
|
}
|
|
61
61
|
|
|
62
|
-
return
|
|
62
|
+
return comparesToMetavariableName;
|
|
63
63
|
}
|
|
64
64
|
|
|
65
65
|
isValid(context) {
|
|
@@ -90,7 +90,7 @@ export default define(class Statement extends Element {
|
|
|
90
90
|
statementNodeTermNodes = statementNode.getTermNodes();
|
|
91
91
|
|
|
92
92
|
termContained = statementNodeTermNodes.some((statementNodeTermNode) => { ///
|
|
93
|
-
const statementNodeTermNodeMatches = term.
|
|
93
|
+
const statementNodeTermNodeMatches = term.matchTermNode(statementNodeTermNode);
|
|
94
94
|
|
|
95
95
|
if (statementNodeTermNodeMatches) {
|
|
96
96
|
return true;
|
|
@@ -130,31 +130,6 @@ export default define(class Statement extends Element {
|
|
|
130
130
|
return frameContained;
|
|
131
131
|
}
|
|
132
132
|
|
|
133
|
-
compareMetavariable(metavariable) {
|
|
134
|
-
let metavaraibleComparseTo;
|
|
135
|
-
|
|
136
|
-
const singular = this.isSingular();
|
|
137
|
-
|
|
138
|
-
if (singular) {
|
|
139
|
-
let metavariableName;
|
|
140
|
-
|
|
141
|
-
const statementNode = this.getStatementNode(),
|
|
142
|
-
singularMetavariableNode = statementNode.getSingularMetavariableNode();
|
|
143
|
-
|
|
144
|
-
metavariableName = singularMetavariableNode.getMetavariableName();
|
|
145
|
-
|
|
146
|
-
const metavariableNameA = metavariableName ///
|
|
147
|
-
|
|
148
|
-
metavariableName = metavariable.getName();
|
|
149
|
-
|
|
150
|
-
const metavariableNameB = metavariableName; ///
|
|
151
|
-
|
|
152
|
-
metavaraibleComparseTo = (metavariableNameA === metavariableNameB);
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
return metavaraibleComparseTo;
|
|
156
|
-
}
|
|
157
|
-
|
|
158
133
|
compareParameter(parameter) {
|
|
159
134
|
let comparesToParamter = false;
|
|
160
135
|
|
|
@@ -175,6 +150,28 @@ export default define(class Statement extends Element {
|
|
|
175
150
|
return comparesToParamter;
|
|
176
151
|
}
|
|
177
152
|
|
|
153
|
+
compareMetavariable(metavariable) {
|
|
154
|
+
let comparesToMetavariableName;
|
|
155
|
+
|
|
156
|
+
const singular = this.isSingular();
|
|
157
|
+
|
|
158
|
+
if (singular) {
|
|
159
|
+
let metavariableName;
|
|
160
|
+
|
|
161
|
+
metavariableName = metavariable.getName();
|
|
162
|
+
|
|
163
|
+
const metavariableNameA = metavariableName; ///
|
|
164
|
+
|
|
165
|
+
metavariableName = this.getMetavariableName();
|
|
166
|
+
|
|
167
|
+
const metavariableNameB = metavariableName; ///
|
|
168
|
+
|
|
169
|
+
comparesToMetavariableName = (metavariableNameA === metavariableNameB);
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
return comparesToMetavariableName;
|
|
173
|
+
}
|
|
174
|
+
|
|
178
175
|
validate(assignments, stated, context) {
|
|
179
176
|
let validates;
|
|
180
177
|
|
|
@@ -42,13 +42,11 @@ export default define(class SubDerivation extends Element {
|
|
|
42
42
|
subproofOrProofAssertionVarifies = subproofOrProofAssertion.verify(substitutions, assignments, context);
|
|
43
43
|
|
|
44
44
|
if (subproofOrProofAssertionVarifies) {
|
|
45
|
-
|
|
45
|
+
assignAssignments(assignments, context);
|
|
46
46
|
|
|
47
|
-
|
|
48
|
-
context.addSubproofOrProofAssertion(subproofOrProofAssertion);
|
|
47
|
+
context.addSubproofOrProofAssertion(subproofOrProofAssertion);
|
|
49
48
|
|
|
50
|
-
|
|
51
|
-
}
|
|
49
|
+
return true;
|
|
52
50
|
}
|
|
53
51
|
});
|
|
54
52
|
|
|
@@ -45,7 +45,7 @@ export default define(class FrameSubstitution extends Substitution {
|
|
|
45
45
|
return replacementNode;
|
|
46
46
|
}
|
|
47
47
|
|
|
48
|
-
|
|
48
|
+
compareMetavariableName(metavariableName) { return this.targetFrame.compareMetavariableName(metavariableName); }
|
|
49
49
|
|
|
50
50
|
getMetavariableName() { return this.targetFrame.getMetavariableName(); }
|
|
51
51
|
|
|
@@ -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),
|
|
@@ -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); ///
|
|
@@ -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; ///
|