pub fn commute<A: Prop, B: Prop>(Q: Q<A, B>) -> Q<B, A>
Symmetry (a ~~ b) => (b ~~ a).
(a ~~ b) => (b ~~ a)