]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/software/matita/dama/infsup.ma
...
[helm.git] / helm / software / matita / dama / infsup.ma
index c7859577a2cd49695e83104fc21f6a7675e066b3..cc3292fd0b5178775d5199ba3bc5d850570a6e38 100644 (file)
 (*                                                                        *)
 (**************************************************************************)
 
-include "sandwich_corollary.ma".
-
-(* 3.19 *)
-definition supremum ≝ 
-  λR.λml:mlattice R.λxn:sequence ml.λx:ml.
-    increasing ? xn → upper_bound ? xn x ∧ xn ⇝ x.
-
-definition infimum ≝ 
-  λR.λml:mlattice R.λxn:sequence ml.λx:ml.
-    decreasing ? xn → lower_bound ? xn x ∧ xn ⇝ x.
-    
-(* 3.20 *)
-lemma supremum_uniq:
-  ∀R.∀ml:mlattice R.∀xn:sequence ml.increasing ? xn → 
-   ∀x,y:ml.supremum ?? xn x → supremum ?? xn y → δ x y ≈ 0.
-intros (R ml xn Hxn x y Sx Sy);
-elim (Sx Hxn) (_ Hx); elim (Sy Hxn) (_ Hy);
-apply (tends_uniq ?? xn ?? Hx Hy);
-qed.
-
-definition shift : ∀R.∀ml:mlattice R.∀xn:sequence ml.nat → sequence ml ≝
- λR.λml:mlattice R.λxn:sequence ml.λm:nat.λn.xn (n+m).
-definition ank ≝
-  λR.λml:mlattice R.λxn:sequence ml.λk:nat.
-    let rec ank_aux (i : nat) ≝
-      match i with 
-      [ O ⇒ (shift ?? xn k) O
-      | S n1 ⇒ (shift ?? xn k) (S n1) ∧ ank_aux n1]
-    in ank_aux.
-     
-notation < "'a'\sup k" non associative with precedence 50 for
- @{ 'ank $x $k }.
-interpretation "ank" 'ank x k =
- (cic:/matita/infsup/ank.con _ _ x k).      
-
-notation < "'a'(k \atop n)" non associative with precedence 50 for
- @{ 'ank2 $x $k $n }.
-interpretation "ank2" 'ank2 x k n =
- (cic:/matita/infsup/ank.con _ _ x k n).      
-    
-definition bnk ≝
-  λR.λml:mlattice R.λxn:sequence ml.λk:nat.
-    let rec bnk_aux (i : nat) ≝
-      match i with 
-      [ O ⇒ (shift ?? xn k) O
-      | S n1 ⇒ (shift ?? xn k) (S n1) ∨ bnk_aux n1]
-    in bnk_aux.
-    
-lemma ank_decreasing: 
-  ∀R.∀ml:mlattice R.∀xn:sequence ml.∀k.decreasing ? (ank ?? xn k).
-intros (R ml xn k); unfold; intro n; simplify; apply lem;
+include "sequence.ma".
+
+definition upper_bound ≝ λO:excess.λa:sequence O.λu:O.∀n:nat.a n ≤ u.
+
+definition weak_sup ≝
+  λO:excess.λs:sequence O.λx.
+    upper_bound ? s x ∧ (∀y:O.upper_bound ? s y → x ≤ y).
+
+definition strong_sup ≝
+  λO:excess.λs:sequence O.λx.upper_bound ? s x ∧ (∀y:O.x ≰ y → ∃n.s n ≰ y).
+
+definition increasing ≝ λO:excess.λa:sequence O.∀n:nat.a n ≤ a (S n).
+
+notation < "x \nbsp 'is_upper_bound' \nbsp s" non associative with precedence 50 for @{'upper_bound $_ $s $x}.
+notation < "x \nbsp 'is_lower_bound' \nbsp s" non associative with precedence 50 for @{'lower_bound $_ $s $x}.
+notation < "s \nbsp 'is_increasing'"          non associative with precedence 50 for @{'increasing $_ $s}.
+notation < "s \nbsp 'is_decreasing'"          non associative with precedence 50 for @{'decreasing $_ $s}.
+notation < "x \nbsp 'is_strong_sup' \nbsp s"  non associative with precedence 50 for @{'strong_sup $_ $s $x}.
+notation < "x \nbsp 'is_strong_inf' \nbsp s"  non associative with precedence 50 for @{'strong_inf $_ $s $x}.
+
+notation > "x 'is_upper_bound' s 'in' e" non associative with precedence 50 for @{'upper_bound $e $s $x}.
+notation > "x 'is_lower_bound' s 'in' e" non associative with precedence 50 for @{'lower_bound $e $s $x}.
+notation > "s 'is_increasing' 'in' e"    non associative with precedence 50 for @{'increasing $e $s}.
+notation > "s 'is_decreasing' 'in' e"    non associative with precedence 50 for @{'decreasing $e $s}.
+notation > "x 'is_strong_sup' s 'in' e"  non associative with precedence 50 for @{'strong_sup $e $s $x}.
+notation > "x 'is_strong_inf' s 'in' e"  non associative with precedence 50 for @{'strong_inf $e $s $x}.
+
+interpretation "Excess upper bound" 'upper_bound e s x = (cic:/matita/infsup/upper_bound.con e s x).
+interpretation "Excess lower bound" 'lower_bound e s x = (cic:/matita/infsup/upper_bound.con (cic:/matita/excess/dual_exc.con e) s x).
+interpretation "Excess increasing"  'increasing e s    = (cic:/matita/infsup/increasing.con e s).
+interpretation "Excess decreasing"  'decreasing e s    = (cic:/matita/infsup/increasing.con (cic:/matita/excess/dual_exc.con e) s).
+interpretation "Excess strong sup"  'strong_sup e s x  = (cic:/matita/infsup/strong_sup.con e s x).
+interpretation "Excess strong inf"  'strong_inf e s x  = (cic:/matita/infsup/strong_sup.con (cic:/matita/excess/dual_exc.con e) s x).
+
+lemma strong_sup_is_weak: 
+  ∀O:excess.∀s:sequence O.∀x:O.strong_sup ? s x → weak_sup ? s x.
+intros (O s x Ssup); elim Ssup (Ubx M); clear Ssup; split; [assumption]
+intros 3 (y Uby E); cases (M ? E) (n En); unfold in Uby; cases (Uby ? En);
 qed.
-
-(* 3.26 *)
-lemma ankS:
-  ∀R.∀ml:mlattice R.∀xn:sequence ml.∀k,n:nat.
-   ((ank ?? xn k) (S n)) ≈ (xn k ∧ ank ?? xn (S k) n).
-intros (R ml xn k n); elim n; simplify; [apply meet_comm]  
-simplify in H; apply (Eq≈ ? (feq_ml ???? (H))); clear H;
-apply (Eq≈ ? (meet_assoc ????));    
-apply (Eq≈ ?? (eq_sym ??? (meet_assoc ????)));
-apply feq_mr; rewrite > sym_plus in ⊢ (? ? ? (? ? ? (? (? %))));
-simplify; rewrite > sym_plus in ⊢ (? ? ? (? ? ? (? (? %))));
-apply meet_comm;
-qed.    
-
-lemma le_asnk_ansk:
-  ∀R.∀ml:mlattice R.∀xn:sequence ml.∀k,n.
-   (ank ?? xn k (S n)) ≤ (ank ?? xn (S k) n).
-intros (R ml xn k n);
-apply (Le≪ (xn k ∧ ank ?? xn (S k) n) (ankS ?????)); apply lem;
-qed.   
-
-(* 3.27 *)
-lemma sup_increasing:
-  ∀R.∀ml:mlattice R.∀xn:sequence ml.
-   ∀alpha:sequence ml. (∀k.strong_inf ml (ank ?? xn k) (alpha k)) → 
-     increasing ml alpha.
-intros (R ml xn alpha H); unfold strong_inf in H; unfold lower_bound in H; unfold; 
-intro r; 
-elim (H r) (H1r H2r);
-elim (H (S r)) (H1sr H2sr); clear H H2r H1sr;
-intro e; cases (H2sr ? e) (w Hw); clear e H2sr;
-lapply (H1r (S w)) as Hsw; clear H1r;
-lapply (le_transitive ???? Hsw (le_asnk_ansk ?????)) as H;
-cases (H Hw);
-qed.
-
-   
\ No newline at end of file