(P : (forall i, A i / R i) -> Type) `{!forall g, IsHSet (P g)} (a : forall (f : forall i, A i), P (fun i => class_of (R i) (f i))) (E : forall (f f' : forall i, A i) (r : forall i, R i (f i) (f' i)), qglue_forall f f' r # a f = a f') (f : forall i, A i) : choose_quotient_ind P a E (fun i => class_of (R i) (f i)) = a f. Proof. refine (Trunc_ind (fun a => (_ a).1 = _) _ _). cbn. intros [f' p]. rewrite transport_sigma. set (p' := fun x => related_quotient_paths (R x) _ _ (p x)). assert (p = (fun i => qglue (p' i))) as pE. - funext x. apply hset_path2. - rewrite pE. apply E. Qed.
Require Import