# Theory Linearform

theory Linearform
imports Vector_Space
```(*  Title:      HOL/Hahn_Banach/Linearform.thy
Author:     Gertrud Bauer, TU Munich
*)

section ‹Linearforms›

theory Linearform
imports Vector_Space
begin

text ‹
A ∗‹linear form› is a function on a vector space into the reals that is
›

locale linearform =
fixes V :: "'a::{minus, plus, zero, uminus} set" and f
assumes add [iff]: "x ∈ V ⟹ y ∈ V ⟹ f (x + y) = f x + f y"
and mult [iff]: "x ∈ V ⟹ f (a ⋅ x) = a * f x"

declare linearform.intro [intro?]

lemma (in linearform) neg [iff]:
assumes "vectorspace V"
shows "x ∈ V ⟹ f (- x) = - f x"
proof -
interpret vectorspace V by fact
assume x: "x ∈ V"
then have "f (- x) = f ((- 1) ⋅ x)" by (simp add: negate_eq1)
also from x have "… = (- 1) * (f x)" by (rule mult)
also from x have "… = - (f x)" by simp
finally show ?thesis .
qed

lemma (in linearform) diff [iff]:
assumes "vectorspace V"
shows "x ∈ V ⟹ y ∈ V ⟹ f (x - y) = f x - f y"
proof -
interpret vectorspace V by fact
assume x: "x ∈ V" and y: "y ∈ V"
then have "x - y = x + - y" by (rule diff_eq1)
also have "f … = f x + f (- y)" by (rule add) (simp_all add: x y)
also have "f (- y) = - f y" using ‹vectorspace V› y by (rule neg)
finally show ?thesis by simp
qed

text ‹Every linear form yields ‹0› for the ‹0› vector.›

lemma (in linearform) zero [iff]:
assumes "vectorspace V"
shows "f 0 = 0"
proof -
interpret vectorspace V by fact
have "f 0 = f (0 - 0)" by simp
also have "… = f 0 - f 0" using ‹vectorspace V› by (rule diff) simp_all
also have "… = 0" by simp
finally show ?thesis .
qed

end
```