Global Instance pair_Serializer : Serializer (A * B).Definition sum_serialize (x : A + B) : IOStreamWriter.t :=
    match x with
    | inl a => IOStreamWriter.append (fun _ => serialize true)
                             (fun _ => serialize a)
    | inr b => IOStreamWriter.append (fun _ => serialize false)
                             (fun _ => serialize b)
    end.

(* Specifications: *)
Lemma sum_serialize_deserialize_id : serialize_deserialize_id_spec sum_serialize sum_deserialize.