nrecord magma_morphism_type (A,B: magma_type) : Type ≝
{ mmcarr:1> A → B;
- mmprop: ∀x,y. mmcarr (op ? x y) = op ? (mmcarr x) (mmcarr y)
+ mmprop: ∀x,y. mmcarr (op … x y) = op … (mmcarr x) (mmcarr y)
}.
nrecord magma_morphism (A) (B) (Ma: magma A) (Mb: magma B) : Type ≝
λA,B,f,Sa. {y | ∃x. x ∈ Sa ∧ f x = y}.
ndefinition mm_image:
- ∀A,B. ∀Ma: magma A. ∀Mb: magma B. magma_morphism ?? Ma Mb → magma B.
+ ∀A,B. ∀Ma: magma A. ∀Mb: magma B. magma_morphism … Ma Mb → magma B.
#A; #B; #Ma; #Mb; #f;
napply (mk_magma …)
[ napply (image … f Ma)
λA,B,f,Sb. {x | ∃y. y ∈ Sb ∧ f x = y}.
ndefinition mm_counter_image:
- ∀A,B. ∀Ma: magma A. ∀Mb: magma B. magma_morphism ?? Ma Mb → magma A.
+ ∀A,B. ∀Ma: magma A. ∀Mb: magma B. magma_morphism … Ma Mb → magma A.
#A; #B; #Ma; #Mb; #f;
napply (mk_magma …)
[ napply (counter_image … f Mb)
nrecord setoid : Type[1] ≝
{ carr:> Type;
eq: carr → carr → CProp;
- refl: reflexive ? eq;
- sym: symmetric ? eq;
- trans: transitive ? eq
+ refl: reflexive … eq;
+ sym: symmetric … eq;
+ trans: transitive … eq
}.
ndefinition proofs: CProp → setoid.
-#P; napply (mk_setoid ?????);
+#P; napply (mk_setoid …);
##[ napply P;
##| #x; #y; napply True;
##|##*: nwhd; nrepeat (#_); napply I;
nrecord function_space (A,B: setoid): Type ≝
{ f:1> A → B;
- f_ok: ∀a,a':A. proofs (eq ? a a') → proofs (eq ? (f a) (f a'))
+ f_ok: ∀a,a':A. proofs (eq … a a') → proofs (eq … (f a) (f a'))
}.
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)));
+##| #f; #f1; napply (∀a:A. proofs (eq … (f a) (f1 a)));
##| nwhd; #x; #a;
- napply (f_ok ? ? x ? ? ?); (* QUI!! *)
+ napply (f_ok … x …); (* QUI!! *)
(* unfold carr; unfold proofs; simplify;
apply (refl A)
| simplify;