theorem divides_max_prime_factor_n:
\forall n:nat. (S O) < n
\to nth_prime (max_prime_factor n) \divides n.
-intros; apply divides_b_true_to_divides;
-[ apply lt_O_nth_prime_n;
-| apply (f_max_true (\lambda p:nat.eqb (n \mod (nth_prime p)) O) n);
- cut (\exists i. nth_prime i = smallest_factor n);
+intros.
+apply divides_b_true_to_divides.
+apply (f_max_true (\lambda p:nat.eqb (n \mod (nth_prime p)) O) n);
+cut (\exists i. nth_prime i = smallest_factor n);
[ elim Hcut.
apply (ex_intro nat ? a);
split;
(*
apply prime_to_nth_prime;
apply prime_smallest_factor_n;
- assumption; *) ] ]
+ assumption; *) ]
qed.
theorem divides_to_max_prime_factor : \forall n,m. (S O) < n \to O < m \to n \divides m \to
*)
qed.
+theorem divides_to_max_prime_factor1 : \forall n,m. O < n \to O < m \to n \divides m \to
+max_prime_factor n \le max_prime_factor m.
+intros 3.
+elim (le_to_or_lt_eq ? ? H)
+ [apply divides_to_max_prime_factor
+ [assumption|assumption|assumption]
+ |rewrite < H1.
+ simplify.apply le_O_n.
+ ]
+qed.
+
theorem p_ord_to_lt_max_prime_factor: \forall n,p,q,r. O < n \to
p = max_prime_factor n \to
(pair nat nat q r) = p_ord n (nth_prime p) \to
*)
|letin z \def le.
cut(pair nat nat q r=p_ord_aux n n (nth_prime (max_prime_factor n)));
- [2: rewrite < H1.assumption.|letin x \def le.auto width = 4 new]
+ [2: rewrite < H1.assumption.|letin x \def le.auto width = 4 depth = 2]
(* CERCA COME MAI le_n non lo applica se lo trova come Const e non Rel *)
].
(*
rewrite > Hcut.rewrite < H1.rewrite < times_n_O.reflexivity.
apply le_to_or_lt_eq.apply le_O_n.
(* prova del cut *)
-goal 20.
apply (p_ord_aux_to_exp (S(S m1))).
apply lt_O_nth_prime_n.
assumption.