| author | paulson <lp15@cam.ac.uk> | 
| Mon, 18 Jun 2018 15:56:03 +0100 | |
| changeset 68466 | 3d8241f4198b | 
| parent 67271 | 48ef58c6cf4c | 
| child 71168 | 11e1e273eaad | 
| permissions | -rw-r--r-- | 
| 58419 | 1  | 
(* Title: HOL/ex/SOS.thy  | 
| 58418 | 2  | 
Author: Amine Chaieb, University of Cambridge  | 
3  | 
Author: Philipp Meyer, TU Muenchen  | 
|
4  | 
||
| 58419 | 5  | 
Examples for Sum_of_Squares.  | 
| 58418 | 6  | 
*)  | 
7  | 
||
| 58419 | 8  | 
theory SOS  | 
| 
66453
 
cc19f7ca2ed6
session-qualified theory imports: isabelle imports -U -i -d '~~/src/Benchmarks' -a;
 
wenzelm 
parents: 
61156 
diff
changeset
 | 
9  | 
imports "HOL-Library.Sum_of_Squares"  | 
| 58418 | 10  | 
begin  | 
11  | 
||
| 67271 | 12  | 
lemma "(3::real) * x + 7 * a < 4 \<and> 3 < 2 * x \<Longrightarrow> a < 0"  | 
| 58630 | 13  | 
by sos  | 
| 58418 | 14  | 
|
| 61156 | 15  | 
lemma "a1 \<ge> 0 \<and> a2 \<ge> 0 \<and> (a1 * a1 + a2 * a2 = b1 * b1 + b2 * b2 + 2) \<and> (a1 * b1 + a2 * b2 = 0) \<longrightarrow>  | 
16  | 
a1 * a2 - b1 * b2 \<ge> (0::real)"  | 
|
| 58630 | 17  | 
by sos  | 
| 58418 | 18  | 
|
| 67271 | 19  | 
lemma "(3::real) * x + 7 * a < 4 \<and> 3 < 2 * x \<longrightarrow> a < 0"  | 
| 58630 | 20  | 
by sos  | 
| 58418 | 21  | 
|
| 61156 | 22  | 
lemma "(0::real) \<le> x \<and> x \<le> 1 \<and> 0 \<le> y \<and> y \<le> 1 \<longrightarrow>  | 
23  | 
x\<^sup>2 + y\<^sup>2 < 1 \<or> (x - 1)\<^sup>2 + y\<^sup>2 < 1 \<or> x\<^sup>2 + (y - 1)\<^sup>2 < 1 \<or> (x - 1)\<^sup>2 + (y - 1)\<^sup>2 < 1"  | 
|
| 58630 | 24  | 
by sos  | 
| 58418 | 25  | 
|
| 61156 | 26  | 
lemma "(0::real) \<le> x \<and> 0 \<le> y \<and> 0 \<le> z \<and> x + y + z \<le> 3 \<longrightarrow> x * y + x * z + y * z \<ge> 3 * x * y * z"  | 
| 58630 | 27  | 
by sos  | 
| 58418 | 28  | 
|
| 61156 | 29  | 
lemma "(x::real)\<^sup>2 + y\<^sup>2 + z\<^sup>2 = 1 \<longrightarrow> (x + y + z)\<^sup>2 \<le> 3"  | 
| 58630 | 30  | 
by sos  | 
| 58418 | 31  | 
|
| 61156 | 32  | 
lemma "w\<^sup>2 + x\<^sup>2 + y\<^sup>2 + z\<^sup>2 = 1 \<longrightarrow> (w + x + y + z)\<^sup>2 \<le> (4::real)"  | 
| 58630 | 33  | 
by sos  | 
| 58418 | 34  | 
|
| 61156 | 35  | 
lemma "(x::real) \<ge> 1 \<and> y \<ge> 1 \<longrightarrow> x * y \<ge> x + y - 1"  | 
| 58630 | 36  | 
by sos  | 
| 58418 | 37  | 
|
| 61156 | 38  | 
lemma "(x::real) > 1 \<and> y > 1 \<longrightarrow> x * y > x + y - 1"  | 
| 58630 | 39  | 
by sos  | 
| 58418 | 40  | 
|
| 61156 | 41  | 
lemma "\<bar>x\<bar> \<le> 1 \<longrightarrow> \<bar>64 * x^7 - 112 * x^5 + 56 * x^3 - 7 * x\<bar> \<le> (1::real)"  | 
| 58630 | 42  | 
by sos  | 
| 58418 | 43  | 
|
44  | 
||
45  | 
text \<open>One component of denominator in dodecahedral example.\<close>  | 
|
46  | 
||
| 61156 | 47  | 
lemma "2 \<le> x \<and> x \<le> 125841 / 50000 \<and> 2 \<le> y \<and> y \<le> 125841 / 50000 \<and> 2 \<le> z \<and> z \<le> 125841 / 50000 \<longrightarrow>  | 
48  | 
2 * (x * z + x * y + y * z) - (x * x + y * y + z * z) \<ge> (0::real)"  | 
|
| 58630 | 49  | 
by sos  | 
| 58418 | 50  | 
|
51  | 
||
52  | 
text \<open>Over a larger but simpler interval.\<close>  | 
|
53  | 
||
| 61156 | 54  | 
lemma "(2::real) \<le> x \<and> x \<le> 4 \<and> 2 \<le> y \<and> y \<le> 4 \<and> 2 \<le> z \<and> z \<le> 4 \<longrightarrow>  | 
55  | 
0 \<le> 2 * (x * z + x * y + y * z) - (x * x + y * y + z * z)"  | 
|
| 58630 | 56  | 
by sos  | 
| 58418 | 57  | 
|
58  | 
||
59  | 
text \<open>We can do 12. I think 12 is a sharp bound; see PP's certificate.\<close>  | 
|
60  | 
||
| 61156 | 61  | 
lemma "2 \<le> (x::real) \<and> x \<le> 4 \<and> 2 \<le> y \<and> y \<le> 4 \<and> 2 \<le> z \<and> z \<le> 4 \<longrightarrow>  | 
62  | 
12 \<le> 2 * (x * z + x * y + y * z) - (x * x + y * y + z * z)"  | 
|
| 58630 | 63  | 
by sos  | 
| 58418 | 64  | 
|
65  | 
||
66  | 
text \<open>Inequality from sci.math (see "Leon-Sotelo, por favor").\<close>  | 
|
67  | 
||
| 61156 | 68  | 
lemma "0 \<le> (x::real) \<and> 0 \<le> y \<and> x * y = 1 \<longrightarrow> x + y \<le> x\<^sup>2 + y\<^sup>2"  | 
| 58630 | 69  | 
by sos  | 
| 58418 | 70  | 
|
| 61156 | 71  | 
lemma "0 \<le> (x::real) \<and> 0 \<le> y \<and> x * y = 1 \<longrightarrow> x * y * (x + y) \<le> x\<^sup>2 + y\<^sup>2"  | 
| 58630 | 72  | 
by sos  | 
| 58418 | 73  | 
|
| 61156 | 74  | 
lemma "0 \<le> (x::real) \<and> 0 \<le> y \<longrightarrow> x * y * (x + y)\<^sup>2 \<le> (x\<^sup>2 + y\<^sup>2)\<^sup>2"  | 
| 58630 | 75  | 
by sos  | 
| 58418 | 76  | 
|
| 61156 | 77  | 
lemma "(0::real) \<le> a \<and> 0 \<le> b \<and> 0 \<le> c \<and> c * (2 * a + b)^3 / 27 \<le> x \<longrightarrow> c * a\<^sup>2 * b \<le> x"  | 
| 58630 | 78  | 
by sos  | 
| 58418 | 79  | 
|
| 61156 | 80  | 
lemma "(0::real) < x \<longrightarrow> 0 < 1 + x + x\<^sup>2"  | 
| 58630 | 81  | 
by sos  | 
| 58418 | 82  | 
|
| 61156 | 83  | 
lemma "(0::real) \<le> x \<longrightarrow> 0 < 1 + x + x\<^sup>2"  | 
| 58630 | 84  | 
by sos  | 
| 58418 | 85  | 
|
| 61156 | 86  | 
lemma "(0::real) < 1 + x\<^sup>2"  | 
| 58630 | 87  | 
by sos  | 
| 58418 | 88  | 
|
| 61156 | 89  | 
lemma "(0::real) \<le> 1 + 2 * x + x\<^sup>2"  | 
| 58630 | 90  | 
by sos  | 
| 58418 | 91  | 
|
| 61156 | 92  | 
lemma "(0::real) < 1 + \<bar>x\<bar>"  | 
| 58630 | 93  | 
by sos  | 
| 58418 | 94  | 
|
| 61156 | 95  | 
lemma "(0::real) < 1 + (1 + x)\<^sup>2 * \<bar>x\<bar>"  | 
| 58630 | 96  | 
by sos  | 
| 58418 | 97  | 
|
98  | 
||
| 61156 | 99  | 
lemma "\<bar>(1::real) + x\<^sup>2\<bar> = (1::real) + x\<^sup>2"  | 
| 58630 | 100  | 
by sos  | 
| 61156 | 101  | 
|
| 58418 | 102  | 
lemma "(3::real) * x + 7 * a < 4 \<and> 3 < 2 * x \<longrightarrow> a < 0"  | 
| 58630 | 103  | 
by sos  | 
| 58418 | 104  | 
|
| 61156 | 105  | 
lemma "(0::real) < x \<longrightarrow> 1 < y \<longrightarrow> y * x \<le> z \<longrightarrow> x < z"  | 
| 58630 | 106  | 
by sos  | 
| 61156 | 107  | 
|
108  | 
lemma "(1::real) < x \<longrightarrow> x\<^sup>2 < y \<longrightarrow> 1 < y"  | 
|
| 58630 | 109  | 
by sos  | 
| 61156 | 110  | 
|
111  | 
lemma "(b::real)\<^sup>2 < 4 * a * c \<longrightarrow> a * x\<^sup>2 + b * x + c \<noteq> 0"  | 
|
| 58630 | 112  | 
by sos  | 
| 61156 | 113  | 
|
114  | 
lemma "(b::real)\<^sup>2 < 4 * a * c \<longrightarrow> a * x\<^sup>2 + b * x + c \<noteq> 0"  | 
|
| 58630 | 115  | 
by sos  | 
| 61156 | 116  | 
|
117  | 
lemma "(a::real) * x\<^sup>2 + b * x + c = 0 \<longrightarrow> b\<^sup>2 \<ge> 4 * a * c"  | 
|
| 58630 | 118  | 
by sos  | 
| 61156 | 119  | 
|
120  | 
lemma "(0::real) \<le> b \<and> 0 \<le> c \<and> 0 \<le> x \<and> 0 \<le> y \<and> x\<^sup>2 = c \<and> y\<^sup>2 = a\<^sup>2 * c + b \<longrightarrow> a * c \<le> y * x"  | 
|
| 58630 | 121  | 
by sos  | 
| 58418 | 122  | 
|
| 67271 | 123  | 
lemma "\<bar>x - z\<bar> \<le> e \<and> \<bar>y - z\<bar> \<le> e \<and> 0 \<le> u \<and> 0 \<le> v \<and> u + v = 1 \<longrightarrow> \<bar>(u * x + v * y) - z\<bar> \<le> (e::real)"  | 
| 61156 | 124  | 
by sos  | 
| 58418 | 125  | 
|
| 61156 | 126  | 
lemma "(x::real) - y - 2 * x^4 = 0 \<and> 0 \<le> x \<and> x \<le> 2 \<and> 0 \<le> y \<and> y \<le> 3 \<longrightarrow> y\<^sup>2 - 7 * y - 12 * x + 17 \<ge> 0"  | 
127  | 
oops (*Too hard?*)  | 
|
| 58418 | 128  | 
|
| 61156 | 129  | 
lemma "(0::real) \<le> x \<longrightarrow> (1 + x + x\<^sup>2) / (1 + x\<^sup>2) \<le> 1 + x"  | 
| 58630 | 130  | 
by sos  | 
| 58418 | 131  | 
|
| 61156 | 132  | 
lemma "(0::real) \<le> x \<longrightarrow> 1 - x \<le> 1 / (1 + x + x\<^sup>2)"  | 
| 58630 | 133  | 
by sos  | 
| 58418 | 134  | 
|
| 61156 | 135  | 
lemma "(x::real) \<le> 1 / 2 \<longrightarrow> - x - 2 * x\<^sup>2 \<le> - x / (1 - x)"  | 
| 58630 | 136  | 
by sos  | 
| 58418 | 137  | 
|
| 61156 | 138  | 
lemma "4 * r\<^sup>2 = p\<^sup>2 - 4 * q \<and> r \<ge> (0::real) \<and> x\<^sup>2 + p * x + q = 0 \<longrightarrow>  | 
139  | 
2 * (x::real) = - p + 2 * r \<or> 2 * x = - p - 2 * r"  | 
|
| 58630 | 140  | 
by sos  | 
| 58418 | 141  | 
|
142  | 
end  |