src/HOL/MetisExamples/BigO.thy
changeset 29667 53103fc8ffa3
parent 29511 7071b017cb35
child 29823 0ab754d13ccd
equal deleted inserted replaced
29549:7187373c6cb1 29667:53103fc8ffa3
   484 assume 0: "\<And>y. lb y \<le> f y"
   484 assume 0: "\<And>y. lb y \<le> f y"
   485 assume 1: "\<not> (0\<Colon>'b) \<le> f x + - lb x"
   485 assume 1: "\<not> (0\<Colon>'b) \<le> f x + - lb x"
   486 have 2: "\<And>X3. (0\<Colon>'b) + X3 = X3"
   486 have 2: "\<And>X3. (0\<Colon>'b) + X3 = X3"
   487   by (metis diff_eq_eq right_minus_eq)
   487   by (metis diff_eq_eq right_minus_eq)
   488 have 3: "\<not> (0\<Colon>'b) \<le> f x - lb x"
   488 have 3: "\<not> (0\<Colon>'b) \<le> f x - lb x"
   489   by (metis 1 compare_rls(1))
   489   by (metis 1 diff_minus)
   490 have 4: "\<not> (0\<Colon>'b) + lb x \<le> f x"
   490 have 4: "\<not> (0\<Colon>'b) + lb x \<le> f x"
   491   by (metis 3 le_diff_eq)
   491   by (metis 3 le_diff_eq)
   492 show "False"
   492 show "False"
   493   by (metis 4 2 0)
   493   by (metis 4 2 0)
   494 qed
   494 qed
  1195   apply (rule allI)
  1195   apply (rule allI)
  1196   apply (subst fun_diff_def)
  1196   apply (subst fun_diff_def)
  1197 apply (erule thin_rl) 
  1197 apply (erule thin_rl) 
  1198 (*sledgehammer*); 
  1198 (*sledgehammer*); 
  1199   apply (case_tac "0 <= f x - k x")
  1199   apply (case_tac "0 <= f x - k x")
  1200   apply (simp del: compare_rls diff_minus);
  1200   apply (simp)
  1201   apply (subst abs_of_nonneg)
  1201   apply (subst abs_of_nonneg)
  1202   apply (drule_tac x = x in spec) back
  1202   apply (drule_tac x = x in spec) back
  1203 ML_command{*AtpWrapper.problem_name := "BigO__bigo_lesso3_simpler"*}
  1203 ML_command{*AtpWrapper.problem_name := "BigO__bigo_lesso3_simpler"*}
  1204 apply (metis diff_less_0_iff_less linorder_not_le not_leE uminus_add_conv_diff xt1(12) xt1(6))
  1204 apply (metis diff_less_0_iff_less linorder_not_le not_leE uminus_add_conv_diff xt1(12) xt1(6))
  1205 apply (metis add_minus_cancel diff_le_eq le_diff_eq uminus_add_conv_diff)
  1205 apply (metis add_minus_cancel diff_le_eq le_diff_eq uminus_add_conv_diff)
  1214   apply (simp add: fun_diff_def)
  1214   apply (simp add: fun_diff_def)
  1215   apply (drule bigo_useful_add)
  1215   apply (drule bigo_useful_add)
  1216   apply assumption
  1216   apply assumption
  1217   apply (erule bigo_lesseq2) back
  1217   apply (erule bigo_lesseq2) back
  1218   apply (rule allI)
  1218   apply (rule allI)
  1219   apply (auto simp add: func_plus fun_diff_def compare_rls 
  1219   apply (auto simp add: func_plus fun_diff_def algebra_simps
  1220     split: split_max abs_split)
  1220     split: split_max abs_split)
  1221 done
  1221 done
  1222 
  1222 
  1223 ML_command{*AtpWrapper.problem_name := "BigO__bigo_lesso5"*}
  1223 ML_command{*AtpWrapper.problem_name := "BigO__bigo_lesso5"*}
  1224 lemma bigo_lesso5: "f <o g =o O(h) ==>
  1224 lemma bigo_lesso5: "f <o g =o O(h) ==>