Agda-2.5.4: A dependently typed functional programming language and proof assistant

Safe HaskellNone
LanguageHaskell2010

Agda.Auto.CaseSplit

Synopsis

Documentation

data HI a #

Constructors

HI Hiding a 
Instances
Renaming t => Renaming (HI t) # 
Instance details

Defined in Agda.Auto.CaseSplit

Methods

renameOffset :: Nat -> (Nat -> Nat) -> HI t -> HI t #

LocalTerminationEnv a => LocalTerminationEnv (HI a) # 
Instance details

Defined in Agda.Auto.CaseSplit

Methods

sizeAndBoundVars :: HI a -> (Sum Nat, [Nat]) #

drophid :: [HI a] -> [a] #

type CSPat o = HI (CSPatI o) #

type CSCtx o = [HI (MId, MExp o)] #

data CSPatI o #

Instances
Renaming (CSPatI o) # 
Instance details

Defined in Agda.Auto.CaseSplit

Methods

renameOffset :: Nat -> (Nat -> Nat) -> CSPatI o -> CSPatI o #

LocalTerminationEnv (CSPatI o) # 
Instance details

Defined in Agda.Auto.CaseSplit

Methods

sizeAndBoundVars :: CSPatI o -> (Sum Nat, [Nat]) #

type Sol o = [(CSCtx o, [CSPat o], Maybe (MExp o))] #

caseSplitSearch :: forall o. IORef Int -> Int -> [ConstRef o] -> Maybe (EqReasoningConsts o) -> Int -> Cost -> ConstRef o -> CSCtx o -> MExp o -> [CSPat o] -> IO [Sol o] #

caseSplitSearch' :: forall o. (Cost -> CSCtx o -> MExp o -> ([Nat], Nat, [Nat]) -> IO (Maybe (MExp o))) -> Int -> Cost -> ConstRef o -> CSCtx o -> MExp o -> [CSPat o] -> IO [Sol o] #

infertypevar :: CSCtx o -> Nat -> MExp o #

class Replace o t u | t u -> o where #

Minimal complete definition

replace'

Methods

replace' :: Nat -> MExp o -> t -> Reader (Nat, Nat) u #

Instances
Replace o (ArgList o) (ArgList o) # 
Instance details

Defined in Agda.Auto.CaseSplit

Methods

replace' :: Nat -> MExp o -> ArgList o -> Reader (Nat, Nat) (ArgList o) #

Replace o (Exp o) (MExp o) # 
Instance details

Defined in Agda.Auto.CaseSplit

Methods

replace' :: Nat -> MExp o -> Exp o -> Reader (Nat, Nat) (MExp o) #

Replace o t u => Replace o (Abs t) (Abs u) # 
Instance details

Defined in Agda.Auto.CaseSplit

Methods

replace' :: Nat -> MExp o -> Abs t -> Reader (Nat, Nat) (Abs u) #

Replace o t u => Replace o (MM t (RefInfo o)) u # 
Instance details

Defined in Agda.Auto.CaseSplit

Methods

replace' :: Nat -> MExp o -> MM t (RefInfo o) -> Reader (Nat, Nat) u #

replace :: Replace o t u => Nat -> Nat -> MExp o -> t -> u #

betareduce :: MExp o -> MArgList o -> MExp o #

replacep :: forall o. Nat -> Nat -> CSPatI o -> MExp o -> CSPat o -> CSPat o #

type Assignments o = [(Nat, Exp o)] #

class Unify o t | t -> o where #

Minimal complete definition

unify', notequal'

Methods

unify' :: t -> t -> StateT (Assignments o) Maybe () #

notequal' :: t -> t -> ReaderT (Nat, Nat) (StateT (Assignments o) IO) Bool #

Instances
Unify o (ArgList o) # 
Instance details

Defined in Agda.Auto.CaseSplit

Unify o (Exp o) # 
Instance details

Defined in Agda.Auto.CaseSplit

Methods

unify' :: Exp o -> Exp o -> StateT (Assignments o) Maybe () #

notequal' :: Exp o -> Exp o -> ReaderT (Nat, Nat) (StateT (Assignments o) IO) Bool #

Unify o t => Unify o (Abs t) # 
Instance details

Defined in Agda.Auto.CaseSplit

Methods

unify' :: Abs t -> Abs t -> StateT (Assignments o) Maybe () #

notequal' :: Abs t -> Abs t -> ReaderT (Nat, Nat) (StateT (Assignments o) IO) Bool #

Unify o t => Unify o (MM t (RefInfo o)) # 
Instance details

Defined in Agda.Auto.CaseSplit

Methods

unify' :: MM t (RefInfo o) -> MM t (RefInfo o) -> StateT (Assignments o) Maybe () #

notequal' :: MM t (RefInfo o) -> MM t (RefInfo o) -> ReaderT (Nat, Nat) (StateT (Assignments o) IO) Bool #

unify :: Unify o t => t -> t -> Maybe (Assignments o) #

notequal :: Unify o t => Nat -> Nat -> t -> t -> IO Bool #

unifyexp :: MExp o -> MExp o -> Maybe [(Nat, MExp o)] #

class Lift t where #

Minimal complete definition

lift'

Methods

lift' :: Nat -> Nat -> t -> t #

Instances
Lift (ArgList o) # 
Instance details

Defined in Agda.Auto.CaseSplit

Methods

lift' :: Nat -> Nat -> ArgList o -> ArgList o #

Lift (Exp o) # 
Instance details

Defined in Agda.Auto.CaseSplit

Methods

lift' :: Nat -> Nat -> Exp o -> Exp o #

Lift t => Lift (Abs t) # 
Instance details

Defined in Agda.Auto.CaseSplit

Methods

lift' :: Nat -> Nat -> Abs t -> Abs t #

Lift t => Lift (MM t r) # 
Instance details

Defined in Agda.Auto.CaseSplit

Methods

lift' :: Nat -> Nat -> MM t r -> MM t r #

lift :: Lift t => Nat -> t -> t #

removevar :: CSCtx o -> MExp o -> [CSPat o] -> [(Nat, MExp o)] -> (CSCtx o, MExp o, [CSPat o]) #

findperm :: [MExp o] -> Maybe [Nat] #

freevars :: FreeVars t => t -> [Nat] #

applyperm :: [Nat] -> CSCtx o -> MExp o -> [CSPat o] -> (CSCtx o, MExp o, [CSPat o]) #

ren :: [Nat] -> Nat -> Int #

seqctx :: CSCtx o -> CSCtx o #

depthofvar :: Nat -> [CSPat o] -> Nat #

class LocalTerminationEnv a where #

Speculation: Type class computing the size (?) of a pattern and collecting the vars it introduces

Minimal complete definition

sizeAndBoundVars

Methods

sizeAndBoundVars :: a -> (Sum Nat, [Nat]) #

Instances
LocalTerminationEnv a => LocalTerminationEnv [a] # 
Instance details

Defined in Agda.Auto.CaseSplit

Methods

sizeAndBoundVars :: [a] -> (Sum Nat, [Nat]) #

LocalTerminationEnv (MArgList o) # 
Instance details

Defined in Agda.Auto.CaseSplit

Methods

sizeAndBoundVars :: MArgList o -> (Sum Nat, [Nat]) #

LocalTerminationEnv (MExp o) # 
Instance details

Defined in Agda.Auto.CaseSplit

Methods

sizeAndBoundVars :: MExp o -> (Sum Nat, [Nat]) #

LocalTerminationEnv (CSPatI o) # 
Instance details

Defined in Agda.Auto.CaseSplit

Methods

sizeAndBoundVars :: CSPatI o -> (Sum Nat, [Nat]) #

LocalTerminationEnv a => LocalTerminationEnv (HI a) # 
Instance details

Defined in Agda.Auto.CaseSplit

Methods

sizeAndBoundVars :: HI a -> (Sum Nat, [Nat]) #

(LocalTerminationEnv a, LocalTerminationEnv b) => LocalTerminationEnv (a, b) # 
Instance details

Defined in Agda.Auto.CaseSplit

Methods

sizeAndBoundVars :: (a, b) -> (Sum Nat, [Nat]) #

localTerminationEnv :: [CSPat o] -> ([Nat], Nat, [Nat]) #

Take a list of patterns and returns (is, size, vars) where (speculation):

localTerminationSidecond :: ([Nat], Nat, [Nat]) -> ConstRef o -> MExp o -> EE (MyPB o) #

getblks :: MExp o -> IO [Nat] #