diff -r 63f0e7f914dd -r 1341a2d7570f Quotient-Paper/Paper.thy --- a/Quotient-Paper/Paper.thy Thu Aug 19 13:00:49 2010 +0900 +++ b/Quotient-Paper/Paper.thy Thu Aug 19 13:58:47 2010 +0900 @@ -332,7 +332,10 @@ Using extensionality and unfolding the definition of @{text "\"}, we can get back to \eqref{adddef}. In what follows we shall use the convention to write @{text "map_\"} for a map-function - of the type-constructor @{text \}. In our implementation we maintain + of the type-constructor @{text \}. For a type @{text \} with arguments @{text "\\<^isub>1\<^isub>\\<^isub>n"} the + type of @{text "map_\"} has to be @{text "\\<^isub>1\\\\\<^isub>n\\\<^isub>1\\\<^isub>n \"}. For example @{text "map_list"} + has to have the type @{text "\\\ list"}. + In our implementation we maintain a database of these map-functions that can be dynamically extended. It will also be necessary to have operators, referred to as @{text "rel_\"}, @@ -371,7 +374,7 @@ \begin{definition}[Quotient Types] Given a relation $R$, an abstraction function $Abs$ and a representation function $Rep$, the predicate @{term "Quotient R Abs Rep"} - means + holds if and only if \begin{enumerate} \item @{thm (rhs1) Quotient_def[of "R", no_vars]} \item @{thm (rhs2) Quotient_def[of "R", no_vars]} @@ -407,12 +410,10 @@ \end{definition} \noindent - Unfortunately, there are two predicaments with compositions of relations. - First, a general quotient theorem for @{text "\\\"}, like the one for @{text "\"} - given in Proposition \ref{funquot}, - cannot be stated inside HOL, because of restrictions on types. - Second, even if we were able to state such a quotient theorem, it - would not be true in general. However, we can prove specific instances of a + Unfortunately a general quotient theorem for @{text "\\\"}, analogous to the one + for @{text "\"} given in Proposition \ref{funquot}, would not be true + in general. It cannot even be stated inside HOL, because of restrictions on types. + However, we can prove specific instances of a quotient theorem for composing particular quotient relations. For example, to lift theorems involving @{term flat} the quotient theorem for composing @{text "\\<^bsub>list\<^esub>"} will be necessary: given @{term "Quotient R Abs Rep"} @@ -521,7 +522,7 @@ building unions of finite sets (@{text "flat"} having the type @{text "(\ list) list \ \ list"}). - The problem for us is that from such declarations we need to derive proper + From such declarations given by the user, the quotient package needs to derive proper definitions using @{text "Abs"} and @{text "Rep"}. The data we rely on is the given quotient type @{text "\"} and the raw type @{text "\"}. They allow us to define \emph{aggregate abstraction} and \emph{representation functions} using the functions @{text "ABS (\, @@ -1066,9 +1067,9 @@ \end{isabelle} \noindent - If the user lifts this theorem, all proof obligations are - automatically discharged, except the respectfulness - proof for @{text "add_pair"}: + If the user lifts this theorem, the quotient package performs all the lifting + automatically leaving the respectfulness proof for the constant @{text "add_pair"} + as the only remaining proof obligation. This property needs to be proved by the user: \begin{isabelle}\ \ \ \ \ \ \ \ \ \ % \begin{tabular}{@ {}l} @@ -1078,8 +1079,7 @@ \end{isabelle} \noindent - This property needs to be proved by the user. It - can be discharged automatically by Isabelle when hinting to unfold the definition + It can be discharged automatically by Isabelle when hinting to unfold the definition of @{text "\"}. After this, the user can prove the lifted lemma as follows: