module Satyros.QFIDL.Expressed where import Data.Set (Set) import qualified Data.Set as Set import GHC.Generics (Generic) import Satyros.QFIDL.Variable (Variable) data Expressed = LessThanEqualTo Variable Variable Int deriving stock ((forall x. Expressed -> Rep Expressed x) -> (forall x. Rep Expressed x -> Expressed) -> Generic Expressed forall x. Rep Expressed x -> Expressed forall x. Expressed -> Rep Expressed x forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a $cto :: forall x. Rep Expressed x -> Expressed $cfrom :: forall x. Expressed -> Rep Expressed x Generic, Expressed -> Expressed -> Bool (Expressed -> Expressed -> Bool) -> (Expressed -> Expressed -> Bool) -> Eq Expressed forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: Expressed -> Expressed -> Bool $c/= :: Expressed -> Expressed -> Bool == :: Expressed -> Expressed -> Bool $c== :: Expressed -> Expressed -> Bool Eq, Eq Expressed Eq Expressed -> (Expressed -> Expressed -> Ordering) -> (Expressed -> Expressed -> Bool) -> (Expressed -> Expressed -> Bool) -> (Expressed -> Expressed -> Bool) -> (Expressed -> Expressed -> Bool) -> (Expressed -> Expressed -> Expressed) -> (Expressed -> Expressed -> Expressed) -> Ord Expressed Expressed -> Expressed -> Bool Expressed -> Expressed -> Ordering Expressed -> Expressed -> Expressed forall a. Eq a -> (a -> a -> Ordering) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> a) -> (a -> a -> a) -> Ord a min :: Expressed -> Expressed -> Expressed $cmin :: Expressed -> Expressed -> Expressed max :: Expressed -> Expressed -> Expressed $cmax :: Expressed -> Expressed -> Expressed >= :: Expressed -> Expressed -> Bool $c>= :: Expressed -> Expressed -> Bool > :: Expressed -> Expressed -> Bool $c> :: Expressed -> Expressed -> Bool <= :: Expressed -> Expressed -> Bool $c<= :: Expressed -> Expressed -> Bool < :: Expressed -> Expressed -> Bool $c< :: Expressed -> Expressed -> Bool compare :: Expressed -> Expressed -> Ordering $ccompare :: Expressed -> Expressed -> Ordering $cp1Ord :: Eq Expressed Ord, Int -> Expressed -> ShowS [Expressed] -> ShowS Expressed -> String (Int -> Expressed -> ShowS) -> (Expressed -> String) -> ([Expressed] -> ShowS) -> Show Expressed forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [Expressed] -> ShowS $cshowList :: [Expressed] -> ShowS show :: Expressed -> String $cshow :: Expressed -> String showsPrec :: Int -> Expressed -> ShowS $cshowsPrec :: Int -> Expressed -> ShowS Show) variablesInExpressed :: Expressed -> Set Variable variablesInExpressed :: Expressed -> Set Variable variablesInExpressed (LessThanEqualTo Variable x1 Variable x2 Int _) = [Variable] -> Set Variable forall a. Ord a => [a] -> Set a Set.fromList [Variable x1, Variable x2]