}.
ndefinition proofs: CProp → setoid.
-#P; napply (mk_setoid …);
+#P; napply mk_setoid;
##[ napply P;
##| #x; #y; napply True;
##|##*: nwhd; nrepeat (#_); napply I;
notation "hbox(a break ⇒ b)" right associative with precedence 20 for @{ 'Imply $a $b }.
ndefinition function_space_setoid: setoid → setoid → setoid.
- #A; #B; napply (mk_setoid …);
+ #A; #B; napply mk_setoid;
##[ napply (function_space A B);
##| #f; #f1; napply (∀a:A. proofs (eq … (f a) (f1 a)));
-##| nwhd; #x; #a;
- napply (f_ok … x …); (* QUI!! *)
-(* unfold carr; unfold proofs; simplify;
- apply (refl A)
- | simplify;
- intros;
- unfold carr; unfold proofs; simplify;
- apply (sym B);
- apply (f a)
- | simplify;
- intros;
- unfold carr; unfold proofs; simplify;
- apply (trans B ? (y a));
- [ apply (f a)
- | apply (f1 a)]]
-qed.
+##| nnormalize; #x; #a; napply (f_ok … x); napply refl
+ | nnormalize; #x; #y; #H; #a; napply sym; napply H
+ | nnormalize; #z; #x; #y; #H1; #H2; #a;
+ napply trans; ##[##2: napply H1 | ##skip | napply H2]##]
+nqed.
nrecord isomorphism (A,B: setoid): Type ≝
{ map1:> function_space_setoid A B;