| author | haftmann | 
| Fri, 28 Oct 2022 06:34:25 +0000 | |
| changeset 76386 | 6bc3bb9d0e3e | 
| parent 74736 | df4449c6eff1 | 
| permissions | -rw-r--r-- | 
| 70956 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 1 | theory Metric_Arith_Examples | 
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 2 | imports "HOL-Analysis.Elementary_Metric_Spaces" | 
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 3 | begin | 
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 4 | |
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 5 | |
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 6 | text \<open>simple examples\<close> | 
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 7 | |
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 8 | lemma "\<exists>x::'a::metric_space. x=x" | 
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 9 | by metric | 
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 10 | lemma "\<forall>(x::'a::metric_space). \<exists>y. x = y" | 
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 11 | by metric | 
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 12 | |
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 13 | |
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 14 | text \<open>reasoning with "dist x y = 0 \<longleftrightarrow> x = y"\<close> | 
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 15 | |
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 16 | lemma "\<exists>x y. dist x y = 0" | 
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 17 | by metric | 
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 18 | |
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 19 | lemma "\<exists>y. dist x y = 0" | 
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 20 | by metric | 
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 21 | |
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 22 | lemma "0 = dist x y \<Longrightarrow> x = y" | 
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 23 | by metric | 
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 24 | |
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 25 | lemma "x \<noteq> y \<Longrightarrow> dist x y \<noteq> 0" | 
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 26 | by metric | 
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 27 | |
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 28 | lemma "\<exists>y. dist x y \<noteq> 1" | 
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 29 | by metric | 
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 30 | |
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 31 | lemma "x = y \<longleftrightarrow> dist x x = dist y x \<and> dist x y = dist y y" | 
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 32 | by metric | 
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 33 | |
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 34 | lemma "dist a b \<noteq> dist a c \<Longrightarrow> b \<noteq> c" | 
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 35 | by metric | 
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 36 | |
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 37 | text \<open>reasoning with positive semidefiniteness\<close> | 
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 38 | |
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 39 | lemma "dist y x + c \<ge> c" | 
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 40 | by metric | 
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 41 | |
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 42 | lemma "dist x y + dist x z \<ge> 0" | 
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 43 | by metric | 
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 44 | |
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 45 | lemma "dist x y \<ge> v \<Longrightarrow> dist x y + dist (a::'a) b \<ge> v" for x::"('a::metric_space)"
 | 
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 46 | by metric | 
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 47 | |
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 48 | lemma "dist x y < 0 \<longrightarrow> P" | 
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 49 | by metric | 
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 50 | |
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 51 | text \<open>reasoning with the triangle inequality\<close> | 
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 52 | |
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 53 | lemma "dist a d \<le> dist a b + dist b c + dist c d" | 
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 54 | by metric | 
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 55 | |
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 56 | lemma "dist a e \<le> dist a b + dist b c + dist c d + dist d e" | 
| 74736 
df4449c6eff1
explicit option metric_argo_timeout, with reasonable default for Raspberry Pi;
 wenzelm parents: 
74667diff
changeset | 57 | by metric | 
| 70956 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 58 | |
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 59 | lemma "max (dist x y) \<bar>dist x z - dist z y\<bar> = dist x y" | 
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 60 | by metric | 
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 61 | |
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 62 | lemma | 
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 63 | "dist w x < e/3 \<Longrightarrow> dist x y < e/3 \<Longrightarrow> dist y z < e/3 \<Longrightarrow> dist w x < e" | 
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 64 | by metric | 
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 65 | |
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 66 | lemma "dist w x < e/4 \<Longrightarrow> dist x y < e/4 \<Longrightarrow> dist y z < e/2 \<Longrightarrow> dist w z < e" | 
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 67 | by metric | 
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 68 | |
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 69 | |
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 70 | text \<open>more complex examples\<close> | 
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 71 | |
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 72 | lemma "dist x y \<le> e \<Longrightarrow> dist x z \<le> e \<Longrightarrow> dist y z \<le> e | 
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 73 | \<Longrightarrow> p \<in> (cball x e \<union> cball y e \<union> cball z e) \<Longrightarrow> dist p x \<le> 2*e" | 
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 74 | by metric | 
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 75 | |
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 76 | lemma hol_light_example: | 
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 77 | "\<not> disjnt (ball x r) (ball y s) \<longrightarrow> | 
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 78 | (\<forall>p q. p \<in> ball x r \<union> ball y s \<and> q \<in> ball x r \<union> ball y s \<longrightarrow> dist p q < 2 * (r + s))" | 
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 79 | unfolding disjnt_iff | 
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 80 | by metric | 
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 81 | |
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 82 | lemma "dist x y \<le> e \<Longrightarrow> z \<in> ball x f \<Longrightarrow> dist z y < e + f" | 
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 83 | by metric | 
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 84 | |
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 85 | lemma "dist x y = r / 2 \<Longrightarrow> (\<forall>z. dist x z < r / 4 \<longrightarrow> dist y z \<le> 3 * r / 4)" | 
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 86 | by metric | 
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 87 | |
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 88 | lemma "s \<ge> 0 \<Longrightarrow> t \<ge> 0 \<Longrightarrow> z \<in> (ball x s) \<union> (ball y t) \<Longrightarrow> dist z y \<le> dist x y + s + t" | 
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 89 | by metric | 
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 90 | |
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 91 | lemma "0 < r \<Longrightarrow> ball x r \<subseteq> ball y s \<Longrightarrow> ball x r \<subseteq> ball z t \<Longrightarrow> dist y z \<le> s + t" | 
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 92 | by metric | 
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 93 | |
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 94 | |
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 95 | text \<open>non-trivial quantifier structure\<close> | 
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 96 | |
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 97 | lemma "\<exists>x. \<forall>r\<le>0. \<exists>z. dist x z \<ge> r" | 
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 98 | by metric | 
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 99 | |
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 100 | lemma "\<And>a r x y. dist x a + dist a y = r \<Longrightarrow> \<forall>z. r \<le> dist x z + dist z y \<Longrightarrow> dist x y = r" | 
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 101 | by metric | 
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 102 | |
| 
860198428664
added examples for "metric" method, by Maximilian Schäffeler
 immler parents: diff
changeset | 103 | end |