]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/matita/library/nat/totient.ma
ocaml 3.09 transition
[helm.git] / helm / matita / library / nat / totient.ma
index 7fc8d95ee15f9bd6f169a774166836087c4d1c00..24c3920ed82571324c2977a7be798b492fbf43e7 100644 (file)
@@ -31,22 +31,22 @@ qed.
 theorem totient_times: \forall n,m:nat. (gcd m n) = (S O) \to
 totient (n*m) = (totient n)*(totient m).
 intro.
-apply nat_case n.
+apply (nat_case n).
 intro.simplify.intro.reflexivity.
-intros 2.apply nat_case m1.
+intros 2.apply (nat_case m1).
 rewrite < sym_times.
-rewrite < sym_times (totient O).
+rewrite < (sym_times (totient O)).
 simplify.intro.reflexivity.
 intros.
 unfold totient.
-apply count_times m m2 ? ? ? 
-(\lambda b,a. cr_pair (S m) (S m2) a b) (\lambda x. x \mod (S m)) (\lambda x. x \mod (S m2)).
+apply (count_times m m2 ? ? ? 
+(\lambda b,a. cr_pair (S m) (S m2) a b) (\lambda x. x \mod (S m)) (\lambda x. x \mod (S m2))).
 intros.unfold cr_pair.
-apply le_to_lt_to_lt ? (pred ((S m)*(S m2))).
+apply (le_to_lt_to_lt ? (pred ((S m)*(S m2)))).
 unfold min.
 apply le_min_aux_r.
-change with (S (pred ((S m)*(S m2)))) \le ((S m)*(S m2)).
-apply nat_case ((S m)*(S m2)).apply le_n.
+change with ((S (pred ((S m)*(S m2)))) \le ((S m)*(S m2))).
+apply (nat_case ((S m)*(S m2))).apply le_n.
 intro.apply le_n.
 intros.
 generalize in match (mod_cr_pair (S m) (S m2) a b H1 H2 H).
@@ -64,4 +64,39 @@ intro.
 rewrite > eq_to_eqb_true.
 rewrite > eq_to_eqb_true.
 reflexivity.
-rewrite < H4.
\ No newline at end of file
+rewrite < H4.
+rewrite > sym_gcd.
+rewrite > gcd_mod.
+apply (gcd_times_SO_to_gcd_SO ? ? (S m2)).
+unfold lt.apply le_S_S.apply le_O_n.
+unfold lt.apply le_S_S.apply le_O_n.
+assumption.
+unfold lt.apply le_S_S.apply le_O_n.
+rewrite < H5.
+rewrite > sym_gcd.
+rewrite > gcd_mod.
+apply (gcd_times_SO_to_gcd_SO ? ? (S m)).
+unfold lt.apply le_S_S.apply le_O_n.
+unfold lt.apply le_S_S.apply le_O_n.
+rewrite > sym_times.
+assumption.
+unfold lt.apply le_S_S.apply le_O_n.
+intro.
+apply eqb_elim.
+intro.apply eqb_elim.
+intro.apply False_ind.
+apply H6.
+apply eq_gcd_times_SO.
+unfold lt.apply le_S_S.apply le_O_n.
+unfold lt.apply le_S_S.apply le_O_n.
+rewrite < gcd_mod.
+rewrite > H4.
+rewrite > sym_gcd.assumption.
+unfold lt.apply le_S_S.apply le_O_n.
+rewrite < gcd_mod.
+rewrite > H5.
+rewrite > sym_gcd.assumption.
+unfold lt.apply le_S_S.apply le_O_n.
+intro.reflexivity.
+intro.reflexivity.
+qed.
\ No newline at end of file