occam-verify-cli 1.0.776 → 1.0.785

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 (67) hide show
  1. package/lib/context/branching.js +1 -1
  2. package/lib/context/ephemeral.js +22 -11
  3. package/lib/context/file/nominal.js +4 -4
  4. package/lib/context/nested.js +5 -1
  5. package/lib/context/proof.js +74 -59
  6. package/lib/context.js +20 -20
  7. package/lib/element/assertion/contained.js +9 -3
  8. package/lib/element/assertion/defined.js +28 -22
  9. package/lib/element/assertion/property.js +5 -1
  10. package/lib/element/assertion/satisfies.js +5 -1
  11. package/lib/element/assertion/subproof.js +6 -1
  12. package/lib/element/assertion/type.js +6 -2
  13. package/lib/element/assumption.js +47 -20
  14. package/lib/element/equivalences.js +4 -2
  15. package/lib/element/frame.js +17 -41
  16. package/lib/element/judgement.js +42 -6
  17. package/lib/element/metavariable.js +15 -11
  18. package/lib/element/proofAssertion/step.js +44 -4
  19. package/lib/element/topLevelMetaAssertion.js +9 -9
  20. package/lib/nonTerminalNodeMap.js +1 -3
  21. package/lib/preamble.js +1 -2
  22. package/lib/process/instantiate.js +2 -8
  23. package/lib/process/unify.js +72 -5
  24. package/lib/ruleNames.js +1 -5
  25. package/lib/utilities/context.js +30 -10
  26. package/lib/utilities/element.js +18 -41
  27. package/lib/utilities/json.js +1 -23
  28. package/lib/utilities/string.js +8 -19
  29. package/lib/utilities/unification.js +13 -11
  30. package/lib/utilities/validation.js +17 -10
  31. package/package.json +4 -4
  32. package/src/context/branching.js +1 -1
  33. package/src/context/ephemeral.js +26 -10
  34. package/src/context/file/nominal.js +3 -3
  35. package/src/context/nested.js +6 -0
  36. package/src/context/proof.js +93 -73
  37. package/src/context.js +27 -26
  38. package/src/element/assertion/contained.js +16 -3
  39. package/src/element/assertion/defined.js +32 -23
  40. package/src/element/assertion/property.js +8 -1
  41. package/src/element/assertion/satisfies.js +8 -1
  42. package/src/element/assertion/subproof.js +8 -0
  43. package/src/element/assertion/type.js +8 -1
  44. package/src/element/assumption.js +72 -31
  45. package/src/element/equivalences.js +5 -2
  46. package/src/element/frame.js +29 -66
  47. package/src/element/judgement.js +56 -6
  48. package/src/element/metavariable.js +22 -18
  49. package/src/element/proofAssertion/step.js +4 -3
  50. package/src/element/topLevelMetaAssertion.js +13 -13
  51. package/src/nonTerminalNodeMap.js +0 -3
  52. package/src/preamble.js +0 -1
  53. package/src/process/instantiate.js +2 -6
  54. package/src/process/unify.js +117 -7
  55. package/src/ruleNames.js +0 -1
  56. package/src/utilities/context.js +43 -11
  57. package/src/utilities/element.js +26 -56
  58. package/src/utilities/json.js +0 -26
  59. package/src/utilities/string.js +8 -22
  60. package/src/utilities/unification.js +17 -16
  61. package/src/utilities/validation.js +24 -16
  62. package/lib/element/substitution/metaLevel.js +0 -148
  63. package/lib/node/substitution/metaLevel.js +0 -40
  64. package/lib/utilities/statement.js +0 -71
  65. package/src/element/substitution/metaLevel.js +0 -212
  66. package/src/node/substitution/metaLevel.js +0 -37
  67. package/src/utilities/statement.js +0 -66
@@ -1,148 +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 _default;
9
- }
10
- });
11
- const _substitution = /*#__PURE__*/ _interop_require_default(require("../substitution"));
12
- const _elements = require("../../elements");
13
- const _instantiate = require("../../process/instantiate");
14
- const _element = require("../../utilities/element");
15
- const _string = require("../../utilities/string");
16
- const _context = require("../../utilities/context");
17
- function _interop_require_default(obj) {
18
- return obj && obj.__esModule ? obj : {
19
- default: obj
20
- };
21
- }
22
- const _default = (0, _elements.define)(class MetaLevelSubstitution extends _substitution.default {
23
- constructor(context, string, node, targetReference, replacementStatement){
24
- super(context, string, node);
25
- this.targetReference = targetReference;
26
- this.replacementStatement = replacementStatement;
27
- }
28
- getTargetReference() {
29
- return this.targetReference;
30
- }
31
- getReplacementStatement() {
32
- return this.replacementStatement;
33
- }
34
- getMetaLevelSubstitutionNode() {
35
- const node = this.getNode(), metaLevelSubstitutionNode = node; ///
36
- return metaLevelSubstitutionNode;
37
- }
38
- getTargetNode() {
39
- const targetReferenceNode = this.targetReference.getNode(), tergetNode = targetReferenceNode; ///
40
- return tergetNode;
41
- }
42
- getReplacementNode() {
43
- const replacementStatementNode = this.replacementStatement.getNode(), replacementNode = replacementStatementNode; ///
44
- return replacementNode;
45
- }
46
- matchMetaLevelSubstitutionNode(metaLevelSubstitutionNode) {
47
- const node = metaLevelSubstitutionNode, nodeMatches = this.matchNode(node), metaLevelSubstitutionNodeMatches = nodeMatches; ///
48
- return metaLevelSubstitutionNodeMatches;
49
- }
50
- findValidMetaLevelSubstiution(context) {
51
- const metaLevelSubstitutionNode = this.getMetaLevelSubstitutionNode(), metaLevelSubstitution = context.findMetaLevelSubstitutionByMetaLevelSubstitutionNode(metaLevelSubstitutionNode), validMetaLevelSubstitution = metaLevelSubstitution; ///
52
- return validMetaLevelSubstitution;
53
- }
54
- validate(generalContext, specificContext) {
55
- let metaLevelSubstitution = null;
56
- const context = specificContext, metaLevelSubstitutionString = this.getString(); ///
57
- context.trace(`Validating the '${metaLevelSubstitutionString}' meta-level substitution...`);
58
- const validMetaLevelSubstitution = this.findValidMetaLevelSubstiution(context);
59
- if (validMetaLevelSubstitution) {
60
- metaLevelSubstitution = validMetaLevelSubstitution; ///
61
- context.debug(`...the '${metaLevelSubstitutionString}' meta-level substitution is already valid.`);
62
- } else {
63
- let validates = false;
64
- const targetReferenceValidates = this.validateTargetReference(generalContext, specificContext);
65
- if (targetReferenceValidates) {
66
- const replacementStatementValidates = this.validateReplacementStatement(generalContext, specificContext);
67
- if (replacementStatementValidates) {
68
- validates = true;
69
- }
70
- }
71
- if (validates) {
72
- metaLevelSubstitution = this; ///
73
- context.addMetaLevelSubstitution(metaLevelSubstitution);
74
- context.debug(`...validated the '${metaLevelSubstitutionString}' meta-level substitution.`);
75
- }
76
- }
77
- return metaLevelSubstitution;
78
- }
79
- validateTargetReference(generalContext, specificContext) {
80
- let targetReferenceValidates = false;
81
- const context = generalContext, targetReferenceString = this.targetReference.getString(), metaLevelSubstitutionString = this.getString(); ///
82
- context.trace(`Validating the '${metaLevelSubstitutionString}' meta-level substitution's '${targetReferenceString}' target reference...`);
83
- const targetReference = this.targetReference.validate(context);
84
- if (targetReference !== null) {
85
- targetReferenceValidates = true;
86
- }
87
- if (targetReferenceValidates) {
88
- context.debug(`...validated the '${metaLevelSubstitutionString}' meta-level substitution's '${targetReferenceString}' target reference...`);
89
- }
90
- return targetReferenceValidates;
91
- }
92
- validateReplacementStatement(generalContext, specificContext) {
93
- let replacementStatementValidates = false;
94
- const context = this.getContext(), replacementStatementString = this.replacementStatement.getString(), metaLevelSubstitutionString = this.getString(); ///
95
- context.trace(`Validating the '${metaLevelSubstitutionString}' meta-level substitution's '${replacementStatementString}' replacement statement...`);
96
- (0, _context.descend)((context)=>{
97
- const replacementStatement = this.replacementStatement.validate(context);
98
- if (replacementStatement !== null) {
99
- replacementStatementValidates = true;
100
- }
101
- }, context);
102
- if (replacementStatementValidates) {
103
- context.debug(`...validated the '${metaLevelSubstitutionString}' meta-level substitution's '${replacementStatementString}' replacement statement.`);
104
- }
105
- return replacementStatementValidates;
106
- }
107
- toJSON() {
108
- const context = this.getContext();
109
- return (0, _context.serialise)((context)=>{
110
- const string = this.getString(), json = {
111
- context,
112
- string
113
- };
114
- return json;
115
- }, context);
116
- }
117
- static name = "MetaLevelSubstitution";
118
- static fromJSON(json, context) {
119
- let metaLevelSubstitution;
120
- (0, _context.unserialise)((json, context)=>{
121
- (0, _context.instantiate)((context)=>{
122
- const { string } = json, metaLevelSubstitutionNode = (0, _instantiate.instantiateMetaLevelSubstitution)(string, context), node = metaLevelSubstitutionNode, targetReference = targetReferenceFromMetaLevelSubstitutionNode(metaLevelSubstitutionNode, context), replacementStatement = replacementStatementFromMetaLevelSubstitutionNode(metaLevelSubstitutionNode, context);
123
- metaLevelSubstitution = new MetaLevelSubstitution(context, string, node, targetReference, replacementStatement);
124
- }, context);
125
- }, json, context);
126
- return metaLevelSubstitution;
127
- }
128
- static fromStatementAndReference(statement, reference, context) {
129
- let metaLevelSubstitution;
130
- (0, _context.simplify)((context)=>{
131
- (0, _context.instantiate)((context)=>{
132
- const metaLevelSubstitutionString = (0, _string.metaLevelSubstitutionStringFromStatementAndReference)(statement, reference), string = metaLevelSubstitutionString, metaLevelSubstitutionNode = (0, _instantiate.instantiateMetaLevelSubstitution)(string, context);
133
- metaLevelSubstitution = (0, _element.metaLevelSubstitutionFromMetaLevelSubstitutionNode)(metaLevelSubstitutionNode, context);
134
- }, context);
135
- }, context);
136
- return metaLevelSubstitution;
137
- }
138
- });
139
- function targetReferenceFromMetaLevelSubstitutionNode(metaLevelSubstitutionNode, context) {
140
- const targetReferenceNode = metaLevelSubstitutionNode.getTargetReferenceNode(), targetReference = context.findReferenceByReferenceNode(targetReferenceNode);
141
- return targetReference;
142
- }
143
- function replacementStatementFromMetaLevelSubstitutionNode(metaLevelSubstitutionNode, context) {
144
- const replacementStatementNode = metaLevelSubstitutionNode.getReplacementStatementNode(), replacementStatement = context.findStatementByStatementNode(replacementStatementNode);
145
- return replacementStatement;
146
- }
147
-
148
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9lbGVtZW50L3N1YnN0aXR1dGlvbi9tZXRhTGV2ZWwuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBTdWJzdGl0dXRpb24gZnJvbSBcIi4uL3N1YnN0aXR1dGlvblwiO1xuXG5pbXBvcnQgeyBkZWZpbmUgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHNcIjtcbmltcG9ydCB7IGluc3RhbnRpYXRlTWV0YUxldmVsU3Vic3RpdHV0aW9uIH0gZnJvbSBcIi4uLy4uL3Byb2Nlc3MvaW5zdGFudGlhdGVcIjtcbmltcG9ydCB7IG1ldGFMZXZlbFN1YnN0aXR1dGlvbkZyb21NZXRhTGV2ZWxTdWJzdGl0dXRpb25Ob2RlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5pbXBvcnQgeyBtZXRhTGV2ZWxTdWJzdGl0dXRpb25TdHJpbmdGcm9tU3RhdGVtZW50QW5kUmVmZXJlbmNlIH0gZnJvbSBcIi4uLy4uL3V0aWxpdGllcy9zdHJpbmdcIjtcbmltcG9ydCB7IGRlc2NlbmQsIHNpbXBsaWZ5LCBzZXJpYWxpc2UsIHVuc2VyaWFsaXNlLCBpbnN0YW50aWF0ZSB9IGZyb20gXCIuLi8uLi91dGlsaXRpZXMvY29udGV4dFwiO1xuXG5leHBvcnQgZGVmYXVsdCBkZWZpbmUoY2xhc3MgTWV0YUxldmVsU3Vic3RpdHV0aW9uIGV4dGVuZHMgU3Vic3RpdHV0aW9uIHtcbiAgY29uc3RydWN0b3IoY29udGV4dCwgc3RyaW5nLCBub2RlLCB0YXJnZXRSZWZlcmVuY2UsIHJlcGxhY2VtZW50U3RhdGVtZW50KSB7XG4gICAgc3VwZXIoY29udGV4dCwgc3RyaW5nLCBub2RlKTtcblxuICAgIHRoaXMudGFyZ2V0UmVmZXJlbmNlID0gdGFyZ2V0UmVmZXJlbmNlO1xuICAgIHRoaXMucmVwbGFjZW1lbnRTdGF0ZW1lbnQgPSByZXBsYWNlbWVudFN0YXRlbWVudDtcbiAgfVxuXG4gIGdldFRhcmdldFJlZmVyZW5jZSgpIHtcbiAgICByZXR1cm4gdGhpcy50YXJnZXRSZWZlcmVuY2U7XG4gIH1cblxuICBnZXRSZXBsYWNlbWVudFN0YXRlbWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5yZXBsYWNlbWVudFN0YXRlbWVudDtcbiAgfVxuXG4gIGdldE1ldGFMZXZlbFN1YnN0aXR1dGlvbk5vZGUoKSB7XG4gICAgY29uc3Qgbm9kZSA9IHRoaXMuZ2V0Tm9kZSgpLFxuICAgICAgICAgIG1ldGFMZXZlbFN1YnN0aXR1dGlvbk5vZGUgPSBub2RlOyAvLy9cblxuICAgIHJldHVybiBtZXRhTGV2ZWxTdWJzdGl0dXRpb25Ob2RlO1xuICB9XG5cbiAgZ2V0VGFyZ2V0Tm9kZSgpIHtcbiAgICBjb25zdCB0YXJnZXRSZWZlcmVuY2VOb2RlID0gdGhpcy50YXJnZXRSZWZlcmVuY2UuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHRlcmdldE5vZGUgPSB0YXJnZXRSZWZlcmVuY2VOb2RlOyAvLy9cblxuICAgIHJldHVybiB0ZXJnZXROb2RlO1xuICB9XG5cbiAgZ2V0UmVwbGFjZW1lbnROb2RlKCkge1xuICAgIGNvbnN0IHJlcGxhY2VtZW50U3RhdGVtZW50Tm9kZSA9IHRoaXMucmVwbGFjZW1lbnRTdGF0ZW1lbnQuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHJlcGxhY2VtZW50Tm9kZSA9IHJlcGxhY2VtZW50U3RhdGVtZW50Tm9kZTsgLy8vXG5cbiAgICByZXR1cm4gcmVwbGFjZW1lbnROb2RlO1xuICB9XG5cbiAgbWF0Y2hNZXRhTGV2ZWxTdWJzdGl0dXRpb25Ob2RlKG1ldGFMZXZlbFN1YnN0aXR1dGlvbk5vZGUpIHtcbiAgICBjb25zdCBub2RlID0gbWV0YUxldmVsU3Vic3RpdHV0aW9uTm9kZSwgLy8vXG4gICAgICAgICAgbm9kZU1hdGNoZXMgPSB0aGlzLm1hdGNoTm9kZShub2RlKSxcbiAgICAgICAgICBtZXRhTGV2ZWxTdWJzdGl0dXRpb25Ob2RlTWF0Y2hlcyA9IG5vZGVNYXRjaGVzOyAvLy9cblxuICAgIHJldHVybiBtZXRhTGV2ZWxTdWJzdGl0dXRpb25Ob2RlTWF0Y2hlcztcbiAgfVxuXG4gIGZpbmRWYWxpZE1ldGFMZXZlbFN1YnN0aXV0aW9uKGNvbnRleHQpIHtcbiAgICBjb25zdCBtZXRhTGV2ZWxTdWJzdGl0dXRpb25Ob2RlID0gdGhpcy5nZXRNZXRhTGV2ZWxTdWJzdGl0dXRpb25Ob2RlKCksXG4gICAgICAgICAgbWV0YUxldmVsU3Vic3RpdHV0aW9uID0gY29udGV4dC5maW5kTWV0YUxldmVsU3Vic3RpdHV0aW9uQnlNZXRhTGV2ZWxTdWJzdGl0dXRpb25Ob2RlKG1ldGFMZXZlbFN1YnN0aXR1dGlvbk5vZGUpLFxuICAgICAgICAgIHZhbGlkTWV0YUxldmVsU3Vic3RpdHV0aW9uID0gbWV0YUxldmVsU3Vic3RpdHV0aW9uOyAgLy8vXG5cbiAgICByZXR1cm4gdmFsaWRNZXRhTGV2ZWxTdWJzdGl0dXRpb247XG4gIH1cblxuICB2YWxpZGF0ZShnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KSB7XG4gICAgbGV0IG1ldGFMZXZlbFN1YnN0aXR1dGlvbiA9IG51bGw7XG5cbiAgICBjb25zdCBjb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0LCAgLy8vXG4gICAgICAgICAgbWV0YUxldmVsU3Vic3RpdHV0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7bWV0YUxldmVsU3Vic3RpdHV0aW9uU3RyaW5nfScgbWV0YS1sZXZlbCBzdWJzdGl0dXRpb24uLi5gKTtcblxuICAgIGNvbnN0IHZhbGlkTWV0YUxldmVsU3Vic3RpdHV0aW9uID0gdGhpcy5maW5kVmFsaWRNZXRhTGV2ZWxTdWJzdGl1dGlvbihjb250ZXh0KTtcblxuICAgIGlmICh2YWxpZE1ldGFMZXZlbFN1YnN0aXR1dGlvbikge1xuICAgICAgbWV0YUxldmVsU3Vic3RpdHV0aW9uID0gdmFsaWRNZXRhTGV2ZWxTdWJzdGl0dXRpb247ICAvLy9cblxuICAgICAgY29udGV4dC5kZWJ1ZyhgLi4udGhlICcke21ldGFMZXZlbFN1YnN0aXR1dGlvblN0cmluZ30nIG1ldGEtbGV2ZWwgc3Vic3RpdHV0aW9uIGlzIGFscmVhZHkgdmFsaWQuYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCB2YWxpZGF0ZXMgPSBmYWxzZTtcblxuICAgICAgY29uc3QgdGFyZ2V0UmVmZXJlbmNlVmFsaWRhdGVzID0gdGhpcy52YWxpZGF0ZVRhcmdldFJlZmVyZW5jZShnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTtcblxuICAgICAgaWYgKHRhcmdldFJlZmVyZW5jZVZhbGlkYXRlcykge1xuICAgICAgICBjb25zdCByZXBsYWNlbWVudFN0YXRlbWVudFZhbGlkYXRlcyA9IHRoaXMudmFsaWRhdGVSZXBsYWNlbWVudFN0YXRlbWVudChnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KTtcblxuICAgICAgICBpZiAocmVwbGFjZW1lbnRTdGF0ZW1lbnRWYWxpZGF0ZXMpIHtcbiAgICAgICAgICB2YWxpZGF0ZXMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICh2YWxpZGF0ZXMpIHtcbiAgICAgICAgbWV0YUxldmVsU3Vic3RpdHV0aW9uID0gdGhpczsgLy8vXG5cbiAgICAgICAgY29udGV4dC5hZGRNZXRhTGV2ZWxTdWJzdGl0dXRpb24obWV0YUxldmVsU3Vic3RpdHV0aW9uKTtcblxuICAgICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke21ldGFMZXZlbFN1YnN0aXR1dGlvblN0cmluZ30nIG1ldGEtbGV2ZWwgc3Vic3RpdHV0aW9uLmApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBtZXRhTGV2ZWxTdWJzdGl0dXRpb247XG4gIH1cblxuICB2YWxpZGF0ZVRhcmdldFJlZmVyZW5jZShnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KSB7XG4gICAgbGV0IHRhcmdldFJlZmVyZW5jZVZhbGlkYXRlcyA9IGZhbHNlO1xuXG4gICAgY29uc3QgY29udGV4dCA9IGdlbmVyYWxDb250ZXh0LCAvLy9cbiAgICAgICAgICB0YXJnZXRSZWZlcmVuY2VTdHJpbmcgPSB0aGlzLnRhcmdldFJlZmVyZW5jZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBtZXRhTGV2ZWxTdWJzdGl0dXRpb25TdHJpbmcgPSB0aGlzLmdldFN0cmluZygpOyAgLy8vXG5cbiAgICBjb250ZXh0LnRyYWNlKGBWYWxpZGF0aW5nIHRoZSAnJHttZXRhTGV2ZWxTdWJzdGl0dXRpb25TdHJpbmd9JyBtZXRhLWxldmVsIHN1YnN0aXR1dGlvbidzICcke3RhcmdldFJlZmVyZW5jZVN0cmluZ30nIHRhcmdldCByZWZlcmVuY2UuLi5gKTtcblxuICAgIGNvbnN0IHRhcmdldFJlZmVyZW5jZSA9IHRoaXMudGFyZ2V0UmVmZXJlbmNlLnZhbGlkYXRlKGNvbnRleHQpO1xuXG4gICAgaWYgKHRhcmdldFJlZmVyZW5jZSAhPT0gbnVsbCkge1xuICAgICAgdGFyZ2V0UmVmZXJlbmNlVmFsaWRhdGVzID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAodGFyZ2V0UmVmZXJlbmNlVmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke21ldGFMZXZlbFN1YnN0aXR1dGlvblN0cmluZ30nIG1ldGEtbGV2ZWwgc3Vic3RpdHV0aW9uJ3MgJyR7dGFyZ2V0UmVmZXJlbmNlU3RyaW5nfScgdGFyZ2V0IHJlZmVyZW5jZS4uLmApO1xuICAgIH1cblxuICAgIHJldHVybiB0YXJnZXRSZWZlcmVuY2VWYWxpZGF0ZXM7XG4gIH1cblxuICB2YWxpZGF0ZVJlcGxhY2VtZW50U3RhdGVtZW50KGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpIHtcbiAgICBsZXQgcmVwbGFjZW1lbnRTdGF0ZW1lbnRWYWxpZGF0ZXMgPSBmYWxzZTtcblxuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKSxcbiAgICAgICAgICByZXBsYWNlbWVudFN0YXRlbWVudFN0cmluZyA9IHRoaXMucmVwbGFjZW1lbnRTdGF0ZW1lbnQuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgbWV0YUxldmVsU3Vic3RpdHV0aW9uU3RyaW5nID0gdGhpcy5nZXRTdHJpbmcoKTsgIC8vL1xuXG4gICAgY29udGV4dC50cmFjZShgVmFsaWRhdGluZyB0aGUgJyR7bWV0YUxldmVsU3Vic3RpdHV0aW9uU3RyaW5nfScgbWV0YS1sZXZlbCBzdWJzdGl0dXRpb24ncyAnJHtyZXBsYWNlbWVudFN0YXRlbWVudFN0cmluZ30nIHJlcGxhY2VtZW50IHN0YXRlbWVudC4uLmApO1xuXG4gICAgZGVzY2VuZCgoY29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgcmVwbGFjZW1lbnRTdGF0ZW1lbnQgPSB0aGlzLnJlcGxhY2VtZW50U3RhdGVtZW50LnZhbGlkYXRlKGNvbnRleHQpO1xuXG4gICAgICBpZiAocmVwbGFjZW1lbnRTdGF0ZW1lbnQgIT09IG51bGwpIHtcbiAgICAgICAgcmVwbGFjZW1lbnRTdGF0ZW1lbnRWYWxpZGF0ZXMgPSB0cnVlO1xuICAgICAgfVxuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgaWYgKHJlcGxhY2VtZW50U3RhdGVtZW50VmFsaWRhdGVzKSB7XG4gICAgICBjb250ZXh0LmRlYnVnKGAuLi52YWxpZGF0ZWQgdGhlICcke21ldGFMZXZlbFN1YnN0aXR1dGlvblN0cmluZ30nIG1ldGEtbGV2ZWwgc3Vic3RpdHV0aW9uJ3MgJyR7cmVwbGFjZW1lbnRTdGF0ZW1lbnRTdHJpbmd9JyByZXBsYWNlbWVudCBzdGF0ZW1lbnQuYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlcGxhY2VtZW50U3RhdGVtZW50VmFsaWRhdGVzO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLmdldENvbnRleHQoKTtcblxuICAgIHJldHVybiBzZXJpYWxpc2UoKGNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IHN0cmluZyA9IHRoaXMuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgICBqc29uID0ge1xuICAgICAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgICAgICBzdHJpbmdcbiAgICAgICAgICAgIH07XG5cbiAgICAgIHJldHVybiBqc29uO1xuICAgIH0sIGNvbnRleHQpO1xuICB9XG5cbiAgc3RhdGljIG5hbWUgPSBcIk1ldGFMZXZlbFN1YnN0aXR1dGlvblwiO1xuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uLCBjb250ZXh0KSB7XG4gICAgbGV0IG1ldGFMZXZlbFN1YnN0aXR1dGlvbjtcblxuICAgIHVuc2VyaWFsaXNlKChqc29uLCBjb250ZXh0KSA9PiB7XG4gICAgICBpbnN0YW50aWF0ZSgoY29udGV4dCkgPT4ge1xuICAgICAgICBjb25zdCB7IHN0cmluZyB9ID0ganNvbixcbiAgICAgICAgICAgICAgbWV0YUxldmVsU3Vic3RpdHV0aW9uTm9kZSA9IGluc3RhbnRpYXRlTWV0YUxldmVsU3Vic3RpdHV0aW9uKHN0cmluZywgY29udGV4dCksXG4gICAgICAgICAgICAgIG5vZGUgPSBtZXRhTGV2ZWxTdWJzdGl0dXRpb25Ob2RlLCAvLy9cbiAgICAgICAgICAgICAgdGFyZ2V0UmVmZXJlbmNlID0gdGFyZ2V0UmVmZXJlbmNlRnJvbU1ldGFMZXZlbFN1YnN0aXR1dGlvbk5vZGUobWV0YUxldmVsU3Vic3RpdHV0aW9uTm9kZSwgY29udGV4dCksXG4gICAgICAgICAgICAgIHJlcGxhY2VtZW50U3RhdGVtZW50ID0gcmVwbGFjZW1lbnRTdGF0ZW1lbnRGcm9tTWV0YUxldmVsU3Vic3RpdHV0aW9uTm9kZShtZXRhTGV2ZWxTdWJzdGl0dXRpb25Ob2RlLCBjb250ZXh0KTtcblxuICAgICAgICBtZXRhTGV2ZWxTdWJzdGl0dXRpb24gPSBuZXcgTWV0YUxldmVsU3Vic3RpdHV0aW9uKGNvbnRleHQsIHN0cmluZywgbm9kZSwgdGFyZ2V0UmVmZXJlbmNlLCByZXBsYWNlbWVudFN0YXRlbWVudCk7XG4gICAgICB9LCBjb250ZXh0KTtcbiAgICB9LCBqc29uLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBtZXRhTGV2ZWxTdWJzdGl0dXRpb247XG4gIH1cblxuICBzdGF0aWMgZnJvbVN0YXRlbWVudEFuZFJlZmVyZW5jZShzdGF0ZW1lbnQsIHJlZmVyZW5jZSwgY29udGV4dCkge1xuICAgIGxldCBtZXRhTGV2ZWxTdWJzdGl0dXRpb247XG5cbiAgICBzaW1wbGlmeSgoY29udGV4dCkgPT4ge1xuICAgICAgaW5zdGFudGlhdGUoKGNvbnRleHQpID0+IHtcbiAgICAgICAgY29uc3QgbWV0YUxldmVsU3Vic3RpdHV0aW9uU3RyaW5nID0gbWV0YUxldmVsU3Vic3RpdHV0aW9uU3RyaW5nRnJvbVN0YXRlbWVudEFuZFJlZmVyZW5jZShzdGF0ZW1lbnQsIHJlZmVyZW5jZSksXG4gICAgICAgICAgICAgIHN0cmluZyA9IG1ldGFMZXZlbFN1YnN0aXR1dGlvblN0cmluZywgIC8vL1xuICAgICAgICAgICAgICBtZXRhTGV2ZWxTdWJzdGl0dXRpb25Ob2RlID0gaW5zdGFudGlhdGVNZXRhTGV2ZWxTdWJzdGl0dXRpb24oc3RyaW5nLCBjb250ZXh0KTtcblxuICAgICAgICBtZXRhTGV2ZWxTdWJzdGl0dXRpb24gPSBtZXRhTGV2ZWxTdWJzdGl0dXRpb25Gcm9tTWV0YUxldmVsU3Vic3RpdHV0aW9uTm9kZShtZXRhTGV2ZWxTdWJzdGl0dXRpb25Ob2RlLCBjb250ZXh0KTtcbiAgICAgIH0sIGNvbnRleHQpO1xuICAgIH0sIGNvbnRleHQpO1xuXG4gICAgcmV0dXJuIG1ldGFMZXZlbFN1YnN0aXR1dGlvbjtcbiAgfVxufSk7XG5cbmZ1bmN0aW9uIHRhcmdldFJlZmVyZW5jZUZyb21NZXRhTGV2ZWxTdWJzdGl0dXRpb25Ob2RlKG1ldGFMZXZlbFN1YnN0aXR1dGlvbk5vZGUsIGNvbnRleHQpIHtcbiAgY29uc3QgdGFyZ2V0UmVmZXJlbmNlTm9kZSA9IG1ldGFMZXZlbFN1YnN0aXR1dGlvbk5vZGUuZ2V0VGFyZ2V0UmVmZXJlbmNlTm9kZSgpLFxuICAgICAgICB0YXJnZXRSZWZlcmVuY2UgPSBjb250ZXh0LmZpbmRSZWZlcmVuY2VCeVJlZmVyZW5jZU5vZGUodGFyZ2V0UmVmZXJlbmNlTm9kZSk7XG5cbiAgcmV0dXJuIHRhcmdldFJlZmVyZW5jZTtcbn1cblxuZnVuY3Rpb24gcmVwbGFjZW1lbnRTdGF0ZW1lbnRGcm9tTWV0YUxldmVsU3Vic3RpdHV0aW9uTm9kZShtZXRhTGV2ZWxTdWJzdGl0dXRpb25Ob2RlLCBjb250ZXh0KSB7XG4gIGNvbnN0IHJlcGxhY2VtZW50U3RhdGVtZW50Tm9kZSA9IG1ldGFMZXZlbFN1YnN0aXR1dGlvbk5vZGUuZ2V0UmVwbGFjZW1lbnRTdGF0ZW1lbnROb2RlKCksXG4gICAgICAgIHJlcGxhY2VtZW50U3RhdGVtZW50ID0gY29udGV4dC5maW5kU3RhdGVtZW50QnlTdGF0ZW1lbnROb2RlKHJlcGxhY2VtZW50U3RhdGVtZW50Tm9kZSk7XG5cbiAgcmV0dXJuIHJlcGxhY2VtZW50U3RhdGVtZW50O1xufVxuIl0sIm5hbWVzIjpbImRlZmluZSIsIk1ldGFMZXZlbFN1YnN0aXR1dGlvbiIsIlN1YnN0aXR1dGlvbiIsImNvbnRleHQiLCJzdHJpbmciLCJub2RlIiwidGFyZ2V0UmVmZXJlbmNlIiwicmVwbGFjZW1lbnRTdGF0ZW1lbnQiLCJnZXRUYXJnZXRSZWZlcmVuY2UiLCJnZXRSZXBsYWNlbWVudFN0YXRlbWVudCIsImdldE1ldGFMZXZlbFN1YnN0aXR1dGlvbk5vZGUiLCJnZXROb2RlIiwibWV0YUxldmVsU3Vic3RpdHV0aW9uTm9kZSIsImdldFRhcmdldE5vZGUiLCJ0YXJnZXRSZWZlcmVuY2VOb2RlIiwidGVyZ2V0Tm9kZSIsImdldFJlcGxhY2VtZW50Tm9kZSIsInJlcGxhY2VtZW50U3RhdGVtZW50Tm9kZSIsInJlcGxhY2VtZW50Tm9kZSIsIm1hdGNoTWV0YUxldmVsU3Vic3RpdHV0aW9uTm9kZSIsIm5vZGVNYXRjaGVzIiwibWF0Y2hOb2RlIiwibWV0YUxldmVsU3Vic3RpdHV0aW9uTm9kZU1hdGNoZXMiLCJmaW5kVmFsaWRNZXRhTGV2ZWxTdWJzdGl1dGlvbiIsIm1ldGFMZXZlbFN1YnN0aXR1dGlvbiIsImZpbmRNZXRhTGV2ZWxTdWJzdGl0dXRpb25CeU1ldGFMZXZlbFN1YnN0aXR1dGlvbk5vZGUiLCJ2YWxpZE1ldGFMZXZlbFN1YnN0aXR1dGlvbiIsInZhbGlkYXRlIiwiZ2VuZXJhbENvbnRleHQiLCJzcGVjaWZpY0NvbnRleHQiLCJtZXRhTGV2ZWxTdWJzdGl0dXRpb25TdHJpbmciLCJnZXRTdHJpbmciLCJ0cmFjZSIsImRlYnVnIiwidmFsaWRhdGVzIiwidGFyZ2V0UmVmZXJlbmNlVmFsaWRhdGVzIiwidmFsaWRhdGVUYXJnZXRSZWZlcmVuY2UiLCJyZXBsYWNlbWVudFN0YXRlbWVudFZhbGlkYXRlcyIsInZhbGlkYXRlUmVwbGFjZW1lbnRTdGF0ZW1lbnQiLCJhZGRNZXRhTGV2ZWxTdWJzdGl0dXRpb24iLCJ0YXJnZXRSZWZlcmVuY2VTdHJpbmciLCJnZXRDb250ZXh0IiwicmVwbGFjZW1lbnRTdGF0ZW1lbnRTdHJpbmciLCJkZXNjZW5kIiwidG9KU09OIiwic2VyaWFsaXNlIiwianNvbiIsIm5hbWUiLCJmcm9tSlNPTiIsInVuc2VyaWFsaXNlIiwiaW5zdGFudGlhdGUiLCJpbnN0YW50aWF0ZU1ldGFMZXZlbFN1YnN0aXR1dGlvbiIsInRhcmdldFJlZmVyZW5jZUZyb21NZXRhTGV2ZWxTdWJzdGl0dXRpb25Ob2RlIiwicmVwbGFjZW1lbnRTdGF0ZW1lbnRGcm9tTWV0YUxldmVsU3Vic3RpdHV0aW9uTm9kZSIsImZyb21TdGF0ZW1lbnRBbmRSZWZlcmVuY2UiLCJzdGF0ZW1lbnQiLCJyZWZlcmVuY2UiLCJzaW1wbGlmeSIsIm1ldGFMZXZlbFN1YnN0aXR1dGlvblN0cmluZ0Zyb21TdGF0ZW1lbnRBbmRSZWZlcmVuY2UiLCJtZXRhTGV2ZWxTdWJzdGl0dXRpb25Gcm9tTWV0YUxldmVsU3Vic3RpdHV0aW9uTm9kZSIsImdldFRhcmdldFJlZmVyZW5jZU5vZGUiLCJmaW5kUmVmZXJlbmNlQnlSZWZlcmVuY2VOb2RlIiwiZ2V0UmVwbGFjZW1lbnRT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
@@ -1,40 +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 MetaLevelSubstitutionNode;
9
- }
10
- });
11
- const _substitution = /*#__PURE__*/ _interop_require_default(require("../../node/substitution"));
12
- const _ruleNames = require("../../ruleNames");
13
- function _interop_require_default(obj) {
14
- return obj && obj.__esModule ? obj : {
15
- default: obj
16
- };
17
- }
18
- class MetaLevelSubstitutionNode extends _substitution.default {
19
- getTargetReferenceNode() {
20
- const referenceNode = this.getReferenceNode(), targetReferenceNode = referenceNode; ///
21
- return targetReferenceNode;
22
- }
23
- getReplacementStatementNode() {
24
- const statementNode = this.getStatementNode(), replacementStatementNode = statementNode; ///
25
- return replacementStatementNode;
26
- }
27
- getReferenceNode() {
28
- const ruleName = _ruleNames.REFERENCE_RULE_NAME, referenceNode = this.getNodeByRuleName(ruleName);
29
- return referenceNode;
30
- }
31
- getStatementNode() {
32
- const ruleName = _ruleNames.STATEMENT_RULE_NAME, statementNode = this.getFirstNodeByRuleName(ruleName);
33
- return statementNode;
34
- }
35
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) {
36
- return _substitution.default.fromRuleNameChildNodesOpacityAndPrecedence(MetaLevelSubstitutionNode, ruleName, childNodes, opacity, precedence);
37
- }
38
- }
39
-
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ub2RlL3N1YnN0aXR1dGlvbi9tZXRhTGV2ZWwuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBTdWJzdGl0dXRpb25Ob2RlIGZyb20gXCIuLi8uLi9ub2RlL3N1YnN0aXR1dGlvblwiO1xuXG5pbXBvcnQgeyBTVEFURU1FTlRfUlVMRV9OQU1FLCBSRUZFUkVOQ0VfUlVMRV9OQU1FIH0gZnJvbSBcIi4uLy4uL3J1bGVOYW1lc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBNZXRhTGV2ZWxTdWJzdGl0dXRpb25Ob2RlIGV4dGVuZHMgU3Vic3RpdHV0aW9uTm9kZSB7XG4gIGdldFRhcmdldFJlZmVyZW5jZU5vZGUoKSB7XG4gICAgY29uc3QgcmVmZXJlbmNlTm9kZSA9IHRoaXMuZ2V0UmVmZXJlbmNlTm9kZSgpLFxuICAgICAgICAgIHRhcmdldFJlZmVyZW5jZU5vZGUgPSByZWZlcmVuY2VOb2RlOyAvLy9cblxuICAgIHJldHVybiB0YXJnZXRSZWZlcmVuY2VOb2RlO1xuICB9XG5cbiAgZ2V0UmVwbGFjZW1lbnRTdGF0ZW1lbnROb2RlKCkge1xuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSB0aGlzLmdldFN0YXRlbWVudE5vZGUoKSxcbiAgICAgICAgICByZXBsYWNlbWVudFN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnROb2RlOyAvLy9cblxuICAgIHJldHVybiByZXBsYWNlbWVudFN0YXRlbWVudE5vZGU7XG4gIH1cblxuICBnZXRSZWZlcmVuY2VOb2RlKCkge1xuICAgIGNvbnN0IHJ1bGVOYW1lID0gUkVGRVJFTkNFX1JVTEVfTkFNRSxcbiAgICAgICAgICByZWZlcmVuY2VOb2RlID0gdGhpcy5nZXROb2RlQnlSdWxlTmFtZShydWxlTmFtZSk7XG5cbiAgICByZXR1cm4gcmVmZXJlbmNlTm9kZTtcbiAgfVxuXG4gIGdldFN0YXRlbWVudE5vZGUoKSB7XG4gICAgY29uc3QgcnVsZU5hbWUgPSBTVEFURU1FTlRfUlVMRV9OQU1FLFxuICAgICAgICAgIHN0YXRlbWVudE5vZGUgPSB0aGlzLmdldEZpcnN0Tm9kZUJ5UnVsZU5hbWUocnVsZU5hbWUpO1xuXG4gICAgcmV0dXJuIHN0YXRlbWVudE5vZGU7XG4gIH1cblxuICBzdGF0aWMgZnJvbVJ1bGVOYW1lQ2hpbGROb2Rlc09wYWNpdHlBbmRQcmVjZWRlbmNlKHJ1bGVOYW1lLCBjaGlsZE5vZGVzLCBvcGFjaXR5LCBwcmVjZWRlbmNlKSB7IHJldHVybiBTdWJzdGl0dXRpb25Ob2RlLmZyb21SdWxlTmFtZUNoaWxkTm9kZXNPcGFjaXR5QW5kUHJlY2VkZW5jZShNZXRhTGV2ZWxTdWJzdGl0dXRpb25Ob2RlLCBydWxlTmFtZSwgY2hpbGROb2Rlcywgb3BhY2l0eSwgcHJlY2VkZW5jZSk7IH1cbn1cbiJdLCJuYW1lcyI6WyJNZXRhTGV2ZWxTdWJzdGl0dXRpb25Ob2RlIiwiU3Vic3RpdHV0aW9uTm9kZSIsImdldFRhcmdldFJlZmVyZW5jZU5vZGUiLCJyZWZlcmVuY2VOb2RlIiwiZ2V0UmVmZXJlbmNlTm9kZSIsInRhcmdldFJlZmVyZW5jZU5vZGUiLCJnZXRSZXBsYWNlbWVudFN0YXRlbWVudE5vZGUiLCJzdGF0ZW1lbnROb2RlIiwiZ2V0U3RhdGVtZW50Tm9kZSIsInJlcGxhY2VtZW50U3RhdGVtZW50Tm9kZSIsInJ1bGVOYW1lIiwiUkVGRVJFTkNFX1JVTEVfTkFNRSIsImdldE5vZGVCeVJ1bGVOYW1lIiwiU1RBVEVNRU5UX1JVTEVfTkFNRSIsImdldEZpcnN0Tm9kZUJ5UnVsZU5hbWUiLCJmcm9tUnVsZU5hbWVDaGlsZE5vZGVzT3BhY2l0eUFuZFByZWNlZGVuY2UiLCJjaGlsZE5vZGVzIiwib3BhY2l0eSIsInByZWNlZGVuY2UiXSwibWFwcGluZ3MiOiJBQUFBOzs7OytCQU1BOzs7ZUFBcUJBOzs7cUVBSlE7MkJBRTRCOzs7Ozs7QUFFMUMsTUFBTUEsa0NBQWtDQyxxQkFBZ0I7SUFDckVDLHlCQUF5QjtRQUN2QixNQUFNQyxnQkFBZ0IsSUFBSSxDQUFDQyxnQkFBZ0IsSUFDckNDLHNCQUFzQkYsZUFBZSxHQUFHO1FBRTlDLE9BQU9FO0lBQ1Q7SUFFQUMsOEJBQThCO1FBQzVCLE1BQU1DLGdCQUFnQixJQUFJLENBQUNDLGdCQUFnQixJQUNyQ0MsMkJBQTJCRixlQUFlLEdBQUc7UUFFbkQsT0FBT0U7SUFDVDtJQUVBTCxtQkFBbUI7UUFDakIsTUFBTU0sV0FBV0MsOEJBQW1CLEVBQzlCUixnQkFBZ0IsSUFBSSxDQUFDUyxpQkFBaUIsQ0FBQ0Y7UUFFN0MsT0FBT1A7SUFDVDtJQUVBSyxtQkFBbUI7UUFDakIsTUFBTUUsV0FBV0csOEJBQW1CLEVBQzlCTixnQkFBZ0IsSUFBSSxDQUFDTyxzQkFBc0IsQ0FBQ0o7UUFFbEQsT0FBT0g7SUFDVDtJQUVBLE9BQU9RLDJDQUEyQ0wsUUFBUSxFQUFFTSxVQUFVLEVBQUVDLE9BQU8sRUFBRUMsVUFBVSxFQUFFO1FBQUUsT0FBT2pCLHFCQUFnQixDQUFDYywwQ0FBMEMsQ0FBQ2YsMkJBQTJCVSxVQUFVTSxZQUFZQyxTQUFTQztJQUFhO0FBQzNPIn0=
@@ -1,71 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- function _export(target, all) {
6
- for(var name in all)Object.defineProperty(target, name, {
7
- enumerable: true,
8
- get: Object.getOwnPropertyDescriptor(all, name).get
9
- });
10
- }
11
- _export(exports, {
12
- get containedAssertionFromStatement () {
13
- return containedAssertionFromStatement;
14
- },
15
- get definedAssertionFromStatement () {
16
- return definedAssertionFromStatement;
17
- },
18
- get judgementFromStatement () {
19
- return judgementFromStatement;
20
- },
21
- get metavariableFromStatement () {
22
- return metavariableFromStatement;
23
- },
24
- get propertyAssertionFromStatement () {
25
- return propertyAssertionFromStatement;
26
- },
27
- get satisfiesAssertionFromStatement () {
28
- return satisfiesAssertionFromStatement;
29
- },
30
- get subproofAssertionFromStatement () {
31
- return subproofAssertionFromStatement;
32
- },
33
- get typeAssertionFromStatement () {
34
- return typeAssertionFromStatement;
35
- }
36
- });
37
- const _element = require("../utilities/element");
38
- function judgementFromStatement(statement, context) {
39
- const statementNode = statement.getNode(), judgement = (0, _element.judgementFromStatementNode)(statementNode, context);
40
- return judgement;
41
- }
42
- function metavariableFromStatement(statement, context) {
43
- const statementNode = statement.getNode(), metavariable = (0, _element.metavariableFromStatementNode)(statementNode, context);
44
- return metavariable;
45
- }
46
- function typeAssertionFromStatement(statement, context) {
47
- const statementNode = statement.getNode(), typeAssertion = (0, _element.typeAssertionFromStatementNode)(statementNode, context);
48
- return typeAssertion;
49
- }
50
- function definedAssertionFromStatement(statement, context) {
51
- const statementNode = statement.getNode(), definedAssertion = (0, _element.definedAssertionFromStatementNode)(statementNode, context);
52
- return definedAssertion;
53
- }
54
- function propertyAssertionFromStatement(statement, context) {
55
- const statementNode = statement.getNode(), propertyAssertion = (0, _element.propertyAssertionFromStatementNode)(statementNode, context);
56
- return propertyAssertion;
57
- }
58
- function subproofAssertionFromStatement(statement, context) {
59
- const statementNode = statement.getNode(), subproofAssertion = (0, _element.subproofAssertionFromStatementNode)(statementNode, context);
60
- return subproofAssertion;
61
- }
62
- function containedAssertionFromStatement(statement, context) {
63
- const statementNode = statement.getNode(), containedAssertion = (0, _element.containedAssertionFromStatementNode)(statementNode, context);
64
- return containedAssertion;
65
- }
66
- function satisfiesAssertionFromStatement(statement, context) {
67
- const statementNode = statement.getNode(), satisfiesAssertion = (0, _element.satisfiesAssertionFromStatementNode)(statementNode, context);
68
- return satisfiesAssertion;
69
- }
70
-
71
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvc3RhdGVtZW50LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBqdWRnZW1lbnRGcm9tU3RhdGVtZW50Tm9kZSxcbiAgICAgICAgIG1ldGF2YXJpYWJsZUZyb21TdGF0ZW1lbnROb2RlLFxuICAgICAgICAgdHlwZUFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlLFxuICAgICAgICAgZGVmaW5lZEFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlLFxuICAgICAgICAgcHJvcGVydHlBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZSxcbiAgICAgICAgIHN1YnByb29mQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUsXG4gICAgICAgICBjb250YWluZWRBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZSxcbiAgICAgICAgIHNhdGlzZmllc0Fzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9lbGVtZW50XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBqdWRnZW1lbnRGcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCkge1xuICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50LmdldE5vZGUoKSxcbiAgICAgICAganVkZ2VtZW50ID0ganVkZ2VtZW50RnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIGp1ZGdlbWVudDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1ldGF2YXJpYWJsZUZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KSB7XG4gIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnQuZ2V0Tm9kZSgpLFxuICAgICAgICBtZXRhdmFyaWFibGUgPSBtZXRhdmFyaWFibGVGcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gbWV0YXZhcmlhYmxlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHlwZUFzc2VydGlvbkZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KSB7XG4gIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnQuZ2V0Tm9kZSgpLFxuICAgICAgICB0eXBlQXNzZXJ0aW9uID0gdHlwZUFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiB0eXBlQXNzZXJ0aW9uO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVmaW5lZEFzc2VydGlvbkZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KSB7XG4gIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnQuZ2V0Tm9kZSgpLFxuICAgICAgICBkZWZpbmVkQXNzZXJ0aW9uID0gZGVmaW5lZEFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiBkZWZpbmVkQXNzZXJ0aW9uO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvcGVydHlBc3NlcnRpb25Gcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCkge1xuICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50LmdldE5vZGUoKSxcbiAgICAgICAgcHJvcGVydHlBc3NlcnRpb24gPSBwcm9wZXJ0eUFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlKHN0YXRlbWVudE5vZGUsIGNvbnRleHQpO1xuXG4gIHJldHVybiBwcm9wZXJ0eUFzc2VydGlvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1YnByb29mQXNzZXJ0aW9uRnJvbVN0YXRlbWVudChzdGF0ZW1lbnQsIGNvbnRleHQpIHtcbiAgY29uc3Qgc3RhdGVtZW50Tm9kZSA9IHN0YXRlbWVudC5nZXROb2RlKCksXG4gICAgICAgIHN1YnByb29mQXNzZXJ0aW9uID0gc3VicHJvb2ZBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gc3VicHJvb2ZBc3NlcnRpb247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb250YWluZWRBc3NlcnRpb25Gcm9tU3RhdGVtZW50KHN0YXRlbWVudCwgY29udGV4dCkge1xuICBjb25zdCBzdGF0ZW1lbnROb2RlID0gc3RhdGVtZW50LmdldE5vZGUoKSxcbiAgICAgICAgY29udGFpbmVkQXNzZXJ0aW9uID0gY29udGFpbmVkQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUoc3RhdGVtZW50Tm9kZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIGNvbnRhaW5lZEFzc2VydGlvbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNhdGlzZmllc0Fzc2VydGlvbkZyb21TdGF0ZW1lbnQoc3RhdGVtZW50LCBjb250ZXh0KSB7XG4gIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnQuZ2V0Tm9kZSgpLFxuICAgICAgICBzYXRpc2ZpZXNBc3NlcnRpb24gPSBzYXRpc2ZpZXNBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZShzdGF0ZW1lbnROb2RlLCBjb250ZXh0KTtcblxuICByZXR1cm4gc2F0aXNmaWVzQXNzZXJ0aW9uO1xufVxuIl0sIm5hbWVzIjpbImNvbnRhaW5lZEFzc2VydGlvbkZyb21TdGF0ZW1lbnQiLCJkZWZpbmVkQXNzZXJ0aW9uRnJvbVN0YXRlbWVudCIsImp1ZGdlbWVudEZyb21TdGF0ZW1lbnQiLCJtZXRhdmFyaWFibGVGcm9tU3RhdGVtZW50IiwicHJvcGVydHlBc3NlcnRpb25Gcm9tU3RhdGVtZW50Iiwic2F0aXNmaWVzQXNzZXJ0aW9uRnJvbVN0YXRlbWVudCIsInN1YnByb29mQXNzZXJ0aW9uRnJvbVN0YXRlbWVudCIsInR5cGVBc3NlcnRpb25Gcm9tU3RhdGVtZW50Iiwic3RhdGVtZW50IiwiY29udGV4dCIsInN0YXRlbWVudE5vZGUiLCJnZXROb2RlIiwianVkZ2VtZW50IiwianVkZ2VtZW50RnJvbVN0YXRlbWVudE5vZGUiLCJtZXRhdmFyaWFibGUiLCJtZXRhdmFyaWFibGVGcm9tU3RhdGVtZW50Tm9kZSIsInR5cGVBc3NlcnRpb24iLCJ0eXBlQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUiLCJkZWZpbmVkQXNzZXJ0aW9uIiwiZGVmaW5lZEFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlIiwicHJvcGVydHlBc3NlcnRpb24iLCJwcm9wZXJ0eUFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlIiwic3VicHJvb2ZBc3NlcnRpb24iLCJzdWJwcm9vZkFzc2VydGlvbkZyb21TdGF0ZW1lbnROb2RlIiwiY29udGFpbmVkQXNzZXJ0aW9uIiwiY29udGFpbmVkQXNzZXJ0aW9uRnJvbVN0YXRlbWVudE5vZGUiLCJzYXRpc2ZpZXNBc3NlcnRpb24iLCJzYXRpc2ZpZXNBc3NlcnRpb25Gcm9tU3RhdGVtZW50Tm9kZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBcURnQkE7ZUFBQUE7O1FBckJBQztlQUFBQTs7UUFyQkFDO2VBQUFBOztRQU9BQztlQUFBQTs7UUFxQkFDO2VBQUFBOztRQXFCQUM7ZUFBQUE7O1FBZEFDO2VBQUFBOztRQXJCQUM7ZUFBQUE7Ozt5QkFoQm9DO0FBRTdDLFNBQVNMLHVCQUF1Qk0sU0FBUyxFQUFFQyxPQUFPO0lBQ3ZELE1BQU1DLGdCQUFnQkYsVUFBVUcsT0FBTyxJQUNqQ0MsWUFBWUMsSUFBQUEsbUNBQTBCLEVBQUNILGVBQWVEO0lBRTVELE9BQU9HO0FBQ1Q7QUFFTyxTQUFTVCwwQkFBMEJLLFNBQVMsRUFBRUMsT0FBTztJQUMxRCxNQUFNQyxnQkFBZ0JGLFVBQVVHLE9BQU8sSUFDakNHLGVBQWVDLElBQUFBLHNDQUE2QixFQUFDTCxlQUFlRDtJQUVsRSxPQUFPSztBQUNUO0FBRU8sU0FBU1AsMkJBQTJCQyxTQUFTLEVBQUVDLE9BQU87SUFDM0QsTUFBTUMsZ0JBQWdCRixVQUFVRyxPQUFPLElBQ2pDSyxnQkFBZ0JDLElBQUFBLHVDQUE4QixFQUFDUCxlQUFlRDtJQUVwRSxPQUFPTztBQUNUO0FBRU8sU0FBU2YsOEJBQThCTyxTQUFTLEVBQUVDLE9BQU87SUFDOUQsTUFBTUMsZ0JBQWdCRixVQUFVRyxPQUFPLElBQ2pDTyxtQkFBbUJDLElBQUFBLDBDQUFpQyxFQUFDVCxlQUFlRDtJQUUxRSxPQUFPUztBQUNUO0FBRU8sU0FBU2QsK0JBQStCSSxTQUFTLEVBQUVDLE9BQU87SUFDL0QsTUFBTUMsZ0JBQWdCRixVQUFVRyxPQUFPLElBQ2pDUyxvQkFBb0JDLElBQUFBLDJDQUFrQyxFQUFDWCxlQUFlRDtJQUU1RSxPQUFPVztBQUNUO0FBRU8sU0FBU2QsK0JBQStCRSxTQUFTLEVBQUVDLE9BQU87SUFDL0QsTUFBTUMsZ0JBQWdCRixVQUFVRyxPQUFPLElBQ2pDVyxvQkFBb0JDLElBQUFBLDJDQUFrQyxFQUFDYixlQUFlRDtJQUU1RSxPQUFPYTtBQUNUO0FBRU8sU0FBU3RCLGdDQUFnQ1EsU0FBUyxFQUFFQyxPQUFPO0lBQ2hFLE1BQU1DLGdCQUFnQkYsVUFBVUcsT0FBTyxJQUNqQ2EscUJBQXFCQyxJQUFBQSw0Q0FBbUMsRUFBQ2YsZUFBZUQ7SUFFOUUsT0FBT2U7QUFDVDtBQUVPLFNBQVNuQixnQ0FBZ0NHLFNBQVMsRUFBRUMsT0FBTztJQUNoRSxNQUFNQyxnQkFBZ0JGLFVBQVVHLE9BQU8sSUFDakNlLHFCQUFxQkMsSUFBQUEsNENBQW1DLEVBQUNqQixlQUFlRDtJQUU5RSxPQUFPaUI7QUFDVCJ9
@@ -1,212 +0,0 @@
1
- "use strict";
2
-
3
- import Substitution from "../substitution";
4
-
5
- import { define } from "../../elements";
6
- import { instantiateMetaLevelSubstitution } from "../../process/instantiate";
7
- import { metaLevelSubstitutionFromMetaLevelSubstitutionNode } from "../../utilities/element";
8
- import { metaLevelSubstitutionStringFromStatementAndReference } from "../../utilities/string";
9
- import { descend, simplify, serialise, unserialise, instantiate } from "../../utilities/context";
10
-
11
- export default define(class MetaLevelSubstitution extends Substitution {
12
- constructor(context, string, node, targetReference, replacementStatement) {
13
- super(context, string, node);
14
-
15
- this.targetReference = targetReference;
16
- this.replacementStatement = replacementStatement;
17
- }
18
-
19
- getTargetReference() {
20
- return this.targetReference;
21
- }
22
-
23
- getReplacementStatement() {
24
- return this.replacementStatement;
25
- }
26
-
27
- getMetaLevelSubstitutionNode() {
28
- const node = this.getNode(),
29
- metaLevelSubstitutionNode = node; ///
30
-
31
- return metaLevelSubstitutionNode;
32
- }
33
-
34
- getTargetNode() {
35
- const targetReferenceNode = this.targetReference.getNode(),
36
- tergetNode = targetReferenceNode; ///
37
-
38
- return tergetNode;
39
- }
40
-
41
- getReplacementNode() {
42
- const replacementStatementNode = this.replacementStatement.getNode(),
43
- replacementNode = replacementStatementNode; ///
44
-
45
- return replacementNode;
46
- }
47
-
48
- matchMetaLevelSubstitutionNode(metaLevelSubstitutionNode) {
49
- const node = metaLevelSubstitutionNode, ///
50
- nodeMatches = this.matchNode(node),
51
- metaLevelSubstitutionNodeMatches = nodeMatches; ///
52
-
53
- return metaLevelSubstitutionNodeMatches;
54
- }
55
-
56
- findValidMetaLevelSubstiution(context) {
57
- const metaLevelSubstitutionNode = this.getMetaLevelSubstitutionNode(),
58
- metaLevelSubstitution = context.findMetaLevelSubstitutionByMetaLevelSubstitutionNode(metaLevelSubstitutionNode),
59
- validMetaLevelSubstitution = metaLevelSubstitution; ///
60
-
61
- return validMetaLevelSubstitution;
62
- }
63
-
64
- validate(generalContext, specificContext) {
65
- let metaLevelSubstitution = null;
66
-
67
- const context = specificContext, ///
68
- metaLevelSubstitutionString = this.getString(); ///
69
-
70
- context.trace(`Validating the '${metaLevelSubstitutionString}' meta-level substitution...`);
71
-
72
- const validMetaLevelSubstitution = this.findValidMetaLevelSubstiution(context);
73
-
74
- if (validMetaLevelSubstitution) {
75
- metaLevelSubstitution = validMetaLevelSubstitution; ///
76
-
77
- context.debug(`...the '${metaLevelSubstitutionString}' meta-level substitution is already valid.`);
78
- } else {
79
- let validates = false;
80
-
81
- const targetReferenceValidates = this.validateTargetReference(generalContext, specificContext);
82
-
83
- if (targetReferenceValidates) {
84
- const replacementStatementValidates = this.validateReplacementStatement(generalContext, specificContext);
85
-
86
- if (replacementStatementValidates) {
87
- validates = true;
88
- }
89
- }
90
-
91
- if (validates) {
92
- metaLevelSubstitution = this; ///
93
-
94
- context.addMetaLevelSubstitution(metaLevelSubstitution);
95
-
96
- context.debug(`...validated the '${metaLevelSubstitutionString}' meta-level substitution.`);
97
- }
98
- }
99
-
100
- return metaLevelSubstitution;
101
- }
102
-
103
- validateTargetReference(generalContext, specificContext) {
104
- let targetReferenceValidates = false;
105
-
106
- const context = generalContext, ///
107
- targetReferenceString = this.targetReference.getString(),
108
- metaLevelSubstitutionString = this.getString(); ///
109
-
110
- context.trace(`Validating the '${metaLevelSubstitutionString}' meta-level substitution's '${targetReferenceString}' target reference...`);
111
-
112
- const targetReference = this.targetReference.validate(context);
113
-
114
- if (targetReference !== null) {
115
- targetReferenceValidates = true;
116
- }
117
-
118
- if (targetReferenceValidates) {
119
- context.debug(`...validated the '${metaLevelSubstitutionString}' meta-level substitution's '${targetReferenceString}' target reference...`);
120
- }
121
-
122
- return targetReferenceValidates;
123
- }
124
-
125
- validateReplacementStatement(generalContext, specificContext) {
126
- let replacementStatementValidates = false;
127
-
128
- const context = this.getContext(),
129
- replacementStatementString = this.replacementStatement.getString(),
130
- metaLevelSubstitutionString = this.getString(); ///
131
-
132
- context.trace(`Validating the '${metaLevelSubstitutionString}' meta-level substitution's '${replacementStatementString}' replacement statement...`);
133
-
134
- descend((context) => {
135
- const replacementStatement = this.replacementStatement.validate(context);
136
-
137
- if (replacementStatement !== null) {
138
- replacementStatementValidates = true;
139
- }
140
- }, context);
141
-
142
- if (replacementStatementValidates) {
143
- context.debug(`...validated the '${metaLevelSubstitutionString}' meta-level substitution's '${replacementStatementString}' replacement statement.`);
144
- }
145
-
146
- return replacementStatementValidates;
147
- }
148
-
149
- toJSON() {
150
- const context = this.getContext();
151
-
152
- return serialise((context) => {
153
- const string = this.getString(),
154
- json = {
155
- context,
156
- string
157
- };
158
-
159
- return json;
160
- }, context);
161
- }
162
-
163
- static name = "MetaLevelSubstitution";
164
-
165
- static fromJSON(json, context) {
166
- let metaLevelSubstitution;
167
-
168
- unserialise((json, context) => {
169
- instantiate((context) => {
170
- const { string } = json,
171
- metaLevelSubstitutionNode = instantiateMetaLevelSubstitution(string, context),
172
- node = metaLevelSubstitutionNode, ///
173
- targetReference = targetReferenceFromMetaLevelSubstitutionNode(metaLevelSubstitutionNode, context),
174
- replacementStatement = replacementStatementFromMetaLevelSubstitutionNode(metaLevelSubstitutionNode, context);
175
-
176
- metaLevelSubstitution = new MetaLevelSubstitution(context, string, node, targetReference, replacementStatement);
177
- }, context);
178
- }, json, context);
179
-
180
- return metaLevelSubstitution;
181
- }
182
-
183
- static fromStatementAndReference(statement, reference, context) {
184
- let metaLevelSubstitution;
185
-
186
- simplify((context) => {
187
- instantiate((context) => {
188
- const metaLevelSubstitutionString = metaLevelSubstitutionStringFromStatementAndReference(statement, reference),
189
- string = metaLevelSubstitutionString, ///
190
- metaLevelSubstitutionNode = instantiateMetaLevelSubstitution(string, context);
191
-
192
- metaLevelSubstitution = metaLevelSubstitutionFromMetaLevelSubstitutionNode(metaLevelSubstitutionNode, context);
193
- }, context);
194
- }, context);
195
-
196
- return metaLevelSubstitution;
197
- }
198
- });
199
-
200
- function targetReferenceFromMetaLevelSubstitutionNode(metaLevelSubstitutionNode, context) {
201
- const targetReferenceNode = metaLevelSubstitutionNode.getTargetReferenceNode(),
202
- targetReference = context.findReferenceByReferenceNode(targetReferenceNode);
203
-
204
- return targetReference;
205
- }
206
-
207
- function replacementStatementFromMetaLevelSubstitutionNode(metaLevelSubstitutionNode, context) {
208
- const replacementStatementNode = metaLevelSubstitutionNode.getReplacementStatementNode(),
209
- replacementStatement = context.findStatementByStatementNode(replacementStatementNode);
210
-
211
- return replacementStatement;
212
- }
@@ -1,37 +0,0 @@
1
- "use strict";
2
-
3
- import SubstitutionNode from "../../node/substitution";
4
-
5
- import { STATEMENT_RULE_NAME, REFERENCE_RULE_NAME } from "../../ruleNames";
6
-
7
- export default class MetaLevelSubstitutionNode extends SubstitutionNode {
8
- getTargetReferenceNode() {
9
- const referenceNode = this.getReferenceNode(),
10
- targetReferenceNode = referenceNode; ///
11
-
12
- return targetReferenceNode;
13
- }
14
-
15
- getReplacementStatementNode() {
16
- const statementNode = this.getStatementNode(),
17
- replacementStatementNode = statementNode; ///
18
-
19
- return replacementStatementNode;
20
- }
21
-
22
- getReferenceNode() {
23
- const ruleName = REFERENCE_RULE_NAME,
24
- referenceNode = this.getNodeByRuleName(ruleName);
25
-
26
- return referenceNode;
27
- }
28
-
29
- getStatementNode() {
30
- const ruleName = STATEMENT_RULE_NAME,
31
- statementNode = this.getFirstNodeByRuleName(ruleName);
32
-
33
- return statementNode;
34
- }
35
-
36
- static fromRuleNameChildNodesOpacityAndPrecedence(ruleName, childNodes, opacity, precedence) { return SubstitutionNode.fromRuleNameChildNodesOpacityAndPrecedence(MetaLevelSubstitutionNode, ruleName, childNodes, opacity, precedence); }
37
- }
@@ -1,66 +0,0 @@
1
- "use strict";
2
-
3
- import { judgementFromStatementNode,
4
- metavariableFromStatementNode,
5
- typeAssertionFromStatementNode,
6
- definedAssertionFromStatementNode,
7
- propertyAssertionFromStatementNode,
8
- subproofAssertionFromStatementNode,
9
- containedAssertionFromStatementNode,
10
- satisfiesAssertionFromStatementNode } from "../utilities/element";
11
-
12
- export function judgementFromStatement(statement, context) {
13
- const statementNode = statement.getNode(),
14
- judgement = judgementFromStatementNode(statementNode, context);
15
-
16
- return judgement;
17
- }
18
-
19
- export function metavariableFromStatement(statement, context) {
20
- const statementNode = statement.getNode(),
21
- metavariable = metavariableFromStatementNode(statementNode, context);
22
-
23
- return metavariable;
24
- }
25
-
26
- export function typeAssertionFromStatement(statement, context) {
27
- const statementNode = statement.getNode(),
28
- typeAssertion = typeAssertionFromStatementNode(statementNode, context);
29
-
30
- return typeAssertion;
31
- }
32
-
33
- export function definedAssertionFromStatement(statement, context) {
34
- const statementNode = statement.getNode(),
35
- definedAssertion = definedAssertionFromStatementNode(statementNode, context);
36
-
37
- return definedAssertion;
38
- }
39
-
40
- export function propertyAssertionFromStatement(statement, context) {
41
- const statementNode = statement.getNode(),
42
- propertyAssertion = propertyAssertionFromStatementNode(statementNode, context);
43
-
44
- return propertyAssertion;
45
- }
46
-
47
- export function subproofAssertionFromStatement(statement, context) {
48
- const statementNode = statement.getNode(),
49
- subproofAssertion = subproofAssertionFromStatementNode(statementNode, context);
50
-
51
- return subproofAssertion;
52
- }
53
-
54
- export function containedAssertionFromStatement(statement, context) {
55
- const statementNode = statement.getNode(),
56
- containedAssertion = containedAssertionFromStatementNode(statementNode, context);
57
-
58
- return containedAssertion;
59
- }
60
-
61
- export function satisfiesAssertionFromStatement(statement, context) {
62
- const statementNode = statement.getNode(),
63
- satisfiesAssertion = satisfiesAssertionFromStatementNode(statementNode, context);
64
-
65
- return satisfiesAssertion;
66
- }