lattices-2.1: Fine-grained library for constructing and manipulating lattices
Safe Haskell Safe
Language Haskell2010

Algebra.Heyting.Free

Synopsis

Documentation

data Free a Source #

Free Heyting algebra.

Note: Eq and PartialOrd instances aren't structural.

>>> Top == (Var 'x' ==> Var 'x')
True
>>> Var 'x' == Var 'y'
False

You can test for taulogogies:

>>> leq Top $ (Var 'A' /\ Var 'B' ==> Var 'C') <=>  (Var 'A' ==> Var 'B' ==> Var 'C')
True
>>> leq Top $ (Var 'A' /\ neg (Var 'A')) <=> Bottom
True
>>> leq Top $ (Var 'A' \/ neg (Var 'A')) <=> Top
False

Constructors

Var a
Bottom
Top
( Free a) :/\: ( Free a) infixr 6
( Free a) :\/: ( Free a) infixr 5
( Free a) :=>: ( Free a) infixr 4

Instances

Instances details
Monad Free Source #
Instance details

Defined in Algebra.Heyting.Free

Functor Free Source #
Instance details

Defined in Algebra.Heyting.Free

Applicative Free Source #
Instance details

Defined in Algebra.Heyting.Free

Foldable Free Source #
Instance details

Defined in Algebra.Heyting.Free

Traversable Free Source #
Instance details

Defined in Algebra.Heyting.Free

Ord a => Eq ( Free a) Source #
Instance details

Defined in Algebra.Heyting.Free

Data a => Data ( Free a) Source #
Instance details

Defined in Algebra.Heyting.Free

Methods

gfoldl :: ( forall d b. Data d => c (d -> b) -> d -> c b) -> ( forall g. g -> c g) -> Free a -> c ( Free a) Source #

gunfold :: ( forall b r. Data b => c (b -> r) -> c r) -> ( forall r. r -> c r) -> Constr -> c ( Free a) Source #

toConstr :: Free a -> Constr Source #

dataTypeOf :: Free a -> DataType Source #

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

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

gmapT :: ( forall b. Data b => b -> b) -> Free a -> Free a Source #

gmapQl :: (r -> r' -> r) -> r -> ( forall d. Data d => d -> r') -> Free a -> r Source #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> ( forall d. Data d => d -> r') -> Free a -> r Source #

gmapQ :: ( forall d. Data d => d -> u) -> Free a -> [u] Source #

gmapQi :: Int -> ( forall d. Data d => d -> u) -> Free a -> u Source #

gmapM :: Monad m => ( forall d. Data d => d -> m d) -> Free a -> m ( Free a) Source #

gmapMp :: MonadPlus m => ( forall d. Data d => d -> m d) -> Free a -> m ( Free a) Source #

gmapMo :: MonadPlus m => ( forall d. Data d => d -> m d) -> Free a -> m ( Free a) Source #

Show a => Show ( Free a) Source #
Instance details

Defined in Algebra.Heyting.Free

Generic ( Free a) Source #
Instance details

Defined in Algebra.Heyting.Free

Associated Types

type Rep ( Free a) :: Type -> Type Source #

Arbitrary a => Arbitrary ( Free a) Source #
Instance details

Defined in Algebra.Heyting.Free

Ord a => PartialOrd ( Free a) Source #
Instance details

Defined in Algebra.Heyting.Free

BoundedMeetSemiLattice ( Free a) Source #
Instance details

Defined in Algebra.Heyting.Free

BoundedJoinSemiLattice ( Free a) Source #
Instance details

Defined in Algebra.Heyting.Free

Lattice ( Free a) Source #
Instance details

Defined in Algebra.Heyting.Free

Heyting ( Free a) Source #
Instance details

Defined in Algebra.Heyting.Free

Generic1 Free Source #
Instance details

Defined in Algebra.Heyting.Free

Associated Types

type Rep1 Free :: k -> Type Source #

Methods

from1 :: forall (a :: k). Free a -> Rep1 Free a Source #

to1 :: forall (a :: k). Rep1 Free a -> Free a Source #

type Rep ( Free a) Source #
Instance details

Defined in Algebra.Heyting.Free

type Rep1 Free Source #
Instance details

Defined in Algebra.Heyting.Free