| 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 #