Implicit Prime Cover Computation: An Overview Olivier Couderty Jean Christophe Madrey yDEC, Paris Research Laboratory 85 Avenue Victor Hugo 92500 Rueil Malmaison, FRANCE Henri Fraissez Herve Touatiy zBull Corporate Research Center Rue Jean Jaures 78340 Les Clayes-sous-bois, FRANCE Abstract A set of products is a prime cover of a Boolean function f if it is made of prime implicants of f , and if the sum of its products covers f . Finding a prime cover, an irredundant prime cover, or a minimal prime cover of a function f is a problem that arises in several elds of computer science, for instance in logic synthesis, automated reasoning, realiability analysis, and some optimization problems. This paper shows how the three prime cover computation problems mentioned above can be eciently solved using implicit manipulations of sets of products. 1 Introduction Computing a prime cover, an irredundant prime cover, or a minimal prime cover of a Boolean function has several applications in computer science. In logic synthesis, an irredundant prime cover, or better, a minimal prime cover, provides the user with an ecient 2-level logic implementation of a single or multi output Boolean function [2, 24, 14]. In reliability analysis, prime covers are a way for either exhaustively, or concisely, representing the causes of failure of a system [13, 9]. In automated reasoning, a prime cover can be either a set of minimal demonstrations, or the normalization of a formula into conjunctive normal form for further computations [12, 15, 16, 23, 18]. The problem of computing (irredundant, minimal) prime covers of Boolean functions was rst addressed by Quine in the 1950's [21]. Since that date, e orts have been done to elaborate ecient prime cover computation procedures [22, 17, 2, 24, 25, 14, 3]. For some problems, for instance for computing all the prime implicants, or for computing a minimal prime cover, the bottleneck of the procedures proposed in the past is the huge numbers of products one has to manipulate for some functions. This paper presents prime cover computation algorithms using a graph based implicit representation of sets of products that makes their complexities related to the sizes of the graphs and not anymore to the numbers of products to manipulate. The paper is divided into 6 parts. Section 2 describes the problems that will be addressed here and presents the concepts that will be used to solve them. Section 3 presents the implicit prime cover computation algorithm and Section 4 presents the implicit irredundant prime cover computation algorithm. Section 5 presents an original minimal prime cover computation procedure, whose cyclic core computation is based on set covering problem transpositions. Section 6 gives experimental results obtained with the di erent algorithms presented in the paper and discusses them. 2 De nition and Notations 2.1 Boolean Functions, Products, and Prime Covers We consider Boolean functions from the set f0; 1gn into the set f0; 1; g. We note f 1 and f the sets f ?1 (1) and f ?1 (1) [ f ?1 () respectively. An element x of f0; 1gn such that f 1 (x) = 1 is called a minterm 1 of f . We note (fxk ; fxk ) the Shannon expansion of f with respect to xk [1]. We assume the reader familiar with binary decision diagrams (BDDs) [4, 5], which are a canonical graphical representation of Boolean functions. A product is a conjunction of literals, i.e., a propositional variable xk or its negation xk . We note Pn the set of 3n products that can be built from the set of variables fx1; : : :; xng. The subset relation \" is a partial order on the set Pn. Elements of sets of products P and Q will be noted p; p0 and q; q0. A set of products P is maximal if and only if (i ) there do not exist two products p and q of P such that p q. A product p is an implicant of a Boolean function f i p f 1 . A product p is a prime implicant of f i it is a maximal element w.r.t. \" of the set of implicants of f .SA set of products P is a prime cover of the function f i it is made of prime implicants of f and f 1 ( p2P p) f 1 . This cover is irredundant i there does not exist any proper subset of P that is a prime cover of f , and it is a minimal prime cover of f if there does not exist a prime cover of f that is made of strictly less products than P . Any subset P of Pn can be partitioned in the following canonical way: P = P1k [ (fxk g Pxk ) [ (fxk g Pxk ); where P1k , Pxk , and Pxk are sets of products in which the variable xk does not occur. For example, for P = fx1x4; x2; x2x4; x2x3g, we have P12 = fx1x4 g, Px2 = fx3g, and Px2 = f1; x4g. 2.2 Implicit Representation of Sets of products A rst graph based implicit representation of sets of products, called metaproduct, has been introduced in [6]. Its eciency has been demonstrated by computing huge sets of prime implicants of Boolean functions. A much more compact representation, called IPS for Implicit Prime Set, has then been used for representing subsets of prime implicants [7]. However IPSs can only represent subsets of prime implicants, so they cannot be used when non prime sets of products need to be manipulated. More recently, S. Minato presented a generalization of IPSs, called Zero-suppressed BDDs [19]. This representation, that we will call CS for combinatorial set in the sequel, mixes the compactness of IPSs and the genericity of metaproducts. The CS representation is a graph based canonical representation of sets made of combinations of a nite number of objects. Union, intersection, and set di erence can be performed on this representation with a cost related to the size of the CSs, but not to the number of elements of the sets denoted by the CSs. All the algorithms presented here compute prime covers P by a divide and conquer strategy that consists of computing the sets P1k , Pxk , and Pxk . Since the CS of the sets P1k , Pxk , and Pxk resulting from the canonical decomposition of the set of products P with respect to the variable xk , can be obtained from the CS of P in constant or linear time, it is very easy to implement with CSs the algorithms manipulating sets of products that use such a divide and conquer strategy. 3 Prime Cover Computation In this section we show that the implicit prime implicant computation algorithm presented in [6] can be slightly transformed to obtain a prime cover computation algorithm manipulating sets of products in a implicit way. This transformation is based on the following theorems. Lemma 1 Consider a Boolean function f and the variable xk . Any prime implicant of fxk (respectively of fxk ) that is an implicant of fxk (respectively of fxk ) is a prime implicant of fxk ^ fxk , and thus a prime implicant of f . Lemma 2 Consider a Boolean function f and a set of products P . The subset of products of P that are implicants of f can be computed using the call KeepImplicants (P; f; 1) of the following algorithm. The proof of this algorithm can be found in [8]. 2 function KeepImplicants (P : SetOfProducts ; f : BooleanFunction ; k : int): SetOfProducts ; if f = 0 return ; if f = 1 or f = return P ; if P = return ; let P = KeepImplicants (P1k ; fxk ; k + 1); Q = KeepImplicants (P1k ; fxk ; k + 1); R0 = KeepImplicants (Pxk ; fxk ; k + 1); R1 = KeepImplicants (Pxk ; fxk ; k + 1); in return (P \ Q) [ (fxk g R0) [ (fxk g R1); Figure 1. The Algorithm KeepImplicants . Theorem 1 The call PrimeCover (f; 1) of the algorithm PrimeCover produces a prime cover of the Boolean function f . function PrimeCover (f : BooleanFunction ; k : int): SetOfProducts ; if f = 0 return ; if f = 1 or f = return f1g; let P 0 = PrimeCover (fxk ; k + 1) P 1 = PrimeCover (fxk ; k + 1) Q0 = KeepImplicants (P 0; fxk ) Q1 = KeepImplicants (P 1; fxk ) in return Q0 [ Q1 [ (fxkg (P 0 n Q0)) [ (fxk g (P 1 n Q1)); Figure 2. The Algorithm PrimeCover . Proof. The proof is made using induction on k. The terminal cases are obvious: the constant function 0 has no prime implicant and the functions 1 and have the unique prime implicant 1. The sets of products Q0 and Q1 are sets of prime implicants of f that do not contain the variable xk . The set fxk g (P 0 n Q0) (respectively fxk g (P 1 n Q1)) is a set of prime implicants of f that contains the literal xk (respectively xk ), and that cover the set fxk n fxk (respectively fxk n fxk ). Lemma 1 guarantees that the set Q0 is made of prime implicants of fxk ^ fxk , and so of f , and the prime implicants of this set are sucient to cover all the elements of fxk that have not yet been covered using the prime implicants of the set P 0 n Q0. Since the same is true about Q1 with respect to fxk , the resulting set of prime implicants is a cover of the function f . 2 The number of recursions necessary to compute PrimeCover (f; 1) is equal to the number of vertices of the BDD of f , thus the cost of the algorithm PrimeCover is in O(jf j). However to this cost must be added the cost of applying, at each recursion, the function KeepImplicants , which explains (see Section 6) that in somes cases, the time needed to compute a prime cover of a function using the function PrimeCover is greater than the time needed to compute all its prime implicants using the algorithm described in [6]. 4 Irredundant Prime Cover Computation This section presents the irredundant prime cover computation algorithm IrrCover . The cost of this algorithm is higher than the cost of the prime cover computation procedure presented in the previous section, but the prime cover it generates is of better quality, since it is irredundant. This algorithm is based on the recursive computation scheme proposed by E. Morreale in [20] that makes use of a divide and conquer strategy based on Shannon decomposition to compute the 3 subsets composing the canonical decomposition of the computed irredundant prime cover with respect to the variable xk . Theorem 2 Consider an incompletely speci ed Boolean function f from f0; 1gn into f0; 1; g. The call IrrCover (f 1 ; f 1 ; 1) of the following algorithm produces an irredundant prime cover of the Boolean function f . 3 function IrrCover (f 1; f 1 : BooleanFunction ; k : int) : SetOfProducts ; if f 1 = 0 return ; if f 1 = 1 return f1g; let g0 = fx1k ^ :fx1k P 0 = IrrCover (g0; fx1k ; k + 1) S c0 = p2P 0 p g1 = fx1k ^ :fx1k P 1 = IrrCover (g1; fx1k ; k + 1) S c1 = p2P 1 p h1 = (fx1k ^ :c0) _ (fx1k ^ :c1) h1 = fx1k ^ fx1k P = IrrCover (h1 ; h1; k + 1) in return P [ (fxk g P 0) [ (fxk g P 1); Figure 3. The algorithm IrrCover . Proof. The proof is made using induction on the number of variables of f . The function f 1 represents the set of elements of f0; 1gn that have to be covered, and the function f 1 represents the set of elements that can be used to build the largest possible cubes. If the function f 1 is equal to 0, there are no elements to be covered so the irredundant prime cover is empty. If the function f 1 is not 0 and f 1 is the function 1, then the irredundant prime cover made of the product 1 is sucient to cover f 1 . 1 fx k 1* 1 fx* k xk 1* fx k 1* xk g1 1 fx g0 1 h c1 1* c0 h Figure 4. Recursive computation of an irredundant prime cover. Every prime implicant of the irredundant prime cover P 0 contains at least one element of fx1k that is not in fx1k . Lemma 1 states that none of these prime implicants can be a prime implicant of f , so the literal xk must be added to each of these prime implicants in order to produce prime implicants of the function f . The same reasoning can be done for the prime implicants of the set P 1. The elements of f0; 1gn?1 that still have to be covered are in the set h1. This set if the union of the set (fx1k ^ :c0), that contains all the elements of fx1k that are not covered by any prime implicant of the set P 0, and of the set (fx1k ^ :c1), that contains all the elements of fx1k that are not covered by any prime implicant of the set P 1. The set h1 is included in the set h1, which is the subset of f0; 1gn?1 that can be used to build the largest possible cubes that cover the elements of h1. The products of the set P compose an irredundant prime cover of the function de ned by h1 and h1 , and this set is the last part of the canonical set decomposition of the computed irredundant prime cover. 2 4 The algorithm IrrCover has a cost in O(2jf j ) because at each recursion it can be necessary to create vertices. However experiences show that this algorithm is quite robust since it has been able to produce irredundant prime covers for all the functions of the MCNC benchmark [28]. 5 Minimal Prime Cover Computation The minimal prime cover computation problem, also known as the 2-level logic minimization problem, has been devoted a lot of e orts since its de nition by Quine in 1952 [21]. It consists of nding a minimal cardinality subset of the set of prime implicants of a Boolean function f that is sucient to cover f . This section presents the concepts used in a new BDD and CS based minimization procedure. 5.1 Reduction of Set Covering Problems A set covering problem is a triple hX; Y; R i, where X and Y are two sets, and R be a relation de ned on X Y . We say that y covers x when xRy. The set covering problem hX; Y; R i consists of nding a minimal cardinality subset of Y that cover all the elements of X . We say that two set covering problems are equivalent if a minimal solution of one problem can be built with a minimal solution of the other problem. We present rst present the reduction rules for iteratively reducing a set covering problem to its cyclic core [17], and then introduce an alternative to this reduction processes that takes full advantage of the CS based sets of products manipulations. 5.1.1 Dominance Relations A quasi order on a set Z is a re exive and transitive relation de ned on Z Z . The relation is de ned by (z z 0) , ((z z 0 ) ^ (z 0 z )). It is an equivalence relation on Z , so is a partial order on Z= . Let hX; Y; R i be a set covering problem. The dominance relations X and Y are de ned as follows on X and Y respectively: x X x0 , (8y 2 Y (x0Ry) ) (xRy)) y Y y0 , (8x 2 X (xRy) ) (xRy0 )) When an element y0 dominates y but the converse it not true, we will say that y0 strictly dominates y. and it will be noted y y0 . Dominance relations, that are quasi orders, can be used to reduce the size of a sets X and Y [17]. An element x0 of X dominates x i covering x0 is sucient to cover x, so x can be removed from X without modifying the set of minimal solutions. This is a bit di erent with elements of Y . The element y0 of Y dominates y i y0 covers at least all the elements of X covered by y. However, it is not true that removing y from Y does not modify the set of minimal solutions, even if y0 covers at least on element of X not covered by y, i.e., if y0 strictly dominates y. Some minimal solutions using y can be lost, but it still exists a minimal solution that uses y0 . For instance, if y and y0 cover the same elements of X , i.e. y Y y0 , then y and y0 can be chosen equivalently to build a minimal solution, provided that y and y0 are not strictly dominated by another element of Y . These elimination processes can be formalized by the following theorem. Theorem 3 The set covering problem hX; Y; R i is equivalent to the following ones: hmax (X= X ); Y; R i X hX; max (Y= Y ); R i Y In this formulation, the relation R is modi ed in the usual way on the quotient sets. Note that these problems are equivalent to hmaxX (X= X ); maxY (Y= Y ); R i, which is the smallest one, and so can be said to be the \simplest" problem amongst these 4 equivalent set covering problems. 5 5.1.2 Essentiality The third reduction rule is based on the essentiality concept. An element y of Y is essential i it is the only one that covers an element x of X . Essential elements belong necessarily to any minimal solution. So problems hX; Y; R i and hX n fx 2 X j 9y 2 E xRyg; Y n E; R i, where E is the set of essential elements of Y , are equivalent. 5.1.3 Cyclic Core The cyclic core of hX; Y; R i is the xpoint obtained after the 3 reduction processes presented above (dominance relations on X and Y , and essentiality) have been iteratively applied. In the case when this cyclic core is empty, the minimization is done, and the minimal prime cover is composed of the essential prime implicants that have been successively discovered. In the other case, the minimization can be terminated using a branch-and-bound algorithm [2, 17, 25]. 5.2 Transposing Functions In the Quine-McCluskey procedure and its optimizations [2, 17, 22, 25, 27], the classes of the partitions X= X and of Y= Y are manipulated through projections X and Y that map each class onto one of its elements. This section shows that, instead of using such projections, one can use an isomorphism that maps the classes that must be manipulated on objects whose manipulation is less costly. De nition 1 Let be a quasi order on Z . The function de ned on Z is a transposing function of i z z 0 is equivalent to (z ) (z 0). In this case, (Z= ; ) and ( (Z ); ) are isomorphic through . (Z= ; ) ?! max (Z= ) % ?1 (Z; ) & x ? y x ? y ( (Z ); ) ?! max (Z ) Using the concept of transposing function, one can reformulate the set covering problem hX; Y; R i. Theorem 4 Let X and Y be two transposing functions of X and Y respectively. Then hX; Y; R i is equivalent to: hmax (X ); max (Y ); R0 i X Y where R0 is de ned by X (x)R0 Y (y) , xRy. The relation R0 is well de ned thanks to the de nition of transposing functions. 5.3 The Minimization Procedure The idea of this minimization procedure consists of transposing the 2-level logic minimization problem hf; P; 2i into a set covering problem hQ; P; i that involves products and the subset relation. Two transposing functions Q and P of the associated dominance relations Q and P are de ned so that the reduction process described Section 5.2 transposes into a set covering problem that still involves products and the subset relation. This minimization procedure takes full advantage of the BDD and CS representations. This is done through the use of the functions Q and P compatible with Q and P respectively. These functions map the sets Q and P de ning the set covering problem onto sets of products. This means that the set covering problem matrix involes only products, and thus it can be eciently represented with CSs. This procedure allows us to compute cyclic cores of Boolean functions without computing the dominance relations, whose huge BDDs are the bottleneck of the previously available implicit cyclic core computation procedures [27]. The rst step in the procedure consists of computing the CS of the set of prime implicants P of the function f to be minimized using the algorithm presented in [6]. Then the set covering problem hf; P; 2i is transposed into a set covering problem hQ; P; i, where Q and P are sets of products represented by 6 CSs. The section then presents the functions Q and P compatible with Q and P respectively. It also shows how the essential products of P are easily computed using max Q (Q). Finally the section gives the complete cyclic core computation algorithm and emphasizes the key points that make it much more ecient that any other one. 5.4 Transposing the Minterms on Pn The rst transformation consists of nding a set covering problem hX; Y; R i equivalent to hf; P; 2i, where X and Y are sets of products and R = . Let Q be the set of the products that represent all minterms of f . Then hf; P; 2i is equivalent to hQ; P; i, where Q = fq 2 Pn j 9x 2 f fxg = qg 5.5 The Transposing Function Q After the transformation described above, we have to solve a set covering problem hQ; P; i, where Q and P are sets of products. The dominance relation Q is: q Q q0 , (8p 2 P (q0 p) ) (q p)) Theorem 5 The following function Q de ned from Q into Pn is a transposing function of Q. T Q (q) = fp2P jqpg p Proof. By de nition, we have: q Q q0 , (8p 2 P (q0 p) ) (q p)) , fp 2 P j q0 pg fp 2 P j q pg ) (Tfp2P jqpg p) (Tfp2P jq0 pg p) ) Q (q) Q (q0 ) Conversely, assume that Q (q) Q (q0 ). Since it is always true that q Q (q), we deduce that q Q (q0 ). By de nition of Q , this means that all products of P that contain q0 also contain q, i.e., q Q p0. 2 5.6 Essential Products The following result shows that the essential elements of P can be directly obtained from max Q (Q). Theorem 6 Let hQ; P; i be a covering matrix, where Q is a set of products, and P a maximal set of products. Then the set of essential products is P \ max Q (Q). Proof. Since P is maximal, P \ Q (Q) is equal to P \ max Q (Q). The product p is essential i it is the only one of P that contains a product q of Q. This implies that Q (q) = p. Conversely, assume that there exists a product q of Q such that Q (q) = Tp with p 2 P . Then if it exists p0 such that p0 6= p and p0 2 fp 2 P j q pg, we have p = Q (q) = ( fp2P jqpg p) p0, which is impossible because P is maximal. 2 5.7 The Transposing Function P Once the set of products Q0 = max Q (Q) has been for the set covering problem hQ; P; i, we obtain the new equivalent set covering problem hQ0 ; P; R0 i, with q0 R0 p i q0 = Q (q) and q p, as said in Section 5.2. It is easy to check that q p is equivalent to Q (q) p. This implies that the relation R0 is the subset relation, and so the new set covering problem is hQ0; P; i, that has exactly the same form as the rst one. The dominance relation on P is de ned by: p P p0 , (8q 2 Q (q p) ) (q p0)): Let us de ne the function C : 2f0;1gn ! Pn as follows: C (E ) = min fp 2 Pn j p E g: In other words, C (E ) is the smallest product that contains the set E . The product C (E ) is unique, because if we assume that there exist two di erent minimal products p and p0 that contain E , then p \ p0 is a smaller product that still contains E . We nally de ne the following transposing function P . 7 Theorem 7 The following function P de ned from P into Pn is a transposing function of P . P (p) = C (Sfq2Qjqpg q) Proof. Let p and p0 be two products of P . By de nition, we have: p P p0 , (8q 2 Q (q p) ) (q p0 )) , fq 2 Q j q pg fq 2 Q j q p0g ) (Sfq2Qjqpg q) (Sfq2Qjqp0 g q) ) P (p) P (p0 ) because the function C is increasing. Conversely, assume that P (p) P (p0 ). Since P (p) p is always true, we deduce P (p) p0. Also we have by de nition q P (p) for all q of Q that are contained by p. Finally, this means that all q of Q contained by p are also contained by p0 , i.e., p p0. 2 5.8 The Final Algorithm The advantage of the transposing functions Q and P is that their range are Pn, and so max Q (Q) and max P (P ) are sets of products that can be eciency represented with CSs. Ecient algorithms that directly compute these sets without building the BDDs of the dominance relations can be found in [10]. Finally, the new algorithm consists of implicitly computing the cyclic core of f by applying transformation 0 once, hf; P ; 2i !0 hffxg j x 2 f g; P ; i where the CS P of all the prime implicants of the function f to be minimized is computed using the algorithm presented in [6], and then by iteratively applying the following ordered transformations: hQ; P ; i !1 hmax (Q); P ; i Q hQ; P ; i !2 hQ ^ :E ; P ^ :E ; i with E = P ^ Q hQ; P ; i !3 hQ; max (P ); i P Transformation 0 consists of transposing the 2-level logic minimization problem into an equivalent set covering problem hQ; P ; i, where Q and P are sets of products. Transformation 1 uses the transposing function Q to reduce the size of the problem. Transformation 2 consists of computing the CS E of the set of essential products of P , as shown in Section 5.6, since at this step Q is the CS of max Q (Q). Transformation 3 uses the transposing function P to produce the new set covering problem hQ; max P (P ); R0 i, with qR0 p0 i p0 = P (p) and q p, as said in Section 5.2. One can check that q P (p) is equivalent to q p, so the relation R0 is the subset relation, as said by transformation 3. The key points of this algorithm are: the use of BDDs and CSs, that make its complexity independent of the number of minterms and prime implicants of f ; the use of transformation 0 that transposes the initial set covering problem into a new one using sets of products and the subset relation; the use of two transposing functions of the two associated dominance relations, whose ranges are set of products, allowing ecient manipulations of the sets of the new set covering problem using CSs. This procedure allows us to compute cyclic cores of Boolean functions without computing the dominance relations, whose huge BDDs are the bottleneck of the previously available implicit cyclic core computation procedures [27]. In the case when the cyclic core of the Boolean function f to be covered is empty, a minimal prime cover of f can be immediately built by choosing, for each of the essential elements that have been discovered during the xpoint computation, a prime implicant of f , with a minimal number of literals, that contains it. The resulting prime cover thus has a minimal number of prime implicants and of literals. In the case when the cyclic core of the Boolean function f to be covered is not empty, the minterms of f that still have to be covered are all the ones that are not covered by any of the prime implicants of f that have been chosen to cover the essential elements, and the set of prime implicants that can be used to cover them are any subset of the set of prime implicants of f that are sucient to contain all the products P of the cyclic core. A call to the algorithm IrrCover produces an irredundant prime cover of these minterms that is added to the already selected prime implicants to compose a locally minimal prime cover of f . Research is under way to develop a branch and bound minimization algorithm based on Bdds and CSs. 8 6 Experimental Results Table 1 and Table 2 present the experimental results that have been obtained using the di erent prime cover computation algorithms presented in this paper. Column \#Vars" of Table 1 gives, for each of the treated examples, the number of variables of the function to be covered, and column \j f j" the size of the BDD that represents this function. For each prime cover computation with method M , \#M" gives the number of elements of the prime cover, \jMj" gives the size of the CS that represents this cover, and \TM" the CPU time in seconds to compute it on an DEC3000 machine. Method AP computes all the prime implicants using the algorithm presented in [6], method PC computes a prime cover using algorithm PrimeCover , method IPC computes an irredundant prime cover, and MC a minimal prime cover using the algorithm presented in Section 5. A \" in the column \#MPC" indicates that the cyclic core of the Boolean function under treatment was empty so that it was not necessary to use the irredundant prime cover algorithm to terminate the generation of the minimal prime cover. f alupla cont bc0 bench1 ex1010 ex5 signet x7dn xparc ibm prom1 prom2 mish pdc ti jbp #Vars j f j #AP j AP j TAP #PC j PC j TPC 18 5044 25678 14983 9:1s 16013 9508 19:0s 58 1970 17060286 3818 1:0s 13209292 3217 3:1s 37 968 6597 7388 4:3s 238 625 0:6s 18 1438 5972 7804 3:6s 443 1251 0:9s 20 2761 25889 28831 15:7s 978 2392 2:0s 71 1817 2532 7984 2:1s 165 785 0:4s 47 14681 78735 37535 64:5s 13067 10672 144:5s 81 3124 566698632 39960 11:7s 123604088 4613 6:0s 114 7883 15039 18798 6:8s 4457 4413 3:9s 65 2080 1047948792 5345 1:5s 819466504 3305 3:5s 49 8359 9326 24358 11:7s 558 4071 3:5s 30 4342 2635 9208 3:4s 319 2016 1:6s 137 2937 1:12437 e +15 2435 1:0s 1:12437 e +15 2476 6:5s 56 2878 23231 11695 5:6s 2688 2796 2:9s 119 9188 836287 9230 3:8s 284985 5975 5:8s 93 11224 2496809 44638 15:2s 581823 14714 21:2s Table 1. Exhaustive Prime Implicant and Prime Cover Computation Results. f #IPC j IPC j TIPC #MPC j MPC j TMPC 2144 2752 12:2s 2144 2752 76:5s 317 672 1:6s 229 603 6:0s 292 1081 3:1s 177 658 35:3s 200 946 0:8s 162 867 32:3s 496 1980 2:7s 456 1978 343:9s 89 1170 1:5s 87 1147 111:2s 121 390 8:3s 119 382 248:5s 622 725 2:9s 622 651 75:3s 307 4827 5:0s 254 3853 38:2s 173 426 0:9s 173 426 6:3s 609 6038 6:4s 472 3997 83:1s 476 3583 3:1s 446 3463 105:2s 82 296 0:9s 82 296 5:2s 272 1864 2:4s 156 1174 91:3s 377 2579 3:5s 220 2388 39:6s 129 1631 4:0s 130 1568 70:0s Table 2. Irredundant and Minimal Prime Cover Computation Results. alupla cont bc0 bench1 ex1010 ex5 signet x7dn xparc ibm prom1 prom2 mish pdc ti jbp These tables show that in all cases the sizes of the prime covers generated using the algorithms presented here are much smaller than the numbers of prime implicants of the Boolean functions under treatment, and that in most cases they provide users with a very concise representation of the function under treatment. In all cases the CPU times needed to compute the minimal prime covers are larger than the CPU times needed to compute the irredundant prime covers, though these irredundant prime covers are in most cases nearly as good as the minimal prime covers. 9 7 Conclusion In this paper we have presented a uni ed set of algorithms dealing with implicit prime cover computation. Given the BDD of a Boolean function, the graph representation of all its prime implicants, of a prime cover, of an irredundant prime cover, and of a minimal prime cover, is computed with a complexity not related with the number of products to be manipulated. The eciency of these algorithms have been demonstrated by treating functions that are out of reach of any other known technique. Applications of these algorithms to speci c problems will be presented in a forthcoming paper. References [1] S. B. Akers, \Binary Decision Diagrams", IEEE Trans. on Computers, Vol 27, pp. 509{516, 1978. [2] R. E. Brayton, G. D. Hachtel, C. T. McMullen, A. L. Sangiovanni-Vincentelli, Logic Minimization Algorithms for VLSI Synthesis, Kluwer Academic Publishers, 1984. [3] R. K. Brayton, P. C. McGeer, J. Sanghavi, \A New Exact and Heuristic Minimizer for Two-Level Logic Synthesis", in Proc. of Int'l Symposia on Information Sciences, Fukuoka, Japan, July 1992. [4] R. E. Bryant, \Graph-Based Algorithms for Boolean Functions Manipulation", IEEE Trans. on Computers, Vol C35, N0 8, pp. 677{692, August 1986. [5] R. E. Bryant, \Symbolic Boolean Manipulations with Ordered Binary Decision Diagrams", ACM Computing Surveys, Vol 24, N0 3, pp. 293{318, September 1992. [6] O. Coudert, J. C. Madre, \Implicit and Incremental Computation of Primes and Essential Primes of Boolean Functions", in Proc. of 29th DAC, Anaheim CA, USA, June 1992. [7] O. Coudert, J. C. Madre, \A New Graph Based Prime Computation Technique", in New Trends in Logic Synthesis, T. Sasao Editor, Kluwer Academic Publishers, 1992. [8] O. Coudert, J. C. Madre, \Towards a Symbolic Logic Minimization Algorithm", in Proc. of VLSI Design'93, Bombay, India, January 1993. [9] O. Coudert, J. C. Madre, \Fault Tree Analysis: 1020 Prime Implicants and Beyond", in Proc. of Annual Reliability and Maintainability Symposium, pp. 240{245, Atlanta GA, USA, January 1993. [10] O. Coudert, J. C. Madre, H. Fraisse, \A New Viewpoint on Two-Level Logic Minimization", in Proc. of 30th DAC, Dallas TX, USA, June 1993. [11] R. B. Cutler, S. Muroga, \Useless Prime Implicants of Incompletely Speci ed Multiple-Output Switching Functions", in Int'l Journal of Computer and Information Sciences, Vol. 9, No. 4, 1980. [12] J. Doyle, \A Truth Maintenance System", in Arti cial Intelligence, 12:231-271, 1979. [13] D. F. Hasl, \Advanced Concepts in Fault Tree Analysis", in Proc. of System Safety Symposium, Seatle, USA, Juin 1965. [14] S. J. Hong, S. Muroga, \Absolute Minimization of Completely Speci ed Switching Functions", in IEEE Trans. on Computers, Vol 40, pp. 53{65, 1991. [15] J. De Kleer. An Assumption-based TMS. Arti cial Intelligence, 28:127-162, 1986. [16] J. De Kleer, B. C. Williams, \Diagnosing Multiple Faults", in Arti cial Intelligence, Vol 32. pp. 97{ 130, 1987. [17] E. L. Jr. McCluskey, \Minimization of Boolean Functions", in Bell System Techniques, Vol 35, pp. 1417{1444, 1959. [18] J. C. Madre, O. Coudert, \A Logically Complete Reasoning Maintenance System Based on Logical Constrain Solver", in Proc. of IJCAI'91, Sydney, Australia, August 1991. [19] S. Minato, \Zero-Supressed BDDs for Set Manipulation in Combinatorial Problems", in Proc. of 30th DAC, Dallas TX, June 1993. [20] E. Morreale, \Recursive Operators for Prime Implicant and Irredundant Normal Form Determination", IEEE Trans. on Computers, 1970. [21] W. V. O. Quine, \The problem of Simplifying Truth Functions", in American Mathematics Monthly, Vol. 59, pp. 521{531, 1952. [22] W. V. O. Quine, \On Cores and Prime Implicants of Truth Functions", in American Mathematics Monthly, Vol. 66, 1959. 10 [23] R. Reiter, J. de Kleer, \Foundations for Assumption-Based Truth Maintenance Systems" in Proc. of AAAI Nat'l Conference'87, pp. 183-188, Seattle, July 1987. [24] R. L. Rudell, Multiple-Valued Logic Minimization for PLA Synthesis, UCB Report M86/65, 1986. [25] R. L. Rudell, A. L. Sangiovanni-Vincentelli, \Multiple Valued Minimization for PLA Optimization", in IEEE Trans. on CAD, Vol 6, No 5, pp. 727{750, September 1987. [26] T. Sasao, \An Application of Multiple-Valued Logic to a Design of Programmable Logic Arrays", Proc. of Int'l Symposium on Multiple-Valued Logic, 1978. [27] G. M. Swamy, P. McGeer, R. K. Brayton, \A Fully Quine-McCluskey Procedure using BDD's", Report #UCB/ERL M92/127, November 1992. Also in Proc. of Int'l Workshop on Logic Synthesis, Lake Tahoe CA, May 1993. [28] S. Yang, Logic Synthesis and Optimization Benchmarks User Guide, Microelectronics Center of North Carolina, January 1991. 11