Added refinement

This commit is contained in:
Niels van der Weide 2017-10-09 14:00:16 +02:00
parent 01d0908b8a
commit 97002d119b
1 changed files with 29 additions and 1 deletions

View File

@ -348,4 +348,32 @@ Section properties.
via_quotient.
Defined.
End properties.
End properties.
Section refinement.
Variable (T S : Type -> Type).
Variable (f : forall {A : Type}, T A -> FSet A).
Variable (g : forall {A : Type}, S A -> FSet A).
Context `{sets T f} `{sets S g}.
Theorem transfer
(A B : Type)
`{IsHSet B}
(h : T A -> B)
(hresp : forall x y : T A, set_eq f x y -> h x = h y)
: S A -> B.
Proof.
intros X.
simple refine (@quotient_rec (T A) (set_eq f) _ _ _ h hresp _).
pose (quotient_iso (f A))^-1.
apply q.
apply (quotient_iso (g A) (class_of _ X)).
Defined.
Definition refine
(A B : Type)
`{IsHSet B}
(h : FSet A -> B)
: T A -> B
:= fun X => h(quotient_iso (f A) (class_of _ X)).
End refinement.