occam-verify-cli 1.0.184 → 1.0.192
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/constants.js +5 -1
- package/lib/dom/assertion/property.js +2 -4
- package/lib/dom/assertion/subproof.js +3 -5
- package/lib/dom/assertion/type.js +6 -8
- package/lib/dom/axiom.js +15 -100
- package/lib/dom/conjecture.js +5 -4
- package/lib/dom/constructor/bracketed.js +6 -7
- package/lib/dom/declaration/complexType.js +6 -6
- package/lib/dom/declaration/metavariable.js +3 -5
- package/lib/dom/declaration/type.js +2 -2
- package/lib/dom/declaration.js +2 -4
- package/lib/dom/derivation.js +2 -4
- package/lib/dom/equality.js +9 -11
- package/lib/dom/frame.js +8 -12
- package/lib/dom/judgement.js +2 -4
- package/lib/dom/lemma.js +5 -4
- package/lib/dom/metaLemma.js +5 -4
- package/lib/dom/metaType.js +2 -4
- package/lib/dom/metatheorem.js +5 -4
- package/lib/dom/metavariable.js +12 -15
- package/lib/dom/parameter.js +2 -4
- package/lib/dom/procedureCall.js +6 -10
- package/lib/dom/proof.js +2 -4
- package/lib/dom/property.js +16 -51
- package/lib/dom/propertyRelation.js +8 -10
- package/lib/dom/reference.js +7 -11
- package/lib/dom/rule.js +6 -8
- package/lib/dom/statement.js +27 -31
- package/lib/dom/step.js +4 -6
- package/lib/dom/subDerivation.js +2 -4
- package/lib/dom/subproof.js +6 -8
- package/lib/dom/term.js +14 -20
- package/lib/dom/theorem.js +5 -4
- package/lib/dom/topLevelAssertion.js +30 -24
- package/lib/dom/topLevelMetaAssertion.js +5 -15
- package/lib/dom/type.js +8 -25
- package/lib/dom/variable.js +5 -11
- package/lib/node/assertion/contained.js +45 -58
- package/lib/node/assertion/defined.js +33 -58
- package/lib/node/assertion/property.js +33 -58
- package/lib/node/assertion/satisfies.js +21 -58
- package/lib/node/assertion/subproof.js +21 -58
- package/lib/node/assertion/type.js +33 -58
- package/lib/node/axiom.js +6 -52
- package/lib/node/combinator.js +6 -57
- package/lib/node/conclusion.js +21 -58
- package/lib/node/conjecture.js +6 -52
- package/lib/node/constructor.js +6 -57
- package/lib/node/declaration/combinator.js +13 -61
- package/lib/node/declaration/complexType.js +27 -75
- package/lib/node/declaration/constructor.js +24 -70
- package/lib/node/declaration/metavariable.js +40 -58
- package/lib/node/declaration/property.js +27 -72
- package/lib/node/declaration/type.js +23 -69
- package/lib/node/declaration/variable.js +28 -83
- package/lib/node/declaration.js +33 -58
- package/lib/node/deduction.js +21 -58
- package/lib/node/derivation.js +21 -58
- package/lib/node/equality.js +34 -58
- package/lib/node/error.js +6 -57
- package/lib/node/frame.js +52 -58
- package/lib/node/judgement.js +33 -58
- package/lib/node/label.js +21 -58
- package/lib/{node.js → node/labels.js} +25 -27
- package/lib/node/lemma.js +6 -52
- package/lib/node/metaLemma.js +6 -52
- package/lib/node/metaType.js +18 -60
- package/lib/node/metatheorem.js +6 -52
- package/lib/node/metavariable.js +40 -61
- package/lib/node/parameter.js +22 -58
- package/lib/node/parenthesisedLabels.js +123 -0
- package/lib/node/premise.js +33 -58
- package/lib/node/procedureCall.js +33 -58
- package/lib/node/proof.js +21 -58
- package/lib/node/property.js +18 -62
- package/lib/node/propertyRelation.js +40 -58
- package/lib/node/reference.js +21 -58
- package/lib/node/rule.js +6 -52
- package/lib/node/statement.js +105 -58
- package/lib/node/step.js +47 -58
- package/lib/node/subDerivation.js +21 -58
- package/lib/node/subproof.js +47 -58
- package/lib/node/supposition.js +33 -58
- package/lib/node/term.js +57 -58
- package/lib/node/theorem.js +6 -52
- package/lib/node/topLevelAssertion.js +86 -59
- package/lib/node/topLevelMetaAssertion.js +65 -59
- package/lib/node/type.js +14 -60
- package/lib/node/variable.js +14 -60
- package/lib/nominal/parser.js +3 -3
- package/lib/nonTerminalNodeMap.js +5 -3
- package/lib/ruleNames.js +10 -2
- package/lib/utilities/node.js +283 -7
- package/lib/utilities/type.js +16 -4
- package/lib/verifier/topLevel.js +6 -6
- package/package.json +8 -8
- package/src/constants.js +1 -0
- package/src/dom/assertion/property.js +1 -4
- package/src/dom/assertion/subproof.js +2 -6
- package/src/dom/assertion/type.js +7 -10
- package/src/dom/axiom.js +7 -77
- package/src/dom/conjecture.js +6 -1
- package/src/dom/constructor/bracketed.js +6 -8
- package/src/dom/declaration/complexType.js +7 -6
- package/src/dom/declaration/metavariable.js +2 -6
- package/src/dom/declaration/type.js +4 -2
- package/src/dom/declaration.js +1 -5
- package/src/dom/derivation.js +1 -4
- package/src/dom/equality.js +13 -17
- package/src/dom/frame.js +7 -19
- package/src/dom/judgement.js +1 -4
- package/src/dom/lemma.js +6 -1
- package/src/dom/metaLemma.js +6 -1
- package/src/dom/metaType.js +1 -5
- package/src/dom/metatheorem.js +6 -1
- package/src/dom/metavariable.js +11 -25
- package/src/dom/parameter.js +2 -6
- package/src/dom/procedureCall.js +5 -14
- package/src/dom/proof.js +1 -4
- package/src/dom/property.js +21 -78
- package/src/dom/propertyRelation.js +10 -14
- package/src/dom/reference.js +6 -18
- package/src/dom/rule.js +6 -12
- package/src/dom/statement.js +26 -46
- package/src/dom/step.js +3 -5
- package/src/dom/subDerivation.js +1 -4
- package/src/dom/subproof.js +8 -12
- package/src/dom/term.js +16 -32
- package/src/dom/theorem.js +6 -1
- package/src/dom/topLevelAssertion.js +30 -25
- package/src/dom/topLevelMetaAssertion.js +16 -28
- package/src/dom/type.js +9 -35
- package/src/dom/variable.js +4 -12
- package/src/node/assertion/contained.js +41 -3
- package/src/node/assertion/defined.js +29 -3
- package/src/node/assertion/property.js +29 -3
- package/src/node/assertion/satisfies.js +17 -3
- package/src/node/assertion/subproof.js +17 -3
- package/src/node/assertion/type.js +29 -3
- package/src/node/axiom.js +3 -3
- package/src/node/combinator.js +3 -3
- package/src/node/conclusion.js +17 -3
- package/src/node/conjecture.js +3 -3
- package/src/node/constructor.js +3 -3
- package/src/node/declaration/combinator.js +11 -7
- package/src/node/declaration/complexType.js +25 -24
- package/src/node/declaration/constructor.js +22 -17
- package/src/node/declaration/metavariable.js +36 -3
- package/src/node/declaration/property.js +21 -17
- package/src/node/declaration/type.js +22 -17
- package/src/node/declaration/variable.js +24 -32
- package/src/node/declaration.js +29 -3
- package/src/node/deduction.js +17 -3
- package/src/node/derivation.js +18 -3
- package/src/node/equality.js +31 -3
- package/src/node/error.js +3 -3
- package/src/node/frame.js +53 -3
- package/src/node/judgement.js +29 -3
- package/src/node/label.js +17 -3
- package/src/node/labels.js +21 -0
- package/src/node/lemma.js +3 -3
- package/src/node/metaLemma.js +3 -3
- package/src/node/metaType.js +19 -8
- package/src/node/metatheorem.js +3 -3
- package/src/node/metavariable.js +42 -9
- package/src/node/parameter.js +20 -3
- package/src/node/parenthesisedLabels.js +28 -0
- package/src/node/premise.js +29 -3
- package/src/node/procedureCall.js +29 -3
- package/src/node/proof.js +17 -3
- package/src/node/property.js +18 -12
- package/src/node/propertyRelation.js +35 -3
- package/src/node/reference.js +17 -3
- package/src/node/rule.js +3 -3
- package/src/node/statement.js +108 -3
- package/src/node/step.js +41 -3
- package/src/node/subDerivation.js +18 -3
- package/src/node/subproof.js +41 -3
- package/src/node/supposition.js +29 -3
- package/src/node/term.js +62 -3
- package/src/node/theorem.js +3 -3
- package/src/node/topLevelAssertion.js +89 -3
- package/src/node/topLevelMetaAssertion.js +59 -3
- package/src/node/type.js +15 -8
- package/src/node/variable.js +15 -8
- package/src/nominal/parser.js +1 -1
- package/src/nonTerminalNodeMap.js +9 -3
- package/src/ruleNames.js +3 -1
- package/src/utilities/node.js +147 -6
- package/src/utilities/type.js +9 -0
- package/src/verifier/topLevel.js +5 -10
- package/lib/defaultTerminalNode.js +0 -20
- package/lib/mixins/node.js +0 -145
- package/src/defaultTerminalNode.js +0 -7
- package/src/mixins/node.js +0 -201
- package/src/node.js +0 -29
|
@@ -1,7 +1,40 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import { NonTerminalNode } from "occam-parsers";
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
import { isNodeMetaTypeNode, isNodeMetavariableNode } from "../../utilities/node";
|
|
6
|
+
|
|
7
|
+
export default class MetavariableDeclarationNode extends NonTerminalNode {
|
|
8
|
+
getTypeNode() {
|
|
9
|
+
const metavariableNode = this.getMetavariableNode(),
|
|
10
|
+
typeNode = metavariableNode.getTypeNode();
|
|
11
|
+
|
|
12
|
+
return typeNode;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
getMetaTypeNode() {
|
|
16
|
+
const metaTypeNode = this.findChildNode((childNode) => {
|
|
17
|
+
const childNodeMetaTypeNode = isNodeMetaTypeNode(childNode);
|
|
18
|
+
|
|
19
|
+
if (childNodeMetaTypeNode) {
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
}) || null;
|
|
23
|
+
|
|
24
|
+
return metaTypeNode
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
getMetavariableNode() {
|
|
28
|
+
const metavariableNode = this.findChildNode((childNode) => {
|
|
29
|
+
const childNodeMetavariableNode = isNodeMetavariableNode(childNode);
|
|
30
|
+
|
|
31
|
+
if (childNodeMetavariableNode) {
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
}) || null;
|
|
35
|
+
|
|
36
|
+
return metavariableNode;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(MetavariableDeclarationNode, ruleName, childNodes, opacity, precedence); }
|
|
7
40
|
}
|
|
@@ -1,36 +1,40 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import { NonTerminalNode } from "occam-parsers";
|
|
4
4
|
|
|
5
|
-
import { isNodePropertyNode } from "../../utilities/node";
|
|
5
|
+
import { isNodeTypeNode, isNodePropertyNode } from "../../utilities/node";
|
|
6
6
|
|
|
7
|
-
export default class PropertyDeclarationNode extends
|
|
7
|
+
export default class PropertyDeclarationNode extends NonTerminalNode {
|
|
8
8
|
getTypeNode() {
|
|
9
|
-
const typeNode = this.
|
|
10
|
-
const
|
|
9
|
+
const typeNode = this.findChildNode((childNode) => {
|
|
10
|
+
const childNodeTypeNode = isNodeTypeNode(childNode);
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
if (childNodeTypeNode) {
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
15
|
+
}) || null;
|
|
14
16
|
|
|
15
17
|
return typeNode;
|
|
16
18
|
}
|
|
17
19
|
|
|
18
|
-
|
|
19
|
-
const
|
|
20
|
+
getPropertyNode() {
|
|
21
|
+
const propertyNode = this.findChildNode((childNode) => {
|
|
20
22
|
const childNodePropertyNode = isNodePropertyNode(childNode);
|
|
21
23
|
|
|
22
24
|
if (childNodePropertyNode) {
|
|
23
|
-
|
|
24
|
-
propertyName = propertyNode.getPropertyName();
|
|
25
|
-
|
|
26
|
-
propertyNames.push(propertyName);
|
|
25
|
+
return true;
|
|
27
26
|
}
|
|
27
|
+
}) || null;
|
|
28
|
+
|
|
29
|
+
return propertyNode;
|
|
30
|
+
}
|
|
28
31
|
|
|
29
|
-
|
|
30
|
-
|
|
32
|
+
getPropertyName() {
|
|
33
|
+
const propertyNode = this.getPropertyNode(),
|
|
34
|
+
propertyName = propertyNode.getPropertyName();
|
|
31
35
|
|
|
32
|
-
return
|
|
36
|
+
return propertyName;
|
|
33
37
|
}
|
|
34
38
|
|
|
35
|
-
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return
|
|
39
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(PropertyDeclarationNode, ruleName, childNodes, opacity, precedence); }
|
|
36
40
|
}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import { NonTerminalNode } from "occam-parsers";
|
|
4
4
|
|
|
5
5
|
import { PROVISIONAL } from "../../constants";
|
|
6
6
|
import { isNodeTypeNode } from "../../utilities/node";
|
|
7
7
|
|
|
8
|
-
export default class TypeDeclarationNode extends
|
|
8
|
+
export default class TypeDeclarationNode extends NonTerminalNode {
|
|
9
9
|
getTypeName() {
|
|
10
|
-
let typeName;
|
|
10
|
+
let typeName = null;
|
|
11
11
|
|
|
12
12
|
this.someChildNode((childNode) => {
|
|
13
13
|
const childNodeTypeNode = isNodeTypeNode(childNode);
|
|
@@ -25,30 +25,35 @@ export default class TypeDeclarationNode extends Node {
|
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
isProvisional() {
|
|
28
|
-
|
|
29
|
-
const terminalNode = firstChildNode, ///
|
|
30
|
-
content = terminalNode.getContent(),
|
|
31
|
-
contentProvisional = (content === PROVISIONAL),
|
|
32
|
-
provisional = contentProvisional; ///
|
|
28
|
+
let provisional = false;
|
|
33
29
|
|
|
34
|
-
|
|
30
|
+
this.someChildNode((childNode) => {
|
|
31
|
+
const childNodeTerminalNode = childNode.isTerminalNode();
|
|
32
|
+
|
|
33
|
+
if (childNodeTerminalNode) {
|
|
34
|
+
const terminalNode = childNode, ///
|
|
35
|
+
content = terminalNode.getContent(),
|
|
36
|
+
contentProvisional = (content === PROVISIONAL);
|
|
37
|
+
|
|
38
|
+
if (contentProvisional) {
|
|
39
|
+
provisional = true;
|
|
40
|
+
|
|
41
|
+
return true;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
35
44
|
});
|
|
36
45
|
|
|
37
46
|
return provisional;
|
|
38
47
|
}
|
|
39
48
|
|
|
40
49
|
getSuperTypeNodes() {
|
|
41
|
-
const typeNodes = this.
|
|
50
|
+
const typeNodes = this.filterChildNode((childNode) => {
|
|
42
51
|
const childNodeTypeNode = isNodeTypeNode(childNode);
|
|
43
52
|
|
|
44
53
|
if (childNodeTypeNode) {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
typeNodes.push(typeNode);
|
|
54
|
+
return true;
|
|
48
55
|
}
|
|
49
|
-
|
|
50
|
-
return typeNodes;
|
|
51
|
-
}, []);
|
|
56
|
+
});
|
|
52
57
|
|
|
53
58
|
typeNodes.pop();
|
|
54
59
|
|
|
@@ -57,6 +62,6 @@ export default class TypeDeclarationNode extends Node {
|
|
|
57
62
|
return superTypeNodes;
|
|
58
63
|
}
|
|
59
64
|
|
|
60
|
-
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return
|
|
65
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(TypeDeclarationNode, ruleName, childNodes, opacity, precedence); }
|
|
61
66
|
}
|
|
62
67
|
|
|
@@ -1,61 +1,53 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import { NonTerminalNode } from "occam-parsers";
|
|
4
4
|
|
|
5
5
|
import { PROVISIONALLY } from "../../constants";
|
|
6
6
|
import { isNodeTypeNode, isNodeVariableNode } from "../../utilities/node";
|
|
7
7
|
|
|
8
|
-
export default class VariableDeclarationNode extends
|
|
9
|
-
getTypeNode() {
|
|
10
|
-
let typeNode;
|
|
11
|
-
|
|
12
|
-
this.someChildNode((childNode) => {
|
|
13
|
-
const childNodeTypeNode = isNodeTypeNode(childNode);
|
|
14
|
-
|
|
15
|
-
if (childNodeTypeNode) {
|
|
16
|
-
typeNode = childNode; ///
|
|
17
|
-
|
|
18
|
-
return true;
|
|
19
|
-
}
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
return typeNode;
|
|
23
|
-
}
|
|
24
|
-
|
|
8
|
+
export default class VariableDeclarationNode extends NonTerminalNode {
|
|
25
9
|
isProvisional() {
|
|
26
|
-
|
|
27
|
-
let provisional = false;
|
|
10
|
+
let provisional = false;
|
|
28
11
|
|
|
29
|
-
|
|
12
|
+
this.someChildNode((childNode) => {
|
|
13
|
+
const childNodeTerminalNode = childNode.isTerminalNode();
|
|
30
14
|
|
|
31
|
-
if (
|
|
32
|
-
const terminalNode =
|
|
15
|
+
if (childNodeTerminalNode) {
|
|
16
|
+
const terminalNode = childNode, ///
|
|
33
17
|
content = terminalNode.getContent(),
|
|
34
18
|
contentProvisionally = (content === PROVISIONALLY);
|
|
35
19
|
|
|
36
20
|
if (contentProvisionally) {
|
|
37
21
|
provisional = true;
|
|
22
|
+
|
|
23
|
+
return true;
|
|
38
24
|
}
|
|
39
25
|
}
|
|
40
|
-
|
|
41
|
-
return provisional;
|
|
42
26
|
});
|
|
43
27
|
|
|
44
28
|
return provisional;
|
|
45
29
|
}
|
|
46
30
|
|
|
47
|
-
|
|
48
|
-
|
|
31
|
+
getTypeNode() {
|
|
32
|
+
const typeNode = this.findChildNode((childNode) => {
|
|
33
|
+
const childNodeTypeNode = isNodeTypeNode(childNode);
|
|
49
34
|
|
|
50
|
-
|
|
35
|
+
if (childNodeTypeNode) {
|
|
36
|
+
return true;
|
|
37
|
+
}
|
|
38
|
+
}) || null;
|
|
39
|
+
|
|
40
|
+
return typeNode;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
getVariableNode() {
|
|
44
|
+
const variableNode = this.findChildNode((childNode) => {
|
|
51
45
|
const childNodeVariableNode = isNodeVariableNode(childNode);
|
|
52
46
|
|
|
53
47
|
if (childNodeVariableNode) {
|
|
54
|
-
variableNode = childNode; ///
|
|
55
|
-
|
|
56
48
|
return true;
|
|
57
49
|
}
|
|
58
|
-
});
|
|
50
|
+
}) || null;
|
|
59
51
|
|
|
60
52
|
return variableNode;
|
|
61
53
|
}
|
|
@@ -67,5 +59,5 @@ export default class VariableDeclarationNode extends Node {
|
|
|
67
59
|
return variableName;
|
|
68
60
|
}
|
|
69
61
|
|
|
70
|
-
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return
|
|
62
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(VariableDeclarationNode, ruleName, childNodes, opacity, precedence); }
|
|
71
63
|
}
|
package/src/node/declaration.js
CHANGED
|
@@ -1,7 +1,33 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import { NonTerminalNode } from "occam-parsers";
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
import { isNodeStatementNode, isNodeMetavariableNode } from "../utilities/node";
|
|
6
|
+
|
|
7
|
+
export default class DeclarationNode extends NonTerminalNode {
|
|
8
|
+
getStatementNode() {
|
|
9
|
+
const statementNode = this.findChildNode((childNode) => {
|
|
10
|
+
const childNodeStatementNode = isNodeStatementNode(childNode);
|
|
11
|
+
|
|
12
|
+
if (childNodeStatementNode) {
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
15
|
+
}) || null;
|
|
16
|
+
|
|
17
|
+
return statementNode;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
getMetavariableNode() {
|
|
21
|
+
const metavariableNode = this.findChildNode((childNode) => {
|
|
22
|
+
const childNodeMetavariableNode = isNodeMetavariableNode(childNode);
|
|
23
|
+
|
|
24
|
+
if (childNodeMetavariableNode) {
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
}) || null;
|
|
28
|
+
|
|
29
|
+
return metavariableNode;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(DeclarationNode, ruleName, childNodes, opacity, precedence); }
|
|
7
33
|
}
|
package/src/node/deduction.js
CHANGED
|
@@ -1,7 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import { NonTerminalNode } from "occam-parsers";
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
import { isNodeStatementNode } from "../utilities/node";
|
|
6
|
+
|
|
7
|
+
export default class DeductionNode extends NonTerminalNode {
|
|
8
|
+
getStatementNode() {
|
|
9
|
+
const statementNode = this.findChildNode((childNode) => {
|
|
10
|
+
const childNodeStatementNode = isNodeStatementNode(childNode);
|
|
11
|
+
|
|
12
|
+
if (childNodeStatementNode) {
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
15
|
+
}) || null;
|
|
16
|
+
|
|
17
|
+
return statementNode;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(DeductionNode, ruleName, childNodes, opacity, precedence); }
|
|
7
21
|
}
|
package/src/node/derivation.js
CHANGED
|
@@ -1,7 +1,22 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import { NonTerminalNode } from "occam-parsers";
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
import { isNodeStepNode, isNodeSubproofNode } from "../utilities/node";
|
|
6
|
+
|
|
7
|
+
export default class DerivationNode extends NonTerminalNode {
|
|
8
|
+
getStepOrSubproofNodes() {
|
|
9
|
+
const stepOrSubproofNodes = this.filterChildNode((childNode) => {
|
|
10
|
+
const childNodeStepNode = isNodeStepNode(childNode),
|
|
11
|
+
childNodeSubproofNode = isNodeSubproofNode(childNode);
|
|
12
|
+
|
|
13
|
+
if (childNodeStepNode || childNodeSubproofNode) {
|
|
14
|
+
return true;
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
return stepOrSubproofNodes;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(DerivationNode, ruleName, childNodes, opacity, precedence); }
|
|
7
22
|
}
|
package/src/node/equality.js
CHANGED
|
@@ -1,7 +1,35 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import { NonTerminalNode } from "occam-parsers";
|
|
4
4
|
|
|
5
|
-
export default class EqualityNode extends
|
|
6
|
-
|
|
5
|
+
export default class EqualityNode extends NonTerminalNode {
|
|
6
|
+
getLeftTermNode() {
|
|
7
|
+
let leftTermNode;
|
|
8
|
+
|
|
9
|
+
this.someChildNode((childNode, index) => {
|
|
10
|
+
if (index === 0) {
|
|
11
|
+
leftTermNode = childNode; ///
|
|
12
|
+
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
return leftTermNode;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
getRightTermNode() {
|
|
21
|
+
let rightTermNode;
|
|
22
|
+
|
|
23
|
+
this.someChildNode((childNode, index) => {
|
|
24
|
+
if (index === 2) {
|
|
25
|
+
rightTermNode = childNode; ///
|
|
26
|
+
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
return rightTermNode;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(EqualityNode, ruleName, childNodes, opacity, precedence); }
|
|
7
35
|
}
|
package/src/node/error.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import { NonTerminalNode } from "occam-parsers";
|
|
4
4
|
|
|
5
|
-
export default class ErrorNode extends
|
|
6
|
-
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return
|
|
5
|
+
export default class ErrorNode extends NonTerminalNode {
|
|
6
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(ErrorNode, ruleName, childNodes, opacity, precedence); }
|
|
7
7
|
}
|
package/src/node/frame.js
CHANGED
|
@@ -1,7 +1,57 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import { arrayUtilities } from "necessary";
|
|
4
|
+
import { NonTerminalNode } from "occam-parsers";
|
|
4
5
|
|
|
5
|
-
|
|
6
|
-
|
|
6
|
+
import { isNodeDeclarationNode, isNodeMetavariableNode } from "../utilities/node";
|
|
7
|
+
|
|
8
|
+
const { first } = arrayUtilities;
|
|
9
|
+
|
|
10
|
+
export default class FrameNode extends NonTerminalNode {
|
|
11
|
+
getDeclarationNodes() {
|
|
12
|
+
const declarationNodes = this.filterChildNode((childNode) => {
|
|
13
|
+
const childNodeDeclarationNode = isNodeDeclarationNode(childNode);
|
|
14
|
+
|
|
15
|
+
if (childNodeDeclarationNode) {
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
return declarationNodes;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
getMetavariableNodes() {
|
|
24
|
+
const metavariableNodes = this.filterChildNode((childNode) => {
|
|
25
|
+
const childNodeMetavariableNode = isNodeMetavariableNode(childNode);
|
|
26
|
+
|
|
27
|
+
if (childNodeMetavariableNode) {
|
|
28
|
+
return true;
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
return metavariableNodes;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
getSingularMetavariableNode() {
|
|
36
|
+
let singularMetavariableNode = null;
|
|
37
|
+
|
|
38
|
+
const metavariableNodes = this.filterChildNode((childNode) => {
|
|
39
|
+
const childNodeMetavariableNode = isNodeMetavariableNode(childNode);
|
|
40
|
+
|
|
41
|
+
if (!childNodeMetavariableNode) {
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
}),
|
|
45
|
+
metavariableNodesLength = metavariableNodes.length;
|
|
46
|
+
|
|
47
|
+
if (metavariableNodesLength === 1) {
|
|
48
|
+
const firstMetavariableNode = first(metavariableNodes);
|
|
49
|
+
|
|
50
|
+
singularMetavariableNode = firstMetavariableNode; ///
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
return singularMetavariableNode;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(FrameNode, ruleName, childNodes, opacity, precedence); }
|
|
7
57
|
}
|
package/src/node/judgement.js
CHANGED
|
@@ -1,7 +1,33 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import { NonTerminalNode } from "occam-parsers";
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
import { isNodeFrameNode, isNodeDeclarationNode } from "../utilities/node";
|
|
6
|
+
|
|
7
|
+
export default class JudgementNode extends NonTerminalNode {
|
|
8
|
+
getFrameNode() {
|
|
9
|
+
const frameNode = this.findChildNode((childNode) => {
|
|
10
|
+
const childNodeFrameNode = isNodeFrameNode(childNode);
|
|
11
|
+
|
|
12
|
+
if (childNodeFrameNode) {
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
15
|
+
}) || null;
|
|
16
|
+
|
|
17
|
+
return frameNode;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
getDeclarationNode() {
|
|
21
|
+
const declarationNode = this.findChildNode((childNode) => {
|
|
22
|
+
const childNodeDeclarationNode = isNodeDeclarationNode(childNode);
|
|
23
|
+
|
|
24
|
+
if (childNodeDeclarationNode) {
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
}) || null;
|
|
28
|
+
|
|
29
|
+
return declarationNode;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(JudgementNode, ruleName, childNodes, opacity, precedence); }
|
|
7
33
|
}
|
package/src/node/label.js
CHANGED
|
@@ -1,7 +1,21 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import { NonTerminalNode } from "occam-parsers";
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
import { isNodeMetavariableNode } from "../utilities/node";
|
|
6
|
+
|
|
7
|
+
export default class LabelNode extends NonTerminalNode {
|
|
8
|
+
getMetavariableNode() {
|
|
9
|
+
const metavariableNode = this.findChildNode((childNode) => {
|
|
10
|
+
const childNodeMetavariableNode = isNodeMetavariableNode(childNode);
|
|
11
|
+
|
|
12
|
+
if (childNodeMetavariableNode) {
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
15
|
+
}) || null;
|
|
16
|
+
|
|
17
|
+
return metavariableNode;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(LabelNode, ruleName, childNodes, opacity, precedence); }
|
|
7
21
|
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { NonTerminalNode } from "occam-parsers";
|
|
4
|
+
|
|
5
|
+
import { isNodeLabelNode } from "../utilities/node";
|
|
6
|
+
|
|
7
|
+
export default class LabelsNode extends NonTerminalNode {
|
|
8
|
+
getLabelNodes() {
|
|
9
|
+
const labelNodes = this.filterChildNode((childNode) => {
|
|
10
|
+
const childNodeLabelNode = isNodeLabelNode(childNode);
|
|
11
|
+
|
|
12
|
+
if (childNodeLabelNode) {
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
return labelNodes;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(LabelsNode, ruleName, childNodes, opacity, precedence); }
|
|
21
|
+
}
|
package/src/node/lemma.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import TopLevelAssertionNode from "../node/topLevelAssertion";
|
|
4
4
|
|
|
5
|
-
export default class LemmaNode extends
|
|
6
|
-
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return
|
|
5
|
+
export default class LemmaNode extends TopLevelAssertionNode {
|
|
6
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return TopLevelAssertionNode.fromRuleNameChildNodesOpacityAndPrecedence(LemmaNode, ruleName, childNodes, opacity, precedence); }
|
|
7
7
|
}
|
package/src/node/metaLemma.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import TopLevelMetaAssertionNode from "../node/topLevelMetaAssertion";
|
|
4
4
|
|
|
5
|
-
export default class MetaLemmaNode extends
|
|
6
|
-
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return
|
|
5
|
+
export default class MetaLemmaNode extends TopLevelMetaAssertionNode {
|
|
6
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return TopLevelMetaAssertionNode.fromRuleNameChildNodesOpacityAndPrecedence(MetaLemmaNode, ruleName, childNodes, opacity, precedence); }
|
|
7
7
|
}
|
package/src/node/metaType.js
CHANGED
|
@@ -1,19 +1,30 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import { NonTerminalNode } from "occam-parsers";
|
|
4
|
+
|
|
5
|
+
export default class MetaTypeNode extends NonTerminalNode {
|
|
6
|
+
getTypeNode() {
|
|
7
|
+
|
|
8
|
+
}
|
|
4
9
|
|
|
5
|
-
export default class MetaTypeNode extends Node {
|
|
6
10
|
getMetaTypeName() {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
+
let metaTypeName;
|
|
12
|
+
|
|
13
|
+
this.someChildNode((childNode) => {
|
|
14
|
+
const childNodeTerminalNode = childNode.isTerminalNode();
|
|
15
|
+
|
|
16
|
+
if (childNodeTerminalNode) {
|
|
17
|
+
const terminalNode = childNode, ///
|
|
18
|
+
content = terminalNode.getContent();
|
|
19
|
+
|
|
20
|
+
metaTypeName = content; ///
|
|
11
21
|
|
|
12
|
-
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
13
24
|
});
|
|
14
25
|
|
|
15
26
|
return metaTypeName;
|
|
16
27
|
}
|
|
17
28
|
|
|
18
|
-
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return
|
|
29
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(MetaTypeNode, ruleName, childNodes, opacity, precedence); }
|
|
19
30
|
}
|
package/src/node/metatheorem.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import TopLevelMetaAssertionNode from "../node/topLevelMetaAssertion";
|
|
4
4
|
|
|
5
|
-
export default class MetatheoremNode extends
|
|
6
|
-
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return
|
|
5
|
+
export default class MetatheoremNode extends TopLevelMetaAssertionNode {
|
|
6
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return TopLevelMetaAssertionNode.fromRuleNameChildNodesOpacityAndPrecedence(MetatheoremNode, ruleName, childNodes, opacity, precedence); }
|
|
7
7
|
}
|