@[simp]
theorem
sqrt_ne_zero
(f : Type)
[myfld f]
[fld_with_sqrt f]
(a : f) :
a ≠ myfld.zero → sqroot a ≠ myfld.zero
@[class]
- cubrt : f → f
- cubrt_cubed : ∀ (a : f), (fld_with_cube_root.cubrt a) .* (fld_with_cube_root.cubrt a) .* (fld_with_cube_root.cubrt a) = a
theorem
cubrt_eq
(f : Type)
[myfld f]
[fld_with_cube_root f]
(a b : f) :
a = b → fld_with_cube_root.cubrt a = fld_with_cube_root.cubrt b
theorem
cubrt_cubed
(f : Type)
[myfld f]
[fld_with_cube_root f]
(a : f) :
cubed f (fld_with_cube_root.cubrt a) = a
def
cube_root_of_unity
(f : Type)
[myfld f]
[fld_not_char_two f]
(rt_minus_three : f)
(rt_proof : rt_minus_three .* rt_minus_three = .- (three f)) :
f
Equations
- cube_root_of_unity f rt_minus_three rt_proof = ( .- myfld.one .+ rt_minus_three) .* (myfld.reciprocal (two f) _)
theorem
cubrt_unity_correct
(f : Type)
[myfld f]
[fld_not_char_two f]
(rt_minus_three : f)
(rt_proof : rt_minus_three .* rt_minus_three = .- (three f)) :
cubed f (cube_root_of_unity f rt_minus_three rt_proof) = myfld.one
theorem
cubrts_unity_sum_zero
(f : Type)
[myfld f]
[fld_with_sqrt f]
[fld_not_char_two f] :
myfld.one .+ ((cubrt_unity_a f) .+ (cubrt_unity_b f)) = myfld.zero
theorem
no_other_cubrts_unity_sub_proof_a
(f : Type)
[myfld f]
[fld_with_sqrt f]
[fld_not_char_two f]
[fld_with_cube_root f]
(a x : f) :
.- (((fld_with_cube_root.cubrt a) .+ ((fld_with_cube_root.cubrt a) .* (cubrt_unity_a f) .+ (fld_with_cube_root.cubrt a) .* (cubrt_unity_b f))) .* (x .* x)) = myfld.zero
theorem
no_other_cubrts_unity_sub_proof_b
(f : Type)
[myfld f]
[fld_with_sqrt f]
[fld_not_char_two f]
[fld_with_cube_root f]
(a x : f) :
x .* ((fld_with_cube_root.cubrt a) .* ((fld_with_cube_root.cubrt a) .* (cubrt_unity_a f)) .+ (fld_with_cube_root.cubrt a) .* ((fld_with_cube_root.cubrt a) .* (cubrt_unity_b f)) .+ (fld_with_cube_root.cubrt a) .* (cubrt_unity_a f) .* ((fld_with_cube_root.cubrt a) .* (cubrt_unity_b f))) = myfld.zero
theorem
no_other_cubrts
(f : Type)
[myfld f]
[fld_with_sqrt f]
[fld_not_char_two f]
[fld_with_cube_root f]
(a x : f) :
x ≠ fld_with_cube_root.cubrt a → x ≠ (fld_with_cube_root.cubrt a) .* (cubrt_unity_a f) → x ≠ (fld_with_cube_root.cubrt a) .* (cubrt_unity_b f) → cubed f x ≠ a
theorem
cubrt_unity_nonzero
(f : Type)
[myfld f]
[fld_not_char_two f]
(rt_minus_three : f)
(rt_proof : rt_minus_three .* rt_minus_three = .- (three f)) :
cube_root_of_unity f rt_minus_three rt_proof ≠ myfld.zero
def
alt_cubrt_a
(f : Type)
[myfld f]
[fld_with_cube_root f]
[fld_with_sqrt f]
[fld_not_char_two f]
(a : f) :
f
Equations
- alt_cubrt_a f a = (cube_root_of_unity f sqroot .- (three f) _) .* (fld_with_cube_root.cubrt a)
theorem
alt_cubrt_a_nonzero
(f : Type)
[myfld f]
[fld_with_cube_root f]
[fld_with_sqrt f]
[fld_not_char_two f]
(a : f)
(a_ne_zero : a ≠ myfld.zero) :
alt_cubrt_a f a ≠ myfld.zero
def
alt_cubrt_b
(f : Type)
[myfld f]
[fld_with_cube_root f]
[fld_with_sqrt f]
[fld_not_char_two f]
(a : f) :
f
Equations
- alt_cubrt_b f a = (cube_root_of_unity f .- sqroot .- (three f) _) .* (fld_with_cube_root.cubrt a)
theorem
alt_cubrt_b_nonzero
(f : Type)
[myfld f]
[fld_with_cube_root f]
[fld_with_sqrt f]
[fld_not_char_two f]
(a : f)
(a_ne_zero : a ≠ myfld.zero) :
alt_cubrt_b f a ≠ myfld.zero
theorem
three_cubrts
(f : Type)
[myfld f]
[fld_not_char_two f]
[fld_with_cube_root f]
(rt_minus_three a : f)
(rt_proof : rt_minus_three .* rt_minus_three = .- (three f)) :
cubed f (fld_with_cube_root.cubrt a) .* (cube_root_of_unity f rt_minus_three rt_proof) = a
theorem
no_other_cubrts_simple
(f : Type)
[myfld f]
[fld_with_sqrt f]
[fld_not_char_two f]
[fld_with_cube_root f]
(a1 x : f) :
x ≠ fld_with_cube_root.cubrt a1 → x ≠ alt_cubrt_a f a1 → x ≠ alt_cubrt_b f a1 → cubed f x ≠ a1
theorem
alt_cubrt_a_correct
(f : Type)
[myfld f]
[fld_with_cube_root f]
[fld_with_sqrt f]
[fld_not_char_two f]
(a : f) :
cubed f (alt_cubrt_a f a) = a
theorem
alt_cubrt_b_correct
(f : Type)
[myfld f]
[fld_with_cube_root f]
[fld_with_sqrt f]
[fld_not_char_two f]
(a : f) :
cubed f (alt_cubrt_b f a) = a