Copyright | (c) Marcellus Siegburg 2019 |
---|---|
License | MIT |
Maintainer | marcellus.siegburg@uni-due.de |
Safe Haskell | None |
Language | Haskell2010 |
Language.Alloy.Call
Description
This module provides basic functionality to interact with Alloy. This library contains Alloy and an (internal) interface to interact with it. These libraries will be placed into the users directory during execution. A requirement for this library to work is a Java Runtime Environment (as it is required by Alloy).
Synopsis
- existsInstance :: String -> IO Bool
- getInstances :: Maybe Integer -> String -> IO [AlloyInstance]
- getSingle :: (IsString s, MonadError s m) => String -> AlloySig -> m (Set Object)
- getDouble :: (IsString s, MonadError s m) => String -> AlloySig -> m (Set (Object, Object))
- getTriple :: (IsString s, MonadError s m) => String -> AlloySig -> m (Set (Object, Object, Object))
- lookupSig :: (IsString s, MonadError s m) => Signature -> AlloyInstance -> m AlloySig
- objectName :: Object -> String
- relToMap :: (IsString s, MonadError s m, Ord k, Ord v) => (a -> (k, v)) -> Set a -> m (Map k (Set v))
- scoped :: String -> String -> Signature
- unscoped :: String -> Signature
- data Signature
- type Entries a = a Signature (Entry a Set)
- type AlloySig = Entry Map Set
- type AlloyInstance = Entries Map
Documentation
Arguments
:: String | The Alloy specification which should be loaded. |
-> IO Bool | Whether there exists an instance (within the given scope) |
Check if there exists a model for the given specification. This function calls
Alloy retrieving one instance. If there is no such instance, it returns false.
This function calls getInstances
.
Arguments
:: Maybe Integer | How many instances to return |
-> String | The Alloy specification which should be loaded. |
-> IO [AlloyInstance] |
This function may be used to get all model instances for a given Alloy
specification. It calls Alloy via a Java interface and returns the raw instance
answers as list of String
s.
getSingle :: (IsString s, MonadError s m) => String -> AlloySig -> m (Set Object) Source #
Retrieve a set of objects of a given AlloySig
.
Successful if the signatures relation is a set (or empty).
getDouble :: (IsString s, MonadError s m) => String -> AlloySig -> m (Set (Object, Object)) Source #
Retrieve a binary relation of objects of a given AlloySig
.
Successful if the signatures relation is binary (or empty).
getTriple :: (IsString s, MonadError s m) => String -> AlloySig -> m (Set (Object, Object, Object)) Source #
Retrieve a ternary relation of objects of a given AlloySig
.
Successful if the signatures relation is ternary (or empty).
lookupSig :: (IsString s, MonadError s m) => Signature -> AlloyInstance -> m AlloySig Source #
Lookup a signature within a given Alloy Instance.
objectName :: Object -> String Source #
Retrieve an objects name.
relToMap :: (IsString s, MonadError s m, Ord k, Ord v) => (a -> (k, v)) -> Set a -> m (Map k (Set v)) Source #
Transforms a relation into a Mapping.
Is only successful (i.e. returns return
if the given transformation function is
able to map the given values injectively.
An Alloy signature.
Instances
Eq Signature Source # | |
Ord Signature Source # | |
Show Signature Source # | |
type Entries a = a Signature (Entry a Set) Source #
A collection of Signatures with associated entries.
type AlloyInstance = Entries Map Source #
A complete Alloy instance.