equal
deleted
inserted
replaced
45 val major::prems = |
45 val major::prems = |
46 Goal "[| l: Domain (findRel p); \ |
46 Goal "[| l: Domain (findRel p); \ |
47 \ !!x l'. [| (l, LCons x l') : findRel p; p x |] ==> Q \ |
47 \ !!x l'. [| (l, LCons x l') : findRel p; p x |] ==> Q \ |
48 \ |] ==> Q"; |
48 \ |] ==> Q"; |
49 by (rtac (major RS DomainE) 1); |
49 by (rtac (major RS DomainE) 1); |
50 by (forward_tac [findRel_imp_LCons] 1); |
50 by (ftac findRel_imp_LCons 1); |
51 by (REPEAT (eresolve_tac [exE,conjE] 1)); |
51 by (REPEAT (eresolve_tac [exE,conjE] 1)); |
52 by (hyp_subst_tac 1); |
52 by (hyp_subst_tac 1); |
53 by (REPEAT (ares_tac prems 1)); |
53 by (REPEAT (ares_tac prems 1)); |
54 qed "Domain_findRelE"; |
54 qed "Domain_findRelE"; |
55 |
55 |
329 by (case_tac "lmap f l : Domain (findRel p)" 1); |
329 by (case_tac "lmap f l : Domain (findRel p)" 1); |
330 by (subgoal_tac "l ~: Domain (findRel(%x. p (f x)))" 2); |
330 by (subgoal_tac "l ~: Domain (findRel(%x. p (f x)))" 2); |
331 by (blast_tac (claset() addIs [findRel_lmap_Domain]) 3); |
331 by (blast_tac (claset() addIs [findRel_lmap_Domain]) 3); |
332 by (Asm_simp_tac 2); |
332 by (Asm_simp_tac 2); |
333 by (etac Domain_findRelE 1); |
333 by (etac Domain_findRelE 1); |
334 by (forward_tac [lmap_LCons_findRel] 1); |
334 by (ftac lmap_LCons_findRel 1); |
335 by (Clarify_tac 1); |
335 by (Clarify_tac 1); |
336 by (Asm_simp_tac 1); |
336 by (Asm_simp_tac 1); |
337 qed "lfilter_lmap"; |
337 qed "lfilter_lmap"; |