Quotient-Paper-jv/Paper.thy
changeset 3092 ff377f9d030a
parent 3082 a6b0220fb8ae
child 3094 8bad9887ad90
equal deleted inserted replaced
3089:9bcf02a6eea9 3092:ff377f9d030a
   163   $\alpha$-equivalence, then the reasoning infrastructure provided,
   163   $\alpha$-equivalence, then the reasoning infrastructure provided,
   164   for example, by Nominal Isabelle %%\cite{UrbanKaliszyk11}
   164   for example, by Nominal Isabelle %%\cite{UrbanKaliszyk11}
   165   makes the formal
   165   makes the formal
   166   proof of the substitution lemma almost trivial.
   166   proof of the substitution lemma almost trivial.
   167 
   167 
       
   168   {\bf MAYBE AN EAMPLE FOR PARTIAL QUOTIENTS?}
       
   169 
       
   170 
   168   The difficulty is that in order to be able to reason about integers, finite
   171   The difficulty is that in order to be able to reason about integers, finite
   169   sets or $\alpha$-equated lambda-terms one needs to establish a reasoning
   172   sets or $\alpha$-equated lambda-terms one needs to establish a reasoning
   170   infrastructure by transferring, or \emph{lifting}, definitions and theorems
   173   infrastructure by transferring, or \emph{lifting}, definitions and theorems
   171   from the raw type @{typ "nat \<times> nat"} to the quotient type @{typ int}
   174   from the raw type @{typ "nat \<times> nat"} to the quotient type @{typ int}
   172   (similarly for finite sets and $\alpha$-equated lambda-terms). This lifting
   175   (similarly for finite sets and $\alpha$-equated lambda-terms). This lifting
   329   definitions that specify the input and output data of our three-step
   332   definitions that specify the input and output data of our three-step
   330   lifting procedure. Appendix A gives an example how our quotient
   333   lifting procedure. Appendix A gives an example how our quotient
   331   package works in practise.
   334   package works in practise.
   332 *}
   335 *}
   333 
   336 
   334 section {* Preliminaries and General\\ Quotients\label{sec:prelims} *}
   337 section {* Preliminaries and General Quotients\label{sec:prelims} *}
   335 
   338 
   336 text {*
   339 text {*
   337   \noindent
   340   \noindent
   338   We will give in this section a crude overview of HOL and describe the main
   341   We will give in this section a crude overview of HOL and describe the main
   339   definitions given by Homeier for quotients \cite{Homeier05}.
   342   definitions given by Homeier for quotients \cite{Homeier05}.
   496                   & @{text "(Abs_fset \<circ> map_list Abs)"} @{text "(map_list Rep \<circ> Rep_fset)"}\\
   499                   & @{text "(Abs_fset \<circ> map_list Abs)"} @{text "(map_list Rep \<circ> Rep_fset)"}\\
   497   \end{tabular}
   500   \end{tabular}
   498   \end{isabelle}
   501   \end{isabelle}
   499 *}
   502 *}
   500 
   503 
   501 section {* Quotient Types and Quotient\\ Definitions\label{sec:type} *}
   504 section {* Quotient Types and Quotient Definitions\label{sec:type} *}
   502 
   505 
   503 text {*
   506 text {*
   504   \noindent
   507   \noindent
   505   The first step in a quotient construction is to take a name for the new
   508   The first step in a quotient construction is to take a name for the new
   506   type, say @{text "\<kappa>\<^isub>q"}, and an equivalence relation, say @{text R},
   509   type, say @{text "\<kappa>\<^isub>q"}, and an equivalence relation, say @{text R},
   756   equivalent to @{text "\<sigma>s \<kappa> \<Rightarrow> \<rho>s[\<tau>s] \<kappa>"}, which we just have to compose with
   759   equivalent to @{text "\<sigma>s \<kappa> \<Rightarrow> \<rho>s[\<tau>s] \<kappa>"}, which we just have to compose with
   757   @{text "\<rho>s[\<tau>s] \<kappa> \<Rightarrow> \<tau>s \<kappa>\<^isub>q"} according to the type of @{text "\<circ>"}.\qed
   760   @{text "\<rho>s[\<tau>s] \<kappa> \<Rightarrow> \<tau>s \<kappa>\<^isub>q"} according to the type of @{text "\<circ>"}.\qed
   758   \end{proof}
   761   \end{proof}
   759 *}
   762 *}
   760 
   763 
   761 section {* Respectfulness and\\ Preservation \label{sec:resp} *}
   764 section {* Respectfulness and Preservation \label{sec:resp} *}
   762 
   765 
   763 text {*
   766 text {*
   764   \noindent
   767   \noindent
   765   The main point of the quotient package is to automatically ``lift'' theorems
   768   The main point of the quotient package is to automatically ``lift'' theorems
   766   involving constants over the raw type to theorems involving constants over
   769   involving constants over the raw type to theorems involving constants over