src/CCL/set.ML
changeset 8 c3d2c6dcf3f0
parent 0 a5a9c433f639
equal deleted inserted replaced
7:268f93ab3bc4 8:c3d2c6dcf3f0
    20 
    20 
    21 val prems = goal Set.thy "[| a : {x.P(x)} |] ==> P(a)";
    21 val prems = goal Set.thy "[| a : {x.P(x)} |] ==> P(a)";
    22 by (resolve_tac (prems RL [mem_Collect_iff  RS iffD1]) 1);
    22 by (resolve_tac (prems RL [mem_Collect_iff  RS iffD1]) 1);
    23 val CollectD = result();
    23 val CollectD = result();
    24 
    24 
       
    25 val CollectE = make_elim CollectD;
       
    26 
    25 val [prem] = goal Set.thy "[| !!x. x:A <-> x:B |] ==> A = B";
    27 val [prem] = goal Set.thy "[| !!x. x:A <-> x:B |] ==> A = B";
    26 by (rtac (set_extension RS iffD2) 1);
    28 by (rtac (set_extension RS iffD2) 1);
    27 by (rtac (prem RS allI) 1);
    29 by (rtac (prem RS allI) 1);
    28 val set_ext = result();
    30 val set_ext = result();
    29 
       
    30 val prems = goal Set.thy "[| !!x. P(x) <-> Q(x) |] ==> {x. P(x)} = {x. Q(x)}";
       
    31 by (REPEAT (ares_tac [set_ext,iffI,CollectI] 1 ORELSE
       
    32             eresolve_tac ([CollectD] RL (prems RL [iffD1,iffD2])) 1));
       
    33 val Collect_cong = result();
       
    34 
       
    35 val CollectE = make_elim CollectD;
       
    36 
    31 
    37 (*** Bounded quantifiers ***)
    32 (*** Bounded quantifiers ***)
    38 
    33 
    39 val prems = goalw Set.thy [Ball_def]
    34 val prems = goalw Set.thy [Ball_def]
    40     "[| !!x. x:A ==> P(x) |] ==> ALL x:A. P(x)";
    35     "[| !!x. x:A ==> P(x) |] ==> ALL x:A. P(x)";