# Wild quasigroups
```agda
module structured-types.wild-quasigroups where
```
<details><summary>Imports</summary>
```agda
open import foundation.automorphisms
open import foundation.binary-equivalences
open import foundation.dependent-pair-types
open import foundation.equivalences
open import foundation.universe-levels
open import structured-types.magmas
```
</details>
## Idea
A wild quasigroup is a type `A` equipped with a binary equivalence
`μ : A → A → A`.
## Definition
```agda
Wild-Quasigroup : (l : Level) → UU (lsuc l)
Wild-Quasigroup l = Σ (Magma l) (λ M → is-binary-equiv (mul-Magma M))
module _
{l : Level} (A : Wild-Quasigroup l)
where
magma-Wild-Quasigroup : Magma l
magma-Wild-Quasigroup = pr1 A
type-Wild-Quasigroup : UU l
type-Wild-Quasigroup = type-Magma magma-Wild-Quasigroup
mul-Wild-Quasigroup : (x y : type-Wild-Quasigroup) → type-Wild-Quasigroup
mul-Wild-Quasigroup = mul-Magma magma-Wild-Quasigroup
mul-Wild-Quasigroup' : (x y : type-Wild-Quasigroup) → type-Wild-Quasigroup
mul-Wild-Quasigroup' x y = mul-Wild-Quasigroup y x
is-binary-equiv-mul-Wild-Quasigroup :
is-binary-equiv mul-Wild-Quasigroup
is-binary-equiv-mul-Wild-Quasigroup = pr2 A
is-equiv-mul-Wild-Quasigroup :
(x : type-Wild-Quasigroup) → is-equiv (mul-Wild-Quasigroup x)
is-equiv-mul-Wild-Quasigroup = pr2 is-binary-equiv-mul-Wild-Quasigroup
equiv-mul-Wild-Quasigroup : type-Wild-Quasigroup → Aut type-Wild-Quasigroup
pr1 (equiv-mul-Wild-Quasigroup x) = mul-Wild-Quasigroup x
pr2 (equiv-mul-Wild-Quasigroup x) = is-equiv-mul-Wild-Quasigroup x
is-equiv-mul-Wild-Quasigroup' :
(x : type-Wild-Quasigroup) → is-equiv (mul-Wild-Quasigroup' x)
is-equiv-mul-Wild-Quasigroup' = pr1 is-binary-equiv-mul-Wild-Quasigroup
equiv-mul-Wild-Quasigroup' : type-Wild-Quasigroup → Aut type-Wild-Quasigroup
pr1 (equiv-mul-Wild-Quasigroup' x) = mul-Wild-Quasigroup' x
pr2 (equiv-mul-Wild-Quasigroup' x) = is-equiv-mul-Wild-Quasigroup' x
```