maam-0.1.0.0: A monadic framework for abstract interpretation.

Safe HaskellNone
LanguageHaskell2010

Lang.CPS.Semantics

Documentation

type TimeC τ = (Time τ, InitialΨ), OrdΨ), PrettyΨ)) Source

type ValC lτ dτ val = (Val lτ dτ Ψ (val lτ dτ Ψ), Ord (val lτ dτ Ψ), PartialOrder (val lτ dτ Ψ), JoinLattice (val lτ dτ Ψ), Pretty (val lτ dτ Ψ)) Source

type MonadC val lτ dτ m = (Monad m, MonadZero m, MonadPlus m, MonadState (𝒮 val lτ dτ Ψ) m) Source

class (TimeC lτ, TimeC dτ, ValC lτ dτ val, MonadC val lτ dτ m) => Analysis val lτ dτ m | m -> val, m -> lτ, m -> dτ Source

Instances

(TimeC lτ, TimeC dτ, ValC lτ dτ val) => Analysis val lτ dτ (PS val lτ dτ Ψ) 
(TimeC lτ, TimeC dτ, ValC lτ dτ val) => Analysis val lτ dτ (FI val lτ dτ Ψ) 
(TimeC lτ, TimeC dτ, ValC lτ dτ val) => Analysis val lτ dτ (FS val lτ dτ Ψ) 

type GC m = SGCall -> m () Source

type CreateClo lτ dτ m = LocNum -> [SGName] -> SGCall -> m (Clo lτ dτ Ψ) Source

new :: Analysis val lτ dτ m => SGName -> m (Addr lτ dτ Ψ) Source

bind :: Analysis val lτ dτ m => SGName -> val lτ dτ Ψ -> Map SGName (Addr lτ dτ Ψ) -> m (Map SGName (Addr lτ dτ Ψ)) Source

bindM :: Analysis val lτ dτ m => SGName -> val lτ dτ Ψ -> m () Source

var :: Analysis val lτ dτ m => SGName -> m (val lτ dτ Ψ) Source

lam :: Analysis val lτ dτ m => CreateClo lτ dτ m -> LocNum -> [SGName] -> SGCall -> m (val lτ dτ Ψ) Source

pico :: Analysis val lτ dτ m => SGPico -> m (val lτ dτ Ψ) Source

atom :: Analysis val lτ dτ m => CreateClo lτ dτ m -> SGAtom -> m (val lτ dτ Ψ) Source

apply :: Analysis val lτ dτ m => TimeFilter -> SGCall -> val lτ dτ Ψ -> [val lτ dτ Ψ] -> m SGCall Source

call :: Analysis val lτ dτ m => GC m -> CreateClo lτ dτ m -> TimeFilter -> TimeFilter -> SGCall -> m SGCall Source

nogc :: Monad m => SGCall -> m () Source

closureTouched :: (TimeC lτ, TimeC dτ) => Clo lτ dτ Ψ -> Set (Addr lτ dτ Ψ) Source

addrTouched :: (TimeC lτ, TimeC dτ, ValC lτ dτ val) => Map (Addr lτ dτ Ψ) (val lτ dτ Ψ) -> Addr lτ dτ Ψ -> Set (Addr lτ dτ Ψ) Source

currClosure :: Analysis val lτ dτ m => SGCall -> m (Clo lτ dτ Ψ) Source

yesgc :: Analysis val lτ dτ m => SGCall -> m () Source

linkClo :: Analysis val lτ dτ m => LocNum -> [SGName] -> SGCall -> m (Clo lτ dτ Ψ) Source

copyClo :: Analysis val lτ dτ m => LocNum -> [SGName] -> SGCall -> m (Clo lτ dτ Ψ) Source

type MonadStateSpaceC ς ς' m = (MonadStep ς m, Inject ς, IsomorphismSGCall) (ς' SGCall)) Source

class (MonadStateSpaceC ς ς' m, StateSpaceC ς') => Execution ς ς' m | m -> ς, m -> ς' Source

Instances

(TimeC lτ, TimeC dτ, ValC lτ dτ val) => Execution (PSΣ val lτ dτ Ψ) (PSΣ𝒫 val lτ dτ Ψ) (PS val lτ dτ Ψ) 
(TimeC lτ, TimeC dτ, ValC lτ dτ val) => Execution (FIΣ val lτ dτ Ψ) (FIΣ𝒫 val lτ dτ Ψ) (FI val lτ dτ Ψ) 
(TimeC lτ, TimeC dτ, ValC lτ dτ val) => Execution (FSΣ val lτ dτ Ψ) (FSΣ𝒫 val lτ dτ Ψ) (FS val lτ dτ Ψ) 

exec :: forall val lτ dτ ς ς' m. (Analysis val lτ dτ m, Execution ς ς' m) => GC m -> CreateClo lτ dτ m -> TimeFilter -> TimeFilter -> SGCall -> ς' SGCall Source

execCollect :: forall val lτ dτ ς ς' m. (Analysis val lτ dτ m, Execution ς ς' m) => GC m -> CreateClo lτ dτ m -> TimeFilter -> TimeFilter -> SGCall -> ς' SGCall Source

type UniTime τ = W (TimeC τ) Source

data ExTime where Source

Constructors

ExTime :: forall τ. UniTime τ -> ExTime 

type UniVal val = forall lτ dτ. (TimeC lτ, TimeC dτ) => W (ValC lτ dτ val) Source

data ExVal where Source

Constructors

ExVal :: forall val. UniVal val -> ExVal 

type UniMonad ς ς' m = forall val lτ dτ. (TimeC lτ, TimeC dτ, ValC lτ dτ val) => W (Analysis val lτ dτ (m val lτ dτ Ψ), Execution (ς val lτ dτ Ψ) (ς' val lτ dτ Ψ) (m val lτ dτ Ψ)) Source

data ExMonad where Source

Constructors

ExMonad :: forall ς ς' m. UniMonad ς ς' m -> ExMonad 

newtype AllGC Source

Constructors

AllGC 

Fields

runAllGC :: forall val lτ dτ m. Analysis val lτ dτ m => GC m
 

newtype AllCreateClo Source

Constructors

AllCreateClo 

Fields

runAllCreateClo :: forall val lτ dτ m. Analysis val lτ dτ m => CreateClo lτ dτ m
 

data ExSigma where Source

Constructors

ExSigma :: StateSpaceC ς => ς SGCall -> ExSigma