binary-decision-diagram 3.0.1 → 3.0.2

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 (148) hide show
  1. package/dist/cjs/src/abstract-node.js +173 -0
  2. package/dist/cjs/src/abstract-node.js.map +1 -0
  3. package/dist/cjs/src/branches.js +76 -0
  4. package/dist/cjs/src/branches.js.map +1 -0
  5. package/dist/cjs/src/create-bdd-from-truth-table.js +38 -0
  6. package/dist/cjs/src/create-bdd-from-truth-table.js.map +1 -0
  7. package/dist/cjs/src/ensure-correct-bdd.js +102 -0
  8. package/dist/cjs/src/ensure-correct-bdd.js.map +1 -0
  9. package/dist/cjs/src/fill-truth-table.js +26 -0
  10. package/dist/cjs/src/fill-truth-table.js.map +1 -0
  11. package/dist/cjs/src/find-similar-node.js +22 -0
  12. package/dist/cjs/src/find-similar-node.js.map +1 -0
  13. package/dist/cjs/src/index.es5.d.ts +9 -0
  14. package/dist/cjs/src/index.es5.js +36 -0
  15. package/dist/cjs/src/index.es5.js.map +1 -0
  16. package/dist/cjs/src/index.js +30 -0
  17. package/dist/cjs/src/index.js.map +1 -0
  18. package/dist/cjs/src/internal-node.js +46 -0
  19. package/dist/cjs/src/internal-node.js.map +1 -0
  20. package/dist/cjs/src/leaf-node.js +34 -0
  21. package/dist/cjs/src/leaf-node.js.map +1 -0
  22. package/dist/cjs/src/minimal-string/bdd-to-minimal-string.js +60 -0
  23. package/dist/cjs/src/minimal-string/bdd-to-minimal-string.js.map +1 -0
  24. package/dist/cjs/src/minimal-string/bdd-to-simple-bdd.js +24 -0
  25. package/dist/cjs/src/minimal-string/bdd-to-simple-bdd.js.map +1 -0
  26. package/dist/cjs/src/minimal-string/index.js +22 -0
  27. package/dist/cjs/src/minimal-string/index.js.map +1 -0
  28. package/dist/cjs/src/minimal-string/minimal-string-to-simple-bdd.js +58 -0
  29. package/dist/cjs/src/minimal-string/minimal-string-to-simple-bdd.js.map +1 -0
  30. package/dist/cjs/src/minimal-string/resolve-with-simple-bdd.js +21 -0
  31. package/dist/cjs/src/minimal-string/resolve-with-simple-bdd.js.map +1 -0
  32. package/dist/cjs/src/minimal-string/string-format.js +61 -0
  33. package/dist/cjs/src/minimal-string/string-format.js.map +1 -0
  34. package/dist/cjs/src/optimize-brute-force.js +140 -0
  35. package/dist/cjs/src/optimize-brute-force.js.map +1 -0
  36. package/dist/cjs/src/parents.js +43 -0
  37. package/dist/cjs/src/parents.js.map +1 -0
  38. package/dist/cjs/src/root-node.js +158 -0
  39. package/dist/cjs/src/root-node.js.map +1 -0
  40. package/dist/cjs/src/types.js +3 -0
  41. package/dist/{src → cjs/src}/types.js.map +1 -1
  42. package/dist/cjs/src/util.js +127 -0
  43. package/dist/cjs/src/util.js.map +1 -0
  44. package/dist/esm/src/abstract-node.d.ts +33 -0
  45. package/dist/esm/src/abstract-node.js.map +1 -0
  46. package/dist/esm/src/branches.d.ts +20 -0
  47. package/dist/esm/src/branches.js.map +1 -0
  48. package/dist/esm/src/create-bdd-from-truth-table.d.ts +3 -0
  49. package/dist/esm/src/create-bdd-from-truth-table.js.map +1 -0
  50. package/dist/esm/src/ensure-correct-bdd.d.ts +8 -0
  51. package/dist/esm/src/ensure-correct-bdd.js.map +1 -0
  52. package/dist/esm/src/fill-truth-table.d.ts +6 -0
  53. package/dist/esm/src/fill-truth-table.js.map +1 -0
  54. package/dist/esm/src/find-similar-node.d.ts +7 -0
  55. package/dist/esm/src/find-similar-node.js.map +1 -0
  56. package/dist/esm/src/index.d.ts +14 -0
  57. package/dist/esm/src/index.es5.d.ts +9 -0
  58. package/dist/esm/src/index.es5.js +11 -0
  59. package/dist/esm/src/index.es5.js.map +1 -0
  60. package/dist/esm/src/index.js.map +1 -0
  61. package/dist/esm/src/internal-node.d.ts +16 -0
  62. package/dist/esm/src/internal-node.js.map +1 -0
  63. package/dist/esm/src/leaf-node.d.ts +10 -0
  64. package/dist/esm/src/leaf-node.js.map +1 -0
  65. package/dist/esm/src/minimal-string/bdd-to-minimal-string.d.ts +8 -0
  66. package/dist/esm/src/minimal-string/bdd-to-minimal-string.js.map +1 -0
  67. package/dist/esm/src/minimal-string/bdd-to-simple-bdd.d.ts +11 -0
  68. package/dist/esm/src/minimal-string/bdd-to-simple-bdd.js.map +1 -0
  69. package/dist/esm/src/minimal-string/index.d.ts +5 -0
  70. package/dist/esm/src/minimal-string/index.js.map +1 -0
  71. package/dist/esm/src/minimal-string/minimal-string-to-simple-bdd.d.ts +2 -0
  72. package/dist/esm/src/minimal-string/minimal-string-to-simple-bdd.js.map +1 -0
  73. package/dist/esm/src/minimal-string/resolve-with-simple-bdd.d.ts +2 -0
  74. package/dist/esm/src/minimal-string/resolve-with-simple-bdd.js.map +1 -0
  75. package/dist/esm/src/minimal-string/string-format.d.ts +9 -0
  76. package/dist/esm/src/minimal-string/string-format.js.map +1 -0
  77. package/dist/esm/src/optimize-brute-force.d.ts +43 -0
  78. package/dist/esm/src/optimize-brute-force.js.map +1 -0
  79. package/dist/esm/src/package.json +1 -0
  80. package/dist/esm/src/parents.d.ts +15 -0
  81. package/dist/esm/src/parents.js.map +1 -0
  82. package/dist/esm/src/root-node.d.ts +28 -0
  83. package/dist/esm/src/root-node.js.map +1 -0
  84. package/dist/esm/src/types.d.ts +24 -0
  85. package/dist/esm/src/types.js.map +1 -0
  86. package/dist/esm/src/util.d.ts +26 -0
  87. package/dist/esm/src/util.js.map +1 -0
  88. package/package.json +16 -6
  89. package/src/index.es5.ts +12 -0
  90. package/dist/src/abstract-node.js.map +0 -1
  91. package/dist/src/branches.js.map +0 -1
  92. package/dist/src/create-bdd-from-truth-table.js.map +0 -1
  93. package/dist/src/ensure-correct-bdd.js.map +0 -1
  94. package/dist/src/fill-truth-table.js.map +0 -1
  95. package/dist/src/find-similar-node.js.map +0 -1
  96. package/dist/src/index.js.map +0 -1
  97. package/dist/src/internal-node.js.map +0 -1
  98. package/dist/src/leaf-node.js.map +0 -1
  99. package/dist/src/minimal-string/bdd-to-minimal-string.js.map +0 -1
  100. package/dist/src/minimal-string/bdd-to-simple-bdd.js.map +0 -1
  101. package/dist/src/minimal-string/index.js.map +0 -1
  102. package/dist/src/minimal-string/minimal-string-to-simple-bdd.js.map +0 -1
  103. package/dist/src/minimal-string/resolve-with-simple-bdd.js.map +0 -1
  104. package/dist/src/minimal-string/string-format.js.map +0 -1
  105. package/dist/src/optimize-brute-force.js.map +0 -1
  106. package/dist/src/parents.js.map +0 -1
  107. package/dist/src/root-node.js.map +0 -1
  108. package/dist/src/util.js.map +0 -1
  109. /package/dist/{src → cjs/src}/abstract-node.d.ts +0 -0
  110. /package/dist/{src → cjs/src}/branches.d.ts +0 -0
  111. /package/dist/{src → cjs/src}/create-bdd-from-truth-table.d.ts +0 -0
  112. /package/dist/{src → cjs/src}/ensure-correct-bdd.d.ts +0 -0
  113. /package/dist/{src → cjs/src}/fill-truth-table.d.ts +0 -0
  114. /package/dist/{src → cjs/src}/find-similar-node.d.ts +0 -0
  115. /package/dist/{src → cjs/src}/index.d.ts +0 -0
  116. /package/dist/{src → cjs/src}/internal-node.d.ts +0 -0
  117. /package/dist/{src → cjs/src}/leaf-node.d.ts +0 -0
  118. /package/dist/{src → cjs/src}/minimal-string/bdd-to-minimal-string.d.ts +0 -0
  119. /package/dist/{src → cjs/src}/minimal-string/bdd-to-simple-bdd.d.ts +0 -0
  120. /package/dist/{src → cjs/src}/minimal-string/index.d.ts +0 -0
  121. /package/dist/{src → cjs/src}/minimal-string/minimal-string-to-simple-bdd.d.ts +0 -0
  122. /package/dist/{src → cjs/src}/minimal-string/resolve-with-simple-bdd.d.ts +0 -0
  123. /package/dist/{src → cjs/src}/minimal-string/string-format.d.ts +0 -0
  124. /package/dist/{src → cjs/src}/optimize-brute-force.d.ts +0 -0
  125. /package/dist/{src → cjs/src}/parents.d.ts +0 -0
  126. /package/dist/{src → cjs/src}/root-node.d.ts +0 -0
  127. /package/dist/{src → cjs/src}/types.d.ts +0 -0
  128. /package/dist/{src → cjs/src}/util.d.ts +0 -0
  129. /package/dist/{src → esm/src}/abstract-node.js +0 -0
  130. /package/dist/{src → esm/src}/branches.js +0 -0
  131. /package/dist/{src → esm/src}/create-bdd-from-truth-table.js +0 -0
  132. /package/dist/{src → esm/src}/ensure-correct-bdd.js +0 -0
  133. /package/dist/{src → esm/src}/fill-truth-table.js +0 -0
  134. /package/dist/{src → esm/src}/find-similar-node.js +0 -0
  135. /package/dist/{src → esm/src}/index.js +0 -0
  136. /package/dist/{src → esm/src}/internal-node.js +0 -0
  137. /package/dist/{src → esm/src}/leaf-node.js +0 -0
  138. /package/dist/{src → esm/src}/minimal-string/bdd-to-minimal-string.js +0 -0
  139. /package/dist/{src → esm/src}/minimal-string/bdd-to-simple-bdd.js +0 -0
  140. /package/dist/{src → esm/src}/minimal-string/index.js +0 -0
  141. /package/dist/{src → esm/src}/minimal-string/minimal-string-to-simple-bdd.js +0 -0
  142. /package/dist/{src → esm/src}/minimal-string/resolve-with-simple-bdd.js +0 -0
  143. /package/dist/{src → esm/src}/minimal-string/string-format.js +0 -0
  144. /package/dist/{src → esm/src}/optimize-brute-force.js +0 -0
  145. /package/dist/{src → esm/src}/parents.js +0 -0
  146. /package/dist/{src → esm/src}/root-node.js +0 -0
  147. /package/dist/{src → esm/src}/types.js +0 -0
  148. /package/dist/{src → esm/src}/util.js +0 -0
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.nodeToString = exports.bddToMinimalString = void 0;
4
+ const string_format_js_1 = require("./string-format.js");
5
+ const string_format_js_2 = require("./string-format.js");
6
+ function bddToMinimalString(bdd) {
7
+ let ret = '';
8
+ let currentCharCode = string_format_js_2.FIRST_CHAR_CODE_FOR_ID;
9
+ // add leaf node count
10
+ const leafNodeAmount = bdd.getLeafNodes().length;
11
+ if (leafNodeAmount > 99) {
12
+ throw new Error('cannot build string with too many leaf nodes');
13
+ }
14
+ ret += leafNodeAmount.toString().padStart(2, '0');
15
+ const levelsHighestFirst = bdd.levels.slice().reverse();
16
+ const idByNode = new Map();
17
+ levelsHighestFirst.forEach(level => {
18
+ const nodes = bdd.getNodesOfLevel(level);
19
+ nodes.forEach(node => {
20
+ const stringRep = nodeToString(node, idByNode, currentCharCode);
21
+ currentCharCode = stringRep.nextCode;
22
+ idByNode.set(node, stringRep.id);
23
+ ret += stringRep.str;
24
+ });
25
+ });
26
+ return ret;
27
+ }
28
+ exports.bddToMinimalString = bddToMinimalString;
29
+ function nodeToString(node, idByNode, lastCode) {
30
+ const nextId = (0, string_format_js_1.getNextCharId)(lastCode);
31
+ switch (node.type) {
32
+ case 'LeafNode':
33
+ const valueChar = (0, string_format_js_1.getCharOfValue)(node.asLeafNode().value);
34
+ return {
35
+ id: nextId.char,
36
+ nextCode: nextId.nextCode,
37
+ str: nextId.char + valueChar
38
+ };
39
+ case 'InternalNode':
40
+ const branch0Id = idByNode.get(node.asInternalNode().branches.getBranch('0'));
41
+ const branch1Id = idByNode.get(node.asInternalNode().branches.getBranch('1'));
42
+ return {
43
+ id: nextId.char,
44
+ nextCode: nextId.nextCode,
45
+ str: nextId.char + branch0Id + branch1Id + (0, string_format_js_1.getCharOfLevel)(node.level)
46
+ };
47
+ case 'RootNode':
48
+ const branch0IdRoot = idByNode.get(node.asRootNode().branches.getBranch('0'));
49
+ const branch1IdRoot = idByNode.get(node.asRootNode().branches.getBranch('1'));
50
+ return {
51
+ id: nextId.char,
52
+ nextCode: nextId.nextCode,
53
+ str: '' + branch0IdRoot + branch1IdRoot + (0, string_format_js_1.getCharOfLevel)(node.level)
54
+ };
55
+ default:
56
+ throw new Error('unknown node type');
57
+ }
58
+ }
59
+ exports.nodeToString = nodeToString;
60
+ //# sourceMappingURL=bdd-to-minimal-string.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bdd-to-minimal-string.js","sourceRoot":"","sources":["../../../../src/minimal-string/bdd-to-minimal-string.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.nodeToSimpleBddNode = exports.bddToSimpleBdd = void 0;
4
+ /**
5
+ * @recursive
6
+ */
7
+ function bddToSimpleBdd(bdd) {
8
+ return nodeToSimpleBddNode(bdd);
9
+ }
10
+ exports.bddToSimpleBdd = bddToSimpleBdd;
11
+ /**
12
+ * @recursive
13
+ */
14
+ function nodeToSimpleBddNode(node) {
15
+ const branch0 = node.branches.getBranch('0');
16
+ const branch1 = node.branches.getBranch('1');
17
+ return {
18
+ l: node.level,
19
+ 0: branch0.isLeafNode() ? branch0.asLeafNode().value : nodeToSimpleBddNode(branch0),
20
+ 1: branch1.isLeafNode() ? branch1.asLeafNode().value : nodeToSimpleBddNode(branch1),
21
+ };
22
+ }
23
+ exports.nodeToSimpleBddNode = nodeToSimpleBddNode;
24
+ //# sourceMappingURL=bdd-to-simple-bdd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bdd-to-simple-bdd.js","sourceRoot":"","sources":["../../../../src/minimal-string/bdd-to-simple-bdd.ts"],"names":[],"mappings":";;;AAOA;;GAEG;AACH,SAAgB,cAAc,CAAC,GAAa;IACxC,OAAO,mBAAmB,CAAC,GAAG,CAAC,CAAC;AACpC,CAAC;AAFD,wCAEC;AAGD;;GAEG;AACH,SAAgB,mBAAmB,CAC/B,IAAkB;IAGlB,MAAM,OAAO,GAAkB,IAAqB,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC7E,MAAM,OAAO,GAAkB,IAAqB,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAE7E,OAAO;QACH,CAAC,EAAE,IAAI,CAAC,KAAK;QACb,CAAC,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC;QACnF,CAAC,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC;KACtF,CAAC;AACN,CAAC;AAZD,kDAYC"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./bdd-to-minimal-string.js"), exports);
18
+ __exportStar(require("./minimal-string-to-simple-bdd.js"), exports);
19
+ __exportStar(require("./resolve-with-simple-bdd.js"), exports);
20
+ __exportStar(require("./string-format.js"), exports);
21
+ __exportStar(require("./bdd-to-simple-bdd.js"), exports);
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/minimal-string/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6DAA2C;AAC3C,oEAAkD;AAClD,+DAA6C;AAC7C,qDAAmC;AACnC,yDAAuC"}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.minimalStringToSimpleBdd = void 0;
4
+ const util_js_1 = require("../util.js");
5
+ const string_format_js_1 = require("./string-format.js");
6
+ function minimalStringToSimpleBdd(str) {
7
+ const nodesById = new Map();
8
+ // parse leaf nodes
9
+ const leafNodeAmount = parseInt(str.charAt(0) + str.charAt(1), 10);
10
+ const lastLeafNodeChar = (2 + leafNodeAmount * 2);
11
+ const leafNodeChars = str.substring(2, lastLeafNodeChar);
12
+ const leafNodeChunks = (0, util_js_1.splitStringToChunks)(leafNodeChars, 2);
13
+ for (let i = 0; i < leafNodeChunks.length; i++) {
14
+ const chunk = leafNodeChunks[i];
15
+ const id = chunk.charAt(0);
16
+ const value = (0, string_format_js_1.getNumberOfChar)(chunk.charAt(1));
17
+ nodesById.set(id, value);
18
+ }
19
+ // parse internal nodes
20
+ const internalNodeChars = str.substring(lastLeafNodeChar, str.length - 3);
21
+ const internalNodeChunks = (0, util_js_1.splitStringToChunks)(internalNodeChars, 4);
22
+ for (let i = 0; i < internalNodeChunks.length; i++) {
23
+ const chunk = internalNodeChunks[i];
24
+ const id = chunk.charAt(0);
25
+ const idOf0Branch = chunk.charAt(1);
26
+ const idOf1Branch = chunk.charAt(2);
27
+ const level = (0, string_format_js_1.getNumberOfChar)(chunk.charAt(3));
28
+ if (!nodesById.has(idOf0Branch)) {
29
+ throw new Error('missing node with id ' + idOf0Branch);
30
+ }
31
+ if (!nodesById.has(idOf1Branch)) {
32
+ throw new Error('missing node with id ' + idOf1Branch);
33
+ }
34
+ const node0 = nodesById.get(idOf0Branch);
35
+ const node1 = nodesById.get(idOf1Branch);
36
+ const node = {
37
+ l: level,
38
+ 0: node0,
39
+ 1: node1
40
+ };
41
+ nodesById.set(id, node);
42
+ }
43
+ // parse root node
44
+ const last3 = str.slice(-3);
45
+ const idOf0 = last3.charAt(0);
46
+ const idOf1 = last3.charAt(1);
47
+ const levelOfRoot = (0, string_format_js_1.getNumberOfChar)(last3.charAt(2));
48
+ const nodeOf0 = nodesById.get(idOf0);
49
+ const nodeOf1 = nodesById.get(idOf1);
50
+ const rootNode = {
51
+ l: levelOfRoot,
52
+ 0: nodeOf0,
53
+ 1: nodeOf1,
54
+ };
55
+ return rootNode;
56
+ }
57
+ exports.minimalStringToSimpleBdd = minimalStringToSimpleBdd;
58
+ //# sourceMappingURL=minimal-string-to-simple-bdd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"minimal-string-to-simple-bdd.js","sourceRoot":"","sources":["../../../../src/minimal-string/minimal-string-to-simple-bdd.ts"],"names":[],"mappings":";;;AAIA,wCAAiD;AACjD,yDAAqD;AAErD,SAAgB,wBAAwB,CACpC,GAAW;IAEX,MAAM,SAAS,GAA+C,IAAI,GAAG,EAAE,CAAC;IAExE,mBAAmB;IACnB,MAAM,cAAc,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACnE,MAAM,gBAAgB,GAAG,CAAC,CAAC,GAAG,cAAc,GAAG,CAAC,CAAC,CAAC;IAClD,MAAM,aAAa,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC;IACzD,MAAM,cAAc,GAAG,IAAA,6BAAmB,EAAC,aAAa,EAAE,CAAC,CAAC,CAAC;IAC7D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC5C,MAAM,KAAK,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,KAAK,GAAsB,IAAA,kCAAe,EAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAClE,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;KAC5B;IAED,uBAAuB;IACvB,MAAM,iBAAiB,GAAG,GAAG,CAAC,SAAS,CAAC,gBAAgB,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC1E,MAAM,kBAAkB,GAAG,IAAA,6BAAmB,EAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;IACrE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,kBAAkB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAChD,MAAM,KAAK,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;QACpC,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACpC,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACpC,MAAM,KAAK,GAAG,IAAA,kCAAe,EAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAG/C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;YAC7B,MAAM,IAAI,KAAK,CAAC,uBAAuB,GAAG,WAAW,CAAC,CAAC;SAC1D;QACD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE;YAC7B,MAAM,IAAI,KAAK,CAAC,uBAAuB,GAAG,WAAW,CAAC,CAAC;SAC1D;QAED,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,WAAW,CAAc,CAAC;QACtD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,WAAW,CAAc,CAAC;QACtD,MAAM,IAAI,GAAc;YACpB,CAAC,EAAE,KAAK;YACR,CAAC,EAAE,KAAK;YACR,CAAC,EAAE,KAAK;SACX,CAAC;QACF,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;KAC3B;IAED,kBAAkB;IAClB,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5B,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC9B,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC9B,MAAM,WAAW,GAAG,IAAA,kCAAe,EAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAc,CAAC;IAClD,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAc,CAAC;IAClD,MAAM,QAAQ,GAAc;QACxB,CAAC,EAAE,WAAW;QACd,CAAC,EAAE,OAAO;QACV,CAAC,EAAE,OAAO;KACb,CAAC;IAEF,OAAO,QAAQ,CAAC;AACpB,CAAC;AA3DD,4DA2DC"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveWithSimpleBdd = void 0;
4
+ const util_js_1 = require("../util.js");
5
+ function resolveWithSimpleBdd(simpleBdd, fns, input) {
6
+ let currentNode = simpleBdd;
7
+ let currentLevel = simpleBdd.l;
8
+ while (true) {
9
+ const booleanResult = fns[currentLevel](input);
10
+ const branchKey = (0, util_js_1.booleanToBooleanString)(booleanResult);
11
+ currentNode = currentNode[branchKey];
12
+ if (typeof currentNode === 'number' || typeof currentNode === 'string') {
13
+ return currentNode;
14
+ }
15
+ else {
16
+ currentLevel = currentNode.l;
17
+ }
18
+ }
19
+ }
20
+ exports.resolveWithSimpleBdd = resolveWithSimpleBdd;
21
+ //# sourceMappingURL=resolve-with-simple-bdd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-with-simple-bdd.js","sourceRoot":"","sources":["../../../../src/minimal-string/resolve-with-simple-bdd.ts"],"names":[],"mappings":";;;AAKA,wCAAoD;AAEpD,SAAgB,oBAAoB,CAChC,SAAoB,EACpB,GAAsB,EACtB,KAAU;IAEV,IAAI,WAAW,GAAkC,SAAS,CAAC;IAC3D,IAAI,YAAY,GAAW,SAAS,CAAC,CAAC,CAAC;IACvC,OAAO,IAAI,EAAE;QACT,MAAM,aAAa,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC;QAC/C,MAAM,SAAS,GAAG,IAAA,gCAAsB,EAAC,aAAa,CAAC,CAAC;QACxD,WAAW,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;QACrC,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE;YACpE,OAAO,WAAkB,CAAC;SAC7B;aAAM;YACH,YAAY,GAAG,WAAW,CAAC,CAAC,CAAC;SAChC;KACJ;AACL,CAAC;AAjBD,oDAiBC"}
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ /*
3
+ let t = 0;
4
+ while (t < 10000) {
5
+ const char = String.fromCharCode(t);
6
+ console.log(t + ' : ' + char);
7
+ t++;
8
+ }
9
+ */
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.getNextCharId = exports.FIRST_CHAR_CODE_FOR_ID = exports.getCharOfValue = exports.getNumberOfChar = exports.getCharOfLevel = exports.CHAR_CODE_OFFSET = void 0;
12
+ /*
13
+
14
+ To have a really small string representation, we have to hack some stuff
15
+ which makes is complicated but effective.
16
+
17
+ Rules for the string:
18
+ - The string starts with a number like '23' that defines how many leaf-nodes we have
19
+ - leaf nodes consist of two chars like 'ab'
20
+ - the first char is the id
21
+ - the second the value is a number you can get via String.charCodeAt()
22
+ - Internal nodes have four chars like 'abcd'
23
+ - the first char is the id
24
+ - the second char is the id of the 0-branch
25
+ - the third char is the id of the 1-branch
26
+ - the last char is the id of the boolean-function (= level)
27
+ - The last 3 chars of the string is the root node like 'abc'
28
+ - it looks like the internal-node but without the id (first char)
29
+
30
+ */
31
+ // we use this because 39 is the quotes which causes problems
32
+ exports.CHAR_CODE_OFFSET = 40; // String.fromCharCode(33) === ')'
33
+ function getCharOfLevel(level) {
34
+ const charCode = exports.CHAR_CODE_OFFSET + level;
35
+ return String.fromCharCode(charCode);
36
+ }
37
+ exports.getCharOfLevel = getCharOfLevel;
38
+ function getNumberOfChar(char) {
39
+ const charCode = char.charCodeAt(0);
40
+ return charCode - exports.CHAR_CODE_OFFSET;
41
+ }
42
+ exports.getNumberOfChar = getNumberOfChar;
43
+ function getCharOfValue(value) {
44
+ const charCode = exports.CHAR_CODE_OFFSET + value;
45
+ return String.fromCharCode(charCode);
46
+ }
47
+ exports.getCharOfValue = getCharOfValue;
48
+ exports.FIRST_CHAR_CODE_FOR_ID = 97; // String.fromCharCode(97) === 'a'
49
+ function getNextCharId(lastCode) {
50
+ // jump these codes because they look strange
51
+ if (lastCode >= 128 && lastCode <= 160) {
52
+ lastCode = 161;
53
+ }
54
+ const char = String.fromCharCode(lastCode);
55
+ return {
56
+ char,
57
+ nextCode: lastCode + 1
58
+ };
59
+ }
60
+ exports.getNextCharId = getNextCharId;
61
+ //# sourceMappingURL=string-format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string-format.js","sourceRoot":"","sources":["../../../../src/minimal-string/string-format.ts"],"names":[],"mappings":";AAAA;;;;;;;EAOE;;;AAEF;;;;;;;;;;;;;;;;;;EAkBE;AAEF,6DAA6D;AAChD,QAAA,gBAAgB,GAAG,EAAE,CAAC,CAAC,kCAAkC;AAGtE,SAAgB,cAAc,CAAC,KAAa;IACxC,MAAM,QAAQ,GAAG,wBAAgB,GAAG,KAAK,CAAC;IAC1C,OAAO,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;AACzC,CAAC;AAHD,wCAGC;AAED,SAAgB,eAAe,CAAC,IAAY;IACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACpC,OAAO,QAAQ,GAAG,wBAAgB,CAAC;AACvC,CAAC;AAHD,0CAGC;AAED,SAAgB,cAAc,CAAC,KAAa;IACxC,MAAM,QAAQ,GAAG,wBAAgB,GAAG,KAAK,CAAC;IAC1C,OAAO,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;AACzC,CAAC;AAHD,wCAGC;AAGY,QAAA,sBAAsB,GAAG,EAAE,CAAC,CAAC,kCAAkC;AAE5E,SAAgB,aAAa,CAAC,QAAgB;IAK1C,6CAA6C;IAC7C,IAAI,QAAQ,IAAI,GAAG,IAAI,QAAQ,IAAI,GAAG,EAAE;QACpC,QAAQ,GAAG,GAAG,CAAC;KAClB;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC3C,OAAO;QACH,IAAI;QACJ,QAAQ,EAAE,QAAQ,GAAG,CAAC;KACzB,CAAC;AACN,CAAC;AAfD,sCAeC"}
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getArrayWithIndexes = exports.changeKeyOrder = exports.shuffleBooleanOrdering = exports.optimizeBruteForce = exports.defaultCompareResults = void 0;
4
+ const create_bdd_from_truth_table_js_1 = require("./create-bdd-from-truth-table.js");
5
+ const util_js_1 = require("./util.js");
6
+ /**
7
+ * returns the bdd with less nodes
8
+ */
9
+ const defaultCompareResults = function (a, b) {
10
+ if (a.countNodes() <= b.countNodes()) {
11
+ return a;
12
+ }
13
+ else {
14
+ return b;
15
+ }
16
+ };
17
+ exports.defaultCompareResults = defaultCompareResults;
18
+ /**
19
+ * optimises the ordering of the boolean functions
20
+ * by randomly sorting the array
21
+ * and checking the resulting bdd
22
+ */
23
+ async function optimizeBruteForce({ truthTable, iterations = Infinity, onBetterBdd = () => null, compareResults = exports.defaultCompareResults, afterBddCreation = () => null, log = false }) {
24
+ const initialBdd = (0, create_bdd_from_truth_table_js_1.createBddFromTruthTable)(truthTable);
25
+ afterBddCreation(initialBdd);
26
+ initialBdd.minimize();
27
+ let currentBestResult = {
28
+ truthTable,
29
+ bdd: initialBdd
30
+ };
31
+ if (log) {
32
+ initialBdd.log();
33
+ console.log('initial nodes amount: ' + initialBdd.countNodes());
34
+ }
35
+ let t = 0;
36
+ while (t < iterations) {
37
+ t++;
38
+ if (log) {
39
+ console.log('-'.repeat(50));
40
+ console.log('optimizeBruteForce() itterate once');
41
+ }
42
+ const shuffledOrdering = shuffleBooleanOrdering(truthTable);
43
+ const nextBdd = (0, create_bdd_from_truth_table_js_1.createBddFromTruthTable)(shuffledOrdering.newTable);
44
+ // change the levels of each node
45
+ const newNodesByLevel = new Map();
46
+ const lastLevel = (0, util_js_1.lastOfArray)(nextBdd.getLevels());
47
+ const newSortedLevels = [];
48
+ nextBdd.getLevels()
49
+ .filter(level => level !== lastLevel)
50
+ .forEach(level => {
51
+ const newLevel = shuffledOrdering.mappingBeforeToAfter[level];
52
+ newSortedLevels.push(newLevel);
53
+ const levelSet = new Set();
54
+ newNodesByLevel.set(newLevel, levelSet);
55
+ nextBdd.getNodesOfLevel(level).forEach(node => {
56
+ node.level = newLevel;
57
+ levelSet.add(node);
58
+ });
59
+ });
60
+ const lastLevelSet = new Set();
61
+ nextBdd.getNodesOfLevel(lastLevel).forEach(node => lastLevelSet.add(node));
62
+ newNodesByLevel.set(lastLevel, lastLevelSet);
63
+ newSortedLevels.push(lastLevel);
64
+ nextBdd.nodesByLevel = newNodesByLevel;
65
+ nextBdd.levels = newSortedLevels;
66
+ afterBddCreation(nextBdd);
67
+ nextBdd.minimize();
68
+ if (log) {
69
+ console.log('got new bdd with nodes amount of ' + nextBdd.countNodes());
70
+ // nextBdd.log();
71
+ console.dir(shuffledOrdering.mappingBeforeToAfter);
72
+ }
73
+ const betterBdd = await compareResults(currentBestResult.bdd, nextBdd);
74
+ if (betterBdd.type !== 'RootNode') {
75
+ throw new Error('compareResults did not return a bdd');
76
+ }
77
+ if (betterBdd === nextBdd) {
78
+ if (log) {
79
+ console.log('#'.repeat(50));
80
+ console.log('found better bdd ' + nextBdd.countNodes());
81
+ }
82
+ currentBestResult = {
83
+ bdd: nextBdd,
84
+ truthTable: shuffledOrdering.newTable
85
+ };
86
+ onBetterBdd(currentBestResult);
87
+ }
88
+ }
89
+ return currentBestResult;
90
+ }
91
+ exports.optimizeBruteForce = optimizeBruteForce;
92
+ function shuffleBooleanOrdering(truthTable) {
93
+ const firstKey = (0, util_js_1.firstKeyOfMap)(truthTable);
94
+ const arrayWithIndexes = getArrayWithIndexes(firstKey.length);
95
+ const shuffled = (0, util_js_1.shuffleArray)(arrayWithIndexes);
96
+ const mapping = {};
97
+ const mappingBeforeToAfter = {};
98
+ shuffled.forEach((indexBefore, indexAfter) => {
99
+ mapping[indexAfter] = indexBefore;
100
+ mappingBeforeToAfter[indexBefore] = indexAfter;
101
+ });
102
+ const newTable = new Map();
103
+ for (const [key, value] of truthTable.entries()) {
104
+ const newKey = changeKeyOrder(key, mapping);
105
+ newTable.set(newKey, value);
106
+ }
107
+ return {
108
+ newTable,
109
+ mapping,
110
+ mappingBeforeToAfter
111
+ };
112
+ }
113
+ exports.shuffleBooleanOrdering = shuffleBooleanOrdering;
114
+ function changeKeyOrder(oldKey, mappingBeforeToAfter) {
115
+ const chars = oldKey
116
+ .split('')
117
+ .map((char, indexBefore) => {
118
+ return {
119
+ char,
120
+ indexBefore,
121
+ indexAfter: mappingBeforeToAfter[indexBefore]
122
+ };
123
+ })
124
+ .sort((a, b) => a.indexAfter - b.indexAfter)
125
+ .map(charObj => charObj.char)
126
+ .join('');
127
+ return chars;
128
+ }
129
+ exports.changeKeyOrder = changeKeyOrder;
130
+ function getArrayWithIndexes(size) {
131
+ const ret = [];
132
+ let last = 0;
133
+ while (last < size) {
134
+ ret.push(last);
135
+ last++;
136
+ }
137
+ return ret;
138
+ }
139
+ exports.getArrayWithIndexes = getArrayWithIndexes;
140
+ //# sourceMappingURL=optimize-brute-force.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"optimize-brute-force.js","sourceRoot":"","sources":["../../../src/optimize-brute-force.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Parents = void 0;
4
+ /**
5
+ * represents the parents of a single node
6
+ */
7
+ class Parents {
8
+ node;
9
+ parents = new Set();
10
+ constructor(node) {
11
+ this.node = node;
12
+ }
13
+ remove(node) {
14
+ this.parents.delete(node);
15
+ if (this.parents.size === 0) {
16
+ this.node.remove();
17
+ }
18
+ }
19
+ getAll() {
20
+ return Array.from(this.parents);
21
+ }
22
+ add(node) {
23
+ if (this.node.level === node.level) {
24
+ throw new Error('a node cannot be parent of a node with the same level');
25
+ }
26
+ this.parents.add(node);
27
+ }
28
+ has(node) {
29
+ return this.parents.has(node);
30
+ }
31
+ toString() {
32
+ const ret = [];
33
+ for (const parent of this.parents) {
34
+ ret.push(parent.id);
35
+ }
36
+ return ret.join(', ');
37
+ }
38
+ get size() {
39
+ return this.parents.size;
40
+ }
41
+ }
42
+ exports.Parents = Parents;
43
+ //# sourceMappingURL=parents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parents.js","sourceRoot":"","sources":["../../../src/parents.ts"],"names":[],"mappings":";;;AAKA;;GAEG;AACH,MAAa,OAAO;IAKL;IAHH,OAAO,GAAqB,IAAI,GAAG,EAAE,CAAC;IAE9C,YACW,IAAiB;QAAjB,SAAI,GAAJ,IAAI,CAAa;IACxB,CAAC;IAEE,MAAM,CAAC,IAAiB;QAC3B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAE1B,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,EAAE;YACzB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;SACtB;IACL,CAAC;IAEM,MAAM;QACT,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAEM,GAAG,CAAC,IAAiB;QACxB,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE;YAChC,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;SAC5E;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAEM,GAAG,CAAC,IAAiB;QACxB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,QAAQ;QACJ,MAAM,GAAG,GAAa,EAAE,CAAC;QACzB,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE;YAC/B,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;SACvB;QACD,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,IAAI,IAAI;QACJ,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC7B,CAAC;CACJ;AA1CD,0BA0CC"}
@@ -0,0 +1,158 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RootNode = void 0;
4
+ const abstract_node_js_1 = require("./abstract-node.js");
5
+ const branches_js_1 = require("./branches.js");
6
+ const util_js_1 = require("./util.js");
7
+ const index_js_1 = require("./minimal-string/index.js");
8
+ class RootNode extends abstract_node_js_1.AbstractNode {
9
+ branches = new branches_js_1.Branches(this);
10
+ levels = [];
11
+ nodesByLevel = new Map();
12
+ constructor() {
13
+ super(0, null, 'RootNode');
14
+ this.levels.push(0);
15
+ const level0Set = new Set();
16
+ level0Set.add(this);
17
+ this.nodesByLevel.set(0, level0Set);
18
+ }
19
+ addNode(node) {
20
+ const level = node.level;
21
+ if (!this.levels.includes(level)) {
22
+ this.levels.push(level);
23
+ }
24
+ this.ensureLevelSetExists(level);
25
+ const set = this.nodesByLevel.get(level);
26
+ set?.add(node);
27
+ }
28
+ removeNode(node) {
29
+ const set = this.nodesByLevel.get(node.level);
30
+ if (!set.has(node)) {
31
+ throw new Error('removed non-existing node ' + node.id);
32
+ }
33
+ set.delete(node);
34
+ }
35
+ ensureLevelSetExists(level) {
36
+ if (!this.nodesByLevel.has(level)) {
37
+ this.nodesByLevel.set(level, new Set());
38
+ }
39
+ }
40
+ getLevels() {
41
+ return Array.from(this.levels).sort((a, b) => a - b);
42
+ }
43
+ getNodesOfLevel(level) {
44
+ this.ensureLevelSetExists(level);
45
+ const set = this.nodesByLevel.get(level);
46
+ return Array.from(set);
47
+ }
48
+ countNodes() {
49
+ let ret = 0;
50
+ this.getLevels().forEach(level => {
51
+ const nodesAmount = this.getNodesOfLevel(level).length;
52
+ ret = ret + nodesAmount;
53
+ });
54
+ return ret;
55
+ }
56
+ /**
57
+ * applies the reduction rules to the whole bdd
58
+ */
59
+ minimize(logState = false) {
60
+ // console.log('minimize(): START ###############');
61
+ let done = false;
62
+ while (!done) {
63
+ if (logState) {
64
+ console.log('minimize() itterate once');
65
+ }
66
+ let successCount = 0;
67
+ let lastLevel = (0, util_js_1.lastOfArray)(this.getLevels());
68
+ while (lastLevel > 0) {
69
+ const nodes = this.getNodesOfLevel(lastLevel);
70
+ if (logState) {
71
+ console.log('minimize() run for level ' + lastLevel +
72
+ ' with ' + nodes.length + ' nodes');
73
+ // console.dir(nodes);
74
+ }
75
+ let nodeCount = 0;
76
+ for (const node of nodes) {
77
+ nodeCount++;
78
+ // do not run that often because it is expensive
79
+ if (logState && nodeCount % 4000 === 0) {
80
+ console.log('minimize() node #' + node.id);
81
+ }
82
+ if (node.isLeafNode()) {
83
+ // console.log('have leaf node ' + node.id);
84
+ const reductionDone = node.asLeafNode().applyEliminationRule();
85
+ if (reductionDone) {
86
+ successCount++;
87
+ }
88
+ }
89
+ if (!node.deleted && node.isInternalNode()) {
90
+ const useNode = node;
91
+ const reductionDone = useNode.applyReductionRule();
92
+ let eliminationDone = false;
93
+ if (!useNode.deleted) {
94
+ // not might now be deleted from reduction-rule
95
+ eliminationDone = useNode.applyEliminationRule(nodes);
96
+ }
97
+ if (reductionDone || eliminationDone) {
98
+ successCount++;
99
+ }
100
+ }
101
+ }
102
+ lastLevel--;
103
+ }
104
+ if (successCount === 0) {
105
+ // could do no more optimisations
106
+ done = true;
107
+ }
108
+ else {
109
+ if (logState) {
110
+ console.log('minimize() itteration done with ' +
111
+ successCount + ' minimisations');
112
+ }
113
+ }
114
+ }
115
+ }
116
+ getLeafNodes() {
117
+ const lastLevel = (0, util_js_1.lastOfArray)(this.getLevels());
118
+ const leafNodes = this.getNodesOfLevel(lastLevel).reverse();
119
+ return leafNodes;
120
+ }
121
+ /**
122
+ * strips all leaf-nodes
123
+ * with the given value
124
+ */
125
+ removeIrrelevantLeafNodes(leafNodeValue) {
126
+ let done = false;
127
+ while (!done) {
128
+ let countRemoved = 0;
129
+ const leafNodes = this.getLeafNodes();
130
+ for (const leafNode of leafNodes) {
131
+ const removed = leafNode.removeIfValueEquals(leafNodeValue);
132
+ if (removed) {
133
+ countRemoved++;
134
+ }
135
+ }
136
+ this.minimize();
137
+ if (countRemoved === 0) {
138
+ done = true;
139
+ }
140
+ }
141
+ }
142
+ resolve(fns, booleanFunctionInput) {
143
+ let currentNode = this;
144
+ while (true) {
145
+ const booleanResult = fns[currentNode.level](booleanFunctionInput);
146
+ const branchKey = (0, util_js_1.booleanToBooleanString)(booleanResult);
147
+ currentNode = currentNode.branches.getBranch(branchKey);
148
+ if (currentNode.isLeafNode()) {
149
+ return currentNode.asLeafNode().value;
150
+ }
151
+ }
152
+ }
153
+ toSimpleBdd() {
154
+ return (0, index_js_1.bddToSimpleBdd)(this);
155
+ }
156
+ }
157
+ exports.RootNode = RootNode;
158
+ //# sourceMappingURL=root-node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"root-node.js","sourceRoot":"","sources":["../../../src/root-node.ts"],"names":[],"mappings":";;;AAAA,yDAAkD;AAClD,+CAAyC;AAOzC,uCAGmB;AAGnB,wDAA2D;AAE3D,MAAa,QAAS,SAAQ,+BAAY;IAC/B,QAAQ,GAAa,IAAI,sBAAQ,CAAC,IAAI,CAAC,CAAC;IAExC,MAAM,GAAa,EAAE,CAAC;IACtB,YAAY,GAAmC,IAAI,GAAG,EAAE,CAAC;IAEhE;QACI,KAAK,CACD,CAAC,EACD,IAAI,EACJ,UAAU,CACb,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,MAAM,SAAS,GAAsB,IAAI,GAAG,EAAE,CAAC;QAC/C,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACpB,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IACxC,CAAC;IAEM,OAAO,CAAC,IAAiB;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAEzB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YAC9B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC3B;QAED,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACzC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;IAED,UAAU,CAAC,IAAiB;QACxB,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAqB,CAAC;QAClE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YAChB,MAAM,IAAI,KAAK,CAAC,4BAA4B,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC;SAC3D;QACD,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;IAEO,oBAAoB,CAAC,KAAa;QACtC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YAC/B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;SAC3C;IACL,CAAC;IAEM,SAAS;QACZ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACzD,CAAC;IAEM,eAAe,CAAC,KAAa;QAChC,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QACjC,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAqB,CAAC;QAC7D,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAEM,UAAU;QACb,IAAI,GAAG,GAAW,CAAC,CAAC;QACpB,IAAI,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YAC7B,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;YACvD,GAAG,GAAG,GAAG,GAAG,WAAW,CAAC;QAC5B,CAAC,CAAC,CAAC;QACH,OAAO,GAAG,CAAC;IACf,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,WAAoB,KAAK;QAC9B,oDAAoD;QACpD,IAAI,IAAI,GAAG,KAAK,CAAC;QACjB,OAAO,CAAC,IAAI,EAAE;YACV,IAAI,QAAQ,EAAE;gBACV,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;aAC3C;YACD,IAAI,YAAY,GAAG,CAAC,CAAC;YACrB,IAAI,SAAS,GAAG,IAAA,qBAAW,EAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;YAC9C,OAAO,SAAS,GAAG,CAAC,EAAE;gBAClB,MAAM,KAAK,GAAmB,IAAI,CAAC,eAAe,CAAC,SAAS,CAAmB,CAAC;gBAChF,IAAI,QAAQ,EAAE;oBACV,OAAO,CAAC,GAAG,CACP,2BAA2B,GAAG,SAAS;wBACvC,QAAQ,GAAG,KAAK,CAAC,MAAM,GAAG,QAAQ,CACrC,CAAC;oBACF,sBAAsB;iBACzB;gBAED,IAAI,SAAS,GAAG,CAAC,CAAC;gBAClB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;oBACtB,SAAS,EAAE,CAAC;oBAEZ,gDAAgD;oBAChD,IAAI,QAAQ,IAAI,SAAS,GAAG,IAAI,KAAK,CAAC,EAAE;wBACpC,OAAO,CAAC,GAAG,CACP,mBAAmB,GAAG,IAAI,CAAC,EAAE,CAChC,CAAC;qBACL;oBACD,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;wBACnB,4CAA4C;wBAC5C,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,oBAAoB,EAAE,CAAC;wBAC/D,IAAI,aAAa,EAAE;4BACf,YAAY,EAAE,CAAC;yBAClB;qBACJ;oBACD,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;wBACxC,MAAM,OAAO,GAAG,IAAoB,CAAC;wBACrC,MAAM,aAAa,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;wBACnD,IAAI,eAAe,GAAG,KAAK,CAAC;wBAC5B,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;4BAClB,+CAA+C;4BAC/C,eAAe,GAAG,OAAO,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;yBACzD;wBACD,IAAI,aAAa,IAAI,eAAe,EAAE;4BAClC,YAAY,EAAE,CAAC;yBAClB;qBACJ;iBACJ;gBACD,SAAS,EAAE,CAAC;aACf;YACD,IAAI,YAAY,KAAK,CAAC,EAAE;gBACpB,iCAAiC;gBACjC,IAAI,GAAG,IAAI,CAAC;aACf;iBAAM;gBACH,IAAI,QAAQ,EAAE;oBACV,OAAO,CAAC,GAAG,CACP,kCAAkC;wBAClC,YAAY,GAAG,gBAAgB,CAClC,CAAC;iBACL;aACJ;SACJ;IACL,CAAC;IAEM,YAAY;QACf,MAAM,SAAS,GAAG,IAAA,qBAAW,EAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QAChD,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,OAAO,EAAgB,CAAC;QAC1E,OAAO,SAAS,CAAC;IACrB,CAAC;IAED;;;OAGG;IACH,yBAAyB,CAAC,aAAqB;QAC3C,IAAI,IAAI,GAAG,KAAK,CAAC;QACjB,OAAO,CAAC,IAAI,EAAE;YACV,IAAI,YAAY,GAAG,CAAC,CAAC;YACrB,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YACtC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;gBAC9B,MAAM,OAAO,GAAG,QAAQ,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC;gBAC5D,IAAI,OAAO,EAAE;oBACT,YAAY,EAAE,CAAC;iBAClB;aACJ;YACD,IAAI,CAAC,QAAQ,EAAE,CAAC;YAEhB,IAAI,YAAY,KAAK,CAAC,EAAE;gBACpB,IAAI,GAAG,IAAI,CAAC;aACf;SACJ;IACL,CAAC;IAED,OAAO,CACH,GAAsB,EACtB,oBAAyB;QAEzB,IAAI,WAAW,GAAiB,IAAI,CAAC;QACrC,OAAO,IAAI,EAAE;YACT,MAAM,aAAa,GAAG,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,oBAAoB,CAAC,CAAC;YACnE,MAAM,SAAS,GAAG,IAAA,gCAAsB,EAAC,aAAa,CAAC,CAAC;YACxD,WAAW,GAAI,WAA2B,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YACzE,IAAI,WAAW,CAAC,UAAU,EAAE,EAAE;gBAC1B,OAAO,WAAW,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC;aACzC;SACJ;IACL,CAAC;IAEM,WAAW;QACd,OAAO,IAAA,yBAAc,EAAC,IAAI,CAAC,CAAC;IAChC,CAAC;CACJ;AAlLD,4BAkLC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":""}