equal
deleted
inserted
replaced
121 end |
121 end |
122 |
122 |
123 (* General reduction pair application *) |
123 (* General reduction pair application *) |
124 fun rem_inv_img ctxt = |
124 fun rem_inv_img ctxt = |
125 let |
125 let |
126 val unfold_tac = LocalDefs.unfold_tac ctxt |
126 val unfold_tac = Local_Defs.unfold_tac ctxt |
127 in |
127 in |
128 rtac @{thm subsetI} 1 |
128 rtac @{thm subsetI} 1 |
129 THEN etac @{thm CollectE} 1 |
129 THEN etac @{thm CollectE} 1 |
130 THEN REPEAT (etac @{thm exE} 1) |
130 THEN REPEAT (etac @{thm exE} 1) |
131 THEN unfold_tac @{thms inv_image_def} |
131 THEN unfold_tac @{thms inv_image_def} |
257 else if qs = lq then rtac wmsI2'' 1 |
257 else if qs = lq then rtac wmsI2'' 1 |
258 else rtac wmsI1 1) |
258 else rtac wmsI1 1) |
259 THEN mset_pwleq_tac 1 |
259 THEN mset_pwleq_tac 1 |
260 THEN EVERY (map2 (less_proof false) qs ps) |
260 THEN EVERY (map2 (less_proof false) qs ps) |
261 THEN (if strict orelse qs <> lq |
261 THEN (if strict orelse qs <> lq |
262 then LocalDefs.unfold_tac ctxt set_of_simps |
262 then Local_Defs.unfold_tac ctxt set_of_simps |
263 THEN steps_tac MAX true |
263 THEN steps_tac MAX true |
264 (subtract (op =) qs lq) (subtract (op =) ps lp) |
264 (subtract (op =) qs lq) (subtract (op =) ps lp) |
265 else all_tac) |
265 else all_tac) |
266 end |
266 end |
267 in |
267 in |
288 THEN (rtac @{thm reduction_pair_lemma} 1) |
288 THEN (rtac @{thm reduction_pair_lemma} 1) |
289 THEN (rtac @{thm rp_inv_image_rp} 1) |
289 THEN (rtac @{thm rp_inv_image_rp} 1) |
290 THEN (rtac (order_rpair ms_rp label) 1) |
290 THEN (rtac (order_rpair ms_rp label) 1) |
291 THEN PRIMITIVE (instantiate' [] [SOME level_mapping]) |
291 THEN PRIMITIVE (instantiate' [] [SOME level_mapping]) |
292 THEN unfold_tac @{thms rp_inv_image_def} (simpset_of ctxt) |
292 THEN unfold_tac @{thms rp_inv_image_def} (simpset_of ctxt) |
293 THEN LocalDefs.unfold_tac ctxt |
293 THEN Local_Defs.unfold_tac ctxt |
294 (@{thms split_conv} @ @{thms fst_conv} @ @{thms snd_conv}) |
294 (@{thms split_conv} @ @{thms fst_conv} @ @{thms snd_conv}) |
295 THEN REPEAT (SOMEGOAL (resolve_tac [@{thm Un_least}, @{thm empty_subsetI}])) |
295 THEN REPEAT (SOMEGOAL (resolve_tac [@{thm Un_least}, @{thm empty_subsetI}])) |
296 THEN EVERY (map (prove_lev true) sl) |
296 THEN EVERY (map (prove_lev true) sl) |
297 THEN EVERY (map (prove_lev false) (subtract (op =) sl (0 upto length cs - 1)))) |
297 THEN EVERY (map (prove_lev false) (subtract (op =) sl (0 upto length cs - 1)))) |
298 end |
298 end |