proarrow
Safe HaskellNone
LanguageGHC2024

Proarrow.Category.Instance.FinRel

Synopsis

Documentation

newtype Bitstring (n :: Nat) Source Github #

Constructors

BS Natural 

Instances

Instances details
Bits (Bitstring n) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinRel

SNatI n => Bounded (Bitstring n) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinRel

Enum (Bitstring n) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinRel

Num (Bitstring n) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinRel

SNatI n => Show (Bitstring n) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinRel

Eq (Bitstring n) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinRel

Ord (Bitstring n) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinRel

shiftN :: forall (n :: Nat). SNatI n => Natural -> Natural Source Github #

split :: forall (n :: Nat) (m :: Nat). SNatI n => Bitstring (Plus n m) -> (Bitstring n, Bitstring m) Source Github #

Split n + m bits into two parts: the lower n bits and the higher m bits.

splits :: forall (n :: Nat) (m :: Nat). (SNatI n, SNatI m) => Bitstring (Mult n m) -> Vec n (Bitstring m) Source Github #

combine :: forall (n :: Nat) (m :: Nat). SNatI n => Bitstring n -> Bitstring m -> Bitstring (Plus n m) Source Github #

Combine two bitstrings of lengths n and m into one bitstring with the n lower bits or m higher bits.

combines :: forall (m :: Nat) (n :: Nat). SNatI m => Vec n (Bitstring m) -> Bitstring (Mult n m) Source Github #

pop :: forall (n :: Nat). Bitstring ('S n) -> (Bitstring n, Bool) Source Github #

push :: forall (n :: Nat). Bool -> Bitstring n -> Bitstring ('S n) Source Github #

mult :: forall (n :: Nat) (m :: Nat). (SNatI n, SNatI m) => Bitstring n -> Bitstring m -> Bitstring (Mult n m) Source Github #

bit :: forall (n :: Nat). SNatI n => Fin n -> Bitstring n Source Github #

zero :: forall (n :: Nat) (m :: Nat). (SNatI n, SNatI m) => Vec n (Bitstring m) Source Github #

pick :: forall (n :: Nat) a. Vec n a -> Bitstring n -> [a] Source Github #

fromBools :: forall (n :: Nat). Vec n Bool -> Bitstring n Source Github #

toBools :: forall (n :: Nat). SNatI n => Bitstring n -> Vec n Bool Source Github #

arr :: forall (n :: Nat) (m :: Nat). FinSet ('FS m) ('FS n) -> FinRel ('FR m) ('FR n) Source Github #

data FINREL Source Github #

Constructors

FR Nat 

Instances

Instances details
Monoidal FINREL Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinRel

Associated Types

type Unit 
Instance details

Defined in Proarrow.Category.Instance.FinRel

type Unit = 'FR Nat1
type ('FR a :: FINREL) ** ('FR b :: FINREL) 
Instance details

Defined in Proarrow.Category.Instance.FinRel

type ('FR a :: FINREL) ** ('FR b :: FINREL) = 'FR (Mult a b)

Methods

withOb2 :: forall (a :: FINREL) (b :: FINREL) r. (Ob a, Ob b) => (Ob (a ** b) => r) -> r Source Github #

leftUnitor :: forall (a :: FINREL). Ob a => ((Unit :: FINREL) ** a) ~> a Source Github #

leftUnitorInv :: forall (a :: FINREL). Ob a => a ~> ((Unit :: FINREL) ** a) Source Github #

rightUnitor :: forall (a :: FINREL). Ob a => (a ** (Unit :: FINREL)) ~> a Source Github #

rightUnitorInv :: forall (a :: FINREL). Ob a => a ~> (a ** (Unit :: FINREL)) Source Github #

associator :: forall (a :: FINREL) (b :: FINREL) (c :: FINREL). (Ob a, Ob b, Ob c) => ((a ** b) ** c) ~> (a ** (b ** c)) Source Github #

associatorInv :: forall (a :: FINREL) (b :: FINREL) (c :: FINREL). (Ob a, Ob b, Ob c) => (a ** (b ** c)) ~> ((a ** b) ** c) Source Github #

SymMonoidal FINREL Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinRel

Methods

swap :: forall (a :: FINREL) (b :: FINREL). (Ob a, Ob b) => (a ** b) ~> (b ** a) Source Github #

CopyDiscard FINREL Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinRel

Methods

copy :: forall (a :: FINREL). Ob a => a ~> (a ** a) Source Github #

discard :: forall (a :: FINREL). Ob a => a ~> (Unit :: FINREL) Source Github #

Distributive FINREL Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinRel

Methods

distL :: forall (a :: FINREL) (b :: FINREL) (c :: FINREL). (Ob a, Ob b, Ob c) => (a ** (b || c)) ~> ((a ** b) || (a ** c)) Source Github #

distR :: forall (a :: FINREL) (b :: FINREL) (c :: FINREL). (Ob a, Ob b, Ob c) => ((a || b) ** c) ~> ((a ** c) || (b ** c)) Source Github #

distL0 :: forall (a :: FINREL). Ob a => (a ** (InitialObject :: FINREL)) ~> (InitialObject :: FINREL) Source Github #

distR0 :: forall (a :: FINREL). Ob a => ((InitialObject :: FINREL) ** a) ~> (InitialObject :: FINREL) Source Github #

Hypergraph FINREL Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinRel

CategoryOf FINREL Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinRel

Associated Types

type (~>) 
Instance details

Defined in Proarrow.Category.Instance.FinRel

type (~>) = FinRel
type Ob (a :: FINREL) 
Instance details

Defined in Proarrow.Category.Instance.FinRel

type Ob (a :: FINREL) = (Is 'FR a, SNatI (UN 'FR a))
HasBinaryCoproducts FINREL Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinRel

Associated Types

type ('FR a :: FINREL) || ('FR b :: FINREL) 
Instance details

Defined in Proarrow.Category.Instance.FinRel

type ('FR a :: FINREL) || ('FR b :: FINREL) = 'FR (Plus a b)

Methods

withObCoprod :: forall (a :: FINREL) (b :: FINREL) r. (Ob a, Ob b) => (Ob (a || b) => r) -> r Source Github #

lft :: forall (a :: FINREL) (b :: FINREL). (Ob a, Ob b) => a ~> (a || b) Source Github #

rgt :: forall (a :: FINREL) (b :: FINREL). (Ob a, Ob b) => b ~> (a || b) Source Github #

(|||) :: forall (x :: FINREL) (a :: FINREL) (y :: FINREL). (x ~> a) -> (y ~> a) -> (x || y) ~> a Source Github #

(+++) :: forall (a :: FINREL) (b :: FINREL) (x :: FINREL) (y :: FINREL). (a ~> x) -> (b ~> y) -> (a || b) ~> (x || y) Source Github #

HasBiproducts FINREL Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinRel

Methods

sum :: forall (a :: FINREL) (b :: FINREL). (a ~> b) -> (a ~> b) -> a ~> b Source Github #

HasBinaryProducts FINREL Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinRel

Associated Types

type (a :: FINREL) && (b :: FINREL) 
Instance details

Defined in Proarrow.Category.Instance.FinRel

type (a :: FINREL) && (b :: FINREL) = 'FR (Plus (UN 'FR a) (UN 'FR b))

Methods

withObProd :: forall (a :: FINREL) (b :: FINREL) r. (Ob a, Ob b) => (Ob (a && b) => r) -> r Source Github #

fst :: forall (a :: FINREL) (b :: FINREL). (Ob a, Ob b) => (a && b) ~> a Source Github #

snd :: forall (a :: FINREL) (b :: FINREL). (Ob a, Ob b) => (a && b) ~> b Source Github #

(&&&) :: forall (a :: FINREL) (x :: FINREL) (y :: FINREL). (a ~> x) -> (a ~> y) -> a ~> (x && y) Source Github #

(***) :: forall (a :: FINREL) (b :: FINREL) (x :: FINREL) (y :: FINREL). (a ~> x) -> (b ~> y) -> (a && b) ~> (x && y) Source Github #

CompactClosed FINREL Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinRel

Methods

distribDual :: forall (a :: FINREL) (b :: FINREL). (Ob a, Ob b) => Dual (a ** b) ~> (Dual a ** Dual b) Source Github #

dualUnit :: Dual (Unit :: FINREL) ~> (Unit :: FINREL) Source Github #

StarAutonomous FINREL Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinRel

Associated Types

type Dual (n :: FINREL) 
Instance details

Defined in Proarrow.Category.Instance.FinRel

type Dual (n :: FINREL) = n

Methods

dual :: forall (a :: FINREL) (b :: FINREL). (a ~> b) -> Dual b ~> Dual a Source Github #

dualInv :: forall (a :: FINREL) (b :: FINREL). (Ob a, Ob b) => (Dual a ~> Dual b) -> b ~> a Source Github #

linDist :: forall (a :: FINREL) (b :: FINREL) (c :: FINREL). (Ob a, Ob b, Ob c) => ((a ** b) ~> Dual c) -> a ~> Dual (b ** c) Source Github #

linDistInv :: forall (a :: FINREL) (b :: FINREL) (c :: FINREL). (Ob a, Ob b, Ob c) => (a ~> Dual (b ** c)) -> (a ** b) ~> Dual c Source Github #

Closed FINREL Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinRel

Associated Types

type (x :: FINREL) ~~> (y :: FINREL) 
Instance details

Defined in Proarrow.Category.Instance.FinRel

type (x :: FINREL) ~~> (y :: FINREL) = ExpSA x y

Methods

withObExp :: forall (a :: FINREL) (b :: FINREL) r. (Ob a, Ob b) => (Ob (a ~~> b) => r) -> r Source Github #

curry :: forall (a :: FINREL) (b :: FINREL) (c :: FINREL). (Ob a, Ob b) => ((a ** b) ~> c) -> a ~> (b ~~> c) Source Github #

apply :: forall (a :: FINREL) (b :: FINREL). (Ob a, Ob b) => ((a ~~> b) ** a) ~> b Source Github #

(^^^) :: forall (a :: FINREL) (b :: FINREL) (x :: FINREL) (y :: FINREL). (b ~> y) -> (x ~> a) -> (a ~~> b) ~> (x ~~> y) Source Github #

HasInitialObject FINREL Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinRel

Associated Types

type InitialObject 
Instance details

Defined in Proarrow.Category.Instance.FinRel

Methods

initiate :: forall (a :: FINREL). Ob a => (InitialObject :: FINREL) ~> a Source Github #

HasTerminalObject FINREL Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinRel

Associated Types

type TerminalObject 
Instance details

Defined in Proarrow.Category.Instance.FinRel

Methods

terminate :: forall (a :: FINREL). Ob a => a ~> (TerminalObject :: FINREL) Source Github #

DaggerProfunctor FinRel Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinRel

Methods

dagger :: forall (a :: FINREL) (b :: FINREL). FinRel a b -> FinRel b a Source Github #

MonoidalAction FINREL FINREL Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinRel

Associated Types

type Act (p :: FINREL) (x :: FINREL) 
Instance details

Defined in Proarrow.Category.Instance.FinRel

type Act (p :: FINREL) (x :: FINREL) = p ** x

Methods

withObAct :: forall (a :: FINREL) (x :: FINREL) r. (Ob a, Ob x) => (Ob (Act a x) => r) -> r Source Github #

unitor :: forall (x :: FINREL). Ob x => Act (Unit :: FINREL) x ~> x Source Github #

unitorInv :: forall (x :: FINREL). Ob x => x ~> Act (Unit :: FINREL) x Source Github #

multiplicator :: forall (a :: FINREL) (b :: FINREL) (x :: FINREL). (Ob a, Ob b, Ob x) => Act (a ** b) x ~> Act a (Act b x) Source Github #

multiplicatorInv :: forall (a :: FINREL) (b :: FINREL) (x :: FINREL). (Ob a, Ob b, Ob x) => Act a (Act b x) ~> Act (a ** b) x Source Github #

Promonad FinRel Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinRel

Methods

id :: forall (a :: FINREL). Ob a => FinRel a a Source Github #

(.) :: forall (b :: FINREL) (c :: FINREL) (a :: FINREL). FinRel b c -> FinRel a b -> FinRel a c Source Github #

MonoidalProfunctor FinRel Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinRel

Methods

par0 :: FinRel (Unit :: FINREL) (Unit :: FINREL) Source Github #

par :: forall (x1 :: FINREL) (x2 :: FINREL) (y1 :: FINREL) (y2 :: FINREL). FinRel x1 x2 -> FinRel y1 y2 -> FinRel (x1 ** y1) (x2 ** y2) Source Github #

Profunctor FinRel Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinRel

Methods

dimap :: forall (c :: FINREL) (a :: FINREL) (b :: FINREL) (d :: FINREL). (c ~> a) -> (b ~> d) -> FinRel a b -> FinRel c d Source Github #

(\\) :: forall (a :: FINREL) (b :: FINREL) r. ((Ob a, Ob b) => r) -> FinRel a b -> r Source Github #

FunctorForRep Fun Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinRel

Associated Types

type Fun @ ('FS a :: FINSET) 
Instance details

Defined in Proarrow.Category.Instance.FinRel

type Fun @ ('FS a :: FINSET) = 'FR a

Methods

fmap :: forall (a :: FINSET) (b :: FINSET). (a ~> b) -> (Fun @ a) ~> (Fun @ b) Source Github #

Costrong FINREL FinRel Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinRel

Methods

coact :: forall (a :: FINREL) (x :: FINREL) (y :: FINREL). (Ob a, Ob x, Ob y) => FinRel (Act a x) (Act a y) -> FinRel x y Source Github #

Strong FINREL FinRel Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinRel

Methods

act :: forall (a :: FINREL) (b :: FINREL) (x :: FINREL) (y :: FINREL). (a ~> b) -> FinRel x y -> FinRel (Act a x) (Act b y) Source Github #

MonoidalProfunctor (Rep Fun) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinRel

Methods

par0 :: Rep Fun (Unit :: FINREL) (Unit :: FINSET) Source Github #

par :: forall (x1 :: FINREL) (x2 :: FINSET) (y1 :: FINREL) (y2 :: FINSET). Rep Fun x1 x2 -> Rep Fun y1 y2 -> Rep Fun (x1 ** y1) (x2 ** y2) Source Github #

SNatI a => Frobenius ('FR a :: FINREL) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinRel

Methods

spider :: forall (n :: Nat) (m :: Nat). (SNatI n, SNatI m) => NFold n ('FR a) ~> NFold m ('FR a) Source Github #

SNatI a => Comonoid ('FR a :: FINREL) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinRel

Methods

counit :: 'FR a ~> (Unit :: FINREL) Source Github #

comult :: 'FR a ~> ('FR a ** 'FR a) Source Github #

SNatI a => Monoid ('FR a :: FINREL) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinRel

Methods

mempty :: (Unit :: FINREL) ~> 'FR a Source Github #

mappend :: ('FR a ** 'FR a) ~> 'FR a Source Github #

MonoidalProfunctor (Coprod (Rep Fun)) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinRel

Methods

par0 :: Coprod (Rep Fun) (Unit :: COPROD FINREL) (Unit :: COPROD FINSET) Source Github #

par :: forall (x1 :: COPROD FINREL) (x2 :: COPROD FINSET) (y1 :: COPROD FINREL) (y2 :: COPROD FINSET). Coprod (Rep Fun) x1 x2 -> Coprod (Rep Fun) y1 y2 -> Coprod (Rep Fun) (x1 ** y1) (x2 ** y2) Source Github #

type Unit Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinRel

type Unit = 'FR Nat1
type (~>) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinRel

type (~>) = FinRel
type InitialObject Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinRel

type TerminalObject Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinRel

type Ob (a :: FINREL) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinRel

type Ob (a :: FINREL) = (Is 'FR a, SNatI (UN 'FR a))
type Dual (n :: FINREL) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinRel

type Dual (n :: FINREL) = n
type (a :: FINREL) && (b :: FINREL) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinRel

type (a :: FINREL) && (b :: FINREL) = 'FR (Plus (UN 'FR a) (UN 'FR b))
type (x :: FINREL) ~~> (y :: FINREL) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinRel

type (x :: FINREL) ~~> (y :: FINREL) = ExpSA x y
type Act (p :: FINREL) (x :: FINREL) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinRel

type Act (p :: FINREL) (x :: FINREL) = p ** x
type UN 'FR ('FR n :: FINREL) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinRel

type UN 'FR ('FR n :: FINREL) = n
type Fun @ ('FS a :: FINSET) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinRel

type Fun @ ('FS a :: FINSET) = 'FR a
type ('FR a :: FINREL) ** ('FR b :: FINREL) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinRel

type ('FR a :: FINREL) ** ('FR b :: FINREL) = 'FR (Mult a b)
type ('FR a :: FINREL) || ('FR b :: FINREL) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinRel

type ('FR a :: FINREL) || ('FR b :: FINREL) = 'FR (Plus a b)

data FinRel (a :: FINREL) (b :: FINREL) where Source Github #

Constructors

FinRel 

Fields

Instances

Instances details
DaggerProfunctor FinRel Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinRel

Methods

dagger :: forall (a :: FINREL) (b :: FINREL). FinRel a b -> FinRel b a Source Github #

Promonad FinRel Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinRel

Methods

id :: forall (a :: FINREL). Ob a => FinRel a a Source Github #

(.) :: forall (b :: FINREL) (c :: FINREL) (a :: FINREL). FinRel b c -> FinRel a b -> FinRel a c Source Github #

MonoidalProfunctor FinRel Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinRel

Methods

par0 :: FinRel (Unit :: FINREL) (Unit :: FINREL) Source Github #

par :: forall (x1 :: FINREL) (x2 :: FINREL) (y1 :: FINREL) (y2 :: FINREL). FinRel x1 x2 -> FinRel y1 y2 -> FinRel (x1 ** y1) (x2 ** y2) Source Github #

Profunctor FinRel Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinRel

Methods

dimap :: forall (c :: FINREL) (a :: FINREL) (b :: FINREL) (d :: FINREL). (c ~> a) -> (b ~> d) -> FinRel a b -> FinRel c d Source Github #

(\\) :: forall (a :: FINREL) (b :: FINREL) r. ((Ob a, Ob b) => r) -> FinRel a b -> r Source Github #

Costrong FINREL FinRel Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinRel

Methods

coact :: forall (a :: FINREL) (x :: FINREL) (y :: FINREL). (Ob a, Ob x, Ob y) => FinRel (Act a x) (Act a y) -> FinRel x y Source Github #

Strong FINREL FinRel Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinRel

Methods

act :: forall (a :: FINREL) (b :: FINREL) (x :: FINREL) (y :: FINREL). (a ~> b) -> FinRel x y -> FinRel (Act a x) (Act b y) Source Github #

Show (FinRel a b) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinRel

Methods

showsPrec :: Int -> FinRel a b -> ShowS Github #

show :: FinRel a b -> String Github #

showList :: [FinRel a b] -> ShowS Github #

Eq (FinRel a b) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinRel

Methods

(==) :: FinRel a b -> FinRel a b -> Bool Github #

(/=) :: FinRel a b -> FinRel a b -> Bool Github #

data family Fun :: FINSET +-> FINREL Source Github #

Instances

Instances details
FunctorForRep Fun Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinRel

Associated Types

type Fun @ ('FS a :: FINSET) 
Instance details

Defined in Proarrow.Category.Instance.FinRel

type Fun @ ('FS a :: FINSET) = 'FR a

Methods

fmap :: forall (a :: FINSET) (b :: FINSET). (a ~> b) -> (Fun @ a) ~> (Fun @ b) Source Github #

MonoidalProfunctor (Rep Fun) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinRel

Methods

par0 :: Rep Fun (Unit :: FINREL) (Unit :: FINSET) Source Github #

par :: forall (x1 :: FINREL) (x2 :: FINSET) (y1 :: FINREL) (y2 :: FINSET). Rep Fun x1 x2 -> Rep Fun y1 y2 -> Rep Fun (x1 ** y1) (x2 ** y2) Source Github #

MonoidalProfunctor (Coprod (Rep Fun)) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinRel

Methods

par0 :: Coprod (Rep Fun) (Unit :: COPROD FINREL) (Unit :: COPROD FINSET) Source Github #

par :: forall (x1 :: COPROD FINREL) (x2 :: COPROD FINSET) (y1 :: COPROD FINREL) (y2 :: COPROD FINSET). Coprod (Rep Fun) x1 x2 -> Coprod (Rep Fun) y1 y2 -> Coprod (Rep Fun) (x1 ** y1) (x2 ** y2) Source Github #

type Fun @ ('FS a :: FINSET) Source Github # 
Instance details

Defined in Proarrow.Category.Instance.FinRel

type Fun @ ('FS a :: FINSET) = 'FR a