src/CCL/Set.ML
changeset 642 0db578095e6a
parent 8 c3d2c6dcf3f0
child 757 2ca12511676d
equal deleted inserted replaced
641:49fc43cd6a35 642:0db578095e6a
   115 
   115 
   116 val subset_refl = prove_goal Set.thy "A <= A"
   116 val subset_refl = prove_goal Set.thy "A <= A"
   117  (fn _=> [ (REPEAT (ares_tac [subsetI] 1)) ]);
   117  (fn _=> [ (REPEAT (ares_tac [subsetI] 1)) ]);
   118 
   118 
   119 goal Set.thy "!!A B C. [| A<=B;  B<=C |] ==> A<=C";
   119 goal Set.thy "!!A B C. [| A<=B;  B<=C |] ==> A<=C";
   120 br subsetI 1;
   120 by (rtac subsetI 1);
   121 by (REPEAT (eresolve_tac [asm_rl, subsetD] 1));
   121 by (REPEAT (eresolve_tac [asm_rl, subsetD] 1));
   122 val subset_trans = result();
   122 val subset_trans = result();
   123 
   123 
   124 
   124 
   125 (*** Rules for equality ***)
   125 (*** Rules for equality ***)
   162 by (rtac mp 1);
   162 by (rtac mp 1);
   163 by (REPEAT (resolve_tac (refl::prems) 1));
   163 by (REPEAT (resolve_tac (refl::prems) 1));
   164 val setup_induction = result();
   164 val setup_induction = result();
   165 
   165 
   166 goal Set.thy "{x.x:A} = A";
   166 goal Set.thy "{x.x:A} = A";
   167 by (REPEAT (ares_tac [equalityI,subsetI,CollectI] 1  ORELSE eresolve_tac [CollectD] 1));
   167 by (REPEAT (ares_tac [equalityI,subsetI,CollectI] 1  ORELSE etac CollectD 1));
   168 val trivial_set = result();
   168 val trivial_set = result();
   169 
   169 
   170 (*** Rules for binary union -- Un ***)
   170 (*** Rules for binary union -- Un ***)
   171 
   171 
   172 val prems = goalw Set.thy [Un_def] "c:A ==> c : A Un B";
   172 val prems = goalw Set.thy [Un_def] "c:A ==> c : A Un B";
   233 
   233 
   234 
   234 
   235 (*** Empty sets ***)
   235 (*** Empty sets ***)
   236 
   236 
   237 goalw Set.thy [empty_def] "{x.False} = {}";
   237 goalw Set.thy [empty_def] "{x.False} = {}";
   238 br refl 1;
   238 by (rtac refl 1);
   239 val empty_eq = result();
   239 val empty_eq = result();
   240 
   240 
   241 val [prem] = goalw Set.thy [empty_def] "a : {} ==> P";
   241 val [prem] = goalw Set.thy [empty_def] "a : {} ==> P";
   242 by (rtac (prem RS CollectD RS FalseE) 1);
   242 by (rtac (prem RS CollectD RS FalseE) 1);
   243 val emptyD = result();
   243 val emptyD = result();
   244 
   244 
   245 val emptyE = make_elim emptyD;
   245 val emptyE = make_elim emptyD;
   246 
   246 
   247 val [prem] = goal Set.thy "~ A={} ==> (EX x.x:A)";
   247 val [prem] = goal Set.thy "~ A={} ==> (EX x.x:A)";
   248 br (prem RS swap) 1;
   248 by (rtac (prem RS swap) 1);
   249 br equalityI 1;
   249 by (rtac equalityI 1);
   250 by (ALLGOALS (fast_tac (FOL_cs addSIs [subsetI] addSEs [emptyD])));
   250 by (ALLGOALS (fast_tac (FOL_cs addSIs [subsetI] addSEs [emptyD])));
   251 val not_emptyD = result();
   251 val not_emptyD = result();
   252 
   252 
   253 (*** Singleton sets ***)
   253 (*** Singleton sets ***)
   254 
   254