equal
deleted
inserted
replaced
20 "(dlift f`l = Def y) = (? x. l = Def x & f`(Discr x) = Def y)"; |
20 "(dlift f`l = Def y) = (? x. l = Def x & f`(Discr x) = Def y)"; |
21 by (simp_tac (simpset() addsplits [split_lift_case]) 1); |
21 by (simp_tac (simpset() addsplits [split_lift_case]) 1); |
22 qed "dlift_is_Def"; |
22 qed "dlift_is_Def"; |
23 Addsimps [dlift_is_Def]; |
23 Addsimps [dlift_is_Def]; |
24 |
24 |
25 Goal "!!c. <c,s> -c-> t ==> D c`(Discr s) = (Def t)"; |
25 Goal "<c,s> -c-> t ==> D c`(Discr s) = (Def t)"; |
26 by (etac evalc.induct 1); |
26 by (etac evalc.induct 1); |
27 by (ALLGOALS Asm_simp_tac); |
27 by (ALLGOALS Asm_simp_tac); |
28 by (ALLGOALS (stac fix_eq THEN' Asm_full_simp_tac)); |
28 by (ALLGOALS (stac fix_eq THEN' Asm_full_simp_tac)); |
29 qed_spec_mp "eval_implies_D"; |
29 qed_spec_mp "eval_implies_D"; |
30 |
30 |