occam-verify-cli 1.0.438 → 1.0.444
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/context/file.js +38 -35
- package/lib/context/local.js +10 -10
- package/lib/context/release.js +6 -6
- package/lib/context/temporary.js +14 -14
- package/lib/element/assertion/contained.js +45 -45
- package/lib/element/assertion/defined.js +13 -13
- package/lib/element/assertion/property.js +23 -22
- package/lib/element/assertion/satisfies.js +7 -6
- package/lib/element/assertion/subproof.js +20 -17
- package/lib/element/assertion/type.js +3 -2
- package/lib/element/assertion.js +1 -23
- package/lib/element/assumption.js +24 -22
- package/lib/element/axiom.js +9 -12
- package/lib/element/axiomLemmaTheoremConjecture.js +32 -32
- package/lib/element/{statement/combinator → combinator}/bracketed.js +16 -16
- package/lib/element/combinator.js +229 -0
- package/lib/element/conclusion.js +11 -9
- package/lib/element/{term/constructor → constructor}/bracketed.js +5 -5
- package/lib/element/constructor.js +232 -0
- package/lib/element/declaration/combinator.js +2 -16
- package/lib/element/declaration/complexType.js +12 -12
- package/lib/element/declaration/constructor.js +13 -11
- package/lib/element/declaration/simpleType.js +4 -4
- package/lib/element/declaration/typePrefix.js +2 -2
- package/lib/element/declaration/variable.js +3 -3
- package/lib/element/deduction.js +11 -9
- package/lib/element/derivation.js +7 -10
- package/lib/element/equivalence.js +10 -10
- package/lib/element/equivalences.js +5 -5
- package/lib/element/frame.js +32 -38
- package/lib/element/hypothesis.js +3 -3
- package/lib/element/judgement.js +6 -4
- package/lib/element/label.js +8 -8
- package/lib/element/metaLemmaMetatheorem.js +5 -5
- package/lib/element/metaType.js +17 -80
- package/lib/element/metavariable.js +34 -34
- package/lib/element/parameter.js +3 -3
- package/lib/element/premise.js +49 -58
- package/lib/element/property.js +9 -9
- package/lib/element/propertyRelation.js +13 -13
- package/lib/element/reference.js +14 -17
- package/lib/element/rule.js +21 -21
- package/lib/element/signature.js +11 -11
- package/lib/element/statement.js +18 -18
- package/lib/element/step.js +83 -55
- package/lib/element/subDerivation.js +7 -10
- package/lib/element/subproof.js +6 -14
- package/lib/element/substitution/frame.js +1 -7
- package/lib/element/substitution/reference.js +2 -3
- package/lib/element/substitution/statement.js +44 -15
- package/lib/element/substitution/term.js +10 -57
- package/lib/element/substitution.js +5 -11
- package/lib/element/substitutions.js +29 -29
- package/lib/element/supposition.js +63 -55
- package/lib/element/term.js +21 -34
- package/lib/element/type.js +47 -60
- package/lib/element/typePrefix.js +5 -5
- package/lib/element/variable.js +9 -9
- package/lib/element.js +9 -3
- package/lib/metaTypes.js +52 -0
- package/lib/node/axiomLemmaTheoremConjecture.js +9 -9
- package/lib/node/body/axiom.js +2 -25
- package/lib/node/body/conjecture.js +2 -25
- package/lib/node/body/lemma.js +2 -25
- package/lib/node/body/metaLemma.js +2 -25
- package/lib/node/body/metatheorem.js +2 -25
- package/lib/node/body/rule.js +15 -1
- package/lib/node/body/theorem.js +2 -25
- package/lib/node/body.js +25 -2
- package/lib/node/combinator.js +11 -2
- package/lib/node/constructor.js +11 -2
- package/lib/node/declaration/combinator.js +5 -5
- package/lib/node/declaration/constructor.js +8 -8
- package/lib/node/declaration/property.js +15 -15
- package/lib/node/declaration/simpleType.js +31 -31
- package/lib/node/declaration/variable.js +8 -8
- package/lib/node/equality.js +8 -8
- package/lib/node/frame.js +20 -20
- package/lib/node/header.js +22 -22
- package/lib/node/metaLemmaMetaTheorem.js +16 -16
- package/lib/node/metavariable.js +15 -15
- package/lib/node/property.js +8 -8
- package/lib/node/propertyRelation.js +8 -8
- package/lib/node/rule.js +16 -16
- package/lib/node/statement.js +12 -12
- package/lib/node/step.js +22 -22
- package/lib/node/subproof.js +8 -8
- package/lib/node/substitution/frame.js +19 -19
- package/lib/node/substitution/statement.js +19 -19
- package/lib/node/substitution/term.js +19 -19
- package/lib/node/term.js +35 -35
- package/lib/preamble.js +5 -5
- package/lib/process/instantiate.js +20 -2
- package/lib/process/unify.js +39 -42
- package/lib/process/validate.js +431 -0
- package/lib/process/verify.js +44 -135
- package/lib/types.js +27 -0
- package/lib/utilities/brackets.js +4 -4
- package/lib/utilities/element.js +91 -55
- package/lib/utilities/instance.js +18 -18
- package/lib/utilities/statement.js +2 -2
- package/lib/utilities/string.js +21 -10
- package/lib/utilities/unification.js +237 -0
- package/lib/utilities/validation.js +251 -0
- package/package.json +6 -6
- package/src/context/file.js +37 -31
- package/src/context/local.js +8 -8
- package/src/context/release.js +9 -6
- package/src/context/temporary.js +11 -11
- package/src/element/assertion/contained.js +19 -20
- package/src/element/assertion/defined.js +11 -12
- package/src/element/assertion/property.js +20 -20
- package/src/element/assertion/satisfies.js +6 -6
- package/src/element/assertion/subproof.js +17 -15
- package/src/element/assertion/type.js +2 -2
- package/src/element/assertion.js +0 -2
- package/src/element/assumption.js +22 -19
- package/src/element/axiom.js +7 -11
- package/src/element/axiomLemmaTheoremConjecture.js +36 -36
- package/src/element/{statement/combinator → combinator}/bracketed.js +7 -7
- package/src/element/combinator.js +90 -0
- package/src/element/conclusion.js +12 -10
- package/src/element/{term/constructor → constructor}/bracketed.js +5 -5
- package/src/element/{term/constructor.js → constructor.js} +17 -25
- package/src/element/declaration/combinator.js +1 -22
- package/src/element/declaration/complexType.js +11 -11
- package/src/element/declaration/constructor.js +13 -10
- package/src/element/declaration/simpleType.js +3 -3
- package/src/element/declaration/typePrefix.js +1 -1
- package/src/element/declaration/variable.js +2 -2
- package/src/element/deduction.js +12 -9
- package/src/element/derivation.js +6 -10
- package/src/element/equivalence.js +8 -8
- package/src/element/equivalences.js +4 -4
- package/src/element/frame.js +28 -30
- package/src/element/hypothesis.js +2 -2
- package/src/element/judgement.js +6 -3
- package/src/element/label.js +4 -4
- package/src/element/metaLemmaMetatheorem.js +4 -3
- package/src/element/metaType.js +9 -45
- package/src/element/metavariable.js +29 -31
- package/src/element/parameter.js +2 -2
- package/src/element/premise.js +55 -62
- package/src/element/property.js +6 -6
- package/src/element/propertyRelation.js +11 -11
- package/src/element/reference.js +12 -21
- package/src/element/rule.js +17 -16
- package/src/element/signature.js +10 -9
- package/src/element/statement.js +16 -18
- package/src/element/step.js +93 -55
- package/src/element/subDerivation.js +6 -10
- package/src/element/subproof.js +4 -12
- package/src/element/substitution/frame.js +0 -2
- package/src/element/substitution/reference.js +1 -5
- package/src/element/substitution/statement.js +44 -14
- package/src/element/substitution/term.js +10 -13
- package/src/element/substitution.js +3 -5
- package/src/element/substitutions.js +48 -30
- package/src/element/supposition.js +88 -70
- package/src/element/term.js +18 -28
- package/src/element/type.js +42 -36
- package/src/element/typePrefix.js +3 -3
- package/src/element/variable.js +7 -7
- package/src/element.js +3 -1
- package/src/metaTypes.js +42 -0
- package/src/node/axiomLemmaTheoremConjecture.js +6 -6
- package/src/node/body/axiom.js +0 -21
- package/src/node/body/conjecture.js +0 -23
- package/src/node/body/lemma.js +0 -23
- package/src/node/body/metaLemma.js +0 -23
- package/src/node/body/metatheorem.js +0 -23
- package/src/node/body/rule.js +12 -0
- package/src/node/body/theorem.js +0 -23
- package/src/node/body.js +23 -0
- package/src/node/combinator.js +9 -0
- package/src/node/constructor.js +9 -0
- package/src/node/declaration/combinator.js +5 -5
- package/src/node/declaration/constructor.js +8 -8
- package/src/node/declaration/property.js +14 -14
- package/src/node/declaration/simpleType.js +31 -31
- package/src/node/declaration/variable.js +7 -7
- package/src/node/equality.js +7 -7
- package/src/node/frame.js +21 -21
- package/src/node/header.js +22 -22
- package/src/node/metaLemmaMetaTheorem.js +14 -14
- package/src/node/metavariable.js +14 -14
- package/src/node/property.js +7 -7
- package/src/node/propertyRelation.js +7 -7
- package/src/node/rule.js +15 -15
- package/src/node/statement.js +12 -12
- package/src/node/step.js +21 -21
- package/src/node/subproof.js +7 -7
- package/src/node/substitution/frame.js +18 -18
- package/src/node/substitution/statement.js +18 -18
- package/src/node/substitution/term.js +18 -18
- package/src/node/term.js +34 -34
- package/src/preamble.js +4 -4
- package/src/process/instantiate.js +12 -0
- package/src/process/unify.js +53 -57
- package/src/process/validate.js +316 -0
- package/src/process/verify.js +50 -138
- package/src/types.js +18 -0
- package/src/utilities/brackets.js +10 -6
- package/src/utilities/element.js +125 -82
- package/src/utilities/instance.js +18 -18
- package/src/utilities/statement.js +2 -2
- package/src/utilities/string.js +34 -20
- package/src/{mixins/step/unify.js → utilities/unification.js} +82 -68
- package/src/{mixins/statement/validate.js → utilities/validation.js} +143 -69
- package/lib/element/statement/combinator.js +0 -105
- package/lib/element/term/constructor.js +0 -172
- package/lib/mixins/statement/validate.js +0 -198
- package/lib/mixins/step/unify.js +0 -228
- package/lib/mixins/term/verify.js +0 -65
- package/src/element/statement/combinator.js +0 -59
- package/src/mixins/term/verify.js +0 -81
package/src/node/property.js
CHANGED
|
@@ -5,13 +5,6 @@ import NonTerminalNode from "../nonTerminalNode";
|
|
|
5
5
|
import { SINGLE_SPACE } from "../constants";
|
|
6
6
|
|
|
7
7
|
export default class PropertyNode extends NonTerminalNode {
|
|
8
|
-
getPropertyName() {
|
|
9
|
-
const names = this.getNames(),
|
|
10
|
-
propertyName = names.join(SINGLE_SPACE);
|
|
11
|
-
|
|
12
|
-
return propertyName;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
8
|
getNames() {
|
|
16
9
|
const names = this.mapChildNode((childNode) => {
|
|
17
10
|
const terminalNode = childNode, ///
|
|
@@ -24,5 +17,12 @@ export default class PropertyNode extends NonTerminalNode {
|
|
|
24
17
|
return names;
|
|
25
18
|
}
|
|
26
19
|
|
|
20
|
+
getPropertyName() {
|
|
21
|
+
const names = this.getNames(),
|
|
22
|
+
propertyName = names.join(SINGLE_SPACE);
|
|
23
|
+
|
|
24
|
+
return propertyName;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
27
|
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(PropertyNode, ruleName, childNodes, opacity, precedence); }
|
|
28
28
|
}
|
|
@@ -5,6 +5,13 @@ import NonTerminalNode from "../nonTerminalNode";
|
|
|
5
5
|
import { TERM_RULE_NAME, PROPERTY_RULE_NAME } from "../ruleNames";
|
|
6
6
|
|
|
7
7
|
export default class PropertyRelationNode extends NonTerminalNode {
|
|
8
|
+
getPropertyName() {
|
|
9
|
+
const propertyNode = this.getPropertyNode(),
|
|
10
|
+
propertyName = propertyNode.getPropertyName();
|
|
11
|
+
|
|
12
|
+
return propertyName;
|
|
13
|
+
}
|
|
14
|
+
|
|
8
15
|
getTermNode() {
|
|
9
16
|
const ruleName = TERM_RULE_NAME,
|
|
10
17
|
termNode = this.getNodeByRuleName(ruleName);
|
|
@@ -19,12 +26,5 @@ export default class PropertyRelationNode extends NonTerminalNode {
|
|
|
19
26
|
return propertyNode;
|
|
20
27
|
}
|
|
21
28
|
|
|
22
|
-
getPropertyName() {
|
|
23
|
-
const propertyNode = this.getPropertyNode(),
|
|
24
|
-
propertyName = propertyNode.getPropertyName();
|
|
25
|
-
|
|
26
|
-
return propertyName;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
29
|
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(PropertyRelationNode, ruleName, childNodes, opacity, precedence); }
|
|
30
30
|
}
|
package/src/node/rule.js
CHANGED
|
@@ -5,18 +5,11 @@ import NonTerminalNode from "../nonTerminalNode";
|
|
|
5
5
|
import { RULE_BODY_RULE_NAME, RULE_HEADER_RULE_NAME } from "../ruleNames";
|
|
6
6
|
|
|
7
7
|
export default class RuleNode extends NonTerminalNode {
|
|
8
|
-
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
return ruleBodyNode;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
getRuleHeaderNode() {
|
|
16
|
-
const ruleName = RULE_HEADER_RULE_NAME,
|
|
17
|
-
ruleHeaderNode = this.getNodeByRuleName(ruleName);
|
|
8
|
+
getProofNode() {
|
|
9
|
+
const ruleBodyNode = this.getRuleBodyNode(),
|
|
10
|
+
proofNode = ruleBodyNode.getProofNode();
|
|
18
11
|
|
|
19
|
-
return
|
|
12
|
+
return proofNode;
|
|
20
13
|
}
|
|
21
14
|
|
|
22
15
|
getLabelNodes() {
|
|
@@ -40,11 +33,18 @@ export default class RuleNode extends NonTerminalNode {
|
|
|
40
33
|
return conclusionNode;
|
|
41
34
|
}
|
|
42
35
|
|
|
43
|
-
|
|
44
|
-
const
|
|
45
|
-
|
|
36
|
+
getRuleBodyNode() {
|
|
37
|
+
const ruleName = RULE_BODY_RULE_NAME,
|
|
38
|
+
ruleBodyNode = this.getNodeByRuleName(ruleName);
|
|
46
39
|
|
|
47
|
-
return
|
|
40
|
+
return ruleBodyNode;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
getRuleHeaderNode() {
|
|
44
|
+
const ruleName = RULE_HEADER_RULE_NAME,
|
|
45
|
+
ruleHeaderNode = this.getNodeByRuleName(ruleName);
|
|
46
|
+
|
|
47
|
+
return ruleHeaderNode;
|
|
48
48
|
}
|
|
49
49
|
|
|
50
50
|
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(RuleNode, ruleName, childNodes, opacity, precedence); }
|
package/src/node/statement.js
CHANGED
|
@@ -19,6 +19,18 @@ import { TERM_RULE_NAME,
|
|
|
19
19
|
STATEMENT_SUBSTITUTION_RULE_NAME } from "../ruleNames";
|
|
20
20
|
|
|
21
21
|
export default class StatementNode extends NonTerminalNode {
|
|
22
|
+
isSingular() {
|
|
23
|
+
let singular = false;
|
|
24
|
+
|
|
25
|
+
const singularMetavariableNode = this.getSingularMetavariableNode();
|
|
26
|
+
|
|
27
|
+
if (singularMetavariableNode !== null) {
|
|
28
|
+
singular = true;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
return singular;
|
|
32
|
+
}
|
|
33
|
+
|
|
22
34
|
getMetavariableName() {
|
|
23
35
|
let metavariableName = null;
|
|
24
36
|
|
|
@@ -46,18 +58,6 @@ export default class StatementNode extends NonTerminalNode {
|
|
|
46
58
|
return substitutionNode;
|
|
47
59
|
}
|
|
48
60
|
|
|
49
|
-
isSingular() {
|
|
50
|
-
let singular = false;
|
|
51
|
-
|
|
52
|
-
const singularMetavariableNode = this.getSingularMetavariableNode();
|
|
53
|
-
|
|
54
|
-
if (singularMetavariableNode !== null) {
|
|
55
|
-
singular = true;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
return singular;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
61
|
getTermNodes() {
|
|
62
62
|
const ruleName = TERM_RULE_NAME,
|
|
63
63
|
termNodes = this.getDescendantNodesByRuleName(ruleName);
|
package/src/node/step.js
CHANGED
|
@@ -17,27 +17,6 @@ export default class StepNode extends NonTerminalNode {
|
|
|
17
17
|
return subproofNode;
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
getNonsenseNode() {
|
|
21
|
-
const ruleName = NONSENSE_RULE_NAME,
|
|
22
|
-
nonsenseNode = this.getNodeByRuleName(ruleName);
|
|
23
|
-
|
|
24
|
-
return nonsenseNode;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
getStatementNode() {
|
|
28
|
-
const ruleName = STATEMENT_RULE_NAME,
|
|
29
|
-
statementNode = this.getNodeByRuleName(ruleName);
|
|
30
|
-
|
|
31
|
-
return statementNode;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
getQualificationNode() {
|
|
35
|
-
const ruleName = QUALIFICATION_RULE_NAME,
|
|
36
|
-
qualificationNode = this.getNodeByRuleName(ruleName);
|
|
37
|
-
|
|
38
|
-
return qualificationNode;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
20
|
getReferenceNode() {
|
|
42
21
|
let referenceNode = null;
|
|
43
22
|
|
|
@@ -62,5 +41,26 @@ export default class StepNode extends NonTerminalNode {
|
|
|
62
41
|
return satisfiedAssertionNode;
|
|
63
42
|
}
|
|
64
43
|
|
|
44
|
+
getNonsenseNode() {
|
|
45
|
+
const ruleName = NONSENSE_RULE_NAME,
|
|
46
|
+
nonsenseNode = this.getNodeByRuleName(ruleName);
|
|
47
|
+
|
|
48
|
+
return nonsenseNode;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
getStatementNode() {
|
|
52
|
+
const ruleName = STATEMENT_RULE_NAME,
|
|
53
|
+
statementNode = this.getNodeByRuleName(ruleName);
|
|
54
|
+
|
|
55
|
+
return statementNode;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
getQualificationNode() {
|
|
59
|
+
const ruleName = QUALIFICATION_RULE_NAME,
|
|
60
|
+
qualificationNode = this.getNodeByRuleName(ruleName);
|
|
61
|
+
|
|
62
|
+
return qualificationNode;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
65
|
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(StepNode, ruleName, childNodes, opacity, precedence); }
|
|
66
66
|
}
|
package/src/node/subproof.js
CHANGED
|
@@ -24,13 +24,6 @@ export default class SubproofNode extends NonTerminalNode {
|
|
|
24
24
|
return lastStepNode;
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
getSubDerivationNode() {
|
|
28
|
-
const ruleName = SUB_DERIVATION_RULE_NAME,
|
|
29
|
-
subDerivationNode = this.getNodeByRuleName(ruleName);
|
|
30
|
-
|
|
31
|
-
return subDerivationNode;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
27
|
getSuppositionNodes() {
|
|
35
28
|
const ruleName = SUPPOSITION_RULE_NAME,
|
|
36
29
|
suppositionNodes = this.getNodesByRuleName(ruleName);
|
|
@@ -38,5 +31,12 @@ export default class SubproofNode extends NonTerminalNode {
|
|
|
38
31
|
return suppositionNodes;
|
|
39
32
|
}
|
|
40
33
|
|
|
34
|
+
getSubDerivationNode() {
|
|
35
|
+
const ruleName = SUB_DERIVATION_RULE_NAME,
|
|
36
|
+
subDerivationNode = this.getNodeByRuleName(ruleName);
|
|
37
|
+
|
|
38
|
+
return subDerivationNode;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
41
|
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(SubproofNode, ruleName, childNodes, opacity, precedence); }
|
|
42
42
|
}
|
|
@@ -5,13 +5,6 @@ import SubstitutionNode from "../../node/substitution";
|
|
|
5
5
|
import { FRAME_RULE_NAME } from "../../ruleNames";
|
|
6
6
|
|
|
7
7
|
export default class FrameSubstitutionNode extends SubstitutionNode {
|
|
8
|
-
getMetavariableNode() {
|
|
9
|
-
const lastMetavariableNode = this.getLastMetavariableNode(),
|
|
10
|
-
metavariableNode = lastMetavariableNode; ///
|
|
11
|
-
|
|
12
|
-
return metavariableNode;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
8
|
getFrameNode() {
|
|
16
9
|
const firstFrameNode = this.getFirstFrameNode(),
|
|
17
10
|
frameNode = firstFrameNode; ///
|
|
@@ -19,18 +12,11 @@ export default class FrameSubstitutionNode extends SubstitutionNode {
|
|
|
19
12
|
return frameNode;
|
|
20
13
|
}
|
|
21
14
|
|
|
22
|
-
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
return lastFrameNode;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
getFirstFrameNode() {
|
|
30
|
-
const ruleName = FRAME_RULE_NAME,
|
|
31
|
-
firstFrameNode = this.getFirstNodeByRuleName(ruleName);
|
|
15
|
+
getMetavariableNode() {
|
|
16
|
+
const lastMetavariableNode = this.getLastMetavariableNode(),
|
|
17
|
+
metavariableNode = lastMetavariableNode; ///
|
|
32
18
|
|
|
33
|
-
return
|
|
19
|
+
return metavariableNode;
|
|
34
20
|
}
|
|
35
21
|
|
|
36
22
|
getLastMetavariableNode() {
|
|
@@ -59,5 +45,19 @@ export default class FrameSubstitutionNode extends SubstitutionNode {
|
|
|
59
45
|
return firstMetavariableNode;
|
|
60
46
|
}
|
|
61
47
|
|
|
48
|
+
getLastFrameNode() {
|
|
49
|
+
const ruleName = FRAME_RULE_NAME,
|
|
50
|
+
lastFrameNode = this.getLastNodeByRuleName(ruleName);
|
|
51
|
+
|
|
52
|
+
return lastFrameNode;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
getFirstFrameNode() {
|
|
56
|
+
const ruleName = FRAME_RULE_NAME,
|
|
57
|
+
firstFrameNode = this.getFirstNodeByRuleName(ruleName);
|
|
58
|
+
|
|
59
|
+
return firstFrameNode;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
62
|
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return SubstitutionNode.fromRuleNameChildNodesOpacityAndPrecedence(FrameSubstitutionNode, ruleName, childNodes, opacity, precedence); }
|
|
63
63
|
}
|
|
@@ -5,13 +5,6 @@ import SubstitutionNode from "../../node/substitution";
|
|
|
5
5
|
import { STATEMENT_RULE_NAME } from "../../ruleNames";
|
|
6
6
|
|
|
7
7
|
export default class StatementSubstitutionNode extends SubstitutionNode {
|
|
8
|
-
getMetavariableNode() {
|
|
9
|
-
const lastMetavariableNode = this.getLastVariableNode(),
|
|
10
|
-
metavariableNode = lastMetavariableNode; ///
|
|
11
|
-
|
|
12
|
-
return metavariableNode;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
8
|
getStatementNode() {
|
|
16
9
|
const firstStatementNode = this.getFirstStatementNode(),
|
|
17
10
|
statementNode = firstStatementNode; ///
|
|
@@ -19,18 +12,11 @@ export default class StatementSubstitutionNode extends SubstitutionNode {
|
|
|
19
12
|
return statementNode;
|
|
20
13
|
}
|
|
21
14
|
|
|
22
|
-
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
return lastStatementNode;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
getFirstStatementNode() {
|
|
30
|
-
const ruleName = STATEMENT_RULE_NAME,
|
|
31
|
-
firstStatementNode = this.getFirstNodeByRuleName(ruleName);
|
|
15
|
+
getMetavariableNode() {
|
|
16
|
+
const lastMetavariableNode = this.getLastVariableNode(),
|
|
17
|
+
metavariableNode = lastMetavariableNode; ///
|
|
32
18
|
|
|
33
|
-
return
|
|
19
|
+
return metavariableNode;
|
|
34
20
|
}
|
|
35
21
|
|
|
36
22
|
getLastMetavariableNode() {
|
|
@@ -59,5 +45,19 @@ export default class StatementSubstitutionNode extends SubstitutionNode {
|
|
|
59
45
|
return firstMetavariableNode;
|
|
60
46
|
}
|
|
61
47
|
|
|
48
|
+
getLastStatementNode() {
|
|
49
|
+
const ruleName = STATEMENT_RULE_NAME,
|
|
50
|
+
lastStatementNode = this.getLastNodeByRuleName(ruleName);
|
|
51
|
+
|
|
52
|
+
return lastStatementNode;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
getFirstStatementNode() {
|
|
56
|
+
const ruleName = STATEMENT_RULE_NAME,
|
|
57
|
+
firstStatementNode = this.getFirstNodeByRuleName(ruleName);
|
|
58
|
+
|
|
59
|
+
return firstStatementNode;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
62
|
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return SubstitutionNode.fromRuleNameChildNodesOpacityAndPrecedence(StatementSubstitutionNode, ruleName, childNodes, opacity, precedence); }
|
|
63
63
|
}
|
|
@@ -5,13 +5,6 @@ import SubstitutionNode from "../../node/substitution";
|
|
|
5
5
|
import { TERM_RULE_NAME } from "../../ruleNames";
|
|
6
6
|
|
|
7
7
|
export default class TermSubstitutionNode extends SubstitutionNode {
|
|
8
|
-
getVariableNode() {
|
|
9
|
-
const lastVariableNode = this.getLastVariableNode(),
|
|
10
|
-
variableNode = lastVariableNode; ///
|
|
11
|
-
|
|
12
|
-
return variableNode;
|
|
13
|
-
}
|
|
14
|
-
|
|
15
8
|
getTermNode() {
|
|
16
9
|
const firstTermNode = this.getFirstTermNode(),
|
|
17
10
|
termNode = firstTermNode; ///
|
|
@@ -19,18 +12,11 @@ export default class TermSubstitutionNode extends SubstitutionNode {
|
|
|
19
12
|
return termNode;
|
|
20
13
|
}
|
|
21
14
|
|
|
22
|
-
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
return lastTermNode;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
getFirstTermNode() {
|
|
30
|
-
const ruleName = TERM_RULE_NAME,
|
|
31
|
-
firstTermNode = this.getFirstNodeByRuleName(ruleName);
|
|
15
|
+
getVariableNode() {
|
|
16
|
+
const lastVariableNode = this.getLastVariableNode(),
|
|
17
|
+
variableNode = lastVariableNode; ///
|
|
32
18
|
|
|
33
|
-
return
|
|
19
|
+
return variableNode;
|
|
34
20
|
}
|
|
35
21
|
|
|
36
22
|
getLastVariableNode() {
|
|
@@ -49,6 +35,20 @@ export default class TermSubstitutionNode extends SubstitutionNode {
|
|
|
49
35
|
return firstVariableNode;
|
|
50
36
|
}
|
|
51
37
|
|
|
38
|
+
getLastTermNode() {
|
|
39
|
+
const ruleName = TERM_RULE_NAME,
|
|
40
|
+
lastTermNode = this.getLastNodeByRuleName(ruleName);
|
|
41
|
+
|
|
42
|
+
return lastTermNode;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
getFirstTermNode() {
|
|
46
|
+
const ruleName = TERM_RULE_NAME,
|
|
47
|
+
firstTermNode = this.getFirstNodeByRuleName(ruleName);
|
|
48
|
+
|
|
49
|
+
return firstTermNode;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
52
|
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return SubstitutionNode.fromRuleNameChildNodesOpacityAndPrecedence(TermSubstitutionNode, ruleName, childNodes, opacity, precedence); }
|
|
53
53
|
}
|
|
54
54
|
|
package/src/node/term.js
CHANGED
|
@@ -5,27 +5,6 @@ import NonTerminalNode from "../nonTerminalNode";
|
|
|
5
5
|
import { ARGUMENT_RULE_NAME, VARIABLE_RULE_NAME } from "../ruleNames";
|
|
6
6
|
|
|
7
7
|
export default class TermNode extends NonTerminalNode {
|
|
8
|
-
getVariableIdentifier() {
|
|
9
|
-
let variableIdentifier = null;
|
|
10
|
-
|
|
11
|
-
const singular = this.isSingular();
|
|
12
|
-
|
|
13
|
-
if (singular) {
|
|
14
|
-
const singularVariableNode = this.getSingularVariableNode();
|
|
15
|
-
|
|
16
|
-
variableIdentifier = singularVariableNode.getVariableIdentifier();
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
return variableIdentifier;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
getVariableNode() {
|
|
23
|
-
const singularVariableNode = this.getSingularVariableNode(),
|
|
24
|
-
variableNode = singularVariableNode; //
|
|
25
|
-
|
|
26
|
-
return variableNode;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
8
|
isSingular() {
|
|
30
9
|
let singular = false;
|
|
31
10
|
|
|
@@ -38,11 +17,11 @@ export default class TermNode extends NonTerminalNode {
|
|
|
38
17
|
return singular;
|
|
39
18
|
}
|
|
40
19
|
|
|
41
|
-
|
|
42
|
-
const
|
|
43
|
-
|
|
20
|
+
getVariableNode() {
|
|
21
|
+
const singularVariableNode = this.getSingularVariableNode(),
|
|
22
|
+
variableNode = singularVariableNode; //
|
|
44
23
|
|
|
45
|
-
return
|
|
24
|
+
return variableNode;
|
|
46
25
|
}
|
|
47
26
|
|
|
48
27
|
getSingularTermNode() {
|
|
@@ -57,18 +36,18 @@ export default class TermNode extends NonTerminalNode {
|
|
|
57
36
|
return singularTermNode;
|
|
58
37
|
}
|
|
59
38
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
singularArgumentNode = this.getSingularNodeByRuleName(ruleName);
|
|
39
|
+
getVariableIdentifier() {
|
|
40
|
+
let variableIdentifier = null;
|
|
63
41
|
|
|
64
|
-
|
|
65
|
-
}
|
|
42
|
+
const singular = this.isSingular();
|
|
66
43
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
singularVariableNode = this.getSingularNodeByRuleName(ruleName);
|
|
44
|
+
if (singular) {
|
|
45
|
+
const singularVariableNode = this.getSingularVariableNode();
|
|
70
46
|
|
|
71
|
-
|
|
47
|
+
variableIdentifier = singularVariableNode.getVariableIdentifier();
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
return variableIdentifier;
|
|
72
51
|
}
|
|
73
52
|
|
|
74
53
|
getSingularVariableIdentifier() {
|
|
@@ -85,5 +64,26 @@ export default class TermNode extends NonTerminalNode {
|
|
|
85
64
|
return singularVariableIdentifier;
|
|
86
65
|
}
|
|
87
66
|
|
|
67
|
+
getVariableNodes() {
|
|
68
|
+
const ruleName = VARIABLE_RULE_NAME,
|
|
69
|
+
variableNodes = this.getNodesByRuleName(ruleName);
|
|
70
|
+
|
|
71
|
+
return variableNodes;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
getSingularArgumentNode() {
|
|
75
|
+
const ruleName = ARGUMENT_RULE_NAME,
|
|
76
|
+
singularArgumentNode = this.getSingularNodeByRuleName(ruleName);
|
|
77
|
+
|
|
78
|
+
return singularArgumentNode;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
getSingularVariableNode() {
|
|
82
|
+
const ruleName = VARIABLE_RULE_NAME,
|
|
83
|
+
singularVariableNode = this.getSingularNodeByRuleName(ruleName);
|
|
84
|
+
|
|
85
|
+
return singularVariableNode;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
88
|
static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(TermNode, ruleName, childNodes, opacity, precedence); }
|
|
89
89
|
}
|
package/src/preamble.js
CHANGED
|
@@ -31,6 +31,8 @@ import Conclusion from "./element/conclusion";
|
|
|
31
31
|
import Derivation from "./element/derivation";
|
|
32
32
|
import Hypothesis from "./element/hypothesis";
|
|
33
33
|
import Assumption from "./element/assumption";
|
|
34
|
+
import Combinator from "./element/combinator";
|
|
35
|
+
import Constructor from "./element/constructor";
|
|
34
36
|
import Supposition from "./element/supposition";
|
|
35
37
|
import Metatheorem from "./element/metatheorem";
|
|
36
38
|
import Equivalence from "./element/equivalence";
|
|
@@ -40,7 +42,6 @@ import Substitutions from "./element/substitutions";
|
|
|
40
42
|
import ProcedureCall from "./element/procedureCall";
|
|
41
43
|
import SubDerivation from "./element/subDerivation";
|
|
42
44
|
import TypeAssertion from "./element/assertion/type";
|
|
43
|
-
import ConstructorTerm from "./element/term/constructor";
|
|
44
45
|
import PropertyRelation from "./element/propertyRelation";
|
|
45
46
|
import DefinedAssertion from "./element/assertion/defined";
|
|
46
47
|
import TermSubstitution from "./element/substitution/term";
|
|
@@ -51,7 +52,8 @@ import ProcedureReference from "./element/procedureReference";
|
|
|
51
52
|
import ContainedAssertion from "./element/assertion/contained";
|
|
52
53
|
import SatisfiesAssertion from "./element/assertion/satisfies";
|
|
53
54
|
import VariableDeclaration from "./element/declaration/variable";
|
|
54
|
-
import
|
|
55
|
+
import BracketedCombinator from "./element/combinator/bracketed";
|
|
56
|
+
import BracketedConstructor from "./element/constructor/bracketed";
|
|
55
57
|
import SimpleTypeDeclaration from "./element/declaration/simpleType";
|
|
56
58
|
import StatementSubstitution from "./element/substitution/statement";
|
|
57
59
|
import ReferenceSubstitution from "./element/substitution/reference";
|
|
@@ -60,5 +62,3 @@ import TypePrefixDeclaration from "./element/declaration/typePrefix";
|
|
|
60
62
|
import ConstructorDeclaration from "./element/declaration/constructor";
|
|
61
63
|
import ComplexTypeDeclaration from "./element/declaration/complexType";
|
|
62
64
|
import MetavariableDeclaration from "./element/declaration/metavariable";
|
|
63
|
-
import BracketedConstructorTerm from "./element/term/constructor/bracketed";
|
|
64
|
-
import BracketedCombinatorStatement from "./element/statement/combinator/bracketed";
|
|
@@ -3,9 +3,12 @@
|
|
|
3
3
|
import { ruleFromBNF } from "../utilities/bnf";
|
|
4
4
|
|
|
5
5
|
const termPlaceholderBNF = ` _ ::= term... <END_OF_LINE> ; `,
|
|
6
|
+
stepPlaceholderBNF = ` _ ::= step... <END_OF_LINE> ; `,
|
|
6
7
|
variablePlaceholderBNF = ` _ ::= variable... <END_OF_LINE> ; `,
|
|
7
8
|
referencePlaceholderBNF = ` _ ::= reference... <END_OF_LINE> ; `,
|
|
8
9
|
statementPlaceholderBNF = ` _ ::= statement... <END_OF_LINE> ; `,
|
|
10
|
+
combinatorPlaceholderBNF = ` _ ::= combinator... <END_OF_LINE> ; `,
|
|
11
|
+
constructorPlaceholderBNF = ` _ ::= constructor... <END_OF_LINE> ; `,
|
|
9
12
|
equivalencePlaceholderBNF = ` _ ::= equivalence... <END_OF_LINE> ; `,
|
|
10
13
|
metavariablePlaceholderBNF = ` _ ::= metavariable... <END_OF_LINE> ; `,
|
|
11
14
|
termSubstitutionPlaceholderBNF = ` _ ::= termSubstitution... <END_OF_LINE> ; `,
|
|
@@ -13,9 +16,12 @@ const termPlaceholderBNF = ` _ ::= term... <END_OF_LINE> ; `,
|
|
|
13
16
|
statementSubstitutionPlaceholderBNF = ` _ ::= statementSubstitution... <END_OF_LINE> ; `,
|
|
14
17
|
referenceSubstitutionPlaceholderBNF = ` _ ::= referenceSubstitution... <END_OF_LINE> ; `,
|
|
15
18
|
termPlaceholderRule = ruleFromBNF(termPlaceholderBNF),
|
|
19
|
+
stepPlaceholderRule = ruleFromBNF(stepPlaceholderBNF),
|
|
16
20
|
variablePlaceholderRule = ruleFromBNF(variablePlaceholderBNF),
|
|
17
21
|
referencePlaceholderRule = ruleFromBNF(referencePlaceholderBNF),
|
|
18
22
|
statementPlaceholderRule = ruleFromBNF(statementPlaceholderBNF),
|
|
23
|
+
combinatorPlaceholderRule = ruleFromBNF(combinatorPlaceholderBNF),
|
|
24
|
+
constructorPlaceholderRule = ruleFromBNF(constructorPlaceholderBNF),
|
|
19
25
|
equivalencePlaceholderRule = ruleFromBNF(equivalencePlaceholderBNF),
|
|
20
26
|
metavariablePlaceholderRule = ruleFromBNF(metavariablePlaceholderBNF),
|
|
21
27
|
termSubstitutionPlaceholderRule = ruleFromBNF(termSubstitutionPlaceholderBNF),
|
|
@@ -25,12 +31,18 @@ const termPlaceholderBNF = ` _ ::= term... <END_OF_LINE> ; `,
|
|
|
25
31
|
|
|
26
32
|
export function instantiateTerm(string, context) { return instantiate(termPlaceholderRule, string, context); }
|
|
27
33
|
|
|
34
|
+
export function instantiateStep(string, context) { return instantiate(stepPlaceholderRule, string, context); }
|
|
35
|
+
|
|
28
36
|
export function instantiateVariable(string, context) { return instantiate(variablePlaceholderRule, string, context); }
|
|
29
37
|
|
|
30
38
|
export function instantiateReference(string, context) { return instantiate(referencePlaceholderRule, string, context); }
|
|
31
39
|
|
|
32
40
|
export function instantiateStatement(string, context) { return instantiate(statementPlaceholderRule, string, context); }
|
|
33
41
|
|
|
42
|
+
export function instantiateCombinator(string, context) { return instantiate(combinatorPlaceholderRule, string, context); }
|
|
43
|
+
|
|
44
|
+
export function instantiateConstructor(string, context) { return instantiate(constructorPlaceholderRule, string, context); }
|
|
45
|
+
|
|
34
46
|
export function instantiateEquivalence(string, context) { return instantiate(equivalencePlaceholderRule, string, context); }
|
|
35
47
|
|
|
36
48
|
export function instantiateMetavariable(string, context) { return instantiate(metavariablePlaceholderRule, string, context); }
|