src/HOL/Transfer.thy
changeset 47924 4e951258204b
parent 47789 71a526ee569a
child 47937 70375fa2679d
equal deleted inserted replaced
47923:ba9df9685e7c 47924:4e951258204b
   277 
   277 
   278 lemma nat_case_transfer [transfer_rule]:
   278 lemma nat_case_transfer [transfer_rule]:
   279   "(A ===> (op = ===> A) ===> op = ===> A) nat_case nat_case"
   279   "(A ===> (op = ===> A) ===> op = ===> A) nat_case nat_case"
   280   unfolding fun_rel_def by (simp split: nat.split)
   280   unfolding fun_rel_def by (simp split: nat.split)
   281 
   281 
       
   282 lemma nat_rec_transfer [transfer_rule]:
       
   283   "(A ===> (op = ===> A ===> A) ===> op = ===> A) nat_rec nat_rec"
       
   284   unfolding fun_rel_def by (clarsimp, rename_tac n, induct_tac n, simp_all)
       
   285 
       
   286 lemma funpow_transfer [transfer_rule]:
       
   287   "(op = ===> (A ===> A) ===> (A ===> A)) compow compow"
       
   288   unfolding funpow_def by transfer_prover
       
   289 
   282 text {* Fallback rule for transferring universal quantifiers over
   290 text {* Fallback rule for transferring universal quantifiers over
   283   correspondence relations that are not bi-total, and do not have
   291   correspondence relations that are not bi-total, and do not have
   284   custom transfer rules (e.g. relations between function types). *}
   292   custom transfer rules (e.g. relations between function types). *}
   285 
   293 
   286 lemma Domainp_iff: "Domainp T x \<longleftrightarrow> (\<exists>y. T x y)"
   294 lemma Domainp_iff: "Domainp T x \<longleftrightarrow> (\<exists>y. T x y)"