maam-0.3.0.0: Monadic Abstracting Abstract Machines (MAAM) built on Galois Transformers

Safe HaskellNone
LanguageHaskell2010

MAAM.GaloisTransformer

Documentation

class Inject ι ς | ς -> ι where Source

Methods

inject :: ι a -> ς a Source

Instances

Inject * ID ID Source 
(Inject * ι ς, Functor ς) => Inject * ι (NondetJoinΠ ς) Source 
Inject * (InjectLamIf val) (PathSensitiveΣᵇ val) Source 
Inject * (InjectLamIf val) (FlowInsensitiveΣᵇ val) Source 
Inject * (InjectLamIf val) (FlowSensitiveΣᵇ val) Source 
(Inject * ι ς, Functor ς) => Inject * (StateI s ι) (FlowJoinΠ s ς) Source 
Inject * ι ς => Inject * (StateI s ι) (PolyStateΠ s ς) Source 
Inject * ι ς => Inject * (StateI s ι) (StateΠ s ς) Source 

isoToStateTMorph :: ((a, s) -> m (b, s)) -> a -> StateT s m b Source

isoFromStateTMorph :: (a -> StateT s m b) -> (a, s) -> m (b, s) Source

isoToPolyStateTMorph :: ((a, s) -> m (b, s)) -> a -> PolyStateT s m b Source

isoFromPolyStateTMorph :: (a -> PolyStateT s m b) -> (a, s) -> m (b, s) Source

isoToNondetJoinTMorph :: (a -> m (𝒫ᵇ b)) -> a -> NondetJoinT m b Source

isoToFlowJoinTMorph :: ((a, s) -> m (b ⇰♭⊔ s)) -> a -> FlowJoinT s m b Source

isoFromFlowJoinTMorph :: (a -> FlowJoinT s m b) -> (a, s) -> m (b ⇰♭⊔ s) Source

newtype StateΠ s ς a Source

Constructors

StateΠ 

Fields

runStateΠ :: ς (a, s)
 

isoToStateΠMorph :: (ς (a, s) -> ς (b, s)) -> StateΠ s ς a -> StateΠ s ς b Source

isoFromStateΠMorph :: (StateΠ s ς a -> StateΠ s ς b) -> ς (a, s) -> ς (b, s) Source

newtype PolyStateΠ s ς a Source

Constructors

PolyStateΠ 

Fields

runPolyStateΠ :: ς (a, s)
 

isoPolyStateΠ :: PolyStateΠ s ς a ς (a, s) Source

isoToPolyStateΠMorph :: (ς (a, s) -> ς (b, s)) -> PolyStateΠ s ς a -> PolyStateΠ s ς b Source

isoFromPolyStateΠMorph :: (PolyStateΠ s ς a -> PolyStateΠ s ς b) -> ς (a, s) -> ς (b, s) Source

isoToFlowJoinΠMorph :: (ς (a ⇰♭⊔ s) -> ς (b ⇰♭⊔ s)) -> FlowJoinΠ s ς a -> FlowJoinΠ s ς b Source

isoFromFlowJoinΠMorph :: (FlowJoinΠ s ς a -> FlowJoinΠ s ς b) -> ς (a ⇰♭⊔ s) -> ς (b ⇰♭⊔ s) Source

newtype StateI s ι a Source

Constructors

StateI 

Fields

runStateI :: ι (a, s)
 

Instances

(Inject * ι ς, Functor ς) => Inject * (StateI s ι) (FlowJoinΠ s ς) Source 
Inject * ι ς => Inject * (StateI s ι) (PolyStateΠ s ς) Source 
Inject * ι ς => Inject * (StateI s ι) (StateΠ s ς) Source 

isoStateI :: StateI s ι a ι (a, s) Source

type NondetJoinI ι = ι Source

isoαGT :: GaloisTransformer ς₁ m₁ => (ς₂ ↝⇄ ς₁) -> (m₂ ↝⇄ m₁) -> forall a b. (ς₂ a -> ς₂ b) -> a -> m₂ b Source

isoγGT :: GaloisTransformer ς₁ m₁ => (ς₂ ↝⇄ ς₁) -> (m₂ ↝⇄ m₁) -> forall a b. (a -> m₂ b) -> ς₂ a -> ς₂ b Source

isoInject :: Inject ι₁ ς₁ => (ι₂ ↝⇄ ι₁) -> (ς₂ ↝⇄ ς₁) -> forall a. ι₂ a -> ς₂ a Source