occam-verify-cli 1.0.185 → 1.0.198
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/context/file.js +3 -3
- package/lib/dom/assertion/contained.js +12 -24
- package/lib/dom/assertion/defined.js +9 -21
- package/lib/dom/assertion/property.js +8 -10
- package/lib/dom/assertion/satisfies.js +6 -8
- 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/constructor.js +6 -6
- package/lib/dom/declaration/metavariable.js +3 -5
- package/lib/dom/declaration/type.js +2 -2
- package/lib/dom/declaration/variable.js +6 -6
- package/lib/dom/declaration.js +14 -16
- package/lib/dom/derivation.js +2 -4
- package/lib/dom/equality.js +9 -11
- package/lib/dom/frame.js +14 -18
- package/lib/dom/judgement.js +8 -10
- 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 +14 -16
- 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 +12 -20
- package/lib/dom/theorem.js +5 -4
- package/lib/dom/topLevelAssertion.js +30 -24
- package/lib/dom/topLevelMetaAssertion.js +76 -140
- package/lib/dom/type.js +8 -25
- package/lib/dom/variable.js +5 -11
- package/lib/equivalence.js +4 -6
- package/lib/mixins/term/verify.js +4 -8
- package/lib/node/argument.js +116 -0
- package/lib/node/assertion/contained.js +48 -53
- package/lib/node/assertion/defined.js +41 -53
- package/lib/node/assertion/property.js +23 -53
- package/lib/node/assertion/satisfies.js +23 -53
- package/lib/node/assertion/subproof.js +16 -53
- package/lib/node/assertion/type.js +23 -53
- package/lib/node/axiom.js +6 -52
- package/lib/node/combinator.js +6 -52
- package/lib/node/conclusion.js +16 -53
- package/lib/node/conjecture.js +6 -52
- package/lib/node/constructor.js +6 -52
- package/lib/node/declaration/combinator.js +8 -56
- package/lib/node/declaration/complexType.js +42 -86
- package/lib/node/declaration/constructor.js +26 -77
- package/lib/node/declaration/metavariable.js +30 -53
- package/lib/node/declaration/property.js +19 -69
- package/lib/node/declaration/type.js +45 -78
- package/lib/node/declaration/variable.js +21 -81
- package/lib/node/declaration.js +23 -53
- package/lib/node/deduction.js +16 -53
- package/lib/node/derivation.js +42 -51
- package/lib/node/equality.js +32 -53
- package/lib/node/error.js +6 -52
- package/lib/node/frame.js +30 -53
- package/lib/node/judgement.js +23 -53
- package/lib/node/label.js +16 -53
- package/lib/node/labels.js +116 -0
- package/lib/node/lemma.js +6 -52
- package/lib/node/metaArgument.js +116 -0
- package/lib/node/metaLemma.js +6 -52
- package/lib/node/metaType.js +14 -55
- package/lib/node/metatheorem.js +6 -52
- package/lib/node/metavariable.js +30 -56
- package/lib/node/nonTerminal.js +200 -0
- package/lib/node/parameter.js +22 -53
- package/lib/node/parenthesisedLabel.js +116 -0
- package/lib/node/parenthesisedLabels.js +123 -0
- package/lib/node/premise.js +23 -53
- package/lib/node/procedureCall.js +23 -53
- package/lib/node/proof.js +16 -53
- package/lib/node/property.js +18 -57
- package/lib/node/propertyRelation.js +30 -53
- package/lib/node/reference.js +16 -53
- package/lib/node/rule.js +44 -53
- package/lib/node/statement.js +139 -53
- package/lib/node/step.js +37 -53
- package/lib/node/subDerivation.js +49 -51
- package/lib/node/subproof.js +44 -53
- package/lib/node/substitution/frame.js +123 -0
- package/lib/node/substitution/reference.js +123 -0
- package/lib/node/substitution/statement.js +123 -0
- package/lib/node/substitution/term.js +123 -0
- package/lib/node/supposition.js +23 -53
- package/lib/node/term.js +41 -53
- package/lib/node/theorem.js +6 -52
- package/lib/node/topLevelAssertion.js +66 -54
- package/lib/node/topLevelMetaAssertion.js +45 -54
- package/lib/node/type.js +14 -55
- package/lib/{node.js → node/types.js} +22 -24
- package/lib/node/variable.js +14 -55
- package/lib/nominal/parser.js +3 -3
- package/lib/nonTerminalNodeMap.js +14 -4
- package/lib/ruleNames.js +42 -2
- package/lib/substitution/frame.js +5 -7
- package/lib/substitution/reference.js +5 -7
- package/lib/substitution/term.js +5 -7
- package/lib/unifier/metaLevel.js +4 -4
- package/lib/utilities/brackets.js +5 -5
- package/lib/utilities/json.js +18 -1
- package/lib/utilities/node.js +1 -37
- package/lib/utilities/subproof.js +13 -4
- 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/context/file.js +2 -2
- package/src/dom/assertion/contained.js +12 -34
- package/src/dom/assertion/defined.js +9 -30
- package/src/dom/assertion/property.js +7 -12
- package/src/dom/assertion/satisfies.js +5 -10
- 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 +8 -7
- package/src/dom/declaration/constructor.js +6 -7
- package/src/dom/declaration/metavariable.js +2 -6
- package/src/dom/declaration/type.js +4 -2
- package/src/dom/declaration/variable.js +6 -7
- package/src/dom/declaration.js +12 -20
- package/src/dom/derivation.js +1 -4
- package/src/dom/equality.js +13 -17
- package/src/dom/frame.js +11 -25
- package/src/dom/judgement.js +7 -12
- 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 +16 -22
- 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 +14 -33
- package/src/dom/theorem.js +6 -1
- package/src/dom/topLevelAssertion.js +30 -25
- package/src/dom/topLevelMetaAssertion.js +87 -55
- package/src/dom/type.js +11 -37
- package/src/dom/variable.js +4 -12
- package/src/equivalence.js +3 -6
- package/src/mixins/term/verify.js +5 -11
- package/src/node/argument.js +16 -0
- package/src/node/assertion/contained.js +49 -3
- package/src/node/assertion/defined.js +42 -3
- package/src/node/assertion/property.js +19 -3
- package/src/node/assertion/satisfies.js +19 -3
- package/src/node/assertion/subproof.js +12 -3
- package/src/node/assertion/type.js +19 -3
- package/src/node/axiom.js +3 -3
- package/src/node/combinator.js +3 -3
- package/src/node/conclusion.js +12 -3
- package/src/node/conjecture.js +3 -3
- package/src/node/constructor.js +3 -3
- package/src/node/declaration/combinator.js +7 -8
- package/src/node/declaration/complexType.js +40 -43
- package/src/node/declaration/constructor.js +25 -30
- package/src/node/declaration/metavariable.js +26 -3
- package/src/node/declaration/property.js +17 -23
- package/src/node/declaration/type.js +43 -32
- package/src/node/declaration/variable.js +19 -37
- package/src/node/declaration.js +19 -3
- package/src/node/deduction.js +12 -3
- package/src/node/derivation.js +15 -3
- package/src/node/equality.js +32 -3
- package/src/node/error.js +3 -3
- package/src/node/frame.js +26 -3
- package/src/node/judgement.js +19 -3
- package/src/node/label.js +12 -3
- package/src/node/labels.js +16 -0
- package/src/node/lemma.js +3 -3
- package/src/node/metaArgument.js +16 -0
- package/src/node/metaLemma.js +3 -3
- package/src/node/metaType.js +15 -8
- package/src/node/metatheorem.js +3 -3
- package/src/node/metavariable.js +32 -9
- package/src/node/nonTerminal.js +112 -0
- package/src/node/parameter.js +20 -3
- package/src/node/parenthesisedLabel.js +16 -0
- package/src/node/parenthesisedLabels.js +23 -0
- package/src/node/premise.js +19 -3
- package/src/node/procedureCall.js +19 -3
- package/src/node/proof.js +12 -3
- package/src/node/property.js +18 -12
- package/src/node/propertyRelation.js +26 -3
- package/src/node/reference.js +12 -3
- package/src/node/rule.js +40 -3
- package/src/node/statement.js +151 -3
- package/src/node/step.js +31 -3
- package/src/node/subDerivation.js +22 -3
- package/src/node/subproof.js +38 -3
- package/src/node/substitution/frame.js +23 -0
- package/src/node/substitution/reference.js +23 -0
- package/src/node/substitution/statement.js +23 -0
- package/src/node/substitution/term.js +23 -0
- package/src/node/supposition.js +19 -3
- package/src/node/term.js +38 -3
- package/src/node/theorem.js +3 -3
- package/src/node/topLevelAssertion.js +69 -3
- package/src/node/topLevelMetaAssertion.js +40 -3
- package/src/node/type.js +15 -8
- package/src/node/types.js +16 -0
- package/src/node/variable.js +15 -8
- package/src/nominal/parser.js +1 -1
- package/src/nonTerminalNodeMap.js +67 -37
- package/src/ruleNames.js +11 -1
- package/src/substitution/frame.js +7 -10
- package/src/substitution/reference.js +7 -10
- package/src/substitution/term.js +7 -9
- package/src/unifier/metaLevel.js +2 -3
- package/src/utilities/brackets.js +8 -8
- package/src/utilities/json.js +19 -0
- package/src/utilities/node.js +0 -27
- package/src/utilities/subproof.js +22 -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/equality.js
CHANGED
|
@@ -1,7 +1,36 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import { arrayUtilities } from "necessary";
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
import NonTerminalNode from "../node/nonTerminal";
|
|
6
|
+
|
|
7
|
+
import { TERM_RULE_NAME } from "../ruleNames";
|
|
8
|
+
|
|
9
|
+
const { first, last } = arrayUtilities;
|
|
10
|
+
|
|
11
|
+
export default class EqualityNode extends NonTerminalNode {
|
|
12
|
+
getTermNodes() {
|
|
13
|
+
const ruleName = TERM_RULE_NAME,
|
|
14
|
+
termNodes = this.getNodeByRuleName(ruleName);
|
|
15
|
+
|
|
16
|
+
return termNodes;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
getLeftTermNode() {
|
|
20
|
+
const termNodes = this.getTermNodes(),
|
|
21
|
+
firstTermNode = first(termNodes),
|
|
22
|
+
leftTermNode = firstTermNode; ///
|
|
23
|
+
|
|
24
|
+
return leftTermNode;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
getRightTermNode() {
|
|
28
|
+
const termNodes = this.getTermNodes(),
|
|
29
|
+
firstTermNode = last(termNodes),
|
|
30
|
+
rightTermNode = firstTermNode; ///
|
|
31
|
+
|
|
32
|
+
return rightTermNode;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(EqualityNode, ruleName, childNodes, opacity, precedence); }
|
|
7
36
|
}
|
package/src/node/error.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import NonTerminalNode from "../node/nonTerminal";
|
|
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,30 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import NonTerminalNode from "../node/nonTerminal";
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
import { DECLARATION_RULE_NAME, METAVARIABLE_RULE_NAME } from "../ruleNames";
|
|
6
|
+
|
|
7
|
+
export default class FrameNode extends NonTerminalNode {
|
|
8
|
+
getDeclarationNodes() {
|
|
9
|
+
const ruleName = DECLARATION_RULE_NAME,
|
|
10
|
+
declarationNodes = this.getNodesByRuleName(ruleName);
|
|
11
|
+
|
|
12
|
+
return declarationNodes;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
getMetavariableNodes() {
|
|
16
|
+
const ruleName = METAVARIABLE_RULE_NAME,
|
|
17
|
+
metavariableNodes = this.getNodesByRuleName(ruleName);
|
|
18
|
+
|
|
19
|
+
return metavariableNodes;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
getSingularMetavariableNode() {
|
|
23
|
+
const ruleName = METAVARIABLE_RULE_NAME,
|
|
24
|
+
singularMetavariableNode = this.getSingularTNodeByRuleName(ruleName);
|
|
25
|
+
|
|
26
|
+
return singularMetavariableNode;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(FrameNode, ruleName, childNodes, opacity, precedence); }
|
|
7
30
|
}
|
package/src/node/judgement.js
CHANGED
|
@@ -1,7 +1,23 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import NonTerminalNode from "../node/nonTerminal";
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
import { FRAME_RULE_NAME, DECLARATION_RULE_NAME } from "../ruleNames";
|
|
6
|
+
|
|
7
|
+
export default class JudgementNode extends NonTerminalNode {
|
|
8
|
+
getFrameNode() {
|
|
9
|
+
const ruleName = FRAME_RULE_NAME,
|
|
10
|
+
frameNode = this.getNodesByRuleName(ruleName);
|
|
11
|
+
|
|
12
|
+
return frameNode;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
getDeclarationNodes() {
|
|
16
|
+
const ruleName = DECLARATION_RULE_NAME,
|
|
17
|
+
declarationNodes = this.getNodesByRuleName(ruleName);
|
|
18
|
+
|
|
19
|
+
return declarationNodes;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(JudgementNode, ruleName, childNodes, opacity, precedence); }
|
|
7
23
|
}
|
package/src/node/label.js
CHANGED
|
@@ -1,7 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import NonTerminalNode from "../node/nonTerminal";
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
import { METAVARIABLE_RULE_NAME } from "../ruleNames";
|
|
6
|
+
|
|
7
|
+
export default class LabelNode extends NonTerminalNode {
|
|
8
|
+
getMetavariableNode() {
|
|
9
|
+
const ruleName = METAVARIABLE_RULE_NAME,
|
|
10
|
+
metavariableNode = this.getNodeByRuleName(ruleName);
|
|
11
|
+
|
|
12
|
+
return metavariableNode;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(LabelNode, ruleName, childNodes, opacity, precedence); }
|
|
7
16
|
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import NonTerminalNode from "../node/nonTerminal";
|
|
4
|
+
|
|
5
|
+
import { LABEL_RULE_NAME } from "../ruleNames";
|
|
6
|
+
|
|
7
|
+
export default class LabelsNode extends NonTerminalNode {
|
|
8
|
+
getLabelNodes() {
|
|
9
|
+
const ruleName = LABEL_RULE_NAME,
|
|
10
|
+
labelNodes = this.getNodesByRuleName(ruleName);
|
|
11
|
+
|
|
12
|
+
return labelNodes;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(LabelsNode, ruleName, childNodes, opacity, precedence); }
|
|
16
|
+
}
|
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
|
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import NonTerminalNode from "../node/nonTerminal";
|
|
4
|
+
|
|
5
|
+
import { STATEMENT_RULE_NAME } from "../ruleNames";
|
|
6
|
+
|
|
7
|
+
export default class MetaArgumentNode extends NonTerminalNode {
|
|
8
|
+
getSingularStatementNode() {
|
|
9
|
+
const ruleName = STATEMENT_RULE_NAME,
|
|
10
|
+
singularStatementNode = this.getNodeByRuleName(ruleName);
|
|
11
|
+
|
|
12
|
+
return singularStatementNode;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(MetaArgumentNode, ruleName, childNodes, opacity, precedence); }
|
|
16
|
+
}
|
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,26 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import NonTerminalNode from "../node/nonTerminal";
|
|
4
4
|
|
|
5
|
-
export default class MetaTypeNode extends
|
|
5
|
+
export default class MetaTypeNode extends NonTerminalNode {
|
|
6
6
|
getMetaTypeName() {
|
|
7
|
-
|
|
8
|
-
const metaTypeTerminalNode = firstChildNode, ///
|
|
9
|
-
content = metaTypeTerminalNode.getContent(),
|
|
10
|
-
metaTypeName = content; ///
|
|
7
|
+
let metaTypeName;
|
|
11
8
|
|
|
12
|
-
|
|
9
|
+
this.someChildNode((childNode) => {
|
|
10
|
+
const childNodeTerminalNode = childNode.isTerminalNode();
|
|
11
|
+
|
|
12
|
+
if (childNodeTerminalNode) {
|
|
13
|
+
const terminalNode = childNode, ///
|
|
14
|
+
content = terminalNode.getContent();
|
|
15
|
+
|
|
16
|
+
metaTypeName = content; ///
|
|
17
|
+
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
13
20
|
});
|
|
14
21
|
|
|
15
22
|
return metaTypeName;
|
|
16
23
|
}
|
|
17
24
|
|
|
18
|
-
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return
|
|
25
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(MetaTypeNode, ruleName, childNodes, opacity, precedence); }
|
|
19
26
|
}
|
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
|
}
|
package/src/node/metavariable.js
CHANGED
|
@@ -1,19 +1,42 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import NonTerminalNode from "../node/nonTerminal";
|
|
4
|
+
|
|
5
|
+
import { TERM_RULE_NAME, TYPE_RULE_NAME } from "../ruleNames";
|
|
6
|
+
|
|
7
|
+
export default class MetavariableNode extends NonTerminalNode {
|
|
8
|
+
getTermNode() {
|
|
9
|
+
const ruleName = TERM_RULE_NAME,
|
|
10
|
+
termNode = this.getNodeByRuleName(ruleName);
|
|
11
|
+
|
|
12
|
+
return termNode;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
getTypeNode() {
|
|
16
|
+
const ruleName = TYPE_RULE_NAME,
|
|
17
|
+
typeNode = this.getNodeByRuleName(ruleName);
|
|
18
|
+
|
|
19
|
+
return typeNode;
|
|
20
|
+
}
|
|
4
21
|
|
|
5
|
-
export default class MetavariableNode extends Node {
|
|
6
22
|
getMetavariableName() {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
23
|
+
let metaVariableName;
|
|
24
|
+
|
|
25
|
+
this.someChildNode((childNode) => {
|
|
26
|
+
const childNodeTerminalNode = childNode.isTerminalNode();
|
|
27
|
+
|
|
28
|
+
if (childNodeTerminalNode) {
|
|
29
|
+
const terminalNode = childNode, ///
|
|
30
|
+
content = terminalNode.getContent();
|
|
31
|
+
|
|
32
|
+
metaVariableName = content; ///
|
|
11
33
|
|
|
12
|
-
|
|
34
|
+
return true;
|
|
35
|
+
}
|
|
13
36
|
});
|
|
14
37
|
|
|
15
|
-
return
|
|
38
|
+
return metaVariableName;
|
|
16
39
|
}
|
|
17
40
|
|
|
18
|
-
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return
|
|
41
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(MetavariableNode, ruleName, childNodes, opacity, precedence); }
|
|
19
42
|
}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { arrayUtilities } from "necessary";
|
|
4
|
+
|
|
5
|
+
import { NonTerminalNode as NonTerminalNodeBase } from "occam-parsers";
|
|
6
|
+
|
|
7
|
+
const { first, forwardsFind, backwardsFind } = arrayUtilities;
|
|
8
|
+
|
|
9
|
+
export default class NonTerminalNode extends NonTerminalNodeBase {
|
|
10
|
+
getNodeByRuleName(...ruleNames) {
|
|
11
|
+
const node = this.findChildNode((childNode) => {
|
|
12
|
+
const childNodeNonTerminalNode = childNode.isNonTerminalNode();
|
|
13
|
+
|
|
14
|
+
if (childNodeNonTerminalNode) {
|
|
15
|
+
const nonTerminalNode = childNode, ///
|
|
16
|
+
ruleName = nonTerminalNode.getRuleName(),
|
|
17
|
+
ruleNamesIncludesRuleName = ruleNames.includes(ruleName);
|
|
18
|
+
|
|
19
|
+
if (ruleNamesIncludesRuleName) {
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}) || null;
|
|
24
|
+
|
|
25
|
+
return node;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
getNodesByRuleName(...ruleNames) {
|
|
29
|
+
const nodes = this.filterChildNode((childNode) => {
|
|
30
|
+
const childNodeNonTerminalNode = childNode.isNonTerminalNode();
|
|
31
|
+
|
|
32
|
+
if (childNodeNonTerminalNode) {
|
|
33
|
+
const nonTerminalNode = childNode, ///
|
|
34
|
+
ruleName = nonTerminalNode.getRuleName(),
|
|
35
|
+
ruleNamesIncludesRuleName = ruleNames.includes(ruleName);
|
|
36
|
+
|
|
37
|
+
if (ruleNamesIncludesRuleName) {
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
return nodes;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
getLastNodeByRuleName(...ruleNames) {
|
|
47
|
+
const childNodes = this.getChildNodes(),
|
|
48
|
+
lastNode = backwardsFind(childNodes, (childNode) => {
|
|
49
|
+
const childNodeNonTerminalNode = childNode.isNonTerminalNode();
|
|
50
|
+
|
|
51
|
+
if (childNodeNonTerminalNode) {
|
|
52
|
+
const nonTerminalNode = childNode, ///
|
|
53
|
+
ruleName = nonTerminalNode.getRuleName(),
|
|
54
|
+
ruleNamesIncludesRuleName = ruleNames.includes(ruleName);
|
|
55
|
+
|
|
56
|
+
if (ruleNamesIncludesRuleName) {
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}) || null;
|
|
61
|
+
|
|
62
|
+
return lastNode;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
getFirstNodeByRuleName(...ruleNames) {
|
|
66
|
+
const childNodes = this.getChildNodes(),
|
|
67
|
+
firstNode = forwardsFind(childNodes, (childNode) => {
|
|
68
|
+
const childNodeNonTerminalNode = childNode.isNonTerminalNode();
|
|
69
|
+
|
|
70
|
+
if (childNodeNonTerminalNode) {
|
|
71
|
+
const nonTerminalNode = childNode, ///
|
|
72
|
+
ruleName = nonTerminalNode.getRuleName(),
|
|
73
|
+
ruleNamesIncludesRuleName = ruleNames.includes(ruleName);
|
|
74
|
+
|
|
75
|
+
if (ruleNamesIncludesRuleName) {
|
|
76
|
+
return true;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}) || null;
|
|
80
|
+
|
|
81
|
+
return firstNode;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
getSingularTNodeByRuleName(...ruleNames) {
|
|
85
|
+
let singularNode = null;
|
|
86
|
+
|
|
87
|
+
const nodes = this.filterChildNode((childNode) => {
|
|
88
|
+
const childNodeNonTerminalNode = childNode.isNonTerminalNode();
|
|
89
|
+
|
|
90
|
+
if (childNodeNonTerminalNode) {
|
|
91
|
+
const nonTerminalNode = childNode, ///
|
|
92
|
+
ruleName = nonTerminalNode.getRuleName(),
|
|
93
|
+
ruleNamesIncludesRuleName = ruleNames.includes(ruleName);
|
|
94
|
+
|
|
95
|
+
if (ruleNamesIncludesRuleName) {
|
|
96
|
+
return true;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}),
|
|
100
|
+
nodesLength = nodes.length;
|
|
101
|
+
|
|
102
|
+
if (nodesLength === 1) {
|
|
103
|
+
const firstNode = first(nodes);
|
|
104
|
+
|
|
105
|
+
singularNode = firstNode; ///
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
return singularNode;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(Class, ruleName, childNodes, opacity, precedence) { return NonTerminalNodeBase.fromRuleNameChildNodesOpacityAndPrecedence(Class, ruleName, childNodes, opacity, precedence); }
|
|
112
|
+
}
|
package/src/node/parameter.js
CHANGED
|
@@ -1,7 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import NonTerminalNode from "../node/nonTerminal";
|
|
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,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import NonTerminalNode from "../node/nonTerminal";
|
|
4
|
+
|
|
5
|
+
import { LABEL_RULE_NAME } from "../ruleNames";
|
|
6
|
+
|
|
7
|
+
export default class ParenthesisedLabelNode extends NonTerminalNode {
|
|
8
|
+
getLabelNode() {
|
|
9
|
+
const ruleName = LABEL_RULE_NAME,
|
|
10
|
+
labelNode = this.getNodeByRuleName(ruleName);
|
|
11
|
+
|
|
12
|
+
return labelNode;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(ParenthesisedLabelNode, ruleName, childNodes, opacity, precedence); }
|
|
16
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import NonTerminalNode from "../node/nonTerminal";
|
|
4
|
+
|
|
5
|
+
import { LABELS_RULE_NAME } from "../ruleNames";
|
|
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 ruleName = LABELS_RULE_NAME,
|
|
17
|
+
labelsNode = this.getNodeByRuleName(ruleName);
|
|
18
|
+
|
|
19
|
+
return labelsNode;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(ParenthesisedLabelsNode, ruleName, childNodes, opacity, precedence); }
|
|
23
|
+
}
|
package/src/node/premise.js
CHANGED
|
@@ -1,7 +1,23 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import NonTerminalNode from "../node/nonTerminal";
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
import { STATEMENT_RULE_NAME, PROCEDURE_CALL_RULE_NAME } from "../ruleNames";
|
|
6
|
+
|
|
7
|
+
export default class PremiseNode extends NonTerminalNode {
|
|
8
|
+
getStatementNode() {
|
|
9
|
+
const ruleName = STATEMENT_RULE_NAME,
|
|
10
|
+
statementNode = this.getNodeByRuleName(ruleName);
|
|
11
|
+
|
|
12
|
+
return statementNode;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
getProcedureCallNode() {
|
|
16
|
+
const ruleName = PROCEDURE_CALL_RULE_NAME,
|
|
17
|
+
procedureCallNode = this.getNodeByRuleName(ruleName);
|
|
18
|
+
|
|
19
|
+
return procedureCallNode;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(PremiseNode, ruleName, childNodes, opacity, precedence); }
|
|
7
23
|
}
|
|
@@ -1,7 +1,23 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import NonTerminalNode from "../node/nonTerminal";
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
import { REFERENCE_RULE_NAME, PARAMETER_RULE_NAME } from "../ruleNames";
|
|
6
|
+
|
|
7
|
+
export default class ProcedureCallNode extends NonTerminalNode {
|
|
8
|
+
getReferenceNode() {
|
|
9
|
+
const ruleName = REFERENCE_RULE_NAME,
|
|
10
|
+
referenceNode = this.getNodeByRuleName(ruleName);
|
|
11
|
+
|
|
12
|
+
return referenceNode;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
getParameterNodes() {
|
|
16
|
+
const ruleName = PARAMETER_RULE_NAME,
|
|
17
|
+
parameterNodes = this.getNodesByRuleName(ruleName);
|
|
18
|
+
|
|
19
|
+
return parameterNodes;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(ProcedureCallNode, ruleName, childNodes, opacity, precedence); }
|
|
7
23
|
}
|
package/src/node/proof.js
CHANGED
|
@@ -1,7 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import NonTerminalNode from "../node/nonTerminal";
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
import { DERIVATION_RULE_NAME } from "../ruleNames";
|
|
6
|
+
|
|
7
|
+
export default class ProofNode extends NonTerminalNode {
|
|
8
|
+
getDerivationNode() {
|
|
9
|
+
const ruleName = DERIVATION_RULE_NAME,
|
|
10
|
+
derivationNode = this.getNodeByRuleName(ruleName);
|
|
11
|
+
|
|
12
|
+
return derivationNode;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(ProofNode, ruleName, childNodes, opacity, precedence); }
|
|
7
16
|
}
|
package/src/node/property.js
CHANGED
|
@@ -1,22 +1,28 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import NonTerminalNode from "../node/nonTerminal";
|
|
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,30 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import NonTerminalNode from "../node/nonTerminal";
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
import { TERM_RULE_NAME, PROPERTY_RULE_NAME } from "../ruleNames";
|
|
6
|
+
|
|
7
|
+
export default class PropertyRelationNode extends NonTerminalNode {
|
|
8
|
+
getTermNode() {
|
|
9
|
+
const ruleName = TERM_RULE_NAME,
|
|
10
|
+
termNode = this.getNodeByRuleName(ruleName);
|
|
11
|
+
|
|
12
|
+
return termNode;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
getPropertyNode() {
|
|
16
|
+
const ruleName = PROPERTY_RULE_NAME,
|
|
17
|
+
propertyNode = this.getNodeByRuleName(ruleName);
|
|
18
|
+
|
|
19
|
+
return propertyNode;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
getPropertyName() {
|
|
23
|
+
const propertyNode = this.getPropertyNode(),
|
|
24
|
+
propertyName = propertyNode.getPropertyName();
|
|
25
|
+
|
|
26
|
+
return propertyName;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(PropertyRelationNode, ruleName, childNodes, opacity, precedence); }
|
|
7
30
|
}
|
package/src/node/reference.js
CHANGED
|
@@ -1,7 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import
|
|
3
|
+
import NonTerminalNode from "../node/nonTerminal";
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
import { METAVARIABLE_RULE_NAME } from "../ruleNames";
|
|
6
|
+
|
|
7
|
+
export default class ReferenceNode extends NonTerminalNode {
|
|
8
|
+
getMetavariableNode() {
|
|
9
|
+
const ruleName = METAVARIABLE_RULE_NAME,
|
|
10
|
+
metavariableNode = this.getNodeByRuleName(ruleName);
|
|
11
|
+
|
|
12
|
+
return metavariableNode;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(ReferenceNode, ruleName, childNodes, opacity, precedence); }
|
|
7
16
|
}
|