<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Formalizing a Named Explicit Substitutions Calculus in Coq</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Washington L. R. de C. Segundo</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Flavio L. C. de Moura</string-name>
          <email>aviomoura@unb.br</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Daniel L. Ventura</string-name>
          <email>daniel@inf.ufg.br</email>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Departamento de Ci</institution>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Instituto de Informatica, Universidade Federal de Goias</institution>
          ,
          <addr-line>Goi</addr-line>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>ania</institution>
          ,
          <country country="BR">Brazil</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>Explicit Substitutions (ES) calculi are extensions of the calculus that internalize the substitution operation, which is a metaoperation, by taking it as an ordinary operation belonging to the grammar of the ES calculus. As a formal system, ES are closer to implementations of functional languages and proof assistants, and are useful for studying properties of such systems. Nevertheless, several ES calculi do not satisfy important properties related with the simulation of the -calculus, such as con uence on open terms, simulation of one step reduction, full composition and the preservation of strong normalization (PSN). The latter, which states that -terms without in nite reduction sequences can only be nitely reduced in the ES calculus, is easily lost in such extensions. In a recent work, D. Kesner developed the ex-calculus, which is the rst ES calculus that satis es all the good properties expected for an ES calculus. In this work we present a formalization of the ex-calculus in the Coq Proof Assistant, which is fully available at http://www.cic.unb.br/ flavio/publications.html.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>
        An Explicit Substitutions (ES) calculus is an extension of the -calculus that
internalizes the substitution operation by extending its grammar such as:
t; u ::= x j x:t j t u j t[x=u]
(1)
where, beside the variable x, abstraction x:t and application t u, there is a
term t[x=u] denoting an explicit substitution, i.e., a pending substitution that
needs to wait to be performed [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ]. The free occurrences of the variable x in t are
bound in both x:t and t[x=u], as usual. As a formal system, an ES calculus is
composed by a set of rewriting rules with two parts whose aim is to simulate the
-calculus. The rst part is composed by a rule that starts the simulation of the
-reduction, and the second part is used to explicitly perform the substitution
operation. For instance, the x-calculus [
        <xref ref-type="bibr" rid="ref5">18,19,24,5</xref>
        ] is de ned by the following
? Corresponding author partially supported by FEMAT.
rewriting system:
( x:t)u ! t[x=u]
x[x=u] ! u
y[x=u] ! y
(t1 t2)[x=u] ! t1[x=u] t2[x=u]
( y:v)[x=u] ! y:v[x=u]
(x 6= y)
(x 6= y)
where the rst rule starts the simulation of the -reduction and the other rules
are responsible for executing, by propagating through the term's structure, the
pending substitution operation. In this way, the -step ( x:(x y)) z ! z y can
be simulated by ( x:(x y)) z ! (x y)[x=z] ! x[x=z] y[x=z] ! z y[x=z] ! z y.
      </p>
      <p>
        Most of the de ned calculi follow one of two approaches: the rst one uses
names for declaring variables as presented in (1). The advantage of this
approach is that its terms are more readable, but -equivalence, i.e. the class of
terms modulo renaming of bound variables, needs to be carefully manipulated.
Therefore, implementations of such calculi are not straightforward. Calculi in
this family include the x-, ex- [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ], lxr- [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ], sub- [21] and es-calculi [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ].
The second approach uses de Bruijn indexes [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ] to represent variables in such a
way that each term has a unique representation and hence -equivalence is no
longer necessary. For instance the -term ( x:(x y)) z is represented by ( (0 1))1,
where the 1 inside the denotes the position of the variable y in a xed context,
and the 1 outside the denotes the second variable in this context. Note also
that the 0 is bound by the while the 1 inside it represents the same variable
as 0 outside thus ( (0 1)) 0 represents ( x:(x y)) y. Therefore, -equivalence
is not a problem in this approach, but an algebraic manipulation of indexes is
necessary while performing substitutions. A simple example of calculus in this
approach is given by the s-calculus [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ] whose grammar, rules and an update
function upik(b) are given by:
      </p>
      <p>a; b ::= n j a j a b j a[n=b]
( a)b ! a[0=b]
8 n 1 if n &gt; i
&lt;
n[i=b] ! upi0(b) if n = i</p>
      <p>: n if n &lt; i
(a1 a2)[i=b] ! a1[i=b] a2[i=b]
( a)[i=b] a[i + 1=b]
!
upik( a) ! (upik+1(a))</p>
      <p>n + i if n &gt; k
upik(n) ! n if n k
upik(a1 a2) ! upik(a1) upik(a2)</p>
      <p>
        In this calculus, the previous example can be simulated as follows: ( (0 1))1 !
(0 1)[0=1] ! 0[0=1] 1[0=1] ! up00(1) 0 ! 1 0. Examples of calculi with de Bruijn
indexes are C [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ], [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ], se [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ], susp [22] and ws [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ].
      </p>
      <p>
        The formalization presented in this work takes advantages of both approaches:
it uses de Bruijn indexes to represent bound variables, while free variables are
represented by named variables. This framework, called the locally nameless
representation, is already available in Coq and a more detailed explanation of its
advantages can be found in [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ].
      </p>
      <p>
        Formalizing Explicit Substitutions Calculi
In this section we present the basic notions that will be used in our formalization
of the ex-calculus1, an ES calculus with names, in the Coq proof assistant. The
notion of terms is general and could be used for any calculus having the syntax
as in (1). In fact, the notion of terms given below is an extension of the
formalization of the -calculus presented in [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]. Terms are de ned over a signature of
preterms whose set of variables is formed by the bound variables (pterm bvar),
indexed by natural numbers, and named free variables (pterm fvar). Applications
(pterm app), abstractions (pterm abs) and explicit substitutions (pterm sub)
have the standard signature.
      </p>
      <p>Inductive pterm : Set :=
j pterm bvar : nat ! pterm
j pterm fvar : var ! pterm
j pterm app : pterm ! pterm ! pterm
j pterm abs : pterm ! pterm
j pterm sub : pterm ! pterm ! pterm.</p>
      <p>Notation t1 [t2 ] := (pterm sub t u).</p>
      <p>Terms of the ex-calculus are de ned by an unary predicate over pre-terms.
The intuition is that a term is a pre-term without dangling de Bruijn indexes. We
extended the predicate term to pre-terms with explicit substitution as follows:
Inductive term : pterm ! Prop :=
j term var : 8 x,</p>
      <p>term (pterm fvar x )
j term app : 8 t1 t2,</p>
      <p>term t1 ! term t2 ! term (pterm app t1 t2 )
j term abs : 8 L t1,</p>
      <p>(8 x, x \notin L ! term (t1 ^ x )) ! term (pterm abs t1 )
j term sub : 8 L t1 t2,</p>
      <p>(8 x, x \notin L ! term (t1 ^ x )) ! term t2 ! term (t1 [t2 ]).
where term sub is the constructor that de nes the conditions for (t1 [t2 ]) to be
a term. In this de nition, the expression (t1 ^ x ) represents the term obtained
from t1 after replacing all the occurrences of the ith de Bruijn index that is in
the scope of i binders for x, i.e., all the occurrences of 0 that is not in the scope
of a binder, of 1 that is in the scope of one binder, of 2 that is in the scope of two
binders, and so on, are replaced for x in t1 . The condition x \notin L avoids
the capture of free variables by the substitution operation2. Therefore, if
(t1 ^ x ) and t2 are terms then (t1 [t2 ]) is also a term.
2.1</p>
      <p>
        The ex-calculus
The ex-calculus [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ] was the rst ES calculus that simultaneously satis es all
the desired properties for an ES calculus: termination, con uence on open terms,
1 The full formalization is available at www.cic.unb.br/ flavio/publications.html
2 The details can be found in [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]
simulation of one step -reduction, full composition and preservation of strong
normalization (PSN). It is de ned by the following rewriting system
( x:t) u
      </p>
      <p>!B t[x=u]
x[x=u] !Var u
t[x=u] !Gc t; if x 2= fv(t)
(t v)[x=u] !App t[x=u] v[x=u]
( y:t)[x=u] !Lamb y:t[x=u]
(t[y=v])[x=u] !Comp t[x=u][y=v[x=u]]; x 2 fv(v)
and an equation for permutation of independent substitutions
(2)
(3)
(4)
t[y=v][x=u] =C t[x=u][y=v]; if x 2= fv(v) and y 2= fv(u)
where the rewriting relation generated by the rules in (2) is denoted by Bx, and
by x if one considers all the rules but B. The equivalence relation generated by
the conversions and C is denoted by e, and the reduction relation generated
by each rewriting relation modulo e speci es rewriting of e-equivalence classes
as follows:
t !ex t0 i
t ! ex t0 i
9s; s0 such that t =e s !x s0 =e t0
9s; s0 such that t =e s !Bx s0 =e t0</p>
      <p>The formalization of -equivalence is unnecessary due to the locally nameless
representation, as explained in the introduction. Nevertheless, the formalization
of the equivalence of terms modulo the equation (3) is not straightforward and
constitutes an important contribution of this work. The reduction relations in
(4) allow a, possible empty, permutation of substitutions before and/or after the
rewriting step, and its formalization is done in several steps as explained below.
First, we inductively de ne the permutation of independent substitutions:
Inductive eqc : pterm ! pterm ! Prop :=
j eqc rf: 8 u, eqc u u
j eqc rx: 8 t u v, term u ! term v ! eqc (t[u][v ]) ((&amp; t)[v ][u]) .
The constructor eqc rf de nes the re exivity of eqc, i.e., of equation (3), and
eqc rx permutes two independent substitutions. The independence of the
substitutions [u] and [v ] in t[u][v ] is assured by the conditions (term u) and
(term v ) because no dangling bound variable is allowed to occur in terms. As a
consequence, we have that eqc is also symmetric and transitive, and hence eqc
de nes an equivalence relation. The permutation of independent substitutions
done by the constructor eqc rx requires an adjustment of the indexes of the term
t that is replaced by (&amp; t := bswap rec 0 t), which is obtained from t after
replacing each occurrence of the index bound to the substitution [u] by the one
bound to the substitution [v ] and vice-versa. This swap of indexes is formally
de ned by the idempotent recursive function bswap rec.</p>
      <p>The parallel contextual closure of eqc is denoted by the permutation of
independent substitutions in any position of a term. The parallel contextual closure
generalizes the standard contextual closure by allowing applications of a
reduction in parallel positions:
(8 x, x \notin L ! p contextual closure eqc (t ^x ) (t' ^x )) !
p contextual closure eqc u u' !
p contextual closure eqc (t [u]) (t' [u' ])</p>
      <p>So, in order to take advantage of rewriting facilities of Coq, we need to show
the compatibility of ex-contexts w.r.t. the equivalence relation eqc. This means,
for example, that two term applications that are eqc equivalent result in
corresponding arguments are eqc equivalent. The same happens to abstractions and
explicit substitutions eqc equivalent terms. In this way, one can directly replace
equivalent ex-terms using the rewrite tactic of Coq [26]. For this purpose,
and since (p contextual closure eqc) is no longer transitive, we de ned the
transitive parallel contextual closure of eqc, denoted by =e.</p>
      <p>Finally, the reduction relation in (4) is parametrized by a relation R as
follows: 9 t' u' , (t =e t' )/\(contextual closure R t' u' )/\(u' =e u), where R
will be instantiated either with ex or lex.</p>
      <p>The rewriting rules in (2) are formalized via binary predicates over the set
of pre-terms. Therefore, the rule B, here called rule b, has type pterm ! pterm
! Prop, where the rst argument corresponds to the left hand side of the rule,
and the second argument corresponds to its right hand side:
Inductive rule b : pterm ! pterm ! Prop :=
reg rule b : 8 (t u:pterm), body t ! term u !</p>
      <p>rule b (pterm app(pterm abs t ) u) (t [u]).</p>
      <p>Notation "t ! B u" := (rule b t u).</p>
      <p>The system x, called sys x, is given by the remaining rules in (2). The rules
Lamb and Comp need to take into account the correct manipulation of bound
variables in t while propagating the substitution over a binder operator. In
particular, the conditions body (t [u]) and :term u in reg rule comp assure that
the substitutions [u] and [v ] are not independent.</p>
      <p>Inductive sys x : pterm ! pterm ! Prop :=
j reg rule var : 8 t, term t ! sys x (pterm bvar 0 [t ]) t
j reg rule gc : 8 t u, term t ! term u ! sys x (t [u]) t
j reg rule app : 8 t1 t2 u, body t1 ! body t2 ! term u !</p>
      <p>sys x ((pterm app t1 t2 )[u]) (pterm app (t1 [u]) (t2 [u]))
j reg rule lamb : 8 t u, body (pterm abs t ) ! term u !</p>
      <p>sys x ((pterm abs t )[u]) (pterm abs ((&amp; t )[u]))
j reg rule comp : 8 t u v, body (t [u]) ! : term u ! term v !
sys x (t [u][v ]) (((&amp; t )[v ])[ u[ v ] ]).</p>
      <p>Notation "t ! x u" := (sys x t u).</p>
      <p>The result of the (implicit) substitution, replacing all occurrences of index 0
(at the root level), of term t by a term u is written (t ^^ u).</p>
      <p>The rst non-trivial property that is proved is called full composition: it
states that the explicit substitution simulates the implicit substitution of the
-calculus and nothing else:</p>
      <p>
        Lemma full comp: 8 t u, body t ! term u ! t [u] --&gt;ex+ (t ^^ u).
Proof. The proof is done by induction on t as in [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ], but the induction principle
need to be adapted to the locally nameless notation because t is not a term in this
notation. In fact, t is a body, and hence the induction is on the body structure.
Apart from this, everything else runs as in the original proof.
      </p>
      <p>The simulation of one step -reduction is another important property of ES
calculi. It states that one step -reduction in the -calculus can be simulated in
the ES calculus in a nite number of steps:</p>
      <p>Lemma sim beta reduction : 8 t t', (t --&gt;Beta t' ) ! (t --&gt;lex* t' ).
Proof. The proof is done by induction on t --&gt;Beta t' . For the base case one
has to show that pterm app (pterm abs t) u --&gt;lex* (t ^^ u), which after an
application of rule b reduces to t [u] --&gt;ex+ (t ^^ u), and we conclude by
lemma full comp. The inductive cases are straightforward.</p>
      <p>
        The strategy above can be simulated in the ex-calculus as stated by the
following lemma. And so we proved that it is deterministic, fact that is only
stated in [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ]. Both proofs are done by induction followed by inversion on the
strategy
      </p>
      <p>:</p>
    </sec>
    <sec id="sec-2">
      <title>Lemma perp proposition : 8 t t', term t ! (t</title>
      <p>t' ) ! (t --&gt;lex+ t' ).</p>
    </sec>
    <sec id="sec-3">
      <title>Lemma det many step : 8 t u v, term t ! ((t</title>
      <p>u) ^ (t
v ) ! u = v ).</p>
      <p>The PSN proof for the ex-calculus relies on the fact that strong
normalization can be inductively de ned. The so called IE property establishes the
conditions for a term to be strongly normalizing in the ex-calculus. A term is
strongly normalizing (SN) if every reduction sequence starting from it is nite.
Therefore, the SN predicate inductively characterizes when a term t is strongly
normalizing w.r.t. a reduction relation R by assuring the existence of a natural
number n that bounds the maximum size of any reduction from t.
Inductive SN ind
(n : nat) (R : pterm ! pterm ! Prop) (t : pterm) : Prop :=
j SN intro : (8 t', R t t' ! 9 k , k &lt; n ^ SN ind k R t' ) ! SN ind n R t.
Definition SN R t := 9 n, SN ind n R t.</p>
      <p>
        The PSN property for the ex-calculus is proved under the hypothesis that
IE holds. We are currently working on the formalization of the IE property, but
it is not straightforward, as shown in [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ].
      </p>
      <p>Hypothesis IE property : 8 t u lv, body t ! term u !
SN lex u ! SN lex ((t ^^ u) // lv ) ! SN lex ((t[u]) // lv ).</p>
      <p>A perpetual strategy gives either an in nity reduction sequence of a term
when it exists, or a reduction sequence leading to some normal form. The
theorem perpetuality states that the many step strategy is perpetual by relating it
with the SN predicate.</p>
    </sec>
    <sec id="sec-4">
      <title>Theorem perpetuality : 8 t t', term t ! (t t' ) ! SN lex t' ! SN lex t.</title>
      <p>Proof. The proof is by induction on the strategy many step. The IE property
is used in the base case for the rule p subst1.</p>
      <p>An inductive characterization of strongly normalizing terms is very
convenient because it simpli es proofs. The predicate ISN characterizes the set of
strongly normalizing terms in the ex-calculus. This claim is proved by the
lemma ISN prop which states the equivalence between ISN and SN lex .
Inductive ISN : pterm ! Prop :=
j isn var : 8 (x : var) (lu : list pterm),</p>
      <p>(8 u, (In u lu) ! ISN u) ! ISN ((pterm fvar x ) // lu)
j isn NF : 8 (u : pterm),</p>
      <p>NF lex u ! ISN u
j isn app : 8 (u v : pterm) (lu : list pterm),</p>
      <p>ISN (u[v ] // lu) ! ISN ((pterm app (pterm abs u) v ) // lu)
j isn subs : 8 (u v : pterm) (lu : list pterm),</p>
      <p>ISN ((u ^^ v ) // lu) ! ISN v ! ISN (u[v ] // lu)
j isn abs : 8 L (u : pterm),
(8 x, x \notin L ! ISN (u ^ x )) ! ISN (pterm abs u) .</p>
      <p>The preservation of strong normalization for the ex-calculus is proved by
showing that every -term without in nite reduction sequences do not have
in nite reduction sequences in the ex-calculus, i.e., if a -term t is strongly
normalizing then it is also strongly normalizing in the ex-calculus.</p>
    </sec>
    <sec id="sec-5">
      <title>Lemma ISN prop : 8 t, term t ! (ISN t $ SN lex t ).</title>
    </sec>
    <sec id="sec-6">
      <title>Theorem PSN : 8 t, Lterm t ! SN Beta t ! SN lex t.</title>
      <p>Proof. The proof is done by induction on SN Beta t, de ned as follows [27]:
Inductive SN Beta : pterm ! Prop :=
j sn beta var : 8 (x : var) (lu : list pterm),</p>
      <p>(8 u, (In u lu) ! SN Beta u) ! SN Beta ((pterm fvar x ) // lu)
j sn beta abs : 8 L (u : pterm),</p>
      <p>(8 x, x \notin L ! SN Beta (u ^ x )) ! SN Beta (pterm abs u)
j sn beta meta sub : 8 (t u : pterm) (lv : list pterm),</p>
      <p>SN Beta u ! SN Beta ((t ^^ u) // lv ) !
SN Beta ((pterm app (pterm abs t ) u) // lv ).</p>
      <p>
        The full formalization follows [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ] and is divided in 5 Coq les that sum up
about 4000 lines of code, excluding the framework provided by [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ].
Related work There is a formalization of the -calculus proving its con
uence [25]. In [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ], termination of both the - and s-calculus are formalized in
ALF [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]. Nevertheless, both the - and the s-calculus uses de Bruijn indexes
and do not have equations, and hence its formalization do not need a framework
for dealing with equivalence classes of terms.
      </p>
      <p>
        The framework in [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] was used in the formalization of the full composition
property for the untyped structural -calculus [23].
3
      </p>
      <p>
        Conclusion and Future Work
Formalization of ES calculi are important because they form the theoretical basis
for the implementation of functional languages and proof assistants. In this way,
ES calculi allow, as a formal framework, not only the study of properties and
further improvements of the implemented systems, but also the study of the
-calculus itself [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ].
      </p>
      <p>
        In this work, we presented a formalization of the ex-calculus in Coq using
a framework based on locally nameless representation [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]. In this formalization
we proved that the ex-calculus satis es a number of interesting properties such
as full composition, simulation of one step -reduction and that the many step
strategy, which can be simulated in the ex-calculus, is used to characterize
strongly normalizing terms. Assuming the IE property, we proved that the
excalculus enjoys the PSN property.
      </p>
      <p>
        As future work, we will formalize the IE property and metacon uence, i.e.,
con uence on open terms for the ex-calculus. This will provide a complete
formalization of the ex-calculus. We will investigate whether our formalization
could be adapted to formalize other calculi that uses names instead of de Bruijn
indexes, such as the family of ES calculi that acts at a distance [
        <xref ref-type="bibr" rid="ref2">21,2</xref>
        ].
18. R. Lins. A new formula for the execution of categorical combinators. 8th Conference
on Automated Deduction (CADE), volume 230 of LNCS:89{98, 1986.
19. R. Lins. Partial categorical multi-combinators and church rosser theorems.
Technical Report 7/92, Computing Laboratory, University Kent at Canterbury, May
1992.
20. P.-A. Mellies. Typed -calculi with explicit substitutions may not terminate. In
      </p>
      <p>Proceedings of TLCA'95, volume 902 of LNCS. Springer-Verlag, 1995.
21. R. Milner. Local bigraphs and con uence: Two conjectures: (extended abstract).</p>
      <p>ENTCS, 175(3):65{73, 2007.
22. G. Nadathur and D. S. Wilson. A Notation for Lambda Terms: A Generalization
of Environments. TCS, 198:49{98, 1998.
23. Fabien Renaud. Les ressources explicites vues par la theorie de la reecriture. PhD
thesis, 2011.
24. K. Rose. Explicit cyclic substitutions. In Michael Rusinowitch and Jean-Luc
Remy, editors, 3rd International Workshop on Conditional Term Rewriting
Systems (CTRS), volume 656, pages 36{50. Springer-Verlag, 1992.
25. A. Sabi. Formalization of a lambda-Calculus with Explicit Substitutions in Coq. In
TYPES '94: Selected papers from the International Workshop on Types for Proofs
and Programs, pages 183{202, London, UK, 1995. Springer-Verlag.
26. M. Sozeau. A new look at generalized rewriting in type theory. J. Formalized</p>
      <p>Reasoning, 2(1):41{62, 2009.
27. F. van Raamsdonk. Con uence and Normalization for Higher-Order Rewriting.</p>
      <p>PhD thesis, Amsterdam University, Netherlands, 1996.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <given-names>M.</given-names>
            <surname>Abadi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Cardelli</surname>
          </string-name>
          ,
          <string-name>
            <given-names>P.-L.</given-names>
            <surname>Curien</surname>
          </string-name>
          , and
          <string-name>
            <given-names>J.-J. Levy. Explicit</given-names>
            <surname>Substitutions</surname>
          </string-name>
          .
          <source>Journal of Functional Programming</source>
          ,
          <volume>1</volume>
          (
          <issue>4</issue>
          ):
          <volume>375</volume>
          {
          <fpage>416</fpage>
          ,
          <year>1991</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <given-names>B.</given-names>
            <surname>Accattoli</surname>
          </string-name>
          and
          <string-name>
            <given-names>D.</given-names>
            <surname>Kesner</surname>
          </string-name>
          .
          <article-title>The structural lambda-calculus</article-title>
          .
          <source>In 19th EACSL Annual Conference on Computer Science and Logic (CSL)</source>
          , volume
          <volume>6247</volume>
          <source>of LNCS</source>
          , pages
          <volume>381</volume>
          {
          <fpage>395</fpage>
          . Springer-Verlag,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <given-names>B.</given-names>
            <surname>Accattoli</surname>
          </string-name>
          and
          <string-name>
            <given-names>D.</given-names>
            <surname>Kesner</surname>
          </string-name>
          .
          <article-title>The permutative lambda calculus</article-title>
          .
          <source>In Nikolaj Bj rner and Andrei Voronkov</source>
          , editors,
          <source>LPAR</source>
          , volume
          <volume>7180</volume>
          of Lecture Notes in Computer Science, pages
          <volume>23</volume>
          {
          <fpage>36</fpage>
          . Springer,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <given-names>M.</given-names>
            <surname>Bezem</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J. W.</given-names>
            <surname>Klop</surname>
          </string-name>
          , and R. de Vrijer, editors.
          <source>Term Rewriting Seminar { Terese</source>
          . Cambridge University Press,
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <given-names>R.</given-names>
            <surname>Bloo</surname>
          </string-name>
          and
          <string-name>
            <given-names>K.</given-names>
            <surname>Rose</surname>
          </string-name>
          .
          <article-title>Preservation of strong normalisation in named lambda calculi with explicit substitution and garbage collection</article-title>
          .
          <source>In CSN-95: COMPUTER SCIENCE IN THE NETHERLANDS</source>
          , pages
          <volume>62</volume>
          {
          <fpage>72</fpage>
          ,
          <year>1995</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <given-names>A.</given-names>
            <surname>Chargueraud</surname>
          </string-name>
          .
          <article-title>The Locally Nameless Representation</article-title>
          .
          <source>Journal of Automated Reasoning</source>
          , pages
          <volume>1</volume>
          {
          <fpage>46</fpage>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <given-names>R.</given-names>
            <surname>David</surname>
          </string-name>
          and
          <string-name>
            <given-names>B.</given-names>
            <surname>Guillaume</surname>
          </string-name>
          .
          <article-title>A lambda-calculus with explicit weakening and explicit substitution</article-title>
          .
          <source>Mathematical Structures in Computer Science</source>
          ,
          <volume>11</volume>
          (
          <issue>1</issue>
          ):
          <volume>169</volume>
          {
          <fpage>206</fpage>
          ,
          <year>2001</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8. N. G. de Bruijn.
          <article-title>Lambda-Calculus Notation with Namefree Formulas Involving Symbols that Represent Reference Transforming Mappings</article-title>
          . Indag. Mat.,
          <volume>40</volume>
          :
          <fpage>348</fpage>
          {
          <fpage>356</fpage>
          ,
          <year>1978</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>N. G. de Bruijn</surname>
          </string-name>
          .
          <article-title>A namefree lambda calculus with facilities for internal de nition of expressions and segments</article-title>
          .
          <source>Technical Report T.H.-Report 78-WSK-03</source>
          , Technische Hogeschool Eindhoven, Nederland,
          <year>1978</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <given-names>B.</given-names>
            <surname>Guillaume</surname>
          </string-name>
          .
          <article-title>The s e-calculus Does Not Preserve Strong Normalization</article-title>
          .
          <source>J. of Func. Programming</source>
          ,
          <volume>10</volume>
          (
          <issue>4</issue>
          ):
          <volume>321</volume>
          {
          <fpage>325</fpage>
          ,
          <year>2000</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <given-names>M.</given-names>
            <surname>Hanus</surname>
          </string-name>
          .
          <article-title>The alf system</article-title>
          .
          <source>In PLILP</source>
          , pages
          <volume>423</volume>
          {
          <fpage>424</fpage>
          ,
          <year>1991</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <given-names>F.</given-names>
            <surname>Kamareddine</surname>
          </string-name>
          and
          <string-name>
            <given-names>H.</given-names>
            <surname>Qiao</surname>
          </string-name>
          .
          <article-title>Formalizing strong normalization proofs of explicit substitution calculi in alf</article-title>
          .
          <source>Journal of Automated Reasoning</source>
          ,
          <volume>30</volume>
          (
          <issue>1</issue>
          ):
          <volume>59</volume>
          {
          <fpage>98</fpage>
          ,
          <year>2003</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <given-names>F.</given-names>
            <surname>Kamareddine</surname>
          </string-name>
          and
          <string-name>
            <surname>A.</surname>
          </string-name>
          <article-title>R os. A -calculus a la de Bruijn with Explicit Substitutions</article-title>
          .
          <source>In Proc. of PLILP'95</source>
          , volume
          <volume>982</volume>
          <source>of LNCS</source>
          , pages
          <volume>45</volume>
          {
          <fpage>62</fpage>
          . Springer,
          <year>1995</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <given-names>F.</given-names>
            <surname>Kamareddine</surname>
          </string-name>
          and
          <string-name>
            <surname>A.</surname>
          </string-name>
          <article-title>R os. Extending a -calculus with Explicit Substitution which Preserves Strong Normalisation into a Con uent Calculus on Open Terms</article-title>
          .
          <source>Journal of Functional Programming</source>
          ,
          <volume>7</volume>
          :
          <fpage>395</fpage>
          {
          <fpage>420</fpage>
          ,
          <year>1997</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <given-names>D.</given-names>
            <surname>Kesner</surname>
          </string-name>
          .
          <article-title>Perpetuality for full and safe composition (in a constructive setting)</article-title>
          .
          <source>In Luca Aceto</source>
          , Ivan Damgard, Leslie Ann Goldberg,
          <string-name>
            <surname>Magnus M. Halldorsson</surname>
          </string-name>
          , Anna Ingolfsdottir, and Igor Walukiewicz, editors,
          <source>ICALP (2)</source>
          , volume
          <volume>5126</volume>
          of Lecture Notes in Computer Science, pages
          <volume>311</volume>
          {
          <fpage>322</fpage>
          . Springer,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <given-names>D.</given-names>
            <surname>Kesner</surname>
          </string-name>
          .
          <article-title>A Theory of Explicit Substitutions with Safe and Full Composition</article-title>
          .
          <source>Logical Methods in Computer Science</source>
          ,
          <volume>5</volume>
          (
          <issue>3</issue>
          :1):1{
          <fpage>29</fpage>
          ,
          <year>2009</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <given-names>D.</given-names>
            <surname>Kesner</surname>
          </string-name>
          and
          <string-name>
            <given-names>S.</given-names>
            <surname>Lengrand</surname>
          </string-name>
          .
          <article-title>Resource operators for the -calculus</article-title>
          .
          <source>Information and Computation</source>
          ,
          <volume>205</volume>
          :
          <fpage>419</fpage>
          {
          <fpage>473</fpage>
          ,
          <string-name>
            <surname>April</surname>
          </string-name>
          <year>2007</year>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>