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
package/src/element/label.js
CHANGED
|
@@ -16,6 +16,13 @@ export default define(class Label extends Element {
|
|
|
16
16
|
return this.metavariable;
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
+
getLabelNode() {
|
|
20
|
+
const node = this.getNode(),
|
|
21
|
+
labelNode = node; ///
|
|
22
|
+
|
|
23
|
+
return labelNode;
|
|
24
|
+
}
|
|
25
|
+
|
|
19
26
|
getMetavariableName() { return this.metavariable.getName(); }
|
|
20
27
|
|
|
21
28
|
getMetavariableNode() { return this.metavariable.getNode(); }
|
package/src/element/metaType.js
CHANGED
|
@@ -15,6 +15,13 @@ export default define(class MetaType extends Element {
|
|
|
15
15
|
return this.name;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
+
getMetaTypeNode() {
|
|
19
|
+
const node = this.getNode(),
|
|
20
|
+
metaTypeNode = node; ///
|
|
21
|
+
|
|
22
|
+
return metaTypeNode;
|
|
23
|
+
}
|
|
24
|
+
|
|
18
25
|
isEqualTo(metaType) {
|
|
19
26
|
const equalTo = (this === metaType);
|
|
20
27
|
|
|
@@ -41,7 +48,7 @@ export default define(class MetaType extends Element {
|
|
|
41
48
|
static fromJSON(json, context) {
|
|
42
49
|
const { name } = json,
|
|
43
50
|
metaTypeName = name, ///
|
|
44
|
-
metaType = findMetaTypeByMetaTypeName(metaTypeName);
|
|
51
|
+
metaType = context.findMetaTypeByMetaTypeName(metaTypeName);
|
|
45
52
|
|
|
46
53
|
return metaType;
|
|
47
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
|
|
|
@@ -148,10 +161,6 @@ export default define(class Metavariable extends Element {
|
|
|
148
161
|
framesubstitutionValidates = frameSubstitution.validate(generalContext, specificContext);
|
|
149
162
|
|
|
150
163
|
if (framesubstitutionValidates) {
|
|
151
|
-
const substitution = frameSubstitution; ///
|
|
152
|
-
|
|
153
|
-
context.addSubstitution(substitution);
|
|
154
|
-
|
|
155
164
|
frameUnifies = true;
|
|
156
165
|
}
|
|
157
166
|
}
|
|
@@ -212,10 +221,6 @@ export default define(class Metavariable extends Element {
|
|
|
212
221
|
const statementSubstitutionValidates = statementSubstitution.validate(generalContext, specificContext);
|
|
213
222
|
|
|
214
223
|
if (statementSubstitutionValidates) {
|
|
215
|
-
const substitution = statementSubstitution; ///
|
|
216
|
-
|
|
217
|
-
context.addSubstitution(substitution);
|
|
218
|
-
|
|
219
224
|
statementUnifies = true;
|
|
220
225
|
}
|
|
221
226
|
}
|
|
@@ -257,11 +262,12 @@ export default define(class Metavariable extends Element {
|
|
|
257
262
|
const { ReferenceSubstitution } = elements,
|
|
258
263
|
metavariable = this, ///
|
|
259
264
|
referenceSubstitution = ReferenceSubstitution.fromReferenceAndMetavariable(reference, metavariable, context),
|
|
260
|
-
|
|
265
|
+
referenceSubstitutionValidates = referenceSubstitution.validate(generalContext, specificContext);
|
|
261
266
|
|
|
262
|
-
|
|
267
|
+
if (referenceSubstitutionValidates) {
|
|
268
|
+
referenceUnifies = true;
|
|
263
269
|
|
|
264
|
-
|
|
270
|
+
}
|
|
265
271
|
}
|
|
266
272
|
}
|
|
267
273
|
|
|
@@ -313,7 +319,7 @@ export default define(class Metavariable extends Element {
|
|
|
313
319
|
|
|
314
320
|
if (generalContextFilePath === specificContextFilePath) {
|
|
315
321
|
const metavariableName = this.getMetavariableName(), ///
|
|
316
|
-
frameMetavariableComparesToMetvariable = frame.
|
|
322
|
+
frameMetavariableComparesToMetvariable = frame.compareMetavariableName(metavariableName);
|
|
317
323
|
|
|
318
324
|
if (frameMetavariableComparesToMetvariable) {
|
|
319
325
|
frameMetavariableUnifies = true;
|
package/src/element/parameter.js
CHANGED
|
@@ -20,6 +20,13 @@ export default define(class Parameter extends Element {
|
|
|
20
20
|
return this.identifier;
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
+
getParameterNode() {
|
|
24
|
+
const node = this.getNode(),
|
|
25
|
+
parameterNode = node; ///
|
|
26
|
+
|
|
27
|
+
return parameterNode;
|
|
28
|
+
}
|
|
29
|
+
|
|
23
30
|
findPrimitive(substitutions) {
|
|
24
31
|
let primitive = null;
|
|
25
32
|
|
|
@@ -24,7 +24,14 @@ export default define(class ProcedureCall extends Element {
|
|
|
24
24
|
return this.procedureReference;
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
getProcedureCallNode() {
|
|
28
|
+
const node = this.getNode(),
|
|
29
|
+
procedureCallNode = node;
|
|
30
|
+
|
|
31
|
+
return procedureCallNode;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
getProcedureName() { return this.procedureReference.getProcedureName(); }
|
|
28
35
|
|
|
29
36
|
findPrimitives(context) {
|
|
30
37
|
const substitutions = context.getSubstitutions(),
|
|
@@ -44,8 +51,8 @@ export default define(class ProcedureCall extends Element {
|
|
|
44
51
|
|
|
45
52
|
context.trace(`Validating the '${procedureCallString}' procedure call...`);
|
|
46
53
|
|
|
47
|
-
const
|
|
48
|
-
procedure = context.
|
|
54
|
+
const procedureName = this.getProcedureName(),
|
|
55
|
+
procedure = context.findProcedureByProcedureName(procedureName);
|
|
49
56
|
|
|
50
57
|
if (procedure !== null) {
|
|
51
58
|
const procedureBoolean = procedure.isBoolean();
|
|
@@ -73,13 +80,13 @@ export default define(class ProcedureCall extends Element {
|
|
|
73
80
|
|
|
74
81
|
context.trace(`Unifying the '${procedureCallString}' procedure call independently...`);
|
|
75
82
|
|
|
76
|
-
const
|
|
77
|
-
|
|
78
|
-
terms = termsFromPrimitives(primitives),
|
|
79
|
-
procedure = context.findProcedureByName(name);
|
|
83
|
+
const procedureName = this.getProcedureName(),
|
|
84
|
+
procedure = context.findProcedureByProcedureName(procedureName);
|
|
80
85
|
|
|
81
|
-
try {
|
|
82
|
-
const
|
|
86
|
+
// try {
|
|
87
|
+
const primitives = this.findPrimitives(context),
|
|
88
|
+
terms = termsFromPrimitives(primitives),
|
|
89
|
+
term = await procedure.call(terms, context),
|
|
83
90
|
boolean = term.isBoolean();
|
|
84
91
|
|
|
85
92
|
if (!boolean) {
|
|
@@ -91,11 +98,11 @@ export default define(class ProcedureCall extends Element {
|
|
|
91
98
|
unifiesIndependently = true;
|
|
92
99
|
}
|
|
93
100
|
}
|
|
94
|
-
} catch (exception) {
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
}
|
|
101
|
+
// } catch (exception) {
|
|
102
|
+
// const message = exception.getMessage();
|
|
103
|
+
//
|
|
104
|
+
// context.info(message);
|
|
105
|
+
// }
|
|
99
106
|
|
|
100
107
|
if (unifiesIndependently) {
|
|
101
108
|
context.debug(`...unified the '${procedureCallString}' procedure call independently.`);
|
|
@@ -14,6 +14,19 @@ export default define(class ProcedureReference extends Element {
|
|
|
14
14
|
return this.name;
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
+
getProcedureReferenceNode() {
|
|
18
|
+
const node = this.getNode(),
|
|
19
|
+
procedureReferenceNode = node; ///
|
|
20
|
+
|
|
21
|
+
return procedureReferenceNode;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
getProcedureName() {
|
|
25
|
+
const procedureName = this.name; ///
|
|
26
|
+
|
|
27
|
+
return procedureName;
|
|
28
|
+
}
|
|
29
|
+
|
|
17
30
|
toJSON() {
|
|
18
31
|
const name = this.name,
|
|
19
32
|
json = {
|
package/src/element/proof.js
CHANGED
|
@@ -16,6 +16,13 @@ export default define(class Proof extends Element {
|
|
|
16
16
|
return this.derivation;
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
+
getProofNode() {
|
|
20
|
+
const node = this.getNode(),
|
|
21
|
+
proofNode = node; ///
|
|
22
|
+
|
|
23
|
+
return proofNode;
|
|
24
|
+
}
|
|
25
|
+
|
|
19
26
|
getLastProofAssertion() { return this.derivation.getLastProofAssertion(); }
|
|
20
27
|
|
|
21
28
|
getStatement() {
|
|
@@ -15,6 +15,13 @@ export default class ProofAssertion extends Element {
|
|
|
15
15
|
return this.statement;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
+
getProofAssertionNode() {
|
|
19
|
+
const node = this.getNode(),
|
|
20
|
+
proofAssertionNode = node; ///
|
|
21
|
+
|
|
22
|
+
return proofAssertionNode;
|
|
23
|
+
}
|
|
24
|
+
|
|
18
25
|
isProofAssertion() {
|
|
19
26
|
const proofAssertion = true;
|
|
20
27
|
|
package/src/element/property.js
CHANGED
|
@@ -20,6 +20,13 @@ export default define(class Property extends Element {
|
|
|
20
20
|
return this.nominalTypeName;
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
+
getPropertyNode() {
|
|
24
|
+
const node = this.getNode(),
|
|
25
|
+
properetyNode = node; ///
|
|
26
|
+
|
|
27
|
+
return properetyNode;
|
|
28
|
+
}
|
|
29
|
+
|
|
23
30
|
comparePropertyName(propertyName) {
|
|
24
31
|
const comparesToPropertyName = (this.name === propertyName);
|
|
25
32
|
|
|
@@ -20,6 +20,13 @@ export default define(class PropertyRelation extends Element {
|
|
|
20
20
|
return this.term;
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
+
getPropertyRelationNode() {
|
|
24
|
+
const node = this.getNode(),
|
|
25
|
+
propertyRelationNode = node; ///
|
|
26
|
+
|
|
27
|
+
return propertyRelationNode;
|
|
28
|
+
}
|
|
29
|
+
|
|
23
30
|
verify(context) {
|
|
24
31
|
let verifies = false;
|
|
25
32
|
|
package/src/element/reference.js
CHANGED
|
@@ -20,6 +20,14 @@ export default define(class Reference extends Element {
|
|
|
20
20
|
return this.metavariable;
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
+
getReferenceNode() {
|
|
24
|
+
const node = this.getNode(),
|
|
25
|
+
referenceNode = node; ///
|
|
26
|
+
|
|
27
|
+
return referenceNode;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
|
|
23
31
|
getName() { return this.metavariable.getName(); }
|
|
24
32
|
|
|
25
33
|
getMetavariableName() {
|
|
@@ -34,13 +42,6 @@ export default define(class Reference extends Element {
|
|
|
34
42
|
return metavariableNode;
|
|
35
43
|
}
|
|
36
44
|
|
|
37
|
-
getReferenceNode() {
|
|
38
|
-
const node = this.getNode(),
|
|
39
|
-
assertionNode = node; ///
|
|
40
|
-
|
|
41
|
-
return assertionNode;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
45
|
matchReferenceNode(assertionNode) {
|
|
45
46
|
const assertionNodeA = assertionNode; ///
|
|
46
47
|
|
|
@@ -53,32 +54,18 @@ export default define(class Reference extends Element {
|
|
|
53
54
|
return equalTo;
|
|
54
55
|
}
|
|
55
56
|
|
|
56
|
-
matchMetavariableName(metavariableName) {
|
|
57
|
-
let metavariableNameMatches = false;
|
|
58
|
-
|
|
59
|
-
const metavariableNameA = metavariableName ///
|
|
60
|
-
|
|
61
|
-
metavariableName = this.getMetavariableName();
|
|
62
|
-
|
|
63
|
-
const metavariableNameB = metavariableName; ///
|
|
64
|
-
|
|
65
|
-
metavariableNameMatches = (metavariableNameA === metavariableNameB);
|
|
66
|
-
|
|
67
|
-
return metavariableNameMatches;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
57
|
isValid(context) {
|
|
71
|
-
const
|
|
72
|
-
|
|
73
|
-
valid =
|
|
58
|
+
const metavariableNode = this.getMetavariableNode(),
|
|
59
|
+
referencePresent = context.isReferencePresentByMetavariableNode(metavariableNode),
|
|
60
|
+
valid = referencePresent; ///
|
|
74
61
|
|
|
75
62
|
return valid;
|
|
76
63
|
}
|
|
77
64
|
|
|
78
|
-
isEqualTo(
|
|
79
|
-
const
|
|
80
|
-
|
|
81
|
-
equalTo =
|
|
65
|
+
isEqualTo(reference) {
|
|
66
|
+
const referenceNode = reference.getNode(),
|
|
67
|
+
referenceNodeMatches = this.matchReferenceNode(referenceNode),
|
|
68
|
+
equalTo = referenceNodeMatches; ///
|
|
82
69
|
|
|
83
70
|
return equalTo;
|
|
84
71
|
}
|
|
@@ -100,7 +87,7 @@ export default define(class Reference extends Element {
|
|
|
100
87
|
}
|
|
101
88
|
|
|
102
89
|
compareMetavariable(metavariable) {
|
|
103
|
-
let
|
|
90
|
+
let comparesToMetavariable = false;
|
|
104
91
|
|
|
105
92
|
let metavariableName;
|
|
106
93
|
|
|
@@ -113,15 +100,15 @@ export default define(class Reference extends Element {
|
|
|
113
100
|
const metavariableNameB = metavariableName; ///
|
|
114
101
|
|
|
115
102
|
if (metavariableNameA === metavariableNameB) {
|
|
116
|
-
|
|
103
|
+
comparesToMetavariable = true;
|
|
117
104
|
}
|
|
118
105
|
|
|
119
|
-
return
|
|
106
|
+
return comparesToMetavariable;
|
|
120
107
|
}
|
|
121
108
|
|
|
122
109
|
compareMetavariableName(metavariableName) { return this.metavariable.compareMetavariableName(metavariableName); }
|
|
123
110
|
|
|
124
|
-
matchMetavariableNode(metavariableNode) { return this.metavariable.
|
|
111
|
+
matchMetavariableNode(metavariableNode) { return this.metavariable.matchMetavariableNode(metavariableNode); }
|
|
125
112
|
|
|
126
113
|
validate(context) {
|
|
127
114
|
let validates = false;
|
|
@@ -167,7 +154,7 @@ export default define(class Reference extends Element {
|
|
|
167
154
|
context.trace(`Validating the '${referenceString}' reference's '${metavariableString}' metavariable....'`);
|
|
168
155
|
|
|
169
156
|
const metaTypeName = REFERENCE_META_TYPE_NAME,
|
|
170
|
-
referenceMetaType = findMetaTypeByMetaTypeName(metaTypeName),
|
|
157
|
+
referenceMetaType = context.findMetaTypeByMetaTypeName(metaTypeName),
|
|
171
158
|
metaType = referenceMetaType, ///
|
|
172
159
|
metavariable = context.findMetavariable(this.metavariable);
|
|
173
160
|
|
package/src/element/rule.js
CHANGED
|
@@ -43,6 +43,13 @@ export default define(class Rule extends Element {
|
|
|
43
43
|
return this.conclusion;
|
|
44
44
|
}
|
|
45
45
|
|
|
46
|
+
getRuleNode() {
|
|
47
|
+
const node = this.getNode(),
|
|
48
|
+
ruleNode = node; ///
|
|
49
|
+
|
|
50
|
+
return ruleNode;
|
|
51
|
+
}
|
|
52
|
+
|
|
46
53
|
compareMetavariableName(metavariableName) {
|
|
47
54
|
const comparesToMetavariableName = this.labels.some((label) => {
|
|
48
55
|
const labelComparesToMetavariableName = label.compareMetavariableName(metavariableName);
|
|
@@ -125,10 +132,6 @@ export default define(class Rule extends Element {
|
|
|
125
132
|
const proofVerifies = await this.verifyProof(context);
|
|
126
133
|
|
|
127
134
|
if (proofVerifies) {
|
|
128
|
-
const rule = this; ///
|
|
129
|
-
|
|
130
|
-
context.addRule(rule);
|
|
131
|
-
|
|
132
135
|
verifies = true;
|
|
133
136
|
}
|
|
134
137
|
}
|
|
@@ -137,6 +140,10 @@ export default define(class Rule extends Element {
|
|
|
137
140
|
}, context);
|
|
138
141
|
|
|
139
142
|
if (verifies) {
|
|
143
|
+
const rule = this;
|
|
144
|
+
|
|
145
|
+
context.addRule(rule);
|
|
146
|
+
|
|
140
147
|
context.debug(`...verified the '${ruleString}' rule.`);
|
|
141
148
|
}
|
|
142
149
|
|
|
@@ -177,15 +184,13 @@ export default define(class Rule extends Element {
|
|
|
177
184
|
premiseVerifies = await premise.verify(assignments, context)
|
|
178
185
|
|
|
179
186
|
if (premiseVerifies) {
|
|
180
|
-
|
|
187
|
+
assignAssignments(assignments, context);
|
|
181
188
|
|
|
182
|
-
|
|
183
|
-
const subproofOrProofAssertion = premise; ////
|
|
189
|
+
const subproofOrProofAssertion = premise; ////
|
|
184
190
|
|
|
185
|
-
|
|
191
|
+
context.addSubproofOrProofAssertion(subproofOrProofAssertion);
|
|
186
192
|
|
|
187
|
-
|
|
188
|
-
}
|
|
193
|
+
return true;
|
|
189
194
|
}
|
|
190
195
|
});
|
|
191
196
|
|
|
@@ -221,15 +226,7 @@ export default define(class Rule extends Element {
|
|
|
221
226
|
const subproofOrProofAssertionsUnifiesWithPremises = await this.unifySubproofOrProofAssertionsWithPremises(subproofOrProofAssertions, context);
|
|
222
227
|
|
|
223
228
|
if (subproofOrProofAssertionsUnifiesWithPremises) {
|
|
224
|
-
const
|
|
225
|
-
|
|
226
|
-
context = this.getContext();
|
|
227
|
-
|
|
228
|
-
const generalContext = context; ///
|
|
229
|
-
|
|
230
|
-
context = specificContext; ///
|
|
231
|
-
|
|
232
|
-
const substitutionsResolved = context.areSubstitutionsResolved(generalContext, specificContext);
|
|
229
|
+
const substitutionsResolved = context.areSubstitutionsResolved();
|
|
233
230
|
|
|
234
231
|
if (substitutionsResolved) {
|
|
235
232
|
statementAndSubproofOrProofAssertionsUnify = true;
|
package/src/element/section.js
CHANGED
|
@@ -35,6 +35,13 @@ export default define(class Section extends Element {
|
|
|
35
35
|
return this.conjecture;
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
+
getSectionNode() {
|
|
39
|
+
const node = this.getNode(),
|
|
40
|
+
sectionNode = node; ///
|
|
41
|
+
|
|
42
|
+
return sectionNode;
|
|
43
|
+
}
|
|
44
|
+
|
|
38
45
|
verifyHypotheses() {
|
|
39
46
|
const hypothesesVerify = this.hypotheses.every((hypothesis) => {
|
|
40
47
|
const hypothesisVerifies = hypothesis.verify(this.context);
|
package/src/element/signature.js
CHANGED
package/src/element/statement.js
CHANGED
|
@@ -11,30 +11,25 @@ import { STATEMENT_META_TYPE_NAME } from "../metaTypeNames";
|
|
|
11
11
|
const { match, backwardsSome } = arrayUtilities;
|
|
12
12
|
|
|
13
13
|
export default define(class Statement extends Element {
|
|
14
|
-
|
|
15
|
-
super(context, string, node);
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
isSingular() {
|
|
14
|
+
getStatementNode() {
|
|
19
15
|
const node = this.getNode(),
|
|
20
|
-
statementNode = node
|
|
21
|
-
singular = statementNode.isSingular();
|
|
16
|
+
statementNode = node; ///
|
|
22
17
|
|
|
23
|
-
return
|
|
18
|
+
return statementNode;
|
|
24
19
|
}
|
|
25
20
|
|
|
26
21
|
getMetavariableName() {
|
|
27
|
-
const
|
|
28
|
-
metavariableName =
|
|
22
|
+
const sttaementNode = this.getStatementNode(),
|
|
23
|
+
metavariableName = sttaementNode.getMetavariableName();
|
|
29
24
|
|
|
30
25
|
return metavariableName;
|
|
31
26
|
}
|
|
32
27
|
|
|
33
|
-
|
|
34
|
-
const
|
|
35
|
-
|
|
28
|
+
isSingular() {
|
|
29
|
+
const statementNode = this.getStatementNode(),
|
|
30
|
+
singular = statementNode.isSingular();
|
|
36
31
|
|
|
37
|
-
return
|
|
32
|
+
return singular;
|
|
38
33
|
}
|
|
39
34
|
|
|
40
35
|
matchStatementNode(statementNode) {
|
|
@@ -49,8 +44,8 @@ export default define(class Statement extends Element {
|
|
|
49
44
|
return equalTo;
|
|
50
45
|
}
|
|
51
46
|
|
|
52
|
-
|
|
53
|
-
let
|
|
47
|
+
compareMetavariableName(metavariableName) {
|
|
48
|
+
let comparesToMetavariableName = false;
|
|
54
49
|
|
|
55
50
|
const singular = this.isSingular();
|
|
56
51
|
|
|
@@ -61,10 +56,10 @@ export default define(class Statement extends Element {
|
|
|
61
56
|
|
|
62
57
|
const metavariableNameB = metavariableName; ///
|
|
63
58
|
|
|
64
|
-
|
|
59
|
+
comparesToMetavariableName = (metavariableNameA === metavariableNameB);
|
|
65
60
|
}
|
|
66
61
|
|
|
67
|
-
return
|
|
62
|
+
return comparesToMetavariableName;
|
|
68
63
|
}
|
|
69
64
|
|
|
70
65
|
isValid(context) {
|
|
@@ -95,7 +90,7 @@ export default define(class Statement extends Element {
|
|
|
95
90
|
statementNodeTermNodes = statementNode.getTermNodes();
|
|
96
91
|
|
|
97
92
|
termContained = statementNodeTermNodes.some((statementNodeTermNode) => { ///
|
|
98
|
-
const statementNodeTermNodeMatches = term.
|
|
93
|
+
const statementNodeTermNodeMatches = term.matchTermNode(statementNodeTermNode);
|
|
99
94
|
|
|
100
95
|
if (statementNodeTermNodeMatches) {
|
|
101
96
|
return true;
|
|
@@ -135,31 +130,6 @@ export default define(class Statement extends Element {
|
|
|
135
130
|
return frameContained;
|
|
136
131
|
}
|
|
137
132
|
|
|
138
|
-
compareMetavariable(metavariable) {
|
|
139
|
-
let metavaraibleComparseTo;
|
|
140
|
-
|
|
141
|
-
const singular = this.isSingular();
|
|
142
|
-
|
|
143
|
-
if (singular) {
|
|
144
|
-
let metavariableName;
|
|
145
|
-
|
|
146
|
-
const statementNode = this.getStatementNode(),
|
|
147
|
-
singularMetavariableNode = statementNode.getSingularMetavariableNode();
|
|
148
|
-
|
|
149
|
-
metavariableName = singularMetavariableNode.getMetavariableName();
|
|
150
|
-
|
|
151
|
-
const metavariableNameA = metavariableName ///
|
|
152
|
-
|
|
153
|
-
metavariableName = metavariable.getName();
|
|
154
|
-
|
|
155
|
-
const metavariableNameB = metavariableName; ///
|
|
156
|
-
|
|
157
|
-
metavaraibleComparseTo = (metavariableNameA === metavariableNameB);
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
return metavaraibleComparseTo;
|
|
161
|
-
}
|
|
162
|
-
|
|
163
133
|
compareParameter(parameter) {
|
|
164
134
|
let comparesToParamter = false;
|
|
165
135
|
|
|
@@ -180,6 +150,28 @@ export default define(class Statement extends Element {
|
|
|
180
150
|
return comparesToParamter;
|
|
181
151
|
}
|
|
182
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
|
+
|
|
183
175
|
validate(assignments, stated, context) {
|
|
184
176
|
let validates;
|
|
185
177
|
|
|
@@ -20,6 +20,13 @@ export default define(class SubDerivation extends Element {
|
|
|
20
20
|
return this.subproofOrProofAssertions;
|
|
21
21
|
}
|
|
22
22
|
|
|
23
|
+
getSubDerivationNode() {
|
|
24
|
+
const node = this.getNode(),
|
|
25
|
+
subDerivationNode = node; ///
|
|
26
|
+
|
|
27
|
+
return subDerivationNode;
|
|
28
|
+
}
|
|
29
|
+
|
|
23
30
|
getLastProofAssertion() {
|
|
24
31
|
const lastSubproofOrProofAssertion = last(this.subproofOrProofAssertions),
|
|
25
32
|
lastProofAssertion = lastSubproofOrProofAssertion; ///
|
|
@@ -35,13 +42,11 @@ export default define(class SubDerivation extends Element {
|
|
|
35
42
|
subproofOrProofAssertionVarifies = subproofOrProofAssertion.verify(substitutions, assignments, context);
|
|
36
43
|
|
|
37
44
|
if (subproofOrProofAssertionVarifies) {
|
|
38
|
-
|
|
45
|
+
assignAssignments(assignments, context);
|
|
39
46
|
|
|
40
|
-
|
|
41
|
-
context.addSubproofOrProofAssertion(subproofOrProofAssertion);
|
|
47
|
+
context.addSubproofOrProofAssertion(subproofOrProofAssertion);
|
|
42
48
|
|
|
43
|
-
|
|
44
|
-
}
|
|
49
|
+
return true;
|
|
45
50
|
}
|
|
46
51
|
});
|
|
47
52
|
|
package/src/element/subproof.js
CHANGED
|
@@ -21,6 +21,13 @@ export default define(class Subproof extends Element {
|
|
|
21
21
|
return this.subDerivation;
|
|
22
22
|
}
|
|
23
23
|
|
|
24
|
+
getSubproofNode() {
|
|
25
|
+
const node = this.getNode(),
|
|
26
|
+
subproofNode = node; ///
|
|
27
|
+
|
|
28
|
+
return subproofNode;
|
|
29
|
+
}
|
|
30
|
+
|
|
24
31
|
getLastProofAssertion() { return this.subDerivation.getLastProofAssertion(); }
|
|
25
32
|
|
|
26
33
|
getStatements() {
|
|
@@ -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
|
|
|
@@ -99,9 +99,9 @@ export default define(class FrameSubstitution extends Substitution {
|
|
|
99
99
|
}
|
|
100
100
|
|
|
101
101
|
if (validates) {
|
|
102
|
-
const
|
|
102
|
+
const substitution = this; ///
|
|
103
103
|
|
|
104
|
-
context.addSubstitution(
|
|
104
|
+
context.addSubstitution(substitution);
|
|
105
105
|
|
|
106
106
|
context.debug(`...validated the '${frameSubstitutionString}' frame substitution.`);
|
|
107
107
|
}
|