anchor.diff:           |> THEN <| ASM_REWRITE_TAC [APPEND])
   
   let FILTER_MAP = 
  +#if BUGGY
       prove
           ((parse_term @"!P f l. FILTER P (MAP f l) = MAP f (FILTER (P << f) l)"), 
            GEN_TAC
  
positive.code:          |> THEN <| MESON_TAC [])
  
  let MAP_o = 
      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])
  
  let MAP_EQ = 
      prove
  
negative.code:          |> THEN <| ASM_REWRITE_TAC [LENGTH; REPLICATE])
  
  let EX_MAP = 
  #if BUGGY
      prove
          ((parse_term @"!P f l. EX P (MAP f l) <=> EX (P << f) l"), 
           GEN_TAC
           |> THEN <| GEN_TAC
           |> THEN <| LIST_INDUCT_TAC
           |> THEN <| ASM_REWRITE_TAC [MAP; EX; o_THM])
  #else
      Sequent([],parse_term @"!P f l. EX P (MAP f l) <=> EX (P << f) l")
  #endif
  
  let EXISTS_EX = 
      prove
  