LMCS-Paper/Paper.thy
changeset 3012 e2c4ee6e3ee7
parent 3011 a33e96e62a2b
child 3013 01a3861035d4
equal deleted inserted replaced
3011:a33e96e62a2b 3012:e2c4ee6e3ee7
  1714 text {*
  1714 text {*
  1715   Having made all necessary definitions for raw terms, we can start with
  1715   Having made all necessary definitions for raw terms, we can start with
  1716   establishing the reasoning infrastructure for the alpha-equated types @{text
  1716   establishing the reasoning infrastructure for the alpha-equated types @{text
  1717   "ty\<AL>"}$_{1..n}$, that is the types the user originally specified. We
  1717   "ty\<AL>"}$_{1..n}$, that is the types the user originally specified. We
  1718   give in this section and the next the proofs we need for establishing this
  1718   give in this section and the next the proofs we need for establishing this
  1719   infrastructure. One main point of our work is that we have completely
  1719   infrastructure. One point of our work is that we have completely
  1720   automated these proofs in Isabelle/HOL.
  1720   automated these proofs in Isabelle/HOL.
  1721 
  1721 
  1722   First we establish that the free-variable functions, the binding functions and the
  1722   First we establish that the free-variable functions, the binding functions and the
  1723   alpha-equivalences are equivariant.
  1723   alpha-equi\-va\-lences are equivariant.
  1724 
  1724 
  1725   \begin{lem}\mbox{}\\
  1725   \begin{lem}\mbox{}\\
  1726   @{text "(i)"} The functions @{text "fa_ty"}$_{1..n}$, @{text "fa_bn"}$_{1..m}$ and
  1726   @{text "(i)"} The functions @{text "fa_ty"}$_{1..n}$, @{text "fa_bn"}$_{1..m}$ and
  1727   @{text "bn"}$_{1..m}$ are equivariant.\\
  1727   @{text "bn"}$_{1..m}$ are equivariant.\\
  1728   @{text "(ii)"} The relations @{text "\<approx>ty"}$_{1..n}$ and
  1728   @{text "(ii)"} The relations @{text "\<approx>ty"}$_{1..n}$ and
  1729   @{text "\<approx>bn"}$_{1..m}$ are equivariant.
  1729   @{text "\<approx>bn"}$_{1..m}$ are equivariant.
  1730   \end{lem}
  1730   \end{lem}
  1731 
  1731 
  1732   \begin{proof}
  1732   \begin{proof}
  1733   The function package of Isabelle/HOL allows us to prove the first part is by mutual 
  1733   The function package of Isabelle/HOL allows us to prove the first part is by
  1734   induction over the definitions of the functions. The second is by a straightforward
  1734   mutual induction over the definitions of the functions (we know that they
  1735   induction over the rules of @{text "\<approx>ty"}$_{1..n}$ and @{text "\<approx>bn"}$_{1..m}$ using 
  1735   are terminating functions, from which an induction principle can be
  1736   the first part.
  1736   derived). The second is by a straightforward induction over the rules of
       
  1737   @{text "\<approx>ty"}$_{1..n}$ and @{text "\<approx>bn"}$_{1..m}$ using the first part.
  1737   \end{proof}
  1738   \end{proof}
  1738 
  1739 
  1739   \noindent
  1740   \noindent
  1740   Next we establish that the alpha-equivalence relations defined in the
  1741   Next we establish that the alpha-equivalence relations defined in the
  1741   previous section are equivalence relations.
  1742   previous section are indeed equivalence relations.
  1742 
  1743 
  1743   \begin{lem}\label{equiv} 
  1744   \begin{lem}\label{equiv} 
  1744   The relations @{text "\<approx>ty"}$_{1..n}$ and @{text "\<approx>bn"}$_{1..m}$ are
  1745   The relations @{text "\<approx>ty"}$_{1..n}$ and @{text "\<approx>bn"}$_{1..m}$ are
  1745   equivalence relations.
  1746   equivalence relations.
  1746   \end{lem}
  1747   \end{lem}
  1747 
  1748 
  1748   \begin{proof} 
  1749   \begin{proof} 
  1749   The proof is by mutual induction over the definitions. The non-trivial
  1750   The proof is by induction over the definitions. The non-trivial
  1750   cases involve premises built up by $\approx_{\textit{set}}$, 
  1751   cases involve premises built up by $\approx_{\textit{set}}$, 
  1751   $\approx_{\textit{set+}}$ and $\approx_{\textit{list}}$. They 
  1752   $\approx_{\textit{set+}}$ and $\approx_{\textit{list}}$. They 
  1752   can be dealt with as in Lemma~\ref{alphaeq}. However, the transitivity
  1753   can be dealt with as in Lemma~\ref{alphaeq}. However, the transitivity
  1753   case needs in addition the fact that the relations are equivariant. 
  1754   case needs in addition the fact that the relations are equivariant. 
  1754   \end{proof}
  1755   \end{proof}
  1755 
  1756 
  1756   \noindent 
  1757   \noindent 
  1757   We can feed this lemma into our quotient package and obtain new types @{text
  1758   We can feed the last lemma into our quotient package and obtain new types
  1758   "ty"}$^\alpha_{1..n}$ representing alpha-equated terms of types @{text "ty"}$_{1..n}$. 
  1759   @{text "ty"}$^\alpha_{1..n}$ representing alpha-equated terms of types
  1759   
  1760   @{text "ty"}$_{1..n}$. We also obtain definitions for the term-constructors
  1760   We also obtain definitions for the term-constructors @{text
  1761   @{text "C"}$^\alpha_{1..k}$ from the raw term-constructors @{text
  1761   "C"}$^\alpha_{1..k}$ from the raw term-constructors @{text "C"}$_{1..k}$,
  1762   "C"}$_{1..k}$, and similar definitions for the free-atom functions @{text
  1762   and similar definitions for the free-atom functions @{text
       
  1763   "fa_ty"}$^\alpha_{1..n}$ and @{text "fa_bn"}$^\alpha_{1..m}$ as well as the
  1763   "fa_ty"}$^\alpha_{1..n}$ and @{text "fa_bn"}$^\alpha_{1..m}$ as well as the
  1764   binding functions @{text "bn"}$^\alpha_{1..m}$. For this we have to show
  1764   binding functions @{text "bn"}$^\alpha_{1..m}$. However, these definitions
  1765   by induction over the definitions of alpha-equivalences that the ``raw'' 
  1765   are not really useful to the user, since they are given in terms of the
  1766   functions are respectful. This means we need to establish that
  1766   isomorphisms we obtained by creating new types in Isabelle/HOL (recall the
  1767 
  1767   picture shown in the Introduction).
       
  1768 
       
  1769   The first useful property for the user is the fact that distinct 
       
  1770   term-constructors are not equal, that is the property
       
  1771   
       
  1772   \begin{equation}\label{distinctalpha}
       
  1773   \mbox{@{text "C"}$^\alpha$~@{text "x\<^isub>1 \<dots> x\<^isub>r"}~@{text "\<noteq>"}~% 
       
  1774   @{text "D"}$^\alpha$~@{text "y\<^isub>1 \<dots> y\<^isub>s"}} 
       
  1775   \end{equation}\smallskip
       
  1776   
       
  1777   \noindent
       
  1778   whenever @{text "C"}$^\alpha$~@{text "\<noteq>"}~@{text "D"}$^\alpha$.
       
  1779   In order to derive this property, we use the definition of alpha-equivalence
       
  1780   and establish that
       
  1781   
       
  1782   \begin{equation}\label{distinctraw}
       
  1783   \mbox{@{text "C x\<^isub>1 \<dots> x\<^isub>r"}\;$\not\approx$@{text ty}\;@{text "D y\<^isub>1 \<dots> y\<^isub>s"}}
       
  1784   \end{equation}\smallskip
       
  1785 
       
  1786   \noindent
       
  1787   holds for the corresponding raw term-constructors.
       
  1788   In order to deduce \eqref{distinctalpha} from \eqref{distinctraw}, our quotient
       
  1789   package needs to know that the raw term-constructors @{text "C"} and @{text "D"} 
       
  1790   are \emph{respectful} w.r.t.~the alpha-equivalence relations (see \cite{Homeier05}).
       
  1791   Given, for example, @{text "C"} is of type @{text "ty"} with argument types
       
  1792   @{text "ty"}$_{1..r}$, respectfulness amounts to showing that
       
  1793   
  1768   \[\mbox{
  1794   \[\mbox{
       
  1795   @{text "C x\<^isub>1 \<dots> x\<^isub>r \<approx>ty C x\<PRIME>\<^isub>1 \<dots> x\<PRIME>\<^isub>r"}
       
  1796   }\]\smallskip
       
  1797 
       
  1798   \noindent
       
  1799   holds under the assumptions \mbox{@{text
       
  1800   "x\<^isub>i \<approx>ty\<^isub>i x\<PRIME>\<^isub>i"}} whenever @{text "x\<^isub>i"}
       
  1801   and @{text "x\<PRIME>\<^isub>i"} are recursive arguments of @{text C} and
       
  1802   @{text "x\<^isub>i = x\<PRIME>\<^isub>i"} whenever they are non-recursive arguments 
       
  1803   (similarly for @{text "D"}). For this we have to show
       
  1804   by induction over the definitions of alpha-equivalences the following 
       
  1805   auxiliary implications
       
  1806 
       
  1807   \begin{equation}\label{fnresp}\mbox{
  1769   \begin{tabular}{lll}
  1808   \begin{tabular}{lll}
  1770   @{text "x \<approx>ty\<^isub>i x'"} & implies & @{text "fa_ty\<^isub>i x = fa_ty\<^isub>i x'"}\\
  1809   @{text "x \<approx>ty\<^isub>i x'"} & implies & @{text "fa_ty\<^isub>i x = fa_ty\<^isub>i x'"}\\
  1771   @{text "x \<approx>ty\<^isub>l x'"} & implies & @{text "fa_bn\<^isub>j x = fa_bn\<^isub>j x'"}\\
  1810   @{text "x \<approx>ty\<^isub>l x'"} & implies & @{text "fa_bn\<^isub>j x = fa_bn\<^isub>j x'"}\\
  1772   @{text "x \<approx>ty\<^isub>l x'"} & implies & @{text "bn\<^isub>j x = bn\<^isub>j x'"}\\
  1811   @{text "x \<approx>ty\<^isub>l x'"} & implies & @{text "bn\<^isub>j x = bn\<^isub>j x'"}\\
  1773   \end{tabular}
       
  1774   }\]\smallskip
       
  1775   
       
  1776   \noindent
       
  1777   holds whereby @{text "ty\<^isub>l"} is the type over which @{text "bn\<^isub>j"} is defined. A 
       
  1778   similar property is needed for the constructors @{text "C"}$_{1..k}$. In order 
       
  1779   to establish it we need to prove that
       
  1780 
       
  1781   \[\mbox{
       
  1782   \begin{tabular}{lll}
       
  1783   @{text "x \<approx>ty\<^isub>l x'"} & implies & @{text "x \<approx>bn\<^isub>j x'"}\\
  1812   @{text "x \<approx>ty\<^isub>l x'"} & implies & @{text "x \<approx>bn\<^isub>j x'"}\\
  1784   \end{tabular}
  1813   \end{tabular}
  1785   }\]\smallskip
  1814   }\end{equation}\smallskip
  1786 
  1815   
  1787   \noindent
  1816   \noindent
  1788   The respectfulness properties are crucial, ... ???
  1817   whereby @{text "ty\<^isub>l"} is the type over which @{text "bn\<^isub>j"}
  1789   However, these definitions are not really useful to the 
  1818   is defined. These implications can be established by induction on @{text
  1790   user, since they are given in terms of the isomorphisms we obtained by 
  1819   "\<approx>ty"}$_{1..n}$. Whereas the first, second and last implication are true by
  1791   creating new types in Isabelle/HOL (recall the picture shown in the 
  1820   how we stated our definitions, the third \emph{only} holds because of our
  1792   Introduction).
  1821   restriction imposed on the form of the binding functions---namely \emph{not}
  1793 
  1822   returning any bound atoms. In Ott, in contrast, the user may define @{text
  1794   The first useful property for the user is the fact that distinct 
  1823   "bn"}$_{1..m}$ so that they return bound atoms and in this case the third
  1795   term-constructors are not 
  1824   implication is \emph{not} true. A result is that the lifting of the
  1796   equal, that is
  1825   corresponding binding functions in Ott to alpha-equated terms is impossible.
  1797   
       
  1798   \[\label{distinctalpha}
       
  1799   \mbox{@{text "C"}$^\alpha$~@{text "x\<^isub>1 \<dots> x\<^isub>r"}~@{text "\<noteq>"}~% 
       
  1800   @{text "D"}$^\alpha$~@{text "y\<^isub>1 \<dots> y\<^isub>s"}} 
       
  1801   \]\smallskip
       
  1802   
       
  1803   \noindent
       
  1804   whenever @{text "C"}$^\alpha$~@{text "\<noteq>"}~@{text "D"}$^\alpha$.
       
  1805   In order to derive this fact, we use the definition of alpha-equivalence
       
  1806   and establish that
       
  1807   
       
  1808   \[\label{distinctraw}
       
  1809   \mbox{@{text "C x\<^isub>1 \<dots> x\<^isub>r"}\;$\not\approx$@{text ty}\;@{text "D y\<^isub>1 \<dots> y\<^isub>s"}}
       
  1810   \]\smallskip
       
  1811 
       
  1812   \noindent
       
  1813   holds for the corresponding raw term-constructors.
       
  1814   In order to deduce \eqref{distinctalpha} from \eqref{distinctraw}, our quotient
       
  1815   package needs to know that the raw term-constructors @{text "C"} and @{text "D"} 
       
  1816   are \emph{respectful} w.r.t.~the alpha-equivalence relations (see \cite{Homeier05}).
       
  1817   Assuming, for example, @{text "C"} is of type @{text "ty"} with argument types
       
  1818   @{text "ty"}$_{1..r}$, respectfulness amounts to showing that
       
  1819   
       
  1820   \begin{center}
       
  1821   @{text "C x\<^isub>1 \<dots> x\<^isub>r \<approx>ty C x\<PRIME>\<^isub>1 \<dots> x\<PRIME>\<^isub>r"}
       
  1822   \end{center}  
       
  1823 
       
  1824   \noindent
       
  1825   holds under the assumptions that we have \mbox{@{text
       
  1826   "x\<^isub>i \<approx>ty\<^isub>i x\<PRIME>\<^isub>i"}} whenever @{text "x\<^isub>i"}
       
  1827   and @{text "x\<PRIME>\<^isub>i"} are recursive arguments of @{text C} and
       
  1828   @{text "x\<^isub>i = x\<PRIME>\<^isub>i"} whenever they are non-recursive arguments. We can prove this
       
  1829   implication by applying the corresponding rule in our alpha-equivalence
       
  1830   definition and by establishing the following auxiliary implications %facts 
       
  1831   %
       
  1832   \begin{equation}\label{fnresp}
       
  1833   \mbox{%
       
  1834   \begin{tabular}{ll@ {\hspace{7mm}}ll}
       
  1835   \mbox{\it (i)} & @{text "x \<approx>ty\<^isub>i x\<PRIME>"}~~@{text "\<Rightarrow>"}~~@{text "fa_ty\<^isub>i x = fa_ty\<^isub>i x\<PRIME>"} &
       
  1836   \mbox{\it (iii)} & @{text "x \<approx>ty\<^isub>j x\<PRIME>"}~~@{text "\<Rightarrow>"}~~@{text "bn\<^isub>j x = bn\<^isub>j x\<PRIME>"}\\
       
  1837 
       
  1838   \mbox{\it (ii)} & @{text "x \<approx>ty\<^isub>j x\<PRIME>"}~~@{text "\<Rightarrow>"}~~@{text "fa_bn\<^isub>j x = fa_bn\<^isub>j x\<PRIME>"} &
       
  1839   \mbox{\it (iv)} & @{text "x \<approx>ty\<^isub>j x\<PRIME>"}~~@{text "\<Rightarrow>"}~~@{text "x \<approx>bn\<^isub>j x\<PRIME>"}\\
       
  1840   \end{tabular}}
       
  1841   \end{equation}
       
  1842 
       
  1843   \noindent
       
  1844   They can be established by induction on @{text "\<approx>ty"}$_{1..n}$. Whereas the first,
       
  1845   second and last implication are true by how we stated our definitions, the 
       
  1846   third \emph{only} holds because of our restriction
       
  1847   imposed on the form of the binding functions---namely \emph{not} returning 
       
  1848   any bound atoms. In Ott, in contrast, the user may 
       
  1849   define @{text "bn"}$_{1..m}$ so that they return bound
       
  1850   atoms and in this case the third implication is \emph{not} true. A 
       
  1851   result is that the lifting of the corresponding binding functions in Ott to alpha-equated
       
  1852   terms is impossible.
       
  1853 
  1826 
  1854   Having established respectfulness for the raw term-constructors, the 
  1827   Having established respectfulness for the raw term-constructors, the 
  1855   quotient package is able to automatically deduce \eqref{distinctalpha} from 
  1828   quotient package is able to automatically deduce \eqref{distinctalpha} from 
  1856   \eqref{distinctraw}. ??? Having the facts \eqref{fnresp} at our disposal, we can 
  1829   \eqref{distinctraw}. Having the facts \eqref{fnresp} at our disposal, we can 
  1857   also lift properties that characterise when two raw terms of the form
  1830   also lift properties that characterise when two raw terms of the form
  1858   
  1831   
  1859   \[
  1832   \[
  1860   \mbox{@{text "C x\<^isub>1 \<dots> x\<^isub>r \<approx>ty C x\<PRIME>\<^isub>1 \<dots> x\<PRIME>\<^isub>r"}}
  1833   \mbox{@{text "C x\<^isub>1 \<dots> x\<^isub>r \<approx>ty C x\<PRIME>\<^isub>1 \<dots> x\<PRIME>\<^isub>r"}}
  1861   \]\smallskip
  1834   \]\smallskip
  1868   @{text "C\<^sup>\<alpha> x\<^isub>1 \<dots> x\<^isub>r = C\<^sup>\<alpha> x\<PRIME>\<^isub>1 \<dots> x\<PRIME>\<^isub>r"}.
  1841   @{text "C\<^sup>\<alpha> x\<^isub>1 \<dots> x\<^isub>r = C\<^sup>\<alpha> x\<PRIME>\<^isub>1 \<dots> x\<PRIME>\<^isub>r"}.
  1869   \]\smallskip
  1842   \]\smallskip
  1870   
  1843   
  1871   \noindent
  1844   \noindent
  1872   We call these conditions as \emph{quasi-injectivity}. They correspond to
  1845   We call these conditions as \emph{quasi-injectivity}. They correspond to
  1873   the premises in our alpha-equivalence relations.
  1846   the premises in our alpha-equiva\-lence relations.
  1874 
  1847 
  1875   Next we can lift the permutation 
  1848   Next we can lift the permutation operations defined in \eqref{ceqvt}. In
  1876   operations defined in \eqref{ceqvt}. In order to make this 
  1849   order to make this lifting to go through, we have to show that the
  1877   lifting to go through, we have to show that the permutation operations are respectful. 
  1850   permutation operations are respectful. This amounts to showing that the
  1878   This amounts to showing that the 
  1851   alpha-equivalence relations are equivariant, which
  1879   alpha-equivalence relations are equivariant \cite{HuffmanUrban10}.
  1852   we already established in Lemma~\ref{equiv}. As a result we can add the
  1880   , which we already established 
  1853   equations
  1881   in Lemma~\ref{equiv}. 
       
  1882   As a result we can add the equations
       
  1883   
  1854   
  1884   \begin{equation}\label{calphaeqvt}
  1855   \begin{equation}\label{calphaeqvt}
  1885   @{text "\<pi> \<bullet> (C\<^sup>\<alpha> x\<^isub>1 \<dots> x\<^isub>r) = C\<^sup>\<alpha> (\<pi> \<bullet> x\<^isub>1) \<dots> (\<pi> \<bullet> x\<^isub>r)"}
  1856   @{text "\<pi> \<bullet> (C\<^sup>\<alpha> x\<^isub>1 \<dots> x\<^isub>r) = C\<^sup>\<alpha> (\<pi> \<bullet> x\<^isub>1) \<dots> (\<pi> \<bullet> x\<^isub>r)"}
  1886   \end{equation}\smallskip
  1857   \end{equation}\smallskip
  1887 
  1858 
  1891   @{text "fa_bn\<AL>"}$_{1..m}$ as well as of the binding functions @{text
  1862   @{text "fa_bn\<AL>"}$_{1..m}$ as well as of the binding functions @{text
  1892   "bn\<AL>"}$_{1..m}$ and the size functions @{text "size_ty\<AL>"}$_{1..n}$.
  1863   "bn\<AL>"}$_{1..m}$ and the size functions @{text "size_ty\<AL>"}$_{1..n}$.
  1893   The latter are defined automatically for the raw types @{text "ty"}$_{1..n}$
  1864   The latter are defined automatically for the raw types @{text "ty"}$_{1..n}$
  1894   by the datatype package of Isabelle/HOL.
  1865   by the datatype package of Isabelle/HOL.
  1895 
  1866 
  1896   Finally we can add to our infrastructure a cases lemma (explained in the next section)
  1867   Finally we can add to our infrastructure cases lemmas and a structural
  1897   and a structural induction principle 
  1868   induction principle for the types @{text "ty\<AL>"}$_{1..n}$. The cases
  1898   for the types @{text "ty\<AL>"}$_{1..n}$. The conclusion of the induction principle is
  1869   lemmas allow the user to deduce a property @{text "P"} by exhaustively 
  1899   of the form
  1870   analysing all cases how the elements in a type @{text "ty\<AL>"}$_i$ can
  1900   
  1871   be constructed (that means one case for each of term-constructors @{text "C\<AL>"}$_{1..m}$
  1901   \begin{equation}\label{weakinduct}
  1872   of type @{text "ty\<AL>"}$_i\,$). These are lifted versions of the cases
  1902   \mbox{@{text "P\<^isub>1 x\<^isub>1 \<and> \<dots> \<and> P\<^isub>n x\<^isub>n "}}
  1873   lemma over the raw type  @{text "ty"}$_i$ and schematically look as
  1903   \end{equation} \smallskip
  1874   follows
  1904   
  1875 
  1905   \noindent
  1876   \[
  1906   whereby the @{text P}$_{1..n}$ are predicates and the @{text x}$_{1..n}$ 
  1877   \infer{P}
  1907   have types @{text "ty\<AL>"}$_{1..n}$. This induction principle has for each
  1878   {\begin{array}{l}
  1908   term constructor @{text "C"}$^\alpha$ a premise of the form
  1879   @{text "\<forall>x\<^isub>1\<dots>x\<^isub>k. y = C\<AL>\<^isub>1 x\<^isub>1 \<dots> x\<^isub>k \<Rightarrow> P"}\\
       
  1880   \hspace{5mm}\ldots\\
       
  1881   @{text "\<forall>x\<^isub>1\<dots>x\<^isub>l. y = C\<AL>\<^isub>m x\<^isub>1 \<dots> x\<^isub>l \<Rightarrow> P"}\\
       
  1882   \end{array}}
       
  1883   \]\smallskip
       
  1884 
       
  1885   \noindent
       
  1886   where @{text "y"} is a variable of type @{text "ty"}$_i$ and @{text "P"} is the 
       
  1887   property that is established by the case analysis. Similarly, we have an induction
       
  1888   principle for the types @{text "ty\<AL>"}$_{1..n}$, which is
       
  1889 
       
  1890    \[
       
  1891   \infer{@{text "P\<^isub>1 y\<^isub>1 \<and> \<dots> \<and> P\<^isub>n y\<^isub>n "}}
       
  1892   {\begin{array}{l}
       
  1893   @{text "\<forall>x\<^isub>1\<dots>x\<^isub>k. P\<^isub>i x\<^isub>i \<and> \<dots> \<and> P\<^isub>j x\<^isub>j \<Rightarrow> P (C\<AL>\<^isub>1 x\<^isub>1 \<dots> x\<^isub>k)"}\\
       
  1894   \hspace{5mm}\ldots\\
       
  1895   @{text "\<forall>x\<^isub>1\<dots>x\<^isub>l. P\<^isub>r x\<^isub>r \<and> \<dots> \<and> P\<^isub>s x\<^isub>s \<Rightarrow> P (C\<AL>\<^isub>m x\<^isub>1 \<dots> x\<^isub>l)"}\\
       
  1896   \end{array}}
       
  1897   \]\smallskip
       
  1898 
       
  1899   \noindent
       
  1900   whereby the @{text P}$_{1..n}$ are the properties established by induction 
       
  1901   and the @{text y}$_{1..n}$ are of type @{text "ty\<AL>"}$_{1..n}$. 
       
  1902   This induction principle has for all term constructors @{text "C"}$^\alpha$ 
       
  1903   a premise of the form
  1909   
  1904   
  1910   \begin{equation}\label{weakprem}
  1905   \begin{equation}\label{weakprem}
  1911   \mbox{@{text "\<forall>x\<^isub>1\<dots>x\<^isub>r. P\<^isub>i x\<^isub>i \<and> \<dots> \<and> P\<^isub>j x\<^isub>j \<Rightarrow> P (C\<^sup>\<alpha> x\<^isub>1 \<dots> x\<^isub>r)"}} 
  1906   \mbox{@{text "\<forall>x\<^isub>1\<dots>x\<^isub>r. P\<^isub>i x\<^isub>i \<and> \<dots> \<and> P\<^isub>j x\<^isub>j \<Rightarrow> P (C\<^sup>\<alpha> x\<^isub>1 \<dots> x\<^isub>r)"}} 
  1912   \end{equation}\smallskip
  1907   \end{equation}\smallskip
  1913 
  1908 
  1914   \noindent 
  1909   \noindent 
  1915   in which the @{text "x"}$_{i..j}$ @{text "\<subseteq>"} @{text "x"}$_{1..r}$ are 
  1910   in which the @{text "x"}$_{i..j}$ @{text "\<subseteq>"} @{text "x"}$_{1..r}$ are 
  1916   the recursive arguments of @{text "C\<AL>"}. 
  1911   the recursive arguments of the term constructor. In case of the lambda-calculus,
       
  1912   the cases lemma and the induction principle boil down to the following:
       
  1913 
       
  1914   \[\mbox{
       
  1915   \begin{tabular}{c@ {\hspace{10mm}}c}
       
  1916   \infer{@{text "P"}}
       
  1917   {\begin{array}{l}
       
  1918    @{text "\<forall>x. y = Var\<^sup>\<alpha> x \<Rightarrow> P"}\\
       
  1919    @{text "\<forall>x\<^isub>1 x\<^isub>2. y = App\<^sup>\<alpha> x\<^isub>1 x\<^isub>2 \<Rightarrow> P"}\\
       
  1920    @{text "\<forall>x\<^isub>1 x\<^isub>2. y = Lam\<^sup>\<alpha> x\<^isub>1 x\<^isub>2 \<Rightarrow> P"}
       
  1921    \end{array}} &
       
  1922 
       
  1923   \infer{@{text "P y"}}
       
  1924   {\begin{array}{l}
       
  1925    @{text "\<forall>x. P (Var\<^sup>\<alpha> x)"}\\
       
  1926    @{text "\<forall>x\<^isub>1 x\<^isub>2. P x\<^isub>1 \<and> P x\<^isub>2 \<Rightarrow> P (App\<^sup>\<alpha> x\<^isub>1 x\<^isub>2)"}\\
       
  1927    @{text "\<forall>x\<^isub>1 x\<^isub>2. P x\<^isub>2 \<Rightarrow> P (Lam\<^sup>\<alpha> x\<^isub>1 x\<^isub>2)"}
       
  1928    \end{array}}
       
  1929   \end{tabular}}
       
  1930   \]\smallskip
  1917 
  1931 
  1918   By working now completely on the alpha-equated level, we
  1932   By working now completely on the alpha-equated level, we
  1919   can first show that the free-atom functions and binding functions are
  1933   can first show that the free-atom functions and binding functions are
  1920   equivariant, namely
  1934   equivariant, namely
  1921   
  1935   
  1923   \begin{tabular}{rcl}
  1937   \begin{tabular}{rcl}
  1924   @{text "\<pi> \<bullet> (fa_ty\<AL>\<^isub>i  x)"} & $=$ & @{text "fa_ty\<AL>\<^isub>i (\<pi> \<bullet> x)"}\\
  1938   @{text "\<pi> \<bullet> (fa_ty\<AL>\<^isub>i  x)"} & $=$ & @{text "fa_ty\<AL>\<^isub>i (\<pi> \<bullet> x)"}\\
  1925   @{text "\<pi> \<bullet> (fa_bn\<AL>\<^isub>j  x)"} & $=$ & @{text "fa_bn\<AL>\<^isub>j (\<pi> \<bullet> x)"}\\
  1939   @{text "\<pi> \<bullet> (fa_bn\<AL>\<^isub>j  x)"} & $=$ & @{text "fa_bn\<AL>\<^isub>j (\<pi> \<bullet> x)"}\\
  1926   @{text "\<pi> \<bullet> (bn\<AL>\<^isub>j  x)"}    & $=$ & @{text "bn\<AL>\<^isub>j (\<pi> \<bullet> x)"}\\
  1940   @{text "\<pi> \<bullet> (bn\<AL>\<^isub>j  x)"}    & $=$ & @{text "bn\<AL>\<^isub>j (\<pi> \<bullet> x)"}\\
  1927   \end{tabular}}
  1941   \end{tabular}}
  1928   \]
  1942   \]\smallskip
  1929 
  1943 
  1930   
  1944   
  1931   \noindent
  1945   \noindent
  1932   These properties can be established using the induction principle for the
  1946   These properties can be established using the induction principle for the
  1933   types @{text "ty\<AL>"}$_{1..n}$.  in \eqref{weakinduct}.  Having these
  1947   types @{text "ty\<AL>"}$_{1..n}$.  Having these
  1934   equivariant properties established, we can show that the support of
  1948   equivariant properties established, we can show that the support of
  1935   term-constructors @{text "C\<^sup>\<alpha>"} is included in the support of its
  1949   term-constructors @{text "C\<^sup>\<alpha>"} is included in the support of its
  1936   arguments, that means
  1950   arguments, that means
  1937 
  1951 
  1938   \[
  1952   \[
  1939   @{text "supp (C\<^sup>\<alpha> x\<^isub>1 \<dots> x\<^isub>r) \<subseteq> (supp x\<^isub>1 \<union> \<dots> \<union> supp x\<^isub>r)"}
  1953   @{text "supp (C\<^sup>\<alpha> x\<^isub>1 \<dots> x\<^isub>r) \<subseteq> (supp x\<^isub>1 \<union> \<dots> \<union> supp x\<^isub>r)"}
  1940   \]\smallskip
  1954   \]\smallskip
  1941  
  1955  
  1942   \noindent
  1956   \noindent
  1943   holds. This allows us to prove by induction that
  1957   holds. This allows us to prove by induction that every @{text x} of type
  1944   every @{text x} of type @{text "ty\<AL>"}$_{1..n}$ is finitely supported. 
  1958   @{text "ty\<AL>"}$_{1..n}$ is finitely supported. This can be again shown by
  1945   This can be again shown by induction 
  1959   induction over @{text "ty\<AL>"}$_{1..n}$. Lastly, we can show that the
  1946   over @{text "ty\<AL>"}$_{1..n}$. 
  1960   support of elements in @{text "ty\<AL>"}$_{1..n}$ is the same as @{text
  1947   Lastly, we can show that the support of 
  1961   "fa_ty\<AL>"}$_{1..n}$.  This fact is important in the nominal setting, but
  1948   elements in  @{text "ty\<AL>"}$_{1..n}$ is the same as @{text "fa_ty\<AL>"}$_{1..n}$.
  1962   also provides evidence that our notions of free-atoms and alpha-equivalence
  1949   This fact is important in a nominal setting, but also provides evidence 
  1963   are sensible.
  1950   that our notions of free-atoms and alpha-equivalence are correct.
       
  1951 
  1964 
  1952   \begin{thm} 
  1965   \begin{thm} 
  1953   For @{text "x"}$_{1..n}$ with type @{text "ty\<AL>"}$_{1..n}$, we have
  1966   For @{text "x"}$_{1..n}$ with type @{text "ty\<AL>"}$_{1..n}$, we have
  1954   @{text "supp x\<^isub>i = fa_ty\<AL>\<^isub>i x\<^isub>i"}.
  1967   @{text "supp x\<^isub>i = fa_ty\<AL>\<^isub>i x\<^isub>i"}.
  1955   \end{thm}
  1968   \end{thm}