# [−][src]Trait alga::general::AbstractQuasigroup

```pub trait AbstractQuasigroup<O: Operator>: PartialEq + AbstractMagma<O> + TwoSidedInverse<O> {
fn prop_inv_is_latin_square_approx(args: (Self, Self)) -> bool    where        Self: RelativeEq,
{ ... }
fn prop_inv_is_latin_square(args: (Self, Self)) -> bool    where        Self: Eq,
{ ... }
}```

A quasigroup is a magma which that has the divisibility property (or Latin square property). A set with a closed binary operation with the divisibility property.

Divisibility is a weak form of right and left invertibility.

# Divisibility or Latin square property

``````∀ a, b ∈ Self, ∃! r, l ∈ Self such that l ∘ a = b and a ∘ r = b
``````

The solution to these equations can be written as

``````r = a \ b and l = b / a
``````

where "" and "/" are respectively the left and right division.

## Provided methods

### `fn prop_inv_is_latin_square_approx(args: (Self, Self)) -> bool where    Self: RelativeEq, `

Returns `true` if latin squareness holds for the given arguments. Approximate equality is used for verifications.

``````a ~= a / b ∘ b && a ~= a ∘ b / b
``````

### `fn prop_inv_is_latin_square(args: (Self, Self)) -> bool where    Self: Eq, `

Returns `true` if latin squareness holds for the given arguments.

``````a == a / b * b && a == a * b / b
``````