(* channel *)
  Definition out_channel := list byte.Definition in_channel := list byte.Definition out_channel_wrap s := unwrap s.Definition channel_send (o : out_channel) : in_channel := o.Definition in_channel_unwrap (i : in_channel) : list byte := i.

Theorem channel_wrap_unwrap : forall x, in_channel_unwrap (channel_send (out_channel_wrap x)) = unwrap x.