- add : α → α → α
- add_assoc : ∀ (a b c_1 : α), a + b + c_1 = a + (b + c_1)
- zero : α
- zero_add : ∀ (a : α), 0 + a = a
- add_zero : ∀ (a : α), a + 0 = a
- neg : α → α
- add_left_neg : ∀ (a : α), -a + a = 0
- add_comm : ∀ (a b : α), a + b = b + a
- mul : α → α → α
- mul_assoc : ∀ (a b c_1 : α), (a * b) * c_1 = a * b * c_1
- one : α
- one_mul : ∀ (a : α), 1 * a = a
- mul_one : ∀ (a : α), a * 1 = a
- left_distrib : ∀ (a b c_1 : α), a * (b + c_1) = a * b + a * c_1
- right_distrib : ∀ (a b c_1 : α), (a + b) * c_1 = a * c_1 + b * c_1
- inv : α → α
- exists_pair_ne : ∃ (x y : α), x ≠ y
- mul_inv_cancel : ∀ {a : α}, a ≠ 0 → a * a⁻¹ = 1
- inv_mul_cancel : ∀ {a : α}, a ≠ 0 → a⁻¹ * a = 1
- inv_zero : 0⁻¹ = 0
A division_ring
is a ring
with multiplicative inverses for nonzero elements
Every division ring is a group_with_zero
.
Equations
- division_ring.to_group_with_zero = {mul := division_ring.mul _inst_1, mul_assoc := _, one := division_ring.one _inst_1, one_mul := _, mul_one := _, zero := division_ring.zero _inst_1, zero_mul := _, mul_zero := _, inv := division_ring.inv _inst_1, exists_pair_ne := _, inv_zero := _, mul_inv_cancel := _}
Equations
- division_ring.to_domain = {add := division_ring.add _inst_1, add_assoc := _, zero := division_ring.zero _inst_1, zero_add := _, add_zero := _, neg := division_ring.neg _inst_1, add_left_neg := _, add_comm := _, mul := division_ring.mul _inst_1, mul_assoc := _, one := division_ring.one _inst_1, one_mul := _, mul_one := _, left_distrib := _, right_distrib := _, exists_pair_ne := _, eq_zero_or_eq_zero_of_mul_eq_zero := _}
- add : α → α → α
- add_assoc : ∀ (a b c_1 : α), a + b + c_1 = a + (b + c_1)
- zero : α
- zero_add : ∀ (a : α), 0 + a = a
- add_zero : ∀ (a : α), a + 0 = a
- neg : α → α
- add_left_neg : ∀ (a : α), -a + a = 0
- add_comm : ∀ (a b : α), a + b = b + a
- mul : α → α → α
- mul_assoc : ∀ (a b c_1 : α), (a * b) * c_1 = a * b * c_1
- one : α
- one_mul : ∀ (a : α), 1 * a = a
- mul_one : ∀ (a : α), a * 1 = a
- left_distrib : ∀ (a b c_1 : α), a * (b + c_1) = a * b + a * c_1
- right_distrib : ∀ (a b c_1 : α), (a + b) * c_1 = a * c_1 + b * c_1
- mul_comm : ∀ (a b : α), a * b = b * a
- inv : α → α
- exists_pair_ne : ∃ (x y : α), x ≠ y
- mul_inv_cancel : ∀ {a : α}, a ≠ 0 → a * a⁻¹ = 1
- inv_zero : 0⁻¹ = 0
A field
is a comm_ring
with multiplicative inverses for nonzero elements
Instances
- linear_ordered_field.to_field
- normed_field.to_field
- opposite.field
- rat.field
- local_ring.residue_field.field
- zmod.field
- localization_map.field
- fraction_ring.field
- real.field
- complex.field
- padic.field
- adjoin_root.field
- polynomial.splitting_field_aux.field
- polynomial.splitting_field.field
- is_subfield.field
- field.adjoin.is_field
- algebraic_closure.adjoin_monic.field
- algebraic_closure.step.field
- algebraic_closure.field
- subfield.to_field
- intermediate_field.to_field
- perfect_closure.field
Equations
- field.to_division_ring = {add := field.add (show field α, from _inst_1), add_assoc := _, zero := field.zero (show field α, from _inst_1), zero_add := _, add_zero := _, neg := field.neg (show field α, from _inst_1), add_left_neg := _, add_comm := _, mul := field.mul (show field α, from _inst_1), mul_assoc := _, one := field.one (show field α, from _inst_1), one_mul := _, mul_one := _, left_distrib := _, right_distrib := _, inv := field.inv (show field α, from _inst_1), exists_pair_ne := _, mul_inv_cancel := _, inv_mul_cancel := _, inv_zero := _}
Every field is a comm_group_with_zero
.
Equations
- field.to_comm_group_with_zero = {mul := group_with_zero.mul division_ring.to_group_with_zero, mul_assoc := _, one := group_with_zero.one division_ring.to_group_with_zero, one_mul := _, mul_one := _, mul_comm := _, zero := group_with_zero.zero division_ring.to_group_with_zero, zero_mul := _, mul_zero := _, inv := group_with_zero.inv division_ring.to_group_with_zero, exists_pair_ne := _, inv_zero := _, mul_inv_cancel := _}
Equations
- field.to_integral_domain = {add := field.add _inst_1, add_assoc := _, zero := field.zero _inst_1, zero_add := _, add_zero := _, neg := field.neg _inst_1, add_left_neg := _, add_comm := _, mul := field.mul _inst_1, mul_assoc := _, one := field.one _inst_1, one_mul := _, mul_one := _, left_distrib := _, right_distrib := _, mul_comm := _, exists_pair_ne := _, eq_zero_or_eq_zero_of_mul_eq_zero := _}
- exists_pair_ne : ∃ (x y : R), x ≠ y
- mul_comm : ∀ (x y : R), x * y = y * x
- mul_inv_cancel : ∀ {a : R}, a ≠ 0 → (∃ (b : R), a * b = 1)
A predicate to express that a ring is a field.
This is mainly useful because such a predicate does not contain data, and can therefore be easily transported along ring isomorphisms. Additionaly, this is useful when trying to prove that a particular ring structure extends to a field.
Transferring from field to is_field
Transferring from is_field to field
Equations
- is_field.to_field R h = {add := ring.add _inst_1, add_assoc := _, zero := ring.zero _inst_1, zero_add := _, add_zero := _, neg := ring.neg _inst_1, add_left_neg := _, add_comm := _, mul := ring.mul _inst_1, mul_assoc := _, one := ring.one _inst_1, one_mul := _, mul_one := _, left_distrib := _, right_distrib := _, mul_comm := _, inv := λ (a : R), dite (a = 0) (λ (ha : a = 0), 0) (λ (ha : ¬a = 0), classical.some _), exists_pair_ne := _, mul_inv_cancel := _, inv_zero := _}
For each field, and for each nonzero element of said field, there is a unique inverse.
Since is_field
doesn't remember the data of an inv
function and as such,
a lemma that there is a unique inverse could be useful.