module Hydra.Dsl.Lib.Sets where

import Hydra.Phantoms
import Hydra.Sources.Libraries
import qualified Hydra.Dsl.Terms as Terms

import Data.Set


contains :: TTerm (a -> Set a -> Bool)
contains :: forall a. TTerm (a -> Set a -> Bool)
contains = Term -> TTerm (a -> Set a -> Bool)
forall a. Term -> TTerm a
TTerm (Term -> TTerm (a -> Set a -> Bool))
-> Term -> TTerm (a -> Set a -> Bool)
forall a b. (a -> b) -> a -> b
$ Name -> Term
Terms.primitive Name
_sets_contains

difference :: TTerm (Set a -> Set a -> Set a)
difference :: forall a. TTerm (Set a -> Set a -> Set a)
difference = Term -> TTerm (Set a -> Set a -> Set a)
forall a. Term -> TTerm a
TTerm (Term -> TTerm (Set a -> Set a -> Set a))
-> Term -> TTerm (Set a -> Set a -> Set a)
forall a b. (a -> b) -> a -> b
$ Name -> Term
Terms.primitive Name
_sets_difference

empty :: TTerm (Set a)
empty :: forall a. TTerm (Set a)
empty = Term -> TTerm (Set a)
forall a. Term -> TTerm a
TTerm (Term -> TTerm (Set a)) -> Term -> TTerm (Set a)
forall a b. (a -> b) -> a -> b
$ Name -> Term
Terms.primitive Name
_sets_empty

fromList :: TTerm ([a] -> Set a)
fromList :: forall a. TTerm ([a] -> Set a)
fromList = Term -> TTerm ([a] -> Set a)
forall a. Term -> TTerm a
TTerm (Term -> TTerm ([a] -> Set a)) -> Term -> TTerm ([a] -> Set a)
forall a b. (a -> b) -> a -> b
$ Name -> Term
Terms.primitive Name
_sets_fromList

insert :: TTerm (a -> Set a -> Set a)
insert :: forall a. TTerm (a -> Set a -> Set a)
insert = Term -> TTerm (a -> Set a -> Set a)
forall a. Term -> TTerm a
TTerm (Term -> TTerm (a -> Set a -> Set a))
-> Term -> TTerm (a -> Set a -> Set a)
forall a b. (a -> b) -> a -> b
$ Name -> Term
Terms.primitive Name
_sets_insert

intersection :: TTerm (Set a -> Set a -> Set a)
intersection :: forall a. TTerm (Set a -> Set a -> Set a)
intersection = Term -> TTerm (Set a -> Set a -> Set a)
forall a. Term -> TTerm a
TTerm (Term -> TTerm (Set a -> Set a -> Set a))
-> Term -> TTerm (Set a -> Set a -> Set a)
forall a b. (a -> b) -> a -> b
$ Name -> Term
Terms.primitive Name
_sets_intersection

isEmpty :: TTerm (Set a -> Bool)
isEmpty :: forall a. TTerm (Set a -> Bool)
isEmpty = Term -> TTerm (Set a -> Bool)
forall a. Term -> TTerm a
TTerm (Term -> TTerm (Set a -> Bool)) -> Term -> TTerm (Set a -> Bool)
forall a b. (a -> b) -> a -> b
$ Name -> Term
Terms.primitive Name
_sets_isEmpty

map :: TTerm ((a -> b) -> Set a -> Set b)
map :: forall a b. TTerm ((a -> b) -> Set a -> Set b)
map = Term -> TTerm ((a -> b) -> Set a -> Set b)
forall a. Term -> TTerm a
TTerm (Term -> TTerm ((a -> b) -> Set a -> Set b))
-> Term -> TTerm ((a -> b) -> Set a -> Set b)
forall a b. (a -> b) -> a -> b
$ Name -> Term
Terms.primitive Name
_sets_map

remove :: TTerm (a -> Set a -> Set a)
remove :: forall a. TTerm (a -> Set a -> Set a)
remove = Term -> TTerm (a -> Set a -> Set a)
forall a. Term -> TTerm a
TTerm (Term -> TTerm (a -> Set a -> Set a))
-> Term -> TTerm (a -> Set a -> Set a)
forall a b. (a -> b) -> a -> b
$ Name -> Term
Terms.primitive Name
_sets_remove

singleton :: TTerm (a -> Set a)
singleton :: forall a. TTerm (a -> Set a)
singleton = Term -> TTerm (a -> Set a)
forall a. Term -> TTerm a
TTerm (Term -> TTerm (a -> Set a)) -> Term -> TTerm (a -> Set a)
forall a b. (a -> b) -> a -> b
$ Name -> Term
Terms.primitive Name
_sets_singleton

size :: TTerm (Set a -> Int)
size :: forall a. TTerm (Set a -> Int)
size = Term -> TTerm (Set a -> Int)
forall a. Term -> TTerm a
TTerm (Term -> TTerm (Set a -> Int)) -> Term -> TTerm (Set a -> Int)
forall a b. (a -> b) -> a -> b
$ Name -> Term
Terms.primitive Name
_sets_size

toList :: TTerm (Set a -> [a])
toList :: forall a. TTerm (Set a -> [a])
toList = Term -> TTerm (Set a -> [a])
forall a. Term -> TTerm a
TTerm (Term -> TTerm (Set a -> [a])) -> Term -> TTerm (Set a -> [a])
forall a b. (a -> b) -> a -> b
$ Name -> Term
Terms.primitive Name
_sets_toList

union :: TTerm (Set a -> Set a -> Set a)
union :: forall a. TTerm (Set a -> Set a -> Set a)
union = Term -> TTerm (Set a -> Set a -> Set a)
forall a. Term -> TTerm a
TTerm (Term -> TTerm (Set a -> Set a -> Set a))
-> Term -> TTerm (Set a -> Set a -> Set a)
forall a b. (a -> b) -> a -> b
$ Name -> Term
Terms.primitive Name
_sets_union