src/HOL/equalities.ML
changeset 1843 a6d7aef48c2f
parent 1786 8a31d85d27b8
child 1879 83c70ad381c1
equal deleted inserted replaced
1842:a9c36056d320 1843:a6d7aef48c2f
     8 
     8 
     9 writeln"File HOL/equalities";
     9 writeln"File HOL/equalities";
    10 
    10 
    11 AddSIs [equalityI];
    11 AddSIs [equalityI];
    12 
    12 
    13 val eq_cs = set_cs addSIs [equalityI];
       
    14 
       
    15 section "{}";
    13 section "{}";
    16 
    14 
    17 goal Set.thy "{x.False} = {}";
    15 goal Set.thy "{x.False} = {}";
    18 by (Fast_tac 1);
    16 by (Fast_tac 1);
    19 qed "Collect_False_empty";
    17 qed "Collect_False_empty";
    68 (* use new B rather than (A-{a}) to avoid infinite unfolding *)
    66 (* use new B rather than (A-{a}) to avoid infinite unfolding *)
    69 goal Set.thy "!!a. a:A ==> ? B. A = insert a B & a ~: B";
    67 goal Set.thy "!!a. a:A ==> ? B. A = insert a B & a ~: B";
    70 by (res_inst_tac [("x","A-{a}")] exI 1);
    68 by (res_inst_tac [("x","A-{a}")] exI 1);
    71 by (Fast_tac 1);
    69 by (Fast_tac 1);
    72 qed "mk_disjoint_insert";
    70 qed "mk_disjoint_insert";
       
    71 
       
    72 goal Set.thy
       
    73     "!!A. A~={} ==> (UN x:A. insert a (B x)) = insert a (UN x:A. B x)";
       
    74 by (Fast_tac 1);
       
    75 qed "UN_insert_distrib";
       
    76 
       
    77 goal Set.thy "(UN x. insert a (B x)) = insert a (UN x. B x)";
       
    78 by (Fast_tac 1);
       
    79 qed "UN1_insert_distrib";
    73 
    80 
    74 section "``";
    81 section "``";
    75 
    82 
    76 goal Set.thy "f``{} = {}";
    83 goal Set.thy "f``{} = {}";
    77 by (Fast_tac 1);
    84 by (Fast_tac 1);
   190 goal Set.thy "A Un UNIV = UNIV";
   197 goal Set.thy "A Un UNIV = UNIV";
   191 by (Fast_tac 1);
   198 by (Fast_tac 1);
   192 qed "Un_UNIV_right";
   199 qed "Un_UNIV_right";
   193 Addsimps[Un_UNIV_right];
   200 Addsimps[Un_UNIV_right];
   194 
   201 
   195 goal Set.thy "insert a B Un C = insert a (B Un C)";
   202 goal Set.thy "(insert a B) Un C = insert a (B Un C)";
   196 by (Fast_tac 1);
   203 by (Fast_tac 1);
   197 qed "Un_insert_left";
   204 qed "Un_insert_left";
   198 
   205 
   199 goal Set.thy "(A Int B) Un C  =  (A Un C) Int (B Un C)";
   206 goal Set.thy "(A Int B) Un C  =  (A Un C) Int (B Un C)";
   200 by (Fast_tac 1);
   207 by (Fast_tac 1);