sbv-10.9: SMT Based Verification: Symbolic Haskell theorem prover using SMT solving.
Copyright(c) Levent Erkok
LicenseBSD3
Maintainererkokl@gmail.com
Stabilityexperimental
Safe HaskellNone
LanguageHaskell2010

Documentation.SBV.Examples.Puzzles.Rabbits

Description

A puzzle, attributed to Lewis Caroll:

  • All rabbits, that are not greedy, are black
  • No old rabbits are free from greediness
  • Therefore: Some black rabbits are not old

What's implicit here is that there is a rabbit that must be not-greedy; which we add to our constraints.

Synopsis

Documentation

data Rabbit Source #

A universe of rabbits

Instances

Instances details
Data Rabbit Source # 
Instance details

Defined in Documentation.SBV.Examples.Puzzles.Rabbits

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Rabbit -> c Rabbit #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Rabbit #

toConstr :: Rabbit -> Constr #

dataTypeOf :: Rabbit -> DataType #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Rabbit) #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Rabbit) #

gmapT :: (forall b. Data b => b -> b) -> Rabbit -> Rabbit #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Rabbit -> r #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Rabbit -> r #

gmapQ :: (forall d. Data d => d -> u) -> Rabbit -> [u] #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Rabbit -> u #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Rabbit -> m Rabbit #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Rabbit -> m Rabbit #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Rabbit -> m Rabbit #

Read Rabbit Source # 
Instance details

Defined in Documentation.SBV.Examples.Puzzles.Rabbits

Show Rabbit Source # 
Instance details

Defined in Documentation.SBV.Examples.Puzzles.Rabbits

SymVal Rabbit Source # 
Instance details

Defined in Documentation.SBV.Examples.Puzzles.Rabbits

HasKind Rabbit Source # 
Instance details

Defined in Documentation.SBV.Examples.Puzzles.Rabbits

SatModel Rabbit Source # 
Instance details

Defined in Documentation.SBV.Examples.Puzzles.Rabbits

Methods

parseCVs :: [CV] -> Maybe (Rabbit, [CV]) Source #

cvtModel :: (Rabbit -> Maybe b) -> Maybe (Rabbit, [CV]) -> Maybe (b, [CV]) Source #

type SRabbit = SBV Rabbit Source #

Symbolic version of the type Rabbit.

greedy :: SRabbit -> SBool Source #

Identify those rabbits that are greedy. Note that we leave the predicate uninterpreted.

black :: SRabbit -> SBool Source #

Identify those rabbits that are black. Note that we leave the predicate uninterpreted.

old :: SRabbit -> SBool Source #

Identify those rabbits that are old. Note that we leave the predicate uninterpreted.

rabbits :: Predicate Source #

Express the puzzle.

rabbitsAreOK :: IO ThmResult Source #

Prove the claim. We have:

>>> rabbitsAreOK
Q.E.D.