author | wenzelm |
Fri, 08 Mar 2002 16:24:06 +0100 | |
changeset 13049 | ce180e5b7fa0 |
parent 12018 | ec054019c910 |
child 13515 | a6a7025fd7e8 |
permissions | -rw-r--r-- |
7566 | 1 |
(* Title: HOL/Real/HahnBanach/NormedSpace.thy |
2 |
ID: $Id$ |
|
3 |
Author: Gertrud Bauer, TU Munich |
|
4 |
*) |
|
7535
599d3414b51d
The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff
changeset
|
5 |
|
9035 | 6 |
header {* Normed vector spaces *} |
7808 | 7 |
|
9035 | 8 |
theory NormedSpace = Subspace: |
7535
599d3414b51d
The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff
changeset
|
9 |
|
9035 | 10 |
subsection {* Quasinorms *} |
7808 | 11 |
|
10687 | 12 |
text {* |
13 |
A \emph{seminorm} @{text "\<parallel>\<cdot>\<parallel>"} is a function on a real vector space |
|
14 |
into the reals that has the following properties: it is positive |
|
15 |
definite, absolute homogenous and subadditive. |
|
16 |
*} |
|
7535
599d3414b51d
The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff
changeset
|
17 |
|
599d3414b51d
The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff
changeset
|
18 |
constdefs |
10687 | 19 |
is_seminorm :: "'a::{plus, minus, zero} set \<Rightarrow> ('a \<Rightarrow> real) \<Rightarrow> bool" |
20 |
"is_seminorm V norm \<equiv> \<forall>x \<in> V. \<forall>y \<in> V. \<forall>a. |
|
12018
ec054019c910
Numerals and simprocs for types real and hypreal. The abstract
paulson
parents:
11701
diff
changeset
|
21 |
0 \<le> norm x |
10687 | 22 |
\<and> norm (a \<cdot> x) = \<bar>a\<bar> * norm x |
23 |
\<and> norm (x + y) \<le> norm x + norm y" |
|
7535
599d3414b51d
The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff
changeset
|
24 |
|
10687 | 25 |
lemma is_seminormI [intro]: |
12018
ec054019c910
Numerals and simprocs for types real and hypreal. The abstract
paulson
parents:
11701
diff
changeset
|
26 |
"(\<And>x y a. x \<in> V \<Longrightarrow> y \<in> V \<Longrightarrow> 0 \<le> norm x) \<Longrightarrow> |
10687 | 27 |
(\<And>x a. x \<in> V \<Longrightarrow> norm (a \<cdot> x) = \<bar>a\<bar> * norm x) \<Longrightarrow> |
28 |
(\<And>x y. x \<in> V \<Longrightarrow> y \<in> V \<Longrightarrow> norm (x + y) \<le> norm x + norm y) |
|
29 |
\<Longrightarrow> is_seminorm V norm" |
|
30 |
by (unfold is_seminorm_def) auto |
|
7535
599d3414b51d
The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff
changeset
|
31 |
|
9408 | 32 |
lemma seminorm_ge_zero [intro?]: |
12018
ec054019c910
Numerals and simprocs for types real and hypreal. The abstract
paulson
parents:
11701
diff
changeset
|
33 |
"is_seminorm V norm \<Longrightarrow> x \<in> V \<Longrightarrow> 0 \<le> norm x" |
10687 | 34 |
by (unfold is_seminorm_def) blast |
7535
599d3414b51d
The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff
changeset
|
35 |
|
10687 | 36 |
lemma seminorm_abs_homogenous: |
37 |
"is_seminorm V norm \<Longrightarrow> x \<in> V |
|
38 |
\<Longrightarrow> norm (a \<cdot> x) = \<bar>a\<bar> * norm x" |
|
39 |
by (unfold is_seminorm_def) blast |
|
7535
599d3414b51d
The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff
changeset
|
40 |
|
10687 | 41 |
lemma seminorm_subadditive: |
42 |
"is_seminorm V norm \<Longrightarrow> x \<in> V \<Longrightarrow> y \<in> V |
|
43 |
\<Longrightarrow> norm (x + y) \<le> norm x + norm y" |
|
44 |
by (unfold is_seminorm_def) blast |
|
7535
599d3414b51d
The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff
changeset
|
45 |
|
10687 | 46 |
lemma seminorm_diff_subadditive: |
47 |
"is_seminorm V norm \<Longrightarrow> x \<in> V \<Longrightarrow> y \<in> V \<Longrightarrow> is_vectorspace V |
|
48 |
\<Longrightarrow> norm (x - y) \<le> norm x + norm y" |
|
9035 | 49 |
proof - |
10687 | 50 |
assume "is_seminorm V norm" "x \<in> V" "y \<in> V" "is_vectorspace V" |
12018
ec054019c910
Numerals and simprocs for types real and hypreal. The abstract
paulson
parents:
11701
diff
changeset
|
51 |
have "norm (x - y) = norm (x + - 1 \<cdot> y)" |
9035 | 52 |
by (simp! add: diff_eq2 negate_eq2a) |
12018
ec054019c910
Numerals and simprocs for types real and hypreal. The abstract
paulson
parents:
11701
diff
changeset
|
53 |
also have "... \<le> norm x + norm (- 1 \<cdot> y)" |
9035 | 54 |
by (simp! add: seminorm_subadditive) |
12018
ec054019c910
Numerals and simprocs for types real and hypreal. The abstract
paulson
parents:
11701
diff
changeset
|
55 |
also have "norm (- 1 \<cdot> y) = \<bar>- 1\<bar> * norm y" |
9035 | 56 |
by (rule seminorm_abs_homogenous) |
12018
ec054019c910
Numerals and simprocs for types real and hypreal. The abstract
paulson
parents:
11701
diff
changeset
|
57 |
also have "\<bar>- 1\<bar> = (1::real)" by (rule abs_minus_one) |
10687 | 58 |
finally show "norm (x - y) \<le> norm x + norm y" by simp |
9035 | 59 |
qed |
7535
599d3414b51d
The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff
changeset
|
60 |
|
10687 | 61 |
lemma seminorm_minus: |
62 |
"is_seminorm V norm \<Longrightarrow> x \<in> V \<Longrightarrow> is_vectorspace V |
|
63 |
\<Longrightarrow> norm (- x) = norm x" |
|
9035 | 64 |
proof - |
10687 | 65 |
assume "is_seminorm V norm" "x \<in> V" "is_vectorspace V" |
12018
ec054019c910
Numerals and simprocs for types real and hypreal. The abstract
paulson
parents:
11701
diff
changeset
|
66 |
have "norm (- x) = norm (- 1 \<cdot> x)" by (simp! only: negate_eq1) |
ec054019c910
Numerals and simprocs for types real and hypreal. The abstract
paulson
parents:
11701
diff
changeset
|
67 |
also have "... = \<bar>- 1\<bar> * norm x" |
9035 | 68 |
by (rule seminorm_abs_homogenous) |
12018
ec054019c910
Numerals and simprocs for types real and hypreal. The abstract
paulson
parents:
11701
diff
changeset
|
69 |
also have "\<bar>- 1\<bar> = (1::real)" by (rule abs_minus_one) |
9035 | 70 |
finally show "norm (- x) = norm x" by simp |
71 |
qed |
|
7535
599d3414b51d
The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff
changeset
|
72 |
|
599d3414b51d
The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff
changeset
|
73 |
|
9035 | 74 |
subsection {* Norms *} |
7808 | 75 |
|
10687 | 76 |
text {* |
77 |
A \emph{norm} @{text "\<parallel>\<cdot>\<parallel>"} is a seminorm that maps only the |
|
78 |
@{text 0} vector to @{text 0}. |
|
79 |
*} |
|
7535
599d3414b51d
The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff
changeset
|
80 |
|
599d3414b51d
The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff
changeset
|
81 |
constdefs |
10687 | 82 |
is_norm :: "'a::{plus, minus, zero} set \<Rightarrow> ('a \<Rightarrow> real) \<Rightarrow> bool" |
83 |
"is_norm V norm \<equiv> \<forall>x \<in> V. is_seminorm V norm |
|
12018
ec054019c910
Numerals and simprocs for types real and hypreal. The abstract
paulson
parents:
11701
diff
changeset
|
84 |
\<and> (norm x = 0) = (x = 0)" |
7535
599d3414b51d
The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff
changeset
|
85 |
|
10687 | 86 |
lemma is_normI [intro]: |
12018
ec054019c910
Numerals and simprocs for types real and hypreal. The abstract
paulson
parents:
11701
diff
changeset
|
87 |
"\<forall>x \<in> V. is_seminorm V norm \<and> (norm x = 0) = (x = 0) |
10687 | 88 |
\<Longrightarrow> is_norm V norm" by (simp only: is_norm_def) |
7535
599d3414b51d
The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff
changeset
|
89 |
|
10687 | 90 |
lemma norm_is_seminorm [intro?]: |
91 |
"is_norm V norm \<Longrightarrow> x \<in> V \<Longrightarrow> is_seminorm V norm" |
|
92 |
by (unfold is_norm_def) blast |
|
7535
599d3414b51d
The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff
changeset
|
93 |
|
10687 | 94 |
lemma norm_zero_iff: |
12018
ec054019c910
Numerals and simprocs for types real and hypreal. The abstract
paulson
parents:
11701
diff
changeset
|
95 |
"is_norm V norm \<Longrightarrow> x \<in> V \<Longrightarrow> (norm x = 0) = (x = 0)" |
10687 | 96 |
by (unfold is_norm_def) blast |
7535
599d3414b51d
The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff
changeset
|
97 |
|
9408 | 98 |
lemma norm_ge_zero [intro?]: |
12018
ec054019c910
Numerals and simprocs for types real and hypreal. The abstract
paulson
parents:
11701
diff
changeset
|
99 |
"is_norm V norm \<Longrightarrow> x \<in> V \<Longrightarrow> 0 \<le> norm x" |
10687 | 100 |
by (unfold is_norm_def is_seminorm_def) blast |
7535
599d3414b51d
The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff
changeset
|
101 |
|
599d3414b51d
The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff
changeset
|
102 |
|
9035 | 103 |
subsection {* Normed vector spaces *} |
7808 | 104 |
|
7917 | 105 |
text{* A vector space together with a norm is called |
9035 | 106 |
a \emph{normed space}. *} |
7535
599d3414b51d
The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff
changeset
|
107 |
|
599d3414b51d
The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff
changeset
|
108 |
constdefs |
10687 | 109 |
is_normed_vectorspace :: |
110 |
"'a::{plus, minus, zero} set \<Rightarrow> ('a \<Rightarrow> real) \<Rightarrow> bool" |
|
111 |
"is_normed_vectorspace V norm \<equiv> |
|
9374 | 112 |
is_vectorspace V \<and> is_norm V norm" |
7535
599d3414b51d
The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff
changeset
|
113 |
|
10687 | 114 |
lemma normed_vsI [intro]: |
115 |
"is_vectorspace V \<Longrightarrow> is_norm V norm |
|
116 |
\<Longrightarrow> is_normed_vectorspace V norm" |
|
117 |
by (unfold is_normed_vectorspace_def) blast |
|
7535
599d3414b51d
The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff
changeset
|
118 |
|
10687 | 119 |
lemma normed_vs_vs [intro?]: |
120 |
"is_normed_vectorspace V norm \<Longrightarrow> is_vectorspace V" |
|
121 |
by (unfold is_normed_vectorspace_def) blast |
|
7535
599d3414b51d
The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff
changeset
|
122 |
|
10687 | 123 |
lemma normed_vs_norm [intro?]: |
124 |
"is_normed_vectorspace V norm \<Longrightarrow> is_norm V norm" |
|
125 |
by (unfold is_normed_vectorspace_def) blast |
|
7535
599d3414b51d
The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff
changeset
|
126 |
|
10687 | 127 |
lemma normed_vs_norm_ge_zero [intro?]: |
12018
ec054019c910
Numerals and simprocs for types real and hypreal. The abstract
paulson
parents:
11701
diff
changeset
|
128 |
"is_normed_vectorspace V norm \<Longrightarrow> x \<in> V \<Longrightarrow> 0 \<le> norm x" |
10687 | 129 |
by (unfold is_normed_vectorspace_def) (fast elim: norm_ge_zero) |
7535
599d3414b51d
The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff
changeset
|
130 |
|
10687 | 131 |
lemma normed_vs_norm_gt_zero [intro?]: |
12018
ec054019c910
Numerals and simprocs for types real and hypreal. The abstract
paulson
parents:
11701
diff
changeset
|
132 |
"is_normed_vectorspace V norm \<Longrightarrow> x \<in> V \<Longrightarrow> x \<noteq> 0 \<Longrightarrow> 0 < norm x" |
9035 | 133 |
proof (unfold is_normed_vectorspace_def, elim conjE) |
10687 | 134 |
assume "x \<in> V" "x \<noteq> 0" "is_vectorspace V" "is_norm V norm" |
12018
ec054019c910
Numerals and simprocs for types real and hypreal. The abstract
paulson
parents:
11701
diff
changeset
|
135 |
have "0 \<le> norm x" .. |
ec054019c910
Numerals and simprocs for types real and hypreal. The abstract
paulson
parents:
11701
diff
changeset
|
136 |
also have "0 \<noteq> norm x" |
9035 | 137 |
proof |
12018
ec054019c910
Numerals and simprocs for types real and hypreal. The abstract
paulson
parents:
11701
diff
changeset
|
138 |
presume "norm x = 0" |
9374 | 139 |
also have "?this = (x = 0)" by (rule norm_zero_iff) |
140 |
finally have "x = 0" . |
|
9035 | 141 |
thus "False" by contradiction |
142 |
qed (rule sym) |
|
12018
ec054019c910
Numerals and simprocs for types real and hypreal. The abstract
paulson
parents:
11701
diff
changeset
|
143 |
finally show "0 < norm x" . |
9035 | 144 |
qed |
7535
599d3414b51d
The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff
changeset
|
145 |
|
10687 | 146 |
lemma normed_vs_norm_abs_homogenous [intro?]: |
147 |
"is_normed_vectorspace V norm \<Longrightarrow> x \<in> V |
|
148 |
\<Longrightarrow> norm (a \<cdot> x) = \<bar>a\<bar> * norm x" |
|
149 |
by (rule seminorm_abs_homogenous, rule norm_is_seminorm, |
|
9035 | 150 |
rule normed_vs_norm) |
7535
599d3414b51d
The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff
changeset
|
151 |
|
10687 | 152 |
lemma normed_vs_norm_subadditive [intro?]: |
153 |
"is_normed_vectorspace V norm \<Longrightarrow> x \<in> V \<Longrightarrow> y \<in> V |
|
154 |
\<Longrightarrow> norm (x + y) \<le> norm x + norm y" |
|
155 |
by (rule seminorm_subadditive, rule norm_is_seminorm, |
|
9035 | 156 |
rule normed_vs_norm) |
7535
599d3414b51d
The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff
changeset
|
157 |
|
10687 | 158 |
text{* Any subspace of a normed vector space is again a |
9035 | 159 |
normed vectorspace.*} |
7917 | 160 |
|
10687 | 161 |
lemma subspace_normed_vs [intro?]: |
162 |
"is_vectorspace E \<Longrightarrow> is_subspace F E \<Longrightarrow> |
|
163 |
is_normed_vectorspace E norm \<Longrightarrow> is_normed_vectorspace F norm" |
|
9035 | 164 |
proof (rule normed_vsI) |
10687 | 165 |
assume "is_subspace F E" "is_vectorspace E" |
9035 | 166 |
"is_normed_vectorspace E norm" |
167 |
show "is_vectorspace F" .. |
|
10687 | 168 |
show "is_norm F norm" |
9035 | 169 |
proof (intro is_normI ballI conjI) |
10687 | 170 |
show "is_seminorm F norm" |
9035 | 171 |
proof |
9374 | 172 |
fix x y a presume "x \<in> E" |
12018
ec054019c910
Numerals and simprocs for types real and hypreal. The abstract
paulson
parents:
11701
diff
changeset
|
173 |
show "0 \<le> norm x" .. |
10687 | 174 |
show "norm (a \<cdot> x) = \<bar>a\<bar> * norm x" .. |
9374 | 175 |
presume "y \<in> E" |
10687 | 176 |
show "norm (x + y) \<le> norm x + norm y" .. |
9035 | 177 |
qed (simp!)+ |
7535
599d3414b51d
The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff
changeset
|
178 |
|
9374 | 179 |
fix x assume "x \<in> F" |
12018
ec054019c910
Numerals and simprocs for types real and hypreal. The abstract
paulson
parents:
11701
diff
changeset
|
180 |
show "(norm x = 0) = (x = 0)" |
9035 | 181 |
proof (rule norm_zero_iff) |
182 |
show "is_norm E norm" .. |
|
183 |
qed (simp!) |
|
184 |
qed |
|
185 |
qed |
|
7535
599d3414b51d
The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff
changeset
|
186 |
|
10687 | 187 |
end |