Struct algae_rs::magma::Quasigroup
source · pub struct Quasigroup<'a, T> { /* private fields */ }Expand description
A set equipped with a cancellative binary operation.
Quasigroup is a representation of the abstract algebraic quasigroup.
Cancellativity (ie. the Latin Square property) is required of its binary
operation. Its construction involves a set (specifically an AlgaeSet)
and a BinaryOperation with the aforementioned properties.
Examples
use algae_rs::algaeset::AlgaeSet;
use algae_rs::mapping::{BinaryOperation, CancellativeOperation};
use algae_rs::magma::{Magmoid, Quasigroup};
let mut add = CancellativeOperation::new(&|a, b| a + b);
let mut quasigroup = Quasigroup::new(
AlgaeSet::<i32>::all(),
&mut add
);
let sum = quasigroup.with(1, 2);
assert!(sum.is_ok());
assert!(sum.unwrap() == 3);Implementations§
source§impl<'a, T: Copy + PartialEq> Quasigroup<'a, T>
impl<'a, T: Copy + PartialEq> Quasigroup<'a, T>
pub fn new(aset: AlgaeSet<T>, binop: &'a mut dyn BinaryOperation<T>) -> Self
Trait Implementations§
source§impl<'a, T> Into<Magma<'a, T>> for Quasigroup<'a, T>
impl<'a, T> Into<Magma<'a, T>> for Quasigroup<'a, T>
source§impl<'a, T: Copy + PartialEq> Into<Quasigroup<'a, T>> for Loop<'a, T>
impl<'a, T: Copy + PartialEq> Into<Quasigroup<'a, T>> for Loop<'a, T>
source§fn into(self) -> Quasigroup<'a, T>
fn into(self) -> Quasigroup<'a, T>
Converts this type into the (usually inferred) input type.