occam-verify-cli 0.0.682 → 0.0.684

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 (130) hide show
  1. package/lib/assignment/equality.js +60 -0
  2. package/lib/assignment/variable.js +60 -0
  3. package/lib/axiom.js +4 -4
  4. package/lib/axiomLemmaTheoremConjecture.js +29 -29
  5. package/lib/collection.js +154 -0
  6. package/lib/combinator.js +1 -1
  7. package/lib/conclusion.js +5 -5
  8. package/lib/conjecture.js +4 -4
  9. package/lib/consequent.js +3 -3
  10. package/lib/constructor.js +1 -1
  11. package/lib/context/file.js +9 -2
  12. package/lib/context/local.js +330 -0
  13. package/lib/context/localMeta.js +192 -0
  14. package/lib/context/release.js +1 -1
  15. package/lib/equality.js +19 -87
  16. package/lib/label.js +1 -1
  17. package/lib/lemma.js +4 -4
  18. package/lib/log.js +1 -1
  19. package/lib/metaType.js +1 -1
  20. package/lib/metavariable.js +1 -1
  21. package/lib/ocmbinator/bracketed.js +1 -1
  22. package/lib/premise.js +9 -9
  23. package/lib/rule.js +25 -25
  24. package/lib/step/metaproof.js +1 -1
  25. package/lib/step/proof.js +1 -1
  26. package/lib/substitution/metastatementForMetavariable.js +1 -1
  27. package/lib/substitution/statementForMetavariable.js +1 -1
  28. package/lib/substitution/termForVariable.js +1 -1
  29. package/lib/supposition.js +5 -5
  30. package/lib/term.js +68 -0
  31. package/lib/theorem.js +4 -4
  32. package/lib/type.js +5 -5
  33. package/lib/utilities/array.js +4 -4
  34. package/lib/utilities/collection.js +107 -0
  35. package/lib/variable.js +1 -1
  36. package/lib/verifier/node/metastatement.js +9 -9
  37. package/lib/verifier/node/statementAsCombinator.js +1 -1
  38. package/lib/verifier/node/termAsConstructor.js +2 -2
  39. package/lib/verifier/node.js +1 -1
  40. package/lib/verifier/nodes/metastatementForMetavariable/conclusion.js +1 -1
  41. package/lib/verifier/nodes/metastatementForMetavariable/premise.js +1 -1
  42. package/lib/verifier/nodes/metastatementForMetavariable.js +8 -8
  43. package/lib/verifier/nodes/statement.js +1 -1
  44. package/lib/verifier/nodes/statementForMetavariable/conclusion.js +1 -1
  45. package/lib/verifier/nodes/statementForMetavariable/premise.js +1 -1
  46. package/lib/verifier/nodes/statementForMetavariable.js +9 -9
  47. package/lib/verifier/nodes/term.js +3 -3
  48. package/lib/verifier/nodes/termForVariable/consequent.js +1 -1
  49. package/lib/verifier/nodes/termForVariable/supposition.js +1 -1
  50. package/lib/verifier/nodes/termForVariable.js +11 -11
  51. package/lib/verifier/nodes.js +1 -1
  52. package/lib/verify/axiom.js +6 -6
  53. package/lib/verify/conclusion.js +6 -6
  54. package/lib/verify/conjecture.js +7 -7
  55. package/lib/verify/consequent.js +6 -6
  56. package/lib/verify/derivation.js +17 -17
  57. package/lib/verify/equality.js +50 -18
  58. package/lib/verify/lemma.js +7 -7
  59. package/lib/verify/metastatement/qualified.js +7 -7
  60. package/lib/verify/metastatement/unqualified.js +7 -7
  61. package/lib/verify/metastatement.js +12 -12
  62. package/lib/verify/premise.js +7 -7
  63. package/lib/verify/proof.js +10 -7
  64. package/lib/verify/rule.js +6 -6
  65. package/lib/verify/ruleDerivation.js +17 -17
  66. package/lib/verify/ruleProof.js +6 -6
  67. package/lib/verify/statement/qualified.js +15 -15
  68. package/lib/verify/statement/unqualified.js +7 -7
  69. package/lib/verify/supposition.js +8 -8
  70. package/lib/verify/term.js +32 -31
  71. package/lib/verify/terms.js +11 -17
  72. package/lib/verify/theorem.js +7 -7
  73. package/lib/verify/typeAssertion.js +3 -3
  74. package/package.json +2 -2
  75. package/src/assignment/equality.js +21 -0
  76. package/src/assignment/variable.js +21 -0
  77. package/src/axiom.js +1 -1
  78. package/src/axiomLemmaTheoremConjecture.js +26 -26
  79. package/src/collection.js +101 -0
  80. package/src/conclusion.js +6 -6
  81. package/src/conjecture.js +1 -1
  82. package/src/consequent.js +4 -4
  83. package/src/context/file.js +9 -1
  84. package/src/context/local.js +311 -0
  85. package/src/context/{metaproof.js → localMeta.js} +16 -17
  86. package/src/equality.js +17 -111
  87. package/src/lemma.js +1 -1
  88. package/src/premise.js +12 -12
  89. package/src/rule.js +24 -24
  90. package/src/supposition.js +8 -8
  91. package/src/term.js +30 -0
  92. package/src/theorem.js +1 -1
  93. package/src/type.js +3 -3
  94. package/src/utilities/array.js +1 -1
  95. package/src/utilities/collection.js +83 -0
  96. package/src/verifier/node/metastatement.js +8 -8
  97. package/src/verifier/node/termAsConstructor.js +2 -2
  98. package/src/verifier/nodes/metastatementForMetavariable.js +7 -7
  99. package/src/verifier/nodes/statementForMetavariable.js +8 -8
  100. package/src/verifier/nodes/term.js +5 -4
  101. package/src/verifier/nodes/termForVariable.js +15 -14
  102. package/src/verify/axiom.js +5 -5
  103. package/src/verify/conclusion.js +5 -5
  104. package/src/verify/conjecture.js +6 -6
  105. package/src/verify/consequent.js +5 -5
  106. package/src/verify/derivation.js +16 -16
  107. package/src/verify/equality.js +81 -24
  108. package/src/verify/lemma.js +6 -6
  109. package/src/verify/metastatement/qualified.js +7 -7
  110. package/src/verify/metastatement/unqualified.js +6 -6
  111. package/src/verify/metastatement.js +11 -11
  112. package/src/verify/premise.js +6 -6
  113. package/src/verify/proof.js +13 -10
  114. package/src/verify/rule.js +5 -5
  115. package/src/verify/ruleDerivation.js +16 -16
  116. package/src/verify/ruleProof.js +5 -5
  117. package/src/verify/statement/qualified.js +15 -15
  118. package/src/verify/statement/unqualified.js +6 -6
  119. package/src/verify/supposition.js +7 -7
  120. package/src/verify/term.js +38 -35
  121. package/src/verify/terms.js +14 -28
  122. package/src/verify/theorem.js +6 -6
  123. package/src/verify/typeAssertion.js +3 -2
  124. package/lib/assignment.js +0 -74
  125. package/lib/context/metaproof.js +0 -192
  126. package/lib/context/proof.js +0 -245
  127. package/lib/verifier/nodes/equality.js +0 -155
  128. package/src/assignment.js +0 -36
  129. package/src/context/proof.js +0 -205
  130. package/src/verifier/nodes/equality.js +0 -68
@@ -1,155 +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
- var _equality = /*#__PURE__*/ _interop_require_default(require("../../equality"));
12
- var _terms = /*#__PURE__*/ _interop_require_default(require("../../verify/terms"));
13
- var _nodes = /*#__PURE__*/ _interop_require_default(require("../../verifier/nodes"));
14
- var _ruleNames = require("../../ruleNames");
15
- function _assert_this_initialized(self) {
16
- if (self === void 0) {
17
- throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
18
- }
19
- return self;
20
- }
21
- function _class_call_check(instance, Constructor) {
22
- if (!(instance instanceof Constructor)) {
23
- throw new TypeError("Cannot call a class as a function");
24
- }
25
- }
26
- function _defineProperties(target, props) {
27
- for(var i = 0; i < props.length; i++){
28
- var descriptor = props[i];
29
- descriptor.enumerable = descriptor.enumerable || false;
30
- descriptor.configurable = true;
31
- if ("value" in descriptor) descriptor.writable = true;
32
- Object.defineProperty(target, descriptor.key, descriptor);
33
- }
34
- }
35
- function _create_class(Constructor, protoProps, staticProps) {
36
- if (protoProps) _defineProperties(Constructor.prototype, protoProps);
37
- if (staticProps) _defineProperties(Constructor, staticProps);
38
- return Constructor;
39
- }
40
- function _get_prototype_of(o) {
41
- _get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function getPrototypeOf(o) {
42
- return o.__proto__ || Object.getPrototypeOf(o);
43
- };
44
- return _get_prototype_of(o);
45
- }
46
- function _inherits(subClass, superClass) {
47
- if (typeof superClass !== "function" && superClass !== null) {
48
- throw new TypeError("Super expression must either be null or a function");
49
- }
50
- subClass.prototype = Object.create(superClass && superClass.prototype, {
51
- constructor: {
52
- value: subClass,
53
- writable: true,
54
- configurable: true
55
- }
56
- });
57
- if (superClass) _set_prototype_of(subClass, superClass);
58
- }
59
- function _interop_require_default(obj) {
60
- return obj && obj.__esModule ? obj : {
61
- default: obj
62
- };
63
- }
64
- function _possible_constructor_return(self, call) {
65
- if (call && (_type_of(call) === "object" || typeof call === "function")) {
66
- return call;
67
- }
68
- return _assert_this_initialized(self);
69
- }
70
- function _set_prototype_of(o, p) {
71
- _set_prototype_of = Object.setPrototypeOf || function setPrototypeOf(o, p) {
72
- o.__proto__ = p;
73
- return o;
74
- };
75
- return _set_prototype_of(o, p);
76
- }
77
- function _type_of(obj) {
78
- "@swc/helpers - typeof";
79
- return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
80
- }
81
- function _is_native_reflect_construct() {
82
- if (typeof Reflect === "undefined" || !Reflect.construct) return false;
83
- if (Reflect.construct.sham) return false;
84
- if (typeof Proxy === "function") return true;
85
- try {
86
- Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));
87
- return true;
88
- } catch (e) {
89
- return false;
90
- }
91
- }
92
- function _create_super(Derived) {
93
- var hasNativeReflectConstruct = _is_native_reflect_construct();
94
- return function _createSuperInternal() {
95
- var Super = _get_prototype_of(Derived), result;
96
- if (hasNativeReflectConstruct) {
97
- var NewTarget = _get_prototype_of(this).constructor;
98
- result = Reflect.construct(Super, arguments, NewTarget);
99
- } else {
100
- result = Super.apply(this, arguments);
101
- }
102
- return _possible_constructor_return(this, result);
103
- };
104
- }
105
- var EqualityNodesVerifier = /*#__PURE__*/ function(NodesVerifier) {
106
- _inherits(EqualityNodesVerifier, NodesVerifier);
107
- var _super = _create_super(EqualityNodesVerifier);
108
- function EqualityNodesVerifier() {
109
- _class_call_check(this, EqualityNodesVerifier);
110
- return _super.apply(this, arguments);
111
- }
112
- _create_class(EqualityNodesVerifier, [
113
- {
114
- key: "verifyNonTerminalNode",
115
- value: function verifyNonTerminalNode(leftNonTerminalNode, rightNonTerminalNode, equalities, context, verifyAhead) {
116
- var nonTerminalNodeVerified = false;
117
- var leftNonTerminalNodeRuleName = leftNonTerminalNode.getRuleName(), rightNonTerminalNodeRuleName = rightNonTerminalNode.getRuleName();
118
- if (leftNonTerminalNodeRuleName === rightNonTerminalNodeRuleName) {
119
- var leftNonTerminalNodeRuleNameTermRuleName = leftNonTerminalNodeRuleName === _ruleNames.TERM_RULE_NAME, rightNonTerminalNodeRuleNameTermRuleName = rightNonTerminalNodeRuleName === _ruleNames.TERM_RULE_NAME;
120
- if (leftNonTerminalNodeRuleNameTermRuleName && rightNonTerminalNodeRuleNameTermRuleName) {
121
- var leftTermNode = leftNonTerminalNode, rightTermNode = rightNonTerminalNode, termNodeVerified = this.verifyTermNode(leftTermNode, rightTermNode, equalities, context, verifyAhead);
122
- nonTerminalNodeVerified = termNodeVerified; ///
123
- }
124
- if (!nonTerminalNodeVerified) {
125
- var leftNonTerminalNodeChildNodes = leftNonTerminalNode.getChildNodes(), rightNonTerminalNodeChildNodes = rightNonTerminalNode.getChildNodes(), leftChildNodes = leftNonTerminalNodeChildNodes, rightChildNodes = rightNonTerminalNodeChildNodes, childNodesVerified = this.verifyChildNodes(leftChildNodes, rightChildNodes, equalities, context, verifyAhead);
126
- nonTerminalNodeVerified = childNodesVerified; ///
127
- }
128
- }
129
- return nonTerminalNodeVerified;
130
- }
131
- },
132
- {
133
- key: "verifyTermNode",
134
- value: function verifyTermNode(leftTermNode, rightTermNode, equalities, context, verifyAhead) {
135
- var termNodeVerified = false;
136
- var termsVerified = (0, _terms.default)(leftTermNode, rightTermNode, context, verifyAhead);
137
- if (termsVerified) {
138
- var equality = _equality.default.fromLeftTermNodeAndRightTermNode(leftTermNode, rightTermNode), equalityA = equality, equalitiesB = equalities, equalityMatches = equalitiesB.some(function(equalityB) {
139
- var equalityAMatchesEqualityB = equalityA.match(equalityB, equalitiesB, context);
140
- if (equalityAMatchesEqualityB) {
141
- return true;
142
- }
143
- });
144
- termNodeVerified = equalityMatches; ///
145
- }
146
- return termNodeVerified;
147
- }
148
- }
149
- ]);
150
- return EqualityNodesVerifier;
151
- }(_nodes.default);
152
- var equalityNodesVerifier = new EqualityNodesVerifier();
153
- var _default = equalityNodesVerifier;
154
-
155
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy92ZXJpZmllci9ub2Rlcy9lcXVhbGl0eS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IEVxdWFsaXR5IGZyb20gXCIuLi8uLi9lcXVhbGl0eVwiO1xuaW1wb3J0IHZlcmlmeVRlcm1zIGZyb20gXCIuLi8uLi92ZXJpZnkvdGVybXNcIjtcbmltcG9ydCBOb2Rlc1ZlcmlmaWVyIGZyb20gXCIuLi8uLi92ZXJpZmllci9ub2Rlc1wiO1xuXG5pbXBvcnQgeyBURVJNX1JVTEVfTkFNRSB9IGZyb20gXCIuLi8uLi9ydWxlTmFtZXNcIjtcblxuY2xhc3MgRXF1YWxpdHlOb2Rlc1ZlcmlmaWVyIGV4dGVuZHMgTm9kZXNWZXJpZmllciB7XG4gIHZlcmlmeU5vblRlcm1pbmFsTm9kZShsZWZ0Tm9uVGVybWluYWxOb2RlLCByaWdodE5vblRlcm1pbmFsTm9kZSwgZXF1YWxpdGllcywgY29udGV4dCwgdmVyaWZ5QWhlYWQpIHtcbiAgICBsZXQgbm9uVGVybWluYWxOb2RlVmVyaWZpZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0IGxlZnROb25UZXJtaW5hbE5vZGVSdWxlTmFtZSA9IGxlZnROb25UZXJtaW5hbE5vZGUuZ2V0UnVsZU5hbWUoKSxcbiAgICAgICAgICByaWdodE5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lID0gcmlnaHROb25UZXJtaW5hbE5vZGUuZ2V0UnVsZU5hbWUoKTtcblxuICAgIGlmIChsZWZ0Tm9uVGVybWluYWxOb2RlUnVsZU5hbWUgPT09IHJpZ2h0Tm9uVGVybWluYWxOb2RlUnVsZU5hbWUpIHtcbiAgICAgIGNvbnN0IGxlZnROb25UZXJtaW5hbE5vZGVSdWxlTmFtZVRlcm1SdWxlTmFtZSA9IChsZWZ0Tm9uVGVybWluYWxOb2RlUnVsZU5hbWUgPT09IFRFUk1fUlVMRV9OQU1FKSxcbiAgICAgICAgICAgIHJpZ2h0Tm9uVGVybWluYWxOb2RlUnVsZU5hbWVUZXJtUnVsZU5hbWUgPSAocmlnaHROb25UZXJtaW5hbE5vZGVSdWxlTmFtZSA9PT0gVEVSTV9SVUxFX05BTUUpO1xuXG4gICAgICBpZiAobGVmdE5vblRlcm1pbmFsTm9kZVJ1bGVOYW1lVGVybVJ1bGVOYW1lICYmIHJpZ2h0Tm9uVGVybWluYWxOb2RlUnVsZU5hbWVUZXJtUnVsZU5hbWUpIHtcbiAgICAgICAgY29uc3QgbGVmdFRlcm1Ob2RlID0gbGVmdE5vblRlcm1pbmFsTm9kZSwgLy8vXG4gICAgICAgICAgICAgIHJpZ2h0VGVybU5vZGUgPSByaWdodE5vblRlcm1pbmFsTm9kZSwgLy8vXG4gICAgICAgICAgICAgIHRlcm1Ob2RlVmVyaWZpZWQgPSB0aGlzLnZlcmlmeVRlcm1Ob2RlKGxlZnRUZXJtTm9kZSwgcmlnaHRUZXJtTm9kZSwgZXF1YWxpdGllcywgY29udGV4dCwgdmVyaWZ5QWhlYWQpO1xuXG4gICAgICAgIG5vblRlcm1pbmFsTm9kZVZlcmlmaWVkID0gdGVybU5vZGVWZXJpZmllZDsgIC8vL1xuICAgICAgfVxuXG4gICAgICBpZiAoIW5vblRlcm1pbmFsTm9kZVZlcmlmaWVkKSB7XG4gICAgICAgIGNvbnN0IGxlZnROb25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzID0gbGVmdE5vblRlcm1pbmFsTm9kZS5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgICAgICAgIHJpZ2h0Tm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcyA9IHJpZ2h0Tm9uVGVybWluYWxOb2RlLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgICAgICAgbGVmdENoaWxkTm9kZXMgPSBsZWZ0Tm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcywgLy8vXG4gICAgICAgICAgICAgIHJpZ2h0Q2hpbGROb2RlcyA9IHJpZ2h0Tm9uVGVybWluYWxOb2RlQ2hpbGROb2RlcywgLy8vXG4gICAgICAgICAgICAgIGNoaWxkTm9kZXNWZXJpZmllZCA9IHRoaXMudmVyaWZ5Q2hpbGROb2RlcyhsZWZ0Q2hpbGROb2RlcywgcmlnaHRDaGlsZE5vZGVzLCBlcXVhbGl0aWVzLCBjb250ZXh0LCB2ZXJpZnlBaGVhZCk7XG5cbiAgICAgICAgbm9uVGVybWluYWxOb2RlVmVyaWZpZWQgPSBjaGlsZE5vZGVzVmVyaWZpZWQ7IC8vL1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBub25UZXJtaW5hbE5vZGVWZXJpZmllZDtcbiAgfVxuXG4gIHZlcmlmeVRlcm1Ob2RlKGxlZnRUZXJtTm9kZSwgcmlnaHRUZXJtTm9kZSwgZXF1YWxpdGllcywgY29udGV4dCwgdmVyaWZ5QWhlYWQpIHtcbiAgICBsZXQgdGVybU5vZGVWZXJpZmllZCA9IGZhbHNlO1xuXG4gICAgY29uc3QgdGVybXNWZXJpZmllZCA9IHZlcmlmeVRlcm1zKGxlZnRUZXJtTm9kZSwgcmlnaHRUZXJtTm9kZSwgY29udGV4dCwgdmVyaWZ5QWhlYWQpO1xuXG4gICAgaWYgKHRlcm1zVmVyaWZpZWQpIHtcbiAgICAgIGNvbnN0IGVxdWFsaXR5ID0gRXF1YWxpdHkuZnJvbUxlZnRUZXJtTm9kZUFuZFJpZ2h0VGVybU5vZGUobGVmdFRlcm1Ob2RlLCByaWdodFRlcm1Ob2RlKSxcbiAgICAgICAgICAgIGVxdWFsaXR5QSA9IGVxdWFsaXR5LCAvLy9cbiAgICAgICAgICAgIGVxdWFsaXRpZXNCID0gZXF1YWxpdGllcywgLy8vXG4gICAgICAgICAgICBlcXVhbGl0eU1hdGNoZXMgPSBlcXVhbGl0aWVzQi5zb21lKChlcXVhbGl0eUIpID0+IHsgLy8vXG4gICAgICAgICAgICAgIGNvbnN0IGVxdWFsaXR5QU1hdGNoZXNFcXVhbGl0eUIgPSBlcXVhbGl0eUEubWF0Y2goZXF1YWxpdHlCLCBlcXVhbGl0aWVzQiwgY29udGV4dCk7XG5cbiAgICAgICAgICAgICAgaWYgKGVxdWFsaXR5QU1hdGNoZXNFcXVhbGl0eUIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgIHRlcm1Ob2RlVmVyaWZpZWQgPSBlcXVhbGl0eU1hdGNoZXM7ICAvLy9cbiAgICB9XG5cbiAgICByZXR1cm4gdGVybU5vZGVWZXJpZmllZDtcbiAgfVxufVxuXG5jb25zdCBlcXVhbGl0eU5vZGVzVmVyaWZpZXIgPSBuZXcgRXF1YWxpdHlOb2Rlc1ZlcmlmaWVyKCk7XG5cbmV4cG9ydCBkZWZhdWx0IGVxdWFsaXR5Tm9kZXNWZXJpZmllcjtcbiJdLCJuYW1lcyI6WyJFcXVhbGl0eU5vZGVzVmVyaWZpZXIiLCJ2ZXJpZnlOb25UZXJtaW5hbE5vZGUiLCJsZWZ0Tm9uVGVybWluYWxOb2RlIiwicmlnaHROb25UZXJtaW5hbE5vZGUiLCJlcXVhbGl0aWVzIiwiY29udGV4dCIsInZlcmlmeUFoZWFkIiwibm9uVGVybWluYWxOb2RlVmVyaWZpZWQiLCJsZWZ0Tm9uVGVybWluYWxOb2RlUnVsZU5hbWUiLCJnZXRSdWxlTmFtZSIsInJpZ2h0Tm9uVGVybWluYWxOb2RlUnVsZU5hbWUiLCJsZWZ0Tm9uVGVybWluYWxOb2RlUnVsZU5hbWVUZXJtUnVsZU5hbWUiLCJURVJNX1JVTEVfTkFNRSIsInJpZ2h0Tm9uVGVybWluYWxOb2RlUnVsZU5hbWVUZXJtUnVsZU5hbWUiLCJsZWZ0VGVybU5vZGUiLCJyaWdodFRlcm1Ob2RlIiwidGVybU5vZGVWZXJpZmllZCIsInZlcmlmeVRlcm1Ob2RlIiwibGVmdE5vblRlcm1pbmFsTm9kZUNoaWxkTm9kZXMiLCJnZXRDaGlsZE5vZGVzIiwicmlnaHROb25UZXJtaW5hbE5vZGVDaGlsZE5vZGVzIiwibGVmdENoaWxkTm9kZXMiLCJyaWdodENoaWxkTm9kZXMiLCJjaGlsZE5vZGVzVmVyaWZpZWQiLCJ2ZXJpZnlDaGlsZE5vZGVzIiwidGVybXNWZXJpZmllZCIsInZlcmlmeVRlcm1zIiwiZXF1YWxpdHkiLCJFcXVhbGl0eSIsImZyb21MZWZ0VGVybU5vZGVBbmRSaWdodFRlcm1Ob2RlIiwiZXF1YWxpdHlBIiwiZXF1YWxpdGllc0IiLCJlcXVhbGl0eU1hdGNoZXMiLCJzb21lIiwiZXF1YWxpdHlCIiwiZXF1YWxpdHlBTWF0Y2hlc0VxdWFsaXR5QiIsIm1hdGNoIiwiTm9kZXNWZXJpZmllciIsImVxdWFsaXR5Tm9kZXNWZXJpZmllciJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBbUVBOzs7ZUFBQTs7OytEQWpFcUI7NERBQ0c7NERBQ0U7eUJBRUs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFL0IsSUFBQSxBQUFNQSxzQ0F5REgsQUF6REg7Y0FBTUE7K0JBQUFBO2FBQUFBO2dDQUFBQTs7O2tCQUFBQTs7WUFDSkMsS0FBQUE7bUJBQUFBLFNBQUFBLHNCQUFzQkMsbUJBQW1CLEVBQUVDLG9CQUFvQixFQUFFQyxVQUFVLEVBQUVDLE9BQU8sRUFBRUMsV0FBVztnQkFDL0YsSUFBSUMsMEJBQTBCO2dCQUU5QixJQUFNQyw4QkFBOEJOLG9CQUFvQk8sV0FBVyxJQUM3REMsK0JBQStCUCxxQkFBcUJNLFdBQVc7Z0JBRXJFLElBQUlELGdDQUFnQ0UsOEJBQThCO29CQUNoRSxJQUFNQywwQ0FBMkNILGdDQUFnQ0kseUJBQWMsRUFDekZDLDJDQUE0Q0gsaUNBQWlDRSx5QkFBYztvQkFFakcsSUFBSUQsMkNBQTJDRSwwQ0FBMEM7d0JBQ3ZGLElBQU1DLGVBQWVaLHFCQUNmYSxnQkFBZ0JaLHNCQUNoQmEsbUJBQW1CLElBQUksQ0FBQ0MsY0FBYyxDQUFDSCxjQUFjQyxlQUFlWCxZQUFZQyxTQUFTQzt3QkFFL0ZDLDBCQUEwQlMsa0JBQW1CLEdBQUc7b0JBQ2xEO29CQUVBLElBQUksQ0FBQ1QseUJBQXlCO3dCQUM1QixJQUFNVyxnQ0FBZ0NoQixvQkFBb0JpQixhQUFhLElBQ2pFQyxpQ0FBaUNqQixxQkFBcUJnQixhQUFhLElBQ25FRSxpQkFBaUJILCtCQUNqQkksa0JBQWtCRixnQ0FDbEJHLHFCQUFxQixJQUFJLENBQUNDLGdCQUFnQixDQUFDSCxnQkFBZ0JDLGlCQUFpQmxCLFlBQVlDLFNBQVNDO3dCQUV2R0MsMEJBQTBCZ0Isb0JBQW9CLEdBQUc7b0JBQ25EO2dCQUNGO2dCQUVBLE9BQU9oQjtZQUNUOzs7WUFFQVUsS0FBQUE7bUJBQUFBLFNBQUFBLGVBQWVILFlBQVksRUFBRUMsYUFBYSxFQUFFWCxVQUFVLEVBQUVDLE9BQU8sRUFBRUMsV0FBVztnQkFDMUUsSUFBSVUsbUJBQW1CO2dCQUV2QixJQUFNUyxnQkFBZ0JDLElBQUFBLGNBQVcsRUFBQ1osY0FBY0MsZUFBZVYsU0FBU0M7Z0JBRXhFLElBQUltQixlQUFlO29CQUNqQixJQUFNRSxXQUFXQyxpQkFBUSxDQUFDQyxnQ0FBZ0MsQ0FBQ2YsY0FBY0MsZ0JBQ25FZSxZQUFZSCxVQUNaSSxjQUFjM0IsWUFDZDRCLGtCQUFrQkQsWUFBWUUsSUFBSSxDQUFDLFNBQUNDO3dCQUNsQyxJQUFNQyw0QkFBNEJMLFVBQVVNLEtBQUssQ0FBQ0YsV0FBV0gsYUFBYTFCO3dCQUUxRSxJQUFJOEIsMkJBQTJCOzRCQUM3QixPQUFPO3dCQUNUO29CQUNGO29CQUVObkIsbUJBQW1CZ0IsaUJBQWtCLEdBQUc7Z0JBQzFDO2dCQUVBLE9BQU9oQjtZQUNUOzs7V0F0REloQjtFQUE4QnFDLGNBQWE7QUF5RGpELElBQU1DLHdCQUF3QixJQUFJdEM7SUFFbEMsV0FBZXNDIn0=
package/src/assignment.js DELETED
@@ -1,36 +0,0 @@
1
- "use strict";
2
-
3
- export default class Assignment {
4
- constructor(variable) {
5
- this.variable = variable;
6
- }
7
-
8
- getVariable() {
9
- return this.variable;
10
- }
11
-
12
- assign(proofContext) {
13
- proofContext.addVariable(this.variable);
14
- }
15
-
16
- match(assignment) {
17
- const variable = assignment.getVariable(),
18
- variableMatches = variable.match(this.variable),
19
- matches = variableMatches; ///
20
-
21
- return matches;
22
- }
23
-
24
- matchNameAndType(name, type) {
25
- const variableMatchesNameAndType = this.variable.matchNameAndType(name, type),
26
- nameAndTypeMatch = variableMatchesNameAndType; ///
27
-
28
- return nameAndTypeMatch;
29
- }
30
-
31
- static fromVariable(variable) {
32
- const assignment = new Assignment(variable);
33
-
34
- return assignment;
35
- }
36
- }
@@ -1,205 +0,0 @@
1
- "use strict";
2
-
3
- import Variable from "../variable";
4
- import Equality from "../equality";
5
- import fileMixins from "../mixins/file";
6
- import loggingMixins from "../mixins/logging";
7
-
8
- import { push, last, filter } from "../utilities/array";
9
-
10
- class ProofContext {
11
- constructor(context, variables, proofSteps) {
12
- this.context = context;
13
- this.variables = variables;
14
- this.proofSteps = proofSteps;
15
- }
16
-
17
- getContext() {
18
- return this.context;
19
- }
20
-
21
- getVariables() {
22
- const variables = [];
23
-
24
- push(variables, this.variables);
25
-
26
- const contextVariables = this.context.getVariables();
27
-
28
- push(variables, contextVariables);
29
-
30
- return variables;
31
- }
32
-
33
- getProofSteps() {
34
- let proofSteps = this.context.getProofSteps();
35
-
36
- proofSteps = [
37
- ...proofSteps,
38
- ...this.proofSteps
39
- ];
40
-
41
- return proofSteps;
42
- }
43
-
44
- getLastProofStep() {
45
- let lastProofStep = null;
46
-
47
- const proofStepsLength = this.proofSteps.length;
48
-
49
- if (proofStepsLength > 0) {
50
- lastProofStep = last(this.proofSteps);
51
- }
52
-
53
- return lastProofStep;
54
- }
55
-
56
- getMetavariables() { return this.context.getMetavariables(); }
57
-
58
- getEqualities(equalities = []) {
59
- this.context.getEqualities(equalities);
60
-
61
- this.proofSteps.forEach((proofStep) => {
62
- const equality = Equality.fromProofStep(proofStep);
63
-
64
- if (equality !== null) {
65
- equalities.push(equality);
66
- }
67
- });
68
-
69
- return equalities;
70
- }
71
-
72
- addVariable(variable) {
73
- const variableName = variable.getName();
74
-
75
- filter(this.variables, (variable) => {
76
- const name = variable.getName(),
77
- nameVariableName = (name === variableName);
78
-
79
- if (!nameVariableName) {
80
- return true;
81
- }
82
- });
83
-
84
- this.variables.push(variable);
85
- }
86
-
87
- addProofStep(proofStep) {
88
- this.proofSteps.push(proofStep);
89
- }
90
-
91
- matchStatement(statementNode) {
92
- let statementMatches = false;
93
-
94
- if (!statementMatches) {
95
- const proofStepMatchesStatement = this.proofSteps.some((proofStep) => {
96
- const proofStepMatchesStatement = proofStep.match(statementNode);
97
-
98
- if (proofStepMatchesStatement) {
99
- return true;
100
- }
101
- });
102
-
103
- statementMatches = proofStepMatchesStatement; ///
104
- }
105
-
106
- if (!statementMatches) {
107
- statementMatches = this.context.matchStatement(statementNode);
108
- }
109
-
110
- return statementMatches;
111
- }
112
-
113
- findVariableByVariableName(variableName) {
114
- const name = variableName, ///
115
- variables = this.getVariables(),
116
- variable = variables.find((variable) => {
117
- const matches = variable.matchName(name);
118
-
119
- if (matches) {
120
- return true;
121
- }
122
- }) || null;
123
-
124
- return variable;
125
- }
126
-
127
- isVariablePresentByVariableName(variableName) {
128
- const variable = this.findVariableByVariableName(variableName),
129
- variablePresent = (variable !== null);
130
-
131
- return variablePresent;
132
- }
133
-
134
- toJSON(tokens) {
135
- const variables = this.variables.map((variable) => {
136
- const variableJSON = variable.toJSON(tokens);
137
-
138
- variable = variableJSON;
139
-
140
- return variable;
141
- }),
142
- json = {
143
- variables
144
- };
145
-
146
- return json;
147
- }
148
-
149
- static fromFileContext(fileContext) {
150
- const context = fileContext, ///
151
- variables = [],
152
- proofSteps = [],
153
- proofContext = new ProofContext(context, variables, proofSteps);
154
-
155
- return proofContext;
156
- }
157
-
158
- static fromProofContext(proofContext) {
159
- const context = proofContext, ///
160
- variables = [],
161
- proofSteps = [];
162
-
163
- proofContext = new ProofContext(context, variables, proofSteps);
164
-
165
- return proofContext;
166
- }
167
-
168
- static fromJSONAndFileContext(json, fileContext) {
169
- let { variables } = json;
170
-
171
- const variablesJSON = variables;
172
-
173
- variables = variablesJSON.map((variableJSON) => {
174
- const json = variableJSON, ///
175
- variable = Variable.fromJSONAndFileContext(json, fileContext);
176
-
177
- return variable;
178
- });
179
-
180
- const context = fileContext, ///
181
- proofSteps = [],
182
- proofContext = new ProofContext(context, variables, proofSteps);
183
-
184
- return proofContext;
185
- }
186
-
187
- static fromProofContextAndAssignments(proofContext, assignments) {
188
- const context = proofContext, ///
189
- variables = assignments.map((assignment) => {
190
- const variable = assignment.getVariable();
191
-
192
- return variable;
193
- }),
194
- proofSteps = [];
195
-
196
- proofContext = new ProofContext(context, variables, proofSteps);
197
-
198
- return proofContext;
199
- }
200
- }
201
-
202
- Object.assign(ProofContext.prototype, fileMixins);
203
- Object.assign(ProofContext.prototype, loggingMixins);
204
-
205
- export default ProofContext;
@@ -1,68 +0,0 @@
1
- "use strict";
2
-
3
- import Equality from "../../equality";
4
- import verifyTerms from "../../verify/terms";
5
- import NodesVerifier from "../../verifier/nodes";
6
-
7
- import { TERM_RULE_NAME } from "../../ruleNames";
8
-
9
- class EqualityNodesVerifier extends NodesVerifier {
10
- verifyNonTerminalNode(leftNonTerminalNode, rightNonTerminalNode, equalities, context, verifyAhead) {
11
- let nonTerminalNodeVerified = false;
12
-
13
- const leftNonTerminalNodeRuleName = leftNonTerminalNode.getRuleName(),
14
- rightNonTerminalNodeRuleName = rightNonTerminalNode.getRuleName();
15
-
16
- if (leftNonTerminalNodeRuleName === rightNonTerminalNodeRuleName) {
17
- const leftNonTerminalNodeRuleNameTermRuleName = (leftNonTerminalNodeRuleName === TERM_RULE_NAME),
18
- rightNonTerminalNodeRuleNameTermRuleName = (rightNonTerminalNodeRuleName === TERM_RULE_NAME);
19
-
20
- if (leftNonTerminalNodeRuleNameTermRuleName && rightNonTerminalNodeRuleNameTermRuleName) {
21
- const leftTermNode = leftNonTerminalNode, ///
22
- rightTermNode = rightNonTerminalNode, ///
23
- termNodeVerified = this.verifyTermNode(leftTermNode, rightTermNode, equalities, context, verifyAhead);
24
-
25
- nonTerminalNodeVerified = termNodeVerified; ///
26
- }
27
-
28
- if (!nonTerminalNodeVerified) {
29
- const leftNonTerminalNodeChildNodes = leftNonTerminalNode.getChildNodes(),
30
- rightNonTerminalNodeChildNodes = rightNonTerminalNode.getChildNodes(),
31
- leftChildNodes = leftNonTerminalNodeChildNodes, ///
32
- rightChildNodes = rightNonTerminalNodeChildNodes, ///
33
- childNodesVerified = this.verifyChildNodes(leftChildNodes, rightChildNodes, equalities, context, verifyAhead);
34
-
35
- nonTerminalNodeVerified = childNodesVerified; ///
36
- }
37
- }
38
-
39
- return nonTerminalNodeVerified;
40
- }
41
-
42
- verifyTermNode(leftTermNode, rightTermNode, equalities, context, verifyAhead) {
43
- let termNodeVerified = false;
44
-
45
- const termsVerified = verifyTerms(leftTermNode, rightTermNode, context, verifyAhead);
46
-
47
- if (termsVerified) {
48
- const equality = Equality.fromLeftTermNodeAndRightTermNode(leftTermNode, rightTermNode),
49
- equalityA = equality, ///
50
- equalitiesB = equalities, ///
51
- equalityMatches = equalitiesB.some((equalityB) => { ///
52
- const equalityAMatchesEqualityB = equalityA.match(equalityB, equalitiesB, context);
53
-
54
- if (equalityAMatchesEqualityB) {
55
- return true;
56
- }
57
- });
58
-
59
- termNodeVerified = equalityMatches; ///
60
- }
61
-
62
- return termNodeVerified;
63
- }
64
- }
65
-
66
- const equalityNodesVerifier = new EqualityNodesVerifier();
67
-
68
- export default equalityNodesVerifier;