author | wenzelm |
Mon, 29 Nov 1999 15:52:49 +0100 | |
changeset 8039 | a901bafe4578 |
parent 7978 | 1b99ee57d131 |
child 8203 | 2fcc6017cb72 |
permissions | -rw-r--r-- |
7566 | 1 |
(* Title: HOL/Real/HahnBanach/Linearform.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 |
|
7808 | 6 |
header {* Linearforms *}; |
7535
599d3414b51d
The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff
changeset
|
7 |
|
7917 | 8 |
theory Linearform = VectorSpace:; |
9 |
||
7978 | 10 |
text{* A \emph{linear form} is a function on a vector |
11 |
space into the reals that is additive and multiplicative. *}; |
|
7535
599d3414b51d
The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff
changeset
|
12 |
|
599d3414b51d
The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff
changeset
|
13 |
constdefs |
7917 | 14 |
is_linearform :: "['a::{minus, plus} set, 'a => real] => bool" |
7535
599d3414b51d
The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff
changeset
|
15 |
"is_linearform V f == |
7917 | 16 |
(ALL x: V. ALL y: V. f (x + y) = f x + f y) & |
17 |
(ALL x: V. ALL a. f (a <*> x) = a * (f x))"; |
|
7535
599d3414b51d
The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff
changeset
|
18 |
|
7808 | 19 |
lemma is_linearformI [intro]: |
7917 | 20 |
"[| !! x y. [| x : V; y : V |] ==> f (x + y) = f x + f y; |
21 |
!! x c. x : V ==> f (c <*> x) = c * f x |] |
|
7535
599d3414b51d
The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff
changeset
|
22 |
==> is_linearform V f"; |
7566 | 23 |
by (unfold is_linearform_def) force; |
7535
599d3414b51d
The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff
changeset
|
24 |
|
7978 | 25 |
lemma linearform_add [intro!!]: |
7917 | 26 |
"[| is_linearform V f; x:V; y:V |] ==> f (x + y) = f x + f y"; |
27 |
by (unfold is_linearform_def) fast; |
|
7535
599d3414b51d
The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff
changeset
|
28 |
|
7978 | 29 |
lemma linearform_mult [intro!!]: |
7917 | 30 |
"[| is_linearform V f; x:V |] ==> f (a <*> x) = a * (f x)"; |
31 |
by (unfold is_linearform_def) fast; |
|
7535
599d3414b51d
The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff
changeset
|
32 |
|
7978 | 33 |
lemma linearform_neg [intro!!]: |
7917 | 34 |
"[| is_vectorspace V; is_linearform V f; x:V|] |
35 |
==> f (- x) = - f x"; |
|
7535
599d3414b51d
The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff
changeset
|
36 |
proof -; |
599d3414b51d
The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff
changeset
|
37 |
assume "is_linearform V f" "is_vectorspace V" "x:V"; |
7917 | 38 |
have "f (- x) = f ((- 1r) <*> x)"; by (simp! add: negate_eq1); |
7978 | 39 |
also; have "... = (- 1r) * (f x)"; by (rule linearform_mult); |
7566 | 40 |
also; have "... = - (f x)"; by (simp!); |
7535
599d3414b51d
The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff
changeset
|
41 |
finally; show ?thesis; .; |
599d3414b51d
The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff
changeset
|
42 |
qed; |
599d3414b51d
The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff
changeset
|
43 |
|
7978 | 44 |
lemma linearform_diff [intro!!]: |
7808 | 45 |
"[| is_vectorspace V; is_linearform V f; x:V; y:V |] |
7917 | 46 |
==> f (x - y) = f x - f y"; |
7535
599d3414b51d
The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff
changeset
|
47 |
proof -; |
599d3414b51d
The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff
changeset
|
48 |
assume "is_vectorspace V" "is_linearform V f" "x:V" "y:V"; |
7917 | 49 |
have "f (x - y) = f (x + - y)"; by (simp! only: diff_eq1); |
50 |
also; have "... = f x + f (- y)"; |
|
7978 | 51 |
by (rule linearform_add) (simp!)+; |
52 |
also; have "f (- y) = - f y"; by (rule linearform_neg); |
|
7917 | 53 |
finally; show "f (x - y) = f x - f y"; by (simp!); |
7535
599d3414b51d
The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff
changeset
|
54 |
qed; |
599d3414b51d
The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff
changeset
|
55 |
|
7978 | 56 |
text{* Every linear form yields $0$ for the $\zero$ vector.*}; |
7917 | 57 |
|
7808 | 58 |
lemma linearform_zero [intro!!, simp]: |
59 |
"[| is_vectorspace V; is_linearform V f |] ==> f <0> = 0r"; |
|
7535
599d3414b51d
The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff
changeset
|
60 |
proof -; |
599d3414b51d
The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff
changeset
|
61 |
assume "is_vectorspace V" "is_linearform V f"; |
7917 | 62 |
have "f <0> = f (<0> - <0>)"; by (simp!); |
7808 | 63 |
also; have "... = f <0> - f <0>"; |
7978 | 64 |
by (rule linearform_diff) (simp!)+; |
7535
599d3414b51d
The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff
changeset
|
65 |
also; have "... = 0r"; by simp; |
599d3414b51d
The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff
changeset
|
66 |
finally; show "f <0> = 0r"; .; |
599d3414b51d
The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff
changeset
|
67 |
qed; |
599d3414b51d
The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff
changeset
|
68 |
|
7808 | 69 |
end; |