Pantograph/experiments/dsp/lean_src_proj/MIL/Rudin/field_bm.lean

84 lines
2.1 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/-
\section{FIELDS}
1.12 Definition A field is a set $F$ with two operations,
called addition and multiplication, which satisfy the
following so-called "field axioms" (A), (M), and (D):
\section{(A) Axioms for addition}
(A1) If $x \in F$ and $y \in F$, then their sum $x+y$ is in $F$.
(A2) Addition is commutative: $x+y=y+x$ for all $x, y \in F$.
(A3) Addition is associative: $(x+y)+z=x+(y+z)$ for all $x, y, z \in F$.
(A4) $F$ contains an element 0 such that $0+x=x$ for every $x \in F$.
(A5) To every $x \in F$ corresponds an element $-x \in F$ such that
$$
x+(-x)=0
$$
(M) Axioms for multiplication
(M1) If $x \in F$ and $y \in F$, then their product $x y$ is in $F$.
(M2) Multiplication is commutative: $x y=y x$ for all $x, y \in F$.
(M3) Multiplication is associative: $(x y) z=x(y z)$ for all $x, y, z \in F$.
(M4) $F$ contains an element $1 \neq 0$ such that $1 x=x$ for every $x \in F$.
(M5) If $x \in F$ and $x \neq 0$ then there exists an element $1 / x \in F$ such that
$$
x \cdot(1 / x)=1 \text {. }
$$
\section{(D) The distributive law}
$$
x(y+z)=x y+x z
$$
holds for all $x, y, z \in F$.
https://leanprover-community.github.io/mathematics_in_lean/C02_Basics.html#
-/
class Field (α : Type) where
add : ααα
comm: ∀ x y : α, add x y = add y x
ass: ∀ x y z : α, (add (add x y) z) = (add x (add x z))
mul : ααα
#check Field.mk
#check Field Nat
-- (A1) If $x \in F$ and $y \in F$, then their sum $x+y$ is in $F$.
-- closure is not needed since add implies
-- (A2) Addition is commutative: $x+y=y+x$ for all $x, y \in F$.
-- since we are defining what the structure (class) is, then we define that it is commutative (then later you can show specifc objects like Q, Reals are Fields)
-- Goal prove rationals are a field (to debug my definition of field) & use def of rationals
-- structure == inductive, but structure has one constructor
-- class ≈ structure + other machinery
/-
structure foo_s where
x : Nat
y : Nat
#check foo_s.mk
inductive foo_i
| mk (x y : Nat)
def foo_i.x : foo_i → Nat
| mk x _ => x
#check foo_s.x
#check foo_i.x
-/