occam-verify-cli 1.0.612 → 1.0.617

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 (111) hide show
  1. package/lib/context/ephemeral.js +59 -31
  2. package/lib/context/file/nominal.js +45 -19
  3. package/lib/context/liminal.js +19 -34
  4. package/lib/context/scoped.js +34 -26
  5. package/lib/context.js +7 -7
  6. package/lib/element/assertion.js +5 -9
  7. package/lib/element/assumption.js +11 -4
  8. package/lib/element/combinator.js +8 -1
  9. package/lib/element/conclusion.js +8 -1
  10. package/lib/element/constructor.js +8 -1
  11. package/lib/element/declaration.js +3 -7
  12. package/lib/element/deduction.js +8 -1
  13. package/lib/element/derivation.js +8 -1
  14. package/lib/element/equality.js +8 -1
  15. package/lib/element/equivalence.js +8 -1
  16. package/lib/element/equivalences.js +8 -1
  17. package/lib/element/error.js +10 -7
  18. package/lib/element/hypothesis.js +8 -1
  19. package/lib/element/judgement.js +9 -2
  20. package/lib/element/label.js +8 -1
  21. package/lib/element/metaType.js +8 -1
  22. package/lib/element/metavariable.js +5 -8
  23. package/lib/element/parameter.js +8 -1
  24. package/lib/element/procedureCall.js +21 -29
  25. package/lib/element/procedureReference.js +15 -1
  26. package/lib/element/proof.js +8 -1
  27. package/lib/element/proofAssertion.js +8 -1
  28. package/lib/element/property.js +8 -1
  29. package/lib/element/propertyRelation.js +8 -1
  30. package/lib/element/reference.js +8 -8
  31. package/lib/element/rule.js +10 -7
  32. package/lib/element/section.js +8 -1
  33. package/lib/element/signature.js +8 -1
  34. package/lib/element/statement.js +12 -16
  35. package/lib/element/subDerivation.js +8 -1
  36. package/lib/element/subproof.js +8 -1
  37. package/lib/element/substitution/frame.js +3 -3
  38. package/lib/element/substitution/reference.js +3 -3
  39. package/lib/element/substitution/statement.js +3 -3
  40. package/lib/element/substitution/term.js +3 -3
  41. package/lib/element/substitution.js +3 -7
  42. package/lib/element/topLevelAssertion/axiom.js +8 -1
  43. package/lib/element/topLevelAssertion/conjecture.js +8 -1
  44. package/lib/element/topLevelAssertion/lemma.js +8 -1
  45. package/lib/element/topLevelAssertion/theorem.js +8 -1
  46. package/lib/element/topLevelAssertion.js +3 -7
  47. package/lib/element/topLevelMetaAssertion/metaLemma.js +8 -1
  48. package/lib/element/topLevelMetaAssertion/metatheorem.js +8 -1
  49. package/lib/element/type.js +8 -1
  50. package/lib/element/typePrefix.js +8 -1
  51. package/lib/element/variable.js +8 -3
  52. package/lib/preamble.js +1 -2
  53. package/lib/process/assign.js +2 -3
  54. package/lib/utilities/substitutions.js +2 -2
  55. package/package.json +2 -2
  56. package/src/context/ephemeral.js +64 -32
  57. package/src/context/file/nominal.js +82 -17
  58. package/src/context/liminal.js +21 -46
  59. package/src/context/scoped.js +47 -31
  60. package/src/context.js +4 -4
  61. package/src/element/assertion.js +4 -8
  62. package/src/element/assumption.js +9 -2
  63. package/src/element/combinator.js +7 -0
  64. package/src/element/conclusion.js +7 -0
  65. package/src/element/constructor.js +7 -0
  66. package/src/element/declaration.js +1 -3
  67. package/src/element/deduction.js +7 -0
  68. package/src/element/derivation.js +7 -0
  69. package/src/element/equality.js +7 -0
  70. package/src/element/equivalence.js +8 -0
  71. package/src/element/equivalences.js +7 -0
  72. package/src/element/error.js +5 -2
  73. package/src/element/hypothesis.js +7 -0
  74. package/src/element/judgement.js +8 -2
  75. package/src/element/label.js +7 -0
  76. package/src/element/metaType.js +7 -0
  77. package/src/element/metavariable.js +4 -11
  78. package/src/element/parameter.js +7 -0
  79. package/src/element/procedureCall.js +21 -14
  80. package/src/element/procedureReference.js +13 -0
  81. package/src/element/proof.js +7 -0
  82. package/src/element/proofAssertion.js +7 -0
  83. package/src/element/property.js +7 -0
  84. package/src/element/propertyRelation.js +7 -0
  85. package/src/element/reference.js +8 -7
  86. package/src/element/rule.js +8 -9
  87. package/src/element/section.js +7 -0
  88. package/src/element/signature.js +7 -0
  89. package/src/element/statement.js +9 -14
  90. package/src/element/subDerivation.js +7 -0
  91. package/src/element/subproof.js +7 -0
  92. package/src/element/substitution/frame.js +2 -2
  93. package/src/element/substitution/reference.js +2 -2
  94. package/src/element/substitution/statement.js +2 -2
  95. package/src/element/substitution/term.js +2 -2
  96. package/src/element/substitution.js +0 -4
  97. package/src/element/topLevelAssertion/axiom.js +7 -0
  98. package/src/element/topLevelAssertion/conjecture.js +7 -0
  99. package/src/element/topLevelAssertion/lemma.js +7 -0
  100. package/src/element/topLevelAssertion/theorem.js +7 -0
  101. package/src/element/topLevelAssertion.js +1 -9
  102. package/src/element/topLevelMetaAssertion/metaLemma.js +7 -0
  103. package/src/element/topLevelMetaAssertion/metatheorem.js +7 -0
  104. package/src/element/type.js +7 -0
  105. package/src/element/typePrefix.js +7 -0
  106. package/src/element/variable.js +7 -4
  107. package/src/preamble.js +0 -1
  108. package/src/process/assign.js +1 -3
  109. package/src/utilities/substitutions.js +1 -1
  110. package/lib/element/substitutions.js +0 -225
  111. package/src/element/substitutions.js +0 -84
@@ -24,8 +24,7 @@ _export(exports, {
24
24
  });
25
25
  function variableAssignmentFromVariable(variable) {
26
26
  return function(context) {
27
- var nested = false;
28
- context.addVariable(variable, nested);
27
+ context.addVariable(variable);
29
28
  var variableTypeString = variable.getTypeString(), variableString = variable.getString(), assigned = true;
30
29
  assigned ? context.trace("Assigned the '".concat(variableString, "' variable with type '").concat(variableTypeString, "'.")) : context.debug("Unable to assign the '".concat(variableString, "' variable with type '").concat(variableTypeString, "'."));
31
30
  return assigned;
@@ -55,4 +54,4 @@ function assignAssignments(assignments, context) {
55
54
  return assignmentsAssigned;
56
55
  }
57
56
 
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm9jZXNzL2Fzc2lnbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhYmxlQXNzaWdubWVudEZyb21WYXJpYWJsZSh2YXJpYWJsZSkge1xuICByZXR1cm4gZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICBjb25zdCBuZXN0ZWQgPSBmYWxzZTtcblxuICAgIGNvbnRleHQuYWRkVmFyaWFibGUodmFyaWFibGUsIG5lc3RlZCk7XG5cbiAgICBjb25zdCB2YXJpYWJsZVR5cGVTdHJpbmcgPSB2YXJpYWJsZS5nZXRUeXBlU3RyaW5nKCksXG4gICAgICAgICAgdmFyaWFibGVTdHJpbmcgPSB2YXJpYWJsZS5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBhc3NpZ25lZCA9IHRydWU7XG5cbiAgICBhc3NpZ25lZCA/XG4gICAgICBjb250ZXh0LnRyYWNlKGBBc3NpZ25lZCB0aGUgJyR7dmFyaWFibGVTdHJpbmd9JyB2YXJpYWJsZSB3aXRoIHR5cGUgJyR7dmFyaWFibGVUeXBlU3RyaW5nfScuYCkgOlxuICAgICAgICBjb250ZXh0LmRlYnVnKGBVbmFibGUgdG8gYXNzaWduIHRoZSAnJHt2YXJpYWJsZVN0cmluZ30nIHZhcmlhYmxlIHdpdGggdHlwZSAnJHt2YXJpYWJsZVR5cGVTdHJpbmd9Jy5gKTtcblxuICAgIHJldHVybiBhc3NpZ25lZDtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVxdWFsaXR5QXNzaWdubWVudEZyb21FcXVhbGl0eShlcXVhbGl0eSkge1xuICByZXR1cm4gZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICBjb25zdCBlcXVhbGl0eVN0cmluZyA9IGVxdWFsaXR5LmdldFN0cmluZygpLFxuICAgICAgICAgIGVxdWFsaXR5QWRkZWQgPSBjb250ZXh0LmFkZEVxdWFsaXR5KGVxdWFsaXR5KSxcbiAgICAgICAgICBhc3NpZ25lZCA9IGVxdWFsaXR5QWRkZWQ7IC8vL1xuXG4gICAgYXNzaWduZWQgP1xuICAgICAgY29udGV4dC50cmFjZShgQXNzaWduZWQgdGhlICcke2VxdWFsaXR5U3RyaW5nfScgZXF1YWxpdHkuYCkgOlxuICAgICAgICBjb250ZXh0LmRlYnVnKGBVbmFibGUgdG8gYXNzaWduIHRoZSAnJHtlcXVhbGl0eVN0cmluZ30nIGVxdWFsaXR5LmApO1xuXG4gICAgcmV0dXJuIGFzc2lnbmVkO1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24ganVkZ2VtZW50QXNzaWdubWVudEZyb21KdWRnZW1lbnQoanVkZ2VtZW50KSB7XG4gIHJldHVybiBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgIGNvbnN0IGp1ZGdlbWVudFN0cmluZyA9IGp1ZGdlbWVudC5nZXRTdHJpbmcoKSxcbiAgICAgICAgICBqdWRnZW1lbnRBZGRlZCA9IGNvbnRleHQuYWRkSnVkZ2VtZW50KGp1ZGdlbWVudCksXG4gICAgICAgICAgYXNzaWduZWQgPSBqdWRnZW1lbnRBZGRlZDsgLy8vXG5cbiAgICBhc3NpZ25lZCA/XG4gICAgICBjb250ZXh0LnRyYWNlKGBBc3NpZ25lZCB0aGUgJyR7anVkZ2VtZW50U3RyaW5nfScganVkZ2VtZW50LmApIDpcbiAgICAgICAgY29udGV4dC5kZWJ1ZyhgVW5hYmxlIHRvIGFzc2lnbiB0aGUgJyR7anVkZ2VtZW50U3RyaW5nfScganVkZ2VtZW50LmApO1xuXG4gICAgcmV0dXJuIGFzc2lnbmVkO1xuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBhc3NpZ25Bc3NpZ25tZW50cyhhc3NpZ25tZW50cywgY29udGV4dCkge1xuICBjb25zdCBhc3NpZ25tZW50c0Fzc2lnbmVkID0gYXNzaWdubWVudHMuZXZlcnkoKGFzc2lnbWVudCkgPT4ge1xuICAgIGNvbnN0IGFzc2lnbmVkID0gYXNzaWdtZW50KGNvbnRleHQpO1xuXG4gICAgaWYgKGFzc2lnbmVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBhc3NpZ25tZW50c0Fzc2lnbmVkO1xufVxuIl0sIm5hbWVzIjpbImFzc2lnbkFzc2lnbm1lbnRzIiwiZXF1YWxpdHlBc3NpZ25tZW50RnJvbUVxdWFsaXR5IiwianVkZ2VtZW50QXNzaWdubWVudEZyb21KdWRnZW1lbnQiLCJ2YXJpYWJsZUFzc2lnbm1lbnRGcm9tVmFyaWFibGUiLCJ2YXJpYWJsZSIsImNvbnRleHQiLCJuZXN0ZWQiLCJhZGRWYXJpYWJsZSIsInZhcmlhYmxlVHlwZVN0cmluZyIsImdldFR5cGVTdHJpbmciLCJ2YXJpYWJsZVN0cmluZyIsImdldFN0cmluZyIsImFzc2lnbmVkIiwidHJhY2UiLCJkZWJ1ZyIsImVxdWFsaXR5IiwiZXF1YWxpdHlTdHJpbmciLCJlcXVhbGl0eUFkZGVkIiwiYWRkRXF1YWxpdHkiLCJqdWRnZW1lbnQiLCJqdWRnZW1lbnRTdHJpbmciLCJqdWRnZW1lbnRBZGRlZCIsImFkZEp1ZGdlbWVudCIsImFzc2lnbm1lbnRzIiwiYXNzaWdubWVudHNBc3NpZ25lZCIsImV2ZXJ5IiwiYXNzaWdtZW50Il0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUFnREE7ZUFBd0JBOztRQTVCUkM7ZUFBQUE7O1FBY0FDO2VBQUFBOztRQWhDQUM7ZUFBQUE7OztBQUFULFNBQVNBLCtCQUErQkMsUUFBUTtJQUNyRCxPQUFPLFNBQVVDLE9BQU87UUFDdEIsSUFBTUMsU0FBUztRQUVmRCxRQUFRRSxXQUFXLENBQUNILFVBQVVFO1FBRTlCLElBQU1FLHFCQUFxQkosU0FBU0ssYUFBYSxJQUMzQ0MsaUJBQWlCTixTQUFTTyxTQUFTLElBQ25DQyxXQUFXO1FBRWpCQSxXQUNFUCxRQUFRUSxLQUFLLENBQUMsQUFBQyxpQkFBdURMLE9BQXZDRSxnQkFBZSwwQkFBMkMsT0FBbkJGLG9CQUFtQixTQUN2RkgsUUFBUVMsS0FBSyxDQUFDLEFBQUMseUJBQStETixPQUF2Q0UsZ0JBQWUsMEJBQTJDLE9BQW5CRixvQkFBbUI7UUFFckcsT0FBT0k7SUFDVDtBQUNGO0FBRU8sU0FBU1gsK0JBQStCYyxRQUFRO0lBQ3JELE9BQU8sU0FBVVYsT0FBTztRQUN0QixJQUFNVyxpQkFBaUJELFNBQVNKLFNBQVMsSUFDbkNNLGdCQUFnQlosUUFBUWEsV0FBVyxDQUFDSCxXQUNwQ0gsV0FBV0ssZUFBZSxHQUFHO1FBRW5DTCxXQUNFUCxRQUFRUSxLQUFLLENBQUMsQUFBQyxpQkFBK0IsT0FBZkcsZ0JBQWUsa0JBQzVDWCxRQUFRUyxLQUFLLENBQUMsQUFBQyx5QkFBdUMsT0FBZkUsZ0JBQWU7UUFFMUQsT0FBT0o7SUFDVDtBQUNGO0FBRU8sU0FBU1YsaUNBQWlDaUIsU0FBUztJQUN4RCxPQUFPLFNBQVVkLE9BQU87UUFDdEIsSUFBTWUsa0JBQWtCRCxVQUFVUixTQUFTLElBQ3JDVSxpQkFBaUJoQixRQUFRaUIsWUFBWSxDQUFDSCxZQUN0Q1AsV0FBV1MsZ0JBQWdCLEdBQUc7UUFFcENULFdBQ0VQLFFBQVFRLEtBQUssQ0FBQyxBQUFDLGlCQUFnQyxPQUFoQk8saUJBQWdCLG1CQUM3Q2YsUUFBUVMsS0FBSyxDQUFDLEFBQUMseUJBQXdDLE9BQWhCTSxpQkFBZ0I7UUFFM0QsT0FBT1I7SUFDVDtBQUNGO0FBRWUsU0FBU1osa0JBQWtCdUIsV0FBVyxFQUFFbEIsT0FBTztJQUM1RCxJQUFNbUIsc0JBQXNCRCxZQUFZRSxLQUFLLENBQUMsU0FBQ0M7UUFDN0MsSUFBTWQsV0FBV2MsVUFBVXJCO1FBRTNCLElBQUlPLFVBQVU7WUFDWixPQUFPO1FBQ1Q7SUFDRjtJQUVBLE9BQU9ZO0FBQ1QifQ==
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm9jZXNzL2Fzc2lnbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIHZhcmlhYmxlQXNzaWdubWVudEZyb21WYXJpYWJsZSh2YXJpYWJsZSkge1xuICByZXR1cm4gZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICBjb250ZXh0LmFkZFZhcmlhYmxlKHZhcmlhYmxlKTtcblxuICAgIGNvbnN0IHZhcmlhYmxlVHlwZVN0cmluZyA9IHZhcmlhYmxlLmdldFR5cGVTdHJpbmcoKSxcbiAgICAgICAgICB2YXJpYWJsZVN0cmluZyA9IHZhcmlhYmxlLmdldFN0cmluZygpLFxuICAgICAgICAgIGFzc2lnbmVkID0gdHJ1ZTtcblxuICAgIGFzc2lnbmVkID9cbiAgICAgIGNvbnRleHQudHJhY2UoYEFzc2lnbmVkIHRoZSAnJHt2YXJpYWJsZVN0cmluZ30nIHZhcmlhYmxlIHdpdGggdHlwZSAnJHt2YXJpYWJsZVR5cGVTdHJpbmd9Jy5gKSA6XG4gICAgICAgIGNvbnRleHQuZGVidWcoYFVuYWJsZSB0byBhc3NpZ24gdGhlICcke3ZhcmlhYmxlU3RyaW5nfScgdmFyaWFibGUgd2l0aCB0eXBlICcke3ZhcmlhYmxlVHlwZVN0cmluZ30nLmApO1xuXG4gICAgcmV0dXJuIGFzc2lnbmVkO1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXF1YWxpdHlBc3NpZ25tZW50RnJvbUVxdWFsaXR5KGVxdWFsaXR5KSB7XG4gIHJldHVybiBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgIGNvbnN0IGVxdWFsaXR5U3RyaW5nID0gZXF1YWxpdHkuZ2V0U3RyaW5nKCksXG4gICAgICAgICAgZXF1YWxpdHlBZGRlZCA9IGNvbnRleHQuYWRkRXF1YWxpdHkoZXF1YWxpdHkpLFxuICAgICAgICAgIGFzc2lnbmVkID0gZXF1YWxpdHlBZGRlZDsgLy8vXG5cbiAgICBhc3NpZ25lZCA/XG4gICAgICBjb250ZXh0LnRyYWNlKGBBc3NpZ25lZCB0aGUgJyR7ZXF1YWxpdHlTdHJpbmd9JyBlcXVhbGl0eS5gKSA6XG4gICAgICAgIGNvbnRleHQuZGVidWcoYFVuYWJsZSB0byBhc3NpZ24gdGhlICcke2VxdWFsaXR5U3RyaW5nfScgZXF1YWxpdHkuYCk7XG5cbiAgICByZXR1cm4gYXNzaWduZWQ7XG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBqdWRnZW1lbnRBc3NpZ25tZW50RnJvbUp1ZGdlbWVudChqdWRnZW1lbnQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgY29uc3QganVkZ2VtZW50U3RyaW5nID0ganVkZ2VtZW50LmdldFN0cmluZygpLFxuICAgICAgICAgIGp1ZGdlbWVudEFkZGVkID0gY29udGV4dC5hZGRKdWRnZW1lbnQoanVkZ2VtZW50KSxcbiAgICAgICAgICBhc3NpZ25lZCA9IGp1ZGdlbWVudEFkZGVkOyAvLy9cblxuICAgIGFzc2lnbmVkID9cbiAgICAgIGNvbnRleHQudHJhY2UoYEFzc2lnbmVkIHRoZSAnJHtqdWRnZW1lbnRTdHJpbmd9JyBqdWRnZW1lbnQuYCkgOlxuICAgICAgICBjb250ZXh0LmRlYnVnKGBVbmFibGUgdG8gYXNzaWduIHRoZSAnJHtqdWRnZW1lbnRTdHJpbmd9JyBqdWRnZW1lbnQuYCk7XG5cbiAgICByZXR1cm4gYXNzaWduZWQ7XG4gIH07XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGFzc2lnbkFzc2lnbm1lbnRzKGFzc2lnbm1lbnRzLCBjb250ZXh0KSB7XG4gIGNvbnN0IGFzc2lnbm1lbnRzQXNzaWduZWQgPSBhc3NpZ25tZW50cy5ldmVyeSgoYXNzaWdtZW50KSA9PiB7XG4gICAgY29uc3QgYXNzaWduZWQgPSBhc3NpZ21lbnQoY29udGV4dCk7XG5cbiAgICBpZiAoYXNzaWduZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGFzc2lnbm1lbnRzQXNzaWduZWQ7XG59XG4iXSwibmFtZXMiOlsiYXNzaWduQXNzaWdubWVudHMiLCJlcXVhbGl0eUFzc2lnbm1lbnRGcm9tRXF1YWxpdHkiLCJqdWRnZW1lbnRBc3NpZ25tZW50RnJvbUp1ZGdlbWVudCIsInZhcmlhYmxlQXNzaWdubWVudEZyb21WYXJpYWJsZSIsInZhcmlhYmxlIiwiY29udGV4dCIsImFkZFZhcmlhYmxlIiwidmFyaWFibGVUeXBlU3RyaW5nIiwiZ2V0VHlwZVN0cmluZyIsInZhcmlhYmxlU3RyaW5nIiwiZ2V0U3RyaW5nIiwiYXNzaWduZWQiLCJ0cmFjZSIsImRlYnVnIiwiZXF1YWxpdHkiLCJlcXVhbGl0eVN0cmluZyIsImVxdWFsaXR5QWRkZWQiLCJhZGRFcXVhbGl0eSIsImp1ZGdlbWVudCIsImp1ZGdlbWVudFN0cmluZyIsImp1ZGdlbWVudEFkZGVkIiwiYWRkSnVkZ2VtZW50IiwiYXNzaWdubWVudHMiLCJhc3NpZ25tZW50c0Fzc2lnbmVkIiwiZXZlcnkiLCJhc3NpZ21lbnQiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQThDQTtlQUF3QkE7O1FBNUJSQztlQUFBQTs7UUFjQUM7ZUFBQUE7O1FBOUJBQztlQUFBQTs7O0FBQVQsU0FBU0EsK0JBQStCQyxRQUFRO0lBQ3JELE9BQU8sU0FBVUMsT0FBTztRQUN0QkEsUUFBUUMsV0FBVyxDQUFDRjtRQUVwQixJQUFNRyxxQkFBcUJILFNBQVNJLGFBQWEsSUFDM0NDLGlCQUFpQkwsU0FBU00sU0FBUyxJQUNuQ0MsV0FBVztRQUVqQkEsV0FDRU4sUUFBUU8sS0FBSyxDQUFDLEFBQUMsaUJBQXVETCxPQUF2Q0UsZ0JBQWUsMEJBQTJDLE9BQW5CRixvQkFBbUIsU0FDdkZGLFFBQVFRLEtBQUssQ0FBQyxBQUFDLHlCQUErRE4sT0FBdkNFLGdCQUFlLDBCQUEyQyxPQUFuQkYsb0JBQW1CO1FBRXJHLE9BQU9JO0lBQ1Q7QUFDRjtBQUVPLFNBQVNWLCtCQUErQmEsUUFBUTtJQUNyRCxPQUFPLFNBQVVULE9BQU87UUFDdEIsSUFBTVUsaUJBQWlCRCxTQUFTSixTQUFTLElBQ25DTSxnQkFBZ0JYLFFBQVFZLFdBQVcsQ0FBQ0gsV0FDcENILFdBQVdLLGVBQWUsR0FBRztRQUVuQ0wsV0FDRU4sUUFBUU8sS0FBSyxDQUFDLEFBQUMsaUJBQStCLE9BQWZHLGdCQUFlLGtCQUM1Q1YsUUFBUVEsS0FBSyxDQUFDLEFBQUMseUJBQXVDLE9BQWZFLGdCQUFlO1FBRTFELE9BQU9KO0lBQ1Q7QUFDRjtBQUVPLFNBQVNULGlDQUFpQ2dCLFNBQVM7SUFDeEQsT0FBTyxTQUFVYixPQUFPO1FBQ3RCLElBQU1jLGtCQUFrQkQsVUFBVVIsU0FBUyxJQUNyQ1UsaUJBQWlCZixRQUFRZ0IsWUFBWSxDQUFDSCxZQUN0Q1AsV0FBV1MsZ0JBQWdCLEdBQUc7UUFFcENULFdBQ0VOLFFBQVFPLEtBQUssQ0FBQyxBQUFDLGlCQUFnQyxPQUFoQk8saUJBQWdCLG1CQUM3Q2QsUUFBUVEsS0FBSyxDQUFDLEFBQUMseUJBQXdDLE9BQWhCTSxpQkFBZ0I7UUFFM0QsT0FBT1I7SUFDVDtBQUNGO0FBRWUsU0FBU1gsa0JBQWtCc0IsV0FBVyxFQUFFakIsT0FBTztJQUM1RCxJQUFNa0Isc0JBQXNCRCxZQUFZRSxLQUFLLENBQUMsU0FBQ0M7UUFDN0MsSUFBTWQsV0FBV2MsVUFBVXBCO1FBRTNCLElBQUlNLFVBQVU7WUFDWixPQUFPO1FBQ1Q7SUFDRjtJQUVBLE9BQU9ZO0FBQ1QifQ==
@@ -95,11 +95,11 @@ function metavariableNamesFromSubstitutions(substitutions) {
95
95
  }
96
96
  });
97
97
  compress(metavariableNames, function(metavariableNameA, metavariableNameB) {
98
- if (metavariableNameB !== metavariableNameB) {
98
+ if (metavariableNameA !== metavariableNameB) {
99
99
  return true;
100
100
  }
101
101
  });
102
102
  return metavariableNames;
103
103
  }
104
104
 
105
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvc3Vic3RpdHV0aW9ucy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYXJyYXlVdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5cbmNvbnN0IHsgY29tcHJlc3MgfSA9IGFycmF5VXRpbGl0aWVzO1xuXG5leHBvcnQgZnVuY3Rpb24gdGVybUZyb21UZXJtQW5kU3Vic3RpdHV0aW9ucyh0ZXJtLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KSB7XG4gIGlmICh0ZXJtICE9PSBudWxsKSB7XG4gICAgY29uc3QgdGVybU5vZGUgPSB0ZXJtLmdldE5vZGUoKSxcbiAgICAgICAgICB0ZXJtU2luZ3VsYXIgPSB0ZXJtLmlzU2luZ3VsYXIoKTtcblxuICAgIHRlcm0gPSBudWxsOyAgLy8vXG5cbiAgICBpZiAodGVybVNpbmd1bGFyKSB7XG4gICAgICBjb25zdCB2YXJpYWJsZUlkZW50aWZpZXIgPSB0ZXJtTm9kZS5nZXRWYXJpYWJsZUlkZW50aWZpZXIoKSxcbiAgICAgICAgICAgIHZhcmlhYmxlID0gZ2VuZXJhbENvbnRleHQuZmluZFZhcmlhYmxlQnlWYXJpYWJsZUlkZW50aWZpZXIodmFyaWFibGVJZGVudGlmaWVyKTtcblxuICAgICAgaWYgKHZhcmlhYmxlICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IHN1YnN0aXR1dGlvbiA9IHNwZWNpZmljQ29udGV4dC5maW5kU3Vic3RpdHV0aW9uQnlWYXJpYWJsZUlkZW50aWZpZXIodmFyaWFibGVJZGVudGlmaWVyKTtcblxuICAgICAgICBpZiAoc3Vic3RpdHV0aW9uICE9PSBudWxsKSB7XG4gICAgICAgICAgY29uc3QgdGVybVN1YnN0aXR1dGlvbiA9IHN1YnN0aXR1dGlvbiwgIC8vL1xuICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50VGVybSA9IHRlcm1TdWJzdGl0dXRpb24uZ2V0UmVwbGFjZW1lbnRUZXJtKCk7XG5cbiAgICAgICAgICB0ZXJtID0gcmVwbGFjZW1lbnRUZXJtOyAvLy9cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0ZXJtO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZnJhbWVGcm9tRnJhbWVBbmRTdWJzdGl0dXRpb25zKGZyYW1lLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KSB7XG4gIGlmIChmcmFtZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IGZyYW1lTm9kZSA9IGZyYW1lLmdldE5vZGUoKSxcbiAgICAgICAgICBmcmFtZVNpbmd1bGFyID0gZnJhbWUuaXNTaW5ndWxhcigpO1xuXG4gICAgZnJhbWUgPSBudWxsOyAgLy8vXG5cbiAgICBpZiAoZnJhbWVTaW5ndWxhcikge1xuICAgICAgY29uc3QgbWV0YXZhcmlhYmxlTmFtZSA9IGZyYW1lTm9kZS5nZXRNZXRhdmFyaWFibGVOYW1lKCksXG4gICAgICAgICAgICBtZXRhdmFyaWFibGUgPSBnZW5lcmFsQ29udGV4dC5maW5kTWV0YXZhcmlhYmxlQnlNZXRhdmFyaWFibGVOYW1lKG1ldGF2YXJpYWJsZU5hbWUpO1xuXG4gICAgICBpZiAobWV0YXZhcmlhYmxlICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IHN1YnN0aXR1dGlvbiA9IHNwZWNpZmljQ29udGV4dC5maW5kU3Vic3RpdHV0aW9uQnlNZXRhdmFyaWFibGVOYW1lKG1ldGF2YXJpYWJsZU5hbWUpO1xuXG4gICAgICAgIGlmIChzdWJzdGl0dXRpb24gIT09IG51bGwpIHtcbiAgICAgICAgICBjb25zdCBmcmFtZVN1YnN0aXR1dGlvbiA9IHN1YnN0aXR1dGlvbiwgLy8vXG4gICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRGcmFtZSA9IGZyYW1lU3Vic3RpdHV0aW9uLmdldFJlcGxhY2VtZW50RnJhbWUoKTtcblxuICAgICAgICAgIGZyYW1lID0gcmVwbGFjZW1lbnRGcmFtZTsgLy8vXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gZnJhbWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGF0ZW1lbnRGcm9tU3RhdGVtZW50QW5kU3Vic3RpdHV0aW9ucyhzdGF0ZW1lbnQsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpIHtcbiAgaWYgKHN0YXRlbWVudCAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnQuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHN0YXRlbWVudFNpbmd1bGFyID0gc3RhdGVtZW50LmlzU2luZ3VsYXIoKTtcblxuICAgIHN0YXRlbWVudCA9IG51bGw7XG5cbiAgICBpZiAoc3RhdGVtZW50U2luZ3VsYXIpIHtcbiAgICAgIGxldCBzdWJzdGl0dXRpb24gPSBudWxsO1xuXG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25Ob2RlID0gc3RhdGVtZW50Tm9kZS5nZXRTdWJzdGl0dXRpb25Ob2RlKCk7XG5cbiAgICAgIGlmIChzdWJzdGl0dXRpb25Ob2RlICE9PSBudWxsKSB7XG4gICAgICAgIGxldCBjb250ZXh0ID0gZ2VuZXJhbENvbnRleHQ7IC8vL1xuXG4gICAgICAgIGdlbmVyYWxDb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0OyAvLy9cblxuICAgICAgICBzcGVjaWZpY0NvbnRleHQgPSBjb250ZXh0OyAgLy8vXG5cbiAgICAgICAgc3Vic3RpdHV0aW9uID0gc3BlY2lmaWNDb250ZXh0LmZpbmRTdWJzdGl0dXRpb25CeVN1YnN0aXR1dGlvbk5vZGUoc3Vic3RpdHV0aW9uTm9kZSk7XG5cbiAgICAgICAgY29udGV4dCA9IGdlbmVyYWxDb250ZXh0OyAvLy9cblxuICAgICAgICBnZW5lcmFsQ29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgLy8vXG5cbiAgICAgICAgc3BlY2lmaWNDb250ZXh0ID0gY29udGV4dDsgIC8vL1xuICAgICAgfVxuXG4gICAgICBjb25zdCBtZXRhdmFyaWFibGVOYW1lID0gc3RhdGVtZW50Tm9kZS5nZXRNZXRhdmFyaWFibGVOYW1lKCksXG4gICAgICAgICAgICBtZXRhdmFyaWFibGUgPSBnZW5lcmFsQ29udGV4dC5maW5kTWV0YXZhcmlhYmxlQnlNZXRhdmFyaWFibGVOYW1lKG1ldGF2YXJpYWJsZU5hbWUpO1xuXG4gICAgICBpZiAobWV0YXZhcmlhYmxlICE9PSBudWxsKSB7XG4gICAgICAgIHN1YnN0aXR1dGlvbiA9IChzdWJzdGl0dXRpb24gIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpY0NvbnRleHQuZmluZFN1YnN0aXR1dGlvbkJ5TWV0YXZhcmlhYmxlTmFtZUFuZFN1YnN0aXR1dGlvbihtZXRhdmFyaWFibGVOYW1lLCBzdWJzdGl0dXRpb24pIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmljQ29udGV4dC5maW5kU3Vic3RpdHV0aW9uQnlNZXRhdmFyaWFibGVOYW1lKG1ldGF2YXJpYWJsZU5hbWUpO1xuXG4gICAgICAgIGlmIChzdWJzdGl0dXRpb24gIT09IG51bGwpIHtcbiAgICAgICAgICBjb25zdCBzdGF0ZW1lbnRTdWJzdGl0dXRpb24gPSBzdWJzdGl0dXRpb24sIC8vL1xuICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50U3RhdGVtZW50ID0gc3RhdGVtZW50U3Vic3RpdHV0aW9uLmdldFJlcGxhY2VtZW50U3RhdGVtZW50KCk7XG5cbiAgICAgICAgICBzdGF0ZW1lbnQgPSByZXBsYWNlbWVudFN0YXRlbWVudDsgLy8vXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3RhdGVtZW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YXZhcmlhYmxlTmFtZXNGcm9tU3Vic3RpdHV0aW9ucyhzdWJzdGl0dXRpb25zKSB7XG4gIGNvbnN0IG1ldGF2YXJpYWJsZU5hbWVzID0gW107XG5cbiAgc3Vic3RpdHV0aW9ucy5mb3JFYWNoKChzdWJzdGl0dXRpb24pID0+IHtcbiAgICBjb25zdCBtZXRhdmFyaWFibGVOYW1lID0gc3Vic3RpdHV0aW9uLmdldE1ldGF2YXJpYWJsZU5hbWUoKTtcblxuICAgIGlmIChtZXRhdmFyaWFibGVOYW1lICE9PSBudWxsKSB7XG4gICAgICBtZXRhdmFyaWFibGVOYW1lcy5wdXNoKG1ldGF2YXJpYWJsZU5hbWUpO1xuICAgIH1cbiAgfSk7XG5cbiAgY29tcHJlc3MobWV0YXZhcmlhYmxlTmFtZXMsIChtZXRhdmFyaWFibGVOYW1lQSwgbWV0YXZhcmlhYmxlTmFtZUIpID0+IHtcbiAgICBpZiAobWV0YXZhcmlhYmxlTmFtZUIgIT09IG1ldGF2YXJpYWJsZU5hbWVCKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBtZXRhdmFyaWFibGVOYW1lcztcbn1cbiJdLCJuYW1lcyI6WyJmcmFtZUZyb21GcmFtZUFuZFN1YnN0aXR1dGlvbnMiLCJtZXRhdmFyaWFibGVOYW1lc0Zyb21TdWJzdGl0dXRpb25zIiwic3RhdGVtZW50RnJvbVN0YXRlbWVudEFuZFN1YnN0aXR1dGlvbnMiLCJ0ZXJtRnJvbVRlcm1BbmRTdWJzdGl0dXRpb25zIiwiY29tcHJlc3MiLCJhcnJheVV0aWxpdGllcyIsInRlcm0iLCJnZW5lcmFsQ29udGV4dCIsInNwZWNpZmljQ29udGV4dCIsInRlcm1Ob2RlIiwiZ2V0Tm9kZSIsInRlcm1TaW5ndWxhciIsImlzU2luZ3VsYXIiLCJ2YXJpYWJsZUlkZW50aWZpZXIiLCJnZXRWYXJpYWJsZUlkZW50aWZpZXIiLCJ2YXJpYWJsZSIsImZpbmRWYXJpYWJsZUJ5VmFyaWFibGVJZGVudGlmaWVyIiwic3Vic3RpdHV0aW9uIiwiZmluZFN1YnN0aXR1dGlvbkJ5VmFyaWFibGVJZGVudGlmaWVyIiwidGVybVN1YnN0aXR1dGlvbiIsInJlcGxhY2VtZW50VGVybSIsImdldFJlcGxhY2VtZW50VGVybSIsImZyYW1lIiwiZnJhbWVOb2RlIiwiZnJhbWVTaW5ndWxhciIsIm1ldGF2YXJpYWJsZU5hbWUiLCJnZXRNZXRhdmFyaWFibGVOYW1lIiwibWV0YXZhcmlhYmxlIiwiZmluZE1ldGF2YXJpYWJsZUJ5TWV0YXZhcmlhYmxlTmFtZSIsImZpbmRTdWJzdGl0dXRpb25CeU1ldGF2YXJpYWJsZU5hbWUiLCJmcmFtZVN1YnN0aXR1dGlvbiIsInJlcGxhY2VtZW50RnJhbWUiLCJnZXRSZXBsYWNlbWVudEZyYW1lIiwic3RhdGVtZW50Iiwic3RhdGVtZW50Tm9kZSIsInN0YXRlbWVudFNpbmd1bGFyIiwic3Vic3RpdHV0aW9uTm9kZSIsImdldFN1YnN0aXR1dGlvbk5vZGUiLCJjb250ZXh0IiwiZmluZFN1YnN0aXR1dGlvbkJ5U3Vic3RpdHV0aW9uTm9kZSIsImZpbmRTdWJzdGl0dXRpb25CeU1ldGF2YXJpYWJsZU5hbWVBbmRTdWJzdGl0dXRpb24iLCJzdGF0ZW1lbnRTdWJzdGl0dXRpb24iLCJyZXBsYWNlbWVudFN0YXRlbWVudCIsImdldFJlcGxhY2VtZW50U3RhdGVtZW50Iiwic3Vic3RpdHV0aW9ucyIsIm1ldGF2YXJpYWJsZU5hbWVzIiwiZm9yRWFjaCIsInB1c2giLCJtZXRhdmFyaWFibGVOYW1lQSIsIm1ldGF2YXJpYWJsZU5hbWVCIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUFpQ2dCQTtlQUFBQTs7UUE0RUFDO2VBQUFBOztRQWpEQUM7ZUFBQUE7O1FBdERBQztlQUFBQTs7O3lCQUplO0FBRS9CLElBQU0sQUFBRUMsV0FBYUMseUJBQWMsQ0FBM0JEO0FBRUQsU0FBU0QsNkJBQTZCRyxJQUFJLEVBQUVDLGNBQWMsRUFBRUMsZUFBZTtJQUNoRixJQUFJRixTQUFTLE1BQU07UUFDakIsSUFBTUcsV0FBV0gsS0FBS0ksT0FBTyxJQUN2QkMsZUFBZUwsS0FBS00sVUFBVTtRQUVwQ04sT0FBTyxNQUFPLEdBQUc7UUFFakIsSUFBSUssY0FBYztZQUNoQixJQUFNRSxxQkFBcUJKLFNBQVNLLHFCQUFxQixJQUNuREMsV0FBV1IsZUFBZVMsZ0NBQWdDLENBQUNIO1lBRWpFLElBQUlFLGFBQWEsTUFBTTtnQkFDckIsSUFBTUUsZUFBZVQsZ0JBQWdCVSxvQ0FBb0MsQ0FB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
105
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvc3Vic3RpdHV0aW9ucy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYXJyYXlVdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5cbmNvbnN0IHsgY29tcHJlc3MgfSA9IGFycmF5VXRpbGl0aWVzO1xuXG5leHBvcnQgZnVuY3Rpb24gdGVybUZyb21UZXJtQW5kU3Vic3RpdHV0aW9ucyh0ZXJtLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KSB7XG4gIGlmICh0ZXJtICE9PSBudWxsKSB7XG4gICAgY29uc3QgdGVybU5vZGUgPSB0ZXJtLmdldE5vZGUoKSxcbiAgICAgICAgICB0ZXJtU2luZ3VsYXIgPSB0ZXJtLmlzU2luZ3VsYXIoKTtcblxuICAgIHRlcm0gPSBudWxsOyAgLy8vXG5cbiAgICBpZiAodGVybVNpbmd1bGFyKSB7XG4gICAgICBjb25zdCB2YXJpYWJsZUlkZW50aWZpZXIgPSB0ZXJtTm9kZS5nZXRWYXJpYWJsZUlkZW50aWZpZXIoKSxcbiAgICAgICAgICAgIHZhcmlhYmxlID0gZ2VuZXJhbENvbnRleHQuZmluZFZhcmlhYmxlQnlWYXJpYWJsZUlkZW50aWZpZXIodmFyaWFibGVJZGVudGlmaWVyKTtcblxuICAgICAgaWYgKHZhcmlhYmxlICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IHN1YnN0aXR1dGlvbiA9IHNwZWNpZmljQ29udGV4dC5maW5kU3Vic3RpdHV0aW9uQnlWYXJpYWJsZUlkZW50aWZpZXIodmFyaWFibGVJZGVudGlmaWVyKTtcblxuICAgICAgICBpZiAoc3Vic3RpdHV0aW9uICE9PSBudWxsKSB7XG4gICAgICAgICAgY29uc3QgdGVybVN1YnN0aXR1dGlvbiA9IHN1YnN0aXR1dGlvbiwgIC8vL1xuICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50VGVybSA9IHRlcm1TdWJzdGl0dXRpb24uZ2V0UmVwbGFjZW1lbnRUZXJtKCk7XG5cbiAgICAgICAgICB0ZXJtID0gcmVwbGFjZW1lbnRUZXJtOyAvLy9cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0ZXJtO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZnJhbWVGcm9tRnJhbWVBbmRTdWJzdGl0dXRpb25zKGZyYW1lLCBnZW5lcmFsQ29udGV4dCwgc3BlY2lmaWNDb250ZXh0KSB7XG4gIGlmIChmcmFtZSAhPT0gbnVsbCkge1xuICAgIGNvbnN0IGZyYW1lTm9kZSA9IGZyYW1lLmdldE5vZGUoKSxcbiAgICAgICAgICBmcmFtZVNpbmd1bGFyID0gZnJhbWUuaXNTaW5ndWxhcigpO1xuXG4gICAgZnJhbWUgPSBudWxsOyAgLy8vXG5cbiAgICBpZiAoZnJhbWVTaW5ndWxhcikge1xuICAgICAgY29uc3QgbWV0YXZhcmlhYmxlTmFtZSA9IGZyYW1lTm9kZS5nZXRNZXRhdmFyaWFibGVOYW1lKCksXG4gICAgICAgICAgICBtZXRhdmFyaWFibGUgPSBnZW5lcmFsQ29udGV4dC5maW5kTWV0YXZhcmlhYmxlQnlNZXRhdmFyaWFibGVOYW1lKG1ldGF2YXJpYWJsZU5hbWUpO1xuXG4gICAgICBpZiAobWV0YXZhcmlhYmxlICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IHN1YnN0aXR1dGlvbiA9IHNwZWNpZmljQ29udGV4dC5maW5kU3Vic3RpdHV0aW9uQnlNZXRhdmFyaWFibGVOYW1lKG1ldGF2YXJpYWJsZU5hbWUpO1xuXG4gICAgICAgIGlmIChzdWJzdGl0dXRpb24gIT09IG51bGwpIHtcbiAgICAgICAgICBjb25zdCBmcmFtZVN1YnN0aXR1dGlvbiA9IHN1YnN0aXR1dGlvbiwgLy8vXG4gICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRGcmFtZSA9IGZyYW1lU3Vic3RpdHV0aW9uLmdldFJlcGxhY2VtZW50RnJhbWUoKTtcblxuICAgICAgICAgIGZyYW1lID0gcmVwbGFjZW1lbnRGcmFtZTsgLy8vXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gZnJhbWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzdGF0ZW1lbnRGcm9tU3RhdGVtZW50QW5kU3Vic3RpdHV0aW9ucyhzdGF0ZW1lbnQsIGdlbmVyYWxDb250ZXh0LCBzcGVjaWZpY0NvbnRleHQpIHtcbiAgaWYgKHN0YXRlbWVudCAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHN0YXRlbWVudE5vZGUgPSBzdGF0ZW1lbnQuZ2V0Tm9kZSgpLFxuICAgICAgICAgIHN0YXRlbWVudFNpbmd1bGFyID0gc3RhdGVtZW50LmlzU2luZ3VsYXIoKTtcblxuICAgIHN0YXRlbWVudCA9IG51bGw7XG5cbiAgICBpZiAoc3RhdGVtZW50U2luZ3VsYXIpIHtcbiAgICAgIGxldCBzdWJzdGl0dXRpb24gPSBudWxsO1xuXG4gICAgICBjb25zdCBzdWJzdGl0dXRpb25Ob2RlID0gc3RhdGVtZW50Tm9kZS5nZXRTdWJzdGl0dXRpb25Ob2RlKCk7XG5cbiAgICAgIGlmIChzdWJzdGl0dXRpb25Ob2RlICE9PSBudWxsKSB7XG4gICAgICAgIGxldCBjb250ZXh0ID0gZ2VuZXJhbENvbnRleHQ7IC8vL1xuXG4gICAgICAgIGdlbmVyYWxDb250ZXh0ID0gc3BlY2lmaWNDb250ZXh0OyAvLy9cblxuICAgICAgICBzcGVjaWZpY0NvbnRleHQgPSBjb250ZXh0OyAgLy8vXG5cbiAgICAgICAgc3Vic3RpdHV0aW9uID0gc3BlY2lmaWNDb250ZXh0LmZpbmRTdWJzdGl0dXRpb25CeVN1YnN0aXR1dGlvbk5vZGUoc3Vic3RpdHV0aW9uTm9kZSk7XG5cbiAgICAgICAgY29udGV4dCA9IGdlbmVyYWxDb250ZXh0OyAvLy9cblxuICAgICAgICBnZW5lcmFsQ29udGV4dCA9IHNwZWNpZmljQ29udGV4dDsgLy8vXG5cbiAgICAgICAgc3BlY2lmaWNDb250ZXh0ID0gY29udGV4dDsgIC8vL1xuICAgICAgfVxuXG4gICAgICBjb25zdCBtZXRhdmFyaWFibGVOYW1lID0gc3RhdGVtZW50Tm9kZS5nZXRNZXRhdmFyaWFibGVOYW1lKCksXG4gICAgICAgICAgICBtZXRhdmFyaWFibGUgPSBnZW5lcmFsQ29udGV4dC5maW5kTWV0YXZhcmlhYmxlQnlNZXRhdmFyaWFibGVOYW1lKG1ldGF2YXJpYWJsZU5hbWUpO1xuXG4gICAgICBpZiAobWV0YXZhcmlhYmxlICE9PSBudWxsKSB7XG4gICAgICAgIHN1YnN0aXR1dGlvbiA9IChzdWJzdGl0dXRpb24gIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpY0NvbnRleHQuZmluZFN1YnN0aXR1dGlvbkJ5TWV0YXZhcmlhYmxlTmFtZUFuZFN1YnN0aXR1dGlvbihtZXRhdmFyaWFibGVOYW1lLCBzdWJzdGl0dXRpb24pIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmljQ29udGV4dC5maW5kU3Vic3RpdHV0aW9uQnlNZXRhdmFyaWFibGVOYW1lKG1ldGF2YXJpYWJsZU5hbWUpO1xuXG4gICAgICAgIGlmIChzdWJzdGl0dXRpb24gIT09IG51bGwpIHtcbiAgICAgICAgICBjb25zdCBzdGF0ZW1lbnRTdWJzdGl0dXRpb24gPSBzdWJzdGl0dXRpb24sIC8vL1xuICAgICAgICAgICAgICAgIHJlcGxhY2VtZW50U3RhdGVtZW50ID0gc3RhdGVtZW50U3Vic3RpdHV0aW9uLmdldFJlcGxhY2VtZW50U3RhdGVtZW50KCk7XG5cbiAgICAgICAgICBzdGF0ZW1lbnQgPSByZXBsYWNlbWVudFN0YXRlbWVudDsgLy8vXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3RhdGVtZW50O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWV0YXZhcmlhYmxlTmFtZXNGcm9tU3Vic3RpdHV0aW9ucyhzdWJzdGl0dXRpb25zKSB7XG4gIGNvbnN0IG1ldGF2YXJpYWJsZU5hbWVzID0gW107XG5cbiAgc3Vic3RpdHV0aW9ucy5mb3JFYWNoKChzdWJzdGl0dXRpb24pID0+IHtcbiAgICBjb25zdCBtZXRhdmFyaWFibGVOYW1lID0gc3Vic3RpdHV0aW9uLmdldE1ldGF2YXJpYWJsZU5hbWUoKTtcblxuICAgIGlmIChtZXRhdmFyaWFibGVOYW1lICE9PSBudWxsKSB7XG4gICAgICBtZXRhdmFyaWFibGVOYW1lcy5wdXNoKG1ldGF2YXJpYWJsZU5hbWUpO1xuICAgIH1cbiAgfSk7XG5cbiAgY29tcHJlc3MobWV0YXZhcmlhYmxlTmFtZXMsIChtZXRhdmFyaWFibGVOYW1lQSwgbWV0YXZhcmlhYmxlTmFtZUIpID0+IHtcbiAgICBpZiAobWV0YXZhcmlhYmxlTmFtZUEgIT09IG1ldGF2YXJpYWJsZU5hbWVCKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBtZXRhdmFyaWFibGVOYW1lcztcbn1cbiJdLCJuYW1lcyI6WyJmcmFtZUZyb21GcmFtZUFuZFN1YnN0aXR1dGlvbnMiLCJtZXRhdmFyaWFibGVOYW1lc0Zyb21TdWJzdGl0dXRpb25zIiwic3RhdGVtZW50RnJvbVN0YXRlbWVudEFuZFN1YnN0aXR1dGlvbnMiLCJ0ZXJtRnJvbVRlcm1BbmRTdWJzdGl0dXRpb25zIiwiY29tcHJlc3MiLCJhcnJheVV0aWxpdGllcyIsInRlcm0iLCJnZW5lcmFsQ29udGV4dCIsInNwZWNpZmljQ29udGV4dCIsInRlcm1Ob2RlIiwiZ2V0Tm9kZSIsInRlcm1TaW5ndWxhciIsImlzU2luZ3VsYXIiLCJ2YXJpYWJsZUlkZW50aWZpZXIiLCJnZXRWYXJpYWJsZUlkZW50aWZpZXIiLCJ2YXJpYWJsZSIsImZpbmRWYXJpYWJsZUJ5VmFyaWFibGVJZGVudGlmaWVyIiwic3Vic3RpdHV0aW9uIiwiZmluZFN1YnN0aXR1dGlvbkJ5VmFyaWFibGVJZGVudGlmaWVyIiwidGVybVN1YnN0aXR1dGlvbiIsInJlcGxhY2VtZW50VGVybSIsImdldFJlcGxhY2VtZW50VGVybSIsImZyYW1lIiwiZnJhbWVOb2RlIiwiZnJhbWVTaW5ndWxhciIsIm1ldGF2YXJpYWJsZU5hbWUiLCJnZXRNZXRhdmFyaWFibGVOYW1lIiwibWV0YXZhcmlhYmxlIiwiZmluZE1ldGF2YXJpYWJsZUJ5TWV0YXZhcmlhYmxlTmFtZSIsImZpbmRTdWJzdGl0dXRpb25CeU1ldGF2YXJpYWJsZU5hbWUiLCJmcmFtZVN1YnN0aXR1dGlvbiIsInJlcGxhY2VtZW50RnJhbWUiLCJnZXRSZXBsYWNlbWVudEZyYW1lIiwic3RhdGVtZW50Iiwic3RhdGVtZW50Tm9kZSIsInN0YXRlbWVudFNpbmd1bGFyIiwic3Vic3RpdHV0aW9uTm9kZSIsImdldFN1YnN0aXR1dGlvbk5vZGUiLCJjb250ZXh0IiwiZmluZFN1YnN0aXR1dGlvbkJ5U3Vic3RpdHV0aW9uTm9kZSIsImZpbmRTdWJzdGl0dXRpb25CeU1ldGF2YXJpYWJsZU5hbWVBbmRTdWJzdGl0dXRpb24iLCJzdGF0ZW1lbnRTdWJzdGl0dXRpb24iLCJyZXBsYWNlbWVudFN0YXRlbWVudCIsImdldFJlcGxhY2VtZW50U3RhdGVtZW50Iiwic3Vic3RpdHV0aW9ucyIsIm1ldGF2YXJpYWJsZU5hbWVzIiwiZm9yRWFjaCIsInB1c2giLCJtZXRhdmFyaWFibGVOYW1lQSIsIm1ldGF2YXJpYWJsZU5hbWVCIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7UUFpQ2dCQTtlQUFBQTs7UUE0RUFDO2VBQUFBOztRQWpEQUM7ZUFBQUE7O1FBdERBQztlQUFBQTs7O3lCQUplO0FBRS9CLElBQU0sQUFBRUMsV0FBYUMseUJBQWMsQ0FBM0JEO0FBRUQsU0FBU0QsNkJBQTZCRyxJQUFJLEVBQUVDLGNBQWMsRUFBRUMsZUFBZTtJQUNoRixJQUFJRixTQUFTLE1BQU07UUFDakIsSUFBTUcsV0FBV0gsS0FBS0ksT0FBTyxJQUN2QkMsZUFBZUwsS0FBS00sVUFBVTtRQUVwQ04sT0FBTyxNQUFPLEdBQUc7UUFFakIsSUFBSUssY0FBYztZQUNoQixJQUFNRSxxQkFBcUJKLFNBQVNLLHFCQUFxQixJQUNuREMsV0FBV1IsZUFBZVMsZ0NBQWdDLENBQUNIO1lBRWpFLElBQUlFLGFBQWEsTUFBTTtnQkFDckIsSUFBTUUsZUFBZVQsZ0JBQWdCVSxvQ0FBb0MsQ0FB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
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "occam-verify-cli",
3
3
  "author": "James Smith",
4
- "version": "1.0.612",
4
+ "version": "1.0.617",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-verify-cli",
7
7
  "description": "Occam's Verifier",
@@ -13,7 +13,7 @@
13
13
  "argumentative": "^2.0.36",
14
14
  "necessary": "^17.0.9",
15
15
  "occam-file-system": "^6.0.505",
16
- "occam-furtle": "^3.0.109",
16
+ "occam-furtle": "^3.0.111",
17
17
  "occam-grammars": "^1.3.510",
18
18
  "occam-languages": "^0.0.79",
19
19
  "occam-lexers": "^23.1.34",
@@ -1,11 +1,7 @@
1
1
  "use strict";
2
2
 
3
- import { arrayUtilities } from "necessary";
4
-
5
3
  import Context from "../context";
6
4
 
7
- const { extract } = arrayUtilities;
8
-
9
5
  export default class EphemeralContext extends Context {
10
6
  constructor(context, terms, frames, statements, assertions, references, substitutions) {
11
7
  super(context);
@@ -47,18 +43,24 @@ export default class EphemeralContext extends Context {
47
43
  context = this, ///
48
44
  termString = term.getString();
49
45
 
50
- extract(this.terms, (term) => {
46
+ context.trace(`Adding the '${termString}' term to the ephemeral context...`);
47
+
48
+ const termB = this.terms.find((term) => {
51
49
  const termB = term, ///
52
50
  termAEqualToTermB = termA.isEqualTo(termB);
53
51
 
54
52
  if (termAEqualToTermB) {
55
53
  return true;
56
54
  }
57
- });
55
+ }) || null;
58
56
 
59
- context.trace(`Added the '${termString}' term to the context.`);
57
+ if (termB !== null) {
58
+ context.trace(`The '${termString}' term has already been added to the ephemeral context.`);
59
+ } else {
60
+ this.terms.push(term);
60
61
 
61
- this.terms.push(term);
62
+ context.debug(`...added the '${termString}' term to the ephemeral context.`);
63
+ }
62
64
  }
63
65
 
64
66
  addFrame(frame) {
@@ -66,18 +68,24 @@ export default class EphemeralContext extends Context {
66
68
  context = this, ///
67
69
  frameString = frame.getString();
68
70
 
69
- extract(this.frames, (frame) => {
71
+ context.trace(`Adding the '${frameString}' frame to the ephemeral context...`);
72
+
73
+ const frameB = this.frames.find((frame) => {
70
74
  const frameB = frame, ///
71
75
  frameAEqualToFrameB = frameA.isEqualTo(frameB);
72
76
 
73
77
  if (frameAEqualToFrameB) {
74
78
  return true;
75
79
  }
76
- });
80
+ }) || null;
77
81
 
78
- context.trace(`Added the '${frameString}' frame to the context.`);
82
+ if (frameB !== null) {
83
+ context.trace(`The '${frameString}' frame has already been added to the ephemeral context.`);
84
+ } else {
85
+ this.frames.push(frame);
79
86
 
80
- this.frames.push(frame);
87
+ context.debug(`...added the '${frameString}' frame to the ephemeral context.`);
88
+ }
81
89
  }
82
90
 
83
91
  addStatement(statement) {
@@ -85,18 +93,24 @@ export default class EphemeralContext extends Context {
85
93
  statementA = statement, ///
86
94
  statementString = statement.getString();
87
95
 
88
- extract(this.statements, (statement) => {
96
+ context.trace(`Adding the '${statementString}' statement to the ephemeral context...`);
97
+
98
+ const statementB = this.statements.find((statement) => {
89
99
  const statementB = statement, ///
90
- statementAEqualToFrameB = statementA.isEqualTo(statementB);
100
+ statementAEqualToStatementB = statementA.isEqualTo(statementB);
91
101
 
92
- if (statementAEqualToFrameB) {
102
+ if (statementAEqualToStatementB) {
93
103
  return true;
94
104
  }
95
- });
105
+ }) || null;
96
106
 
97
- context.trace(`Added the '${statementString}' statement to the context.`);
107
+ if (statementB !== null) {
108
+ context.trace(`The '${statementString}' statement has already been added to the ephemeral context.`);
109
+ } else {
110
+ this.statements.push(statement);
98
111
 
99
- this.statements.push(statement);
112
+ context.debug(`...added the '${statementString}' statement to the ephemeral context.`);
113
+ }
100
114
  }
101
115
 
102
116
  addAssertion(assertion) {
@@ -104,18 +118,24 @@ export default class EphemeralContext extends Context {
104
118
  assertionA = assertion, ///
105
119
  assertionString = assertion.getString();
106
120
 
107
- extract(this.assertions, (assertion) => {
121
+ context.trace(`Adding the '${assertionString}' assertion to the ephemeral context...`);
122
+
123
+ const assertionB = this.assertions.find((assertion) => {
108
124
  const assertionB = assertion, ///
109
125
  assertionAEqualToAssertionB = assertionA.isEqualTo(assertionB);
110
126
 
111
127
  if (assertionAEqualToAssertionB) {
112
128
  return true;
113
129
  }
114
- });
130
+ }) || null;
115
131
 
116
- context.trace(`Added the '${assertionString}' assertion to the context.`);
132
+ if (assertionB !== null) {
133
+ context.trace(`The '${assertionString}' assertion has already been added to the ephemeral context.`);
134
+ } else {
135
+ this.assertions.push(assertion);
117
136
 
118
- this.assertions.push(assertion);
137
+ context.debug(`...added the '${assertionString}' assertion to the ephemeral context.`);
138
+ }
119
139
  }
120
140
 
121
141
  addReference(reference) {
@@ -123,18 +143,24 @@ export default class EphemeralContext extends Context {
123
143
  referenceA = reference, ///
124
144
  referenceString = reference.getString();
125
145
 
126
- extract(this.references, (reference) => {
146
+ context.trace(`Adding the '${referenceString}' reference to the ephemeral context...`);
147
+
148
+ const referenceB = this.references.find((reference) => {
127
149
  const referenceB = reference, ///
128
150
  referenceAEqualToReferenceB = referenceA.isEqualTo(referenceB);
129
151
 
130
152
  if (referenceAEqualToReferenceB) {
131
153
  return true;
132
154
  }
133
- });
155
+ }) || null;
134
156
 
135
- context.trace(`Added the '${referenceString}' reference to the context.`);
157
+ if (referenceB !== null) {
158
+ context.trace(`The '${referenceString}' reference has already been added to the ephemeral context.`);
159
+ } else {
160
+ this.references.push(reference);
136
161
 
137
- this.references.push(reference);
162
+ context.debug(`...added the '${referenceString}' reference to the ephemeral context.`);
163
+ }
138
164
  }
139
165
 
140
166
  addSubstitution(substitution) {
@@ -142,18 +168,24 @@ export default class EphemeralContext extends Context {
142
168
  substitutionA = substitution, ///
143
169
  substitutionString = substitution.getString();
144
170
 
145
- extract(this.substitutions, (substitution) => {
171
+ context.trace(`Adding the '${substitutionString}' substitution to the ephemeral context...`);
172
+
173
+ const substitutionB = this.substitutions.find((substitution) => {
146
174
  const substitutionB = substitution, ///
147
- substitutionAEqualToAssertionB = substitutionA.isEqualTo(substitutionB);
175
+ substitutionAEqualToSubstitutionB = substitutionA.isEqualTo(substitutionB);
148
176
 
149
- if (substitutionAEqualToAssertionB) {
177
+ if (substitutionAEqualToSubstitutionB) {
150
178
  return true;
151
179
  }
152
- });
180
+ }) || null;
153
181
 
154
- context.trace(`Added the '${substitutionString}' substitution to the context.`);
182
+ if (substitutionB !== null) {
183
+ context.trace(`The '${substitutionString}' substitution has already been added to the ephemeral context.`);
184
+ } else {
185
+ this.substitutions.push(substitution);
155
186
 
156
- this.substitutions.push(substitution);
187
+ context.debug(`...added the '${substitutionString}' substitution to the ephemeral context.`);
188
+ }
157
189
  }
158
190
 
159
191
  findTermByTermNode(termNode) {
@@ -259,54 +259,119 @@ export default class NominalFileContext extends FileContext {
259
259
 
260
260
  addType(type) {
261
261
  this.types.push(type);
262
+
263
+ const filePath = this.getFilePath(),
264
+ typeString = type.toString();
265
+
266
+ this.trace(`Added the '${typeString}' type to the '${filePath}' file context.`)
262
267
  }
263
268
 
264
269
  addRule(rule) {
265
270
  this.rules.push(rule);
271
+
272
+ const filePath = this.getFilePath(),
273
+ ruleString = rule.toString();
274
+
275
+ this.trace(`Added the '${ruleString}' rule to the '${filePath}' file context.`)
266
276
  }
267
277
 
268
278
  addAxiom(axiom) {
269
279
  this.axioms.push(axiom);
280
+
281
+ const filePath = this.getFilePath(),
282
+ axiomString = axiom.toString();
283
+
284
+ this.trace(`Added the '${axiomString}' axiom to the '${filePath}' file context.`)
270
285
  }
271
286
 
272
287
  addLemma(lemma) {
273
288
  this.lemmas.push(lemma);
289
+
290
+ const filePath = this.getFilePath(),
291
+ lemmaString = lemma.toString();
292
+
293
+ this.trace(`Added the '${lemmaString}' lemma to the '${filePath}' file context.`)
274
294
  }
275
295
 
276
296
  addTheorem(theorem) {
277
297
  this.theorems.push(theorem);
298
+
299
+ const filePath = this.getFilePath(),
300
+ theoremString = theorem.toString();
301
+
302
+ this.trace(`Added the '${theoremString}' theorem to the '${filePath}' file context.`)
278
303
  }
279
304
 
280
305
  addVariable(variable) {
281
306
  this.variables.push(variable);
307
+
308
+ const filePath = this.getFilePath(),
309
+ variableString = variable.toString();
310
+
311
+ this.trace(`Added the '${variableString}' variable to the '${filePath}' file context.`)
282
312
  }
283
313
 
284
314
  addMetaLemma(metaLemma) {
285
315
  this.metaLemmas.push(metaLemma);
316
+
317
+ const filePath = this.getFilePath(),
318
+ metaLemmaString = metaLemma.toString();
319
+
320
+ this.trace(`Added the '${metaLemmaString}' meta-lemma to the '${filePath}' file context.`)
286
321
  }
287
322
 
288
323
  addConjecture(conjecture) {
289
324
  this.conjectures.push(conjecture);
325
+
326
+ const filePath = this.getFilePath(),
327
+ ocnjectureString = ocnjecture.toString();
328
+
329
+ this.trace(`Added the '${ocnjectureString}' ocnjecture to the '${filePath}' file context.`)
290
330
  }
291
331
 
292
332
  addCombinator(combinator) {
293
333
  this.combinators.push(combinator);
334
+
335
+ const filePath = this.getFilePath(),
336
+ combinatorString = combinator.toString();
337
+
338
+ this.trace(`Added the '${combinatorString}' combinator to the '${filePath}' file context.`)
294
339
  }
295
340
 
296
341
  addTypePrefix(typePrefix) {
297
342
  this.typePrefixes.push(typePrefix);
343
+
344
+ const filePath = this.getFilePath(),
345
+ typePrefixString = typePrefix.toString();
346
+
347
+ this.trace(`Added the '${typePrefixString}' type-prefix to the '${filePath}' file context.`)
298
348
  }
299
349
 
300
350
  addConstructor(constructor) {
301
351
  this.constructors.push(constructor);
352
+
353
+ const filePath = this.getFilePath(),
354
+ constructorString = constructor.toString();
355
+
356
+ this.trace(`Added the '${constructorString}' constructor to the '${filePath}' file context.`)
302
357
  }
303
358
 
304
359
  addMetatheorem(metatheorem) {
305
360
  this.metatheorems.push(metatheorem);
361
+
362
+ const filePath = this.getFilePath(),
363
+ metatheoremString = metatheorem.toString();
364
+
365
+ this.trace(`Added the '${metatheoremString}' metatheorem to the '${filePath}' file context.`)
306
366
  }
307
367
 
308
368
  addMetavariable(metavariable) {
309
369
  this.metavariables.push(metavariable);
370
+
371
+ const filePath = this.getFilePath(),
372
+ metavariableString = metavariable.toString();
373
+
374
+ this.trace(`Added the '${metavariableString}' metavariable to the '${filePath}' file context.`)
310
375
  }
311
376
 
312
377
  findLabelByReference(reference, context) {
@@ -404,10 +469,10 @@ export default class NominalFileContext extends FileContext {
404
469
  return theorem;
405
470
  }
406
471
 
407
- findProcedureByName(name) {
472
+ findProcedureByProcedureName(procedureName) {
408
473
  const procedures = this.getProcedures(),
409
474
  procedure = procedures.find((procedure) => {
410
- const nameMatches = procedure.matchName(name);
475
+ const nameMatches = procedure.matchName(procedureName);
411
476
 
412
477
  if (nameMatches) {
413
478
  return true;
@@ -650,14 +715,6 @@ export default class NominalFileContext extends FileContext {
650
715
  return metavariable;
651
716
  }
652
717
 
653
- isMetavariablePresent(metavariable) {
654
- metavariable = this.findMetavariable(metavariable);
655
-
656
- const metavariablePresent = (metavariable !== null);
657
-
658
- return metavariablePresent;
659
- }
660
-
661
718
  isTypePresentByTypeName(typeName, includeRelease = true, includeDependencies = true) {
662
719
  const type = this.findTypeByTypeName(typeName, includeRelease, includeDependencies),
663
720
  typePresent = (type !== null);
@@ -714,6 +771,21 @@ export default class NominalFileContext extends FileContext {
714
771
  return metavariablePresent;
715
772
  }
716
773
 
774
+ isMetavariablePresent(metavariable) {
775
+ metavariable = this.findMetavariable(metavariable);
776
+
777
+ const metavariablePresent = (metavariable !== null);
778
+
779
+ return metavariablePresent;
780
+ }
781
+
782
+ isProcedurePresentByProcedureName(procedureName) {
783
+ const procedure = this.findProcedureByProcedureName(procedureName),
784
+ procedurePresent = (procedure !== null);
785
+
786
+ return procedurePresent;
787
+ }
788
+
717
789
  isLabelPresentByReference(reference) {
718
790
  const labels = this.getLabels(),
719
791
  labelPresent = labels.some((label) => {
@@ -728,13 +800,6 @@ export default class NominalFileContext extends FileContext {
728
800
  return labelPresent;
729
801
  }
730
802
 
731
- isProcedurePresentByName(name) {
732
- const procedure = this.findProcedureByName(name),
733
- procedurePresent = (procedure !== null);
734
-
735
- return procedurePresent;
736
- }
737
-
738
803
  isMetavariablePresentByReference(reference) {
739
804
  const metavariables = this.getMetavariables(),
740
805
  metavariablePresent = metavariables.some((metavariable) => {
@@ -2,11 +2,10 @@
2
2
 
3
3
  import { arrayUtilities } from "necessary";
4
4
  import { metavariableNamesFromSubstitutions } from "../utilities/substitutions";
5
- import { substitutionsStringFromSubstitutions } from "../utilities/string";
6
5
 
7
6
  import Context from "../context";
8
7
 
9
- const { find, first, prune, compress } = arrayUtilities;
8
+ const { find, first } = arrayUtilities;
10
9
 
11
10
  export default class LiminalContext extends Context {
12
11
  constructor(context, substitutions) {
@@ -62,60 +61,34 @@ export default class LiminalContext extends Context {
62
61
  }
63
62
 
64
63
  addSubstitution(substitution) {
65
- const context = this,
64
+ const context = this, ///
65
+ substitutionA = substitution, ///
66
66
  substitutionString = substitution.getString();
67
67
 
68
- this.substitutions = [ ///
69
- ...this.substitutions,
70
- substitution
71
- ];
68
+ context.trace(`Adding the '${substitutionString}' substitution to the liminal context...`);
72
69
 
73
- compress(this.substitutions, (substitutionA, substitutionB) => {
74
- const substitutionAEqualToSubstitutionB = substitutionA.isEqualTo(substitutionB);
70
+ const substitutionB = this.substitutions.find((substitution) => {
71
+ const substitutionB = substitution, ///
72
+ substitutionAEqualToSubstitutionB = substitutionA.isEqualTo(substitutionB);
75
73
 
76
- if (!substitutionAEqualToSubstitutionB) {
74
+ if (substitutionAEqualToSubstitutionB) {
77
75
  return true;
78
76
  }
79
- });
80
-
81
- context.trace(`Added the '${substitutionString}' substitution to the context.`);
82
- }
83
-
84
- addSubstitutions(substitutions) {
85
- const context = this,
86
- substitutionsString = substitutionsStringFromSubstitutions(substitutions);
87
-
88
- this.substitutions = [ ///
89
- ...this.substitutions,
90
- ...substitutions
91
- ];
92
-
93
- compress(this.substitutions, (substitutionA, substitutionB) => {
94
- const substitutionAEqualToAssertionB = substitutionA.isEqualTo(substitutionB);
77
+ }) || null;
95
78
 
96
- if (!substitutionAEqualToAssertionB) {
97
- return true;
98
- }
99
- });
79
+ if (substitutionB !== null) {
80
+ context.trace(`The '${substitutionString}' substitution has already been added to the liminal context.`);
81
+ } else {
82
+ this.substitutions.push(substitution);
100
83
 
101
- context.trace(`Added the '${substitutionsString}' substitutions to the context.`);
84
+ context.debug(`...added the '${substitutionString}' substitution to the liminal context.`);
85
+ }
102
86
  }
103
87
 
104
- removeSubstitution(substitution) {
105
- const context = this,
106
- substitutionA = substitution, ///
107
- substitutionString = substitution.getString();
108
-
109
- prune(this.substitutions, (substitution) => {
110
- const substitutionB = substitution,
111
- substitutionAEqualTosubstitutionB = substitutionA.isEqualTo(substitutionB);
112
-
113
- if (!substitutionAEqualTosubstitutionB) {
114
- return true;
115
- }
88
+ addSubstitutions(substitutions) {
89
+ substitutions.forEach((substitution) => {
90
+ this.addSubstitution(substitution);
116
91
  });
117
-
118
- context.trace(`Removed the '${substitutionString}' substitution to the context.`);
119
92
  }
120
93
 
121
94
  resolveSubstitutions(generalContext, specificContext) {
@@ -139,7 +112,7 @@ export default class LiminalContext extends Context {
139
112
  });
140
113
  }
141
114
 
142
- areSubstitutionsResolved(generalContext, specificContext) {
115
+ areSubstitutionsResolved() {
143
116
  const substitutions = this.getSubstitutions(),
144
117
  metavariableNames = metavariableNamesFromSubstitutions(substitutions),
145
118
  resolved = metavariableNames.every((metavariableName) => {
@@ -165,6 +138,8 @@ export default class LiminalContext extends Context {
165
138
  context = this.getContext();
166
139
  }
167
140
 
141
+ context.debug(`Commiting the limiinal context`);
142
+
168
143
  context.addSubstitutions(this.substitutions);
169
144
  }
170
145