-- | Core language constraints of Hydra. These constraints are trivial; all types and all terms are supported.

module Hydra.CoreLanguage where

import Hydra.Compute
import Hydra.Basics

import qualified Data.Set as S


hydraCoreLanguage :: Language m
hydraCoreLanguage :: forall m. Language m
hydraCoreLanguage = forall m. LanguageName -> LanguageConstraints m -> Language m
Language (String -> LanguageName
LanguageName String
"hydra/core") forall a b. (a -> b) -> a -> b
$ LanguageConstraints {
  languageConstraintsEliminationVariants :: Set EliminationVariant
languageConstraintsEliminationVariants = forall a. Ord a => [a] -> Set a
S.fromList [EliminationVariant]
eliminationVariants,
  languageConstraintsLiteralVariants :: Set LiteralVariant
languageConstraintsLiteralVariants = forall a. Ord a => [a] -> Set a
S.fromList [LiteralVariant]
literalVariants,
  languageConstraintsFloatTypes :: Set FloatType
languageConstraintsFloatTypes = forall a. Ord a => [a] -> Set a
S.fromList [FloatType]
floatTypes,
  languageConstraintsFunctionVariants :: Set FunctionVariant
languageConstraintsFunctionVariants = forall a. Ord a => [a] -> Set a
S.fromList [FunctionVariant]
functionVariants,
  languageConstraintsIntegerTypes :: Set IntegerType
languageConstraintsIntegerTypes = forall a. Ord a => [a] -> Set a
S.fromList [IntegerType]
integerTypes,
  languageConstraintsTermVariants :: Set TermVariant
languageConstraintsTermVariants = forall a. Ord a => [a] -> Set a
S.fromList [TermVariant]
termVariants,
  languageConstraintsTypeVariants :: Set TypeVariant
languageConstraintsTypeVariants = forall a. Ord a => [a] -> Set a
S.fromList [TypeVariant]
typeVariants,
  languageConstraintsTypes :: Type m -> Bool
languageConstraintsTypes = forall a b. a -> b -> a
const Bool
True }