X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;ds=sidebyside;f=matita%2Flibrary%2Fnat%2Ftotient.ma;h=9933490a2dda03f20da09be3124dee5919ec3d8e;hb=9ff984b29ac963eef2f79521ce9dd7cbb9ae2c59;hp=730ec8b56cfc05bad765600ccad3418e5d71dbac;hpb=6c8f66d57aa3da3b91ff6c76442424dfe2eeceaf;p=helm.git diff --git a/matita/library/nat/totient.ma b/matita/library/nat/totient.ma index 730ec8b56..9933490a2 100644 --- a/matita/library/nat/totient.ma +++ b/matita/library/nat/totient.ma @@ -24,7 +24,7 @@ include "nat/iteration2.ma". phi (n) is the number of naturals i (less or equal than n) so then gcd (i,n) = 1. (so this definition considers the values i=1,2,...,n) - sigma_p doesn't work ok the value n (but the first value it works on is (pred n)) + sigma_p doesn't work on the value n (but the first value it works on is (pred n)) but works also on 0. That's not a problem, in fact - if n <> 1, gcd (n,0) <>1 and gcd (n,n) = n <> 1. - if n = 1, then Phi(n) = 1, and (totient n), as defined below, returns 1. @@ -33,7 +33,9 @@ include "nat/iteration2.ma". definition totient : nat \to nat \def \lambda n.sigma_p n (\lambda m. eqb (gcd m n) (S O)) (\lambda m.S O). - +lemma totient1: totient (S(S(S(S(S(S O)))))) = ?. +[|simplify. + theorem totient_times: \forall n,m:nat. (gcd m n) = (S O) \to totient (n*m) = (totient n)*(totient m). intros. @@ -63,7 +65,8 @@ apply (nat_case1 n) [intros.unfold cr_pair. apply (le_to_lt_to_lt ? (pred ((S m2)*(S m1)))) [unfold min. - apply le_min_aux_r + apply transitive_le; + [2: apply le_min_aux_r | skip | apply le_n] |unfold lt. apply (nat_case ((S m2)*(S m1))) [apply le_n|intro.apply le_n] @@ -133,4 +136,4 @@ apply (nat_case1 n) ] ] ] -qed. \ No newline at end of file +qed.