added theorems is_ub_range_shift and is_lub_range_shift
authorhuffman
Wed, 08 Jun 2005 00:59:46 +0200
changeset 16318 45b12a01382f
parent 16317 868eddbcaf6e
child 16319 1ff2965cc2e7
added theorems is_ub_range_shift and is_lub_range_shift
src/HOLCF/Porder.thy
--- a/src/HOLCF/Porder.thy	Wed Jun 08 00:18:26 2005 +0200
+++ b/src/HOLCF/Porder.thy	Wed Jun 08 00:59:46 2005 +0200
@@ -174,7 +174,7 @@
 
 lemma chain_shift: "chain Y ==> chain (%i. Y (i + j))"
 apply (rule chainI)
-apply clarsimp
+apply simp
 apply (erule chainE)
 done
 
@@ -193,6 +193,22 @@
 lemmas is_ub_lub = is_lubD1 [THEN ub_rangeD, standard]
   -- {* @{thm is_ub_lub} *} (* range(?S1) <<| ?x1 ==> ?S1(?x) << ?x1 *)
 
+lemma is_ub_range_shift:
+  "chain S \<Longrightarrow> range (\<lambda>i. S (i + j)) <| x = range S <| x"
+apply (rule iffI)
+apply (rule ub_rangeI)
+apply (rule_tac y="S (i + j)" in trans_less)
+apply (erule chain_mono3)
+apply (rule le_add1)
+apply (erule ub_rangeD)
+apply (rule ub_rangeI)
+apply (erule ub_rangeD)
+done
+
+lemma is_lub_range_shift:
+  "chain S \<Longrightarrow> range (\<lambda>i. S (i + j)) <<| x = range S <<| x"
+by (simp add: is_lub_def is_ub_range_shift)
+
 text {* results about finite chains *}
 
 lemma lub_finch1: