{-# LANGUAGE
TypeOperators
, TypeFamilies
, GADTs
, RankNTypes
, PatternSynonyms
, FlexibleContexts
, FlexibleInstances
, NoImplicitPrelude
, UndecidableInstances
, ScopedTypeVariables
, ConstraintKinds
, MultiParamTypeClasses
#-}
module Data.Category.Enriched.Poset3 where
import Data.Category.Boolean
import Data.Category.Enriched
data One
data Two
data Three
data PosetTest a b where
One :: PosetTest One One
Two :: PosetTest Two Two
Three :: PosetTest Three Three
type family Poset3 a b where
Poset3 Two One = Fls
Poset3 Three One = Fls
Poset3 Three Two = Fls
Poset3 a b = Tru
instance ECategory PosetTest where
type V PosetTest = Boolean
type PosetTest $ (a, b) = Poset3 a b
hom :: forall a b.
Obj PosetTest a
-> Obj PosetTest b -> Obj (V PosetTest) (PosetTest $ (a, b))
hom PosetTest a a
One PosetTest b b
One = Boolean Tru Tru
Tru
hom PosetTest a a
One PosetTest b b
Two = Boolean Tru Tru
Tru
hom PosetTest a a
One PosetTest b b
Three = Boolean Tru Tru
Tru
hom PosetTest a a
Two PosetTest b b
One = Boolean Fls Fls
Fls
hom PosetTest a a
Two PosetTest b b
Two = Boolean Tru Tru
Tru
hom PosetTest a a
Two PosetTest b b
Three = Boolean Tru Tru
Tru
hom PosetTest a a
Three PosetTest b b
One = Boolean Fls Fls
Fls
hom PosetTest a a
Three PosetTest b b
Two = Boolean Fls Fls
Fls
hom PosetTest a a
Three PosetTest b b
Three = Boolean Tru Tru
Tru
id :: forall a. Obj PosetTest a -> Arr PosetTest a a
id PosetTest a a
One = Boolean Tru Tru
Tru
id PosetTest a a
Two = Boolean Tru Tru
Tru
id PosetTest a a
Three = Boolean Tru Tru
Tru
comp :: forall a b c.
Obj PosetTest a
-> Obj PosetTest b
-> Obj PosetTest c
-> V PosetTest
(BinaryProduct
(V PosetTest) (PosetTest $ (b, c)) (PosetTest $ (a, b)))
(PosetTest $ (a, c))
comp PosetTest a a
One PosetTest b b
One PosetTest c c
One = Boolean Tru Tru
Tru
comp PosetTest a a
One PosetTest b b
One PosetTest c c
Two = Boolean Tru Tru
Tru
comp PosetTest a a
One PosetTest b b
One PosetTest c c
Three = Boolean Tru Tru
Tru
comp PosetTest a a
One PosetTest b b
Two PosetTest c c
One = Boolean Fls Tru
F2T
comp PosetTest a a
One PosetTest b b
Two PosetTest c c
Two = Boolean Tru Tru
Tru
comp PosetTest a a
One PosetTest b b
Two PosetTest c c
Three = Boolean Tru Tru
Tru
comp PosetTest a a
One PosetTest b b
Three PosetTest c c
One = Boolean Fls Tru
F2T
comp PosetTest a a
One PosetTest b b
Three PosetTest c c
Two = Boolean Fls Tru
F2T
comp PosetTest a a
One PosetTest b b
Three PosetTest c c
Three = Boolean Tru Tru
Tru
comp PosetTest a a
Two PosetTest b b
One PosetTest c c
One = Boolean Fls Fls
Fls
comp PosetTest a a
Two PosetTest b b
One PosetTest c c
Two = Boolean Fls Tru
F2T
comp PosetTest a a
Two PosetTest b b
One PosetTest c c
Three = Boolean Fls Tru
F2T
comp PosetTest a a
Two PosetTest b b
Two PosetTest c c
One = Boolean Fls Fls
Fls
comp PosetTest a a
Two PosetTest b b
Two PosetTest c c
Two = Boolean Tru Tru
Tru
comp PosetTest a a
Two PosetTest b b
Two PosetTest c c
Three = Boolean Tru Tru
Tru
comp PosetTest a a
Two PosetTest b b
Three PosetTest c c
One = Boolean Fls Fls
Fls
comp PosetTest a a
Two PosetTest b b
Three PosetTest c c
Two = Boolean Fls Tru
F2T
comp PosetTest a a
Two PosetTest b b
Three PosetTest c c
Three = Boolean Tru Tru
Tru
comp PosetTest a a
Three PosetTest b b
One PosetTest c c
One = Boolean Fls Fls
Fls
comp PosetTest a a
Three PosetTest b b
One PosetTest c c
Two = Boolean Fls Fls
Fls
comp PosetTest a a
Three PosetTest b b
One PosetTest c c
Three = Boolean Fls Tru
F2T
comp PosetTest a a
Three PosetTest b b
Two PosetTest c c
One = Boolean Fls Fls
Fls
comp PosetTest a a
Three PosetTest b b
Two PosetTest c c
Two = Boolean Fls Fls
Fls
comp PosetTest a a
Three PosetTest b b
Two PosetTest c c
Three = Boolean Fls Tru
F2T
comp PosetTest a a
Three PosetTest b b
Three PosetTest c c
One = Boolean Fls Fls
Fls
comp PosetTest a a
Three PosetTest b b
Three PosetTest c c
Two = Boolean Fls Fls
Fls
comp PosetTest a a
Three PosetTest b b
Three PosetTest c c
Three = Boolean Tru Tru
Tru