equal
deleted
inserted
replaced
13 simproc_setup defined_Bex ("EX x:A. P(x) & Q(x)") = {* |
13 simproc_setup defined_Bex ("EX x:A. P(x) & Q(x)") = {* |
14 let |
14 let |
15 val unfold_bex_tac = unfold_tac @{thms Bex_def}; |
15 val unfold_bex_tac = unfold_tac @{thms Bex_def}; |
16 fun prove_bex_tac ss = unfold_bex_tac ss THEN Quantifier1.prove_one_point_ex_tac; |
16 fun prove_bex_tac ss = unfold_bex_tac ss THEN Quantifier1.prove_one_point_ex_tac; |
17 in |
17 in |
18 fn _ => fn ss => fn ct => |
18 fn _ => fn ss => Quantifier1.rearrange_bex (prove_bex_tac ss) ss o term_of |
19 Quantifier1.rearrange_bex prove_bex_tac (theory_of_cterm ct) ss (term_of ct) |
|
20 end |
19 end |
21 *} |
20 *} |
22 |
21 |
23 simproc_setup defined_Ball ("ALL x:A. P(x) --> Q(x)") = {* |
22 simproc_setup defined_Ball ("ALL x:A. P(x) --> Q(x)") = {* |
24 let |
23 let |
25 val unfold_ball_tac = unfold_tac @{thms Ball_def}; |
24 val unfold_ball_tac = unfold_tac @{thms Ball_def}; |
26 fun prove_ball_tac ss = unfold_ball_tac ss THEN Quantifier1.prove_one_point_all_tac; |
25 fun prove_ball_tac ss = unfold_ball_tac ss THEN Quantifier1.prove_one_point_all_tac; |
27 in |
26 in |
28 fn _ => fn ss => fn ct => |
27 fn _ => fn ss => Quantifier1.rearrange_ball (prove_ball_tac ss) ss o term_of |
29 Quantifier1.rearrange_ball prove_ball_tac (theory_of_cterm ct) ss (term_of ct) |
|
30 end |
28 end |
31 *} |
29 *} |
32 |
30 |
33 |
31 |
34 (** Lemmas for showing that <a,b> uniquely determines a and b **) |
32 (** Lemmas for showing that <a,b> uniquely determines a and b **) |