occam-verify-cli 1.0.207 → 1.0.211

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.
Files changed (56) hide show
  1. package/lib/constants.js +1 -5
  2. package/lib/dom/assertion/satisfies.js +36 -54
  3. package/lib/dom/axiom.js +49 -25
  4. package/lib/dom/metavariable.js +4 -7
  5. package/lib/dom/signature.js +197 -0
  6. package/lib/dom/substitution/frame.js +216 -0
  7. package/lib/dom/substitution/reference.js +203 -0
  8. package/lib/dom/substitution/statement.js +297 -0
  9. package/lib/dom/substitution/term.js +237 -0
  10. package/lib/dom/substitution.js +214 -0
  11. package/lib/dom/topLevelAssertion.js +21 -10
  12. package/lib/dom/topLevelMetaAssertion.js +4 -4
  13. package/lib/dom/variable.js +9 -10
  14. package/lib/index.js +6 -1
  15. package/lib/mixins/step/unify.js +3 -4
  16. package/lib/node/assertion/satisfies.js +5 -5
  17. package/lib/node/signature.js +116 -0
  18. package/lib/node/topLevelAssertion.js +8 -18
  19. package/lib/nonTerminalNodeMap.js +3 -2
  20. package/lib/ruleNames.js +5 -1
  21. package/lib/substitutions.js +2 -14
  22. package/lib/unifier/metaLevel.js +2 -4
  23. package/lib/utilities/json.js +49 -12
  24. package/lib/utilities/node.js +36 -1
  25. package/lib/utilities/substitutions.js +2 -4
  26. package/package.json +1 -1
  27. package/src/constants.js +0 -1
  28. package/src/dom/assertion/satisfies.js +45 -72
  29. package/src/dom/axiom.js +59 -31
  30. package/src/dom/metavariable.js +6 -6
  31. package/src/dom/signature.js +145 -0
  32. package/src/{substitution → dom/substitution}/frame.js +6 -4
  33. package/src/{substitution → dom/substitution}/reference.js +6 -4
  34. package/src/{substitution → dom/substitution}/statement.js +8 -7
  35. package/src/{substitution → dom/substitution}/term.js +7 -6
  36. package/src/dom/topLevelAssertion.js +26 -11
  37. package/src/dom/topLevelMetaAssertion.js +2 -2
  38. package/src/dom/variable.js +8 -10
  39. package/src/index.js +5 -0
  40. package/src/mixins/step/unify.js +4 -3
  41. package/src/node/assertion/satisfies.js +5 -5
  42. package/src/node/signature.js +16 -0
  43. package/src/node/topLevelAssertion.js +8 -21
  44. package/src/nonTerminalNodeMap.js +4 -1
  45. package/src/ruleNames.js +1 -0
  46. package/src/substitutions.js +3 -15
  47. package/src/unifier/metaLevel.js +2 -3
  48. package/src/utilities/json.js +60 -13
  49. package/src/utilities/node.js +45 -0
  50. package/src/utilities/substitutions.js +2 -3
  51. package/lib/substitution/frame.js +0 -175
  52. package/lib/substitution/reference.js +0 -162
  53. package/lib/substitution/statement.js +0 -296
  54. package/lib/substitution/term.js +0 -196
  55. package/lib/substitution.js +0 -214
  56. /package/src/{substitution.js → dom/substitution.js} +0 -0
@@ -2,7 +2,6 @@
2
2
 
3
3
  import dom from "../../dom";
4
4
  import Substitutions from "../../substitutions";
5
- import StatementSubstitution from "../../substitution/statement";
6
5
 
7
6
  import { equalityFromStatement,
8
7
  judgementFromStatement,
@@ -48,7 +47,8 @@ function unifyAWithReference(statement, reference, substitutions, context) {
48
47
 
49
48
  context.trace(`Unifying the '${statementString}' statement with the '${referenceString}' reference...`);
50
49
 
51
- const metavariable = reference.getMetavariable(),
50
+ const { StatementSubstitution } = dom,
51
+ metavariable = reference.getMetavariable(),
52
52
  specificContext = context, ///
53
53
  statementSubstitution = StatementSubstitution.fromStatementAndMetavariable(statement, metavariable, context),
54
54
  substitution = statementSubstitution; ///
@@ -123,7 +123,8 @@ function unifyAWithAxiomLemmaTheoremOrConjecture(statement, reference, substitut
123
123
  const statementAndStepsUnified = axiomLemmaTheoremConjecture.unifyStatementAndStepsOrSubproofs(statement, stepsOrSubproofs, substitutions, context);
124
124
 
125
125
  if (statementAndStepsUnified) {
126
- const metavariable = reference.getMetavariable(),
126
+ const { StatementSubstitution } = dom,
127
+ metavariable = reference.getMetavariable(),
127
128
  specificContext = context, ///
128
129
  statementSubstitution = StatementSubstitution.fromStatementAndMetavariable(statement, metavariable, context),
129
130
  substitution = statementSubstitution; ///
@@ -2,14 +2,14 @@
2
2
 
3
3
  import NonTerminalNode from "../../node/nonTerminal";
4
4
 
5
- import { TERM_RULE_NAME, METAVARIABLE_RULE_NAME } from "../../ruleNames";
5
+ import { SIGNATURE_RULE_NAME, METAVARIABLE_RULE_NAME } from "../../ruleNames";
6
6
 
7
7
  export default class SatisfiesAssertionNode extends NonTerminalNode {
8
- getTermNodes() {
9
- const ruleName = TERM_RULE_NAME,
10
- termNodes = this.getNodesByRuleName(ruleName);
8
+ getSignatureNode() {
9
+ const ruleName = SIGNATURE_RULE_NAME,
10
+ signatureNode = this.getNodeByRuleName(ruleName);
11
11
 
12
- return termNodes;
12
+ return signatureNode;
13
13
  }
14
14
 
15
15
  getMetavariableNode() {
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+
3
+ import NonTerminalNode from "../node/nonTerminal";
4
+
5
+ import { TERM_RULE_NAME } from "../ruleNames";
6
+
7
+ export default class SignatureNode extends NonTerminalNode {
8
+ getTermNodes() {
9
+ const ruleName = TERM_RULE_NAME,
10
+ termNodes = this.getNodesByRuleName(ruleName);
11
+
12
+ return termNodes;
13
+ }
14
+
15
+ static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return NonTerminalNode.fromRuleNameChildNodesOpacityAndPrecedence(SignatureNode, ruleName, childNodes, opacity, precedence); }
16
+ }
@@ -2,33 +2,13 @@
2
2
 
3
3
  import NonTerminalNode from "../node/nonTerminal";
4
4
 
5
- import { SATISFIABLE } from "../constants";
6
5
  import { PROOF_RULE_NAME,
7
6
  DEDUCTION_RULE_NAME,
7
+ SIGNATURE_RULE_NAME,
8
8
  SUPPOSITION_RULE_NAME,
9
9
  PARENTHESISED_LABELS_RULE_NAME } from "../ruleNames";
10
10
 
11
11
  export default class TopLevelAssertionNode extends NonTerminalNode {
12
- isSatisfiable() {
13
- let satisfiable = false;
14
-
15
- this.someChildNode((childNode, index) => {
16
- const terminalNode = childNode,
17
- content = terminalNode.getContent(),
18
- contentSatisfiable = (content === SATISFIABLE);
19
-
20
- if (contentSatisfiable) {
21
- satisfiable = true;
22
- }
23
-
24
- if (index === 0) {
25
- return true;
26
- }
27
- });
28
-
29
- return satisfiable;
30
- }
31
-
32
12
  getLabelNodes() {
33
13
  let labelNodes = [];
34
14
 
@@ -55,6 +35,13 @@ export default class TopLevelAssertionNode extends NonTerminalNode {
55
35
  return deductionNode;
56
36
  }
57
37
 
38
+ getSignatureNode() {
39
+ const ruleName = SIGNATURE_RULE_NAME,
40
+ signatureNode = this.getNodeByRuleName(ruleName);
41
+
42
+ return signatureNode;
43
+ }
44
+
58
45
  getSuppositionNodes() {
59
46
  const ruleName = SUPPOSITION_RULE_NAME,
60
47
  suppositionNodes = this.getNodesByRuleName(ruleName);
@@ -26,6 +26,7 @@ import DeductionNode from "./node/deduction";
26
26
  import JudgementNode from "./node/judgement";
27
27
  import MetaLemmaNode from "./node/metaLemma";
28
28
  import ParameterNode from "./node/parameter";
29
+ import SignatureNode from "./node/signature";
29
30
  import DerivationNode from "./node/derivation";
30
31
  import CombinatorNode from "./node/combinator";
31
32
  import ConclusionNode from "./node/conclusion";
@@ -79,6 +80,7 @@ import { RULE_RULE_NAME,
79
80
  EQUALITY_RULE_NAME,
80
81
  VARIABLE_RULE_NAME,
81
82
  META_TYPE_RULE_NAME,
83
+ SIGNATURE_RULE_NAME,
82
84
  DEDUCTION_RULE_NAME,
83
85
  JUDGEMENT_RULE_NAME,
84
86
  PARAMETER_RULE_NAME,
@@ -138,9 +140,10 @@ const nonTerminalNodeMap = {
138
140
  [SUBPROOF_RULE_NAME]: SubproofNode,
139
141
  [EQUALITY_RULE_NAME]: EqualityNode,
140
142
  [VARIABLE_RULE_NAME]: VariableNode,
143
+ [META_TYPE_RULE_NAME]: MetaTypeNode,
144
+ [SIGNATURE_RULE_NAME]: SignatureNode,
141
145
  [REFERENCE_RULE_NAME]: ReferenceNode,
142
146
  [JUDGEMENT_RULE_NAME]: JudgementNode,
143
- [META_TYPE_RULE_NAME]: MetaTypeNode,
144
147
  [DEDUCTION_RULE_NAME]: DeductionNode,
145
148
  [PARAMETER_RULE_NAME]: ParameterNode,
146
149
  [STATEMENT_RULE_NAME]: StatementNode,
package/src/ruleNames.js CHANGED
@@ -19,6 +19,7 @@ export const PROPERTY_RULE_NAME = "property";
19
19
  export const EQUALITY_RULE_NAME = "equality";
20
20
  export const VARIABLE_RULE_NAME = "variable";
21
21
  export const SUBPROOF_RULE_NAME = "subproof";
22
+ export const SIGNATURE_RULE_NAME = "signature";
22
23
  export const META_TYPE_RULE_NAME = "metaType";
23
24
  export const PARAMETER_RULE_NAME = "parameter";
24
25
  export const DEDUCTION_RULE_NAME = "deduction";
@@ -202,7 +202,9 @@ export default class Substitutions {
202
202
 
203
203
  matchSubstitutions(substitutions) {
204
204
  const array = substitutions.getArray(),
205
- correlates = correlate(array, this.array, (substitutionA, substitutionB) => {
205
+ arrayA = array, ///
206
+ arrayB = this.array, ///
207
+ correlates = correlate(arrayA, arrayB, (substitutionA, substitutionB) => {
206
208
  const substitutionAMatchesSubstitutionB = substitutionA.match(substitutionB);
207
209
 
208
210
  if (substitutionAMatchesSubstitutionB) {
@@ -214,20 +216,6 @@ export default class Substitutions {
214
216
  return match;
215
217
  }
216
218
 
217
- matchTerms(terms) {
218
- const correlates = correlate(terms, this.array, (term, substitution) => {
219
- const substitutionTerm = substitution.getTerm(),
220
- substitutionTermEqualToTerm = substitutionTerm.isEqualTo(term);
221
-
222
- if (substitutionTermEqualToTerm) {
223
- return true;
224
- }
225
- }),
226
- termsMatch = correlates; ///
227
-
228
- return termsMatch;
229
- }
230
-
231
219
  clear() {
232
220
  clear(this.array);
233
221
 
@@ -2,8 +2,6 @@
2
2
 
3
3
  import dom from "../dom";
4
4
  import Unifier from "../unifier";
5
- import TermSubstitution from "../substitution/term";
6
- import FrameSubstitution from "../substitution/frame";
7
5
 
8
6
  import { nodeQuery } from "../utilities/query";
9
7
 
@@ -45,7 +43,8 @@ class MetaLevelUnifier extends Unifier {
45
43
 
46
44
  statementNode = generalStatementNode; ///
47
45
 
48
- const frameSubstitution = FrameSubstitution.fromStatementNode(statementNode, context),
46
+ const { TermSubstitution, FrameSubstitution } = dom,
47
+ frameSubstitution = FrameSubstitution.fromStatementNode(statementNode, context),
49
48
  termSubstitution = TermSubstitution.fromStatementNode(statementNode, context),
50
49
  metavariable = Metavariable.fromStatementNode(statementNode, context),
51
50
  substitution = (frameSubstitution || termSubstitution);
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
 
3
3
  import dom from "../dom";
4
- import StatementSubstitution from "../substitution/statement";
5
4
 
6
5
  export function termFromJSON(json, fileContext) {
7
6
  let { term } = json;
@@ -84,10 +83,19 @@ export function deductionFromJSON(json, fileContext) {
84
83
  return deduction;
85
84
  }
86
85
 
87
- export function satisfiableFromJSON(json, fileContext) {
88
- const { satisfiable } = json;
86
+ export function signatureFromJSON(json, fileContext) {
87
+ let { signature = null } = json;
89
88
 
90
- return satisfiable;
89
+ if (signature !== null) {
90
+ const { Signature } = dom,
91
+ signatureJSON = signature; ///
92
+
93
+ json = signatureJSON; ///
94
+
95
+ signature = Signature.fromJSON(json, fileContext);
96
+ }
97
+
98
+ return signature;
91
99
  }
92
100
 
93
101
  export function conclusionFromJSON(json, fileContext) {
@@ -144,15 +152,31 @@ export function typesFromJSON(json, types, fileContext) {
144
152
  });
145
153
  }
146
154
 
155
+ export function termsFromJSON(json, fileContext) {
156
+ let { terms } = json;
157
+
158
+ const { Term } = dom,
159
+ termsJSON = terms; ///
160
+
161
+ terms = termsJSON.map((termJSON) => {
162
+ const json = termJSON, ///
163
+ term = Term.fromJSON(json, fileContext);
164
+
165
+ return term;
166
+ });
167
+
168
+ return terms;
169
+ }
170
+
147
171
  export function rulesFromJSON(json, fileContext) {
148
172
  let { rules } = json;
149
173
 
150
174
  const { Rule } = dom,
151
- rulesJSON = rules; ///
175
+ rulesJSON = rules; ///
152
176
 
153
177
  rules = rulesJSON.map((ruleJSON) => {
154
178
  const json = ruleJSON, ///
155
- rule = Rule.fromJSON(json, fileContext);
179
+ rule = Rule.fromJSON(json, fileContext);
156
180
 
157
181
  return rule;
158
182
  });
@@ -383,7 +407,8 @@ export function suppositionsFromJSON(json, fileContext) {
383
407
  export function substitutionsFromJSON(json, fileContext) {
384
408
  let { substitutions = [] } = json; ///
385
409
 
386
- const substitutionsJSON = substitutions, ///
410
+ const { StatementSubstitution } = dom,
411
+ substitutionsJSON = substitutions, ///
387
412
  Substitution = StatementSubstitution; ///
388
413
 
389
414
  substitutions = substitutionsJSON.map((substitutionJSON) => {
@@ -461,18 +486,28 @@ export function statementToStatementJSON(statement) {
461
486
  return statementJSON;
462
487
  }
463
488
 
464
- export function conclusionToConclusionJSON(conclusion) {
465
- const conclusionJSON = conclusion.toJSON();
466
-
467
- return conclusionJSON;
468
- }
469
-
470
489
  export function deductionToDeductionJSON(deduction) {
471
490
  const deductionJSON = deduction.toJSON();
472
491
 
473
492
  return deductionJSON;
474
493
  }
475
494
 
495
+ export function signatureToSignatureJSON(signature) {
496
+ let signatureJSON = null;
497
+
498
+ if (signature !== null) {
499
+ signatureJSON = signature.toJSON();
500
+ }
501
+
502
+ return signatureJSON;
503
+ }
504
+
505
+ export function conclusionToConclusionJSON(conclusion) {
506
+ const conclusionJSON = conclusion.toJSON();
507
+
508
+ return conclusionJSON;
509
+ }
510
+
476
511
  export function metavariableToMetavariableJSON(metavariable) {
477
512
  const metavariableJSON = metavariable.toJSON();
478
513
 
@@ -501,6 +536,18 @@ export function typesToTypesJSON(types) {
501
536
  return typesJSON;
502
537
  }
503
538
 
539
+ export function termsToTermsJSON(terms) {
540
+ const termsJSON = terms.map((term) => {
541
+ const termJSON = term.toJSON();
542
+
543
+ term = termJSON; ///
544
+
545
+ return term;
546
+ });
547
+
548
+ return termsJSON;
549
+ }
550
+
504
551
  export function rulesToRulesJSON(rules) {
505
552
  const rulesJSON = rules.map((rule) => {
506
553
  const ruleJSON = rule.toJSON();
@@ -43,3 +43,48 @@ export function statementFromStatementNode(statementNode, context) {
43
43
 
44
44
  return statement;
45
45
  }
46
+
47
+ export function termsFromTermNodes(termNodes, context) {
48
+ const terms = termNodes.map((termNode) => {
49
+ const term = termFromTermNode(termNode, context);
50
+
51
+ return term;
52
+ });
53
+
54
+ return terms;
55
+ }
56
+
57
+ export function variableFromTerm(term, context) {
58
+ let variable = null;
59
+
60
+ const termNode = term.getNode(),
61
+ singularVariableNode = termNode.getSingularVariableNode();
62
+
63
+ if (singularVariableNode !== null) {
64
+ const { Variable } = dom,
65
+ variableNode = singularVariableNode; ///
66
+
67
+ variable = Variable.fromVariableNode(variableNode, context);
68
+
69
+ const type = term.getType();
70
+
71
+ variable.setType(type);
72
+ }
73
+
74
+ return variable;
75
+ }
76
+
77
+ export function stringFromTerms(terms) {
78
+ const termsString = terms.reduce((termsString, term) => {
79
+ const termString = term.getString();
80
+
81
+ termsString = (termsString !== null) ?
82
+ `${termsString}, ${termString}` :
83
+ termString;
84
+
85
+ return termsString;
86
+ }, null),
87
+ string = `[${termsString}]`;
88
+
89
+ return string;
90
+ }
@@ -1,8 +1,6 @@
1
1
  "use strict";
2
2
 
3
3
  import dom from "../dom";
4
- import TermSubstitution from "../substitution/term";
5
- import FrameSubstitution from "../substitution/frame";
6
4
 
7
5
  export function termFromTermAndSubstitutions(term, substitutions, context) {
8
6
  if (term !== null) {
@@ -57,7 +55,8 @@ export function statementFromStatementAndSubstitutions(statement, substitutions,
57
55
  if (metavariable !== null) {
58
56
  let substitution;
59
57
 
60
- const termSubstitution = TermSubstitution.fromStatementNode(statementNode, context),
58
+ const { TermSubstitution, FrameSubstitution } = dom,
59
+ termSubstitution = TermSubstitution.fromStatementNode(statementNode, context),
61
60
  frameSubstitution = FrameSubstitution.fromStatementNode(statementNode, context);
62
61
 
63
62
  substitution = (termSubstitution || frameSubstitution);
@@ -1,175 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "default", {
6
- enumerable: true,
7
- get: function() {
8
- return FrameSubstitution;
9
- }
10
- });
11
- var _dom = /*#__PURE__*/ _interop_require_default(require("../dom"));
12
- var _substitution = /*#__PURE__*/ _interop_require_default(require("../substitution"));
13
- var _frame = /*#__PURE__*/ _interop_require_default(require("../context/partial/substitution/frame"));
14
- function _assert_this_initialized(self) {
15
- if (self === void 0) {
16
- throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
17
- }
18
- return self;
19
- }
20
- function _call_super(_this, derived, args) {
21
- derived = _get_prototype_of(derived);
22
- return _possible_constructor_return(_this, _is_native_reflect_construct() ? Reflect.construct(derived, args || [], _get_prototype_of(_this).constructor) : derived.apply(_this, args));
23
- }
24
- function _class_call_check(instance, Constructor) {
25
- if (!(instance instanceof Constructor)) {
26
- throw new TypeError("Cannot call a class as a function");
27
- }
28
- }
29
- function _defineProperties(target, props) {
30
- for(var i = 0; i < props.length; i++){
31
- var descriptor = props[i];
32
- descriptor.enumerable = descriptor.enumerable || false;
33
- descriptor.configurable = true;
34
- if ("value" in descriptor) descriptor.writable = true;
35
- Object.defineProperty(target, descriptor.key, descriptor);
36
- }
37
- }
38
- function _create_class(Constructor, protoProps, staticProps) {
39
- if (protoProps) _defineProperties(Constructor.prototype, protoProps);
40
- if (staticProps) _defineProperties(Constructor, staticProps);
41
- return Constructor;
42
- }
43
- function _get_prototype_of(o) {
44
- _get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o) {
45
- return o.__proto__ || Object.getPrototypeOf(o);
46
- };
47
- return _get_prototype_of(o);
48
- }
49
- function _inherits(subClass, superClass) {
50
- if (typeof superClass !== "function" && superClass !== null) {
51
- throw new TypeError("Super expression must either be null or a function");
52
- }
53
- subClass.prototype = Object.create(superClass && superClass.prototype, {
54
- constructor: {
55
- value: subClass,
56
- writable: true,
57
- configurable: true
58
- }
59
- });
60
- if (superClass) _set_prototype_of(subClass, superClass);
61
- }
62
- function _interop_require_default(obj) {
63
- return obj && obj.__esModule ? obj : {
64
- default: obj
65
- };
66
- }
67
- function _possible_constructor_return(self, call) {
68
- if (call && (_type_of(call) === "object" || typeof call === "function")) {
69
- return call;
70
- }
71
- return _assert_this_initialized(self);
72
- }
73
- function _set_prototype_of(o, p) {
74
- _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {
75
- o.__proto__ = p;
76
- return o;
77
- };
78
- return _set_prototype_of(o, p);
79
- }
80
- function _type_of(obj) {
81
- "@swc/helpers - typeof";
82
- return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
83
- }
84
- function _is_native_reflect_construct() {
85
- try {
86
- var result = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));
87
- } catch (_) {}
88
- return (_is_native_reflect_construct = function() {
89
- return !!result;
90
- })();
91
- }
92
- var FrameSubstitution = /*#__PURE__*/ function(Substitution) {
93
- _inherits(FrameSubstitution, Substitution);
94
- function FrameSubstitution(string, node, tokens, frame, metavariable) {
95
- _class_call_check(this, FrameSubstitution);
96
- var _this;
97
- _this = _call_super(this, FrameSubstitution, [
98
- string,
99
- node,
100
- tokens
101
- ]);
102
- _this.frame = frame;
103
- _this.metavariable = metavariable;
104
- return _this;
105
- }
106
- _create_class(FrameSubstitution, [
107
- {
108
- key: "getFrame",
109
- value: function getFrame() {
110
- return this.frame;
111
- }
112
- },
113
- {
114
- key: "getMetavariable",
115
- value: function getMetavariable() {
116
- return this.metavariable;
117
- }
118
- },
119
- {
120
- key: "isFrameEqualTo",
121
- value: function isFrameEqualTo(frame) {
122
- return this.frame.isEqualTo(frame);
123
- }
124
- },
125
- {
126
- key: "isMetavariableEqualTo",
127
- value: function isMetavariableEqualTo(metavariable) {
128
- return this.metavariable.isEqualTo(metavariable);
129
- }
130
- },
131
- {
132
- key: "matchName",
133
- value: function matchName(name) {
134
- return this.metavariable.matchName(name);
135
- }
136
- },
137
- {
138
- key: "getReplacementNode",
139
- value: function getReplacementNode() {
140
- var frameNode = this.frame.getNode(), replacementNode = frameNode; ///
141
- return replacementNode;
142
- }
143
- }
144
- ], [
145
- {
146
- key: "fromStatementNode",
147
- value: function fromStatementNode(statementNode, context) {
148
- var frameSubstitution = null;
149
- var frameSubstitutionNode = statementNode.getFrameSubstitutionNode();
150
- if (frameSubstitutionNode !== null) {
151
- var lastFrameNode = frameSubstitutionNode.getLastFrameNode(), firstFrameNode = frameSubstitutionNode.getFirstFrameNode(), singularMetavariableNode = lastFrameNode.getSingularMetavariableNode();
152
- if (singularMetavariableNode !== null) {
153
- var Frame = _dom.default.Frame, Metavariable = _dom.default.Metavariable, frameNode = firstFrameNode, metavariableNode = singularMetavariableNode, frame = Frame.fromFrameNode(frameNode, context), metavariable = Metavariable.fromMetavariableNode(metavariableNode, context), node = frameSubstitutionNode, tokens = context.nodeAsTokens(node), string = stringFromFrameAndMetavariable(frame, metavariable);
154
- frameSubstitution = new FrameSubstitution(string, node, tokens, frame, metavariable);
155
- }
156
- }
157
- return frameSubstitution;
158
- }
159
- },
160
- {
161
- key: "fromFrameAndMetavariable",
162
- value: function fromFrameAndMetavariable(frame, metavariable, context) {
163
- var string = stringFromFrameAndMetavariable(frame, metavariable), lexer = context.getLexer(), parser = context.getParser(), frameSubstitutionPartialContext = _frame.default.fromStringLexerAndParser(string, lexer, parser), node = frameSubstitutionPartialContext.getNode(), tokens = frameSubstitutionPartialContext.getTokens(), frameSubstitution = new FrameSubstitution(string, node, tokens, frame, metavariable);
164
- return frameSubstitution;
165
- }
166
- }
167
- ]);
168
- return FrameSubstitution;
169
- }(_substitution.default);
170
- function stringFromFrameAndMetavariable(frame, metavariable) {
171
- var frameString = frame.getString(), metavariableString = metavariable.getString(), string = "[".concat(frameString, " for [").concat(metavariableString, "]]");
172
- return string;
173
- }
174
-
175
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdWJzdGl0dXRpb24vZnJhbWUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBkb20gZnJvbSBcIi4uL2RvbVwiO1xuaW1wb3J0IFN1YnN0aXR1dGlvbiBmcm9tIFwiLi4vc3Vic3RpdHV0aW9uXCI7XG5pbXBvcnQgRnJhbWVTdWJzdGl0dXRpb25QYXJ0aWFsQ29udGV4dCBmcm9tIFwiLi4vY29udGV4dC9wYXJ0aWFsL3N1YnN0aXR1dGlvbi9mcmFtZVwiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGcmFtZVN1YnN0aXR1dGlvbiBleHRlbmRzIFN1YnN0aXR1dGlvbiB7XG4gIGNvbnN0cnVjdG9yKHN0cmluZywgbm9kZSwgdG9rZW5zLCBmcmFtZSwgbWV0YXZhcmlhYmxlKSB7XG4gICAgc3VwZXIoc3RyaW5nLCBub2RlLCB0b2tlbnMpO1xuXG4gICAgdGhpcy5mcmFtZSA9IGZyYW1lO1xuICAgIHRoaXMubWV0YXZhcmlhYmxlID0gbWV0YXZhcmlhYmxlO1xuICB9XG5cbiAgZ2V0RnJhbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZnJhbWU7XG4gIH1cblxuICBnZXRNZXRhdmFyaWFibGUoKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0YXZhcmlhYmxlO1xuICB9XG5cbiAgaXNGcmFtZUVxdWFsVG8oZnJhbWUpIHsgcmV0dXJuIHRoaXMuZnJhbWUuaXNFcXVhbFRvKGZyYW1lKTsgfVxuXG4gIGlzTWV0YXZhcmlhYmxlRXF1YWxUbyhtZXRhdmFyaWFibGUpIHsgcmV0dXJuIHRoaXMubWV0YXZhcmlhYmxlLmlzRXF1YWxUbyhtZXRhdmFyaWFibGUpOyB9XG5cbiAgbWF0Y2hOYW1lKG5hbWUpIHsgcmV0dXJuIHRoaXMubWV0YXZhcmlhYmxlLm1hdGNoTmFtZShuYW1lKTsgfVxuXG4gIGdldFJlcGxhY2VtZW50Tm9kZSgpIHtcbiAgICBjb25zdCBmcmFtZU5vZGUgPSB0aGlzLmZyYW1lLmdldE5vZGUoKSxcbiAgICAgICAgICByZXBsYWNlbWVudE5vZGUgPSBmcmFtZU5vZGU7IC8vL1xuXG4gICAgcmV0dXJuIHJlcGxhY2VtZW50Tm9kZTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KSB7XG4gICAgbGV0IGZyYW1lU3Vic3RpdHV0aW9uID0gbnVsbDtcblxuICAgIGNvbnN0IGZyYW1lU3Vic3RpdHV0aW9uTm9kZSA9IHN0YXRlbWVudE5vZGUuZ2V0RnJhbWVTdWJzdGl0dXRpb25Ob2RlKCk7XG5cbiAgICBpZiAoZnJhbWVTdWJzdGl0dXRpb25Ob2RlICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBsYXN0RnJhbWVOb2RlID0gZnJhbWVTdWJzdGl0dXRpb25Ob2RlLmdldExhc3RGcmFtZU5vZGUoKSxcbiAgICAgICAgICAgIGZpcnN0RnJhbWVOb2RlID0gZnJhbWVTdWJzdGl0dXRpb25Ob2RlLmdldEZpcnN0RnJhbWVOb2RlKCksXG4gICAgICAgICAgICBzaW5ndWxhck1ldGF2YXJpYWJsZU5vZGUgPSBsYXN0RnJhbWVOb2RlLmdldFNpbmd1bGFyTWV0YXZhcmlhYmxlTm9kZSgpO1xuXG4gICAgICBpZiAoc2luZ3VsYXJNZXRhdmFyaWFibGVOb2RlICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IHsgRnJhbWUsIE1ldGF2YXJpYWJsZSB9ID0gZG9tLFxuICAgICAgICAgICAgICBmcmFtZU5vZGUgPSBmaXJzdEZyYW1lTm9kZSwgLy8vXG4gICAgICAgICAgICAgIG1ldGF2YXJpYWJsZU5vZGUgPSBzaW5ndWxhck1ldGF2YXJpYWJsZU5vZGUsICAvLy9cbiAgICAgICAgICAgICAgZnJhbWUgPSBGcmFtZS5mcm9tRnJhbWVOb2RlKGZyYW1lTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICAgIG1ldGF2YXJpYWJsZSA9IE1ldGF2YXJpYWJsZS5mcm9tTWV0YXZhcmlhYmxlTm9kZShtZXRhdmFyaWFibGVOb2RlLCBjb250ZXh0KSxcbiAgICAgICAgICAgICAgbm9kZSA9IGZyYW1lU3Vic3RpdHV0aW9uTm9kZSwgIC8vL1xuICAgICAgICAgICAgICB0b2tlbnMgPSBjb250ZXh0Lm5vZGVBc1Rva2Vucyhub2RlKSxcbiAgICAgICAgICAgICAgc3RyaW5nID0gc3RyaW5nRnJvbUZyYW1lQW5kTWV0YXZhcmlhYmxlKGZyYW1lLCBtZXRhdmFyaWFibGUpO1xuXG4gICAgICAgIGZyYW1lU3Vic3RpdHV0aW9uID0gbmV3IEZyYW1lU3Vic3RpdHV0aW9uKHN0cmluZywgbm9kZSwgdG9rZW5zLCBmcmFtZSwgbWV0YXZhcmlhYmxlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZnJhbWVTdWJzdGl0dXRpb247XG4gIH1cblxuICBzdGF0aWMgZnJvbUZyYW1lQW5kTWV0YXZhcmlhYmxlKGZyYW1lLCBtZXRhdmFyaWFibGUsIGNvbnRleHQpIHtcbiAgICBjb25zdCBzdHJpbmcgPSBzdHJpbmdGcm9tRnJhbWVBbmRNZXRhdmFyaWFibGUoZnJhbWUsIG1ldGF2YXJpYWJsZSksXG4gICAgICAgICAgbGV4ZXIgPSBjb250ZXh0LmdldExleGVyKCksXG4gICAgICAgICAgcGFyc2VyID0gY29udGV4dC5nZXRQYXJzZXIoKSxcbiAgICAgICAgICBmcmFtZVN1YnN0aXR1dGlvblBhcnRpYWxDb250ZXh0ID0gRnJhbWVTdWJzdGl0dXRpb25QYXJ0aWFsQ29udGV4dC5mcm9tU3RyaW5nTGV4ZXJBbmRQYXJzZXIoc3RyaW5nLCBsZXhlciwgcGFyc2VyKSxcbiAgICAgICAgICBub2RlID0gZnJhbWVTdWJzdGl0dXRpb25QYXJ0aWFsQ29udGV4dC5nZXROb2RlKCksXG4gICAgICAgICAgdG9rZW5zID0gZnJhbWVTdWJzdGl0dXRpb25QYXJ0aWFsQ29udGV4dC5nZXRUb2tlbnMoKSxcbiAgICAgICAgICBmcmFtZVN1YnN0aXR1dGlvbiA9IG5ldyBGcmFtZVN1YnN0aXR1dGlvbihzdHJpbmcsIG5vZGUsIHRva2VucywgZnJhbWUsIG1ldGF2YXJpYWJsZSk7XG5cbiAgICByZXR1cm4gZnJhbWVTdWJzdGl0dXRpb247XG4gIH1cbn1cblxuZnVuY3Rpb24gc3RyaW5nRnJvbUZyYW1lQW5kTWV0YXZhcmlhYmxlKGZyYW1lLCBtZXRhdmFyaWFibGUpIHtcbiAgY29uc3QgZnJhbWVTdHJpbmcgPSBmcmFtZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgbWV0YXZhcmlhYmxlU3RyaW5nID0gbWV0YXZhcmlhYmxlLmdldFN0cmluZygpLFxuICAgICAgICBzdHJpbmcgPSBgWyR7ZnJhbWVTdHJpbmd9IGZvciBbJHttZXRhdmFyaWFibGVTdHJpbmd9XV1gO1xuXG4gIHJldHVybiBzdHJpbmc7XG59XG4iXSwibmFtZXMiOlsiRnJhbWVTdWJzdGl0dXRpb24iLCJzdHJpbmciLCJub2RlIiwidG9rZW5zIiwiZnJhbWUiLCJtZXRhdmFyaWFibGUiLCJnZXRGcmFtZSIsImdldE1ldGF2YXJpYWJsZSIsImlzRnJhbWVFcXVhbFRvIiwiaXNFcXVhbFRvIiwiaXNNZXRhdmFyaWFibGVFcXVhbFRvIiwibWF0Y2hOYW1lIiwibmFtZSIsImdldFJlcGxhY2VtZW50Tm9kZSIsImZyYW1lTm9kZSIsImdldE5vZGUiLCJyZXBsYWNlbWVudE5vZGUiLCJmcm9tU3RhdGVtZW50Tm9kZSIsInN0YXRlbWVudE5vZGUiLCJjb250ZXh0IiwiZnJhbWVTdWJzdGl0dXRpb24iLCJmcmFtZVN1YnN0aXR1dGlvbk5vZGUiLCJnZXRGcmFtZVN1YnN0aXR1dGlvbk5vZGUiLCJsYXN0RnJhbWVOb2RlIiwiZ2V0TGFzdEZyYW1lTm9kZSIsImZpcnN0RnJhbWVOb2RlIiwiZ2V0Rmlyc3RGcmFtZU5vZGUiLCJzaW5ndWxhck1ldGF2YXJpYWJsZU5vZGUiLCJnZXRTaW5ndWxhck1ldGF2YXJpYWJsZU5vZGUiLCJGcmFtZSIsImRvbSIsIk1ldGF2YXJpYWJsZSIsIm1ldGF2YXJpYWJsZU5vZGUiLCJmcm9tRnJhbWVOb2RlIiwiZnJvbU1ldGF2YXJpYWJsZU5vZGUiLCJub2RlQXNUb2tlbnMiLCJzdHJpbmdGcm9tRnJhbWVBbmRNZXRhdmFyaWFibGUiLCJmcm9tRnJhbWVBbmRNZXRhdmFyaWFibGUiLCJsZXhlciIsImdldExleGVyIiwicGFyc2VyIiwiZ2V0UGFyc2VyIiwiZnJhbWVTdWJzdGl0dXRpb25QYXJ0aWFsQ29udGV4dCIsIkZyYW1lU3Vic3RpdHV0aW9uUGFydGlhbENvbnRleHQiLCJmcm9tU3RyaW5nTGV4ZXJBbmRQYXJzZXIiLCJnZXRUb2tlbnMiLCJTdWJzdGl0dXRpb24iLCJmcmFtZVN0cmluZyIsImdldFN0cmluZyIsIm1ldGF2YXJpYWJsZVN0cmluZyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7ZUFNcUJBOzs7MERBSkw7bUVBQ1M7NERBQ21COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRTdCLElBQUEsQUFBTUEsa0NBQU47Y0FBTUE7YUFBQUEsa0JBQ1BDLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxNQUFNLEVBQUVDLEtBQUssRUFBRUMsWUFBWTtnQ0FEbENMOztnQkFFakIsa0JBRmlCQTtZQUVYQztZQUFRQztZQUFNQzs7UUFFcEIsTUFBS0MsS0FBSyxHQUFHQTtRQUNiLE1BQUtDLFlBQVksR0FBR0E7OztrQkFMSEw7O1lBUW5CTSxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsT0FBTyxJQUFJLENBQUNGLEtBQUs7WUFDbkI7OztZQUVBRyxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsT0FBTyxJQUFJLENBQUNGLFlBQVk7WUFDMUI7OztZQUVBRyxLQUFBQTttQkFBQUEsU0FBQUEsZUFBZUosS0FBSztnQkFBSSxPQUFPLElBQUksQ0FBQ0EsS0FBSyxDQUFDSyxTQUFTLENBQUNMO1lBQVE7OztZQUU1RE0sS0FBQUE7bUJBQUFBLFNBQUFBLHNCQUFzQkwsWUFBWTtnQkFBSSxPQUFPLElBQUksQ0FBQ0EsWUFBWSxDQUFDSSxTQUFTLENBQUNKO1lBQWU7OztZQUV4Rk0sS0FBQUE7bUJBQUFBLFNBQUFBLFVBQVVDLElBQUk7Z0JBQUksT0FBTyxJQUFJLENBQUNQLFlBQVksQ0FBQ00sU0FBUyxDQUFDQztZQUFPOzs7WUFFNURDLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxJQUFNQyxZQUFZLElBQUksQ0FBQ1YsS0FBSyxDQUFDVyxPQUFPLElBQzlCQyxrQkFBa0JGLFdBQVcsR0FBRztnQkFFdEMsT0FBT0U7WUFDVDs7OztZQUVPQyxLQUFBQTttQkFBUCxTQUFPQSxrQkFBa0JDLGFBQWEsRUFBRUMsT0FBTztnQkFDN0MsSUFBSUMsb0JBQW9CO2dCQUV4QixJQUFNQyx3QkFBd0JILGNBQWNJLHdCQUF3QjtnQkFFcEUsSUFBSUQsMEJBQTBCLE1BQU07b0JBQ2xDLElBQU1FLGdCQUFnQkYsc0JBQXNCRyxnQkFBZ0IsSUFDdERDLGlCQUFpQkosc0JBQXNCSyxpQkFBaUIsSUFDeERDLDJCQUEyQkosY0FBY0ssMkJBQTJCO29CQUUxRSxJQUFJRCw2QkFBNkIsTUFBTTt3QkFDckMsSUFBUUUsUUFBd0JDLFlBQUcsQ0FBM0JELE9BQU9FLGVBQWlCRCxZQUFHLENBQXBCQyxjQUNUakIsWUFBWVcsZ0JBQ1pPLG1CQUFtQkwsMEJBQ25CdkIsUUFBUXlCLE1BQU1JLGFBQWEsQ0FBQ25CLFdBQVdLLFVBQ3ZDZCxlQUFlMEIsYUFBYUcsb0JBQW9CLENBQUNGLGtCQUFrQmIsVUFDbkVqQixPQUFPbUIsdUJBQ1BsQixTQUFTZ0IsUUFBUWdCLFlBQVksQ0FBQ2pDLE9BQzlCRCxTQUFTbUMsK0JBQStCaEMsT0FBT0M7d0JBRXJEZSxvQkFBb0IsSUFqRFBwQixrQkFpRDZCQyxRQUFRQyxNQUFNQyxRQUFRQyxPQUFPQztvQkFDekU7Z0JBQ0Y7Z0JBRUEsT0FBT2U7WUFDVDs7O1lBRU9pQixLQUFBQTttQkFBUCxTQUFPQSx5QkFBeUJqQyxLQUFLLEVBQUVDLFlBQVksRUFBRWMsT0FBTztnQkFDMUQsSUFBTWxCLFNBQVNtQywrQkFBK0JoQyxPQUFPQyxlQUMvQ2lDLFFBQVFuQixRQUFRb0IsUUFBUSxJQUN4QkMsU0FBU3JCLFFBQVFzQixTQUFTLElBQzFCQyxrQ0FBa0NDLGNBQStCLENBQUNDLHdCQUF3QixDQUFDM0MsUUFBUXFDLE9BQU9FLFNBQzFHdEMsT0FBT3dDLGdDQUFnQzNCLE9BQU8sSUFDOUNaLFNBQVN1QyxnQ0FBZ0NHLFNBQVMsSUFDbER6QixvQkFBb0IsSUEvRFRwQixrQkErRCtCQyxRQUFRQyxNQUFNQyxRQUFRQyxPQUFPQztnQkFFN0UsT0FBT2U7WUFDVDs7O1dBbEVtQnBCO0VBQTBCOEMscUJBQVk7QUFxRTNELFNBQVNWLCtCQUErQmhDLEtBQUssRUFBRUMsWUFBWTtJQUN6RCxJQUFNMEMsY0FBYzNDLE1BQU00QyxTQUFTLElBQzdCQyxxQkFBcUI1QyxhQUFhMkMsU0FBUyxJQUMzQy9DLFNBQVMsQUFBQyxJQUF1QmdELE9BQXBCRixhQUFZLFVBQTJCLE9BQW5CRSxvQkFBbUI7SUFFMUQsT0FBT2hEO0FBQ1QifQ==