]> matita.cs.unibo.it Git - helm.git/blobdiff - matita/library/nat/totient.ma
...
[helm.git] / matita / library / nat / totient.ma
index 730ec8b56cfc05bad765600ccad3418e5d71dbac..9933490a2dda03f20da09be3124dee5919ec3d8e 100644 (file)
@@ -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.