equal
deleted
inserted
replaced
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 |