occam-verify-cli 0.0.870 → 0.0.871
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/axiomLemmaTheoremConjecture.js +13 -13
- package/lib/context/file.js +77 -73
- package/lib/label.js +5 -6
- package/lib/metaLemmaMetatheorem.js +13 -13
- package/lib/mixins/context.js +28 -28
- package/lib/rule.js +13 -13
- package/lib/ruleNames.js +4 -4
- package/lib/utilities/name.js +8 -8
- package/lib/utilities/node.js +14 -14
- package/lib/utilities/query.js +4 -9
- package/lib/utilities/tokens.js +6 -6
- package/lib/verify/axiom.js +4 -4
- package/lib/verify/conjecture.js +4 -4
- package/lib/verify/label.js +8 -9
- package/lib/verify/labels.js +15 -8
- package/lib/verify/lemma.js +4 -4
- package/lib/verify/metaLemma.js +4 -4
- package/lib/verify/metastatement/qualified.js +3 -3
- package/lib/verify/metatheorem.js +4 -4
- package/lib/verify/rule.js +4 -4
- package/lib/verify/statement/qualified.js +29 -29
- package/lib/verify/theorem.js +4 -4
- package/package.json +1 -1
- package/src/axiomLemmaTheoremConjecture.js +13 -13
- package/src/context/file.js +79 -73
- package/src/label.js +6 -7
- package/src/metaLemmaMetatheorem.js +13 -13
- package/src/mixins/context.js +17 -17
- package/src/rule.js +13 -13
- package/src/ruleNames.js +1 -1
- package/src/utilities/name.js +7 -7
- package/src/utilities/node.js +13 -13
- package/src/utilities/query.js +3 -9
- package/src/utilities/tokens.js +4 -4
- package/src/verify/axiom.js +4 -4
- package/src/verify/conjecture.js +4 -4
- package/src/verify/label.js +8 -9
- package/src/verify/labels.js +17 -7
- package/src/verify/lemma.js +4 -4
- package/src/verify/metaLemma.js +4 -4
- package/src/verify/metastatement/qualified.js +5 -4
- package/src/verify/metatheorem.js +4 -4
- package/src/verify/rule.js +4 -4
- package/src/verify/statement/qualified.js +35 -30
- package/src/verify/theorem.js +4 -4
|
@@ -5,10 +5,10 @@ import verifyTypeAssertion from "../typeAssertion";
|
|
|
5
5
|
|
|
6
6
|
import { nodeQuery } from "../../utilities/query";
|
|
7
7
|
|
|
8
|
-
const
|
|
9
|
-
equalityNodeQuery = nodeQuery("/qualifiedStatement/statement/equality!"),
|
|
8
|
+
const equalityNodeQuery = nodeQuery("/qualifiedStatement/statement/equality!"),
|
|
10
9
|
statementNodeQuery = nodeQuery("/qualifiedStatement/statement!"),
|
|
11
|
-
typeAssertionNodeQuery = nodeQuery("/qualifiedStatement/statement/typeAssertion!")
|
|
10
|
+
typeAssertionNodeQuery = nodeQuery("/qualifiedStatement/statement/typeAssertion!"),
|
|
11
|
+
referenceMetavariableNodeQuery = nodeQuery("/qualifiedStatement/reference!/metavariable!");
|
|
12
12
|
|
|
13
13
|
export default function verifyQualifiedStatement(qualifiedStatementNode, assignments, derived, localContext) {
|
|
14
14
|
let qualifiedStatementVerified = false;
|
|
@@ -20,7 +20,7 @@ export default function verifyQualifiedStatement(qualifiedStatementNode, assignm
|
|
|
20
20
|
|
|
21
21
|
localContext.trace(`Verifying the '${qualifiedStatementString}' qualified statement...`, qualifiedStatementNode);
|
|
22
22
|
|
|
23
|
-
const
|
|
23
|
+
const referenceMetavariableNode = referenceMetavariableNodeQuery(qualifiedStatementNode),
|
|
24
24
|
verifyQualifiedStatementFunctions = [
|
|
25
25
|
verifyQualifiedStatementAAgainstRule,
|
|
26
26
|
verifyQualifiedStatementAAgainstAxiom,
|
|
@@ -30,7 +30,7 @@ export default function verifyQualifiedStatement(qualifiedStatementNode, assignm
|
|
|
30
30
|
];
|
|
31
31
|
|
|
32
32
|
qualifiedStatementVerified = verifyQualifiedStatementFunctions.some((verifyQualifiedStatementFunction) => { ///
|
|
33
|
-
const qualifiedStatementVerified = verifyQualifiedStatementFunction(qualifiedStatementNode,
|
|
33
|
+
const qualifiedStatementVerified = verifyQualifiedStatementFunction(qualifiedStatementNode, referenceMetavariableNode, localContext);
|
|
34
34
|
|
|
35
35
|
if (qualifiedStatementVerified) {
|
|
36
36
|
return true;
|
|
@@ -66,125 +66,130 @@ export default function verifyQualifiedStatement(qualifiedStatementNode, assignm
|
|
|
66
66
|
return qualifiedStatementVerified;
|
|
67
67
|
}
|
|
68
68
|
|
|
69
|
-
function verifyQualifiedStatementAAgainstRule(qualifiedStatementNode,
|
|
69
|
+
function verifyQualifiedStatementAAgainstRule(qualifiedStatementNode, referenceMetavariableNode, localContext) {
|
|
70
70
|
let qualifiedStatementVerifiedAgainstRule = false;
|
|
71
71
|
|
|
72
|
-
const
|
|
72
|
+
const labelMetavariableNode = referenceMetavariableNode, ///
|
|
73
|
+
rule = localContext.findRuleByLabelMetavariableNode(labelMetavariableNode);
|
|
73
74
|
|
|
74
75
|
if (rule !== null) {
|
|
75
|
-
const
|
|
76
|
+
const referenceMetavariableString = localContext.nodeAsString(referenceMetavariableNode),
|
|
76
77
|
statementNode = statementNodeQuery(qualifiedStatementNode),
|
|
77
78
|
statementLocalContext = localContext, ///
|
|
78
79
|
qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
|
|
79
80
|
|
|
80
|
-
localContext.trace(`Verifying the '${qualifiedStatementString}' qualified statement against the '${
|
|
81
|
+
localContext.trace(`Verifying the '${qualifiedStatementString}' qualified statement against the '${referenceMetavariableString}' rule...`, statementNode);
|
|
81
82
|
|
|
82
83
|
const ruleMatchesStatement = rule.matchStatement(statementNode, statementLocalContext);
|
|
83
84
|
|
|
84
85
|
qualifiedStatementVerifiedAgainstRule = ruleMatchesStatement; ///
|
|
85
86
|
|
|
86
87
|
if (qualifiedStatementVerifiedAgainstRule) {
|
|
87
|
-
localContext.debug(`...verified the '${qualifiedStatementString}' qualified statement against the '${
|
|
88
|
+
localContext.debug(`...verified the '${qualifiedStatementString}' qualified statement against the '${referenceMetavariableString}' rule.`, statementNode);
|
|
88
89
|
}
|
|
89
90
|
}
|
|
90
91
|
|
|
91
92
|
return qualifiedStatementVerifiedAgainstRule;
|
|
92
93
|
}
|
|
93
94
|
|
|
94
|
-
function verifyQualifiedStatementAAgainstAxiom(qualifiedStatementNode,
|
|
95
|
+
function verifyQualifiedStatementAAgainstAxiom(qualifiedStatementNode, referenceMetavariableNode, localContext) {
|
|
95
96
|
let qualifiedStatementVerifiedAgainstAxiom = false;
|
|
96
97
|
|
|
97
|
-
const
|
|
98
|
+
const labelMetavariableNode = referenceMetavariableNode, ///
|
|
99
|
+
axiom = localContext.findAxiomByLabelMetavariableNode(labelMetavariableNode);
|
|
98
100
|
|
|
99
101
|
if (axiom !== null) {
|
|
100
|
-
const
|
|
102
|
+
const referenceMetavariableString = localContext.nodeAsString(referenceMetavariableNode),
|
|
101
103
|
statementNode = statementNodeQuery(qualifiedStatementNode),
|
|
102
104
|
statementLocalContext = localContext, ///
|
|
103
105
|
qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
|
|
104
106
|
|
|
105
|
-
localContext.trace(`Verifying the '${qualifiedStatementString}' qualified statement against the '${
|
|
107
|
+
localContext.trace(`Verifying the '${qualifiedStatementString}' qualified statement against the '${referenceMetavariableString}' axiom...`, statementNode);
|
|
106
108
|
|
|
107
109
|
const axiomMatchesStatement = axiom.matchStatement(statementNode, statementLocalContext);
|
|
108
110
|
|
|
109
111
|
qualifiedStatementVerifiedAgainstAxiom = axiomMatchesStatement; ///
|
|
110
112
|
|
|
111
113
|
if (qualifiedStatementVerifiedAgainstAxiom) {
|
|
112
|
-
localContext.debug(`...verified the '${qualifiedStatementString}' qualified statement against the '${
|
|
114
|
+
localContext.debug(`...verified the '${qualifiedStatementString}' qualified statement against the '${referenceMetavariableString}' axiom.`, statementNode);
|
|
113
115
|
}
|
|
114
116
|
}
|
|
115
117
|
|
|
116
118
|
return qualifiedStatementVerifiedAgainstAxiom;
|
|
117
119
|
}
|
|
118
120
|
|
|
119
|
-
function verifyQualifiedStatementAAgainstLemma(qualifiedStatementNode,
|
|
121
|
+
function verifyQualifiedStatementAAgainstLemma(qualifiedStatementNode, referenceMetavariableNode, localContext) {
|
|
120
122
|
let qualifiedStatementVerifiedAgainstLemma = false;
|
|
121
123
|
|
|
122
|
-
const
|
|
124
|
+
const labelMetavariableNode = referenceMetavariableNode, ///
|
|
125
|
+
lemma = localContext.findLemmaByLabelMetavariableNode(labelMetavariableNode);
|
|
123
126
|
|
|
124
127
|
if (lemma !== null) {
|
|
125
|
-
const
|
|
128
|
+
const referenceMetavariableString = localContext.nodeAsString(referenceMetavariableNode),
|
|
126
129
|
statementNode = statementNodeQuery(qualifiedStatementNode),
|
|
127
130
|
statementLocalContext = localContext, ///
|
|
128
131
|
qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
|
|
129
132
|
|
|
130
|
-
localContext.trace(`Verifying the '${qualifiedStatementString}' qualified statement against the '${
|
|
133
|
+
localContext.trace(`Verifying the '${qualifiedStatementString}' qualified statement against the '${referenceMetavariableString}' lemma...`, statementNode);
|
|
131
134
|
|
|
132
135
|
const lemmaMatchesStatement = lemma.matchStatement(statementNode, statementLocalContext);
|
|
133
136
|
|
|
134
137
|
qualifiedStatementVerifiedAgainstLemma = lemmaMatchesStatement; ///
|
|
135
138
|
|
|
136
139
|
if (qualifiedStatementVerifiedAgainstLemma) {
|
|
137
|
-
localContext.debug(`...verified the '${qualifiedStatementString}' qualified statement against the '${
|
|
140
|
+
localContext.debug(`...verified the '${qualifiedStatementString}' qualified statement against the '${referenceMetavariableString}' lemma.`, statementNode);
|
|
138
141
|
}
|
|
139
142
|
}
|
|
140
143
|
|
|
141
144
|
return qualifiedStatementVerifiedAgainstLemma;
|
|
142
145
|
}
|
|
143
146
|
|
|
144
|
-
function verifyQualifiedStatementAAgainstTheorem(qualifiedStatementNode,
|
|
147
|
+
function verifyQualifiedStatementAAgainstTheorem(qualifiedStatementNode, referenceMetavariableNode, localContext) {
|
|
145
148
|
let qualifiedStatementVerifiedAgainstTheorem = false;
|
|
146
149
|
|
|
147
|
-
const
|
|
150
|
+
const labelMetavariableNode = referenceMetavariableNode, ///
|
|
151
|
+
theorem = localContext.findTheoremByLabelMetavariableNode(labelMetavariableNode);
|
|
148
152
|
|
|
149
153
|
if (theorem !== null) {
|
|
150
|
-
const
|
|
154
|
+
const referenceMetavariableString = localContext.nodeAsString(referenceMetavariableNode),
|
|
151
155
|
statementNode = statementNodeQuery(qualifiedStatementNode),
|
|
152
156
|
statementLocalContext = localContext, ///
|
|
153
157
|
qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
|
|
154
158
|
|
|
155
|
-
localContext.trace(`Verifying the '${qualifiedStatementString}' qualified statement against the '${
|
|
159
|
+
localContext.trace(`Verifying the '${qualifiedStatementString}' qualified statement against the '${referenceMetavariableString}' theorem...`, statementNode);
|
|
156
160
|
|
|
157
161
|
const theoremMatchesStatement = theorem.matchStatement(statementNode, statementLocalContext);
|
|
158
162
|
|
|
159
163
|
qualifiedStatementVerifiedAgainstTheorem = theoremMatchesStatement; ///
|
|
160
164
|
|
|
161
165
|
if (qualifiedStatementVerifiedAgainstTheorem) {
|
|
162
|
-
localContext.debug(`...verified the '${qualifiedStatementString}' qualified statement against the '${
|
|
166
|
+
localContext.debug(`...verified the '${qualifiedStatementString}' qualified statement against the '${referenceMetavariableString}' theorem.`, statementNode);
|
|
163
167
|
}
|
|
164
168
|
}
|
|
165
169
|
|
|
166
170
|
return qualifiedStatementVerifiedAgainstTheorem;
|
|
167
171
|
}
|
|
168
172
|
|
|
169
|
-
function verifyQualifiedStatementAAgainstConjecture(qualifiedStatementNode,
|
|
173
|
+
function verifyQualifiedStatementAAgainstConjecture(qualifiedStatementNode, referenceMetavariableNode, localContext) {
|
|
170
174
|
let qualifiedStatementVerifiedAgainstConjecture = false;
|
|
171
175
|
|
|
172
|
-
const
|
|
176
|
+
const labelMetavariableNode = referenceMetavariableNode, ///
|
|
177
|
+
conjecture = localContext.findConjectureByLabelMetavariableNode(labelMetavariableNode);
|
|
173
178
|
|
|
174
179
|
if (conjecture !== null) {
|
|
175
|
-
const
|
|
180
|
+
const referenceMetavariableString = localContext.nodeAsString(referenceMetavariableNode),
|
|
176
181
|
statementNode = statementNodeQuery(qualifiedStatementNode),
|
|
177
182
|
statementLocalContext = localContext, ///
|
|
178
183
|
qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
|
|
179
184
|
|
|
180
|
-
localContext.trace(`Verifying the '${qualifiedStatementString}' qualified statement against the '${
|
|
185
|
+
localContext.trace(`Verifying the '${qualifiedStatementString}' qualified statement against the '${referenceMetavariableString}' conjecture...`, statementNode);
|
|
181
186
|
|
|
182
187
|
const conjectureMatchesStatement = conjecture.matchStatement(statementNode, statementLocalContext);
|
|
183
188
|
|
|
184
189
|
qualifiedStatementVerifiedAgainstConjecture = conjectureMatchesStatement; ///
|
|
185
190
|
|
|
186
191
|
if (qualifiedStatementVerifiedAgainstConjecture) {
|
|
187
|
-
localContext.debug(`...verified the '${qualifiedStatementString}' qualified statement against the '${
|
|
192
|
+
localContext.debug(`...verified the '${qualifiedStatementString}' qualified statement against the '${referenceMetavariableString}' conjecture.`, statementNode);
|
|
188
193
|
}
|
|
189
194
|
}
|
|
190
195
|
|
package/src/verify/theorem.js
CHANGED
|
@@ -11,21 +11,21 @@ import { first } from "../utilities/array";
|
|
|
11
11
|
import { nodeQuery, nodesQuery } from "../utilities/query";
|
|
12
12
|
|
|
13
13
|
const proofNodeQuery = nodeQuery("/theorem/proof!"),
|
|
14
|
-
|
|
14
|
+
labelsNodeQuery = nodeQuery("/theorem/labels!"),
|
|
15
15
|
consequentNodeQuery = nodeQuery("/theorem/consequent!"),
|
|
16
16
|
suppositionsNodeQuery = nodesQuery("/theorem/supposition");
|
|
17
17
|
|
|
18
18
|
export default function verifyTheorem(theoremNode, fileContext) {
|
|
19
19
|
let theoremVerified = false;
|
|
20
20
|
|
|
21
|
-
const
|
|
22
|
-
labelsString = fileContext.
|
|
21
|
+
const labelsNode = labelsNodeQuery(theoremNode),
|
|
22
|
+
labelsString = fileContext.nodeAsString(labelsNode),
|
|
23
23
|
localContext = LocalContext.fromFileContext(fileContext);
|
|
24
24
|
|
|
25
25
|
fileContext.trace(`Verifying the '${labelsString}' theorem...`, theoremNode);
|
|
26
26
|
|
|
27
27
|
const labels = [],
|
|
28
|
-
labelsVerified = verifyLabels(
|
|
28
|
+
labelsVerified = verifyLabels(labelsNode, labels, fileContext);
|
|
29
29
|
|
|
30
30
|
if (labelsVerified) {
|
|
31
31
|
const suppositions = [],
|