]> matita.cs.unibo.it Git - helm.git/blobdiff - matita/dama/reals.ma
Some notes for Enrico.
[helm.git] / matita / dama / reals.ma
index 5566ece4327f802144990b519ca05544ea7deb18..d57e6cfba62f8cada56b0da615a5b07fa5df3d12 100644 (file)
@@ -16,9 +16,9 @@ set "baseuri" "cic:/matita/reals/".
 
 include "ordered_fields_ch0.ma".
 
-record is_real (F:ordered_field_ch0) : Prop
+record is_real (F:ordered_field_ch0) : Type
 ≝
- { r_archimedean: ∀x:F. ∃n:nat. x ≤ (sum_field F n);
+ { r_archimedean: ∀x:F. ∃n:nat. x ≤ (sum_field ? n);
    r_complete: is_complete F  
  }.
 
@@ -27,67 +27,146 @@ record real: Type \def
    r_real_properties: is_real r_ordered_field_ch0
  }.
 
-(* serve l'esistenziale in CProp!
-definition lim: ∀R:real.∀f:nat→R.is_cauchy_seq R f → R.
+definition lim: ∀R:real.∀f:nat→R.is_cauchy_seq ? f → R.
  intros;
- elim H;
+ elim (r_complete ? (r_real_properties R) ? H);
+ exact a.
 qed.
-*)
 
 definition max_seq: ∀R:real.∀x,y:R. nat → R.
  intros (R x y);
- elim (to_cotransitive R (of_le R) R 0 (inv ? (sum_field R (S n)) ?) (x-y));
+ elim (cos_cotransitive R 0 (inv ? (sum_field ? (S n)) ?) (x-y));
   [ apply x
   | apply not_eq_sum_field_zero ;
     unfold;
-    auto new
+    autobatch
   | apply y
   | apply lt_zero_to_le_inv_zero 
   ].
 qed.
 
-theorem cauchy_max_seq: ∀R:real.∀x,y. is_cauchy_seq ? (max_seq R x y).
+axiom daemon: False.
+
+theorem cauchy_max_seq: ∀R:real.∀x,y:R. is_cauchy_seq ? (max_seq ? x y).
+elim daemon.
+(*
  intros;
  unfold;
  intros;
- apply (ex_intro ? ? m);
+ exists; [ exact m | ]; (* apply (ex_intro ? ? m); *)
  intros;
- split;
-  [ 
-  | unfold max_seq;
-    elim (to_cotransitive R (of_le R) R 0
+ unfold max_seq;
+ elim (of_cotransitive R 0
 (inv R (sum_field R (S N))
  (not_eq_sum_field_zero R (S N) (le_S_S O N (le_O_n N)))) (x-y)
 (lt_zero_to_le_inv_zero R (S N)
  (not_eq_sum_field_zero R (S N) (le_S_S O N (le_O_n N)))));
-     [ simplify;
-       elim (to_cotransitive R (of_le R) R 0
+  [ simplify;
+    elim (of_cotransitive R  0
 (inv R (1+sum R (plus R) 0 1 m)
  (not_eq_sum_field_zero R (S m) (le_S_S O m (le_O_n m)))) (x-y)
 (lt_zero_to_le_inv_zero R (S m)
  (not_eq_sum_field_zero R (S m) (le_S_S O m (le_O_n m)))));
-       [ simplify;
-         rewrite > (plus_comm ? x (-x));
-         rewrite > opp_inverse;
+    [ simplify;
+      rewrite > (plus_comm ? x (-x));
+      rewrite > opp_inverse;
+      split;
+       [ apply (le_zero_x_to_le_opp_x_zero R ?); 
          apply lt_zero_to_le_inv_zero
-       | simplify;
-         assumption
+       | apply lt_zero_to_le_inv_zero
+       ]
+    | simplify;
+      split;
+       [ apply (or_transitive ? ? R ? 0);
+          [ apply (le_zero_x_to_le_opp_x_zero R ?)
+          | assumption
+          ]
+       | assumption
        ]
-     | elim (to_cotransitive R (of_le R) R 0
+    ]
+  | simplify;
+    elim (of_cotransitive R 0
 (inv R (1+sum R (plus R) 0 1 m)
  (not_eq_sum_field_zero R (S m) (le_S_S O m (le_O_n m)))) (x-y)
 (lt_zero_to_le_inv_zero R (S m)
  (not_eq_sum_field_zero R (S m) (le_S_S O m (le_O_n m)))));
-        [ simplify;
-          generalize in match (le_zero_x_to_le_opp_x_zero R ? t1);
-          intro;
-          (* finire *)
-        |simplify;
-         rewrite > (plus_comm ? y (-y));
-         rewrite > opp_inverse;
-         apply lt_zero_to_le_inv_zero
+     [ simplify;
+       split;
+       [ elim daemon
+       | generalize in match (le_zero_x_to_le_opp_x_zero R ? t1);
+         intro;
+         unfold minus in H1;
+         rewrite > eq_opp_plus_plus_opp_opp in H1;
+         rewrite > eq_opp_opp_x_x in H1;
+         rewrite > plus_comm in H1;
+         apply (or_transitive ? ? R ? 0);
+          [ assumption
+          | apply lt_zero_to_le_inv_zero
+          ]
         ]
+     | simplify;
+       rewrite > (plus_comm ? y (-y));
+       rewrite > opp_inverse;
+       split;
+       [ elim daemon
+       | apply lt_zero_to_le_inv_zero
+       ]
      ]
   ].
+  elim daemon.*)
+qed.
+
+definition max: ∀R:real.R → R → R.
+ intros (R x y);
+ apply (lim R (max_seq R x y));
+ apply cauchy_max_seq.
+qed.
+
+definition abs \def λR:real.λx:R. max R x (-x).
+
+lemma comparison:
+ ∀R:real.∀f,g:nat→R. is_cauchy_seq ? f → is_cauchy_seq ? g →
+  (∀n:nat.f n ≤ g n) → lim ? f ? ≤ lim ? g ?.
+ [ assumption
+ | assumption
+ | intros;
+   elim daemon
+ ].
+qed.
+
+definition to_zero ≝
+ λR:real.λn.
+  -(inv R (sum_field R (S n))
+   (not_eq_sum_field_zero R (S n) (le_S_S O n (le_O_n n)))).
+  
+axiom is_cauchy_seq_to_zero: ∀R:real. is_cauchy_seq ? (to_zero R).
+
+lemma technical1: ∀R:real.lim R (to_zero R) (is_cauchy_seq_to_zero R) = 0.
+ intros;
+ unfold lim;
+ elim daemon.
+qed.
  
\ No newline at end of file
+lemma abs_x_ge_O: ∀R:real.∀x:R. 0 ≤ abs ? x.
+ intros;
+ unfold abs;
+ unfold max;
+ rewrite < technical1;
+ apply comparison;
+ intros;
+ unfold to_zero;
+ unfold max_seq;
+ elim
+     (cos_cotransitive R 0
+(inv R (sum_field R (S n))
+ (not_eq_sum_field_zero R (S n) (le_S_S O n (le_O_n n)))) (x--x)
+(lt_zero_to_le_inv_zero R (S n)
+ (not_eq_sum_field_zero R (S n) (le_S_S O n (le_O_n n)))));
+ [ simplify;
+   (* facile *)
+   elim daemon
+ | simplify;
+   (* facile *)
+   elim daemon
+ ].
+qed.
\ No newline at end of file