proposition: Lemma refine_snd : forall {A B: Type} (P: B -> Prop), refine { pair | P (snd pair) } (_fst <- Pick (fun (x: A) => True); _snd <- Pick (fun (y: B) => P y); ret (_fst, _snd)).
proof: Proof. t_refine. Qed.
imports: Coq.Strings.String Coq.Sets.Ensembles Coq.Bool.Bool Fiat.Common Fiat.Common.BoolFacts Fiat.Common.LogicFacts Fiat.Computation.Core Fiat.Computation.Monad Fiat.Computation.SetoidMorphisms Fiat.Computation.Refinements.Tactics