122 by (split_tac [expand_if] 1); |
119 by (split_tac [expand_if] 1); |
123 by (Blast_tac 1); |
120 by (Blast_tac 1); |
124 qed "if_image_distrib"; |
121 qed "if_image_distrib"; |
125 Addsimps[if_image_distrib]; |
122 Addsimps[if_image_distrib]; |
126 |
123 |
|
124 val prems= goal thy "[|M = N; !!x. x:N ==> f x = g x|] ==> f``M = g``N"; |
|
125 by (rtac set_ext 1); |
|
126 by (simp_tac (simpset() addsimps image_def::prems) 1); |
|
127 qed "image_cong"; |
|
128 |
127 |
129 |
128 section "Int"; |
130 section "Int"; |
129 |
131 |
130 goal thy "A Int A = A"; |
132 goal thy "A Int A = A"; |
131 by (Blast_tac 1); |
133 by (Blast_tac 1); |
678 ["(ALL x:A. P x | Q) = ((ALL x:A. P x) | Q)", |
683 ["(ALL x:A. P x | Q) = ((ALL x:A. P x) | Q)", |
679 "(ALL x:A. P | Q x) = (P | (ALL x:A. Q x))", |
684 "(ALL x:A. P | Q x) = (P | (ALL x:A. Q x))", |
680 "(ALL x:A. P --> Q x) = (P --> (ALL x:A. Q x))", |
685 "(ALL x:A. P --> Q x) = (P --> (ALL x:A. Q x))", |
681 "(ALL x:A. P x --> Q) = ((EX x:A. P x) --> Q)", |
686 "(ALL x:A. P x --> Q) = ((EX x:A. P x) --> Q)", |
682 "(ALL x:{}. P x) = True", |
687 "(ALL x:{}. P x) = True", |
|
688 "(ALL x:UNIV. P x) = (ALL x. P x)", |
683 "(ALL x:insert a B. P x) = (P(a) & (ALL x:B. P x))", |
689 "(ALL x:insert a B. P x) = (P(a) & (ALL x:B. P x))", |
684 "(ALL x:Union(A). P x) = (ALL y:A. ALL x:y. P x)", |
690 "(ALL x:Union(A). P x) = (ALL y:A. ALL x:y. P x)", |
685 "(ALL x:Collect Q. P x) = (ALL x. Q x --> P x)", |
691 "(ALL x:Collect Q. P x) = (ALL x. Q x --> P x)", |
686 "(ALL x:f``A. P x) = (ALL x:A. P(f x))", |
692 "(ALL x:f``A. P x) = (ALL x:A. P(f x))", |
687 "(~(ALL x:A. P x)) = (EX x:A. ~P x)"]; |
693 "(~(ALL x:A. P x)) = (EX x:A. ~P x)"]; |
691 |
697 |
692 val bex_simps = map prover |
698 val bex_simps = map prover |
693 ["(EX x:A. P x & Q) = ((EX x:A. P x) & Q)", |
699 ["(EX x:A. P x & Q) = ((EX x:A. P x) & Q)", |
694 "(EX x:A. P & Q x) = (P & (EX x:A. Q x))", |
700 "(EX x:A. P & Q x) = (P & (EX x:A. Q x))", |
695 "(EX x:{}. P x) = False", |
701 "(EX x:{}. P x) = False", |
|
702 "(EX x:UNIV. P x) = (EX x. P x)", |
696 "(EX x:insert a B. P x) = (P(a) | (EX x:B. P x))", |
703 "(EX x:insert a B. P x) = (P(a) | (EX x:B. P x))", |
697 "(EX x:Union(A). P x) = (EX y:A. EX x:y. P x)", |
704 "(EX x:Union(A). P x) = (EX y:A. EX x:y. P x)", |
698 "(EX x:Collect Q. P x) = (EX x. Q x & P x)", |
705 "(EX x:Collect Q. P x) = (EX x. Q x & P x)", |
699 "(EX x:f``A. P x) = (EX x:A. P(f x))", |
706 "(EX x:f``A. P x) = (EX x:A. P(f x))", |
700 "(~(EX x:A. P x)) = (ALL x:A. ~P x)"]; |
707 "(~(EX x:A. P x)) = (ALL x:A. ~P x)"]; |