equal
deleted
inserted
replaced
58 "(option_map f xo = Some y) = (? z. xo = Some z & f z = y)"; |
58 "(option_map f xo = Some y) = (? z. xo = Some z & f z = y)"; |
59 by (asm_full_simp_tac (simpset() addsplits [option.split]) 1); |
59 by (asm_full_simp_tac (simpset() addsplits [option.split]) 1); |
60 qed "option_map_eq_Some"; |
60 qed "option_map_eq_Some"; |
61 AddIffs[option_map_eq_Some]; |
61 AddIffs[option_map_eq_Some]; |
62 |
62 |
|
63 Goal |
|
64 "option_map f o sum_case g h = sum_case (option_map f o g) (option_map f o h)"; |
|
65 by (rtac ext 1); |
|
66 by (simp_tac (simpset() addsplits [sum.split]) 1); |
|
67 qed "option_map_o_sum_case"; |
|
68 Addsimps [option_map_o_sum_case]; |
|
69 |
63 |
70 |
64 section "o2s"; |
71 section "o2s"; |
65 |
72 |
66 Goal "[| !x:o2s A. P x; A = Some x |] ==> P x"; |
73 Goal "[| !x:o2s A. P x; A = Some x |] ==> P x"; |
67 by Auto_tac; |
74 by Auto_tac; |