(* *)
(**************************************************************************)
-set "baseuri" "cic:/matita/nat/count".
-
include "nat/relevant_equations.ma".
include "nat/sigma_and_pi.ma".
include "nat/permutation.ma".
sigma (S (p+n)) f m = sigma p (\lambda x.(f ((S n) + x))) m + sigma n f m.
intros. elim p.
simplify.
-rewrite < (sym_plus n m).reflexivity.
+reflexivity.
simplify.
rewrite > assoc_plus in \vdash (? ? ? %).
rewrite < H.
intro.elim n.simplify.
rewrite < plus_n_O.
apply eq_sigma.intros.reflexivity.
-change with
-(sigma (m+(S n1)*(S m)) f O =
-sigma m (\lambda a.(f ((S(n1+O))*(S m)+a)) + (sigma n1 (\lambda b.f (b*(S m)+a)) O)) O).
+simplify.
rewrite > sigma_f_g.
rewrite < plus_n_O.
rewrite < H.
(sigma m (\lambda n.(bool_to_nat (f2 n))*(bool_to_nat (f1 i))) O)).
reflexivity.
apply sym_eq. apply sigma_times.
-change in match (pred (S n)) with n.
-change in match (pred (S m)) with m.
+simplify.
apply sym_eq. apply sigma_times.
unfold permut.
split.