simplified proof of Least_mono
authoroheimb
Thu, 15 Feb 2001 16:00:44 +0100
changeset 11138 bdfb9ec76a0a
parent 11137 9265b6415d76
child 11139 b092ad5cd510
simplified proof of Least_mono
src/HOL/mono.ML
--- a/src/HOL/mono.ML	Thu Feb 15 16:00:42 2001 +0100
+++ b/src/HOL/mono.ML	Thu Feb 15 16:00:44 2001 +0100
@@ -105,15 +105,14 @@
                    ex_mono, Collect_mono, in_mono];
 
 (* Courtesy of Stephan Merz *)
-Goalw [Least_def,mono_def]
-  "[| mono (f::'a::order => 'b::order); ? x:S. ! y:S. x <= y |] \
+Goalw [Least_def] 
+"[| mono (f::'a::order => 'b::order); ? x:S. ! y:S. x <= y |] \
 \  ==> (LEAST y. y : f`S) = f(LEAST x. x : S)";
-by (etac bexE 1);
-by (rtac someI2 1);
-by (Force_tac 1);
-by (rtac some_equality 1);
-by (Force_tac 1);
-by (force_tac (claset() addSIs [order_antisym], simpset()) 1);
+by (Clarify_tac 1);
+by (eres_inst_tac [("P","%x. x : S")] LeastMI2 1);
+by  (Fast_tac 1);
+by (rtac LeastMI2 1);
+by (auto_tac (claset() addEs [monoD] addSIs [thm "order_antisym"], simpset()));
 qed "Least_mono";
 
 Goal "[| a = b; c = d; b --> d |] ==> a --> c";