equal
deleted
inserted
replaced
629 proof |
629 proof |
630 assume L: ?lhs |
630 assume L: ?lhs |
631 then show ?rhs |
631 then show ?rhs |
632 apply (rule_tac x="f \<circ> inv_into (Collect P) g" in exI) |
632 apply (rule_tac x="f \<circ> inv_into (Collect P) g" in exI) |
633 unfolding o_def |
633 unfolding o_def |
634 by (metis (mono_tags, hide_lams) f_inv_into_f imageI inv_into_into mem_Collect_eq) |
634 by (metis (mono_tags, opaque_lifting) f_inv_into_f imageI inv_into_into mem_Collect_eq) |
635 qed auto |
635 qed auto |
636 |
636 |
637 lemma function_factors_left: |
637 lemma function_factors_left: |
638 "(\<forall>x y. (g x = g y) \<longrightarrow> (f x = f y)) \<longleftrightarrow> (\<exists>h. f = h \<circ> g)" |
638 "(\<forall>x y. (g x = g y) \<longrightarrow> (f x = f y)) \<longleftrightarrow> (\<exists>h. f = h \<circ> g)" |
639 using function_factors_left_gen [of "\<lambda>x. True" g f] unfolding o_def by blast |
639 using function_factors_left_gen [of "\<lambda>x. True" g f] unfolding o_def by blast |