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 |
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} |