Under consideration for publication in Theory and Practice of Logic Programming 1 Declarative Combinatorics: Exact Combinational Circuit Synthesis in a Logic Programming Framework Paul Tarau Dept. of Computer Science and Engineering University of North Texas, Denton, Texas, USA E-mail: paul.tarau@gmail.com Brenda Luderman ACES CAD Lewisville, Texas, USA E-mail: brenda.luderman@gmail.com submitted 1 January 2003; revised 1 January 2003; accepted 1 January 2003 Abstract Logic Programming languages and combinational circuit synthesis tools share a common “combinatorial search over logic formulae” background. This paper attempts to reconnect the two fields with a fresh look at Prolog encodings for the combinatorial objects involved in circuit synthesis. While benefiting from Prolog’s fast unification algorithm and built-in backtracking mechanism, efficiency of our search algorithm is ensured by using paral- lel bitstring operations together with logic variable equality propagation, as a mapping mechanism from primary inputs to the leaves of candidate DAGs implementing a com- binational circuit specification. Using a new exact synthesizer that automatically induces minimal universal boolean function libraries, we introduce two indicators for comparing their expressiveness: the first, based on how many gates are used to synthesize all binary operators, the second based on how many N -variable truth table values are covered by combining up to M gates from the library. By applying the indicators to an exhaustive enumeration of minimal universal libraries, two dual asymmetrical operations, Logic Im- plication “⇒” and Half XOR “<” are found to consistently outperform their symmetrical counterparts, NAND and NOR. Our expressiveness metrics bring support to the conjec- ture that asymmetrical operators are significantly more expressive that their well studied symmetric counterparts, omnipresent in various circuit design tools. Keywords: logic programming and circuit design, exact combinational circuit synthesis, asymmetrical logic operators, minimal universal boolean logic libraries, minimal transistor-count circuits 1 Introduction Various logic programming applications and circuit synthesis tools share algorithmic techniques ranging from search over combinatorial objects and constraint solving to symbolic rewriting and code transformations.