src/HOL/Induct/LFilter.ML
changeset 7499 23e090051cb8
parent 6141 a6922171b396
equal deleted inserted replaced
7498:1e5585fd3632 7499:23e090051cb8
    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";