proposition: Lemma refine_M_hrel_singleton : refines (eq ==> rAC ==> M_hrel) (@singleton A) (@singleton C).
proof: Proof. apply refines_abstr => k k'; rewrite refinesE => <-. apply refines_abstr => e e' ref_e. rewrite /singleton. eapply refines_apply; [|by apply refine_M_hrel_empty]. eapply refines_apply; [|exact ref_e]. eapply refines_apply; [apply refine_M_hrel_add|by rewrite refinesE]. Qed.
imports: ZArith NArith FMaps FMapAVL mathcomp(ssreflect ssrfun ssrbool eqtype ssrnat seq) mathcomp(choice finfun tuple fintype ssralg bigop) CoqEAL(hrel) CoqEAL(refinements) CoqEAL(param binord binnat) CoqEAL(seqmx ) CoqEAL(ssrcomplements) mathcomp.multinomials(mpoly freeg)