<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:space="preserve" xmlns="http://www.tei-c.org/ns/1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.tei-c.org/ns/1.0 https://raw.githubusercontent.com/kermitt2/grobid/master/grobid-home/schemas/xsd/Grobid.xsd"
 xmlns:xlink="http://www.w3.org/1999/xlink">
	<teiHeader xml:lang="en">
		<fileDesc>
			<titleStmt>
				<title level="a" type="main">On Conversions from CNF to ANF</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Jan</forename><surname>Horáček</surname></persName>
							<email>jan.horacek@uni-passau.de</email>
							<affiliation key="aff0">
								<orgName type="department">Faculty of Informatics and Mathematics</orgName>
								<orgName type="institution">University of Passau</orgName>
								<address>
									<postCode>D-94030</postCode>
									<settlement>Passau</settlement>
									<country key="DE">Germany</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Martin</forename><surname>Kreuzer</surname></persName>
							<email>martin.kreuzer@uni-passau.de</email>
							<affiliation key="aff0">
								<orgName type="department">Faculty of Informatics and Mathematics</orgName>
								<orgName type="institution">University of Passau</orgName>
								<address>
									<postCode>D-94030</postCode>
									<settlement>Passau</settlement>
									<country key="DE">Germany</country>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">On Conversions from CNF to ANF</title>
					</analytic>
					<monogr>
						<imprint>
							<date/>
						</imprint>
					</monogr>
					<idno type="MD5">67830C9477C3EECBBA99B0E827892284</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2023-03-19T15:42+0000">
					<desc>GROBID - A machine learning software for extracting information from scholarly documents</desc>
					<ref target="https://github.com/kermitt2/grobid"/>
				</application>
			</appInfo>
		</encodingDesc>
		<profileDesc>
			<textClass>
				<keywords>
					<term>conjunctive normal form</term>
					<term>algebraic normal form</term>
					<term>Boolean polynomial</term>
					<term>Boolean Gröbner basis</term>
					<term>SAT solving</term>
				</keywords>
			</textClass>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>In this paper we discuss conversion methods from the conjunctive normal form (CNF) to the algebraic normal form (ANF) of a Boolean function. Whereas the reverse conversion has been studied before, the CNF to ANF conversion has been achieved predominantly via a standard method which tends to produce many polynomials of high degree. Based on a block-building mechanism, we design a new blockwise algorithm for the CNF to ANF conversion which is geared towards producing fewer and lower degree polynomials. In particular, we look for as many linear polynomials as possible in the converted system and check that our algorithm finds them. Experiments show that the ANF produced by our algorithm outperforms the standard conversion in "real life" examples originating from cryptographic attacks.</p></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="en">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="1">Introduction</head><p>The Boolean satisfiability problem (SAT) and polynomial system solving over a finite field (PSS) are two fundamental problems of propositional logic and computational commutative algebra, respectively. The decision versions of these problems, i.e., whether there exists a satisfying assignment for a Boolean formula or a common zero for a polynomial system over a finite field, are known to be NP-complete. In other words, both problems are in NP and reducible to each other in polynomial time. For practical reasons, the search versions of these problems are very important, i.e., to find one or all satisfying assignments, or to find one or all common zeros.</p><p>Efficient conversion methods for transforming a Boolean polynomial system to a SAT instance have been studied carefully. Some of them are tailored to algebraic attacks in cryptography (see <ref type="bibr" target="#b2">[3]</ref> and <ref type="bibr" target="#b15">[16]</ref>). Implementations of these conversions can be found for instance in the computer algebra systems Sage (see <ref type="bibr" target="#b20">[21]</ref>) and ApCoCoA (see <ref type="bibr" target="#b19">[20]</ref>). In this paper we focus on the reverse direction, i.e., the transformation of a SAT instance given by a set of clauses of a formula in conjunctive normal form (CNF) to a set of Boolean polynomials in algebraic normal form (ANF). The standard way to perform this conversion clause by clause has been known for a long time (see for instance <ref type="bibr" target="#b14">[15]</ref>). However, more efficient methods which try to combine several clauses into one Boolean polynomial, preferably a short polynomial of low degree, have been considered only more recently and cursorily (see for instance <ref type="bibr" target="#b6">[7]</ref>), mostly in the context of integrating Gröbner basis techniques into the various stages of a SAT solver.</p><p>Our motivation for studying more efficient methods for the CNF to ANF conversion derives from the attempt to solve large instances of the SAT or PSS problem which originate from cryptographic attacks. Rather than using some heuristics to call a Gröbner basis solver for supporting a SAT solver at selected points in the CDCL algorithm (for example, as in <ref type="bibr" target="#b21">[22]</ref> and <ref type="bibr" target="#b9">[10]</ref>), we are running a SAT solver and an algebraic solver in parallel and let them interchange information. For instance, for algebraic fault attacks targeting the Small-Scale AES cryptosystem, SAT clauses and Boolean polynomials have been derived both from a VDHL implementation of the circuit and from a functional model in <ref type="bibr" target="#b12">[13]</ref>. It has been observed that a combination of the SAT solver antom (cf. <ref type="bibr" target="#b17">[18]</ref>) and a border basis solver (cf. <ref type="bibr" target="#b13">[14]</ref>) outperforms the individual solvers, if the communication between the processes provides clauses resp. Boolean polynomials which are most likely to aid the solver. Hence we are most interested in CNF to ANF conversions which yield many short linear or quadratic polynomials.</p><p>To achieve this goal we proceed as follows. In Section 2 we recall the basic definitions and notations regarding the ring of Boolean polynomials and propositional logic. In Section 3 we recall some conversion methods from ANF to CNF, and in Section 4 we briefly recap the standard conversion from CNF to ANF. Our main algorithm for the CNF to ANF conversion is developed in Section 5. The idea is to combine all clauses which share a certain number of variables (irrespective of their sign) into a block of clauses. Using an overlapping number m, we introduce an efficient algorithm for producing these m -blocks. Then, in the blockwise conversion algorithm, these m -blocks are converted individually using the standard conversion and for each converted block of polynomials we compute a reduced Gröbner basis. As it turns out, the Gröbner bases contain many more low degree polynomials than a standard conversion would have provided us with. We also show that the computation of these reduced Gröbner bases encompasses algebraic versions of the usual DPLL rules of inference (cf. Prop. 4).</p><p>The task of finding as many linear polynomials as possible in the ANF conversion of a block of clauses is examined further in Section 6. Based on the structure of the CNF transformation of a linear polynomial, we derive a combinatorial test which checks whether a block of clauses contains sufficiently many clauses that can be extended suitably to cover the transformation of a linear polynomial (cf. Prop. 7). This test is implemented in Algorithm 4. However, as Prop. 8 shows, these linear polynomials are found also by the calculation of the blockwise reduced Gröbner bases. Thus the blockwise conversion method given in Algorithm 3 automatically contains all linear polynomials which can be deduced from the set of clauses by simple combinatorial methods. An amusing consequence is that sometimes the double conversion from ANF to CNF and back is sufficient to solve the Boolean polynomial system, because the block-wise conversion algorithm produces enough linear polynomials to allow Gaußian elimination to work.</p><p>The final section contains some experiments in which we compare the new blockwise conversion algorithm to the standard CNF to ANF conversion. In many examples originating from cryptographic attacks and factorization problems, the new conversion method improves the input for the algebraic solver substantially.</p><p>Unless stated otherwise, we use the basic definitions and notation of <ref type="bibr" target="#b16">[17]</ref>.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2">Background</head><p>In this section we recall basic definitions and known results and introduce useful notation. In the following we let F 2 be the field of two elements and</p><formula xml:id="formula_0">F 2 [x 1 , . . . , x n ] a polynomial ring over F 2 . The ideal F = x 2 1 +x 1 , . . . , x 2 n +x n is called the field ideal, since it is the vanishing ideal of F n 2 . The ring B n = F 2 [x 1 , . . . ,</formula><p>x n ]/ F is called the ring of Boolean polynomials in the indeterminates x 1 , . . . , x n . We assume that its elements are represented by polynomials whose support consists only of squarefree terms. Boolean polynomials in this shape are said to be in algebraic normal form (ANF). An arbitrary polynomial f can be transformed to ANF by computing its normal form NF F (f ) with respect to the field ideal. Notice that we use " + " instead of "⊕" for addition in F 2 .</p><p>Given a set S = {f 1 , . . . , f s } ⊆ B n , we define the set of F 2 -rational zeros of S by Z(S) = {a ∈ F n 2 | f (a) = 0 for all f ∈ S}. In fact, the set Z(S) does not depend on the particular choice of generators of the ideal I = f 1 , . . . , f s , but only on the ideal itself. Thus we can write Z(I) . Boolean polynomials correspond 1-1 to Boolean functions. The only Boolean polynomial f with Z(f ) = ∅ is the constant polynomial 1 .</p><p>Solvers that allow us to describe the set of zeros of a given ideal by algebraic techniques are referred to as algebraic solvers. We mention here the Boolean Gröbner Basis Algorithm [5, Ch. 2], the Boolean Border Basis Algorithm <ref type="bibr" target="#b13">[14]</ref>, the XL/XSL algorithm and its variants <ref type="bibr" target="#b7">[8]</ref>, and ElimLin <ref type="bibr" target="#b8">[9]</ref>. For the (Boolean) Gröbner Basis Algorithm, the library PolyBoRi <ref type="bibr" target="#b5">[6]</ref> and the FGb library <ref type="bibr" target="#b11">[12]</ref> provide efficient actual implementations of such solvers. The basic principle of algebraic solvers is to generate new polynomials in the ideal and simplify the newly derived polynomials by the old ones. For the theory of Boolean Gröbner bases, we refer to <ref type="bibr" target="#b4">[5,</ref><ref type="bibr">Ch. 2]</ref>. Every ideal I ⊆ B n can be represented by an ideal I ⊆ F 2 [x 1 , . . . , x n ] such that F ⊆ I . Hence Boolean Gröbner bases correspond to Gröbner bases of ideals containing the field equations.</p><p>Every propositional logic formula ϕ can be encoded in conjunctive normal form (CNF). A clause is a set of literals, i.e. logical variables X i or their negation Xi . A set of clauses</p><formula xml:id="formula_1">C = {L 1,1 , . . . , L 1,n1 }, . . . , {L k,1 , . . . , L k,n k } corresponds to the logic formula ϕ = (L 1,1 ∨• • •∨L 1,n1 )∧• • •∧(L k,1 ∨• • •∨L k,n k ) .</formula><p>We always assume that ϕ is in CNF and given by its set of clauses C . This allows us to identify ϕ and C . The algorithms that search for a satisfying assignment for C are called SAT solvers. In order to find the whole solution space, so-called #SAT solvers are used. Most modern SAT solvers are based on a CDCL procedure, i.e. on resolution with the addition of clause learning. They generate new clauses, called conflict clauses, that guide the computation. Together with non-chronological backtracking and highly optimized data structures, they are very powerful tools. Two standard implementations of the SAT algorithm are MiniSAT <ref type="bibr" target="#b10">[11]</ref> and Glucose <ref type="bibr" target="#b0">[1]</ref>.</p><p>To distinguish variables in a Boolean polynomial ring and in formulae, we use lower-case letters for variables in Boolean polynomials and capital letters for the corresponding logical variables. Moreover, we identify True ≡ 1 and False ≡ 0 . Definition 1. Let S ⊆ B n be a set of Boolean polynomials and C a set of clauses in the logical variables X 1 , . . . , X n . We say that C is a logical representation of S , resp. S is an algebraic representation of C , if and only if</p><formula xml:id="formula_2">SAT(C) = Z(S) .</formula><p>The algebraic representation of S is not unique in general. On the other hand, if #S = 1 , the representation is unique. Namely, one Boolean polynomial f represents the unique Boolean function F n 2 → F 2 mapping a → 0 if a ∈ SAT(C) and a → 1 otherwise. In this case, we say that f is the standard algebraic representation of C .</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3">Conversions from ANF to CNF</head><p>First of all, let us discuss what kinds of ANF systems are well suited to converting them to SAT. Note that if the system is rather dense, it is probably better to solve it by algebraic solvers or even by brute force. A typical example where algebraic solvers outperform SAT solvers is solving a dense linear system. On the other hand, the memory consumption of SAT solvers is kept under control, and therefore they tend to be faster for sparse constraint inputs, for which algebraic solvers may have a huge space consumption. (For more details and experiments, see <ref type="bibr" target="#b1">[2]</ref>, Ch. 13.)</p><p>In this section we recall some efficient conversion methods for a set of Boolean polynomials in ANF (i.e., XOR of ANDs) to a Boolean formula in CNF (i.e., AND of ORs). There are basically two types of such conversions. Both of them convert only one Boolean polynomial at a time. The first conversion method does not introduce new auxiliary variables, creating a sparse representation, whereas the second one does and results in a dense representation.</p><p>The sparse conversion is truth-based and uses the assumption that the input polynomials are rather sparse (i.e. they do not have many terms and variables). Thus one can go trough all possible assignments for all logical variables contained in the polynomial to construct the sparse CNF.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Example 1. Consider the truth table of the polynomial</head><formula xml:id="formula_3">f (x 1 , x 2 ) = x 1 x 2 +x 2 +1 . x 1 x 2 f 0 0 1 0 1 0 1 0 1 1 1 1</formula><p>For each assignment that yields True, we construct one clause that eliminates this particular assignment. Thus the set of clauses C = {X 1 , X 2 }, { X1 , X 2 }, { X1 , X2 } is the logical representation of the polynomial f . Note that the set {x 1 , x 2 + 1} is an algebraic representation of C as well, so the representations are not uniquely determined.</p><p>Dense conversion methods (see <ref type="bibr" target="#b2">[3]</ref>, <ref type="bibr" target="#b15">[16]</ref>) introduce new variables. Foremost, the polynomial f ∈ B n is linearized. For each of its terms of degree greater than one, we introduce a new auxiliary indeterminate t and encode the resulting binomial in CNF. E.g., we convert x 1 x 2 x 3 by encoding t + x 1 x 2 x 3 to the clauses {X 1 , T }, {X 2 , T }, {X 3 , T } , { X1 , X2 , X3 , T } . After this step, we are left with (possibly long) linear polynomials. We split them into smaller ones by introducing further auxiliary indeterminates according to a predefined cutting number r . To the resulting shorter linear polynomials we apply the sparse conversion.</p><p>Example 2. Let r = 3 . We cut the linear polynomial x 1 + x 2 + • • • + x 5 into two polynomials x 1 + x 2 + x 3 + y and y + x 4 + x 5 . Note that we have introduced one new indeterminate y here. For instance, when we convert x 1 + x 2 + x 3 + x 4 , we get the clauses</p><formula xml:id="formula_4">{ X1 , X 2 , X 3 , X 4 }, {X 1 , X2 , X 3 , X 4 }, {X 1 , X 2 , X3 , X 4 }, {X 1 , X 2 , X 3 , X4 }, { X1 , X2 , X3 , X 4 }, { X1 , X2 , X 3 , X4 }, { X1 , X 2 , X3 , X4 }, {X 1 , X2 , X3 , X4 }.</formula><p>Both conversions suffer from the problem that breaking the XOR structure in the ANF tends to introduce many auxiliary indeterminates or many new clauses.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4">The Standard Conversion from CNF to ANF</head><p>The standard conversion from CNF to ANF converts each clause of C to one Boolean polynomial. It has been known for a long time (cf. <ref type="bibr" target="#b14">[15]</ref>). The detailed description is given in Algorithm 1.</p><p>Proposition 1. Algorithm 1 outputs a system of Boolean polynomials S such that S is an algebraic representation of C .</p><formula xml:id="formula_5">Proof. Let c = {L 1 , L 2 , . . . , L m } be a clause of C . The assignment (a 1 , . . . , a n ) ∈ F n 2 satisfies c if and only if the polynomial f = 1 • • • m vanishes at the point (a 1 , . . . , a n ) , where i = x i + 1 for L i = X i and i = x i for L i = Xi .</formula><p>Let us apply this algorithm to a concrete case.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Algorithm 1 (Standard CNF to ANF Conversion)</head><p>Input: A set of clauses C in logical variables X 1 , . . . , X n . Output: A set S ⊆ B n such that S is an algebraic representation of C .</p><formula xml:id="formula_6">1: S := ∅ 2: foreach c in C do 3: f := 1 4: foreach L in c do 5: if L = Xi is positive then 6: f := f • (xi + 1) 7: else if L = Xi is negative then 8: f := f • (xi) 9:</formula><p>end if 10:</p><p>end foreach 11:</p><formula xml:id="formula_7">S := S ∪ {f } 12: end foreach 13: return S Example 3. Given the set of clauses {{X 1 , X 2 }, { X1 , X 2 , X 3 }, {X 4 , X 5 }, {X 1 , X2 , X 3 }, { X1 , X2 , X3 }, {X 4 , X5 } , the Standard CNF to ANF Conversion yields the following results: {X 1 , X 2 } → x 1 x 2 + x 1 + x 2 + 1 { X1 , X 2 , X 3 } → x 1 x 2 x 3 + x 1 x 2 + x 1 x 3 + x 1 {X 4 , X 5 } → x 4 x 5 + x 4 + x 5 + 1 {X 1 , X2 , X 3 } → x 1 x 2 x 3 + x 1 x 2 + x 2 x 3 + x 1 { X1 , X2 , X3 } → x 1 x 2 x 3 {X 4 , X5 } → x 4 x 5 + x 5</formula><p>Clearly, Algorithm 1 performs at most n • #C multiplications in B n . Thus it is of polynomial time complexity. Notice that its output for a single input clause c is the standard algebraic representation of c. Moreover, deg(f ) equals the length of the clause c in Step 12 of the algorithm. Hence even a small set of clauses may be converted to a polynomial system containing high-degree polynomials. The degree and the length of the support of these polynomials can be viewed as an indicator of their usefulness. It follows that such a conversion does, in general, not give an encoding which is useful for further applications. In particular, converting a simple Boolean system S to CNF using the sparse strategy and back to polynomials by Algorithm 1, gives us a rather denser and higher-degree system Ŝ . Even if the computation of a Gröbner basis of the ideal S may be done in seconds, a Gröbner basis of the ideal Ŝ can take hours to compute.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5">A Blockwise Conversion from CNF to ANF</head><p>Let C be a set of clauses representing a propositional logic formula in CNF. First of all, we group certain clauses in C together using the following definitions. The elements of the set B returned by Algorithm 2 will be called the mblocks of C . Let us apply Algorithm 2 in some easy cases.</p><formula xml:id="formula_8">Example 4. Let C = {c 1 , c 2 , c 3 } with c 1 = {X 1 , X 2 , X 3 , X 4 } , c 2 = {X 1 , X 2 }</formula><p>and c 3 = {X 3 , X 4 } , and let m = 2 . Then the entire set C is one 2 -block. Notice that this block does not correspond to a complete subgraph of G m,C , because the edge (c 2 , c 3 ) is missing.</p><p>Example 5. In the setting of Example 3, Algorithm 2 calculates the following two 2-blocks.</p><formula xml:id="formula_9">{X 1 , X 2 } { X1 , X 2 , X 3 } {X 4 , X 5 } {X 1 , X2 , X 3 } { X1 , X2 , X3 } {X 4 , X5 } →     {X 1 , X 2 } { X1 , X 2 , X 3 } {X 1 , X2 , X 3 } { X1 , X2 , X3 }     , {X 4 , X 5 } {X 4 , X5 }</formula><p>Let σ be a degree compatible term ordering. We say that a set of Boolean polynomials G ⊆ B n is LT σ -interreduced if LT σ (g) = LT σ (g ) for all g, g ∈ G with g = g . Given an arbitrary set of Boolean polynomials G ⊆ B n , we can LT σ -interreduce G via Gaußian elimination on the coefficient matrix of G, where its columns are sorted from biggest to the smallest term w.r.t. σ . Now we are ready to describe the main Algorithm 3.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Algorithm 3 (Blockwise CNF to ANF Conversion)</head><p>Input: A set of clauses C in logical variables X 1 , . . . , X n , a degree compatible term ordering σ , and an overlapping number m ∈ N. Output: A set S σ,m ⊆ B n such that S σ,m is an algebraic representation of C . Requires: Algorithm 1 and 2, a reduced Boolean Gröbner basis algorithm. Let G be the reduced Boolean σ -Gröbner basis of the ideal Q , i.e., the reduced Boolean Gröbner basis with respect to the term ordering σ . 7:</p><p>S := S ∪ G 8: end foreach 9: Let Sσ,m be an LTσ -interreduced F2 -basis of S F 2 such that its coefficient matrix w.r.t. σ is in reduced row echelon form. 10: return Sσ,m</p><p>It is difficult to give a meaningful upper bound for the time complexity of this algorithm, since it involves a number of Gröbner basis calculations. As we shall see in the next section, if one of the sets in B contains a complete signed set of clauses (see Definition 3), the conversion will contain a linear polynomial. In this case, the corresponding Gröbner basis will be found rather quickly. As one can infer from the tables in the last section, this happens a lot in practically relevant cases. But, of course, it is clear that one can construct special sets of clauses for which the Gröbner basis calculation is particularly expensive. </p><formula xml:id="formula_10">    {X 1 , X 2 } → x 1 x 2 + x 1 + x 2 + 1 { X1 , X 2 , X 3 } → x 1 x 2 x 3 + x 1 x 2 + x 1 x 3 + x 1 {X 1 , X2 , X 3 } → x 1 x 2 x 3 + x 1 x 2 + x 2 x 3 + x 1 { X1 , X2 , X3 } → x 1 x 2 x 3     → x 2 x 3 + x 2 + x 3 + 1 x 1 + x 2 + x 3 {X 4 , X 5 } → x 4 x 5 + x 4 + x 5 + 1 {X 4 , X5 } → x 4 x 5 + x 5 → x 4 + 1</formula><p>As we can see, the output is a set of three polynomials of degrees 1,1,2 instead of the six polynomials of degrees 2,2,2,3,3,3 in Example 3.</p><p>In the following proposition we study Step 6 of Algorithm 3 in more detail. Its Claims (1)-( <ref type="formula">4</ref>) are algebraic versions of the one-literal, subsumption, cleanup, and resolution rules of DPLL. In this sense, the Gröbner basis algorithm can be interpreted as performing simple logical reasoning. Proposition 4. In the setting of Algorithm 3, let B = {c 1 , . . . , c k } be a set of clauses. Let Q = {q 1 , . . . , q k } be the set of Boolean polynomials such that q i is the standard algebraic representation of c i for i = 1, . . . , k . Let G be the reduced Boolean σ -Gröbner basis of the ideal I = Q .</p><p>(1) Let c i , c j ∈ B be clauses such that c i is a proper subclause of c j . Then G is equal to the reduced Boolean σ -Gröbner basis of Q \ {q j } .</p><p>(2) Let L be a literal and assume that c j = {L} is an element of B . Let {q i1 , . . . , q is } be the set of all clauses in B different from q j and containing the literal L. Then G is the reduced Boolean σ -Gröbner basis of Q \ {q i1 , . . . , q is } . (3) Let c i ∈ B be of the form c i = c ∪{X j , Xj } for some clause c and a logical variable X j . Then G is the reduced Boolean σ -Gröbner basis of Q \ {q i } . (4) Assume that c i , c j ∈ B satisfy c i = w ∪ {X e } and c j = w ∪ { Xe } for some logical variable X e and clauses w, w . Let r = w ∪ w be the resolvent of c and c on the variable X e . Then the standard algebraic representation of r is the S-polynomial of q i , q j . ( <ref type="formula">5</ref>) We have</p><formula xml:id="formula_11">SAT(B) = ∅ if only if G = {1}. (6) Let #B ≥ 2 .</formula><p>If there exists a clause c j ∈ B such that var(c ) ⊆ var(c j ) holds for all c ∈ B , then we have max{deg(g) | g ∈ G} &lt; max{deg(q) | q ∈ Q} . (7) Let f ∈ I be such that there exists a clause c for which f is the standard algebraic representation of c. If there exists a Boolean polynomial g ∈ G such that LT σ (f ) = LT σ (g), then f = g .</p><p>Proof.</p><p>(1) From the inclusion c i ⊂ c j , we know that q j is a multiple of q i . Hence q j is reduced to zero by q i and the claim follows.</p><p>(2) All polynomials in {q i1 , . . . , q is } are multiples of q j and thus are reduced to zero. (3) The standard algebraic representation of c i is q i = x j (x j + 1)f for some variable x j and a polynomial f . Thus the Boolean polynomial q i satisfies q i = (x 2 j + x j )f = 0 in B n and the claim follows. (4) The standard algebraic representation of c i resp. c j is q i = x e f resp. q j = (x e + 1)g for some polynomials f, g . The S-polynomial of q i , q j is equal to f g = g(x e f ) + f (x e + 1)g . ( <ref type="formula">5</ref>) We know that the variety of Q over the algebraic closure of F 2 is equal to Z(Q) , because we assume that the field equations are included in the ideal. Hence the claim follows from the strong version of Hilbert's Nullstellensatz. (6) If q j is the only polynomial with the maximal degree in Q, then there exists c i ∈ B such that c i ⊂ c j and we apply Claim (1). If there is another q ∈ Q with the maximal degree in Q different from q j , then LT σ (q) = LT σ (q j ) . Hence we drop the degree at least by one after the LT-reduction. <ref type="bibr" target="#b6">(7)</ref> We have f = j=1 (x ij + a j ) for some a j ∈ F 2 and for some number .</p><p>Because LT σ (f ) = LT σ (g) , we know that LT σ (f ) is minimal w.r.t. division in LT σ (I) . All terms in f divide LT σ (f ) , and so f can not be further reduced. Thus f is contained in some reduced Boolean σ -Gröbner basis of the ideal I . The claim follows form the uniqueness of the reduced Boolean σ -Gröbner basis.</p><p>Notice that Claim (6) can also be found in [5, Thm. 5.3.5.].</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="6">Conversion to Linear Polynomials</head><p>The most valuable polynomials for algebraic solvers in the result of a CNF to ANF conversion algorithm are the linear ones. Therefore we now focus on the problem of identifying sets of clauses containing a linear polynomial in their algebraic representation. Definition 3. A set of clauses, all of which have the same length, which consists of all possible clauses with either only positive or only negative sign is called a complete signed set of clauses.</p><p>A complete signed set of clauses forms a complete subgraph of the graph G ,C (see the definition in the proof of Proposition 2) having only positive, or only negative clauses of length as nodes. A complete signed set of clauses of length consists of 2 −1 clauses. Proposition 5. Let K be a complete signed set of clauses with positive (resp. negative) sign and var(K) = {X i1 , . . . , X i }. Then</p><formula xml:id="formula_12">x i1 + • • • + x i + 1 (resp. x i1 + • • • + x i ) is the standard algebraic representation of K . Proof. Let K be the sparse conversion of f = x i1 + • • • + x i + 1 .</formula><p>From the truth table of f it is easy to see that K is a complete signed set of clauses with positive sign in the variables var(K) . Complete signed sets of clauses with positive sign are uniquely determined by their set of variables. Thus we get K = K . The negative case follows analogously. Proof. Claim (a) can be easily proven by comparing a truth table for ϕ and (ϕ ∨ ψ) ∧ (ϕ ∨ ψ) . The other claims are immediate consequences of (a).</p><p>The following example illustrates this proposition.</p><formula xml:id="formula_13">Example 7. Let B = {X 1 , X 2 }, { X1 , X 2 , X 3 }, {X 1 , X2 , X 3 }, { X1 , X2 , X3 } . The first clause in B is equivalent to the two clauses {X 1 , X 2 , X 3 } , {X 1 , X 2 , X3 } .</formula><p>In view of this, we have covered all four possible combinations for negative signed clauses of length 3 . Indeed, Algorithm 3 converts B into x 1 + x 2 + x 3 and x 2 x 3 + x 2 + x 3 + 1 .</p><p>Proposition 6 leads to the following combinatorial test for checking whether a set of clauses B converts to a linear polynomial.  B − := ∅ 5:</p><p>for j = 1, . . . , k do 6:</p><formula xml:id="formula_14">B + := B + ∪ B + j,V 7: B − := B − ∪ B − j,V</formula><p>8: end for 9:</p><p>if #B + = 2 −1 then 10:</p><formula xml:id="formula_15">L := L ∪ {xi 1 + • • • + xi + 1} 11: end if 12: if #B − = 2 −1 then 13: L := L ∪ {xi 1 + • • • + xi } 14:</formula><p>end if 15: end foreach 16: Let L be an LTσ -interreduced F2 -basis of L (2) Assume that Algorithm4( C ) has discovered a set of clauses K which contains a complete signed block after extension. Using Algorithm2(C , m), compute a pair (B, T ) . If # var(K) = 1 , then the corresponding linear polynomial will be derived from a clause in T and we are done. If # var(K) ≥ 2 , then K will appear in one B ∈ B , and we can use <ref type="bibr" target="#b0">(1)</ref> .</p><p>During our experiments, we found that conversion of a Boolean system to CNF and back to ANF may give us enough linearly independent linear polynomials to solve the initial system S . Note that having n linearly independent linear polynomials in the ideal S ⊂ B n is enough to derive the unique solution of the system by Gaußian elimination. We observed this behavior for the polynomials representing Small-scale AES encryption AES-1-1-1-4 and AES-2-1-1-4. The polynomials can be found in Sage <ref type="bibr" target="#b20">[21]</ref>. For bigger examples, this is usually not the case. On the other hand, one frequently gains additional linear polynomials in the ideal by this technique. It is made explicit in Algorithm 5. </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="7">Experiments</head><p>In this section we examine the efficiency of the proposed improvements of the CNF to ANF conversion. In Table <ref type="table" target="#tab_0">1</ref> we compare Algorithm 1 with Algorithm 3 w.r.t. the degree of the resulting algebraic representations.</p><p>The tests have been executed on a compute server having a 3.00 GHz Intel(R) Xeon(R) CPU E5-2623 v3 and a total of 48 GB RAM. All algorithms in this paper were prototypically implemented in python v2.7 using the PolyBoRi library <ref type="bibr" target="#b5">[6]</ref> integrated in Sage <ref type="bibr" target="#b20">[21]</ref> for the Gröbner basis computations. We choose the specific mid-size instances from the following benchmark suites: the logical representations of the encryption of the Small-scale AES cipher <ref type="bibr" target="#b12">[13]</ref> and factoring of integers <ref type="bibr" target="#b3">[4]</ref> Table <ref type="table" target="#tab_0">1</ref> provides information about the number of variables and the number of clauses contained in the CNF instance, as well as the total number of linear, quadratic and higher degree (i.e., greater than 2) polynomials produced by Algorithms 1 and 3. We use σ = degrevlex and m = 2 . The later parameter performed the best (see Proposition 8), because it does not create big blocks B c in Algorithm 2 that are too hard for the Gröbner basis computation. On the other hand, choosing m ≥ 3 does not make sense in most examples, because the CNF instances usually contain many clauses of length 3.</p><p>From the results in Table <ref type="table" target="#tab_0">1</ref> we clearly see that the algebraic representation given by Algorithm 3 produces lower degree polynomials than the one by Algorithm 1. While Algorithm 1 usually produces only very few linear polynomials, the table shows that Algorithm 3 tends to return enough linear polynomials to eliminate approximately one third of all indeterminates. Moreover, we note that Algorithm 3 almost completely avoided to produce polynomials of degree ≥ 3 .</p><p>In our experiments, the computation of the reduced Gröbner bases of the conversions of the block B c did not pose problems. If necessary, one could calculate them in parallel. Both algorithms need extra time for the setup of the Boolean rings. This could be a problem for larger CNFs having thousands of variables. It can be overcome by defining local Boolean rings for each B c and then rewriting the local variables in B c to their global names. Note that # var(B c ) tends to be much smaller than # var(C) . Moreover, caching of the standard representations of short clauses is possible. Polynomials of type l i=1 (x i + a i ) can be precomputed and stored in ANF for small values of . Then the corresponding values a i ∈ F 2 are substituted for a given clause. Proposition 4 states that Algorithm 3 does simple logical reasoning, e.g., it applies the resolution rule to certain subformulae. Thus it tends to produce lower degree polynomials. One possible enhancement would be to run a SAT solver on a given set of clauses C for a while, and then to apply Algorithm 3 on C together with the newly found clauses (e.g., conflict clauses). We believe that this would produce even more low degree polynomials.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head></head><label></label><figDesc>Next we define the set of satisfying assignments for a given set of clauses C in n logical variables by SAT(C) = a ∈ {False, True} n | C(a) evaluates to True .</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_1"><head>Definition 2 .Proposition 2 .</head><label>22</label><figDesc>(a) The set of variables X i such that X i or Xi is contained in one of the clauses of C is denoted by var(C) and is called the set of variables of C . (b) We say c ∈ C has positive (resp. negative ) sign if the number of negative literals is an even (resp. odd) number. (c) We define the length of a clause c ∈ C as the cardinality #c. (d) Let c, c ∈ C . A number m ≥ 1 such that # var(c) ∩ var(c ) ≥ m is called an overlapping number of c and c . Given a number m, Algorithm 2 decomposes a set of clauses C into blocks B c for c ∈ C such that m is an overlapping number of c with every clause in B c . Algorithm 2 (Building m-Blocks) Input: A set of clauses C , an overlapping number m ∈ N . Output: A set of subsets B of C and a subset T of C such that for B ∈ B with #B ≥ 2 and for every b ∈ B , there exists an element b ∈ B \ {b} with the property that m is an overlapping number for b and b , and such that B∈B B ∪ T = C and every clause in T contains less than m literals. 1: foreach c in C do 2: Bc := c ∈ C | # var(c) ∩ var(c ) ≥ m 3: end foreach 4: B := {Bc | c ∈ C, Bc = ∅} 5: Let B be the set of maximal elements of B w.r.t. inclusion. 6: T := C \ c∈C Bc 7: return (B, T ) Notice that some clauses in C may not be included in the set B produced by Algorithm 2. This happens when the length of a clause is less than m . Such clauses are returned in the set T . Furthermore, the cardinality of the set of clauses contained in B ∪ T may be greater than #C . The cardinality is at least equal to #C , because every c ∈ C is contained either in the set B c in B , or c is put into T in Step 6. Moreover, we note that Algorithm 2 performs at most #C iterations of the foreach loop, at most #C 2 intersections in Step 2, and at most #B 2 comparisons in Step 5. Hence this algorithm has a polynomial time complexity. The output of Algorithm 2 is uniquely determined. Proof. The sets in B are related to the following graph. For m ∈ N, we define an undirected graph G m,C which has C as vertices and for which two distinct clauses c, c ∈ C form an edge if and only if # var(c) ∩ var(c ) ≥ m . Clearly, Step 2 of Algorithm 2 computes the closed neighborhood of a vertex c of G m,C , i.e. the set of all vertices connected to c by an edge. Then Step 5 selects the maximal neighborhoods w.r.t. inclusion. This shows that the output of Algorithm 2 is uniquely determined by C and m , and does not depend on the order in which the clauses c are selected in Step 1.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_2"><head>1 :</head><label>1</label><figDesc>S := ∅ 2: Using Algorithm2( C , m ), compute a pair (B, T ) . 3: B := B ∪ t∈T {t} 4: foreach B in B do 5: Q := Algorithm1( B ) 6:</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_3"><head>Proposition 3 .Example 6 .</head><label>36</label><figDesc>The output of Algorithm 3 is an algebraic representation of C and is uniquely determined by σ and m . Proof. First we prove that S σ,m is an algebraic representation of C . In Step 3 we have B∈B c∈B c = C , because every c ∈ C is contained either in the set B c in B , or c is put into T in Step 6 of Algorithm 2. We know that Q is an algebraic representation of B ∈ B in Step 5 by Proposition 1. Furthermore, G is an algebraic representation of B as well, because Q = G . Clearly, if G 1 resp. G 2 are algebraic representations of B 1 resp. B 2 , then G 1 ∪ G 2 is an algebraic representation of B 1 ∪ B 2 . Thus S is an algebraic representation of C in Step 9. LT σ -interreduction does not change the set of zeros, and therefore S σ,m is an algebraic representation of C . By Proposition 2 we know that the set B in Step 3 is uniquely determined. The reduced Boolean σ -Gröbner basis of the ideal Q in Step 6 is unique, and so is the basis in Step 9. Let us apply Algorithm 3 in the setting of Example 3.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_4"><head>Example 2</head><label>2</label><figDesc>illustrates the previous proposition. A lower number of clauses can also produce linear polynomials, but we have to allow clauses of different lengths. Proposition 6. (a) Let ϕ, ψ be propositional logic formulas. Then we have ϕ ≡ (ϕ ∨ ψ) ∧ (ϕ ∨ ψ) . (b) Let c, w be clauses. The set {c} is equivalent to {c ∪ w, c ∪ w}. (c) In the setting of (b), assume that w has length k . Write w = {L 1 , . . . , L k } with literals L i . Then the set {c} is equivalent to the set of all 2 k clauses of shape c ∪ {L * 1 } ∪ • • • ∪ {L * k } , where L * i equals to L i or Li .</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_5"><head>Algorithm 4 (</head><label>4</label><figDesc>Combinatorial Search for Linear Polynomials) Input: A set of clauses B = {c 1 , . . . , c k } . Output: A set of linear polynomials L such that the ideal generated by any algebraic representation of B contains L.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_6"><head>1: L := ∅ 2 :</head><label>2</label><figDesc>foreach subset V = {Xi 1 , . . . , Xi } of var(B) do 3:B + := ∅ 4:</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_7"><head>( 2 )</head><label>2</label><figDesc>Let m = 2 be an overlapping number. Let L be the output of Algorithm4( C ). Let S be the output of Algorithm3( C, σ, m). Then we have#L ≤ #{s ∈ S | deg(s) = 1} .Proof. (1) Let f ∈ I = G be a linear polynomial. If LT σ (f ) ∈ I , then LT σ (f ) ∈ G and we are done. In the other case, we know that LT σ (f ) is minimal in LT σ (I) with respect to divisibility. The tail of f can be reduced only by linear polynomials, and this results in a linear polynomial again. After all reductions we still have a linear polynomial in G.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_8"><head>Algorithm 5 ( 1 :</head><label>51</label><figDesc>Generating Linear Polynomials in the Ideal) Input: A set of Boolean polynomials S , a degree compatible term ordering σ , and an overlapping number m ∈ N. Output: A set of linear polynomials in S . Requires: Algorithm 3 Compute a logical representation of S by a sparse conversion method. Call the result C . 2: Q := Algorithm3( C, σ, m ) 3: L := {l ∈ Q | deg(l) = 1} 4: return L</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_9"><head></head><label></label><figDesc>. Instances of type AES-a -b-c-d represent propositional formulae in CNF derived from the gate level circuit implementation of the Small-scale AES with a rounds, the state matrix of size b × c and d -bit words in each state cell. Instances of type fact-a-b represent the problem of factoring the product a • b for the given two primes a, b.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_0"><head>Table 1 .</head><label>1</label><figDesc>(Number of converted polynomials by degree.)</figDesc><table><row><cell>Instance</cell><cell></cell><cell>CNF</cell><cell></cell><cell cols="2">Algorithm 1</cell><cell cols="3">Algorithm 3</cell></row><row><cell></cell><cell cols="8">#vars #clauses #lin #quad #high #lin #quad #high</cell></row><row><cell>AES-10-1-2-4</cell><cell>1081</cell><cell>3361</cell><cell>1</cell><cell cols="4">1792 1568 337 2194</cell><cell>0</cell></row><row><cell>AES-10-1-4-4</cell><cell>1862</cell><cell>5824</cell><cell>1</cell><cell cols="4">2986 2837 604 3692</cell><cell>0</cell></row><row><cell>AES-10-2-2-4</cell><cell>2441</cell><cell>7841</cell><cell>1</cell><cell cols="4">3584 4256 947 4407</cell><cell>0</cell></row><row><cell>AES-10-2-4-4</cell><cell cols="2">4289 13904</cell><cell>1</cell><cell cols="4">5986 7917 1785 7353</cell><cell>0</cell></row><row><cell>AES-10-4-1-4</cell><cell cols="2">3149 10065</cell><cell>1</cell><cell cols="4">4800 5264 1149 5915</cell><cell>0</cell></row><row><cell>AES-2-1-2-4</cell><cell>237</cell><cell>701</cell><cell>1</cell><cell>360</cell><cell cols="2">340 70</cell><cell>453</cell><cell>0</cell></row><row><cell>AES-2-1-4-4</cell><cell>412</cell><cell>1218</cell><cell>1</cell><cell>598</cell><cell cols="3">619 132 746</cell><cell>0</cell></row><row><cell>AES-2-2-2-4</cell><cell>526</cell><cell>1615</cell><cell>1</cell><cell>716</cell><cell cols="3">898 201 882</cell><cell>0</cell></row><row><cell>AES-2-2-4-4</cell><cell>935</cell><cell>2883</cell><cell>1</cell><cell cols="4">1196 1686 375 1491</cell><cell>0</cell></row><row><cell>AES-2-4-1-4</cell><cell>669</cell><cell>2065</cell><cell>1</cell><cell cols="4">960 1104 241 1191</cell><cell>0</cell></row><row><cell>AES-2-4-2-4</cell><cell>1157</cell><cell>3652</cell><cell>1</cell><cell cols="4">1434 2217 501 1778</cell><cell>0</cell></row><row><cell>AES-2-4-4-4</cell><cell>2077</cell><cell>6596</cell><cell>1</cell><cell cols="4">2394 4201 957 2978</cell><cell>0</cell></row><row><cell>fact-12601-18701</cell><cell>745</cell><cell>3853</cell><cell>2</cell><cell cols="4">616 3235 291 1365</cell><cell>2</cell></row><row><cell>fact-151-283</cell><cell>271</cell><cell>1333</cell><cell>2</cell><cell cols="4">250 1081 115 471</cell><cell>2</cell></row><row><cell>fact-1777-491</cell><cell>403</cell><cell>2029</cell><cell>2</cell><cell cols="4">354 1673 166 713</cell><cell>2</cell></row><row><cell>fact-2393-3371</cell><cell>466</cell><cell>2380</cell><cell>2</cell><cell cols="4">400 1978 181 855</cell><cell>2</cell></row><row><cell>fact-373-929</cell><cell>328</cell><cell>1640</cell><cell>2</cell><cell cols="4">294 1344 131 593</cell><cell>2</cell></row><row><cell cols="2">fact-583909-600203 1280</cell><cell>6784</cell><cell>2</cell><cell cols="4">1010 5772 471 2428</cell><cell>2</cell></row><row><cell>fact-59-1009</cell><cell>328</cell><cell>1640</cell><cell>2</cell><cell cols="4">294 1344 149 544</cell><cell>2</cell></row><row><cell>fact-59441-62201</cell><cell>826</cell><cell>4312</cell><cell>2</cell><cell cols="4">676 3634 318 1527</cell><cell>2</cell></row><row><cell cols="2">fact-81551-100057 947</cell><cell>4945</cell><cell>2</cell><cell cols="4">770 4173 359 1767</cell><cell>2</cell></row><row><cell>fact-9601-10067</cell><cell>638</cell><cell>3296</cell><cell>2</cell><cell cols="4">532 2762 243 1188</cell><cell>2</cell></row></table></figure>
		</body>
		<back>

			<div type="acknowledgement">
<div xmlns="http://www.tei-c.org/ns/1.0"><p>Acknowledgments. The authors thank Martin Albrecht and Alexander Dreyer for providing us with a better insight into the structure of Sage and PolyBoRi, as well as Mate Soos for helpful discussions about the implementation of SAT solvers. This work was financially supported by the DFG project "Algebraische Fehlerangriffe" [KR 1907/6-1].</p></div>
			</div>

			<div type="annex">
<div xmlns="http://www.tei-c.org/ns/1.0"><p>Proposition 7. Let B = {c 1 , . . . , c k } be a set of clauses and V = {X i1 , . . . , X i } be a set of variables in var(B) . For j = 1, . . . , k define the following sets:</p><p>(1) If</p><p>then the ideal generated by any algebraic representation of B contains</p><p>then the ideal generated by any algebraic representation of B contains</p><p>Proof. Let us focus on the first (i.e., positive) case. The second case is analogous.</p><p>In view of Proposition 6, the set B + j,V contains all possible extensions of c j in variables V to positive clauses of length . We search for a complete signed set in the union of all sets B + j,V . In other words, the cardinality of this union must be equal to 2 −1 in order to contain a complete signed set. Note that these sets may not be disjoint. Thus we use the inclusion-exclusion principle for determining # k j=1 B + j,V .</p><p>In practice we do not have to apply the inclusion-exclusion principle, if the programming language we use has "set" as a built-in data structure. Algorithm 4 is a straight-forward application of Proposition 7. The sets B + j,V and B − j,V can be computed by extensions to the prescribed length via brute-force and grouping the result according to sign. Note that the ideas behind Algorithm 4 can be further developed, and a more efficient algorithm can be designed. (Some attempts in this direction can be deduced from the source code of CryptoMiniSat, see src/xorfinder.cpp in <ref type="bibr" target="#b18">[19]</ref>.)</p><p>Since we have to check all subsets of var(B) in Step 2, Algorithm 4 is only practical for rather small-sized sets var(B) . Even if we are still able to directly derive linear polynomials from a large set of clauses C by Algorithm 4, the following proposition shows that Algorithm 3 produces at least the same number of linear polynomials. Proposition 8. Let C be a set of clauses, let I be the ideal generated by an algebraic representation of C , and let σ be a degree compatible term ordering. </p></div>			</div>
			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<analytic>
		<title level="a" type="main">Glucose in the SAT 2014 Competition</title>
		<author>
			<persName><forename type="first">G</forename><surname>Audemard</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><surname>Simon</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">SAT Competition 2014: Solver and Benchmark Descriptions</title>
				<imprint>
			<date type="published" when="2014">2014</date>
			<biblScope unit="page" from="31" to="32" />
		</imprint>
		<respStmt>
			<orgName>Univ. of Helsinki</orgName>
		</respStmt>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<monogr>
		<title level="m" type="main">Algebraic Cryptanalysis</title>
		<author>
			<persName><forename type="first">G</forename><surname>Bard</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2009">2009</date>
			<publisher>Springer</publisher>
			<pubPlace>Heidelberg</pubPlace>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<analytic>
		<title level="a" type="main">Efficient methods for conversion and solution of sparse systems of low-degree multivariate polynomials over GF(2) via SAT-solvers</title>
		<author>
			<persName><forename type="first">G</forename><forename type="middle">V</forename><surname>Bard</surname></persName>
		</author>
		<author>
			<persName><forename type="first">N</forename><forename type="middle">T</forename><surname>Courtois</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Jefferson</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">IACR Cryptology ePrint Archive</title>
		<imprint/>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<analytic>
		<title level="a" type="main">Hard SAT instances based on factoring</title>
		<author>
			<persName><forename type="first">J</forename><surname>Bebel</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Yuen</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">SAT Competition 2013: Solver and Benchmark Descriptions</title>
				<imprint>
			<date type="published" when="2013">2013</date>
			<biblScope unit="page">102</biblScope>
		</imprint>
		<respStmt>
			<orgName>Univ. of Helsinki</orgName>
		</respStmt>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<monogr>
		<title level="m" type="main">Boolean Gröbner Bases: Theory, Algorithms and Applications</title>
		<author>
			<persName><forename type="first">M</forename><surname>Brickenstein</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2010">2010</date>
			<publisher>Logos Verlag</publisher>
			<pubPlace>Berlin</pubPlace>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<analytic>
		<title level="a" type="main">PolyBoRi: a framework for Gröbner basis computations with Boolean polynomials</title>
		<author>
			<persName><forename type="first">M</forename><surname>Brickenstein</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Dreyer</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">J. Symbolic Comput</title>
		<imprint>
			<biblScope unit="volume">44</biblScope>
			<biblScope unit="page" from="1326" to="1345" />
			<date type="published" when="2009">2009</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<analytic>
		<title level="a" type="main">A Gröbner basis approach to CNF-formulae preprocessing</title>
		<author>
			<persName><forename type="first">C</forename><surname>Condrat</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Kalla</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">International Conference on Tools and Algorithms for the Construction and Analysis of Systems</title>
				<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2007">2007</date>
			<biblScope unit="page" from="618" to="631" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b7">
	<analytic>
		<title level="a" type="main">About the XL algorithm over GF(2)</title>
		<author>
			<persName><forename type="first">N</forename><forename type="middle">T</forename><surname>Courtois</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Patarin</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Cryptographers Track at the RSA Conference</title>
				<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2003">2003</date>
			<biblScope unit="page" from="141" to="157" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b8">
	<analytic>
		<title level="a" type="main">ElimLin algorithm revisited</title>
		<author>
			<persName><forename type="first">N</forename><forename type="middle">T</forename><surname>Courtois</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Sepehrdad</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Sušil</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Vaudenay</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Fast Software Encryption</title>
				<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2012">2012</date>
			<biblScope unit="page" from="306" to="325" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b9">
	<analytic>
		<title level="a" type="main">Improving Gröbner-based clause learning for SAT solving industrial sized Boolean problems</title>
		<author>
			<persName><forename type="first">A</forename><surname>Dreyer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><forename type="middle">H</forename><surname>Nguyen</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Young Researcher Symposium (YRS)</title>
				<meeting><address><addrLine>Kaiserslautern</addrLine></address></meeting>
		<imprint>
			<publisher>Fraunhofer ITWM</publisher>
			<date type="published" when="2013">2013</date>
			<biblScope unit="page" from="72" to="77" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b10">
	<monogr>
		<title level="m" type="main">MiniSat: A SAT solver with conflict-clause minimization</title>
		<author>
			<persName><forename type="first">N</forename><surname>Een</surname></persName>
		</author>
		<author>
			<persName><forename type="first">N</forename><surname>Sörensson</surname></persName>
		</author>
		<ptr target="http://minisat.se" />
		<imprint>
			<date type="published" when="2005">2005</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b11">
	<analytic>
		<title level="a" type="main">FGb: a library for computing Gröbner bases</title>
		<author>
			<persName><forename type="first">J.-C</forename><surname>Faugère</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">International Congress on Mathematical Software</title>
				<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2010">2010</date>
			<biblScope unit="page" from="84" to="87" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b12">
	<analytic>
		<title level="a" type="main">Small scale AES toolbox: algebraic and propositional formulas, circuit-implementations and fault equations</title>
		<author>
			<persName><forename type="first">M</forename><surname>Gay</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Burchard</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Horáček</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><forename type="middle">S</forename><surname>Messeng Ekossono</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Schubert</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Becker</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Kreuzer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">I</forename><surname>Polian</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Conf. on Trustworthy Manufacturing and Utilization of Secure Devices (TRUDE-VICE 2016)</title>
				<meeting><address><addrLine>Barcelona</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2016">2016</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b13">
	<analytic>
		<title level="a" type="main">Computing Boolean border bases</title>
		<author>
			<persName><forename type="first">J</forename><surname>Horáček</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Kreuzer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Messeng</forename><surname>Ekossono</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><forename type="middle">S</forename></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">18th International Symposium on Symbolic and Numeric Algorithms for Scientific Computing</title>
				<meeting><address><addrLine>Timisoara</addrLine></address></meeting>
		<imprint>
			<publisher>IEEE</publisher>
			<date type="published" when="2016">2016</date>
			<biblScope unit="page" from="465" to="472" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b14">
	<analytic>
		<title level="a" type="main">Refutational theorem proving using term-rewriting systems</title>
		<author>
			<persName><forename type="first">J</forename><surname>Hsiang</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Artif. Intell</title>
		<imprint>
			<biblScope unit="volume">25</biblScope>
			<biblScope unit="page" from="255" to="300" />
			<date type="published" when="1985">1985</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b15">
	<analytic>
		<title level="a" type="main">Algebraic attacks using SAT-solvers</title>
		<author>
			<persName><forename type="first">P</forename><surname>Jovanovic</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Kreuzer</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Groups Complex. Cryptol</title>
		<imprint>
			<biblScope unit="volume">2</biblScope>
			<biblScope unit="page" from="247" to="259" />
			<date type="published" when="2010">2010</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b16">
	<monogr>
		<author>
			<persName><forename type="first">M</forename><surname>Kreuzer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><surname>Robbiano</surname></persName>
		</author>
		<title level="m">Computational Commutative Algebra 1</title>
				<meeting><address><addrLine>Heidelberg</addrLine></address></meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2000">2000</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b17">
	<monogr>
		<title/>
		<author>
			<persName><forename type="first">T</forename><surname>Schubert</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Reimer</surname></persName>
		</author>
		<author>
			<persName><surname>Antom</surname></persName>
		</author>
		<ptr target="https://projects.informatik.uni-freiburg.de/projects/antom" />
		<imprint>
			<date type="published" when="2016">2016</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b18">
	<monogr>
		<title level="m" type="main">CryptoMiniSat SAT solver</title>
		<author>
			<persName><forename type="first">M</forename><surname>Soos</surname></persName>
		</author>
		<ptr target="http://www.msoos.org" />
		<imprint>
			<date type="published" when="2016">2016</date>
			<biblScope unit="volume">0</biblScope>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b19">
	<monogr>
		<author>
			<persName><forename type="first">The</forename><surname>Apcocoa</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Team</forename></persName>
		</author>
		<ptr target="http://apcocoa.uni-passau.de" />
		<title level="m">ApCoCoA: Applied Computations in Commutative Algebra</title>
				<imprint/>
	</monogr>
</biblStruct>

<biblStruct xml:id="b20">
	<analytic>
		<title level="a" type="main">The Sage Developers</title>
		<ptr target="http://www.sagemath.org" />
	</analytic>
	<monogr>
		<title level="m">SageMath, the Sage Mathematics Software System (Version 7.5</title>
				<imprint>
			<date type="published" when="2017">2017</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b21">
	<analytic>
		<title level="a" type="main">Extending clause learning of SAT solvers with Boolean Gröbner bases</title>
		<author>
			<persName><forename type="first">C</forename><surname>Zengler</surname></persName>
		</author>
		<author>
			<persName><forename type="first">W</forename><surname>Küchlin</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">International Workshop on Computer Algebra in Scientific Computing</title>
				<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2010">2010</date>
			<biblScope unit="page" from="293" to="302" />
		</imprint>
	</monogr>
</biblStruct>

				</listBibl>
			</div>
		</back>
	</text>
</TEI>
