src/HOLCF/Fixrec.thy
changeset 31095 b79d140f6d0b
parent 31008 b8f4e351b5bf
child 31738 7b9b9ba532ca
equal deleted inserted replaced
31094:7d6edb28bdbc 31095:b79d140f6d0b
   572 text {*
   572 text {*
   573   The following rules are used to prove unfolding theorems from
   573   The following rules are used to prove unfolding theorems from
   574   fixed-point definitions of mutually recursive functions.
   574   fixed-point definitions of mutually recursive functions.
   575 *}
   575 *}
   576 
   576 
   577 lemma cpair_equalI: "\<lbrakk>x \<equiv> cfst\<cdot>p; y \<equiv> csnd\<cdot>p\<rbrakk> \<Longrightarrow> <x,y> \<equiv> p"
   577 lemma Pair_equalI: "\<lbrakk>x \<equiv> fst p; y \<equiv> snd p\<rbrakk> \<Longrightarrow> (x, y) \<equiv> p"
   578 by (simp add: surjective_pairing_Cprod2)
       
   579 
       
   580 lemma cpair_eqD1: "<x,y> = <x',y'> \<Longrightarrow> x = x'"
       
   581 by simp
   578 by simp
   582 
   579 
   583 lemma cpair_eqD2: "<x,y> = <x',y'> \<Longrightarrow> y = y'"
   580 lemma Pair_eqD1: "(x, y) = (x', y') \<Longrightarrow> x = x'"
   584 by simp
   581 by simp
       
   582 
       
   583 lemma Pair_eqD2: "(x, y) = (x', y') \<Longrightarrow> y = y'"
       
   584 by simp
       
   585 
       
   586 lemma def_cont_fix_eq:
       
   587   "\<lbrakk>f \<equiv> fix\<cdot>(Abs_CFun F); cont F\<rbrakk> \<Longrightarrow> f = F f"
       
   588 by (simp, subst fix_eq, simp)
       
   589 
       
   590 lemma def_cont_fix_ind:
       
   591   "\<lbrakk>f \<equiv> fix\<cdot>(Abs_CFun F); cont F; adm P; P \<bottom>; \<And>x. P x \<Longrightarrow> P (F x)\<rbrakk> \<Longrightarrow> P f"
       
   592 by (simp add: fix_ind)
   585 
   593 
   586 text {* lemma for proving rewrite rules *}
   594 text {* lemma for proving rewrite rules *}
   587 
   595 
   588 lemma ssubst_lhs: "\<lbrakk>t = s; P s = Q\<rbrakk> \<Longrightarrow> P t = Q"
   596 lemma ssubst_lhs: "\<lbrakk>t = s; P s = Q\<rbrakk> \<Longrightarrow> P t = Q"
   589 by simp
   597 by simp