module CompFfun where
import CompSP
import Fudget
import Message
--import Path(Path(..))
--import SP

postProcessHigh :: SP a ho -> F hi a -> F hi ho
postProcessHigh SP a ho
postsp (F FSP hi a
sp) = forall hi ho. FSP hi ho -> F hi ho
F{-ff-} (forall a b c d e. SP a b -> Fa c d e a -> Fa c d e b
postProcessHigh' SP a ho
postsp FSP hi a
sp)
postProcessLow :: SP TCommand TCommand -> F hi ho -> F hi ho
postProcessLow SP TCommand TCommand
postsp (F FSP hi ho
sp) = forall hi ho. FSP hi ho -> F hi ho
F{-ff-} (forall a b c d e. SP a b -> Fa c a d e -> Fa c b d e
postProcessLow' SP TCommand TCommand
postsp FSP hi ho
sp)
preProcessHigh :: F c ho -> SP hi c -> F hi ho
preProcessHigh (F FSP c ho
sp) SP hi c
presp = forall hi ho. FSP hi ho -> F hi ho
F{-ff-} (forall a b c d e. Fa a b c d -> SP e c -> Fa a b e d
preProcessHigh' FSP c ho
sp SP hi c
presp)
preProcessLow :: F hi ho -> SP TEvent TEvent -> F hi ho
preProcessLow (F FSP hi ho
sp) SP TEvent TEvent
presp = forall hi ho. FSP hi ho -> F hi ho
F{-ff-} (forall a b c d e. Fa a b c d -> SP e a -> Fa e b c d
preProcessLow' FSP hi ho
sp SP TEvent TEvent
presp)
preMapHigh :: F c ho -> (hi -> c) -> F hi ho
preMapHigh (F FSP c ho
sp) hi -> c
pre = forall hi ho. FSP hi ho -> F hi ho
F{-ff-} (forall a b c d e. Fa a b c d -> (e -> c) -> Fa a b e d
preMapHigh' FSP c ho
sp hi -> c
pre)
postMapHigh :: (a -> ho) -> F hi a -> F hi ho
postMapHigh a -> ho
post (F FSP hi a
sp) = forall hi ho. FSP hi ho -> F hi ho
F{-ff-} (forall a b c d e. (a -> b) -> Fa c d e a -> Fa c d e b
postMapHigh' a -> ho
post FSP hi a
sp)
preMapLow :: F hi ho -> (TEvent -> TEvent) -> F hi ho
preMapLow (F FSP hi ho
sp) TEvent -> TEvent
pre = forall hi ho. FSP hi ho -> F hi ho
F{-ff-} (forall a b c d e. Fa a b c d -> (e -> a) -> Fa e b c d
preMapLow' FSP hi ho
sp TEvent -> TEvent
pre)
postMapLow :: (TCommand -> TCommand) -> F hi ho -> F hi ho
postMapLow TCommand -> TCommand
post (F FSP hi ho
sp) = forall hi ho. FSP hi ho -> F hi ho
F{-ff-} (forall a b c d e. (a -> b) -> Fa c a d e -> Fa c b d e
postMapLow' TCommand -> TCommand
post FSP hi ho
sp)

postProcessHighK :: SP a ho -> K hi a -> K hi ho
postProcessHighK SP a ho
postsp (K KSP hi a
sp) = forall hi ho. KSP hi ho -> K hi ho
K{-kk-} (forall a b c d e. SP a b -> Fa c d e a -> Fa c d e b
postProcessHigh' SP a ho
postsp KSP hi a
sp)
postProcessLowK :: SP FRequest FRequest -> K hi ho -> K hi ho
postProcessLowK SP FRequest FRequest
postsp (K KSP hi ho
sp) = forall hi ho. KSP hi ho -> K hi ho
K{-kk-} (forall a b c d e. SP a b -> Fa c a d e -> Fa c b d e
postProcessLow' SP FRequest FRequest
postsp KSP hi ho
sp)
preProcessHighK :: K c ho -> SP hi c -> K hi ho
preProcessHighK (K KSP c ho
sp) SP hi c
presp = forall hi ho. KSP hi ho -> K hi ho
K{-kk-} (forall a b c d e. Fa a b c d -> SP e c -> Fa a b e d
preProcessHigh' KSP c ho
sp SP hi c
presp)
preProcessLowK :: K hi ho -> SP FResponse FResponse -> K hi ho
preProcessLowK (K KSP hi ho
sp) SP FResponse FResponse
presp = forall hi ho. KSP hi ho -> K hi ho
K{-kk-} (forall a b c d e. Fa a b c d -> SP e a -> Fa e b c d
preProcessLow' KSP hi ho
sp SP FResponse FResponse
presp)
preMapHighK :: K c ho -> (hi -> c) -> K hi ho
preMapHighK (K KSP c ho
sp) hi -> c
pre = forall hi ho. KSP hi ho -> K hi ho
K{-kk-} (forall a b c d e. Fa a b c d -> (e -> c) -> Fa a b e d
preMapHigh' KSP c ho
sp hi -> c
pre)
postMapHighK :: (a -> ho) -> K hi a -> K hi ho
postMapHighK a -> ho
post (K KSP hi a
sp) = forall hi ho. KSP hi ho -> K hi ho
K{-kk-} (forall a b c d e. (a -> b) -> Fa c d e a -> Fa c d e b
postMapHigh' a -> ho
post KSP hi a
sp)
preMapLowK :: K hi ho -> (FResponse -> FResponse) -> K hi ho
preMapLowK (K KSP hi ho
sp) FResponse -> FResponse
pre = forall hi ho. KSP hi ho -> K hi ho
K{-kk-} (forall a b c d e. Fa a b c d -> (e -> a) -> Fa e b c d
preMapLow' KSP hi ho
sp FResponse -> FResponse
pre)
postMapLowK :: (FRequest -> FRequest) -> K hi ho -> K hi ho
postMapLowK FRequest -> FRequest
post (K KSP hi ho
sp) = forall hi ho. KSP hi ho -> K hi ho
K{-kk-} (forall a b c d e. (a -> b) -> Fa c a d e -> Fa c b d e
postMapLow' FRequest -> FRequest
post KSP hi ho
sp)

postProcessHigh' :: (SP a b) -> (Fa c d e a) -> Fa c d e b
postProcessHigh' :: forall a b c d e. SP a b -> Fa c d e a -> Fa c d e b
postProcessHigh' SP a b
p Fa c d e a
f = forall {a1} {b} {a2}. SP a1 b -> SP a2 a1 -> SP a2 b
serCompSP (forall {a1} {b} {a2}. SP a1 b -> SP (Message a2 a1) (Message a2 b)
idLowSP SP a b
p) Fa c d e a
f

postProcessLow' :: (SP a b) -> (Fa c a d e) -> Fa c b d e
postProcessLow' :: forall a b c d e. SP a b -> Fa c a d e -> Fa c b d e
postProcessLow' SP a b
p Fa c a d e
f = forall {a1} {b} {a2}. SP a1 b -> SP a2 a1 -> SP a2 b
serCompSP (forall {a1} {a2} {b}. SP a1 a2 -> SP (Message a1 b) (Message a2 b)
idHighSP SP a b
p) Fa c a d e
f

preProcessHigh' :: (Fa a b c d) -> (SP e c) -> Fa a b e d
preProcessHigh' :: forall a b c d e. Fa a b c d -> SP e c -> Fa a b e d
preProcessHigh' Fa a b c d
f SP e c
p = forall {a1} {b} {a2}. SP a1 b -> SP a2 a1 -> SP a2 b
serCompSP Fa a b c d
f (forall {a1} {b} {a2}. SP a1 b -> SP (Message a2 a1) (Message a2 b)
idLowSP SP e c
p)

preProcessLow' :: (Fa a b c d) -> (SP e a) -> Fa e b c d
preProcessLow' :: forall a b c d e. Fa a b c d -> SP e a -> Fa e b c d
preProcessLow' Fa a b c d
f SP e a
p = forall {a1} {b} {a2}. SP a1 b -> SP a2 a1 -> SP a2 b
serCompSP Fa a b c d
f (forall {a1} {a2} {b}. SP a1 a2 -> SP (Message a1 b) (Message a2 b)
idHighSP SP e a
p)

preMapHigh' :: (Fa a b c d) -> (e -> c) -> Fa a b e d
preMapHigh' :: forall a b c d e. Fa a b c d -> (e -> c) -> Fa a b e d
preMapHigh' Fa a b c d
f e -> c
pre = forall {a} {b} {t}. SP a b -> (t -> a) -> SP t b
preMapSP Fa a b c d
f (forall {t} {b} {a}. (t -> b) -> Message a t -> Message a b
aHigh e -> c
pre)

preMapLow' :: (Fa a b c d) -> (e -> a) -> Fa e b c d
preMapLow' :: forall a b c d e. Fa a b c d -> (e -> a) -> Fa e b c d
preMapLow' Fa a b c d
f e -> a
pre = forall {a} {b} {t}. SP a b -> (t -> a) -> SP t b
preMapSP Fa a b c d
f (forall {t} {a} {b}. (t -> a) -> Message t b -> Message a b
aLow e -> a
pre)

postMapHigh' :: (a -> b) -> (Fa c d e a) -> Fa c d e b
postMapHigh' :: forall a b c d e. (a -> b) -> Fa c d e a -> Fa c d e b
postMapHigh' a -> b
post Fa c d e a
f = forall {t} {b} {a}. (t -> b) -> SP a t -> SP a b
postMapSP (forall {t} {b} {a}. (t -> b) -> Message a t -> Message a b
aHigh a -> b
post) Fa c d e a
f

postMapLow' :: (a -> b) -> (Fa c a d e) -> Fa c b d e
postMapLow' :: forall a b c d e. (a -> b) -> Fa c a d e -> Fa c b d e
postMapLow' a -> b
post Fa c a d e
f = forall {t} {b} {a}. (t -> b) -> SP a t -> SP a b
postMapSP (forall {t} {a} {b}. (t -> a) -> Message t b -> Message a b
aLow a -> b
post) Fa c a d e
f

prepostMapHigh' :: (a -> b) -> (c -> d) -> (Fa e f b c) -> Fa e f a d
prepostMapHigh' :: forall a b c d e f.
(a -> b) -> (c -> d) -> Fa e f b c -> Fa e f a d
prepostMapHigh' a -> b
pre c -> d
post Fa e f b c
f = forall {t1} {a} {t2} {b}.
(t1 -> a) -> (t2 -> b) -> SP a t2 -> SP t1 b
prepostMapSP (forall {t} {b} {a}. (t -> b) -> Message a t -> Message a b
aHigh a -> b
pre) (forall {t} {b} {a}. (t -> b) -> Message a t -> Message a b
aHigh c -> d
post) Fa e f b c
f


prepostMapHigh :: (hi -> b) -> (c -> ho) -> F b c -> F hi ho
prepostMapHigh hi -> b
pre c -> ho
post (F FSP b c
sp) = forall hi ho. FSP hi ho -> F hi ho
F{-ff-} (forall a b c d e f.
(a -> b) -> (c -> d) -> Fa e f b c -> Fa e f a d
prepostMapHigh' hi -> b
pre c -> ho
post FSP b c
sp)
prepostMapHighK :: (hi -> b) -> (c -> ho) -> K b c -> K hi ho
prepostMapHighK hi -> b
pre c -> ho
post (K KSP b c
sp) = forall hi ho. KSP hi ho -> K hi ho
K{-kk-} (forall a b c d e f.
(a -> b) -> (c -> d) -> Fa e f b c -> Fa e f a d
prepostMapHigh' hi -> b
pre c -> ho
post KSP b c
sp)

prepostMapLow' :: (a -> b) -> (c -> d) -> (Fa b c e f) -> Fa a d e f
prepostMapLow' :: forall a b c d e f.
(a -> b) -> (c -> d) -> Fa b c e f -> Fa a d e f
prepostMapLow' a -> b
pre c -> d
post Fa b c e f
f = forall {t1} {a} {t2} {b}.
(t1 -> a) -> (t2 -> b) -> SP a t2 -> SP t1 b
prepostMapSP (forall {t} {a} {b}. (t -> a) -> Message t b -> Message a b
aLow a -> b
pre) (forall {t} {a} {b}. (t -> a) -> Message t b -> Message a b
aLow c -> d
post) Fa b c e f
f

prepostMapLow :: (TEvent -> TEvent) -> (TCommand -> TCommand) -> F hi ho -> F hi ho
prepostMapLow TEvent -> TEvent
pre TCommand -> TCommand
post (F FSP hi ho
sp) = forall hi ho. FSP hi ho -> F hi ho
F (forall a b c d e f.
(a -> b) -> (c -> d) -> Fa b c e f -> Fa a d e f
prepostMapLow' TEvent -> TEvent
pre TCommand -> TCommand
post FSP hi ho
sp)
prepostMapLowK :: (FResponse -> FResponse)
-> (FRequest -> FRequest) -> K hi ho -> K hi ho
prepostMapLowK FResponse -> FResponse
pre FRequest -> FRequest
post (K KSP hi ho
sp) = forall hi ho. KSP hi ho -> K hi ho
K (forall a b c d e f.
(a -> b) -> (c -> d) -> Fa b c e f -> Fa a d e f
prepostMapLow' FResponse -> FResponse
pre FRequest -> FRequest
post KSP hi ho
sp)