Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell98 |
Language.Fixpoint.Horn.Types
Description
This module formalizes the key datatypes needed to represent Horn NNF constraints as described in "Local Refinement Typing", ICFP 2017
Horn Constraints and their components
Query
is an NNF Horn Constraint.
Constructors
Query | |
Fields
|
Instances
Constructors
Head !Pred !a | p |
CAnd ![Cstr a] | c1 ... cn |
All !(Bind a) !(Cstr a) | all x:t. p => c |
Any !(Bind a) !(Cstr a) | exi x:t. p / c or is it exi x:t. p => c? |
Instances
HPred
is a Horn predicate that appears as LHS (body) or RHS (head) of constraints
Instances
FromJSON Pred Source # | |
Defined in Language.Fixpoint.Horn.Types | |
ToJSON Pred Source # | |
Data Pred Source # | |
Defined in Language.Fixpoint.Horn.Types Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Pred -> c Pred # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Pred # dataTypeOf :: Pred -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Pred) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Pred) # gmapT :: (forall b. Data b => b -> b) -> Pred -> Pred # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Pred -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Pred -> r # gmapQ :: (forall d. Data d => d -> u) -> Pred -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Pred -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Pred -> m Pred # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Pred -> m Pred # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Pred -> m Pred # | |
Generic Pred Source # | |
Show Pred Source # | |
Eq Pred Source # | |
ToHornSMT Pred Source # | |
PPrint Pred Source # | |
Defined in Language.Fixpoint.Horn.Types | |
Subable Pred Source # | |
Foldable Pred Source # | |
type Rep Pred Source # | |
Defined in Language.Fixpoint.Horn.Types type Rep Pred = D1 ('MetaData "Pred" "Language.Fixpoint.Horn.Types" "liquid-fixpoint-0.9.6.3.2-4tsgPlidRgw727KfDpGHMc" 'False) (C1 ('MetaCons "Reft" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Expr)) :+: (C1 ('MetaCons "Var" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Symbol) :*: S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 [Symbol])) :+: C1 ('MetaCons "PAnd" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 [Pred])))) |
Cst
is an NNF Horn Constraint.
Instances
Functor Bind Source # | |
FromJSON a => FromJSON (Bind a) Source # | |
Defined in Language.Fixpoint.Horn.Types | |
ToJSON a => ToJSON (Bind a) Source # | |
Data a => Data (Bind a) Source # | |
Defined in Language.Fixpoint.Horn.Types Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Bind a -> c (Bind a) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Bind a) # toConstr :: Bind a -> Constr # dataTypeOf :: Bind a -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Bind a)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Bind a)) # gmapT :: (forall b. Data b => b -> b) -> Bind a -> Bind a # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Bind a -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Bind a -> r # gmapQ :: (forall d. Data d => d -> u) -> Bind a -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Bind a -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Bind a -> m (Bind a) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Bind a -> m (Bind a) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Bind a -> m (Bind a) # | |
Generic (Bind a) Source # | |
Show (Bind a) Source # | |
Eq a => Eq (Bind a) Source # | |
ToHornSMT (Bind a) Source # | |
PPrint (Bind a) Source # | |
Defined in Language.Fixpoint.Horn.Types | |
Subable (Bind a) Source # | |
type Rep (Bind a) Source # | |
Defined in Language.Fixpoint.Horn.Types type Rep (Bind a) = D1 ('MetaData "Bind" "Language.Fixpoint.Horn.Types" "liquid-fixpoint-0.9.6.3.2-4tsgPlidRgw727KfDpGHMc" 'False) (C1 ('MetaCons "Bind" 'PrefixI 'True) ((S1 ('MetaSel ('Just "bSym") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Symbol) :*: S1 ('MetaSel ('Just "bSort") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Sort)) :*: (S1 ('MetaSel ('Just "bPred") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Pred) :*: S1 ('MetaSel ('Just "bMeta") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 a)))) |
HVar
is a Horn variable
Constructors
HVar | |
Instances
Functor Var Source # | |
FromJSON a => FromJSON (Var a) Source # | |
Defined in Language.Fixpoint.Horn.Types | |
ToJSON a => ToJSON (Var a) Source # | |
Data a => Data (Var a) Source # | |
Defined in Language.Fixpoint.Horn.Types Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Var a -> c (Var a) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Var a) # dataTypeOf :: Var a -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Var a)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Var a)) # gmapT :: (forall b. Data b => b -> b) -> Var a -> Var a # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Var a -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Var a -> r # gmapQ :: (forall d. Data d => d -> u) -> Var a -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Var a -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Var a -> m (Var a) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Var a -> m (Var a) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Var a -> m (Var a) # | |
Generic (Var a) Source # | |
Show (Var a) Source # | |
Eq a => Eq (Var a) Source # | |
Ord a => Ord (Var a) Source # | |
ToHornSMT (Var a) Source # | |
PPrint (Var a) Source # | |
Defined in Language.Fixpoint.Horn.Types | |
type Rep (Var a) Source # | |
Defined in Language.Fixpoint.Horn.Types type Rep (Var a) = D1 ('MetaData "Var" "Language.Fixpoint.Horn.Types" "liquid-fixpoint-0.9.6.3.2-4tsgPlidRgw727KfDpGHMc" 'False) (C1 ('MetaCons "HVar" 'PrefixI 'True) (S1 ('MetaSel ('Just "hvName") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 Symbol) :*: (S1 ('MetaSel ('Just "hvArgs") 'NoSourceUnpackedness 'SourceStrict 'DecidedStrict) (Rec0 [Sort]) :*: S1 ('MetaSel ('Just "hvMeta") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)))) |
Raw Query
Instances
FromJSON Tag Source # | |
Defined in Language.Fixpoint.Horn.Types | |
ToJSON Tag Source # | |
Data Tag Source # | |
Defined in Language.Fixpoint.Horn.Types Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Tag -> c Tag # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Tag # dataTypeOf :: Tag -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Tag) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Tag) # gmapT :: (forall b. Data b => b -> b) -> Tag -> Tag # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Tag -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Tag -> r # gmapQ :: (forall d. Data d => d -> u) -> Tag -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Tag -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Tag -> m Tag # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Tag -> m Tag # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Tag -> m Tag # | |
Generic Tag Source # | |
Show Tag Source # | |
NFData Tag Source # | |
Defined in Language.Fixpoint.Horn.Types | |
ToHornSMT Tag Source # | |
Fixpoint Tag Source # | |
PPrint Tag Source # | |
Defined in Language.Fixpoint.Horn.Types | |
Loc Tag Source # | |
type Rep Tag Source # | |
Defined in Language.Fixpoint.Horn.Types type Rep Tag = D1 ('MetaData "Tag" "Language.Fixpoint.Horn.Types" "liquid-fixpoint-0.9.6.3.2-4tsgPlidRgw727KfDpGHMc" 'False) (C1 ('MetaCons "NoTag" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Tag" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 String))) |
accessing constraint labels
invariants (refinements) on constraints
extract qualifiers
SMTLIB style render
class ToHornSMT a where Source #
Instances
ToHornSMT Pred Source # | |
ToHornSMT Tag Source # | |
ToHornSMT Equation Source # | |
ToHornSMT QualParam Source # | |
ToHornSMT Qualifier Source # | |
ToHornSMT Rewrite Source # | |
ToHornSMT Symbol Source # | |
ToHornSMT Expr Source # | |
ToHornSMT KVar Source # | |
ToHornSMT Subst Source # | |
ToHornSMT DataCtor Source # | |
ToHornSMT DataDecl Source # | |
ToHornSMT DataField Source # | |
ToHornSMT FTycon Source # | |
ToHornSMT Sort Source # | |
ToHornSMT (Bind a) Source # | |
ToHornSMT (Cstr a) Source # | |
ToHornSMT (Query a) Source # | |
ToHornSMT (Var a) Source # | |
ToHornSMT a => ToHornSMT (Located a) Source # | |
ToHornSMT a => ToHornSMT [a] Source # | |
Defined in Language.Fixpoint.Horn.Types | |
ToHornSMT a => ToHornSMT (Symbol, a) Source # | |