src/HOL/Partial_Function.thy
changeset 62390 842917225d56
parent 61841 4d3527b94f2a
child 63561 fba08009ff3e
equal deleted inserted replaced
62380:29800666e526 62390:842917225d56
   302   fix A x
   302   fix A x
   303   assume chain: "Complete_Partial_Order.chain (fun_ord (flat_ord c)) A"
   303   assume chain: "Complete_Partial_Order.chain (fun_ord (flat_ord c)) A"
   304     and P [rule_format]: "\<forall>f\<in>A. \<forall>x. f x \<noteq> c \<longrightarrow> P x (f x)"
   304     and P [rule_format]: "\<forall>f\<in>A. \<forall>x. f x \<noteq> c \<longrightarrow> P x (f x)"
   305     and defined: "fun_lub (flat_lub c) A x \<noteq> c"
   305     and defined: "fun_lub (flat_lub c) A x \<noteq> c"
   306   from defined obtain f where f: "f \<in> A" "f x \<noteq> c"
   306   from defined obtain f where f: "f \<in> A" "f x \<noteq> c"
   307     by(auto simp add: fun_lub_def flat_lub_def split: split_if_asm)
   307     by(auto simp add: fun_lub_def flat_lub_def split: if_split_asm)
   308   hence "P x (f x)" by(rule P)
   308   hence "P x (f x)" by(rule P)
   309   moreover from chain f have "\<forall>f' \<in> A. f' x = c \<or> f' x = f x"
   309   moreover from chain f have "\<forall>f' \<in> A. f' x = c \<or> f' x = f x"
   310     by(auto 4 4 simp add: Complete_Partial_Order.chain_def flat_ord_def fun_ord_def)
   310     by(auto 4 4 simp add: Complete_Partial_Order.chain_def flat_ord_def fun_ord_def)
   311   hence "fun_lub (flat_lub c) A x = f x"
   311   hence "fun_lub (flat_lub c) A x = f x"
   312     using f by(auto simp add: fun_lub_def flat_lub_def)
   312     using f by(auto simp add: fun_lub_def flat_lub_def)