0 Op1 : Type -> Type A unary operation on a type, for instance `negate`.
Totality: total
Visibility: public export0 Op2 : Type -> Type A binary operation on a type, for instance `(+)`.
Totality: total
Visibility: public export0 Assoc : Op2 a -> Type Proposition that the given binary operation is associative.
Totality: total
Visibility: public export0 Associative : Op2 a -> Type Proposition that the given binary operation is associative.
Totality: total
Visibility: public export0 Commutative : Op2 a -> Type Proposition that the given binary operation is commutative.
Totality: total
Visibility: public export0 LeftNeutral : a -> Op2 a -> Type Proposition that `z` is a left neutral element for the
given binary operation.
Totality: total
Visibility: public export0 RightNeutral : a -> Op2 a -> Type Proposition that `z` is a right neutral element for the
given binary operation.
Totality: total
Visibility: public export0 LeftInverse : a -> Op1 a -> Op2 a -> Type Proposition that `i` is the left inverse of the given binary operation.
Totality: total
Visibility: public export0 RightInverse : a -> Op1 a -> Op2 a -> Type Proposition that `i` is the right inverse of the given binary operation.
Totality: total
Visibility: public exportrightNeutral : LeftNeutral z p -> Commutative p -> RightNeutral z p For a commutative operation, the left neutral element is also a
right neutral element
Totality: total
Visibility: exportleftNeutral : RightNeutral z p -> Commutative p -> LeftNeutral z p For a commutative operation, the right neutral element is also a
left neutral element
Totality: total
Visibility: exportrightInverse : LeftInverse z i p -> Commutative p -> RightInverse z i p For a commutative operation, the left inverse is also a right inverse.
Totality: total
Visibility: exportleftInverse : RightInverse z i p -> Commutative p -> LeftInverse z i p For a commutative operation, the right inverse is also a left inverse.
Totality: total
Visibility: exportrecord Semigroup : (a : Type) -> Op2 a -> Type A `Semigroup` is a set with a binary associative operation.
Totality: total
Visibility: public export
Constructor: MkSemigroup : Associative p -> Semigroup a p
Projection: .associative : Semigroup a p -> Associative p
.associative : Semigroup a p -> Associative p- Totality: total
Visibility: public export associative : Semigroup a p -> Associative p- Totality: total
Visibility: public export record CommutativeSemigroup : (a : Type) -> Op2 a -> Type Like a semigroup but the binary operation is also commutative.
Totality: total
Visibility: public export
Constructor: MkCommutativeSemigroup : Associative p -> Commutative p -> CommutativeSemigroup a p
Projections:
.associative : CommutativeSemigroup a p -> Associative p .commutative : CommutativeSemigroup a p -> Commutative p .sgrp : CommutativeSemigroup a p -> Semigroup a p A commutative semigroup is also a semigroup.
.associative : CommutativeSemigroup a p -> Associative p- Totality: total
Visibility: public export associative : CommutativeSemigroup a p -> Associative p- Totality: total
Visibility: public export .commutative : CommutativeSemigroup a p -> Commutative p- Totality: total
Visibility: public export commutative : CommutativeSemigroup a p -> Commutative p- Totality: total
Visibility: public export .sgrp : CommutativeSemigroup a p -> Semigroup a p A commutative semigroup is also a semigroup.
Totality: total
Visibility: exportrecord Monoid : (a : Type) -> a -> Op2 a -> Type A `Monoid` is a set with a binary associative operation and a
neutral element `z` for that operation.
Totality: total
Visibility: public export
Constructor: MkMonoid : Associative p -> RightNeutral z p -> LeftNeutral z p -> Monoid a z p
Projections:
.associative : Monoid a z p -> Associative p .leftNeutral : Monoid a z p -> LeftNeutral z p .rightNeutral : Monoid a z p -> RightNeutral z p .sgrp : Monoid a z p -> Semigroup a p A monoid is also a semigroup
.associative : Monoid a z p -> Associative p- Totality: total
Visibility: public export associative : Monoid a z p -> Associative p- Totality: total
Visibility: public export .rightNeutral : Monoid a z p -> RightNeutral z p- Totality: total
Visibility: public export rightNeutral : Monoid a z p -> RightNeutral z p- Totality: total
Visibility: public export .leftNeutral : Monoid a z p -> LeftNeutral z p- Totality: total
Visibility: public export leftNeutral : Monoid a z p -> LeftNeutral z p- Totality: total
Visibility: public export .sgrp : Monoid a z p -> Semigroup a p A monoid is also a semigroup
Totality: total
Visibility: exportrecord CommutativeMonoid : (a : Type) -> a -> Op2 a -> Type Like `Monoid` but with a binary operation that is also commutative.
Totality: total
Visibility: public export
Constructor: MkCommutativeMonoid : Associative p -> Commutative p -> LeftNeutral z p -> CommutativeMonoid a z p
Projections:
.associative : CommutativeMonoid a z p -> Associative p .commutative : CommutativeMonoid a z p -> Commutative p .csgrp : CommutativeMonoid a z p -> CommutativeSemigroup a p A commutative monoid is also a semigroup
.leftNeutral : CommutativeMonoid a z p -> LeftNeutral z p .mon : CommutativeMonoid a z p -> Monoid a z p A commutative monoid is also a monoid
.rightNeutral : CommutativeMonoid a z p -> RightNeutral z p For a commutative monoid, `z` is a right neutral element.
.sgrp : CommutativeMonoid a z p -> Semigroup a p A commutative monoid is also a semigroup
.associative : CommutativeMonoid a z p -> Associative p- Totality: total
Visibility: public export associative : CommutativeMonoid a z p -> Associative p- Totality: total
Visibility: public export .commutative : CommutativeMonoid a z p -> Commutative p- Totality: total
Visibility: public export commutative : CommutativeMonoid a z p -> Commutative p- Totality: total
Visibility: public export .leftNeutral : CommutativeMonoid a z p -> LeftNeutral z p- Totality: total
Visibility: public export leftNeutral : CommutativeMonoid a z p -> LeftNeutral z p- Totality: total
Visibility: public export mkCommutativeMonoid : ((u : a) -> (v : a) -> (w : a) -> u `p` (v `p` w) = (u `p` v) `p` w) -> ((u : a) -> (v : a) -> u `p` v = v `p` u) -> ((u : a) -> z `p` u = u) -> CommutativeMonoid a z p- Totality: total
Visibility: public export .sgrp : CommutativeMonoid a z p -> Semigroup a p A commutative monoid is also a semigroup
Totality: total
Visibility: export.csgrp : CommutativeMonoid a z p -> CommutativeSemigroup a p A commutative monoid is also a semigroup
Totality: total
Visibility: export.rightNeutral : CommutativeMonoid a z p -> RightNeutral z p For a commutative monoid, `z` is a right neutral element.
Totality: total
Visibility: export.mon : CommutativeMonoid a z p -> Monoid a z p A commutative monoid is also a monoid
Totality: total
Visibility: exportrecord Group : (a : Type) -> a -> Op1 a -> Op2 a -> Type A `Group` is a monoid with an inverse operation.
Totality: total
Visibility: public export
Constructor: MkGroup : Associative p -> LeftNeutral z p -> RightNeutral z p -> LeftInverse z i p -> RightInverse z i p -> Group a z i p
Projections:
.associative : Group a z i p -> Associative p .leftInverse : Group a z i p -> LeftInverse z i p .leftNeutral : Group a z i p -> LeftNeutral z p .mon : Group a z i p -> Monoid a z p A group is also a monoid
.rightInverse : Group a z i p -> RightInverse z i p .rightNeutral : Group a z i p -> RightNeutral z p .sgrp : Group a z i p -> Semigroup a p A group is also a semigroup
.associative : Group a z i p -> Associative p- Totality: total
Visibility: public export associative : Group a z i p -> Associative p- Totality: total
Visibility: public export .leftNeutral : Group a z i p -> LeftNeutral z p- Totality: total
Visibility: public export leftNeutral : Group a z i p -> LeftNeutral z p- Totality: total
Visibility: public export .rightNeutral : Group a z i p -> RightNeutral z p- Totality: total
Visibility: public export rightNeutral : Group a z i p -> RightNeutral z p- Totality: total
Visibility: public export .leftInverse : Group a z i p -> LeftInverse z i p- Totality: total
Visibility: public export leftInverse : Group a z i p -> LeftInverse z i p- Totality: total
Visibility: public export .rightInverse : Group a z i p -> RightInverse z i p- Totality: total
Visibility: public export rightInverse : Group a z i p -> RightInverse z i p- Totality: total
Visibility: public export 0 leftInjective : Group a z i p -> u `p` v = u `p` w -> v = w In a group, the binary operation is injective when applied
from the left.
Totality: total
Visibility: export0 solveInverseLeft : Group a z i p -> v `p` u = z -> u = i v In a group, from `p v u === z` follows `u === i v`.
Totality: total
Visibility: export0 invertProduct : Group a z i p -> i (u `p` v) = i v `p` i u In a group, the inverse of a product is the product of inverses
(in reverse order).
Totality: total
Visibility: export0 rightInjective : Group a z i p -> v `p` u = w `p` u -> v = w In a group, the binary operation is injective when applied
from the right.
Totality: total
Visibility: export0 solveInverseRight : Group a z i p -> u `p` v = z -> u = i v In a group, from `p u v === z` follows `u === i v`.
Totality: total
Visibility: export0 inverseZero : Group a z i p -> i z = z In a group, the inverse of the neutral element is
the neutral element itself.
Totality: total
Visibility: export0 inverseInvolutory : Group a z i p -> i (i u) = u In a group, inverting an value twice yields the original value.
Totality: total
Visibility: export.sgrp : Group a z i p -> Semigroup a p A group is also a semigroup
Totality: total
Visibility: export.mon : Group a z i p -> Monoid a z p A group is also a monoid
Totality: total
Visibility: exportrecord AbelianGroup : (a : Type) -> a -> Op1 a -> Op2 a -> Type An abelian group is a group with a commutative binary operation.
Totality: total
Visibility: public export
Constructor: MkAbelianGroup : Associative p -> Commutative p -> LeftNeutral z p -> LeftInverse z i p -> AbelianGroup a z i p
Projections:
.associative : AbelianGroup a z i p -> Associative p .cmon : AbelianGroup a z i p -> CommutativeMonoid a z p An abelian group is also a commutative monoid
.commutative : AbelianGroup a z i p -> Commutative p .csgrp : AbelianGroup a z i p -> CommutativeSemigroup a p An abelian group is also a commutative semigroup
.grp : AbelianGroup a z i p -> Group a z i p An abelian group is also a group
.leftInverse : AbelianGroup a z i p -> LeftInverse z i p .leftNeutral : AbelianGroup a z i p -> LeftNeutral z p .mon : AbelianGroup a z i p -> Monoid a z p An abelian group is also a monoid
.rightInverse : AbelianGroup a z i p -> RightInverse z i p For an abelian group, `i` is a right inverse.
.rightNeutral : AbelianGroup a z i p -> RightNeutral z p For an abelian group, `z` is a right neutral element.
.sgrp : AbelianGroup a z i p -> Semigroup a p An abelian group is also a semigroup
.associative : AbelianGroup a z i p -> Associative p- Totality: total
Visibility: public export associative : AbelianGroup a z i p -> Associative p- Totality: total
Visibility: public export .commutative : AbelianGroup a z i p -> Commutative p- Totality: total
Visibility: public export commutative : AbelianGroup a z i p -> Commutative p- Totality: total
Visibility: public export .leftNeutral : AbelianGroup a z i p -> LeftNeutral z p- Totality: total
Visibility: public export leftNeutral : AbelianGroup a z i p -> LeftNeutral z p- Totality: total
Visibility: public export .leftInverse : AbelianGroup a z i p -> LeftInverse z i p- Totality: total
Visibility: public export leftInverse : AbelianGroup a z i p -> LeftInverse z i p- Totality: total
Visibility: public export .sgrp : AbelianGroup a z i p -> Semigroup a p An abelian group is also a semigroup
Totality: total
Visibility: export.cmon : AbelianGroup a z i p -> CommutativeMonoid a z p An abelian group is also a commutative monoid
Totality: total
Visibility: export.csgrp : AbelianGroup a z i p -> CommutativeSemigroup a p An abelian group is also a commutative semigroup
Totality: total
Visibility: export.rightNeutral : AbelianGroup a z i p -> RightNeutral z p For an abelian group, `z` is a right neutral element.
Totality: total
Visibility: export.rightInverse : AbelianGroup a z i p -> RightInverse z i p For an abelian group, `i` is a right inverse.
Totality: total
Visibility: export.mon : AbelianGroup a z i p -> Monoid a z p An abelian group is also a monoid
Totality: total
Visibility: export.grp : AbelianGroup a z i p -> Group a z i p An abelian group is also a group
Totality: total
Visibility: export0 sgrp_list1 : Semigroup (List1 a) ((a ++))- Totality: total
Visibility: export 0 mon_list : Monoid (List a) [] (++)- Totality: total
Visibility: export 0 cmon_nat_plus : CommutativeMonoid Nat 0 (+)- Totality: total
Visibility: export 0 cmon_nat_mult : CommutativeMonoid Nat 1 (*)- Totality: total
Visibility: export 0 appendAssoc : Associative (<+>)- Totality: total
Visibility: export 0 appendRightNeutral : RightNeutral Nothing (<+>)- Totality: total
Visibility: export 0 mon_maybe : Monoid (Maybe a) Nothing (<+>) The default monoid for `Maybe` provided by the prelude:
Returns the first non-empty value (if any).
Totality: total
Visibility: exportunion : (a -> a -> a) -> Maybe a -> Maybe a -> Maybe a Use a binary function to combine two `Maybe`s in case both
are `Just`s.
This is an associative function, if `p` is associative. It is
commutative if `p` is commutative.
Totality: total
Visibility: public export0 unionAssoc : Associative p -> Associative (union p)- Totality: total
Visibility: export 0 unionCommutative : Commutative p -> Commutative (union p)- Totality: total
Visibility: export 0 unionRightNeutral : RightNeutral Nothing (union p)- Totality: total
Visibility: export 0 mon_union : Associative p -> Monoid (Maybe a) Nothing (union p)- Totality: total
Visibility: export 0 cmon_union : CommutativeSemigroup a p -> CommutativeMonoid (Maybe a) Nothing (union p)- Totality: total
Visibility: export 0 appendAssoc : Associative (<+>)- Totality: total
Visibility: export 0 appendRightNeutral : RightNeutral EQ (<+>)- Totality: total
Visibility: export 0 mon_ordering : Monoid Ordering EQ (<+>) The default monoid for `Ordering` provided by the prelude:
Returns the first non-`EQ` value (if any).
Totality: total
Visibility: exportneg : () -> ()- Totality: total
Visibility: export 0 appendLeftNeutral : LeftNeutral () (<+>)- Totality: total
Visibility: export 0 agrp_unit : AbelianGroup () () neg (<+>) The default group for `Unit` provided by the prelude.
Totality: total
Visibility: export0 mon_string : Monoid String "" (++)- Totality: total
Visibility: export 0 plus_bits8 : AbelianGroup Bits8 0 negate (+)- Totality: total
Visibility: export 0 mult_bits8 : CommutativeMonoid Bits8 1 (*)- Totality: total
Visibility: export 0 plus_bits16 : AbelianGroup Bits16 0 negate (+)- Totality: total
Visibility: export 0 mult_bits16 : CommutativeMonoid Bits16 1 (*)- Totality: total
Visibility: export 0 plus_bits32 : AbelianGroup Bits32 0 negate (+)- Totality: total
Visibility: export 0 mult_bits32 : CommutativeMonoid Bits32 1 (*)- Totality: total
Visibility: export 0 plus_bits64 : AbelianGroup Bits64 0 negate (+)- Totality: total
Visibility: export 0 mult_bits64 : CommutativeMonoid Bits64 1 (*)- Totality: total
Visibility: export 0 plus_int8 : AbelianGroup Int8 0 negate (+)- Totality: total
Visibility: export 0 mult_int8 : CommutativeMonoid Int8 1 (*)- Totality: total
Visibility: export 0 plus_int16 : AbelianGroup Int16 0 negate (+)- Totality: total
Visibility: export 0 mult_int16 : CommutativeMonoid Int16 1 (*)- Totality: total
Visibility: export 0 plus_int32 : AbelianGroup Int32 0 negate (+)- Totality: total
Visibility: export 0 mult_int32 : CommutativeMonoid Int32 1 (*)- Totality: total
Visibility: export 0 plus_int64 : AbelianGroup Int64 0 negate (+)- Totality: total
Visibility: export 0 mult_int64 : CommutativeMonoid Int64 1 (*)- Totality: total
Visibility: export 0 plus_integer : AbelianGroup Integer 0 negate (+)- Totality: total
Visibility: export 0 mult_integer : CommutativeMonoid Integer 1 (*)- Totality: total
Visibility: export