let add s t =
  match s, t with
    | Zero, _ -> t
    | _, Zero -> s
    | F, _ -> F
    | _, F -> F
    | T, _ -> T
    | _, T -> T
    | Pos, (Pos | Nonneg-> Pos
    | Pos, (Neg | Nonpos-> T
    | Neg, (Neg | Nonpos-> Neg
    | Neg, (Pos | Nonneg-> T
    | NonnegNonneg -> Nonneg
    | NonnegPos -> Pos
    | Nonneg, (Neg | Nonpos-> T
    | NonposNonpos -> Nonpos
    | NonposNeg -> Neg
    | Nonpos, (Pos | Nonneg-> T