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

fn prop_inv_is_latin_square_approx(args: (Self, Self)) -> bool where
    Self: RelativeEq
[src]

fn prop_inv_is_latin_square(args: (Self, Self)) -> bool where
    Self: Eq
[src]

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

fn prop_inv_is_latin_square_approx(args: (Self, Self)) -> bool where
    Self: RelativeEq
[src]

fn prop_inv_is_latin_square(args: (Self, Self)) -> bool where
    Self: Eq
[src]

impl AbstractQuasigroup<Additive> for i8[src]

fn prop_inv_is_latin_square_approx(args: (Self, Self)) -> bool where
    Self: RelativeEq
[src]

fn prop_inv_is_latin_square(args: (Self, Self)) -> bool where
    Self: Eq
[src]

impl AbstractQuasigroup<Additive> for i16[src]

fn prop_inv_is_latin_square_approx(args: (Self, Self)) -> bool where
    Self: RelativeEq
[src]

fn prop_inv_is_latin_square(args: (Self, Self)) -> bool where
    Self: Eq
[src]

impl AbstractQuasigroup<Additive> for i32[src]

fn prop_inv_is_latin_square_approx(args: (Self, Self)) -> bool where
    Self: RelativeEq
[src]

fn prop_inv_is_latin_square(args: (Self, Self)) -> bool where
    Self: Eq
[src]

impl AbstractQuasigroup<Additive> for i64[src]

fn prop_inv_is_latin_square_approx(args: (Self, Self)) -> bool where
    Self: RelativeEq
[src]

fn prop_inv_is_latin_square(args: (Self, Self)) -> bool where
    Self: Eq
[src]

impl AbstractQuasigroup<Additive> for isize[src]

fn prop_inv_is_latin_square_approx(args: (Self, Self)) -> bool where
    Self: RelativeEq
[src]

fn prop_inv_is_latin_square(args: (Self, Self)) -> bool where
    Self: Eq
[src]

impl AbstractQuasigroup<Additive> for f32[src]

fn prop_inv_is_latin_square_approx(args: (Self, Self)) -> bool where
    Self: RelativeEq
[src]

fn prop_inv_is_latin_square(args: (Self, Self)) -> bool where
    Self: Eq
[src]

impl AbstractQuasigroup<Additive> for f64[src]

fn prop_inv_is_latin_square_approx(args: (Self, Self)) -> bool where
    Self: RelativeEq
[src]

fn prop_inv_is_latin_square(args: (Self, Self)) -> bool where
    Self: Eq
[src]

impl AbstractQuasigroup<Multiplicative> for f32[src]

fn prop_inv_is_latin_square_approx(args: (Self, Self)) -> bool where
    Self: RelativeEq
[src]

fn prop_inv_is_latin_square(args: (Self, Self)) -> bool where
    Self: Eq
[src]

impl AbstractQuasigroup<Multiplicative> for f64[src]

fn prop_inv_is_latin_square_approx(args: (Self, Self)) -> bool where
    Self: RelativeEq
[src]

fn prop_inv_is_latin_square(args: (Self, Self)) -> bool where
    Self: Eq
[src]

Loading content...

Implementors

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

fn prop_inv_is_latin_square_approx(args: (Self, Self)) -> bool where
    Self: RelativeEq
[src]

fn prop_inv_is_latin_square(args: (Self, Self)) -> bool where
    Self: Eq
[src]

Loading content...