src/HOL/MetisExamples/BigO.thy
changeset 26333 68e5eee47a45
parent 26312 e9a65675e5e8
child 26483 b8f62618ad0a
equal deleted inserted replaced
26332:aa54cd3ddc9f 26333:68e5eee47a45
    29   apply (metis abs_ge_minus_self abs_ge_zero abs_minus_cancel abs_of_nonneg equation_minus_iff Orderings.xt1(6) abs_mult)
    29   apply (metis abs_ge_minus_self abs_ge_zero abs_minus_cancel abs_of_nonneg equation_minus_iff Orderings.xt1(6) abs_mult)
    30   done
    30   done
    31 
    31 
    32 (*** Now various verions with an increasing modulus ***)
    32 (*** Now various verions with an increasing modulus ***)
    33 
    33 
    34 declare [[reconstruction_modulus = 1]]
    34 declare [[sledgehammer_modulus = 1]]
    35 
    35 
    36 lemma (*bigo_pos_const:*) "(EX (c::'a::ordered_idom). 
    36 lemma (*bigo_pos_const:*) "(EX (c::'a::ordered_idom). 
    37     ALL x. (abs (h x)) <= (c * (abs (f x))))
    37     ALL x. (abs (h x)) <= (c * (abs (f x))))
    38       = (EX c. 0 < c & (ALL x. (abs(h x)) <= (c * (abs (f x)))))"
    38       = (EX c. 0 < c & (ALL x. (abs(h x)) <= (c * (abs (f x)))))"
    39   apply auto
    39   apply auto
    98   by (metis 17 3 15)
    98   by (metis 17 3 15)
    99 show "False"
    99 show "False"
   100   by (metis abs_le_iff 5 18 14)
   100   by (metis abs_le_iff 5 18 14)
   101 qed
   101 qed
   102 
   102 
   103 declare [[reconstruction_modulus = 2]]
   103 declare [[sledgehammer_modulus = 2]]
   104 
   104 
   105 lemma (*bigo_pos_const:*) "(EX (c::'a::ordered_idom). 
   105 lemma (*bigo_pos_const:*) "(EX (c::'a::ordered_idom). 
   106     ALL x. (abs (h x)) <= (c * (abs (f x))))
   106     ALL x. (abs (h x)) <= (c * (abs (f x))))
   107       = (EX c. 0 < c & (ALL x. (abs(h x)) <= (c * (abs (f x)))))"
   107       = (EX c. 0 < c & (ALL x. (abs(h x)) <= (c * (abs (f x)))))"
   108   apply auto
   108   apply auto
   139   by (metis abs_ge_self xt1(6) abs_le_D1)
   139   by (metis abs_ge_self xt1(6) abs_le_D1)
   140 show "False"
   140 show "False"
   141   by (metis 8 abs_ge_zero abs_mult_pos abs_mult 1 9 3 abs_le_iff)
   141   by (metis 8 abs_ge_zero abs_mult_pos abs_mult 1 9 3 abs_le_iff)
   142 qed
   142 qed
   143 
   143 
   144 declare [[reconstruction_modulus = 3]]
   144 declare [[sledgehammer_modulus = 3]]
   145 
   145 
   146 lemma (*bigo_pos_const:*) "(EX (c::'a::ordered_idom). 
   146 lemma (*bigo_pos_const:*) "(EX (c::'a::ordered_idom). 
   147     ALL x. (abs (h x)) <= (c * (abs (f x))))
   147     ALL x. (abs (h x)) <= (c * (abs (f x))))
   148       = (EX c. 0 < c & (ALL x. (abs(h x)) <= (c * (abs (f x)))))"
   148       = (EX c. 0 < c & (ALL x. (abs(h x)) <= (c * (abs (f x)))))"
   149   apply auto
   149   apply auto
   171 show "False"
   171 show "False"
   172   by (metis abs_mult mult_commute 3 abs_mult_pos linorder_linear 0 abs_le_D2 5 1 abs_le_iff)
   172   by (metis abs_mult mult_commute 3 abs_mult_pos linorder_linear 0 abs_le_D2 5 1 abs_le_iff)
   173 qed
   173 qed
   174 
   174 
   175 
   175 
   176 declare [[reconstruction_modulus = 1]]
   176 declare [[sledgehammer_modulus = 1]]
   177 
   177 
   178 lemma (*bigo_pos_const:*) "(EX (c::'a::ordered_idom). 
   178 lemma (*bigo_pos_const:*) "(EX (c::'a::ordered_idom). 
   179     ALL x. (abs (h x)) <= (c * (abs (f x))))
   179     ALL x. (abs (h x)) <= (c * (abs (f x))))
   180       = (EX c. 0 < c & (ALL x. (abs(h x)) <= (c * (abs (f x)))))"
   180       = (EX c. 0 < c & (ALL x. (abs(h x)) <= (c * (abs (f x)))))"
   181   apply auto
   181   apply auto
   207 show "False"
   207 show "False"
   208   by (metis 6 8 10 abs_leI)
   208   by (metis 6 8 10 abs_leI)
   209 qed
   209 qed
   210 
   210 
   211 
   211 
   212 declare [[reconstruction_sorts = true]]
   212 declare [[sledgehammer_sorts = true]]
   213 
   213 
   214 lemma bigo_alt_def: "O(f) = 
   214 lemma bigo_alt_def: "O(f) = 
   215     {h. EX c. (0 < c & (ALL x. abs (h x) <= c * abs (f x)))}"
   215     {h. EX c. (0 < c & (ALL x. abs (h x) <= c * abs (f x)))}"
   216 by (auto simp add: bigo_def bigo_pos_const)
   216 by (auto simp add: bigo_def bigo_pos_const)
   217 
   217