occam-verify-cli 0.0.678 → 0.0.680
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/bin/action/verify.js +13 -3
- package/lib/axiomLemmaTheoremConjecture.js +3 -3
- package/lib/conclusion.js +16 -5
- package/lib/consequent.js +11 -3
- package/lib/context/file.js +73 -3
- package/lib/context/release.js +7 -2
- package/lib/equality.js +13 -199
- package/lib/premise.js +24 -7
- package/lib/supposition.js +15 -4
- package/lib/type.js +3 -8
- package/lib/utilities/array.js +5 -2
- package/lib/utilities/string.js +26 -13
- package/lib/verifier/node/metastatement.js +176 -0
- package/lib/verifier/node/statementAsCombinator.js +186 -0
- package/lib/verifier/node/termAsConstructor.js +224 -0
- package/lib/verifier/node.js +158 -0
- package/lib/verifier/nodes/equality.js +155 -0
- package/lib/verifier/{metastatementForMetavariable → nodes/metastatementForMetavariable}/conclusion.js +13 -12
- package/lib/verifier/{metastatementForMetavariable → nodes/metastatementForMetavariable}/premise.js +13 -12
- package/lib/verifier/nodes/metastatementForMetavariable.js +198 -0
- package/lib/verifier/nodes/statement.js +200 -0
- package/lib/verifier/{statementForMetavariable → nodes/statementForMetavariable}/conclusion.js +13 -12
- package/lib/verifier/{statementForMetavariable → nodes/statementForMetavariable}/premise.js +13 -12
- package/lib/verifier/nodes/statementForMetavariable.js +203 -0
- package/lib/verifier/nodes/term.js +210 -0
- package/lib/verifier/{termForVariable/supposition.js → nodes/termForVariable/consequent.js} +13 -12
- package/lib/verifier/{termForVariable/consequent.js → nodes/termForVariable/supposition.js} +13 -12
- package/lib/verifier/nodes/termForVariable.js +217 -0
- package/lib/verifier/nodes.js +175 -0
- package/lib/verify/axiom.js +3 -3
- package/lib/verify/conclusion.js +3 -3
- package/lib/verify/conjecture.js +3 -3
- package/lib/verify/consequent.js +3 -3
- package/lib/verify/declaration/combinator.js +7 -2
- package/lib/verify/declaration/constructor.js +8 -2
- package/lib/verify/declaration/metavariable.js +7 -2
- package/lib/verify/declaration/type.js +7 -2
- package/lib/verify/declaration/variable.js +8 -2
- package/lib/verify/file.js +3 -3
- package/lib/verify/label.js +9 -4
- package/lib/verify/lemma.js +3 -3
- package/lib/verify/metastatement/qualified.js +5 -6
- package/lib/verify/metastatement/unqualified.js +9 -7
- package/lib/verify/metastatement.js +36 -156
- package/lib/verify/metavariable.js +6 -4
- package/lib/verify/premise.js +3 -3
- package/lib/verify/release.js +3 -3
- package/lib/verify/rule.js +3 -3
- package/lib/verify/statement/qualified.js +5 -6
- package/lib/verify/statement/unqualified.js +9 -7
- package/lib/verify/statement.js +86 -332
- package/lib/verify/statementAsCombinator.js +8 -82
- package/lib/verify/supposition.js +3 -3
- package/lib/verify/term.js +79 -215
- package/lib/verify/termAsConstructor.js +15 -89
- package/lib/verify/terms.js +45 -0
- package/lib/verify/theorem.js +3 -3
- package/lib/verify/type.js +7 -5
- package/lib/verify/typeAssertion.js +124 -0
- package/lib/verify/variable.js +7 -5
- package/package.json +5 -5
- package/src/axiomLemmaTheoremConjecture.js +2 -2
- package/src/conclusion.js +13 -4
- package/src/consequent.js +9 -2
- package/src/context/file.js +9 -2
- package/src/context/release.js +9 -2
- package/src/equality.js +17 -143
- package/src/premise.js +23 -6
- package/src/supposition.js +12 -3
- package/src/type.js +3 -8
- package/src/utilities/array.js +1 -1
- package/src/utilities/string.js +34 -23
- package/src/verifier/node/metastatement.js +61 -0
- package/src/verifier/node/statementAsCombinator.js +80 -0
- package/src/verifier/node/termAsConstructor.js +124 -0
- package/src/verifier/node.js +85 -0
- package/src/verifier/nodes/equality.js +68 -0
- package/src/verifier/nodes/metastatementForMetavariable/conclusion.js +11 -0
- package/src/verifier/nodes/metastatementForMetavariable/premise.js +11 -0
- package/src/verifier/{metastatementForMetavariable.js → nodes/metastatementForMetavariable.js} +13 -13
- package/src/verifier/nodes/statement.js +100 -0
- package/src/verifier/nodes/statementForMetavariable/conclusion.js +11 -0
- package/src/verifier/nodes/statementForMetavariable/premise.js +11 -0
- package/src/verifier/{statementForMetavariable.js → nodes/statementForMetavariable.js} +10 -10
- package/src/verifier/nodes/term.js +106 -0
- package/src/verifier/nodes/termForVariable/consequent.js +11 -0
- package/src/verifier/nodes/termForVariable/supposition.js +11 -0
- package/src/verifier/{termForVariable.js → nodes/termForVariable.js} +42 -30
- package/src/verifier/nodes.js +111 -0
- package/src/verify/axiom.js +2 -2
- package/src/verify/conclusion.js +2 -2
- package/src/verify/conjecture.js +2 -2
- package/src/verify/consequent.js +2 -2
- package/src/verify/declaration/combinator.js +9 -1
- package/src/verify/declaration/constructor.js +15 -1
- package/src/verify/declaration/metavariable.js +9 -1
- package/src/verify/declaration/type.js +14 -1
- package/src/verify/declaration/variable.js +15 -1
- package/src/verify/file.js +2 -2
- package/src/verify/label.js +10 -2
- package/src/verify/lemma.js +4 -4
- package/src/verify/metastatement/qualified.js +4 -6
- package/src/verify/metastatement/unqualified.js +9 -7
- package/src/verify/metastatement.js +35 -56
- package/src/verify/metavariable.js +6 -3
- package/src/verify/premise.js +2 -2
- package/src/verify/release.js +2 -2
- package/src/verify/rule.js +2 -2
- package/src/verify/statement/qualified.js +4 -6
- package/src/verify/statement/unqualified.js +9 -7
- package/src/verify/statement.js +109 -302
- package/src/verify/statementAsCombinator.js +9 -129
- package/src/verify/supposition.js +2 -2
- package/src/verify/term.js +99 -156
- package/src/verify/termAsConstructor.js +20 -135
- package/src/verify/terms.js +54 -0
- package/src/verify/theorem.js +2 -2
- package/src/verify/type.js +7 -4
- package/src/verify/typeAssertion.js +164 -0
- package/src/verify/variable.js +7 -4
- package/lib/node/statement/combinator/equality.js +0 -21
- package/lib/ocmbinator/equality.js +0 -126
- package/lib/tokens/statement/combinator/equality.js +0 -17
- package/lib/verifier/metastatementForMetavariable.js +0 -198
- package/lib/verifier/statementForMetavariable.js +0 -203
- package/lib/verifier/termForVariable.js +0 -209
- package/lib/verifier.js +0 -138
- package/lib/verify/assertion/type.js +0 -115
- package/lib/verify/typeInference.js +0 -132
- package/src/node/statement/combinator/equality.js +0 -9
- package/src/ocmbinator/equality.js +0 -23
- package/src/tokens/statement/combinator/equality.js +0 -10
- package/src/verifier/metastatementForMetavariable/conclusion.js +0 -9
- package/src/verifier/metastatementForMetavariable/premise.js +0 -9
- package/src/verifier/statementForMetavariable/conclusion.js +0 -9
- package/src/verifier/statementForMetavariable/premise.js +0 -9
- package/src/verifier/termForVariable/consequent.js +0 -9
- package/src/verifier/termForVariable/supposition.js +0 -9
- package/src/verifier.js +0 -74
- package/src/verify/assertion/type.js +0 -153
- package/src/verify/typeInference.js +0 -146
|
@@ -1,80 +1,59 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import metastatementNodeVerifier from "../verifier/node/metastatement";
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
function verifyMetastatement(metastatementNode, derived, metaproofContext) {
|
|
6
|
+
let metastatementVerified;
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, metaproofContext) {
|
|
10
|
-
let nonTerminalNodeVerified = false;
|
|
11
|
-
|
|
12
|
-
const nonTerminalNode = nonTerminalNodeA, ///
|
|
13
|
-
ruleName = nonTerminalNode.getRuleName(); ///
|
|
14
|
-
|
|
15
|
-
switch (ruleName) {
|
|
16
|
-
case METAVARIABLE_RULE_NAME: {
|
|
17
|
-
const metavariableNode = nonTerminalNode, ///
|
|
18
|
-
metavariableNodeVerified = this.verifyMetavariableNode(metavariableNode, metaproofContext);
|
|
19
|
-
|
|
20
|
-
nonTerminalNodeVerified = metavariableNodeVerified; ///
|
|
8
|
+
const metastatementString = metaproofContext.nodeAsString(metastatementNode);
|
|
21
9
|
|
|
22
|
-
|
|
23
|
-
}
|
|
10
|
+
metaproofContext.trace(`Verifying the '${metastatementString}' metastatement...`, metastatementNode);
|
|
24
11
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
nodesB = childNodes, ///
|
|
29
|
-
nodesVerified = this.verifyNodes(nodesA, nodesB, metaproofContext);
|
|
12
|
+
const verifyMetastatementFunctions = [
|
|
13
|
+
verifyStandaloneMetastatement
|
|
14
|
+
];
|
|
30
15
|
|
|
31
|
-
|
|
16
|
+
metastatementVerified = verifyMetastatementFunctions.some((verifyStatementFunction) => {
|
|
17
|
+
const metastatementVerified = verifyStatementFunction(metastatementNode, derived, metaproofContext);
|
|
32
18
|
|
|
33
|
-
|
|
34
|
-
|
|
19
|
+
if (metastatementVerified) {
|
|
20
|
+
return true;
|
|
35
21
|
}
|
|
22
|
+
});
|
|
36
23
|
|
|
37
|
-
|
|
24
|
+
if (metastatementVerified) {
|
|
25
|
+
metaproofContext.debug(`...verified the '${metastatementString}' metastatement.`, metastatementNode);
|
|
38
26
|
}
|
|
39
27
|
|
|
40
|
-
|
|
41
|
-
|
|
28
|
+
return metastatementVerified;
|
|
29
|
+
}
|
|
42
30
|
|
|
43
|
-
|
|
44
|
-
|
|
31
|
+
Object.assign(verifyMetastatement, {
|
|
32
|
+
metastatementNodeVerifier
|
|
33
|
+
});
|
|
45
34
|
|
|
46
|
-
|
|
47
|
-
const metavariableString = metaproofContext.nodeAsString(metavariableNode);
|
|
35
|
+
export default verifyMetastatement;
|
|
48
36
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
metavariableNodeVerified = true;
|
|
52
|
-
}
|
|
37
|
+
function verifyStandaloneMetastatement(metastatementNode, derived, metaproofContext) {
|
|
38
|
+
let standaloneMetastatementVerified;
|
|
53
39
|
|
|
54
|
-
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
export const metastatementVerifier = new MetastatementVerifier();
|
|
40
|
+
const metastatementString = metaproofContext.nodeAsString(metastatementNode);
|
|
59
41
|
|
|
60
|
-
|
|
61
|
-
let metastatementVerified = false;
|
|
42
|
+
metaproofContext.trace(`Verifying the '${metastatementString}' standalone metastatement...`, metastatementNode);
|
|
62
43
|
|
|
63
|
-
const
|
|
44
|
+
const nonTerminalNode = metastatementNode, ///
|
|
45
|
+
nonTerminalNodeVerified = metastatementNodeVerifier.verifyNonTerminalNode(nonTerminalNode, metaproofContext, () => {
|
|
46
|
+
const verifiedAhead = true;
|
|
64
47
|
|
|
65
|
-
|
|
48
|
+
return verifiedAhead;
|
|
49
|
+
});
|
|
66
50
|
|
|
67
|
-
|
|
68
|
-
const nonTerminalNodeA = metastatementNode, ///
|
|
69
|
-
nonTerminalNodeB = metastatementNode, ///
|
|
70
|
-
nonTerminalNodeVerified = metastatementVerifier.verifyNonTerminalNode(nonTerminalNodeA, nonTerminalNodeB, metaproofContext);
|
|
51
|
+
standaloneMetastatementVerified = nonTerminalNodeVerified; ///
|
|
71
52
|
|
|
72
|
-
|
|
53
|
+
if (standaloneMetastatementVerified) {
|
|
54
|
+
metaproofContext.debug(`...verified the '${metastatementString}' standalone metastatement.`, metastatementNode);
|
|
73
55
|
}
|
|
74
56
|
|
|
75
|
-
|
|
76
|
-
metaproofContext.debug(`Verified the '${metastatementString}' metastatement.`, metastatementNode);
|
|
77
|
-
}
|
|
57
|
+
return standaloneMetastatementVerified;
|
|
78
58
|
|
|
79
|
-
|
|
80
|
-
}
|
|
59
|
+
}
|
|
@@ -7,12 +7,15 @@ import { metaTypeNameFromMetaTypeNode, metavariableNameFromMetavariableNode } fr
|
|
|
7
7
|
export default function verifyMetavariable(metavariableNode, metaTypeNode, fileContext) {
|
|
8
8
|
let metavariableVerified = false;
|
|
9
9
|
|
|
10
|
+
const metavariableString = fileContext.nodeAsString(metavariableNode);
|
|
11
|
+
|
|
12
|
+
fileContext.trace(`Verifying the '${metavariableString}' metavariable...`, metavariableNode);
|
|
13
|
+
|
|
10
14
|
const metavariableName = metavariableNameFromMetavariableNode(metavariableNode),
|
|
11
|
-
metavariableString = fileContext.nodeAsString(metavariableNode),
|
|
12
15
|
metavariablePresent = fileContext.isMetavariablePresentByMetavariableName(metavariableName);
|
|
13
16
|
|
|
14
17
|
if (metavariablePresent) {
|
|
15
|
-
fileContext.
|
|
18
|
+
fileContext.debug(`The metavariable '${metavariableName}' is already present.`, metavariableNode);
|
|
16
19
|
} else {
|
|
17
20
|
const metaTypeName = metaTypeNameFromMetaTypeNode(metaTypeNode),
|
|
18
21
|
metaType = fileContext.findMetaTypeByMetaTypeName(metaTypeName),
|
|
@@ -25,7 +28,7 @@ export default function verifyMetavariable(metavariableNode, metaTypeNode, fileC
|
|
|
25
28
|
}
|
|
26
29
|
|
|
27
30
|
if (metavariableVerified) {
|
|
28
|
-
fileContext.
|
|
31
|
+
fileContext.debug(`...verified the '${metavariableString}' metavariable.`, metavariableNode);
|
|
29
32
|
}
|
|
30
33
|
|
|
31
34
|
return metavariableVerified;
|
package/src/verify/premise.js
CHANGED
|
@@ -14,7 +14,7 @@ export default function verifyPremise(premiseNode, premises, metaproofContext) {
|
|
|
14
14
|
|
|
15
15
|
const premiseString = metaproofContext.nodeAsString(premiseNode);
|
|
16
16
|
|
|
17
|
-
metaproofContext.
|
|
17
|
+
metaproofContext.trace(`Verifying the '${premiseString}' premise...`, premiseNode);
|
|
18
18
|
|
|
19
19
|
const derived = false,
|
|
20
20
|
unqualifiedMetastatementNode = unqualifiedMetastatementNodeQuery(premiseNode),
|
|
@@ -33,7 +33,7 @@ export default function verifyPremise(premiseNode, premises, metaproofContext) {
|
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
if (premiseVerified) {
|
|
36
|
-
metaproofContext.
|
|
36
|
+
metaproofContext.debug(`...verified the '${premiseString}' premise.`, premiseNode);
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
return premiseVerified;
|
package/src/verify/release.js
CHANGED
|
@@ -16,7 +16,7 @@ export default function verifyRelease(releaseName, releaseContextMap) {
|
|
|
16
16
|
if (verified) {
|
|
17
17
|
releaseVerified = true;
|
|
18
18
|
} else {
|
|
19
|
-
releaseContext.
|
|
19
|
+
releaseContext.info(`Verifying the '${releaseName}' project...`);
|
|
20
20
|
|
|
21
21
|
const releaseFilesVerified = verifyReleaseFiles(releaseContext);
|
|
22
22
|
|
|
@@ -29,7 +29,7 @@ export default function verifyRelease(releaseName, releaseContextMap) {
|
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
if (releaseVerified) {
|
|
32
|
-
releaseContext.info(
|
|
32
|
+
releaseContext.info(`...verified the '${releaseName}' project.`);
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
35
|
}
|
package/src/verify/rule.js
CHANGED
|
@@ -22,7 +22,7 @@ export default function verifyRule(ruleNode, fileContext) {
|
|
|
22
22
|
labelsString = fileContext.nodesAsString(labelNodes),
|
|
23
23
|
metaProofContext = MetaproofContext.fromFileContext(fileContext);
|
|
24
24
|
|
|
25
|
-
fileContext.
|
|
25
|
+
fileContext.trace(`Verifying the '${labelsString}' rule...`, ruleNode);
|
|
26
26
|
|
|
27
27
|
const labels = [],
|
|
28
28
|
labelsVerified = verifyLabels(labelNodes, labels, fileContext);
|
|
@@ -66,7 +66,7 @@ export default function verifyRule(ruleNode, fileContext) {
|
|
|
66
66
|
}
|
|
67
67
|
|
|
68
68
|
if (ruleVerified) {
|
|
69
|
-
fileContext.
|
|
69
|
+
fileContext.debug(`...verified the '${labelsString}' rule.`, ruleNode);
|
|
70
70
|
}
|
|
71
71
|
|
|
72
72
|
return ruleVerified;
|
|
@@ -14,7 +14,7 @@ export default function verifyQualifiedStatement(qualifiedStatementNode, assignm
|
|
|
14
14
|
const statementString = proofContext.nodeAsString(statementNode),
|
|
15
15
|
statementProofContext = proofContext; ///
|
|
16
16
|
|
|
17
|
-
proofContext.
|
|
17
|
+
proofContext.trace(`Verifying the '${statementString}' qualified statement...`, qualifiedStatementNode);
|
|
18
18
|
|
|
19
19
|
const referenceNode = referenceNodeQuery(qualifiedStatementNode),
|
|
20
20
|
referenceName = referenceNameFromReferenceNode(referenceNode);
|
|
@@ -68,12 +68,10 @@ export default function verifyQualifiedStatement(qualifiedStatementNode, assignm
|
|
|
68
68
|
qualifiedStatementVerified = conjectureMatchesStatement; ///
|
|
69
69
|
}
|
|
70
70
|
}
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
if (qualifiedStatementVerified) {
|
|
74
|
-
const statementString = proofContext.nodeAsString(statementNode);
|
|
75
71
|
|
|
76
|
-
|
|
72
|
+
if (qualifiedStatementVerified) {
|
|
73
|
+
proofContext.debug(`...verified the '${statementString}' qualified statement.`, qualifiedStatementNode);
|
|
74
|
+
}
|
|
77
75
|
}
|
|
78
76
|
|
|
79
77
|
return qualifiedStatementVerified;
|
|
@@ -14,7 +14,7 @@ export default function verifyUnqualifiedStatement(unqualifiedStatementNode, ass
|
|
|
14
14
|
if (statementNode !== null) {
|
|
15
15
|
const statementString = proofContext.nodeAsString(statementNode);
|
|
16
16
|
|
|
17
|
-
proofContext.
|
|
17
|
+
proofContext.trace(`Verifying the '${statementString}' unqualified statement...`, unqualifiedStatementNode);
|
|
18
18
|
|
|
19
19
|
if (derived) {
|
|
20
20
|
const statementMatches = proofContext.matchStatement(statementNode);
|
|
@@ -24,16 +24,18 @@ export default function verifyUnqualifiedStatement(unqualifiedStatementNode, ass
|
|
|
24
24
|
|
|
25
25
|
if (!unqualifiedStatementVerified) {
|
|
26
26
|
const context = proofContext, ///
|
|
27
|
-
statementVerified = verifyStatement(statementNode, assignments, derived, context)
|
|
27
|
+
statementVerified = verifyStatement(statementNode, assignments, derived, context, () => {
|
|
28
|
+
const verifiedAhead = true;
|
|
29
|
+
|
|
30
|
+
return verifiedAhead;
|
|
31
|
+
});
|
|
28
32
|
|
|
29
33
|
unqualifiedStatementVerified = statementVerified; ///
|
|
30
34
|
}
|
|
31
|
-
}
|
|
32
35
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
proofContext.info(`Verified the '${statementString}' unqualified statement.`, unqualifiedStatementNode);
|
|
36
|
+
if (unqualifiedStatementVerified) {
|
|
37
|
+
proofContext.debug(`...verified the '${statementString}' unqualified statement.`, unqualifiedStatementNode);
|
|
38
|
+
}
|
|
37
39
|
}
|
|
38
40
|
|
|
39
41
|
return unqualifiedStatementVerified;
|