ASM_CASES_TAC : term -> tactic
               A ?-  t
   ================================  ASM_CASES_TAC u
    A u {u} ?- t   A u {~u} ?- t
  - let val u = Term `u:bool`
        val g = Term `(P:bool -> bool) u`
    in
    ASM_CASES_TAC u ([],g)
    end;
    ([([`u`],  `P u`), 
      ([`~u`], `P u`)], fn) : tactic_result