<?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">Isomorphic Transfer Infrastructure for Nested Types in Isabelle/HOL (Work in Progress)</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Gergely</forename><surname>Buday</surname></persName>
							<affiliation key="aff0">
								<orgName type="department">School of Computer Science</orgName>
								<orgName type="institution">University of Sheffield</orgName>
								<address>
									<settlement>Sheffield</settlement>
									<country key="GB">UK</country>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Andrei</forename><surname>Popescu</surname></persName>
							<affiliation key="aff0">
								<orgName type="department">School of Computer Science</orgName>
								<orgName type="institution">University of Sheffield</orgName>
								<address>
									<settlement>Sheffield</settlement>
									<country key="GB">UK</country>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">Isomorphic Transfer Infrastructure for Nested Types in Isabelle/HOL (Work in Progress)</title>
					</analytic>
					<monogr>
						<idno type="ISSN">1613-0073</idno>
					</monogr>
					<idno type="MD5">2716948F12A3471F1AF1EC6D590CFC85</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2025-04-23T20:06+0000">
					<desc>GROBID - A machine learning software for extracting information from scholarly documents</desc>
					<ref target="https://github.com/kermitt2/grobid"/>
				</application>
			</appInfo>
		</encodingDesc>
		<profileDesc>
			<textClass>
				<keywords>
					<term>Higher-Order Logic (HOL)</term>
					<term>type definitions</term>
					<term>theorem proving</term>
					<term>Isabelle/HOL</term>
				</keywords>
			</textClass>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>This paper addresses (part of) the problem of simplifying reasoning with proof assistants by transferring theorems that are stated in a heavy form, using explicit invariants, to lightweight counterparts where the invariants are handled implicitly by the type system. Specifically, we provide some abstract assumptions that allow one to establish isomorphisms for nested applications of defined types in Gordon's Higher-Order Logic (HOL). This allows the seamless isomorphic transfer of results across type definitions in the presence of nesting. Our results have been formalized in the Isabelle/HOL theorem prover, and we plan to integrate them with Isabelle's Lifting and Transfer tool.</p></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="en">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="1.">Introduction</head><p>The definition of new types by carving out subsets of existing types, known as typedef, is a fundamental mechanism in Higher-Order Logic (HOL), a logic that provides the foundation for several interactive theorem provers, including HOL4 <ref type="bibr" target="#b0">[1]</ref>, HOL Light <ref type="bibr" target="#b1">[2]</ref> and Isabelle/HOL <ref type="bibr" target="#b2">[3]</ref>. While most of the uses of typedef are hidden under the (automated) definition of (co)inductive datatypes <ref type="bibr" target="#b3">[4,</ref><ref type="bibr" target="#b4">5,</ref><ref type="bibr" target="#b5">6,</ref><ref type="bibr" target="#b6">7]</ref> and therefore not directly invoked by the users, there still remains an important scenario where typedef is invoked explicitly.</p><p>Namely, say one has a type (perhaps an algebraic datatype) 𝑇 that does not capture precisely the intended concept (because it contains too many elements), but only via an invariant defined in terms of a predicate on 𝑇, or equivalently, a set 𝐼 that has type 𝑇 set. 1 Then one defines the more precise type 𝑆 as a typedef, to consist of exactly the inhabitants of 𝑇 that belong to the set 𝐼-i.e., 𝐼 is effectively turned into a type.</p><p>Let us consider two examples, which will act as our running examples throughout this paper.</p><p>Example 1. (Distinct Lists) Polymorphic lists are introduced as the following datatype, where we use ML-style notation feature by Isabelle/HOL as well as all the HOL-based provers (in particular, 𝛼 denotes a type variable): datatype 𝛼 list = Nil | Cons 𝛼 (𝛼 list)</p><p>For a list xs, we let length xs be its length and, given a natural number 𝑖 &lt; length, we let xs!𝑖 be the (𝑖−1)'th element in xs (so the indexing starts from 0). In some developments, one may be interested in working with nonrepetitive ("distinct") lists, i.e., lists whose elements do not repeat-to this end, one defines the Envelope g.buday@sheffield.ac.uk (G. Buday); a.popescu@sheffield.ac.uk (A. <ref type="bibr">Popescu)</ref> and the following axioms stating that these functions are mutually inverse bijections between the new type 𝛼 dlist and the subset {xs ∶ 𝛼 list | distinct xs} of the base type 𝛼 list. <ref type="foot" target="#foot_0">3</ref> In Isabelle/HOL, these axioms are actually packed into a single axiom:  In a formal development that follows the above scheme, one usually distinguishes between:</p><p>• developing the "internal" mathematical theory, which usually proceeds without defining 𝑆, but instead working with 𝑇 and stating the theorems relativized to 𝐼-for example, proving facts of the form ∀𝑡 ∶ 𝑇 . 𝑡 ∈ 𝐼 ⟶ . . . • at the end, defining 𝑆 and "sealing" the library for export by transferring from 𝑇 to 𝑆 all the constants and all the main (exportable) facts that have been proved proved relative to 𝐼-for example, turning facts of the form ∀𝑡 ∶ 𝑇 . 𝑡 ∈ 𝐼 ⟶ . . . into facts of the form ∀𝑡 ′ ∶ 𝑆. . . .</p><p>The process of "isomorphically" transferring 𝐼-relativized constants and results on 𝑇 to corresponding constants and results on 𝑆, while seemingly conceptually straightforward, turns out to be quite subtle in the presence of higher-order constants. It requires infrastructure for lifting relations along type constructors (known as relators), which allows the automated proofs of the transferred theorems from the original ones-this is facilitated in Isabelle/HOL by various dedicated tools <ref type="bibr" target="#b7">[8,</ref><ref type="bibr" target="#b8">9,</ref><ref type="bibr" target="#b9">10]</ref>.</p><p>In this short work-in-progress paper, we study a fairly common pattern: the isomorphic transfer in the presence of nested type constructors. We start with motivation in terms of a standard construction applied to our running examples ( §2), which leads to formulating the wider scope of the problem. We then work out the solution to the problem in an ad hoc manner on the running examples §3. After that, we are ready to describe our main result: some abstract general structure and conditions that enable this pattern, in that they allow constructing a back-and-forth bijection for transfer ( §4), and show how it instantiates to our examples. We conclude with related work and future plans, notably the planned integration of our work into Isabelle's Lifting and Transfer package ( §5). Our concepts and results apply to Higher-Order Logic, hence are in principle relevant to any HOL-based provers. We have formalized them in the Isabelle/HOL theorem prover, and the formal scripts are publicly available <ref type="bibr" target="#b10">[11]</ref>.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.">The Concrete Problem</head><p>Consider the problem of proving that the type constructors (polymorphic types) 𝛼 dlist and 𝛼 distrib constitute monads <ref type="bibr" target="#b11">[12,</ref><ref type="bibr" target="#b12">13]</ref> or at least monad-like structures-which are very useful properties to have for any (data)type, whenever possible.</p><p>According to the above pattern, one wishes to first prove the properties for the underlying (representing types) 𝛼 list and 𝛼 → real relative to the defining predicates distinct and dist, and then transfer them to the defined types 𝛼 dlist and 𝛼 distrib. (Not only is this good practice, but in some sense it is the only way to proceed, at least initially when "bootstrapping" a theory for the defined types, given that initially our only means to prove a property on the defined type is to trace it back to a property on the underlying type.) Some of the monadic structure and properties involve nesting the application of type constructors, for example we want to have a map (functorial-action) operator map distrib ∶ (𝛼 → 𝛽) → (𝛼 distrib → 𝛽 distrib) and join (counit) operator join distrib ∶ (𝛼 distrib) distrib → 𝛼 distrib satisfying (among others) the associativity law join distrib ∘ (map distrib join distrib ) = join distrib ∘ join distrib .</p><p>How to define such structure and prove such properties on the defined types? Let us start with a simple example that does not involve nesting, namely defining the map operator on (𝛼 → 𝛽) → (𝛼 distrib → 𝛽 distrib) and proving that it preserves identities, in that ∀𝑑 ∶ 𝛼 distrib. map distrib (id ∶ 𝛼 → 𝛼) 𝑑 = 𝑑 where id denotes the identity function. We define map distrib on any 𝑔 ∶ 𝛼 → 𝛽 and 𝑑 ∶ 𝛼 distrib by map distrib 𝑔 𝑑 = Abs distrib (𝜆𝑏 ∶ 𝛽. ∑ 𝑎∈𝑔 −1 𝑏 Rep distrib 𝑑 𝑎). Notice that the definition requires a backand-forth application of the abstraction and representation functions Abs distrib and Rep distrib , with some specific manipulation of items of the underlying type 𝛼 → real. (In this case, the specific manipulation happens to involve taking the sum of a function in 𝛼 → real over all the elements of the 𝑔-preimage of 𝑔, but the exact nature of such manipulations is not important here.) Now, to prove the desired fact, fix 𝑑 ∶ 𝛼 distrib. In order to show map distrib id 𝑑 = 𝑑, by the injectivity of Rep distrib it suffixes to show Rep distrib (map distrib id 𝑑) = Rep distrib 𝑑. Using the definition of map distrib and the fact that Rep distrib is left-inverse to Abs distrib , the above is equivalent to 𝜆𝑏 ∶ 𝛽. ∑ 𝑎∈id −1 𝑏 Rep distrib 𝑑 𝑎 = Rep distrib 𝑑, i.e., to 𝜆𝑏 ∶ 𝛽. ∑ 𝑎=𝑏 Rep distrib 𝑑 𝑎 = Rep distrib 𝑑, which follows from the properties of sums and function extensionality.</p><p>We thus have the following pattern: To define constants on the defined type and prove properties for them, we need to move back and forth via the abstraction-representation pair and use consequences of the associated type_definition axiom.</p><p>But how to do this in the presence of nested defined type constructors (where the abstractionrepresentation pairs stemming from type definitions no longer work out of the box)? In the next section, we discuss in an ad hoc manner how to tackle the nested isomorphic transfer problem in the presence of nested types for our two running examples. After that, we will introduce an abstract solution, which covers these two cases and many others.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.">The Solution for Two Concrete Instances</head><p>Now let us come back to the original more complex problem, of defining join distrib ∶ (𝛼 distrib) distrib → 𝛼 distrib (in addition to map distrib which we have already defined) and proving the associativity law.</p><p>In order to define join distrib , which operates on the nested defined type (𝛼 distrib) distrib, we need an understanding of how a counterpart of this operator should act on the (nested application of) the underlying type, i.e., on (𝛼 → real)real. To be more exact, we don't need to consider the behavior of such a counterpart on all functions 𝐹 ∶ (𝛼 → real) → real, but seemingly only on functions that act like distributions, i.e., satisfy distrib 𝐹 (i.e., are positive, have countable support and sum to 1). In fact, upon a closer look we see that the functions of interest are not really distributions on the entire type 𝛼 → real, but on the subset of 𝛼 → real that consists of distributions only, i.e., distributions on the set {𝑓 ∶ 𝛼 → real | distrib 𝑓 }. In other words, we need a relativized version of the predicate distrib, let us denote it by distOn ∶ 𝛼 set → 𝛼 distrib → bool, defined by</p><formula xml:id="formula_0">distOn 𝐴 𝑓 ≡ (∀𝑥 ∶ 𝛼. 𝑥 ∈ 𝐴 ⟶𝑓 𝑥 ≥ 0) ∧ countable {𝑥 ∶ 𝛼 | 𝑥 ∈ 𝐴 ∧𝑓 𝑥 ≠ 0} ∧ ∑ 𝑥∈𝐴 𝑓 𝑥 = 1</formula><p>where we have highlighted the difference from the original predicate dist-in that the conditions are not applied to the entire type 𝛼, but to a parameter subset 𝐴 ∶ 𝛼 set. Note that we can recover the original predicate as dist = distOn UNIV, where UNIV is the "universal" set covering the entire type.</p><p>With this relativized predicate at hand, the picture becomes clear: Given a function 𝐹 ∶ (𝛼 → real) → real that acts like a distribution on distributions on 𝛼, i.e., such that distOn {𝑓 ∶ 𝛼 → real | dist 𝑓 } 𝐹 holds, we have the formal means to turn it into a "flat" distribution, let us call it join 𝐹, on 𝛼 → real, namely by summation (applying of course a well-known mathematical construction): join 𝐹 𝑥 ≡ ∑ 𝑓 ∈{𝑓 | dist 𝑓 } 𝐹 𝑓 𝑥. Now, to define join distrib from join, we need to able to move back and forth between 𝛼 distrib distrib and and (𝛼 → real) → real, ideally using a similar infrastructure as the abstraction-representation pair (Abs distrib , Rep distrib ) and predicate distrib that allowed us to move between 𝛼 distrib and 𝛼 → real. And indeed, this is possible:</p><formula xml:id="formula_1">• We define dist 2 ∶ ((𝛼 → real) → real) → bool to be distOn {𝑓 ∶ 𝛼 → real | dist 𝑓 }. • We define Abs distrib,2 ∶ ((𝛼 → real) → real) → (𝛼 distrib) distrib by Abs distrib,2 𝐹 = Abs distrib (𝜆 𝑑 ∶ 𝛼 distrib. 𝐹 (Rep distrib 𝑑)). • We define Rep distrib,2 ∶ (𝛼 distrib) distrib → ((𝛼 → real) → real) by Rep distrib,2 𝐷 = 𝜆𝑓 ∶ 𝛼 → real. Rep distrib 𝐷 (Abs distrib 𝑓 ).</formula><p>Note that we defined distrib 2 in line with the above analysis, and defined Abs distrib,2 and Rep distrib,2 with the aim of achieving a bijective correspondence between (𝛼 distrib) distrib and the elements of With the goal of a general solution in mind, let us note some similarities and commonalities of the above two cases. While for distinct lists the definitions of the one-level-up abstraction and representation functions involve entities of the same kind (namely abstractions for abstractions and representations for representations), in the case of distributions the definitions combine the two, for example the definition of the one-level-up abstraction uses outer abstraction together with inner representation. This is a reflection of lists being a covariant functor and function-space-to-reals being a contravariant functor.</p><formula xml:id="formula_2">(𝛼 → real) → real satisfyig dist 2 .</formula><p>The common pattern of the two is, however, the fact that the one-level-up operators employ composition between an (1) operator and (2) the map function for the given functor applied to an operator. This is manifestly clear for distinct lists, for example the one-level-up abstraction Abs dlist,2 is the composition of Abs dlist with map list Rep dlist ; for distributions, this is also seen to be the case, if we note that the map function for the contravariant functor 𝛼 → real is 𝜆𝑔 ∶ 𝛼 → 𝛽. 𝜆𝑓 ∶ 𝛽 → real. 𝑔 ∘ 𝑓.</p><p>Another discrepancy between the two cases is the definition of the one-level-up characteristic predicates (distrib 2 versus distinct 2 ); as we will see next, we will be able to uniformly capture both cases under a more general set-lifting operator.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4.">An Abstract Formulation of the Problem and a General Solution</head><p>We formulate the problem abstractly as follows: How to lift the abstraction-representation properties characteristic of type definitions to nested applications of the defined type constructor? In the previous section, we have discussed solutions to two instances of this problem. The first instance is representayive of a wide class of situations, namely polymorphic inductive datatypes (which are all covariant functors) with invariants; the second also has some cousins in the formalization and specification literature, for example the defined types topological filters and of mutisets, as well as variations such as discrete subdistributions. In what follows, we introduce a generalization that covers all these cases.</p><formula xml:id="formula_3">In</formula><p>Assumptions. We assume that the underlying type constructor 𝛼 𝑇 comes equipped with an operator Trel ∶ 𝛼 set → 𝛽 set → (𝛼 → 𝛽 → bool) → (𝛼 𝑇 → 𝛽 𝑇 → bool) for lifting relations to 𝑇 that for bijective relations commutes with composition; namely, letting bijBetw 𝐴 𝐵 𝑅 express that the relation 𝑅 is a bijection between 𝐴 and 𝐵:</p><p>(A1) bijBetw 𝐴 𝐵 𝑃 and bijBetw 𝐵 𝐶 𝑄 implies Trel 𝐴 𝐶 (𝑃 ∘ 𝑄) = Trel 𝐴 𝐵 𝑃 ∘ Trel 𝐵 𝐶 𝑄 for all 𝐴, 𝐵, 𝐶, 𝑃, 𝑄 Moreover, we assume that there exists an operator Iset ∶ 𝛼 set → (𝛼 𝑇 ) set for lifting sets to 𝑇, which is an extension of 𝐼 in that (A2) Iset UNIV = 𝐼 and the following hold, where eqOn 𝐴 𝑅 says that the restriction of 𝑅 to 𝐴 is the equality on (i.e., the diagonal of) 𝐴:</p><p>(A3) bijBetw 𝐴 𝐵 𝑅 implies bijBetw (Iset 𝐴) (Iset 𝐵) (Trel 𝐴 𝐵 𝑅) for all 𝐴, 𝐵, 𝑅 (A4) bijBetw 𝐴 𝐴 𝑅 and eqOn 𝐴 𝑅 implies eqOn (Iset 𝐴) (Trel 𝐴 𝐴 𝑅) for all 𝐴, 𝑅 𝑇 together with the operator Trel forms a relator-like structure <ref type="bibr" target="#b13">[14,</ref><ref type="bibr" target="#b14">15]</ref>, similar to those that underlie Isabelle/HOL's transfer tool <ref type="bibr" target="#b7">[8]</ref> and datatype specification mechanism <ref type="bibr" target="#b5">[6]</ref>. However, this concept comes with an explicit indication of the domain and codomain sets and targets bijections between these sets. In particular, (A1) only requires Trel to commute with (relation) composition when restricted to bijective relations. While we think of Trel as being associated to 𝑇, we think of Iset as being associated to the invariant 𝐼 (which it generalizes via (A2)). For example, if 𝑇 is list, then it is reasonable to take Trel to be the list relator (relating lists position-wise), but we have no reason to commit to Iset as being the standard set operator associated to lists (returning the set of all elements of a list)-rather, the choice of Iset will depend on what invariant we want to consider on lists. Of course, as the axiom (A2) suggests, the Iset parameter of our abstract framework is reminiscent of the relativized version of the predicate dist that we employed in the case of distributions.</p><p>Trel and Iset are connected by the assumptions (A3) and (A4). Thus, (A3) states that Trel lifts bijections between two sets to bijections between the Iset-liftings of these sets, which roughly means that Iset partially acts like a subrelator of (𝑇 , Trel). Finally, (A4) is an Iset-relativization of the standard property of relators of preserving equalities-namely, here we say Trel preserves partial equalities w.r.t. Iset.</p><p>Let us see how to instantiate this framework to our running examples. To this end, we first note that having chosen our assumptions in terms of relations rather than functions allows us to capture both covariant and contravariant cases. For the case of the distribution type 𝛼 distrib, we take:</p><p>• 𝛼 𝑇 to be 𝛼 → real;</p><p>• Trel 𝐴 𝐵 𝑅 𝑓 𝑔 to be ⇒ real (𝜆𝑎, 𝑏. 𝑎 ∈ 𝐴 ∧ 𝑏 ∈ 𝐵 ∧ 𝑅 𝑎 𝑏) 𝑓 𝑔 ∧ (∀𝑎 ∉ 𝐴. 𝑓 𝑎 = ⊥) ∧ (∀𝑏 ∉ 𝐵. 𝑔 𝑏 = ⊥), where ⊥ is a (polymorphic) fixed "undefined" element (which is available in HOL on each type via Hilbert choice) and ⇒ real is the real-instance of the function-space relator, defined by ⇒ real 𝑃 𝑓 𝑔 ≡ ∀𝑎, 𝑏. 𝑃 𝑎 𝑏 ⟶ 𝑓 𝑎 = 𝑔 𝑏; • Iset to be given by the relativized form of the distOn predicate, namely Iset 𝐴 ≡ {𝑓 | distOn 𝐴 𝑓 }.</p><p>For the case of the distinct-list type 𝛼 dlist, we take:</p><p>• 𝛼 𝑇 to be 𝛼 list;</p><p>• Trel 𝐴 𝐵 to be the list relator list_all, where list_all 𝑅 relates two lists just in case they have the same length and their elements are position-wise related (thus, the domain and codomain sets are ignored by Trel); • Iset to be defined as Iset 𝐴 ≡ {xs | distinct xs ∧ set xs ⊆ 𝐴}, where set ∶ 𝛼 list → 𝛼 set is the support operator for lists (returning the set of all elements of a list).</p><p>Note the two flavors of instantiating the relativized operator Iset, depending on whether we deal with a contravariant or covariant functor, namely : (1) either, in the contravariant case, by relativizing the original predicate dist to distOn; <ref type="bibr" target="#b1">(2)</ref> or, in the covariant case, by intersecting the original predicate distinct with the adjoint of the support operator (which is usually available for covariant functors, and in particular is available for all container types)-indeed, the righthand side of the definition of Iset 𝐴 can be written as {xs | distinct xs} ∩ {𝑥𝑠 | set xs ⊆ 𝐴}, and the operator 𝐿 = 𝜆𝐴. {𝑥𝑠 | set xs ⊆ 𝐴} is the right adjoint<ref type="foot" target="#foot_1">4</ref> of the support operator set in the sense that xs ∈ 𝐿 𝐴 iff set xs ⊆ 𝐴. It is relatively easy to check that these instances satisfy our assumptions. For example, (A3) in the case of the distribution instantiation says that a bijection between two sets 𝐴 and 𝐵 induces a bijection the sets of distributions on 𝐴 and 𝐵 respectively, which are constant ⊥ outside 𝐴 and 𝐵 respectively.</p><p>Our main result is that these abstract assumptions are sufficient for solving our problem, thus generalizing the constructions in the above particular cases (and in many other cases, e.g., any datatypes with invariants turned into typedefs).</p><p>Theorem: Under the assumptions (A1)-(A4) above, we have a solution to our problem for all 𝑛 ≥ 1, in that there exist 𝐼 𝑛 ∶ (𝛼 𝑇 𝑛 ) set, Abs 𝑆,𝑛 ∶ 𝛼 𝑇 𝑛 → 𝛼 𝑆 𝑛 and Rep 𝑇 ,𝑛 ∶ 𝛼 𝑇 𝑛 → 𝛼 𝑆 𝑛 such that type_definition Abs 𝑆,𝑛 Rep 𝑇 ,𝑛 𝐼 𝑛 holds.</p><p>A formal proof in Isabelle/HOL of the core of this theorem can be found in <ref type="bibr" target="#b10">[11]</ref>; due to the HOL type system limitations, the formal proof is restricted to the case when 𝑛 = 2, but also indicates how to iterate the argument for arbitrary 𝑛 and shows the iterations for 3 and 4.</p><p>Proof sketch. We proceed by induction on 𝑛. For 𝑛 = 1, we simply take 𝐼 𝑛 = 𝐼, Abs 𝑆,𝑛 = Abs 𝑆 and Rep 𝑆,𝑛 = Rep 𝑆 , so the desired fact holds by our assumptions.</p><p>For the induction step, assume that we have 𝐼 𝑛 ∶ (𝛼 𝑇 𝑛 ) set, Abs 𝑆,𝑛 ∶ 𝛼 𝑇 𝑛 → 𝛼 𝑆 𝑛 and Rep 𝑇 ,𝑛 ∶ 𝛼 𝑇 𝑛 → 𝛼 𝑆 𝑛 such that type_definition Abs 𝑆,𝑛 Rep 𝑇 ,𝑛 𝐼 𝑛 holds. We define 𝐼 𝑛+1 ∶ (𝛼 𝑇 𝑛+1 ) set, Abs 𝑆,𝑛+1 ∶ 𝛼 𝑇 𝑛+1 → 𝛼 𝑆 𝑛+1 and Rep 𝑇 ,𝑛+1 ∶ 𝛼 𝑇 𝑛+1 → 𝛼 𝑆 𝑛+1 as follows:</p><formula xml:id="formula_4">𝐼 𝑛+1 ≡ Iset 𝐼 𝑛 ; Abs 𝑆,𝑛+1 = Abs 𝑆 ∘ funOf (Trel (relOf Abs 𝑆,𝑛 )); Rep 𝑆,𝑛+1 = Rep 𝑆 ∘ funOf (Trel (relOf Rep 𝑆,𝑛 )).</formula><p>Above, the operators relOf ∶ (𝛼 → 𝛽) → (𝛼 → 𝛽 → bool) and funOf ∶ (𝛼 → 𝛽 → bool) → (𝛼 → 𝛽) provide back and forth conversions between bijective relations and (partially) bijective functins. Namely, we have the following properties for them, where bij_betw 𝐴 𝐵 𝑓 says that the restriction of the function 𝑓 ∶ 𝛼 → 𝛽 to 𝐴 ∶ 𝛼 set is a bijection between 𝐴 and 𝐵 ∶ 𝛽 set: (1) If bij_betw 𝐴 𝐵 𝑓, then bijBetw 𝐴 𝐵 (relOf 𝑓 ) and funOf (relOf 𝑓 ) = 𝑓; (2) If bijBetw 𝐴 𝐵 𝑅, then bij_betw 𝐴 𝐵 (funOf 𝑅) and relOf (funOf 𝑓 𝑅 = 𝑅.</p><p>To prove type_definition Abs 𝑆,𝑛+1 Rep 𝑇 ,𝑛+1 𝐼 𝑛+1 compositionally (along the definitions of the abstraction ad represenations operators), we introduce a generalization of type_definition that does not assume one of its argument functions (namely the representation function) to operate on the entire domain, but on an additional parameter set. Namely, we define bij_pair ∶ (𝛽 → 𝛼) → (𝛼 → 𝛽) → 𝛽 set → 𝛼 set → bool as follows, where we highlight the differences from type_definition: bij_pair 𝑟 𝑎 𝐵𝐴 ≡ (∀𝑦. 𝑦 ∈ 𝐵 ⟶ 𝑟 𝑦 ∈ 𝐴) ∧ (∀𝑥. 𝑥 ∈ 𝐴 ⟶ 𝑎 𝑥 ∈ 𝐵) ∧ (∀𝑦 ∶ 𝛽. 𝑦 ∈ 𝐵 ⟶ 𝑎 (𝑟 𝑦) = 𝑦) ∧ (∀𝑥 ∶ 𝛼. 𝑥 ∈ 𝐴 ⟶ 𝑟 (𝑎 𝑥) = 𝑥). Thus, bij_pair 𝑟 𝑎 𝐵 𝐴 says that 𝑎 and 𝑟 are mutually inverse bijections between 𝐴 and 𝐵; in particular, we have (3) bij_pair 𝑟 𝑎 𝐵 𝐴 = type_definition 𝑟 𝑎 UNIV 𝐴.</p><p>Next, we define the relational counterpart of bij_pair, namely bijPair ∶ (𝛽 → 𝛼 → bool) → (𝛼 → 𝛽 → bool) → 𝛽 set → 𝛼 set → bool, such that bijPair 𝑃 𝑄 𝐵 𝐴 says that 𝑃 and 𝑄 are mutually inverse (relational) bijections between 𝐴 and 𝐵. The operators bij_pair and bijPair correspond to each other via the translations between functions and relations: (4) If bij_pair 𝑟 𝑎 𝐵 𝐴 then bijPair (relOf 𝑟) (relOf 𝑎) 𝐵 𝐴;</p><p>(5) If bijPair 𝑃 𝑄 𝐵 𝐴 then bij_pair (funOf 𝑃) (funOf 𝑄) 𝐵 𝐴. They also commute with relation and function composition: <ref type="bibr" target="#b5">(6)</ref> If bij_pair 𝑟 𝑎 𝐵 𝐴 and bij_pair 𝑟 ′ 𝑎 ′ 𝐴 𝐶 then bij_pair (𝑟 ′ ∘ 𝑟) (𝑎 ′ ∘ 𝑎) 𝐵 𝐶; <ref type="bibr" target="#b6">(7)</ref> If bijPair 𝑃 𝑄 𝐵 𝐴 and bij_pair 𝑃 ′ 𝑄 ′ 𝐴 𝐶 then bijPair (𝑃 ∘ 𝑃 ′ ) (𝑄 ∘ 𝑄 ′ ) 𝐵 𝐶.</p><p>Finally, using (A1), (A3) and (A4), we can prove the crucial property that Trel "lifts" the bijPair property relative to Iset: <ref type="bibr" target="#b7">(8)</ref> If bijPair 𝑃 𝑄 𝐴 𝐵 then bijPair (Trel 𝐴 𝐵 𝑃) (Trel 𝐵 𝐴 𝑄) (Iset 𝐴) (Iset 𝐵). □</p><p>Note that the theorem asserts the existence of 𝑛-level predicates 𝐼 𝑛 and abstraction-representation pairs (Abs 𝑛 , Rep 𝑛 ) which extend the original ones, 𝐼 and (Abs, Rep). But the question arises on whether these are the "right" extensions. The answer relies only on the suitability of 𝐼 𝑛 , since once that is decided than any projection pair (Abs 𝑛 , Rep 𝑛 ) satisfying type_definition Abs 𝑆,𝑛 Rep 𝑇 ,𝑛 𝐼 𝑛 would do-mirroring the fact that in a type definition (at level 1) only 𝐼 matters and any (Abs, Rep) satisfying type_definition Abs 𝑆 Rep 𝑇 𝐼 is as good as any other. Now, concerning the suitability of 𝐼 𝑛 , we note from the proof that 𝐼 𝑛 = Iset 𝑛 UNIV; so it all hinges upon whether Iset is the "right" way of lifting sets of elements of 𝛼 to sets of elements of 𝛼 𝑇 that respects the intended meaning of the subset 𝐼 of 𝛼 𝑇. In other words, whatever concept 𝐼 is supposed to represent, we want that Iset provides a correct relativization of that concept from the entire type 𝛼 to a subset 𝐴 ∶ 𝛼 𝑠𝑒𝑡. Our assumptions (A2)-(A4) are sanity properties for such a relativization, but whether this is the correct relativization needs to be established in each particular case-in other words, it is the responsability of the user of our framework to provide a correct and meaningful Iset operator. This is easily seen to be the case in our two examples, where the move from 𝐼 to Iset clearly represents the move from distributions on the whole type to distributions on a given subset, and from distinct lists on the whole type to distinct lists on a given subset, respectively. Moreover, the scheme that worked for distinct lists (of intersecting with the support operator) works for essentially the same reason for any container type.</p><p>Finally, a remark on the generality of the theorem: While we have formulated it in reference to the (possibly iterated) nesting of a single type constructor, the construction and proof can be straightforwardly (albeit tediously) extended to cope with combining / nesting different type constructors (which can also have more than one argument).</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5.">Related Work and Future Work</head><p>Isomorphic transfer is an important topic in formal reasoning, and is one of the main motivations of major recent developments such as Homotopy Type Theory <ref type="bibr" target="#b15">[16]</ref>. Transfer along ismorphisms, as well as along quotient projections and refinements, is also well represented in the world of HOL-based provers (and especially Isabelle/HOL), e.g., <ref type="bibr" target="#b16">[17,</ref><ref type="bibr" target="#b17">18,</ref><ref type="bibr" target="#b18">19,</ref><ref type="bibr" target="#b7">8,</ref><ref type="bibr" target="#b19">20,</ref><ref type="bibr" target="#b20">21]</ref>. In dependent type theory, problems similar to the ones we address here are formulated in the context of (partial) setoids <ref type="bibr" target="#b21">[22,</ref><ref type="bibr" target="#b22">23]</ref>, and proof assistants such as Coq <ref type="bibr" target="#b23">[24]</ref> (via SSReflect <ref type="bibr" target="#b24">[25]</ref>) and Lean <ref type="bibr" target="#b25">[26]</ref> offer quasi-automated mechanisms to address them, thus mitigating what is referred to as "setoid hell", i.e., the need to prove over and over again that certain (partial) equivalence relations are preserved by the defined functions. Note that the problem we addressed in this paper, which has to do with relativization to sets, is a particular case of relativization to partial equivalence relations-and in fact dealing with the former at higher-order types quickly escalates to having to deal with the latter, even in the absence of dependent types <ref type="bibr" target="#b9">[10]</ref>.</p><p>Another technical part of our setting concerns the HOL defined types, which are not included in their base types but only injected into them. Other formalisms offer pure subtyping / inclusion mechanisms, notably PVS <ref type="bibr" target="#b26">[27]</ref>, F ⋆ <ref type="bibr" target="#b27">[28]</ref>, and logical frameworks featuring refinement types <ref type="bibr" target="#b28">[29]</ref>-where the goal of isomorphic transfer is replaced by corresponding goals concerning automating aspects of type checking.</p><p>Next, we will focus on the most closely related work, namely Isabelle's Lifting and Transfer package <ref type="bibr" target="#b29">[30,</ref><ref type="bibr" target="#b7">8]</ref>. From the very beginning, the authors of this tool have been aware of the potential difficulties raised by nested type constructors, and have implemented a solution based on parameterized transfer relations. For example, in the case of distrib, the current implementation defines automatically a relation in (𝛼 → real) → 𝛽 distrib → bool (thus using different type variables 𝛼 and 𝛽) as the composition between the relator ⇒ real and the relational version of Abs distrib . This does not guarantee an isomorphic relationship between nested applications of (_ → real) and distrib like our framework does (exported as a type_definition theorem), but offers enough infrastructure in order to allow the user to "lift" the definition of constants from (_ → real) to distrib even in the presence of nesting. Since the relativized defining set is not provided explicitly (like in our framework, as the operator Iset), the proof goals arising when transferring theorems containing such constants are quite intricate and convoluted, in sharp contrast to the non-nested case. On the other hand, at the expense of asking the user to provide more information (not just the relator Trel but also the operator Iset) and proving some sanity properties, our approach really flattens everything to the "first-order" non-nesting case-with the potential of simplifying the proof goals. Moreover, currently the transfer package relies on a parametricity theorem for the defined type's underlying predicate, which our approach does not. Overall, our approach requires some more initial effort from the user upon introducing a new type, but this has the potential to pay off in the later stages of the developments.</p><p>This having been said, our work addresses only a subproblem of the overall lifting and transfer problem, which the Lifting and Transfer package addresses quite comprehensively. So we do not envision our development as an alternative to this mature tool, but as a possible "add-on" that can improve the usability and automation of the tool's handling of nested types. Since what we produce for nested types are type_definition theorems, these can in principle be directly integrated into the Lifting and Transfer package (via the "setup_lifting" command), save for one difficulty caused by the fact that any provided abstraction operators are currently required to be registered as dataype-like constructors-addressing this formal engineering problem is ongoing work. (Of course, the integration will involve the fully general case, of different type constructors of possible multiple arguments nested in arbitrary ways.)</p><p>Another short-term plan is to provide some generic infrastructure that automates our inferred result for arbitrary type constructors, which can then be instantiated to different cases. This is being tackled (in joint work with Dmitriy Traytel) with the help of a quasi-foundational developement of polymorphic locales, generalizing Isabelle's standard (monomorphic) locales <ref type="bibr" target="#b30">[31,</ref><ref type="bibr" target="#b31">32]</ref> in a manner that does not impair the meta-properties of the logic and definitional mechanisms underlying Isabelle/HOL <ref type="bibr" target="#b32">[33,</ref><ref type="bibr" target="#b33">34,</ref><ref type="bibr" target="#b34">35,</ref><ref type="bibr" target="#b35">36]</ref>.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head></head><label></label><figDesc>(polymorphic) predicate distinct ∶ 𝛼 list → bool by distinct xs ≡ ∀𝑖 𝑗. 𝑖 &lt; 𝑗 ∧ 𝑗 &lt; length xs ⟶ xs!𝑖 ≠ xs!𝑗. The new (polymorphic) type 𝛼 dlist of distinct lists is defined as a typedef: typedef 𝛼 dlist = {xs ∶ 𝛼 list | distinct xs} This command introduces the new type 𝛼 dlist together with an abstraction-representation pair of (polymorphic) constants 2 (Rep dlist , Abs dlist ) with Rep dlist ∶ 𝛼 dlist → 𝛼 list and Abs dlist ∶ 𝛼 list → 𝛼 dlist PhD Symposium of the 19th International Conference on Integrated Formal Methods (iFM) at the University of Manchester, UK, 12 November 2024.</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_1"><head>type_definition</head><label></label><figDesc>Rep dlist Abs dlist {xs ∶ 𝛼 list | distinct xs} where the (polymorphic) predicate type_definition ∶ (𝛽 → 𝛼) → (𝛼 → 𝛽) → (𝛼 set) → bool is defined as follows: type_definition 𝑟 𝑎 𝐴 ≡ (∀𝑥. 𝑟 𝑥 ∈ 𝐴) ∧ (∀𝑦 ∶ 𝛽. 𝑎 (𝑟 𝑦) = 𝑦) ∧ (∀𝑥 ∶ 𝛼. 𝑥 ∈ 𝐴 ⟶ 𝑟 (𝑎 𝑥) = 𝑥).</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_0"><head></head><label></label><figDesc>A (discrete) distribution is a positive function to the real numbers of countable support such that its values sum up to to 1. The polymorphic type 𝛼 distrib of distributions on 𝛼 is introduced as a typedef having base type 𝛼 → real (the type of functions from 𝛼 to real ): typedef 𝛼 distrib = {𝑓 ∶ 𝛼 → real | dist xs} where the predicate dist ∶ (𝛼 → real) → bool is defined by dist 𝑓 ≡ (∀𝑥 ∶ 𝛼. 𝑓 𝑥 ≥ 0) ∧ countable {𝑥 ∶ 𝛼 | 𝑓 𝑥 ≠ 0} ∧ ∑ 𝑥∶𝛼 𝑓 𝑥 = 1. As before, the above command introduces a new type 𝛼 distrib , an abstraction-representation pair of constants (Rep dlist , Abs dlist ) with (Rep distrib , Abs distrib ) with Rep distrib ∶ 𝛼 distrib → 𝛼 list, and the axiom type_definition Rep distrib Abs distrib {𝑓 ∶ 𝛼 → real | dist 𝑓 } saying that Abs distrib and Rep distrib are mutually inverse bijections between 𝛼 distrib and {𝑓 ∶ 𝛼 → real | distrib xs}.</figDesc><table /><note>Thus, in this example 𝑇 is 𝛼 list, 𝐼 is {xs ∶ 𝛼 list | distinct xs}, and 𝑆 is 𝛼 dlist. □ Example 2. (Discrete Distributions) Thus, in this example 𝑇 is 𝛼 → real, 𝐼 is {𝑓 ∶ 𝛼 → real | dist xs}, and 𝑆 is 𝛼 distrib. □</note></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_1"><head></head><label></label><figDesc>• We define Abs dlist,2 ∶ (𝛼 list) list → (𝛼 dlist) dlist by Abs list,2 xss = Abs list (map Abs list xss). • We define Rep dlist,2 ∶ (𝛼 dlist) dlist → (𝛼 list) list by Rep list,2 xss = Rep list (map Rep list xss). where map is the standard mapping operator for lists. Again, we have that type_definition Abs dlist,2 Rep dlist,2 {xss | distinct 2 xss} holds.</figDesc><table /><note>Therefore, we can prove that type_definition Abs distrib,2 Rep distrib,2 {𝐷 | dist 2 𝐷} holds. It now remains to prove the associativity of join distrib , which we can rephrase as ∀𝐷 ∶ ((𝛼 distrib) distrib) distrib. join distrib (map distrib join distrib 𝐷) = join distrib (join distrib 𝐷) . This involves further level of nesting of distrib; to this end, by essentially iterating one more step the above construction, we obtain dist 3 ∶ (((𝛼 → real) → real) → real) → bool , Abs distrib,3 ∶ (((𝛼 → real) → real) → real) → ((𝛼 distrib) distrib) distrib and Rep distrib,3 ∶ ((𝛼 distrib) distrib) distrib → (((𝛼 → real) → real) → real) such that type_definition Abs distrib,3 Rep distrib,3 {𝐷 | dist 3 𝐷} holds. Now we can easily prove associativity similarly to how we proceeded in the non-nested case, but using the appropriate back and forth infrastructure in each case, depending on the level of nesting. A somewhat similar discussion applies to distinct lists, though the details differ: • We define distinct 2 ∶ (𝛼 list) list → bool by distinct 2 xss ≡ distinct xss ∧ (∀𝑖 &lt; length xss. distinct (xss!𝑖)).</note></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_2"><head></head><label></label><figDesc>technical terms: Given a polymorphic type 𝛼 𝑇 and a polymorphic operator 𝐼 ∶ (𝛼 𝑇 ) set such that 𝐼 ≠ ∅ which produce a type definition typedef 𝛼 𝑆 = {𝑥 ∶ 𝛼 𝑇 | 𝑥 ∈ 𝐼 } what structure and properties are in general required for 𝑇 and 𝐼 in order to be able to lift the operator 𝐼 and abstraction-representation pair (Abs 𝑆 , Rep 𝑆 ), for any 𝑛, to 𝑛-level operator 𝐼 𝑛 ∶ (𝛼 𝑇 𝑛 ) set and abstraction-representation pair (Abs 𝑆,𝑛 , Rep 𝑆,𝑛 ) with Abs 𝑆,𝑛 ∶ 𝛼 𝑇 𝑛 → 𝛼 𝑆 𝑛 and Rep 𝑇 ,𝑛 ∶ 𝛼 𝑇 𝑛 → 𝛼 𝑆 𝑛 such that type_definition Abs 𝑆,𝑛 Rep 𝑇 ,𝑛 {𝑥 ∶ 𝛼 𝑇 | 𝐼 𝑥} holds? (Above, 𝛼 𝑇</figDesc><table /><note>𝑛 denotes the 𝑛'th iteration of the type constructor 𝑇, in particular 𝛼 𝑇 1 = 𝛼 𝑇 and 𝛼 𝑇 2 = (𝛼 𝑇 ) 𝑇; and similarly for 𝑆.) Indeed, this would allow us to seamlessly apply to the nested case the same back and forth techniques as in the non-nested case.</note></figure>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="3" xml:id="foot_0">These are sometimes called an "embedding-projection pair"; here we prefer terminology that is closer to HOL, referring to a representation function (indicating how elements of the new type are represented/implemented in terms of those of the old one) and an opposite abstraction function.</note>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="4" xml:id="foot_1">Incidentally, in Isabelle/HOL the operator 𝐿 is called lists-a suggestive name given that this operator is the set-based counterpart of the list type constructor: it takes any set 𝐴 to the set of lists formed with elements of 𝐴.</note>
		</body>
		<back>

			<div type="acknowledgement">
<div xmlns="http://www.tei-c.org/ns/1.0"><p>Acknowledgments. We thank the three anonymous reviewers for their valuable comments and suggestions, which led to the improvement of the presentation and to the discussion of more related work.</p></div>
			</div>

			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<monogr>
		<title level="m" type="main">The HOL4 Theorem Prover</title>
		<author>
			<persName><forename type="first">Hol</forename><surname>The</surname></persName>
		</author>
		<author>
			<persName><surname>Team</surname></persName>
		</author>
		<ptr target="Http://hol.sourceforge.net/" />
		<imprint>
			<date type="published" when="2024">2024</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<analytic>
		<title level="a" type="main">HOL light: An overview</title>
		<author>
			<persName><forename type="first">J</forename><surname>Harrison</surname></persName>
		</author>
		<idno type="DOI">10.1007/978-3-642-03359-9_4</idno>
	</analytic>
	<monogr>
		<title level="m">TPHOLs 2009</title>
				<editor>
			<persName><forename type="first">S</forename><surname>Berghofer</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">T</forename><surname>Nipkow</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">C</forename><surname>Urban</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">M</forename><surname>Wenzel</surname></persName>
		</editor>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2009">2009</date>
			<biblScope unit="volume">5674</biblScope>
			<biblScope unit="page" from="60" to="66" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<analytic>
		<title level="a" type="main">Isabelle/HOL -A Proof Assistant for Higher-Order Logic</title>
		<author>
			<persName><forename type="first">T</forename><surname>Nipkow</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><forename type="middle">C</forename><surname>Paulson</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Wenzel</surname></persName>
		</author>
		<idno type="DOI">10.1007/3-540-45949-9</idno>
	</analytic>
	<monogr>
		<title level="j">LNCS</title>
		<imprint>
			<biblScope unit="volume">2283</biblScope>
			<date type="published" when="2002">2002</date>
			<publisher>Springer</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b3">
	<analytic>
		<title level="a" type="main">Inductive datatypes in HOL -lessons learned in formal-logic engineering</title>
		<author>
			<persName><forename type="first">S</forename><surname>Berghofer</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Wenzel</surname></persName>
		</author>
		<idno type="DOI">10.1007/3-540-48256-3_3</idno>
	</analytic>
	<monogr>
		<title level="m">TPHOLs 1999</title>
				<editor>
			<persName><forename type="first">Y</forename><surname>Bertot</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">G</forename><surname>Dowek</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">A</forename><surname>Hirschowitz</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">C</forename><surname>Paulin-Mohring</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">L</forename><surname>Théry</surname></persName>
		</editor>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="1999">1999</date>
			<biblScope unit="volume">1690</biblScope>
			<biblScope unit="page" from="19" to="36" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b4">
	<analytic>
		<title level="a" type="main">Foundational, compositional (co)datatypes for higher-order logic: Category theory applied to theorem proving</title>
		<author>
			<persName><forename type="first">D</forename><surname>Traytel</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Popescu</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">C</forename><surname>Blanchette</surname></persName>
		</author>
		<idno type="DOI">10.1109/LICS.2012.75</idno>
	</analytic>
	<monogr>
		<title level="m">LICS 2012</title>
				<imprint>
			<date type="published" when="2012">2012</date>
			<biblScope unit="page" from="596" to="605" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b5">
	<analytic>
		<title level="a" type="main">Truly modular (co)datatypes for isabelle/hol</title>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">C</forename><surname>Blanchette</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Hölzl</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Lochbihler</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><surname>Panny</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Popescu</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Traytel</surname></persName>
		</author>
		<idno type="DOI">10.1007/978-3-319-08970-6_7</idno>
	</analytic>
	<monogr>
		<title level="m">ITP 2014</title>
				<editor>
			<persName><forename type="first">G</forename><surname>Klein</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">R</forename><surname>Gamboa</surname></persName>
		</editor>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2014">2014</date>
			<biblScope unit="volume">8558</biblScope>
			<biblScope unit="page" from="93" to="110" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b6">
	<analytic>
		<title level="a" type="main">Foundational nonuniform (co)datatypes for higher-order logic</title>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">C</forename><surname>Blanchette</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Meier</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Popescu</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Traytel</surname></persName>
		</author>
		<idno type="DOI">10.1109/LICS.2017.8005071</idno>
		<ptr target="https://doi.org/10.1109/LICS.2017.8005071.doi:10.1109/LICS.2017.8005071" />
	</analytic>
	<monogr>
		<title level="m">Annual ACM/IEEE Symposium on Logic in Computer Science, LICS 2017</title>
				<meeting><address><addrLine>Reykjavik, Iceland</addrLine></address></meeting>
		<imprint>
			<publisher>IEEE Computer Society</publisher>
			<date type="published" when="2017">June 20-23, 2017. 2017</date>
			<biblScope unit="page" from="1" to="12" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b7">
	<analytic>
		<title level="a" type="main">Lifting and Transfer: A Modular Design for Quotients in Isabelle/HOL</title>
		<author>
			<persName><forename type="first">B</forename><surname>Huffman</surname></persName>
		</author>
		<author>
			<persName><forename type="first">O</forename><surname>Kuncar</surname></persName>
		</author>
		<idno type="DOI">10.1007/978-3-319-03545-1_9</idno>
	</analytic>
	<monogr>
		<title level="m">CPP 2013</title>
				<editor>
			<persName><forename type="first">G</forename><surname>Gonthier</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">M</forename><surname>Norrish</surname></persName>
		</editor>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2013">2013</date>
			<biblScope unit="volume">8307</biblScope>
			<biblScope unit="page" from="131" to="146" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b8">
	<analytic>
		<title level="a" type="main">From types to sets by local type definition in higher-order logic</title>
		<author>
			<persName><forename type="first">O</forename><surname>Kunčar</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Popescu</surname></persName>
		</author>
		<idno type="DOI">10.1007/s10817-018-9464-6</idno>
	</analytic>
	<monogr>
		<title level="j">J. Autom. Reason</title>
		<imprint>
			<biblScope unit="volume">62</biblScope>
			<biblScope unit="page" from="237" to="260" />
			<date type="published" when="2019">2019</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b9">
	<analytic>
		<title level="a" type="main">Admissible types-to-pers relativization in Higher-Order Logic</title>
		<author>
			<persName><forename type="first">A</forename><surname>Popescu</surname></persName>
		</author>
		<author>
			<persName><forename type="first">D</forename><surname>Traytel</surname></persName>
		</author>
		<idno type="DOI">10.1145/3571235</idno>
		<ptr target="https://doi.org/10.1145/3571235.doi:10.1145/3571235" />
	</analytic>
	<monogr>
		<title level="j">Proc. ACM Program. Lang</title>
		<imprint>
			<biblScope unit="volume">7</biblScope>
			<biblScope unit="page" from="1214" to="1245" />
			<date type="published" when="2023">2023</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b10">
	<monogr>
		<author>
			<persName><forename type="first">G</forename><surname>Buday</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Popescu</surname></persName>
		</author>
		<ptr target="https://www.andreipopescu.uk/suppl/iFM2024.zip" />
		<title level="m">Supplementary material associated to this paper</title>
				<imprint>
			<date type="published" when="2024">2024</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b11">
	<monogr>
		<author>
			<persName><forename type="first">R</forename><surname>Godement</surname></persName>
		</author>
		<title level="m">Topologie algébrique et théorie des faisceaux</title>
				<meeting><address><addrLine>Paris</addrLine></address></meeting>
		<imprint>
			<date type="published" when="1958">1958</date>
		</imprint>
		<respStmt>
			<orgName>Institut de Mathématique de l&apos;Université de Strasbourg, Hermann</orgName>
		</respStmt>
	</monogr>
	<note>Publications de l&apos;</note>
</biblStruct>

<biblStruct xml:id="b12">
	<analytic>
		<title level="a" type="main">Notions of computation and monads</title>
		<author>
			<persName><forename type="first">E</forename><surname>Moggi</surname></persName>
		</author>
		<idno type="DOI">10.1016/0890-5401(91)90052-4</idno>
		<idno>doi:10.1016/0890-5401(91)90052-4</idno>
		<ptr target="https://doi.org/10.1016/0890-5401(91)90052-4" />
	</analytic>
	<monogr>
		<title level="j">Inf. Comput</title>
		<imprint>
			<biblScope unit="volume">93</biblScope>
			<biblScope unit="page" from="55" to="92" />
			<date type="published" when="1991">1991</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b13">
	<analytic>
		<title level="a" type="main">Types, abstraction and parametric polymorphism</title>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">C</forename><surname>Reynolds</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Holland/IFIP</title>
				<editor>
			<persName><forename type="first">R</forename><forename type="middle">E A</forename><surname>Mason</surname></persName>
		</editor>
		<meeting><address><addrLine>North-</addrLine></address></meeting>
		<imprint>
			<date type="published" when="1983">1983</date>
			<biblScope unit="page" from="513" to="523" />
		</imprint>
	</monogr>
	<note>IFIP 1983</note>
</biblStruct>

<biblStruct xml:id="b14">
	<analytic>
		<title level="a" type="main">Theorems for free!</title>
		<author>
			<persName><forename type="first">P</forename><surname>Wadler</surname></persName>
		</author>
		<idno type="DOI">10.1145/99370.99404</idno>
	</analytic>
	<monogr>
		<title level="m">FPCA 1989</title>
				<editor>
			<persName><forename type="first">J</forename><forename type="middle">E</forename><surname>Stoy</surname></persName>
		</editor>
		<imprint>
			<publisher>ACM</publisher>
			<date type="published" when="1989">1989</date>
			<biblScope unit="page" from="347" to="359" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b15">
	<monogr>
		<author>
			<persName><forename type="first">T</forename></persName>
		</author>
		<ptr target="https://homotopytypetheory.org/book" />
		<title level="m">Univalent Foundations Program, Homotopy Type Theory: Univalent Foundations of Mathematics</title>
				<imprint>
			<date type="published" when="2013">2013</date>
		</imprint>
		<respStmt>
			<orgName>Institute for Advanced Study</orgName>
		</respStmt>
	</monogr>
</biblStruct>

<biblStruct xml:id="b16">
	<analytic>
		<title level="a" type="main">A design structure for higher order quotients</title>
		<author>
			<persName><forename type="first">P</forename><forename type="middle">V</forename><surname>Homeier</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Theorem Proving in Higher Order Logics, 18th International Conference</title>
		<title level="s">Lecture Notes in Computer Science</title>
		<editor>
			<persName><forename type="first">J</forename><surname>Hurd</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">T</forename><forename type="middle">F</forename><surname>Melham</surname></persName>
		</editor>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2005">2005</date>
			<biblScope unit="volume">3603</biblScope>
			<biblScope unit="page" from="130" to="146" />
		</imprint>
	</monogr>
	<note>TPHOLs 2005</note>
</biblStruct>

<biblStruct xml:id="b17">
	<analytic>
		<title level="a" type="main">Quotients revisited for Isabelle/HOL</title>
		<author>
			<persName><forename type="first">C</forename><surname>Kaliszyk</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Urban</surname></persName>
		</author>
		<idno type="DOI">10.1145/1982185.1982529</idno>
		<idno>doi:10.1145/1982185.1982529</idno>
		<ptr target="https://doi.org/10.1145/1982185.1982529" />
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 2011 ACM Symposium on Applied Computing (SAC)</title>
				<editor>
			<persName><forename type="first">W</forename><forename type="middle">C</forename><surname>Chu</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">W</forename><forename type="middle">E</forename><surname>Wong</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">M</forename><forename type="middle">J</forename><surname>Palakal</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">C</forename><surname>Hung</surname></persName>
		</editor>
		<meeting>the 2011 ACM Symposium on Applied Computing (SAC)<address><addrLine>TaiChung, Taiwan</addrLine></address></meeting>
		<imprint>
			<publisher>ACM</publisher>
			<date type="published" when="2011">March 21 -24, 2011. 2011</date>
			<biblScope unit="page" from="1639" to="1644" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b18">
	<analytic>
		<title level="a" type="main">Automatic data refinement</title>
		<author>
			<persName><forename type="first">P</forename><surname>Lammich</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Interactive Theorem Proving -4th International Conference, ITP</title>
		<title level="s">Lecture Notes in Computer Science</title>
		<editor>
			<persName><forename type="first">S</forename><surname>Blazy</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">C</forename><surname>Paulin-Mohring</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">D</forename><surname>Pichardie</surname></persName>
		</editor>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2013">7998. 2013</date>
			<biblScope unit="page" from="84" to="99" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b19">
	<analytic>
		<title level="a" type="main">Nonfree datatypes in Isabelle/HOL -animating a many-sorted metatheory</title>
		<author>
			<persName><forename type="first">A</forename><surname>Schropp</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Popescu</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Certified Programs and Proofs -Third International Conference</title>
				<editor>
			<persName><forename type="first">G</forename><surname>Gonthier</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">M</forename><surname>Norrish</surname></persName>
		</editor>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2013">2013</date>
			<biblScope unit="volume">8307</biblScope>
			<biblScope unit="page" from="114" to="130" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b20">
	<analytic>
		<title level="a" type="main">An extension of the framework types-to-sets for Isabelle/HOL</title>
		<author>
			<persName><forename type="first">M</forename><surname>Milehins</surname></persName>
		</author>
		<idno type="DOI">10.1145/3497775.3503674</idno>
	</analytic>
	<monogr>
		<title level="m">CPP 2022</title>
				<editor>
			<persName><forename type="first">A</forename><surname>Popescu</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">S</forename><surname>Zdancewic</surname></persName>
		</editor>
		<imprint>
			<publisher>ACM</publisher>
			<date type="published" when="2022">2022</date>
			<biblScope unit="page" from="180" to="196" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b21">
	<analytic>
		<title level="a" type="main">Setoids in type theory</title>
		<author>
			<persName><forename type="first">G</forename><surname>Barthe</surname></persName>
		</author>
		<author>
			<persName><forename type="first">V</forename><surname>Capretta</surname></persName>
		</author>
		<author>
			<persName><forename type="first">O</forename><surname>Pons</surname></persName>
		</author>
		<idno type="DOI">10.1017/S0956796802004501</idno>
	</analytic>
	<monogr>
		<title level="j">J. Funct. Program</title>
		<imprint>
			<biblScope unit="volume">13</biblScope>
			<biblScope unit="page" from="261" to="293" />
			<date type="published" when="2003">2003</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b22">
	<analytic>
		<title level="a" type="main">Setoid type theory -A syntactic translation</title>
		<author>
			<persName><forename type="first">T</forename><surname>Altenkirch</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Boulier</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Kaposi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">N</forename><surname>Tabareau</surname></persName>
		</author>
		<idno type="DOI">10.1007/978-3-030-33636-3_7</idno>
		<idno>doi:</idno>
		<ptr target="10.1007/978-3-030-33636-3\_7" />
	</analytic>
	<monogr>
		<title level="m">Mathematics of Program Construction -13th International Conference, MPC 2019</title>
		<title level="s">Lecture Notes in Computer Science</title>
		<editor>
			<persName><forename type="first">G</forename><surname>Hutton</surname></persName>
		</editor>
		<meeting><address><addrLine>Porto, Portugal</addrLine></address></meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2019">October 7-9, 2019. 2019</date>
			<biblScope unit="volume">11825</biblScope>
			<biblScope unit="page" from="155" to="196" />
		</imprint>
	</monogr>
	<note>Proceedings</note>
</biblStruct>

<biblStruct xml:id="b23">
	<analytic>
		<title level="a" type="main">Interactive Theorem Proving and Program Development -Coq&apos;Art: The Calculus of Inductive Constructions</title>
		<author>
			<persName><forename type="first">Y</forename><surname>Bertot</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Castéran</surname></persName>
		</author>
		<idno type="DOI">10.1007/978-3-662-07964-5</idno>
		<idno>doi:</idno>
		<ptr target="10.1007/978-3-662-07964-5" />
	</analytic>
	<monogr>
		<title level="s">Texts in Theoretical Computer Science. An EATCS Series</title>
		<imprint>
			<date type="published" when="2004">2004</date>
			<publisher>Springer</publisher>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b24">
	<analytic>
		<title level="a" type="main">An introduction to small scale reflection in coq</title>
		<author>
			<persName><forename type="first">G</forename><surname>Gonthier</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Mahboubi</surname></persName>
		</author>
		<idno type="DOI">10.6092/ISSN.1972-5787/1979</idno>
		<ptr target="https://doi.org/10.6092/issn.1972-5787/1979.doi:10.6092/ISSN.1972-5787/1979" />
	</analytic>
	<monogr>
		<title level="j">J. Formaliz. Reason</title>
		<imprint>
			<biblScope unit="volume">3</biblScope>
			<biblScope unit="page" from="95" to="152" />
			<date type="published" when="2010">2010</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b25">
	<analytic>
		<title level="a" type="main">The lean theorem prover (system description)</title>
		<author>
			<persName><forename type="first">L</forename><forename type="middle">M</forename><surname>De Moura</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Kong</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Avigad</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Van Doorn</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><surname>Raumer</surname></persName>
		</author>
		<idno type="DOI">10.1007/978-3-319-21401-6_26</idno>
	</analytic>
	<monogr>
		<title level="m">CADE-25</title>
				<editor>
			<persName><forename type="first">A</forename><forename type="middle">P</forename><surname>Felty</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">A</forename><surname>Middeldorp</surname></persName>
		</editor>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2015">9195. 2015</date>
			<biblScope unit="page" from="378" to="388" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b26">
	<analytic>
		<title level="a" type="main">Subtypes for specifications: Predicate subtyping in PVS</title>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">M</forename><surname>Rushby</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Owre</surname></persName>
		</author>
		<author>
			<persName><forename type="first">N</forename><surname>Shankar</surname></persName>
		</author>
		<idno type="DOI">10.1109/32.713327</idno>
		<idno>doi:</idno>
		<ptr target="10.1109/32.713327" />
	</analytic>
	<monogr>
		<title level="j">IEEE Trans. Software Eng</title>
		<imprint>
			<biblScope unit="volume">24</biblScope>
			<biblScope unit="page" from="709" to="720" />
			<date type="published" when="1998">1998</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b27">
	<analytic>
		<title level="a" type="main">Dependent types and multi-monadic effects in F</title>
		<author>
			<persName><forename type="first">N</forename><surname>Swamy</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Hritcu</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Keller</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Rastogi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Delignat-Lavaud</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Forest</surname></persName>
		</author>
		<author>
			<persName><forename type="first">K</forename><surname>Bhargavan</surname></persName>
		</author>
		<author>
			<persName><forename type="first">C</forename><surname>Fournet</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Strub</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Kohlweiss</surname></persName>
		</author>
		<author>
			<persName><forename type="first">J</forename><forename type="middle">K</forename><surname>Zinzindohoue</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><forename type="middle">Z</forename><surname>Béguelin</surname></persName>
		</author>
		<idno type="DOI">10.1145/2837614.2837655</idno>
		<idno>doi:10.1145/2837614.2837655</idno>
		<ptr target="https://doi.org/10.1145/2837614.2837655" />
	</analytic>
	<monogr>
		<title level="m">Proceedings of the 43rd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL 2016</title>
				<editor>
			<persName><forename type="first">R</forename><surname>Bodík</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">R</forename><surname>Majumdar</surname></persName>
		</editor>
		<meeting>the 43rd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL 2016<address><addrLine>St. Petersburg, FL, USA</addrLine></address></meeting>
		<imprint>
			<publisher>ACM</publisher>
			<date type="published" when="2016">January 20 -22, 2016. 2016</date>
			<biblScope unit="page" from="256" to="270" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b28">
	<analytic>
		<title level="a" type="main">Refinement types for logical frameworks and their interpretation as proof irrelevance</title>
		<author>
			<persName><forename type="first">W</forename><surname>Lovas</surname></persName>
		</author>
		<author>
			<persName><forename type="first">F</forename><surname>Pfenning</surname></persName>
		</author>
		<idno type="DOI">10.2168/LMCS-6(4:5)2010</idno>
		<idno>doi:10.2168/LMCS-6(4:</idno>
		<ptr target="https://doi.org/10.2168/LMCS-6(4:5)2010" />
	</analytic>
	<monogr>
		<title level="j">Log. Methods Comput. Sci</title>
		<imprint>
			<biblScope unit="volume">6</biblScope>
			<date type="published" when="2010-05">2010. 5)2010</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b29">
	<monogr>
		<title level="m" type="main">Types, Abstraction and Parametric Polymorphism in Higher-Order Logic</title>
		<author>
			<persName><forename type="first">O</forename><surname>Kunčar</surname></persName>
		</author>
		<ptr target="http://www21.in.tum.de/~kuncar/documents/kuncar-phdthesis.pdf" />
		<imprint>
			<date type="published" when="2016">2016</date>
		</imprint>
		<respStmt>
			<orgName>Fakultät für Informatik, Technische Universität München</orgName>
		</respStmt>
	</monogr>
	<note type="report_type">Ph.D. thesis</note>
</biblStruct>

<biblStruct xml:id="b30">
	<analytic>
		<title level="a" type="main">Locales -A sectioning concept for Isabelle</title>
		<author>
			<persName><forename type="first">F</forename><surname>Kammüller</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><surname>Wenzel</surname></persName>
		</author>
		<author>
			<persName><forename type="first">L</forename><forename type="middle">C</forename><surname>Paulson</surname></persName>
		</author>
		<idno type="DOI">10.1007/3-540-48256-3_11</idno>
		<idno>doi:</idno>
		<ptr target="10.1007/3-540-48256-3\_11" />
	</analytic>
	<monogr>
		<title level="m">Theorem Proving in Higher Order Logics, 12th International Conference, TPHOLs&apos;99</title>
		<title level="s">Lecture Notes in Computer Science</title>
		<editor>
			<persName><forename type="first">Y</forename><surname>Bertot</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">G</forename><surname>Dowek</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">A</forename><surname>Hirschowitz</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">C</forename><surname>Paulin-Mohring</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">L</forename><surname>Théry</surname></persName>
		</editor>
		<meeting><address><addrLine>Nice, France</addrLine></address></meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="1999-09">September, 1999. 1999</date>
			<biblScope unit="volume">1690</biblScope>
			<biblScope unit="page" from="149" to="166" />
		</imprint>
	</monogr>
	<note>Proceedings</note>
</biblStruct>

<biblStruct xml:id="b31">
	<analytic>
		<title level="a" type="main">Locales and locale expressions in isabelle/isar</title>
		<author>
			<persName><forename type="first">C</forename><surname>Ballarin</surname></persName>
		</author>
		<idno type="DOI">10.1007/978-3-540-24849-1_3</idno>
		<idno>doi:</idno>
		<ptr target="10.1007/978-3-540-24849-1\_3" />
	</analytic>
	<monogr>
		<title level="m">Types for Proofs and Programs, International Workshop, TYPES 2003</title>
		<title level="s">Lecture Notes in Computer Science</title>
		<editor>
			<persName><forename type="first">S</forename><surname>Berardi</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">M</forename><surname>Coppo</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">F</forename><surname>Damiani</surname></persName>
		</editor>
		<meeting><address><addrLine>Torino, Italy</addrLine></address></meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2003-05-04">April 30 -May 4, 2003. 2003</date>
			<biblScope unit="volume">3085</biblScope>
			<biblScope unit="page" from="34" to="50" />
		</imprint>
	</monogr>
	<note>Revised Selected Papers</note>
</biblStruct>

<biblStruct xml:id="b32">
	<analytic>
		<title level="a" type="main">Comprehending Isabelle/HOL&apos;s consistency</title>
		<author>
			<persName><forename type="first">O</forename><surname>Kuncar</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Popescu</surname></persName>
		</author>
		<idno type="DOI">10.1007/978-3-662-54434-1_27</idno>
		<idno>doi:</idno>
		<ptr target="10.1007/978-3-662-54434-1\_27" />
	</analytic>
	<monogr>
		<title level="m">Programming Languages and Systems -26th European Symposium on Programming, ESOP 2017, Held as Part of the European Joint Conferences on Theory and Practice of Software, ETAPS 2017</title>
		<title level="s">Lecture Notes in Computer Science</title>
		<editor>
			<persName><forename type="first">H</forename><surname>Yang</surname></persName>
		</editor>
		<meeting><address><addrLine>Uppsala, Sweden</addrLine></address></meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2017">April 22-29, 2017. 2017</date>
			<biblScope unit="volume">10201</biblScope>
			<biblScope unit="page" from="724" to="749" />
		</imprint>
	</monogr>
	<note>Proceedings</note>
</biblStruct>

<biblStruct xml:id="b33">
	<analytic>
		<title level="a" type="main">A consistent foundation for Isabelle/HOL</title>
		<author>
			<persName><forename type="first">O</forename><surname>Kuncar</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Popescu</surname></persName>
		</author>
		<idno type="DOI">10.1007/S10817-018-9454-8</idno>
		<ptr target="https://doi.org/10.1007/s10817-018-9454-8.doi:10.1007/S10817-018-9454-8" />
	</analytic>
	<monogr>
		<title level="j">J. Autom. Reason</title>
		<imprint>
			<biblScope unit="volume">62</biblScope>
			<biblScope unit="page" from="531" to="555" />
			<date type="published" when="2019">2019</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b34">
	<analytic>
		<title level="a" type="main">Safety and conservativity of definitions in HOL and Isabelle/HOL</title>
		<author>
			<persName><forename type="first">O</forename><surname>Kuncar</surname></persName>
		</author>
		<author>
			<persName><forename type="first">A</forename><surname>Popescu</surname></persName>
		</author>
		<idno type="DOI">10.1145/3158112</idno>
		<ptr target="https://doi.org/10.1145/3158112.doi:10.1145/3158112" />
	</analytic>
	<monogr>
		<title level="j">Proc. ACM Program. Lang</title>
		<imprint>
			<biblScope unit="volume">2</biblScope>
			<biblScope unit="page">26</biblScope>
			<date type="published" when="2018">2018</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b35">
	<analytic>
		<title level="a" type="main">Proof-theoretic conservative extension of HOL with ad-hoc overloading</title>
		<author>
			<persName><forename type="first">A</forename><surname>Gengelbach</surname></persName>
		</author>
		<author>
			<persName><forename type="first">T</forename><surname>Weber</surname></persName>
		</author>
		<idno type="DOI">10.1007/978-3-030-64276-1_2</idno>
		<idno>doi:</idno>
		<ptr target="10.1007/978-3-030-64276-1\_2" />
	</analytic>
	<monogr>
		<title level="m">Theoretical Aspects of Computing -ICTAC 2020 -17th International Colloquium</title>
		<title level="s">Lecture Notes in Computer Science</title>
		<editor>
			<persName><forename type="first">V</forename><forename type="middle">K I</forename><surname>Pun</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">V</forename><surname>Stolz</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">A</forename><surname>Simão</surname></persName>
		</editor>
		<meeting><address><addrLine>Macau, China</addrLine></address></meeting>
		<imprint>
			<publisher>Springer</publisher>
			<date type="published" when="2020-12-04">November 30 -December 4, 2020. 2020</date>
			<biblScope unit="volume">12545</biblScope>
			<biblScope unit="page" from="23" to="42" />
		</imprint>
	</monogr>
	<note>Proceedings</note>
</biblStruct>

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