corrected ML names of definitions, added chain_shift
authoroheimb
Thu, 31 May 2001 16:52:35 +0200
changeset 11347 4e41f71179ed
parent 11346 0d28bc664955
child 11348 e08a0855af67
corrected ML names of definitions, added chain_shift
src/HOLCF/Porder.ML
--- a/src/HOLCF/Porder.ML	Thu May 31 16:52:32 2001 +0200
+++ b/src/HOLCF/Porder.ML	Thu May 31 16:52:35 2001 +0200
@@ -11,7 +11,7 @@
 (* ------------------------------------------------------------------------ *)
 
 
-Goalw [is_lub, is_ub] 
+Goalw [is_lub_def, is_ub_def] 
         "[| S <<| x ; S <<| y |] ==> x=y";
 by (blast_tac (claset() addIs [antisym_less]) 1);
 qed "unique_lub";
@@ -20,7 +20,7 @@
 (* chains are monotone functions                                            *)
 (* ------------------------------------------------------------------------ *)
 
-Goalw [chain] "chain F ==> x<y --> F x<<F y";
+Goalw [chain_def] "chain F ==> x<y --> F x<<F y";
 by (induct_tac "y" 1);
 by Auto_tac;  
 by (blast_tac (claset() addIs [trans_less]) 2);
@@ -37,7 +37,7 @@
 (* The range of a chain is a totally ordered     <<                         *)
 (* ------------------------------------------------------------------------ *)
 
-Goalw [tord] "chain(F) ==> tord(range(F))";
+Goalw [tord_def] "chain(F) ==> tord(range(F))";
 by (Safe_tac);
 by (rtac nat_less_cases 1);
 by (ALLGOALS (fast_tac (claset() addIs [chain_mono])));
@@ -62,7 +62,7 @@
 
 
 Goal "lub{x} = x";
-by (simp_tac (simpset() addsimps [thelubI,is_lub,is_ub]) 1);
+by (simp_tac (simpset() addsimps [thelubI,is_lub_def,is_ub_def]) 1);
 qed "lub_singleton";
 Addsimps [lub_singleton];
 
@@ -70,36 +70,42 @@
 (* access to some definition as inference rule                              *)
 (* ------------------------------------------------------------------------ *)
 
-Goalw [is_lub] "S <<| x ==> S <| x";
+Goalw [is_lub_def] "S <<| x ==> S <| x";
 by Auto_tac;
 qed "is_lubD1";
 
-Goalw [is_lub] "[| S <<| x; S <| u |] ==> x << u";
+Goalw [is_lub_def] "[| S <<| x; S <| u |] ==> x << u";
 by Auto_tac;
 qed "is_lub_lub";
 
-val prems = Goalw [is_lub]
+val prems = Goalw [is_lub_def]
         "[| S <| x; !!u. S <| u ==> x << u |] ==> S <<| x";
 by (blast_tac (claset() addIs prems) 1);
 qed "is_lubI";
 
-Goalw [chain] "chain F ==> F(i) << F(Suc(i))";
+Goalw [chain_def] "chain F ==> F(i) << F(Suc(i))";
 by Auto_tac;
 qed "chainE";
 
-val prems = Goalw [chain] "(!!i. F i << F(Suc i)) ==> chain F";
+val prems = Goalw [chain_def] "(!!i. F i << F(Suc i)) ==> chain F";
 by (blast_tac (claset() addIs prems) 1);
 qed "chainI";
 
+Goal "chain Y ==> chain (%i. Y (i + j))";
+br chainI 1;
+by (Clarsimp_tac 1);
+be chainE 1;
+qed "chain_shift";
+
 (* ------------------------------------------------------------------------ *)
 (* technical lemmas about (least) upper bounds of chains                    *)
 (* ------------------------------------------------------------------------ *)
 
-Goalw [is_ub] "range S <| x  ==> S(i) << x";
+Goalw [is_ub_def] "range S <| x  ==> S(i) << x";
 by (Blast_tac 1);
 qed "ub_rangeD";
 
-val prems = Goalw [is_ub] "(!!i. S i << x) ==> range S <| x";
+val prems = Goalw [is_ub_def] "(!!i. S i << x) ==> range S <| x";
 by (blast_tac (claset() addIs prems) 1);
 qed "ub_rangeI";