From 3ef7797ef6fc605dfafb32523261fe1b023aeecb Mon Sep 17 00:00:00 2001 From: Samuel Mimram Date: Fri, 28 Apr 2006 14:59:16 +0000 Subject: Imported Upstream version 8.0pl3+8.1alpha --- theories7/Reals/Cauchy_prod.v | 347 ------------------------------------------ 1 file changed, 347 deletions(-) delete mode 100644 theories7/Reals/Cauchy_prod.v (limited to 'theories7/Reals/Cauchy_prod.v') diff --git a/theories7/Reals/Cauchy_prod.v b/theories7/Reals/Cauchy_prod.v deleted file mode 100644 index 9442eff0..00000000 --- a/theories7/Reals/Cauchy_prod.v +++ /dev/null @@ -1,347 +0,0 @@ -(************************************************************************) -(* v * The Coq Proof Assistant / The Coq Development Team *) -(* R;N:nat) (lt O N) -> (sum_f_R0 An N)==``(sum_f_R0 An (pred N)) + (An N)``. -Intros. -Replace N with (S (pred N)). -Rewrite tech5. -Reflexivity. -Symmetry; Apply S_pred with O; Assumption. -Qed. - -(**********) -Lemma sum_plus : (An,Bn:nat->R;N:nat) (sum_f_R0 [l:nat]``(An l)+(Bn l)`` N)==``(sum_f_R0 An N)+(sum_f_R0 Bn N)``. -Intros. -Induction N. -Reflexivity. -Do 3 Rewrite tech5. -Rewrite HrecN; Ring. -Qed. - -(* The main result *) -Theorem cauchy_finite : (An,Bn:nat->R;N:nat) (lt O N) -> (Rmult (sum_f_R0 An N) (sum_f_R0 Bn N)) == (Rplus (sum_f_R0 [k:nat](sum_f_R0 [p:nat]``(An p)*(Bn (minus k p))`` k) N) (sum_f_R0 [k:nat](sum_f_R0 [l:nat]``(An (S (plus l k)))*(Bn (minus N l))`` (pred (minus N k))) (pred N))). -Intros; Induction N. -Elim (lt_n_n ? H). -Cut N=O\/(lt O N). -Intro; Elim H0; Intro. -Rewrite H1; Simpl; Ring. -Replace (pred (S N)) with (S (pred N)). -Do 5 Rewrite tech5. -Rewrite Rmult_Rplus_distrl; Rewrite Rmult_Rplus_distr; Rewrite (HrecN H1). -Repeat Rewrite Rplus_assoc; Apply Rplus_plus_r. -Replace (pred (minus (S N) (S (pred N)))) with (O). -Rewrite Rmult_Rplus_distr; Replace (sum_f_R0 [l:nat]``(An (S (plus l (S (pred N)))))*(Bn (minus (S N) l))`` O) with ``(An (S N))*(Bn (S N))``. -Repeat Rewrite <- Rplus_assoc; Do 2 Rewrite <- (Rplus_sym ``(An (S N))*(Bn (S N))``); Repeat Rewrite Rplus_assoc; Apply Rplus_plus_r. -Rewrite <- minus_n_n; Cut N=(1)\/(le (2) N). -Intro; Elim H2; Intro. -Rewrite H3; Simpl; Ring. -Replace (sum_f_R0 [k:nat](sum_f_R0 [l:nat]``(An (S (plus l k)))*(Bn (minus N l))`` (pred (minus N k))) (pred N)) with (Rplus (sum_f_R0 [k:nat](sum_f_R0 [l:nat]``(An (S (S (plus l k))))*(Bn (minus N l))`` (pred (pred (minus N k)))) (pred (pred N))) (sum_f_R0 [l:nat]``(An (S l))*(Bn (minus N l))`` (pred N))). -Replace (sum_f_R0 [p:nat]``(An p)*(Bn (minus (S N) p))`` N) with (Rplus (sum_f_R0 [l:nat]``(An (S l))*(Bn (minus N l))`` (pred N)) ``(An O)*(Bn (S N))``). -Repeat Rewrite <- Rplus_assoc; Rewrite <- (Rplus_sym (sum_f_R0 [l:nat]``(An (S l))*(Bn (minus N l))`` (pred N))); Repeat Rewrite Rplus_assoc; Apply Rplus_plus_r. -Replace (sum_f_R0 [k:nat](sum_f_R0 [l:nat]``(An (S (plus l k)))*(Bn (minus (S N) l))`` (pred (minus (S N) k))) (pred N)) with (Rplus (sum_f_R0 [k:nat](sum_f_R0 [l:nat]``(An (S (S (plus l k))))*(Bn (minus N l))`` (pred (minus N k))) (pred N)) (Rmult (Bn (S N)) (sum_f_R0 [l:nat](An (S l)) (pred N)))). -Rewrite (decomp_sum An N H1); Rewrite Rmult_Rplus_distrl; Repeat Rewrite <- Rplus_assoc; Rewrite <- (Rplus_sym ``(An O)*(Bn (S N))``); Repeat Rewrite Rplus_assoc; Apply Rplus_plus_r. -Repeat Rewrite <- Rplus_assoc; Rewrite <- (Rplus_sym (Rmult (sum_f_R0 [i:nat](An (S i)) (pred N)) (Bn (S N)))); Rewrite <- (Rplus_sym (Rmult (Bn (S N)) (sum_f_R0 [i:nat](An (S i)) (pred N)))); Rewrite (Rmult_sym (Bn (S N))); Repeat Rewrite Rplus_assoc; Apply Rplus_plus_r. -Replace (sum_f_R0 [k:nat](sum_f_R0 [l:nat]``(An (S (S (plus l k))))*(Bn (minus N l))`` (pred (minus N k))) (pred N)) with (Rplus (sum_f_R0 [k:nat](sum_f_R0 [l:nat]``(An (S (S (plus l k))))*(Bn (minus N l))`` (pred (pred (minus N k)))) (pred (pred N))) (Rmult (An (S N)) (sum_f_R0 [l:nat](Bn (S l)) (pred N)))). -Rewrite (decomp_sum Bn N H1); Rewrite Rmult_Rplus_distr. -Pose Z := (sum_f_R0 [k:nat](sum_f_R0 [l:nat]``(An (S (S (plus l k))))*(Bn (minus N l))`` (pred (pred (minus N k)))) (pred (pred N))); Pose Z2 := (sum_f_R0 [i:nat](Bn (S i)) (pred N)); Ring. -Rewrite (sum_N_predN [k:nat](sum_f_R0 [l:nat]``(An (S (S (plus l k))))*(Bn (minus N l))`` (pred (minus N k))) (pred N)). -Replace (sum_f_R0 [k:nat](sum_f_R0 [l:nat]``(An (S (S (plus l k))))*(Bn (minus N l))`` (pred (minus N k))) (pred (pred N))) with (sum_f_R0 [k:nat](Rplus (sum_f_R0 [l:nat]``(An (S (S (plus l k))))*(Bn (minus N l))`` (pred (pred (minus N k)))) ``(An (S N))*(Bn (S k))``) (pred (pred N))). -Rewrite (sum_plus [k:nat](sum_f_R0 [l:nat]``(An (S (S (plus l k))))*(Bn (minus N l))`` (pred (pred (minus N k)))) [k:nat]``(An (S N))*(Bn (S k))`` (pred (pred N))). -Repeat Rewrite Rplus_assoc; Apply Rplus_plus_r. -Replace (pred (minus N (pred N))) with O. -Simpl; Rewrite <- minus_n_O. -Replace (S (pred N)) with N. -Replace (sum_f_R0 [k:nat]``(An (S N))*(Bn (S k))`` (pred (pred N))) with (sum_f_R0 [k:nat]``(Bn (S k))*(An (S N))`` (pred (pred N))). -Rewrite <- (scal_sum [l:nat](Bn (S l)) (pred (pred N)) (An (S N))); Rewrite (sum_N_predN [l:nat](Bn (S l)) (pred N)). -Replace (S (pred N)) with N. -Ring. -Apply S_pred with O; Assumption. -Apply lt_pred; Apply lt_le_trans with (2); [Apply lt_n_Sn | Assumption]. -Apply sum_eq; Intros; Apply Rmult_sym. -Apply S_pred with O; Assumption. -Replace (minus N (pred N)) with (1). -Reflexivity. -Pattern 1 N; Replace N with (S (pred N)). -Rewrite <- minus_Sn_m. -Rewrite <- minus_n_n; Reflexivity. -Apply le_n. -Symmetry; Apply S_pred with O; Assumption. -Apply sum_eq; Intros; Rewrite (sum_N_predN [l:nat]``(An (S (S (plus l i))))*(Bn (minus N l))`` (pred (minus N i))). -Replace (S (S (plus (pred (minus N i)) i))) with (S N). -Replace (minus N (pred (minus N i))) with (S i). -Ring. -Rewrite pred_of_minus; Apply INR_eq; Repeat Rewrite minus_INR. -Rewrite S_INR; Ring. -Apply le_trans with (pred (pred N)). -Assumption. -Apply le_trans with (pred N); Apply le_pred_n. -Apply INR_le; Rewrite minus_INR. -Apply Rle_anti_compatibility with ``(INR i)-1``. -Replace ``(INR i)-1+(INR (S O))`` with (INR i); [Idtac | Ring]. -Replace ``(INR i)-1+((INR N)-(INR i))`` with ``(INR N)-(INR (S O))``; [Idtac | Ring]. -Rewrite <- minus_INR. -Apply le_INR; Apply le_trans with (pred (pred N)). -Assumption. -Rewrite <- pred_of_minus; Apply le_pred_n. -Apply le_trans with (2). -Apply le_n_Sn. -Assumption. -Apply le_trans with (pred (pred N)). -Assumption. -Apply le_trans with (pred N); Apply le_pred_n. -Rewrite <- pred_of_minus. -Apply le_trans with (pred N). -Apply le_S_n. -Replace (S (pred N)) with N. -Replace (S (pred (minus N i))) with (minus N i). -Apply simpl_le_plus_l with i; Rewrite le_plus_minus_r. -Apply le_plus_r. -Apply le_trans with (pred (pred N)); [Assumption | Apply le_trans with (pred N); Apply le_pred_n]. -Apply S_pred with O. -Apply simpl_lt_plus_l with i; Rewrite le_plus_minus_r. -Replace (plus i O) with i; [Idtac | Ring]. -Apply le_lt_trans with (pred (pred N)); [Assumption | Apply lt_trans with (pred N); Apply lt_pred_n_n]. -Apply lt_S_n. -Replace (S (pred N)) with N. -Apply lt_le_trans with (2). -Apply lt_n_Sn. -Assumption. -Apply S_pred with O; Assumption. -Assumption. -Apply le_trans with (pred (pred N)). -Assumption. -Apply le_trans with (pred N); Apply le_pred_n. -Apply S_pred with O; Assumption. -Apply le_pred_n. -Apply INR_eq; Rewrite pred_of_minus; Do 3 Rewrite S_INR; Rewrite plus_INR; Repeat Rewrite minus_INR. -Ring. -Apply le_trans with (pred (pred N)). -Assumption. -Apply le_trans with (pred N); Apply le_pred_n. -Apply INR_le. -Rewrite minus_INR. -Apply Rle_anti_compatibility with ``(INR i)-1``. -Replace ``(INR i)-1+(INR (S O))`` with (INR i); [Idtac | Ring]. -Replace ``(INR i)-1+((INR N)-(INR i))`` with ``(INR N)-(INR (S O))``; [Idtac | Ring]. -Rewrite <- minus_INR. -Apply le_INR. -Apply le_trans with (pred (pred N)). -Assumption. -Rewrite <- pred_of_minus. -Apply le_pred_n. -Apply le_trans with (2). -Apply le_n_Sn. -Assumption. -Apply le_trans with (pred (pred N)). -Assumption. -Apply le_trans with (pred N); Apply le_pred_n. -Apply lt_le_trans with (1). -Apply lt_O_Sn. -Apply INR_le. -Rewrite pred_of_minus. -Repeat Rewrite minus_INR. -Apply Rle_anti_compatibility with ``(INR i)-1``. -Replace ``(INR i)-1+(INR (S O))`` with (INR i); [Idtac | Ring]. -Replace ``(INR i)-1+((INR N)-(INR i)-(INR (S O)))`` with ``(INR N)-(INR (S O)) -(INR (S O))``. -Repeat Rewrite <- minus_INR. -Apply le_INR. -Apply le_trans with (pred (pred N)). -Assumption. -Do 2 Rewrite <- pred_of_minus. -Apply le_n. -Apply simpl_le_plus_l with (1). -Rewrite le_plus_minus_r. -Simpl; Assumption. -Apply le_trans with (2); [Apply le_n_Sn | Assumption]. -Apply le_trans with (2); [Apply le_n_Sn | Assumption]. -Ring. -Apply le_trans with (pred (pred N)). -Assumption. -Apply le_trans with (pred N); Apply le_pred_n. -Apply simpl_le_plus_l with i. -Rewrite le_plus_minus_r. -Replace (plus i (1)) with (S i). -Replace N with (S (pred N)). -Apply le_n_S. -Apply le_trans with (pred (pred N)). -Assumption. -Apply le_pred_n. -Symmetry; Apply S_pred with O; Assumption. -Apply INR_eq; Rewrite S_INR; Rewrite plus_INR; Reflexivity. -Apply le_trans with (pred (pred N)). -Assumption. -Apply le_trans with (pred N); Apply le_pred_n. -Apply lt_le_trans with (1). -Apply lt_O_Sn. -Apply le_S_n. -Replace (S (pred N)) with N. -Assumption. -Apply S_pred with O; Assumption. -Replace (sum_f_R0 [k:nat](sum_f_R0 [l:nat]``(An (S (plus l k)))*(Bn (minus (S N) l))`` (pred (minus (S N) k))) (pred N)) with (sum_f_R0 [k:nat](Rplus (sum_f_R0 [l:nat]``(An (S (S (plus l k))))*(Bn (minus N l))`` (pred (minus N k))) ``(An (S k))*(Bn (S N))``) (pred N)). -Rewrite (sum_plus [k:nat](sum_f_R0 [l:nat]``(An (S (S (plus l k))))*(Bn (minus N l))`` (pred (minus N k))) [k:nat]``(An (S k))*(Bn (S N))``). -Apply Rplus_plus_r. -Rewrite scal_sum; Reflexivity. -Apply sum_eq; Intros; Rewrite Rplus_sym; Rewrite (decomp_sum [l:nat]``(An (S (plus l i)))*(Bn (minus (S N) l))`` (pred (minus (S N) i))). -Replace (plus O i) with i; [Idtac | Ring]. -Rewrite <- minus_n_O; Apply Rplus_plus_r. -Replace (pred (pred (minus (S N) i))) with (pred (minus N i)). -Apply sum_eq; Intros. -Replace (minus (S N) (S i0)) with (minus N i0); [Idtac | Reflexivity]. -Replace (plus (S i0) i) with (S (plus i0 i)). -Reflexivity. -Apply INR_eq; Rewrite S_INR; Do 2 Rewrite plus_INR; Rewrite S_INR; Ring. -Cut (minus N i)=(pred (minus (S N) i)). -Intro; Rewrite H5; Reflexivity. -Rewrite pred_of_minus. -Apply INR_eq; Repeat Rewrite minus_INR. -Rewrite S_INR; Ring. -Apply le_trans with N. -Apply le_trans with (pred N). -Assumption. -Apply le_pred_n. -Apply le_n_Sn. -Apply simpl_le_plus_l with i. -Rewrite le_plus_minus_r. -Replace (plus i (1)) with (S i). -Apply le_n_S. -Apply le_trans with (pred N). -Assumption. -Apply le_pred_n. -Apply INR_eq; Rewrite S_INR; Rewrite plus_INR; Ring. -Apply le_trans with N. -Apply le_trans with (pred N). -Assumption. -Apply le_pred_n. -Apply le_n_Sn. -Apply le_trans with (pred N). -Assumption. -Apply le_pred_n. -Replace (pred (minus (S N) i)) with (minus (S N) (S i)). -Replace (minus (S N) (S i)) with (minus N i); [Idtac | Reflexivity]. -Apply simpl_lt_plus_l with i. -Rewrite le_plus_minus_r. -Replace (plus i O) with i; [Idtac | Ring]. -Apply le_lt_trans with (pred N). -Assumption. -Apply lt_pred_n_n. -Assumption. -Apply le_trans with (pred N). -Assumption. -Apply le_pred_n. -Rewrite pred_of_minus. -Apply INR_eq; Repeat Rewrite minus_INR. -Repeat Rewrite S_INR; Ring. -Apply le_trans with N. -Apply le_trans with (pred N). -Assumption. -Apply le_pred_n. -Apply le_n_Sn. -Apply simpl_le_plus_l with i. -Rewrite le_plus_minus_r. -Replace (plus i (1)) with (S i). -Apply le_n_S. -Apply le_trans with (pred N). -Assumption. -Apply le_pred_n. -Apply INR_eq; Rewrite S_INR; Rewrite plus_INR; Ring. -Apply le_trans with N. -Apply le_trans with (pred N). -Assumption. -Apply le_pred_n. -Apply le_n_Sn. -Apply le_n_S. -Apply le_trans with (pred N). -Assumption. -Apply le_pred_n. -Rewrite Rplus_sym. -Rewrite (decomp_sum [p:nat]``(An p)*(Bn (minus (S N) p))`` N). -Rewrite <- minus_n_O. -Apply Rplus_plus_r. -Apply sum_eq; Intros. -Reflexivity. -Assumption. -Rewrite Rplus_sym. -Rewrite (decomp_sum [k:nat](sum_f_R0 [l:nat]``(An (S (plus l k)))*(Bn (minus N l))`` (pred (minus N k))) (pred N)). -Rewrite <- minus_n_O. -Replace (sum_f_R0 [l:nat]``(An (S (plus l O)))*(Bn (minus N l))`` (pred N)) with (sum_f_R0 [l:nat]``(An (S l))*(Bn (minus N l))`` (pred N)). -Apply Rplus_plus_r. -Apply sum_eq; Intros. -Replace (pred (minus N (S i))) with (pred (pred (minus N i))). -Apply sum_eq; Intros. -Replace (plus i0 (S i)) with (S (plus i0 i)). -Reflexivity. -Apply INR_eq; Rewrite S_INR; Do 2 Rewrite plus_INR; Rewrite S_INR; Ring. -Cut (pred (minus N i))=(minus N (S i)). -Intro; Rewrite H5; Reflexivity. -Rewrite pred_of_minus. -Apply INR_eq. -Repeat Rewrite minus_INR. -Repeat Rewrite S_INR; Ring. -Apply le_trans with (S (pred (pred N))). -Apply le_n_S; Assumption. -Replace (S (pred (pred N))) with (pred N). -Apply le_pred_n. -Apply S_pred with O. -Apply lt_S_n. -Replace (S (pred N)) with N. -Apply lt_le_trans with (2). -Apply lt_n_Sn. -Assumption. -Apply S_pred with O; Assumption. -Apply le_trans with (pred (pred N)). -Assumption. -Apply le_trans with (pred N); Apply le_pred_n. -Apply simpl_le_plus_l with i. -Rewrite le_plus_minus_r. -Replace (plus i (1)) with (S i). -Replace N with (S (pred N)). -Apply le_n_S. -Apply le_trans with (pred (pred N)). -Assumption. -Apply le_pred_n. -Symmetry; Apply S_pred with O; Assumption. -Apply INR_eq; Rewrite S_INR; Rewrite plus_INR; Ring. -Apply le_trans with (pred (pred N)). -Assumption. -Apply le_trans with (pred N); Apply le_pred_n. -Apply sum_eq; Intros. -Replace (plus i O) with i; [Reflexivity | Trivial]. -Apply lt_S_n. -Replace (S (pred N)) with N. -Apply lt_le_trans with (2); [Apply lt_n_Sn | Assumption]. -Apply S_pred with O; Assumption. -Inversion H1. -Left; Reflexivity. -Right; Apply le_n_S; Assumption. -Simpl. -Replace (S (pred N)) with N. -Reflexivity. -Apply S_pred with O; Assumption. -Simpl. -Cut (minus N (pred N))=(1). -Intro; Rewrite H2; Reflexivity. -Rewrite pred_of_minus. -Apply INR_eq; Repeat Rewrite minus_INR. -Ring. -Apply lt_le_S; Assumption. -Rewrite <- pred_of_minus; Apply le_pred_n. -Simpl; Symmetry; Apply S_pred with O; Assumption. -Inversion H. -Left; Reflexivity. -Right; Apply lt_le_trans with (1); [Apply lt_n_Sn | Exact H1]. -Qed. -- cgit v1.2.3