anchor.diff:           |> THEN <| ASM_REWRITE_TAC [MAP; FILTER; o_THM]
            |> THEN <| COND_CASES_TAC
            |> THEN <| REWRITE_TAC [MAP])
  +#else
  +    Sequent([],parse_term @"!P f l. FILTER P (MAP f l) = MAP f (FILTER (P << f) l)")
  +#endif
   
   let MEM_FILTER = 
       prove
  
positive.code:          |> THEN <| ASM_REWRITE_TAC [APPEND])
  
  let FILTER_MAP = 
      prove
          ((parse_term @"!P f l. FILTER P (MAP f l) = MAP f (FILTER (P << f) l)"), 
           GEN_TAC
  
negative.code:          |> THEN <| MESON_TAC [])
  
  let MAP_o = 
  #if BUGGY
      prove
          ((parse_term @"!f:A->B. !g:B->C. !l. MAP (g << f) l = MAP g (MAP f l)"), 
           GEN_TAC
           |> THEN <| GEN_TAC
           |> THEN <| LIST_INDUCT_TAC
           |> THEN <| ASM_REWRITE_TAC [MAP; o_THM])
  #else
      Sequent([],parse_term @"!f:A->B. !g:B->C. !l. MAP (g << f) l = MAP g (MAP f l)")
  #endif
  
  let MAP_EQ = 
      prove
  