src/HOL/Analysis/ex/Metric_Arith_Examples.thy
author paulson <lp15@cam.ac.uk>
Mon, 30 Nov 2020 22:00:23 +0000
changeset 72797 402afc68f2f9
parent 70956 860198428664
child 74667 0b3dc8c5fb32
permissions -rw-r--r--
A bunch of suggestions from Pedro Sánchez Terraf
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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"
860198428664 added examples for "metric" method, by Maximilian Schäffeler
immler
parents:
diff changeset
    57
  by metric
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