diff -r b57c3afd1484 -r ee34f03a7d26 src/HOL/Nat_Transfer.thy --- a/src/HOL/Nat_Transfer.thy Thu Mar 18 13:56:33 2010 +0100 +++ b/src/HOL/Nat_Transfer.thy Thu Mar 18 13:56:33 2010 +0100 @@ -10,12 +10,13 @@ subsection {* Generic transfer machinery *} -definition transfer_morphism:: "('b \ 'a) \ 'b set \ bool" - where "transfer_morphism f A \ True" +definition transfer_morphism:: "('b \ 'a) \ ('b \ bool) \ bool" + where "transfer_morphism f A \ (\P. (\x. P x) \ (\y. A y \ P (f y)))" lemma transfer_morphismI: - "transfer_morphism f A" - by (simp add: transfer_morphism_def) + assumes "\P y. (\x. P x) \ A y \ P (f y)" + shows "transfer_morphism f A" + using assms by (auto simp add: transfer_morphism_def) use "Tools/transfer.ML" @@ -27,7 +28,7 @@ text {* set up transfer direction *} lemma transfer_morphism_nat_int: "transfer_morphism nat (op <= (0::int))" - by (fact transfer_morphismI) + by (rule transfer_morphismI) simp declare transfer_morphism_nat_int [transfer add mode: manual @@ -266,7 +267,7 @@ text {* set up transfer direction *} lemma transfer_morphism_int_nat: "transfer_morphism int (\n. True)" - by (fact transfer_morphismI) +by (rule transfer_morphismI) simp declare transfer_morphism_int_nat [transfer add mode: manual