215 mk_comp_set_bd_tac context comp_set_alt single_set_bds) |
215 mk_comp_set_bd_tac context comp_set_alt single_set_bds) |
216 comp_set_alt_thms single_set_bd_thmss |
216 comp_set_alt_thms single_set_bd_thmss |
217 end; |
217 end; |
218 |
218 |
219 val comp_in_alt_thm = |
219 val comp_in_alt_thm = |
220 if ! quick_and_dirty then |
220 let |
221 no_thm |
221 val comp_in = mk_in Asets comp_sets CCA; |
222 else |
222 val comp_in_alt = mk_in (map2 (mk_in Asets) inner_setss CAs) outer_sets CCA; |
223 let |
223 val goal = fold_rev Logic.all Asets (mk_Trueprop_eq (comp_in, comp_in_alt)); |
224 val comp_in = mk_in Asets comp_sets CCA; |
224 in |
225 val comp_in_alt = mk_in (map2 (mk_in Asets) inner_setss CAs) outer_sets CCA; |
225 Skip_Proof.prove lthy [] [] goal |
226 val goal = fold_rev Logic.all Asets (mk_Trueprop_eq (comp_in, comp_in_alt)); |
226 (fn {context, ...} => mk_comp_in_alt_tac context comp_set_alt_thms) |
227 in |
227 |> Thm.close_derivation |
228 Skip_Proof.prove lthy [] [] goal |
228 end; |
229 (fn {context, ...} => mk_comp_in_alt_tac context comp_set_alt_thms) |
|
230 |> Thm.close_derivation |
|
231 end; |
|
232 |
229 |
233 fun comp_in_bd_tac _ = |
230 fun comp_in_bd_tac _ = |
234 mk_comp_in_bd_tac comp_in_alt_thm (map in_bd_of_bnf inners) (in_bd_of_bnf outer) |
231 mk_comp_in_bd_tac comp_in_alt_thm (map in_bd_of_bnf inners) (in_bd_of_bnf outer) |
235 (map bd_Cinfinite_of_bnf inners) (bd_Card_order_of_bnf outer); |
232 (map bd_Cinfinite_of_bnf inners) (bd_Card_order_of_bnf outer); |
236 |
233 |
336 val killN_set_bd_tacs = |
333 val killN_set_bd_tacs = |
337 map (fn thm => fn _ => mk_killN_set_bd_tac (bd_Card_order_of_bnf bnf) thm) |
334 map (fn thm => fn _ => mk_killN_set_bd_tac (bd_Card_order_of_bnf bnf) thm) |
338 (drop n (set_bd_of_bnf bnf)); |
335 (drop n (set_bd_of_bnf bnf)); |
339 |
336 |
340 val killN_in_alt_thm = |
337 val killN_in_alt_thm = |
341 if ! quick_and_dirty then |
338 let |
342 no_thm |
339 val killN_in = mk_in Asets killN_sets T; |
343 else |
340 val killN_in_alt = mk_in (map HOLogic.mk_UNIV killedAs @ Asets) bnf_sets T; |
344 let |
341 val goal = fold_rev Logic.all Asets (mk_Trueprop_eq (killN_in, killN_in_alt)); |
345 val killN_in = mk_in Asets killN_sets T; |
342 in |
346 val killN_in_alt = mk_in (map HOLogic.mk_UNIV killedAs @ Asets) bnf_sets T; |
343 Skip_Proof.prove lthy [] [] goal (K killN_in_alt_tac) |> Thm.close_derivation |
347 val goal = fold_rev Logic.all Asets (mk_Trueprop_eq (killN_in, killN_in_alt)); |
344 end; |
348 in |
|
349 Skip_Proof.prove lthy [] [] goal (K killN_in_alt_tac) |> Thm.close_derivation |
|
350 end; |
|
351 |
345 |
352 fun killN_in_bd_tac _ = |
346 fun killN_in_bd_tac _ = |
353 mk_killN_in_bd_tac n (live > n) killN_in_alt_thm (in_bd_of_bnf bnf) |
347 mk_killN_in_bd_tac n (live > n) killN_in_alt_thm (in_bd_of_bnf bnf) |
354 (bd_Card_order_of_bnf bnf) (bd_Cinfinite_of_bnf bnf) (bd_Cnotzero_of_bnf bnf); |
348 (bd_Card_order_of_bnf bnf) (bd_Cinfinite_of_bnf bnf) (bd_Cnotzero_of_bnf bnf); |
355 fun killN_map_wpull_tac _ = |
349 fun killN_map_wpull_tac _ = |
444 else |
438 else |
445 replicate n (K (mk_liftN_set_bd_tac (bd_Card_order_of_bnf bnf))) @ |
439 replicate n (K (mk_liftN_set_bd_tac (bd_Card_order_of_bnf bnf))) @ |
446 (map (fn thm => fn _ => rtac thm 1) (set_bd_of_bnf bnf)); |
440 (map (fn thm => fn _ => rtac thm 1) (set_bd_of_bnf bnf)); |
447 |
441 |
448 val liftN_in_alt_thm = |
442 val liftN_in_alt_thm = |
449 if ! quick_and_dirty then |
443 let |
450 no_thm |
444 val liftN_in = mk_in Asets liftN_sets T; |
451 else |
445 val liftN_in_alt = mk_in (drop n Asets) bnf_sets T; |
452 let |
446 val goal = fold_rev Logic.all Asets (mk_Trueprop_eq (liftN_in, liftN_in_alt)); |
453 val liftN_in = mk_in Asets liftN_sets T; |
447 in |
454 val liftN_in_alt = mk_in (drop n Asets) bnf_sets T; |
448 Skip_Proof.prove lthy [] [] goal (K liftN_in_alt_tac) |> Thm.close_derivation |
455 val goal = fold_rev Logic.all Asets (mk_Trueprop_eq (liftN_in, liftN_in_alt)); |
449 end; |
456 in |
|
457 Skip_Proof.prove lthy [] [] goal (K liftN_in_alt_tac) |> Thm.close_derivation |
|
458 end; |
|
459 |
450 |
460 fun liftN_in_bd_tac _ = |
451 fun liftN_in_bd_tac _ = |
461 mk_liftN_in_bd_tac n liftN_in_alt_thm (in_bd_of_bnf bnf) (bd_Card_order_of_bnf bnf); |
452 mk_liftN_in_bd_tac n liftN_in_alt_thm (in_bd_of_bnf bnf) (bd_Card_order_of_bnf bnf); |
462 fun liftN_map_wpull_tac _ = |
453 fun liftN_map_wpull_tac _ = |
463 mk_map_wpull_tac liftN_in_alt_thm [] (map_wpull_of_bnf bnf); |
454 mk_map_wpull_tac liftN_in_alt_thm [] (map_wpull_of_bnf bnf); |
529 fun permute_bd_card_order_tac _ = rtac (bd_card_order_of_bnf bnf) 1; |
520 fun permute_bd_card_order_tac _ = rtac (bd_card_order_of_bnf bnf) 1; |
530 fun permute_bd_cinfinite_tac _ = rtac (bd_cinfinite_of_bnf bnf) 1; |
521 fun permute_bd_cinfinite_tac _ = rtac (bd_cinfinite_of_bnf bnf) 1; |
531 val permute_set_bd_tacs = permute (map (fn thm => fn _ => rtac thm 1) (set_bd_of_bnf bnf)); |
522 val permute_set_bd_tacs = permute (map (fn thm => fn _ => rtac thm 1) (set_bd_of_bnf bnf)); |
532 |
523 |
533 val permute_in_alt_thm = |
524 val permute_in_alt_thm = |
534 if ! quick_and_dirty then |
525 let |
535 no_thm |
526 val permute_in = mk_in Asets permute_sets T; |
536 else |
527 val permute_in_alt = mk_in (permute_rev Asets) bnf_sets T; |
537 let |
528 val goal = fold_rev Logic.all Asets (mk_Trueprop_eq (permute_in, permute_in_alt)); |
538 val permute_in = mk_in Asets permute_sets T; |
529 in |
539 val permute_in_alt = mk_in (permute_rev Asets) bnf_sets T; |
530 Skip_Proof.prove lthy [] [] goal (K (mk_permute_in_alt_tac src dest)) |
540 val goal = fold_rev Logic.all Asets (mk_Trueprop_eq (permute_in, permute_in_alt)); |
531 |> Thm.close_derivation |
541 in |
532 end; |
542 Skip_Proof.prove lthy [] [] goal (K (mk_permute_in_alt_tac src dest)) |
|
543 |> Thm.close_derivation |
|
544 end; |
|
545 |
533 |
546 fun permute_in_bd_tac _ = |
534 fun permute_in_bd_tac _ = |
547 mk_permute_in_bd_tac src dest permute_in_alt_thm (in_bd_of_bnf bnf) |
535 mk_permute_in_bd_tac src dest permute_in_alt_thm (in_bd_of_bnf bnf) |
548 (bd_Card_order_of_bnf bnf); |
536 (bd_Card_order_of_bnf bnf); |
549 fun permute_map_wpull_tac _ = |
537 fun permute_map_wpull_tac _ = |