Notation fun_of_perm := PermDef.fun_of_perm.
Notation "@ 'perm'" := (@PermDef.perm) (at level 10, format "@ 'perm'").
Notation perm := (@PermDef.perm _ _).
Canonical fun_of_perm_unlock := Unlockable PermDef.fun_of_permE.
Canonical perm_unlock := Unlockable PermDef.permE.
Coercion fun_of_perm : perm_type >-> Funclass.
Section Theory.
Variable T : finType.
Implicit Types (x y : T) (s t : {perm T}) (S : {set T}).

(* Specifications: *)
Lemma permP s t : s =1 t <-> s = t.
Lemma perm_on1 H : perm_on H 1.
Lemma out_perm S u x : perm_on S u -> x \notin S -> u x = x.
Lemma tperm_proof x y : involutive [fun z => z with x |-> y, y |-> x].
Definition tperm x y := perm (can_inj (tperm_proof x y)).