Lean4
instance (R : Type*) [Rack R] : DivInvMonoid (EnvelGroup R)
where
mul a
b :=
Quotient.liftOn₂ a b (fun a b => ⟦PreEnvelGroup.mul a b⟧) fun _ _ _ _ ⟨ha⟩ ⟨hb⟩ =>
Quotient.sound (PreEnvelGroupRel'.congr_mul ha hb).rel
one := ⟦unit⟧
inv
a :=
Quotient.liftOn a (fun a => ⟦PreEnvelGroup.inv a⟧) fun _ _ ⟨ha⟩ =>
Quotient.sound (PreEnvelGroupRel'.congr_inv ha).rel
mul_assoc a b c := Quotient.inductionOn₃ a b c fun a b c => Quotient.sound (PreEnvelGroupRel'.assoc a b c).rel
one_mul a := Quotient.inductionOn a fun a => Quotient.sound (PreEnvelGroupRel'.one_mul a).rel
mul_one a := Quotient.inductionOn a fun a => Quotient.sound (PreEnvelGroupRel'.mul_one a).rel