camfort-0.900: CamFort - Cambridge Fortran infrastructure

Camfort.Specification.Stencils.Syntax

Synopsis

# Documentation

### 0. Representations

data Approximation a Source #

Constructors

 Exact a Bound (Maybe a) (Maybe a)

Instances

 Source # Methodsfmap :: (a -> b) -> Approximation a -> Approximation b #(<$) :: a -> Approximation b -> Approximation a # Eq a => Eq (Approximation a) Source # Methods(==) :: Approximation a -> Approximation a -> Bool #(/=) :: Approximation a -> Approximation a -> Bool # Data a => Data (Approximation a) Source # Methodsgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Approximation a -> c (Approximation a) #gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Approximation a) #dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c (Approximation a)) #dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Approximation a)) #gmapT :: (forall b. Data b => b -> b) -> Approximation a -> Approximation a #gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Approximation a -> r #gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Approximation a -> r #gmapQ :: (forall d. Data d => d -> u) -> Approximation a -> [u] #gmapQi :: Int -> (forall d. Data d => d -> u) -> Approximation a -> u #gmapM :: Monad m => (forall d. Data d => d -> m d) -> Approximation a -> m (Approximation a) #gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Approximation a -> m (Approximation a) #gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Approximation a -> m (Approximation a) # Source # Methods Show a => Show (Approximation a) Source # MethodsshowsPrec :: Int -> Approximation a -> ShowS #show :: Approximation a -> String #showList :: [Approximation a] -> ShowS # Source # Methods Source # Methods Source # Associated Types Methods Source # Associated Typestype Domain (Approximation Spatial) :: * Source # Methods Source # Source # type Domain (Approximation Spatial) = Approximation (Set [Int]) ### 1 . Specification syntax lookupAggregate :: Eq a => [([a], b)] -> a -> [b] Source # Constructors  Specification (Multiplicity (Approximation Spatial)) Instances  Source # Methods Source # Methodsgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Specification -> c Specification #gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Specification #dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c Specification) #dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Specification) #gmapT :: (forall b. Data b => b -> b) -> Specification -> Specification #gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Specification -> r #gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Specification -> r #gmapQ :: (forall d. Data d => d -> u) -> Specification -> [u] #gmapQi :: Int -> (forall d. Data d => d -> u) -> Specification -> u #gmapM :: Monad m => (forall d. Data d => d -> m d) -> Specification -> m Specification #gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Specification -> m Specification #gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Specification -> m Specification # Source # MethodsshowList :: [Specification] -> ShowS # Source # Associated Types Methods Source # Methods Source # Methods Source # data Spatial Source # Constructors  Spatial RegionSum Instances  Source # Methods(==) :: Spatial -> Spatial -> Bool #(/=) :: Spatial -> Spatial -> Bool # Source # Methodsgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Spatial -> c Spatial #gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Spatial #dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c Spatial) #dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Spatial) #gmapT :: (forall b. Data b => b -> b) -> Spatial -> Spatial #gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Spatial -> r #gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Spatial -> r #gmapQ :: (forall d. Data d => d -> u) -> Spatial -> [u] #gmapQi :: Int -> (forall d. Data d => d -> u) -> Spatial -> u #gmapM :: Monad m => (forall d. Data d => d -> m d) -> Spatial -> m Spatial #gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Spatial -> m Spatial #gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Spatial -> m Spatial # Source # MethodsshowList :: [Spatial] -> ShowS # Source # Methods Source # Associated Typestype Domain Spatial :: * Source # Methodsdimensions :: Spatial -> [Int] Source # Source # Methods Source # Methods Source # Methods Source # Associated Types Methods Source # Associated Typestype Domain (Approximation Spatial) :: * Source # Methods type Domain Spatial Source # type Domain Spatial = Set [Int] Source # Source # type Domain (Approximation Spatial) = Approximation (Set [Int]) hasDuplicates :: Eq a => [a] -> ([a], Bool) Source # data Linearity Source # Constructors  Linear NonLinear Instances  Source # Methods Source # Methodsgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Linearity -> c Linearity #gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Linearity #dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c Linearity) #dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Linearity) #gmapT :: (forall b. Data b => b -> b) -> Linearity -> Linearity #gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Linearity -> r #gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Linearity -> r #gmapQ :: (forall d. Data d => d -> u) -> Linearity -> [u] #gmapQi :: Int -> (forall d. Data d => d -> u) -> Linearity -> u #gmapM :: Monad m => (forall d. Data d => d -> m d) -> Linearity -> m Linearity #gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Linearity -> m Linearity #gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Linearity -> m Linearity # Source # Methods data Multiplicity a Source # Constructors  Multiple a Single a Instances  Source # Methodsfmap :: (a -> b) -> Multiplicity a -> Multiplicity b #(<$) :: a -> Multiplicity b -> Multiplicity a # Eq a => Eq (Multiplicity a) Source # Methods(==) :: Multiplicity a -> Multiplicity a -> Bool #(/=) :: Multiplicity a -> Multiplicity a -> Bool # Data a => Data (Multiplicity a) Source # Methodsgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Multiplicity a -> c (Multiplicity a) #gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Multiplicity a) #dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c (Multiplicity a)) #dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Multiplicity a)) #gmapT :: (forall b. Data b => b -> b) -> Multiplicity a -> Multiplicity a #gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Multiplicity a -> r #gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Multiplicity a -> r #gmapQ :: (forall d. Data d => d -> u) -> Multiplicity a -> [u] #gmapQi :: Int -> (forall d. Data d => d -> u) -> Multiplicity a -> u #gmapM :: Monad m => (forall d. Data d => d -> m d) -> Multiplicity a -> m (Multiplicity a) #gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Multiplicity a -> m (Multiplicity a) #gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Multiplicity a -> m (Multiplicity a) # Show a => Show (Multiplicity a) Source # MethodsshowsPrec :: Int -> Multiplicity a -> ShowS #show :: Multiplicity a -> String #showList :: [Multiplicity a] -> ShowS # Source # Methods Source # Associated Types Methods Source #

type Depth = Int Source #

data Region where Source #

Constructors

 Forward :: Depth -> Dimension -> IsRefl -> Region Backward :: Depth -> Dimension -> IsRefl -> Region Centered :: Depth -> Dimension -> IsRefl -> Region

Instances

 Source # Methods(==) :: Region -> Region -> Bool #(/=) :: Region -> Region -> Bool # Source # Methodsgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Region -> c Region #gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Region #dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c Region) #dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Region) #gmapT :: (forall b. Data b => b -> b) -> Region -> Region #gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Region -> r #gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Region -> r #gmapQ :: (forall d. Data d => d -> u) -> Region -> [u] #gmapQi :: Int -> (forall d. Data d => d -> u) -> Region -> u #gmapM :: Monad m => (forall d. Data d => d -> m d) -> Region -> m Region #gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Region -> m Region #gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Region -> m Region # Source # Methods(<) :: Region -> Region -> Bool #(<=) :: Region -> Region -> Bool #(>) :: Region -> Region -> Bool #(>=) :: Region -> Region -> Bool #max :: Region -> Region -> Region #min :: Region -> Region -> Region # Source # MethodsshowsPrec :: Int -> Region -> ShowS #showList :: [Region] -> ShowS # Source # Associated Typestype Domain Region :: * Source # Methodsdimensions :: Region -> [Int] Source # type Domain Region Source # type Domain Region = Set [Int]

newtype RegionProd Source #

Constructors

 Product FieldsunProd :: [Region]

Instances

 Source # Methods Source # Methodsgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> RegionProd -> c RegionProd #gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c RegionProd #dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c RegionProd) #dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c RegionProd) #gmapT :: (forall b. Data b => b -> b) -> RegionProd -> RegionProd #gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> RegionProd -> r #gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> RegionProd -> r #gmapQ :: (forall d. Data d => d -> u) -> RegionProd -> [u] #gmapQi :: Int -> (forall d. Data d => d -> u) -> RegionProd -> u #gmapM :: Monad m => (forall d. Data d => d -> m d) -> RegionProd -> m RegionProd #gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> RegionProd -> m RegionProd #gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> RegionProd -> m RegionProd # Source # Methods Source # MethodsshowList :: [RegionProd] -> ShowS # Source # Methods Source # Associated Typestype Domain RegionProd :: * Source # Methods type Domain RegionProd Source # type Domain RegionProd = Set [Int]

newtype RegionSum Source #

Constructors

 Sum FieldsunSum :: [RegionProd]

Instances

 Source # Methods Source # Methodsgfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> RegionSum -> c RegionSum #gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c RegionSum #dataCast1 :: Typeable (* -> *) t => (forall d. Data d => c (t d)) -> Maybe (c RegionSum) #dataCast2 :: Typeable (* -> * -> *) t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c RegionSum) #gmapT :: (forall b. Data b => b -> b) -> RegionSum -> RegionSum #gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> RegionSum -> r #gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> RegionSum -> r #gmapQ :: (forall d. Data d => d -> u) -> RegionSum -> [u] #gmapQi :: Int -> (forall d. Data d => d -> u) -> RegionSum -> u #gmapM :: Monad m => (forall d. Data d => d -> m d) -> RegionSum -> m RegionSum #gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> RegionSum -> m RegionSum #gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> RegionSum -> m RegionSum # Source # MethodsshowList :: [RegionSum] -> ShowS # Source # Methods Source # Associated Typestype Domain RegionSum :: * Source # Methods Source # Methods Source # Methods type Domain RegionSum Source # type Domain RegionSum = Set [Int]

class RegionRig t where Source #

Minimal complete definition

Methods

sum :: t -> t -> t Source #

prod :: t -> t -> t Source #

one :: t Source #

zero :: t Source #

isUnit :: t -> Bool Source #

Instances

 Source # Methods Source # Methods RegionRig a => RegionRig (Maybe a) Source # Methodssum :: Maybe a -> Maybe a -> Maybe a Source #prod :: Maybe a -> Maybe a -> Maybe a Source #isUnit :: Maybe a -> Bool Source # Source # Methods

showL :: Show a => [a] -> String Source #

showRegion :: (Show a1, Show a) => [Char] -> a -> a1 -> Bool -> [Char] Source #

groupKeyBy :: Eq b => [(a, b)] -> [([a], b)] Source #