include "nat/minus.ma".
include "datatypes/pairs.ma".
-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".
-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".
[##2: napply ad_hoc9; nassumption] *; *; #Hrec1; #Hrec2; #Hrec3; napply conj
[##2: nassumption
|napply conj
- [napply (eq_rect_CProp0_r ?? (λx.λ_. m = x + snd … (iso_nat_nat_union s (m - s (S n')) n')) ??
- (split_big_plus
- (S n' - fst … (iso_nat_nat_union s (m - s (S n')) n'))
- (n' - fst … (iso_nat_nat_union s (m - s (S n')) n'))
- (λi.λ_.s (S (i + fst … (iso_nat_nat_union s (m - s (S n')) n'))))?))
- [##2: napply ad_hoc11]
- napply (eq_rect_CProp0_r ?? (λx.λ_. ? = ? + big_plus x (λ_.λ_:? < x.?) + ?)
- ?? (ad_hoc12 n' (fst … (iso_nat_nat_union s (m - s (S n')) n')) ?))
- [##2: nassumption]
- nwhd in ⊢ (???(?(??%)?));
- nrewrite > (ad_hoc13 n' (fst … (iso_nat_nat_union s (m - s (S n')) n')) ?)
- [##2: nassumption]
+ [nrewrite > (split_big_plus …); ##[##2:napply ad_hoc11;##|##3:##skip]
+ nrewrite > (ad_hoc12 …); ##[##2: nassumption]
+ nwhd in ⊢ (????(?(??%)?));
+ nrewrite > (ad_hoc13 …);##[##2: nassumption]
napply ad_hoc14 [ napply not_lt_to_le; nassumption ]
nwhd in ⊢ (???(?(??%)?));
- napply (eq_rect_CProp0_r ?? (λx.λ_. ? = x + ?) ??
- (plus_n_O (big_plus (n' - fst … (iso_nat_nat_union s (m - s (S n')) n'))
- (λi.λ_.s (S (i + fst … (iso_nat_nat_union s (m - s (S n')) n')))))));
- nassumption
- | napply le_S; nassumption ]##]##]##]
+ nrewrite > (plus_n_O …);
+ nassumption;
+ ##| napply le_S; nassumption ]##]##]##]
nqed.
ntheorem iso_nat_nat_union_pre:
nrewrite > (split_big_plus (S n) (S i1) (λi.λ_.s i) ?)
[##2: napply le_to_le_S_S; nassumption]
napply ad_hoc15
- [ nrewrite > (minus_S_S n i1 …); napply big_plus_preserves_ext; #i; #_;
+ [ nwhd in ⊢ (???(?%?));
+
+ napply (eq_rect_CProp0_r nat (n - i1) (λx.λy.?) ?? (minus_S_S …)); STOP
+
+ nrewrite > (minus_S_S n i1); napply big_plus_preserves_ext; #i; #_;
nrewrite > (plus_n_S i i1); napply refl
| nrewrite > (split_big_plus (S i1) i1 (λi.λ_.s i) ?) [##2: napply le_S; napply le_n]
napply ad_hoc16; nrewrite > (minus_S i1); nnormalize; nrewrite > (plus_n_O (s i1) …);
∀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))) (Full_set A)).
- #A; #P; #Sn; ncases Sn
+ STOP #A; #P; #Sn; ncases Sn
[ #s; #f; #fi;
ngeneralize in match (covers ? P) in ⊢ ?; *; #_; #H;
(*