{-# LANGUAGE TemplateHaskell #-}
module Numeric.Limp.Program.Program where

import Numeric.Limp.Program.Linear
import Numeric.Limp.Program.Constraint
import Numeric.Limp.Program.Bounds

import Control.Lens

data Direction
 = Minimise
 | Maximise

data Program z r c
 = Program
   { _objective     :: Linear z r c KR
   , _direction     :: Direction
   , _constraints   :: Constraint z r c
   , _bounds        :: [Bounds z r c]
   }

makeLenses ''Program


-- relax :: Program z r -> Program Void (Either z r)
-- relax = undefined