hydra-0.13.0: src/main/haskell/Hydra/Dsl/Meta/Lib/Equality.hs
-- | Phantom-typed term DSL for the hydra.lib.equality library
{-# LANGUAGE FlexibleContexts #-}
module Hydra.Dsl.Meta.Lib.Equality where
import Hydra.Dsl.AsTerm
import Hydra.Dsl.Meta.Phantoms
import Hydra.Phantoms
import Hydra.Util
import qualified Hydra.Dsl.Terms as Terms
import Hydra.Sources.Libraries
import Data.Int
compare :: AsTerm t2 a => TTerm a -> t2 -> TTerm Comparison
compare t1 t2 = primitive2 _equality_compare t1 (asTerm t2)
equal :: AsTerm t2 a => TTerm a -> t2 -> TTerm Bool
equal t1 t2 = primitive2 _equality_equal t1 (asTerm t2)
gt :: AsTerm t2 a => TTerm a -> t2 -> TTerm Bool
gt t1 t2 = primitive2 _equality_gt t1 (asTerm t2)
gte :: AsTerm t2 a => TTerm a -> t2 -> TTerm Bool
gte t1 t2 = primitive2 _equality_gte t1 (asTerm t2)
identity :: TTerm a -> TTerm a
identity = primitive1 _equality_identity
lt :: AsTerm t2 a => TTerm a -> t2 -> TTerm Bool
lt t1 t2 = primitive2 _equality_lt t1 (asTerm t2)
lte :: AsTerm t2 a => TTerm a -> t2 -> TTerm Bool
lte t1 t2 = primitive2 _equality_lte t1 (asTerm t2)
max :: AsTerm t2 a => TTerm a -> t2 -> TTerm a
max t1 t2 = primitive2 _equality_max t1 (asTerm t2)
min :: AsTerm t2 a => TTerm a -> t2 -> TTerm a
min t1 t2 = primitive2 _equality_min t1 (asTerm t2)