author | nipkow |
Thu, 07 Jun 2018 19:36:12 +0200 | |
changeset 68406 | 6beb45f6cf67 |
parent 68246 | b48bab511939 |
child 68696 | 8a071eeddb2a |
permissions | -rw-r--r-- |
68246
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1 |
(* |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2 |
File: Landau_Symbols_Definition.thy |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
3 |
Author: Manuel Eberl <eberlm@in.tum.de> |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
4 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
5 |
Landau symbols for reasoning about the asymptotic growth of functions. |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
6 |
*) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
7 |
section {* Definition of Landau symbols *} |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
8 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
9 |
theory Landau_Symbols |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
10 |
imports |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
11 |
Complex_Main |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
12 |
begin |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
13 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
14 |
lemma eventually_subst': |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
15 |
"eventually (\<lambda>x. f x = g x) F \<Longrightarrow> eventually (\<lambda>x. P x (f x)) F = eventually (\<lambda>x. P x (g x)) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
16 |
by (rule eventually_subst, erule eventually_rev_mp) simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
17 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
18 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
19 |
subsection {* Definition of Landau symbols *} |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
20 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
21 |
text {* |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
22 |
Our Landau symbols are sign-oblivious, i.e. any function always has the same growth |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
23 |
as its absolute. This has the advantage of making some cancelling rules for sums nicer, but |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
24 |
introduces some problems in other places. Nevertheless, we found this definition more convenient |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
25 |
to work with. |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
26 |
*} |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
27 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
28 |
definition bigo :: "'a filter \<Rightarrow> ('a \<Rightarrow> ('b :: real_normed_field)) \<Rightarrow> ('a \<Rightarrow> 'b) set" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
29 |
("(1O[_]'(_'))") |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
30 |
where "bigo F g = {f. (\<exists>c>0. eventually (\<lambda>x. norm (f x) \<le> c * norm (g x)) F)}" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
31 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
32 |
definition smallo :: "'a filter \<Rightarrow> ('a \<Rightarrow> ('b :: real_normed_field)) \<Rightarrow> ('a \<Rightarrow> 'b) set" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
33 |
("(1o[_]'(_'))") |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
34 |
where "smallo F g = {f. (\<forall>c>0. eventually (\<lambda>x. norm (f x) \<le> c * norm (g x)) F)}" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
35 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
36 |
definition bigomega :: "'a filter \<Rightarrow> ('a \<Rightarrow> ('b :: real_normed_field)) \<Rightarrow> ('a \<Rightarrow> 'b) set" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
37 |
("(1\<Omega>[_]'(_'))") |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
38 |
where "bigomega F g = {f. (\<exists>c>0. eventually (\<lambda>x. norm (f x) \<ge> c * norm (g x)) F)}" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
39 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
40 |
definition smallomega :: "'a filter \<Rightarrow> ('a \<Rightarrow> ('b :: real_normed_field)) \<Rightarrow> ('a \<Rightarrow> 'b) set" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
41 |
("(1\<omega>[_]'(_'))") |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
42 |
where "smallomega F g = {f. (\<forall>c>0. eventually (\<lambda>x. norm (f x) \<ge> c * norm (g x)) F)}" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
43 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
44 |
definition bigtheta :: "'a filter \<Rightarrow> ('a \<Rightarrow> ('b :: real_normed_field)) \<Rightarrow> ('a \<Rightarrow> 'b) set" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
45 |
("(1\<Theta>[_]'(_'))") |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
46 |
where "bigtheta F g = bigo F g \<inter> bigomega F g" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
47 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
48 |
abbreviation bigo_at_top ("(2O'(_'))") where |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
49 |
"O(g) \<equiv> bigo at_top g" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
50 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
51 |
abbreviation smallo_at_top ("(2o'(_'))") where |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
52 |
"o(g) \<equiv> smallo at_top g" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
53 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
54 |
abbreviation bigomega_at_top ("(2\<Omega>'(_'))") where |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
55 |
"\<Omega>(g) \<equiv> bigomega at_top g" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
56 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
57 |
abbreviation smallomega_at_top ("(2\<omega>'(_'))") where |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
58 |
"\<omega>(g) \<equiv> smallomega at_top g" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
59 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
60 |
abbreviation bigtheta_at_top ("(2\<Theta>'(_'))") where |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
61 |
"\<Theta>(g) \<equiv> bigtheta at_top g" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
62 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
63 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
64 |
text {* The following is a set of properties that all Landau symbols satisfy. *} |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
65 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
66 |
named_theorems landau_divide_simps |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
67 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
68 |
locale landau_symbol = |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
69 |
fixes L :: "'a filter \<Rightarrow> ('a \<Rightarrow> ('b :: real_normed_field)) \<Rightarrow> ('a \<Rightarrow> 'b) set" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
70 |
and L' :: "'c filter \<Rightarrow> ('c \<Rightarrow> ('b :: real_normed_field)) \<Rightarrow> ('c \<Rightarrow> 'b) set" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
71 |
and Lr :: "'a filter \<Rightarrow> ('a \<Rightarrow> real) \<Rightarrow> ('a \<Rightarrow> real) set" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
72 |
assumes bot': "L bot f = UNIV" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
73 |
assumes filter_mono': "F1 \<le> F2 \<Longrightarrow> L F2 f \<subseteq> L F1 f" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
74 |
assumes in_filtermap_iff: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
75 |
"f' \<in> L (filtermap h' F') g' \<longleftrightarrow> (\<lambda>x. f' (h' x)) \<in> L' F' (\<lambda>x. g' (h' x))" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
76 |
assumes filtercomap: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
77 |
"f' \<in> L F'' g' \<Longrightarrow> (\<lambda>x. f' (h' x)) \<in> L' (filtercomap h' F'') (\<lambda>x. g' (h' x))" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
78 |
assumes sup: "f \<in> L F1 g \<Longrightarrow> f \<in> L F2 g \<Longrightarrow> f \<in> L (sup F1 F2) g" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
79 |
assumes in_cong: "eventually (\<lambda>x. f x = g x) F \<Longrightarrow> f \<in> L F (h) \<longleftrightarrow> g \<in> L F (h)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
80 |
assumes cong: "eventually (\<lambda>x. f x = g x) F \<Longrightarrow> L F (f) = L F (g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
81 |
assumes cong_bigtheta: "f \<in> \<Theta>[F](g) \<Longrightarrow> L F (f) = L F (g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
82 |
assumes in_cong_bigtheta: "f \<in> \<Theta>[F](g) \<Longrightarrow> f \<in> L F (h) \<longleftrightarrow> g \<in> L F (h)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
83 |
assumes cmult [simp]: "c \<noteq> 0 \<Longrightarrow> L F (\<lambda>x. c * f x) = L F (f)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
84 |
assumes cmult_in_iff [simp]: "c \<noteq> 0 \<Longrightarrow> (\<lambda>x. c * f x) \<in> L F (g) \<longleftrightarrow> f \<in> L F (g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
85 |
assumes mult_left [simp]: "f \<in> L F (g) \<Longrightarrow> (\<lambda>x. h x * f x) \<in> L F (\<lambda>x. h x * g x)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
86 |
assumes inverse: "eventually (\<lambda>x. f x \<noteq> 0) F \<Longrightarrow> eventually (\<lambda>x. g x \<noteq> 0) F \<Longrightarrow> |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
87 |
f \<in> L F (g) \<Longrightarrow> (\<lambda>x. inverse (g x)) \<in> L F (\<lambda>x. inverse (f x))" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
88 |
assumes subsetI: "f \<in> L F (g) \<Longrightarrow> L F (f) \<subseteq> L F (g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
89 |
assumes plus_subset1: "f \<in> o[F](g) \<Longrightarrow> L F (g) \<subseteq> L F (\<lambda>x. f x + g x)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
90 |
assumes trans: "f \<in> L F (g) \<Longrightarrow> g \<in> L F (h) \<Longrightarrow> f \<in> L F (h)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
91 |
assumes compose: "f \<in> L F (g) \<Longrightarrow> filterlim h' F G \<Longrightarrow> (\<lambda>x. f (h' x)) \<in> L' G (\<lambda>x. g (h' x))" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
92 |
assumes norm_iff [simp]: "(\<lambda>x. norm (f x)) \<in> Lr F (\<lambda>x. norm (g x)) \<longleftrightarrow> f \<in> L F (g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
93 |
assumes abs [simp]: "Lr Fr (\<lambda>x. \<bar>fr x\<bar>) = Lr Fr fr" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
94 |
assumes abs_in_iff [simp]: "(\<lambda>x. \<bar>fr x\<bar>) \<in> Lr Fr gr \<longleftrightarrow> fr \<in> Lr Fr gr" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
95 |
begin |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
96 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
97 |
lemma bot [simp]: "f \<in> L bot g" by (simp add: bot') |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
98 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
99 |
lemma filter_mono: "F1 \<le> F2 \<Longrightarrow> f \<in> L F2 g \<Longrightarrow> f \<in> L F1 g" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
100 |
using filter_mono'[of F1 F2] by blast |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
101 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
102 |
lemma cong_ex: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
103 |
"eventually (\<lambda>x. f1 x = f2 x) F \<Longrightarrow> eventually (\<lambda>x. g1 x = g2 x) F \<Longrightarrow> |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
104 |
f1 \<in> L F (g1) \<longleftrightarrow> f2 \<in> L F (g2)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
105 |
by (subst cong, assumption, subst in_cong, assumption, rule refl) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
106 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
107 |
lemma cong_ex_bigtheta: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
108 |
"f1 \<in> \<Theta>[F](f2) \<Longrightarrow> g1 \<in> \<Theta>[F](g2) \<Longrightarrow> f1 \<in> L F (g1) \<longleftrightarrow> f2 \<in> L F (g2)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
109 |
by (subst cong_bigtheta, assumption, subst in_cong_bigtheta, assumption, rule refl) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
110 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
111 |
lemma bigtheta_trans1: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
112 |
"f \<in> L F (g) \<Longrightarrow> g \<in> \<Theta>[F](h) \<Longrightarrow> f \<in> L F (h)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
113 |
by (subst cong_bigtheta[symmetric]) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
114 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
115 |
lemma bigtheta_trans2: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
116 |
"f \<in> \<Theta>[F](g) \<Longrightarrow> g \<in> L F (h) \<Longrightarrow> f \<in> L F (h)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
117 |
by (subst in_cong_bigtheta) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
118 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
119 |
lemma cmult' [simp]: "c \<noteq> 0 \<Longrightarrow> L F (\<lambda>x. f x * c) = L F (f)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
120 |
by (subst mult.commute) (rule cmult) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
121 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
122 |
lemma cmult_in_iff' [simp]: "c \<noteq> 0 \<Longrightarrow> (\<lambda>x. f x * c) \<in> L F (g) \<longleftrightarrow> f \<in> L F (g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
123 |
by (subst mult.commute) (rule cmult_in_iff) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
124 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
125 |
lemma cdiv [simp]: "c \<noteq> 0 \<Longrightarrow> L F (\<lambda>x. f x / c) = L F (f)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
126 |
using cmult'[of "inverse c" F f] by (simp add: field_simps) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
127 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
128 |
lemma cdiv_in_iff' [simp]: "c \<noteq> 0 \<Longrightarrow> (\<lambda>x. f x / c) \<in> L F (g) \<longleftrightarrow> f \<in> L F (g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
129 |
using cmult_in_iff'[of "inverse c" f] by (simp add: field_simps) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
130 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
131 |
lemma uminus [simp]: "L F (\<lambda>x. -g x) = L F (g)" using cmult[of "-1"] by simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
132 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
133 |
lemma uminus_in_iff [simp]: "(\<lambda>x. -f x) \<in> L F (g) \<longleftrightarrow> f \<in> L F (g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
134 |
using cmult_in_iff[of "-1"] by simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
135 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
136 |
lemma const: "c \<noteq> 0 \<Longrightarrow> L F (\<lambda>_. c) = L F (\<lambda>_. 1)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
137 |
by (subst (2) cmult[symmetric]) simp_all |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
138 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
139 |
(* Simplifier loops without the NO_MATCH *) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
140 |
lemma const' [simp]: "NO_MATCH 1 c \<Longrightarrow> c \<noteq> 0 \<Longrightarrow> L F (\<lambda>_. c) = L F (\<lambda>_. 1)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
141 |
by (rule const) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
142 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
143 |
lemma const_in_iff: "c \<noteq> 0 \<Longrightarrow> (\<lambda>_. c) \<in> L F (f) \<longleftrightarrow> (\<lambda>_. 1) \<in> L F (f)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
144 |
using cmult_in_iff'[of c "\<lambda>_. 1"] by simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
145 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
146 |
lemma const_in_iff' [simp]: "NO_MATCH 1 c \<Longrightarrow> c \<noteq> 0 \<Longrightarrow> (\<lambda>_. c) \<in> L F (f) \<longleftrightarrow> (\<lambda>_. 1) \<in> L F (f)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
147 |
by (rule const_in_iff) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
148 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
149 |
lemma plus_subset2: "g \<in> o[F](f) \<Longrightarrow> L F (f) \<subseteq> L F (\<lambda>x. f x + g x)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
150 |
by (subst add.commute) (rule plus_subset1) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
151 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
152 |
lemma mult_right [simp]: "f \<in> L F (g) \<Longrightarrow> (\<lambda>x. f x * h x) \<in> L F (\<lambda>x. g x * h x)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
153 |
using mult_left by (simp add: mult.commute) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
154 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
155 |
lemma mult: "f1 \<in> L F (g1) \<Longrightarrow> f2 \<in> L F (g2) \<Longrightarrow> (\<lambda>x. f1 x * f2 x) \<in> L F (\<lambda>x. g1 x * g2 x)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
156 |
by (rule trans, erule mult_left, erule mult_right) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
157 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
158 |
lemma inverse_cancel: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
159 |
assumes "eventually (\<lambda>x. f x \<noteq> 0) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
160 |
assumes "eventually (\<lambda>x. g x \<noteq> 0) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
161 |
shows "(\<lambda>x. inverse (f x)) \<in> L F (\<lambda>x. inverse (g x)) \<longleftrightarrow> g \<in> L F (f)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
162 |
proof |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
163 |
assume "(\<lambda>x. inverse (f x)) \<in> L F (\<lambda>x. inverse (g x))" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
164 |
from inverse[OF _ _ this] assms show "g \<in> L F (f)" by simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
165 |
qed (intro inverse assms) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
166 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
167 |
lemma divide_right: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
168 |
assumes "eventually (\<lambda>x. h x \<noteq> 0) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
169 |
assumes "f \<in> L F (g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
170 |
shows "(\<lambda>x. f x / h x) \<in> L F (\<lambda>x. g x / h x)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
171 |
by (subst (1 2) divide_inverse) (intro mult_right inverse assms) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
172 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
173 |
lemma divide_right_iff: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
174 |
assumes "eventually (\<lambda>x. h x \<noteq> 0) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
175 |
shows "(\<lambda>x. f x / h x) \<in> L F (\<lambda>x. g x / h x) \<longleftrightarrow> f \<in> L F (g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
176 |
proof |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
177 |
assume "(\<lambda>x. f x / h x) \<in> L F (\<lambda>x. g x / h x)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
178 |
from mult_right[OF this, of h] assms show "f \<in> L F (g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
179 |
by (subst (asm) cong_ex[of _ f F _ g]) (auto elim!: eventually_mono) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
180 |
qed (simp add: divide_right assms) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
181 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
182 |
lemma divide_left: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
183 |
assumes "eventually (\<lambda>x. f x \<noteq> 0) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
184 |
assumes "eventually (\<lambda>x. g x \<noteq> 0) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
185 |
assumes "g \<in> L F(f)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
186 |
shows "(\<lambda>x. h x / f x) \<in> L F (\<lambda>x. h x / g x)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
187 |
by (subst (1 2) divide_inverse) (intro mult_left inverse assms) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
188 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
189 |
lemma divide_left_iff: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
190 |
assumes "eventually (\<lambda>x. f x \<noteq> 0) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
191 |
assumes "eventually (\<lambda>x. g x \<noteq> 0) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
192 |
assumes "eventually (\<lambda>x. h x \<noteq> 0) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
193 |
shows "(\<lambda>x. h x / f x) \<in> L F (\<lambda>x. h x / g x) \<longleftrightarrow> g \<in> L F (f)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
194 |
proof |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
195 |
assume A: "(\<lambda>x. h x / f x) \<in> L F (\<lambda>x. h x / g x)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
196 |
from assms have B: "eventually (\<lambda>x. h x / f x / h x = inverse (f x)) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
197 |
by eventually_elim (simp add: divide_inverse) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
198 |
from assms have C: "eventually (\<lambda>x. h x / g x / h x = inverse (g x)) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
199 |
by eventually_elim (simp add: divide_inverse) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
200 |
from divide_right[OF assms(3) A] assms show "g \<in> L F (f)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
201 |
by (subst (asm) cong_ex[OF B C]) (simp add: inverse_cancel) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
202 |
qed (simp add: divide_left assms) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
203 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
204 |
lemma divide: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
205 |
assumes "eventually (\<lambda>x. g1 x \<noteq> 0) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
206 |
assumes "eventually (\<lambda>x. g2 x \<noteq> 0) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
207 |
assumes "f1 \<in> L F (f2)" "g2 \<in> L F (g1)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
208 |
shows "(\<lambda>x. f1 x / g1 x) \<in> L F (\<lambda>x. f2 x / g2 x)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
209 |
by (subst (1 2) divide_inverse) (intro mult inverse assms) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
210 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
211 |
lemma divide_eq1: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
212 |
assumes "eventually (\<lambda>x. h x \<noteq> 0) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
213 |
shows "f \<in> L F (\<lambda>x. g x / h x) \<longleftrightarrow> (\<lambda>x. f x * h x) \<in> L F (g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
214 |
proof- |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
215 |
have "f \<in> L F (\<lambda>x. g x / h x) \<longleftrightarrow> (\<lambda>x. f x * h x / h x) \<in> L F (\<lambda>x. g x / h x)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
216 |
using assms by (intro in_cong) (auto elim: eventually_mono) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
217 |
thus ?thesis by (simp only: divide_right_iff assms) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
218 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
219 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
220 |
lemma divide_eq2: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
221 |
assumes "eventually (\<lambda>x. h x \<noteq> 0) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
222 |
shows "(\<lambda>x. f x / h x) \<in> L F (\<lambda>x. g x) \<longleftrightarrow> f \<in> L F (\<lambda>x. g x * h x)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
223 |
proof- |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
224 |
have "L F (\<lambda>x. g x) = L F (\<lambda>x. g x * h x / h x)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
225 |
using assms by (intro cong) (auto elim: eventually_mono) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
226 |
thus ?thesis by (simp only: divide_right_iff assms) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
227 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
228 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
229 |
lemma inverse_eq1: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
230 |
assumes "eventually (\<lambda>x. g x \<noteq> 0) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
231 |
shows "f \<in> L F (\<lambda>x. inverse (g x)) \<longleftrightarrow> (\<lambda>x. f x * g x) \<in> L F (\<lambda>_. 1)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
232 |
using divide_eq1[of g F f "\<lambda>_. 1"] by (simp add: divide_inverse assms) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
233 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
234 |
lemma inverse_eq2: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
235 |
assumes "eventually (\<lambda>x. f x \<noteq> 0) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
236 |
shows "(\<lambda>x. inverse (f x)) \<in> L F (g) \<longleftrightarrow> (\<lambda>x. 1) \<in> L F (\<lambda>x. f x * g x)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
237 |
using divide_eq2[of f F "\<lambda>_. 1" g] by (simp add: divide_inverse assms mult_ac) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
238 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
239 |
lemma inverse_flip: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
240 |
assumes "eventually (\<lambda>x. g x \<noteq> 0) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
241 |
assumes "eventually (\<lambda>x. h x \<noteq> 0) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
242 |
assumes "(\<lambda>x. inverse (g x)) \<in> L F (h)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
243 |
shows "(\<lambda>x. inverse (h x)) \<in> L F (g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
244 |
using assms by (simp add: divide_eq1 divide_eq2 inverse_eq_divide mult.commute) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
245 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
246 |
lemma lift_trans: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
247 |
assumes "f \<in> L F (g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
248 |
assumes "(\<lambda>x. t x (g x)) \<in> L F (h)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
249 |
assumes "\<And>f g. f \<in> L F (g) \<Longrightarrow> (\<lambda>x. t x (f x)) \<in> L F (\<lambda>x. t x (g x))" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
250 |
shows "(\<lambda>x. t x (f x)) \<in> L F (h)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
251 |
by (rule trans[OF assms(3)[OF assms(1)] assms(2)]) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
252 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
253 |
lemma lift_trans': |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
254 |
assumes "f \<in> L F (\<lambda>x. t x (g x))" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
255 |
assumes "g \<in> L F (h)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
256 |
assumes "\<And>g h. g \<in> L F (h) \<Longrightarrow> (\<lambda>x. t x (g x)) \<in> L F (\<lambda>x. t x (h x))" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
257 |
shows "f \<in> L F (\<lambda>x. t x (h x))" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
258 |
by (rule trans[OF assms(1) assms(3)[OF assms(2)]]) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
259 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
260 |
lemma lift_trans_bigtheta: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
261 |
assumes "f \<in> L F (g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
262 |
assumes "(\<lambda>x. t x (g x)) \<in> \<Theta>[F](h)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
263 |
assumes "\<And>f g. f \<in> L F (g) \<Longrightarrow> (\<lambda>x. t x (f x)) \<in> L F (\<lambda>x. t x (g x))" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
264 |
shows "(\<lambda>x. t x (f x)) \<in> L F (h)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
265 |
using cong_bigtheta[OF assms(2)] assms(3)[OF assms(1)] by simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
266 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
267 |
lemma lift_trans_bigtheta': |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
268 |
assumes "f \<in> L F (\<lambda>x. t x (g x))" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
269 |
assumes "g \<in> \<Theta>[F](h)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
270 |
assumes "\<And>g h. g \<in> \<Theta>[F](h) \<Longrightarrow> (\<lambda>x. t x (g x)) \<in> \<Theta>[F](\<lambda>x. t x (h x))" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
271 |
shows "f \<in> L F (\<lambda>x. t x (h x))" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
272 |
using cong_bigtheta[OF assms(3)[OF assms(2)]] assms(1) by simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
273 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
274 |
lemma (in landau_symbol) mult_in_1: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
275 |
assumes "f \<in> L F (\<lambda>_. 1)" "g \<in> L F (\<lambda>_. 1)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
276 |
shows "(\<lambda>x. f x * g x) \<in> L F (\<lambda>_. 1)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
277 |
using mult[OF assms] by simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
278 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
279 |
lemma (in landau_symbol) of_real_cancel: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
280 |
"(\<lambda>x. of_real (f x)) \<in> L F (\<lambda>x. of_real (g x)) \<Longrightarrow> f \<in> Lr F g" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
281 |
by (subst (asm) norm_iff [symmetric], subst (asm) (1 2) norm_of_real) simp_all |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
282 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
283 |
lemma (in landau_symbol) of_real_iff: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
284 |
"(\<lambda>x. of_real (f x)) \<in> L F (\<lambda>x. of_real (g x)) \<longleftrightarrow> f \<in> Lr F g" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
285 |
by (subst norm_iff [symmetric], subst (1 2) norm_of_real) simp_all |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
286 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
287 |
lemmas [landau_divide_simps] = |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
288 |
inverse_cancel divide_left_iff divide_eq1 divide_eq2 inverse_eq1 inverse_eq2 |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
289 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
290 |
end |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
291 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
292 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
293 |
text {* |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
294 |
The symbols $O$ and $o$ and $\Omega$ and $\omega$ are dual, so for many rules, replacing $O$ with |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
295 |
$\Omega$, $o$ with $\omega$, and $\leq$ with $\geq$ in a theorem yields another valid theorem. |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
296 |
The following locale captures this fact. |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
297 |
*} |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
298 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
299 |
locale landau_pair = |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
300 |
fixes L l :: "'a filter \<Rightarrow> ('a \<Rightarrow> ('b :: real_normed_field)) \<Rightarrow> ('a \<Rightarrow> 'b) set" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
301 |
fixes L' l' :: "'c filter \<Rightarrow> ('c \<Rightarrow> ('b :: real_normed_field)) \<Rightarrow> ('c \<Rightarrow> 'b) set" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
302 |
fixes Lr lr :: "'a filter \<Rightarrow> ('a \<Rightarrow> real) \<Rightarrow> ('a \<Rightarrow> real) set" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
303 |
and R :: "real \<Rightarrow> real \<Rightarrow> bool" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
304 |
assumes L_def: "L F g = {f. \<exists>c>0. eventually (\<lambda>x. R (norm (f x)) (c * norm (g x))) F}" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
305 |
and l_def: "l F g = {f. \<forall>c>0. eventually (\<lambda>x. R (norm (f x)) (c * norm (g x))) F}" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
306 |
and L'_def: "L' F' g' = {f. \<exists>c>0. eventually (\<lambda>x. R (norm (f x)) (c * norm (g' x))) F'}" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
307 |
and l'_def: "l' F' g' = {f. \<forall>c>0. eventually (\<lambda>x. R (norm (f x)) (c * norm (g' x))) F'}" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
308 |
and Lr_def: "Lr F'' g'' = {f. \<exists>c>0. eventually (\<lambda>x. R (norm (f x)) (c * norm (g'' x))) F''}" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
309 |
and lr_def: "lr F'' g'' = {f. \<forall>c>0. eventually (\<lambda>x. R (norm (f x)) (c * norm (g'' x))) F''}" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
310 |
and R: "R = (\<le>) \<or> R = (\<ge>)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
311 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
312 |
interpretation landau_o: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
313 |
landau_pair bigo smallo bigo smallo bigo smallo "(\<le>)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
314 |
by unfold_locales (auto simp: bigo_def smallo_def intro!: ext) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
315 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
316 |
interpretation landau_omega: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
317 |
landau_pair bigomega smallomega bigomega smallomega bigomega smallomega "(\<ge>)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
318 |
by unfold_locales (auto simp: bigomega_def smallomega_def intro!: ext) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
319 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
320 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
321 |
context landau_pair |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
322 |
begin |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
323 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
324 |
lemmas R_E = disjE [OF R, case_names le ge] |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
325 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
326 |
lemma bigI: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
327 |
"c > 0 \<Longrightarrow> eventually (\<lambda>x. R (norm (f x)) (c * norm (g x))) F \<Longrightarrow> f \<in> L F (g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
328 |
unfolding L_def by blast |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
329 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
330 |
lemma bigE: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
331 |
assumes "f \<in> L F (g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
332 |
obtains c where "c > 0" "eventually (\<lambda>x. R (norm (f x)) (c * (norm (g x)))) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
333 |
using assms unfolding L_def by blast |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
334 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
335 |
lemma smallI: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
336 |
"(\<And>c. c > 0 \<Longrightarrow> eventually (\<lambda>x. R (norm (f x)) (c * (norm (g x)))) F) \<Longrightarrow> f \<in> l F (g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
337 |
unfolding l_def by blast |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
338 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
339 |
lemma smallD: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
340 |
"f \<in> l F (g) \<Longrightarrow> c > 0 \<Longrightarrow> eventually (\<lambda>x. R (norm (f x)) (c * (norm (g x)))) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
341 |
unfolding l_def by blast |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
342 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
343 |
lemma bigE_nonneg_real: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
344 |
assumes "f \<in> Lr F (g)" "eventually (\<lambda>x. f x \<ge> 0) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
345 |
obtains c where "c > 0" "eventually (\<lambda>x. R (f x) (c * \<bar>g x\<bar>)) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
346 |
proof- |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
347 |
from assms(1) obtain c where c: "c > 0" "eventually (\<lambda>x. R (norm (f x)) (c * norm (g x))) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
348 |
by (auto simp: Lr_def) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
349 |
from c(2) assms(2) have "eventually (\<lambda>x. R (f x) (c * \<bar>g x\<bar>)) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
350 |
by eventually_elim simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
351 |
from c(1) and this show ?thesis by (rule that) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
352 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
353 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
354 |
lemma smallD_nonneg_real: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
355 |
assumes "f \<in> lr F (g)" "eventually (\<lambda>x. f x \<ge> 0) F" "c > 0" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
356 |
shows "eventually (\<lambda>x. R (f x) (c * \<bar>g x\<bar>)) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
357 |
using assms by (auto simp: lr_def dest!: spec[of _ c] elim: eventually_elim2) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
358 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
359 |
lemma small_imp_big: "f \<in> l F (g) \<Longrightarrow> f \<in> L F (g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
360 |
by (rule bigI[OF _ smallD, of 1]) simp_all |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
361 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
362 |
lemma small_subset_big: "l F (g) \<subseteq> L F (g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
363 |
using small_imp_big by blast |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
364 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
365 |
lemma R_refl [simp]: "R x x" using R by auto |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
366 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
367 |
lemma R_linear: "\<not>R x y \<Longrightarrow> R y x" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
368 |
using R by auto |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
369 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
370 |
lemma R_trans [trans]: "R a b \<Longrightarrow> R b c \<Longrightarrow> R a c" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
371 |
using R by auto |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
372 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
373 |
lemma R_mult_left_mono: "R a b \<Longrightarrow> c \<ge> 0 \<Longrightarrow> R (c*a) (c*b)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
374 |
using R by (auto simp: mult_left_mono) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
375 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
376 |
lemma R_mult_right_mono: "R a b \<Longrightarrow> c \<ge> 0 \<Longrightarrow> R (a*c) (b*c)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
377 |
using R by (auto simp: mult_right_mono) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
378 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
379 |
lemma big_trans: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
380 |
assumes "f \<in> L F (g)" "g \<in> L F (h)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
381 |
shows "f \<in> L F (h)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
382 |
proof- |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
383 |
from assms(1) guess c by (elim bigE) note c = this |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
384 |
from assms(2) guess d by (elim bigE) note d = this |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
385 |
from c(2) d(2) have "eventually (\<lambda>x. R (norm (f x)) (c * d * (norm (h x)))) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
386 |
proof eventually_elim |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
387 |
fix x assume "R (norm (f x)) (c * (norm (g x)))" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
388 |
also assume "R (norm (g x)) (d * (norm (h x)))" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
389 |
with c(1) have "R (c * (norm (g x))) (c * (d * (norm (h x))))" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
390 |
by (intro R_mult_left_mono) simp_all |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
391 |
finally show "R (norm (f x)) (c * d * (norm (h x)))" by (simp add: algebra_simps) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
392 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
393 |
with c(1) d(1) show ?thesis by (intro bigI[of "c*d"]) simp_all |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
394 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
395 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
396 |
lemma big_small_trans: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
397 |
assumes "f \<in> L F (g)" "g \<in> l F (h)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
398 |
shows "f \<in> l F (h)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
399 |
proof (rule smallI) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
400 |
fix c :: real assume c: "c > 0" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
401 |
from assms(1) guess d by (elim bigE) note d = this |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
402 |
note d(2) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
403 |
moreover from c d assms(2) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
404 |
have "eventually (\<lambda>x. R (norm (g x)) (c * inverse d * norm (h x))) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
405 |
by (intro smallD) simp_all |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
406 |
ultimately show "eventually (\<lambda>x. R (norm (f x)) (c * (norm (h x)))) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
407 |
by eventually_elim (erule R_trans, insert R d(1), auto simp: field_simps) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
408 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
409 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
410 |
lemma small_big_trans: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
411 |
assumes "f \<in> l F (g)" "g \<in> L F (h)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
412 |
shows "f \<in> l F (h)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
413 |
proof (rule smallI) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
414 |
fix c :: real assume c: "c > 0" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
415 |
from assms(2) guess d by (elim bigE) note d = this |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
416 |
note d(2) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
417 |
moreover from c d assms(1) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
418 |
have "eventually (\<lambda>x. R (norm (f x)) (c * inverse d * norm (g x))) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
419 |
by (intro smallD) simp_all |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
420 |
ultimately show "eventually (\<lambda>x. R (norm (f x)) (c * norm (h x))) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
421 |
by eventually_elim (rotate_tac 2, erule R_trans, insert R c d(1), auto simp: field_simps) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
422 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
423 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
424 |
lemma small_trans: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
425 |
"f \<in> l F (g) \<Longrightarrow> g \<in> l F (h) \<Longrightarrow> f \<in> l F (h)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
426 |
by (rule big_small_trans[OF small_imp_big]) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
427 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
428 |
lemma small_big_trans': |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
429 |
"f \<in> l F (g) \<Longrightarrow> g \<in> L F (h) \<Longrightarrow> f \<in> L F (h)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
430 |
by (rule small_imp_big[OF small_big_trans]) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
431 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
432 |
lemma big_small_trans': |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
433 |
"f \<in> L F (g) \<Longrightarrow> g \<in> l F (h) \<Longrightarrow> f \<in> L F (h)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
434 |
by (rule small_imp_big[OF big_small_trans]) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
435 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
436 |
lemma big_subsetI [intro]: "f \<in> L F (g) \<Longrightarrow> L F (f) \<subseteq> L F (g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
437 |
by (intro subsetI) (drule (1) big_trans) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
438 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
439 |
lemma small_subsetI [intro]: "f \<in> L F (g) \<Longrightarrow> l F (f) \<subseteq> l F (g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
440 |
by (intro subsetI) (drule (1) small_big_trans) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
441 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
442 |
lemma big_refl [simp]: "f \<in> L F (f)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
443 |
by (rule bigI[of 1]) simp_all |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
444 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
445 |
lemma small_refl_iff: "f \<in> l F (f) \<longleftrightarrow> eventually (\<lambda>x. f x = 0) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
446 |
proof (rule iffI[OF _ smallI]) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
447 |
assume f: "f \<in> l F f" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
448 |
have "(1/2::real) > 0" "(2::real) > 0" by simp_all |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
449 |
from smallD[OF f this(1)] smallD[OF f this(2)] |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
450 |
show "eventually (\<lambda>x. f x = 0) F" by eventually_elim (insert R, auto) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
451 |
next |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
452 |
fix c :: real assume "c > 0" "eventually (\<lambda>x. f x = 0) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
453 |
from this(2) show "eventually (\<lambda>x. R (norm (f x)) (c * norm (f x))) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
454 |
by eventually_elim simp_all |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
455 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
456 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
457 |
lemma big_small_asymmetric: "f \<in> L F (g) \<Longrightarrow> g \<in> l F (f) \<Longrightarrow> eventually (\<lambda>x. f x = 0) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
458 |
by (drule (1) big_small_trans) (simp add: small_refl_iff) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
459 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
460 |
lemma small_big_asymmetric: "f \<in> l F (g) \<Longrightarrow> g \<in> L F (f) \<Longrightarrow> eventually (\<lambda>x. f x = 0) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
461 |
by (drule (1) small_big_trans) (simp add: small_refl_iff) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
462 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
463 |
lemma small_asymmetric: "f \<in> l F (g) \<Longrightarrow> g \<in> l F (f) \<Longrightarrow> eventually (\<lambda>x. f x = 0) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
464 |
by (drule (1) small_trans) (simp add: small_refl_iff) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
465 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
466 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
467 |
lemma plus_aux: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
468 |
assumes "f \<in> o[F](g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
469 |
shows "g \<in> L F (\<lambda>x. f x + g x)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
470 |
proof (rule R_E) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
471 |
assume [simp]: "R = (\<le>)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
472 |
have A: "1/2 > (0::real)" by simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
473 |
{ |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
474 |
fix x assume "norm (f x) \<le> 1/2 * norm (g x)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
475 |
hence "1/2 * (norm (g x)) \<le> (norm (g x)) - (norm (f x))" by simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
476 |
also have "norm (g x) - norm (f x) \<le> norm (f x + g x)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
477 |
by (subst add.commute) (rule norm_diff_ineq) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
478 |
finally have "1/2 * (norm (g x)) \<le> norm (f x + g x)" by simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
479 |
} note B = this |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
480 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
481 |
show "g \<in> L F (\<lambda>x. f x + g x)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
482 |
apply (rule bigI[of "2"], simp) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
483 |
using landau_o.smallD[OF assms A] apply eventually_elim |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
484 |
using B apply (simp add: algebra_simps) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
485 |
done |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
486 |
next |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
487 |
assume [simp]: "R = (\<lambda>x y. x \<ge> y)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
488 |
show "g \<in> L F (\<lambda>x. f x + g x)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
489 |
proof (rule bigI[of "1/2"]) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
490 |
show "eventually (\<lambda>x. R (norm (g x)) (1/2 * norm (f x + g x))) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
491 |
using landau_o.smallD[OF assms zero_less_one] |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
492 |
proof eventually_elim |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
493 |
case (elim x) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
494 |
have "norm (f x + g x) \<le> norm (f x) + norm (g x)" by (rule norm_triangle_ineq) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
495 |
also note elim |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
496 |
finally show ?case by simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
497 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
498 |
qed simp_all |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
499 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
500 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
501 |
end |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
502 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
503 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
504 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
505 |
lemma bigomega_iff_bigo: "g \<in> \<Omega>[F](f) \<longleftrightarrow> f \<in> O[F](g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
506 |
proof |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
507 |
assume "f \<in> O[F](g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
508 |
then guess c by (elim landau_o.bigE) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
509 |
thus "g \<in> \<Omega>[F](f)" by (intro landau_omega.bigI[of "inverse c"]) (simp_all add: field_simps) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
510 |
next |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
511 |
assume "g \<in> \<Omega>[F](f)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
512 |
then guess c by (elim landau_omega.bigE) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
513 |
thus "f \<in> O[F](g)" by (intro landau_o.bigI[of "inverse c"]) (simp_all add: field_simps) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
514 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
515 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
516 |
lemma smallomega_iff_smallo: "g \<in> \<omega>[F](f) \<longleftrightarrow> f \<in> o[F](g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
517 |
proof |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
518 |
assume "f \<in> o[F](g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
519 |
from landau_o.smallD[OF this, of "inverse c" for c] |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
520 |
show "g \<in> \<omega>[F](f)" by (intro landau_omega.smallI) (simp_all add: field_simps) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
521 |
next |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
522 |
assume "g \<in> \<omega>[F](f)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
523 |
from landau_omega.smallD[OF this, of "inverse c" for c] |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
524 |
show "f \<in> o[F](g)" by (intro landau_o.smallI) (simp_all add: field_simps) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
525 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
526 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
527 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
528 |
context landau_pair |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
529 |
begin |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
530 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
531 |
lemma big_mono: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
532 |
"eventually (\<lambda>x. R (norm (f x)) (norm (g x))) F \<Longrightarrow> f \<in> L F (g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
533 |
by (rule bigI[OF zero_less_one]) simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
534 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
535 |
lemma big_mult: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
536 |
assumes "f1 \<in> L F (g1)" "f2 \<in> L F (g2)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
537 |
shows "(\<lambda>x. f1 x * f2 x) \<in> L F (\<lambda>x. g1 x * g2 x)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
538 |
proof- |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
539 |
from assms(1) guess c1 by (elim bigE) note c1 = this |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
540 |
from assms(2) guess c2 by (elim bigE) note c2 = this |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
541 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
542 |
from c1(1) and c2(1) have "c1 * c2 > 0" by simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
543 |
moreover have "eventually (\<lambda>x. R (norm (f1 x * f2 x)) (c1 * c2 * norm (g1 x * g2 x))) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
544 |
using c1(2) c2(2) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
545 |
proof eventually_elim |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
546 |
case (elim x) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
547 |
show ?case |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
548 |
proof (cases rule: R_E) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
549 |
case le |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
550 |
have "norm (f1 x) * norm (f2 x) \<le> (c1 * norm (g1 x)) * (c2 * norm (g2 x))" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
551 |
using elim le c1(1) c2(1) by (intro mult_mono mult_nonneg_nonneg) auto |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
552 |
with le show ?thesis by (simp add: le norm_mult mult_ac) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
553 |
next |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
554 |
case ge |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
555 |
have "(c1 * norm (g1 x)) * (c2 * norm (g2 x)) \<le> norm (f1 x) * norm (f2 x)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
556 |
using elim ge c1(1) c2(1) by (intro mult_mono mult_nonneg_nonneg) auto |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
557 |
with ge show ?thesis by (simp_all add: norm_mult mult_ac) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
558 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
559 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
560 |
ultimately show ?thesis by (rule bigI) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
561 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
562 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
563 |
lemma small_big_mult: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
564 |
assumes "f1 \<in> l F (g1)" "f2 \<in> L F (g2)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
565 |
shows "(\<lambda>x. f1 x * f2 x) \<in> l F (\<lambda>x. g1 x * g2 x)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
566 |
proof (rule smallI) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
567 |
fix c1 :: real assume c1: "c1 > 0" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
568 |
from assms(2) guess c2 by (elim bigE) note c2 = this |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
569 |
with c1 assms(1) have "eventually (\<lambda>x. R (norm (f1 x)) (c1 * inverse c2 * norm (g1 x))) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
570 |
by (auto intro!: smallD) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
571 |
thus "eventually (\<lambda>x. R (norm (f1 x * f2 x)) (c1 * norm (g1 x * g2 x))) F" using c2(2) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
572 |
proof eventually_elim |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
573 |
case (elim x) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
574 |
show ?case |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
575 |
proof (cases rule: R_E) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
576 |
case le |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
577 |
have "norm (f1 x) * norm (f2 x) \<le> (c1 * inverse c2 * norm (g1 x)) * (c2 * norm (g2 x))" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
578 |
using elim le c1(1) c2(1) by (intro mult_mono mult_nonneg_nonneg) auto |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
579 |
with le c2(1) show ?thesis by (simp add: le norm_mult field_simps) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
580 |
next |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
581 |
case ge |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
582 |
have "norm (f1 x) * norm (f2 x) \<ge> (c1 * inverse c2 * norm (g1 x)) * (c2 * norm (g2 x))" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
583 |
using elim ge c1(1) c2(1) by (intro mult_mono mult_nonneg_nonneg) auto |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
584 |
with ge c2(1) show ?thesis by (simp add: ge norm_mult field_simps) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
585 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
586 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
587 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
588 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
589 |
lemma big_small_mult: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
590 |
"f1 \<in> L F (g1) \<Longrightarrow> f2 \<in> l F (g2) \<Longrightarrow> (\<lambda>x. f1 x * f2 x) \<in> l F (\<lambda>x. g1 x * g2 x)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
591 |
by (subst (1 2) mult.commute) (rule small_big_mult) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
592 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
593 |
lemma small_mult: "f1 \<in> l F (g1) \<Longrightarrow> f2 \<in> l F (g2) \<Longrightarrow> (\<lambda>x. f1 x * f2 x) \<in> l F (\<lambda>x. g1 x * g2 x)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
594 |
by (rule small_big_mult, assumption, rule small_imp_big) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
595 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
596 |
lemmas mult = big_mult small_big_mult big_small_mult small_mult |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
597 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
598 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
599 |
sublocale big: landau_symbol L L' Lr |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
600 |
proof |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
601 |
have L: "L = bigo \<or> L = bigomega" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
602 |
by (rule R_E) (auto simp: bigo_def L_def bigomega_def fun_eq_iff) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
603 |
{ |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
604 |
fix c :: 'b and F and f :: "'a \<Rightarrow> 'b" assume "c \<noteq> 0" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
605 |
hence "(\<lambda>x. c * f x) \<in> L F f" by (intro bigI[of "norm c"]) (simp_all add: norm_mult) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
606 |
} note A = this |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
607 |
{ |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
608 |
fix c :: 'b and F and f :: "'a \<Rightarrow> 'b" assume "c \<noteq> 0" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
609 |
from `c \<noteq> 0` and A[of c f] and A[of "inverse c" "\<lambda>x. c * f x"] |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
610 |
show "L F (\<lambda>x. c * f x) = L F f" by (intro equalityI big_subsetI) (simp_all add: field_simps) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
611 |
} |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
612 |
{ |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
613 |
fix c :: 'b and F and f g :: "'a \<Rightarrow> 'b" assume "c \<noteq> 0" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
614 |
from `c \<noteq> 0` and A[of c f] and A[of "inverse c" "\<lambda>x. c * f x"] |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
615 |
have "(\<lambda>x. c * f x) \<in> L F f" "f \<in> L F (\<lambda>x. c * f x)" by (simp_all add: field_simps) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
616 |
thus "((\<lambda>x. c * f x) \<in> L F g) = (f \<in> L F g)" by (intro iffI) (erule (1) big_trans)+ |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
617 |
} |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
618 |
{ |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
619 |
fix f g :: "'a \<Rightarrow> 'b" and F assume A: "f \<in> L F (g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
620 |
assume B: "eventually (\<lambda>x. f x \<noteq> 0) F" "eventually (\<lambda>x. g x \<noteq> 0) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
621 |
from A guess c by (elim bigE) note c = this |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
622 |
from c(2) B have "eventually (\<lambda>x. R (norm (inverse (g x))) (c * norm (inverse (f x)))) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
623 |
by eventually_elim (rule R_E, insert c(1), simp_all add: field_simps norm_inverse norm_divide) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
624 |
with c(1) show "(\<lambda>x. inverse (g x)) \<in> L F (\<lambda>x. inverse (f x))" by (rule bigI) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
625 |
} |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
626 |
{ |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
627 |
fix f g :: "'a \<Rightarrow> 'b" and F assume "f \<in> o[F](g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
628 |
with plus_aux show "L F g \<subseteq> L F (\<lambda>x. f x + g x)" by (blast intro!: big_subsetI) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
629 |
} |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
630 |
{ |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
631 |
fix f g :: "'a \<Rightarrow> 'b" and F assume A: "eventually (\<lambda>x. f x = g x) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
632 |
show "L F (f) = L F (g)" unfolding L_def |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
633 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
634 |
thm eventually_subst A |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
635 |
by (subst eventually_subst'[OF A]) (rule refl) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
636 |
} |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
637 |
{ |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
638 |
fix f g h :: "'a \<Rightarrow> 'b" and F assume A: "eventually (\<lambda>x. f x = g x) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
639 |
show "f \<in> L F (h) \<longleftrightarrow> g \<in> L F (h)" unfolding L_def mem_Collect_eq |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
640 |
by (subst (1) eventually_subst'[OF A]) (rule refl) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
641 |
} |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
642 |
{ |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
643 |
fix f g :: "'a \<Rightarrow> 'b" and F assume "f \<in> L F g" thus "L F f \<subseteq> L F g" by (rule big_subsetI) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
644 |
} |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
645 |
{ |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
646 |
fix f g :: "'a \<Rightarrow> 'b" and F assume A: "f \<in> \<Theta>[F](g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
647 |
with A L show "L F (f) = L F (g)" unfolding bigtheta_def |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
648 |
by (intro equalityI big_subsetI) (auto simp: bigomega_iff_bigo) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
649 |
fix h:: "'a \<Rightarrow> 'b" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
650 |
show "f \<in> L F (h) \<longleftrightarrow> g \<in> L F (h)" by (rule disjE[OF L]) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
651 |
(insert A, auto simp: bigtheta_def bigomega_iff_bigo intro: landau_o.big_trans) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
652 |
} |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
653 |
{ |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
654 |
fix f g h :: "'a \<Rightarrow> 'b" and F assume "f \<in> L F g" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
655 |
thus "(\<lambda>x. h x * f x) \<in> L F (\<lambda>x. h x * g x)" by (intro big_mult) simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
656 |
} |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
657 |
{ |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
658 |
fix f g h :: "'a \<Rightarrow> 'b" and F assume "f \<in> L F g" "g \<in> L F h" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
659 |
thus "f \<in> L F (h)" by (rule big_trans) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
660 |
} |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
661 |
{ |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
662 |
fix f g :: "'a \<Rightarrow> 'b" and h :: "'c \<Rightarrow> 'a" and F G |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
663 |
assume "f \<in> L F g" and "filterlim h F G" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
664 |
thus "(\<lambda>x. f (h x)) \<in> L' G (\<lambda>x. g (h x))" by (auto simp: L_def L'_def filterlim_iff) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
665 |
} |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
666 |
{ |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
667 |
fix f g :: "'a \<Rightarrow> 'b" and F G :: "'a filter" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
668 |
assume "f \<in> L F g" "f \<in> L G g" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
669 |
from this [THEN bigE] guess c1 c2 . note c12 = this |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
670 |
define c where "c = (if R c1 c2 then c2 else c1)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
671 |
from c12 have c: "R c1 c" "R c2 c" "c > 0" by (auto simp: c_def dest: R_linear) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
672 |
with c12(2,4) have "eventually (\<lambda>x. R (norm (f x)) (c * norm (g x))) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
673 |
"eventually (\<lambda>x. R (norm (f x)) (c * norm (g x))) G" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
674 |
by (force elim: eventually_mono intro: R_trans[OF _ R_mult_right_mono])+ |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
675 |
with c show "f \<in> L (sup F G) g" by (auto simp: L_def eventually_sup) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
676 |
} |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
677 |
{ |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
678 |
fix f g :: "'a \<Rightarrow> 'b" and h :: "'c \<Rightarrow> 'a" and F G :: "'a filter" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
679 |
assume "(f \<in> L F g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
680 |
thus "((\<lambda>x. f (h x)) \<in> L' (filtercomap h F) (\<lambda>x. g (h x)))" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
681 |
unfolding L_def L'_def by auto |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
682 |
} |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
683 |
qed (auto simp: L_def Lr_def eventually_filtermap L'_def |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
684 |
intro: filter_leD exI[of _ "1::real"]) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
685 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
686 |
sublocale small: landau_symbol l l' lr |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
687 |
proof |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
688 |
{ |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
689 |
fix c :: 'b and f :: "'a \<Rightarrow> 'b" and F assume "c \<noteq> 0" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
690 |
hence "(\<lambda>x. c * f x) \<in> L F f" by (intro bigI[of "norm c"]) (simp_all add: norm_mult) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
691 |
} note A = this |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
692 |
{ |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
693 |
fix c :: 'b and f :: "'a \<Rightarrow> 'b" and F assume "c \<noteq> 0" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
694 |
from `c \<noteq> 0` and A[of c f] and A[of "inverse c" "\<lambda>x. c * f x"] |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
695 |
show "l F (\<lambda>x. c * f x) = l F f" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
696 |
by (intro equalityI small_subsetI) (simp_all add: field_simps) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
697 |
} |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
698 |
{ |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
699 |
fix c :: 'b and f g :: "'a \<Rightarrow> 'b" and F assume "c \<noteq> 0" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
700 |
from `c \<noteq> 0` and A[of c f] and A[of "inverse c" "\<lambda>x. c * f x"] |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
701 |
have "(\<lambda>x. c * f x) \<in> L F f" "f \<in> L F (\<lambda>x. c * f x)" by (simp_all add: field_simps) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
702 |
thus "((\<lambda>x. c * f x) \<in> l F g) = (f \<in> l F g)" by (intro iffI) (erule (1) big_small_trans)+ |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
703 |
} |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
704 |
{ |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
705 |
fix f g :: "'a \<Rightarrow> 'b" and F assume "f \<in> o[F](g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
706 |
with plus_aux show "l F g \<subseteq> l F (\<lambda>x. f x + g x)" by (blast intro!: small_subsetI) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
707 |
} |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
708 |
{ |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
709 |
fix f g :: "'a \<Rightarrow> 'b" and F assume A: "f \<in> l F (g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
710 |
assume B: "eventually (\<lambda>x. f x \<noteq> 0) F" "eventually (\<lambda>x. g x \<noteq> 0) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
711 |
show "(\<lambda>x. inverse (g x)) \<in> l F (\<lambda>x. inverse (f x))" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
712 |
proof (rule smallI) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
713 |
fix c :: real assume c: "c > 0" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
714 |
from B smallD[OF A c] |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
715 |
show "eventually (\<lambda>x. R (norm (inverse (g x))) (c * norm (inverse (f x)))) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
716 |
by eventually_elim (rule R_E, simp_all add: field_simps norm_inverse norm_divide) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
717 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
718 |
} |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
719 |
{ |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
720 |
fix f g :: "'a \<Rightarrow> 'b" and F assume A: "eventually (\<lambda>x. f x = g x) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
721 |
show "l F (f) = l F (g)" unfolding l_def by (subst eventually_subst'[OF A]) (rule refl) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
722 |
} |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
723 |
{ |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
724 |
fix f g h :: "'a \<Rightarrow> 'b" and F assume A: "eventually (\<lambda>x. f x = g x) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
725 |
show "f \<in> l F (h) \<longleftrightarrow> g \<in> l F (h)" unfolding l_def mem_Collect_eq |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
726 |
by (subst (1) eventually_subst'[OF A]) (rule refl) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
727 |
} |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
728 |
{ |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
729 |
fix f g :: "'a \<Rightarrow> 'b" and F assume "f \<in> l F g" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
730 |
thus "l F f \<subseteq> l F g" by (intro small_subsetI small_imp_big) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
731 |
} |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
732 |
{ |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
733 |
fix f g :: "'a \<Rightarrow> 'b" and F assume A: "f \<in> \<Theta>[F](g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
734 |
have L: "L = bigo \<or> L = bigomega" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
735 |
by (rule R_E) (auto simp: bigo_def L_def bigomega_def fun_eq_iff) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
736 |
with A show "l F (f) = l F (g)" unfolding bigtheta_def |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
737 |
by (intro equalityI small_subsetI) (auto simp: bigomega_iff_bigo) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
738 |
have l: "l = smallo \<or> l = smallomega" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
739 |
by (rule R_E) (auto simp: smallo_def l_def smallomega_def fun_eq_iff) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
740 |
fix h:: "'a \<Rightarrow> 'b" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
741 |
show "f \<in> l F (h) \<longleftrightarrow> g \<in> l F (h)" by (rule disjE[OF l]) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
742 |
(insert A, auto simp: bigtheta_def bigomega_iff_bigo smallomega_iff_smallo |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
743 |
intro: landau_o.big_small_trans landau_o.small_big_trans) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
744 |
} |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
745 |
{ |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
746 |
fix f g h :: "'a \<Rightarrow> 'b" and F assume "f \<in> l F g" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
747 |
thus "(\<lambda>x. h x * f x) \<in> l F (\<lambda>x. h x * g x)" by (intro big_small_mult) simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
748 |
} |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
749 |
{ |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
750 |
fix f g h :: "'a \<Rightarrow> 'b" and F assume "f \<in> l F g" "g \<in> l F h" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
751 |
thus "f \<in> l F (h)" by (rule small_trans) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
752 |
} |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
753 |
{ |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
754 |
fix f g :: "'a \<Rightarrow> 'b" and h :: "'c \<Rightarrow> 'a" and F G |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
755 |
assume "f \<in> l F g" and "filterlim h F G" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
756 |
thus "(\<lambda>x. f (h x)) \<in> l' G (\<lambda>x. g (h x))" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
757 |
by (auto simp: l_def l'_def filterlim_iff) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
758 |
} |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
759 |
{ |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
760 |
fix f g :: "'a \<Rightarrow> 'b" and h :: "'c \<Rightarrow> 'a" and F G :: "'a filter" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
761 |
assume "(f \<in> l F g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
762 |
thus "((\<lambda>x. f (h x)) \<in> l' (filtercomap h F) (\<lambda>x. g (h x)))" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
763 |
unfolding l_def l'_def by auto |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
764 |
} |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
765 |
qed (auto simp: l_def lr_def eventually_filtermap l'_def eventually_sup intro: filter_leD) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
766 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
767 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
768 |
text {* These rules allow chaining of Landau symbol propositions in Isar with "also".*} |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
769 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
770 |
lemma big_mult_1: "f \<in> L F (g) \<Longrightarrow> (\<lambda>_. 1) \<in> L F (h) \<Longrightarrow> f \<in> L F (\<lambda>x. g x * h x)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
771 |
and big_mult_1': "(\<lambda>_. 1) \<in> L F (g) \<Longrightarrow> f \<in> L F (h) \<Longrightarrow> f \<in> L F (\<lambda>x. g x * h x)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
772 |
and small_mult_1: "f \<in> l F (g) \<Longrightarrow> (\<lambda>_. 1) \<in> L F (h) \<Longrightarrow> f \<in> l F (\<lambda>x. g x * h x)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
773 |
and small_mult_1': "(\<lambda>_. 1) \<in> L F (g) \<Longrightarrow> f \<in> l F (h) \<Longrightarrow> f \<in> l F (\<lambda>x. g x * h x)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
774 |
and small_mult_1'': "f \<in> L F (g) \<Longrightarrow> (\<lambda>_. 1) \<in> l F (h) \<Longrightarrow> f \<in> l F (\<lambda>x. g x * h x)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
775 |
and small_mult_1''': "(\<lambda>_. 1) \<in> l F (g) \<Longrightarrow> f \<in> L F (h) \<Longrightarrow> f \<in> l F (\<lambda>x. g x * h x)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
776 |
by (drule (1) big.mult big_small_mult small_big_mult, simp)+ |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
777 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
778 |
lemma big_1_mult: "f \<in> L F (g) \<Longrightarrow> h \<in> L F (\<lambda>_. 1) \<Longrightarrow> (\<lambda>x. f x * h x) \<in> L F (g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
779 |
and big_1_mult': "h \<in> L F (\<lambda>_. 1) \<Longrightarrow> f \<in> L F (g) \<Longrightarrow> (\<lambda>x. f x * h x) \<in> L F (g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
780 |
and small_1_mult: "f \<in> l F (g) \<Longrightarrow> h \<in> L F (\<lambda>_. 1) \<Longrightarrow> (\<lambda>x. f x * h x) \<in> l F (g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
781 |
and small_1_mult': "h \<in> L F (\<lambda>_. 1) \<Longrightarrow> f \<in> l F (g) \<Longrightarrow> (\<lambda>x. f x * h x) \<in> l F (g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
782 |
and small_1_mult'': "f \<in> L F (g) \<Longrightarrow> h \<in> l F (\<lambda>_. 1) \<Longrightarrow> (\<lambda>x. f x * h x) \<in> l F (g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
783 |
and small_1_mult''': "h \<in> l F (\<lambda>_. 1) \<Longrightarrow> f \<in> L F (g) \<Longrightarrow> (\<lambda>x. f x * h x) \<in> l F (g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
784 |
by (drule (1) big.mult big_small_mult small_big_mult, simp)+ |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
785 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
786 |
lemmas mult_1_trans = |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
787 |
big_mult_1 big_mult_1' small_mult_1 small_mult_1' small_mult_1'' small_mult_1''' |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
788 |
big_1_mult big_1_mult' small_1_mult small_1_mult' small_1_mult'' small_1_mult''' |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
789 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
790 |
lemma big_equal_iff_bigtheta: "L F (f) = L F (g) \<longleftrightarrow> f \<in> \<Theta>[F](g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
791 |
proof |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
792 |
have L: "L = bigo \<or> L = bigomega" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
793 |
by (rule R_E) (auto simp: fun_eq_iff L_def bigo_def bigomega_def) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
794 |
fix f g :: "'a \<Rightarrow> 'b" assume "L F (f) = L F (g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
795 |
with big_refl[of f F] big_refl[of g F] have "f \<in> L F (g)" "g \<in> L F (f)" by simp_all |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
796 |
thus "f \<in> \<Theta>[F](g)" using L unfolding bigtheta_def by (auto simp: bigomega_iff_bigo) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
797 |
qed (rule big.cong_bigtheta) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
798 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
799 |
lemma big_prod: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
800 |
assumes "\<And>x. x \<in> A \<Longrightarrow> f x \<in> L F (g x)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
801 |
shows "(\<lambda>y. \<Prod>x\<in>A. f x y) \<in> L F (\<lambda>y. \<Prod>x\<in>A. g x y)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
802 |
using assms by (induction A rule: infinite_finite_induct) (auto intro!: big.mult) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
803 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
804 |
lemma big_prod_in_1: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
805 |
assumes "\<And>x. x \<in> A \<Longrightarrow> f x \<in> L F (\<lambda>_. 1)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
806 |
shows "(\<lambda>y. \<Prod>x\<in>A. f x y) \<in> L F (\<lambda>_. 1)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
807 |
using assms by (induction A rule: infinite_finite_induct) (auto intro!: big.mult_in_1) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
808 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
809 |
end |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
810 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
811 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
812 |
context landau_symbol |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
813 |
begin |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
814 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
815 |
lemma plus_absorb1: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
816 |
assumes "f \<in> o[F](g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
817 |
shows "L F (\<lambda>x. f x + g x) = L F (g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
818 |
proof (intro equalityI) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
819 |
from plus_subset1 and assms show "L F g \<subseteq> L F (\<lambda>x. f x + g x)" . |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
820 |
from landau_o.small.plus_subset1[OF assms] and assms have "(\<lambda>x. -f x) \<in> o[F](\<lambda>x. f x + g x)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
821 |
by (auto simp: landau_o.small.uminus_in_iff) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
822 |
from plus_subset1[OF this] show "L F (\<lambda>x. f x + g x) \<subseteq> L F (g)" by simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
823 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
824 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
825 |
lemma plus_absorb2: "g \<in> o[F](f) \<Longrightarrow> L F (\<lambda>x. f x + g x) = L F (f)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
826 |
using plus_absorb1[of g F f] by (simp add: add.commute) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
827 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
828 |
lemma diff_absorb1: "f \<in> o[F](g) \<Longrightarrow> L F (\<lambda>x. f x - g x) = L F (g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
829 |
by (simp only: diff_conv_add_uminus plus_absorb1 landau_o.small.uminus uminus) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
830 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
831 |
lemma diff_absorb2: "g \<in> o[F](f) \<Longrightarrow> L F (\<lambda>x. f x - g x) = L F (f)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
832 |
by (simp only: diff_conv_add_uminus plus_absorb2 landau_o.small.uminus_in_iff) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
833 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
834 |
lemmas absorb = plus_absorb1 plus_absorb2 diff_absorb1 diff_absorb2 |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
835 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
836 |
end |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
837 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
838 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
839 |
lemma bigthetaI [intro]: "f \<in> O[F](g) \<Longrightarrow> f \<in> \<Omega>[F](g) \<Longrightarrow> f \<in> \<Theta>[F](g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
840 |
unfolding bigtheta_def bigomega_def by blast |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
841 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
842 |
lemma bigthetaD1 [dest]: "f \<in> \<Theta>[F](g) \<Longrightarrow> f \<in> O[F](g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
843 |
and bigthetaD2 [dest]: "f \<in> \<Theta>[F](g) \<Longrightarrow> f \<in> \<Omega>[F](g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
844 |
unfolding bigtheta_def bigo_def bigomega_def by blast+ |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
845 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
846 |
lemma bigtheta_refl [simp]: "f \<in> \<Theta>[F](f)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
847 |
unfolding bigtheta_def by simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
848 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
849 |
lemma bigtheta_sym: "f \<in> \<Theta>[F](g) \<longleftrightarrow> g \<in> \<Theta>[F](f)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
850 |
unfolding bigtheta_def by (auto simp: bigomega_iff_bigo) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
851 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
852 |
lemmas landau_flip = |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
853 |
bigomega_iff_bigo[symmetric] smallomega_iff_smallo[symmetric] |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
854 |
bigomega_iff_bigo smallomega_iff_smallo bigtheta_sym |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
855 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
856 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
857 |
interpretation landau_theta: landau_symbol bigtheta bigtheta bigtheta |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
858 |
proof |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
859 |
fix f g :: "'a \<Rightarrow> 'b" and F |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
860 |
assume "f \<in> o[F](g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
861 |
hence "O[F](g) \<subseteq> O[F](\<lambda>x. f x + g x)" "\<Omega>[F](g) \<subseteq> \<Omega>[F](\<lambda>x. f x + g x)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
862 |
by (rule landau_o.big.plus_subset1 landau_omega.big.plus_subset1)+ |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
863 |
thus "\<Theta>[F](g) \<subseteq> \<Theta>[F](\<lambda>x. f x + g x)" unfolding bigtheta_def by blast |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
864 |
next |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
865 |
fix f g :: "'a \<Rightarrow> 'b" and F |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
866 |
assume "f \<in> \<Theta>[F](g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
867 |
thus A: "\<Theta>[F](f) = \<Theta>[F](g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
868 |
apply (subst (1 2) bigtheta_def) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
869 |
apply (subst landau_o.big.cong_bigtheta landau_omega.big.cong_bigtheta, assumption)+ |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
870 |
apply (rule refl) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
871 |
done |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
872 |
thus "\<Theta>[F](f) \<subseteq> \<Theta>[F](g)" by simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
873 |
fix h :: "'a \<Rightarrow> 'b" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
874 |
show "f \<in> \<Theta>[F](h) \<longleftrightarrow> g \<in> \<Theta>[F](h)" by (subst (1 2) bigtheta_sym) (simp add: A) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
875 |
next |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
876 |
fix f g h :: "'a \<Rightarrow> 'b" and F |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
877 |
assume "f \<in> \<Theta>[F](g)" "g \<in> \<Theta>[F](h)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
878 |
thus "f \<in> \<Theta>[F](h)" unfolding bigtheta_def |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
879 |
by (blast intro: landau_o.big.trans landau_omega.big.trans) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
880 |
next |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
881 |
fix f :: "'a \<Rightarrow> 'b" and F1 F2 :: "'a filter" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
882 |
assume "F1 \<le> F2" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
883 |
thus "\<Theta>[F2](f) \<subseteq> \<Theta>[F1](f)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
884 |
by (auto simp: bigtheta_def intro: landau_o.big.filter_mono landau_omega.big.filter_mono) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
885 |
qed (auto simp: bigtheta_def landau_o.big.norm_iff |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
886 |
landau_o.big.cmult landau_omega.big.cmult |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
887 |
landau_o.big.cmult_in_iff landau_omega.big.cmult_in_iff |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
888 |
landau_o.big.in_cong landau_omega.big.in_cong |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
889 |
landau_o.big.mult landau_omega.big.mult |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
890 |
landau_o.big.inverse landau_omega.big.inverse |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
891 |
landau_o.big.compose landau_omega.big.compose |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
892 |
landau_o.big.bot' landau_omega.big.bot' |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
893 |
landau_o.big.in_filtermap_iff landau_omega.big.in_filtermap_iff |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
894 |
landau_o.big.sup landau_omega.big.sup |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
895 |
landau_o.big.filtercomap landau_omega.big.filtercomap |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
896 |
dest: landau_o.big.cong landau_omega.big.cong) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
897 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
898 |
lemmas landau_symbols = |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
899 |
landau_o.big.landau_symbol_axioms landau_o.small.landau_symbol_axioms |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
900 |
landau_omega.big.landau_symbol_axioms landau_omega.small.landau_symbol_axioms |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
901 |
landau_theta.landau_symbol_axioms |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
902 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
903 |
lemma bigoI [intro]: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
904 |
assumes "eventually (\<lambda>x. (norm (f x)) \<le> c * (norm (g x))) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
905 |
shows "f \<in> O[F](g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
906 |
proof (rule landau_o.bigI) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
907 |
show "max 1 c > 0" by simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
908 |
note assms |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
909 |
moreover have "\<And>x. c * (norm (g x)) \<le> max 1 c * (norm (g x))" by (simp add: mult_right_mono) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
910 |
ultimately show "eventually (\<lambda>x. (norm (f x)) \<le> max 1 c * (norm (g x))) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
911 |
by (auto elim!: eventually_mono dest: order.trans) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
912 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
913 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
914 |
lemma smallomegaD [dest]: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
915 |
assumes "f \<in> \<omega>[F](g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
916 |
shows "eventually (\<lambda>x. (norm (f x)) \<ge> c * (norm (g x))) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
917 |
proof (cases "c > 0") |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
918 |
case False |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
919 |
show ?thesis |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
920 |
by (intro always_eventually allI, rule order.trans[of _ 0]) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
921 |
(insert False, auto intro!: mult_nonpos_nonneg) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
922 |
qed (blast dest: landau_omega.smallD[OF assms, of c]) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
923 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
924 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
925 |
lemma bigthetaI': |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
926 |
assumes "c1 > 0" "c2 > 0" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
927 |
assumes "eventually (\<lambda>x. c1 * (norm (g x)) \<le> (norm (f x)) \<and> (norm (f x)) \<le> c2 * (norm (g x))) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
928 |
shows "f \<in> \<Theta>[F](g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
929 |
apply (rule bigthetaI) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
930 |
apply (rule landau_o.bigI[OF assms(2)]) using assms(3) apply (eventually_elim, simp) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
931 |
apply (rule landau_omega.bigI[OF assms(1)]) using assms(3) apply (eventually_elim, simp) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
932 |
done |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
933 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
934 |
lemma bigthetaI_cong: "eventually (\<lambda>x. f x = g x) F \<Longrightarrow> f \<in> \<Theta>[F](g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
935 |
by (intro bigthetaI'[of 1 1]) (auto elim!: eventually_mono) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
936 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
937 |
lemma (in landau_symbol) ev_eq_trans1: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
938 |
"f \<in> L F (\<lambda>x. g x (h x)) \<Longrightarrow> eventually (\<lambda>x. h x = h' x) F \<Longrightarrow> f \<in> L F (\<lambda>x. g x (h' x))" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
939 |
by (rule bigtheta_trans1[OF _ bigthetaI_cong]) (auto elim!: eventually_mono) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
940 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
941 |
lemma (in landau_symbol) ev_eq_trans2: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
942 |
"eventually (\<lambda>x. f x = f' x) F \<Longrightarrow> (\<lambda>x. g x (f' x)) \<in> L F (h) \<Longrightarrow> (\<lambda>x. g x (f x)) \<in> L F (h)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
943 |
by (rule bigtheta_trans2[OF bigthetaI_cong]) (auto elim!: eventually_mono) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
944 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
945 |
declare landau_o.smallI landau_omega.bigI landau_omega.smallI [intro] |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
946 |
declare landau_o.bigE landau_omega.bigE [elim] |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
947 |
declare landau_o.smallD |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
948 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
949 |
lemma (in landau_symbol) bigtheta_trans1': |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
950 |
"f \<in> L F (g) \<Longrightarrow> h \<in> \<Theta>[F](g) \<Longrightarrow> f \<in> L F (h)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
951 |
by (subst cong_bigtheta[symmetric]) (simp add: bigtheta_sym) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
952 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
953 |
lemma (in landau_symbol) bigtheta_trans2': |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
954 |
"g \<in> \<Theta>[F](f) \<Longrightarrow> g \<in> L F (h) \<Longrightarrow> f \<in> L F (h)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
955 |
by (rule bigtheta_trans2, subst bigtheta_sym) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
956 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
957 |
lemma bigo_bigomega_trans: "f \<in> O[F](g) \<Longrightarrow> h \<in> \<Omega>[F](g) \<Longrightarrow> f \<in> O[F](h)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
958 |
and bigo_smallomega_trans: "f \<in> O[F](g) \<Longrightarrow> h \<in> \<omega>[F](g) \<Longrightarrow> f \<in> o[F](h)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
959 |
and smallo_bigomega_trans: "f \<in> o[F](g) \<Longrightarrow> h \<in> \<Omega>[F](g) \<Longrightarrow> f \<in> o[F](h)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
960 |
and smallo_smallomega_trans: "f \<in> o[F](g) \<Longrightarrow> h \<in> \<omega>[F](g) \<Longrightarrow> f \<in> o[F](h)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
961 |
and bigomega_bigo_trans: "f \<in> \<Omega>[F](g) \<Longrightarrow> h \<in> O[F](g) \<Longrightarrow> f \<in> \<Omega>[F](h)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
962 |
and bigomega_smallo_trans: "f \<in> \<Omega>[F](g) \<Longrightarrow> h \<in> o[F](g) \<Longrightarrow> f \<in> \<omega>[F](h)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
963 |
and smallomega_bigo_trans: "f \<in> \<omega>[F](g) \<Longrightarrow> h \<in> O[F](g) \<Longrightarrow> f \<in> \<omega>[F](h)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
964 |
and smallomega_smallo_trans: "f \<in> \<omega>[F](g) \<Longrightarrow> h \<in> o[F](g) \<Longrightarrow> f \<in> \<omega>[F](h)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
965 |
by (unfold bigomega_iff_bigo smallomega_iff_smallo) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
966 |
(erule (1) landau_o.big_trans landau_o.big_small_trans landau_o.small_big_trans |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
967 |
landau_o.big_trans landau_o.small_trans)+ |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
968 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
969 |
lemmas landau_trans_lift [trans] = |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
970 |
landau_symbols[THEN landau_symbol.lift_trans] |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
971 |
landau_symbols[THEN landau_symbol.lift_trans'] |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
972 |
landau_symbols[THEN landau_symbol.lift_trans_bigtheta] |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
973 |
landau_symbols[THEN landau_symbol.lift_trans_bigtheta'] |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
974 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
975 |
lemmas landau_mult_1_trans [trans] = |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
976 |
landau_o.mult_1_trans landau_omega.mult_1_trans |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
977 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
978 |
lemmas landau_trans [trans] = |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
979 |
landau_symbols[THEN landau_symbol.bigtheta_trans1] |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
980 |
landau_symbols[THEN landau_symbol.bigtheta_trans2] |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
981 |
landau_symbols[THEN landau_symbol.bigtheta_trans1'] |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
982 |
landau_symbols[THEN landau_symbol.bigtheta_trans2'] |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
983 |
landau_symbols[THEN landau_symbol.ev_eq_trans1] |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
984 |
landau_symbols[THEN landau_symbol.ev_eq_trans2] |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
985 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
986 |
landau_o.big_trans landau_o.small_trans landau_o.small_big_trans landau_o.big_small_trans |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
987 |
landau_omega.big_trans landau_omega.small_trans |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
988 |
landau_omega.small_big_trans landau_omega.big_small_trans |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
989 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
990 |
bigo_bigomega_trans bigo_smallomega_trans smallo_bigomega_trans smallo_smallomega_trans |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
991 |
bigomega_bigo_trans bigomega_smallo_trans smallomega_bigo_trans smallomega_smallo_trans |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
992 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
993 |
lemma bigtheta_inverse [simp]: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
994 |
shows "(\<lambda>x. inverse (f x)) \<in> \<Theta>[F](\<lambda>x. inverse (g x)) \<longleftrightarrow> f \<in> \<Theta>[F](g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
995 |
proof- |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
996 |
{ |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
997 |
fix f g :: "'a \<Rightarrow> 'b" and F assume A: "f \<in> \<Theta>[F](g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
998 |
then guess c1 c2 :: real unfolding bigtheta_def by (elim landau_o.bigE landau_omega.bigE IntE) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
999 |
note c = this |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1000 |
from c(3) have "inverse c2 > 0" by simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1001 |
moreover from c(2,4) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1002 |
have "eventually (\<lambda>x. norm (inverse (f x)) \<le> inverse c2 * norm (inverse (g x))) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1003 |
proof eventually_elim |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1004 |
fix x assume A: "(norm (f x)) \<le> c1 * (norm (g x))" "c2 * (norm (g x)) \<le> (norm (f x))" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1005 |
from A c(1,3) have "f x = 0 \<longleftrightarrow> g x = 0" by (auto simp: field_simps mult_le_0_iff) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1006 |
with A c(1,3) show "norm (inverse (f x)) \<le> inverse c2 * norm (inverse (g x))" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1007 |
by (force simp: field_simps norm_inverse norm_divide) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1008 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1009 |
ultimately have "(\<lambda>x. inverse (f x)) \<in> O[F](\<lambda>x. inverse (g x))" by (rule landau_o.bigI) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1010 |
} |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1011 |
thus ?thesis unfolding bigtheta_def |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1012 |
by (force simp: bigomega_iff_bigo bigtheta_sym) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1013 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1014 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1015 |
lemma bigtheta_divide: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1016 |
assumes "f1 \<in> \<Theta>(f2)" "g1 \<in> \<Theta>(g2)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1017 |
shows "(\<lambda>x. f1 x / g1 x) \<in> \<Theta>(\<lambda>x. f2 x / g2 x)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1018 |
by (subst (1 2) divide_inverse, intro landau_theta.mult) (simp_all add: bigtheta_inverse assms) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1019 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1020 |
lemma eventually_nonzero_bigtheta: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1021 |
assumes "f \<in> \<Theta>[F](g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1022 |
shows "eventually (\<lambda>x. f x \<noteq> 0) F \<longleftrightarrow> eventually (\<lambda>x. g x \<noteq> 0) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1023 |
proof- |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1024 |
{ |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1025 |
fix f g :: "'a \<Rightarrow> 'b" and F assume A: "f \<in> \<Theta>[F](g)" and B: "eventually (\<lambda>x. f x \<noteq> 0) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1026 |
from A guess c1 c2 unfolding bigtheta_def by (elim landau_o.bigE landau_omega.bigE IntE) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1027 |
from B this(2,4) have "eventually (\<lambda>x. g x \<noteq> 0) F" by eventually_elim auto |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1028 |
} |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1029 |
with assms show ?thesis by (force simp: bigtheta_sym) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1030 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1031 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1032 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1033 |
subsection {* Landau symbols and limits *} |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1034 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1035 |
lemma bigoI_tendsto_norm: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1036 |
fixes f g |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1037 |
assumes "((\<lambda>x. norm (f x / g x)) \<longlongrightarrow> c) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1038 |
assumes "eventually (\<lambda>x. g x \<noteq> 0) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1039 |
shows "f \<in> O[F](g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1040 |
proof (rule bigoI) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1041 |
from assms have "eventually (\<lambda>x. dist (norm (f x / g x)) c < 1) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1042 |
using tendstoD by force |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1043 |
thus "eventually (\<lambda>x. (norm (f x)) \<le> (norm c + 1) * (norm (g x))) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1044 |
unfolding dist_real_def using assms(2) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1045 |
proof eventually_elim |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1046 |
case (elim x) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1047 |
have "(norm (f x)) - norm c * (norm (g x)) \<le> norm ((norm (f x)) - c * (norm (g x)))" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1048 |
unfolding norm_mult [symmetric] using norm_triangle_ineq2[of "norm (f x)" "c * norm (g x)"] |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1049 |
by (simp add: norm_mult abs_mult) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1050 |
also from elim have "\<dots> = norm (norm (g x)) * norm (norm (f x / g x) - c)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1051 |
unfolding norm_mult [symmetric] by (simp add: algebra_simps norm_divide) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1052 |
also from elim have "norm (norm (f x / g x) - c) \<le> 1" by simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1053 |
hence "norm (norm (g x)) * norm (norm (f x / g x) - c) \<le> norm (norm (g x)) * 1" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1054 |
by (rule mult_left_mono) simp_all |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1055 |
finally show ?case by (simp add: algebra_simps) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1056 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1057 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1058 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1059 |
lemma bigoI_tendsto: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1060 |
assumes "((\<lambda>x. f x / g x) \<longlongrightarrow> c) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1061 |
assumes "eventually (\<lambda>x. g x \<noteq> 0) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1062 |
shows "f \<in> O[F](g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1063 |
using assms by (rule bigoI_tendsto_norm[OF tendsto_norm]) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1064 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1065 |
lemma bigomegaI_tendsto_norm: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1066 |
assumes c_not_0: "(c::real) \<noteq> 0" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1067 |
assumes lim: "((\<lambda>x. norm (f x / g x)) \<longlongrightarrow> c) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1068 |
shows "f \<in> \<Omega>[F](g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1069 |
proof (cases "F = bot") |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1070 |
case False |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1071 |
show ?thesis |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1072 |
proof (rule landau_omega.bigI) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1073 |
from lim have "c \<ge> 0" by (rule tendsto_lowerbound) (insert False, simp_all) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1074 |
with c_not_0 have "c > 0" by simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1075 |
with c_not_0 show "c/2 > 0" by simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1076 |
from lim have ev: "\<And>\<epsilon>. \<epsilon> > 0 \<Longrightarrow> eventually (\<lambda>x. norm (norm (f x / g x) - c) < \<epsilon>) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1077 |
by (subst (asm) tendsto_iff) (simp add: dist_real_def) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1078 |
from ev[OF `c/2 > 0`] show "eventually (\<lambda>x. (norm (f x)) \<ge> c/2 * (norm (g x))) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1079 |
proof (eventually_elim) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1080 |
fix x assume B: "norm (norm (f x / g x) - c) < c / 2" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1081 |
from B have g: "g x \<noteq> 0" by auto |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1082 |
from B have "-c/2 < -norm (norm (f x / g x) - c)" by simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1083 |
also have "... \<le> norm (f x / g x) - c" by simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1084 |
finally show "(norm (f x)) \<ge> c/2 * (norm (g x))" using g |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1085 |
by (simp add: field_simps norm_mult norm_divide) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1086 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1087 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1088 |
qed simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1089 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1090 |
lemma bigomegaI_tendsto: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1091 |
assumes c_not_0: "(c::real) \<noteq> 0" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1092 |
assumes lim: "((\<lambda>x. f x / g x) \<longlongrightarrow> c) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1093 |
shows "f \<in> \<Omega>[F](g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1094 |
by (rule bigomegaI_tendsto_norm[OF _ tendsto_norm, of c]) (insert assms, simp_all) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1095 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1096 |
lemma smallomegaI_filterlim_at_top_norm: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1097 |
assumes lim: "filterlim (\<lambda>x. norm (f x / g x)) at_top F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1098 |
shows "f \<in> \<omega>[F](g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1099 |
proof (rule landau_omega.smallI) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1100 |
fix c :: real assume c_pos: "c > 0" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1101 |
from lim have ev: "eventually (\<lambda>x. norm (f x / g x) \<ge> c) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1102 |
by (subst (asm) filterlim_at_top) simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1103 |
thus "eventually (\<lambda>x. (norm (f x)) \<ge> c * (norm (g x))) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1104 |
proof eventually_elim |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1105 |
fix x assume A: "norm (f x / g x) \<ge> c" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1106 |
from A c_pos have "g x \<noteq> 0" by auto |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1107 |
with A show "(norm (f x)) \<ge> c * (norm (g x))" by (simp add: field_simps norm_divide) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1108 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1109 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1110 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1111 |
lemma smallomegaI_filterlim_at_infinity: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1112 |
assumes lim: "filterlim (\<lambda>x. f x / g x) at_infinity F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1113 |
shows "f \<in> \<omega>[F](g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1114 |
proof (rule smallomegaI_filterlim_at_top_norm) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1115 |
from lim show "filterlim (\<lambda>x. norm (f x / g x)) at_top F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1116 |
by (rule filterlim_at_infinity_imp_norm_at_top) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1117 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1118 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1119 |
lemma smallomegaD_filterlim_at_top_norm: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1120 |
assumes "f \<in> \<omega>[F](g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1121 |
assumes "eventually (\<lambda>x. g x \<noteq> 0) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1122 |
shows "LIM x F. norm (f x / g x) :> at_top" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1123 |
proof (subst filterlim_at_top_gt, clarify) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1124 |
fix c :: real assume c: "c > 0" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1125 |
from landau_omega.smallD[OF assms(1) this] assms(2) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1126 |
show "eventually (\<lambda>x. norm (f x / g x) \<ge> c) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1127 |
by eventually_elim (simp add: field_simps norm_divide) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1128 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1129 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1130 |
lemma smallomegaD_filterlim_at_infinity: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1131 |
assumes "f \<in> \<omega>[F](g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1132 |
assumes "eventually (\<lambda>x. g x \<noteq> 0) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1133 |
shows "LIM x F. f x / g x :> at_infinity" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1134 |
using assms by (intro filterlim_norm_at_top_imp_at_infinity smallomegaD_filterlim_at_top_norm) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1135 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1136 |
lemma smallomega_1_conv_filterlim: "f \<in> \<omega>[F](\<lambda>_. 1) \<longleftrightarrow> filterlim f at_infinity F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1137 |
by (auto intro: smallomegaI_filterlim_at_infinity dest: smallomegaD_filterlim_at_infinity) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1138 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1139 |
lemma smalloI_tendsto: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1140 |
assumes lim: "((\<lambda>x. f x / g x) \<longlongrightarrow> 0) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1141 |
assumes "eventually (\<lambda>x. g x \<noteq> 0) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1142 |
shows "f \<in> o[F](g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1143 |
proof (rule landau_o.smallI) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1144 |
fix c :: real assume c_pos: "c > 0" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1145 |
from c_pos and lim have ev: "eventually (\<lambda>x. norm (f x / g x) < c) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1146 |
by (subst (asm) tendsto_iff) (simp add: dist_real_def) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1147 |
with assms(2) show "eventually (\<lambda>x. (norm (f x)) \<le> c * (norm (g x))) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1148 |
by eventually_elim (simp add: field_simps norm_divide) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1149 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1150 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1151 |
lemma smalloD_tendsto: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1152 |
assumes "f \<in> o[F](g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1153 |
shows "((\<lambda>x. f x / g x) \<longlongrightarrow> 0) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1154 |
unfolding tendsto_iff |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1155 |
proof clarify |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1156 |
fix e :: real assume e: "e > 0" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1157 |
hence "e/2 > 0" by simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1158 |
from landau_o.smallD[OF assms this] show "eventually (\<lambda>x. dist (f x / g x) 0 < e) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1159 |
proof eventually_elim |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1160 |
fix x assume "(norm (f x)) \<le> e/2 * (norm (g x))" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1161 |
with e have "dist (f x / g x) 0 \<le> e/2" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1162 |
by (cases "g x = 0") (simp_all add: dist_real_def norm_divide field_simps) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1163 |
also from e have "... < e" by simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1164 |
finally show "dist (f x / g x) 0 < e" by simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1165 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1166 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1167 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1168 |
lemma bigthetaI_tendsto_norm: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1169 |
assumes c_not_0: "(c::real) \<noteq> 0" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1170 |
assumes lim: "((\<lambda>x. norm (f x / g x)) \<longlongrightarrow> c) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1171 |
shows "f \<in> \<Theta>[F](g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1172 |
proof (rule bigthetaI) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1173 |
from c_not_0 have "\<bar>c\<bar> > 0" by simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1174 |
with lim have "eventually (\<lambda>x. norm (norm (f x / g x) - c) < \<bar>c\<bar>) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1175 |
by (subst (asm) tendsto_iff) (simp add: dist_real_def) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1176 |
hence g: "eventually (\<lambda>x. g x \<noteq> 0) F" by eventually_elim (auto simp add: field_simps) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1177 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1178 |
from lim g show "f \<in> O[F](g)" by (rule bigoI_tendsto_norm) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1179 |
from c_not_0 and lim show "f \<in> \<Omega>[F](g)" by (rule bigomegaI_tendsto_norm) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1180 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1181 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1182 |
lemma bigthetaI_tendsto: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1183 |
assumes c_not_0: "(c::real) \<noteq> 0" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1184 |
assumes lim: "((\<lambda>x. f x / g x) \<longlongrightarrow> c) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1185 |
shows "f \<in> \<Theta>[F](g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1186 |
using assms by (intro bigthetaI_tendsto_norm[OF _ tendsto_norm, of "c"]) simp_all |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1187 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1188 |
lemma tendsto_add_smallo: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1189 |
assumes "(f1 \<longlongrightarrow> a) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1190 |
assumes "f2 \<in> o[F](f1)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1191 |
shows "((\<lambda>x. f1 x + f2 x) \<longlongrightarrow> a) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1192 |
proof (subst filterlim_cong[OF refl refl]) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1193 |
from landau_o.smallD[OF assms(2) zero_less_one] |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1194 |
have "eventually (\<lambda>x. norm (f2 x) \<le> norm (f1 x)) F" by simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1195 |
thus "eventually (\<lambda>x. f1 x + f2 x = f1 x * (1 + f2 x / f1 x)) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1196 |
by eventually_elim (auto simp: field_simps) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1197 |
next |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1198 |
from assms(1) show "((\<lambda>x. f1 x * (1 + f2 x / f1 x)) \<longlongrightarrow> a) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1199 |
by (force intro: tendsto_eq_intros smalloD_tendsto[OF assms(2)]) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1200 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1201 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1202 |
lemma tendsto_diff_smallo: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1203 |
shows "(f1 \<longlongrightarrow> a) F \<Longrightarrow> f2 \<in> o[F](f1) \<Longrightarrow> ((\<lambda>x. f1 x - f2 x) \<longlongrightarrow> a) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1204 |
using tendsto_add_smallo[of f1 a F "\<lambda>x. -f2 x"] by simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1205 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1206 |
lemma tendsto_add_smallo_iff: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1207 |
assumes "f2 \<in> o[F](f1)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1208 |
shows "(f1 \<longlongrightarrow> a) F \<longleftrightarrow> ((\<lambda>x. f1 x + f2 x) \<longlongrightarrow> a) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1209 |
proof |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1210 |
assume "((\<lambda>x. f1 x + f2 x) \<longlongrightarrow> a) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1211 |
hence "((\<lambda>x. f1 x + f2 x - f2 x) \<longlongrightarrow> a) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1212 |
by (rule tendsto_diff_smallo) (simp add: landau_o.small.plus_absorb2 assms) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1213 |
thus "(f1 \<longlongrightarrow> a) F" by simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1214 |
qed (rule tendsto_add_smallo[OF _ assms]) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1215 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1216 |
lemma tendsto_diff_smallo_iff: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1217 |
shows "f2 \<in> o[F](f1) \<Longrightarrow> (f1 \<longlongrightarrow> a) F \<longleftrightarrow> ((\<lambda>x. f1 x - f2 x) \<longlongrightarrow> a) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1218 |
using tendsto_add_smallo_iff[of "\<lambda>x. -f2 x" F f1 a] by simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1219 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1220 |
lemma tendsto_divide_smallo: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1221 |
assumes "((\<lambda>x. f1 x / g1 x) \<longlongrightarrow> a) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1222 |
assumes "f2 \<in> o[F](f1)" "g2 \<in> o[F](g1)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1223 |
assumes "eventually (\<lambda>x. g1 x \<noteq> 0) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1224 |
shows "((\<lambda>x. (f1 x + f2 x) / (g1 x + g2 x)) \<longlongrightarrow> a) F" (is "(?f \<longlongrightarrow> _) _") |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1225 |
proof (subst tendsto_cong) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1226 |
let ?f' = "\<lambda>x. (f1 x / g1 x) * (1 + f2 x / f1 x) / (1 + g2 x / g1 x)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1227 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1228 |
have "(?f' \<longlongrightarrow> a * (1 + 0) / (1 + 0)) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1229 |
by (rule tendsto_mult tendsto_divide tendsto_add assms tendsto_const |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1230 |
smalloD_tendsto[OF assms(2)] smalloD_tendsto[OF assms(3)])+ simp_all |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1231 |
thus "(?f' \<longlongrightarrow> a) F" by simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1232 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1233 |
have "(1/2::real) > 0" by simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1234 |
from landau_o.smallD[OF assms(2) this] landau_o.smallD[OF assms(3) this] |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1235 |
have "eventually (\<lambda>x. norm (f2 x) \<le> norm (f1 x)/2) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1236 |
"eventually (\<lambda>x. norm (g2 x) \<le> norm (g1 x)/2) F" by simp_all |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1237 |
with assms(4) show "eventually (\<lambda>x. ?f x = ?f' x) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1238 |
proof eventually_elim |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1239 |
fix x assume A: "norm (f2 x) \<le> norm (f1 x)/2" and |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1240 |
B: "norm (g2 x) \<le> norm (g1 x)/2" and C: "g1 x \<noteq> 0" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1241 |
show "?f x = ?f' x" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1242 |
proof (cases "f1 x = 0") |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1243 |
assume D: "f1 x \<noteq> 0" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1244 |
from D have "f1 x + f2 x = f1 x * (1 + f2 x/f1 x)" by (simp add: field_simps) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1245 |
moreover from C have "g1 x + g2 x = g1 x * (1 + g2 x/g1 x)" by (simp add: field_simps) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1246 |
ultimately have "?f x = (f1 x * (1 + f2 x/f1 x)) / (g1 x * (1 + g2 x/g1 x))" by (simp only:) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1247 |
also have "... = ?f' x" by simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1248 |
finally show ?thesis . |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1249 |
qed (insert A, simp) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1250 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1251 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1252 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1253 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1254 |
lemma bigo_powr: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1255 |
fixes f :: "'a \<Rightarrow> real" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1256 |
assumes "f \<in> O[F](g)" "p \<ge> 0" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1257 |
shows "(\<lambda>x. \<bar>f x\<bar> powr p) \<in> O[F](\<lambda>x. \<bar>g x\<bar> powr p)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1258 |
proof- |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1259 |
from assms(1) guess c by (elim landau_o.bigE landau_omega.bigE IntE) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1260 |
note c = this |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1261 |
from c(2) assms(2) have "eventually (\<lambda>x. (norm (f x)) powr p \<le> (c * (norm (g x))) powr p) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1262 |
by (auto elim!: eventually_mono intro!: powr_mono2) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1263 |
thus "(\<lambda>x. \<bar>f x\<bar> powr p) \<in> O[F](\<lambda>x. \<bar>g x\<bar> powr p)" using c(1) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1264 |
by (intro bigoI[of _ "c powr p"]) (simp_all add: powr_mult) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1265 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1266 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1267 |
lemma smallo_powr: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1268 |
fixes f :: "'a \<Rightarrow> real" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1269 |
assumes "f \<in> o[F](g)" "p > 0" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1270 |
shows "(\<lambda>x. \<bar>f x\<bar> powr p) \<in> o[F](\<lambda>x. \<bar>g x\<bar> powr p)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1271 |
proof (rule landau_o.smallI) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1272 |
fix c :: real assume c: "c > 0" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1273 |
hence "c powr (1/p) > 0" by simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1274 |
from landau_o.smallD[OF assms(1) this] |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1275 |
show "eventually (\<lambda>x. norm (\<bar>f x\<bar> powr p) \<le> c * norm (\<bar>g x\<bar> powr p)) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1276 |
proof eventually_elim |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1277 |
fix x assume "(norm (f x)) \<le> c powr (1 / p) * (norm (g x))" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1278 |
with assms(2) have "(norm (f x)) powr p \<le> (c powr (1 / p) * (norm (g x))) powr p" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1279 |
by (intro powr_mono2) simp_all |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1280 |
also from assms(2) c have "... = c * (norm (g x)) powr p" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1281 |
by (simp add: field_simps powr_mult powr_powr) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1282 |
finally show "norm (\<bar>f x\<bar> powr p) \<le> c * norm (\<bar>g x\<bar> powr p)" by simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1283 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1284 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1285 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1286 |
lemma smallo_powr_nonneg: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1287 |
fixes f :: "'a \<Rightarrow> real" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1288 |
assumes "f \<in> o[F](g)" "p > 0" "eventually (\<lambda>x. f x \<ge> 0) F" "eventually (\<lambda>x. g x \<ge> 0) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1289 |
shows "(\<lambda>x. f x powr p) \<in> o[F](\<lambda>x. g x powr p)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1290 |
proof - |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1291 |
from assms(3) have "(\<lambda>x. f x powr p) \<in> \<Theta>[F](\<lambda>x. \<bar>f x\<bar> powr p)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1292 |
by (intro bigthetaI_cong) (auto elim!: eventually_mono) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1293 |
also have "(\<lambda>x. \<bar>f x\<bar> powr p) \<in> o[F](\<lambda>x. \<bar>g x\<bar> powr p)" by (intro smallo_powr) fact+ |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1294 |
also from assms(4) have "(\<lambda>x. \<bar>g x\<bar> powr p) \<in> \<Theta>[F](\<lambda>x. g x powr p)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1295 |
by (intro bigthetaI_cong) (auto elim!: eventually_mono) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1296 |
finally show ?thesis . |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1297 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1298 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1299 |
lemma bigtheta_powr: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1300 |
fixes f :: "'a \<Rightarrow> real" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1301 |
shows "f \<in> \<Theta>[F](g) \<Longrightarrow> (\<lambda>x. \<bar>f x\<bar> powr p) \<in> \<Theta>[F](\<lambda>x. \<bar>g x\<bar> powr p)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1302 |
apply (cases "p < 0") |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1303 |
apply (subst bigtheta_inverse[symmetric], subst (1 2) powr_minus[symmetric]) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1304 |
unfolding bigtheta_def apply (auto simp: bigomega_iff_bigo intro!: bigo_powr) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1305 |
done |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1306 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1307 |
lemma bigo_powr_nonneg: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1308 |
fixes f :: "'a \<Rightarrow> real" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1309 |
assumes "f \<in> O[F](g)" "p \<ge> 0" "eventually (\<lambda>x. f x \<ge> 0) F" "eventually (\<lambda>x. g x \<ge> 0) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1310 |
shows "(\<lambda>x. f x powr p) \<in> O[F](\<lambda>x. g x powr p)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1311 |
proof - |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1312 |
from assms(3) have "(\<lambda>x. f x powr p) \<in> \<Theta>[F](\<lambda>x. \<bar>f x\<bar> powr p)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1313 |
by (intro bigthetaI_cong) (auto elim!: eventually_mono) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1314 |
also have "(\<lambda>x. \<bar>f x\<bar> powr p) \<in> O[F](\<lambda>x. \<bar>g x\<bar> powr p)" by (intro bigo_powr) fact+ |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1315 |
also from assms(4) have "(\<lambda>x. \<bar>g x\<bar> powr p) \<in> \<Theta>[F](\<lambda>x. g x powr p)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1316 |
by (intro bigthetaI_cong) (auto elim!: eventually_mono) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1317 |
finally show ?thesis . |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1318 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1319 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1320 |
lemma zero_in_smallo [simp]: "(\<lambda>_. 0) \<in> o[F](f)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1321 |
by (intro landau_o.smallI) simp_all |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1322 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1323 |
lemma zero_in_bigo [simp]: "(\<lambda>_. 0) \<in> O[F](f)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1324 |
by (intro landau_o.bigI[of 1]) simp_all |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1325 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1326 |
lemma in_bigomega_zero [simp]: "f \<in> \<Omega>[F](\<lambda>x. 0)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1327 |
by (rule landau_omega.bigI[of 1]) simp_all |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1328 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1329 |
lemma in_smallomega_zero [simp]: "f \<in> \<omega>[F](\<lambda>x. 0)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1330 |
by (simp add: smallomega_iff_smallo) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1331 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1332 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1333 |
lemma in_smallo_zero_iff [simp]: "f \<in> o[F](\<lambda>_. 0) \<longleftrightarrow> eventually (\<lambda>x. f x = 0) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1334 |
proof |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1335 |
assume "f \<in> o[F](\<lambda>_. 0)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1336 |
from landau_o.smallD[OF this, of 1] show "eventually (\<lambda>x. f x = 0) F" by simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1337 |
next |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1338 |
assume "eventually (\<lambda>x. f x = 0) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1339 |
hence "\<forall>c>0. eventually (\<lambda>x. (norm (f x)) \<le> c * \<bar>0\<bar>) F" by simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1340 |
thus "f \<in> o[F](\<lambda>_. 0)" unfolding smallo_def by simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1341 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1342 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1343 |
lemma in_bigo_zero_iff [simp]: "f \<in> O[F](\<lambda>_. 0) \<longleftrightarrow> eventually (\<lambda>x. f x = 0) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1344 |
proof |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1345 |
assume "f \<in> O[F](\<lambda>_. 0)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1346 |
thus "eventually (\<lambda>x. f x = 0) F" by (elim landau_o.bigE) simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1347 |
next |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1348 |
assume "eventually (\<lambda>x. f x = 0) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1349 |
hence "eventually (\<lambda>x. (norm (f x)) \<le> 1 * \<bar>0\<bar>) F" by simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1350 |
thus "f \<in> O[F](\<lambda>_. 0)" by (intro landau_o.bigI[of 1]) simp_all |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1351 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1352 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1353 |
lemma zero_in_smallomega_iff [simp]: "(\<lambda>_. 0) \<in> \<omega>[F](f) \<longleftrightarrow> eventually (\<lambda>x. f x = 0) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1354 |
by (simp add: smallomega_iff_smallo) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1355 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1356 |
lemma zero_in_bigomega_iff [simp]: "(\<lambda>_. 0) \<in> \<Omega>[F](f) \<longleftrightarrow> eventually (\<lambda>x. f x = 0) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1357 |
by (simp add: bigomega_iff_bigo) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1358 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1359 |
lemma zero_in_bigtheta_iff [simp]: "(\<lambda>_. 0) \<in> \<Theta>[F](f) \<longleftrightarrow> eventually (\<lambda>x. f x = 0) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1360 |
unfolding bigtheta_def by simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1361 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1362 |
lemma in_bigtheta_zero_iff [simp]: "f \<in> \<Theta>[F](\<lambda>x. 0) \<longleftrightarrow> eventually (\<lambda>x. f x = 0) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1363 |
unfolding bigtheta_def by simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1364 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1365 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1366 |
lemma cmult_in_bigo_iff [simp]: "(\<lambda>x. c * f x) \<in> O[F](g) \<longleftrightarrow> c = 0 \<or> f \<in> O[F](g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1367 |
and cmult_in_bigo_iff' [simp]: "(\<lambda>x. f x * c) \<in> O[F](g) \<longleftrightarrow> c = 0 \<or> f \<in> O[F](g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1368 |
and cmult_in_smallo_iff [simp]: "(\<lambda>x. c * f x) \<in> o[F](g) \<longleftrightarrow> c = 0 \<or> f \<in> o[F](g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1369 |
and cmult_in_smallo_iff' [simp]: "(\<lambda>x. f x * c) \<in> o[F](g) \<longleftrightarrow> c = 0 \<or> f \<in> o[F](g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1370 |
by (cases "c = 0", simp, simp)+ |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1371 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1372 |
lemma bigo_const [simp]: "(\<lambda>_. c) \<in> O[F](\<lambda>_. 1)" by (rule bigoI[of _ "norm c"]) simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1373 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1374 |
lemma bigo_const_iff [simp]: "(\<lambda>_. c1) \<in> O[F](\<lambda>_. c2) \<longleftrightarrow> F = bot \<or> c1 = 0 \<or> c2 \<noteq> 0" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1375 |
by (cases "c1 = 0"; cases "c2 = 0") |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1376 |
(auto simp: bigo_def eventually_False intro: exI[of _ 1] exI[of _ "norm c1 / norm c2"]) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1377 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1378 |
lemma bigomega_const_iff [simp]: "(\<lambda>_. c1) \<in> \<Omega>[F](\<lambda>_. c2) \<longleftrightarrow> F = bot \<or> c1 \<noteq> 0 \<or> c2 = 0" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1379 |
by (cases "c1 = 0"; cases "c2 = 0") |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1380 |
(auto simp: bigomega_def eventually_False mult_le_0_iff |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1381 |
intro: exI[of _ 1] exI[of _ "norm c1 / norm c2"]) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1382 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1383 |
lemma smallo_real_nat_transfer: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1384 |
"(f :: real \<Rightarrow> real) \<in> o(g) \<Longrightarrow> (\<lambda>x::nat. f (real x)) \<in> o(\<lambda>x. g (real x))" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1385 |
by (rule landau_o.small.compose[OF _ filterlim_real_sequentially]) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1386 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1387 |
lemma bigo_real_nat_transfer: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1388 |
"(f :: real \<Rightarrow> real) \<in> O(g) \<Longrightarrow> (\<lambda>x::nat. f (real x)) \<in> O(\<lambda>x. g (real x))" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1389 |
by (rule landau_o.big.compose[OF _ filterlim_real_sequentially]) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1390 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1391 |
lemma smallomega_real_nat_transfer: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1392 |
"(f :: real \<Rightarrow> real) \<in> \<omega>(g) \<Longrightarrow> (\<lambda>x::nat. f (real x)) \<in> \<omega>(\<lambda>x. g (real x))" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1393 |
by (rule landau_omega.small.compose[OF _ filterlim_real_sequentially]) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1394 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1395 |
lemma bigomega_real_nat_transfer: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1396 |
"(f :: real \<Rightarrow> real) \<in> \<Omega>(g) \<Longrightarrow> (\<lambda>x::nat. f (real x)) \<in> \<Omega>(\<lambda>x. g (real x))" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1397 |
by (rule landau_omega.big.compose[OF _ filterlim_real_sequentially]) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1398 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1399 |
lemma bigtheta_real_nat_transfer: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1400 |
"(f :: real \<Rightarrow> real) \<in> \<Theta>(g) \<Longrightarrow> (\<lambda>x::nat. f (real x)) \<in> \<Theta>(\<lambda>x. g (real x))" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1401 |
unfolding bigtheta_def using bigo_real_nat_transfer bigomega_real_nat_transfer by blast |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1402 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1403 |
lemmas landau_real_nat_transfer [intro] = |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1404 |
bigo_real_nat_transfer smallo_real_nat_transfer bigomega_real_nat_transfer |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1405 |
smallomega_real_nat_transfer bigtheta_real_nat_transfer |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1406 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1407 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1408 |
lemma landau_symbol_if_at_top_eq [simp]: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1409 |
assumes "landau_symbol L L' Lr" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1410 |
shows "L at_top (\<lambda>x::'a::linordered_semidom. if x = a then f x else g x) = L at_top (g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1411 |
apply (rule landau_symbol.cong[OF assms]) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1412 |
using less_add_one[of a] apply (auto intro: eventually_mono eventually_ge_at_top[of "a + 1"]) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1413 |
done |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1414 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1415 |
lemmas landau_symbols_if_at_top_eq [simp] = landau_symbols[THEN landau_symbol_if_at_top_eq] |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1416 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1417 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1418 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1419 |
lemma sum_in_smallo: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1420 |
assumes "f \<in> o[F](h)" "g \<in> o[F](h)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1421 |
shows "(\<lambda>x. f x + g x) \<in> o[F](h)" "(\<lambda>x. f x - g x) \<in> o[F](h)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1422 |
proof- |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1423 |
{ |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1424 |
fix f g assume fg: "f \<in> o[F](h)" "g \<in> o[F](h)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1425 |
have "(\<lambda>x. f x + g x) \<in> o[F](h)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1426 |
proof (rule landau_o.smallI) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1427 |
fix c :: real assume "c > 0" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1428 |
hence "c/2 > 0" by simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1429 |
from fg[THEN landau_o.smallD[OF _ this]] |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1430 |
show "eventually (\<lambda>x. norm (f x + g x) \<le> c * (norm (h x))) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1431 |
by eventually_elim (auto intro: order.trans[OF norm_triangle_ineq]) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1432 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1433 |
} |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1434 |
from this[of f g] this[of f "\<lambda>x. -g x"] assms |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1435 |
show "(\<lambda>x. f x + g x) \<in> o[F](h)" "(\<lambda>x. f x - g x) \<in> o[F](h)" by simp_all |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1436 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1437 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1438 |
lemma big_sum_in_smallo: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1439 |
assumes "\<And>x. x \<in> A \<Longrightarrow> f x \<in> o[F](g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1440 |
shows "(\<lambda>x. sum (\<lambda>y. f y x) A) \<in> o[F](g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1441 |
using assms by (induction A rule: infinite_finite_induct) (auto intro: sum_in_smallo) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1442 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1443 |
lemma sum_in_bigo: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1444 |
assumes "f \<in> O[F](h)" "g \<in> O[F](h)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1445 |
shows "(\<lambda>x. f x + g x) \<in> O[F](h)" "(\<lambda>x. f x - g x) \<in> O[F](h)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1446 |
proof- |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1447 |
{ |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1448 |
fix f g assume fg: "f \<in> O[F](h)" "g \<in> O[F](h)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1449 |
from fg(1) guess c1 by (elim landau_o.bigE) note c1 = this |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1450 |
from fg(2) guess c2 by (elim landau_o.bigE) note c2 = this |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1451 |
from c1(2) c2(2) have "eventually (\<lambda>x. norm (f x + g x) \<le> (c1 + c2) * (norm (h x))) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1452 |
by eventually_elim (auto simp: algebra_simps intro: order.trans[OF norm_triangle_ineq]) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1453 |
hence "(\<lambda>x. f x + g x) \<in> O[F](h)" by (rule bigoI) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1454 |
} |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1455 |
from this[of f g] this[of f "\<lambda>x. -g x"] assms |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1456 |
show "(\<lambda>x. f x + g x) \<in> O[F](h)" "(\<lambda>x. f x - g x) \<in> O[F](h)" by simp_all |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1457 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1458 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1459 |
lemma big_sum_in_bigo: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1460 |
assumes "\<And>x. x \<in> A \<Longrightarrow> f x \<in> O[F](g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1461 |
shows "(\<lambda>x. sum (\<lambda>y. f y x) A) \<in> O[F](g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1462 |
using assms by (induction A rule: infinite_finite_induct) (auto intro: sum_in_bigo) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1463 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1464 |
context landau_symbol |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1465 |
begin |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1466 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1467 |
lemma mult_cancel_left: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1468 |
assumes "f1 \<in> \<Theta>[F](g1)" and "eventually (\<lambda>x. g1 x \<noteq> 0) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1469 |
notes [trans] = bigtheta_trans1 bigtheta_trans2 |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1470 |
shows "(\<lambda>x. f1 x * f2 x) \<in> L F (\<lambda>x. g1 x * g2 x) \<longleftrightarrow> f2 \<in> L F (g2)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1471 |
proof |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1472 |
assume A: "(\<lambda>x. f1 x * f2 x) \<in> L F (\<lambda>x. g1 x * g2 x)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1473 |
from assms have nz: "eventually (\<lambda>x. f1 x \<noteq> 0) F" by (simp add: eventually_nonzero_bigtheta) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1474 |
hence "f2 \<in> \<Theta>[F](\<lambda>x. f1 x * f2 x / f1 x)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1475 |
by (intro bigthetaI_cong) (auto elim!: eventually_mono) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1476 |
also from A assms nz have "(\<lambda>x. f1 x * f2 x / f1 x) \<in> L F (\<lambda>x. g1 x * g2 x / f1 x)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1477 |
by (intro divide_right) simp_all |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1478 |
also from assms nz have "(\<lambda>x. g1 x * g2 x / f1 x) \<in> \<Theta>[F](\<lambda>x. g1 x * g2 x / g1 x)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1479 |
by (intro landau_theta.mult landau_theta.divide) (simp_all add: bigtheta_sym) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1480 |
also from assms have "(\<lambda>x. g1 x * g2 x / g1 x) \<in> \<Theta>[F](g2)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1481 |
by (intro bigthetaI_cong) (auto elim!: eventually_mono) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1482 |
finally show "f2 \<in> L F (g2)" . |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1483 |
next |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1484 |
assume "f2 \<in> L F (g2)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1485 |
hence "(\<lambda>x. f1 x * f2 x) \<in> L F (\<lambda>x. f1 x * g2 x)" by (rule mult_left) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1486 |
also have "(\<lambda>x. f1 x * g2 x) \<in> \<Theta>[F](\<lambda>x. g1 x * g2 x)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1487 |
by (intro landau_theta.mult_right assms) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1488 |
finally show "(\<lambda>x. f1 x * f2 x) \<in> L F (\<lambda>x. g1 x * g2 x)" . |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1489 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1490 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1491 |
lemma mult_cancel_right: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1492 |
assumes "f2 \<in> \<Theta>[F](g2)" and "eventually (\<lambda>x. g2 x \<noteq> 0) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1493 |
shows "(\<lambda>x. f1 x * f2 x) \<in> L F (\<lambda>x. g1 x * g2 x) \<longleftrightarrow> f1 \<in> L F (g1)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1494 |
by (subst (1 2) mult.commute) (rule mult_cancel_left[OF assms]) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1495 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1496 |
lemma divide_cancel_right: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1497 |
assumes "f2 \<in> \<Theta>[F](g2)" and "eventually (\<lambda>x. g2 x \<noteq> 0) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1498 |
shows "(\<lambda>x. f1 x / f2 x) \<in> L F (\<lambda>x. g1 x / g2 x) \<longleftrightarrow> f1 \<in> L F (g1)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1499 |
by (subst (1 2) divide_inverse, intro mult_cancel_right bigtheta_inverse) (simp_all add: assms) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1500 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1501 |
lemma divide_cancel_left: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1502 |
assumes "f1 \<in> \<Theta>[F](g1)" and "eventually (\<lambda>x. g1 x \<noteq> 0) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1503 |
shows "(\<lambda>x. f1 x / f2 x) \<in> L F (\<lambda>x. g1 x / g2 x) \<longleftrightarrow> |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1504 |
(\<lambda>x. inverse (f2 x)) \<in> L F (\<lambda>x. inverse (g2 x))" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1505 |
by (simp only: divide_inverse mult_cancel_left[OF assms]) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1506 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1507 |
end |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1508 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1509 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1510 |
lemma powr_smallo_iff: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1511 |
assumes "filterlim g at_top F" "F \<noteq> bot" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1512 |
shows "(\<lambda>x. g x powr p :: real) \<in> o[F](\<lambda>x. g x powr q) \<longleftrightarrow> p < q" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1513 |
proof- |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1514 |
from assms have "eventually (\<lambda>x. g x \<ge> 1) F" by (force simp: filterlim_at_top) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1515 |
hence A: "eventually (\<lambda>x. g x \<noteq> 0) F" by eventually_elim simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1516 |
have B: "(\<lambda>x. g x powr q) \<in> O[F](\<lambda>x. g x powr p) \<Longrightarrow> (\<lambda>x. g x powr p) \<notin> o[F](\<lambda>x. g x powr q)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1517 |
proof |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1518 |
assume "(\<lambda>x. g x powr q) \<in> O[F](\<lambda>x. g x powr p)" "(\<lambda>x. g x powr p) \<in> o[F](\<lambda>x. g x powr q)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1519 |
from landau_o.big_small_asymmetric[OF this] have "eventually (\<lambda>x. g x = 0) F" by simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1520 |
with A have "eventually (\<lambda>_::'a. False) F" by eventually_elim simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1521 |
thus False by (simp add: eventually_False assms) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1522 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1523 |
show ?thesis |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1524 |
proof (cases p q rule: linorder_cases) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1525 |
assume "p < q" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1526 |
hence "(\<lambda>x. g x powr p) \<in> o[F](\<lambda>x. g x powr q)" using assms A |
68406 | 1527 |
by (auto intro!: smalloI_tendsto tendsto_neg_powr simp flip: powr_diff) |
68246
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1528 |
with `p < q` show ?thesis by auto |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1529 |
next |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1530 |
assume "p = q" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1531 |
hence "(\<lambda>x. g x powr q) \<in> O[F](\<lambda>x. g x powr p)" by (auto intro!: bigthetaD1) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1532 |
with B `p = q` show ?thesis by auto |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1533 |
next |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1534 |
assume "p > q" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1535 |
hence "(\<lambda>x. g x powr q) \<in> O[F](\<lambda>x. g x powr p)" using assms A |
68406 | 1536 |
by (auto intro!: smalloI_tendsto tendsto_neg_powr landau_o.small_imp_big simp flip: powr_diff) |
68246
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1537 |
with B `p > q` show ?thesis by auto |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1538 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1539 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1540 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1541 |
lemma powr_bigo_iff: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1542 |
assumes "filterlim g at_top F" "F \<noteq> bot" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1543 |
shows "(\<lambda>x. g x powr p :: real) \<in> O[F](\<lambda>x. g x powr q) \<longleftrightarrow> p \<le> q" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1544 |
proof- |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1545 |
from assms have "eventually (\<lambda>x. g x \<ge> 1) F" by (force simp: filterlim_at_top) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1546 |
hence A: "eventually (\<lambda>x. g x \<noteq> 0) F" by eventually_elim simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1547 |
have B: "(\<lambda>x. g x powr q) \<in> o[F](\<lambda>x. g x powr p) \<Longrightarrow> (\<lambda>x. g x powr p) \<notin> O[F](\<lambda>x. g x powr q)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1548 |
proof |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1549 |
assume "(\<lambda>x. g x powr q) \<in> o[F](\<lambda>x. g x powr p)" "(\<lambda>x. g x powr p) \<in> O[F](\<lambda>x. g x powr q)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1550 |
from landau_o.small_big_asymmetric[OF this] have "eventually (\<lambda>x. g x = 0) F" by simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1551 |
with A have "eventually (\<lambda>_::'a. False) F" by eventually_elim simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1552 |
thus False by (simp add: eventually_False assms) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1553 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1554 |
show ?thesis |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1555 |
proof (cases p q rule: linorder_cases) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1556 |
assume "p < q" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1557 |
hence "(\<lambda>x. g x powr p) \<in> o[F](\<lambda>x. g x powr q)" using assms A |
68406 | 1558 |
by (auto intro!: smalloI_tendsto tendsto_neg_powr simp flip: powr_diff) |
68246
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1559 |
with `p < q` show ?thesis by (auto intro: landau_o.small_imp_big) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1560 |
next |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1561 |
assume "p = q" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1562 |
hence "(\<lambda>x. g x powr q) \<in> O[F](\<lambda>x. g x powr p)" by (auto intro!: bigthetaD1) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1563 |
with B `p = q` show ?thesis by auto |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1564 |
next |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1565 |
assume "p > q" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1566 |
hence "(\<lambda>x. g x powr q) \<in> o[F](\<lambda>x. g x powr p)" using assms A |
68406 | 1567 |
by (auto intro!: smalloI_tendsto tendsto_neg_powr simp flip: powr_diff) |
68246
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1568 |
with B `p > q` show ?thesis by (auto intro: landau_o.small_imp_big) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1569 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1570 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1571 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1572 |
lemma powr_bigtheta_iff: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1573 |
assumes "filterlim g at_top F" "F \<noteq> bot" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1574 |
shows "(\<lambda>x. g x powr p :: real) \<in> \<Theta>[F](\<lambda>x. g x powr q) \<longleftrightarrow> p = q" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1575 |
using assms unfolding bigtheta_def by (auto simp: bigomega_iff_bigo powr_bigo_iff) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1576 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1577 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1578 |
subsection \<open>Flatness of real functions\<close> |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1579 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1580 |
text \<open> |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1581 |
Given two real-valued functions $f$ and $g$, we say that $f$ is flatter than $g$ if |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1582 |
any power of $f(x)$ is asymptotically dominated by any positive power of $g(x)$. This is |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1583 |
a useful notion since, given two products of powers of functions sorted by flatness, we can |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1584 |
compare them asymptotically by simply comparing the exponent lists lexicographically. |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1585 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1586 |
A simple sufficient criterion for flatness it that $\ln f(x) \in o(\ln g(x))$, which we show |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1587 |
now. |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1588 |
\<close> |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1589 |
lemma ln_smallo_imp_flat: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1590 |
fixes f g :: "real \<Rightarrow> real" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1591 |
assumes lim_f: "filterlim f at_top at_top" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1592 |
assumes lim_g: "filterlim g at_top at_top" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1593 |
assumes ln_o_ln: "(\<lambda>x. ln (f x)) \<in> o(\<lambda>x. ln (g x))" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1594 |
assumes q: "q > 0" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1595 |
shows "(\<lambda>x. f x powr p) \<in> o(\<lambda>x. g x powr q)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1596 |
proof (rule smalloI_tendsto) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1597 |
from lim_f have "eventually (\<lambda>x. f x > 0) at_top" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1598 |
by (simp add: filterlim_at_top_dense) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1599 |
hence f_nz: "eventually (\<lambda>x. f x \<noteq> 0) at_top" by eventually_elim simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1600 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1601 |
from lim_g have g_gt_1: "eventually (\<lambda>x. g x > 1) at_top" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1602 |
by (simp add: filterlim_at_top_dense) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1603 |
hence g_nz: "eventually (\<lambda>x. g x \<noteq> 0) at_top" by eventually_elim simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1604 |
thus "eventually (\<lambda>x. g x powr q \<noteq> 0) at_top" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1605 |
by eventually_elim simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1606 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1607 |
have eq: "eventually (\<lambda>x. q * (p/q * (ln (f x) / ln (g x)) - 1) * ln (g x) = |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1608 |
p * ln (f x) - q * ln (g x)) at_top" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1609 |
using g_gt_1 by eventually_elim (insert q, simp_all add: field_simps) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1610 |
have "filterlim (\<lambda>x. q * (p/q * (ln (f x) / ln (g x)) - 1) * ln (g x)) at_bot at_top" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1611 |
by (insert q) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1612 |
(rule filterlim_tendsto_neg_mult_at_bot tendsto_mult |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1613 |
tendsto_const tendsto_diff smalloD_tendsto[OF ln_o_ln] lim_g |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1614 |
filterlim_compose[OF ln_at_top] | simp)+ |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1615 |
hence "filterlim (\<lambda>x. p * ln (f x) - q * ln (g x)) at_bot at_top" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1616 |
by (subst (asm) filterlim_cong[OF refl refl eq]) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1617 |
hence *: "((\<lambda>x. exp (p * ln (f x) - q * ln (g x))) \<longlongrightarrow> 0) at_top" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1618 |
by (rule filterlim_compose[OF exp_at_bot]) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1619 |
have eq: "eventually (\<lambda>x. exp (p * ln (f x) - q * ln (g x)) = f x powr p / g x powr q) at_top" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1620 |
using f_nz g_nz by eventually_elim (simp add: powr_def exp_diff) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1621 |
show "((\<lambda>x. f x powr p / g x powr q) \<longlongrightarrow> 0) at_top" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1622 |
using * by (subst (asm) filterlim_cong[OF refl refl eq]) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1623 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1624 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1625 |
lemma ln_smallo_imp_flat': |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1626 |
fixes f g :: "real \<Rightarrow> real" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1627 |
assumes lim_f: "filterlim f at_top at_top" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1628 |
assumes lim_g: "filterlim g at_top at_top" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1629 |
assumes ln_o_ln: "(\<lambda>x. ln (f x)) \<in> o(\<lambda>x. ln (g x))" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1630 |
assumes q: "q < 0" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1631 |
shows "(\<lambda>x. g x powr q) \<in> o(\<lambda>x. f x powr p)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1632 |
proof - |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1633 |
from lim_f lim_g have "eventually (\<lambda>x. f x > 0) at_top" "eventually (\<lambda>x. g x > 0) at_top" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1634 |
by (simp_all add: filterlim_at_top_dense) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1635 |
hence "eventually (\<lambda>x. f x \<noteq> 0) at_top" "eventually (\<lambda>x. g x \<noteq> 0) at_top" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1636 |
by (auto elim: eventually_mono) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1637 |
moreover from assms have "(\<lambda>x. f x powr -p) \<in> o(\<lambda>x. g x powr -q)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1638 |
by (intro ln_smallo_imp_flat assms) simp_all |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1639 |
ultimately show ?thesis unfolding powr_minus |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1640 |
by (simp add: landau_o.small.inverse_cancel) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1641 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1642 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1643 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1644 |
subsection \<open>Asymptotic Equivalence\<close> |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1645 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1646 |
(* TODO Move *) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1647 |
lemma Lim_eventually: "eventually (\<lambda>x. f x = c) F \<Longrightarrow> filterlim f (nhds c) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1648 |
by (simp add: eventually_mono eventually_nhds_x_imp_x filterlim_iff) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1649 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1650 |
named_theorems asymp_equiv_intros |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1651 |
named_theorems asymp_equiv_simps |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1652 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1653 |
definition asymp_equiv :: "('a \<Rightarrow> ('b :: real_normed_field)) \<Rightarrow> 'a filter \<Rightarrow> ('a \<Rightarrow> 'b) \<Rightarrow> bool" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1654 |
("_ \<sim>[_] _" [51, 10, 51] 50) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1655 |
where "f \<sim>[F] g \<longleftrightarrow> ((\<lambda>x. if f x = 0 \<and> g x = 0 then 1 else f x / g x) \<longlongrightarrow> 1) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1656 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1657 |
abbreviation (input) asymp_equiv_at_top where |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1658 |
"asymp_equiv_at_top f g \<equiv> f \<sim>[at_top] g" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1659 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1660 |
bundle asymp_equiv_notation |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1661 |
begin |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1662 |
notation asymp_equiv_at_top (infix "\<sim>" 50) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1663 |
end |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1664 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1665 |
lemma asymp_equivI: "((\<lambda>x. if f x = 0 \<and> g x = 0 then 1 else f x / g x) \<longlongrightarrow> 1) F \<Longrightarrow> f \<sim>[F] g" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1666 |
by (simp add: asymp_equiv_def) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1667 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1668 |
lemma asymp_equivD: "f \<sim>[F] g \<Longrightarrow> ((\<lambda>x. if f x = 0 \<and> g x = 0 then 1 else f x / g x) \<longlongrightarrow> 1) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1669 |
by (simp add: asymp_equiv_def) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1670 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1671 |
lemma asymp_equiv_filtermap_iff: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1672 |
"f \<sim>[filtermap h F] g \<longleftrightarrow> (\<lambda>x. f (h x)) \<sim>[F] (\<lambda>x. g (h x))" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1673 |
by (simp add: asymp_equiv_def filterlim_filtermap) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1674 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1675 |
lemma asymp_equiv_refl [simp, asymp_equiv_intros]: "f \<sim>[F] f" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1676 |
proof (intro asymp_equivI) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1677 |
have "eventually (\<lambda>x. 1 = (if f x = 0 \<and> f x = 0 then 1 else f x / f x)) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1678 |
by (intro always_eventually) simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1679 |
moreover have "((\<lambda>_. 1) \<longlongrightarrow> 1) F" by simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1680 |
ultimately show "((\<lambda>x. if f x = 0 \<and> f x = 0 then 1 else f x / f x) \<longlongrightarrow> 1) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1681 |
by (rule Lim_transform_eventually) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1682 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1683 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1684 |
lemma asymp_equiv_symI: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1685 |
assumes "f \<sim>[F] g" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1686 |
shows "g \<sim>[F] f" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1687 |
using tendsto_inverse[OF asymp_equivD[OF assms]] |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1688 |
by (auto intro!: asymp_equivI simp: if_distrib conj_commute cong: if_cong) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1689 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1690 |
lemma asymp_equiv_sym: "f \<sim>[F] g \<longleftrightarrow> g \<sim>[F] f" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1691 |
by (blast intro: asymp_equiv_symI) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1692 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1693 |
lemma asymp_equivI': |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1694 |
assumes "((\<lambda>x. f x / g x) \<longlongrightarrow> 1) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1695 |
shows "f \<sim>[F] g" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1696 |
proof (cases "F = bot") |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1697 |
case False |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1698 |
have "eventually (\<lambda>x. f x \<noteq> 0) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1699 |
proof (rule ccontr) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1700 |
assume "\<not>eventually (\<lambda>x. f x \<noteq> 0) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1701 |
hence "frequently (\<lambda>x. f x = 0) F" by (simp add: frequently_def) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1702 |
hence "frequently (\<lambda>x. f x / g x = 0) F" by (auto elim!: frequently_elim1) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1703 |
from limit_frequently_eq[OF False this assms] show False by simp_all |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1704 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1705 |
hence "eventually (\<lambda>x. f x / g x = (if f x = 0 \<and> g x = 0 then 1 else f x / g x)) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1706 |
by eventually_elim simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1707 |
from this and assms show "f \<sim>[F] g" unfolding asymp_equiv_def |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1708 |
by (rule Lim_transform_eventually) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1709 |
qed (simp_all add: asymp_equiv_def) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1710 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1711 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1712 |
lemma asymp_equiv_cong: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1713 |
assumes "eventually (\<lambda>x. f1 x = f2 x) F" "eventually (\<lambda>x. g1 x = g2 x) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1714 |
shows "f1 \<sim>[F] g1 \<longleftrightarrow> f2 \<sim>[F] g2" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1715 |
unfolding asymp_equiv_def |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1716 |
proof (rule tendsto_cong, goal_cases) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1717 |
case 1 |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1718 |
from assms show ?case by eventually_elim simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1719 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1720 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1721 |
lemma asymp_equiv_eventually_zeros: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1722 |
fixes f g :: "'a \<Rightarrow> 'b :: real_normed_field" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1723 |
assumes "f \<sim>[F] g" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1724 |
shows "eventually (\<lambda>x. f x = 0 \<longleftrightarrow> g x = 0) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1725 |
proof - |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1726 |
let ?h = "\<lambda>x. if f x = 0 \<and> g x = 0 then 1 else f x / g x" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1727 |
have "eventually (\<lambda>x. x \<noteq> 0) (nhds (1::'b))" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1728 |
by (rule t1_space_nhds) auto |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1729 |
hence "eventually (\<lambda>x. x \<noteq> 0) (filtermap ?h F)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1730 |
using assms unfolding asymp_equiv_def filterlim_def |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1731 |
by (rule filter_leD [rotated]) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1732 |
hence "eventually (\<lambda>x. ?h x \<noteq> 0) F" by (simp add: eventually_filtermap) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1733 |
thus ?thesis by eventually_elim (auto split: if_splits) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1734 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1735 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1736 |
lemma asymp_equiv_transfer: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1737 |
assumes "f1 \<sim>[F] g1" "eventually (\<lambda>x. f1 x = f2 x) F" "eventually (\<lambda>x. g1 x = g2 x) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1738 |
shows "f2 \<sim>[F] g2" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1739 |
using assms(1) asymp_equiv_cong[OF assms(2,3)] by simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1740 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1741 |
lemma asymp_equiv_transfer_trans [trans]: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1742 |
assumes "(\<lambda>x. f x (h1 x)) \<sim>[F] (\<lambda>x. g x (h1 x))" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1743 |
assumes "eventually (\<lambda>x. h1 x = h2 x) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1744 |
shows "(\<lambda>x. f x (h2 x)) \<sim>[F] (\<lambda>x. g x (h2 x))" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1745 |
by (rule asymp_equiv_transfer[OF assms(1)]) (insert assms(2), auto elim!: eventually_mono) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1746 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1747 |
lemma asymp_equiv_trans [trans]: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1748 |
fixes f g h |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1749 |
assumes "f \<sim>[F] g" "g \<sim>[F] h" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1750 |
shows "f \<sim>[F] h" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1751 |
proof - |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1752 |
let ?T = "\<lambda>f g x. if f x = 0 \<and> g x = 0 then 1 else f x / g x" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1753 |
from assms[THEN asymp_equiv_eventually_zeros] |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1754 |
have "eventually (\<lambda>x. ?T f g x * ?T g h x = ?T f h x) F" by eventually_elim simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1755 |
moreover from tendsto_mult[OF assms[THEN asymp_equivD]] |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1756 |
have "((\<lambda>x. ?T f g x * ?T g h x) \<longlongrightarrow> 1) F" by simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1757 |
ultimately show ?thesis unfolding asymp_equiv_def by (rule Lim_transform_eventually) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1758 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1759 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1760 |
lemma asymp_equiv_trans_lift1 [trans]: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1761 |
assumes "a \<sim>[F] f b" "b \<sim>[F] c" "\<And>c d. c \<sim>[F] d \<Longrightarrow> f c \<sim>[F] f d" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1762 |
shows "a \<sim>[F] f c" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1763 |
using assms by (blast intro: asymp_equiv_trans) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1764 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1765 |
lemma asymp_equiv_trans_lift2 [trans]: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1766 |
assumes "f a \<sim>[F] b" "a \<sim>[F] c" "\<And>c d. c \<sim>[F] d \<Longrightarrow> f c \<sim>[F] f d" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1767 |
shows "f c \<sim>[F] b" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1768 |
using asymp_equiv_symI[OF assms(3)[OF assms(2)]] assms(1) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1769 |
by (blast intro: asymp_equiv_trans) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1770 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1771 |
lemma asymp_equivD_const: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1772 |
assumes "f \<sim>[F] (\<lambda>_. c)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1773 |
shows "(f \<longlongrightarrow> c) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1774 |
proof (cases "c = 0") |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1775 |
case False |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1776 |
with tendsto_mult_right[OF asymp_equivD[OF assms], of c] show ?thesis by simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1777 |
next |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1778 |
case True |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1779 |
with asymp_equiv_eventually_zeros[OF assms] show ?thesis |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1780 |
by (simp add: Lim_eventually) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1781 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1782 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1783 |
lemma asymp_equiv_refl_ev: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1784 |
assumes "eventually (\<lambda>x. f x = g x) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1785 |
shows "f \<sim>[F] g" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1786 |
by (intro asymp_equivI Lim_eventually) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1787 |
(insert assms, auto elim!: eventually_mono) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1788 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1789 |
lemma asymp_equiv_sandwich: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1790 |
fixes f g h :: "'a \<Rightarrow> 'b :: {real_normed_field, order_topology, linordered_field}" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1791 |
assumes "eventually (\<lambda>x. f x \<ge> 0) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1792 |
assumes "eventually (\<lambda>x. f x \<le> g x) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1793 |
assumes "eventually (\<lambda>x. g x \<le> h x) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1794 |
assumes "f \<sim>[F] h" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1795 |
shows "g \<sim>[F] f" "g \<sim>[F] h" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1796 |
proof - |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1797 |
show "g \<sim>[F] f" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1798 |
proof (rule asymp_equivI, rule tendsto_sandwich) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1799 |
from assms(1-3) asymp_equiv_eventually_zeros[OF assms(4)] |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1800 |
show "eventually (\<lambda>n. (if h n = 0 \<and> f n = 0 then 1 else h n / f n) \<ge> |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1801 |
(if g n = 0 \<and> f n = 0 then 1 else g n / f n)) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1802 |
by eventually_elim (auto intro!: divide_right_mono) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1803 |
from assms(1-3) asymp_equiv_eventually_zeros[OF assms(4)] |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1804 |
show "eventually (\<lambda>n. 1 \<le> |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1805 |
(if g n = 0 \<and> f n = 0 then 1 else g n / f n)) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1806 |
by eventually_elim (auto intro!: divide_right_mono) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1807 |
qed (insert asymp_equiv_symI[OF assms(4)], simp_all add: asymp_equiv_def) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1808 |
also note \<open>f \<sim>[F] h\<close> |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1809 |
finally show "g \<sim>[F] h" . |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1810 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1811 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1812 |
lemma asymp_equiv_imp_eventually_same_sign: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1813 |
fixes f g :: "real \<Rightarrow> real" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1814 |
assumes "f \<sim>[F] g" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1815 |
shows "eventually (\<lambda>x. sgn (f x) = sgn (g x)) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1816 |
proof - |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1817 |
from assms have "((\<lambda>x. sgn (if f x = 0 \<and> g x = 0 then 1 else f x / g x)) \<longlongrightarrow> sgn 1) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1818 |
unfolding asymp_equiv_def by (rule tendsto_sgn) simp_all |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1819 |
from order_tendstoD(1)[OF this, of "1/2"] |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1820 |
have "eventually (\<lambda>x. sgn (if f x = 0 \<and> g x = 0 then 1 else f x / g x) > 1/2) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1821 |
by simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1822 |
thus "eventually (\<lambda>x. sgn (f x) = sgn (g x)) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1823 |
proof eventually_elim |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1824 |
case (elim x) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1825 |
thus ?case |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1826 |
by (cases "f x" "0 :: real" rule: linorder_cases; |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1827 |
cases "g x" "0 :: real" rule: linorder_cases) simp_all |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1828 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1829 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1830 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1831 |
lemma |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1832 |
fixes f g :: "_ \<Rightarrow> real" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1833 |
assumes "f \<sim>[F] g" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1834 |
shows asymp_equiv_eventually_same_sign: "eventually (\<lambda>x. sgn (f x) = sgn (g x)) F" (is ?th1) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1835 |
and asymp_equiv_eventually_neg_iff: "eventually (\<lambda>x. f x < 0 \<longleftrightarrow> g x < 0) F" (is ?th2) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1836 |
and asymp_equiv_eventually_pos_iff: "eventually (\<lambda>x. f x > 0 \<longleftrightarrow> g x > 0) F" (is ?th3) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1837 |
proof - |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1838 |
from assms have "filterlim (\<lambda>x. if f x = 0 \<and> g x = 0 then 1 else f x / g x) (nhds 1) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1839 |
by (rule asymp_equivD) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1840 |
from order_tendstoD(1)[OF this zero_less_one] |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1841 |
show ?th1 ?th2 ?th3 |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1842 |
by (eventually_elim; force simp: sgn_if divide_simps split: if_splits)+ |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1843 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1844 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1845 |
lemma asymp_equiv_tendsto_transfer: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1846 |
assumes "f \<sim>[F] g" and "(f \<longlongrightarrow> c) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1847 |
shows "(g \<longlongrightarrow> c) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1848 |
proof - |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1849 |
let ?h = "\<lambda>x. (if g x = 0 \<and> f x = 0 then 1 else g x / f x) * f x" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1850 |
have "eventually (\<lambda>x. ?h x = g x) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1851 |
using asymp_equiv_eventually_zeros[OF assms(1)] by eventually_elim simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1852 |
moreover from assms(1) have "g \<sim>[F] f" by (rule asymp_equiv_symI) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1853 |
hence "filterlim (\<lambda>x. if g x = 0 \<and> f x = 0 then 1 else g x / f x) (nhds 1) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1854 |
by (rule asymp_equivD) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1855 |
from tendsto_mult[OF this assms(2)] have "(?h \<longlongrightarrow> c) F" by simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1856 |
ultimately show ?thesis by (rule Lim_transform_eventually) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1857 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1858 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1859 |
lemma tendsto_asymp_equiv_cong: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1860 |
assumes "f \<sim>[F] g" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1861 |
shows "(f \<longlongrightarrow> c) F \<longleftrightarrow> (g \<longlongrightarrow> c) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1862 |
proof - |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1863 |
{ |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1864 |
fix f g :: "'a \<Rightarrow> 'b" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1865 |
assume *: "f \<sim>[F] g" "(g \<longlongrightarrow> c) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1866 |
have "eventually (\<lambda>x. g x * (if f x = 0 \<and> g x = 0 then 1 else f x / g x) = f x) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1867 |
using asymp_equiv_eventually_zeros[OF *(1)] by eventually_elim simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1868 |
moreover have "((\<lambda>x. g x * (if f x = 0 \<and> g x = 0 then 1 else f x / g x)) \<longlongrightarrow> c * 1) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1869 |
by (intro tendsto_intros asymp_equivD *) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1870 |
ultimately have "(f \<longlongrightarrow> c * 1) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1871 |
by (rule Lim_transform_eventually) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1872 |
} |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1873 |
from this[of f g] this[of g f] assms show ?thesis by (auto simp: asymp_equiv_sym) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1874 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1875 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1876 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1877 |
lemma smallo_imp_eventually_sgn: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1878 |
fixes f g :: "real \<Rightarrow> real" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1879 |
assumes "g \<in> o(f)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1880 |
shows "eventually (\<lambda>x. sgn (f x + g x) = sgn (f x)) at_top" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1881 |
proof - |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1882 |
have "0 < (1/2 :: real)" by simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1883 |
from landau_o.smallD[OF assms, OF this] |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1884 |
have "eventually (\<lambda>x. \<bar>g x\<bar> \<le> 1/2 * \<bar>f x\<bar>) at_top" by simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1885 |
thus ?thesis |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1886 |
proof eventually_elim |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1887 |
case (elim x) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1888 |
thus ?case |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1889 |
by (cases "f x" "0::real" rule: linorder_cases; |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1890 |
cases "f x + g x" "0::real" rule: linorder_cases) simp_all |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1891 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1892 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1893 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1894 |
context |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1895 |
begin |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1896 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1897 |
private lemma asymp_equiv_add_rightI: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1898 |
assumes "f \<sim>[F] g" "h \<in> o[F](g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1899 |
shows "(\<lambda>x. f x + h x) \<sim>[F] g" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1900 |
proof - |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1901 |
let ?T = "\<lambda>f g x. if f x = 0 \<and> g x = 0 then 1 else f x / g x" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1902 |
from landau_o.smallD[OF assms(2) zero_less_one] |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1903 |
have ev: "eventually (\<lambda>x. g x = 0 \<longrightarrow> h x = 0) F" by eventually_elim auto |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1904 |
have "(\<lambda>x. f x + h x) \<sim>[F] g \<longleftrightarrow> ((\<lambda>x. ?T f g x + h x / g x) \<longlongrightarrow> 1) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1905 |
unfolding asymp_equiv_def using ev |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1906 |
by (intro tendsto_cong) (auto elim!: eventually_mono simp: divide_simps) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1907 |
also have "\<dots> \<longleftrightarrow> ((\<lambda>x. ?T f g x + h x / g x) \<longlongrightarrow> 1 + 0) F" by simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1908 |
also have \<dots> by (intro tendsto_intros asymp_equivD assms smalloD_tendsto) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1909 |
finally show "(\<lambda>x. f x + h x) \<sim>[F] g" . |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1910 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1911 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1912 |
lemma asymp_equiv_add_right [asymp_equiv_simps]: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1913 |
assumes "h \<in> o[F](g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1914 |
shows "(\<lambda>x. f x + h x) \<sim>[F] g \<longleftrightarrow> f \<sim>[F] g" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1915 |
proof |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1916 |
assume "(\<lambda>x. f x + h x) \<sim>[F] g" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1917 |
from asymp_equiv_add_rightI[OF this, of "\<lambda>x. -h x"] assms show "f \<sim>[F] g" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1918 |
by simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1919 |
qed (simp_all add: asymp_equiv_add_rightI assms) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1920 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1921 |
end |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1922 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1923 |
lemma asymp_equiv_add_left [asymp_equiv_simps]: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1924 |
assumes "h \<in> o[F](g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1925 |
shows "(\<lambda>x. h x + f x) \<sim>[F] g \<longleftrightarrow> f \<sim>[F] g" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1926 |
using asymp_equiv_add_right[OF assms] by (simp add: add.commute) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1927 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1928 |
lemma asymp_equiv_add_right' [asymp_equiv_simps]: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1929 |
assumes "h \<in> o[F](g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1930 |
shows "g \<sim>[F] (\<lambda>x. f x + h x) \<longleftrightarrow> g \<sim>[F] f" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1931 |
using asymp_equiv_add_right[OF assms] by (simp add: asymp_equiv_sym) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1932 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1933 |
lemma asymp_equiv_add_left' [asymp_equiv_simps]: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1934 |
assumes "h \<in> o[F](g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1935 |
shows "g \<sim>[F] (\<lambda>x. h x + f x) \<longleftrightarrow> g \<sim>[F] f" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1936 |
using asymp_equiv_add_left[OF assms] by (simp add: asymp_equiv_sym) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1937 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1938 |
lemma smallo_imp_asymp_equiv: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1939 |
assumes "(\<lambda>x. f x - g x) \<in> o[F](g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1940 |
shows "f \<sim>[F] g" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1941 |
proof - |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1942 |
from assms have "(\<lambda>x. f x - g x + g x) \<sim>[F] g" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1943 |
by (subst asymp_equiv_add_left) simp_all |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1944 |
thus ?thesis by simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1945 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1946 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1947 |
lemma asymp_equiv_uminus [asymp_equiv_intros]: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1948 |
"f \<sim>[F] g \<Longrightarrow> (\<lambda>x. -f x) \<sim>[F] (\<lambda>x. -g x)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1949 |
by (simp add: asymp_equiv_def cong: if_cong) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1950 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1951 |
lemma asymp_equiv_uminus_iff [asymp_equiv_simps]: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1952 |
"(\<lambda>x. -f x) \<sim>[F] g \<longleftrightarrow> f \<sim>[F] (\<lambda>x. -g x)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1953 |
by (simp add: asymp_equiv_def cong: if_cong) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1954 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1955 |
lemma asymp_equiv_mult [asymp_equiv_intros]: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1956 |
fixes f1 f2 g1 g2 :: "'a \<Rightarrow> 'b :: real_normed_field" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1957 |
assumes "f1 \<sim>[F] g1" "f2 \<sim>[F] g2" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1958 |
shows "(\<lambda>x. f1 x * f2 x) \<sim>[F] (\<lambda>x. g1 x * g2 x)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1959 |
proof - |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1960 |
let ?T = "\<lambda>f g x. if f x = 0 \<and> g x = 0 then 1 else f x / g x" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1961 |
let ?S = "\<lambda>x. (if f1 x = 0 \<and> g1 x = 0 then 1 - ?T f2 g2 x |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1962 |
else if f2 x = 0 \<and> g2 x = 0 then 1 - ?T f1 g1 x else 0)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1963 |
let ?S' = "\<lambda>x. ?T (\<lambda>x. f1 x * f2 x) (\<lambda>x. g1 x * g2 x) x - ?T f1 g1 x * ?T f2 g2 x" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1964 |
{ |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1965 |
fix f g :: "'a \<Rightarrow> 'b" assume "f \<sim>[F] g" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1966 |
have "((\<lambda>x. 1 - ?T f g x) \<longlongrightarrow> 0) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1967 |
by (rule tendsto_eq_intros refl asymp_equivD[OF \<open>f \<sim>[F] g\<close>])+ simp_all |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1968 |
} note A = this |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1969 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1970 |
from assms have "((\<lambda>x. ?T f1 g1 x * ?T f2 g2 x) \<longlongrightarrow> 1 * 1) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1971 |
by (intro tendsto_mult asymp_equivD) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1972 |
moreover { |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1973 |
have "eventually (\<lambda>x. ?S x = ?S' x) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1974 |
using assms[THEN asymp_equiv_eventually_zeros] by eventually_elim auto |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1975 |
moreover have "(?S \<longlongrightarrow> 0) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1976 |
by (intro filterlim_If assms[THEN A, THEN tendsto_mono[rotated]]) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1977 |
(auto intro: le_infI1 le_infI2) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1978 |
ultimately have "(?S' \<longlongrightarrow> 0) F" by (rule Lim_transform_eventually) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1979 |
} |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1980 |
ultimately have "(?T (\<lambda>x. f1 x * f2 x) (\<lambda>x. g1 x * g2 x) \<longlongrightarrow> 1 * 1) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1981 |
by (rule Lim_transform) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1982 |
thus ?thesis by (simp add: asymp_equiv_def) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1983 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1984 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1985 |
lemma asymp_equiv_power [asymp_equiv_intros]: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1986 |
"f \<sim>[F] g \<Longrightarrow> (\<lambda>x. f x ^ n) \<sim>[F] (\<lambda>x. g x ^ n)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1987 |
by (induction n) (simp_all add: asymp_equiv_mult) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1988 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1989 |
lemma asymp_equiv_inverse [asymp_equiv_intros]: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1990 |
assumes "f \<sim>[F] g" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1991 |
shows "(\<lambda>x. inverse (f x)) \<sim>[F] (\<lambda>x. inverse (g x))" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1992 |
proof - |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1993 |
from tendsto_inverse[OF asymp_equivD[OF assms]] |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1994 |
have "((\<lambda>x. if f x = 0 \<and> g x = 0 then 1 else g x / f x) \<longlongrightarrow> 1) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1995 |
by (simp add: if_distrib cong: if_cong) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1996 |
also have "(\<lambda>x. if f x = 0 \<and> g x = 0 then 1 else g x / f x) = |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1997 |
(\<lambda>x. if f x = 0 \<and> g x = 0 then 1 else inverse (f x) / inverse (g x))" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1998 |
by (intro ext) (simp add: field_simps) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
1999 |
finally show ?thesis by (simp add: asymp_equiv_def) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2000 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2001 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2002 |
lemma asymp_equiv_inverse_iff [asymp_equiv_simps]: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2003 |
"(\<lambda>x. inverse (f x)) \<sim>[F] (\<lambda>x. inverse (g x)) \<longleftrightarrow> f \<sim>[F] g" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2004 |
proof |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2005 |
assume "(\<lambda>x. inverse (f x)) \<sim>[F] (\<lambda>x. inverse (g x))" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2006 |
hence "(\<lambda>x. inverse (inverse (f x))) \<sim>[F] (\<lambda>x. inverse (inverse (g x)))" (is ?P) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2007 |
by (rule asymp_equiv_inverse) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2008 |
also have "?P \<longleftrightarrow> f \<sim>[F] g" by (intro asymp_equiv_cong) simp_all |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2009 |
finally show "f \<sim>[F] g" . |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2010 |
qed (simp_all add: asymp_equiv_inverse) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2011 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2012 |
lemma asymp_equiv_divide [asymp_equiv_intros]: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2013 |
assumes "f1 \<sim>[F] g1" "f2 \<sim>[F] g2" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2014 |
shows "(\<lambda>x. f1 x / f2 x) \<sim>[F] (\<lambda>x. g1 x / g2 x)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2015 |
using asymp_equiv_mult[OF assms(1) asymp_equiv_inverse[OF assms(2)]] by (simp add: field_simps) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2016 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2017 |
lemma asymp_equiv_compose [asymp_equiv_intros]: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2018 |
assumes "f \<sim>[G] g" "filterlim h G F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2019 |
shows "f \<circ> h \<sim>[F] g \<circ> h" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2020 |
proof - |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2021 |
let ?T = "\<lambda>f g x. if f x = 0 \<and> g x = 0 then 1 else f x / g x" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2022 |
have "f \<circ> h \<sim>[F] g \<circ> h \<longleftrightarrow> ((?T f g \<circ> h) \<longlongrightarrow> 1) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2023 |
by (simp add: asymp_equiv_def o_def) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2024 |
also have "\<dots> \<longleftrightarrow> (?T f g \<longlongrightarrow> 1) (filtermap h F)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2025 |
by (rule tendsto_compose_filtermap) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2026 |
also have "\<dots>" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2027 |
by (rule tendsto_mono[of _ G]) (insert assms, simp_all add: asymp_equiv_def filterlim_def) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2028 |
finally show ?thesis . |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2029 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2030 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2031 |
lemma asymp_equiv_compose': |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2032 |
assumes "f \<sim>[G] g" "filterlim h G F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2033 |
shows "(\<lambda>x. f (h x)) \<sim>[F] (\<lambda>x. g (h x))" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2034 |
using asymp_equiv_compose[OF assms] by (simp add: o_def) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2035 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2036 |
lemma asymp_equiv_powr_real [asymp_equiv_intros]: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2037 |
fixes f g :: "'a \<Rightarrow> real" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2038 |
assumes "f \<sim>[F] g" "eventually (\<lambda>x. f x \<ge> 0) F" "eventually (\<lambda>x. g x \<ge> 0) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2039 |
shows "(\<lambda>x. f x powr y) \<sim>[F] (\<lambda>x. g x powr y)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2040 |
proof - |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2041 |
let ?T = "\<lambda>f g x. if f x = 0 \<and> g x = 0 then 1 else f x / g x" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2042 |
have "eventually (\<lambda>x. ?T f g x powr y = ?T (\<lambda>x. f x powr y) (\<lambda>x. g x powr y) x) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2043 |
using asymp_equiv_eventually_zeros[OF assms(1)] assms(2,3) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2044 |
by eventually_elim (auto simp: powr_divide) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2045 |
moreover have "((\<lambda>x. ?T f g x powr y) \<longlongrightarrow> 1 powr y) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2046 |
by (intro tendsto_intros asymp_equivD[OF assms(1)]) simp_all |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2047 |
hence "((\<lambda>x. ?T f g x powr y) \<longlongrightarrow> 1) F" by simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2048 |
ultimately show ?thesis unfolding asymp_equiv_def by (rule Lim_transform_eventually) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2049 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2050 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2051 |
lemma asymp_equiv_norm [asymp_equiv_intros]: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2052 |
fixes f g :: "'a \<Rightarrow> 'b :: real_normed_field" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2053 |
assumes "f \<sim>[F] g" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2054 |
shows "(\<lambda>x. norm (f x)) \<sim>[F] (\<lambda>x. norm (g x))" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2055 |
using tendsto_norm[OF asymp_equivD[OF assms]] |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2056 |
by (simp add: if_distrib asymp_equiv_def norm_divide cong: if_cong) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2057 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2058 |
lemma asymp_equiv_abs_real [asymp_equiv_intros]: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2059 |
fixes f g :: "'a \<Rightarrow> real" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2060 |
assumes "f \<sim>[F] g" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2061 |
shows "(\<lambda>x. \<bar>f x\<bar>) \<sim>[F] (\<lambda>x. \<bar>g x\<bar>)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2062 |
using tendsto_rabs[OF asymp_equivD[OF assms]] |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2063 |
by (simp add: if_distrib asymp_equiv_def cong: if_cong) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2064 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2065 |
lemma asymp_equiv_imp_eventually_le: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2066 |
assumes "f \<sim>[F] g" "c > 1" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2067 |
shows "eventually (\<lambda>x. norm (f x) \<le> c * norm (g x)) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2068 |
proof - |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2069 |
from order_tendstoD(2)[OF asymp_equivD[OF asymp_equiv_norm[OF assms(1)]] assms(2)] |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2070 |
asymp_equiv_eventually_zeros[OF assms(1)] |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2071 |
show ?thesis by eventually_elim (auto split: if_splits simp: field_simps) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2072 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2073 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2074 |
lemma asymp_equiv_imp_eventually_ge: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2075 |
assumes "f \<sim>[F] g" "c < 1" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2076 |
shows "eventually (\<lambda>x. norm (f x) \<ge> c * norm (g x)) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2077 |
proof - |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2078 |
from order_tendstoD(1)[OF asymp_equivD[OF asymp_equiv_norm[OF assms(1)]] assms(2)] |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2079 |
asymp_equiv_eventually_zeros[OF assms(1)] |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2080 |
show ?thesis by eventually_elim (auto split: if_splits simp: field_simps) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2081 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2082 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2083 |
lemma asymp_equiv_imp_bigo: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2084 |
assumes "f \<sim>[F] g" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2085 |
shows "f \<in> O[F](g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2086 |
proof (rule bigoI) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2087 |
have "(3/2::real) > 1" by simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2088 |
from asymp_equiv_imp_eventually_le[OF assms this] |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2089 |
show "eventually (\<lambda>x. norm (f x) \<le> 3/2 * norm (g x)) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2090 |
by eventually_elim simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2091 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2092 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2093 |
lemma asymp_equiv_imp_bigomega: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2094 |
"f \<sim>[F] g \<Longrightarrow> f \<in> \<Omega>[F](g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2095 |
using asymp_equiv_imp_bigo[of g F f] by (simp add: asymp_equiv_sym bigomega_iff_bigo) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2096 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2097 |
lemma asymp_equiv_imp_bigtheta: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2098 |
"f \<sim>[F] g \<Longrightarrow> f \<in> \<Theta>[F](g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2099 |
by (intro bigthetaI asymp_equiv_imp_bigo asymp_equiv_imp_bigomega) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2100 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2101 |
lemma asymp_equiv_at_infinity_transfer: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2102 |
assumes "f \<sim>[F] g" "filterlim f at_infinity F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2103 |
shows "filterlim g at_infinity F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2104 |
proof - |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2105 |
from assms(1) have "g \<in> \<Theta>[F](f)" by (rule asymp_equiv_imp_bigtheta[OF asymp_equiv_symI]) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2106 |
also from assms have "f \<in> \<omega>[F](\<lambda>_. 1)" by (simp add: smallomega_1_conv_filterlim) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2107 |
finally show ?thesis by (simp add: smallomega_1_conv_filterlim) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2108 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2109 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2110 |
lemma asymp_equiv_at_top_transfer: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2111 |
fixes f g :: "_ \<Rightarrow> real" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2112 |
assumes "f \<sim>[F] g" "filterlim f at_top F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2113 |
shows "filterlim g at_top F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2114 |
proof (rule filterlim_at_infinity_imp_filterlim_at_top) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2115 |
show "filterlim g at_infinity F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2116 |
by (rule asymp_equiv_at_infinity_transfer[OF assms(1) filterlim_mono[OF assms(2)]]) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2117 |
(auto simp: at_top_le_at_infinity) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2118 |
from assms(2) have "eventually (\<lambda>x. f x > 0) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2119 |
using filterlim_at_top_dense by blast |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2120 |
with asymp_equiv_eventually_pos_iff[OF assms(1)] show "eventually (\<lambda>x. g x > 0) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2121 |
by eventually_elim blast |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2122 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2123 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2124 |
lemma asymp_equiv_at_bot_transfer: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2125 |
fixes f g :: "_ \<Rightarrow> real" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2126 |
assumes "f \<sim>[F] g" "filterlim f at_bot F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2127 |
shows "filterlim g at_bot F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2128 |
unfolding filterlim_uminus_at_bot |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2129 |
by (rule asymp_equiv_at_top_transfer[of "\<lambda>x. -f x" F "\<lambda>x. -g x"]) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2130 |
(insert assms, auto simp: filterlim_uminus_at_bot asymp_equiv_uminus) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2131 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2132 |
lemma asymp_equivI'_const: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2133 |
assumes "((\<lambda>x. f x / g x) \<longlongrightarrow> c) F" "c \<noteq> 0" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2134 |
shows "f \<sim>[F] (\<lambda>x. c * g x)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2135 |
using tendsto_mult[OF assms(1) tendsto_const[of "inverse c"]] assms(2) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2136 |
by (intro asymp_equivI') (simp add: field_simps) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2137 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2138 |
lemma asymp_equivI'_inverse_const: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2139 |
assumes "((\<lambda>x. f x / g x) \<longlongrightarrow> inverse c) F" "c \<noteq> 0" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2140 |
shows "(\<lambda>x. c * f x) \<sim>[F] g" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2141 |
using tendsto_mult[OF assms(1) tendsto_const[of "c"]] assms(2) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2142 |
by (intro asymp_equivI') (simp add: field_simps) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2143 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2144 |
lemma filterlim_at_bot_imp_at_infinity: "filterlim f at_bot F \<Longrightarrow> filterlim f at_infinity F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2145 |
for f :: "_ \<Rightarrow> real" using at_bot_le_at_infinity filterlim_mono by blast |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2146 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2147 |
lemma asymp_equiv_imp_diff_smallo: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2148 |
assumes "f \<sim>[F] g" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2149 |
shows "(\<lambda>x. f x - g x) \<in> o[F](g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2150 |
proof (rule landau_o.smallI) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2151 |
fix c :: real assume "c > 0" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2152 |
hence c: "min c 1 > 0" by simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2153 |
let ?h = "\<lambda>x. if f x = 0 \<and> g x = 0 then 1 else f x / g x" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2154 |
from assms have "((\<lambda>x. ?h x - 1) \<longlongrightarrow> 1 - 1) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2155 |
by (intro tendsto_diff asymp_equivD tendsto_const) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2156 |
from tendstoD[OF this c] show "eventually (\<lambda>x. norm (f x - g x) \<le> c * norm (g x)) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2157 |
proof eventually_elim |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2158 |
case (elim x) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2159 |
from elim have "norm (f x - g x) \<le> norm (f x / g x - 1) * norm (g x)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2160 |
by (subst norm_mult [symmetric]) (auto split: if_splits simp: divide_simps) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2161 |
also have "norm (f x / g x - 1) * norm (g x) \<le> c * norm (g x)" using elim |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2162 |
by (auto split: if_splits simp: mult_right_mono) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2163 |
finally show ?case . |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2164 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2165 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2166 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2167 |
lemma asymp_equiv_altdef: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2168 |
"f \<sim>[F] g \<longleftrightarrow> (\<lambda>x. f x - g x) \<in> o[F](g)" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2169 |
by (rule iffI[OF asymp_equiv_imp_diff_smallo smallo_imp_asymp_equiv]) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2170 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2171 |
lemma asymp_equiv_0_left_iff [simp]: "(\<lambda>_. 0) \<sim>[F] f \<longleftrightarrow> eventually (\<lambda>x. f x = 0) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2172 |
and asymp_equiv_0_right_iff [simp]: "f \<sim>[F] (\<lambda>_. 0) \<longleftrightarrow> eventually (\<lambda>x. f x = 0) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2173 |
by (simp_all add: asymp_equiv_altdef landau_o.small_refl_iff) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2174 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2175 |
lemma asymp_equiv_sandwich_real: |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2176 |
fixes f g l u :: "'a \<Rightarrow> real" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2177 |
assumes "l \<sim>[F] g" "u \<sim>[F] g" "eventually (\<lambda>x. f x \<in> {l x..u x}) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2178 |
shows "f \<sim>[F] g" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2179 |
unfolding asymp_equiv_altdef |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2180 |
proof (rule landau_o.smallI) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2181 |
fix c :: real assume c: "c > 0" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2182 |
have "eventually (\<lambda>x. norm (f x - g x) \<le> max (norm (l x - g x)) (norm (u x - g x))) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2183 |
using assms(3) by eventually_elim auto |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2184 |
moreover have "eventually (\<lambda>x. norm (l x - g x) \<le> c * norm (g x)) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2185 |
"eventually (\<lambda>x. norm (u x - g x) \<le> c * norm (g x)) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2186 |
using assms(1,2) by (auto simp: asymp_equiv_altdef dest: landau_o.smallD[OF _ c]) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2187 |
hence "eventually (\<lambda>x. max (norm (l x - g x)) (norm (u x - g x)) \<le> c * norm (g x)) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2188 |
by eventually_elim simp |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2189 |
ultimately show "eventually (\<lambda>x. norm (f x - g x) \<le> c * norm (g x)) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2190 |
by eventually_elim (rule order.trans) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2191 |
qed |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2192 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2193 |
lemma asymp_equiv_sandwich_real': |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2194 |
fixes f g l u :: "'a \<Rightarrow> real" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2195 |
assumes "f \<sim>[F] l" "f \<sim>[F] u" "eventually (\<lambda>x. g x \<in> {l x..u x}) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2196 |
shows "f \<sim>[F] g" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2197 |
using asymp_equiv_sandwich_real[of l F f u g] assms by (simp add: asymp_equiv_sym) |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2198 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2199 |
lemma asymp_equiv_sandwich_real'': |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2200 |
fixes f g l u :: "'a \<Rightarrow> real" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2201 |
assumes "l1 \<sim>[F] u1" "u1 \<sim>[F] l2" "l2 \<sim>[F] u2" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2202 |
"eventually (\<lambda>x. f x \<in> {l1 x..u1 x}) F" "eventually (\<lambda>x. g x \<in> {l2 x..u2 x}) F" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2203 |
shows "f \<sim>[F] g" |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2204 |
by (rule asymp_equiv_sandwich_real[OF asymp_equiv_sandwich_real'[OF _ _ assms(5)] |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2205 |
asymp_equiv_sandwich_real'[OF _ _ assms(5)] assms(4)]; |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2206 |
blast intro: asymp_equiv_trans assms(1,2,3))+ |
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2207 |
|
b48bab511939
Moved Landau_Symbols from the AFP to HOL-Library
Manuel Eberl <eberlm@in.tum.de>
parents:
diff
changeset
|
2208 |
end |