qpaper / a bit about prs
authorCezary Kaliszyk <kaliszyk@in.tum.de>
Thu, 27 May 2010 14:30:07 +0200
changeset 2196 74637f186af7
parent 2195 0c1dcdefb515
child 2197 3a6afcb187ec
qpaper / a bit about prs
Nominal/FSet.thy
Quotient-Paper/Paper.thy
--- a/Nominal/FSet.thy	Thu May 27 11:21:37 2010 +0200
+++ b/Nominal/FSet.thy	Thu May 27 14:30:07 2010 +0200
@@ -626,6 +626,11 @@
   apply auto
   done
 
+lemma insert_preserve2:
+  shows "((rep_fset ---> (map rep_fset \<circ> rep_fset) ---> (abs_fset \<circ> map abs_fset)) op #) =
+         (id ---> rep_fset ---> abs_fset) op #"
+  by (simp add: expand_fun_eq abs_o_rep[OF Quotient_fset] map_id Quotient_abs_rep[OF Quotient_fset])
+
 lemma [quot_preserve]:
   "(rep_fset ---> (map rep_fset \<circ> rep_fset) ---> (abs_fset \<circ> map abs_fset)) op # = finsert"
   by (simp add: expand_fun_eq Quotient_abs_rep[OF Quotient_fset]
--- a/Quotient-Paper/Paper.thy	Thu May 27 11:21:37 2010 +0200
+++ b/Quotient-Paper/Paper.thy	Thu May 27 14:30:07 2010 +0200
@@ -295,6 +295,19 @@
   To be able to lift theorems that talk about constants that are not
   lifted but whose type changes when lifting is performed additionally
   preservation theorems are needed.
+
+  To lift theorems that talk about insertion in lists of lifted types
+  we need to know that for any quotient type with the abstraction and
+  representation functions @{text "Abs"} and @{text Rep} we have:
+
+  @{thm [display] (concl) cons_prs[no_vars]}
+
+  This is not enough to lift theorems that talk about quotient compositions.
+  For some constants (for example empty list) it is possible to show a
+  general compositional theorem, but for @{term "op #"} it is necessary
+  to show that it respects the particular quotient type:
+
+  @{thm [display] insert_preserve2[no_vars]}
 *}
 
 subsection {* Composition of Quotient theorems *}