Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell98 |
Language.Fixpoint.Types.Refinements
Description
This module has the types for representing terms in the refinement logic.
Synopsis
- newtype SymConst = SL Text
- data Constant
- data Bop
- data Brel
- data ExprV v
- = ESym !SymConst
- | ECon !Constant
- | EVar !v
- | EApp !(ExprV v) !(ExprV v)
- | ENeg !(ExprV v)
- | EBin !Bop !(ExprV v) !(ExprV v)
- | EIte !(ExprV v) !(ExprV v) !(ExprV v)
- | ECst !(ExprV v) !Sort
- | ELam !(Symbol, Sort) !(ExprV v)
- | ETApp !(ExprV v) !Sort
- | ETAbs !(ExprV v) !Symbol
- | PAnd ![ExprV v]
- | POr ![ExprV v]
- | PNot !(ExprV v)
- | PImp !(ExprV v) !(ExprV v)
- | PIff !(ExprV v) !(ExprV v)
- | PAtom !Brel !(ExprV v) !(ExprV v)
- | PKVar !KVar !(SubstV v)
- | PAll ![(Symbol, Sort)] !(ExprV v)
- | PExist ![(Symbol, Sort)] !(ExprV v)
- | PGrad !KVar !(SubstV v) !GradInfo !(ExprV v)
- | ECoerc !Sort !Sort !(ExprV v)
- type Pred = Expr
- type Expr = ExprV Symbol
- data GradInfo = GradInfo {}
- pattern PTrue :: ExprV v
- pattern PTop :: ExprV v
- pattern PFalse :: ExprV v
- pattern EBot :: ExprV v
- pattern ETimes :: ExprV v -> ExprV v -> ExprV v
- pattern ERTimes :: ExprV v -> ExprV v -> ExprV v
- pattern EDiv :: ExprV v -> ExprV v -> ExprV v
- pattern ERDiv :: ExprV v -> ExprV v -> ExprV v
- pattern EEq :: ExprV v -> ExprV v -> ExprV v
- newtype KVar = KV {}
- type Subst = SubstV Symbol
- newtype SubstV v = Su (HashMap Symbol (ExprV v))
- data KVSub = KVS {}
- type Reft = ReftV Symbol
- newtype ReftV v = Reft (Symbol, ExprV v)
- data SortedReft = RR {}
- eVar :: Symbolic a => a -> Expr
- elit :: Located Symbol -> Sort -> Expr
- eProp :: Symbolic a => a -> Expr
- conj :: [Pred] -> Pred
- pAnd :: (Fixpoint v, Ord v) => ListNE (ExprV v) -> ExprV v
- pOr :: (Fixpoint v, Ord v) => ListNE (ExprV v) -> ExprV v
- pIte :: (Fixpoint v, Ord v) => ExprV v -> ExprV v -> ExprV v -> ExprV v
- pAndNoDedup :: ListNE Pred -> Pred
- (&.&) :: Pred -> Pred -> Pred
- (|.|) :: Pred -> Pred -> Pred
- pExist :: [(Symbol, Sort)] -> ExprV v -> ExprV v
- mkEApp :: LocSymbol -> [Expr] -> Expr
- mkProp :: Expr -> Pred
- intKvar :: Integer -> KVar
- vv_ :: Symbol
- class Expression a where
- class Predicate a where
- class Subable a where
- reft :: Symbol -> ExprV v -> ReftV v
- trueSortedReft :: Sort -> SortedReft
- trueReft :: ReftV v
- falseReft :: ReftV v
- exprReft :: Expression a => a -> Reft
- notExprReft :: Expression a => a -> Reft
- uexprReft :: Expression a => a -> Reft
- symbolReft :: Symbolic a => a -> Reft
- usymbolReft :: Symbolic a => a -> Reft
- propReft :: Predicate a => a -> Reft
- predReft :: Predicate a => a -> Reft
- reftPred :: ReftV v -> ExprV v
- reftBind :: ReftV v -> Symbol
- isFunctionSortedReft :: SortedReft -> Bool
- functionSort :: Sort -> Maybe ([Int], [Sort], Sort)
- isNonTrivial :: SortedReft -> Bool
- isContraPred :: Eq v => ExprV v -> Bool
- isTautoPred :: Eq v => ExprV v -> Bool
- isTautoReft :: Eq v => ReftV v -> Bool
- isSingletonExpr :: Symbol -> Expr -> Maybe Expr
- isSingletonReft :: Reft -> Maybe Expr
- isFalse :: Falseable a => a -> Bool
- flattenRefas :: [ExprV v] -> [ExprV v]
- conjuncts :: Eq v => ExprV v -> [ExprV v]
- concConjuncts :: Expr -> [Expr]
- dropECst :: Expr -> Expr
- eApps :: ExprV v -> [ExprV v] -> ExprV v
- eAppC :: Sort -> Expr -> Expr -> Expr
- eCst :: Expr -> Sort -> Expr
- exprKVars :: Expr -> HashMap KVar [Subst]
- exprSymbolsSet :: Expr -> HashSet Symbol
- splitEApp :: ExprV v -> (ExprV v, [ExprV v])
- splitEAppThroughECst :: Expr -> (Expr, [Expr])
- splitPAnd :: Expr -> [Expr]
- reftConjuncts :: Reft -> [Reft]
- sortedReftSymbols :: SortedReft -> HashSet Symbol
- substSortInExpr :: (Symbol -> Sort) -> Expr -> Expr
- sortSubstInExpr :: SortSubst -> Expr -> Expr
- mapPredReft :: (Expr -> Expr) -> Reft -> Reft
- onEverySubexpr :: (Expr -> Expr) -> Expr -> Expr
- pprintReft :: (PPrint v, Ord v, Fixpoint v) => Tidy -> ReftV v -> Doc
- debruijnIndex :: Expr -> Int
- pGAnds :: (Fixpoint v, Ord v) => [ExprV v] -> ExprV v
- pGAnd :: (Fixpoint v, Ord v) => ExprV v -> ExprV v -> ExprV v
- class HasGradual a where
- srcGradInfo :: SourcePos -> GradInfo
Representing Terms
Expressions ---------------------------------------------------------------
Uninterpreted constants that are embedded as "constant symbol : Str"
Instances
FromJSON SymConst Source # | |
Defined in Language.Fixpoint.Types.Refinements | |
ToJSON SymConst Source # | |
Data SymConst Source # | |
Defined in Language.Fixpoint.Types.Refinements Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> SymConst -> c SymConst # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c SymConst # toConstr :: SymConst -> Constr # dataTypeOf :: SymConst -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c SymConst) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c SymConst) # gmapT :: (forall b. Data b => b -> b) -> SymConst -> SymConst # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> SymConst -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> SymConst -> r # gmapQ :: (forall d. Data d => d -> u) -> SymConst -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> SymConst -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> SymConst -> m SymConst # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> SymConst -> m SymConst # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> SymConst -> m SymConst # | |
Generic SymConst Source # | |
Show SymConst Source # | |
Binary SymConst Source # | |
NFData SymConst Source # | |
Defined in Language.Fixpoint.Types.Refinements | |
Eq SymConst Source # | |
Ord SymConst Source # | |
Defined in Language.Fixpoint.Types.Refinements | |
Hashable SymConst Source # | |
Defined in Language.Fixpoint.Types.Refinements | |
SMTLIB2 SymConst Source # | |
Symbolic SymConst Source # | String Constants ---------------------------------------------------------- Replace all symbol-representations-of-string-literals with string-literal Used to transform parsed output from fixpoint back into fq. |
Fixpoint SymConst Source # | |
PPrint SymConst Source # | |
Defined in Language.Fixpoint.Types.Refinements | |
Store SymConst Source # | |
type Rep SymConst Source # | |
Defined in Language.Fixpoint.Types.Refinements |
Instances
Instances
FromJSON Bop Source # | |
Defined in Language.Fixpoint.Types.Refinements | |
ToJSON Bop Source # | |
Data Bop Source # | |
Defined in Language.Fixpoint.Types.Refinements Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Bop -> c Bop # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Bop # dataTypeOf :: Bop -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Bop) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Bop) # gmapT :: (forall b. Data b => b -> b) -> Bop -> Bop # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Bop -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Bop -> r # gmapQ :: (forall d. Data d => d -> u) -> Bop -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Bop -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Bop -> m Bop # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Bop -> m Bop # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Bop -> m Bop # | |
Generic Bop Source # | |
Show Bop Source # | |
Binary Bop Source # | |
NFData Bop Source # | |
Defined in Language.Fixpoint.Types.Refinements | |
Eq Bop Source # | |
Ord Bop Source # | |
Hashable Bop Source # | |
Defined in Language.Fixpoint.Types.Refinements | |
SMTLIB2 Bop Source # | |
Fixpoint Bop Source # | |
PPrint Bop Source # | |
Defined in Language.Fixpoint.Types.Refinements | |
Store Bop Source # | |
type Rep Bop Source # | |
Defined in Language.Fixpoint.Types.Refinements type Rep Bop = D1 ('MetaData "Bop" "Language.Fixpoint.Types.Refinements" "liquid-fixpoint-0.9.6.3.2-4tsgPlidRgw727KfDpGHMc" 'False) ((C1 ('MetaCons "Plus" 'PrefixI 'False) (U1 :: Type -> Type) :+: (C1 ('MetaCons "Minus" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Times" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "Div" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Mod" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "RTimes" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "RDiv" 'PrefixI 'False) (U1 :: Type -> Type)))) |
Instances
FromJSON Brel Source # | |
Defined in Language.Fixpoint.Types.Refinements | |
ToJSON Brel Source # | |
Data Brel Source # | |
Defined in Language.Fixpoint.Types.Refinements Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Brel -> c Brel # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Brel # dataTypeOf :: Brel -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Brel) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Brel) # gmapT :: (forall b. Data b => b -> b) -> Brel -> Brel # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Brel -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Brel -> r # gmapQ :: (forall d. Data d => d -> u) -> Brel -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Brel -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Brel -> m Brel # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Brel -> m Brel # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Brel -> m Brel # | |
Generic Brel Source # | |
Show Brel Source # | |
Binary Brel Source # | |
NFData Brel Source # | |
Defined in Language.Fixpoint.Types.Refinements | |
Eq Brel Source # | |
Ord Brel Source # | |
Hashable Brel Source # | |
Defined in Language.Fixpoint.Types.Refinements | |
SMTLIB2 Brel Source # | |
Fixpoint Brel Source # | |
PPrint Brel Source # | |
Defined in Language.Fixpoint.Types.Refinements | |
Store Brel Source # | |
type Rep Brel Source # | |
Defined in Language.Fixpoint.Types.Refinements type Rep Brel = D1 ('MetaData "Brel" "Language.Fixpoint.Types.Refinements" "liquid-fixpoint-0.9.6.3.2-4tsgPlidRgw727KfDpGHMc" 'False) (((C1 ('MetaCons "Eq" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Ne" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "Gt" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Ge" 'PrefixI 'False) (U1 :: Type -> Type))) :+: ((C1 ('MetaCons "Lt" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Le" 'PrefixI 'False) (U1 :: Type -> Type)) :+: (C1 ('MetaCons "Ueq" 'PrefixI 'False) (U1 :: Type -> Type) :+: C1 ('MetaCons "Une" 'PrefixI 'False) (U1 :: Type -> Type)))) |
Constructors
ESym !SymConst | |
ECon !Constant | |
EVar !v | |
EApp !(ExprV v) !(ExprV v) | |
ENeg !(ExprV v) | |
EBin !Bop !(ExprV v) !(ExprV v) | |
EIte !(ExprV v) !(ExprV v) !(ExprV v) | |
ECst !(ExprV v) !Sort | |
ELam !(Symbol, Sort) !(ExprV v) | |
ETApp !(ExprV v) !Sort | |
ETAbs !(ExprV v) !Symbol | |
PAnd ![ExprV v] | |
POr ![ExprV v] | |
PNot !(ExprV v) | |
PImp !(ExprV v) !(ExprV v) | |
PIff !(ExprV v) !(ExprV v) | |
PAtom !Brel !(ExprV v) !(ExprV v) | |
PKVar !KVar !(SubstV v) | |
PAll ![(Symbol, Sort)] !(ExprV v) | |
PExist ![(Symbol, Sort)] !(ExprV v) | |
PGrad !KVar !(SubstV v) !GradInfo !(ExprV v) | |
ECoerc !Sort !Sort !(ExprV v) |
Instances
Instances
Kvars ---------------------------------------------------------------------
Instances
type Subst = SubstV Symbol Source #
Substitutions -------------------------------------------------------------
Instances
FromJSON Subst Source # | |
Defined in Language.Fixpoint.Types.Refinements | |
ToJSON Subst Source # | |
Foldable SubstV Source # | |
Defined in Language.Fixpoint.Types.Refinements Methods fold :: Monoid m => SubstV m -> m # foldMap :: Monoid m => (a -> m) -> SubstV a -> m # foldMap' :: Monoid m => (a -> m) -> SubstV a -> m # foldr :: (a -> b -> b) -> b -> SubstV a -> b # foldr' :: (a -> b -> b) -> b -> SubstV a -> b # foldl :: (b -> a -> b) -> b -> SubstV a -> b # foldl' :: (b -> a -> b) -> b -> SubstV a -> b # foldr1 :: (a -> a -> a) -> SubstV a -> a # foldl1 :: (a -> a -> a) -> SubstV a -> a # elem :: Eq a => a -> SubstV a -> Bool # maximum :: Ord a => SubstV a -> a # minimum :: Ord a => SubstV a -> a # | |
Traversable SubstV Source # | |
Functor SubstV Source # | |
Monoid Subst Source # | |
Semigroup Subst Source # | |
ToHornSMT Subst Source # | |
Store Subst Source # | |
Data v => Data (SubstV v) Source # | |
Defined in Language.Fixpoint.Types.Refinements Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> SubstV v -> c (SubstV v) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (SubstV v) # toConstr :: SubstV v -> Constr # dataTypeOf :: SubstV v -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (SubstV v)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (SubstV v)) # gmapT :: (forall b. Data b => b -> b) -> SubstV v -> SubstV v # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> SubstV v -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> SubstV v -> r # gmapQ :: (forall d. Data d => d -> u) -> SubstV v -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> SubstV v -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> SubstV v -> m (SubstV v) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> SubstV v -> m (SubstV v) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> SubstV v -> m (SubstV v) # | |
Generic (SubstV v) Source # | |
(Fixpoint v, Ord v, Show v) => Show (SubstV v) Source # | |
Binary v => Binary (SubstV v) Source # | |
NFData v => NFData (SubstV v) Source # | |
Defined in Language.Fixpoint.Types.Refinements | |
Eq v => Eq (SubstV v) Source # | |
Ord v => Ord (SubstV v) Source # | |
Defined in Language.Fixpoint.Types.Refinements | |
Hashable v => Hashable (SubstV v) Source # | |
Defined in Language.Fixpoint.Types.Refinements | |
(Ord v, Fixpoint v) => Fixpoint (SubstV v) Source # | |
(Ord v, Fixpoint v) => PPrint (SubstV v) Source # | |
Defined in Language.Fixpoint.Types.Refinements | |
type Rep (SubstV v) Source # | |
Defined in Language.Fixpoint.Types.Refinements type Rep (SubstV v) = D1 ('MetaData "SubstV" "Language.Fixpoint.Types.Refinements" "liquid-fixpoint-0.9.6.3.2-4tsgPlidRgw727KfDpGHMc" 'True) (C1 ('MetaCons "Su" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (HashMap Symbol (ExprV v))))) |
Instances
Data KVSub Source # | |
Defined in Language.Fixpoint.Types.Refinements Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> KVSub -> c KVSub # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c KVSub # dataTypeOf :: KVSub -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c KVSub) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c KVSub) # gmapT :: (forall b. Data b => b -> b) -> KVSub -> KVSub # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> KVSub -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> KVSub -> r # gmapQ :: (forall d. Data d => d -> u) -> KVSub -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> KVSub -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> KVSub -> m KVSub # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> KVSub -> m KVSub # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> KVSub -> m KVSub # | |
Generic KVSub Source # | |
Show KVSub Source # | |
Eq KVSub Source # | |
PPrint KVSub Source # | |
Defined in Language.Fixpoint.Types.Refinements | |
type Rep KVSub Source # | |
Defined in Language.Fixpoint.Types.Refinements type Rep KVSub = D1 ('MetaData "KVSub" "Language.Fixpoint.Types.Refinements" "liquid-fixpoint-0.9.6.3.2-4tsgPlidRgw727KfDpGHMc" 'False) (C1 ('MetaCons "KVS" 'PrefixI 'True) ((S1 ('MetaSel ('Just "ksuVV") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Symbol) :*: S1 ('MetaSel ('Just "ksuSort") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Sort)) :*: (S1 ('MetaSel ('Just "ksuKVar") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 KVar) :*: S1 ('MetaSel ('Just "ksuSubst") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Subst)))) |
Refinement of v
satisfying a predicate
e.g. in '{x: _ | e }' x is the Symbol
and e the ExprV v
Instances
Foldable ReftV Source # | |
Defined in Language.Fixpoint.Types.Refinements Methods fold :: Monoid m => ReftV m -> m # foldMap :: Monoid m => (a -> m) -> ReftV a -> m # foldMap' :: Monoid m => (a -> m) -> ReftV a -> m # foldr :: (a -> b -> b) -> b -> ReftV a -> b # foldr' :: (a -> b -> b) -> b -> ReftV a -> b # foldl :: (b -> a -> b) -> b -> ReftV a -> b # foldl' :: (b -> a -> b) -> b -> ReftV a -> b # foldr1 :: (a -> a -> a) -> ReftV a -> a # foldl1 :: (a -> a -> a) -> ReftV a -> a # elem :: Eq a => a -> ReftV a -> Bool # maximum :: Ord a => ReftV a -> a # minimum :: Ord a => ReftV a -> a # | |
Traversable ReftV Source # | |
Functor ReftV Source # | |
Show Reft Source # | |
Defunc Reft Source # | |
Gradual Reft Source # | |
Fixpoint Reft Source # | |
Expression Reft Source # | |
HasGradual Reft Source # | |
Subable Reft Source # | |
Foldable Reft Source # | |
SymConsts Reft Source # | |
Visitable Reft Source # | |
Store Reft Source # | |
Data v => Data (ReftV v) Source # | |
Defined in Language.Fixpoint.Types.Refinements Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> ReftV v -> c (ReftV v) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (ReftV v) # toConstr :: ReftV v -> Constr # dataTypeOf :: ReftV v -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (ReftV v)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (ReftV v)) # gmapT :: (forall b. Data b => b -> b) -> ReftV v -> ReftV v # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> ReftV v -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> ReftV v -> r # gmapQ :: (forall d. Data d => d -> u) -> ReftV v -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> ReftV v -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> ReftV v -> m (ReftV v) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> ReftV v -> m (ReftV v) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> ReftV v -> m (ReftV v) # | |
Generic (ReftV v) Source # | |
Binary v => Binary (ReftV v) Source # | |
NFData v => NFData (ReftV v) Source # | |
Defined in Language.Fixpoint.Types.Refinements | |
Eq v => Eq (ReftV v) Source # | |
Ord v => Ord (ReftV v) Source # | |
Defined in Language.Fixpoint.Types.Refinements | |
Hashable v => Hashable (ReftV v) Source # | |
Defined in Language.Fixpoint.Types.Refinements | |
(PPrint v, Fixpoint v, Ord v) => PPrint (ReftV v) Source # | |
Defined in Language.Fixpoint.Types.Substitutions | |
type Rep (ReftV v) Source # | |
Defined in Language.Fixpoint.Types.Refinements type Rep (ReftV v) = D1 ('MetaData "ReftV" "Language.Fixpoint.Types.Refinements" "liquid-fixpoint-0.9.6.3.2-4tsgPlidRgw727KfDpGHMc" 'True) (C1 ('MetaCons "Reft" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Symbol, ExprV v)))) |
data SortedReft Source #
Instances
Constructing Terms
Generalizing Embedding with Typeclasses
class Expression a where Source #
Generalizing Symbol, Expression, Predicate into Classes -----------
Values that can be viewed as Constants
Values that can be viewed as Expressions
Instances
Expression Symbol Source # | The symbol may be an encoding of a SymConst. |
Expression Expr Source # | |
Expression Reft Source # | |
Expression SortedReft Source # | |
Defined in Language.Fixpoint.Types.Refinements Methods expr :: SortedReft -> Expr Source # | |
Expression Text Source # | |
Expression Integer Source # | |
Expression Int Source # | |
Expression a => Expression (Located a) Source # | |
Expression (Symbol, SortedReft) Source # | |
Defined in Language.Fixpoint.Types.Substitutions |
class Predicate a where Source #
Values that can be viewed as Predicates
class Subable a where Source #
Class Predicates for Valid Refinements -----------------------------
Methods
Arguments
:: a | |
-> [Symbol] | free symbols of a |
substa :: (Symbol -> Symbol) -> a -> a Source #
substf :: (Symbol -> Expr) -> a -> a Source #
Instances
Constructors
trueSortedReft :: Sort -> SortedReft Source #
exprReft :: Expression a => a -> Reft Source #
notExprReft :: Expression a => a -> Reft Source #
uexprReft :: Expression a => a -> Reft Source #
symbolReft :: Symbolic a => a -> Reft Source #
Generally Useful Refinements --------------------------
usymbolReft :: Symbolic a => a -> Reft Source #
Predicates
isFunctionSortedReft :: SortedReft -> Bool Source #
Refinements ----------------------------------------------
isNonTrivial :: SortedReft -> Bool Source #
isSingletonReft :: Reft -> Maybe Expr Source #
Predicates ----------------------------------------------------------------
Destructing
flattenRefas :: [ExprV v] -> [ExprV v] Source #
concConjuncts :: Expr -> [Expr] Source #
reftConjuncts :: Reft -> [Reft] Source #
Transforming
debruijnIndex :: Expr -> Int Source #
Gradual Type Manipulation
pGAnds :: (Fixpoint v, Ord v) => [ExprV v] -> ExprV v Source #
Gradual Type Manipulation ----------------------------
class HasGradual a where Source #
Minimal complete definition
Instances
HasGradual Expr Source # | |
HasGradual Reft Source # | |
HasGradual SortedReft Source # | |
Defined in Language.Fixpoint.Types.Refinements Methods isGradual :: SortedReft -> Bool Source # gVars :: SortedReft -> [KVar] Source # ungrad :: SortedReft -> SortedReft Source # | |
HasGradual (WfC a) Source # | |
HasGradual (GInfo c a) Source # | |
srcGradInfo :: SourcePos -> GradInfo Source #