Variant tperm_spec x y z : T -> Type :=
| TpermFirst of z = x          : tperm_spec x y z y
| TpermSecond of z = y         : tperm_spec x y z x
| TpermNone of z <> x & z <> y : tperm_spec x y z z.

(* Specifications: *)
Lemma tpermP x y z : tperm_spec x y z (tperm x y z).
End Theory.