Trait alga::general::AbstractQuasigroup
source · pub trait AbstractQuasigroup<O: Operator>: PartialEq + AbstractMagma<O> + TwoSidedInverse<O> {
// Provided methods
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 { ... }
}
Expand description
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§
sourcefn prop_inv_is_latin_square_approx(args: (Self, Self)) -> boolwhere
Self: RelativeEq,
fn prop_inv_is_latin_square_approx(args: (Self, Self)) -> boolwhere
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
sourcefn prop_inv_is_latin_square(args: (Self, Self)) -> boolwhere
Self: Eq,
fn prop_inv_is_latin_square(args: (Self, Self)) -> boolwhere
Self: Eq,
Returns true
if latin squareness holds for the given arguments.
a == a / b * b && a == a * b / b
Object Safety§
This trait is not object safe.