(**************************************************************************)
include "sets/sets.ma".
-include "nat/plus.ma". (* tempi biblici neggli include che fa plus.ma *)
+include "nat/plus.ma".
include "nat/compare.ma".
include "nat/minus.ma".
include "datatypes/pairs.ma".
-
+alias symbol "eq" (instance 2) = "leibnitz's equality".
+alias symbol "eq" (instance 1) = "setoid eq".
+alias symbol "eq" = "setoid eq".
+alias symbol "eq" = "setoid1 eq".
alias symbol "eq" = "setoid eq".
alias symbol "eq" = "setoid1 eq".
alias symbol "eq" = "setoid eq".
+alias symbol "eq" = "setoid1 eq".
nrecord partition (A: setoid) : Type[1] ≝
{ support: setoid;
indexes: qpowerclass support;
∀A. ∀P:partition A. ∀n,s.
∀f:isomorphism ?? (Nat_ n) (indexes ? P).
(∀i. isomorphism ?? (Nat_ (s i)) (class ? P (iso_f ???? f i))) →
- (isomorphism ?? (Nat_ (big_plus n (λi.λ_.s i))) A).
- #A; #P; #Sn; ncases Sn
- [ #s; #f; #fi; nlapply (covers ? P); *; #_; #H;
+ (isomorphism ?? (Nat_ (big_plus n (λi.λ_.s i))) (Full_set A)).
+#A; #P; #Sn; ncases Sn
+ [ #s; #f; #fi;
+ ngeneralize in match (covers ? P) in ⊢ ?; *; #_; #H;
(*
nlapply
(big_union_preserves_iso ??? (indexes A P) (Nat_ O) (λx.class ? P x) f);
nelim daemon (* impossibile *)
| #n; #s; #f; #fi; @
[ @
- [ napply (λm.let p ≝ iso_nat_nat_union s m n in iso_f ???? (fi (fst … p)) (snd … p))
+ [ napply (λm.let p ≝ (iso_nat_nat_union s m n) in iso_f ???? (fi (fst … p)) (snd … p))
| #a; #a'; #H; nrewrite < H; napply refl ]
##| #x; #Hx; nwhd; napply I
##| #y; #_;
ngeneralize in match (Hc y I) in ⊢ ?; *; #index; *; #Hi1; #Hi2;
ngeneralize in match (f_sur ???? f ? Hi1) in ⊢ ?; *; #nindex; *; #Hni1; #Hni2;
ngeneralize in match (f_sur ???? (fi nindex) y ?) in ⊢ ?
- [##2: napply (. #‡(†?));##[##3: napply Hni2 |##2: ##skip | nassumption]##]
+ [##2: napply (. #‡(†?));##[##2: napply Hni2 |##1: ##skip | nassumption]##]
*; #nindex2; *; #Hni21; #Hni22;
nletin xxx ≝ (plus (big_plus (minus n nindex) (λi.λ_.s (S (plus i nindex)))) nindex2);
napply (ex_intro … xxx); napply conj
[ napply iso_nat_nat_union_pre [ napply le_S_S_to_le; nassumption | nassumption ]
- ##| nwhd in ⊢ (???%%); napply (.= ?) [ nassumption|##skip]
+ ##| nwhd in ⊢ (???%%); napply (.= ?) [##3: nassumption|##skip]
ngeneralize in match (iso_nat_nat_union_char n s xxx ?) in ⊢ ?
[##2: napply iso_nat_nat_union_pre [ napply le_S_S_to_le; nassumption | nassumption]##]
*; *; #K1; #K2; #K3;
ngeneralize in match (disjoint ? P (iso_f ???? f i1) (iso_f ???? f i1') ???) in ⊢ ?
[##2,3: napply f_closed; nassumption
|##4: napply ex_intro [ napply (iso_f ???? (fi i1) i2) ] napply conj
- [ napply f_closed; nassumption ##| napply (. ?‡#) [##2: nassumption | ##3: ##skip]
+ [ napply f_closed; nassumption ##| napply (. ?‡#) [ nassumption | ##2: ##skip]
nwhd; napply f_closed; nassumption]##]
#E'; ngeneralize in match (? : i1=i1') in ⊢ ?
[##2: napply (f_inj … E'); nassumption
napply sym; nassumption
| nnormalize; napply conj
[ #a; #_; napply I | #a; #_; napply (ex_intro … a); napply conj [ napply I | napply refl]##]
-nqed.
\ No newline at end of file
+nqed.