eliminated GOAL syntax;
authorwenzelm
Wed, 13 Dec 2000 17:43:33 +0100
changeset 10667 75a1c9575edb
parent 10666 d2a7c5be62be
child 10668 3b84288e60b7
eliminated GOAL syntax;
src/Pure/drule.ML
src/Pure/pure_thy.ML
--- a/src/Pure/drule.ML	Wed Dec 13 17:41:10 2000 +0100
+++ b/src/Pure/drule.ML	Wed Dec 13 17:43:33 2000 +0100
@@ -703,17 +703,18 @@
     flexpair_intr o equal_abs_elim_list cts o flexpair_elim;
 
 
-(*** GOAL (PROP A) <==> PROP A ***)
+(*** Goal (PROP A) <==> PROP A ***)
 
 local
-  val A = read_prop "PROP A";
-  val G = read_prop "GOAL (PROP A)";
+  val cert = Thm.cterm_of proto_sign;
+  val A = Free ("A", propT);
+  val G = Logic.mk_goal A;
   val (G_def, _) = freeze_thaw ProtoPure.Goal_def;
 in
-  val triv_goal = store_thm "triv_goal"
-    (tag_rule internal_tag (standard (Thm.equal_elim (Thm.symmetric G_def) (Thm.assume A))));
-  val rev_triv_goal = store_thm "rev_triv_goal"
-    (tag_rule internal_tag (standard (Thm.equal_elim G_def (Thm.assume G))));
+  val triv_goal = store_thm "triv_goal" (tag_rule internal_tag (standard
+      (Thm.equal_elim (Thm.symmetric G_def) (Thm.assume (cert A)))));
+  val rev_triv_goal = store_thm "rev_triv_goal" (tag_rule internal_tag (standard
+      (Thm.equal_elim G_def (Thm.assume (cert G)))));
 end;
 
 val mk_cgoal = Thm.capply (Thm.cterm_of proto_sign Logic.goal_const);
--- a/src/Pure/pure_thy.ML	Wed Dec 13 17:41:10 2000 +0100
+++ b/src/Pure/pure_thy.ML	Wed Dec 13 17:43:33 2000 +0100
@@ -137,7 +137,7 @@
     val ref {space, thms_tab, ...} = get_theorems thy;
   in
     fn name =>
-      apsome (map (Thm.transfer_sg (Sign.deref sg_ref)))  	(*semi-dynamic identity*)
+      apsome (map (Thm.transfer_sg (Sign.deref sg_ref)))        (*semi-dynamic identity*)
       (Symtab.lookup (thms_tab, NameSpace.intern space name))   (*static content*)
   end;
 
@@ -474,7 +474,7 @@
     ("=?=", "['a::{}, 'a] => prop", InfixrName ("=?=", 2)),
     ("==>", "[prop, prop] => prop", Mixfix ("(_/ ==> _)", [2, 1], 1)),
     ("all", "('a => prop) => prop", Binder ("!!", 0, 0)),
-    ("Goal", "prop => prop", Mixfix ("GOAL _", [1000], 999)),
+    ("Goal", "prop => prop", NoSyn),
     ("TYPE", "'a itself", NoSyn),
     (Term.dummy_patternN, "'a", Delimfix "'_")]
   |> Theory.add_modesyntax ("", false)
@@ -482,8 +482,9 @@
       :: Syntax.pure_appl_syntax)
   |> local_path
   |> (#1 oo (add_defs false o map Thm.no_attributes))
-   [("flexpair_def", "(t =?= u) == (t == u::'a::{})"),
-    ("Goal_def", "GOAL (PROP A) == PROP A")]
+   [("flexpair_def", "(t =?= u) == (t == u::'a::{})")]
+  |> (#1 oo (add_defs_i false o map Thm.no_attributes))
+   [("Goal_def", let val A = Free ("A", propT) in Logic.mk_equals (Logic.mk_goal A, A) end)]
   |> (#1 o add_thmss [(("nothing", []), [])])
   |> end_theory;