FLT/Data/Hurwitz.lean
Explanation legend Lean4 Domain Explanation Language (L4DEL)
L4DEL explanations are a separate layer. They do not change the Lean source. Intuition is explanatory prose; numbered items are a reading path; sources link the wording back to evidence.
- L4DEL
- Lean4 Domain Explanation Language
Credit: The upstream authors and contributors retain credit for the project and mathematics. lean4-explainer only renders their pinned source and adds the separately disclosed explanation layer.
Project sources: Pinned project documentation, Pinned FLT blueprint introduction
95 declarations, 0 contain sorry, 0 declared as axioms
Hurwitz integers
The ring of Hurwitz integers, the maximal order in the rational quaternions
generated by 1, i, j, k together with ω := (-1 + i + j + k) / 2.
Main definitions
Hurwitz: the ring of Hurwitz integers, defined as a structure with an integer basis1, ω, i, j.Hurwitz.toQuaternion: the embedding into the rational quaternions.
Imports (1)
Imported by 2 files
- structure
HurwitzHurwitz integers in the quaternions line 29 sourceSource documentation
Hurwitz integers in the quaternions. ℤ-Basis 1, ω=(-1+i+j+k)/2, i and ωi=(-1-i+j-k)/2.
no axioms what this means
structure Hurwitz : Type where …
- def
Hurwitz.toQuaternionThe embedding of the Hurwitz integers into the rational quaternions line 45 sourceSource documentation
The embedding of the Hurwitz integers into the rational quaternions.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses: Hurwitz,
Quaternion,RealProof uses:
QuaternionAlgebra.mk,Neg.neg,OfNat.ofNat,HSub.hSub,Hurwitz.re,HMul.hMul,Inv.inv,Hurwitz.imO,Hurwitz.imOI,HAdd.hAdd,Hurwitz.imI20 instances, coercions and auxiliary constants left out.
noncomputable def toQuaternion (z : 𝓞) : ℍ where …
- def
Hurwitz.fromQuaternionRounds a quaternion to a nearby Hurwitz integer; serves as a left inverse totoQuaternionline 53 sourceSource documentation
Rounds a quaternion to a nearby Hurwitz integer; serves as a left inverse to
toQuaternion.standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Quaternion,Real, HurwitzProof uses:
Hurwitz.mk,Int.floor,HAdd.hAdd,QuaternionAlgebra.re,Neg.neg,OfNat.ofNat,QuaternionAlgebra.imJ,QuaternionAlgebra.imK,HSub.hSub,QuaternionAlgebra.imI15 instances, coercions and auxiliary constants left out.
noncomputable def fromQuaternion (z : ℍ) : 𝓞 where …
- lemma
Hurwitz.leftInverse_fromQuaternion_toQuaternionline 59 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Function.LeftInverse, Hurwitz,Quaternion,Real, Hurwitz.fromQuaternion, Hurwitz.toQuaternionProof uses:
of_eq_true,Eq,Eq.trans,Hurwitz.mk,Hurwitz.re,Hurwitz.imO,Hurwitz.imI,Hurwitz.imOI,True,congrFun',congrArg,congr,Int,Int.floor,HAdd.hAdd,QuaternionAlgebra.re,Neg.neg,OfNat.ofNat,QuaternionAlgebra.imJ,QuaternionAlgebra.imKand 17 more61 instances, coercions and auxiliary constants left out.
Tactic trace: 2 steps
Open to load the checked before-and-after goal states.
- lemma
Hurwitz.toQuaternion_injectiveline 66 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Function.Injective, Hurwitz,Quaternion,Real, Hurwitz.toQuaternionProof uses:
Function.LeftInverse.injective, Hurwitz.fromQuaternion, Hurwitz.leftInverse_fromQuaternion_toQuaternion6 instances, coercions and auxiliary constants left out.
- lemma
Hurwitz.leftInvOn_toQuaternion_fromQuaternionline 70 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Set.LeftInvOn,Quaternion,Real, Hurwitz, Hurwitz.toQuaternion, Hurwitz.fromQuaternion,Set.ofPred,Exists,Int,Or,Eq,QuaternionAlgebra.mk,Neg.neg,OfNat.ofNat,HAdd.hAdd,Inv.inv,NatProof uses:
Eq.mpr,HMul.hMul,inferInstance,CommGroupWithZero,id,Mathlib.Tactic.FieldSimp.eq_eq_cancel_eq,Mathlib.Tactic.FieldSimp.NF.eval,Mathlib.Tactic.FieldSimp.NF.cons,Prod.mk,List.nil,Prod,Mathlib.Tactic.FieldSimp.eq_mul_of_eq_eq_eq_mul,rfl,Eq.trans,Mathlib.Tactic.FieldSimp.subst_add,Eq.refl,Mathlib.Tactic.FieldSimp.NF.atom_eq_eval,Eq.symm,Mathlib.Tactic.FieldSimp.NF.eval_cons_mul_eval_cons_neg,Mathlib.Meta.NormNum.isNat_eq_falseand 93 more126 instances, coercions and auxiliary constants left out.
Tactic trace: 14 steps
Open to load the checked before-and-after goal states.
- lemma
Hurwitz.fromQuaternion_injOnline 88 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Set.InjOn,Quaternion,Real, Hurwitz, Hurwitz.fromQuaternion,Set.ofPred,Exists,Int,Or,Eq,QuaternionAlgebra.mk,Neg.neg,OfNat.ofNat,HAdd.hAdd,Inv.inv,NatProof uses:
Set.LeftInvOn.injOn, Hurwitz.toQuaternion, Hurwitz.leftInvOn_toQuaternion_fromQuaternion30 instances, coercions and auxiliary constants left out.
- def
Hurwitz.zeroThe Hurwitz number 0 line 96 sourceSource documentation
The Hurwitz number 0
no axioms what this means
Statement uses: Hurwitz
Proof uses:
Hurwitz.mk,OfNat.ofNat,Int1 instances, coercions and auxiliary constants left out.
def zero : 𝓞 := ⟨0, 0, 0, 0⟩
- instance
Hurwitz.(instance at line 99)line 99 sourceSource documentation
notation
0forzeroinstance : Zero 𝓞 := ⟨zero⟩
Mentions: Hurwitz.zero
- lemma
Hurwitz.zero_reline 101 sourceno axioms what this means
Statement uses:
Eq,Int,Hurwitz.re,OfNat.ofNat, HurwitzProof uses:
rfl5 instances, coercions and auxiliary constants left out.
- lemma
Hurwitz.zero_im_oline 102 sourceno axioms what this means
Statement uses:
Eq,Int,Hurwitz.imO,OfNat.ofNat, HurwitzProof uses:
rfl5 instances, coercions and auxiliary constants left out.
- lemma
Hurwitz.zero_im_iline 103 sourceno axioms what this means
Statement uses:
Eq,Int,Hurwitz.imI,OfNat.ofNat, HurwitzProof uses:
rfl5 instances, coercions and auxiliary constants left out.
- lemma
Hurwitz.zero_im_oiline 104 sourceno axioms what this means
Statement uses:
Eq,Int,Hurwitz.imOI,OfNat.ofNat, HurwitzProof uses:
rfl5 instances, coercions and auxiliary constants left out.
- lemma
Hurwitz.toQuaternion_zeroline 106 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Eq,Quaternion,Real, Hurwitz.toQuaternion,OfNat.ofNat, Hurwitz,Neg.negProof uses:
Quaternion.ext,of_eq_true,QuaternionAlgebra.re,Eq.trans,True,congrFun',congrArg,QuaternionAlgebra.mk,congr,QuaternionAlgebra,HSub.hSub,Hurwitz.re,HMul.hMul,Inv.inv,Hurwitz.imO,Hurwitz.imOI,HAdd.hAdd,Hurwitz.imI,Int.cast_zero,MulZeroClass.mul_zeroand 6 more53 instances, coercions and auxiliary constants left out.
Tactic trace: 2 steps
Open to load the checked before-and-after goal states.
- lemma
Hurwitz.toQuaternion_eq_zero_iffline 110 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses: Hurwitz,
Iff,Eq,Quaternion,Real, Hurwitz.toQuaternion,OfNat.ofNat,Neg.negProof uses:
Function.Injective.eq_iff', Hurwitz.toQuaternion_injective, Hurwitz.toQuaternion_zero14 instances, coercions and auxiliary constants left out.
- lemma
Hurwitz.toQuaternion_ne_zero_iffline 113 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses: Hurwitz,
Iff,Ne,Quaternion,Real, Hurwitz.toQuaternion,OfNat.ofNat,Neg.negProof uses:
Function.Injective.ne_iff', Hurwitz.toQuaternion_injective, Hurwitz.toQuaternion_zero14 instances, coercions and auxiliary constants left out.
- def
Hurwitz.oneThe Hurwitz number 1 line 119 sourceSource documentation
The Hurwitz number 1.
no axioms what this means
Statement uses: Hurwitz
Proof uses:
Hurwitz.mk,OfNat.ofNat,Int1 instances, coercions and auxiliary constants left out.
def one : 𝓞 := ⟨1, 0, 0, 0⟩
- instance
Hurwitz.(instance at line 122)line 122 sourceSource documentation
Notation
1foroneinstance : One 𝓞 := ⟨one⟩
Mentions: Hurwitz.one
- lemma
Hurwitz.one_reline 124 sourceno axioms what this means
Statement uses:
Eq,Int,Hurwitz.re,OfNat.ofNat, HurwitzProof uses:
rfl5 instances, coercions and auxiliary constants left out.
- lemma
Hurwitz.one_im_oline 125 sourceno axioms what this means
Statement uses:
Eq,Int,Hurwitz.imO,OfNat.ofNat, HurwitzProof uses:
rfl5 instances, coercions and auxiliary constants left out.
- lemma
Hurwitz.one_im_iline 126 sourceno axioms what this means
Statement uses:
Eq,Int,Hurwitz.imI,OfNat.ofNat, HurwitzProof uses:
rfl5 instances, coercions and auxiliary constants left out.
- lemma
Hurwitz.one_im_oiline 127 sourceno axioms what this means
Statement uses:
Eq,Int,Hurwitz.imOI,OfNat.ofNat, HurwitzProof uses:
rfl5 instances, coercions and auxiliary constants left out.
- lemma
Hurwitz.toQuaternion_oneline 129 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Eq,Quaternion,Real, Hurwitz.toQuaternion,OfNat.ofNat, Hurwitz,Neg.negProof uses:
Quaternion.ext,of_eq_true,QuaternionAlgebra.re,Eq.trans,True,congrFun',congrArg,QuaternionAlgebra.mk,congr,QuaternionAlgebra,HSub.hSub,Hurwitz.re,HMul.hMul,Inv.inv,Hurwitz.imO,Hurwitz.imOI,HAdd.hAdd,Hurwitz.imI,Int.cast_one,Int.cast_zeroand 8 more54 instances, coercions and auxiliary constants left out.
Tactic trace: 2 steps
Open to load the checked before-and-after goal states.
- def
Hurwitz.negThe negation-zof a Hurwitz number line 137 sourceSource documentation
The negation
-zof a Hurwitz numberno axioms what this means
Statement uses: Hurwitz
Proof uses:
Hurwitz.mk,Neg.neg,Int,Hurwitz.re,Hurwitz.imO,Hurwitz.imI,Hurwitz.imOI1 instances, coercions and auxiliary constants left out.
def neg (z : 𝓞) : 𝓞 := ⟨-re z, -imO z, -imI z, -imOI z⟩
- instance
Hurwitz.(instance at line 140)line 140 sourceSource documentation
Notation
-for negationinstance : Neg 𝓞 := ⟨neg⟩
Mentions: Hurwitz.neg
- lemma
Hurwitz.neg_rehow neg interacts with re and im_* line 143 sourceSource comment
how neg interacts with re and im_*no axioms what this means
Statement uses: Hurwitz,
Eq,Int,Hurwitz.re,Neg.negProof uses:
rfl3 instances, coercions and auxiliary constants left out.
@[simp] lemma neg_re (z : 𝓞) : re (-z) = -re z := rfl
- lemma
Hurwitz.neg_im_ohow neg interacts with re and im_* line 144 sourceSource comment
how neg interacts with re and im_*no axioms what this means
Statement uses: Hurwitz,
Eq,Int,Hurwitz.imO,Neg.negProof uses:
rfl3 instances, coercions and auxiliary constants left out.
@[simp] lemma neg_im_o (z : 𝓞) : imO (-z) = -imO z := rfl
- lemma
Hurwitz.neg_im_ihow neg interacts with re and im_* line 145 sourceSource comment
how neg interacts with re and im_*no axioms what this means
Statement uses: Hurwitz,
Eq,Int,Hurwitz.imI,Neg.negProof uses:
rfl3 instances, coercions and auxiliary constants left out.
@[simp] lemma neg_im_i (z : 𝓞) : imI (-z) = -imI z := rfl
- lemma
Hurwitz.neg_im_oihow neg interacts with re and im_* line 146 sourceSource comment
how neg interacts with re and im_*no axioms what this means
Statement uses: Hurwitz,
Eq,Int,Hurwitz.imOI,Neg.negProof uses:
rfl3 instances, coercions and auxiliary constants left out.
@[simp] lemma neg_im_oi (z : 𝓞) : imOI (-z) = -imOI z := rfl …
- lemma
Hurwitz.toQuaternion_negline 149 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses: Hurwitz,
Eq,Quaternion,Real, Hurwitz.toQuaternion,Neg.neg,OfNat.ofNatProof uses:
Quaternion.ext,Eq.mpr,QuaternionAlgebra.re,HAdd.hAdd,Hurwitz.re,HMul.hMul,Inv.inv,Hurwitz.imO,Hurwitz.imOI,HSub.hSub,id,congr,congrArg,QuaternionAlgebra.mk,Hurwitz.imI,QuaternionAlgebra,Eq.trans,Int.cast_neg,mul_neg,sub_neg_eq_addand 60 more92 instances, coercions and auxiliary constants left out.
Tactic trace: 3 steps
Open to load the checked before-and-after goal states.
- def
Hurwitz.addadditionz+wof complex numbers line 158 sourceSource documentation
addition
z+wof complex numbersno axioms what this means
Statement uses: Hurwitz
Proof uses:
Hurwitz.mk,HAdd.hAdd,Int,Hurwitz.re,Hurwitz.imO,Hurwitz.imI,Hurwitz.imOI2 instances, coercions and auxiliary constants left out.
def add (z w : 𝓞) : 𝓞 := ⟨z.re + w.re, z.imO + w.imO, z.imI + w.imI, z.imOI + w.imOI⟩
- instance
Hurwitz.(instance at line 161)line 161 sourceSource documentation
Notation
+for additioninstance : Add 𝓞 := ⟨add⟩
Mentions: Hurwitz.add
- lemma
Hurwitz.add_rebasic properties line 164 sourceSource comment
basic propertiesno axioms what this means
Statement uses: Hurwitz,
Eq,Int,Hurwitz.re,HAdd.hAddProof uses:
rfl5 instances, coercions and auxiliary constants left out.
@[simp] lemma add_re (z w : 𝓞) : re (z + w) = re z + re w := rfl
- lemma
Hurwitz.add_im_obasic properties line 165 sourceSource comment
basic propertiesno axioms what this means
Statement uses: Hurwitz,
Eq,Int,Hurwitz.imO,HAdd.hAddProof uses:
rfl5 instances, coercions and auxiliary constants left out.
@[simp] lemma add_im_o (z w : 𝓞) : imO (z + w) = imO z + imO w := rfl
- lemma
Hurwitz.add_im_ibasic properties line 166 sourceSource comment
basic propertiesno axioms what this means
Statement uses: Hurwitz,
Eq,Int,Hurwitz.imI,HAdd.hAddProof uses:
rfl5 instances, coercions and auxiliary constants left out.
@[simp] lemma add_im_i (z w : 𝓞) : imI (z + w) = imI z + imI w := rfl
- lemma
Hurwitz.add_im_oibasic properties line 167 sourceSource comment
basic propertiesno axioms what this means
Statement uses: Hurwitz,
Eq,Int,Hurwitz.imOI,HAdd.hAddProof uses:
rfl5 instances, coercions and auxiliary constants left out.
@[simp] lemma add_im_oi (z w : 𝓞) : imOI (z + w) = imOI z + imOI w := rfl …
- lemma
Hurwitz.toQuaternion_addline 170 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses: Hurwitz,
Eq,Quaternion,Real, Hurwitz.toQuaternion,HAdd.hAdd,Neg.neg,OfNat.ofNatProof uses:
Quaternion.ext,Eq.mpr,QuaternionAlgebra.re,HSub.hSub,Hurwitz.re,HMul.hMul,Inv.inv,Hurwitz.imO,Hurwitz.imOI,id,congrFun',congrArg,QuaternionAlgebra.mk,Hurwitz.imI,congr,QuaternionAlgebra,Int.cast_add,Mathlib.Tactic.Ring.of_eq,HPow.hPow,Natand 47 more78 instances, coercions and auxiliary constants left out.
Tactic trace: 3 steps
Open to load the checked before-and-after goal states.
- instance
Hurwitz.(instance at line 175)line 175 sourceSource documentation
Notation
+for additioninstance : Sub 𝓞 := ⟨fun a b => a + -b⟩
- lemma
Hurwitz.toQuaternion_subline 177 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses: Hurwitz,
Eq,Quaternion,Real, Hurwitz.toQuaternion,HSub.hSub,Neg.neg,OfNat.ofNatProof uses:
Eq.mpr,HAdd.hAdd,eq_of_heq,HEq,Eq.refl,HEq.refl,Eq.symm,id,congrArg,sub_eq_add_neg, Hurwitz.toQuaternion_neg, Hurwitz.toQuaternion_add37 instances, coercions and auxiliary constants left out.
Tactic trace: 2 steps
Open to load the checked before-and-after goal states.
- instance
Hurwitz.(instance at line 192)line 192 source - lemma
Hurwitz.preserves_nsmulRecline 195 sourcestandard axioms: propext what this means
Statement uses:
Zero,Add,AddMonoid,Eq,OfNat.ofNat,HAdd.hAdd,Nat,nsmulRec,HSMul.hSMulProof uses:
Nat.recAux,Eq.mpr,id,congrArg,nsmulRec.eq_1,zero_smul,Eq.refl,Nat.succ,nsmulRec.eq_2,add_nsmul,one_nsmul28 instances, coercions and auxiliary constants left out.
Tactic trace: 3 steps
Open to load the checked before-and-after goal states.
- lemma
Hurwitz.toQuaternion_nsmulline 202 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses: Hurwitz,
Nat,Eq,Quaternion,Real, Hurwitz.toQuaternion,HSMul.hSMul,Neg.neg,OfNat.ofNatProof uses: Hurwitz.preserves_nsmulRec, Hurwitz.toQuaternion_zero, Hurwitz.toQuaternion_add
26 instances, coercions and auxiliary constants left out.
- instance
Hurwitz.(instance at line 206)line 206 source - lemma
Hurwitz.preserves_zsmulline 209 sourceno axioms what this means
Statement uses:
Zero,Add,Neg,SMul,Nat,SubNegMonoid,Eq,HSMul.hSMul,Neg.neg,Int,zsmulRecProof uses:
Int.ofNat,Eq.mpr,id,congrArg,zsmulRec.eq_1,Int.ofNat_eq_natCast,natCast_zsmul,Eq.refl,Eq.symm,Int.negSucc,Nat.succ,zsmulRec.eq_2,HAdd.hAdd,OfNat.ofNat,negSucc_zsmul21 instances, coercions and auxiliary constants left out.
Tactic trace: 3 steps
Open to load the checked before-and-after goal states.
- lemma
Hurwitz.toQuaternion_zsmulline 220 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses: Hurwitz,
Int,Eq,Quaternion,Real, Hurwitz.toQuaternion,HSMul.hSMul,Neg.neg,OfNat.ofNatProof uses: Hurwitz.preserves_zsmul, Hurwitz.toQuaternion_nsmul, Hurwitz.toQuaternion_neg
28 instances, coercions and auxiliary constants left out.
- def
Hurwitz.mulMultiplicationz*wof two Hurwitz numbers line 242 sourceSource documentation
Multiplication
z*wof two Hurwitz numbersno axioms what this means
Statement uses: Hurwitz
Proof uses:
Hurwitz.mk,HSub.hSub,Int,HAdd.hAdd,HMul.hMul,Hurwitz.re,Hurwitz.imO,Hurwitz.imI,Hurwitz.imOI6 instances, coercions and auxiliary constants left out.
def mul (z w : 𝓞) : 𝓞 where …
- instance
Hurwitz.(instance at line 253)line 253 sourceSource documentation
Notation
*for multiplicationinstance : Mul 𝓞 := ⟨mul⟩
Mentions: Hurwitz.mul
- lemma
Hurwitz.mul_rehowmulreacts withreandimline 256 sourceSource comment
how `mul` reacts with `re` and `im`no axioms what this means
Statement uses: Hurwitz,
Eq,Int,Hurwitz.re,HMul.hMul,HSub.hSub,HAdd.hAdd,Hurwitz.imO,Hurwitz.imI,Hurwitz.imOIProof uses:
rfl9 instances, coercions and auxiliary constants left out.
@[simp] lemma mul_re (z w : 𝓞) : re (z * w) = z.re * w.re - z.imO * w.imO - z.imI * w.imO - z.imI * w.imI + z.imI * w.imOI - z.imOI * w.imOI := rfl - lemma
Hurwitz.mul_im_oline 260 sourceno axioms what this means
Statement uses: Hurwitz,
Eq,Int,Hurwitz.imO,HMul.hMul,HAdd.hAdd,HSub.hSub,Hurwitz.re,Hurwitz.imOI,Hurwitz.imIProof uses:
rfl9 instances, coercions and auxiliary constants left out.
- lemma
Hurwitz.mul_im_iline 264 sourceno axioms what this means
Statement uses: Hurwitz,
Eq,Int,Hurwitz.imI,HMul.hMul,HSub.hSub,HAdd.hAdd,Hurwitz.re,Hurwitz.imO,Hurwitz.imOIProof uses:
rfl9 instances, coercions and auxiliary constants left out.
- lemma
Hurwitz.mul_im_oiline 268 sourceno axioms what this means
Statement uses: Hurwitz,
Eq,Int,Hurwitz.imOI,HMul.hMul,HSub.hSub,HAdd.hAdd,Hurwitz.re,Hurwitz.imI,Hurwitz.imOProof uses:
rfl9 instances, coercions and auxiliary constants left out.
- lemma
Hurwitz.toQuaternion_mulline 273 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses: Hurwitz,
Eq,Quaternion,Real, Hurwitz.toQuaternion,HMul.hMul,Neg.neg,OfNat.ofNatProof uses:
Quaternion.ext,Eq.mpr,QuaternionAlgebra.re,HSub.hSub,HAdd.hAdd,Hurwitz.re,Hurwitz.imO,Hurwitz.imI,Hurwitz.imOI,Inv.inv,id,congr,congrArg,QuaternionAlgebra.mk,QuaternionAlgebra,Eq.trans,Int,Int.cast_sub,Int.cast_add,Int.cast_muland 84 more110 instances, coercions and auxiliary constants left out.
Tactic trace: 3 steps
Open to load the checked before-and-after goal states.
- lemma
Hurwitz.o_mul_iline 277 sourcestandard axioms: propext what this means
Statement uses:
Eq, Hurwitz,HMul.hMul,Hurwitz.mk,OfNat.ofNat,IntProof uses:
Hurwitz.ext,of_eq_true,Hurwitz.re,Eq.trans,True,congrFun',congrArg,HSub.hSub,HAdd.hAdd,Hurwitz.imO,Hurwitz.imI,Hurwitz.imOI,congr,MulZeroClass.mul_zero,sub_self,mul_one,add_zero,eq_self,zero_add,sub_zero28 instances, coercions and auxiliary constants left out.
Tactic trace: 2 steps
Open to load the checked before-and-after goal states.
- instance
Hurwitz.(instance at line 282)line 282 source - lemma
Hurwitz.preserves_npowRecline 284 sourceno axioms what this means
Statement uses:
One,Mul,Monoid,Eq,OfNat.ofNat,HMul.hMul,Nat,npowRec,HPow.hPowProof uses:
Nat.recAux,Eq.mpr,id,congrArg,npowRec.eq_1,pow_zero,Eq.refl,HAdd.hAdd,Nat.succ,npowRec.eq_2,pow_succ21 instances, coercions and auxiliary constants left out.
Tactic trace: 3 steps
Open to load the checked before-and-after goal states.
- lemma
Hurwitz.toQuaternion_npowline 291 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses: Hurwitz,
Nat,Eq,Quaternion,Real, Hurwitz.toQuaternion,HPow.hPow,Neg.neg,OfNat.ofNatProof uses: Hurwitz.preserves_npowRec, Hurwitz.toQuaternion_one, Hurwitz.toQuaternion_mul
24 instances, coercions and auxiliary constants left out.
- instance
Hurwitz.(instance at line 294)line 294 source - lemma
Hurwitz.preserves_unaryCastline 296 sourcestandard axioms: propext what this means
Statement uses:
One,Zero,Add,AddMonoidWithOne,Eq,OfNat.ofNat,HAdd.hAdd,Nat,Nat.unaryCastProof uses:
Nat.recAux,Eq.mpr,id,congrArg,Nat.unaryCast.eq_1,Nat.cast_zero,Eq.refl,Nat.succ,Nat.unaryCast.eq_2,Nat.cast_add,Nat.cast_one26 instances, coercions and auxiliary constants left out.
Tactic trace: 3 steps
Open to load the checked before-and-after goal states.
- lemma
Hurwitz.toQuaternion_natCastline 304 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Eq,Quaternion,Real, Hurwitz.toQuaternion, Hurwitz,Neg.neg,OfNat.ofNatProof uses: Hurwitz.preserves_unaryCast, Hurwitz.toQuaternion_zero, Hurwitz.toQuaternion_one, Hurwitz.toQuaternion_add
24 instances, coercions and auxiliary constants left out.
- instance
Hurwitz.(instance at line 307)line 307 source - lemma
Hurwitz.Int.castDef_ofNatline 309 sourceno axioms what this means
Statement uses:
NatCast,Neg,Nat,Eq,Int.castDef,Int.ofNatProof uses:
rfl1 instances, coercions and auxiliary constants left out.
- lemma
Hurwitz.Int.castDef_negSuccline 312 sourceno axioms what this means
Statement uses:
NatCast,Neg,Nat,Eq,Int.castDef,Int.negSucc,Neg.neg,HAdd.hAdd,OfNat.ofNatProof uses:
rfl4 instances, coercions and auxiliary constants left out.
- lemma
Hurwitz.preserves_castDefline 315 sourcestandard axioms: propext what this means
Statement uses:
NatCast,Neg,AddGroupWithOne,Nat,Eq,Neg.neg,Int,Int.castDefProof uses:
Int.ofNat,Eq.mpr,id,congrArg, Hurwitz.Int.castDef_ofNat,Int.ofNat_eq_natCast,Int.cast_natCast,Eq.refl,Eq.symm,Int.negSucc,HAdd.hAdd,OfNat.ofNat, Hurwitz.Int.castDef_negSucc,Int.cast_negSucc26 instances, coercions and auxiliary constants left out.
Tactic trace: 3 steps
Open to load the checked before-and-after goal states.
- lemma
Hurwitz.toQuaternion_intCastline 323 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Int,Eq,Quaternion,Real, Hurwitz.toQuaternion, Hurwitz,Neg.neg,OfNat.ofNatProof uses: Hurwitz.preserves_castDef, Hurwitz.toQuaternion_natCast, Hurwitz.toQuaternion_neg
21 instances, coercions and auxiliary constants left out.
- instance
Hurwitz.ringline 326 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Ring, HurwitzProof uses:
Function.Injective.ring,Quaternion,Real, Hurwitz.toQuaternion, Hurwitz.toQuaternion_injective,Neg.neg,OfNat.ofNat, Hurwitz.toQuaternion_zero, Hurwitz.toQuaternion_one, Hurwitz.toQuaternion_add, Hurwitz.toQuaternion_mul, Hurwitz.toQuaternion_neg, Hurwitz.toQuaternion_sub,Nat, Hurwitz.toQuaternion_nsmul,Int, Hurwitz.toQuaternion_zsmul, Hurwitz.toQuaternion_npow, Hurwitz.toQuaternion_natCast, Hurwitz.toQuaternion_intCast18 instances, coercions and auxiliary constants left out.
- lemma
Hurwitz.natCast_reline 341 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Eq,Int,Hurwitz.re, HurwitzProof uses:
Nat.recAux,of_eq_true,OfNat.ofNat,Eq.trans,True,congr,congrArg,Nat.cast_zero,CharP.cast_eq_zero,eq_self,Eq.mpr,HAdd.hAdd,id,Nat.cast_add,Nat.cast_one45 instances, coercions and auxiliary constants left out.
Tactic trace: 3 steps
Open to load the checked before-and-after goal states.
- lemma
Hurwitz.natCast_im_oline 345 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Eq,Int,Hurwitz.imO, Hurwitz,OfNat.ofNatProof uses:
Nat.recAux,of_eq_true,Eq.trans,True,congrFun',congrArg,Nat.cast_zero,eq_self,Eq.mpr,HAdd.hAdd,id,Nat.cast_add,Nat.cast_one,add_zero23 instances, coercions and auxiliary constants left out.
Tactic trace: 3 steps
Open to load the checked before-and-after goal states.
- lemma
Hurwitz.natCast_im_iline 349 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Eq,Int,Hurwitz.imI, Hurwitz,OfNat.ofNatProof uses:
Nat.recAux,of_eq_true,Eq.trans,True,congrFun',congrArg,Nat.cast_zero,eq_self,Eq.mpr,HAdd.hAdd,id,Nat.cast_add,Nat.cast_one,add_zero23 instances, coercions and auxiliary constants left out.
Tactic trace: 3 steps
Open to load the checked before-and-after goal states.
- lemma
Hurwitz.natCast_im_oiline 353 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Nat,Eq,Int,Hurwitz.imOI, Hurwitz,OfNat.ofNatProof uses:
Nat.recAux,of_eq_true,Eq.trans,True,congrFun',congrArg,Nat.cast_zero,eq_self,Eq.mpr,HAdd.hAdd,id,Nat.cast_add,Nat.cast_one,add_zero23 instances, coercions and auxiliary constants left out.
Tactic trace: 3 steps
Open to load the checked before-and-after goal states.
- lemma
Hurwitz.intCast_reline 358 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Int,Eq,Hurwitz.re, HurwitzProof uses:
Nat,Int.ofNat,of_eq_true,Eq.trans,True,congrFun',congrArg,Int.cast_natCast, Hurwitz.natCast_re,eq_self,Eq.symm,Int.negSucc,HAdd.hAdd,Neg.neg,OfNat.ofNat,congr,Nat.succ,Nat.cast_add,Nat.cast_one,neg_add_revand 4 more39 instances, coercions and auxiliary constants left out.
Tactic trace: 3 steps
Open to load the checked before-and-after goal states.
- lemma
Hurwitz.intCast_im_oline 362 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Int,Eq,Hurwitz.imO, Hurwitz,OfNat.ofNatProof uses:
Nat,Int.ofNat,of_eq_true,Eq.trans,True,congrFun',congrArg,Int.cast_natCast, Hurwitz.natCast_im_o,eq_self,Eq.symm,Int.negSucc,HAdd.hAdd,Neg.neg,Nat.succ,Nat.cast_add,Nat.cast_one,neg_add_rev,Int.cast_add,congrand 5 more43 instances, coercions and auxiliary constants left out.
Tactic trace: 3 steps
Open to load the checked before-and-after goal states.
- lemma
Hurwitz.intCast_im_iline 366 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Int,Eq,Hurwitz.imI, Hurwitz,OfNat.ofNatProof uses:
Nat,Int.ofNat,of_eq_true,Eq.trans,True,congrFun',congrArg,Int.cast_natCast, Hurwitz.natCast_im_i,eq_self,Eq.symm,Int.negSucc,HAdd.hAdd,Neg.neg,Nat.succ,Nat.cast_add,Nat.cast_one,neg_add_rev,Int.cast_add,congrand 5 more43 instances, coercions and auxiliary constants left out.
Tactic trace: 3 steps
Open to load the checked before-and-after goal states.
- lemma
Hurwitz.intCast_im_oiline 370 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Int,Eq,Hurwitz.imOI, Hurwitz,OfNat.ofNatProof uses:
Nat,Int.ofNat,of_eq_true,Eq.trans,True,congrFun',congrArg,Int.cast_natCast, Hurwitz.natCast_im_oi,eq_self,Eq.symm,Int.negSucc,HAdd.hAdd,Neg.neg,Nat.succ,Nat.cast_add,Nat.cast_one,neg_add_rev,Int.cast_add,congrand 5 more43 instances, coercions and auxiliary constants left out.
Tactic trace: 3 steps
Open to load the checked before-and-after goal states.
- instance
Hurwitz.starRingConjugate; sends $a+bi+cj+dk$ to $a-bi-cj-dk$ line 377 sourceSource documentation
Conjugate; sends $a+bi+cj+dk$ to $a-bi-cj-dk$.
standard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
StarRing, HurwitzProof uses:
StarRing.mk,StarMul.mk,InvolutiveStar.mk,Star.mk,Hurwitz.mk,HSub.hSub,Int,Hurwitz.re,Hurwitz.imO,Hurwitz.imOI,Neg.neg,Hurwitz.imI16 instances, coercions and auxiliary constants left out.
Tactic trace: 9 steps
Open to load the checked before-and-after goal states.
instance starRing : StarRing 𝓞 where …
- lemma
Hurwitz.star_reline 383 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses: Hurwitz,
Eq,Int,Hurwitz.re,Star.star,HSub.hSub,Hurwitz.imO,Hurwitz.imOIProof uses:
rfl22 instances, coercions and auxiliary constants left out.
- lemma
Hurwitz.star_im_oline 384 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses: Hurwitz,
Eq,Int,Hurwitz.imO,Star.star,Neg.negProof uses:
rfl21 instances, coercions and auxiliary constants left out.
- lemma
Hurwitz.star_im_iline 385 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses: Hurwitz,
Eq,Int,Hurwitz.imI,Star.star,Neg.negProof uses:
rfl21 instances, coercions and auxiliary constants left out.
- lemma
Hurwitz.star_im_oiline 386 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses: Hurwitz,
Eq,Int,Hurwitz.imOI,Star.star,Neg.negProof uses:
rfl21 instances, coercions and auxiliary constants left out.
- lemma
Hurwitz.toQuaternion_starline 389 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses: Hurwitz,
Eq,Quaternion,Real, Hurwitz.toQuaternion,Star.star,Neg.neg,OfNat.ofNatProof uses:
Quaternion.ext,Eq.mpr,QuaternionAlgebra.re,HSub.hSub,Int,Hurwitz.re,Hurwitz.imO,Hurwitz.imOI,HMul.hMul,Inv.inv,id,congrArg,Quaternion.re_star,QuaternionAlgebra.mk,HAdd.hAdd,Hurwitz.imI,inferInstance,CommGroupWithZero,Mathlib.Tactic.FieldSimp.eq_eq_cancel_eq,Mathlib.Tactic.FieldSimp.NF.evaland 87 more132 instances, coercions and auxiliary constants left out.
Tactic trace: 5 steps
Open to load the checked before-and-after goal states.
- lemma
Hurwitz.star_eqline 397 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses: Hurwitz,
Eq,Star.star,Function.comp,Quaternion,Real, Hurwitz.fromQuaternion,Neg.neg,OfNat.ofNat, Hurwitz.toQuaternionProof uses:
Eq.mpr,id,congrArg, Hurwitz.leftInverse_fromQuaternion_toQuaternion,Eq.refl35 instances, coercions and auxiliary constants left out.
Tactic trace: 3 steps
Open to load the checked before-and-after goal states.
- instance
Hurwitz.(instance at line 401)line 401 source - def
Hurwitz.normThe norm of a Hurwitz integer: the integerz * star z, equivalently the squared absolute value of the corresponding quaternion line 406 sourceSource documentation
The norm of a Hurwitz integer: the integer
z * star z, equivalently the squared absolute value of the corresponding quaternion.no axioms what this means
Statement uses: Hurwitz,
IntProof uses:
HAdd.hAdd,HSub.hSub,HMul.hMul,Hurwitz.re,Hurwitz.imO,Hurwitz.imI,Hurwitz.imOI6 instances, coercions and auxiliary constants left out.
def norm (z : 𝓞) : ℤ := …
- lemma
Hurwitz.norm_eq_mul_conjline 410 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses: Hurwitz,
Eq, Hurwitz.norm,HMul.hMul,Star.starProof uses:
Hurwitz.ext,Eq.mpr,Int,Hurwitz.re,HAdd.hAdd,HSub.hSub,Hurwitz.imO,Hurwitz.imI,Hurwitz.imOI,Neg.neg,id,congrFun',congrArg, Hurwitz.intCast_re,Mathlib.Tactic.Ring.of_eq,HPow.hPow,Nat,Nat.rawCast,Int.rawCast,inferInstanceand 46 more63 instances, coercions and auxiliary constants left out.
Tactic trace: 3 steps
Open to load the checked before-and-after goal states.
- lemma
Hurwitz.coe_normline 414 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses: Hurwitz,
Eq,Real, Hurwitz.norm,HAdd.hAdd,HPow.hPow,Nat,HSub.hSub,Hurwitz.re,HMul.hMul,Inv.inv,OfNat.ofNat,Hurwitz.imO,Hurwitz.imOI,Hurwitz.imIProof uses:
Eq.mpr,Int,id,congrArg,Hurwitz.norm.eq_1,inferInstance,CommGroupWithZero,GroupWithZero,Mathlib.Tactic.FieldSimp.eq_eq_cancel_eq,Mathlib.Tactic.FieldSimp.NF.eval,Mathlib.Tactic.FieldSimp.NF.cons,Prod.mk,Neg.neg,List.nil,Prod,Mathlib.Tactic.FieldSimp.eq_mul_of_eq_eq_eq_mul,rfl,Eq.trans,Eq.refl,Mathlib.Tactic.FieldSimp.NF.atom_eq_evaland 94 more121 instances, coercions and auxiliary constants left out.
Tactic trace: 4 steps
Open to load the checked before-and-after goal states.
- lemma
Hurwitz.norm_zeroline 425 sourcestandard axioms: propext what this means
Statement uses:
Eq,Int, Hurwitz.norm,OfNat.ofNat, HurwitzProof uses:
of_eq_true,Eq.trans,True,congrFun',congrArg,HAdd.hAdd,HSub.hSub,HMul.hMul,Hurwitz.re,Hurwitz.imO,Hurwitz.imI,Hurwitz.imOI,congr,MulZeroClass.mul_zero,add_zero,sub_self,eq_self22 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
- lemma
Hurwitz.norm_oneline 427 sourcestandard axioms: propext what this means
Statement uses:
Eq,Int, Hurwitz.norm,OfNat.ofNat, HurwitzProof uses:
of_eq_true,Eq.trans,True,congrFun',congrArg,HAdd.hAdd,HSub.hSub,HMul.hMul,Hurwitz.re,Hurwitz.imO,Hurwitz.imI,Hurwitz.imOI,congr,mul_one,MulZeroClass.mul_zero,add_zero,sub_zero,sub_self,eq_self29 instances, coercions and auxiliary constants left out.
Tactic trace: 1 steps
Open to load the checked before-and-after goal states.
- lemma
Hurwitz.norm_mulline 429 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses: Hurwitz,
Eq,Int, Hurwitz.norm,HMul.hMulProof uses:
Eq.mpr,id,congrArg,Eq.symm,propext,Int.cast_inj,Star.star,congrFun', Hurwitz.norm_eq_mul_conj,StarMul.star_mul,mul_assoc,Int.cast_comm,Int.cast_mul,Eq.refl32 instances, coercions and auxiliary constants left out.
Tactic trace: 4 steps
Open to load the checked before-and-after goal states.
- lemma
Hurwitz.norm_nonnegline 435 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses: Hurwitz,
LE.le,Int,OfNat.ofNat, Hurwitz.normProof uses:
Eq.mpr,Real,id,Eq,congrArg,Eq.symm,propext,Int.cast_nonneg_iff,HAdd.hAdd,HPow.hPow,Nat,HSub.hSub,Hurwitz.re,HMul.hMul,Inv.inv,Hurwitz.imO,Hurwitz.imOI,Hurwitz.imI, Hurwitz.coe_norm,add_nonnegand 2 more69 instances, coercions and auxiliary constants left out.
Tactic trace: 2 steps
Open to load the checked before-and-after goal states.
- lemma
Hurwitz.norm_eq_zeroline 439 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses: Hurwitz,
Iff,Eq,Int, Hurwitz.norm,OfNat.ofNatProof uses:
Iff.intro,HPow.hPow,Nat,HSub.hSub,Hurwitz.imO,Hurwitz.imOI,eq_zero_of_add_nonpos_right,HAdd.hAdd,HMul.hMul,Hurwitz.re,Hurwitz.imI,add_nonneg,Even.pow_nonneg,even_two_mul,Eq.le,Eq.mp,Real,inferInstance,GroupWithZero,CommGroupWithZeroand 76 more145 instances, coercions and auxiliary constants left out.
Tactic trace: 30 steps
Open to load the checked before-and-after goal states.
- lemma
Hurwitz.normSq_toQuaternionline 464 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses: Hurwitz,
Eq,Real,MonoidWithZeroHom,Quaternion,Neg.neg,OfNat.ofNat,Quaternion.normSq, Hurwitz.toQuaternion, Hurwitz.normProof uses:
Quaternion.coe_injective,Eq.mpr,HMul.hMul,Star.star,id,congrArg,Eq.symm,Quaternion.self_mul_star, Hurwitz.toQuaternion_star, Hurwitz.toQuaternion_mul, Hurwitz.norm_eq_mul_conj, Hurwitz.toQuaternion_intCast,Quaternion.coe_intCast,Eq.refl69 instances, coercions and auxiliary constants left out.
Tactic trace: 2 steps
Open to load the checked before-and-after goal states.
- lemma
Hurwitz.auxline 470 source - lemma
Hurwitz.aux2line 476 source - lemma
Hurwitz.exists_nearline 495 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Quaternion,Real,Exists, Hurwitz,LT.lt,Dist.dist, Hurwitz.toQuaternion,OfNat.ofNatProof uses:
Eq,Inv.inv,Nat,HPow.hPow,Mathlib.Meta.NormNum.isNNRat_eq_true,Mathlib.Meta.NormNum.isNNRat_inv_pos,Mathlib.Meta.NormNum.IsNat.to_isNNRat,Mathlib.Meta.NormNum.isNat_ofNat,Eq.refl,Mathlib.Meta.NormNum.instAtLeastTwo,Mathlib.Meta.NormNum.isNNRat_pow,Mathlib.Meta.NormNum.one_natPow,Mathlib.Meta.NormNum.IsNatPowT.run,Mathlib.Meta.NormNum.IsNatPowT.bit0,LE.le,HSub.hSub,round,Eq.mpr,id,congrArgand 92 more179 instances, coercions and auxiliary constants left out.
Tactic trace: 59 steps
Open to load the checked before-and-after goal states.
- lemma
Hurwitz.quot_remline 541 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses: Hurwitz,
Ne,OfNat.ofNat,Exists,And,Eq,HAdd.hAdd,HMul.hMul,LT.lt,Int, Hurwitz.normProof uses:
Quaternion,Real, Hurwitz.toQuaternion,Neg.neg,Iff.mpr, Hurwitz.toQuaternion_ne_zero_iff,HDiv.hDiv,Dist.dist, Hurwitz.exists_near,Exists.intro,HSub.hSub,And.intro,Eq.symm,add_sub_cancel,Eq.mpr,id,congrArg,propext,Int.cast_lt,MonoidWithZeroHomand 18 more123 instances, coercions and auxiliary constants left out.
Tactic trace: 22 steps
Open to load the checked before-and-after goal states.
- lemma
Hurwitz.left_ideal_princline 565 sourcestandard axioms: Classical.choice, Quot.sound, propext what this means
Statement uses:
Submodule, Hurwitz,Exists,Eq,Submodule.span,Singleton.singleton,SetProof uses:
dite,Bot.bot,Exists.intro,OfNat.ofNat,Eq.mpr,id,congrArg,propext,Eq.comm,of_eq_true,Eq.trans,True,eq_self,Not,Subtype,And,Membership.mem,Ne,Nonempty,Submodule.exists_mem_ne_zero_of_ne_botand 38 more68 instances, coercions and auxiliary constants left out.
Tactic trace: 38 steps
Open to load the checked before-and-after goal states.