binary-decision-diagram 1.3.1 → 2.0.0

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 (118) hide show
  1. package/.github/workflows/main.yml +22 -0
  2. package/README.md +3 -2
  3. package/dist/es/abstract-node.d.ts +1 -1
  4. package/dist/es/abstract-node.js +45 -51
  5. package/dist/es/abstract-node.js.map +1 -1
  6. package/dist/es/branches.d.ts +1 -1
  7. package/dist/es/branches.js +20 -22
  8. package/dist/es/branches.js.map +1 -1
  9. package/dist/es/create-bdd-from-truth-table.d.ts +1 -1
  10. package/dist/es/create-bdd-from-truth-table.js +19 -57
  11. package/dist/es/create-bdd-from-truth-table.js.map +1 -1
  12. package/dist/es/ensure-correct-bdd.js +26 -27
  13. package/dist/es/ensure-correct-bdd.js.map +1 -1
  14. package/dist/es/fill-truth-table.d.ts +1 -1
  15. package/dist/es/fill-truth-table.js +3 -3
  16. package/dist/es/fill-truth-table.js.map +1 -1
  17. package/dist/es/find-similar-node.js +3 -3
  18. package/dist/es/find-similar-node.js.map +1 -1
  19. package/dist/es/index.d.ts +7 -1
  20. package/dist/es/index.js.map +1 -1
  21. package/dist/es/internal-node.d.ts +1 -1
  22. package/dist/es/internal-node.js +15 -33
  23. package/dist/es/internal-node.js.map +1 -1
  24. package/dist/es/leaf-node.d.ts +1 -1
  25. package/dist/es/leaf-node.js +14 -32
  26. package/dist/es/leaf-node.js.map +1 -1
  27. package/dist/es/minimal-string/bdd-to-minimal-string.js +15 -15
  28. package/dist/es/minimal-string/bdd-to-minimal-string.js.map +1 -1
  29. package/dist/es/minimal-string/bdd-to-simple-bdd.js +2 -2
  30. package/dist/es/minimal-string/bdd-to-simple-bdd.js.map +1 -1
  31. package/dist/es/minimal-string/minimal-string-to-simple-bdd.js +27 -27
  32. package/dist/es/minimal-string/minimal-string-to-simple-bdd.js.map +1 -1
  33. package/dist/es/minimal-string/resolve-with-simple-bdd.js +4 -4
  34. package/dist/es/minimal-string/resolve-with-simple-bdd.js.map +1 -1
  35. package/dist/es/minimal-string/string-format.js +7 -7
  36. package/dist/es/minimal-string/string-format.js.map +1 -1
  37. package/dist/es/optimize-brute-force.d.ts +5 -5
  38. package/dist/es/optimize-brute-force.js +88 -186
  39. package/dist/es/optimize-brute-force.js.map +1 -1
  40. package/dist/es/parents.d.ts +1 -1
  41. package/dist/es/parents.js +19 -47
  42. package/dist/es/parents.js.map +1 -1
  43. package/dist/es/root-node.d.ts +1 -1
  44. package/dist/es/root-node.js +79 -131
  45. package/dist/es/root-node.js.map +1 -1
  46. package/dist/es/types.d.ts +9 -9
  47. package/dist/es/types.js +1 -0
  48. package/dist/es/util.d.ts +1 -1
  49. package/dist/es/util.js +21 -39
  50. package/dist/es/util.js.map +1 -1
  51. package/dist/lib/abstract-node.d.ts +1 -1
  52. package/dist/lib/abstract-node.js +48 -56
  53. package/dist/lib/abstract-node.js.map +1 -1
  54. package/dist/lib/branches.d.ts +1 -1
  55. package/dist/lib/branches.js +21 -26
  56. package/dist/lib/branches.js.map +1 -1
  57. package/dist/lib/create-bdd-from-truth-table.d.ts +1 -1
  58. package/dist/lib/create-bdd-from-truth-table.js +24 -65
  59. package/dist/lib/create-bdd-from-truth-table.js.map +1 -1
  60. package/dist/lib/ensure-correct-bdd.js +27 -32
  61. package/dist/lib/ensure-correct-bdd.js.map +1 -1
  62. package/dist/lib/fill-truth-table.d.ts +1 -1
  63. package/dist/lib/fill-truth-table.js +6 -9
  64. package/dist/lib/fill-truth-table.js.map +1 -1
  65. package/dist/lib/find-similar-node.js +4 -7
  66. package/dist/lib/find-similar-node.js.map +1 -1
  67. package/dist/lib/index.d.ts +7 -1
  68. package/dist/lib/index.js +13 -18
  69. package/dist/lib/index.js.map +1 -1
  70. package/dist/lib/internal-node.d.ts +1 -1
  71. package/dist/lib/internal-node.js +18 -38
  72. package/dist/lib/internal-node.js.map +1 -1
  73. package/dist/lib/leaf-node.d.ts +1 -1
  74. package/dist/lib/leaf-node.js +17 -37
  75. package/dist/lib/leaf-node.js.map +1 -1
  76. package/dist/lib/minimal-string/bdd-to-minimal-string.js +21 -25
  77. package/dist/lib/minimal-string/bdd-to-minimal-string.js.map +1 -1
  78. package/dist/lib/minimal-string/bdd-to-simple-bdd.js +4 -8
  79. package/dist/lib/minimal-string/bdd-to-simple-bdd.js.map +1 -1
  80. package/dist/lib/minimal-string/index.js +5 -10
  81. package/dist/lib/minimal-string/index.js.map +1 -1
  82. package/dist/lib/minimal-string/minimal-string-to-simple-bdd.js +30 -33
  83. package/dist/lib/minimal-string/minimal-string-to-simple-bdd.js.map +1 -1
  84. package/dist/lib/minimal-string/resolve-with-simple-bdd.js +6 -9
  85. package/dist/lib/minimal-string/resolve-with-simple-bdd.js.map +1 -1
  86. package/dist/lib/minimal-string/string-format.js +12 -18
  87. package/dist/lib/minimal-string/string-format.js.map +1 -1
  88. package/dist/lib/optimize-brute-force.d.ts +5 -5
  89. package/dist/lib/optimize-brute-force.js +93 -197
  90. package/dist/lib/optimize-brute-force.js.map +1 -1
  91. package/dist/lib/parents.d.ts +1 -1
  92. package/dist/lib/parents.js +19 -49
  93. package/dist/lib/parents.js.map +1 -1
  94. package/dist/lib/root-node.d.ts +1 -1
  95. package/dist/lib/root-node.js +84 -138
  96. package/dist/lib/root-node.js.map +1 -1
  97. package/dist/lib/types.d.ts +9 -9
  98. package/dist/lib/types.js +1 -2
  99. package/dist/lib/util.d.ts +1 -1
  100. package/dist/lib/util.js +36 -71
  101. package/dist/lib/util.js.map +1 -1
  102. package/package.json +16 -11
  103. package/renovate.json +3 -2
  104. package/src/abstract-node.ts +1 -1
  105. package/src/branches.ts +1 -2
  106. package/src/create-bdd-from-truth-table.ts +1 -1
  107. package/src/ensure-correct-bdd.ts +1 -1
  108. package/src/fill-truth-table.ts +1 -1
  109. package/src/index.ts +19 -1
  110. package/src/internal-node.ts +1 -1
  111. package/src/leaf-node.ts +1 -1
  112. package/src/optimize-brute-force.ts +1 -1
  113. package/src/parents.ts +1 -1
  114. package/src/root-node.ts +1 -1
  115. package/src/types.ts +1 -1
  116. package/src/util.ts +1 -1
  117. package/tsconfig.json +2 -2
  118. package/.travis.yml +0 -13
@@ -0,0 +1,22 @@
1
+ name: CI
2
+ on:
3
+ push:
4
+ branches: [ master ]
5
+ pull_request:
6
+ branches: [ master ]
7
+
8
+ workflow_dispatch:
9
+
10
+ jobs:
11
+ build:
12
+ runs-on: ubuntu-latest
13
+ steps:
14
+ - uses: actions/checkout@v3
15
+ - name: Use Node.js
16
+ uses: actions/setup-node@v3
17
+ with:
18
+ node-version: 16.10.0
19
+ - run: npm install
20
+ - run: npm run build
21
+ - run: npm run test
22
+ - run: npm run lint
package/README.md CHANGED
@@ -1,9 +1,10 @@
1
1
  # binary decision diagram
2
2
 
3
- A library to create, minimize and optimize binary decision diagrams in JavaScript.
3
+ A library to **create**, **minimize** and **optimize** binary decision diagrams in JavaScript.
4
4
 
5
5
 
6
- Links:
6
+
7
+ A binary decision diagram is a data structure that represents a set of boolean function in an efficient way. To learn more about it, follow these links:
7
8
 
8
9
  - [Introduction on BDDs](https://web.archive.org/web/20110304135553/http://configit.com/fileadmin/Configit/Documents/bdd-eap.pdf)
9
10
  - [Presentation on BDDs](https://de.slideshare.net/RajeshYadav49/reduced-ordered-binary-decision-diagram-devi)
@@ -1,4 +1,4 @@
1
- import { NonRootNode, NodeType } from './types';
1
+ import type { NonRootNode, NodeType } from './types';
2
2
  import { RootNode } from './root-node';
3
3
  import { InternalNode } from './internal-node';
4
4
  import { LeafNode } from './leaf-node';
@@ -1,7 +1,7 @@
1
1
  import { nextNodeId } from './util';
2
2
  import { findSimilarNode } from './find-similar-node';
3
- var AbstractNode = /** @class */ (function () {
4
- function AbstractNode(level, rootNode, type) {
3
+ export class AbstractNode {
4
+ constructor(level, rootNode, type) {
5
5
  this.level = level;
6
6
  this.id = nextNodeId();
7
7
  this.deleted = false;
@@ -11,26 +11,25 @@ var AbstractNode = /** @class */ (function () {
11
11
  this.rootNode.addNode(this);
12
12
  }
13
13
  }
14
- AbstractNode.prototype.isEqualToOtherNode = function (otherNode,
14
+ isEqualToOtherNode(otherNode,
15
15
  // optimisation shortcut, is faster if own string already known
16
- ownString) {
17
- if (ownString === void 0) { ownString = this.toString(); }
18
- var ret = ownString === otherNode.toString();
16
+ ownString = this.toString()) {
17
+ const ret = ownString === otherNode.toString();
19
18
  return ret;
20
- };
19
+ }
21
20
  // deletes the whole node
22
- AbstractNode.prototype.remove = function () {
21
+ remove() {
23
22
  this.ensureNotDeleted('remove');
24
23
  // console.log('AbstractNode().remove() node: ' + this.id);
25
24
  // console.log(this.toJSON(true));
26
25
  if (this.isInternalNode()) {
27
- var useNode = this;
26
+ const useNode = this;
28
27
  if (useNode.parents.size > 0) {
29
28
  throw new Error('cannot remove node with parents ' + this.id);
30
29
  }
31
30
  }
32
31
  if (this.branches) {
33
- var useNode = this;
32
+ const useNode = this;
34
33
  if (useNode.branches.areBranchesStrictEqual()) {
35
34
  useNode.branches.getBranch('0').parents.remove(useNode);
36
35
  }
@@ -41,10 +40,9 @@ var AbstractNode = /** @class */ (function () {
41
40
  }
42
41
  this.deleted = true;
43
42
  this.rootNode.removeNode(this);
44
- };
45
- AbstractNode.prototype.toJSON = function (withId) {
46
- if (withId === void 0) { withId = false; }
47
- var ret = {
43
+ }
44
+ toJSON(withId = false) {
45
+ const ret = {
48
46
  id: withId ? this.id : undefined,
49
47
  deleted: withId ? this.deleted : undefined,
50
48
  type: this.type,
@@ -57,22 +55,22 @@ var AbstractNode = /** @class */ (function () {
57
55
  ret.value = this.asLeafNode().value;
58
56
  }
59
57
  if (this.branches && !this.branches.deleted) {
60
- var branches = this.branches;
58
+ const branches = this.branches;
61
59
  ret.branches = {
62
60
  '0': branches.getBranch('0').toJSON(withId),
63
61
  '1': branches.getBranch('1').toJSON(withId)
64
62
  };
65
63
  }
66
64
  return ret;
67
- };
65
+ }
68
66
  // a strange string-representation
69
67
  // to make an equal check between nodes
70
- AbstractNode.prototype.toString = function () {
71
- var ret = '' +
68
+ toString() {
69
+ let ret = '' +
72
70
  '<' +
73
71
  this.type + ':' + this.level;
74
72
  if (this.branches) {
75
- var branches = this.branches;
73
+ const branches = this.branches;
76
74
  ret += '|0:' + branches.getBranch('0');
77
75
  ret += '|1:' + branches.getBranch('1');
78
76
  }
@@ -81,43 +79,42 @@ var AbstractNode = /** @class */ (function () {
81
79
  }
82
80
  ret += '>';
83
81
  return ret;
84
- };
85
- AbstractNode.prototype.isRootNode = function () {
82
+ }
83
+ isRootNode() {
86
84
  return this.type === 'RootNode';
87
- };
88
- AbstractNode.prototype.isInternalNode = function () {
85
+ }
86
+ isInternalNode() {
89
87
  return this.type === 'InternalNode';
90
- };
91
- AbstractNode.prototype.isLeafNode = function () {
88
+ }
89
+ isLeafNode() {
92
90
  return this.type === 'LeafNode';
93
- };
94
- AbstractNode.prototype.asRootNode = function () {
91
+ }
92
+ asRootNode() {
95
93
  if (!this.isRootNode()) {
96
94
  throw new Error('ouch');
97
95
  }
98
96
  return this;
99
- };
100
- AbstractNode.prototype.asInternalNode = function () {
97
+ }
98
+ asInternalNode() {
101
99
  if (!this.isInternalNode()) {
102
100
  throw new Error('ouch');
103
101
  }
104
102
  return this;
105
- };
106
- AbstractNode.prototype.asLeafNode = function () {
103
+ }
104
+ asLeafNode() {
107
105
  if (!this.isLeafNode()) {
108
106
  throw new Error('ouch');
109
107
  }
110
108
  return this;
111
- };
112
- AbstractNode.prototype.ensureNotDeleted = function (op) {
113
- if (op === void 0) { op = 'unknown'; }
109
+ }
110
+ ensureNotDeleted(op = 'unknown') {
114
111
  if (this.deleted) {
115
112
  throw new Error('forbidden operation ' + op + ' on deleted node ' + this.id);
116
113
  }
117
- };
118
- AbstractNode.prototype.log = function () {
114
+ }
115
+ log() {
119
116
  console.log(JSON.stringify(this.toJSON(true), null, 2));
120
- };
117
+ }
121
118
  /**
122
119
  * by the elimination-rule of bdd,
123
120
  * if two branches of the same level are equal,
@@ -126,35 +123,34 @@ var AbstractNode = /** @class */ (function () {
126
123
  * See page 21 at:
127
124
  * @link https://people.eecs.berkeley.edu/~sseshia/219c/lectures/BinaryDecisionDiagrams.pdf
128
125
  */
129
- AbstractNode.prototype.applyEliminationRule = function (
126
+ applyEliminationRule(
130
127
  // can be provided for better performance
131
128
  nodesOfSameLevel) {
132
- var _this = this;
133
129
  this.ensureNotDeleted('applyEliminationRule');
134
130
  if (!nodesOfSameLevel) {
135
131
  nodesOfSameLevel = this.rootNode.getNodesOfLevel(this.level);
136
132
  }
137
- var other = findSimilarNode(this, nodesOfSameLevel);
133
+ const other = findSimilarNode(this, nodesOfSameLevel);
138
134
  if (other) {
139
135
  // console.log('applyEliminationRule() remove:' + this.id + '; other: ' + other.id);
140
136
  // keep 'other', remove 'this'
141
137
  // move own parents to other
142
- var ownParents = this.parents.getAll();
143
- var parentsWithStrictEqualBranches_1 = [];
144
- ownParents.forEach(function (parent) {
138
+ const ownParents = this.parents.getAll();
139
+ const parentsWithStrictEqualBranches = [];
140
+ ownParents.forEach((parent) => {
145
141
  // console.log('ownParent: ' + parent.id);
146
- var branchKey = parent.branches.getKeyOfNode(_this);
142
+ const branchKey = parent.branches.getKeyOfNode(this);
147
143
  // console.log('branchKey: ' + branchKey);
148
144
  parent.branches.setBranch(branchKey, other);
149
145
  if (parent.branches.areBranchesStrictEqual()) {
150
- parentsWithStrictEqualBranches_1.push(parent);
146
+ parentsWithStrictEqualBranches.push(parent);
151
147
  }
152
148
  // remove parents from own list
153
149
  // this will auto-remove the connection to the other '1'-branch
154
- _this.parents.remove(parent);
150
+ this.parents.remove(parent);
155
151
  });
156
152
  // parents that now have equal branches, must be removed again
157
- parentsWithStrictEqualBranches_1.forEach(function (node) {
153
+ parentsWithStrictEqualBranches.forEach(node => {
158
154
  if (node.isInternalNode()) {
159
155
  // console.log('trigger applyReductionRule from applyEliminationRule');
160
156
  node.applyReductionRule();
@@ -165,8 +161,6 @@ var AbstractNode = /** @class */ (function () {
165
161
  else {
166
162
  return false;
167
163
  }
168
- };
169
- return AbstractNode;
170
- }());
171
- export { AbstractNode };
164
+ }
165
+ }
172
166
  //# sourceMappingURL=abstract-node.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"abstract-node.js","sourceRoot":"","sources":["../../src/abstract-node.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"abstract-node.js","sourceRoot":"","sources":["../../src/abstract-node.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { BooleanString, NonRootNode, NonLeafNode } from './types';
1
+ import type { BooleanString, NonRootNode, NonLeafNode } from './types';
2
2
  import { AbstractNode } from './abstract-node';
3
3
  /**
4
4
  * represents the branches of a single node
@@ -1,22 +1,22 @@
1
1
  /**
2
2
  * represents the branches of a single node
3
3
  */
4
- var Branches = /** @class */ (function () {
5
- function Branches(node) {
4
+ export class Branches {
5
+ constructor(node) {
6
6
  this.node = node;
7
7
  this.deleted = false;
8
8
  this.branches = {};
9
9
  }
10
- Branches.prototype.setBranch = function (which, branchNode) {
11
- var previous = this.branches[which];
10
+ setBranch(which, branchNode) {
11
+ const previous = this.branches[which];
12
12
  if (previous === branchNode) {
13
13
  return;
14
14
  }
15
15
  // set new branch
16
16
  this.branches[which] = branchNode;
17
17
  branchNode.parents.add(this.node);
18
- };
19
- Branches.prototype.getKeyOfNode = function (node) {
18
+ }
19
+ getKeyOfNode(node) {
20
20
  if (this.getBranch('0') === node) {
21
21
  return '0';
22
22
  }
@@ -26,17 +26,17 @@ var Branches = /** @class */ (function () {
26
26
  else {
27
27
  throw new Error('none matched');
28
28
  }
29
- };
30
- Branches.prototype.getBranch = function (which) {
29
+ }
30
+ getBranch(which) {
31
31
  return this.branches[which];
32
- };
33
- Branches.prototype.getBothBranches = function () {
32
+ }
33
+ getBothBranches() {
34
34
  return [
35
35
  this.getBranch('0'),
36
36
  this.getBranch('1')
37
37
  ];
38
- };
39
- Branches.prototype.hasBranchAsNode = function (node) {
38
+ }
39
+ hasBranchAsNode(node) {
40
40
  if (this.getBranch('0') === node ||
41
41
  this.getBranch('1') === node) {
42
42
  return true;
@@ -44,8 +44,8 @@ var Branches = /** @class */ (function () {
44
44
  else {
45
45
  return false;
46
46
  }
47
- };
48
- Branches.prototype.hasNodeIdAsBranch = function (id) {
47
+ }
48
+ hasNodeIdAsBranch(id) {
49
49
  if (this.getBranch('0').id === id ||
50
50
  this.getBranch('1').id === id) {
51
51
  return true;
@@ -53,17 +53,15 @@ var Branches = /** @class */ (function () {
53
53
  else {
54
54
  return false;
55
55
  }
56
- };
57
- Branches.prototype.areBranchesStrictEqual = function () {
56
+ }
57
+ areBranchesStrictEqual() {
58
58
  return this.branches['0'] === this.branches['1'];
59
- };
60
- Branches.prototype.hasEqualBranches = function () {
59
+ }
60
+ hasEqualBranches() {
61
61
  return JSON.stringify(this.branches['0']) ===
62
62
  JSON.stringify(this.branches['1']);
63
- };
64
- return Branches;
65
- }());
66
- export { Branches };
63
+ }
64
+ }
67
65
  export function ensureNodesNotStrictEqual(node1, node2) {
68
66
  if (node1 === node2) {
69
67
  throw new Error('cannot have two strict equal branches');
@@ -1 +1 @@
1
- {"version":3,"file":"branches.js","sourceRoot":"","sources":["../../src/branches.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH;IAMI,kBACY,IAAiB;QAAjB,SAAI,GAAJ,IAAI,CAAa;QANtB,YAAO,GAAY,KAAK,CAAC;QACxB,aAAQ,GAEZ,EAAS,CAAC;IAIV,CAAC;IAEE,4BAAS,GAAhB,UAAiB,KAAoB,EAAE,UAAuB;QAC1D,IAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,QAAQ,KAAK,UAAU,EAAE;YACzB,OAAO;SACV;QAED,iBAAiB;QACjB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC;QAClC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAEM,+BAAY,GAAnB,UAAoB,IAAiB;QACjC,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE;YAC9B,OAAO,GAAG,CAAC;SACd;aAAM,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE;YACrC,OAAO,GAAG,CAAC;SACd;aAAM;YACH,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;SACnC;IACL,CAAC;IAEM,4BAAS,GAAhB,UAAiB,KAAoB;QACjC,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAEM,kCAAe,GAAtB;QACI,OAAO;YACH,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;YACnB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;SACtB,CAAC;IACN,CAAC;IAEM,kCAAe,GAAtB,UAAuB,IAAkB;QACrC,IACI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,IAAI;YAC5B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,IAAI,EAC9B;YACE,OAAO,IAAI,CAAC;SACf;aAAM;YACH,OAAO,KAAK,CAAC;SAChB;IACL,CAAC;IAEM,oCAAiB,GAAxB,UAAyB,EAAU;QAC/B,IACI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE;YAC7B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,EAC/B;YACE,OAAO,IAAI,CAAC;SACf;aAAM;YACH,OAAO,KAAK,CAAC;SAChB;IACL,CAAC;IAEM,yCAAsB,GAA7B;QACI,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACrD,CAAC;IAEM,mCAAgB,GAAvB;QACI,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YACrC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3C,CAAC;IACL,eAAC;AAAD,CAAC,AAxED,IAwEC;;AAED,MAAM,UAAU,yBAAyB,CACrC,KAAkB,EAClB,KAAkB;IAElB,IAAI,KAAK,KAAK,KAAK,EAAE;QACjB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;KAC5D;AACL,CAAC"}
1
+ {"version":3,"file":"branches.js","sourceRoot":"","sources":["../../src/branches.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,MAAM,OAAO,QAAQ;IAMjB,YACY,IAAiB;QAAjB,SAAI,GAAJ,IAAI,CAAa;QANtB,YAAO,GAAY,KAAK,CAAC;QACxB,aAAQ,GAEZ,EAAS,CAAC;IAIV,CAAC;IAEE,SAAS,CAAC,KAAoB,EAAE,UAAuB;QAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,QAAQ,KAAK,UAAU,EAAE;YACzB,OAAO;SACV;QAED,iBAAiB;QACjB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC;QAClC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAEM,YAAY,CAAC,IAAiB;QACjC,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE;YAC9B,OAAO,GAAG,CAAC;SACd;aAAM,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE;YACrC,OAAO,GAAG,CAAC;SACd;aAAM;YACH,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;SACnC;IACL,CAAC;IAEM,SAAS,CAAC,KAAoB;QACjC,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IAEM,eAAe;QAClB,OAAO;YACH,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;YACnB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;SACtB,CAAC;IACN,CAAC;IAEM,eAAe,CAAC,IAAkB;QACrC,IACI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,IAAI;YAC5B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,IAAI,EAC9B;YACE,OAAO,IAAI,CAAC;SACf;aAAM;YACH,OAAO,KAAK,CAAC;SAChB;IACL,CAAC;IAEM,iBAAiB,CAAC,EAAU;QAC/B,IACI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE;YAC7B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,EAC/B;YACE,OAAO,IAAI,CAAC;SACf;aAAM;YACH,OAAO,KAAK,CAAC;SAChB;IACL,CAAC;IAEM,sBAAsB;QACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACrD,CAAC;IAEM,gBAAgB;QACnB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YACrC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3C,CAAC;CACJ;AAED,MAAM,UAAU,yBAAyB,CACrC,KAAkB,EAClB,KAAkB;IAElB,IAAI,KAAK,KAAK,KAAK,EAAE;QACjB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;KAC5D;AACL,CAAC"}
@@ -1,3 +1,3 @@
1
1
  import { RootNode } from './root-node';
2
- import { TruthTable } from './types';
2
+ import type { TruthTable } from './types';
3
3
  export declare function createBddFromTruthTable(truthTable: TruthTable): RootNode;
@@ -1,71 +1,33 @@
1
- var __values = (this && this.__values) || function(o) {
2
- var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
3
- if (m) return m.call(o);
4
- if (o && typeof o.length === "number") return {
5
- next: function () {
6
- if (o && i >= o.length) o = void 0;
7
- return { value: o && o[i++], done: !o };
8
- }
9
- };
10
- throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
11
- };
12
- var __read = (this && this.__read) || function (o, n) {
13
- var m = typeof Symbol === "function" && o[Symbol.iterator];
14
- if (!m) return o;
15
- var i = m.call(o), r, ar = [], e;
16
- try {
17
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
18
- }
19
- catch (error) { e = { error: error }; }
20
- finally {
21
- try {
22
- if (r && !r.done && (m = i["return"])) m.call(i);
23
- }
24
- finally { if (e) throw e.error; }
25
- }
26
- return ar;
27
- };
28
1
  import { RootNode } from './root-node';
29
2
  import { lastChar } from './util';
30
3
  import { InternalNode } from './internal-node';
31
4
  import { LeafNode } from './leaf-node';
32
5
  export function createBddFromTruthTable(truthTable) {
33
- var e_1, _a;
34
- var root = new RootNode();
35
- var firstKey = truthTable.keys().next().value;
36
- var keyLength = firstKey.length;
37
- var mustBeSize = Math.pow(2, keyLength);
6
+ const root = new RootNode();
7
+ const firstKey = truthTable.keys().next().value;
8
+ const keyLength = firstKey.length;
9
+ const mustBeSize = Math.pow(2, keyLength);
38
10
  if (truthTable.size !== mustBeSize) {
39
11
  throw new Error('truth table has missing entries');
40
12
  }
41
- try {
42
- for (var truthTable_1 = __values(truthTable), truthTable_1_1 = truthTable_1.next(); !truthTable_1_1.done; truthTable_1_1 = truthTable_1.next()) {
43
- var _b = __read(truthTable_1_1.value, 2), stateSet = _b[0], value = _b[1];
44
- var lastNode = root;
45
- // itterate over each char of the state
46
- for (var i = 0; i < (stateSet.length - 1); i++) {
47
- var level = i + 1;
48
- var state = stateSet.charAt(i);
49
- // if node for this state-char not exists, add new one
50
- if (!lastNode.branches.getBranch(state)) {
51
- lastNode.branches.setBranch(state, new InternalNode(level, root, lastNode));
52
- }
53
- lastNode = lastNode.branches.getBranch(state);
54
- }
55
- // last node is leaf-node
56
- var lastState = lastChar(stateSet);
57
- if (lastNode.branches.getBranch(lastState)) {
58
- throw new Error('leafNode already exists, this should not happen');
13
+ for (const [stateSet, value] of truthTable) {
14
+ let lastNode = root;
15
+ // itterate over each char of the state
16
+ for (let i = 0; i < (stateSet.length - 1); i++) {
17
+ const level = i + 1;
18
+ const state = stateSet.charAt(i);
19
+ // if node for this state-char not exists, add new one
20
+ if (!lastNode.branches.getBranch(state)) {
21
+ lastNode.branches.setBranch(state, new InternalNode(level, root, lastNode));
59
22
  }
60
- lastNode.branches.setBranch(lastState, new LeafNode(stateSet.length, root, value, lastNode));
23
+ lastNode = lastNode.branches.getBranch(state);
61
24
  }
62
- }
63
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
64
- finally {
65
- try {
66
- if (truthTable_1_1 && !truthTable_1_1.done && (_a = truthTable_1.return)) _a.call(truthTable_1);
25
+ // last node is leaf-node
26
+ const lastState = lastChar(stateSet);
27
+ if (lastNode.branches.getBranch(lastState)) {
28
+ throw new Error('leafNode already exists, this should not happen');
67
29
  }
68
- finally { if (e_1) throw e_1.error; }
30
+ lastNode.branches.setBranch(lastState, new LeafNode(stateSet.length, root, value, lastNode));
69
31
  }
70
32
  return root;
71
33
  }
@@ -1 +1 @@
1
- {"version":3,"file":"create-bdd-from-truth-table.js","sourceRoot":"","sources":["../../src/create-bdd-from-truth-table.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvC,MAAM,UAAU,uBAAuB,CACnC,UAAsB;;IAEtB,IAAM,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAC;IAE5B,IAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;IAChD,IAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC;IAClC,IAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IAC1C,IAAI,UAAU,CAAC,IAAI,KAAK,UAAU,EAAE;QAChC,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;KACtD;;QAGD,KAAgC,IAAA,eAAA,SAAA,UAAU,CAAA,sCAAA,8DAAE;YAAjC,IAAA,oCAAiB,EAAhB,gBAAQ,EAAE,aAAK;YACvB,IAAI,QAAQ,GAAgB,IAAI,CAAC;YAEjC,uCAAuC;YACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBAC5C,IAAM,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;gBACpB,IAAM,KAAK,GAAkB,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAkB,CAAC;gBAEjE,sDAAsD;gBACtD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;oBACrC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CACvB,KAAK,EACL,IAAI,YAAY,CACZ,KAAK,EACL,IAAI,EACJ,QAAQ,CACX,CACJ,CAAC;iBACL;gBACD,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAgB,CAAC;aAChE;YAED,yBAAyB;YACzB,IAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAkB,CAAC;YACtD,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE;gBACxC,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;aACtE;YACD,QAAQ,CAAC,QAAQ,CAAC,SAAS,CACvB,SAAS,EACT,IAAI,QAAQ,CACR,QAAQ,CAAC,MAAM,EACf,IAAI,EACJ,KAAK,EACL,QAAQ,CACX,CACJ,CAAC;SACL;;;;;;;;;IAED,OAAO,IAAI,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"create-bdd-from-truth-table.js","sourceRoot":"","sources":["../../src/create-bdd-from-truth-table.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvC,MAAM,UAAU,uBAAuB,CACnC,UAAsB;IAEtB,MAAM,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAC;IAE5B,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC;IAChD,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC;IAClC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IAC1C,IAAI,UAAU,CAAC,IAAI,KAAK,UAAU,EAAE;QAChC,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;KACtD;IAGD,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,UAAU,EAAE;QACxC,IAAI,QAAQ,GAAgB,IAAI,CAAC;QAEjC,uCAAuC;QACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAC5C,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;YACpB,MAAM,KAAK,GAAkB,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAkB,CAAC;YAEjE,sDAAsD;YACtD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;gBACrC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CACvB,KAAK,EACL,IAAI,YAAY,CACZ,KAAK,EACL,IAAI,EACJ,QAAQ,CACX,CACJ,CAAC;aACL;YACD,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAgB,CAAC;SAChE;QAED,yBAAyB;QACzB,MAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAkB,CAAC;QACtD,IAAI,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE;YACxC,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;SACtE;QACD,QAAQ,CAAC,QAAQ,CAAC,SAAS,CACvB,SAAS,EACT,IAAI,QAAQ,CACR,QAAQ,CAAC,MAAM,EACf,IAAI,EACJ,KAAK,EACL,QAAQ,CACX,CACJ,CAAC;KACL;IAED,OAAO,IAAI,CAAC;AAChB,CAAC"}
@@ -3,28 +3,28 @@
3
3
  * to ensure everything is correct
4
4
  */
5
5
  export function ensureCorrectBdd(bdd) {
6
- var jsonString = JSON.stringify(bdd.toJSON(true));
7
- var allNodes = [];
8
- var nodesById = new Map();
9
- bdd.getLevels().forEach(function (level) {
10
- var levelNodes = bdd.getNodesOfLevel(level);
11
- levelNodes.forEach(function (node) {
6
+ const jsonString = JSON.stringify(bdd.toJSON(true));
7
+ let allNodes = [];
8
+ const nodesById = new Map();
9
+ bdd.getLevels().forEach(level => {
10
+ const levelNodes = bdd.getNodesOfLevel(level);
11
+ levelNodes.forEach(node => {
12
12
  nodesById.set(node.id, node);
13
13
  });
14
14
  allNodes = allNodes.concat(levelNodes);
15
15
  });
16
- var recursiveNodes = getNodesRecursive(bdd);
16
+ const recursiveNodes = getNodesRecursive(bdd);
17
17
  if (allNodes.length !== recursiveNodes.size) {
18
- var allNodesIds_1 = allNodes.map(function (n) { return n.id; }).sort();
19
- var recursiveNodesIds = Array.from(recursiveNodes).map(function (n) { return n.id; }).sort();
20
- var nodesOnlyInRecursive = recursiveNodesIds.filter(function (id) { return !allNodesIds_1.includes(id); });
18
+ const allNodesIds = allNodes.map(n => n.id).sort();
19
+ const recursiveNodesIds = Array.from(recursiveNodes).map(n => n.id).sort();
20
+ const nodesOnlyInRecursive = recursiveNodesIds.filter(id => !allNodesIds.includes(id));
21
21
  // console.log(JSON.stringify(allNodes.map(n => n.id).sort(), null, 2));
22
22
  // console.log(JSON.stringify(Array.from(recursiveNodes).map(n => n.id).sort(), null, 2));
23
23
  if (recursiveNodes.size > allNodes.length) {
24
- var firstId_1 = nodesOnlyInRecursive[0];
25
- var referenceToFirst = allNodes.find(function (n) {
24
+ const firstId = nodesOnlyInRecursive[0];
25
+ const referenceToFirst = allNodes.find(n => {
26
26
  if (n.isInternalNode()) {
27
- return n.branches.hasNodeIdAsBranch(firstId_1);
27
+ return n.branches.hasNodeIdAsBranch(firstId);
28
28
  }
29
29
  return false;
30
30
  });
@@ -37,11 +37,11 @@ export function ensureCorrectBdd(bdd) {
37
37
  'recursiveNodes: ' + recursiveNodes.size + ' ' +
38
38
  'nodesOnlyInRecursive: ' + nodesOnlyInRecursive.join(', ') + ' ');
39
39
  }
40
- allNodes.forEach(function (node) {
40
+ allNodes.forEach(node => {
41
41
  if (node.isRootNode()) {
42
42
  return;
43
43
  }
44
- var useNode = node;
44
+ const useNode = node;
45
45
  if (node.deleted) {
46
46
  throw new Error('ensureCorrectBdd() ' +
47
47
  'bdd includes a deleted node');
@@ -52,24 +52,24 @@ export function ensureCorrectBdd(bdd) {
52
52
  'node has no parent ' + useNode.id);
53
53
  }
54
54
  if (useNode.isInternalNode()) {
55
- var internalNode_1 = useNode;
56
- var bothBranches = internalNode_1.branches.getBothBranches();
55
+ const internalNode = useNode;
56
+ const bothBranches = internalNode.branches.getBothBranches();
57
57
  // a node should not have 2 equal branches
58
- if (internalNode_1.branches.areBranchesStrictEqual()) {
58
+ if (internalNode.branches.areBranchesStrictEqual()) {
59
59
  throw new Error('ensureCorrectBdd() ' +
60
60
  'node has two equal branches: ' +
61
- bothBranches.map(function (n) { return n.id; }).join(', '));
61
+ bothBranches.map(n => n.id).join(', '));
62
62
  }
63
63
  // each branch should have the node as parent
64
- bothBranches.forEach(function (branch) {
65
- if (!branch.parents.has(internalNode_1)) {
64
+ bothBranches.forEach(branch => {
65
+ if (!branch.parents.has(internalNode)) {
66
66
  throw new Error('ensureCorrectBdd() ' +
67
67
  'branch must have the node as parent');
68
68
  }
69
69
  });
70
70
  }
71
71
  // each parent should have the child as branch
72
- useNode.parents.getAll().forEach(function (parent) {
72
+ useNode.parents.getAll().forEach(parent => {
73
73
  if (!parent.branches.hasBranchAsNode(useNode)) {
74
74
  throw new Error('ensureCorrectBdd() ' +
75
75
  'parent node does not have child as branch');
@@ -81,15 +81,14 @@ export function ensureCorrectBdd(bdd) {
81
81
  'bdd includes a deleted node');
82
82
  }
83
83
  }
84
- export function getNodesRecursive(node, set) {
85
- if (set === void 0) { set = new Set(); }
84
+ export function getNodesRecursive(node, set = new Set()) {
86
85
  set.add(node);
87
86
  if (!node.isLeafNode()) {
88
- var useNode = node;
89
- var branch1 = useNode.branches.getBranch('0');
87
+ const useNode = node;
88
+ const branch1 = useNode.branches.getBranch('0');
90
89
  set.add(branch1);
91
90
  getNodesRecursive(branch1, set);
92
- var branch2 = useNode.branches.getBranch('1');
91
+ const branch2 = useNode.branches.getBranch('1');
93
92
  set.add(branch2);
94
93
  getNodesRecursive(branch2, set);
95
94
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ensure-correct-bdd.js","sourceRoot":"","sources":["../../src/ensure-correct-bdd.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ensure-correct-bdd.js","sourceRoot":"","sources":["../../src/ensure-correct-bdd.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { TruthTable } from './types';
1
+ import type { TruthTable } from './types';
2
2
  /**
3
3
  * fills each missing row of a table
4
4
  * with the given value
@@ -4,9 +4,9 @@ import { minBinaryWithLength, maxBinaryWithLength, getNextStateSet } from './uti
4
4
  * with the given value
5
5
  */
6
6
  export function fillTruthTable(truthTable, inputLength, value) {
7
- var endInput = maxBinaryWithLength(inputLength);
8
- var currentInput = minBinaryWithLength(inputLength);
9
- var done = false;
7
+ const endInput = maxBinaryWithLength(inputLength);
8
+ let currentInput = minBinaryWithLength(inputLength);
9
+ let done = false;
10
10
  while (!done) {
11
11
  if (!truthTable.has(currentInput)) {
12
12
  truthTable.set(currentInput, value);