occam-verify-cli 1.0.185 → 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 +2 -2
- 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
package/src/node/metavariable.js
CHANGED
|
@@ -1,19 +1,52 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import { NonTerminalNode } from "occam-parsers";
|
|
4
|
+
|
|
5
|
+
import { isNodeTermNode, isNodeTypeNode } from "../utilities/node";
|
|
6
|
+
|
|
7
|
+
export default class MetavariableNode extends NonTerminalNode {
|
|
8
|
+
getTermNode() {
|
|
9
|
+
const termNode = this.findChildNode((childNode) => {
|
|
10
|
+
const childNodeTermNode = isNodeTermNode(childNode);
|
|
11
|
+
|
|
12
|
+
if (childNodeTermNode) {
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
15
|
+
}) || null;
|
|
16
|
+
|
|
17
|
+
return termNode;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
getTypeNode() {
|
|
21
|
+
const typeNode = this.findChildNode((childNode) => {
|
|
22
|
+
const childNodeTypeNode = isNodeTypeNode(childNode);
|
|
23
|
+
|
|
24
|
+
if (childNodeTypeNode) {
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
}) || null;
|
|
28
|
+
|
|
29
|
+
return typeNode;
|
|
30
|
+
}
|
|
4
31
|
|
|
5
|
-
export default class MetavariableNode extends Node {
|
|
6
32
|
getMetavariableName() {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
33
|
+
let metaVariableName;
|
|
34
|
+
|
|
35
|
+
this.someChildNode((childNode) => {
|
|
36
|
+
const childNodeTerminalNode = childNode.isTerminalNode();
|
|
37
|
+
|
|
38
|
+
if (childNodeTerminalNode) {
|
|
39
|
+
const terminalNode = childNode, ///
|
|
40
|
+
content = terminalNode.getContent();
|
|
41
|
+
|
|
42
|
+
metaVariableName = content; ///
|
|
11
43
|
|
|
12
|
-
|
|
44
|
+
return true;
|
|
45
|
+
}
|
|
13
46
|
});
|
|
14
47
|
|
|
15
|
-
return
|
|
48
|
+
return metaVariableName;
|
|
16
49
|
}
|
|
17
50
|
|
|
18
|
-
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return
|
|
51
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(MetavariableNode, ruleName, childNodes, opacity, precedence); }
|
|
19
52
|
}
|
package/src/node/parameter.js
CHANGED
|
@@ -1,7 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import { NonTerminalNode } from "occam-parsers";
|
|
4
4
|
|
|
5
|
-
export default class ParameterNode extends
|
|
6
|
-
|
|
5
|
+
export default class ParameterNode extends NonTerminalNode {
|
|
6
|
+
getParameterName() {
|
|
7
|
+
let parameterName;
|
|
8
|
+
|
|
9
|
+
this.someChildNode((childNode, index) => {
|
|
10
|
+
const nameTerminalNode = childNode, ///
|
|
11
|
+
content = nameTerminalNode.getContent();
|
|
12
|
+
|
|
13
|
+
parameterName = content; ///
|
|
14
|
+
|
|
15
|
+
if (index === 0) {
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
return parameterName;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(ParameterNode, ruleName, childNodes, opacity, precedence); }
|
|
7
24
|
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { NonTerminalNode } from "occam-parsers";
|
|
4
|
+
|
|
5
|
+
import { isNodeLabelsNode } from "../utilities/node";
|
|
6
|
+
|
|
7
|
+
export default class ParenthesisedLabelsNode extends NonTerminalNode {
|
|
8
|
+
getLabelNodes() {
|
|
9
|
+
const labelsNode = this.getLabelsNode(),
|
|
10
|
+
labelNodes = labelsNode.getLabelNodes();
|
|
11
|
+
|
|
12
|
+
return labelNodes;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
getLabelsNode() {
|
|
16
|
+
const labelsNode = this.findChildNode((childNode) => {
|
|
17
|
+
const childNodeLabelsNode = isNodeLabelsNode(childNode);
|
|
18
|
+
|
|
19
|
+
if (childNodeLabelsNode) {
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
}) || null;
|
|
23
|
+
|
|
24
|
+
return labelsNode;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(ParenthesisedLabelsNode, ruleName, childNodes, opacity, precedence); }
|
|
28
|
+
}
|
package/src/node/premise.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, isNodeProcedureCallNode } from "../utilities/node";
|
|
6
|
+
|
|
7
|
+
export default class PremiseNode 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
|
+
getProcedureCallNode() {
|
|
21
|
+
const procedureCallNode = this.findChildNode((childNode) => {
|
|
22
|
+
const childNodeProcedureCallNode = isNodeProcedureCallNode(childNode);
|
|
23
|
+
|
|
24
|
+
if (childNodeProcedureCallNode) {
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
}) || null;
|
|
28
|
+
|
|
29
|
+
return procedureCallNode;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(PremiseNode, ruleName, childNodes, opacity, precedence); }
|
|
7
33
|
}
|
|
@@ -1,7 +1,33 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import { NonTerminalNode } from "occam-parsers";
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
import { isNodeParameterNode, isNodeReferenceNode } from "../utilities/node";
|
|
6
|
+
|
|
7
|
+
export default class ProcedureCallNode extends NonTerminalNode {
|
|
8
|
+
getReferenceNode() {
|
|
9
|
+
const referenceNode = this.findChildNode((childNode) => {
|
|
10
|
+
const childNodeReferenceNode = isNodeReferenceNode(childNode);
|
|
11
|
+
|
|
12
|
+
if (childNodeReferenceNode) {
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
15
|
+
}) || null;
|
|
16
|
+
|
|
17
|
+
return referenceNode;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
getParameterNodes() {
|
|
21
|
+
const parameterNodes = this.filterChildNode((childNode) => {
|
|
22
|
+
const childNodeParameterNode = isNodeParameterNode(childNode);
|
|
23
|
+
|
|
24
|
+
if (childNodeParameterNode) {
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
return parameterNodes;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(ProcedureCallNode, ruleName, childNodes, opacity, precedence); }
|
|
7
33
|
}
|
package/src/node/proof.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 { isNodeDerivationNode } from "../utilities/node";
|
|
6
|
+
|
|
7
|
+
export default class ProofNode extends NonTerminalNode {
|
|
8
|
+
getDerivationNode() {
|
|
9
|
+
const derivationNode = this.findChildNode((childNode) => {
|
|
10
|
+
const childNodeDerivationNode = isNodeDerivationNode(childNode);
|
|
11
|
+
|
|
12
|
+
if (childNodeDerivationNode) {
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
return derivationNode;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(ProofNode, ruleName, childNodes, opacity, precedence); }
|
|
7
21
|
}
|
package/src/node/property.js
CHANGED
|
@@ -1,22 +1,28 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import { NonTerminalNode } from "occam-parsers";
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
import { SINGLE_SPACE } from "../constants";
|
|
6
|
+
|
|
7
|
+
export default class PropertyNode extends NonTerminalNode {
|
|
6
8
|
getPropertyName() {
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
content = nameTerminalNode.getContent();
|
|
9
|
+
const names = this.getNames(),
|
|
10
|
+
propertyName = names.join(SINGLE_SPACE);
|
|
10
11
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
content; ///
|
|
12
|
+
return propertyName;
|
|
13
|
+
}
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
|
|
15
|
+
getNames() {
|
|
16
|
+
const names = this.mapChildNode((childNode) => {
|
|
17
|
+
const terminalNode = childNode, ///
|
|
18
|
+
content = terminalNode.getContent(),
|
|
19
|
+
name = content; //
|
|
17
20
|
|
|
18
|
-
|
|
21
|
+
return name;
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
return names;
|
|
19
25
|
}
|
|
20
26
|
|
|
21
|
-
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return
|
|
27
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(PropertyNode, ruleName, childNodes, opacity, precedence); }
|
|
22
28
|
}
|
|
@@ -1,7 +1,39 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import { NonTerminalNode } from "occam-parsers";
|
|
4
|
+
import { isNodeTermNode, isNodePropertyNode } from "../utilities/node";
|
|
4
5
|
|
|
5
|
-
export default class PropertyRelationNode extends
|
|
6
|
-
|
|
6
|
+
export default class PropertyRelationNode extends NonTerminalNode {
|
|
7
|
+
getTermNode() {
|
|
8
|
+
const termNode = this.findChildNode((childNode) => {
|
|
9
|
+
const childNodeTermNode = isNodeTermNode(childNode);
|
|
10
|
+
|
|
11
|
+
if (childNodeTermNode) {
|
|
12
|
+
return true;
|
|
13
|
+
}
|
|
14
|
+
}) || null;
|
|
15
|
+
|
|
16
|
+
return termNode;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
getPropertyNode() {
|
|
20
|
+
const propertyNode = this.findChildNode((childNode) => {
|
|
21
|
+
const childNodePropertyNode = isNodePropertyNode(childNode);
|
|
22
|
+
|
|
23
|
+
if (childNodePropertyNode) {
|
|
24
|
+
return true;
|
|
25
|
+
}
|
|
26
|
+
}) || null;
|
|
27
|
+
|
|
28
|
+
return propertyNode;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
getPropertyName() {
|
|
32
|
+
const propertyNode = this.getPropertyNode(),
|
|
33
|
+
propertyName = propertyNode.getPropertyName();
|
|
34
|
+
|
|
35
|
+
return propertyName;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(PropertyRelationNode, ruleName, childNodes, opacity, precedence); }
|
|
7
39
|
}
|
package/src/node/reference.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 ReferenceNode 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(ReferenceNode, ruleName, childNodes, opacity, precedence); }
|
|
7
21
|
}
|
package/src/node/rule.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 RuleNode extends
|
|
6
|
-
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return
|
|
5
|
+
export default class RuleNode extends TopLevelMetaAssertionNode {
|
|
6
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return TopLevelMetaAssertionNode.fromRuleNameChildNodesOpacityAndPrecedence(RuleNode, ruleName, childNodes, opacity, precedence); }
|
|
7
7
|
}
|
package/src/node/statement.js
CHANGED
|
@@ -1,7 +1,112 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import { NonTerminalNode } from "occam-parsers";
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
import { isNodeTermNode,
|
|
6
|
+
isNodeFrameNode,
|
|
7
|
+
isNodeEqualityNode,
|
|
8
|
+
isNodeJudgementNode,
|
|
9
|
+
isNodeMetavariableNode,
|
|
10
|
+
isNodeTypeAssertionNode,
|
|
11
|
+
isNodeSubproofAssertionNode,
|
|
12
|
+
isNodePropertyAssertionNode } from "../utilities/node";
|
|
13
|
+
|
|
14
|
+
export default class StatementNode extends NonTerminalNode {
|
|
15
|
+
getTermNodes() {
|
|
16
|
+
const termNodes = this.filterDescendantNode((descendantNode) => {
|
|
17
|
+
const descendantNodeTermNode = isNodeTermNode(descendantNode);
|
|
18
|
+
|
|
19
|
+
if (descendantNodeTermNode) {
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
return termNodes;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
getFrameNodes() {
|
|
28
|
+
const frameNodes = this.filterDescendantNode((descendantNode) => {
|
|
29
|
+
const descendantNodeFrameNode = isNodeFrameNode(descendantNode);
|
|
30
|
+
|
|
31
|
+
if (descendantNodeFrameNode) {
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
return frameNodes;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
getEqualityNode() {
|
|
40
|
+
const equalityNode = this.findChildNode((childNode) => {
|
|
41
|
+
const childNodeEqualityNode = isNodeEqualityNode(childNode);
|
|
42
|
+
|
|
43
|
+
if (childNodeEqualityNode) {
|
|
44
|
+
return true;
|
|
45
|
+
}
|
|
46
|
+
}) || null;
|
|
47
|
+
|
|
48
|
+
return equalityNode;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
getJudgementNode() {
|
|
52
|
+
const judgementNode = this.findChildNode((childNode) => {
|
|
53
|
+
const childNodeJudgementNode = isNodeJudgementNode(childNode);
|
|
54
|
+
|
|
55
|
+
if (childNodeJudgementNode) {
|
|
56
|
+
return true;
|
|
57
|
+
}
|
|
58
|
+
}) || null;
|
|
59
|
+
|
|
60
|
+
return judgementNode;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
getMetavariableNode() {
|
|
64
|
+
const metavariableNode = this.findChildNode((childNode) => {
|
|
65
|
+
const childNodeMetavariableNode = isNodeMetavariableNode(childNode);
|
|
66
|
+
|
|
67
|
+
if (childNodeMetavariableNode) {
|
|
68
|
+
return true;
|
|
69
|
+
}
|
|
70
|
+
}) || null;
|
|
71
|
+
|
|
72
|
+
return metavariableNode;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
getTypeAssertionNode() {
|
|
76
|
+
const typeAssertionNode = this.findChildNode((childNode) => {
|
|
77
|
+
const childNodeTypeAssertionNode = isNodeTypeAssertionNode(childNode);
|
|
78
|
+
|
|
79
|
+
if (childNodeTypeAssertionNode) {
|
|
80
|
+
return true;
|
|
81
|
+
}
|
|
82
|
+
}) || null;
|
|
83
|
+
|
|
84
|
+
return typeAssertionNode;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
getSubproofAssertionNode() {
|
|
88
|
+
const subproofAssertionNode = this.findChildNode((childNode) => {
|
|
89
|
+
const childNodeSubproofAssertionNode = isNodeSubproofAssertionNode(childNode);
|
|
90
|
+
|
|
91
|
+
if (childNodeSubproofAssertionNode) {
|
|
92
|
+
return true;
|
|
93
|
+
}
|
|
94
|
+
}) || null;
|
|
95
|
+
|
|
96
|
+
return subproofAssertionNode;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
getPropertyAssertionNode() {
|
|
100
|
+
const propertyAssertionNode = this.findChildNode((childNode) => {
|
|
101
|
+
const childNodePropertyAssertionNode = isNodePropertyAssertionNode(childNode);
|
|
102
|
+
|
|
103
|
+
if (childNodePropertyAssertionNode) {
|
|
104
|
+
return true;
|
|
105
|
+
}
|
|
106
|
+
}) || null;
|
|
107
|
+
|
|
108
|
+
return propertyAssertionNode;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(StatementNode, ruleName, childNodes, opacity, precedence); }
|
|
7
112
|
}
|
package/src/node/step.js
CHANGED
|
@@ -1,7 +1,45 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import { NonTerminalNode } from "occam-parsers";
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
import { isNodeStatementNode, isNodeReferenceNode } from "../utilities/node";
|
|
6
|
+
|
|
7
|
+
export default class StepNode extends NonTerminalNode {
|
|
8
|
+
isStepNode() {
|
|
9
|
+
const stepNode = true;
|
|
10
|
+
|
|
11
|
+
return stepNode;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
isSubproofNode() {
|
|
15
|
+
const subproofNode = false;
|
|
16
|
+
|
|
17
|
+
return subproofNode;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
getStatementNode() {
|
|
21
|
+
const statementNode = this.findChildNode((childNode) => {
|
|
22
|
+
const childNodeStatementNode = isNodeStatementNode(childNode);
|
|
23
|
+
|
|
24
|
+
if (childNodeStatementNode) {
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
}) || null;
|
|
28
|
+
|
|
29
|
+
return statementNode;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
getReferenceNode() {
|
|
33
|
+
const referenceNode = this.findChildNode((childNode) => {
|
|
34
|
+
const childNodeReferenceNode = isNodeReferenceNode(childNode);
|
|
35
|
+
|
|
36
|
+
if (childNodeReferenceNode) {
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
}) || null;
|
|
40
|
+
|
|
41
|
+
return referenceNode;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(StepNode, ruleName, childNodes, opacity, precedence); }
|
|
7
45
|
}
|
|
@@ -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 SubDerivationNode 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(SubDerivationNode, ruleName, childNodes, opacity, precedence); }
|
|
7
22
|
}
|
package/src/node/subproof.js
CHANGED
|
@@ -1,7 +1,45 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import { NonTerminalNode } from "occam-parsers";
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
import { isNodeSuppositionNode, isNodeSubDerivationNode } from "../utilities/node";
|
|
6
|
+
|
|
7
|
+
export default class SubproofNode extends NonTerminalNode {
|
|
8
|
+
isStepNode() {
|
|
9
|
+
const stepNode = false;
|
|
10
|
+
|
|
11
|
+
return stepNode;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
isSubproofNode() {
|
|
15
|
+
const subproofNode = true;
|
|
16
|
+
|
|
17
|
+
return subproofNode;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
getSubDerivationNode() {
|
|
21
|
+
const subDerivationNode = this.findChildNode((childNode) => {
|
|
22
|
+
const childNodeSubDerivationNode = isNodeSubDerivationNode(childNode);
|
|
23
|
+
|
|
24
|
+
if (childNodeSubDerivationNode) {
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
}) || null;
|
|
28
|
+
|
|
29
|
+
return subDerivationNode;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
getSuppositionNodes() {
|
|
33
|
+
const suppositionNodes = this.filterChildNode((childNode) => {
|
|
34
|
+
const childNodeSuppositionNode = isNodeSuppositionNode(childNode);
|
|
35
|
+
|
|
36
|
+
if (childNodeSuppositionNode) {
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
return suppositionNodes;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(SubproofNode, ruleName, childNodes, opacity, precedence); }
|
|
7
45
|
}
|
package/src/node/supposition.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, isNodeProcedureCallNode } from "../utilities/node";
|
|
6
|
+
|
|
7
|
+
export default class SuppositionNode 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
|
+
getProcedureCallNode() {
|
|
21
|
+
const procedureCallNode = this.findChildNode((childNode) => {
|
|
22
|
+
const childNodeProcedureCallNode = isNodeProcedureCallNode(childNode);
|
|
23
|
+
|
|
24
|
+
if (childNodeProcedureCallNode) {
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
}) || null;
|
|
28
|
+
|
|
29
|
+
return procedureCallNode;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(SuppositionNode, ruleName, childNodes, opacity, precedence); }
|
|
7
33
|
}
|