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 |