Canonical finGroup_law := Monoid.Law mulgA mul1g mulg1.Definition commute x y := x * y = y * x.

(* Specifications: *)
Lemma commute_refl x : commute x x.
Lemma commute_sym x y : commute x y -> commute y x.
Lemma commute1 x : commute x 1.
Lemma commuteM x y z : commute x y -> commute x z -> commute x (y * z).
Lemma mulVg : left_inverse 1 invg mulgT.
Lemma mulgV : right_inverse 1 invg mulgT.
Lemma mulKg : left_loop invg mulgT.
Lemma mulKVg : rev_left_loop invg mulgT.
Lemma mulgI : right_injective mulgT.
Lemma mulgK : right_loop invg mulgT.
Lemma mulgKV : rev_right_loop invg mulgT.
Lemma mulIg : left_injective mulgT.
Lemma commuteV x y : commute x y -> commute x y^-1.
Lemma conjgE x y : x ^ y = y^-1 * (x * y).
Lemma conjgC x y : x * y = y * x ^ y.
Lemma conjgCV x y : x * y = y ^ x^-1 * x.
Lemma conjg1 x : x ^ 1 = x.
Lemma conj1g x : 1 ^ x = 1.
Lemma conjMg x y z : (x * y) ^ z = x ^ z * y ^ z.
Lemma conjgM x y z : x ^ (y * z) = (x ^ y) ^ z.
Lemma conjVg x y : x^-1 ^ y = (x ^ y)^-1.
Lemma conjJg x y z : (x ^ y) ^ z = (x ^ z) ^ y ^ z.
Lemma conjgK : @right_loop T T invg conjg.
Lemma conjgKV : @rev_right_loop T T invg conjg.
Lemma conjg_inj : @left_injective T T T conjg.
Lemma commgEl x y : [~ x, y] = x^-1 * x ^ y.
Lemma commgEr x y : [~ x, y] = y^-1 ^ x * y.
Lemma commgC x y : x * y = y * x * [~ x, y].
Lemma commgCV x y : x * y = [~ x^-1, y^-1] * (y * x).
Lemma conjRg x y z : [~ x, y] ^ z = [~ x ^ z, y ^ z].
Lemma invg_comm x y : [~ x, y]^-1 = [~ y, x].
Lemma commg1 x : [~ x, 1] = 1.
Lemma comm1g x : [~ 1, x] = 1.
Lemma commgg x : [~ x, x] = 1.
Lemma commgVg x : [~ x, x^-1] = 1.
Lemma commgXVg x n : [~ x, x ^- n] = 1.