Section Encode_pair.
Inductive sigPair (sigX sigY : Type) : Type :=
| sigPair_X (s : sigX)
| sigPair_Y (s : sigY)
.
Arguments sigPair_X {sigX sigY}. Arguments sigPair_Y {sigX sigY}.
Global Instance Retract_sigPair_X (sigX sigY tau : Type) (f : Retract sigX tau) : Retract sigX (sigPair tau sigY).
Variable (sigX sigY: Type) (X Y: Type) (cX : codable sigX X) (cY : codable sigY Y).
Global Instance Encode_pair : codable (sigPair sigX sigY) (X*Y) :=
{|
encode '(x,y) := Encode_map _ _ x ++ Encode_map _ _ y;
|}.
Definition Encode_pair_size (p : X * Y) := let (x, y) := p in size x + size y.

Lemma Encode_pair_hasSize p : size Encode_pair p = Encode_pair_size p.