diff -r bd602eb894ab -r c9633254a4ec Quotient-Paper-jv/Paper.thy --- a/Quotient-Paper-jv/Paper.thy Fri Feb 03 15:51:55 2012 +0000 +++ b/Quotient-Paper-jv/Paper.thy Thu Feb 09 14:47:24 2012 +0100 @@ -37,7 +37,7 @@ concat_fset ("\") and Quotient ("Quot _ _ _") - +declare [[show_question_marks = false]] ML {* fun nth_conj n (_, r) = nth (HOLogic.dest_conj r) n; @@ -58,43 +58,6 @@ Term_Style.setup "rhs3" (style_lhs_rhs (nth_conj 2)) *} -lemma insert_preserve2: - shows "((rep_fset ---> (map rep_fset \ rep_fset) ---> (abs_fset \ map abs_fset)) op #) = - (id ---> rep_fset ---> abs_fset) op #" - by (simp add: fun_eq_iff abs_o_rep[OF Quotient_fset] map_id Quotient_abs_rep[OF Quotient_fset]) - -lemma list_all2_symp: - assumes a: "equivp R" - and b: "list_all2 R xs ys" - shows "list_all2 R ys xs" -using list_all2_lengthD[OF b] b -apply(induct xs ys rule: list_induct2) -apply(auto intro: equivp_symp[OF a]) -done - -lemma concat_rsp_unfolded: - "\list_all2 list_eq a ba; list_eq ba bb; list_all2 list_eq bb b\ \ list_eq (concat a) (concat b)" -proof - - fix a b ba bb - assume a: "list_all2 list_eq a ba" - assume b: "list_eq ba bb" - assume c: "list_all2 list_eq bb b" - have "\x. (\xa\set a. x \ set xa) = (\xa\set b. x \ set xa)" proof - fix x - show "(\xa\set a. x \ set xa) = (\xa\set b. x \ set xa)" proof - assume d: "\xa\set a. x \ set xa" - show "\xa\set b. x \ set xa" by (rule concat_rsp_pre[OF a b c d]) - next - assume e: "\xa\set b. x \ set xa" - have a': "list_all2 list_eq ba a" by (rule list_all2_symp[OF list_eq_equivp, OF a]) - have b': "list_eq bb ba" by (rule equivp_symp[OF list_eq_equivp, OF b]) - have c': "list_all2 list_eq b bb" by (rule list_all2_symp[OF list_eq_equivp, OF c]) - show "\xa\set a. x \ set xa" by (rule concat_rsp_pre[OF c' b' a' e]) - qed - qed - then show "list_eq (concat a) (concat b)" by auto -qed - (*>*) @@ -275,7 +238,7 @@ \begin{isabelle}\ \ \ \ \ %%% @{thm concat.simps(1)[THEN eq_reflection]}\hspace{10mm} - @{thm concat.simps(2)[THEN eq_reflection, no_vars]} + @{thm concat.simps(2)[THEN eq_reflection]} \end{isabelle} \noindent @@ -285,8 +248,8 @@ builds finite unions of finite sets: \begin{isabelle}\ \ \ \ \ %%% - @{thm concat_empty_fset[THEN eq_reflection, no_vars]}\hspace{10mm} - @{thm concat_insert_fset[THEN eq_reflection, no_vars]} + @{thm concat_empty_fset[THEN eq_reflection]}\hspace{10mm} + @{thm concat_insert_fset[THEN eq_reflection]} \end{isabelle} \noindent @@ -325,7 +288,7 @@ of \emph{aggregate equivalence relation}, \emph{respectfulness} and \emph{preservation} from Homeier \cite{Homeier05}. - {\bf EXAMPLE BY HUFFMAN @{thm map_concat_fset[no_vars]}} + {\bf EXAMPLE BY HUFFMAN @{thm map_concat_fset}} In addition we are able to clearly specify what is involved in the lifting process (this was only hinted at in \cite{Homeier05} and @@ -383,7 +346,7 @@ also the following map for function types \begin{isabelle}\ \ \ \ \ %%% - @{thm map_fun_def[no_vars, THEN eq_reflection]} + @{thm map_fun_def[THEN eq_reflection]} \end{isabelle} \noindent @@ -423,7 +386,7 @@ relations over function types % \begin{isabelle}\ \ \ \ \ %%% - @{thm fun_rel_def[of "R\<^isub>1" "R\<^isub>2", no_vars, THEN eq_reflection]} + @{thm fun_rel_def[of "R\<^isub>1" "R\<^isub>2", THEN eq_reflection]} \hfill\numbered{relfun} \end{isabelle} @@ -449,9 +412,9 @@ holds if and only if \begin{isabelle}\ \ \ \ \ %%%% \begin{tabular}{rl} - (i) & \begin{isa}@{thm (rhs1) Quotient_def[of "R", no_vars]}\end{isa}\\ - (ii) & \begin{isa}@{thm (rhs2) Quotient_def[of "R", no_vars]}\end{isa}\\ - (iii) & \begin{isa}@{thm (rhs3) Quotient_def[of "R", no_vars]}\end{isa}\\ + (i) & \begin{isa}@{thm (rhs1) Quotient_def[of "R"]}\end{isa}\\ + (ii) & \begin{isa}@{thm (rhs2) Quotient_def[of "R"]}\end{isa}\\ + (iii) & \begin{isa}@{thm (rhs3) Quotient_def[of "R"]}\end{isa}\\ \end{tabular} \end{isabelle} \end{definition} @@ -918,7 +881,7 @@ with @{text "nat \ nat"} and we also quotient this type to yield integers, then we need to show this preservation property. - %%%@ {thm [display, indent=10] insert_preserve2[no_vars]} + %%%@ {thm [display, indent=10] Cons_prs2} %Given two quotients, one of which quotients a container, and the %other quotients the type in the container, we can write the @@ -1132,7 +1095,7 @@ %%% should include a proof sketch? %\begin{isabelle}\ \ \ \ \ %%% - %@{thm (concl) ball_reg_eqv_range[of R\<^isub>1 R\<^isub>2, no_vars]} + %@{thm (concl) ball_reg_eqv_range[of R\<^isub>1 R\<^isub>2]} %\end{isabelle} %\noindent @@ -1183,7 +1146,7 @@ %@{term "Quotient R\<^isub>1 Abs\<^isub>1 Rep\<^isub>1"} and @{term "Quotient R\<^isub>2 Abs\<^isub>2 Rep\<^isub>2"}, we have: %\begin{isabelle}\ \ \ \ \ %%% - %@{thm (concl) lambda_prs[of _ "Abs\<^isub>1" "Rep\<^isub>1" _ "Abs\<^isub>2" "Rep\<^isub>2", no_vars]} + %@{thm (concl) lambda_prs[of _ "Abs\<^isub>1" "Rep\<^isub>1" _ "Abs\<^isub>2" "Rep\<^isub>2"]} %\end{isabelle} %\noindent @@ -1192,7 +1155,7 @@ %which has been shown by Homeier~\cite{Homeier05}: %\begin{isabelle}\ \ \ \ \ %%% - %@{thm (concl) Quotient_rel_rep[no_vars]} + %@{thm (concl) Quotient_rel_rep} %\end{isabelle}