Nominal/Abs.thy
changeset 2068 79b733010bc5
parent 1933 9eab1dfc14d2
child 2092 c0ab7451b20d
equal deleted inserted replaced
2067:ace7775cbd04 2068:79b733010bc5
   823   apply (subst fv_rsp)
   823   apply (subst fv_rsp)
   824   apply assumption
   824   apply assumption
   825   apply (simp)
   825   apply (simp)
   826   done
   826   done
   827 
   827 
       
   828 fun
       
   829   prod_fv :: "('a \<Rightarrow> atom set) \<Rightarrow> ('b \<Rightarrow> atom set) \<Rightarrow> ('a \<times> 'b) \<Rightarrow> atom set"
       
   830 where
       
   831   "prod_fv fvx fvy (x, y) = (fvx x \<union> fvy y)"
       
   832 
       
   833 lemma [quot_respect]:
       
   834   "((R1 ===> op =) ===> (R2 ===> op =) ===> prod_rel R1 R2 ===> op =) prod_fv prod_fv"
       
   835   by auto
       
   836 
       
   837 lemma [quot_preserve]:
       
   838   assumes q1: "Quotient R1 abs1 rep1"
       
   839   and     q2: "Quotient R2 abs2 rep2"
       
   840   shows "((abs1 ---> id) ---> (abs2 ---> id) ---> prod_fun rep1 rep2 ---> id) prod_fv = prod_fv"
       
   841   by (simp add: expand_fun_eq Quotient_abs_rep[OF q1] Quotient_abs_rep[OF q2])
   828 
   842 
   829 end
   843 end
   830 
   844