X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;ds=sidebyside;f=matita%2Fdama%2Freals.ma;h=c03fdf26bf6c4d6ef3a6eefecb57f5bdc4f41116;hb=b098ae0cb12a818332cb3241ccaf76f99c4221a5;hp=5566ece4327f802144990b519ca05544ea7deb18;hpb=348acb421355c345a9af0754c1c16508a43eeea5;p=helm.git diff --git a/matita/dama/reals.ma b/matita/dama/reals.ma index 5566ece43..c03fdf26b 100644 --- a/matita/dama/reals.ma +++ b/matita/dama/reals.ma @@ -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,16 +27,15 @@ 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; @@ -46,48 +45,128 @@ definition max_seq: ∀R:real.∀x,y:R. nat → R. ]. 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: \forall R: real. \forall x:R. (zero R) ≤ abs R 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