$\exists! x_0. \top$ should be $\top\vert_{x_0 = \bot} \oplus \top\vert_{x_0 = \top} \equiv \top \oplus \top \equiv \bot$, but BuDDy returns $\top$. Here is a test for reproducing the bug:
#include <bdd.h>
#include <stdio.h>
int main(void) {
bdd_init(1024, 256);
bdd_setvarnum(3);
int x[] = {0};
BDD set = bdd_makeset(x, 1);
BDD res = bdd_unique(bdd_true(), set);
if (res == bdd_true()) {
puts("res is true");
} else if (res == bdd_false()) {
puts("res is false");
}
}
For reference: AFAIK, unique quantification is the same as the Boolean difference or Boolean derivative.
From my side, there is no urge to fix this bug, I just wanted to report it in case someone else stumbles across incorrect results.
For reference: AFAIK, unique quantification is the same as the Boolean difference or Boolean derivative.
From my side, there is no urge to fix this bug, I just wanted to report it in case someone else stumbles across incorrect results.