occam-verify-cli 1.0.800 → 1.0.809
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/context/bounded.js +242 -0
- package/lib/context/branching.js +2 -2
- package/lib/context/ephemeral.js +186 -69
- package/lib/context/file/nominal.js +87 -52
- package/lib/context/liminal.js +2 -2
- package/lib/context/synoptic.js +212 -0
- package/lib/context.js +57 -17
- package/lib/element/assertion/defined.js +3 -3
- package/lib/element/assumption/metaLevel.js +6 -4
- package/lib/element/combinator.js +4 -2
- package/lib/element/conclusion.js +4 -2
- package/lib/element/constructor.js +4 -2
- package/lib/element/declaration/metavariable.js +10 -9
- package/lib/element/declaration/variable.js +7 -7
- package/lib/element/deduction.js +4 -2
- package/lib/element/derivation.js +1 -7
- package/lib/element/label.js +9 -5
- package/lib/element/metavariable.js +34 -34
- package/lib/element/procedureCall.js +2 -2
- package/lib/element/proof.js +2 -2
- package/lib/element/proofAssertion/premise.js +4 -3
- package/lib/element/proofAssertion/step.js +5 -3
- package/lib/element/reference.js +6 -4
- package/lib/element/rule.js +2 -2
- package/lib/element/statement.js +9 -1
- package/lib/element/subproof.js +2 -2
- package/lib/element/substitution/frame.js +43 -29
- package/lib/element/substitution/reference.js +38 -28
- package/lib/element/substitution/statement.js +52 -42
- package/lib/element/substitution/term.js +49 -35
- package/lib/element/topLevelAssertion.js +2 -2
- package/lib/element/topLevelMetaAssertion.js +2 -2
- package/lib/element/variable.js +6 -7
- package/lib/preamble.js +1 -2
- package/lib/process/assign.js +11 -10
- package/lib/process/equate.js +3 -2
- package/lib/process/unify.js +7 -7
- package/lib/utilities/context.js +51 -44
- package/lib/utilities/element.js +1 -1
- package/lib/utilities/equivalences.js +131 -0
- package/lib/utilities/instance.js +3 -3
- package/lib/utilities/json.js +59 -1
- package/lib/utilities/validation.js +4 -3
- package/package.json +4 -4
- package/src/context/{proof.js → bounded.js} +84 -85
- package/src/context/branching.js +2 -2
- package/src/context/ephemeral.js +421 -237
- package/src/context/file/nominal.js +127 -77
- package/src/context/liminal.js +2 -2
- package/src/context/synoptic.js +290 -0
- package/src/context.js +81 -20
- package/src/element/assertion/defined.js +4 -4
- package/src/element/assumption/metaLevel.js +8 -6
- package/src/element/combinator.js +4 -2
- package/src/element/conclusion.js +4 -2
- package/src/element/constructor.js +4 -2
- package/src/element/declaration/metavariable.js +10 -8
- package/src/element/declaration/variable.js +8 -7
- package/src/element/deduction.js +4 -2
- package/src/element/derivation.js +0 -2
- package/src/element/label.js +11 -7
- package/src/element/metavariable.js +11 -11
- package/src/element/procedureCall.js +2 -2
- package/src/element/proof.js +2 -2
- package/src/element/proofAssertion/premise.js +4 -4
- package/src/element/proofAssertion/step.js +6 -4
- package/src/element/reference.js +7 -5
- package/src/element/rule.js +2 -2
- package/src/element/statement.js +14 -0
- package/src/element/subproof.js +2 -2
- package/src/element/substitution/frame.js +47 -32
- package/src/element/substitution/reference.js +44 -34
- package/src/element/substitution/statement.js +69 -58
- package/src/element/substitution/term.js +53 -38
- package/src/element/topLevelAssertion.js +2 -2
- package/src/element/topLevelMetaAssertion.js +2 -2
- package/src/element/variable.js +6 -7
- package/src/preamble.js +0 -1
- package/src/process/assign.js +17 -14
- package/src/process/equate.js +3 -1
- package/src/process/unify.js +10 -13
- package/src/utilities/context.js +54 -49
- package/src/utilities/element.js +1 -0
- package/src/utilities/equivalences.js +158 -0
- package/src/utilities/instance.js +3 -3
- package/src/utilities/json.js +66 -0
- package/src/utilities/validation.js +6 -5
- package/lib/context/proof.js +0 -242
- package/lib/context/synthetic.js +0 -135
- package/lib/element/equivalences.js +0 -173
- package/src/context/synthetic.js +0 -180
- package/src/element/equivalences.js +0 -237
package/src/context/synthetic.js
DELETED
|
@@ -1,180 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import { arrayUtilities } from "necessary";
|
|
4
|
-
|
|
5
|
-
import Context from "../context";
|
|
6
|
-
|
|
7
|
-
const { last } = arrayUtilities;
|
|
8
|
-
|
|
9
|
-
export default class SyntheticContext extends Context {
|
|
10
|
-
constructor(context, contexts) {
|
|
11
|
-
super(context);
|
|
12
|
-
|
|
13
|
-
this.contexts = contexts;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
getContexts() {
|
|
17
|
-
return this.contexts;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
addSubstitutions(substitutions) {
|
|
21
|
-
const context = this.getContext();
|
|
22
|
-
|
|
23
|
-
context.addSubstitutions(substitutions);
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
findTermByTermNode(termNode) {
|
|
27
|
-
let term = null;
|
|
28
|
-
|
|
29
|
-
this.contexts.some((context) => {
|
|
30
|
-
term = context.findTermByTermNode(termNode);
|
|
31
|
-
|
|
32
|
-
if (term !== null) {
|
|
33
|
-
return true;
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
return term;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
findFrameByFrameNode(frameNode) {
|
|
41
|
-
let frame = null;
|
|
42
|
-
|
|
43
|
-
this.contexts.some((context) => {
|
|
44
|
-
frame = context.findFrameByFrameNode(frameNode);
|
|
45
|
-
|
|
46
|
-
if (frame !== null) {
|
|
47
|
-
return true;
|
|
48
|
-
}
|
|
49
|
-
});
|
|
50
|
-
|
|
51
|
-
return frame;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
findStatementByStatementNode(statementNode) {
|
|
55
|
-
let statement = null;
|
|
56
|
-
|
|
57
|
-
this.contexts.some((context) => {
|
|
58
|
-
statement = context.findStatementByStatementNode(statementNode);
|
|
59
|
-
|
|
60
|
-
if (statement !== null) {
|
|
61
|
-
return true;
|
|
62
|
-
}
|
|
63
|
-
});
|
|
64
|
-
|
|
65
|
-
return statement;
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
findSubstitutionBySubstitutionNode(substitutionNode) {
|
|
69
|
-
let substitution = null;
|
|
70
|
-
|
|
71
|
-
this.contexts.some((context) => {
|
|
72
|
-
substitution = context.findSubstitutionBySubstitutionNode(substitutionNode);
|
|
73
|
-
|
|
74
|
-
if (substitution !== null) {
|
|
75
|
-
return true;
|
|
76
|
-
}
|
|
77
|
-
});
|
|
78
|
-
|
|
79
|
-
return substitution;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
findReferenceByMetavariableNode(metavariableNode) {
|
|
83
|
-
let reference = null;
|
|
84
|
-
|
|
85
|
-
this.contexts.some((context) => {
|
|
86
|
-
reference = context.findReferenceByMetavariableNode(metavariableNode);
|
|
87
|
-
|
|
88
|
-
if (reference !== null) {
|
|
89
|
-
return true;
|
|
90
|
-
}
|
|
91
|
-
});
|
|
92
|
-
|
|
93
|
-
return reference;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
findVariableByVariableIdentifier(variableIdentifier) {
|
|
97
|
-
let variable = null;
|
|
98
|
-
|
|
99
|
-
this.contexts.some((context) => {
|
|
100
|
-
variable = context.findVariableByVariableIdentifier(variableIdentifier);
|
|
101
|
-
|
|
102
|
-
if (variable !== null) {
|
|
103
|
-
return true;
|
|
104
|
-
}
|
|
105
|
-
});
|
|
106
|
-
|
|
107
|
-
return variable;
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
findMetavariableByMetavariableName(metavariableName) {
|
|
111
|
-
let metavariable = null;
|
|
112
|
-
|
|
113
|
-
this.contexts.some((context) => {
|
|
114
|
-
metavariable = context.findMetavariableByMetavariableName(metavariableName);
|
|
115
|
-
|
|
116
|
-
if (metavariable !== null) {
|
|
117
|
-
return true;
|
|
118
|
-
}
|
|
119
|
-
});
|
|
120
|
-
|
|
121
|
-
return metavariable;
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
isTermPresentByTermNode(termNode) {
|
|
125
|
-
const term = this.findTermByTermNode(termNode),
|
|
126
|
-
termPresent = (term !== null);
|
|
127
|
-
|
|
128
|
-
return termPresent;
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
isFramePresentByFrameNode(frameNode) {
|
|
132
|
-
const frame = this.findFrameByFrameNode(frameNode),
|
|
133
|
-
framePresent = (frame !== null);
|
|
134
|
-
|
|
135
|
-
return framePresent;
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
isStatementPresentByStatementNode(statementNode) {
|
|
139
|
-
const statement = this.findStatementByStatementNode(statementNode),
|
|
140
|
-
statementPresent = (statement !== null);
|
|
141
|
-
|
|
142
|
-
return statementPresent;
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
isSubstitutionPresentBySubstitutionNode(substitutionNode) {
|
|
146
|
-
const substitution = this.findSubstitutionBySubstitutionNode(substitutionNode),
|
|
147
|
-
substitutionPresent = (substitution !== null);
|
|
148
|
-
|
|
149
|
-
return substitutionPresent;
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
isReferencePresentByMetavariableNode(metavariableNode) {
|
|
153
|
-
const reference = this.findReferenceByMetavariableNode(metavariableNode),
|
|
154
|
-
referencePresent = (reference !== null);
|
|
155
|
-
|
|
156
|
-
return referencePresent;
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
isVariablePresentByVariableIdentifier(variableIdentifier) {
|
|
160
|
-
const variable = this.findVariableByVariableIdentifier(variableIdentifier),
|
|
161
|
-
variablePresent = (variable !== null);
|
|
162
|
-
|
|
163
|
-
return variablePresent;
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
isMetavariablePresentByMetavariableName(metavariableName) {
|
|
167
|
-
const metavariable = this.findMetavariableByMetavariableName(metavariableName),
|
|
168
|
-
metavariablePresent = (metavariable !== null);
|
|
169
|
-
|
|
170
|
-
return metavariablePresent;
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
static fromContexts(...contexts) {
|
|
174
|
-
const lastContext = last(contexts),
|
|
175
|
-
context = lastContext, ///
|
|
176
|
-
syntheticContext = new SyntheticContext(context, contexts);
|
|
177
|
-
|
|
178
|
-
return syntheticContext;
|
|
179
|
-
}
|
|
180
|
-
}
|
|
@@ -1,237 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import { Element } from "occam-languages";
|
|
4
|
-
import { arrayUtilities } from "necessary";
|
|
5
|
-
|
|
6
|
-
import { define } from "../elements";
|
|
7
|
-
import { EMPTY_STRING } from "../constants";
|
|
8
|
-
import { variablesFromTerm } from "../utilities/equivalence";
|
|
9
|
-
|
|
10
|
-
const { push, separate } = arrayUtilities;
|
|
11
|
-
|
|
12
|
-
export default define(class Equivalences extends Element {
|
|
13
|
-
constructor(context, string, node, array) {
|
|
14
|
-
super(context, string, node);
|
|
15
|
-
|
|
16
|
-
this.array = array;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
getArray() {
|
|
20
|
-
return this.array;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
getEquivalencesNode() {
|
|
24
|
-
const node = this.getNode(),
|
|
25
|
-
equivalencesNode = node; ///
|
|
26
|
-
|
|
27
|
-
return equivalencesNode;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
getLength() { return this.array.length; }
|
|
31
|
-
|
|
32
|
-
getTypes() {
|
|
33
|
-
const types = this.array.map((equivalence) => {
|
|
34
|
-
const type = equivalence.getType();
|
|
35
|
-
|
|
36
|
-
return type;
|
|
37
|
-
});
|
|
38
|
-
|
|
39
|
-
return types;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
addEquivalence(equivalence) {
|
|
43
|
-
this.array.push(equivalence);
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
addEquivalences(equivalences) {
|
|
47
|
-
const array = equivalences.getArray();
|
|
48
|
-
|
|
49
|
-
push(this.array, array);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
someEquivalence(callback) { return this.array.some(callback); }
|
|
53
|
-
|
|
54
|
-
everyEquivalence(callback) { return this.array.every(callback); }
|
|
55
|
-
|
|
56
|
-
forEachEquivalence(callback) { this.array.forEach(callback); }
|
|
57
|
-
|
|
58
|
-
findEquivalenceByTerm(term) {
|
|
59
|
-
const equivalence = this.array.find((equivalence) => {
|
|
60
|
-
const equivalenceComparesToTerm = equivalence.compareTerm(term);
|
|
61
|
-
|
|
62
|
-
if (equivalenceComparesToTerm) {
|
|
63
|
-
return true;
|
|
64
|
-
}
|
|
65
|
-
}) || null;
|
|
66
|
-
|
|
67
|
-
return equivalence;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
findEquivalenceByTermNodes(termNodes) {
|
|
71
|
-
const equivalence = this.array.find((equivalence) => {
|
|
72
|
-
const termNodeMatches = equivalence.matchTermNodes(termNodes);
|
|
73
|
-
|
|
74
|
-
if (termNodeMatches) {
|
|
75
|
-
return true;
|
|
76
|
-
}
|
|
77
|
-
}) || null;
|
|
78
|
-
|
|
79
|
-
return equivalence;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
mergedWith(equivalences, context) {
|
|
83
|
-
let mergedEquivalences = this.clone(context); ///
|
|
84
|
-
|
|
85
|
-
equivalences.forEachEquivalence((equivalence) => {
|
|
86
|
-
mergedEquivalences = mergedEquivalences.mergedWithEquivalence(equivalence, context);
|
|
87
|
-
});
|
|
88
|
-
|
|
89
|
-
return mergedEquivalences;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
mergedWithEquivalence(equivalence, context) {
|
|
93
|
-
const equivalences = Equivalences.fromNothing(context);
|
|
94
|
-
|
|
95
|
-
let mergedEquivalence = equivalence; ///
|
|
96
|
-
|
|
97
|
-
this.forEachEquivalence((equivalence) => {
|
|
98
|
-
const mergedEquivalenceDisjointFromEquivalence = mergedEquivalence.isDisjointFrom(equivalence);
|
|
99
|
-
|
|
100
|
-
if (mergedEquivalenceDisjointFromEquivalence) {
|
|
101
|
-
equivalences.addEquivalence(equivalence);
|
|
102
|
-
} else {
|
|
103
|
-
mergedEquivalence = mergedEquivalence.mergedWith(equivalence, context);
|
|
104
|
-
}
|
|
105
|
-
});
|
|
106
|
-
|
|
107
|
-
equivalence = mergedEquivalence; ///
|
|
108
|
-
|
|
109
|
-
equivalences.addEquivalence(equivalence);
|
|
110
|
-
|
|
111
|
-
return equivalences;
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
separateEquivalences(equivalencesA, equivalencesB, callback) {
|
|
115
|
-
const equivalencesAArray = equivalencesA.getArray(),
|
|
116
|
-
equivalencesBArray = equivalencesB.getArray();
|
|
117
|
-
|
|
118
|
-
separate(this.array, equivalencesAArray, equivalencesBArray, callback);
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
separateInitiallyGroundedEquivalences(remainingEquivalences, initiallyGroundedEquivalences, context) {
|
|
122
|
-
this.separateEquivalences(remainingEquivalences, initiallyGroundedEquivalences, (equivalence) => {
|
|
123
|
-
const equivalenceInitiallyGrounded = equivalence.isInitiallyGrounded(context);
|
|
124
|
-
|
|
125
|
-
if (!equivalenceInitiallyGrounded) {
|
|
126
|
-
return true;
|
|
127
|
-
}
|
|
128
|
-
});
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
separateImplicitlyGroundedEquivalences(remainingEquivalences, implicitlyGroundedEquivalences, definedVariables, context) {
|
|
132
|
-
this.separateEquivalences(remainingEquivalences, implicitlyGroundedEquivalences, (equivalence) => {
|
|
133
|
-
const equivalenceImplicitlyGrounded = equivalence.isImplicitlyGrounded(definedVariables, context);
|
|
134
|
-
|
|
135
|
-
if (!equivalenceImplicitlyGrounded) {
|
|
136
|
-
return true;
|
|
137
|
-
}
|
|
138
|
-
});
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
separateGroundedTermsAndDefinedVariables(groundedTerms, definedVariables, context) {
|
|
142
|
-
let equivalences = this, ///
|
|
143
|
-
groundedEquivalences,
|
|
144
|
-
remainingEquivalences,
|
|
145
|
-
initiallyGroundedEquivalences,
|
|
146
|
-
implicitlyGroundedEquivalences;
|
|
147
|
-
|
|
148
|
-
remainingEquivalences =Equivalences.fromNothing(context);
|
|
149
|
-
|
|
150
|
-
initiallyGroundedEquivalences = Equivalences.fromNothing(context);
|
|
151
|
-
|
|
152
|
-
equivalences.separateInitiallyGroundedEquivalences(remainingEquivalences, initiallyGroundedEquivalences, context);
|
|
153
|
-
|
|
154
|
-
const initiallyGroundedEquivalencesLength = initiallyGroundedEquivalences.getLength();
|
|
155
|
-
|
|
156
|
-
if (initiallyGroundedEquivalencesLength > 0) {
|
|
157
|
-
groundedEquivalences = initiallyGroundedEquivalences; ///
|
|
158
|
-
|
|
159
|
-
let implicitlyGroundedEquivalencesLength = 1;
|
|
160
|
-
|
|
161
|
-
while (implicitlyGroundedEquivalencesLength > 0) {
|
|
162
|
-
let definedVariablesLength = 0,
|
|
163
|
-
previousDefinedVariablesLength = -1;
|
|
164
|
-
|
|
165
|
-
while (definedVariablesLength > previousDefinedVariablesLength) {
|
|
166
|
-
previousDefinedVariablesLength = definedVariablesLength; ///
|
|
167
|
-
|
|
168
|
-
groundedTermsFromGroundedEquivalencesAndDefinedVariables(groundedEquivalences, definedVariables, groundedTerms, context);
|
|
169
|
-
|
|
170
|
-
definedVariablesFromGroundedTerms(groundedTerms, definedVariables, context);
|
|
171
|
-
|
|
172
|
-
definedVariablesLength = definedVariables.length;
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
equivalences = remainingEquivalences; ///
|
|
176
|
-
|
|
177
|
-
remainingEquivalences = [];
|
|
178
|
-
|
|
179
|
-
implicitlyGroundedEquivalences = [];
|
|
180
|
-
|
|
181
|
-
equivalences.separateImplicitlyGroundedEquivalences(remainingEquivalences, implicitlyGroundedEquivalences, definedVariables, context);
|
|
182
|
-
|
|
183
|
-
groundedEquivalences.addEquivalences(implicitlyGroundedEquivalences);
|
|
184
|
-
|
|
185
|
-
implicitlyGroundedEquivalencesLength = implicitlyGroundedEquivalences.getLength(); ///
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
clone(context) {
|
|
191
|
-
const string = EMPTY_STRING,
|
|
192
|
-
node = null,
|
|
193
|
-
array = [
|
|
194
|
-
...this.array
|
|
195
|
-
],
|
|
196
|
-
equivalences = new Equivalences(context, string, node, array);
|
|
197
|
-
|
|
198
|
-
return equivalences;
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
static name = "Equivalences";
|
|
202
|
-
|
|
203
|
-
static fromNothing(context) {
|
|
204
|
-
const string = EMPTY_STRING,
|
|
205
|
-
node = null,
|
|
206
|
-
array = [];
|
|
207
|
-
|
|
208
|
-
context = null;
|
|
209
|
-
|
|
210
|
-
const equivalences = new Equivalences(context, string, node, array);
|
|
211
|
-
|
|
212
|
-
return equivalences;
|
|
213
|
-
}
|
|
214
|
-
});
|
|
215
|
-
|
|
216
|
-
function definedVariablesFromGroundedTerms(groundedTerms, definedVariables, context) {
|
|
217
|
-
groundedTerms.forEach((groundedTerm) => {
|
|
218
|
-
const term = groundedTerm, ///
|
|
219
|
-
variables = variablesFromTerm(term, context);
|
|
220
|
-
|
|
221
|
-
variables.forEach((variable) => {
|
|
222
|
-
const definedVariablesIncludesTermVariable = definedVariables.includes(variable);
|
|
223
|
-
|
|
224
|
-
if (!definedVariablesIncludesTermVariable) {
|
|
225
|
-
const definedVariable = variable; ///
|
|
226
|
-
|
|
227
|
-
definedVariables.push(definedVariable);
|
|
228
|
-
}
|
|
229
|
-
});
|
|
230
|
-
});
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
function groundedTermsFromGroundedEquivalencesAndDefinedVariables(groundedEquivalences, definedVariables, groundedTerms, context) {
|
|
234
|
-
groundedEquivalences.forEachEquivalence((groundedEquivalence) => {
|
|
235
|
-
groundedEquivalence.getGroundedTerms(definedVariables, groundedTerms, context);
|
|
236
|
-
});
|
|
237
|
-
}
|