src/CTT/CTT.ML
changeset 9249 c71db8c28727
parent 4440 9ed4098074bc
child 9251 bd57acd44fc1
--- a/src/CTT/CTT.ML	Wed Jul 05 16:37:52 2000 +0200
+++ b/src/CTT/CTT.ML	Wed Jul 05 17:42:06 2000 +0200
@@ -6,8 +6,6 @@
 Tactics and lemmas for ctt.thy (Constructive Type Theory)
 *)
 
-open CTT;
-
 (*Formation rules*)
 val form_rls = [NF, ProdF, SumF, PlusF, EqF, FF, TF]
 and formL_rls = [ProdFL, SumFL, PlusFL, EqFL];
@@ -35,23 +33,23 @@
 val basic_defs = [fst_def,snd_def];
 
 (*Compare with standard version: B is applied to UNSIMPLIFIED expression! *)
-qed_goal "SumIL2" CTT.thy
-    "[| c=a : A;  d=b : B(a) |] ==> <c,d> = <a,b> : Sum(A,B)"
- (fn prems=>
-  [ (rtac sym_elem 1),
-    (rtac SumIL 1),
-    (ALLGOALS (rtac sym_elem )),
-    (ALLGOALS (resolve_tac prems)) ]);
+val prems= goal CTT.thy
+    "[| c=a : A;  d=b : B(a) |] ==> <c,d> = <a,b> : Sum(A,B)";
+by (rtac sym_elem 1);
+by (rtac SumIL 1);
+by (ALLGOALS (rtac sym_elem ));
+by (ALLGOALS (resolve_tac prems)) ;
+qed "SumIL2";
 
 val intrL2_rls = [NI_succL, ProdIL, SumIL2, PlusI_inlL, PlusI_inrL];
 
 (*Exploit p:Prod(A,B) to create the assumption z:B(a).  
   A more natural form of product elimination. *)
-qed_goal "subst_prodE" CTT.thy
+val prems= goal CTT.thy
     "[| p: Prod(A,B);  a: A;  !!z. z: B(a) ==> c(z): C(z) \
-\    |] ==> c(p`a): C(p`a)"
- (fn prems=>
-  [ (REPEAT (resolve_tac (prems@[ProdE]) 1)) ]);
+\    |] ==> c(p`a): C(p`a)";
+by (REPEAT (resolve_tac (prems@[ProdE]) 1)) ;
+qed "subst_prodE";
 
 (** Tactics for type checking **)
 
@@ -100,21 +98,21 @@
 (*** Simplification ***)
 
 (*To simplify the type in a goal*)
-qed_goal "replace_type" CTT.thy
-    "[| B = A;  a : A |] ==> a : B"
- (fn prems=>
-  [ (rtac equal_types 1),
-    (rtac sym_type 2),
-    (ALLGOALS (resolve_tac prems)) ]);
+val prems= goal CTT.thy
+    "[| B = A;  a : A |] ==> a : B";
+by (rtac equal_types 1);
+by (rtac sym_type 2);
+by (ALLGOALS (resolve_tac prems)) ;
+qed "replace_type";
 
 (*Simplify the parameter of a unary type operator.*)
-qed_goal "subst_eqtyparg" CTT.thy
-    "a=c : A ==> (!!z. z:A ==> B(z) type) ==> B(a)=B(c)"
- (fn prems=>
-  [ (rtac subst_typeL 1),
-    (rtac refl_type 2),
-    (ALLGOALS (resolve_tac prems)),
-    (assume_tac 1) ]);
+val prems= goal CTT.thy
+    "a=c : A ==> (!!z. z:A ==> B(z) type) ==> B(a)=B(c)";
+by (rtac subst_typeL 1);
+by (rtac refl_type 2);
+by (ALLGOALS (resolve_tac prems));
+by (assume_tac 1) ;
+qed "subst_eqtyparg";
 
 (*Make a reduction rule for simplification.
   A goal a=c becomes b=c, by virtue of a=b *)
@@ -177,17 +175,17 @@
 
 (** The elimination rules for fst/snd **)
 
-qed_goalw "SumE_fst" CTT.thy basic_defs
-    "p : Sum(A,B) ==> fst(p) : A"
- (fn [major] =>
-  [ (rtac (major RS SumE) 1),
-    (assume_tac 1) ]);
+val [major] = goalw CTT.thy basic_defs
+    "p : Sum(A,B) ==> fst(p) : A";
+by (rtac (major RS SumE) 1);
+by (assume_tac 1) ;
+qed "SumE_fst";
 
 (*The first premise must be p:Sum(A,B) !!*)
-qed_goalw "SumE_snd" CTT.thy basic_defs
+val major::prems= goalw CTT.thy basic_defs
     "[| p: Sum(A,B);  A type;  !!x. x:A ==> B(x) type \
-\    |] ==> snd(p) : B(fst(p))"
- (fn major::prems=>
-  [ (rtac (major RS SumE) 1),
-    (resolve_tac [SumC RS subst_eqtyparg RS replace_type] 1),
-    (typechk_tac prems) ]);
+\    |] ==> snd(p) : B(fst(p))";
+by (rtac (major RS SumE) 1);
+by (resolve_tac [SumC RS subst_eqtyparg RS replace_type] 1);
+by (typechk_tac prems) ;
+qed "SumE_snd";