18 qed "Transset_includes_summands"; |
18 qed "Transset_includes_summands"; |
19 |
19 |
20 val [prem] = goalw QUniv.thy [sum_def] |
20 val [prem] = goalw QUniv.thy [sum_def] |
21 "Transset(C) ==> (A+B) Int C <= (A Int C) + (B Int C)"; |
21 "Transset(C) ==> (A+B) Int C <= (A Int C) + (B Int C)"; |
22 by (stac Int_Un_distrib 1); |
22 by (stac Int_Un_distrib 1); |
23 by (fast_tac (!claset addSDs [prem RS Transset_Pair_D]) 1); |
23 by (blast_tac (!claset addSDs [prem RS Transset_Pair_D]) 1); |
24 qed "Transset_sum_Int_subset"; |
24 qed "Transset_sum_Int_subset"; |
25 |
25 |
26 (** Introduction and elimination rules avoid tiresome folding/unfolding **) |
26 (** Introduction and elimination rules avoid tiresome folding/unfolding **) |
27 |
27 |
28 goalw QUniv.thy [quniv_def] |
28 goalw QUniv.thy [quniv_def] |
185 **) |
185 **) |
186 |
186 |
187 goalw Univ.thy [Pair_def] |
187 goalw Univ.thy [Pair_def] |
188 "!!X. [| <a,b> : Vfrom(X,succ(i)); Transset(X) |] ==> \ |
188 "!!X. [| <a,b> : Vfrom(X,succ(i)); Transset(X) |] ==> \ |
189 \ a: Vfrom(X,i) & b: Vfrom(X,i)"; |
189 \ a: Vfrom(X,i) & b: Vfrom(X,i)"; |
190 by (fast_tac (!claset addSDs [doubleton_in_Vfrom_D, Vfrom_doubleton_D]) 1); |
190 by (blast_tac (!claset addSDs [doubleton_in_Vfrom_D, Vfrom_doubleton_D]) 1); |
191 qed "Pair_in_Vfrom_D"; |
191 qed "Pair_in_Vfrom_D"; |
192 |
192 |
193 goal Univ.thy |
193 goal Univ.thy |
194 "!!X. Transset(X) ==> \ |
194 "!!X. Transset(X) ==> \ |
195 \ (a*b) Int Vfrom(X, succ(i)) <= (a Int Vfrom(X,i)) * (b Int Vfrom(X,i))"; |
195 \ (a*b) Int Vfrom(X, succ(i)) <= (a Int Vfrom(X,i)) * (b Int Vfrom(X,i))"; |
196 by (fast_tac (!claset addSDs [Pair_in_Vfrom_D]) 1); |
196 by (blast_tac (!claset addSDs [Pair_in_Vfrom_D]) 1); |
197 qed "product_Int_Vfrom_subset"; |
197 qed "product_Int_Vfrom_subset"; |
198 |
198 |
199 (*** Intersecting <a;b> with Vfrom... ***) |
199 (*** Intersecting <a;b> with Vfrom... ***) |
200 |
200 |
201 goalw QUniv.thy [QPair_def,sum_def] |
201 goalw QUniv.thy [QPair_def,sum_def] |