occam-verify-cli 0.0.967 → 0.0.971
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 +6 -22
- package/bin/main.js +27 -0
- package/lib/constants.js +5 -1
- package/lib/context/file.js +48 -53
- package/lib/context/local.js +45 -39
- package/lib/context/release.js +3 -3
- package/lib/declaration.js +9 -7
- package/lib/equivalence.js +23 -21
- package/lib/judgement.js +3 -3
- package/lib/label.js +3 -3
- package/lib/log.js +3 -3
- package/lib/metaType.js +7 -7
- package/lib/metavariable.js +12 -43
- package/lib/node/term/bracketed.js +16 -0
- package/lib/proofStep.js +3 -29
- package/lib/releaseContext/initialise.js +11 -17
- package/lib/resolve/substitutions.js +99 -0
- package/lib/rule.js +10 -6
- package/lib/substitution/statementForMetavariable.js +93 -98
- package/lib/substitution/termForVariable.js +45 -54
- package/lib/substitution.js +51 -9
- package/lib/substitutions.js +165 -12
- package/lib/term.js +8 -1
- package/lib/topLevelAssertion.js +10 -6
- package/lib/type.js +5 -5
- package/lib/unifier/metaLevel.js +10 -3
- package/lib/unifier/statementWithCombinator.js +6 -6
- package/lib/unifier.js +2 -2
- package/lib/unify/metavariableWithStatement.js +13 -48
- package/lib/unify/metavariableWithStatementGivenSubstitution.js +39 -0
- package/lib/unify/premiseWithProofStep.js +3 -3
- package/lib/unify/statement/qualified.js +117 -0
- package/lib/unify/statement/unqualified.js +25 -0
- package/lib/unify/statementWithBracketedCombinator.js +3 -3
- package/lib/unify/statementWithCombinators.js +5 -5
- package/lib/unify/statementWithMetaType.js +3 -3
- package/lib/unify/statementWithSttaemetnGivenEquivalences.js +45 -0
- package/lib/unify/suppositionWithProffStep.js +3 -3
- package/lib/unify/variableWithTerm.js +11 -26
- package/lib/utilities/array.js +5 -14
- package/lib/utilities/assertion.js +24 -0
- package/lib/utilities/brackets.js +60 -0
- package/lib/utilities/message.js +52 -0
- package/lib/utilities/name.js +7 -7
- package/lib/utilities/node.js +10 -17
- package/lib/utilities/string.js +1 -7
- package/lib/utilities/subproof.js +19 -0
- package/lib/utilities/unify.js +30 -11
- package/lib/variable.js +8 -8
- package/lib/verifier/metaLevel.js +6 -6
- package/lib/verifier/statementAsCombinator.js +2 -2
- package/lib/verify/assertion/contained.js +62 -34
- package/lib/verify/assertion/defined.js +53 -48
- package/lib/verify/assertion/subproof.js +9 -9
- package/lib/verify/assertion/type.js +11 -11
- package/lib/verify/conclusion.js +6 -6
- package/lib/verify/consequent.js +6 -6
- package/lib/verify/declaration/metavariable.js +2 -2
- package/lib/verify/declaration.js +34 -20
- package/lib/verify/equality.js +13 -13
- package/lib/verify/frame.js +38 -24
- package/lib/verify/judgement.js +13 -13
- package/lib/verify/metavariable.js +2 -2
- package/lib/verify/premise.js +5 -5
- package/lib/verify/proofStep.js +15 -24
- package/lib/verify/statement/qualified.js +15 -124
- package/lib/verify/statement/unqualified.js +23 -24
- package/lib/verify/statement.js +24 -24
- package/lib/verify/statementGivenMetaType.js +18 -9
- package/lib/verify/supposition.js +5 -5
- package/package.json +2 -2
- package/src/constants.js +1 -0
- package/src/context/file.js +49 -55
- package/src/context/local.js +34 -31
- package/src/context/release.js +2 -2
- package/src/declaration.js +12 -10
- package/src/equivalence.js +27 -26
- package/src/judgement.js +2 -2
- package/src/label.js +2 -2
- package/src/log.js +1 -1
- package/src/metaType.js +7 -7
- package/src/metavariable.js +10 -49
- package/src/node/term/bracketed.js +9 -0
- package/src/proofStep.js +3 -48
- package/src/releaseContext/initialise.js +13 -24
- package/src/resolve/substitutions.js +134 -0
- package/src/rule.js +10 -5
- package/src/substitution/statementForMetavariable.js +99 -85
- package/src/substitution/termForVariable.js +50 -65
- package/src/substitution.js +46 -8
- package/src/substitutions.js +176 -10
- package/src/term.js +6 -0
- package/src/topLevelAssertion.js +10 -5
- package/src/type.js +4 -4
- package/src/unifier/metaLevel.js +11 -3
- package/src/unifier/statementWithCombinator.js +5 -5
- package/src/unifier.js +1 -1
- package/src/unify/metavariableWithStatement.js +17 -71
- package/src/unify/metavariableWithStatementGivenSubstitution.js +39 -0
- package/src/unify/premiseWithProofStep.js +1 -1
- package/src/unify/statement/qualified.js +183 -0
- package/src/unify/statement/unqualified.js +24 -0
- package/src/unify/statementWithBracketedCombinator.js +2 -2
- package/src/unify/statementWithCombinators.js +4 -4
- package/src/unify/statementWithMetaType.js +2 -2
- package/src/unify/statementWithSttaemetnGivenEquivalences.js +51 -0
- package/src/unify/suppositionWithProffStep.js +1 -1
- package/src/unify/variableWithTerm.js +14 -35
- package/src/utilities/array.js +1 -16
- package/src/utilities/assertion.js +19 -0
- package/src/utilities/brackets.js +56 -0
- package/src/utilities/name.js +8 -8
- package/src/utilities/node.js +14 -17
- package/src/utilities/string.js +2 -2
- package/src/utilities/subproof.js +18 -0
- package/src/utilities/unify.js +24 -12
- package/src/variable.js +11 -11
- package/src/verifier/metaLevel.js +5 -5
- package/src/verifier/statementAsCombinator.js +2 -2
- package/src/verify/assertion/contained.js +80 -40
- package/src/verify/assertion/defined.js +66 -57
- package/src/verify/assertion/subproof.js +8 -8
- package/src/verify/assertion/type.js +11 -11
- package/src/verify/conclusion.js +8 -8
- package/src/verify/consequent.js +8 -8
- package/src/verify/declaration/metavariable.js +4 -3
- package/src/verify/declaration.js +46 -23
- package/src/verify/equality.js +13 -13
- package/src/verify/frame.js +48 -28
- package/src/verify/judgement.js +13 -13
- package/src/verify/metavariable.js +3 -3
- package/src/verify/premise.js +6 -6
- package/src/verify/proofStep.js +14 -31
- package/src/verify/statement/qualified.js +18 -199
- package/src/verify/statement/unqualified.js +25 -31
- package/src/verify/statement.js +23 -23
- package/src/verify/statementGivenMetaType.js +23 -12
- package/src/verify/supposition.js +6 -6
- package/lib/unify/statementAtainstStatement.js +0 -49
- package/lib/utilities/lineIndex.js +0 -52
- package/lib/utilities/match.js +0 -59
- package/lib/utilities/verify.js +0 -19
- package/src/unify/statementAtainstStatement.js +0 -56
- package/src/utilities/match.js +0 -53
- package/src/utilities/verify.js +0 -14
- /package/src/utilities/{lineIndex.js → message.js} +0 -0
package/src/verify/judgement.js
CHANGED
|
@@ -11,20 +11,20 @@ import { nodeQuery } from "../utilities/query";
|
|
|
11
11
|
const frameNodeQuery = nodeQuery("/judgement/frame!"),
|
|
12
12
|
metavariableNodeQuery = nodeQuery("/judgement/metavariable!");
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
const verifyJudgementFunctions = [
|
|
15
|
+
verifyDerivedJudgement,
|
|
16
|
+
verifyStatedJudgement
|
|
17
|
+
];
|
|
18
|
+
|
|
19
|
+
export default function verifyJudgement(judgementNode, assignments, stated, localContext) {
|
|
15
20
|
let judgementVerified;
|
|
16
21
|
|
|
17
22
|
const judgementString = localContext.nodeAsString(judgementNode);
|
|
18
23
|
|
|
19
24
|
localContext.trace(`Verifying the '${judgementString}' judgement...`, judgementNode);
|
|
20
25
|
|
|
21
|
-
const verifyJudgementFunctions = [
|
|
22
|
-
verifyDerivedJudgement,
|
|
23
|
-
verifyStatedJudgement
|
|
24
|
-
];
|
|
25
|
-
|
|
26
26
|
judgementVerified = verifyJudgementFunctions.some((verifyJudgementFunction) => {
|
|
27
|
-
const judgementVerified = verifyJudgementFunction(judgementNode, assignments,
|
|
27
|
+
const judgementVerified = verifyJudgementFunction(judgementNode, assignments, stated, localContext);
|
|
28
28
|
|
|
29
29
|
if (judgementVerified) {
|
|
30
30
|
return true;
|
|
@@ -38,10 +38,10 @@ export default function verifyJudgement(judgementNode, assignments, derived, loc
|
|
|
38
38
|
return judgementVerified;
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
-
function verifyDerivedJudgement(judgementNode, assignments,
|
|
41
|
+
function verifyDerivedJudgement(judgementNode, assignments, stated, localContext) {
|
|
42
42
|
let derivedJudgementVerified = false;
|
|
43
43
|
|
|
44
|
-
if (
|
|
44
|
+
if (!stated) {
|
|
45
45
|
const judgementString = localContext.nodeAsString(judgementNode);
|
|
46
46
|
|
|
47
47
|
localContext.trace(`Verifying the '${judgementString}' derived judgement...`, judgementNode);
|
|
@@ -55,7 +55,7 @@ function verifyDerivedJudgement(judgementNode, assignments, derived, localContex
|
|
|
55
55
|
if (judgement !== null) {
|
|
56
56
|
const frames = [],
|
|
57
57
|
frameNode = frameNodeQuery(judgementNode),
|
|
58
|
-
frameVerified = verifyFrame(frameNode, frames, assignments,
|
|
58
|
+
frameVerified = verifyFrame(frameNode, frames, assignments, stated, localContext);
|
|
59
59
|
|
|
60
60
|
if (frameVerified) {
|
|
61
61
|
const firstFrame = first(frames),
|
|
@@ -100,10 +100,10 @@ function verifyDerivedJudgement(judgementNode, assignments, derived, localContex
|
|
|
100
100
|
return derivedJudgementVerified;
|
|
101
101
|
}
|
|
102
102
|
|
|
103
|
-
function verifyStatedJudgement(judgementNode, assignments,
|
|
103
|
+
function verifyStatedJudgement(judgementNode, assignments, stated, localContext) {
|
|
104
104
|
let statedJudgementVerified = false;
|
|
105
105
|
|
|
106
|
-
if (
|
|
106
|
+
if (stated) {
|
|
107
107
|
const judgementString = localContext.nodeAsString(judgementNode);
|
|
108
108
|
|
|
109
109
|
localContext.trace(`Verifying the '${judgementString}' stated judgement...`, judgementNode);
|
|
@@ -114,7 +114,7 @@ function verifyStatedJudgement(judgementNode, assignments, derived, localContext
|
|
|
114
114
|
if (metavariableVerified) {
|
|
115
115
|
const frames = [],
|
|
116
116
|
frameNode = frameNodeQuery(judgementNode),
|
|
117
|
-
frameVerified = verifyFrame(frameNode, frames,
|
|
117
|
+
frameVerified = verifyFrame(frameNode, frames, stated, localContext);
|
|
118
118
|
|
|
119
119
|
if (frameVerified) {
|
|
120
120
|
const firstFrame = first(frames),
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { nodeQuery } from "../utilities/query";
|
|
4
4
|
import { unifyTermWithTermType } from "../metavariable";
|
|
5
|
-
import {
|
|
5
|
+
import { metavariableNameFromMetavariableNode } from "../utilities/name";
|
|
6
6
|
|
|
7
7
|
const termNodeQuery = nodeQuery("/metavariable/argument/term"),
|
|
8
8
|
typeNodeQuery = nodeQuery("/metavariable/argument/type");
|
|
@@ -14,8 +14,8 @@ export default function verifyMetavariable(metavariableNode, localContext) {
|
|
|
14
14
|
|
|
15
15
|
localContext.trace(`Verifying the '${metavariableString}' metavariable...`, metavariableNode);
|
|
16
16
|
|
|
17
|
-
const
|
|
18
|
-
metavariable = localContext.
|
|
17
|
+
const metavariableName = metavariableNameFromMetavariableNode(metavariableNode),
|
|
18
|
+
metavariable = localContext.findMetavariableByMetavariableName(metavariableName);
|
|
19
19
|
|
|
20
20
|
if (metavariable === null) {
|
|
21
21
|
localContext.debug(`The metavariable '${metavariableString}' is not present.`, metavariableNode);
|
package/src/verify/premise.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import Premise from "../premise";
|
|
4
4
|
import ProofStep from "../proofStep";
|
|
5
|
-
import
|
|
5
|
+
import verifyStatement from "../verify/statement";
|
|
6
6
|
|
|
7
7
|
import { nodeQuery } from "../utilities/query";
|
|
8
8
|
import { assignAssignments } from "../utilities/assignments";
|
|
@@ -20,16 +20,16 @@ export default function verifyPremise(premiseNode, premises, localContext) {
|
|
|
20
20
|
const unqualifiedStatementNode = unqualifiedStatementNodeQuery(premiseNode);
|
|
21
21
|
|
|
22
22
|
if (unqualifiedStatementNode !== null) {
|
|
23
|
-
const
|
|
23
|
+
const stated = true,
|
|
24
24
|
assignments = [],
|
|
25
|
-
|
|
25
|
+
statementNode = statementNodeQuery(unqualifiedStatementNode),
|
|
26
|
+
statementVerified = verifyStatement(statementNode, assignments, stated, localContext);
|
|
26
27
|
|
|
27
|
-
if (
|
|
28
|
+
if (statementVerified) {
|
|
28
29
|
const assignmentsAssigned = assignAssignments(assignments, localContext);
|
|
29
30
|
|
|
30
31
|
if (assignmentsAssigned) {
|
|
31
|
-
const
|
|
32
|
-
metaproofStep = ProofStep.fromStatementNode(statementNode),
|
|
32
|
+
const metaproofStep = ProofStep.fromStatementNode(statementNode),
|
|
33
33
|
premise = Premise.fromStatementNode(statementNode);
|
|
34
34
|
|
|
35
35
|
premises.push(premise);
|
package/src/verify/proofStep.js
CHANGED
|
@@ -7,7 +7,6 @@ import verifyQualifiedStatement from "../verify/statement/qualified";
|
|
|
7
7
|
import verifyUnqualifiedStatement from "../verify/statement/unqualified";
|
|
8
8
|
|
|
9
9
|
import { nodeQuery } from "../utilities/query";
|
|
10
|
-
import { assignAssignments } from "../utilities/assignments";
|
|
11
10
|
|
|
12
11
|
const subproofNodeQuery = nodeQuery("/proofStep|lastProofStep/subproof!"),
|
|
13
12
|
statementNodeQuery = nodeQuery("/qualifiedStatement|unqualifiedStatement/statement!"),
|
|
@@ -23,45 +22,29 @@ export default function verifyProofStep(proofStepNode, substitutions, localConte
|
|
|
23
22
|
|
|
24
23
|
let proofStep = null;
|
|
25
24
|
|
|
26
|
-
if (
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
subproofVerified = verifySubproof(subproofNode, substitutions, localContext);
|
|
25
|
+
if (false) {
|
|
26
|
+
///
|
|
27
|
+
} else if (subproofNode !== null) {
|
|
28
|
+
const subproofVerified = verifySubproof(subproofNode, substitutions, localContext);
|
|
30
29
|
|
|
31
30
|
if (subproofVerified) {
|
|
32
31
|
proofStep = ProofStep.fromSubproofNode(subproofNode);
|
|
33
32
|
}
|
|
34
|
-
} else {
|
|
35
|
-
|
|
36
|
-
const derived = false, ///
|
|
37
|
-
assignments = [],
|
|
38
|
-
qualifiedStatementVerified = verifyQualifiedStatement(qualifiedStatementNode, substitutions, assignments, derived, localContext);
|
|
39
|
-
|
|
40
|
-
if (qualifiedStatementVerified) {
|
|
41
|
-
const assignmentsAssigned = assignAssignments(assignments, localContext);
|
|
33
|
+
} else if (qualifiedStatementNode !== null) {
|
|
34
|
+
const qualifiedStatementVerified = verifyQualifiedStatement(qualifiedStatementNode, substitutions, localContext);
|
|
42
35
|
|
|
43
|
-
|
|
44
|
-
|
|
36
|
+
if (qualifiedStatementVerified) {
|
|
37
|
+
const statementNode = statementNodeQuery(qualifiedStatementNode);
|
|
45
38
|
|
|
46
|
-
|
|
47
|
-
}
|
|
48
|
-
}
|
|
39
|
+
proofStep = ProofStep.fromStatementNode(statementNode);
|
|
49
40
|
}
|
|
41
|
+
} else if (unqualifiedStatementNode !== null) {
|
|
42
|
+
const unqualifiedStatementVerified = verifyUnqualifiedStatement(unqualifiedStatementNode, localContext);
|
|
50
43
|
|
|
51
|
-
if (
|
|
52
|
-
const
|
|
53
|
-
assignments = [],
|
|
54
|
-
unqualifiedStatementVerified = verifyUnqualifiedStatement(unqualifiedStatementNode, assignments, derived, localContext);
|
|
55
|
-
|
|
56
|
-
if (unqualifiedStatementVerified) {
|
|
57
|
-
const assignmentsAssigned = assignAssignments(assignments, localContext);
|
|
58
|
-
|
|
59
|
-
if (assignmentsAssigned) {
|
|
60
|
-
const statementNode = statementNodeQuery(unqualifiedStatementNode);
|
|
44
|
+
if (unqualifiedStatementVerified) {
|
|
45
|
+
const statementNode = statementNodeQuery(unqualifiedStatementNode);
|
|
61
46
|
|
|
62
|
-
|
|
63
|
-
}
|
|
64
|
-
}
|
|
47
|
+
proofStep = ProofStep.fromStatementNode(statementNode);
|
|
65
48
|
}
|
|
66
49
|
}
|
|
67
50
|
|
|
@@ -1,35 +1,35 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import verifyStatement from "../../verify/statement";
|
|
4
|
+
import unifyQualifiedStatement from "../../unify/statement/qualified";
|
|
4
5
|
|
|
5
6
|
import { nodeQuery } from "../../utilities/query";
|
|
7
|
+
import { assignAssignments } from "../../utilities/assignments";
|
|
6
8
|
|
|
7
|
-
const statementNodeQuery = nodeQuery("/qualifiedStatement/statement!")
|
|
8
|
-
metavariableNodeQuery = nodeQuery("/qualifiedStatement/reference/metavariable!");
|
|
9
|
+
const statementNodeQuery = nodeQuery("/qualifiedStatement/statement!");
|
|
9
10
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
unifyDerivedQualifiedStatementAWithAxiom,
|
|
13
|
-
unifyDerivedQualifiedStatementAWithLemma,
|
|
14
|
-
unifyDerivedQualifiedStatementAWithTheorem,
|
|
15
|
-
unifyDerivedQualifiedStatementAWithConjecture,
|
|
16
|
-
unifyDerivedQualifiedStatementAWithReference
|
|
17
|
-
];
|
|
18
|
-
|
|
19
|
-
export default function verifyQualifiedStatement(qualifiedStatementNode, substitutions, assignments, derived, localContext) {
|
|
20
|
-
let qualifiedStatementVerified;
|
|
11
|
+
export default function verifyQualifiedStatement(qualifiedStatementNode, substitutions, localContext) {
|
|
12
|
+
let qualifiedStatementVerified = false;
|
|
21
13
|
|
|
22
14
|
const qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
|
|
23
15
|
|
|
24
16
|
localContext.trace(`Verifying the '${qualifiedStatementString}' qualified statement...`, qualifiedStatementNode);
|
|
25
17
|
|
|
26
|
-
|
|
27
|
-
|
|
18
|
+
if (!qualifiedStatementVerified) {
|
|
19
|
+
const stated = true,
|
|
20
|
+
assignments = [],
|
|
21
|
+
statementNode = statementNodeQuery(qualifiedStatementNode),
|
|
22
|
+
statementVerified = verifyStatement(statementNode, assignments, stated, localContext);
|
|
23
|
+
|
|
24
|
+
if (statementVerified) {
|
|
25
|
+
const qualifiedStatementUnified = unifyQualifiedStatement(qualifiedStatementNode, substitutions, localContext);
|
|
28
26
|
|
|
29
|
-
|
|
30
|
-
|
|
27
|
+
if (qualifiedStatementUnified) {
|
|
28
|
+
const assignmentsAssigned = assignAssignments(assignments, localContext);
|
|
31
29
|
|
|
32
|
-
|
|
30
|
+
qualifiedStatementVerified = assignmentsAssigned; ///
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
if (qualifiedStatementVerified) {
|
|
@@ -38,184 +38,3 @@ export default function verifyQualifiedStatement(qualifiedStatementNode, substit
|
|
|
38
38
|
|
|
39
39
|
return qualifiedStatementVerified;
|
|
40
40
|
}
|
|
41
|
-
|
|
42
|
-
function unifyDerivedQualifiedStatement(qualifiedStatementNode, substitutions, localContext) {
|
|
43
|
-
let derivedQualifiedStatementUnified;
|
|
44
|
-
|
|
45
|
-
const qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
|
|
46
|
-
|
|
47
|
-
localContext.trace(`Unifying the '${qualifiedStatementString}' derived qualified statement...`, qualifiedStatementNode);
|
|
48
|
-
|
|
49
|
-
derivedQualifiedStatementUnified = unifyDerivedQualifiedStatementFunctions.some((unifyDerivedQualifiedStatementFunction) => {
|
|
50
|
-
const derivedQualifiedStatementUnified = unifyDerivedQualifiedStatementFunction(qualifiedStatementNode, substitutions, localContext);
|
|
51
|
-
|
|
52
|
-
return derivedQualifiedStatementUnified;
|
|
53
|
-
});
|
|
54
|
-
|
|
55
|
-
if (derivedQualifiedStatementUnified) {
|
|
56
|
-
localContext.debug(`...unified the '${qualifiedStatementString}' derived qualified statement.`, qualifiedStatementNode);
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
return derivedQualifiedStatementUnified;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
function unifyDerivedQualifiedStatementAWithRule(qualifiedStatementNode, substitutions, localContext) {
|
|
63
|
-
let derivedQualifiedStatementUnifiedWithRule = false;
|
|
64
|
-
|
|
65
|
-
const metavariableNode = metavariableNodeQuery(qualifiedStatementNode),
|
|
66
|
-
rule = localContext.findRuleByMetavariableNode(metavariableNode);
|
|
67
|
-
|
|
68
|
-
if (rule !== null) {
|
|
69
|
-
const statementNode = statementNodeQuery(qualifiedStatementNode),
|
|
70
|
-
metavariableString = localContext.nodeAsString(metavariableNode),
|
|
71
|
-
qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
|
|
72
|
-
|
|
73
|
-
localContext.trace(`Unifying the '${qualifiedStatementString}' derived qualified statement with the '${metavariableString}' rule...`, qualifiedStatementNode);
|
|
74
|
-
|
|
75
|
-
const statementUnified = rule.unifyStatement(statementNode, localContext);
|
|
76
|
-
|
|
77
|
-
derivedQualifiedStatementUnifiedWithRule = statementUnified; ///
|
|
78
|
-
|
|
79
|
-
if (derivedQualifiedStatementUnifiedWithRule) {
|
|
80
|
-
localContext.debug(`...unified the '${qualifiedStatementString}' derived qualified statement with the '${metavariableString}' rule.`, qualifiedStatementNode);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
return derivedQualifiedStatementUnifiedWithRule;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
function unifyDerivedQualifiedStatementAWithAxiom(qualifiedStatementNode, substitutions, localContext) {
|
|
88
|
-
let derivedQualifiedStatementUnifiedWithAxiom = false;
|
|
89
|
-
|
|
90
|
-
const metavariableNode = metavariableNodeQuery(qualifiedStatementNode),
|
|
91
|
-
axiom = localContext.findAxiomByMetavariableNode(metavariableNode);
|
|
92
|
-
|
|
93
|
-
if (axiom !== null) {
|
|
94
|
-
const statementNode = statementNodeQuery(qualifiedStatementNode),
|
|
95
|
-
metavariableString = localContext.nodeAsString(metavariableNode),
|
|
96
|
-
qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
|
|
97
|
-
|
|
98
|
-
localContext.trace(`Unifying the '${qualifiedStatementString}' derived qualified statement with the '${metavariableString}' axiom...`, qualifiedStatementNode);
|
|
99
|
-
|
|
100
|
-
const statementUnified = axiom.unifyStatement(statementNode, localContext);
|
|
101
|
-
|
|
102
|
-
derivedQualifiedStatementUnifiedWithAxiom = statementUnified; ///
|
|
103
|
-
|
|
104
|
-
if (derivedQualifiedStatementUnifiedWithAxiom) {
|
|
105
|
-
localContext.debug(`...unified the '${qualifiedStatementString}' derived qualified statement with the '${metavariableString}' axiom.`, qualifiedStatementNode);
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
return derivedQualifiedStatementUnifiedWithAxiom;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
function unifyDerivedQualifiedStatementAWithLemma(qualifiedStatementNode, substitutions, localContext) {
|
|
113
|
-
let derivedQualifiedStatementUnifiedWithLemma = false;
|
|
114
|
-
|
|
115
|
-
const metavariableNode = metavariableNodeQuery(qualifiedStatementNode),
|
|
116
|
-
lemma = localContext.findLemmaByMetavariableNode(metavariableNode);
|
|
117
|
-
|
|
118
|
-
if (lemma !== null) {
|
|
119
|
-
const statementNode = statementNodeQuery(qualifiedStatementNode),
|
|
120
|
-
metavariableString = localContext.nodeAsString(metavariableNode),
|
|
121
|
-
qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
|
|
122
|
-
|
|
123
|
-
localContext.trace(`Unifying the '${qualifiedStatementString}' derived qualified statement with the '${metavariableString}' lemma...`, qualifiedStatementNode);
|
|
124
|
-
|
|
125
|
-
const statementUnified = lemma.unifyStatement(statementNode, localContext);
|
|
126
|
-
|
|
127
|
-
derivedQualifiedStatementUnifiedWithLemma = statementUnified; ///
|
|
128
|
-
|
|
129
|
-
if (derivedQualifiedStatementUnifiedWithLemma) {
|
|
130
|
-
localContext.debug(`...unified the '${qualifiedStatementString}' derived qualified statement with the '${metavariableString}' lemma.`, qualifiedStatementNode);
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
return derivedQualifiedStatementUnifiedWithLemma;
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
function unifyDerivedQualifiedStatementAWithTheorem(qualifiedStatementNode, substitutions, localContext) {
|
|
138
|
-
let derivedQualifiedStatementUnifiedWithTheorem = false;
|
|
139
|
-
|
|
140
|
-
const metavariableNode = metavariableNodeQuery(qualifiedStatementNode),
|
|
141
|
-
theorem = localContext.findTheoremByMetavariableNode(metavariableNode);
|
|
142
|
-
|
|
143
|
-
if (theorem !== null) {
|
|
144
|
-
const statementNode = statementNodeQuery(qualifiedStatementNode),
|
|
145
|
-
metavariableString = localContext.nodeAsString(metavariableNode),
|
|
146
|
-
qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
|
|
147
|
-
|
|
148
|
-
localContext.trace(`Unifying the '${qualifiedStatementString}' derived qualified statement with the '${metavariableString}' theorem...`, qualifiedStatementNode);
|
|
149
|
-
|
|
150
|
-
const statementUnified = theorem.unifyStatement(statementNode, localContext);
|
|
151
|
-
|
|
152
|
-
derivedQualifiedStatementUnifiedWithTheorem = statementUnified; ///
|
|
153
|
-
|
|
154
|
-
if (derivedQualifiedStatementUnifiedWithTheorem) {
|
|
155
|
-
localContext.debug(`...unified the '${qualifiedStatementString}' derived qualified statement with the '${metavariableString}' theorem.`, qualifiedStatementNode);
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
return derivedQualifiedStatementUnifiedWithTheorem;
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
function unifyDerivedQualifiedStatementAWithConjecture(qualifiedStatementNode, substitutions, localContext) {
|
|
163
|
-
let derivedQualifiedStatementUnifiedWithConjecture = false;
|
|
164
|
-
|
|
165
|
-
const metavariableNode = metavariableNodeQuery(qualifiedStatementNode),
|
|
166
|
-
conjecture = localContext.findConjectureByMetavariableNode(metavariableNode);
|
|
167
|
-
|
|
168
|
-
if (conjecture !== null) {
|
|
169
|
-
const statementNode = statementNodeQuery(qualifiedStatementNode),
|
|
170
|
-
metavariableString = localContext.nodeAsString(metavariableNode),
|
|
171
|
-
qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
|
|
172
|
-
|
|
173
|
-
localContext.trace(`Unifying the '${qualifiedStatementString}' derived qualified statement with the '${metavariableString}' conjecture...`, qualifiedStatementNode);
|
|
174
|
-
|
|
175
|
-
const statementUnified = conjecture.unifyStatement(statementNode, localContext);
|
|
176
|
-
|
|
177
|
-
derivedQualifiedStatementUnifiedWithConjecture = statementUnified; ///
|
|
178
|
-
|
|
179
|
-
if (derivedQualifiedStatementUnifiedWithConjecture) {
|
|
180
|
-
localContext.debug(`...unified the '${qualifiedStatementString}' derived qualified statement with the '${metavariableString}' conjecture.`, qualifiedStatementNode);
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
return derivedQualifiedStatementUnifiedWithConjecture;
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
function unifyDerivedQualifiedStatementAWithReference(qualifiedStatementNode, substitutions, localContext) {
|
|
188
|
-
let derivedQualifiedStatementUnifiedWithReference = false;
|
|
189
|
-
|
|
190
|
-
const metavariableNode = metavariableNodeQuery(qualifiedStatementNode),
|
|
191
|
-
metavariableString = localContext.nodeAsString(metavariableNode),
|
|
192
|
-
metavariablePresent = localContext.isMetavariablePresentByMetavariableNode(metavariableNode),
|
|
193
|
-
qualifiedStatementString = localContext.nodeAsString(qualifiedStatementNode);
|
|
194
|
-
|
|
195
|
-
localContext.trace(`Unifying the '${qualifiedStatementString}' derived qualified statement with the '${metavariableString}' reference...`, qualifiedStatementNode);
|
|
196
|
-
|
|
197
|
-
if (metavariablePresent) {
|
|
198
|
-
|
|
199
|
-
debugger
|
|
200
|
-
|
|
201
|
-
// const statementNode = statementNodeQuery(qualifiedStatementNode),
|
|
202
|
-
// localContextA = null,
|
|
203
|
-
// localContextB = localContext, ///
|
|
204
|
-
// statementNodeB = statementNode, ///
|
|
205
|
-
// substitutionNodeA = null,
|
|
206
|
-
// metavariableNodeA = metavariableNode, ///
|
|
207
|
-
// metavariableUnifiedWithStatement = unifyMetavariableWithStatement(metavariableNodeA, statementNodeB, substitutionNodeA, substitutions, localContextA, localContextB, () => {
|
|
208
|
-
// const verifiedAhead = true;
|
|
209
|
-
//
|
|
210
|
-
// return verifiedAhead;
|
|
211
|
-
// });
|
|
212
|
-
//
|
|
213
|
-
// derivedQualifiedStatementUnifiedWithReference = metavariableUnifiedWithStatement; ///
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
if (derivedQualifiedStatementUnifiedWithReference) {
|
|
217
|
-
localContext.debug(`...unified the '${qualifiedStatementString}' derived qualified statement with the '${metavariableString}' reference.`, qualifiedStatementNode);
|
|
218
|
-
}
|
|
219
|
-
|
|
220
|
-
return derivedQualifiedStatementUnifiedWithReference;
|
|
221
|
-
}
|
|
@@ -1,35 +1,48 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import verifyStatement from "../../verify/statement";
|
|
4
|
+
import unifyUnqualifiedStatement from "../../unify/statement/unqualified";
|
|
4
5
|
|
|
5
6
|
import { nodeQuery } from "../../utilities/query";
|
|
7
|
+
import { assignAssignments } from "../../utilities/assignments";
|
|
6
8
|
import { verifyStatementTrivially } from "../../verify/statement";
|
|
7
9
|
|
|
8
10
|
const statementNodeQuery = nodeQuery("/unqualifiedStatement/statement!");
|
|
9
11
|
|
|
10
|
-
export default function verifyUnqualifiedStatement(unqualifiedStatementNode,
|
|
11
|
-
let unqualifiedStatementVerified;
|
|
12
|
+
export default function verifyUnqualifiedStatement(unqualifiedStatementNode, localContext) {
|
|
13
|
+
let unqualifiedStatementVerified = false;
|
|
12
14
|
|
|
13
15
|
const unqualifiedStatementString = localContext.nodeAsString(unqualifiedStatementNode);
|
|
14
16
|
|
|
15
17
|
localContext.trace(`Verifying the '${unqualifiedStatementString}' unqualified statement...`, unqualifiedStatementNode);
|
|
16
18
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
+
if (!unqualifiedStatementVerified) {
|
|
20
|
+
const stated = true,
|
|
21
|
+
assignments = [],
|
|
22
|
+
statementNode = statementNodeQuery(unqualifiedStatementNode),
|
|
23
|
+
statementVerified = verifyStatement(statementNode, assignments, stated, localContext);
|
|
19
24
|
|
|
20
|
-
|
|
21
|
-
|
|
25
|
+
if (statementVerified) {
|
|
26
|
+
const unqualifiedStatementUnified = unifyUnqualifiedStatement(unqualifiedStatementNode, localContext);
|
|
27
|
+
|
|
28
|
+
unqualifiedStatementVerified = unqualifiedStatementUnified; ///
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
if (!unqualifiedStatementVerified) {
|
|
33
|
+
const stated = false,
|
|
34
|
+
assignments = [],
|
|
35
|
+
statementNode = statementNodeQuery(unqualifiedStatementNode),
|
|
36
|
+
statementVerified = verifyStatement(statementNode, assignments, stated, localContext);
|
|
37
|
+
|
|
38
|
+
if (statementVerified) {
|
|
22
39
|
const statementVerifiedTrivially = verifyStatementTrivially(statementNode, localContext);
|
|
23
40
|
|
|
24
41
|
if (statementVerifiedTrivially) {
|
|
25
|
-
|
|
26
|
-
} else {
|
|
27
|
-
const derivedUnqualifiedStatementUnified = unifyDerivedUnqualifiedStatement(unqualifiedStatementNode, localContext);
|
|
42
|
+
const assignmentsAssigned = assignAssignments(assignments, localContext);
|
|
28
43
|
|
|
29
|
-
unqualifiedStatementVerified =
|
|
44
|
+
unqualifiedStatementVerified = assignmentsAssigned; ///
|
|
30
45
|
}
|
|
31
|
-
} else {
|
|
32
|
-
unqualifiedStatementVerified = true;
|
|
33
46
|
}
|
|
34
47
|
}
|
|
35
48
|
|
|
@@ -39,22 +52,3 @@ export default function verifyUnqualifiedStatement(unqualifiedStatementNode, ass
|
|
|
39
52
|
|
|
40
53
|
return unqualifiedStatementVerified;
|
|
41
54
|
}
|
|
42
|
-
|
|
43
|
-
function unifyDerivedUnqualifiedStatement(unqualifiedStatementNode, localContext) {
|
|
44
|
-
let derivedUnqualifiedStatementUnified;
|
|
45
|
-
|
|
46
|
-
const unqualifiedStatementString = localContext.nodeAsString(unqualifiedStatementNode);
|
|
47
|
-
|
|
48
|
-
localContext.trace(`Unifying the '${unqualifiedStatementString}' derived unqualified statement...`, unqualifiedStatementNode);
|
|
49
|
-
|
|
50
|
-
const statementNode = statementNodeQuery(unqualifiedStatementNode),
|
|
51
|
-
statementUnified = localContext.unifyStatement(statementNode, localContext);
|
|
52
|
-
|
|
53
|
-
derivedUnqualifiedStatementUnified = statementUnified; ///
|
|
54
|
-
|
|
55
|
-
if (derivedUnqualifiedStatementUnified) {
|
|
56
|
-
localContext.debug(`...unified the '${unqualifiedStatementString}' derived unqualified statement.`, unqualifiedStatementNode);
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
return derivedUnqualifiedStatementUnified;
|
|
60
|
-
}
|