QL75BDYCNRAF2NPJP3MJHUPM6JRIGJQWK2OG2NWKBOVZUZ75CHOAC exportproofDisjCommutative : (a, b : Boolean) -> a `disj` b = b `disj` aproofDisjCommutative False b =rewrite proofDisjLeftIdentity b inrewrite proofDisjRightIdentity b inReflproofDisjCommutative True b = rewrite proofDisjRightAnnihilation b in Reflpublic export[BooleanDisjMagma] Magma Boolean where(<>) = disj
exportproofDisjCommutative : (a, b : Boolean) -> a `disj` b = b `disj` aproofDisjCommutative False b =rewrite proofDisjLeftIdentity b inrewrite proofDisjRightIdentity b inReflproofDisjCommutative True b = rewrite proofDisjRightAnnihilation b in Refl
public export[BooleanDisjCommutativeMonoid] CommutativeMonoid Boolean using BooleanDisjCommutativeSemigroup BooleanDisjMonoid where
exportproofConjCommutative : (a, b : Boolean) -> a `conj` b = b `conj` aproofConjCommutative False b = rewrite proofConjRightAnnihilation b in ReflproofConjCommutative True b =rewrite proofConjLeftIdentity b inrewrite proofConjRightIdentity b inReflpublic export[BooleanConjMagma] Magma Boolean where(<>) = conjpublic export[BooleanConjCommutativeMagma] CommutativeMagma Boolean using BooleanConjMagma whereproofCommutativity = proofConjCommutative
exportproofConjCommutative : (a, b : Boolean) -> a `conj` b = b `conj` aproofConjCommutative False b = rewrite proofConjRightAnnihilation b in ReflproofConjCommutative True b =rewrite proofConjLeftIdentity b inrewrite proofConjRightIdentity b inRefl
public exportinterface (CommutativeMagma t, Semigroup t) => CommutativeSemigroup t wherepublic exportCommutativeMagma t => Semigroup t => CommutativeSemigroup t where
public exportinterface (CommutativeSemigroup t, Monoid t) => CommutativeMonoid t whereCommutativeSemigroup t => Monoid t => CommutativeMonoid t where
public exportinterface Magma t => CommutativeMagma t whereproofCommutativity : (x, y : t) -> x <> y = y <> x
public exportinterface (CommutativeMonoid t, Group t) => CommutativeGroup t wherepublic exportCommutativeMonoid t => Group t => CommutativeGroup t where