occam-verify-cli 0.0.874 → 0.0.876
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 +8 -1
- package/lib/context/localMeta.js +5 -5
- package/lib/metaLemma.js +4 -4
- package/lib/metaLemmaMetatheorem.js +24 -27
- package/lib/metatheorem.js +4 -4
- package/lib/metavariable.js +39 -7
- package/lib/step/metaproof.js +8 -8
- package/lib/utilities/metaproof.js +12 -12
- package/lib/verify/conclusion.js +2 -2
- package/lib/verify/metaConsequent.js +6 -6
- package/lib/verify/metaDerivation.js +3 -3
- package/lib/verify/metaLemma.js +2 -2
- package/lib/verify/metaSupposition.js +8 -8
- package/lib/verify/metaSuppositions.js +3 -3
- package/lib/verify/metastatement/qualified.js +19 -2
- package/lib/verify/metastatement/unqualified.js +2 -2
- package/lib/verify/metatheorem.js +2 -2
- package/lib/verify/metavariable.js +2 -2
- package/lib/verify/premise.js +2 -2
- package/lib/verify/ruleDerivation.js +3 -3
- package/package.json +2 -2
- package/src/context/file.js +6 -0
- package/src/context/localMeta.js +4 -4
- package/src/metaLemma.js +1 -1
- package/src/metaLemmaMetatheorem.js +21 -27
- package/src/metatheorem.js +1 -1
- package/src/metavariable.js +50 -6
- package/src/step/metaproof.js +7 -8
- package/src/utilities/metaproof.js +9 -9
- package/src/verify/conclusion.js +2 -1
- package/src/verify/metaConsequent.js +6 -5
- package/src/verify/metaDerivation.js +2 -1
- package/src/verify/metaLemma.js +1 -1
- package/src/verify/metaSupposition.js +7 -7
- package/src/verify/metaSuppositions.js +2 -2
- package/src/verify/metastatement/qualified.js +18 -1
- package/src/verify/metastatement/unqualified.js +1 -1
- package/src/verify/metatheorem.js +1 -1
- package/src/verify/metavariable.js +1 -1
- package/src/verify/premise.js +2 -1
- package/src/verify/ruleDerivation.js +4 -2
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import Label from "./label";
|
|
4
|
-
import LocalContext from "./context/local";
|
|
5
4
|
import MetaConsequent from "./metaConsequent";
|
|
6
5
|
import MetaSupposition from "./metaSupposition";
|
|
6
|
+
import LocalMetaContext from "./context/localMeta";
|
|
7
7
|
|
|
8
8
|
import { prune } from "./utilities/array";
|
|
9
9
|
import { someSubArray } from "./utilities/array";
|
|
10
10
|
|
|
11
11
|
export default class MetaLemmaMetatheorem {
|
|
12
|
-
constructor(labels, metaSuppositions, metaConsequent,
|
|
12
|
+
constructor(labels, metaSuppositions, metaConsequent, fileContext) {
|
|
13
13
|
this.labels = labels;
|
|
14
14
|
this.metaSuppositions = metaSuppositions;
|
|
15
15
|
this.metaConsequent = metaConsequent;
|
|
16
|
-
this.
|
|
16
|
+
this.fileContext = fileContext;
|
|
17
17
|
}
|
|
18
18
|
|
|
19
19
|
getLabels() {
|
|
@@ -28,8 +28,8 @@ export default class MetaLemmaMetatheorem {
|
|
|
28
28
|
return this.metaConsequent;
|
|
29
29
|
}
|
|
30
30
|
|
|
31
|
-
|
|
32
|
-
return this.
|
|
31
|
+
getFileContext() {
|
|
32
|
+
return this.fileContext;
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
matchMetastatement(metastatementNode, metastatementLocalContext) {
|
|
@@ -39,7 +39,7 @@ export default class MetaLemmaMetatheorem {
|
|
|
39
39
|
|
|
40
40
|
if (metaSuppositionsLength === 0) {
|
|
41
41
|
const substitutions = [],
|
|
42
|
-
metaConsequentMatches = matchMetaConsequent(this.metaConsequent, metastatementNode, substitutions, this.
|
|
42
|
+
metaConsequentMatches = matchMetaConsequent(this.metaConsequent, metastatementNode, substitutions, this.fileContext, metastatementLocalContext);
|
|
43
43
|
|
|
44
44
|
metastatementNatches = metaConsequentMatches; ///
|
|
45
45
|
} else {
|
|
@@ -49,10 +49,10 @@ export default class MetaLemmaMetatheorem {
|
|
|
49
49
|
let metaSuppositionsMatchMetaConsequent = false;
|
|
50
50
|
|
|
51
51
|
const substitutions = [],
|
|
52
|
-
metaSuppositionsMatch = matchMetaSuppositions(this.metaSuppositions, metaproofSteps, substitutions, this.
|
|
52
|
+
metaSuppositionsMatch = matchMetaSuppositions(this.metaSuppositions, metaproofSteps, substitutions, this.fileContext, metastatementLocalContext);
|
|
53
53
|
|
|
54
54
|
if (metaSuppositionsMatch) {
|
|
55
|
-
const metaConsequentMatches = matchMetaConsequent(this.metaConsequent, metastatementNode, substitutions, this.
|
|
55
|
+
const metaConsequentMatches = matchMetaConsequent(this.metaConsequent, metastatementNode, substitutions, this.fileContext, metastatementLocalContext);
|
|
56
56
|
|
|
57
57
|
metaSuppositionsMatchMetaConsequent = metaConsequentMatches; ///
|
|
58
58
|
}
|
|
@@ -91,16 +91,16 @@ export default class MetaLemmaMetatheorem {
|
|
|
91
91
|
return metaSuppositionJSON;
|
|
92
92
|
}),
|
|
93
93
|
metaConsequentJSON = this.metaConsequent.toJSON(tokens),
|
|
94
|
-
localContextJSON = this.
|
|
94
|
+
localContextJSON = this.fileContext.toJSON(tokens),
|
|
95
95
|
labels = labelsJSON, ///
|
|
96
96
|
metaSuppositions = metaSuppositionsJSON, ///
|
|
97
97
|
metaConsequent = metaConsequentJSON, ///
|
|
98
|
-
|
|
98
|
+
fileContext = localContextJSON, ///
|
|
99
99
|
json = {
|
|
100
100
|
labels,
|
|
101
101
|
metaSuppositions,
|
|
102
102
|
metaConsequent,
|
|
103
|
-
|
|
103
|
+
fileContext
|
|
104
104
|
};
|
|
105
105
|
|
|
106
106
|
return json;
|
|
@@ -118,7 +118,7 @@ export default class MetaLemmaMetatheorem {
|
|
|
118
118
|
return label;
|
|
119
119
|
});
|
|
120
120
|
|
|
121
|
-
let { metaSuppositions, metaConsequent
|
|
121
|
+
let { metaSuppositions, metaConsequent } = json;
|
|
122
122
|
|
|
123
123
|
const metaSuppositionsJSON = metaSuppositions; ///
|
|
124
124
|
|
|
@@ -135,25 +135,19 @@ export default class MetaLemmaMetatheorem {
|
|
|
135
135
|
|
|
136
136
|
metaConsequent = MetaConsequent.fromJSONAndFileContext(json, fileContext);
|
|
137
137
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
json = localContextJSON; ///
|
|
141
|
-
|
|
142
|
-
localContext = LocalContext.fromJSONAndFileContext(json, fileContext);
|
|
143
|
-
|
|
144
|
-
return new Class(labels, metaSuppositions, metaConsequent, localContext); ///
|
|
138
|
+
return new Class(labels, metaSuppositions, metaConsequent, fileContext); ///
|
|
145
139
|
}
|
|
146
140
|
|
|
147
|
-
static
|
|
141
|
+
static fromLabelsMetaSuppositionsMetaConsequentAndFileContext(Class, labels, metaSuppositions, metaConsequent, fileContext) { return new Class(labels, metaSuppositions, metaConsequent, fileContext); }
|
|
148
142
|
}
|
|
149
143
|
|
|
150
|
-
function matchMetaSupposition(metaSupposition, metaproofSteps, substitutions,
|
|
144
|
+
function matchMetaSupposition(metaSupposition, metaproofSteps, substitutions, fileContext, metastatementLocalContext) {
|
|
151
145
|
const metaproofStep = prune(metaproofSteps, (metaproofStep) => {
|
|
152
146
|
const metaSubproofNode = metaproofStep.getMetaSubproofNode(),
|
|
153
147
|
metastatementNode = metaproofStep.getMetastatementNode();
|
|
154
148
|
|
|
155
149
|
if (metaSubproofNode !== null) {
|
|
156
|
-
const metaSubProofMatches = metaSupposition.matchMetaSubproofNode(metaSubproofNode, substitutions,
|
|
150
|
+
const metaSubProofMatches = metaSupposition.matchMetaSubproofNode(metaSubproofNode, substitutions, fileContext, metastatementLocalContext);
|
|
157
151
|
|
|
158
152
|
if (!metaSubProofMatches) { ///
|
|
159
153
|
return true;
|
|
@@ -161,7 +155,7 @@ function matchMetaSupposition(metaSupposition, metaproofSteps, substitutions, lo
|
|
|
161
155
|
}
|
|
162
156
|
|
|
163
157
|
if (metastatementNode !== null) {
|
|
164
|
-
const metastatementMatches = metaSupposition.matchMetastatementNode(metastatementNode, substitutions,
|
|
158
|
+
const metastatementMatches = metaSupposition.matchMetastatementNode(metastatementNode, substitutions, fileContext, metastatementLocalContext);
|
|
165
159
|
|
|
166
160
|
if (!metastatementMatches) { ///
|
|
167
161
|
return true;
|
|
@@ -174,9 +168,9 @@ function matchMetaSupposition(metaSupposition, metaproofSteps, substitutions, lo
|
|
|
174
168
|
return metaSuppositionMatches;
|
|
175
169
|
}
|
|
176
170
|
|
|
177
|
-
function matchMetaSuppositions(metaSuppositions, metaproofSteps, substitutions,
|
|
171
|
+
function matchMetaSuppositions(metaSuppositions, metaproofSteps, substitutions, fileContext, metastatementLocalContext) {
|
|
178
172
|
const metaSuppositionsMatch = metaSuppositions.every((metaSupposition) => {
|
|
179
|
-
const metaSuppositionMatches = matchMetaSupposition(metaSupposition, metaproofSteps, substitutions,
|
|
173
|
+
const metaSuppositionMatches = matchMetaSupposition(metaSupposition, metaproofSteps, substitutions, fileContext, metastatementLocalContext);
|
|
180
174
|
|
|
181
175
|
if (metaSuppositionMatches) {
|
|
182
176
|
return true;
|
|
@@ -186,8 +180,8 @@ function matchMetaSuppositions(metaSuppositions, metaproofSteps, substitutions,
|
|
|
186
180
|
return metaSuppositionsMatch;
|
|
187
181
|
}
|
|
188
182
|
|
|
189
|
-
function matchMetaConsequent(metaConsequent, metastatementNode, substitutions,
|
|
190
|
-
const nonTerminalNodeMatches = metaConsequent.matchMetastatementNode(metastatementNode, substitutions,
|
|
183
|
+
function matchMetaConsequent(metaConsequent, metastatementNode, substitutions, fileContext, metastatementLocalContext) {
|
|
184
|
+
const nonTerminalNodeMatches = metaConsequent.matchMetastatementNode(metastatementNode, substitutions, fileContext, metastatementLocalContext),
|
|
191
185
|
metaConsequentMatches = nonTerminalNodeMatches; ///
|
|
192
186
|
|
|
193
187
|
return metaConsequentMatches;
|
package/src/metatheorem.js
CHANGED
|
@@ -5,5 +5,5 @@ import MetaLemmaMetatheorem from "./metaLemmaMetatheorem";
|
|
|
5
5
|
export default class Metatheorem extends MetaLemmaMetatheorem {
|
|
6
6
|
static fromJSONAndFileContext(json, fileContext) { return MetaLemmaMetatheorem.fromJSONAndFileContext(Metatheorem, json, fileContext); }
|
|
7
7
|
|
|
8
|
-
static
|
|
8
|
+
static fromLabelsMetaSuppositionsMetaConsequentAndFileContext(labels, suppositions, consequent, fileContext) { return MetaLemmaMetatheorem.fromLabelsMetaSuppositionsMetaConsequentAndFileContext(Metatheorem, labels, suppositions, consequent, fileContext); }
|
|
9
9
|
}
|
package/src/metavariable.js
CHANGED
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import verifyTerm from "./verify/term";
|
|
4
|
+
import LocalContext from "./context/local";
|
|
5
|
+
|
|
6
|
+
import { first } from "./utilities/array";
|
|
3
7
|
import { nodeQuery } from "./utilities/query";
|
|
4
8
|
import { nodeAsString } from "./utilities/string";
|
|
5
9
|
import { nameFromMetavariableNode } from "./utilities/name";
|
|
6
10
|
import { metaTypeFromJSONAndFileContext } from "./metaType";
|
|
7
11
|
import { metavariableNodeFromMetavariableString } from "./utilities/node";
|
|
8
12
|
|
|
9
|
-
const
|
|
13
|
+
const termNodeQuery = nodeQuery("/metavariable/argument!/term!"),
|
|
14
|
+
typeNodeQuery = nodeQuery("/metavariable/argument!/type!");
|
|
10
15
|
|
|
11
16
|
export default class Metavariable {
|
|
12
17
|
constructor(node, name, termType, metaType) {
|
|
@@ -38,14 +43,28 @@ export default class Metavariable {
|
|
|
38
43
|
return nameMatches;
|
|
39
44
|
}
|
|
40
45
|
|
|
41
|
-
matchNode(node) {
|
|
42
|
-
let nodeMatches;
|
|
46
|
+
matchNode(node, localMetaContext) {
|
|
47
|
+
let nodeMatches = false;
|
|
43
48
|
|
|
44
49
|
const metavariableNode = node, ///
|
|
45
|
-
|
|
50
|
+
typeNode = typeNodeQuery(metavariableNode);
|
|
51
|
+
|
|
52
|
+
if (typeNode === null) {
|
|
53
|
+
const name = nameFromMetavariableNode(metavariableNode);
|
|
54
|
+
|
|
55
|
+
if (this.name === name) {
|
|
56
|
+
const termNode = termNodeQuery(metavariableNode);
|
|
57
|
+
|
|
58
|
+
if (false) {
|
|
59
|
+
///
|
|
60
|
+
} else if ((termNode === null) && (this.termType === null)) {
|
|
61
|
+
nodeMatches = true;
|
|
62
|
+
} else if ((termNode !== null) && (this.termType !== null)) {
|
|
63
|
+
const termVerifiedAgainstTermType = verifyTermAgainstTermType(termNode, this.termType, localMetaContext);
|
|
46
64
|
|
|
47
|
-
|
|
48
|
-
|
|
65
|
+
nodeMatches = termVerifiedAgainstTermType; ///
|
|
66
|
+
}
|
|
67
|
+
}
|
|
49
68
|
}
|
|
50
69
|
|
|
51
70
|
return nodeMatches;
|
|
@@ -104,6 +123,31 @@ export default class Metavariable {
|
|
|
104
123
|
}
|
|
105
124
|
}
|
|
106
125
|
|
|
126
|
+
function verifyTermAgainstTermType(termNode, termType, localMetaContext) {
|
|
127
|
+
let termVerifiedAgainstTermType;
|
|
128
|
+
|
|
129
|
+
const type = termType, ///
|
|
130
|
+
terms = [],
|
|
131
|
+
localContext = LocalContext.fromLocalMetaContext(localMetaContext);
|
|
132
|
+
|
|
133
|
+
termVerifiedAgainstTermType = verifyTerm(termNode, terms, localContext, () => {
|
|
134
|
+
let verifiedAhead = false;
|
|
135
|
+
|
|
136
|
+
const firstTerm = first(terms),
|
|
137
|
+
term = firstTerm, ///
|
|
138
|
+
termType = term.getType(),
|
|
139
|
+
termTypeEqualToOrSubTypeOfType = termType.isEqualToOrSubTypeOf(type);
|
|
140
|
+
|
|
141
|
+
if (termTypeEqualToOrSubTypeOfType) {
|
|
142
|
+
verifiedAhead = true;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
return verifiedAhead;
|
|
146
|
+
});
|
|
147
|
+
|
|
148
|
+
return termVerifiedAgainstTermType;
|
|
149
|
+
}
|
|
150
|
+
|
|
107
151
|
function termTypeFromMetavariableNode(metavariableNode, fileContext) {
|
|
108
152
|
let termType = null;
|
|
109
153
|
|
package/src/step/metaproof.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { first, second } from "../utilities/array";
|
|
4
|
+
import { matchMetastatement } from "../utilities/metaproof";
|
|
4
5
|
import { nodeQuery, nodesQuery } from "../utilities/query";
|
|
5
|
-
import { matchMetastatementModuloBrackets } from "../utilities/metaproof";
|
|
6
6
|
|
|
7
7
|
const metastatementNodesQuery = nodesQuery("/ruleSubproofAssertion/metastatement"),
|
|
8
8
|
ruleSubproofAssertionNodeQuery = nodeQuery("/metastatement/ruleSubproofAssertion"),
|
|
@@ -54,10 +54,9 @@ export default class MetaproofStep {
|
|
|
54
54
|
|
|
55
55
|
if (this.metastatementNode !== null) {
|
|
56
56
|
const metastatementNodeA = metastatementNode, ///
|
|
57
|
-
metastatementNodeB = this.metastatementNode
|
|
58
|
-
metastatementMatchesModuloBrackets = matchMetastatementModuloBrackets(metastatementNodeA, metastatementNodeB);
|
|
57
|
+
metastatementNodeB = this.metastatementNode; ///
|
|
59
58
|
|
|
60
|
-
metastatementMatches =
|
|
59
|
+
metastatementMatches = matchMetastatement(metastatementNodeA, metastatementNodeB);
|
|
61
60
|
}
|
|
62
61
|
|
|
63
62
|
return metastatementMatches;
|
|
@@ -74,17 +73,17 @@ export default class MetaproofStep {
|
|
|
74
73
|
|
|
75
74
|
const metastatementNodeA = firstRuleSubproofAssertionMetastatementNode, ///
|
|
76
75
|
metastatementNodeB = firstQualifiedOrUnqualifiedMetastatementMetastatementNode, ///
|
|
77
|
-
|
|
76
|
+
metastatementMatches = matchMetastatement(metastatementNodeA, metastatementNodeB);
|
|
78
77
|
|
|
79
|
-
if (
|
|
78
|
+
if (metastatementMatches) {
|
|
80
79
|
const secondRuleSubproofAssertionMetastatementNode = second(ruleSubproofAssertionMetastatementNodes),
|
|
81
80
|
secondQualifiedOrUnqualifiedMetastatementMetastatementNode = second(qualifiedOrUnqualifiedMetastatementMetastatementNodes);
|
|
82
81
|
|
|
83
82
|
const metastatementNodeA = secondRuleSubproofAssertionMetastatementNode, ///
|
|
84
83
|
metastatementNodeB = secondQualifiedOrUnqualifiedMetastatementMetastatementNode, ///
|
|
85
|
-
|
|
84
|
+
metastatementMatches = matchMetastatement(metastatementNodeA, metastatementNodeB);
|
|
86
85
|
|
|
87
|
-
ruleSubproofAssertionMatches =
|
|
86
|
+
ruleSubproofAssertionMatches = metastatementMatches; ///
|
|
88
87
|
}
|
|
89
88
|
}
|
|
90
89
|
|
|
@@ -7,36 +7,36 @@ import { BRACKETED_METASTATEMENT_DEPTH } from "../constants";
|
|
|
7
7
|
|
|
8
8
|
const bracketedMetastatementChildNodeQuery = nodeQuery("/metastatement/metastatement!");
|
|
9
9
|
|
|
10
|
-
export function
|
|
11
|
-
let
|
|
10
|
+
export function matchMetastatement(metastatementNodeA, metastatementNodeB) {
|
|
11
|
+
let metastatementMatches = false;
|
|
12
12
|
|
|
13
|
-
if (!
|
|
13
|
+
if (!metastatementMatches) {
|
|
14
14
|
const metastatementNodeMatches = metastatementNodeA.match(metastatementNodeB);
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
metastatementMatches = metastatementNodeMatches; ///
|
|
17
17
|
}
|
|
18
18
|
|
|
19
|
-
if (!
|
|
19
|
+
if (!metastatementMatches) {
|
|
20
20
|
const bracketedMetastatementChildNodeA = bracketedMetastatementChildNodeFromMetastatementNode(metastatementNodeA);
|
|
21
21
|
|
|
22
22
|
if (bracketedMetastatementChildNodeA !== null) {
|
|
23
23
|
const bracketedMetastatementChildNodeAMatchesMetastatementNodeB = bracketedMetastatementChildNodeA.match(metastatementNodeB);
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
metastatementMatches = bracketedMetastatementChildNodeAMatchesMetastatementNodeB; ///
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
if (!
|
|
29
|
+
if (!metastatementMatches) {
|
|
30
30
|
const bracketedMetastatementChildNodeB = bracketedMetastatementChildNodeFromMetastatementNode(metastatementNodeB);
|
|
31
31
|
|
|
32
32
|
if (bracketedMetastatementChildNodeB !== null) {
|
|
33
33
|
const metastatementNodeAMatchesBracketedMetastatementChildNodeB = metastatementNodeA.match(bracketedMetastatementChildNodeB);
|
|
34
34
|
|
|
35
|
-
|
|
35
|
+
metastatementMatches = metastatementNodeAMatchesBracketedMetastatementChildNodeB; ///
|
|
36
36
|
}
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
-
return
|
|
39
|
+
return metastatementMatches;
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
export function bracketedMetastatementChildNodeFromMetastatementNode(metastatementNode) {
|
package/src/verify/conclusion.js
CHANGED
|
@@ -16,8 +16,9 @@ export default function verifyConclusion(conclusionNode, conclusions, localMetaC
|
|
|
16
16
|
localMetaContext.trace(`Verifying the '${conclusionString}' conclusion...`, conclusionNode);
|
|
17
17
|
|
|
18
18
|
const derived = false,
|
|
19
|
+
assignments = [],
|
|
19
20
|
unqualifiedMetastatementNode = unqualifiedMetastatementNodeQuery(conclusionNode),
|
|
20
|
-
unqualifiedMetastatementVerified = verifyUnqualifiedMetastatement(unqualifiedMetastatementNode, derived, localMetaContext);
|
|
21
|
+
unqualifiedMetastatementVerified = verifyUnqualifiedMetastatement(unqualifiedMetastatementNode, assignments, derived, localMetaContext);
|
|
21
22
|
|
|
22
23
|
if (unqualifiedMetastatementVerified) {
|
|
23
24
|
const metastatementNode = metastatementNodeQuery(unqualifiedMetastatementNode),
|
|
@@ -8,16 +8,17 @@ import { nodeQuery } from "../utilities/query";
|
|
|
8
8
|
const metastatementNodeQuery = nodeQuery("/unqualifiedMetastatement/metastatement!"),
|
|
9
9
|
unqualifiedMetastatementNodeQuery = nodeQuery("/metaConsequent/unqualifiedMetastatement!");
|
|
10
10
|
|
|
11
|
-
export default function verifyMetaConsequent(metaConsequentNode, metaConsequents,
|
|
11
|
+
export default function verifyMetaConsequent(metaConsequentNode, metaConsequents, localMetaContext) {
|
|
12
12
|
let metaConsequentVerified = false;
|
|
13
13
|
|
|
14
|
-
const metaConsequentString =
|
|
14
|
+
const metaConsequentString = localMetaContext.nodeAsString(metaConsequentNode);
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
localMetaContext.trace(`Verifying the '${metaConsequentString}' meta-consequent...`, metaConsequentNode);
|
|
17
17
|
|
|
18
18
|
const derived = false,
|
|
19
|
+
assignments = [],
|
|
19
20
|
unqualifiedMetastatementNode = unqualifiedMetastatementNodeQuery(metaConsequentNode),
|
|
20
|
-
unqualifiedMetastatementVerified = verifyUnqualifiedMetastatement(unqualifiedMetastatementNode, derived,
|
|
21
|
+
unqualifiedMetastatementVerified = verifyUnqualifiedMetastatement(unqualifiedMetastatementNode, assignments, derived, localMetaContext);
|
|
21
22
|
|
|
22
23
|
if (unqualifiedMetastatementVerified) {
|
|
23
24
|
metaConsequentVerified = true;
|
|
@@ -29,7 +30,7 @@ export default function verifyMetaConsequent(metaConsequentNode, metaConsequents
|
|
|
29
30
|
|
|
30
31
|
metaConsequents.push(metaConsequent);
|
|
31
32
|
|
|
32
|
-
|
|
33
|
+
localMetaContext.debug(`...verified the '${metaConsequentString}' meta-consequent.`, metaConsequentNode);
|
|
33
34
|
}
|
|
34
35
|
|
|
35
36
|
return metaConsequentVerified;
|
|
@@ -97,9 +97,10 @@ function verifyChild(childNode, localMetaContext) {
|
|
|
97
97
|
|
|
98
98
|
const derived = true,
|
|
99
99
|
assignments = [],
|
|
100
|
+
metavariableReferences = true,
|
|
100
101
|
qualifiedMetastatementNode = childNode; ///
|
|
101
102
|
|
|
102
|
-
qualifiedMetastatementVerified = verifyQualifiedMetastatement(qualifiedMetastatementNode, assignments, derived, localMetaContext);
|
|
103
|
+
qualifiedMetastatementVerified = verifyQualifiedMetastatement(qualifiedMetastatementNode, metavariableReferences, assignments, derived, localMetaContext);
|
|
103
104
|
|
|
104
105
|
if (qualifiedMetastatementVerified) {
|
|
105
106
|
const assignmentAssigned = assignAssignment(assignments, localMetaContext);
|
package/src/verify/metaLemma.js
CHANGED
|
@@ -47,7 +47,7 @@ export default function verifyMetaLemma(metaLemmaNode, fileContext) {
|
|
|
47
47
|
metaproofVerified = verifyMetaproof(metaproofNode, metaConsequent, localMetaContext);
|
|
48
48
|
|
|
49
49
|
if (metaproofVerified) {
|
|
50
|
-
const metaLemma = MetaLemma.
|
|
50
|
+
const metaLemma = MetaLemma.fromLabelsMetaSuppositionsMetaConsequentAndFileContext(labels, metaSuppositions, metaConsequent, fileContext);
|
|
51
51
|
|
|
52
52
|
fileContext.addMetaLemma(metaLemma);
|
|
53
53
|
|
|
@@ -10,20 +10,20 @@ import { assignAssignment } from "../utilities/assignments";
|
|
|
10
10
|
const metastatementNodeQuery = nodeQuery("/unqualifiedMetastatement/metastatement!"),
|
|
11
11
|
unqualifiedMetastatementNodeQuery = nodeQuery("/metaSupposition/unqualifiedMetastatement!");
|
|
12
12
|
|
|
13
|
-
export default function verifyMetaSupposition(metaSuppositionNode, metaSuppositions,
|
|
13
|
+
export default function verifyMetaSupposition(metaSuppositionNode, metaSuppositions, localMetaContext) {
|
|
14
14
|
let metaSuppositionVerified = false;
|
|
15
15
|
|
|
16
|
-
const metaSuppositionString =
|
|
16
|
+
const metaSuppositionString = localMetaContext.nodeAsString(metaSuppositionNode);
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
localMetaContext.trace(`Verifying the '${metaSuppositionString}' meta-supposition...`, metaSuppositionNode);
|
|
19
19
|
|
|
20
20
|
const derived = false,
|
|
21
21
|
assignments = [],
|
|
22
22
|
unqualifiedMetastatementNode = unqualifiedMetastatementNodeQuery(metaSuppositionNode),
|
|
23
|
-
unqualifiedMetastatementVerified = verifyUnqualifiedMetastatement(unqualifiedMetastatementNode, assignments, derived,
|
|
23
|
+
unqualifiedMetastatementVerified = verifyUnqualifiedMetastatement(unqualifiedMetastatementNode, assignments, derived, localMetaContext);
|
|
24
24
|
|
|
25
25
|
if (unqualifiedMetastatementVerified) {
|
|
26
|
-
const assignmentAssigned = assignAssignment(assignments,
|
|
26
|
+
const assignmentAssigned = assignAssignment(assignments, localMetaContext);
|
|
27
27
|
|
|
28
28
|
metaSuppositionVerified = assignmentAssigned; ///
|
|
29
29
|
}
|
|
@@ -35,9 +35,9 @@ export default function verifyMetaSupposition(metaSuppositionNode, metaSuppositi
|
|
|
35
35
|
|
|
36
36
|
metaSuppositions.push(metaSupposition);
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
localMetaContext.addMetaproofStep(metaproofStep);
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
localMetaContext.debug(`...verified the '${metaSuppositionString}' meta-supposition.`, metaSuppositionNode);
|
|
41
41
|
}
|
|
42
42
|
|
|
43
43
|
return metaSuppositionVerified;
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
import verifyMetaSupposition from "../verify/metaSupposition";
|
|
4
4
|
|
|
5
|
-
export default function verifyMetaSuppositions(metaSuppositionNodes, metaSuppositions,
|
|
5
|
+
export default function verifyMetaSuppositions(metaSuppositionNodes, metaSuppositions, localMetaContext) {
|
|
6
6
|
let metaSuppositionsVerified;
|
|
7
7
|
|
|
8
8
|
metaSuppositionsVerified = metaSuppositionNodes.every((metaSuppositionNode) => {
|
|
9
|
-
const metaSuppositionVerified = verifyMetaSupposition(metaSuppositionNode, metaSuppositions,
|
|
9
|
+
const metaSuppositionVerified = verifyMetaSupposition(metaSuppositionNode, metaSuppositions, localMetaContext);
|
|
10
10
|
|
|
11
11
|
if (metaSuppositionVerified) {
|
|
12
12
|
return true;
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import verifyMetastatement from "../metastatement";
|
|
4
|
+
|
|
3
5
|
import { nodeQuery } from "../../utilities/query";
|
|
4
6
|
|
|
5
7
|
const metastatementNodeQuery = nodeQuery("/qualifiedMetastatement/metastatement!"),
|
|
6
8
|
referenceMetavariableNodeQuery = nodeQuery("/qualifiedMetastatement/reference!/metavariable!");
|
|
7
9
|
|
|
8
|
-
export default function verifyQualifiedMetastatement(qualifiedMetastatementNode, assignments, derived, localMetaContext) {
|
|
10
|
+
export default function verifyQualifiedMetastatement(qualifiedMetastatementNode, metavariableReferences, assignments, derived, localMetaContext) {
|
|
9
11
|
let qualifiedMetastatementVerified = false;
|
|
10
12
|
|
|
11
13
|
const metastatementNode = metastatementNodeQuery(qualifiedMetastatementNode);
|
|
@@ -24,6 +26,21 @@ export default function verifyQualifiedMetastatement(qualifiedMetastatementNode,
|
|
|
24
26
|
const ruleMatchesMetastatement = rule.matchMetastatement(metastatementNode, metastatementLocalMetaContext);
|
|
25
27
|
|
|
26
28
|
qualifiedMetastatementVerified = ruleMatchesMetastatement; ///
|
|
29
|
+
} else {
|
|
30
|
+
if (metavariableReferences) {
|
|
31
|
+
const metavariableNode = referenceMetavariableNode, ///
|
|
32
|
+
metavariablePresent = localMetaContext.isMetavariablePresentByMetavariableNode(metavariableNode, localMetaContext);
|
|
33
|
+
|
|
34
|
+
if (metavariablePresent) {
|
|
35
|
+
const metastatementVerified = verifyMetastatement(metastatementNode, derived, localMetaContext, () => {
|
|
36
|
+
const verifiedAhead = true;
|
|
37
|
+
|
|
38
|
+
return verifiedAhead;
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
qualifiedMetastatementVerified = metastatementVerified; ///
|
|
42
|
+
}
|
|
43
|
+
}
|
|
27
44
|
}
|
|
28
45
|
|
|
29
46
|
if (qualifiedMetastatementVerified) {
|
|
@@ -6,7 +6,7 @@ import { nodeQuery } from "../../utilities/query";
|
|
|
6
6
|
|
|
7
7
|
const metastatementNodeQuery = nodeQuery("/unqualifiedMetastatement/metastatement!");
|
|
8
8
|
|
|
9
|
-
export default function verifyUnqualifiedMetastatement(unqualifiedMetastatementNode, derived, localMetaContext) {
|
|
9
|
+
export default function verifyUnqualifiedMetastatement(unqualifiedMetastatementNode, assignments, derived, localMetaContext) {
|
|
10
10
|
let unqualifiedMetastatementVerified = false;
|
|
11
11
|
|
|
12
12
|
const metastatementNode = metastatementNodeQuery(unqualifiedMetastatementNode);
|
|
@@ -44,7 +44,7 @@ export default function verifyMetatheorem(metatheoremNode, fileContext) {
|
|
|
44
44
|
metaproofVerified = verifyMetaproof(metaproofNode, metaConsequent, localMetaContext);
|
|
45
45
|
|
|
46
46
|
if (metaproofVerified) {
|
|
47
|
-
const metatheorem = Metatheorem.
|
|
47
|
+
const metatheorem = Metatheorem.fromLabelsMetaSuppositionsMetaConsequentAndFileContext(labels, metaSuppositions, metaConsequent, fileContext);
|
|
48
48
|
|
|
49
49
|
fileContext.addMetatheorem(metatheorem);
|
|
50
50
|
|
|
@@ -73,7 +73,7 @@ export function verifyStandaloneMetavariable(metavariableNode, localMetaContext,
|
|
|
73
73
|
|
|
74
74
|
localMetaContext.trace(`Verifying the '${metavariableString}' standalone metavariable...`, metavariableNode);
|
|
75
75
|
|
|
76
|
-
const metavariablePresent = localMetaContext.isMetavariablePresentByMetavariableNode(metavariableNode);
|
|
76
|
+
const metavariablePresent = localMetaContext.isMetavariablePresentByMetavariableNode(metavariableNode, localMetaContext);
|
|
77
77
|
|
|
78
78
|
if (metavariablePresent) {
|
|
79
79
|
const verifiedAhead = verifyAhead();
|
package/src/verify/premise.js
CHANGED
|
@@ -17,8 +17,9 @@ export default function verifyPremise(premiseNode, premises, localMetaContext) {
|
|
|
17
17
|
localMetaContext.trace(`Verifying the '${premiseString}' premise...`, premiseNode);
|
|
18
18
|
|
|
19
19
|
const derived = false,
|
|
20
|
+
assignments = [],
|
|
20
21
|
unqualifiedMetastatementNode = unqualifiedMetastatementNodeQuery(premiseNode),
|
|
21
|
-
unqualifiedMetastatementVerified = verifyUnqualifiedMetastatement(unqualifiedMetastatementNode, derived, localMetaContext);
|
|
22
|
+
unqualifiedMetastatementVerified = verifyUnqualifiedMetastatement(unqualifiedMetastatementNode, assignments, derived, localMetaContext);
|
|
22
23
|
|
|
23
24
|
if (unqualifiedMetastatementVerified) {
|
|
24
25
|
const metastatementNode = metastatementNodeQuery(unqualifiedMetastatementNode),
|
|
@@ -91,8 +91,9 @@ function verifyChild(childNode, localMetaContext) {
|
|
|
91
91
|
case QUALIFIED_METASTATEMENT_RULE_NAME: {
|
|
92
92
|
const derived = true,
|
|
93
93
|
assignments = [],
|
|
94
|
+
metavariableReferences = true,
|
|
94
95
|
qualifiedMetastatementNode = childNode, ///
|
|
95
|
-
qualifiedMetastatementVerified = verifyQualifiedMetastatement(qualifiedMetastatementNode, assignments, derived, localMetaContext);
|
|
96
|
+
qualifiedMetastatementVerified = verifyQualifiedMetastatement(qualifiedMetastatementNode, metavariableReferences, assignments, derived, localMetaContext);
|
|
96
97
|
|
|
97
98
|
if (qualifiedMetastatementVerified) {
|
|
98
99
|
const metastatementNode = metastatementNodeQuery(qualifiedMetastatementNode),
|
|
@@ -108,8 +109,9 @@ function verifyChild(childNode, localMetaContext) {
|
|
|
108
109
|
|
|
109
110
|
case UNQUALIFIED_METASTATEMENT_RULE_NAME: {
|
|
110
111
|
const derived = true,
|
|
112
|
+
assignments = false,
|
|
111
113
|
unqualifiedMetastatementNode = childNode, ///
|
|
112
|
-
unqualifiedMetastatementVerified = verifyUnqualifiedMetastatement(unqualifiedMetastatementNode, derived, localMetaContext);
|
|
114
|
+
unqualifiedMetastatementVerified = verifyUnqualifiedMetastatement(unqualifiedMetastatementNode, assignments, derived, localMetaContext);
|
|
113
115
|
|
|
114
116
|
if (unqualifiedMetastatementVerified) {
|
|
115
117
|
const metastatementNode = metastatementNodeQuery(unqualifiedMetastatementNode),
|