(* Call of apply on <-> failed because of evars in elimination predicate *)
Generalizable Variables patch.
Class Patch (patch : Type) := {
commute : patch -> patch -> Prop
}.
Parameter flip : forall	`{patchInstance	: Patch	patch}
{a b : patch},
commute a b <-> commute b a.

Lemma Foo : forall `{patchInstance : Patch patch}
{a b : patch},
(commute a b)
-> True.