occam-verify-cli 0.0.1119 → 0.0.1121
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/dom/metavariable.js +118 -41
- package/lib/dom/reference.js +8 -1
- package/lib/dom/statement.js +6 -1
- package/lib/dom/term.js +4 -3
- package/lib/mixins/proofStep/unify.js +43 -15
- package/lib/nodeAndTokens/substitution/reference.js +158 -0
- package/lib/substitution/reference.js +164 -0
- package/lib/substitution/statement.js +5 -5
- package/lib/substitution/term.js +2 -3
- package/lib/substitution.js +15 -1
- package/lib/unifier/intrinsicLevel.js +145 -0
- package/lib/unifier/metaLevel.js +17 -2
- package/lib/unifier/metavariable.js +2 -2
- package/lib/utilities/brackets.js +31 -1
- package/lib/utilities/unification.js +13 -1
- package/lib/utilities/verification.js +25 -24
- package/package.json +2 -2
- package/src/dom/metavariable.js +167 -42
- package/src/dom/reference.js +10 -0
- package/src/dom/statement.js +8 -0
- package/src/dom/term.js +3 -3
- package/src/mixins/proofStep/unify.js +64 -22
- package/src/nodeAndTokens/substitution/reference.js +18 -0
- package/src/substitution/reference.js +74 -0
- package/src/substitution/statement.js +1 -1
- package/src/substitution/term.js +1 -1
- package/src/substitution.js +12 -0
- package/src/unifier/intrinsicLevel.js +55 -0
- package/src/unifier/metaLevel.js +27 -0
- package/src/unifier/metavariable.js +1 -1
- package/src/utilities/brackets.js +42 -0
- package/src/utilities/unification.js +18 -0
- package/src/utilities/verification.js +33 -27
package/src/unifier/metaLevel.js
CHANGED
|
@@ -9,9 +9,11 @@ import { nodeQuery } from "../utilities/query";
|
|
|
9
9
|
|
|
10
10
|
const termNodeQuery = nodeQuery("/term"),
|
|
11
11
|
frameNodeQuery = nodeQuery("/frame"),
|
|
12
|
+
referenceNodeQuery = nodeQuery("/reference"),
|
|
12
13
|
statementNodeQuery = nodeQuery("/statement"),
|
|
13
14
|
termVariableNodeQuery = nodeQuery("/term/variable!"),
|
|
14
15
|
frameMetavariableNodeQuery = nodeQuery("/frame/metavariable!"),
|
|
16
|
+
referenceMetavariableNodeQuery = nodeQuery("/reference/metavariable!"),
|
|
15
17
|
statementMetavariableNodeQuery = nodeQuery("/statement/metavariable!");
|
|
16
18
|
|
|
17
19
|
class MetaLevelUnifier extends Unifier {
|
|
@@ -68,6 +70,31 @@ class MetaLevelUnifier extends Unifier {
|
|
|
68
70
|
return statementUnified;
|
|
69
71
|
}
|
|
70
72
|
},
|
|
73
|
+
{
|
|
74
|
+
generalNodeQuery: referenceMetavariableNodeQuery,
|
|
75
|
+
specificNodeQuery: referenceNodeQuery,
|
|
76
|
+
unify: (generalReferenceMetavariableNode, specificReferenceNode, substitutions, generalContext, specificContext) => {
|
|
77
|
+
let referenceUnified;
|
|
78
|
+
|
|
79
|
+
const { Reference, Metavariable } = dom,
|
|
80
|
+
referenceNode = specificReferenceNode, ///
|
|
81
|
+
metavariableNode = generalReferenceMetavariableNode; ///
|
|
82
|
+
|
|
83
|
+
let context;
|
|
84
|
+
|
|
85
|
+
context = generalContext; ///
|
|
86
|
+
|
|
87
|
+
const metavariable = Metavariable.fromMetavariableNode(metavariableNode, context);
|
|
88
|
+
|
|
89
|
+
context = specificContext; ///
|
|
90
|
+
|
|
91
|
+
const reference = Reference.fromReferenceNode(referenceNode, context);
|
|
92
|
+
|
|
93
|
+
referenceUnified = metavariable.unifyReference(reference, substitutions, generalContext, specificContext);
|
|
94
|
+
|
|
95
|
+
return referenceUnified;
|
|
96
|
+
}
|
|
97
|
+
},
|
|
71
98
|
{
|
|
72
99
|
generalNodeQuery: frameMetavariableNodeQuery,
|
|
73
100
|
specificNodeQuery: frameNodeQuery,
|
|
@@ -34,7 +34,7 @@ class MetavariableUnifier extends Unifier {
|
|
|
34
34
|
termNode = specificTermNode, ///
|
|
35
35
|
typeName = typeNameFromTypeNode(typeNode),
|
|
36
36
|
type = generalContext.findTypeByTypeName(typeName),
|
|
37
|
-
context =
|
|
37
|
+
context = specificContext, ///
|
|
38
38
|
term = Term.fromTermNode(termNode, context),
|
|
39
39
|
termVerifiedGivenType = term.verifyGivenType(type, generalContext, specificContext);
|
|
40
40
|
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import dom from "../dom";
|
|
4
|
+
import LocalContext from "../context/local";
|
|
3
5
|
import combinatorBracketedContext from "../context/bracketed/combinator";
|
|
4
6
|
import constructorBracketedContext from "../context/bracketed/constructor";
|
|
5
7
|
|
|
@@ -9,6 +11,36 @@ import { BRACKETED_TERM_DEPTH, BRACKETED_STATEMENT_DEPTH } from "../constants";
|
|
|
9
11
|
const bracketedTermChildNodeQuery = nodeQuery("/term/argument/term"),
|
|
10
12
|
bracketedStatementChildNodeQuery = nodeQuery("/statement/metaArgument/statement");
|
|
11
13
|
|
|
14
|
+
export function stripBracketsFromTerm(term, context) {
|
|
15
|
+
const termNode = term.getNode(),
|
|
16
|
+
bracketedTermChildNode = bracketedTermChildNodeFromTermNode(termNode);
|
|
17
|
+
|
|
18
|
+
if (bracketedTermChildNode !== null) {
|
|
19
|
+
const { Term } = dom,
|
|
20
|
+
termNode = bracketedTermChildNode; ///
|
|
21
|
+
|
|
22
|
+
term = Term.fromStatementNode(termNode, context);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
return term;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export function stripBracketsFromStatement(statement, context) {
|
|
29
|
+
const statementNode = statement.getNode(),
|
|
30
|
+
bracketedStatementChildNode = bracketedStatementChildNodeFromStatementNode(statementNode);
|
|
31
|
+
|
|
32
|
+
if (bracketedStatementChildNode !== null) {
|
|
33
|
+
context = contextFromStatement(statement, context); ///
|
|
34
|
+
|
|
35
|
+
const { Statement } = dom,
|
|
36
|
+
statementNode = bracketedStatementChildNode; ///
|
|
37
|
+
|
|
38
|
+
statement = Statement.fromStatementNode(statementNode, context);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
return statement;
|
|
42
|
+
}
|
|
43
|
+
|
|
12
44
|
export function stripBracketsFromTermNode(termNode) {
|
|
13
45
|
const bracketedTermChildNode = bracketedTermChildNodeFromTermNode(termNode);
|
|
14
46
|
|
|
@@ -56,3 +88,13 @@ export function bracketedStatementChildNodeFromStatementNode(statementNode) {
|
|
|
56
88
|
|
|
57
89
|
return bracketedStatementChildNode;
|
|
58
90
|
}
|
|
91
|
+
|
|
92
|
+
function contextFromStatement(statement, context) {
|
|
93
|
+
const statementTokens = statement.getTokens(),
|
|
94
|
+
tokens = statementTokens, ///
|
|
95
|
+
localContext = LocalContext.fromContextAndTokens(context, tokens);
|
|
96
|
+
|
|
97
|
+
context = localContext; ///
|
|
98
|
+
|
|
99
|
+
return context;
|
|
100
|
+
}
|
|
@@ -5,6 +5,7 @@ import labelUnifier from "../unifier/label";
|
|
|
5
5
|
import equalityUnifier from "../unifier/equality";
|
|
6
6
|
import metaLevelUnifier from "../unifier/metaLevel";
|
|
7
7
|
import metavariableUnifier from "../unifier/metavariable";
|
|
8
|
+
import intrinsicLevelUnifier from "../unifier/intrinsicLevel";
|
|
8
9
|
import termWithConstructorUnifier from "../unifier/termWithConstructor";
|
|
9
10
|
import statementWithCombinatorUnifier from "../unifier/statementWithCombinator";
|
|
10
11
|
|
|
@@ -134,6 +135,23 @@ export function unifyStatementWithCombinator(statement, combinator, assignments,
|
|
|
134
135
|
return statementUnifiedWithCombinator;
|
|
135
136
|
}
|
|
136
137
|
|
|
138
|
+
export function unifyMetavariableIntrinsically(generalMetavariable, specificMetavariable, substitutions, generalContext, specificContext) {
|
|
139
|
+
let metavariableUnifiedIntrinsically;
|
|
140
|
+
|
|
141
|
+
const generalMetavariableNode = generalMetavariable.getNode(),
|
|
142
|
+
specificMetavariableNode = specificMetavariable.getNode(),
|
|
143
|
+
generalMetavariableTokens = generalMetavariable.getTokens(),
|
|
144
|
+
specificMetavariableTokens = specificMetavariable.getTokens();
|
|
145
|
+
|
|
146
|
+
generalContext = contextFromTokens(generalMetavariableTokens, generalContext); ///
|
|
147
|
+
|
|
148
|
+
specificContext = contextFromTokens(specificMetavariableTokens, specificContext); ///
|
|
149
|
+
|
|
150
|
+
metavariableUnifiedIntrinsically = intrinsicLevelUnifier.unify(generalMetavariableNode, specificMetavariableNode, substitutions, generalContext, specificContext);
|
|
151
|
+
|
|
152
|
+
return metavariableUnifiedIntrinsically;
|
|
153
|
+
}
|
|
154
|
+
|
|
137
155
|
function contextFromTokens(tokens, context) {
|
|
138
156
|
const localContext = LocalContext.fromContextAndTokens(context, tokens);
|
|
139
157
|
|
|
@@ -3,38 +3,24 @@
|
|
|
3
3
|
import dom from "../dom";
|
|
4
4
|
import LocalContext from "../context/local";
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
export function metavariableFromFrame(frame, context) {
|
|
7
|
+
context = contextFromFrame(frame, context); ///
|
|
7
8
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
if (bracketedTermChildNode !== null) {
|
|
13
|
-
context = contextFromTerm(term, context); ///
|
|
14
|
-
|
|
15
|
-
const { Term } = dom,
|
|
16
|
-
termNode = bracketedTermChildNode; ///
|
|
17
|
-
|
|
18
|
-
term = Term.fromStatementNode(termNode, context);
|
|
19
|
-
}
|
|
9
|
+
const { Metavariable } = dom,
|
|
10
|
+
frameNode = frame.getNode(),
|
|
11
|
+
metavariable = Metavariable.fromFrameNode(frameNode, context);
|
|
20
12
|
|
|
21
|
-
return
|
|
13
|
+
return metavariable;
|
|
22
14
|
}
|
|
23
15
|
|
|
24
|
-
export function
|
|
25
|
-
|
|
26
|
-
bracketedStatementChildNode = bracketedStatementChildNodeFromStatementNode(statementNode);
|
|
27
|
-
|
|
28
|
-
if (bracketedStatementChildNode !== null) {
|
|
29
|
-
context = contextFromStatement(statement, context); ///
|
|
16
|
+
export function metavariableFromReference(reference, context) {
|
|
17
|
+
context = contextFromReference(reference, context); ///
|
|
30
18
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
statement = Statement.fromStatementNode(statementNode, context);
|
|
35
|
-
}
|
|
19
|
+
const { Metavariable } = dom,
|
|
20
|
+
referenceNode = reference.getNode(),
|
|
21
|
+
metavariable = Metavariable.fromReferenceNode(referenceNode, context);
|
|
36
22
|
|
|
37
|
-
return
|
|
23
|
+
return metavariable;
|
|
38
24
|
}
|
|
39
25
|
|
|
40
26
|
export function equalityFromStatement(statement, context) {
|
|
@@ -107,6 +93,26 @@ export function containedAssertionFromStatement(statement, context) {
|
|
|
107
93
|
return containedAssertion;
|
|
108
94
|
}
|
|
109
95
|
|
|
96
|
+
function contextFromFrame(frame, context) {
|
|
97
|
+
const frameTokens = frame.getTokens(),
|
|
98
|
+
tokens = frameTokens, ///
|
|
99
|
+
localContext = LocalContext.fromContextAndTokens(context, tokens);
|
|
100
|
+
|
|
101
|
+
context = localContext; ///
|
|
102
|
+
|
|
103
|
+
return context;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
function contextFromReference(reference, context) {
|
|
107
|
+
const referenceTokens = reference.getTokens(),
|
|
108
|
+
tokens = referenceTokens, ///
|
|
109
|
+
localContext = LocalContext.fromContextAndTokens(context, tokens);
|
|
110
|
+
|
|
111
|
+
context = localContext; ///
|
|
112
|
+
|
|
113
|
+
return context;
|
|
114
|
+
}
|
|
115
|
+
|
|
110
116
|
function contextFromStatement(statement, context) {
|
|
111
117
|
const statementTokens = statement.getTokens(),
|
|
112
118
|
tokens = statementTokens, ///
|
|
@@ -115,4 +121,4 @@ function contextFromStatement(statement, context) {
|
|
|
115
121
|
context = localContext; ///
|
|
116
122
|
|
|
117
123
|
return context;
|
|
118
|
-
}
|
|
124
|
+
}
|