occam-verify-cli 0.0.905 → 0.0.907
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/conclusion.js +7 -7
- package/lib/context/local.js +8 -26
- package/lib/context/localMeta.js +91 -72
- package/lib/metaConsequent.js +7 -7
- package/lib/metaSupposition.js +7 -7
- package/lib/metavariable.js +2 -3
- package/lib/premise.js +7 -7
- package/lib/utilities/assignments.js +3 -3
- package/lib/verifier/node/metastatement.js +3 -4
- package/lib/verifier/nodes/intrinsicLevel.js +2 -2
- package/lib/verifier/nodes/intrinsicLevelAgainstMetaLevel.js +4 -5
- package/lib/verify/metaProofStep.js +3 -3
- package/lib/verify/metaSupposition.js +2 -2
- package/lib/verify/metavariableAgainstStatement.js +10 -9
- package/lib/verify/premise.js +26 -8
- package/lib/verify/ruleProofStep.js +6 -8
- package/lib/verify/variableAgainstTerm.js +8 -8
- package/package.json +1 -1
- package/src/conclusion.js +4 -4
- package/src/context/local.js +8 -14
- package/src/context/localMeta.js +23 -55
- package/src/metaConsequent.js +4 -4
- package/src/metaSupposition.js +4 -4
- package/src/metavariable.js +1 -2
- package/src/premise.js +10 -10
- package/src/utilities/assignments.js +2 -2
- package/src/verifier/node/metastatement.js +2 -3
- package/src/verifier/nodes/intrinsicLevel.js +2 -3
- package/src/verifier/nodes/intrinsicLevelAgainstMetaLevel.js +8 -11
- package/src/verify/metaProofStep.js +4 -2
- package/src/verify/metaSupposition.js +2 -1
- package/src/verify/metavariableAgainstStatement.js +15 -12
- package/src/verify/premise.js +39 -6
- package/src/verify/ruleProofStep.js +5 -5
- package/src/verify/variableAgainstTerm.js +9 -7
package/src/context/localMeta.js
CHANGED
|
@@ -1,21 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import LocalContext from "../context/local";
|
|
4
4
|
|
|
5
5
|
import { last } from "../utilities/array";
|
|
6
6
|
|
|
7
|
-
class LocalMetaContext {
|
|
8
|
-
constructor(context, metavariables, metaproofSteps, frameAssertions) {
|
|
9
|
-
|
|
7
|
+
class LocalMetaContext extends LocalContext {
|
|
8
|
+
constructor(context, variables, proofSteps, equivalences, metavariables, metaproofSteps, frameAssertions) {
|
|
9
|
+
super(context, variables, proofSteps, equivalences);
|
|
10
|
+
|
|
10
11
|
this.metavariables = metavariables;
|
|
11
12
|
this.metaproofSteps = metaproofSteps;
|
|
12
13
|
this.frameAssertions = frameAssertions;
|
|
13
14
|
}
|
|
14
15
|
|
|
15
|
-
getContext() {
|
|
16
|
-
return this.context;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
16
|
getMetavariables() {
|
|
20
17
|
let metavariables = this.context.getMetavariables();
|
|
21
18
|
|
|
@@ -49,18 +46,6 @@ class LocalMetaContext {
|
|
|
49
46
|
return frameAssertions;
|
|
50
47
|
}
|
|
51
48
|
|
|
52
|
-
getVariables() { return this.context.getVariables(); }
|
|
53
|
-
|
|
54
|
-
getProofSteps() { return this.context.getProofSteps(); }
|
|
55
|
-
|
|
56
|
-
getEquivalences() { return this.context.getEquivalences(); }
|
|
57
|
-
|
|
58
|
-
getTermType(term) {
|
|
59
|
-
const termType = term.getType();
|
|
60
|
-
|
|
61
|
-
return termType;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
49
|
getLastMetaproofStep() {
|
|
65
50
|
let lastMetaproofStep = null;
|
|
66
51
|
|
|
@@ -135,18 +120,18 @@ class LocalMetaContext {
|
|
|
135
120
|
return metastatementMatches;
|
|
136
121
|
}
|
|
137
122
|
|
|
138
|
-
|
|
139
|
-
const node =
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
const matches =
|
|
123
|
+
findMetavariableByMetavariableNode(metavariableNode, localMetaContext) {
|
|
124
|
+
const node = metavariableNode, ///
|
|
125
|
+
metavariables = this.getMetavariables(),
|
|
126
|
+
metavariable = metavariables.find((metavariable) => {
|
|
127
|
+
const matches = metavariable.matchNode(node, localMetaContext);
|
|
143
128
|
|
|
144
129
|
if (matches) {
|
|
145
130
|
return true;
|
|
146
131
|
}
|
|
147
132
|
}) || null;
|
|
148
133
|
|
|
149
|
-
return
|
|
134
|
+
return metavariable;
|
|
150
135
|
}
|
|
151
136
|
|
|
152
137
|
findFrameAssertionByMetavariableNode(metavariableNode) {
|
|
@@ -162,11 +147,11 @@ class LocalMetaContext {
|
|
|
162
147
|
return frameAssertion;
|
|
163
148
|
}
|
|
164
149
|
|
|
165
|
-
|
|
166
|
-
const
|
|
167
|
-
|
|
150
|
+
isMetavariablePresentByMetavariableNode(metavariableNode, localMetaContext) {
|
|
151
|
+
const metavariable = this.findMetavariableByMetavariableNode(metavariableNode, localMetaContext),
|
|
152
|
+
metavariablePresent = (metavariable !== null);
|
|
168
153
|
|
|
169
|
-
return
|
|
154
|
+
return metavariablePresent;
|
|
170
155
|
}
|
|
171
156
|
|
|
172
157
|
isFrameAssertionPresentByMetavariableNode(metavariableNode) {
|
|
@@ -176,49 +161,32 @@ class LocalMetaContext {
|
|
|
176
161
|
return frameAssertionPresent;
|
|
177
162
|
}
|
|
178
163
|
|
|
179
|
-
findMetavariableByMetavariableNode(metavariableNode, localMetaContext) {
|
|
180
|
-
const node = metavariableNode, ///
|
|
181
|
-
metavariables = this.getMetavariables(),
|
|
182
|
-
metavariable = metavariables.find((metavariable) => {
|
|
183
|
-
const matches = metavariable.matchNode(node, localMetaContext);
|
|
184
|
-
|
|
185
|
-
if (matches) {
|
|
186
|
-
return true;
|
|
187
|
-
}
|
|
188
|
-
}) || null;
|
|
189
|
-
|
|
190
|
-
return metavariable;
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
isMetavariablePresentByMetavariableNode(metavariableNode, localMetaContext) {
|
|
194
|
-
const metavariable = this.findMetavariableByMetavariableNode(metavariableNode, localMetaContext),
|
|
195
|
-
metavariablePresent = (metavariable !== null);
|
|
196
|
-
|
|
197
|
-
return metavariablePresent;
|
|
198
|
-
}
|
|
199
|
-
|
|
200
164
|
static fromFileContext(fileContext) {
|
|
201
165
|
const context = fileContext, ///
|
|
166
|
+
variables = [],
|
|
167
|
+
proofSteps = [],
|
|
168
|
+
equivalences = [],
|
|
202
169
|
metavariables = [],
|
|
203
170
|
metaproofSteps = [],
|
|
204
171
|
frameAssertions = [],
|
|
205
|
-
localMetaContext = new LocalMetaContext(context, metavariables, metaproofSteps, frameAssertions);
|
|
172
|
+
localMetaContext = new LocalMetaContext(context, variables, proofSteps, equivalences, metavariables, metaproofSteps, frameAssertions);
|
|
206
173
|
|
|
207
174
|
return localMetaContext;
|
|
208
175
|
}
|
|
209
176
|
|
|
210
177
|
static fromLocalMetaContext(localMetaContext) {
|
|
211
178
|
const context = localMetaContext, ///
|
|
179
|
+
variables = [],
|
|
180
|
+
proofSteps = [],
|
|
181
|
+
equivalences = [],
|
|
212
182
|
metavariables = [],
|
|
213
183
|
metaproofSteps = [],
|
|
214
184
|
frameAssertions = [];
|
|
215
185
|
|
|
216
|
-
localMetaContext = new LocalMetaContext(context, metavariables, metaproofSteps, frameAssertions); ///
|
|
186
|
+
localMetaContext = new LocalMetaContext(context, variables, proofSteps, equivalences, metavariables, metaproofSteps, frameAssertions); ///
|
|
217
187
|
|
|
218
188
|
return localMetaContext;
|
|
219
189
|
}
|
|
220
190
|
}
|
|
221
191
|
|
|
222
|
-
Object.assign(LocalMetaContext.prototype, contextMixins);
|
|
223
|
-
|
|
224
192
|
export default LocalMetaContext;
|
package/src/metaConsequent.js
CHANGED
|
@@ -54,15 +54,15 @@ export default class MetaConsequent {
|
|
|
54
54
|
return json;
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
-
static
|
|
58
|
-
const
|
|
57
|
+
static fromStatementNode(statementNode) {
|
|
58
|
+
const metastatementNode = null,
|
|
59
59
|
metaConsequent = new MetaConsequent(metastatementNode, statementNode);
|
|
60
60
|
|
|
61
61
|
return metaConsequent;
|
|
62
62
|
}
|
|
63
63
|
|
|
64
|
-
static
|
|
65
|
-
const
|
|
64
|
+
static fromMetastatementNode(metastatementNode) {
|
|
65
|
+
const statementNode = null,
|
|
66
66
|
metaConsequent = new MetaConsequent(metastatementNode, statementNode);
|
|
67
67
|
|
|
68
68
|
return metaConsequent;
|
package/src/metaSupposition.js
CHANGED
|
@@ -98,15 +98,15 @@ export default class MetaSupposition {
|
|
|
98
98
|
return json;
|
|
99
99
|
}
|
|
100
100
|
|
|
101
|
-
static
|
|
102
|
-
const
|
|
101
|
+
static fromStatementNode(statementNode) {
|
|
102
|
+
const metastatementNode = null,
|
|
103
103
|
metaSupposition = new MetaSupposition(metastatementNode, statementNode);
|
|
104
104
|
|
|
105
105
|
return metaSupposition;
|
|
106
106
|
}
|
|
107
107
|
|
|
108
|
-
static
|
|
109
|
-
const
|
|
108
|
+
static fromMetastatementNode(metastatementNode) {
|
|
109
|
+
const statementNode = null,
|
|
110
110
|
metaSupposition = new MetaSupposition(metastatementNode, statementNode);
|
|
111
111
|
|
|
112
112
|
return metaSupposition;
|
package/src/metavariable.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import verifyTerm from "./verify/term";
|
|
4
|
-
import LocalContext from "./context/local";
|
|
5
4
|
|
|
6
5
|
import { first } from "./utilities/array";
|
|
7
6
|
import { nodeQuery } from "./utilities/query";
|
|
@@ -128,7 +127,7 @@ function verifyTermAgainstTermType(termNode, termType, localMetaContext) {
|
|
|
128
127
|
|
|
129
128
|
const type = termType, ///
|
|
130
129
|
terms = [],
|
|
131
|
-
localContext =
|
|
130
|
+
localContext = localMetaContext; ///
|
|
132
131
|
|
|
133
132
|
termVerifiedAgainstTermType = verifyTerm(termNode, terms, localContext, () => {
|
|
134
133
|
let verifiedAhead = false;
|
package/src/premise.js
CHANGED
|
@@ -199,14 +199,8 @@ export default class Premise {
|
|
|
199
199
|
return json;
|
|
200
200
|
}
|
|
201
201
|
|
|
202
|
-
static
|
|
203
|
-
const
|
|
204
|
-
metastatementString = metastatement, ///
|
|
205
|
-
statementString = statement, ///
|
|
206
|
-
lexer = fileContext.getLexer(),
|
|
207
|
-
parser = fileContext.getParser(),
|
|
208
|
-
metastatementNode = metastatementNodeFromMetastatementString(metastatementString, lexer, parser),
|
|
209
|
-
statementNode = statementNodeFromStatementString(statementString, lexer, parser),
|
|
202
|
+
static fromStatementNode(statementNode) {
|
|
203
|
+
const metastatementNode = null,
|
|
210
204
|
premise = new Premise(metastatementNode, statementNode);
|
|
211
205
|
|
|
212
206
|
return premise;
|
|
@@ -219,8 +213,14 @@ export default class Premise {
|
|
|
219
213
|
return premise;
|
|
220
214
|
}
|
|
221
215
|
|
|
222
|
-
static
|
|
223
|
-
const
|
|
216
|
+
static fromJSONAndFileContext(json, fileContext) {
|
|
217
|
+
const { metastatement, statement } = json,
|
|
218
|
+
metastatementString = metastatement, ///
|
|
219
|
+
statementString = statement, ///
|
|
220
|
+
lexer = fileContext.getLexer(),
|
|
221
|
+
parser = fileContext.getParser(),
|
|
222
|
+
metastatementNode = metastatementNodeFromMetastatementString(metastatementString, lexer, parser),
|
|
223
|
+
statementNode = statementNodeFromStatementString(statementString, lexer, parser),
|
|
224
224
|
premise = new Premise(metastatementNode, statementNode);
|
|
225
225
|
|
|
226
226
|
return premise;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { first } from "../utilities/array";
|
|
4
4
|
|
|
5
|
-
export function assignAssignment(assignments,
|
|
5
|
+
export function assignAssignment(assignments, localContext) {
|
|
6
6
|
let assignmentAssigned = true;
|
|
7
7
|
|
|
8
8
|
const assignmentsLength = assignments.length;
|
|
@@ -11,7 +11,7 @@ export function assignAssignment(assignments, localContextOrLocalMetaContext) {
|
|
|
11
11
|
const firstAssignment = first(assignments),
|
|
12
12
|
assignment = firstAssignment;
|
|
13
13
|
|
|
14
|
-
assignmentAssigned = assignment.assign(
|
|
14
|
+
assignmentAssigned = assignment.assign(localContext);
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
return assignmentAssigned;
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import LocalContext from "../../context/local";
|
|
4
3
|
import NodeVerifier from "../../verifier/node";
|
|
5
4
|
|
|
6
5
|
import { nodeQuery } from "../../utilities/query";
|
|
@@ -89,7 +88,7 @@ class MetastatementNodeVerifier extends NodeVerifier {
|
|
|
89
88
|
}
|
|
90
89
|
|
|
91
90
|
verifyVariableNode(variableNode, localMetaContext, verifyAhead) {
|
|
92
|
-
const localContext =
|
|
91
|
+
const localContext = localMetaContext, ///
|
|
93
92
|
standaloneVariableVerified = verifyStandaloneVariable(variableNode, localContext, verifyAhead),
|
|
94
93
|
variableNodeVerified = standaloneVariableVerified; ///
|
|
95
94
|
|
|
@@ -97,7 +96,7 @@ class MetastatementNodeVerifier extends NodeVerifier {
|
|
|
97
96
|
}
|
|
98
97
|
|
|
99
98
|
verifyTermNode(termNode, localMetaContext, verifyAhead) {
|
|
100
|
-
const localContext =
|
|
99
|
+
const localContext = localMetaContext, ///
|
|
101
100
|
standaloneTermVerified = verifyStandaloneTerm(termNode, localContext, verifyAhead),
|
|
102
101
|
termNodeVerified = standaloneTermVerified; ///
|
|
103
102
|
|
|
@@ -60,9 +60,8 @@ class IntrinsicLevelNodesVerifier extends NodesVerifier {
|
|
|
60
60
|
verifyTermVariableNodeAgainstTermNode(termVariableNodeA, termNodeB, substitutions, localContextA, localContextB, verifyAhead) {
|
|
61
61
|
let termVariableNodeVerifiedAgainstTermNode;
|
|
62
62
|
|
|
63
|
-
const
|
|
64
|
-
|
|
65
|
-
termVerifiedAgainstVariable = verifyVariableAgainstTerm(variableNode, termNode, substitutions, localContextA, localContextB, verifyAhead);
|
|
63
|
+
const variableNodeA = termVariableNodeA, ///
|
|
64
|
+
termVerifiedAgainstVariable = verifyVariableAgainstTerm(variableNodeA, termNodeB, substitutions, localContextA, localContextB, verifyAhead);
|
|
66
65
|
|
|
67
66
|
termVariableNodeVerifiedAgainstTermNode = termVerifiedAgainstVariable; ///
|
|
68
67
|
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
import NodesVerifier from "../../verifier/nodes";
|
|
4
4
|
import verifyVariableAgainstTerm from "../../verify/variableAgainstTerm";
|
|
5
|
-
import intrinsicLevelNodesVerifier from "../../verifier/nodes/intrinsicLevel";
|
|
6
5
|
import verifyMetavariableAgainstStatement from "../../verify/metavariableAgainstStatement";
|
|
7
6
|
|
|
8
7
|
import { nodeQuery } from "../../utilities/query";
|
|
@@ -120,10 +119,10 @@ class IntrinsicLevelAgainstMetaLevelNodesVerifier extends NodesVerifier {
|
|
|
120
119
|
verifyMetastatementMetavariableNodeAgainstMetaArgumentStatementNode(metastatementMetavariableNodeA, metaArgumentStatementNodeB, metastatementSubstitutionNodeA, substitutions, localContextA, localContextB, verifyAhead) {
|
|
121
120
|
let metastatementMetavariableNodeVerifiedAgainstMetaArgumentStatementNode;
|
|
122
121
|
|
|
123
|
-
const
|
|
124
|
-
metavariableNode = metastatementMetavariableNodeA, ///
|
|
122
|
+
const statementNodeB = metaArgumentStatementNodeB, ///
|
|
125
123
|
substitutionNode = metastatementSubstitutionNodeA, ///
|
|
126
|
-
|
|
124
|
+
metavariableNodeA = metastatementMetavariableNodeA, ///
|
|
125
|
+
metavariableVerifiedAgainstStatement = verifyMetavariableAgainstStatement(metavariableNodeA, statementNodeB, substitutionNode, substitutions, localContextA, localContextB, verifyAhead)
|
|
127
126
|
|
|
128
127
|
metastatementMetavariableNodeVerifiedAgainstMetaArgumentStatementNode = metavariableVerifiedAgainstStatement; ///
|
|
129
128
|
|
|
@@ -133,10 +132,9 @@ class IntrinsicLevelAgainstMetaLevelNodesVerifier extends NodesVerifier {
|
|
|
133
132
|
verifyMetastatementMetavariableNodeAgainstStatementNode(metastatementMetavariableNodeA, statementNodeB, metastatementSubstitutionNodeA, substitutions, localContextA, localContextB, verifyAhead) {
|
|
134
133
|
let metastatementMetavariableNodeVerifiedAgainstStatementNode;
|
|
135
134
|
|
|
136
|
-
const
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
metavariableVerifiedAgainstStatement = verifyMetavariableAgainstStatement(metavariableNode, statementNode, substitutionNode, substitutions, localContextA, localContextB, verifyAhead)
|
|
135
|
+
const substitutionNode = metastatementSubstitutionNodeA, ///
|
|
136
|
+
metavariableNodeA = metastatementMetavariableNodeA, ///
|
|
137
|
+
metavariableVerifiedAgainstStatement = verifyMetavariableAgainstStatement(metavariableNodeA, statementNodeB, substitutionNode, substitutions, localContextA, localContextB, verifyAhead)
|
|
140
138
|
|
|
141
139
|
metastatementMetavariableNodeVerifiedAgainstStatementNode = metavariableVerifiedAgainstStatement; ///
|
|
142
140
|
|
|
@@ -162,9 +160,8 @@ class IntrinsicLevelAgainstMetaLevelNodesVerifier extends NodesVerifier {
|
|
|
162
160
|
verifyTermVariableNodeAgainstTermNode(termVariableNodeA, termNodeB, substitutions, localContextA, localContextB, verifyAhead) {
|
|
163
161
|
let termVariableNodeVerifiedAgainstTermNode;
|
|
164
162
|
|
|
165
|
-
const
|
|
166
|
-
|
|
167
|
-
termVerifiedAgainstVariable = verifyVariableAgainstTerm(variableNode, termNode, substitutions, localContextA, localContextB, verifyAhead);
|
|
163
|
+
const variableNodeA = termVariableNodeA, ///
|
|
164
|
+
termVerifiedAgainstVariable = verifyVariableAgainstTerm(variableNodeA, termNodeB, substitutions, localContextA, localContextB, verifyAhead);
|
|
168
165
|
|
|
169
166
|
termVariableNodeVerifiedAgainstTermNode = termVerifiedAgainstVariable; ///
|
|
170
167
|
|
|
@@ -53,7 +53,8 @@ export default function verifyMetaProofStep(metaProofStepNode, substitutions, lo
|
|
|
53
53
|
qualifiedMetastatementVerified = verifyQualifiedMetastatement(qualifiedMetastatementNode, substitutions, assignments, localMetaContext);
|
|
54
54
|
|
|
55
55
|
if (qualifiedMetastatementVerified) {
|
|
56
|
-
const
|
|
56
|
+
const localContext = localMetaContext, ///
|
|
57
|
+
assignmentAssigned = assignAssignment(assignments, localContext);
|
|
57
58
|
|
|
58
59
|
qualifiedMetastatementVerified = assignmentAssigned; ///
|
|
59
60
|
}
|
|
@@ -75,7 +76,8 @@ export default function verifyMetaProofStep(metaProofStepNode, substitutions, lo
|
|
|
75
76
|
unqualifiedMetastatementVerified = verifyUnqualifiedMetastatement(unqualifiedMetastatementNode, assignments, derived, localMetaContext);
|
|
76
77
|
|
|
77
78
|
if (unqualifiedMetastatementVerified) {
|
|
78
|
-
const
|
|
79
|
+
const localContext = localMetaContext, ///
|
|
80
|
+
assignmentAssigned = assignAssignment(assignments, localContext);
|
|
79
81
|
|
|
80
82
|
unqualifiedMetastatementVerified = assignmentAssigned; ///
|
|
81
83
|
}
|
|
@@ -23,7 +23,8 @@ export default function verifyMetaSupposition(metaSuppositionNode, metaSuppositi
|
|
|
23
23
|
unqualifiedMetastatementVerified = verifyUnqualifiedMetastatement(unqualifiedMetastatementNode, assignments, derived, localMetaContext);
|
|
24
24
|
|
|
25
25
|
if (unqualifiedMetastatementVerified) {
|
|
26
|
-
const
|
|
26
|
+
const localContext = localMetaContext, ///
|
|
27
|
+
assignmentAssigned = assignAssignment(assignments, localContext);
|
|
27
28
|
|
|
28
29
|
metaSuppositionVerified = assignmentAssigned; ///
|
|
29
30
|
}
|
|
@@ -4,11 +4,11 @@ import TermForVariableSubstitution from "../substitution/termForVariable";
|
|
|
4
4
|
import verifyStatementAgainstStatement from "../verify/statementAtainstStatement";
|
|
5
5
|
import StatementForMetavariableSubstitution from "../substitution/statementForMetavariable";
|
|
6
6
|
|
|
7
|
-
export default function verifyMetavariableAgainstStatement(
|
|
7
|
+
export default function verifyMetavariableAgainstStatement(metavariableNodeA, statementNodeB, substitutionNode, substitutions, localContextA, localContextB, verifyAhead) {
|
|
8
8
|
let metavariableVerifiedAgainstStatement = false;
|
|
9
9
|
|
|
10
10
|
const substitution = substitutions.find((substitution) => {
|
|
11
|
-
const substitutionMatchesMetavariableNodeA = substitution.matchMetavariableNode(
|
|
11
|
+
const substitutionMatchesMetavariableNodeA = substitution.matchMetavariableNode(metavariableNodeA);
|
|
12
12
|
|
|
13
13
|
if (substitutionMatchesMetavariableNodeA) {
|
|
14
14
|
return true;
|
|
@@ -20,10 +20,10 @@ export default function verifyMetavariableAgainstStatement(metavariableNode, sta
|
|
|
20
20
|
|
|
21
21
|
if (substitutionNode !== null) {
|
|
22
22
|
const termForVariableSubstitution = TermForVariableSubstitution.fromSubstitutionNode(substitutionNode),
|
|
23
|
+
localContext = localContextB, ///
|
|
23
24
|
substitution = termForVariableSubstitution, ///
|
|
24
25
|
statementNodeA = substitutionStatementNode, ///
|
|
25
|
-
|
|
26
|
-
statementVerifiedAgainstStatement = verifyStatementAgainstStatement(statementNodeA, statementNodeB, substitution, substitutions, localContextA, localContextB);
|
|
26
|
+
statementVerifiedAgainstStatement = verifyStatementAgainstStatement(statementNodeA, statementNodeB, substitution, substitutions, localContext, localContext);
|
|
27
27
|
|
|
28
28
|
if (statementVerifiedAgainstStatement) {
|
|
29
29
|
const verifiedAhead = verifyAhead();
|
|
@@ -34,12 +34,13 @@ export default function verifyMetavariableAgainstStatement(metavariableNode, sta
|
|
|
34
34
|
const substitutionSubstitution = substitution.getSubstitution();
|
|
35
35
|
|
|
36
36
|
if (substitutionSubstitution !== null) {
|
|
37
|
-
|
|
37
|
+
const statementNodeA = statementNodeB; ///
|
|
38
38
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
39
|
+
statementNodeB = substitutionStatementNode; ///
|
|
40
|
+
|
|
41
|
+
const localContext = localContextB, ///
|
|
42
|
+
substitution = substitutionSubstitution,
|
|
43
|
+
statementVerifiedAgainstStatement = verifyStatementAgainstStatement(statementNodeA, statementNodeB, substitution, substitutions, localContext, localContext);
|
|
43
44
|
|
|
44
45
|
if (statementVerifiedAgainstStatement) {
|
|
45
46
|
const verifiedAhead = verifyAhead();
|
|
@@ -47,9 +48,9 @@ export default function verifyMetavariableAgainstStatement(metavariableNode, sta
|
|
|
47
48
|
metavariableVerifiedAgainstStatement = verifiedAhead; ///
|
|
48
49
|
}
|
|
49
50
|
} else {
|
|
50
|
-
const
|
|
51
|
+
const substitutionMatchesStatementNodeB = substitution.matchStatementNode(statementNodeB);
|
|
51
52
|
|
|
52
|
-
if (
|
|
53
|
+
if (substitutionMatchesStatementNodeB) {
|
|
53
54
|
const verifiedAhead = verifyAhead();
|
|
54
55
|
|
|
55
56
|
metavariableVerifiedAgainstStatement = verifiedAhead; ///
|
|
@@ -59,7 +60,9 @@ export default function verifyMetavariableAgainstStatement(metavariableNode, sta
|
|
|
59
60
|
} else {
|
|
60
61
|
let verifiedAhead;
|
|
61
62
|
|
|
62
|
-
const
|
|
63
|
+
const statementNode = statementNodeB, ///
|
|
64
|
+
metavariableNode = metavariableNodeA, ///
|
|
65
|
+
statementForMetavariableSubstitution = StatementForMetavariableSubstitution.fromMetavariableNodeStatementNodeAndSubstitutionNode(metavariableNode, statementNode, substitutionNode),
|
|
63
66
|
substitution = statementForMetavariableSubstitution; ///
|
|
64
67
|
|
|
65
68
|
substitutions.push(substitution);
|
package/src/verify/premise.js
CHANGED
|
@@ -2,12 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
import Premise from "../premise";
|
|
4
4
|
import MetaproofStep from "../step/metaproof";
|
|
5
|
+
import verifyUnqualifiedStatement from "../verify/statement/unqualified";
|
|
5
6
|
import verifyUnqualifiedMetastatement from "../verify/metastatement/unqualified";
|
|
6
7
|
|
|
7
8
|
import { nodeQuery } from "../utilities/query";
|
|
8
9
|
import { assignAssignment } from "../utilities/assignments";
|
|
9
10
|
|
|
10
|
-
const
|
|
11
|
+
const statementNodeQuery = nodeQuery("/unqualifiedMetastatement/statement!"),
|
|
12
|
+
metastatementNodeQuery = nodeQuery("/unqualifiedMetastatement/metastatement!"),
|
|
13
|
+
unqualifiedStatementNodeQuery = nodeQuery("/premise/unqualifiedStatement!"),
|
|
11
14
|
unqualifiedMetastatementNodeQuery = nodeQuery("/premise/unqualifiedMetastatement!");
|
|
12
15
|
|
|
13
16
|
export default function verifyPremise(premiseNode, premises, localMetaContext) {
|
|
@@ -17,7 +20,21 @@ export default function verifyPremise(premiseNode, premises, localMetaContext) {
|
|
|
17
20
|
|
|
18
21
|
localMetaContext.trace(`Verifying the '${premiseString}' premise...`, premiseNode);
|
|
19
22
|
|
|
20
|
-
const
|
|
23
|
+
const unqualifiedStatementNode = unqualifiedStatementNodeQuery(premiseNode),
|
|
24
|
+
unqualifiedMetastatementNode = unqualifiedMetastatementNodeQuery(premiseNode);
|
|
25
|
+
|
|
26
|
+
if (unqualifiedStatementNode !== null) {
|
|
27
|
+
const derived = false,
|
|
28
|
+
assignments = [],
|
|
29
|
+
localContext = localMetaContext, ///
|
|
30
|
+
unqualifiedStatementVerified = verifyUnqualifiedStatement(unqualifiedStatementNode, assignments, derived, localContext);
|
|
31
|
+
|
|
32
|
+
if (unqualifiedStatementVerified) {
|
|
33
|
+
const assignmentAssigned = assignAssignment(assignments, localContext);
|
|
34
|
+
|
|
35
|
+
premiseVerified = assignmentAssigned; ///
|
|
36
|
+
}
|
|
37
|
+
}
|
|
21
38
|
|
|
22
39
|
if (unqualifiedMetastatementNode !== null) {
|
|
23
40
|
const derived = false,
|
|
@@ -25,16 +42,32 @@ export default function verifyPremise(premiseNode, premises, localMetaContext) {
|
|
|
25
42
|
unqualifiedMetastatementVerified = verifyUnqualifiedMetastatement(unqualifiedMetastatementNode, assignments, derived, localMetaContext);
|
|
26
43
|
|
|
27
44
|
if (unqualifiedMetastatementVerified) {
|
|
28
|
-
const
|
|
45
|
+
const localContext = localMetaContext, ///
|
|
46
|
+
assignmentAssigned = assignAssignment(assignments, localContext);
|
|
29
47
|
|
|
30
48
|
premiseVerified = assignmentAssigned; ///
|
|
31
49
|
}
|
|
32
50
|
}
|
|
33
51
|
|
|
34
52
|
if (premiseVerified) {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
53
|
+
let premise,
|
|
54
|
+
metaproofStep;
|
|
55
|
+
|
|
56
|
+
if (unqualifiedStatementNode !== null) {
|
|
57
|
+
const statementNode = statementNodeQuery(unqualifiedStatementNode);
|
|
58
|
+
|
|
59
|
+
metaproofStep = MetaproofStep.fromMetastatementNode(statementNode);
|
|
60
|
+
|
|
61
|
+
premise = Premise.fromStatementNode(statementNode);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
if (unqualifiedMetastatementNode !== null) {
|
|
65
|
+
const metastatementNode = metastatementNodeQuery(unqualifiedMetastatementNode);
|
|
66
|
+
|
|
67
|
+
metaproofStep = MetaproofStep.fromMetastatementNode(metastatementNode);
|
|
68
|
+
|
|
69
|
+
premise = Premise.fromMetastatementNode(metastatementNode);
|
|
70
|
+
}
|
|
38
71
|
|
|
39
72
|
premises.push(premise);
|
|
40
73
|
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import LocalContext from "../context/local";
|
|
4
3
|
import MetaproofStep from "../step/metaproof";
|
|
5
4
|
import verifyRuleSubproof from "../verify/ruleSubproof";
|
|
6
5
|
import verifyRuleSubDerivation from "../verify/ruleSubDerivation";
|
|
7
6
|
import verifyQualifiedStatement from "../verify/statement/qualified";
|
|
8
|
-
import verifyUnqualifiedStatement from "../verify/statement/unqualified";
|
|
9
7
|
import verifyQualifiedMetastatement from "../verify/metastatement/qualified";
|
|
10
8
|
import verifyUnqualifiedMetastatement from "../verify/metastatement/unqualified";
|
|
11
9
|
|
|
@@ -47,7 +45,7 @@ export default function verifyRuleProofStep(ruleProofStepNode, localMetaContext)
|
|
|
47
45
|
let qualifiedStatementVerified;
|
|
48
46
|
|
|
49
47
|
const assignments = [],
|
|
50
|
-
localContext =
|
|
48
|
+
localContext = localMetaContext; ///
|
|
51
49
|
|
|
52
50
|
qualifiedStatementVerified = verifyQualifiedStatement(qualifiedStatementNode, assignments, localContext);
|
|
53
51
|
|
|
@@ -76,7 +74,8 @@ export default function verifyRuleProofStep(ruleProofStepNode, localMetaContext)
|
|
|
76
74
|
qualifiedMetastatementVerified = verifyQualifiedMetastatement(qualifiedMetastatementNode, substitutions, assignments, localMetaContext);
|
|
77
75
|
|
|
78
76
|
if (qualifiedMetastatementVerified) {
|
|
79
|
-
const
|
|
77
|
+
const localContext = localMetaContext, ///
|
|
78
|
+
assignmentAssigned = assignAssignment(assignments, localContext);
|
|
80
79
|
|
|
81
80
|
qualifiedMetastatementVerified = assignmentAssigned; ///
|
|
82
81
|
}
|
|
@@ -98,7 +97,8 @@ export default function verifyRuleProofStep(ruleProofStepNode, localMetaContext)
|
|
|
98
97
|
unqualifiedMetastatementVerified = verifyUnqualifiedMetastatement(unqualifiedMetastatementNode, assignments, derived, localMetaContext);
|
|
99
98
|
|
|
100
99
|
if (unqualifiedMetastatementVerified) {
|
|
101
|
-
const
|
|
100
|
+
const localContext = localMetaContext, ///
|
|
101
|
+
assignmentAssigned = assignAssignment(assignments, localContext);
|
|
102
102
|
|
|
103
103
|
unqualifiedMetastatementVerified = assignmentAssigned; ///
|
|
104
104
|
}
|
|
@@ -8,11 +8,11 @@ import { nodeQuery } from "../utilities/query";
|
|
|
8
8
|
|
|
9
9
|
const variableNodeQuery = nodeQuery("/term/variable");
|
|
10
10
|
|
|
11
|
-
export default function verifyVariableAgainstTerm(
|
|
11
|
+
export default function verifyVariableAgainstTerm(variableNodeA, termNodeB, substitutions, localContextA, localContextB, verifyAhead) {
|
|
12
12
|
let variableVerifiedAgainstTerm = false;
|
|
13
13
|
|
|
14
14
|
const substitution = substitutions.find((substitution) => {
|
|
15
|
-
const substitutionMatchesVariableNodeA = substitution.matchVariableNode(
|
|
15
|
+
const substitutionMatchesVariableNodeA = substitution.matchVariableNode(variableNodeA);
|
|
16
16
|
|
|
17
17
|
if (substitutionMatchesVariableNodeA) {
|
|
18
18
|
return true;
|
|
@@ -20,19 +20,19 @@ export default function verifyVariableAgainstTerm(variableNode, termNode, substi
|
|
|
20
20
|
}) || null;
|
|
21
21
|
|
|
22
22
|
if (substitution !== null) {
|
|
23
|
-
const
|
|
23
|
+
const substitutionMatchesTermNodeB = substitution.matchTermNode(termNodeB);
|
|
24
24
|
|
|
25
|
-
if (
|
|
25
|
+
if (substitutionMatchesTermNodeB) {
|
|
26
26
|
const verifiedAhead = verifyAhead();
|
|
27
27
|
|
|
28
28
|
variableVerifiedAgainstTerm = verifiedAhead; ///
|
|
29
29
|
}
|
|
30
30
|
} else {
|
|
31
|
-
const variableA = localContextA.findVariableByVariableNode(
|
|
31
|
+
const variableA = localContextA.findVariableByVariableNode(variableNodeA);
|
|
32
32
|
|
|
33
33
|
if (variableA !== null) {
|
|
34
34
|
const terms = [],
|
|
35
|
-
termVerified = verifyTerm(
|
|
35
|
+
termVerified = verifyTerm(termNodeB, terms, localContextB, () => {
|
|
36
36
|
let verifiedAhead = false;
|
|
37
37
|
|
|
38
38
|
const firstTerm = first(terms),
|
|
@@ -49,7 +49,9 @@ export default function verifyVariableAgainstTerm(variableNode, termNode, substi
|
|
|
49
49
|
variableTypeEqualToOrSuperTypeOfTermType = variableType.isEqualToOrSuperTypeOf(termType);
|
|
50
50
|
|
|
51
51
|
if (variableTypeEqualToOrSuperTypeOfTermType) {
|
|
52
|
-
const
|
|
52
|
+
const termNode = termNodeB, ///
|
|
53
|
+
variableNode = variableNodeA, ///
|
|
54
|
+
termForVariableSubstitution = TermForVariableSubstitution.fromVariableNodeAndTermNode(variableNode, termNode),
|
|
53
55
|
substitution = termForVariableSubstitution; ///
|
|
54
56
|
|
|
55
57
|
substitutions.push(substitution);
|