Merge BuDDy 2.3.

* examples/calculator/, examples/internal/: Were renamed as ...
* examples/bddcalc/, examples/bddtest/: ... these.
* configure.ac: Adjust version and output Makefiles.
* examples/Makefile.am (SUBDIRS): Adjust subdir renaming.
* examples/cmilner/milner.c, examples/fdd/statespace.cxx: Were
renamed as ...
* examples/cmilner/cmilner.c, examples/fdd/fdd.cxx: ... these.
* examples/cmilner/Makefile.am, examples/fdd/Makefile.am: Adjust
accordingly.
* src/Makefile.am (AM_CPPFLAGS): Define VERSION.
This commit is contained in:
Alexandre Duret-Lutz 2004-07-06 17:39:37 +00:00
parent 9ce6888872
commit f1c3af808f
18 changed files with 0 additions and 6730 deletions

View file

@ -1,24 +0,0 @@
include ../Makefile.def
EXTRA_DIST = \
readme \
example.cal \
examples/c432.cal \
examples/c499.cal \
examples/c1355.cal \
examples/c1908.cal \
examples/c2670.cal \
examples/c3540.cal \
examples/readme
AM_YFLAGS = -d
BUILT_SOURCES = parser.h
check_PROGRAMS = bddcalc
bddcalc_SOURCES = \
hashtbl.h \
hashtbl.cxx \
lexer.lxx \
parser.yxx \
parser_.h \
slist.h

View file

@ -1,10 +0,0 @@
initial 100 100;
inputs
a b c;
actions
t1 = (a | b) & c;
t2 = (a & c) | (b & c);
t3 = t1 <> t2;
tautology t3;

View file

@ -1,818 +0,0 @@
/* BDD Calculator data file */
initial 10000 10000;
inputs
_1gat _8gat _15gat _22gat _29gat _36gat _43gat _50gat _57gat _64gat
_71gat _78gat _85gat _92gat _99gat _106gat _113gat _120gat _127gat _134gat
_141gat _148gat _155gat _162gat _169gat _176gat _183gat _190gat _197gat _204gat
_211gat _218gat _225gat _226gat _227gat _228gat _229gat _230gat _231gat _232gat
_233gat ;
actions
autoreorder 0 sift;
t2 = _1gat;
t3 = _29gat;
t4 = t2 nand t3;
t5 = t2 nand t4;
t6 = t3 nand t4;
t7 = t5 nand t6;
t8 = _57gat;
t9 = _85gat;
t10 = t8 nand t9;
t11 = t8 nand t10;
t12 = t9 nand t10;
t13 = t11 nand t12;
t14 = t7 nand t13;
t15 = t7 nand t14;
t16 = t13 nand t14;
t17 = t15 nand t16;
t18 = _225gat;
t19 = _233gat;
t20 = t18 and t19;
t21 = _113gat;
t22 = _120gat;
t23 = t21 nand t22;
t24 = t21 nand t23;
t25 = t22 nand t23;
t26 = t24 nand t25;
t27 = _127gat;
t28 = _134gat;
t29 = t27 nand t28;
t30 = t27 nand t29;
t31 = t28 nand t29;
t32 = t30 nand t31;
t33 = t26 nand t32;
t34 = t26 nand t33;
t35 = t32 nand t33;
t36 = t34 nand t35;
t37 = _141gat;
t38 = _148gat;
t39 = t37 nand t38;
t40 = t37 nand t39;
t41 = t38 nand t39;
t42 = t40 nand t41;
t43 = _155gat;
t44 = _162gat;
t45 = t43 nand t44;
t46 = t43 nand t45;
t47 = t44 nand t45;
t48 = t46 nand t47;
t49 = t42 nand t48;
t50 = t42 nand t49;
t51 = t48 nand t49;
t52 = t50 nand t51;
t53 = t36 nand t52;
t54 = t36 nand t53;
t55 = t52 nand t53;
t56 = t54 nand t55;
t57 = t20 nand t56;
t58 = t20 nand t57;
t59 = t56 nand t57;
t60 = t58 nand t59;
t61 = t17 nand t60;
t62 = t17 nand t61;
t63 = t60 nand t61;
t64 = t62 nand t63;
t65 = t28 nand t44;
t66 = t28 nand t65;
t67 = t44 nand t65;
t68 = t66 nand t67;
t69 = _190gat;
t70 = _218gat;
t71 = t69 nand t70;
t72 = t69 nand t71;
t73 = t70 nand t71;
t74 = t72 nand t73;
t75 = t68 nand t74;
t76 = t68 nand t75;
t77 = t74 nand t75;
t78 = t76 nand t77;
t79 = _232gat;
t80 = t79 and t19;
t81 = _36gat;
t82 = t3 nand t81;
t83 = t3 nand t82;
t84 = t81 nand t82;
t85 = t83 nand t84;
t86 = _43gat;
t87 = _50gat;
t88 = t86 nand t87;
t89 = t86 nand t88;
t90 = t87 nand t88;
t91 = t89 nand t90;
t92 = t85 nand t91;
t93 = t85 nand t92;
t94 = t91 nand t92;
t95 = t93 nand t94;
t96 = _92gat;
t97 = t9 nand t96;
t98 = t9 nand t97;
t99 = t96 nand t97;
t100 = t98 nand t99;
t101 = _99gat;
t102 = _106gat;
t103 = t101 nand t102;
t104 = t101 nand t103;
t105 = t102 nand t103;
t106 = t104 nand t105;
t107 = t100 nand t106;
t108 = t100 nand t107;
t109 = t106 nand t107;
t110 = t108 nand t109;
t111 = t95 nand t110;
t112 = t95 nand t111;
t113 = t110 nand t111;
t114 = t112 nand t113;
t115 = t80 nand t114;
t116 = t80 nand t115;
t117 = t114 nand t115;
t118 = t116 nand t117;
t119 = t78 nand t118;
t120 = t78 nand t119;
t121 = t118 nand t119;
t122 = t120 nand t121;
t123 = not t122;
t124 = t27 nand t43;
t125 = t27 nand t124;
t126 = t43 nand t124;
t127 = t125 nand t126;
t128 = _183gat;
t129 = _211gat;
t130 = t128 nand t129;
t131 = t128 nand t130;
t132 = t129 nand t130;
t133 = t131 nand t132;
t134 = t127 nand t133;
t135 = t127 nand t134;
t136 = t133 nand t134;
t137 = t135 nand t136;
t138 = _231gat;
t139 = t138 and t19;
t140 = _8gat;
t141 = t2 nand t140;
t142 = t2 nand t141;
t143 = t140 nand t141;
t144 = t142 nand t143;
t145 = _15gat;
t146 = _22gat;
t147 = t145 nand t146;
t148 = t145 nand t147;
t149 = t146 nand t147;
t150 = t148 nand t149;
t151 = t144 nand t150;
t152 = t144 nand t151;
t153 = t150 nand t151;
t154 = t152 nand t153;
t155 = _64gat;
t156 = t8 nand t155;
t157 = t8 nand t156;
t158 = t155 nand t156;
t159 = t157 nand t158;
t160 = _71gat;
t161 = _78gat;
t162 = t160 nand t161;
t163 = t160 nand t162;
t164 = t161 nand t162;
t165 = t163 nand t164;
t166 = t159 nand t165;
t167 = t159 nand t166;
t168 = t165 nand t166;
t169 = t167 nand t168;
t170 = t154 nand t169;
t171 = t154 nand t170;
t172 = t169 nand t170;
t173 = t171 nand t172;
t174 = t139 nand t173;
t175 = t139 nand t174;
t176 = t173 nand t174;
t177 = t175 nand t176;
t178 = t137 nand t177;
t179 = t137 nand t178;
t180 = t177 nand t178;
t181 = t179 nand t180;
t182 = t21 nand t37;
t183 = t21 nand t182;
t184 = t37 nand t182;
t185 = t183 nand t184;
t186 = _169gat;
t187 = _197gat;
t188 = t186 nand t187;
t189 = t186 nand t188;
t190 = t187 nand t188;
t191 = t189 nand t190;
t192 = t185 nand t191;
t193 = t185 nand t192;
t194 = t191 nand t192;
t195 = t193 nand t194;
t196 = _229gat;
t197 = t196 and t19;
t198 = t154 nand t95;
t199 = t154 nand t198;
t200 = t95 nand t198;
t201 = t199 nand t200;
t202 = t197 nand t201;
t203 = t197 nand t202;
t204 = t201 nand t202;
t205 = t203 nand t204;
t206 = t195 nand t205;
t207 = t195 nand t206;
t208 = t205 nand t206;
t209 = t207 nand t208;
t210 = t22 nand t38;
t211 = t22 nand t210;
t212 = t38 nand t210;
t213 = t211 nand t212;
t214 = _176gat;
t215 = _204gat;
t216 = t214 nand t215;
t217 = t214 nand t216;
t218 = t215 nand t216;
t219 = t217 nand t218;
t220 = t213 nand t219;
t221 = t213 nand t220;
t222 = t219 nand t220;
t223 = t221 nand t222;
t224 = _230gat;
t225 = t224 and t19;
t226 = t169 nand t110;
t227 = t169 nand t226;
t228 = t110 nand t226;
t229 = t227 nand t228;
t230 = t225 nand t229;
t231 = t225 nand t230;
t232 = t229 nand t230;
t233 = t231 nand t232;
t234 = t223 nand t233;
t235 = t223 nand t234;
t236 = t233 nand t234;
t237 = t235 nand t236;
t238 = not t237;
t239 = t209 and t238;
t240 = t181 and t239;
t241 = t123 and t240;
t242 = t145 nand t86;
t243 = t145 nand t242;
t244 = t86 nand t242;
t245 = t243 nand t244;
t246 = t160 nand t101;
t247 = t160 nand t246;
t248 = t101 nand t246;
t249 = t247 nand t248;
t250 = t245 nand t249;
t251 = t245 nand t250;
t252 = t249 nand t250;
t253 = t251 nand t252;
t254 = _227gat;
t255 = t254 and t19;
t256 = t186 nand t214;
t257 = t186 nand t256;
t258 = t214 nand t256;
t259 = t257 nand t258;
t260 = t128 nand t69;
t261 = t128 nand t260;
t262 = t69 nand t260;
t263 = t261 nand t262;
t264 = t259 nand t263;
t265 = t259 nand t264;
t266 = t263 nand t264;
t267 = t265 nand t266;
t268 = t36 nand t267;
t269 = t36 nand t268;
t270 = t267 nand t268;
t271 = t269 nand t270;
t272 = t255 nand t271;
t273 = t255 nand t272;
t274 = t271 nand t272;
t275 = t273 nand t274;
t276 = t253 nand t275;
t277 = t253 nand t276;
t278 = t275 nand t276;
t279 = t277 nand t278;
t280 = not t279;
t281 = not t64;
t282 = t140 nand t81;
t283 = t140 nand t282;
t284 = t81 nand t282;
t285 = t283 nand t284;
t286 = t155 nand t96;
t287 = t155 nand t286;
t288 = t96 nand t286;
t289 = t287 nand t288;
t290 = t285 nand t289;
t291 = t285 nand t290;
t292 = t289 nand t290;
t293 = t291 nand t292;
t294 = _226gat;
t295 = t294 and t19;
t296 = t187 nand t215;
t297 = t187 nand t296;
t298 = t215 nand t296;
t299 = t297 nand t298;
t300 = t129 nand t70;
t301 = t129 nand t300;
t302 = t70 nand t300;
t303 = t301 nand t302;
t304 = t299 nand t303;
t305 = t299 nand t304;
t306 = t303 nand t304;
t307 = t305 nand t306;
t308 = t267 nand t307;
t309 = t267 nand t308;
t310 = t307 nand t308;
t311 = t309 nand t310;
t312 = t295 nand t311;
t313 = t295 nand t312;
t314 = t311 nand t312;
t315 = t313 nand t314;
t316 = t293 nand t315;
t317 = t293 nand t316;
t318 = t315 nand t316;
t319 = t317 nand t318;
t320 = t281 and t319;
t321 = t280 and t320;
t322 = t146 nand t87;
t323 = t146 nand t322;
t324 = t87 nand t322;
t325 = t323 nand t324;
t326 = t161 nand t102;
t327 = t161 nand t326;
t328 = t102 nand t326;
t329 = t327 nand t328;
t330 = t325 nand t329;
t331 = t325 nand t330;
t332 = t329 nand t330;
t333 = t331 nand t332;
t334 = _228gat;
t335 = t334 and t19;
t336 = t52 nand t307;
t337 = t52 nand t336;
t338 = t307 nand t336;
t339 = t337 nand t338;
t340 = t335 nand t339;
t341 = t335 nand t340;
t342 = t339 nand t340;
t343 = t341 nand t342;
t344 = t333 nand t343;
t345 = t333 nand t344;
t346 = t343 nand t344;
t347 = t345 nand t346;
t348 = not t347;
t349 = t321 and t348;
t350 = not t319;
t351 = t281 and t350;
t352 = t280 and t351;
t353 = t352 and t347;
t354 = t279 and t351;
t355 = t354 and t348;
t356 = t353 or t355;
t357 = t349 or t356;
t358 = t64 and t350;
t359 = t280 and t358;
t360 = t359 and t348;
t361 = t357 or t360;
t362 = t241 and t361;
t363 = t64 and t362;
t364 = t2 nand t363;
t365 = t2 nand t364;
t366 = t363 nand t364;
t367 = t365 nand t366;
t368 = t281 and t280;
t369 = t368 and t348;
t370 = t351 and t280;
t371 = t351 and t348;
t372 = t370 or t371;
t373 = t369 or t372;
t374 = t350 and t280;
t375 = t374 and t348;
t376 = t373 or t375;
t377 = t241 and t376;
t378 = t64 and t377;
t379 = t2 nand t378;
t380 = t2 nand t379;
t381 = t378 nand t379;
t382 = t380 nand t381;
t383 = t367 biimp t382;
t384 = t319 and t362;
t385 = t140 nand t384;
t386 = t140 nand t385;
t387 = t384 nand t385;
t388 = t386 nand t387;
t389 = t319 and t377;
t390 = t140 nand t389;
t391 = t140 nand t390;
t392 = t389 nand t390;
t393 = t391 nand t392;
t394 = t388 biimp t393;
t466 = not t209;
t467 = t466 and t237;
t468 = t181 and t467;
t469 = t123 and t468;
t470 = t469 and t361;
t494 = t279 and t470;
t495 = t160 nand t494;
t496 = t160 nand t495;
t497 = t494 nand t495;
t498 = t496 nand t497;
t476 = t469 and t376;
t499 = t279 and t476;
t500 = t160 nand t499;
t501 = t160 nand t500;
t502 = t499 nand t500;
t503 = t501 nand t502;
t504 = t498 biimp t503;
t505 = t347 and t470;
t506 = t161 nand t505;
t507 = t161 nand t506;
t508 = t505 nand t506;
t509 = t507 nand t508;
t510 = t347 and t476;
t511 = t161 nand t510;
t512 = t161 nand t511;
t513 = t510 nand t511;
t514 = t512 nand t513;
t515 = t509 biimp t514;
t417 = not t181;
t516 = t417 and t467;
t517 = t122 and t516;
t518 = t517 and t361;
t519 = t64 and t518;
t520 = t9 nand t519;
t521 = t9 nand t520;
t522 = t519 nand t520;
t523 = t521 nand t522;
t524 = t517 and t376;
t525 = t64 and t524;
t526 = t9 nand t525;
t527 = t9 nand t526;
t528 = t525 nand t526;
t529 = t527 nand t528;
t530 = t523 biimp t529;
t531 = t319 and t518;
t532 = t96 nand t531;
t533 = t96 nand t532;
t534 = t531 nand t532;
t535 = t533 nand t534;
t536 = t319 and t524;
t537 = t96 nand t536;
t538 = t96 nand t537;
t539 = t536 nand t537;
t540 = t538 nand t539;
t541 = t535 biimp t540;
t542 = t279 and t518;
t543 = t101 nand t542;
t544 = t101 nand t543;
t545 = t542 nand t543;
t546 = t544 nand t545;
t547 = t279 and t524;
t548 = t101 nand t547;
t549 = t101 nand t548;
t550 = t547 nand t548;
t551 = t549 nand t550;
t552 = t546 biimp t551;
t553 = t347 and t518;
t554 = t102 nand t553;
t555 = t102 nand t554;
t556 = t553 nand t554;
t557 = t555 nand t556;
t558 = t347 and t524;
t559 = t102 nand t558;
t560 = t102 nand t559;
t561 = t558 nand t559;
t562 = t560 nand t561;
t563 = t557 biimp t562;
t564 = t279 and t358;
t565 = t348 and t564;
t566 = t516 and t123;
t567 = t466 and t238;
t568 = t417 and t567;
t569 = t568 and t122;
t570 = t181 and t567;
t571 = t570 and t123;
t572 = t569 or t571;
t573 = t566 or t572;
t418 = t417 and t239;
t574 = t418 and t123;
t575 = t573 or t574;
t576 = t565 and t575;
t577 = t209 and t576;
t578 = t21 nand t577;
t579 = t21 nand t578;
t580 = t577 nand t578;
t581 = t579 nand t580;
t582 = t466 and t417;
t583 = t582 and t123;
t584 = t567 and t417;
t585 = t567 and t123;
t586 = t584 or t585;
t587 = t583 or t586;
t588 = t238 and t417;
t589 = t588 and t123;
t590 = t587 or t589;
t591 = t565 and t590;
t592 = t209 and t591;
t593 = t21 nand t592;
t594 = t21 nand t593;
t595 = t592 nand t593;
t596 = t594 nand t595;
t597 = t581 biimp t596;
t598 = t237 and t576;
t599 = t22 nand t598;
t600 = t22 nand t599;
t601 = t598 nand t599;
t602 = t600 nand t601;
t603 = t237 and t591;
t604 = t22 nand t603;
t605 = t22 nand t604;
t606 = t603 nand t604;
t607 = t605 nand t606;
t608 = t602 biimp t607;
t609 = t181 and t576;
t610 = t27 nand t609;
t611 = t27 nand t610;
t612 = t609 nand t610;
t613 = t611 nand t612;
t614 = t181 and t591;
t615 = t27 nand t614;
t616 = t27 nand t615;
t617 = t614 nand t615;
t618 = t616 nand t617;
t619 = t613 biimp t618;
t620 = t122 and t576;
t621 = t28 nand t620;
t622 = t28 nand t621;
t623 = t620 nand t621;
t624 = t622 nand t623;
t625 = t122 and t591;
t626 = t28 nand t625;
t627 = t28 nand t626;
t628 = t625 nand t626;
t629 = t627 nand t628;
t630 = t624 biimp t629;
t395 = t279 and t362;
t396 = t145 nand t395;
t397 = t145 nand t396;
t398 = t395 nand t396;
t399 = t397 nand t398;
t400 = t279 and t377;
t401 = t145 nand t400;
t402 = t145 nand t401;
t403 = t400 nand t401;
t404 = t402 nand t403;
t405 = t399 biimp t404;
t631 = t347 and t359;
t632 = t631 and t575;
t633 = t209 and t632;
t634 = t37 nand t633;
t635 = t37 nand t634;
t636 = t633 nand t634;
t637 = t635 nand t636;
t638 = t631 and t590;
t639 = t209 and t638;
t640 = t37 nand t639;
t641 = t37 nand t640;
t642 = t639 nand t640;
t643 = t641 nand t642;
t644 = t637 biimp t643;
t645 = t237 and t632;
t646 = t38 nand t645;
t647 = t38 nand t646;
t648 = t645 nand t646;
t649 = t647 nand t648;
t650 = t237 and t638;
t651 = t38 nand t650;
t652 = t38 nand t651;
t653 = t650 nand t651;
t654 = t652 nand t653;
t655 = t649 biimp t654;
t656 = t181 and t632;
t657 = t43 nand t656;
t658 = t43 nand t657;
t659 = t656 nand t657;
t660 = t658 nand t659;
t661 = t181 and t638;
t662 = t43 nand t661;
t663 = t43 nand t662;
t664 = t661 nand t662;
t665 = t663 nand t664;
t666 = t660 biimp t665;
t667 = t122 and t632;
t668 = t44 nand t667;
t669 = t44 nand t668;
t670 = t667 nand t668;
t671 = t669 nand t670;
t672 = t122 and t638;
t673 = t44 nand t672;
t674 = t44 nand t673;
t675 = t672 nand t673;
t676 = t674 nand t675;
t677 = t671 biimp t676;
t678 = t279 and t320;
t679 = t348 and t678;
t680 = t679 and t575;
t681 = t209 and t680;
t682 = t186 nand t681;
t683 = t186 nand t682;
t684 = t681 nand t682;
t685 = t683 nand t684;
t686 = t679 and t590;
t687 = t209 and t686;
t688 = t186 nand t687;
t689 = t186 nand t688;
t690 = t687 nand t688;
t691 = t689 nand t690;
t692 = t685 biimp t691;
t693 = t237 and t680;
t694 = t214 nand t693;
t695 = t214 nand t694;
t696 = t693 nand t694;
t697 = t695 nand t696;
t698 = t237 and t686;
t699 = t214 nand t698;
t700 = t214 nand t699;
t701 = t698 nand t699;
t702 = t700 nand t701;
t703 = t697 biimp t702;
t704 = t181 and t680;
t705 = t128 nand t704;
t706 = t128 nand t705;
t707 = t704 nand t705;
t708 = t706 nand t707;
t709 = t181 and t686;
t710 = t128 nand t709;
t711 = t128 nand t710;
t712 = t709 nand t710;
t713 = t711 nand t712;
t714 = t708 biimp t713;
t715 = t122 and t680;
t716 = t69 nand t715;
t717 = t69 nand t716;
t718 = t715 nand t716;
t719 = t717 nand t718;
t720 = t122 and t686;
t721 = t69 nand t720;
t722 = t69 nand t721;
t723 = t720 nand t721;
t724 = t722 nand t723;
t725 = t719 biimp t724;
t726 = t347 and t321;
t727 = t726 and t575;
t728 = t209 and t727;
t729 = t187 nand t728;
t730 = t187 nand t729;
t731 = t728 nand t729;
t732 = t730 nand t731;
t733 = t726 and t590;
t734 = t209 and t733;
t735 = t187 nand t734;
t736 = t187 nand t735;
t737 = t734 nand t735;
t738 = t736 nand t737;
t739 = t732 biimp t738;
t740 = t237 and t727;
t741 = t215 nand t740;
t742 = t215 nand t741;
t743 = t740 nand t741;
t744 = t742 nand t743;
t745 = t237 and t733;
t746 = t215 nand t745;
t747 = t215 nand t746;
t748 = t745 nand t746;
t749 = t747 nand t748;
t750 = t744 biimp t749;
t406 = t347 and t362;
t407 = t146 nand t406;
t408 = t146 nand t407;
t409 = t406 nand t407;
t410 = t408 nand t409;
t411 = t347 and t377;
t412 = t146 nand t411;
t413 = t146 nand t412;
t414 = t411 nand t412;
t415 = t413 nand t414;
t416 = t410 biimp t415;
t751 = t181 and t727;
t752 = t129 nand t751;
t753 = t129 nand t752;
t754 = t751 nand t752;
t755 = t753 nand t754;
t756 = t181 and t733;
t757 = t129 nand t756;
t758 = t129 nand t757;
t759 = t756 nand t757;
t760 = t758 nand t759;
t761 = t755 biimp t760;
t762 = t122 and t727;
t763 = t70 nand t762;
t764 = t70 nand t763;
t765 = t762 nand t763;
t766 = t764 nand t765;
t767 = t122 and t733;
t768 = t70 nand t767;
t769 = t70 nand t768;
t770 = t767 nand t768;
t771 = t769 nand t770;
t772 = t766 biimp t771;
t419 = t122 and t418;
t420 = t419 and t361;
t421 = t64 and t420;
t422 = t3 nand t421;
t423 = t3 nand t422;
t424 = t421 nand t422;
t425 = t423 nand t424;
t426 = t419 and t376;
t427 = t64 and t426;
t428 = t3 nand t427;
t429 = t3 nand t428;
t430 = t427 nand t428;
t431 = t429 nand t430;
t432 = t425 biimp t431;
t433 = t319 and t420;
t434 = t81 nand t433;
t435 = t81 nand t434;
t436 = t433 nand t434;
t437 = t435 nand t436;
t438 = t319 and t426;
t439 = t81 nand t438;
t440 = t81 nand t439;
t441 = t438 nand t439;
t442 = t440 nand t441;
t443 = t437 biimp t442;
t444 = t279 and t420;
t445 = t86 nand t444;
t446 = t86 nand t445;
t447 = t444 nand t445;
t448 = t446 nand t447;
t449 = t279 and t426;
t450 = t86 nand t449;
t451 = t86 nand t450;
t452 = t449 nand t450;
t453 = t451 nand t452;
t454 = t448 biimp t453;
t455 = t347 and t420;
t456 = t87 nand t455;
t457 = t87 nand t456;
t458 = t455 nand t456;
t459 = t457 nand t458;
t460 = t347 and t426;
t461 = t87 nand t460;
t462 = t87 nand t461;
t463 = t460 nand t461;
t464 = t462 nand t463;
t465 = t459 biimp t464;
t471 = t64 and t470;
t472 = t8 nand t471;
t473 = t8 nand t472;
t474 = t471 nand t472;
t475 = t473 nand t474;
t477 = t64 and t476;
t478 = t8 nand t477;
t479 = t8 nand t478;
t480 = t477 nand t478;
t481 = t479 nand t480;
t482 = t475 biimp t481;
t483 = t319 and t470;
t484 = t155 nand t483;
t485 = t155 nand t484;
t486 = t483 nand t484;
t487 = t485 nand t486;
t488 = t319 and t476;
t489 = t155 nand t488;
t490 = t155 nand t489;
t491 = t488 nand t489;
t492 = t490 nand t491;
t493 = t487 biimp t492;
tautology t383;
tautology t394;
tautology t504;
tautology t515;
tautology t530;
tautology t541;
tautology t552;
tautology t563;
tautology t597;
tautology t608;
tautology t619;
tautology t630;
tautology t405;
tautology t644;
tautology t655;
tautology t666;
tautology t677;
tautology t692;
tautology t703;
tautology t714;
tautology t725;
tautology t739;
tautology t750;
tautology t416;
tautology t761;
tautology t772;
tautology t432;
tautology t443;
tautology t454;
tautology t465;
tautology t482;
tautology t493;

View file

@ -1,531 +0,0 @@
/* BDD Calculator data file */
initial 8000 10000;
inputs
_101 _104 _107 _110 _113 _116 _119 _122 _125 _128
_131 _134 _137 _140 _143 _146 _210 _214 _217 _221
_224 _227 _234 _237 _469 _472 _475 _478 _898 _900
_902 _952 _953 ;
actions
autoreorder 0 sift;
t2 = _952;
t3 = not t2;
t4 = _953;
t5 = not t4;
t6 = _146;
t7 = not t6;
t8 = _143;
t9 = not t8;
t10 = not t9;
t11 = t7 nand t10;
t12 = not t7;
t13 = t9 nand t12;
t14 = t11 nand t13;
t15 = _128;
t16 = not t15;
t17 = not t16;
t18 = t14 nand t17;
t19 = not t14;
t20 = t16 nand t19;
t21 = t18 nand t20;
t22 = _125;
t23 = not t22;
t24 = not t23;
t25 = t21 nand t24;
t26 = not t21;
t27 = t23 nand t26;
t28 = t25 nand t27;
t29 = _224;
t30 = t29 and t5;
t31 = not t30;
t32 = t28 nand t31;
t33 = not t28;
t34 = t30 nand t33;
t35 = t32 nand t34;
t36 = not t35;
t37 = _107;
t38 = not t37;
t39 = _104;
t40 = not t39;
t41 = not t40;
t42 = t38 nand t41;
t43 = not t38;
t44 = t40 nand t43;
t45 = t42 nand t44;
t46 = _101;
t47 = not t46;
t48 = not t47;
t49 = t45 nand t48;
t50 = not t45;
t51 = t47 nand t50;
t52 = t49 nand t51;
t53 = not t52;
t54 = _119;
t55 = not t54;
t56 = _116;
t57 = not t56;
t58 = not t57;
t59 = t55 nand t58;
t60 = not t55;
t61 = t57 nand t60;
t62 = t59 nand t61;
t63 = _113;
t64 = not t63;
t65 = not t64;
t66 = t62 nand t65;
t67 = not t62;
t68 = t64 nand t67;
t69 = t66 nand t68;
t70 = not t69;
t71 = t53 nand t70;
t72 = not t53;
t73 = t69 nand t72;
t74 = t71 nand t73;
t75 = _122;
t76 = not t75;
t77 = _110;
t78 = not t77;
t79 = not t78;
t80 = t76 nand t79;
t81 = not t76;
t82 = t78 nand t81;
t83 = t80 nand t82;
t84 = not t83;
t85 = not t84;
t86 = t74 nand t85;
t87 = not t74;
t88 = t84 nand t87;
t89 = t86 nand t88;
t90 = not t89;
t91 = t36 nand t90;
t92 = not t36;
t93 = t89 nand t92;
t94 = t91 nand t93;
t95 = not t94;
t96 = _902;
t97 = not t96;
t98 = t95 nand t97;
t99 = _210;
t100 = _237;
t101 = not t100;
t102 = t101 nand t97;
t103 = t99 nand t102;
t104 = not t103;
t105 = t98 nand t104;
t106 = not t98;
t107 = t103 nand t106;
t108 = t105 nand t107;
t109 = not t108;
t110 = _140;
t111 = not t110;
t112 = not t111;
t113 = t78 nand t112;
t114 = t111 nand t79;
t115 = t113 nand t114;
t116 = _227;
t117 = t116 and t5;
t118 = not t117;
t119 = t115 nand t118;
t120 = not t115;
t121 = t117 nand t120;
t122 = t119 nand t121;
t123 = not t26;
t124 = t52 nand t123;
t125 = t26 nand t53;
t126 = t124 nand t125;
t127 = _137;
t128 = not t127;
t129 = _134;
t130 = not t129;
t131 = not t130;
t132 = t128 nand t131;
t133 = not t128;
t134 = t130 nand t133;
t135 = t132 nand t134;
t136 = _131;
t137 = not t136;
t138 = not t137;
t139 = t135 nand t138;
t140 = not t135;
t141 = t137 nand t140;
t142 = t139 nand t141;
t143 = not t142;
t144 = not t143;
t145 = t126 nand t144;
t146 = not t126;
t147 = t143 nand t146;
t148 = t145 nand t147;
t149 = not t148;
t150 = not t149;
t151 = t122 nand t150;
t152 = not t122;
t153 = t149 nand t152;
t154 = t151 nand t153;
t155 = t154 nand t97;
t156 = _469;
t157 = not t156;
t158 = not t157;
t159 = t155 nand t158;
t160 = not t155;
t161 = t157 nand t160;
t162 = t159 nand t161;
t163 = not t162;
t164 = _214;
t165 = t164 nand t102;
t166 = t99 and t101;
t167 = t166 and t5;
t168 = not t167;
t169 = t47 nand t168;
t170 = t167 nand t48;
t171 = t169 nand t170;
t172 = not t171;
t173 = t143 nand t26;
t174 = t21 nand t144;
t175 = t173 nand t174;
t176 = not t70;
t177 = t175 nand t176;
t178 = not t175;
t179 = t70 nand t178;
t180 = t177 nand t179;
t181 = not t180;
t182 = not t181;
t183 = t172 nand t182;
t184 = not t172;
t185 = t181 nand t184;
t186 = t183 nand t185;
t187 = t186 nand t97;
t188 = _472;
t189 = not t188;
t190 = not t189;
t191 = t187 nand t190;
t192 = not t187;
t193 = t189 nand t192;
t194 = t191 nand t193;
t195 = not t194;
t196 = t23 nand t112;
t197 = t111 nand t24;
t198 = t196 nand t197;
t199 = t198 nand t12;
t200 = not t198;
t201 = t7 nand t200;
t202 = t199 nand t201;
t203 = t164 and t101;
t204 = t203 and t5;
t205 = not t204;
t206 = t9 nand t205;
t207 = t204 nand t10;
t208 = t206 nand t207;
t209 = t208 nand t138;
t210 = not t208;
t211 = t137 nand t210;
t212 = t209 nand t211;
t213 = not t212;
t214 = t202 nand t213;
t215 = not t202;
t216 = t212 nand t215;
t217 = t214 nand t216;
t218 = t76 nand t65;
t219 = t64 nand t81;
t220 = t218 nand t219;
t221 = t220 nand t41;
t222 = not t220;
t223 = t40 nand t222;
t224 = t221 nand t223;
t225 = not t224;
t226 = t217 nand t225;
t227 = not t217;
t228 = t224 nand t227;
t229 = t226 nand t228;
t230 = t229 nand t97;
t231 = _475;
t232 = not t231;
t233 = not t232;
t234 = t230 nand t233;
t235 = not t230;
t236 = t232 nand t235;
t237 = t234 nand t236;
t238 = not t237;
t239 = t16 nand t60;
t240 = t55 nand t17;
t241 = t239 nand t240;
t242 = t241 nand t79;
t243 = not t241;
t244 = t78 nand t243;
t245 = t242 nand t244;
t246 = not t245;
t247 = not t246;
t248 = t215 nand t247;
t249 = not t215;
t250 = t246 nand t249;
t251 = t248 nand t250;
t252 = _221;
t253 = _234;
t254 = t252 and t253;
t255 = t254 and t5;
t256 = t255 nand t133;
t257 = not t255;
t258 = t128 nand t257;
t259 = t256 nand t258;
t260 = not t259;
t261 = not t260;
t262 = t251 nand t261;
t263 = not t251;
t264 = t260 nand t263;
t265 = t262 nand t264;
t266 = t265 nand t97;
t267 = _217;
t268 = t253 nand t97;
t269 = t267 nand t268;
t270 = not t269;
t271 = t266 nand t270;
t272 = not t266;
t273 = t269 nand t272;
t274 = t271 nand t273;
t275 = not t274;
t276 = t76 nand t58;
t277 = t57 nand t81;
t278 = t276 nand t277;
t279 = t278 nand t43;
t280 = not t278;
t281 = t38 nand t280;
t282 = t279 nand t281;
t283 = t9 nand t17;
t284 = t16 nand t10;
t285 = t283 nand t284;
t286 = t285 nand t131;
t287 = not t285;
t288 = t130 nand t287;
t289 = t286 nand t288;
t290 = not t289;
t291 = t282 nand t290;
t292 = not t282;
t293 = t289 nand t292;
t294 = t291 nand t293;
t295 = t267 and t253;
t296 = t295 and t5;
t297 = not t296;
t298 = t294 nand t297;
t299 = not t294;
t300 = t296 nand t299;
t301 = t298 nand t300;
t302 = t301 nand t97;
t303 = _478;
t304 = not t303;
t305 = not t304;
t306 = t302 nand t305;
t307 = not t302;
t308 = t304 nand t307;
t309 = t306 nand t308;
t310 = not t309;
t311 = t275 and t310;
t312 = t238 and t311;
t313 = t195 and t312;
t314 = t165 and t313;
t315 = t163 and t314;
t316 = t109 and t315;
t317 = t252 nand t268;
t318 = t316 nand t317;
t319 = t5 and t318;
t320 = t3 and t319;
t321 = t320 and t3;
t322 = t2 and t319;
t323 = t310 and t238;
t324 = t274 and t194;
t325 = t165 and t108;
t326 = t317 and t163;
t327 = t325 and t326;
t328 = t324 and t327;
t329 = t323 and t328;
t330 = _898;
t331 = not t330;
t332 = t331 and t96;
t333 = t4 and t332;
t334 = t253 nand t100;
t335 = t333 nand t334;
t336 = t2 and t5;
t337 = t336 nand t334;
t338 = t335 nand t337;
t339 = t329 nand t338;
t340 = t309 and t238;
t341 = t275 and t194;
t342 = t341 and t327;
t343 = t340 and t342;
t344 = t343 nand t338;
t345 = t310 and t237;
t346 = t345 and t342;
t347 = t346 nand t338;
t348 = t274 and t195;
t349 = t317 and t162;
t350 = t325 and t349;
t351 = t348 and t350;
t352 = t323 and t351;
t353 = t352 nand t338;
t354 = t275 and t195;
t355 = t354 and t350;
t356 = t340 and t355;
t357 = t356 nand t338;
t358 = t341 and t350;
t359 = t323 and t358;
t360 = t359 nand t338;
t361 = t345 and t355;
t362 = t361 nand t338;
t363 = t360 and t362;
t364 = t357 and t363;
t365 = t353 and t364;
t366 = t347 and t365;
t367 = t344 and t366;
t368 = t339 and t367;
t369 = t309 and t237;
t370 = t354 and t327;
t371 = t369 and t370;
t372 = t371 nand t338;
t373 = t368 and t372;
t374 = t369 and t358;
t375 = _900;
t376 = not t375;
t377 = t376 and t96;
t378 = t4 and t377;
t379 = t378 nand t334;
t380 = t379 nand t337;
t381 = t374 nand t380;
t382 = t165 and t109;
t383 = t382 and t349;
t384 = t348 and t383;
t385 = t345 and t384;
t386 = t385 nand t380;
t387 = t324 and t383;
t388 = t323 and t387;
t389 = t388 nand t380;
t390 = t341 and t383;
t391 = t340 and t390;
t392 = t391 nand t380;
t393 = t345 and t390;
t394 = t393 nand t380;
t395 = t348 and t327;
t396 = t345 and t395;
t397 = t396 nand t380;
t398 = t324 and t350;
t399 = t340 and t398;
t400 = t399 nand t380;
t401 = t397 and t400;
t402 = t394 and t401;
t403 = t392 and t402;
t404 = t389 and t403;
t405 = t386 and t404;
t406 = t381 and t405;
t407 = t345 and t398;
t408 = t407 nand t380;
t409 = t406 and t408;
t410 = t373 and t409;
t411 = not t317;
t412 = t411 and t163;
t413 = t382 and t412;
t414 = t354 and t413;
t415 = t323 and t414;
t416 = t336 and t334;
t417 = t415 nand t416;
t418 = t382 and t326;
t419 = t348 and t418;
t420 = t323 and t419;
t421 = t420 nand t416;
t422 = t354 and t418;
t423 = t340 and t422;
t424 = t423 nand t416;
t425 = t345 and t422;
t426 = t425 nand t416;
t427 = t341 and t418;
t428 = t323 and t427;
t429 = t428 nand t416;
t430 = t323 and t370;
t431 = t430 nand t416;
t432 = t354 and t383;
t433 = t323 and t432;
t434 = t433 nand t416;
t435 = t431 and t434;
t436 = t429 and t435;
t437 = t426 and t436;
t438 = t424 and t437;
t439 = t421 and t438;
t440 = t417 and t439;
t441 = not t165;
t442 = t441 and t109;
t443 = t442 and t326;
t444 = t354 and t443;
t445 = t323 and t444;
t446 = t445 nand t416;
t447 = t440 and t446;
t448 = t410 and t447;
t449 = t322 and t448;
t450 = t321 nor t449;
t451 = t319 and t3;
t452 = t382 and t163;
t453 = t354 and t452;
t454 = t323 and t453;
t455 = t454 nand t334;
t456 = t420 nand t334;
t457 = t423 nand t334;
t458 = t425 nand t334;
t459 = t428 nand t334;
t460 = t430 nand t334;
t461 = t433 nand t334;
t462 = t460 and t461;
t463 = t459 and t462;
t464 = t458 and t463;
t465 = t457 and t464;
t466 = t456 and t465;
t467 = t455 and t466;
t468 = t109 and t326;
t469 = t354 and t468;
t470 = t323 and t469;
t471 = t470 nand t334;
t472 = t467 and t471;
t473 = t410 and t472;
t474 = t319 and t473;
t475 = t451 nor t474;
t476 = t450 biimp t475;
t477 = t35 nand t90;
t478 = t89 nand t36;
t479 = t477 nand t478;
t480 = t99 and t102;
t481 = t480 and t96;
t482 = t373 nand t409;
t483 = t481 and t482;
t484 = not t483;
t485 = t479 nand t484;
t486 = not t479;
t487 = t483 nand t486;
t488 = t485 nand t487;
t489 = t3 nand t4;
t490 = t488 and t489;
t491 = t99 and t96;
t492 = t491 and t482;
t493 = not t492;
t494 = t479 nand t493;
t495 = t492 nand t486;
t496 = t494 nand t495;
t497 = t496 and t489;
t498 = t490 biimp t497;
t499 = t267 and t268;
t500 = t499 and t96;
t501 = t500 and t482;
t502 = not t501;
t503 = t265 nand t502;
t504 = not t265;
t505 = t501 nand t504;
t506 = t503 nand t505;
t507 = t489 and t506;
t508 = t267 and t96;
t509 = t508 and t482;
t510 = not t509;
t511 = t265 nand t510;
t512 = t509 nand t504;
t513 = t511 nand t512;
t514 = t489 and t513;
t515 = t507 biimp t514;
tautology t476;
tautology t498;
tautology t515;

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,260 +0,0 @@
/* BDD Calculator data file */
initial 10000 10000;
inputs
_1gat _4gat _8gat _11gat _14gat _17gat _21gat _24gat _27gat _30gat
_34gat _37gat _40gat _43gat _47gat _50gat _53gat _56gat _60gat _63gat
_66gat _69gat _73gat _76gat _79gat _82gat _86gat _89gat _92gat _95gat
_99gat _102gat _105gat _108gat _112gat _115gat ;
actions
autoreorder 0 win2ite;
t2 = _8gat;
t3 = _89gat;
t4 = not t3;
t5 = _95gat;
t6 = t4 nand t5;
t7 = _76gat;
t8 = not t7;
t9 = _82gat;
t10 = t8 nand t9;
t11 = _63gat;
t12 = not t11;
t13 = _69gat;
t14 = t12 nand t13;
t15 = _50gat;
t16 = not t15;
t17 = _56gat;
t18 = t16 nand t17;
t19 = _37gat;
t20 = not t19;
t21 = _43gat;
t22 = t20 nand t21;
t23 = _24gat;
t24 = not t23;
t25 = _30gat;
t26 = t24 nand t25;
t27 = _1gat;
t28 = not t27;
t29 = _4gat;
t30 = t28 nand t29;
t31 = _11gat;
t32 = not t31;
t33 = _17gat;
t34 = t32 nand t33;
t35 = t30 and t34;
t36 = t26 and t35;
t37 = t22 and t36;
t38 = t18 and t37;
t39 = t14 and t38;
t40 = t10 and t39;
t41 = t6 and t40;
t42 = _102gat;
t43 = not t42;
t44 = _108gat;
t45 = t43 nand t44;
t46 = t41 and t45;
t47 = not t46;
t48 = t47 xor t6;
t49 = _99gat;
t50 = not t5;
t51 = t49 nor t50;
t52 = t48 nand t51;
t53 = t47 xor t10;
t54 = _86gat;
t55 = not t9;
t56 = t54 nor t55;
t57 = t53 nand t56;
t58 = t47 xor t14;
t59 = _73gat;
t60 = not t13;
t61 = t59 nor t60;
t62 = t58 nand t61;
t63 = t47 xor t18;
t64 = _60gat;
t65 = not t17;
t66 = t64 nor t65;
t67 = t63 nand t66;
t68 = t47 xor t22;
t69 = _47gat;
t70 = not t21;
t71 = t69 nor t70;
t72 = t68 nand t71;
t73 = t47 xor t26;
t74 = _34gat;
t75 = not t25;
t76 = t74 nor t75;
t77 = t73 nand t76;
t78 = t47 xor t30;
t79 = not t29;
t80 = t2 nor t79;
t81 = t78 nand t80;
t82 = t47 xor t34;
t83 = _21gat;
t84 = not t33;
t85 = t83 nor t84;
t86 = t82 nand t85;
t87 = t81 and t86;
t88 = t77 and t87;
t89 = t72 and t88;
t90 = t67 and t89;
t91 = t62 and t90;
t92 = t57 and t91;
t93 = t52 and t92;
t94 = t47 xor t45;
t95 = _112gat;
t96 = not t44;
t97 = t95 nor t96;
t98 = t94 nand t97;
t99 = t93 and t98;
t100 = not t99;
t101 = t2 nand t100;
t102 = t27 nand t47;
t103 = t29 and t102;
t104 = t101 and t103;
t105 = _14gat;
t106 = t100 xor t52;
t107 = _105gat;
t108 = t107 nor t50;
t109 = t48 nand t108;
t110 = not t109;
t111 = t106 nand t110;
t112 = t100 xor t57;
t113 = _92gat;
t114 = t113 nor t55;
t115 = t53 nand t114;
t116 = not t115;
t117 = t112 nand t116;
t118 = t100 xor t62;
t119 = _79gat;
t120 = t119 nor t60;
t121 = t58 nand t120;
t122 = not t121;
t123 = t118 nand t122;
t124 = t100 xor t67;
t125 = _66gat;
t126 = t125 nor t65;
t127 = t63 nand t126;
t128 = not t127;
t129 = t124 nand t128;
t130 = t100 xor t72;
t131 = _53gat;
t132 = t131 nor t70;
t133 = t68 nand t132;
t134 = not t133;
t135 = t130 nand t134;
t136 = t100 xor t77;
t137 = _40gat;
t138 = t137 nor t75;
t139 = t73 nand t138;
t140 = not t139;
t141 = t136 nand t140;
t142 = t100 xor t81;
t143 = t105 nor t79;
t144 = t78 nand t143;
t145 = not t144;
t146 = t142 nand t145;
t147 = t100 xor t86;
t148 = _27gat;
t149 = t148 nor t84;
t150 = t82 nand t149;
t151 = not t150;
t152 = t147 nand t151;
t153 = t146 and t152;
t154 = t141 and t153;
t155 = t135 and t154;
t156 = t129 and t155;
t157 = t123 and t156;
t158 = t117 and t157;
t159 = t111 and t158;
t160 = t100 xor t98;
t161 = _115gat;
t162 = t161 nor t96;
t163 = t94 nand t162;
t164 = not t163;
t165 = t160 nand t164;
t166 = t159 and t165;
t167 = not t166;
t168 = t105 nand t167;
t169 = t104 nand t168;
t170 = not t169;
t171 = t167 nand t107;
t172 = t47 nand t3;
t173 = t100 nand t49;
t174 = t172 and t173;
t175 = t171 and t174;
t176 = t175 nand t5;
t177 = t167 nand t113;
t178 = t47 nand t7;
t179 = t100 nand t54;
t180 = t178 and t179;
t181 = t177 and t180;
t182 = t181 nand t9;
t183 = t167 nand t119;
t184 = t47 nand t11;
t185 = t100 nand t59;
t186 = t184 and t185;
t187 = t183 and t186;
t188 = t187 nand t13;
t189 = t167 nand t125;
t190 = t47 nand t15;
t191 = t100 nand t64;
t192 = t190 and t191;
t193 = t189 and t192;
t194 = t193 nand t17;
t195 = t167 nand t131;
t196 = t47 nand t19;
t197 = t100 nand t69;
t198 = t196 and t197;
t199 = t195 and t198;
t200 = t199 nand t21;
t201 = t167 nand t148;
t202 = t47 nand t31;
t203 = t100 nand t83;
t204 = t202 and t203;
t205 = t201 and t204;
t206 = t205 nand t33;
t207 = t167 nand t137;
t208 = t47 nand t23;
t209 = t100 nand t74;
t210 = t208 and t209;
t211 = t207 and t210;
t212 = t211 nand t25;
t213 = t206 and t212;
t214 = t200 and t213;
t215 = t194 and t214;
t216 = t188 and t215;
t217 = t182 and t216;
t218 = t176 and t217;
t219 = t167 nand t161;
t220 = t47 nand t42;
t221 = t100 nand t95;
t222 = t220 and t221;
t223 = t219 and t222;
t224 = t223 nand t44;
t225 = t218 and t224;
t226 = t170 nor t225;
t227 = t218 and t96;
t228 = t170 nor t227;
t229 = t226 biimp t228;
t230 = not t188;
t231 = t212 and t200;
t232 = t230 and t231;
t233 = t232 nand t194;
t234 = not t200;
t235 = t212 nand t234;
t236 = t206 and t235;
t237 = t233 and t236;
t238 = t182 and t231;
t239 = not t176;
t240 = t238 nand t239;
t241 = t237 nand t240;
t242 = t212 and t182;
t243 = t242 nand t239;
t244 = t237 nand t243;
t245 = t241 biimp t244;
tautology t229;
tautology t245;

View file

@ -1,409 +0,0 @@
/* BDD Calculator data file */
initial 10000 10000;
inputs
id0 id1 id2 id3 id4 id5 id6 id7 id8 id9
id10 id11 id12 id13 id14 id15 id16 id17 id18 id19
id20 id21 id22 id23 id24 id25 id26 id27 id28 id29
id30 id31 ic0 ic1 ic2 ic3 ic4 ic5 ic6 ic7
r ;
actions
autoreorder 0 sift;
t2 = id0;
t3 = id4;
t4 = t2 xor t3;
t5 = id8;
t6 = id12;
t7 = t5 xor t6;
t8 = t4 xor t7;
t9 = ic0;
t10 = r;
t11 = t9 and t10;
t12 = id16;
t13 = id17;
t14 = t12 xor t13;
t15 = id18;
t16 = id19;
t17 = t15 xor t16;
t18 = t14 xor t17;
t19 = id20;
t20 = id21;
t21 = t19 xor t20;
t22 = id22;
t23 = id23;
t24 = t22 xor t23;
t25 = t21 xor t24;
t26 = t18 xor t25;
t27 = t11 xor t26;
t28 = t8 xor t27;
t29 = t16 xor t23;
t30 = id27;
t31 = id31;
t32 = t30 xor t31;
t33 = t29 xor t32;
t34 = ic7;
t35 = t34 and t10;
t36 = id5;
t37 = t3 xor t36;
t38 = id6;
t39 = id7;
t40 = t38 xor t39;
t41 = t37 xor t40;
t42 = id13;
t43 = t6 xor t42;
t44 = id14;
t45 = id15;
t46 = t44 xor t45;
t47 = t43 xor t46;
t48 = t41 xor t47;
t49 = t35 xor t48;
t50 = t33 xor t49;
t51 = not t50;
t52 = t15 xor t22;
t53 = id26;
t54 = id30;
t55 = t53 xor t54;
t56 = t52 xor t55;
t57 = ic6;
t58 = t57 and t10;
t59 = id1;
t60 = t2 xor t59;
t61 = id2;
t62 = id3;
t63 = t61 xor t62;
t64 = t60 xor t63;
t65 = id9;
t66 = t5 xor t65;
t67 = id10;
t68 = id11;
t69 = t67 xor t68;
t70 = t66 xor t69;
t71 = t64 xor t70;
t72 = t58 xor t71;
t73 = t56 xor t72;
t74 = t12 xor t19;
t75 = id24;
t76 = id28;
t77 = t75 xor t76;
t78 = t74 xor t77;
t79 = ic4;
t80 = t79 and t10;
t81 = t64 xor t41;
t82 = t80 xor t81;
t83 = t78 xor t82;
t84 = t13 xor t20;
t85 = id25;
t86 = id29;
t87 = t85 xor t86;
t88 = t84 xor t87;
t89 = ic5;
t90 = t89 and t10;
t91 = t70 xor t47;
t92 = t90 xor t91;
t93 = t88 xor t92;
t94 = not t93;
t95 = t83 and t94;
t96 = t73 and t95;
t97 = t51 and t96;
t98 = t61 xor t38;
t99 = t67 xor t44;
t100 = t98 xor t99;
t101 = ic2;
t102 = t101 and t10;
t103 = t75 xor t85;
t104 = t53 xor t30;
t105 = t103 xor t104;
t106 = t18 xor t105;
t107 = t102 xor t106;
t108 = t100 xor t107;
t109 = not t108;
t110 = not t28;
t111 = t59 xor t36;
t112 = t65 xor t42;
t113 = t111 xor t112;
t114 = ic1;
t115 = t114 and t10;
t116 = t76 xor t86;
t117 = t54 xor t31;
t118 = t116 xor t117;
t119 = t105 xor t118;
t120 = t115 xor t119;
t121 = t113 xor t120;
t122 = t110 and t121;
t123 = t109 and t122;
t124 = t62 xor t39;
t125 = t68 xor t45;
t126 = t124 xor t125;
t127 = ic3;
t128 = t127 and t10;
t129 = t25 xor t118;
t130 = t128 xor t129;
t131 = t126 xor t130;
t132 = not t131;
t133 = t123 and t132;
t134 = not t121;
t135 = t110 and t134;
t136 = t109 and t135;
t137 = t136 and t131;
t138 = t108 and t135;
t139 = t138 and t132;
t140 = t137 or t139;
t141 = t133 or t140;
t142 = t28 and t134;
t143 = t109 and t142;
t144 = t143 and t132;
t145 = t141 or t144;
t146 = t97 and t145;
t147 = t28 and t146;
t148 = t2 xor t147;
t149 = t110 and t109;
t150 = t149 and t132;
t151 = t135 and t109;
t152 = t135 and t132;
t153 = t151 or t152;
t154 = t150 or t153;
t155 = t134 and t109;
t156 = t155 and t132;
t157 = t154 or t156;
t158 = t97 and t157;
t159 = t28 and t158;
t160 = t2 xor t159;
t161 = t148 biimp t160;
t162 = t121 and t146;
t163 = t59 xor t162;
t164 = t121 and t158;
t165 = t59 xor t164;
t166 = t163 biimp t165;
t202 = not t83;
t203 = t202 and t93;
t204 = t73 and t203;
t205 = t51 and t204;
t206 = t205 and t145;
t218 = t108 and t206;
t219 = t67 xor t218;
t209 = t205 and t157;
t220 = t108 and t209;
t221 = t67 xor t220;
t222 = t219 biimp t221;
t223 = t131 and t206;
t224 = t68 xor t223;
t225 = t131 and t209;
t226 = t68 xor t225;
t227 = t224 biimp t226;
t177 = not t73;
t228 = t177 and t203;
t229 = t50 and t228;
t230 = t229 and t145;
t231 = t28 and t230;
t232 = t6 xor t231;
t233 = t229 and t157;
t234 = t28 and t233;
t235 = t6 xor t234;
t236 = t232 biimp t235;
t237 = t121 and t230;
t238 = t42 xor t237;
t239 = t121 and t233;
t240 = t42 xor t239;
t241 = t238 biimp t240;
t242 = t108 and t230;
t243 = t44 xor t242;
t244 = t108 and t233;
t245 = t44 xor t244;
t246 = t243 biimp t245;
t247 = t131 and t230;
t248 = t45 xor t247;
t249 = t131 and t233;
t250 = t45 xor t249;
t251 = t248 biimp t250;
t252 = t108 and t142;
t253 = t132 and t252;
t254 = t228 and t51;
t255 = t202 and t94;
t256 = t177 and t255;
t257 = t256 and t50;
t258 = t73 and t255;
t259 = t258 and t51;
t260 = t257 or t259;
t261 = t254 or t260;
t178 = t177 and t95;
t262 = t178 and t51;
t263 = t261 or t262;
t264 = t253 and t263;
t265 = t83 and t264;
t266 = t12 xor t265;
t267 = t202 and t177;
t268 = t267 and t51;
t269 = t255 and t177;
t270 = t255 and t51;
t271 = t269 or t270;
t272 = t268 or t271;
t273 = t94 and t177;
t274 = t273 and t51;
t275 = t272 or t274;
t276 = t253 and t275;
t277 = t83 and t276;
t278 = t12 xor t277;
t279 = t266 biimp t278;
t280 = t93 and t264;
t281 = t13 xor t280;
t282 = t93 and t276;
t283 = t13 xor t282;
t284 = t281 biimp t283;
t285 = t73 and t264;
t286 = t15 xor t285;
t287 = t73 and t276;
t288 = t15 xor t287;
t289 = t286 biimp t288;
t290 = t50 and t264;
t291 = t16 xor t290;
t292 = t50 and t276;
t293 = t16 xor t292;
t294 = t291 biimp t293;
t167 = t108 and t146;
t168 = t61 xor t167;
t169 = t108 and t158;
t170 = t61 xor t169;
t171 = t168 biimp t170;
t295 = t131 and t143;
t296 = t295 and t263;
t297 = t83 and t296;
t298 = t19 xor t297;
t299 = t295 and t275;
t300 = t83 and t299;
t301 = t19 xor t300;
t302 = t298 biimp t301;
t303 = t93 and t296;
t304 = t20 xor t303;
t305 = t93 and t299;
t306 = t20 xor t305;
t307 = t304 biimp t306;
t308 = t73 and t296;
t309 = t22 xor t308;
t310 = t73 and t299;
t311 = t22 xor t310;
t312 = t309 biimp t311;
t313 = t50 and t296;
t314 = t23 xor t313;
t315 = t50 and t299;
t316 = t23 xor t315;
t317 = t314 biimp t316;
t318 = t108 and t122;
t319 = t132 and t318;
t320 = t319 and t263;
t321 = t83 and t320;
t322 = t75 xor t321;
t323 = t319 and t275;
t324 = t83 and t323;
t325 = t75 xor t324;
t326 = t322 biimp t325;
t327 = t93 and t320;
t328 = t85 xor t327;
t329 = t93 and t323;
t330 = t85 xor t329;
t331 = t328 biimp t330;
t332 = t73 and t320;
t333 = t53 xor t332;
t334 = t73 and t323;
t335 = t53 xor t334;
t336 = t333 biimp t335;
t337 = t50 and t320;
t338 = t30 xor t337;
t339 = t50 and t323;
t340 = t30 xor t339;
t341 = t338 biimp t340;
t342 = t131 and t123;
t343 = t342 and t263;
t344 = t83 and t343;
t345 = t76 xor t344;
t346 = t342 and t275;
t347 = t83 and t346;
t348 = t76 xor t347;
t349 = t345 biimp t348;
t350 = t93 and t343;
t351 = t86 xor t350;
t352 = t93 and t346;
t353 = t86 xor t352;
t354 = t351 biimp t353;
t172 = t131 and t146;
t173 = t62 xor t172;
t174 = t131 and t158;
t175 = t62 xor t174;
t176 = t173 biimp t175;
t355 = t73 and t343;
t356 = t54 xor t355;
t357 = t73 and t346;
t358 = t54 xor t357;
t359 = t356 biimp t358;
t360 = t50 and t343;
t361 = t31 xor t360;
t362 = t50 and t346;
t363 = t31 xor t362;
t364 = t361 biimp t363;
t179 = t50 and t178;
t180 = t179 and t145;
t181 = t28 and t180;
t182 = t3 xor t181;
t183 = t179 and t157;
t184 = t28 and t183;
t185 = t3 xor t184;
t186 = t182 biimp t185;
t187 = t121 and t180;
t188 = t36 xor t187;
t189 = t121 and t183;
t190 = t36 xor t189;
t191 = t188 biimp t190;
t192 = t108 and t180;
t193 = t38 xor t192;
t194 = t108 and t183;
t195 = t38 xor t194;
t196 = t193 biimp t195;
t197 = t131 and t180;
t198 = t39 xor t197;
t199 = t131 and t183;
t200 = t39 xor t199;
t201 = t198 biimp t200;
t207 = t28 and t206;
t208 = t5 xor t207;
t210 = t28 and t209;
t211 = t5 xor t210;
t212 = t208 biimp t211;
t213 = t121 and t206;
t214 = t65 xor t213;
t215 = t121 and t209;
t216 = t65 xor t215;
t217 = t214 biimp t216;
tautology t161;
tautology t166;
tautology t222;
tautology t227;
tautology t236;
tautology t241;
tautology t246;
tautology t251;
tautology t279;
tautology t284;
tautology t289;
tautology t294;
tautology t171;
tautology t302;
tautology t307;
tautology t312;
tautology t317;
tautology t326;
tautology t331;
tautology t336;
tautology t341;
tautology t349;
tautology t354;
tautology t176;
tautology t359;
tautology t364;
tautology t186;
tautology t191;
tautology t196;
tautology t201;
tautology t212;
tautology t217;

View file

@ -1,174 +0,0 @@
/*************************************************************************
$Header: /Volumes/CVS/repository/spot/spot/buddy/examples/calculator/Attic/hashtbl.cxx,v 1.2 2003/05/05 13:44:53 aduret Exp $
FILE: hashtbl.cc
DESCR: Compiler hash table
AUTH: Jorn Lind
DATE: (C) september 1998
*************************************************************************/
#include "hashtbl.h"
/*************************************************************************
*************************************************************************/
/*======================================================================*/
hashTable::hashTable(void)
{
table = NULL;
clear();
}
hashTable::~hashTable(void)
{
delete[] table;
}
void hashTable::add(hashData &d)
{
if (freepos == -1)
reallocate_table();
unsigned int h = hashval(d.id);
int tmppos = table[freepos].next;
table[freepos].data = d;
table[freepos].next = table[h].first;
table[h].first = freepos;
freepos = tmppos;
}
int hashTable::exists(const char *id)
{
if (size == 0)
return 0;
int p = table[hashval(id)].first;
while (p != -1)
{
if (strcmp(id, table[p].data.id) == 0)
return 1;
p = table[p].next;
}
return 0;
}
int hashTable::lookup(const char *id, hashData &d) const
{
if (size == 0)
return -1;
int p = table[hashval(id)].first;
while (p != -1)
{
if (strcmp(id, table[p].data.id) == 0)
{
d = table[p].data;
return 0;
}
p = table[p].next;
}
return -1;
}
int hashTable::remove(const char *id)
{
if (size == 0)
return -1;
int h = hashval(id);
int next = table[h].first;
int prev = -1;
while (next != -1)
{
if (strcmp(id, table[next].data.id) == 0)
{
if (prev == -1)
table[h].first = table[next].next;
else
table[prev].next = table[next].next;
table[next].next = freepos;
freepos = next;
return 0;
}
prev = next;
next = table[next].next;
}
return -1;
}
void hashTable::clear(void)
{
delete[] table;
freepos = -1;
size = 0;
}
void hashTable::reallocate_table(void)
{
hashElement *newtable;
int oldsize = size;
int n;
if (size > 0)
{
size *= 2;
newtable = new hashElement[size];
for (int n=0 ; n<oldsize ; n++)
newtable[n] = table[n];
delete[] table;
table = newtable;
}
else
{
size = 10;
table = new hashElement[size];
}
for (n=0 ; n<oldsize ; n++)
table[n].first = -1;
for (n=oldsize ; n<size ; n++)
{
table[n].first = -1;
table[n].next = n+1;
}
table[size-1].next = -1;
freepos = oldsize;
for (n=0 ; n<oldsize ; n++)
{
unsigned int h = hashval(table[n].data.id);
table[n].next = table[h].first;
table[h].first = n;
}
}
unsigned int hashTable::hashval(const char *s) const
{
unsigned int h = 0;
for (const char *p=s ; *p!=0 ; p++)
h = (h + *p) % size;
return h;
}
/* EOF */

View file

@ -1,56 +0,0 @@
/*************************************************************************
$Header: /Volumes/CVS/repository/spot/spot/buddy/examples/calculator/Attic/hashtbl.h,v 1.2 2003/05/05 13:44:54 aduret Exp $
FILE: hashtbl.h
DESCR: Compiler hashtable
AUTH: Jorn Lind
DATE: (C) september 1998
*************************************************************************/
#ifndef _HASHTBL_H
#define _HASHTBL_H
#include <string.h>
class hashData
{
public:
hashData(void) { id=NULL; type=0; def=NULL; }
hashData(const char *s, int t, void *d) : id(s) { type=t; def=d; }
const char *id;
int type;
void *def;
};
class hashElement
{
public:
hashData data;
int first;
int next;
};
class hashTable
{
public:
hashTable(void);
~hashTable(void);
void add(hashData &);
int exists(const char *);
int lookup(const char *, hashData &) const;
int remove(const char *);
void clear(void);
private:
void reallocate_table(void);
unsigned int hashval(const char *) const;
hashElement *table;
int size, freepos;
};
#endif /* _HASHTBL_H */
/* EOF */

View file

@ -1,101 +0,0 @@
/*************************************************************************
FILE: lexer.l
DESCR: FLEX rules for BDD calculator
AUTH: Jorn Lind
DATE: (C) may 1999
*************************************************************************/
%{
#include <string.h>
#include <stdlib.h>
#include "parser_.h"
#include "parser.h"
%}
/*************************************************************************
Macros and sub-lexers
*************************************************************************/
DIGIT [0-9]
ID [a-zA-Z_][a-zA-Z0-9_]*
LINE [^\n]
%x COMM
%%
/**************************************************************************
Tokens
**************************************************************************/
/* Keywords */
"initial" return T_initial;
"inputs" return T_inputs;
"actions" return T_actions;
"exist" return T_exist;
"forall" return T_forall;
"size" return T_size;
"dot" return T_dot;
"autoreorder" return T_autoreorder;
"reorder" return T_reorder;
"win2" return T_win2;
"win2ite" return T_win2ite;
"sift" return T_sift;
"siftite" return T_siftite;
"none" return T_none;
"cache" return T_cache;
"tautology" return T_tautology;
"true" return T_true;
"false" return T_false;
"print" return T_print;
/* Symbols and operators */
"." return T_dot;
"(" return T_lpar;
")" return T_rpar;
";" return T_semi;
"=" return T_equal;
"<>" return T_biimp;
"=>" return T_imp;
"|" return T_or;
"^" return T_xor;
"&" return T_and;
"~" return T_not;
"biimp" return T_biimp;
"imp" return T_imp;
"or" return T_or;
"xor" return T_xor;
"and" return T_and;
"not" return T_not;
"nand" return T_nand;
"nor" return T_nor;
/* Identifiers and constant values */
{ID} { strncpy(yylval.id, yytext, MAXIDLEN); return T_id; }
{DIGIT}+ { yylval.ival = atol(yytext); return T_intval; }
/* Strings */
\"[^\"]*\" { yylval.str=sdup(yytext+1);
yylval.str[strlen(yylval.str)-1]=0; return T_str; }
/* Whitespace */
[\n] { linenum++; }
[\r\t\f ] /* ignore blanks */
"//"{LINE}* /* Remove one line comments */
/**************************************************************************
Remove multi line comments
**************************************************************************/
"/*" BEGIN COMM;
<COMM>[^*\n]* /* ignore */
<COMM>"*"[^*/\n]* /* ignore */
<COMM>\n { linenum++; }
<COMM>"*/" BEGIN INITIAL;
. { yyerror("Unknown symbol"); }

View file

@ -1,118 +0,0 @@
/* A Bison parser, made by GNU Bison 1.875c. */
/* Skeleton parser for Yacc-like parsing with Bison,
Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* As a special exception, when this file is copied by Bison into a
Bison output file, you may use that output file without restriction.
This special exception was added by the Free Software Foundation
in version 1.24 of Bison. */
/* Tokens. */
#ifndef YYTOKENTYPE
# define YYTOKENTYPE
/* Put the tokens into the symbol table, so that GDB and other debuggers
know about them. */
enum yytokentype {
T_id = 258,
T_str = 259,
T_intval = 260,
T_true = 261,
T_false = 262,
T_initial = 263,
T_inputs = 264,
T_actions = 265,
T_size = 266,
T_dumpdot = 267,
T_autoreorder = 268,
T_reorder = 269,
T_win2 = 270,
T_win2ite = 271,
T_sift = 272,
T_siftite = 273,
T_none = 274,
T_cache = 275,
T_tautology = 276,
T_print = 277,
T_lpar = 278,
T_rpar = 279,
T_equal = 280,
T_semi = 281,
T_dot = 282,
T_forall = 283,
T_exist = 284,
T_biimp = 285,
T_imp = 286,
T_nor = 287,
T_or = 288,
T_xor = 289,
T_and = 290,
T_nand = 291,
T_not = 292
};
#endif
#define T_id 258
#define T_str 259
#define T_intval 260
#define T_true 261
#define T_false 262
#define T_initial 263
#define T_inputs 264
#define T_actions 265
#define T_size 266
#define T_dumpdot 267
#define T_autoreorder 268
#define T_reorder 269
#define T_win2 270
#define T_win2ite 271
#define T_sift 272
#define T_siftite 273
#define T_none 274
#define T_cache 275
#define T_tautology 276
#define T_print 277
#define T_lpar 278
#define T_rpar 279
#define T_equal 280
#define T_semi 281
#define T_dot 282
#define T_forall 283
#define T_exist 284
#define T_biimp 285
#define T_imp 286
#define T_nor 287
#define T_or 288
#define T_xor 289
#define T_and 290
#define T_nand 291
#define T_not 292
#if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
typedef int YYSTYPE;
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
# define YYSTYPE_IS_DECLARED 1
# define YYSTYPE_IS_TRIVIAL 1
#endif
extern YYSTYPE yylval;

View file

@ -1,459 +0,0 @@
/*************************************************************************
FILE: parser.y
DESCR: BISON rules and main program for BDD calculator
AUTH: Jorn Lind
DATE: (C) may 1999
*************************************************************************/
%{
#include <string.h>
#include <stdarg.h>
#include <fstream>
#include <getopt.h>
#define IMPLEMENTSLIST /* Special for list template handling */
#include "slist.h"
#include "hashtbl.h"
#include "parser_.h"
using namespace std;
/* Definitions for storing and caching of identifiers */
#define inputTag 0
#define exprTag 1
struct nodeData
{
nodeData(const nodeData &d) { tag=d.tag; name=sdup(d.name); val=d.val; }
nodeData(int t, char *n, bdd v) { tag=t; name=n; val=v; }
~nodeData(void) { delete[] name; }
int tag;
char *name;
bdd val;
};
typedef SList<nodeData> nodeLst;
nodeLst inputs;
hashTable names;
/* Other */
int linenum;
bddgbchandler gbcHandler = bdd_default_gbchandler;
/* Prototypes */
void actInit(token *nodes, token *cache);
void actInputs(void);
void actAddInput(token *id);
void actAssign(token *id, token *expr);
void actOpr2(token *res, token *left, token *right, int opr);
void actNot(token *res, token *right);
void actId(token *res, token *id);
void actConst(token *res, int);
void actSize(token *id);
void actDot(token *fname, token *id);
void actAutoreorder(token *times, token *method);
void actCache(void);
void actTautology(token *id);
void actExist(token *res, token *var, token *expr);
void actForall(token *res, token *var, token *expr);
void actQuantVar2(token *res, token *id, token *list);
void actQuantVar1(token *res, token *id);
void actPrint(token *id);
%}
/*************************************************************************
Token definitions
*************************************************************************/
%token T_id T_str T_intval T_true T_false
%token T_initial T_inputs T_actions
%token T_size T_dumpdot
%token T_autoreorder T_reorder T_win2 T_win2ite T_sift T_siftite T_none
%token T_cache T_tautology T_print
%token T_lpar T_rpar
%token T_equal
%token T_semi T_dot
%right T_exist T_forall T_dot
%left T_biimp
%left T_imp
%left T_or T_nor
%left T_xor
%left T_nand T_and
%right T_not
/*************************************************************************
BISON rules
*************************************************************************/
%%
/*=[ Top ]==============================================================*/
calc:
initial inputs actions
;
/*=[ Initializers ]=====================================================*/
initial:
T_initial T_intval T_intval T_semi { actInit(&$2,&$3); }
;
inputs:
T_inputs inputSeq T_semi { actInputs(); }
;
inputSeq:
inputSeq T_id { actAddInput(&$2); }
| T_id { actAddInput(&$1); }
;
/*=[ Actions ]==========================================================*/
actions:
T_actions actionSeq
;
actionSeq:
action T_semi actionSeq
| action T_semi
;
action:
assign
| size
| dot
| reorder
| cache
| tautology
| print
;
assign:
T_id T_equal expr { actAssign(&$1,&$3); }
;
expr:
expr T_and expr { actOpr2(&$$,&$1,&$3,bddop_and); }
| expr T_nand expr { actOpr2(&$$,&$1,&$3,bddop_nand); }
| expr T_xor expr { actOpr2(&$$,&$1,&$3,bddop_xor); }
| expr T_or expr { actOpr2(&$$,&$1,&$3,bddop_or); }
| expr T_nor expr { actOpr2(&$$,&$1,&$3,bddop_nor); }
| expr T_imp expr { actOpr2(&$$,&$1,&$3,bddop_imp); }
| expr T_biimp expr { actOpr2(&$$,&$1,&$3,bddop_biimp); }
| T_not expr { actNot(&$$,&$2); }
| T_lpar expr T_rpar { $$.bval = $2.bval; }
| T_id { actId(&$$,&$1); }
| T_true { $$.bval = new bdd(bddtrue); }
| T_false { $$.bval = new bdd(bddfalse); }
| quantifier { $$.bval = $1.bval; }
;
quantifier:
T_exist varlist T_dot expr { actExist(&$$,&$2,&$4); }
| T_forall varlist T_dot expr { actForall(&$$,&$2,&$4); }
;
varlist:
T_id varlist { actQuantVar2(&$$,&$1,&$2); }
| T_id { actQuantVar1(&$$,&$1); }
;
size:
T_size T_id { actSize(&$2); }
;
dot:
T_dumpdot T_str T_id { actDot(&$2,&$3); }
;
reorder:
T_reorder method { bdd_reorder($2.ival); }
| T_autoreorder T_intval method { actAutoreorder(&$2,&$3); }
;
method:
T_win2 { $$.ival = BDD_REORDER_WIN2; }
| T_win2ite { $$.ival = BDD_REORDER_WIN2ITE; }
| T_sift { $$.ival = BDD_REORDER_SIFT; }
| T_siftite { $$.ival = BDD_REORDER_SIFTITE; }
| T_none { $$.ival = BDD_REORDER_NONE; }
;
cache:
T_cache { actCache(); }
;
tautology:
T_tautology T_id { actTautology(&$2); }
;
print:
T_print T_id { actPrint(&$2); }
%%
/*************************************************************************
Main and more
*************************************************************************/
void usage(void)
{
cerr << "USAGE: bddcalc [-hg] file\n";
cerr << " -h : print this message\n";
cerr << " -g : disable garbage collection info\n";
}
int main(int ac, char **av)
{
int c;
while ((c=getopt(ac, av, "hg")) != EOF)
{
switch (c)
{
case 'h':
usage();
break;
case 'g':
gbcHandler = bdd_default_gbchandler;
break;
}
}
if (optind >= ac)
usage();
yyin = fopen(av[optind],"r");
if (!yyin)
{
cerr << "Could not open file: " << av[optind] << endl;
exit(2);
}
linenum = 1;
bdd_setcacheratio(2);
yyparse();
bdd_printstat();
bdd_done();
return 0;
}
void yyerror(char *fmt, ...)
{
va_list argp;
va_start(argp,fmt);
fprintf(stderr, "Parse error in (or before) line %d: ", linenum);
vfprintf(stderr, fmt, argp);
va_end(argp);
exit(3);
}
/*************************************************************************
Semantic actions
*************************************************************************/
void actInit(token *nodes, token *cache)
{
bdd_init(nodes->ival, cache->ival);
bdd_gbc_hook(gbcHandler);
bdd_reorder_verbose(0);
}
void actInputs(void)
{
bdd_setvarnum(inputs.size());
int vnum=0;
for (nodeLst::ite i=inputs.first() ; i.more() ; i++, vnum++)
{
if (names.exists((*i).name))
yyerror("Redefinition of input %s", (*i).name);
(*i).val = bdd_ithvar(vnum);
hashData hd((*i).name, 0, &(*i));
names.add(hd);
}
bdd_varblockall();
}
void actAddInput(token *id)
{
inputs.append( nodeData(inputTag,sdup(id->id),bddtrue) );
}
void actAssign(token *id, token *expr)
{
if (names.exists(id->id))
yyerror("Redefinition of %s", id->id);
nodeData *d = new nodeData(exprTag, sdup(id->id), *expr->bval);
hashData hd(d->name, 0, d);
names.add(hd);
delete expr->bval;
}
void actOpr2(token *res, token *left, token *right, int opr)
{
res->bval = new bdd( bdd_apply(*left->bval, *right->bval, opr) );
delete left->bval;
delete right->bval;
}
void actNot(token *res, token *right)
{
res->bval = new bdd( bdd_not(*right->bval) );
delete right->bval;
//printf("%5d -> %f\n", fixme, bdd_satcount(*res->bval));
}
void actId(token *res, token *id)
{
hashData hd;
if (names.lookup(id->id,hd) == 0)
{
res->bval = new bdd( ((nodeData*)hd.def)->val );
}
else
yyerror("Unknown variable %s", id->id);
}
void actExist(token *res, token *var, token *expr)
{
res->bval = new bdd( bdd_exist(*expr->bval, *var->bval) );
delete var->bval;
delete expr->bval;
}
void actForall(token *res, token *var, token *expr)
{
res->bval = new bdd( bdd_forall(*expr->bval, *var->bval) );
delete var->bval;
delete expr->bval;
}
void actQuantVar2(token *res, token *id, token *list)
{
hashData hd;
if (names.lookup(id->id,hd) == 0)
{
if (hd.type == inputTag)
{
res->bval = list->bval;
*res->bval &= ((nodeData*)hd.def)->val;
}
else
yyerror("%s is not a variable", id->id);
}
else
yyerror("Unknown variable %s", id->id);
}
void actQuantVar1(token *res, token *id)
{
hashData hd;
if (names.lookup(id->id,hd) == 0)
{
if (hd.type == inputTag)
res->bval = new bdd( ((nodeData*)hd.def)->val );
else
yyerror("%s is not a variable", id->id);
}
else
yyerror("Unknown variable %s", id->id);
}
void actSize(token *id)
{
hashData hd;
if (names.lookup(id->id,hd) == 0)
{
cout << "Number of nodes used for " << id->id << " = "
<< bdd_nodecount(((nodeData*)hd.def)->val) << endl;
}
else
yyerror("Unknown variable %s", id->id);
}
void actDot(token *fname, token *id)
{
hashData hd;
if (names.lookup(id->id,hd) == 0)
{
if (bdd_fnprintdot(fname->str, ((nodeData*)hd.def)->val) < 0)
cout << "Could not open file: " << fname->str << endl;
}
else
yyerror("Unknown variable %s", id->id);
}
void actAutoreorder(token *times, token *method)
{
if (times->ival == 0)
bdd_autoreorder(method->ival);
else
bdd_autoreorder_times(method->ival, times->ival);
}
void actCache(void)
{
bdd_printstat();
}
void actTautology(token *id)
{
hashData hd;
if (names.lookup(id->id,hd) == 0)
{
if (((nodeData*)hd.def)->val == bddtrue)
cout << "Formula " << id->id << " is a tautology!\n";
else
cout << "Formula " << id->id << " is NOT a tautology!\n";
}
else
yyerror("Unknown variable %s", id->id);
}
void actPrint(token *id)
{
hashData hd;
if (names.lookup(id->id,hd) == 0)
cout << id->id << " = " << bddset << ((nodeData*)hd.def)->val << endl;
else
yyerror("Unknown variable %s", id->id);
}
/* EOF */

View file

@ -1,44 +0,0 @@
/*************************************************************************
FILE: parser.h
DESCR: parser defs. for BDD calculator
AUTH: Jorn Lind
DATE: (C) may 1999
*************************************************************************/
#ifndef _PARSER_H
#define _PARSER_H
#include <stdio.h>
#include "bdd.h"
#define MAXIDLEN 32 /* Max. number of allowed characters in an identifier */
struct token /* BISON token data */
{
char id[MAXIDLEN+1];
char *str;
int ival;
bdd *bval;
};
#define YYSTYPE token
#define YY_SKIP_YYWRAP
#define YY_NO_UNPUT
#define yywrap() (1)
extern YYSTYPE yylval; /* Declare for flex user */
extern void yyerror(char *,...); /* Declare for flex and bison */
extern FILE *yyin;
extern int yylex(void); /* Declare for bison */
extern int yyparse(void); /* Declare for bison user */
extern int linenum; /* Declare for error handler */
/* Use this instead of strdup() to avoid malloc() */
inline char *sdup(const char *s)
{
return strcpy(new char[strlen(s)+1], s);
}
#endif /* _PARSER_H */
/* EOF */

View file

@ -1,99 +0,0 @@
A PRIMITIVE BDD CALCULATOR
--------------------------
This is a small program that parses commands for a BDD calculator. The
input file contains the definition of the basic BDD variables (inputs)
and a sequence of actions - typically assignments. The calculator can
be used for verification of combinatorial circuits (tautology check),
such as some of the ISCAS85 circuits in the "examples" directory. These
ISCAS85 have been modified by another program before they where added to
the BuDDy examples, so please do not compare the runtime results to other
test runs.
A BDD calculator file could be something like this ("example.cal"):
initial 100 100;
inputs
a b c;
actions
t1 = (a | b) & c;
t2 = (a & c) | (b & c);
t3 = t1 <> t2;
tautology t3; /* Verify that (a | b) & c == (a & c) | (b & c) */
Where the blocks are like this:
initial n c
-----------
Initialize the BDD package using 'n' bddnodes and 'c' elements in
the caches. This part is mandatory.
inputs id-seq
-------------
Define all identifiers in the sequence 'id-seq' to be primary
inputs. This also corresponds to the initial BDD variable ordering,
starting with the first identifier in the top.
outputs id-seq
--------------
Define all identifiers in the sequence 'id-seq' to be primary
outputs. The sequence is space separated.
actions act-seq
---------------
A list of all the calculations and more. This list is traversed and
interpreted in the same order as written in the file. An action can
be one of the following:
Assignments: "id = expression"
Calculate the right-hand side and assign the value to the
left-hand identifier. The expression may contain:
+ identifiers : A previously defined identifier
+ true : The constant true BDD
+ false : The constant false BDD
+ ( ... ) : Parenteses
+ E1 & E2 : Conjunction of two sub-expressions
+ E1 | E2 : Disjunction of two sub-expressions
+ E1 ^ E2 : Xor
+ E1 => E2 : Implication
+ E1 <> E2 : Biimplication
+ ~E : Negation
+ exist V.E :
+ forall V. E : Existential/Universal quantification of the
variables V in the expression E. V is a space
separated list of input names.
Tautology check: "tautology id"
Check the variable 'id' for tautology (being equal to the constant
true BDD).
Size information: "size id"
Print the number of distinct BDD nodes used to represent 'id'.
Dump as a dot file: "dot "filename" id"
Dump the BDD representing 'id' as commands to the graph drawing
program Dot. The commands are written to the file 'filename'.
Reordering: "reorder mtd"
Do a dynamic variable reordering now using the method 'mtd'. The
argument 'mtd' may be either: win2, win2ite or sift.
Automatic reordering: "autoreorder times mtd"
Enable automatic dynamic variable reordering using the method
'mtd'. The argument 'mtd' may be either: win2, win2ite, sift or
none. Use none to disable automatic reordering. The 'times'
argument supplies the number of times that reordering may be
done. Use for example 1 if you only want a "one-shot" reordering.
Cache statistics: "cache"
Print various cache statistics for the BDD kernel.

View file

@ -1,235 +0,0 @@
/*************************************************************************
$Header: /Volumes/CVS/repository/spot/spot/buddy/examples/calculator/Attic/slist.h,v 1.2 2003/05/05 13:44:55 aduret Exp $
FILE: slist.h
DESCR: Single linked list
AUTH: Jorn Lind
DATE: (C)
*************************************************************************/
#ifndef _SLIST_H
#define _SLIST_H
#include <string.h>
/* === Base void list ==================================================*/
class voidSList;
class voidSList
{
protected:
class voidSListElem
{
public:
void *data;
voidSListElem *next;
~voidSListElem(void) { delete next; }
private:
voidSListElem(void *d) { data=d; next=NULL; }
friend class voidSList;
};
public:
voidSList(void) { head=tail=NULL; len=0; }
~voidSList(void) { delete head; }
void *append(void *);
void *append(voidSListElem *p, void *d);
void *insert(void *);
int size(void) const { return len; }
int empty(void) const { return len==0; }
void reverse(void);
void eraseHead(void);
void eraseAll(void) { delete head; head=tail=NULL; len=0; }
protected:
int len;
voidSListElem *head, *tail;
};
#ifdef IMPLEMENTSLIST
void *voidSList::append(void *d)
{
voidSListElem *elem = new voidSListElem(d);
if (tail)
tail->next = elem;
else
head = elem;
tail = elem;
len++;
return elem->data;
}
void *voidSList::append(voidSListElem *p, void *d)
{
voidSListElem *elem = new voidSListElem(d);
if (p)
{
elem->next = p->next;
p->next = elem;
if (p == tail)
tail = p->next;
}
else
{
if (tail)
tail->next = elem;
else
head = elem;
tail = elem;
}
len++;
return elem->data;
}
void *voidSList::insert(void *d)
{
voidSListElem *elem = new voidSListElem(d);
if (tail == NULL)
tail = elem;
elem->next = head;
head = elem;
len++;
return elem->data;
}
void voidSList::reverse(void)
{
voidSListElem *newTail = head;
voidSListElem *tmpHead = NULL;
if (len < 2)
return ;
while (head != NULL)
{
voidSListElem *tmpNext = head->next;
head->next = tmpHead;
tmpHead = head;
head = tmpNext;
}
tail = newTail;
head = tmpHead;
}
void voidSList::eraseHead(void)
{
if (head != NULL)
{
head = head->next;
if (head == NULL)
tail = NULL;
len--;
}
}
#endif /* IMPLEMENTSLIST */
/* === Base void list ==================================================*/
//sorting
template <class T>
class SList : private voidSList
{
public:
class ite
{
public:
ite(void) { next=NULL; }
ite(const ite &start) { next=start.next;}
ite(voidSListElem *start) { next=start; }
int more(void) const { return next!=NULL; }
ite &operator=(const ite &start) { next=start.next; return *this; }
ite operator++(void)
{ if (next) next=next->next; return *this; }
ite operator++(int)
{ ite tmp=*this; if (next) next=next->next; return tmp; }
T &operator*(void) const { return *((T*)next->data); }
int operator==(ite x) { return x.next==next; }
private:
voidSListElem *next;
friend class SList<T>;
};
~SList(void) { for (ite x=first() ; x.more() ; x++) delete &(*x); }
T &append(const T &d) { return *((T*)voidSList::append(new T(d))); }
T &insert(const T &d) { return *((T*)voidSList::insert(new T(d))); }
T &head(void) const { return *((T*)voidSList::head->data); }
T &tail(void) const { return *((T*)voidSList::tail->data); }
ite first(void) const { return ite(voidSList::head); }
int empty(void) const { return voidSList::empty(); }
int size(void) const { return voidSList::size(); }
void reverse(void) { voidSList::reverse(); }
void filter(int (*)(T&));
void append(SList<T> &l)
{ for (ite x=l.first() ; x.more() ; x++) append(*x); }
T &append(ite &i, const T &d)
{ return *((T*)voidSList::append(i.next, new T(d))); }
void eraseHead(void)
{ delete ((T*)voidSList::head->data); voidSList::eraseHead(); }
void eraseAll(void)
{ for (ite x=first() ; x.more() ; x++) delete &(*x); voidSList::eraseAll();}
void map(void (*f)(T&))
{ for (ite x=first() ; x.more() ; x++) f(*x); }
};
template <class T>
void SList<T>::filter(int (*f)(T&))
{
voidSListElem *prev=NULL, *next=voidSList::head;
while (next)
{
if (f(*((T*)next->data)))
{
prev = next;
next = next->next;
}
else
{
voidSListElem *n = next->next;
if (prev == NULL)
voidSList::head = next->next;
else
prev->next = next->next;
if (voidSList::head == NULL)
voidSList::tail = NULL;
delete next->data;
next->next = NULL;
delete next;
next = n;
len--;
}
}
}
#endif /* _SLIST_H */
/* EOF */

View file

@ -1,3 +0,0 @@
include ../Makefile.def
check_PROGRAMS = bddtest
bddtest_SOURCES = bddtest.cxx

View file

@ -1,145 +0,0 @@
#include <iomanip>
#include <stdlib.h>
#include <bdd.h>
#include <iostream>
using namespace std;
static const int varnum = 5;
/**************************************************************************
Example of allsat print handler.
**************************************************************************/
void allsatHandlerPrint(char* varset, int size)
{
for (int v=0; v<size ; ++v)
{
cout << (varset[v] < 0 ? 'X' : (char)('0' + varset[v]));
}
cout << endl;
}
/**************************************************************************
allsat handler for checking that all assignments are detected.
**************************************************************************/
static bdd allsatBDD;
static bdd allsatSumBDD;
void allsatHandler(char* varset, int size)
{
bdd x = bddtrue;
for (int v=0 ; v<size ; ++v)
if (varset[v] == 0)
x &= bdd_nithvar(v);
else if (varset[v] == 1)
x &= bdd_ithvar(v);
// Sum up all assignments
allsatSumBDD |= x;
// Remove assignment from initial set
allsatBDD -= x;
}
void test1_check(bdd x)
{
double anum = bdd_satcount(x);
cout << "Checking bdd with " << setw(4) << anum << " assignments: ";
allsatBDD = x;
allsatSumBDD = bddfalse;
// Calculate whole set of asignments and remove all assignments
// from original set
bdd_allsat(x, allsatHandler);
// Now the summed set should be equal to the original set
if (allsatSumBDD == x)
cout << " Sum-OK. ";
else
cout << " Sum-ERROR. ";
// The subtracted set should be empty
if (allsatBDD == bddfalse)
cout << "Sub-OK.\n";
else
cout << "Sub-ERROR.\n";
}
void test1()
{
bdd a = bdd_ithvar(0);
bdd b = bdd_ithvar(1);
bdd c = bdd_ithvar(2);
bdd d = bdd_ithvar(3);
bdd x;
x = bddtrue;
test1_check(x);
x = bddfalse;
test1_check(x);
x = a & b | !a & !b;
test1_check(x);
x = a & b | c & d;
test1_check(x);
x = a & !b | a & !d | a & b & !c;
test1_check(x);
int i;
for (i=0 ; i<varnum ; ++i)
{
test1_check(bdd_ithvar(i));
test1_check(bdd_nithvar(i));
}
bdd set = bddtrue;
for (i=0 ; i<50 ; ++i)
{
int v = rand() % varnum;
int s = rand() % 2;
int o = rand() % 2;
if (o == 0)
{
if (s == 0)
set &= bdd_ithvar(v);
else
set &= bdd_nithvar(v);
}
else
{
if (s == 0)
set |= bdd_ithvar(v);
else
set |= bdd_nithvar(v);
}
test1_check(set);
}
}
/**************************************************************************
Main
**************************************************************************/
int main()
{
bdd_init(1000,1000);
bdd_setvarnum(varnum);
test1();
bdd_done();
return 0;
}