| Copyright | (c) Joel Burget Levent Erkok | 
|---|---|
| License | BSD3 | 
| Maintainer | erkokl@gmail.com | 
| Stability | experimental | 
| Safe Haskell | None | 
| Language | Haskell2010 | 
Data.SBV.Tuple
Description
Accessing symbolic tuple fields and deconstruction.
Synopsis
- (^.) :: a -> (a -> b) -> b
- _1 :: HasField "_1" b a => SBV a -> SBV b
- _2 :: HasField "_2" b a => SBV a -> SBV b
- _3 :: HasField "_3" b a => SBV a -> SBV b
- _4 :: HasField "_4" b a => SBV a -> SBV b
- _5 :: HasField "_5" b a => SBV a -> SBV b
- _6 :: HasField "_6" b a => SBV a -> SBV b
- _7 :: HasField "_7" b a => SBV a -> SBV b
- _8 :: HasField "_8" b a => SBV a -> SBV b
- tuple :: Tuple tup a => a -> SBV tup
- untuple :: Tuple tup a => SBV tup -> a
Symbolic field access
(^.) :: a -> (a -> b) -> b infixl 8 Source #
Field access, inspired by the lens library. This is merely reverse
 application, but allows us to write things like (1, 2)^._1 which is
 likely to be familiar to most Haskell programmers out there. Note that
 this is precisely equivalent to _1 (1, 2), but perhaps it reads a little
 nicer.
_1 :: HasField "_1" b a => SBV a -> SBV b Source #
Access the 1st element of an STupleN, 2 <= N <= 8. Also see ^..
_2 :: HasField "_2" b a => SBV a -> SBV b Source #
Access the 2nd element of an STupleN, 2 <= N <= 8. Also see ^..
_3 :: HasField "_3" b a => SBV a -> SBV b Source #
Access the 3nd element of an STupleN, 3 <= N <= 8. Also see ^..
_4 :: HasField "_4" b a => SBV a -> SBV b Source #
Access the 4th element of an STupleN, 4 <= N <= 8. Also see ^..
_5 :: HasField "_5" b a => SBV a -> SBV b Source #
Access the 5th element of an STupleN, 5 <= N <= 8. Also see ^..
_6 :: HasField "_6" b a => SBV a -> SBV b Source #
Access the 6th element of an STupleN, 6 <= N <= 8. Also see ^..
_7 :: HasField "_7" b a => SBV a -> SBV b Source #
Access the 7th element of an STupleN, 7 <= N <= 8. Also see ^..
_8 :: HasField "_8" b a => SBV a -> SBV b Source #
Access the 8th element of an STupleN, 8 <= N <= 8. Also see ^..
Tupling and untupling
tuple :: Tuple tup a => a -> SBV tup Source #
Constructing a tuple from its parts. Forms an isomorphism pair with untuple:
>>>prove $ \p -> untuple @(Integer, Bool, (String, Char)) (tuple p) .== pQ.E.D.
untuple :: Tuple tup a => SBV tup -> a Source #
Deconstruct a tuple, getting its constituent parts apart. Forms an
 isomorphism pair with tuple:
>>>prove $ \p -> tuple @(Integer, Bool, (String, Char)) (untuple p) .== pQ.E.D.
Orphan instances
| (SymVal a, Metric a, SymVal b, Metric b) => Metric (a, b) Source # | |
| Associated Types type MetricSpace (a, b) Source # Methods toMetricSpace :: SBV (a, b) -> SBV (MetricSpace (a, b)) Source # fromMetricSpace :: SBV (MetricSpace (a, b)) -> SBV (a, b) Source # msMinimize :: (MonadSymbolic m, SolverContext m) => String -> SBV (a, b) -> m () Source # msMaximize :: (MonadSymbolic m, SolverContext m) => String -> SBV (a, b) -> m () Source # | |
| (SymVal a, Metric a, SymVal b, Metric b, SymVal c, Metric c) => Metric (a, b, c) Source # | |
| Associated Types type MetricSpace (a, b, c) Source # Methods toMetricSpace :: SBV (a, b, c) -> SBV (MetricSpace (a, b, c)) Source # fromMetricSpace :: SBV (MetricSpace (a, b, c)) -> SBV (a, b, c) Source # msMinimize :: (MonadSymbolic m, SolverContext m) => String -> SBV (a, b, c) -> m () Source # msMaximize :: (MonadSymbolic m, SolverContext m) => String -> SBV (a, b, c) -> m () Source # | |
| (SymVal a, Metric a, SymVal b, Metric b, SymVal c, Metric c, SymVal d, Metric d) => Metric (a, b, c, d) Source # | |
| Associated Types type MetricSpace (a, b, c, d) Source # Methods toMetricSpace :: SBV (a, b, c, d) -> SBV (MetricSpace (a, b, c, d)) Source # fromMetricSpace :: SBV (MetricSpace (a, b, c, d)) -> SBV (a, b, c, d) Source # msMinimize :: (MonadSymbolic m, SolverContext m) => String -> SBV (a, b, c, d) -> m () Source # msMaximize :: (MonadSymbolic m, SolverContext m) => String -> SBV (a, b, c, d) -> m () Source # | |
| (SymVal a, Metric a, SymVal b, Metric b, SymVal c, Metric c, SymVal d, Metric d, SymVal e, Metric e) => Metric (a, b, c, d, e) Source # | |
| Associated Types type MetricSpace (a, b, c, d, e) Source # Methods toMetricSpace :: SBV (a, b, c, d, e) -> SBV (MetricSpace (a, b, c, d, e)) Source # fromMetricSpace :: SBV (MetricSpace (a, b, c, d, e)) -> SBV (a, b, c, d, e) Source # msMinimize :: (MonadSymbolic m, SolverContext m) => String -> SBV (a, b, c, d, e) -> m () Source # msMaximize :: (MonadSymbolic m, SolverContext m) => String -> SBV (a, b, c, d, e) -> m () Source # | |
| (SymVal a, Metric a, SymVal b, Metric b, SymVal c, Metric c, SymVal d, Metric d, SymVal e, Metric e, SymVal f, Metric f) => Metric (a, b, c, d, e, f) Source # | |
| Associated Types type MetricSpace (a, b, c, d, e, f) Source # Methods toMetricSpace :: SBV (a, b, c, d, e, f) -> SBV (MetricSpace (a, b, c, d, e, f)) Source # fromMetricSpace :: SBV (MetricSpace (a, b, c, d, e, f)) -> SBV (a, b, c, d, e, f) Source # msMinimize :: (MonadSymbolic m, SolverContext m) => String -> SBV (a, b, c, d, e, f) -> m () Source # msMaximize :: (MonadSymbolic m, SolverContext m) => String -> SBV (a, b, c, d, e, f) -> m () Source # | |
| (SymVal a, Metric a, SymVal b, Metric b, SymVal c, Metric c, SymVal d, Metric d, SymVal e, Metric e, SymVal f, Metric f, SymVal g, Metric g) => Metric (a, b, c, d, e, f, g) Source # | |
| Associated Types type MetricSpace (a, b, c, d, e, f, g) Source # Methods toMetricSpace :: SBV (a, b, c, d, e, f, g) -> SBV (MetricSpace (a, b, c, d, e, f, g)) Source # fromMetricSpace :: SBV (MetricSpace (a, b, c, d, e, f, g)) -> SBV (a, b, c, d, e, f, g) Source # msMinimize :: (MonadSymbolic m, SolverContext m) => String -> SBV (a, b, c, d, e, f, g) -> m () Source # msMaximize :: (MonadSymbolic m, SolverContext m) => String -> SBV (a, b, c, d, e, f, g) -> m () Source # | |
| (SymVal a, Metric a, SymVal b, Metric b, SymVal c, Metric c, SymVal d, Metric d, SymVal e, Metric e, SymVal f, Metric f, SymVal g, Metric g, SymVal h, Metric h) => Metric (a, b, c, d, e, f, g, h) Source # | |
| Associated Types type MetricSpace (a, b, c, d, e, f, g, h) Source # Methods toMetricSpace :: SBV (a, b, c, d, e, f, g, h) -> SBV (MetricSpace (a, b, c, d, e, f, g, h)) Source # fromMetricSpace :: SBV (MetricSpace (a, b, c, d, e, f, g, h)) -> SBV (a, b, c, d, e, f, g, h) Source # msMinimize :: (MonadSymbolic m, SolverContext m) => String -> SBV (a, b, c, d, e, f, g, h) -> m () Source # msMaximize :: (MonadSymbolic m, SolverContext m) => String -> SBV (a, b, c, d, e, f, g, h) -> m () Source # | |