# [−][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

Loading content...

## Implementations on Foreign Types

### `impl<N> AbstractQuasigroup<Multiplicative> for Complex<N> where
N: Num + Clone + ClosedNeg,` [src]

### `impl<N> AbstractQuasigroup<Additive> for Complex<N> where
N: AbstractGroupAbelian<Additive>,` [src]

### `impl AbstractQuasigroup<Additive> for i8`[src]

### `impl AbstractQuasigroup<Additive> for i16`[src]

### `impl AbstractQuasigroup<Additive> for i32`[src]

### `impl AbstractQuasigroup<Additive> for i64`[src]

### `impl AbstractQuasigroup<Additive> for isize`[src]

### `impl AbstractQuasigroup<Additive> for f32`[src]

### `impl AbstractQuasigroup<Additive> for f64`[src]

### `impl AbstractQuasigroup<Multiplicative> for f32`[src]

### `impl AbstractQuasigroup<Multiplicative> for f64`[src]

Loading content...

## Implementors

### `impl<O: Operator> AbstractQuasigroup<O> for Id<O>`[src]

Loading content...

# Help

## Keyboard Shortcuts

`?`
  Show this help dialog
`S`
  Focus the search field
`↑`
  Move up in search results
`↓`
  Move down in search results
`↹`
  Switch tab
`⏎`
  Go to active search result
`+`
  Expand all sections
`-`
  Collapse all sections

## Search Tricks

Prefix searches with a type followed by a colon (e.g., `fn:`) to restrict the search to a given type.

Accepted types are: `fn`, `mod`, `struct`, `enum`, `trait`, `type`, `macro`, and `const`.

Search functions by type signature (e.g., `vec -> usize` or `* -> vec`)

Search multiple things at once by splitting your query with comma (e.g., `str,u8` or `String,struct:Vec,test`)