Definition fcombiner (A : Type) : Type :=
    @combiner S JS (T1 A) (T2 A).Definition fcombiner_fmap (A B : Type) (f: A -> B) (g: B -> A)
    (fa : fcombiner A) : fcombiner B :=
      match fa with
        | CEmpty => CEmpty
        | CPart sh rs => CPart sh (fmap T1 f g rs)
        | CFull trs => CFull (fmap T2 f g trs)
      end.

(* Specifications: *)
Lemma ff_combiner : functorFacts fcombiner fcombiner_fmap.