src/HOL/Real/HahnBanach/Aux.thy
changeset 7566 c5a3f980a7af
parent 7535 599d3414b51d
child 7656 2f18c0ffc348
equal deleted inserted replaced
7565:bfa85f429629 7566:c5a3f980a7af
       
     1 (*  Title:      HOL/Real/HahnBanach/Aux.thy
       
     2     ID:         $Id$
       
     3     Author:     Gertrud Bauer, TU Munich
       
     4 *)
     1 
     5 
     2 theory Aux = Main + Real:;
     6 theory Aux = Real:;
     3 
     7 
       
     8 theorems case = case_split_thm;  (* FIXME tmp *);
       
     9 
       
    10 lemmas CollectE = CollectD [elimify];
     4 
    11 
     5 theorem [trans]: "[| (x::'a::order) <= y; x ~= y |] ==> x < y";	    (*  <=  ~=  < *)
    12 theorem [trans]: "[| (x::'a::order) <= y; x ~= y |] ==> x < y";	    (*  <=  ~=  < *)
     6   by (asm_simp add: order_less_le);
    13   by (simp! add: order_less_le);
       
    14 
       
    15 lemma le_max1: "x <= max x (y::'a::linorder)";
       
    16   by (simp add: le_max_iff_disj[of x x y]);
       
    17 
       
    18 lemma le_max2: "y <= max x (y::'a::linorder)"; 
       
    19   by (simp add: le_max_iff_disj[of y x y]);
     7 
    20 
     8 lemma lt_imp_not_eq: "x < (y::'a::order) ==> x ~= y"; 
    21 lemma lt_imp_not_eq: "x < (y::'a::order) ==> x ~= y"; 
     9   by (rule order_less_le[RS iffD1, RS conjunct2]);
    22   by (rule order_less_le[RS iffD1, RS conjunct2]);
    10 
    23 
    11 lemma Int_singeltonD: "[| A Int B = {v}; x:A; x:B |] ==> x = v";
    24 lemma Int_singletonD: "[| A Int B = {v}; x:A; x:B |] ==> x = v";
    12   by (fast elim: equalityE);
    25   by (fast elim: equalityE);
       
    26 
       
    27 lemmas singletonE = singletonD[elimify];
    13 
    28 
    14 lemma real_add_minus_eq: "x - y = 0r ==> x = y";
    29 lemma real_add_minus_eq: "x - y = 0r ==> x = y";
    15 proof -;
    30 proof -;
    16   assume "x - y = 0r";
    31   assume "x - y = 0r";
    17   have "x + - y = x - y"; by simp;
    32   have "x + - y = x - y"; by simp;
    18   also; have "... = 0r"; .;
    33   also; have "... = 0r"; .;
    19   finally; have "x + - y = 0r"; .;
    34   finally; have "x + - y = 0r"; .;
    20   hence "x = - (- y)"; by (rule real_add_minus_eq_minus);
    35   hence "x = - (- y)"; by (rule real_add_minus_eq_minus);
    21   also; have "... = y"; by asm_simp;
    36   also; have "... = y"; by (simp!);
    22   finally; show "x = y"; .;
    37   finally; show "x = y"; .;
    23 qed;
    38 qed;
    24 
    39 
    25 lemma rabs_minus_one: "rabs (- 1r) = 1r"; 
    40 lemma rabs_minus_one: "rabs (- 1r) = 1r"; 
    26 proof -; 
    41 proof -; 
    27   have "rabs (- 1r) = - (- 1r)"; 
    42   have "rabs (- 1r) = - (- 1r)"; 
    28   proof (rule rabs_minus_eqI2);
    43   proof (rule rabs_minus_eqI2);
    29     show "-1r < 0r";
    44     show "-1r < 0r";
    30       by (rule real_minus_zero_less_iff[RS iffD1], simp, rule real_zero_less_one);
    45       by (rule real_minus_zero_less_iff[RS iffD1], simp, rule real_zero_less_one);
    31   qed;
    46   qed;
    32   also; have "... = 1r"; by asm_simp; 
    47   also; have "... = 1r"; by (simp!); 
    33   finally; show ?thesis; by asm_simp;
    48   finally; show ?thesis; by (simp!);
    34 qed;
    49 qed;
    35 
    50 
    36 axioms real_mult_le_le_mono2: "[| 0r <= z; x <= y |] ==> x * z <= y * z";
    51 axioms real_mult_le_le_mono2: "[| 0r <= z; x <= y |] ==> x * z <= y * z";
    37 
    52 
    38 axioms real_mult_less_le_anti: "[| z < 0r; x <= y |] ==> z * y <= z * x";
    53 axioms real_mult_less_le_anti: "[| z < 0r; x <= y |] ==> z * y <= z * x";
    39 
    54 
    40 axioms real_mult_less_le_mono: "[| 0r < z; x <= y |] ==> z * x <= z * y";
    55 axioms real_mult_less_le_mono: "[| 0r < z; x <= y |] ==> z * x <= z * y";
    41 
    56 
    42 axioms real_mult_diff_distrib: "a * (- x - y) = - a * x - a * y";
    57 axioms real_mult_diff_distrib: "a * (- x - (y::real)) = - a * x - a * y";
    43 
    58 
    44 axioms real_mult_diff_distrib2: "a * (x - y) = a * x - a * y";
    59 axioms real_mult_diff_distrib2: "a * (x - (y::real)) = a * x - a * y";
    45 
    60 
    46 lemma less_imp_le: "(x::real) < y ==> x <= y";
    61 lemma less_imp_le: "(x::real) < y ==> x <= y";
    47   by (asm_simp only: real_less_imp_le);
    62   by (simp! only: real_less_imp_le);
    48 
    63 
    49 lemma le_noteq_imp_less: "[|x <= (r::'a::order); x ~= r |] ==> x < r";
    64 lemma le_noteq_imp_less: "[|x <= (r::'a::order); x ~= r |] ==> x < r";
    50 proof -;
    65 proof -;
    51   assume "x <= (r::'a::order)";
    66   assume "x <= (r::'a::order)";
    52   assume "x ~= r";
    67   assume "x ~= r";
    53   then; have "x < r | x = r";
    68   then; have "x < r | x = r";
    54     by (asm_simp add: order_le_less);
    69     by (simp! add: order_le_less);
    55   then; show ?thesis;
    70   then; show ?thesis;
    56     by asm_simp;
    71     by (simp!);
    57 qed;
    72 qed;
    58 
    73 
    59 lemma minus_le: "- (x::real) <= y ==> - y <= x";
    74 lemma minus_le: "- (x::real) <= y ==> - y <= x";
    60 proof -; 
    75 proof -; 
    61   assume "- x <= y";
    76   assume "- x <= y";
    63   thus "-y <= x";
    78   thus "-y <= x";
    64   proof;
    79   proof;
    65      assume "- x < y"; show ?thesis; 
    80      assume "- x < y"; show ?thesis; 
    66      proof -; 
    81      proof -; 
    67        have "- y < - (- x)"; by (rule real_less_swap_iff [RS iffD1]); 
    82        have "- y < - (- x)"; by (rule real_less_swap_iff [RS iffD1]); 
    68        hence "- y < x"; by asm_simp;
    83        hence "- y < x"; by (simp!);
    69        thus ?thesis; by (rule real_less_imp_le);
    84        thus ?thesis; by (rule real_less_imp_le);
    70     qed;
    85     qed;
    71   next; 
    86   next; 
    72      assume "- x = y"; show ?thesis; by force;
    87      assume "- x = y"; show ?thesis; by (force!);
    73   qed;
    88   qed;
    74 qed;
    89 qed;
    75 
    90 
    76 lemma rabs_interval_iff_1: "(rabs (x::real) <= r) = (-r <= x & x <= r)";
    91 lemma rabs_interval_iff_1: "(rabs (x::real) <= r) = (-r <= x & x <= r)";
    77 proof (rule case [of "rabs x = r"]);
    92 proof (rule case [of "rabs x = r"]);
    80   proof;
    95   proof;
    81     assume "rabs x <= r";
    96     assume "rabs x <= r";
    82     show "- r <= x & x <= r";
    97     show "- r <= x & x <= r";
    83     proof;
    98     proof;
    84       have "- x <= rabs x"; by (rule rabs_ge_minus_self);
    99       have "- x <= rabs x"; by (rule rabs_ge_minus_self);
    85       hence "- x <= r"; by asm_simp;
   100       hence "- x <= r"; by (simp!);
    86       thus "- r <= x"; by (asm_simp add : minus_le [of "x" "r"]);
   101       thus "- r <= x"; by (simp! add : minus_le [of "x" "r"]);
    87       have "x <= rabs x"; by (rule rabs_ge_self); 
   102       have "x <= rabs x"; by (rule rabs_ge_self); 
    88       thus "x <= r"; by asm_simp; 
   103       thus "x <= r"; by (simp!); 
    89     qed;
   104     qed;
    90   next; 
   105   next; 
    91     assume "- r <= x & x <= r";
   106     assume "- r <= x & x <= r";
    92     show "rabs x <= r";  by fast;  
   107     show "rabs x <= r"; by (fast!);
    93   qed;
   108   qed;
    94 next;   
   109 next;   
    95   assume "rabs x ~= r";
   110   assume "rabs x ~= r";
    96   show ?thesis; 
   111   show ?thesis; 
    97   proof;
   112   proof;
   111     proof; 
   126     proof; 
   112       assume "- r <= x" "x <= r";
   127       assume "- r <= x" "x <= r";
   113       show ?thesis; 
   128       show ?thesis; 
   114       proof (rule rabs_disj [RS disjE, of x]);
   129       proof (rule rabs_disj [RS disjE, of x]);
   115         assume  "rabs x = x";
   130         assume  "rabs x = x";
   116         show ?thesis; by asm_simp; 
   131         show ?thesis; by (simp!); 
   117       next; 
   132       next; 
   118         assume "rabs x = - x";
   133         assume "rabs x = - x";
   119         from minus_le [of r x]; show ?thesis; by asm_simp;
   134         from minus_le [of r x]; show ?thesis; by (simp!);
   120       qed;
   135       qed;
   121     qed;
   136     qed;
   122   qed;
   137   qed;
   123 qed;
   138 qed;
   124 
   139