src/HOL/BNF_Fixpoint_Base.thy
changeset 58916 229765cc3414
parent 58889 5b7a9633cfa8
child 60758 d8d85a8172b5
equal deleted inserted replaced
58915:7d673ab6a8d9 58916:229765cc3414
    83   by simp
    83   by simp
    84 
    84 
    85 lemma prod_set_simps:
    85 lemma prod_set_simps:
    86   "fsts (x, y) = {x}"
    86   "fsts (x, y) = {x}"
    87   "snds (x, y) = {y}"
    87   "snds (x, y) = {y}"
    88   unfolding fsts_def snds_def by simp+
    88   unfolding prod_set_defs by simp+
    89 
    89 
    90 lemma sum_set_simps:
    90 lemma sum_set_simps:
    91   "setl (Inl x) = {x}"
    91   "setl (Inl x) = {x}"
    92   "setl (Inr x) = {}"
    92   "setl (Inr x) = {}"
    93   "setr (Inl x) = {}"
    93   "setr (Inl x) = {}"
   202 lemma case_sum_map_sum: "case_sum l r (map_sum f g x) = case_sum (l \<circ> f) (r \<circ> g) x"
   202 lemma case_sum_map_sum: "case_sum l r (map_sum f g x) = case_sum (l \<circ> f) (r \<circ> g) x"
   203   by (case_tac x) simp+
   203   by (case_tac x) simp+
   204 
   204 
   205 lemma case_sum_transfer:
   205 lemma case_sum_transfer:
   206   "rel_fun (rel_fun R T) (rel_fun (rel_fun S T) (rel_fun (rel_sum R S) T)) case_sum case_sum"
   206   "rel_fun (rel_fun R T) (rel_fun (rel_fun S T) (rel_fun (rel_sum R S) T)) case_sum case_sum"
   207   unfolding rel_fun_def rel_sum_def by (auto split: sum.splits)
   207   unfolding rel_fun_def by (auto split: sum.splits)
   208 
   208 
   209 lemma case_prod_map_prod: "case_prod h (map_prod f g x) = case_prod (\<lambda>l r. h (f l) (g r)) x"
   209 lemma case_prod_map_prod: "case_prod h (map_prod f g x) = case_prod (\<lambda>l r. h (f l) (g r)) x"
   210   by (case_tac x) simp+
   210   by (case_tac x) simp+
   211 
   211 
   212 lemma case_prod_o_map_prod: "case_prod f \<circ> map_prod g1 g2 = case_prod (\<lambda>l r. f (g1 l) (g2 r))"
   212 lemma case_prod_o_map_prod: "case_prod f \<circ> map_prod g1 g2 = case_prod (\<lambda>l r. f (g1 l) (g2 r))"
   213   unfolding comp_def by auto
   213   unfolding comp_def by auto
   214 
   214 
   215 lemma case_prod_transfer:
   215 lemma case_prod_transfer:
   216   "(rel_fun (rel_fun A (rel_fun B C)) (rel_fun (rel_prod A B) C)) case_prod case_prod"
   216   "(rel_fun (rel_fun A (rel_fun B C)) (rel_fun (rel_prod A B) C)) case_prod case_prod"
   217   unfolding rel_fun_def rel_prod_def by simp
   217   unfolding rel_fun_def by simp
   218 
       
   219 lemma prod_inj_map: "inj f \<Longrightarrow> inj g \<Longrightarrow> inj (map_prod f g)"
       
   220   by (simp add: inj_on_def)
       
   221 
   218 
   222 lemma eq_ifI: "(P \<longrightarrow> t = u1) \<Longrightarrow> (\<not> P \<longrightarrow> t = u2) \<Longrightarrow> t = (if P then u1 else u2)"
   219 lemma eq_ifI: "(P \<longrightarrow> t = u1) \<Longrightarrow> (\<not> P \<longrightarrow> t = u2) \<Longrightarrow> t = (if P then u1 else u2)"
   223   by simp
   220   by simp
   224 
   221 
   225 lemma comp_transfer:
   222 lemma comp_transfer:
   244 lemma Inr_transfer:
   241 lemma Inr_transfer:
   245   "rel_fun T (rel_sum S T) Inr Inr"
   242   "rel_fun T (rel_sum S T) Inr Inr"
   246   by auto
   243   by auto
   247 
   244 
   248 lemma Pair_transfer: "rel_fun A (rel_fun B (rel_prod A B)) Pair Pair"
   245 lemma Pair_transfer: "rel_fun A (rel_fun B (rel_prod A B)) Pair Pair"
   249   unfolding rel_fun_def rel_prod_def by simp
   246   unfolding rel_fun_def by simp
   250 
   247 
   251 ML_file "Tools/BNF/bnf_fp_util.ML"
   248 ML_file "Tools/BNF/bnf_fp_util.ML"
   252 ML_file "Tools/BNF/bnf_fp_def_sugar_tactics.ML"
   249 ML_file "Tools/BNF/bnf_fp_def_sugar_tactics.ML"
   253 ML_file "Tools/BNF/bnf_fp_def_sugar.ML"
   250 ML_file "Tools/BNF/bnf_fp_def_sugar.ML"
   254 ML_file "Tools/BNF/bnf_fp_n2m_tactics.ML"
   251 ML_file "Tools/BNF/bnf_fp_n2m_tactics.ML"