type a, b;
free type Pair ::= Pair (fst : a; snd : b)
op f (a : a; b: b) : Pair = Pair (a, b)
op g : Pair ->? a
program g(Pair (a, b)) = a