equal
deleted
inserted
replaced
221 |
221 |
222 Goal "A <= - (range shrK) ==> shrK x ~: A"; |
222 Goal "A <= - (range shrK) ==> shrK x ~: A"; |
223 by (Blast_tac 1); |
223 by (Blast_tac 1); |
224 qed "subset_Compl_range"; |
224 qed "subset_Compl_range"; |
225 |
225 |
226 Goal "insert (Key K) H = Key `` {K} Un H"; |
226 Goal "insert (Key K) H = Key ` {K} Un H"; |
227 by (Blast_tac 1); |
227 by (Blast_tac 1); |
228 qed "insert_Key_singleton"; |
228 qed "insert_Key_singleton"; |
229 |
229 |
230 Goal "insert (Key K) (Key``KK Un C) = Key `` (insert K KK) Un C"; |
230 Goal "insert (Key K) (Key`KK Un C) = Key ` (insert K KK) Un C"; |
231 by (Blast_tac 1); |
231 by (Blast_tac 1); |
232 qed "insert_Key_image"; |
232 qed "insert_Key_image"; |
233 |
233 |
234 (*Reverse the normal simplification of "image" to build up (not break down) |
234 (*Reverse the normal simplification of "image" to build up (not break down) |
235 the set of keys. Use analz_insert_eq with (Un_upper2 RS analz_mono) to |
235 the set of keys. Use analz_insert_eq with (Un_upper2 RS analz_mono) to |
242 insert_Key_singleton, subset_Compl_range, |
242 insert_Key_singleton, subset_Compl_range, |
243 Key_not_used, insert_Key_image, Un_assoc RS sym] |
243 Key_not_used, insert_Key_image, Un_assoc RS sym] |
244 @disj_comms; |
244 @disj_comms; |
245 |
245 |
246 (*Lemma for the trivial direction of the if-and-only-if*) |
246 (*Lemma for the trivial direction of the if-and-only-if*) |
247 Goal "(Key K : analz (Key``nE Un H)) --> (K : nE | Key K : analz H) ==> \ |
247 Goal "(Key K : analz (Key`nE Un H)) --> (K : nE | Key K : analz H) ==> \ |
248 \ (Key K : analz (Key``nE Un H)) = (K : nE | Key K : analz H)"; |
248 \ (Key K : analz (Key`nE Un H)) = (K : nE | Key K : analz H)"; |
249 by (blast_tac (claset() addIs [impOfSubs analz_mono]) 1); |
249 by (blast_tac (claset() addIs [impOfSubs analz_mono]) 1); |
250 qed "analz_image_freshK_lemma"; |
250 qed "analz_image_freshK_lemma"; |