# HG changeset patch # User paulson # Date 911554632 -3600 # Node ID 1db9fad40a4f743777fa9f9ea11a59c261409119 # Parent 33bdc03bba7e905c8b9c66f059435289a46fe6d7 better miniscoping rules: the premise C~={} is not good because Safe_tac eliminates such assumptions. diff -r 33bdc03bba7e -r 1db9fad40a4f src/HOL/equalities.ML --- a/src/HOL/equalities.ML Thu Nov 19 11:49:57 1998 +0100 +++ b/src/HOL/equalities.ML Fri Nov 20 10:37:12 1998 +0100 @@ -85,7 +85,7 @@ bind_thm ("insert_Collect", prove_goal thy "insert a (Collect P) = {u. u ~= a --> P u}" (K [Auto_tac])); -Goal "A~={} ==> (UN x:A. insert a (B x)) = insert a (UN x:A. B x)"; +Goal "u: A ==> (UN x:A. insert a (B x)) = insert a (UN x:A. B x)"; by (Blast_tac 1); qed "UN_insert_distrib"; @@ -442,7 +442,6 @@ (*Basic identities*) val not_empty = prove_goal Set.thy "(A ~= {}) = (? x. x:A)" (K [Blast_tac 1]); -(*Addsimps[not_empty];*) Goal "(UN x:{}. B x) = {}"; by (Blast_tac 1); @@ -490,7 +489,7 @@ qed "INT_insert"; Addsimps[INT_insert]; -Goal "A~={} ==> (INT x:A. insert a (B x)) = insert a (INT x:A. B x)"; +Goal "u: A ==> (INT x:A. insert a (B x)) = insert a (INT x:A. B x)"; by (Blast_tac 1); qed "INT_insert_distrib"; @@ -502,12 +501,12 @@ by (Blast_tac 1); qed "Inter_image_eq"; -Goal "A~={} ==> (UN y:A. c) = c"; +Goal "u: A ==> (UN y:A. c) = c"; by (Blast_tac 1); qed "UN_constant"; Addsimps[UN_constant]; -Goal "A~={} ==> (INT y:A. c) = c"; +Goal "u: A ==> (INT y:A. c) = c"; by (Blast_tac 1); qed "INT_constant"; Addsimps[INT_constant]; @@ -783,9 +782,9 @@ fun prover s = prove_goal thy s (fn _ => [Blast_tac 1]) in val UN_simps = map prover - ["!!C. C ~= {} ==> (UN x:C. insert a (B x)) = insert a (UN x:C. B x)", - "!!C. C ~= {} ==> (UN x:C. A x Un B) = ((UN x:C. A x) Un B)", - "!!C. C ~= {} ==> (UN x:C. A Un B x) = (A Un (UN x:C. B x))", + ["!!C. c: C ==> (UN x:C. insert a (B x)) = insert a (UN x:C. B x)", + "!!C. c: C ==> (UN x:C. A x Un B) = ((UN x:C. A x) Un B)", + "!!C. c: C ==> (UN x:C. A Un B x) = (A Un (UN x:C. B x))", "(UN x:C. A x Int B) = ((UN x:C. A x) Int B)", "(UN x:C. A Int B x) = (A Int (UN x:C. B x))", "(UN x:C. A x - B) = ((UN x:C. A x) - B)", @@ -793,10 +792,10 @@ "(UN x:f``A. B x) = (UN a:A. B(f a))"]; val INT_simps = map prover - ["!!C. C ~= {} ==> (INT x:C. A x Int B) = ((INT x:C. A x) Int B)", - "!!C. C ~= {} ==> (INT x:C. A Int B x) = (A Int (INT x:C. B x))", - "!!C. C ~= {} ==> (INT x:C. A x - B) = ((INT x:C. A x) - B)", - "!!C. C ~= {} ==> (INT x:C. A - B x) = (A - (UN x:C. B x))", + ["!!C. c: C ==> (INT x:C. A x Int B) = ((INT x:C. A x) Int B)", + "!!C. c: C ==> (INT x:C. A Int B x) = (A Int (INT x:C. B x))", + "!!C. c: C ==> (INT x:C. A x - B) = ((INT x:C. A x) - B)", + "!!C. c: C ==> (INT x:C. A - B x) = (A - (UN x:C. B x))", "(INT x:C. insert a (B x)) = insert a (INT x:C. B x)", "(INT x:C. A x Un B) = ((INT x:C. A x) Un B)", "(INT x:C. A Un B x) = (A Un (INT x:C. B x))",