<?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">Reconstruction of SMT proofs with Lambdapi</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Alessio</forename><surname>Coltellacci</surname></persName>
							<affiliation key="aff0">
								<orgName type="institution" key="instit1">University of Lorraine</orgName>
								<orgName type="institution" key="instit2">CNRS</orgName>
								<orgName type="institution" key="instit3">Inria</orgName>
								<address>
									<region>Nancy</region>
									<country key="FR">France</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Gilles</forename><surname>Dowek</surname></persName>
							<affiliation key="aff1">
								<orgName type="institution" key="instit1">University of Paris-Saclay</orgName>
								<orgName type="institution" key="instit2">Inria</orgName>
								<orgName type="institution" key="instit3">ENS Paris-Saclay</orgName>
								<orgName type="institution" key="instit4">CNRS</orgName>
								<orgName type="institution" key="instit5">LMF</orgName>
								<address>
									<settlement>Gif-sur-Yvette</settlement>
									<country key="FR">France</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Stephan</forename><surname>Merz</surname></persName>
							<affiliation key="aff0">
								<orgName type="institution" key="instit1">University of Lorraine</orgName>
								<orgName type="institution" key="instit2">CNRS</orgName>
								<orgName type="institution" key="instit3">Inria</orgName>
								<address>
									<region>Nancy</region>
									<country key="FR">France</country>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">Reconstruction of SMT proofs with Lambdapi</title>
					</analytic>
					<monogr>
						<idno type="ISSN">1613-0073</idno>
					</monogr>
					<idno type="MD5">A7545064F3706644FBF77047A82AD13B</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>The Alethe format is a representation of unsatisfiability proofs that has been adopted by several SMT solvers. We describe work in progress for interpreting Alethe proofs and generating corresponding proofs that are accepted by the Lambdapi proof checker, a foundational proof assistant based on dependent type theory and rewriting rules that serve as a pivot for exchanging proofs between several interactive proof assistants. We give an overview of the encoding of SMT logic and Alethe proofs in Lambdapi and present initial results of the evaluation of the checker on benchmark examples.</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>SMT solvers are widely used as automatic proof engines within interactive theorem provers or program verification tools. When they are used as trusted proof engines, any bugs in the SMT solver could lead to inconsistent theorems in the interactive prover, where correctness is paramount. State-of-the-art SMT solvers have been found to have bugs <ref type="bibr" target="#b0">[1]</ref> due in part to error-prone optimizations, despite the best efforts of developers.</p><p>State-of-the-art SMT solvers can produce certificates (or proof traces) that can be checked independently, thus avoiding integrators to place blind trust in proof backends. This approach presents a good compromise between formally verifying the correctness of the solvers and not affecting their performance. For example, it has been adopted in <ref type="bibr" target="#b1">[2,</ref><ref type="bibr" target="#b2">3]</ref> to reconstruct the proof trace in the proof assistant Isabelle/HOL.</p><p>In this paper, we describe how SMT proofs can be reconstruced in the proof assistant Lambdapi <ref type="bibr" target="#b3">[4]</ref>, an offspring of Dedukti. Lambdapi is an interactive proof system based on the 𝜆Π-calculus modulo rewriting, featuring dependent types as in Martin-Löf's type theory and allowing users to define rewriting rules in order to reason modulo equations. It is intended as an assembly language for proof assistants, enabling mechanical conversions of proofs between different systems through its built-in export or with its galaxy of external tools that provide interoperability between Lambdapi and other theorem provers (Figure <ref type="figure" target="#fig_0">1</ref>). Consequently, the aims of our approach are twofold: reconstructing SMT proofs in Lambdapi to guarantee their correctness as well as translating the proofs so that they can be accepted by proof assistants such as Coq or Lean so that they can benefit from SMT proof support.</p><p>Our work is based on the proof checker Carcara <ref type="bibr" target="#b4">[5]</ref> implemented in Rust, an independent checker and elaborator for the SMT proofs format Alethe. This proof format is supported by the veriT solver, and more recently by the CVC5 solver <ref type="bibr" target="#b5">[6]</ref>. We present an extension of Carcara for translating the Alethe proof into Lambdapi. We took advantage of Carcara's elaboration of Alethe's proof, which helps increase the success rate of proof reconstruction. The Alethe format allows steps of different granularity, facilitating proof production, but verifying coarse-grained steps can require expensive proof search and may lead to verification failures. Proof elaboration by Carcara transforms coarse-grained steps into more fine-grained ones, increasing the potential success rate of reconstructing Alethe proofs.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Overview of the paper</head><p>Section 2 introduces the Alethe proof format and describes the elaborated proof produced by Carcara. In Section 3, we present first the embedding of Alethe logic in Lambdapi, and then how we extended Carcara to mechanically translate an elaborated Alethe proof into a Lambdapi proof script. In Section 4, we argue the soundness property of our work, and Section 5 provides an evaluation on a set of proofs from the SMT-LIB benchmarks and proof obligations of a case study from the proof assistant TLAPS. We conclude and outline future work in Section 6.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Related work</head><p>Hammers are components of some proof assistants such as Sledgehammer <ref type="bibr" target="#b6">[7]</ref> for Isabelle/HOL, and CoqHammer <ref type="bibr" target="#b7">[8,</ref><ref type="bibr" target="#b8">9]</ref> for Coq, that employ first-order automatic theorem provers (ATPs), including SMT solvers, to discharge goals. The hammer translates the conjecture and any user-supplied facts to the input language of the back-end, invokes it, and in the case of success attempts to reconstruct the proof in the logic of the proof assistant, based on a trace of the proof found by the back-end. For example, adoption by Sledgehammer of the Alethe format generated by the SMT solver veriT <ref type="bibr" target="#b2">[3,</ref><ref type="bibr" target="#b9">10]</ref> cut the failure rate of reconstruction by 50% and reduced the checking time by 13%. These results encouraged us to select the Alethe proof format to construct our solution.</p><p>SMTCoq is a Coq plugin written in Coq and fully certified <ref type="bibr" target="#b10">[11]</ref> that checks proof witnesses coming from external SAT and SMT solvers. For proof reconstruction, SMTCoq relies on computational reflection: the certificate is directly processed by the reduction mechanism of Coq's kernel. In our first investigations, we attempted to convert the SMTCoq proof certificate to Lambdapi. However, we found the proof term generated by computational reflection, including subterms corresponding to arithmetic decision procedures in Micromega <ref type="bibr" target="#b11">[12]</ref>, to be too complex to be converted to Lambdapi. Moreover, SMTCoq supports at this point an old version of the Alethe proof format.</p><p>Carcara <ref type="bibr" target="#b4">[5]</ref> is an independent proof checker and proof elaborator for SMT proofs in the Alethe format that is implemented in Rust. Although Carcara is not a certified checker like SMTCoq, it allows a coarse-grained proof, containing implicit steps, to be elaborated to a fine-grained one that includes more detailed steps or adds missing parameters. The resulting proof is intended to be easier to check by an external proof assistant, in particular given the lack of meta-programming in the vernacular language of Lambdapi.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.">Alethe</head><p>The Alethe proof format <ref type="bibr" target="#b12">[13]</ref> for SMT solvers comprises two parts: the proof language based on SMT-LIB and a collection of proof rules. Alethe proofs are a sequence 𝑎 1 . . . 𝑎 𝑚 , 𝑡 1 , . . . , 𝑡 𝑛 where the 𝑎 𝑖 s correspond to the original SMT instance being refuted, each 𝑡 𝑖 is a clause inferred from previous elements of the sequence, and 𝑡 𝑛 is ⊥ (the empty clause). In the following sections, we designate the SMT-LIB problem as the input problem. Listing 1: Guiding input problem and its Alethe proof found by CVC5</p><p>In the following, we will use the input problem example Listing 1 with its Alethe proof (found by CVC5) to provide an overview of Alethe concepts and to illustrate our embedding in Lambdapi.</p><p>An Alethe proof inherits the declarations of its input problem. All symbols (sorts, functions, assertions, etc.) declared or defined in the input problem remain declared or defined, respectively. Furthermore, the syntax for terms, sort, and annotations uses the syntactic rules defined in SMT-LIB <ref type="bibr">[14, §3]</ref> and the SMT signature context Σ defined in [14, §5.1 and §5.2].</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.1.">The Alethe Language</head><p>An Alethe proof is a list of steps representing forward reasoning whose general form is as follows:</p><formula xml:id="formula_0">𝑖 . Γ ▷ 𝑙 1 , . . . , 𝑙 𝑛 ( ℛ 𝑝 1 , . . . , 𝑝 𝑚 ) [𝑎 1 , . . . , 𝑎 𝑟 ]<label>(1)</label></formula><p>index context clause rule premises arguments</p><p>A step consists of an index 𝑖 ∈ I where I is a countable infinite set of indices (e.g. a0, t1), and a clause of literals 𝑙 1 , . . . , 𝑙 𝑛 representing an 𝑛-ary disjunction. A proof rule ℛ depends on a possibly empty set of premises { 𝑝 1 , . . . , 𝑝 𝑚 } ⊆ I that refer to earlier steps. A rule might also depend on a list of arguments [𝑎 1 , . . . , 𝑎 𝑟 ] where each argument 𝑎 𝑖 is either a term or a pair (𝑥 𝑖 , 𝑡 𝑖 ) where 𝑥 𝑖 is a variable and 𝑡 𝑖 is a term. The interpretation of the arguments is rule specific. The context Γ is a list 𝑐 1 , . . . , 𝑐 𝑙 where each element 𝑐 𝑗 is either a variable or a variable-term tuple denoted 𝑐 𝑗 ↦ 𝑡 𝑗 . Therefore steps with a non-empty context contain variables 𝑐 𝑗 in 𝑙 𝑖 that can be substituted by 𝑡 𝑗 . Proof rules ℛ are structured around the introduction of theory lemmas and resolution which captures hyper-resolution on ground first-order clauses.</p><p>We now have the key components to explain the guiding proof Listing 1 that consists of seven steps. The proof starts with several assume steps a0, a1, a2 that restate the assertions from the input problem.</p><p>Step t1 introduces with the rule equiv_pos2 a tautology of the general form</p><formula xml:id="formula_1">¬(𝜙 1 ≈ 𝜙 2 )∨ ¬𝜙 1 ∨ 𝜙 2 .</formula><p>Steps t2, t3, t4 use earlier premises that correspond to previous steps. Step t2 prove 𝑝(𝑎) ≈ 𝑝(𝑏) by congruence (rule cong ) by using the assumption a1. Step t3 derives 𝑝(𝑏) after applying the Unfortunately, Alethe proofs provided by SMT solvers such as veriT and CVC5 can be challenging to reconstruct in a proof assistant. For instance, the order of literals in the clauses is not determined, symmetry of equality is sometimes used implicitly, and pivots for the resolution proof rule are not indicated explicitly.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.2.">Elaborated proof with Carcara</head><p>Carcara provides an elaboration mechanism for Alethe proofs and adds details that can make proof reconstruction easier. For example, one possible elaboration is to mention the pivot(s) for resolution steps. In our guiding example, Carcara elaborates part of the proof of Listing 1 by exposing the pivots of the steps t3 and t4 as arguments of resolution proof rule with a Boolean flag to indicate if the negation of the pivot is in the first or second premise: Carcara can also shorten proofs by removing some trivial transient steps and rewriting the order of literals in a clause. The list of elaborations performed by Carcara can be found in [5, §3.2]. Our translation of Alethe proofs into Lambdapi is based on the elaboration performed by Carcara, relying on it for pre-checking the proof and applying the transformations for making it explicit.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.">Proof reconstruction</head><p>We now describe our embedding of Alethe in Lambdapi, and how we extended Carcara with a new module that can export elaborated Alethe proofs to Lambdapi. Our work applies to input problems expressed in the logics UFLIA, UFNIA or their sub-logics.</p><p>Notation (Alethe signature and judgment). We use Θ instead of Σ to denote the SMT signature context to avoid conflicts with the Lambdapi signature context. Therefore, Θ</p><p>𝒮 represents the set of SMT sort symbols, Θ ℱ the set of function symbols, and Θ 𝒳 the set of variables. We refer to step and assume as commands or sometimes as Alethe judgments.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.1.">Lambdapi</head><p>Lambdapi is an implementation of 𝜆Π modulo theory (𝜆Π/ ≡) <ref type="bibr" target="#b14">[15]</ref>, an extension of 𝜆Π, i.e., the Edinburgh Logical Framework <ref type="bibr" target="#b15">[16]</ref>, a simply typed 𝜆-calculus with dependent types. 𝜆Π/ ≡ adds user-defined higher-order rewrite rules. Its syntax is given by</p><formula xml:id="formula_2">Universes 𝑢 ∶∶= TYPE | KIND Terms 𝑡, 𝑣, 𝐴, 𝐵, 𝐶 ∶∶= 𝑐 | 𝑥 | 𝑢 | Π 𝑥∶ 𝐴. 𝐵 | 𝜆 𝑥∶ 𝐴. 𝑡 | 𝑡 𝑣 Contexts Γ ∶∶= ⟨⟩ | Γ, 𝑥∶ 𝐴 Signatures Σ ∶∶= ⟨⟩ | Σ, 𝑐∶ 𝐶 | Σ, 𝑐 ∶= 𝑡 ∶ 𝐶 | Σ, 𝑡 ↪ 𝑣</formula><p>where 𝑐 is a constant and 𝑥 is a variable (ranging over disjoint sets), 𝐶 is a closed term. Universes are constants used to verify if a type is well-formed -more details can be found in <ref type="bibr">[16,</ref>  𝛽Σ 𝑤, and it must preserve typing, i.e., whenever Γ ⊢ Σ 𝑡 ∶ 𝐴 and 𝑡 ↪ 𝛽Σ 𝑣 then Γ ⊢ Σ 𝑣 ∶ 𝐴 <ref type="bibr" target="#b16">[17]</ref>.</p><p>The typing rules in 𝜆Π/ ≡ are similar to those of 𝜆Π <ref type="bibr">[16, §2]</ref>, except for the additional rule (Conv) that identifies types modulo ≡ 𝛽Σ instead of just modulo ≡ 𝛽 . The constants Set and Prop (lines 1 and 6) are type universes "à la Tarski" <ref type="bibr" target="#b17">[18,</ref><ref type="bibr">§Universes]</ref> in 𝜆Π/ ≡. The type Set represents the universe of small types. We characterize small types as a subclass of types for which we can define equality. SMT sorts are represented in 𝜆Π/ ≡ as elements of type Set. Since elements of type Set are not types themselves, we also introduce a decoding function El∶ Set → TYPE which interpret SMT sorts as 𝜆Π/ ≡ types. Thus, we represent the terms of sort Bool of SMT by elements of type El 𝑜. The constructoris used to encode SMT functions and predicates.</p><formula xml:id="formula_3">Γ, ⊢ Σ 𝐵 ∶ 𝑢 Γ ⊢ Σ 𝑡 ∶ 𝐴 𝐴 ≡ 𝛽Σ 𝐵 Conv Γ ⊢ Σ 𝑡 ∶ 𝐵</formula></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.2.">A Prelude Encoding for Alethe</head><p>The type Prop represents the universe of propositions in 𝜆Π/ ≡. Like Set, elements of type Prop are not types themselves, so we introduce the decoding function Prf∶ Prop → TYPE. By analogy with the Curry-de-Brujin-Howard isomorphism, it embeds propositions into types, mapping each proposition 𝐴 to the type Prf 𝐴 of its proofs. Hence, Bool formulas of SMT are rewritten to 𝜆Π/ ≡ propositions with the rewrite rule defined in line 8. Thereafter, we add the following definitions to those of the standard library:</p><formula xml:id="formula_4">symbol Bool ≔ o; injective symbol Index [a: Set] : N → El a;</formula><p>For convenience, we define an alias Bool for 𝑜. The function Index is used to assign to SMT translated terms a unique identifier, so to compare that two terms are equal it is sufficient to compare their identifier. In Lambdapi syntax, an argument enclosed in square brackets e.g. [a] is declared implicit.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.3.">Classical connectives, quantifiers and facts</head><p>Since SMT-solvers are based on classical logic, we use the constructive connectives and quantifiers from the Lambdapi standard library and define the classical ones from them using the double-negation translation <ref type="bibr" target="#b18">[19]</ref> as a definition.</p><formula xml:id="formula_5">injective symbol Prf 𝑐 p ≔ Prf (¬¬ p); symbol ∨ 𝑐 p q ≔ ¬¬ p ∨ ¬¬ q; constant symbol = [a] : El a → El a → Prop;</formula><p>Therefore, Alethe classical proofs will be decoded by the decoding function Prf 𝑐 (line 1), defined as intuitionistic proof Prf of the doubly negated predicate. Similarly, classical connectives and quantifiers will be defined as illustrated in line 2. Since we want to define equality restricted to small types, equality has a single implicit parameter a: Set and two indices of type El 𝑎.</p><p>We prove the law of excluded middle and add the proposition of Boolean extensionality stating that classical equivalence coincides with equality over Booleans.</p><formula xml:id="formula_6">constant symbol classic [p] : Prf 𝑐 (p ∨ 𝑐 ¬ p); constant symbol prop_ext [p: El o] [q: El o]: Prf 𝑐 (p ⇔ 𝑐 q) → Prf 𝑐 (p = q);</formula></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.4.">Translating functions</head><p>We now describe how we reconstruct input problem definitions and an Alethe proof with Carcara. The translation of Alethe to Lambdapi is built around four functions:</p><p>• 𝒮 maps sorts from Θ 𝒮 to Σ types,</p><p>• ℱ translates terms and formulas to 𝜆Π/ ≡ terms,</p><p>• 𝒟 translates declarations of sorts and functions in Θ 𝒮 and Θ ℱ into constants in Σ,</p><formula xml:id="formula_7">• 𝒞(𝑐 1 . . . 𝑐 𝑛 ) translates a list of commands 𝑐 1 . . . 𝑐 𝑛 of the form 𝑖. Γ ▷ 𝜙 (ℛ 𝑃 )[𝐴] to typing judgments Γ ⊢ Σ 𝑖 ∶= 𝑀 ∶ Prf • (𝑁 )</formula><p>, where Prf • represents the proof of a clause and will be introduced in the next section.</p><p>In the following we will only present examples of the application of these functions on Listing 1. Function 𝒮 is a mapping function from sort in Θ 𝒮 to Σ type. Sorts Bool and Int are mapped to predefined Bool and int types. User sorts such as U or sort predicate (U Bool) are mapped to Set and Set → Bool respectively. The function ℱ is recursively defined on the constructors for Alethe terms and formulas. The logical connectives of SMT are mapped to the classical operators presented in the previous section. For example, the formula (or x y (not z)) is translated into the term (x ∨ 𝑐 y ∨ 𝑐 ¬z). Terms are translated to lambda terms, e.g. (f x y) is translated to f x y. The equality of Alethe noted 𝑥 ≈ 𝑦 is translated to 𝑥 = 𝑦.</p><p>We translate declarations (declare-sort and declare-fun) to Lambdapi symbols by iterating over elements in context Θ and using the function 𝒟. This function creates a constant in the context Σ for each sort and function declared. To illustrate how context embedding operates, the code below depicts the translation of sort and function declarations of our guiding example Listing 1. The context Θ for our example is as follows: Θ 𝒮 = {𝑈, Bool} with 𝑎𝑟 = {𝑈 ↦ 0, Bool ↦ 0}, Θ ℱ = {(𝑎, 𝑈 ), (𝑏, 𝑈 ), (𝑝, 𝑈 Bool)} and 𝑎𝑟 the map of sorts arity. Remark (assert statement). The assertions at the end of Listing 1 remain untranslated initially, as they will undergo translation when we process the assume command.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.5.">Embedding Clauses</head><p>Before presenting the function 𝒞, we have to outline the challenge of formalizing the Alethe resolution rule in 𝜆Π/ ≡. Alethe identifies clause (cl 𝑙 1 , . . . , 𝑙 𝑛 ) in Equation ( <ref type="formula" target="#formula_0">1</ref>) as a set of literals which can be interpreted as an 𝑛-ary disjunction of literals. Following this, an arbitrary clause such as 𝑐𝑙 (𝑙 1 𝑙 2 𝑙 3 𝑙 4 ) will be then translated into 𝑙 1 ∨ 𝑐 (𝑙 2 ∨ 𝑐 (𝑙 3 ∨ 𝑐 𝑙 4 )) by our function ℱ. As mentioned in Section 2, Alethe identifies clauses that differ only in the order of literals. Therefore, the concatenation of two clauses (what is happening in the conclusion of resolution) need not unify with the translated clause of the step given by ℱ. For example, taking 3 arbitrary steps:</p><formula xml:id="formula_8">𝐴. ▷ (cl 𝑥 1 , 𝑥 2 , 𝑥 3 )(..)[..] 𝐵. ▷ (cl 𝑦 2 , ¬𝑥 1 , 𝑦 3 )(..)[..] 𝐶. ▷ (cl 𝑥 2 , 𝑥 3 , 𝑦 2 , 𝑦 3 )(resolution A B)[(𝑥 1 true)]</formula><p>Considering the interpretation of clause as disjunction we obtain the concatenation as follows</p><formula xml:id="formula_9">((𝑥 2 ∨ 𝑐 𝑥 3 ) ∨ 𝑐 (𝑦 2 ∨ 𝑐 𝑦 3 )</formula><p>) with the conclusion of resolution inference rule traditionally formalized as 𝑥 ∨ 𝑌 ; ¬𝑥 ∨ 𝑍 ⊢ 𝑌 ∨ 𝑍. However, the clause in step 𝐶 will be translated as</p><formula xml:id="formula_10">(𝑥 2 ∨ 𝑐 (𝑥 3 ∨ 𝑐 (𝑦 2 ∨ 𝑐 𝑦 3 ))),</formula><p>hence we obtain two different representations of the clause. Moreover, the pivot ¬𝑥 1 in step B does not appear at the head of the clause whereas the inference rule for resolution expects the pivot to be at the head. Thus, the resolution of clauses makes the structure of clauses involve reasoning modulo associativity and commutativity. To address the problem of associativity, we provide a structure of clauses with a canonical representation. We define clauses as lists à la Church: At lines 1 to 3 above we define the Clause type with the two constructors similar to the common algebraic data type of lists. The rewrite rules ⟇_to_∨ 𝑐 _rw at lines 5-7 rewrite a clause into a disjunction terminating with ⊥ symbolizing the empty list constructor. The symbol ++ defined at lines 9-11 computes the concatenation of two clauses. To solve the issue of commutativity when Alethe performs a resolution, we introduce intermediate lemmas of rearrangement of a clause where the pivot is moved, so pivots appear at the head of the clause. A clause proof will be encoded as a proof of Prf • 𝑙 1 , . . . , 𝑙 𝑛 defined as a classical proof of disjunctions of literals with a trailing ⊥.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.6.">Translation of Alethe proofs</head><p>In the previous sections, we outlined how we embed Alethe logic in 𝜆Π/ ≡ and how we translate the input problem definitions by using the function 𝒟. We now provide an overview of how we reconstruct the commands with function 𝒞. Informally, the function represents each command 𝑖.Γ ▷ 𝑙 1 . . . 𝑙 𝑛 (𝑅 𝑃 )[𝐴] as an intermediate lemma</p><formula xml:id="formula_11">Γ ⊢ Σ 𝑖 ∶= 𝑁 ∶ Prf • (ℱ(𝑙 1 ) ⟇ ⋅ ⋅ ⋅ ⟇ ℱ𝑙 𝑛 ⟇ ■))</formula><p>where the proof term 𝑁 is constructed depending on the rule 𝑅, the premises 𝑃 and arguments 𝐴. For example, if 𝑅 = equiv_pos2, we apply our generic proved lemma equiv_pos2∶ Π𝑎, Π𝑏, ¬(𝑎 = 𝑏) ∨ 𝑐 ¬𝑎 ∨ 𝑐 𝑏 to produce a proof term for judgment 𝑖. In the case that 𝑅 = resolution, we refashion 𝑛-ary resolution into a chain of binary resolution steps. To do that, we fold in premises 𝑃 from left to right, combining intermediate lemmas to conclude the clause 𝑙 1 . . . 𝑙 𝑛 of step 𝑖.</p><p>To illustrate the result of our main function 𝒞, we introduce the translation of Listing 1 proof. In the code below, all the assume commands are transformed as constants in Σ by the function 𝒞. They are treated as axioms and correspond to the asserts of the input problem. Benchmarks results with time limit: 1200 seconds and memory limit: 30 GB benchmark is the TLAPS proof of Cantor's theorem that asserts that there is no surjection from any set to its powerset. The SMT proofs for the corresponding proof obligations contain between 10 and 100 steps. Rodin and TypeSafe are samples from the SMT-LIB benchmark that we can reconstruct. The time needed for translation to Lambdapi by Carcara is negligibly small in this benchmark. For now, our work is not able to reconstruct larger samples (up to 70k steps) in Goel, PEQ, or Sledgehammer benchmarks from SMT-LIB repository because we are facing scalability problems such as high memory consumption and our Lambdapi checker is running only on a single process. Also, we can not for now benefit from term sharing because Lambdapi can not create local definitions in a proof, but we intend to implement this feature. However, we believe that our encoding should be able to reconstruct these proofs if we can scale because only the volume of steps and the size of terms increase but not the complexity. For benchmarks using the LIA (sub-)logic, we are currently only reconstructing those proof steps where arithmetic reasoning does not play an essential role, beyond simplification. Our work revealed that some proof obligation in Allocator and Cantor failed to be reconstructed, i.e., the proof found by the SMT-solver had become incorrect after elaboration by Carcara. This revealed multiple bugs in the Carcara checker and proof elaborator that have since been corrected. Moreover, one reconstruction failure helped to detect that one of the set theory axioms of TLA + was incorrectly encoded in SMT, and this issue has also been fixed.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="6.">Conclusion and perspectives</head><p>We presented an extension of Carcara to reconstruct Alethe proofs in the foundational proof assistant Lambdapi. Currently, this extension can reconstruct some SMT proofs that originate from the TLAPS proof assistant, as well as some samples from the SMT-lib benchmarks in the UF (sub-)logic. Failure to reconstruct some proofs revealed bugs in the Carcara checker and in the SMT encoding of set theory in the TLAPS proof assistant that have since been corrected, thus demonstrating the value of independent proof checking. At this point in time, our proof checker is limited to handling relatively small proofs due to scalability issues. We plan to address them by following the approach in <ref type="bibr">[25, §4]</ref> that translates HOL-Light to Lambdapi, using multiple processes for parallel proof checking. The idea is to generate individual files corresponding to disjoint segments of a proof, compute the dependencies between those segments, check each file in a separate process, and finally merge all the results. Furthermore, we are restricted to proofs without arithmetic reasoning. In the future, we intend to support reconstruction for linear integer arithmetic. Lambdapi does not have a built-in decision procedure for it, but we consider using Zenon Modulo <ref type="bibr" target="#b26">[26]</ref>, a tableau-based first-order automated theorem prover that can generate proof certificates in Lambdapi.</p><p>A further perspective that we plan to address in future work is to exploit Lambdapi's capability for exporting proofs to other proof assistants that will then be able to benefit from automation through SMT solving.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head>Figure 1 :</head><label>1</label><figDesc>Figure 1: Lambdapi, an assembly language for proof systems</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_1"><head></head><label></label><figDesc>(not (p b))) (step t1 (cl (not (= (p a) (p b))) (not (p a)) (p b)) :rule equiv_pos2) (step t2 (cl (= (p a) (p b))) :rule cong :premises (a1)) (step t3 (cl (p b)) :rule resolution :premises (t1 t2 a0)) (step t4 (cl) :rule resolution :premises (a2 t3))</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_2"><head>(</head><label></label><figDesc>step t3 (cl (p b)) :rule resolution :premises (t1 t2 a0) :args ((= (p a) (p b)) false (p a) false)) (step t4 (cl) :rule resolution :premises (a2 t3) :args ((p b) false))</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_3"><head></head><label></label><figDesc>symbol U : Set; symbol a : El U ≔ Index 0; symbol b : El U ≔ Index 1; symbol p : El (U -Bool) ≔ Index 2;</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_0"><head></head><label></label><figDesc>§2.1]. Π 𝑥∶ 𝐴. 𝐵 is the dependent product, and we write 𝐴 → 𝐵 when 𝑥 does not appear free in 𝐵, 𝜆 𝑥∶ 𝐴. 𝑡 is an abstraction, and 𝑡 𝑣 is an application. Signature Σ (global context) and contexts Γ (local contexts) are finite sequences and ⟨⟩ denotes the empty sequence. Assumptions are written 𝑐∶ 𝐶, indicating that 𝑐 is of type 𝐶. Definitions in Σ are written 𝑐 ∶= 𝑡 ∶ 𝐶, indicating that 𝑐 has the value 𝑡 and type 𝐶. In a Lambdapi typing judgment Γ ⊢ Σ 𝑡∶ 𝐴 a term 𝑡 has type 𝐴 in the context Γ and the signature Σ. A signature may contain rewrite rules 𝑡 ↪ 𝑣 such that 𝑡 = 𝑐 𝑣 1 . . . 𝑣 𝑛 with 𝑐 a constant. The relation ↪ 𝛽Σ is generated by 𝛽-reduction and by the rewrite rules of Σ. Conversion ≡ 𝛽Σ is the reflexive, symmetric, and transitive closure of ↪ 𝛽Σ . Let ↪ * 𝛽Σ be the reflexive and transitive closure of ↪ 𝛽Σ . The relation ↪ 𝛽Σ must be confluent, i.e., whenever 𝑡 ↪ * 𝛽Σ 𝑣 1 and 𝑡 ↪ * 𝛽Σ 𝑣 2 , there exists a term 𝑤 such that 𝑣 1 ↪ * 𝛽Σ 𝑤 and 𝑣 2 ↪ *</figDesc><table /></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_1"><head>constant symbol Set : TYPE; injective symbol El : Set → TYPE; constant symbol -: Set → Set → Set; rule</head><label></label><figDesc>Definition 1 (Prelude Encoding). Our signature context Σ contains the following definitions and rewrite rules furnished by the standard library of Lambdapi that we use to encode Alethe proofs:</figDesc><table /><note>El ($x -$y) ↪ El $x → El $y; symbol o: Set; constant symbol Prop : TYPE; injective symbol Prf : Prop → TYPE; rule El o ↪ Prop;</note></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_3"><head>Table 1</head><label>1</label><figDesc></figDesc><table><row><cell>Name</cell><cell>Logic</cell><cell cols="4">Samples Reconstructed Timeout Memout</cell></row><row><cell cols="2">Allocator UFNIA</cell><cell>36</cell><cell>31</cell><cell>3</cell><cell>2</cell></row><row><cell>Cantor</cell><cell>UF</cell><cell>11</cell><cell>11</cell><cell>0</cell><cell>0</cell></row><row><cell>Rodin</cell><cell>QF_UF</cell><cell>34</cell><cell>34</cell><cell>0</cell><cell>0</cell></row><row><cell cols="2">TypeSafe QF_UF</cell><cell>3</cell><cell>3</cell><cell>0</cell><cell>0</cell></row></table></figure>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" xml:id="foot_0">resolution rule of propositional logic to the premises t1, t2, a0. Lastly, the step t4 concludes the proof by generating the empty clause ⊥, concretely denoted as (cl) in Listing 1. Notice that the contexts Γ of each step are all empty in this proof.</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="1" xml:id="foot_1">https://smtlib.cs.uiowa.edu/benchmarks.shtml</note>
		</body>
		<back>
			<div type="annex">
<div xmlns="http://www.tei-c.org/ns/1.0"><p>Each judgment translated as an intermediate lemma</p><p>) generated by 𝒞 is represented by the tactic have 𝑥∶ 𝑡 of Lambdapi that applies the cut rule. We wrap all the translated steps in a lemma symbol where the last assert is the type and the last step (𝑡 4 here) should conclude Prf 𝑐 (⊥) and Prf</p><p>We derive a proof by contradiction because SMT solvers try to prove that the negation of the formula is unsatisfiable. The goal hypothesis assumed line 3 is left unused because we use its equivalent constant a2 coming from the translation of assume commands by 𝒞.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.">Soundness of the translation</head><p>Intuitively, proving soundness of the translation amounts to showing that for any Alethe judgment 𝑐, the translation 𝒞(𝑐) produces a well-typed proof term whose type corresponds to the clause asserted by 𝑐. This is formally expressed by the following theorem.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Theorem 1 (Soundness). For any Alethe judgment</head></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5.">Evaluation</head><p>Our benchmark is composed of files from the SMT-LIB benchmark 1 using the (sub-)logic UFNIA, and proof obligations from TLAPS SMT backend verifier. TLA + <ref type="bibr" target="#b19">[20]</ref> is a language based on set theory and a linear-time temporal logic for formally specifying and verifying systems, in particular concurrent and distributed algorithms. Its interactive proof environment TLAPS <ref type="bibr" target="#b20">[21]</ref> relies on users guiding the proof effort, it integrates automatic backends, including SMT solvers to discharge proof obligations <ref type="bibr" target="#b22">[22,</ref><ref type="bibr" target="#b23">23]</ref>.</p><p>A particular goal of our development was the reconstruction of TLA + theorems in Lambdapi. The Allocator module <ref type="bibr" target="#b24">[24]</ref> is a case study for the specification and analysis of reactive systems in TLA + . The SMT proofs for the individual steps in this case study contain between 20 and 600 steps. The Cantor</p></div>			</div>
			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<analytic>
		<title level="a" type="main">Fuzzing and delta-debugging SMT solvers</title>
		<author>
			<persName><forename type="first">R</forename><surname>Brummayer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Biere</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 7th International Workshop on Satisfiability Modulo Theories, SMT &apos;09</title>
				<meeting>the 7th International Workshop on Satisfiability Modulo Theories, SMT &apos;09</meeting>
		<imprint>
			<date type="published" when="2009">2009</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<analytic>
		<title level="a" type="main">Fast LCF-style proof reconstruction for Z3</title>
		<author>
			<persName><forename type="first">S</forename><surname>Böhme</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Weber</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">First Intl. Conf. Interactive Theorem Proving (ITP 2010)</title>
				<editor>
			<persName><forename type="first">M</forename><surname>Kaufmann</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">L</forename><forename type="middle">C</forename><surname>Paulson</surname></persName>
		</editor>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2010">2010</date>
			<biblScope unit="volume">6172</biblScope>
			<biblScope unit="page" from="179" to="194" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<analytic>
		<title level="a" type="main">Reliable reconstruction of fine-grained proofs in a proof assistant</title>
		<author>
			<persName><forename type="first">H.-J</forename><surname>Schurr</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Fleury</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Desharnais</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Automated Deduction -CADE 28</title>
				<editor>
			<persName><forename type="first">A</forename><surname>Platzer</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">G</forename><surname>Sutcliffe</surname></persName>
		</editor>
		<meeting><address><addrLine>Cham</addrLine></address></meeting>
		<imprint>
			<publisher>Springer International Publishing</publisher>
			<date type="published" when="2021">2021</date>
			<biblScope unit="page" from="450" to="467" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<analytic>
		<title level="a" type="main">The New Rewriting Engine of Dedukti</title>
		<author>
			<persName><forename type="first">G</forename><surname>Hondet</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Blanqui</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">5th International Conference on Formal Structures for Computation and Deduction (FSCD 2020)</title>
		<title level="s">Dagstuhl -Leibniz-Zentrum für Informatik</title>
		<meeting><address><addrLine>Schloss</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2020">2020</date>
			<biblScope unit="volume">167</biblScope>
			<biblScope unit="page">16</biblScope>
		</imprint>
	</monogr>
	<note>Leibniz International Proceedings in Informatics (LIPIcs)</note>
</biblStruct>

<biblStruct xml:id="b4">
	<analytic>
		<title level="a" type="main">Carcara: An efficient proof checker and elaborator for SMT proofs in the Alethe format</title>
		<author>
			<persName><forename type="first">B</forename><surname>Andreotti</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Lachnitt</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Barbosa</surname></persName>
		</author>
		<idno type="DOI">10.1007/978-3-031-30823-9_19</idno>
		<ptr target="https://doi.org/10.1007/978-3-031-30823-9_19.doi:10.1007/978-3-031-30823-9_19" />
	</analytic>
	<monogr>
		<title level="m">Tools and Algorithms for the Construction and Analysis of Systems: 29th International Conference, TACAS 2023</title>
				<imprint>
			<publisher>Springer-Verlag</publisher>
			<date type="published" when="2023">2023</date>
			<biblScope unit="page" from="367" to="386" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<analytic>
		<title level="a" type="main">Flexible proof production in an industrial-strength SMT solver</title>
		<author>
			<persName><forename type="first">H</forename><surname>Barbosa</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Reynolds</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">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>Viswanathan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Viteri</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">International Joint Conference on Automated Reasoning</title>
				<imprint>
			<publisher>Springer International Publishing Cham</publisher>
			<date type="published" when="2022">2022</date>
			<biblScope unit="page" from="15" to="35" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<analytic>
		<title level="a" type="main">Extending Sledgehammer with SMT solvers</title>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">C</forename><surname>Blanchette</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Böhme</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><forename type="middle">C</forename><surname>Paulson</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">23rd Intl. Conf. Automated Deduction (CADE-23)</title>
				<editor>
			<persName><forename type="first">N</forename><forename type="middle">S</forename><surname>Bjørner</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">V</forename><surname>Sofronie-Stokkermans</surname></persName>
		</editor>
		<meeting><address><addrLine>Wroclaw, Poland</addrLine></address></meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2011">2011</date>
			<biblScope unit="volume">6803</biblScope>
			<biblScope unit="page" from="116" to="130" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b7">
	<analytic>
		<title level="a" type="main">Hammer for Coq: Automation for dependent type theory</title>
		<author>
			<persName><forename type="first">Ł</forename><surname>Czajka</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Kaliszyk</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Journal of Automated Reasoning</title>
		<imprint>
			<biblScope unit="volume">61</biblScope>
			<biblScope unit="page" from="423" to="453" />
			<date type="published" when="2018">2018</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b8">
	<analytic>
		<title level="a" type="main">A Shallow Embedding of Pure Type Systems into First-Order Logic</title>
		<author>
			<persName><forename type="first">L</forename><surname>Czajka</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">22nd International Conference on Types for Proofs and Programs (TYPES 2016)</title>
				<imprint>
			<date type="published" when="2018">2018</date>
			<biblScope unit="volume">97</biblScope>
			<biblScope unit="page">39</biblScope>
		</imprint>
	</monogr>
	<note>Leibniz International Proceedings in Informatics (LIPIcs)</note>
</biblStruct>

<biblStruct xml:id="b9">
	<analytic>
		<title level="a" type="main">Scalable fine-grained proofs for formula processing</title>
		<author>
			<persName><forename type="first">H</forename><surname>Barbosa</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">C</forename><surname>Blanchette</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Fleury</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Fontaine</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Journal of Automated Reasoning</title>
		<imprint>
			<biblScope unit="volume">64</biblScope>
			<biblScope unit="page" from="485" to="510" />
			<date type="published" when="2020">2020</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b10">
	<analytic>
		<title level="a" type="main">A Modular Integration of SAT/SMT Solvers to Coq through Proof Witnesses</title>
		<author>
			<persName><forename type="first">M</forename><surname>Armand</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Faure</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Grégoire</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Keller</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><surname>Thery</surname></persName>
		</author>
		<author>
			<persName><forename type="first">B</forename><surname>Werner</surname></persName>
		</author>
		<idno type="DOI">10.1007/978-3-642-25379-9_12</idno>
	</analytic>
	<monogr>
		<title level="m">First Intl. Conf. Certified Programs and Proofs (CPP 2011)</title>
				<editor>
			<persName><forename type="first">Jean-Pierre</forename><surname>Jouannaud</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">Zhong</forename><surname>Shao</surname></persName>
		</editor>
		<meeting><address><addrLine>Lenting, Taiwan</addrLine></address></meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2011">2011</date>
			<biblScope unit="volume">7086</biblScope>
			<biblScope unit="page" from="135" to="150" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b11">
	<analytic>
		<title level="a" type="main">Fast reflexive arithmetic tactics the linear case and beyond</title>
		<author>
			<persName><forename type="first">F</forename><surname>Besson</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Intl. Workshop Types for Proofs and Programs (TYPES 2006)</title>
				<editor>
			<persName><forename type="first">T</forename><surname>Altenkirch</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">C</forename><surname>Mcbride</surname></persName>
		</editor>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2006">2006</date>
			<biblScope unit="page" from="48" to="62" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b12">
	<monogr>
		<title level="m" type="main">The Alethe Proof Format An Evolving Specification and Reference</title>
		<author>
			<persName><forename type="first">H</forename><surname>Barbosa</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Fleury</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Fontaine</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H.-J</forename><surname>Schurr</surname></persName>
		</author>
		<ptr target="https://verit.gitlabpages.uliege.be/alethe/specification.pdf" />
		<imprint>
			<date type="published" when="2024">2024</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b13">
	<monogr>
		<author>
			<persName><forename type="first">C</forename><surname>Barrett</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Fontaine</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Tinelli</surname></persName>
		</author>
		<ptr target="https://smtlib.cs.uiowa.edu/papers/smt-lib-reference-v2.6-r2021-05-12.pdf,availableatwww.SMT-LIB.org" />
		<title level="m">The SMT-LIB Standard: Version 2.6</title>
				<imprint>
			<date type="published" when="2017">2017</date>
		</imprint>
		<respStmt>
			<orgName>Department of Computer Science, The University of Iowa</orgName>
		</respStmt>
	</monogr>
	<note type="report_type">Technical Report</note>
</biblStruct>

<biblStruct xml:id="b14">
	<analytic>
		<title level="a" type="main">Embedding pure type systems in the Lambda-Pi-Calculus Modulo</title>
		<author>
			<persName><forename type="first">D</forename><surname>Cousineau</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><surname>Dowek</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Typed Lambda Calculi and Applications</title>
				<meeting><address><addrLine>Berlin, Heidelberg</addrLine></address></meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2007">2007</date>
			<biblScope unit="page" from="102" to="117" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b15">
	<analytic>
		<title level="a" type="main">A framework for defining logics</title>
		<author>
			<persName><forename type="first">R</forename><surname>Harper</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Honsell</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><forename type="middle">D</forename><surname>Plotkin</surname></persName>
		</author>
		<ptr target="https://api.semanticscholar.org/CorpusID:13375103" />
	</analytic>
	<monogr>
		<title level="j">J. ACM</title>
		<imprint>
			<biblScope unit="volume">40</biblScope>
			<biblScope unit="page" from="143" to="184" />
			<date type="published" when="1993">1993</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b16">
	<analytic>
		<title level="a" type="main">Type Safety of Rewrite Rules in Dependent Types</title>
		<author>
			<persName><forename type="first">F</forename><surname>Blanqui</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">5th International Conference on Formal Structures for Computation and Deduction (FSCD 2020)</title>
				<imprint>
			<date type="published" when="2020">2020</date>
			<biblScope unit="volume">167</biblScope>
			<biblScope unit="page">14</biblScope>
		</imprint>
	</monogr>
	<note>Leibniz International Proceedings in Informatics (LIPIcs)</note>
</biblStruct>

<biblStruct xml:id="b17">
	<monogr>
		<title level="m" type="main">Intuitionistic Type Theory, volume 1 of Studies in proof theory</title>
		<author>
			<persName><forename type="first">P</forename><surname>Martin-Löf</surname></persName>
		</author>
		<imprint>
			<date type="published" when="1980">1980</date>
			<publisher>Bibliopolis</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b18">
	<monogr>
		<title level="m" type="main">On the definition of the classical connectives and quantifiers</title>
		<author>
			<persName><forename type="first">G</forename><surname>Dowek</surname></persName>
		</author>
		<idno type="arXiv">arXiv:1601.01782</idno>
		<imprint>
			<date type="published" when="2016">2016</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b19">
	<monogr>
		<title level="m" type="main">Specifying Systems</title>
		<author>
			<persName><forename type="first">L</forename><surname>Lamport</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2002">2002</date>
			<publisher>Addison-Wesley</publisher>
			<pubPlace>Boston, Mass</pubPlace>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b20">
	<monogr>
		<author>
			<persName><forename type="first">D</forename><surname>Cousineau</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Doligez</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><surname>Lamport</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Merz</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Ricketts</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Vanzetto</surname></persName>
		</author>
		<title level="m">TLA + proofs</title>
				<imprint/>
	</monogr>
</biblStruct>

<biblStruct xml:id="b21">
	<analytic>
	</analytic>
	<monogr>
		<title level="m">18th Intl. Symp. Formal Methods (FM 2012)</title>
				<editor>
			<persName><forename type="first">D</forename><surname>Giannakopoulou</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">D</forename><surname>Méry</surname></persName>
		</editor>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2012">2012</date>
			<biblScope unit="volume">7436</biblScope>
			<biblScope unit="page" from="47" to="154" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b22">
	<analytic>
		<title level="a" type="main">Automatic verification of TLA + proof obligations with SMT solvers</title>
		<author>
			<persName><forename type="first">S</forename><surname>Merz</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Vanzetto</surname></persName>
		</author>
		<idno type="DOI">10.1007/978-3-642-28717-6_23</idno>
	</analytic>
	<monogr>
		<title level="m">Logic for Programming, Artificial Intelligence, and Reasoning -18th , LPAR-18</title>
		<title level="s">Lecture Notes in Computer Science</title>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2012">2012</date>
			<biblScope unit="volume">7180</biblScope>
			<biblScope unit="page" from="289" to="303" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b23">
	<analytic>
		<title level="a" type="main">Encoding TLA + proof obligations safely for SMT</title>
		<author>
			<persName><forename type="first">R</forename><surname>Defourné</surname></persName>
		</author>
		<idno type="DOI">10.1007/978-3-031-33163-3_7</idno>
		<idno>doi:</idno>
		<ptr target="10.1007/978-3-031-33163-3\_7" />
	</analytic>
	<monogr>
		<title level="m">Rigorous State-Based Methods -9th International Conference, ABZ 2023</title>
		<title level="s">Lecture Notes in Computer Science</title>
		<meeting><address><addrLine>Nancy, France</addrLine></address></meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2023-06-02">May 30 -June 2, 2023. 2023</date>
			<biblScope unit="volume">14010</biblScope>
			<biblScope unit="page" from="88" to="106" />
		</imprint>
	</monogr>
	<note>Proceedings</note>
</biblStruct>

<biblStruct xml:id="b24">
	<analytic>
		<title level="a" type="main">The Specification Language TLA +</title>
		<author>
			<persName><forename type="first">S</forename><surname>Merz</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Logics of specification languages</title>
				<editor>
			<persName><forename type="first">D</forename><surname>Bjørner</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">M</forename><surname>Henson</surname></persName>
		</editor>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2004">2004</date>
			<biblScope unit="page" from="401" to="452" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b25">
	<analytic>
		<title level="a" type="main">Translating HOL-Light proofs to Coq</title>
		<author>
			<persName><forename type="first">F</forename><surname>Blanqui</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">25rd Intl. Conf. Logic for Programming, Artificial Intelligence and Reasoning (LPAR-25), EPiC Series in Computing</title>
				<meeting><address><addrLine>Mauritius</addrLine></address></meeting>
		<imprint>
			<date type="published" when="2024">2024</date>
			<biblScope unit="page">18</biblScope>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b26">
	<analytic>
		<title level="a" type="main">Zenon Modulo: When Achilles Outruns the Tortoise using Deduction Modulo</title>
		<author>
			<persName><forename type="first">D</forename><surname>Delahaye</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Doligez</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Gilbert</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Halmagrand</surname></persName>
		</author>
		<author>
			<persName><forename type="first">O</forename><surname>Hermant</surname></persName>
		</author>
		<idno type="DOI">10.1007/978-3-642-45221-5_20</idno>
	</analytic>
	<monogr>
		<title level="m">LPAR -Logic for Programming Artificial Intelligence and Reasoning -2013</title>
				<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2013">2013</date>
			<biblScope unit="volume">8312</biblScope>
			<biblScope unit="page" from="274" to="290" />
		</imprint>
	</monogr>
</biblStruct>

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