<?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">An SMT-LIB Theory of Finite Fields</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Thomas</forename><surname>Hader</surname></persName>
							<affiliation key="aff0">
								<orgName type="institution">TU Wien</orgName>
								<address>
									<addrLine>Favoritenstraße 9-11</addrLine>
									<postCode>1040</postCode>
									<settlement>Wien</settlement>
									<country key="AT">Austria</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Alex</forename><surname>Ozdemir</surname></persName>
							<affiliation key="aff1">
								<orgName type="institution">Stanford University</orgName>
								<address>
									<addrLine>353 Jane Stanford Way</addrLine>
									<postCode>94305</postCode>
									<settlement>Stanford</settlement>
									<region>CA</region>
									<country key="US">USA</country>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">An SMT-LIB Theory of Finite Fields</title>
					</analytic>
					<monogr>
						<idno type="ISSN">1613-0073</idno>
					</monogr>
					<idno type="MD5">3314D1D4FBAF86C0F47A9BD092A41785</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2025-04-23T17:21+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>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>In the last few years there have been rapid developments in SMT solving for finite fields. These include new decision procedures, new implementations of SMT theory solvers, and new software verifiers that rely on SMT solving for finite fields. To support interoperability in this emerging ecosystem, we propose the SMT-LIB theory of finite field arithmetic (FFA). The theory defines a canonical representation of finite field elements as well as definitions of operations and predicates on finite field elements.</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>Finite fields are the basis for a large body of security-critical code. They are used in public-key cryptography: elliptic curves over finite fields are used in nearly all web browser connections for key exchange or digital signatures <ref type="bibr" target="#b0">[1,</ref><ref type="bibr" target="#b1">2,</ref><ref type="bibr" target="#b2">3]</ref>. They are used in private-key cryptography: in both the Poly1305 message authentication code <ref type="bibr" target="#b3">[4]</ref> and Galois counter mode (GCM) <ref type="bibr" target="#b4">[5]</ref>. They are also the basis of most protocols for secure computation. For instance, many zero-knowledge proof systems prove and verify predicates expressed as finite field equations <ref type="bibr" target="#b5">[6,</ref><ref type="bibr" target="#b6">7,</ref><ref type="bibr" target="#b7">8,</ref><ref type="bibr" target="#b8">9]</ref>. Also, many secure multi-party computation protocols evaluate circuits over finite fields <ref type="bibr" target="#b9">[10,</ref><ref type="bibr" target="#b10">11]</ref>. Finally, some homomorphic encryption schemes apply to data in a finite field <ref type="bibr" target="#b11">[12,</ref><ref type="bibr" target="#b12">13]</ref>.</p><p>The importance and prevalence of (finite-)field-based programs creates a need for tools that can formally verify them. Ideally, such tools would be partially or fully automated. The natural approach is SMT-based verification, as taken by prior tools like Dafny <ref type="bibr" target="#b13">[14]</ref> and Boogie <ref type="bibr" target="#b14">[15]</ref>. In this approach, a software verifier reduces the correctness of the program to logical formulas which it dispatches to a satisfiability modulo theories (SMT) solver. Applying this approach to field-based software generally requires an SMT solver that can solve finite field equations.</p><p>One way to solve field equations is by encoding them as integer equations, which many SMT solvers already comprehend. Consider (for the moment) a finite field of prime order 𝑝. Such a field is isomorphic to the integers {0, . . . , 𝑝 − 1} with addition and multiplication modulo 𝑝 <ref type="bibr" target="#b15">[16]</ref>. Thus, (non-linear) equations mod 𝑝 can be encoded as (non-linear) integer equations. In this encoding, an equation 𝑥𝑦 = 𝑧 over field variables 𝑥, 𝑦, 𝑧 would be encoded as (𝑥 ′ 𝑦 ′ − 𝑧 ′ ) mod 𝑝 = 0, where 𝑥 ′ , 𝑦 ′ , 𝑧 ′ are the integer representatives of the field variables. These equations can now be solved using an integer solver. Or, since all terms can be bounded, they can be solved as bit-vector (bounded integer) equations. However, prior experiments have shown that existing integer and bit-vector solvers perform poorly when given inputs that encode finite field arithmetic <ref type="bibr" target="#b16">[17,</ref><ref type="bibr" target="#b17">18]</ref>.</p><p>To overcome the limitations of encoding, two direct SMT theory solvers for finite fields have recently emerged. The first is an MCSat <ref type="bibr" target="#b18">[19]</ref> solver that is implemented in Yices <ref type="bibr" target="#b19">[20,</ref><ref type="bibr" target="#b20">21,</ref><ref type="bibr" target="#b21">22,</ref><ref type="bibr" target="#b22">23,</ref><ref type="bibr" target="#b23">24]</ref>. The second is a CDCL(T) solver that is implemented in cvc5 <ref type="bibr" target="#b16">[17,</ref><ref type="bibr" target="#b24">25,</ref><ref type="bibr" target="#b25">26]</ref>. Currently, these solvers accept field terms and equations expressed using a bespoke extension to SMT-LIB. This extension has not been standardized.</p><p>These SMT solvers have already enabled a variety of research projects and tools for automatically verifying systems that use zero-knowledge proofs (ZKPs). One project builds an automatically verifiable compiler pass for CirC: a compiler used with ZKPs <ref type="bibr" target="#b26">[27]</ref>. Another builds a tool QED 2 that automatically verifies ZKP code in the Circom language <ref type="bibr" target="#b27">[28,</ref><ref type="bibr" target="#b28">29]</ref>. Another builds a tool for automatically verifying SMT 2024: Satisfiability Modulo Theories, <ref type="bibr">July 22-23, 2024, Montreal, Canada</ref> thomas.hader@tuwien.ac.at (T. Hader); aozdemir@cs.stanford.edu (A. <ref type="bibr">Ozdemir)</ref> ZKP code written using the Halo2 library <ref type="bibr" target="#b29">[30]</ref>. All of these projects use an SMT solver with finite field support.</p><p>Given the long-term importance of finite fields to security-critical software, the emergence of multiple SMT solvers with finite field support, and the emergence of multiple automatic verification tools expecting finite field support, we think the time is ripe to specify finite fields as an SMT-LIB theory. In this short paper, we do exactly that. In our specification, we consider all finite fields: those of prime order and their extensions. We consider fields of arbitrary size. Many cryptosystems require large fields (such as a prime order field with 𝑝 ≈ 2 256 or the binary extension field of order 2 128 ), but some can also operate over smaller fields (such as 32-bit or 64-bit fields) <ref type="bibr" target="#b30">[31,</ref><ref type="bibr" target="#b31">32]</ref>.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Related Work</head><p>There is already much work on verifying cryptographic implementations through interactive theorem proving and verification languages. Examples of secret-key and public-key cryptography include Fiat cryptography <ref type="bibr" target="#b32">[33]</ref>, Easycrypt <ref type="bibr" target="#b33">[34]</ref>, HACL* <ref type="bibr" target="#b34">[35]</ref>, and Jasmin <ref type="bibr" target="#b35">[36]</ref>. There is also some work on interactive verification for ZKPs in the context of the Leo compiler <ref type="bibr" target="#b36">[37]</ref>, and by using refinement proofs <ref type="bibr" target="#b37">[38,</ref><ref type="bibr" target="#b38">39]</ref>. With better SMT-level support for finite fields, ITP proof automation for finite field lemmas could be improved through ITP-SMT bridges, like SMTCoq <ref type="bibr" target="#b39">[40]</ref>.</p><p>Further afield, some cryptographic implementations have been modeled and analyzed using automated symbolic analysis tools like Tamarin <ref type="bibr" target="#b40">[41]</ref> and ProVerif <ref type="bibr" target="#b41">[42]</ref>. The benefit of these tools is their high level of interpretability and automation, which allows them to be applied to protocols of realistic complexity, such as Signal <ref type="bibr" target="#b42">[43]</ref>. However, they struggle to accurately model algebraic structures <ref type="bibr" target="#b43">[44]</ref>. SMT-level algebraic reasoning would complement this research.</p><p>Another line of research develops SMT solvers for non-linear integer and real arithmetic using CDCL(T) <ref type="bibr" target="#b44">[45,</ref><ref type="bibr" target="#b45">46,</ref><ref type="bibr" target="#b46">47,</ref><ref type="bibr" target="#b47">48,</ref><ref type="bibr" target="#b48">49,</ref><ref type="bibr" target="#b49">50,</ref><ref type="bibr" target="#b50">51,</ref><ref type="bibr" target="#b51">52]</ref> and MCSat <ref type="bibr" target="#b52">[53,</ref><ref type="bibr" target="#b53">54,</ref><ref type="bibr" target="#b54">55]</ref>. Some works specifically consider local search <ref type="bibr" target="#b55">[56,</ref><ref type="bibr" target="#b56">57,</ref><ref type="bibr" target="#b57">58]</ref> and quantifier elimination <ref type="bibr" target="#b58">[59,</ref><ref type="bibr" target="#b59">60]</ref>. This research serves as good inspiration into techniques for finite field solving.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.">Background</head><p>We provide a brief summary of the relevant concepts of finite fields. A comprehensive overview can be found in <ref type="bibr" target="#b60">[61,</ref><ref type="bibr" target="#b61">62,</ref><ref type="bibr" target="#b62">63]</ref> as well as in many other algebra textbooks.</p><p>Fields. A field F consists of a set of elements 𝑆 on which the two binary operators addition "+" and multiplication "•" are defined. 𝑆 is closed under both operators, i.e. when applied on two elements of 𝑆, the result is in 𝑆. Both operators are commutative, associative, and have distinct neutral elements (denoted as zero (0) and one (1), respectively). Each element in 𝑆 has an additive inverse element and all elements in 𝑆 ∖ {0} have a multiplicative inverse element. Further, distributivity of multiplication over addition holds. Informally speaking, a field is a set with well-defined operations addition, subtraction, multiplication, and division (with the exception of division by 0). Well known examples of fields are the rational number Q and the real numbers R.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Finite Fields.</head><p>A field F where 𝑆 is finite is called a finite field. <ref type="foot" target="#foot_0">1</ref> The size of 𝑆 is the order of F. It has been shown that every finite field has order 𝑞 that is a prime power 𝑞 = 𝑝 𝑛 . We distinguish between prime fields with 𝑛 = 1 and extension fields with 𝑛 &gt; 1. All fields of equal order are isomorphic (i.e. equivalent up to relabelling of elements), thus the field of order 𝑞 is unique (up to isomorphism).</p><p>Prime Fields. The prime field of order 𝑝 can be represented as</p><formula xml:id="formula_0">𝑆 = {− ⌊︁ 𝑝−1 2 ⌋︁ , . . . , 0, 1, . . . , ⌊︀ 𝑝 2 ⌋︀</formula><p>} 2 and is denoted F 𝑝 . Let the function smod 𝑝 : Z → 𝑆 be defined to map 𝑧 ∈ Z to the unique element of 𝑆 that is equivalent to 𝑧, modulo 𝑝. The function is called "smod 𝑝 " because it outputs a signed representation of its input.</p><p>Addition and multiplication on 𝑆 are defined by the usual integer operations followed by an application of smod 𝑝 . Due to the construction of 𝑆, finding the additive inverse is as simple as flipping the sign (assuming odd 𝑝). Extension Fields. Let F 𝑝 [𝛼] be the set of univariate polynomials in variable 𝛼 with coefficients from F 𝑝 , and let 𝑓 ∈ F 𝑝 [𝛼] have degree 𝑛 and be irreducible (i.e. it cannot be represented as the product of two non-constant polynomials). The extension field of order 𝑝 𝑛 is denoted F 𝑝 𝑛 and can be represented as polynomials in F 𝑝 [𝛼] of degree less than 𝑛, with (polynomial) addition and multiplication modulo 𝑓 . Note that, in this representation, {0,</p><formula xml:id="formula_1">1} ⊆ F 𝑝 ⊆ F 𝑝 𝑛 . Example 2. The finite field F 3 2 is represented by the following polynomials of F 3 [𝛼] modulo 𝛼 2 − 𝛼 − 1: {0, 𝛼, 𝛼 + 1, −𝛼 + 1, −1, −𝛼, −𝛼 − 1, 𝛼 − 1, 1} Over F 3 2 it holds that (𝛼 + 1) • 𝛼 = (−𝛼 + 1).</formula><p>As the choice of 𝑓 is not unique in general, different (isomorphic) representations of F 𝑝 𝑛 exist, even if the representation of F 𝑝 is fixed. Note that no finite field is an ordered field. That is, there is no total ordering on 𝑆 that is compatible with the field operations.</p><p>Conway Polynomials Algebraic tools have many choices for how to represent fields internally. But, to facilitate interoperability, the computer algebra community has agreed upon a canonical family of irreducible polynomials that should be used to represent elements of an extension field F 𝑝 𝑛 in tool interfaces. These are called the Conway polynomials 𝐶 𝑝,𝑛 ∈ F 𝑝 <ref type="bibr">[𝛼]</ref>, where 𝑝 is a prime and 𝑛 &gt; 1.</p><p>The precise definition of the Conway polynomials is not important for our purposes. 3 There is an algorithm for finding them <ref type="bibr" target="#b63">[64]</ref> and they have been pre-computed for many 𝑛 and 𝑝 <ref type="bibr" target="#b64">[65]</ref>. The Conway polynomials are used by all prominent computer algebra libraries: Sage, Magma, GAP, Singular, etc. We will use the Conway polynomials to define an SMT-LIB syntax for extension field element literals (Sec. 3.3).</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Example 3. The Conway polynomial 𝐶</head><formula xml:id="formula_2">3,2 is 𝛼 2 − 𝛼 − 1, which is the irreducible used to represent F 9 in Example 2.</formula></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.">A Theory of Finite Fields</head><p>This section presents the SMT-LIB (version 2.6) theory of finite field arithmetic (FFA). Based on the theory of finite field arithmetic are the logics of quantifier-free finite field arithmetic QF_FFA as well as its quantified version FFA. 3 The Conway polynomial 𝐶𝑝,𝑛 is the lexicographically minimal monic primitive polynomial of degree 𝑛 over F𝑝 that is compatible with 𝐶𝑝,𝑚 for all 𝑚 dividing 𝑛. Let 𝑟 = (𝑝 𝑛 − 1)/(𝑝 𝑚 − 1) (which is an integer). Then, 𝐶𝑝,𝑛 ∈ F[𝛼] is compatible with 𝐶𝑝,𝑚 ∈ F[𝛼] if for every root 𝛼0 ∈ F𝑝𝑛 of the former, 𝛼 𝑟 0 is a root of the latter. The lexicographic ordering used is also slightly non-standard. Define the alternating-sign coefficient representation of polynomial 𝑓 ∈ F[𝛼] to be</p><formula xml:id="formula_3">𝑓 = ∑︀ 𝑑 𝑖=0 (−1) 𝑖 𝑐 𝑑−𝑖 𝛼 𝑑−𝑖 = 𝑐 𝑑 𝛼 𝑑 − 𝑐 𝑑−1 𝛼 𝑑−1 + • • • + (−1) 𝑑 𝑎0, with 𝑐𝑖 ∈ {0, . . . , 𝑝 − 1}.</formula><p>Then, the order is lexicographic over the tuples (𝑐 𝑑 , . . . , 𝑐0).</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.1.">The Finite Field Sorts</head><p>The theory of finite fields defines two kinds of finite field sorts, prime field sorts and extension field sorts for prime and extension fields, respectively (Sec. 2). They are represented by an indexed sort identifier of the form (_ FiniteField 𝑝) and (_ FiniteField 𝑝 𝑛) for prime and extension field sorts, respectively. The indexes 𝑝 and 𝑛 are numerals specifying the finite field order 𝑞 = 𝑝 𝑛 . The index 𝑝 must be a prime number in both cases. For extension field sorts, 𝑛 &gt; 1 must hold, as otherwise the resulting sort would be a prime field. Providing a non-prime number as 𝑝 may result in unspecified solver behavior, although solvers are encouraged to report an error. <ref type="foot" target="#foot_2">4</ref> As is usual for an indexed sort, two finite field sorts with a different order are different sorts. Solvers implementing this theory are not required to support extension field sorts and may report an error in case an extension field sort is specified. <ref type="foot" target="#foot_3">5</ref>For the rest of this chapter, a finite field sort is a prime or extension field sort with an arbitrary fixed order.</p><p>Example 4. Set the logic to non-linear finite field arithmetic and define finite field sorts of size 5 and 9:</p><formula xml:id="formula_4">(set-logic QF_FFA) (define-sort FF5 () (_ FiniteField 5)) (define-sort FF9 () (_ FiniteField 3 2))</formula></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.2.">The Domain of Finite Field elements</head><p>A finite field of a given order is uniquely defined up to isomorphism. Thus, for the sake of defining an SMT theory for finite fields, a canonical representation for a finite field of a given order needs to be fixed. Otherwise different solvers might present the same model differently.</p><p>For a prime field with prime order 𝑝, the elements are represented by the integers of the set</p><formula xml:id="formula_5">{− ⌊︁ 𝑝−1 2 ⌋︁ , . . . , ⌊︀ 𝑝 2 ⌋︀ }.</formula><p>Operations are performed with regard to the function smod as defined in Section 2. For an extension field of order 𝑝 𝑛 the field elements are represented by univariate polynomials over the prime field of order 𝑝. The implied field is F[𝛼]/𝐶 𝑝,𝑛 , where 𝐶 𝑝,𝑛 is the Conway polynomial (Sec. 2). All polynomial operations are performed modulo the Conway polynomial 𝐶 𝑝,𝑛 .</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.3.">Finite Field Literals</head><p>In the theory of finite fields, each element of a finite field sort is represented by a literal. To avoid confusion with the theories of integer and reals, finite field literals are prefixed with the string ff. We further say that a literal is normalized when it stands for an element from the fixed field representation as defined in Section 3.2. Non-normalized literals are allowed as an input and are mapped to the corresponding normalized literal, however, solvers are required to resort to normalized literals when printing a value.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Prime field literals.</head><p>As stated in Section 2, elements of prime fields can be represented as integers modulo the field size. This property is used to define literals in the form of ff𝑁 , where 𝑁 is an integer value. Given a prime field sort (_ FiniteField 𝑝) with prime order 𝑝, elements represented by the literals ff𝑁 for all values 𝑁 ∈ {− ⌊︁ presence of finite field theory, the user may not define their own symbols of form ff𝑁 (nor may they shadow other theory-defined symbols). <ref type="bibr">Example 4</ref>, then examples of normalized elements of FF5 are ff1, ff0, and ff-2. The (non-normalized) literals ff4 and ff10 describe the same element as the normalized literals ff-1 and ff0, respectively. Extension field literals. Elements of extension field sorts are polynomials. Literals representing elements of extension field sorts are uniquely describing polynomials by specifying their coefficients. As described in Section 2, an element of a finite field of order 𝑞 = 𝑝 𝑛 with 𝑛 &gt; 1 is a polynomial</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Example 5. Given the defined sorts of</head><formula xml:id="formula_6">𝑃 ∈ F 𝑝 [𝛼] of degree at most 𝑛 − 1. Let 𝑃 = 𝑐 0 + 𝑐 1 𝛼 1 + • • • + 𝑐 𝑛−1 𝛼 𝑛−1 where 𝑐 𝑖 ∈ F 𝑝 , then the element 𝑃 is represented by the literal ff𝑐 0 .𝑐 1 .• • • .𝑐 𝑛−1</formula><p>where all 𝑐 𝑖 are integers. Tailing zeros may be omitted, e.g. in (_ FiniteField 3 6) the literals ff1.0.-1.0.0 and ff1.0.-1 both represent the element 1 − 𝛼 2 . This further ensures that elements in F 𝑝 ⊆ F 𝑝 𝑛 have the same literal representation in both (_ FiniteField 𝑝) and (_ FiniteField 𝑝 𝑛). A (polynomial) literal of (_ FiniteField 𝑝 𝑛) is normalized when all integer coefficients are normalized with regard to 𝑝 and all tailing zeros are omitted. Specifying a literal with more than 𝑛 coefficients is invalid. Example 6. Again, given the defined sorts of Example 4, normalized literals of FF9 are all (normalized) literals of (_ FiniteField 3): ff0, ff1, and ff-1, as well as literals representing the further (polynomial) elements of F 3 2 , for example ff-1.1, ff0.1, and ff-1.-1 representing the elements 𝛼 − 1, 𝛼, and −𝛼 − 1, respectively. Note that ff2.1 and ff1.0 are both non-normalized versions of ff-1.1 and ff1, respectively.</p><p>Well-Sortedness of literals. Since the defined literals are overloaded (for example, every finite field has a one element, thus ff1 is of undetermined sort), the order of the literal's field must be specified in order to satisfy the well-sortedness requirements of SMT-LIB. There are three ways of specifying the sort of a finite field literal. (i) By indexing the literal (_ ff. . . 𝑝) and (_ ff. . . 𝑝 𝑛) with the finite field order 𝑝 and 𝑝 𝑛 , respectively. This allows the literal's sort to be derived, as the order of the finite field specifies the sort uniquely. (ii) Similar to the theory of bit-vectors, there is a shorthand to avoid the _ keyword and specify the sort as part of the literal symbol. This is done by appending the literal with m𝑝 and m𝑝p𝑛 for prime field sort of order 𝑝 and extension field sort of order 𝑝 𝑛 , respectively. <ref type="foot" target="#foot_4">6</ref> (iii) Since 𝑝 might be a large number, a short-cut is provided by (as ff. . . 𝑆) where 𝑆 is a finite field sort. Using the define-sort command, one can assign a symbol to a finite field sort to be used for all its literals. Table <ref type="table" target="#tab_0">1</ref> gives an overview of all three variants. When printing finite field elements, solvers are free to choose between the first two notations.</p><p>Example 7. The expressions (_ ff1 5) and (_ ff1 3 2) denote the multiplicative identity (one) of F 5 and F 3 2 , respectively. In the shorthand notation, the same literals can be written as ff1m5 and ff1m3p2. Using the defined sorts from Example 4, (as ff1 FF5) and (as ff1 FF9) can be used alternatively.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.4.">Finite Field Operations</head><p>All of the following operator definitions represent well known semantics from algebra. Thus, an explicit definition of their semantics is omitted and we refer to Section 2 for further details. Operations always operate on one specific finite field sort 𝑆, i.e. all parameters have sort 𝑆 and an element of 𝑆 is returned. All functions are defined for all prime field sorts as well as all extension field sorts. For the sake of brevity, the extension field sort variants of the functions are omitted. Table <ref type="table" target="#tab_1">2</ref> gives an overview of all operations.</p><p>Binary arithmetic. For each finite field order, we define operations that take two finite field elements of one finite field sort and return an element of the same sort. Given two inputs, the operations represent sum, difference, product, and quotient, respectively. <ref type="foot" target="#foot_5">7</ref>(ff.add (_ FiniteField 𝑝)</p><formula xml:id="formula_7">(_ FiniteField 𝑝) (_ FiniteField 𝑝) :left-assoc) (ff.sub (_ FiniteField 𝑝) (_ FiniteField 𝑝) (_ FiniteField 𝑝)) (ff.mul (_ FiniteField 𝑝) (_ FiniteField 𝑝) (_ FiniteField 𝑝) :left-assoc) (ff.div (_ FiniteField 𝑝) (_ FiniteField 𝑝) (_ FiniteField 𝑝))</formula><p>As hinted by the :left-assoc keyword, occurrences of ff.add and ff.mul may contain more than two arguments and multiple arguments are grouped left associatively. However, note that both operations are associative anyway. <ref type="foot" target="#foot_6">8</ref>Unary arithmetic. For each finite field sort, there are the following unary operations:</p><formula xml:id="formula_8">(ff.neg (_ FiniteField 𝑝) (_ FiniteField 𝑝)) (ff.recip (_ FiniteField 𝑝) (_ FiniteField 𝑝))</formula><p>Here, ff.neg returns the unary negation (usually written as −𝑥 for an element 𝑥), i.e. the inverse element with regard to addition. The operation ff.recip returns the reciprocal value (usually written as 𝑥 −1 for an element 𝑥), i.e. the inverse element with regard to multiplication. Note that ff.recip has total semantics but is unspecified for the zero element.</p><p>Division by zero. Two operators (ff.div, ff.recip) represent mathematical operations with only partial semantics. Mathematically speaking, division by zero is undefined, and computing the reciprocal of zero is undefined. Yet, SMT-LIB requires functions to have total semantics. We require solvers to interpret the reciprocal of zero as zero. Moreover dividing any value by zero gives zero. This choice is somewhat arbitrary. It is acceptable because it easy for solvers to meet and for verification tools to use.</p><p>A solver can meet this requirement using a preprocessing transformation. First, it encodes division as multiplication by the divisor's reciprocal. Second, it encodes the reciprocal relation 𝑧 = (ff.recip 𝑥) by the following (reciprocal-free) formula:</p><formula xml:id="formula_9">[(𝑥 ̸ = 0) ∧ (𝑥𝑧 = 1)] ∨ [(𝑥 = 0) ∧ (𝑧 = 0)]</formula><p>This ensures that 0's reciprocal is 0. The are other encodings of reciprocal that do not explicitly contain a disjunction. For example, as (𝑧𝑧𝑥 = 𝑧) ∧ (𝑧𝑥𝑥 = 𝑥).</p><p>This requirement is also easy for verification tools that use SMT to work with. In particular, a verification tool can create an SMT query where division or reciprocal have different semantics by wrapping them with an if-then-else term that implements those semantics when the appropriate input is zero. </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.5.">Comparison</head><p>Since finite fields are not ordered, the theory of finite fields only supports the equality predicate: Then add some assertions: This encodes the constraint system in F 5 :</p><formula xml:id="formula_10">(= (_ FiniteField 𝑝) (_ FiniteField 𝑝)) (= (_ FiniteField 𝑝 𝑛) (_ FiniteField 𝑝 𝑛))</formula><formula xml:id="formula_11">𝑥 1 𝑥 2 = 𝑥 1 + 𝑥 2 𝑥 −1 1 = 𝑥 0 𝑥 2 − 𝑥 0 = 1</formula></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.">Existing Finite Field Solvers</head><p>There are two existing SMT solvers that support the theory of finite fields: Yices <ref type="bibr" target="#b22">[23]</ref> and cvc5 <ref type="bibr" target="#b25">[26]</ref>. Both support the logic of quantifier-free finite field arithmetic QF_FFA for prime fields as defined in this paper.</p><p>• Yices2 implements reasoning over prime fields using its MCSat engine <ref type="bibr" target="#b23">[24]</ref>. This implementation is based on the approach by Hader et al. <ref type="bibr" target="#b21">[22]</ref>. Processing of polynomials over prime fields is done done using an updated version of the LibPoly library <ref type="bibr" target="#b66">[67]</ref>.</p><p>• cvc5's prime field solver is a CDCL(𝒯 ) theory solver that implements two decision procedures designed by Ozdemir et al. The first procedure is based on Gröbner bases and triangular decomposition <ref type="bibr" target="#b16">[17]</ref>. The second is based on the same algebraic ideas, but uses multiple, small Gröbner bases for better scalability in some cases <ref type="bibr" target="#b24">[25]</ref>. The implementation uses the CoCoALib computer algebra library <ref type="bibr" target="#b67">[68]</ref>.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5.">Future Directions</head><p>In designing our theory, we have intentionally omitted a number of potential features. Some of these features might be good additions in the future. We discuss two such features here, together with why they might be useful.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Conversions</head><p>In this proposal, we do not give operations for converting between finite field elements and other discrete arithmetic types, such as integers and bit-vectors. This might be useful for verification problems about code that converts between these types. For example, the AES-GCM block cipher alternates between treating its data as bit-vectors and elements of F 2 𝑛 , to perform different kinds of operations on that data. The bit-vector representation is used for the AES permutation and the field representation is used in the GCM message authentication code. Another example is an implementation of F 𝑝 arithmetic on a 𝑏-bit CPU, where 2 𝑏 ≪ 𝑝. Such an implementation is defined by bit-vector arithmetic, but the specification is an equation in F 𝑝 . Thus, giving a natural statement of the implementation's correctness requires operations to convert between F 𝑝 and bit-vectors. Since some SMT solvers already allow conversions between bit-vectors and integers, conversions between integers and finite field elements might suffice. Another kind of conversion which might be useful is one between a field F 𝑝 𝑛 and some extension F (𝑝 𝑛 ) 𝑒 of it (for 𝑒 &gt; 1).</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Variable-sized fields</head><p>In this proposal, we consider only fields of fixed size. This bars the possibility of queries that verify a property that holds generically for many or all fields. Such properties arise naturally in many verification problems. For instance, one might have a function that implements some finite-field operation in which the size of the field is an input to the function. To verify the function for all fields, one might construct a logical formula in which the field size is a variable.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head>Example 1 .</head><label>1</label><figDesc>The finite field F 5 can be represented by the integers {−2, −1, 0, 1, 2}. In this representation of F 5 , 2 + 1 = −2, 2 • (−1) = −2, and (2 + 1) • 2 = 1 hold.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_1"><head>Example 8 .</head><label>8</label><figDesc>Continuing with the definition of Example 4. First define some variables:(declare-fun x0 () FF5) (declare-fun x1 () FF5) (declare-fun x2 () FF5)</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_2"><head>(</head><label></label><figDesc>assert (= (ff.mul x1 x2) (ff.add x1 x2))) (assert (= (ff.recip x1) x0)) (assert (= (ff.sub x2 x0)) (as ff1 FF5))</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>Different ways to define literals</figDesc><table><row><cell>−1 2</cell><cell>⌋︁</cell><cell>, . . . ,</cell><cell>⌊︀ 𝑝 2</cell><cell>⌋︀ } are normalized. Every literal outside this set is</cell></row><row><cell cols="5">mapped to the corresponding normalized literal by utilizing smod(𝑁 ). Using this operation, the input</cell></row><row><cell cols="5">gets mapped to the (unique) normalized representative of the same congruence class modulo 𝑝. In the</cell></row></table></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_1"><head>Table 2 A</head><label>2</label><figDesc>summary of finite field operations for a finite field type 𝐹 .</figDesc><table><row><cell cols="2">Identifier Sort</cell><cell>Meaning</cell></row><row><cell>ff.add</cell><cell cols="2">𝐹 × 𝐹 → 𝐹 finite field addition</cell></row><row><cell>ff.sub</cell><cell cols="2">𝐹 × 𝐹 → 𝐹 finite field subtraction</cell></row><row><cell>ff.mul</cell><cell cols="2">𝐹 × 𝐹 → 𝐹 finite field multiplication</cell></row><row><cell>ff.div</cell><cell cols="2">𝐹 × 𝐹 → 𝐹 finite field division</cell></row><row><cell>ff.neg</cell><cell>𝐹 → 𝐹</cell><cell>finite field negation</cell></row><row><cell cols="2">ff.recip 𝐹 → 𝐹</cell><cell>finite field reciprocal</cell></row></table></figure>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="1" xml:id="foot_0">In honor of French mathematician Évariste Galois, finite fields are also called Galois fields.</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="2" xml:id="foot_1">In the (isomorphic) representation 𝑆 = {0, . . . , 𝑝 − 1}, (with addition and multiplication modulo 𝑝), small "negative" values (such as −1) are instead represented as large positive values (such as 𝑝 − 1), which can be unintuitive to read. We choose our representation because small negative values are common in many applications.</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="4" xml:id="foot_2">We recommend that solvers test 𝑝's primality probabilistically, for example with a 40-repetition Miller-Rabin test<ref type="bibr" target="#b65">[66]</ref>. If 𝑝 is not prime, the solver can report an error. If 𝑝 is prime or if the test is inconclusive, the solver may assume that 𝑝 is prime and continue.</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="5" xml:id="foot_3">We choose different syntaxes for prime fields and their extensions so that a user who is only interested in prime fields need not understand or even be aware of extension fields.</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="6" xml:id="foot_4">Here, "m" denotes modulo and "p" denotes power. But, note that F𝑝𝑛 and Z𝑝𝑛 are not isomorphic for 𝑛 &gt; 1.</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="7" xml:id="foot_5">Since ff.neg and ff.recip are defined as well, ff.sub and ff.div are redundant. However, we believe that all common mathematical operations should have operations in the finite field theory. Furthermore, other arithmetic theories in SMT-LIB also define redundant subtraction and division operators.</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="8" xml:id="foot_6">Note that ff.div is not Euclidean division, rather it is multiplication by an inverse in the field. Thus, the remainder of a division, i.e. ff.rem, would not be meaningful.</note>
		</body>
		<back>

			<div type="acknowledgement">
<div xmlns="http://www.tei-c.org/ns/1.0"><p>Acknowledgements. We thank Ahmed Irfan, Alp Bassa, Clark Barrett, Daniela Kaufmann, Gereon Kremer, Shankara Pailoor, Sorawee Porncharoenwase, and the SMT'24 reviewers for valuable discussion and feedback. We further thank Stéphane Graham-Lengrand for hosting the first author for a research stay at SRI during which the idea for this work initiated. We acknowledge funding from the TU Wien SecInt Doctoral College, NSF grant number 2110397, the Stanford Center for Automated Reasoning, and the Simons Foundation.</p></div>
			</div>

			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<monogr>
		<author>
			<persName><forename type="first">E</forename><surname>Barker</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><surname>Chen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Roginsky</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Vassilev</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Davis</surname></persName>
		</author>
		<idno type="DOI">10.6028/NIST.SP.800-56Ar3</idno>
		<ptr target="https://doi.org/10.6028/NIST.SP.800-56Ar3" />
		<title level="m">Recommendation for pair-wise key-establishment schemes using discrete logarithm cryptography</title>
				<imprint>
			<date type="published" when="2018">2018</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<monogr>
		<author>
			<persName><forename type="first">P</forename><surname>Kotzias</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Razaghpanah</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Amann</surname></persName>
		</author>
		<author>
			<persName><forename type="first">K</forename><forename type="middle">G</forename><surname>Paterson</surname></persName>
		</author>
		<author>
			<persName><forename type="first">N</forename><surname>Vallina-Rodriguez</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Caballero</surname></persName>
		</author>
		<title level="m">Coming of age: A longitudinal study of TLS deployment</title>
				<imprint>
			<publisher>IMC</publisher>
			<date type="published" when="2018">2018</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<monogr>
		<title level="m" type="main">TLS beyond the browser: Combining end host and network data to understand application behavior</title>
		<author>
			<persName><forename type="first">B</forename><surname>Anderson</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Mcgrew</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2019">2019</date>
			<publisher>IMC</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<monogr>
		<author>
			<persName><forename type="first">D</forename><forename type="middle">J</forename><surname>Bernstein</surname></persName>
		</author>
		<title level="m">The Poly1305-AES message-authentication code</title>
				<imprint>
			<publisher>FSE</publisher>
			<date type="published" when="2005">2005</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<monogr>
		<author>
			<persName><forename type="first">J</forename><surname>Salowey</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Choudhury</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Mcgrew</surname></persName>
		</author>
		<title level="m">AES galois counter mode (GCM) cipher suites for TLS</title>
				<imprint>
			<date type="published" when="2008">2008</date>
		</imprint>
	</monogr>
	<note>Rfc 5288</note>
</biblStruct>

<biblStruct xml:id="b5">
	<analytic>
		<title level="a" type="main">The knowledge complexity of interactive proof-systems (extended abstract)</title>
		<author>
			<persName><forename type="first">S</forename><surname>Goldwasser</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Micali</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Rackoff</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">STOC</title>
		<imprint>
			<date type="published" when="1985">1985</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<analytic>
		<title level="a" type="main">Pinocchio: Nearly practical verifiable computation</title>
		<author>
			<persName><forename type="first">B</forename><surname>Parno</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Howell</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Gentry</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Raykova</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Communications of the ACM</title>
		<imprint>
			<date type="published" when="2016">2016</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b7">
	<analytic>
		<title level="a" type="main">On the size of pairing-based non-interactive arguments</title>
		<author>
			<persName><forename type="first">J</forename><surname>Groth</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">EUROCRYPT</title>
		<imprint>
			<date type="published" when="2016">2016</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b8">
	<monogr>
		<author>
			<persName><forename type="first">S</forename><surname>Chaliasos</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Ernstberger</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Theodore</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Wong</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Jahanara</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Livshits</surname></persName>
		</author>
		<idno type="arXiv">arXiv:2402.15293</idno>
		<title level="m">SoK: What don&apos;t we know? understanding security vulnerabilities in SNARKs</title>
				<imprint>
			<date type="published" when="2024">2024</date>
		</imprint>
	</monogr>
	<note type="report_type">arXiv preprint</note>
</biblStruct>

<biblStruct xml:id="b9">
	<analytic>
		<title level="a" type="main">Multiparty computation from somewhat homomorphic encryption</title>
		<author>
			<persName><forename type="first">I</forename><surname>Damgård</surname></persName>
		</author>
		<author>
			<persName><forename type="first">V</forename><surname>Pastro</surname></persName>
		</author>
		<author>
			<persName><forename type="first">N</forename><surname>Smart</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Zakarias</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">CRYPTO</title>
		<imprint>
			<date type="published" when="2012">2012</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b10">
	<monogr>
		<author>
			<persName><forename type="first">M</forename><surname>Hastings</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Hemenway</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Noble</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Zdancewic</surname></persName>
		</author>
		<title level="m">SoK: General purpose compilers for secure multi-party computation</title>
				<imprint>
			<publisher>IEEE S&amp;P</publisher>
			<date type="published" when="2019">2019</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b11">
	<monogr>
		<title level="m" type="main">On lattices, learning with errors, random linear codes, and cryptography</title>
		<author>
			<persName><forename type="first">O</forename><surname>Regev</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2009">2009</date>
			<publisher>J. ACM</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b12">
	<monogr>
		<title level="m" type="main">SoK: Fully homomorphic encryption compilers</title>
		<author>
			<persName><forename type="first">A</forename><surname>Viand</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Jattke</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Hithnawi</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2021">2021</date>
			<publisher>IEEE S&amp;P</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b13">
	<analytic>
		<title level="a" type="main">Dafny: An automatic program verifier for functional correctness</title>
		<author>
			<persName><forename type="first">K</forename><forename type="middle">R M</forename><surname>Leino</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">LPAR</title>
				<imprint>
			<date type="published" when="2010">2010</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b14">
	<analytic>
		<title level="a" type="main">Boogie: A modular reusable verifier for object-oriented programs</title>
		<author>
			<persName><forename type="first">M</forename><surname>Barnett</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B.-Y</forename><forename type="middle">E</forename><surname>Chang</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Deline</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Jacobs</surname></persName>
		</author>
		<author>
			<persName><forename type="first">K</forename><forename type="middle">R M</forename><surname>Leino</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Formal Methods for Components and Objects</title>
				<imprint>
			<date type="published" when="2006">2006</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b15">
	<monogr>
		<author>
			<persName><forename type="first">D</forename><forename type="middle">S</forename><surname>Dummit</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><forename type="middle">M</forename><surname>Foote</surname></persName>
		</author>
		<title level="m">Abstract algebra</title>
				<imprint>
			<publisher>Wiley Hoboken</publisher>
			<date type="published" when="2004">2004</date>
			<biblScope unit="volume">3</biblScope>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b16">
	<monogr>
		<author>
			<persName><forename type="first">A</forename><surname>Ozdemir</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Kremer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Tinelli</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Barrett</surname></persName>
		</author>
		<title level="m">Satisfiability modulo finite fields</title>
				<imprint>
			<publisher>CAV</publisher>
			<date type="published" when="2023">2023</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b17">
	<monogr>
		<author>
			<persName><forename type="first">A</forename><surname>Niemetz</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Preiner</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Y</forename><surname>Zohar</surname></persName>
		</author>
		<title level="m">Scalable bit-blasting with abstractions</title>
				<imprint>
			<publisher>CAV</publisher>
			<date type="published" when="2024">2024</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b18">
	<analytic>
		<title level="a" type="main">The design and implementation of the model constructing satisfiability calculus</title>
		<author>
			<persName><forename type="first">D</forename><surname>Jovanovic</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Barrett</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><forename type="middle">De</forename><surname>Moura</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">FMCAD</title>
				<imprint>
			<date type="published" when="2013">2013</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b19">
	<monogr>
		<title level="m" type="main">Non-linear SMT-reasoning over finite fields</title>
		<author>
			<persName><forename type="first">T</forename><surname>Hader</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2022">2022</date>
		</imprint>
		<respStmt>
			<orgName>TU Wien</orgName>
		</respStmt>
	</monogr>
	<note type="report_type">MSc Thesis</note>
</biblStruct>

<biblStruct xml:id="b20">
	<analytic>
		<title level="a" type="main">Non-linear SMT-reasoning over finite fields</title>
		<author>
			<persName><forename type="first">T</forename><surname>Hader</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><surname>Kovács</surname></persName>
		</author>
		<ptr target="Abstract" />
	</analytic>
	<monogr>
		<title level="m">SMT</title>
				<imprint>
			<date type="published" when="2022">2022</date>
		</imprint>
	</monogr>
	<note>extended</note>
</biblStruct>

<biblStruct xml:id="b21">
	<analytic>
		<title level="a" type="main">SMT solving over finite field arithmetic</title>
		<author>
			<persName><forename type="first">T</forename><surname>Hader</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Kaufmann</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><surname>Kovács</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">LPAR</title>
				<imprint>
			<date type="published" when="2023">2023</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b22">
	<analytic>
		<title/>
		<author>
			<persName><forename type="first">B</forename><surname>Dutertre</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Yices</title>
		<imprint>
			<biblScope unit="volume">2</biblScope>
			<date type="published" when="2014">2014</date>
			<publisher>CAV</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b23">
	<monogr>
		<title level="m" type="main">MCSat-based Finite Field Reasoning in the Yices2 SMT Solver</title>
		<author>
			<persName><forename type="first">T</forename><surname>Hader</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Kaufmann</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Irfan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Graham-Lengrand</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><surname>Kovács</surname></persName>
		</author>
		<idno type="arXiv">arXiv:2402.17927</idno>
		<imprint>
			<date type="published" when="2024">2024</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b24">
	<monogr>
		<title level="m" type="main">Split Gröbner bases for satisfiability modulo finite fields</title>
		<author>
			<persName><forename type="first">A</forename><surname>Ozdemir</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Pailoor</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Bassa</surname></persName>
		</author>
		<author>
			<persName><forename type="first">K</forename><surname>Ferles</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Barrett</surname></persName>
		</author>
		<author>
			<persName><forename type="first">I</forename><surname>Dillig</surname></persName>
		</author>
		<ptr target="https://ia.cr/2024/572" />
		<imprint>
			<date type="published" when="2024">2024</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b25">
	<analytic>
		<title level="a" type="main">cvc5: A versatile and industrial-strength SMT solver</title>
		<author>
			<persName><forename type="first">H</forename><surname>Barbosa</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><forename type="middle">W</forename><surname>Barrett</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Brain</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Kremer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Lachnitt</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Mann</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Mohamed</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Mohamed</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Niemetz</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Nötzli</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Ozdemir</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Preiner</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Reynolds</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Y</forename><surname>Sheng</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Tinelli</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Y</forename><surname>Zohar</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">TACAS</title>
		<imprint>
			<date type="published" when="2022">2022</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b26">
	<monogr>
		<author>
			<persName><forename type="first">A</forename><surname>Ozdemir</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><forename type="middle">S</forename><surname>Wahby</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Brown</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Barrett</surname></persName>
		</author>
		<title level="m">Bounded verification for finite-field-blasting</title>
				<imprint>
			<publisher>CAV</publisher>
			<date type="published" when="2023">2023</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b27">
	<monogr>
		<title level="m" type="main">Automated detection of under-constrained circuits in zero-knowledge proofs</title>
		<author>
			<persName><forename type="first">S</forename><surname>Pailoor</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Y</forename><surname>Chen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Wang</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Rodríguez</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Van Geffen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Morton</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Chu</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Gu</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Y</forename><surname>Feng</surname></persName>
		</author>
		<author>
			<persName><forename type="first">I</forename><surname>Dillig</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2023">2023</date>
			<publisher>PLDI</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b28">
	<analytic>
		<title level="a" type="main">Circom: A circuit description language for building zero-knowledge applications</title>
		<author>
			<persName><forename type="first">M</forename><surname>Bellés-Muñoz</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Isabel</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">L</forename><surname>Muñoz-Tapia</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Rubio</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Baylina</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">IEEE Transactions on Dependable and Secure Computing</title>
		<imprint>
			<date type="published" when="2022">2022</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b29">
	<monogr>
		<title level="m" type="main">Automated analysis of Halo2 circuits</title>
		<author>
			<persName><forename type="first">F</forename><forename type="middle">H</forename><surname>Soureshjani</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Hall-Andersen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Jahanara</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Kam</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Gorzny</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Ahmadvand</surname></persName>
		</author>
		<ptr target="https://ia.cr/2023/1051" />
		<imprint>
			<date type="published" when="2023">2023</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b30">
	<monogr>
		<title level="m" type="main">Plonky2: Fast recursive arguments with Plonk and FRI</title>
		<author>
			<persName><forename type="first">P</forename><surname>Zero</surname></persName>
		</author>
		<ptr target="https://github.com/0xPolygonZero/plonky2/blob/main/plonky2/plonky2.pdf" />
		<imprint>
			<date type="published" when="2022">2022</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b31">
	<analytic>
		<title level="a" type="main">Fast reed-solomon interactive oracle proofs of proximity</title>
		<author>
			<persName><forename type="first">E</forename><surname>Ben-Sasson</surname></persName>
		</author>
		<author>
			<persName><forename type="first">I</forename><surname>Bentov</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Y</forename><surname>Horesh</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Riabzev</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">ICALP</title>
				<imprint>
			<date type="published" when="2018">2018</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b32">
	<monogr>
		<author>
			<persName><forename type="first">A</forename><surname>Erbsen</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Philipoom</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Gross</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Sloan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Chlipala</surname></persName>
		</author>
		<title level="m">Simple high-level code for cryptographic arithmetic -with proofs</title>
				<imprint>
			<date type="published" when="2020">2020</date>
		</imprint>
	</monogr>
	<note>without compromises</note>
</biblStruct>

<biblStruct xml:id="b33">
	<analytic>
		<title level="a" type="main">Easycrypt: A tutorial</title>
		<author>
			<persName><forename type="first">G</forename><surname>Barthe</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Dupressoir</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Grégoire</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Kunz</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Schmidt</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P.-Y</forename><surname>Strub</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">International School on Foundations of Security Analysis and Design</title>
				<imprint>
			<date type="published" when="2012">2012</date>
			<biblScope unit="page" from="146" to="166" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b34">
	<monogr>
		<author>
			<persName><forename type="first">J.-K</forename><surname>Zinzindohoué</surname></persName>
		</author>
		<author>
			<persName><forename type="first">K</forename><surname>Bhargavan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Protzenko</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Beurdouche</surname></persName>
		</author>
		<title level="m">HACL*: A verified modern cryptographic library</title>
				<imprint>
			<publisher>CCS</publisher>
			<date type="published" when="2017">2017</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b35">
	<monogr>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">B</forename><surname>Almeida</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Barbosa</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Barthe</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Blot</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Grégoire</surname></persName>
		</author>
		<author>
			<persName><forename type="first">V</forename><surname>Laporte</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Oliveira</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Pacheco</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Schmidt</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P.-Y</forename><surname>Strub</surname></persName>
		</author>
		<title level="m">Jasmin: High-assurance and high-speed cryptography</title>
				<imprint>
			<publisher>CCS</publisher>
			<date type="published" when="2017">2017</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b36">
	<monogr>
		<title level="m" type="main">Formal verification of zero-knowledge circuits</title>
		<author>
			<persName><forename type="first">A</forename><surname>Coglio</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><surname>Mccarthy</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><forename type="middle">W</forename><surname>Smith</surname></persName>
		</author>
		<idno type="DOI">10.4204/EPTCS.393.9</idno>
		<ptr target="http://dx.doi.org/10.4204/EPTCS.393.9" />
		<imprint>
			<date type="published" when="2023">2023</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b37">
	<monogr>
		<author>
			<persName><forename type="first">J</forename><surname>Liu</surname></persName>
		</author>
		<author>
			<persName><forename type="first">I</forename><surname>Kretz</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Liu</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Tan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Wang</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Y</forename><surname>Sun</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><surname>Pearson</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Miltner</surname></persName>
		</author>
		<author>
			<persName><forename type="first">I</forename><surname>Dillig</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Y</forename><surname>Feng</surname></persName>
		</author>
		<idno type="arXiv">arXiv:2304.07648</idno>
		<title level="m">Certifying zero-knowledge circuits with refinement types</title>
				<imprint>
			<date type="published" when="2023">2023</date>
		</imprint>
	</monogr>
	<note type="report_type">arXiv preprint</note>
</biblStruct>

<biblStruct xml:id="b38">
	<analytic>
		<title level="a" type="main">Less is more: refinement proofs for probabilistic proofs</title>
		<author>
			<persName><forename type="first">K</forename><surname>Jiang</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Chait-Roth</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Z</forename><surname>Destefano</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Walfish</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Wies</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">IEEE S&amp;P</title>
		<imprint>
			<date type="published" when="2023">2023</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b39">
	<monogr>
		<author>
			<persName><forename type="first">B</forename><surname>Ekici</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Mebsout</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Tinelli</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Keller</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Katz</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Reynolds</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Barrett</surname></persName>
		</author>
		<title level="m">SMTCoq: A plug-in for integrating SMT solvers into Coq</title>
				<imprint>
			<publisher>CAV</publisher>
			<date type="published" when="2017">2017</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b40">
	<analytic>
		<title level="a" type="main">The TAMARIN prover for the symbolic analysis of security protocols</title>
		<author>
			<persName><forename type="first">S</forename><surname>Meier</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Schmidt</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Cremers</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Basin</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Computer Aided Verification: 25th International Conference, CAV 2013</title>
				<meeting><address><addrLine>Saint Petersburg, Russia</addrLine></address></meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2013">July 13-19, 2013. 2013</date>
			<biblScope unit="page" from="696" to="701" />
		</imprint>
	</monogr>
	<note>Proceedings 25</note>
</biblStruct>

<biblStruct xml:id="b41">
	<monogr>
		<author>
			<persName><forename type="first">B</forename><surname>Blanchet</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Smyth</surname></persName>
		</author>
		<author>
			<persName><forename type="first">V</forename><surname>Cheval</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Sylvestre</surname></persName>
		</author>
		<title level="m">ProVerif 2.00: automatic cryptographic protocol verifier, user manual and tutorial</title>
				<imprint>
			<date type="published" when="2018">2018</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b42">
	<analytic>
		<title level="a" type="main">A formal security analysis of the Signal messaging protocol</title>
		<author>
			<persName><forename type="first">K</forename><surname>Cohn-Gordon</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Cremers</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Dowling</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><surname>Garratt</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Stebila</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Journal of Cryptology</title>
		<imprint>
			<biblScope unit="volume">33</biblScope>
			<biblScope unit="page" from="1914" to="1983" />
			<date type="published" when="2020">2020</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b43">
	<monogr>
		<author>
			<persName><forename type="first">C</forename><surname>Cremers</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Jackson</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Prime</forename></persName>
		</author>
		<title level="m">order please! revisiting small subgroup and invalid curve attacks on protocols using Diffie-Hellman</title>
				<imprint>
			<publisher>CSF</publisher>
			<date type="published" when="2019">2019</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b44">
	<analytic>
		<title level="a" type="main">Deciding the consistency of non-linear real arithmetic constraints with a conflict driven search using cylindrical algebraic coverings</title>
		<author>
			<persName><forename type="first">E</forename><surname>Ábrahám</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">H</forename><surname>Davenport</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>England</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Kremer</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Journal of Logical and Algebraic Methods in Programming</title>
		<imprint>
			<biblScope unit="volume">119</biblScope>
			<date type="published" when="2021">2021</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b45">
	<analytic>
		<title level="a" type="main">Experimenting on solving nonlinear integer arithmetic with incremental linearization</title>
		<author>
			<persName><forename type="first">A</forename><surname>Cimatti</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Griggio</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Irfan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Roveri</surname></persName>
		</author>
		<author>
			<persName><forename type="first">R</forename><surname>Sebastiani</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">International Conference on Theory and Applications of Satisfiability Testing</title>
				<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2018">2018</date>
			<biblScope unit="page" from="383" to="398" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b46">
	<analytic>
		<title level="a" type="main">Polyhedral approximation of multivariate polynomials using Handelman&apos;s theorem</title>
		<author>
			<persName><forename type="first">A</forename><surname>Maréchal</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Fouilhé</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>King</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Monniaux</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Périn</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">VMCAI</title>
				<imprint>
			<date type="published" when="2016">2016</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b47">
	<analytic>
		<title level="a" type="main">Efficient solving of large non-linear arithmetic constraint systems with complex boolean structure</title>
		<author>
			<persName><forename type="first">M</forename><surname>Fränzle</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Herde</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Teige</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Ratschan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Schubert</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Journal on Satisfiability, Boolean Modeling and Computation</title>
		<imprint>
			<biblScope unit="volume">1</biblScope>
			<date type="published" when="2006">2006</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b48">
	<analytic>
		<title level="a" type="main">raSAT: An SMT solver for polynomial constraints</title>
		<author>
			<persName><forename type="first">V</forename><forename type="middle">X</forename><surname>Tung</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><forename type="middle">V</forename><surname>Khanh</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Ogawa</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">IJCAR</title>
				<imprint>
			<date type="published" when="2016">2016</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b49">
	<monogr>
		<title level="m" type="main">Cutting to the chase solving linear integer arithmetic</title>
		<author>
			<persName><forename type="first">D</forename><surname>Jovanović</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><forename type="middle">D</forename><surname>Moura</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2011">2011</date>
			<publisher>CADE</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b50">
	<monogr>
		<title level="m" type="main">Cuts from proofs: A complete and practical technique for solving linear inequalities over integers</title>
		<author>
			<persName><forename type="first">I</forename><surname>Dillig</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Dillig</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Aiken</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2009">2009</date>
			<biblScope unit="page" from="233" to="247" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b51">
	<analytic>
		<title level="a" type="main">SMT-RAT: an open source C++ toolbox for strategic and parallel SMT solving</title>
		<author>
			<persName><forename type="first">F</forename><surname>Corzilius</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Kremer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Junges</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Schupp</surname></persName>
		</author>
		<author>
			<persName><forename type="first">E</forename><surname>Ábrahám</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">SAT</title>
				<imprint>
			<date type="published" when="2015">2015</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b52">
	<analytic>
		<title level="a" type="main">Solving non-linear arithmetic</title>
		<author>
			<persName><forename type="first">D</forename><surname>Jovanović</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><forename type="middle">De</forename><surname>Moura</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">ACM Communications in Computer Algebra</title>
		<imprint>
			<biblScope unit="volume">46</biblScope>
			<date type="published" when="2013">2013</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b53">
	<monogr>
		<title level="m" type="main">Solving nonlinear integer arithmetic with MCSAT</title>
		<author>
			<persName><forename type="first">D</forename><surname>Jovanović</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2017">2017</date>
			<publisher>VMCAI</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b54">
	<monogr>
		<title level="m" type="main">A model-constructing satisfiability calculus</title>
		<author>
			<persName><forename type="first">L</forename><forename type="middle">D</forename><surname>Moura</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Jovanović</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2013">2013</date>
			<publisher>VMCAI</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b55">
	<analytic>
		<title level="a" type="main">Local search for satisfiability modulo integer arithmetic theories</title>
		<author>
			<persName><forename type="first">S</forename><surname>Cai</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Li</surname></persName>
		</author>
		<author>
			<persName><forename type="first">X</forename><surname>Zhang</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">ACM Transactions on Computational Logic</title>
		<imprint>
			<date type="published" when="2023">2023</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b56">
	<monogr>
		<title level="m" type="main">Deep combination of CDCL (T) and local search for satisfiability modulo non-linear integer arithmetic theory</title>
		<author>
			<persName><forename type="first">X</forename><surname>Zhang</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Li</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Cai</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2024">2024</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b57">
	<analytic>
		<title level="a" type="main">Efficient local search for nonlinear real arithmetic</title>
		<author>
			<persName><forename type="first">Z</forename><surname>Wang</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Zhan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Li</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Cai</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">VMCAI</title>
				<imprint>
			<date type="published" when="2023">2023</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b58">
	<monogr>
		<author>
			<persName><forename type="first">B</forename><forename type="middle">F</forename><surname>Caviness</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">R</forename><surname>Johnson</surname></persName>
		</author>
		<title level="m">Quantifier elimination and cylindrical algebraic decomposition</title>
				<imprint>
			<publisher>Springer Science &amp; Business Media</publisher>
			<date type="published" when="1998">1998</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b59">
	<analytic>
		<title level="a" type="main">Quantifier elimination for real algebra-the quadratic case and beyond</title>
		<author>
			<persName><forename type="first">V</forename><surname>Weispfenning</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Applicable Algebra in Engineering, Communication and Computing</title>
		<imprint>
			<biblScope unit="volume">8</biblScope>
			<date type="published" when="1997">1997</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b60">
	<monogr>
		<author>
			<persName><forename type="first">R</forename><surname>Lidl</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Niederreiter</surname></persName>
		</author>
		<title level="m">Introduction to finite fields and their applications</title>
				<imprint>
			<publisher>Cambridge university press</publisher>
			<date type="published" when="1994">1994</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b61">
	<monogr>
		<author>
			<persName><forename type="first">R</forename><forename type="middle">J</forename><surname>Mceliece</surname></persName>
		</author>
		<title level="m">Finite fields for computer scientists and engineers</title>
				<imprint>
			<publisher>Springer Science &amp; Business Media</publisher>
			<date type="published" when="2012">2012</date>
			<biblScope unit="volume">23</biblScope>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b62">
	<monogr>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">A</forename><surname>Gallian</surname></persName>
		</author>
		<title level="m">Contemporary Abstract Algebra</title>
				<imprint>
			<publisher>Chapman and Hall/CRC</publisher>
			<date type="published" when="2021">2021</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b63">
	<analytic>
		<title level="a" type="main">New algorithms for generating conway polynomials over finite fields</title>
		<author>
			<persName><forename type="first">L</forename><forename type="middle">S</forename><surname>Heath</surname></persName>
		</author>
		<author>
			<persName><forename type="first">N</forename><forename type="middle">A</forename><surname>Loehr</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Journal of Symbolic Computation</title>
		<imprint>
			<biblScope unit="volume">38</biblScope>
			<biblScope unit="page" from="1003" to="1024" />
			<date type="published" when="2004">2004</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b64">
	<monogr>
		<author>
			<persName><forename type="first">F</forename><surname>Lübeck</surname></persName>
		</author>
		<ptr target="https://github.com/sagemath/conway-polynomials" />
		<title level="m">Conway polynomials for finite fields, ???? Pre-computed Conway polynomials</title>
				<imprint/>
	</monogr>
</biblStruct>

<biblStruct xml:id="b65">
	<analytic>
		<title level="a" type="main">Probabilistic algorithm for testing primality</title>
		<author>
			<persName><forename type="first">M</forename><forename type="middle">O</forename><surname>Rabin</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Journal of number theory</title>
		<imprint>
			<biblScope unit="volume">12</biblScope>
			<biblScope unit="page" from="128" to="138" />
			<date type="published" when="1980">1980</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b66">
	<analytic>
		<title level="a" type="main">Libpoly: A library for reasoning about polynomials</title>
		<author>
			<persName><forename type="first">D</forename><surname>Jovanovic</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Dutertre</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Intl. Workshop on Satisfiability Modulo Theories (SMT), CEUR Workshop Proceedings</title>
				<imprint>
			<date type="published" when="2017">2017</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b67">
	<analytic>
		<title level="a" type="main">Gröbner bases for everyone with CoCoA-5 and CoCoALib</title>
		<author>
			<persName><forename type="first">J</forename><surname>Abbott</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><forename type="middle">M</forename><surname>Bigatti</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">The 50th Anniversary of Gröbner Bases</title>
				<meeting><address><addrLine>Japan</addrLine></address></meeting>
		<imprint>
			<publisher>Mathematical Society</publisher>
			<date type="published" when="2018">2018</date>
			<biblScope unit="volume">77</biblScope>
			<biblScope unit="page" from="1" to="25" />
		</imprint>
	</monogr>
</biblStruct>

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