fact: Definition commute {A B} (ma : M A) (mb : M B) := bind ma (fun a => bind mb (fun b => ret ⟨a,b⟩)) = bind mb (fun b => bind ma (fun a => ret ⟨a,b⟩)).
imports: Coq(ssreflect ssrfun ssrbool) Coq(Relation_Definitions Morphisms) Mon(SPropBase SPropMonadicStructures MonadExamples SpecificationMonads DijkstraMonadExamples) Relational(OrderEnrichedCategory OrderEnrichedRelativeMonadExamples)