src/HOL/Product_Type.thy
changeset 44066 d74182c93f04
parent 43866 8a50dc70cbff
child 44921 58eef4843641
equal deleted inserted replaced
44065:eb64ffccfc75 44066:d74182c93f04
   434 lemma pair_collapse [simp]: "(fst p, snd p) = p"
   434 lemma pair_collapse [simp]: "(fst p, snd p) = p"
   435   by (cases p) simp
   435   by (cases p) simp
   436 
   436 
   437 lemmas surjective_pairing = pair_collapse [symmetric]
   437 lemmas surjective_pairing = pair_collapse [symmetric]
   438 
   438 
   439 lemma Pair_fst_snd_eq: "s = t \<longleftrightarrow> fst s = fst t \<and> snd s = snd t"
   439 lemma prod_eq_iff: "s = t \<longleftrightarrow> fst s = fst t \<and> snd s = snd t"
   440   by (cases s, cases t) simp
   440   by (cases s, cases t) simp
   441 
   441 
   442 lemma prod_eqI [intro?]: "fst p = fst q \<Longrightarrow> snd p = snd q \<Longrightarrow> p = q"
   442 lemma prod_eqI [intro?]: "fst p = fst q \<Longrightarrow> snd p = snd q \<Longrightarrow> p = q"
   443   by (simp add: Pair_fst_snd_eq)
   443   by (simp add: prod_eq_iff)
   444 
   444 
   445 lemma split_conv [simp, code]: "split f (a, b) = f a b"
   445 lemma split_conv [simp, code]: "split f (a, b) = f a b"
   446   by (fact prod.cases)
   446   by (fact prod.cases)
   447 
   447 
   448 lemma splitI: "f a b \<Longrightarrow> split f (a, b)"
   448 lemma splitI: "f a b \<Longrightarrow> split f (a, b)"
  1224 
  1224 
  1225 lemmas Pair_eq = prod.inject
  1225 lemmas Pair_eq = prod.inject
  1226 
  1226 
  1227 lemmas split = split_conv  -- {* for backwards compatibility *}
  1227 lemmas split = split_conv  -- {* for backwards compatibility *}
  1228 
  1228 
       
  1229 lemmas Pair_fst_snd_eq = prod_eq_iff
       
  1230 
  1229 end
  1231 end