packages feed

cryptol 3.2.0 → 3.3.0

raw patch · 64 files changed

+3084/−1057 lines, 64 filesdep +cryptohash-sha256dep +heredocdep +tastydep −cryptohash-sha1dep ~basedep ~base-compatdep ~directorynew-uploaderPVP ok

version bump matches the API change (PVP)

Dependencies added: cryptohash-sha256, heredoc, tasty, tasty-hunit, toml-parser

Dependencies removed: cryptohash-sha1

Dependency ranges changed: base, base-compat, directory, filepath, haskeline, simple-smt, what4

API changes (from Hackage documentation)

- Cryptol.AES: aesFinalRound :: State -> State
- Cryptol.AES: aesInvFinalRound :: State -> State
- Cryptol.AES: aesInvRound :: State -> State
- Cryptol.AES: aesRound :: State -> State
- Cryptol.AES: invMixColumns :: State -> State
- Cryptol.AES: keyExpansionWords :: Integer -> Key -> [Word32]
- Cryptol.AES: type Key = [Word32]
- Cryptol.AES: type State = [Word32]
- Cryptol.Backend: IndexBackward :: IndexDirection
- Cryptol.Backend: IndexForward :: IndexDirection
- Cryptol.Backend: SRational :: SInteger sym -> SInteger sym -> SRational sym
- Cryptol.Backend: [sDenom] :: SRational sym -> SInteger sym
- Cryptol.Backend: [sNum] :: SRational sym -> SInteger sym
- Cryptol.Backend: assertSideCondition :: Backend sym => sym -> SBit sym -> EvalError -> SEval sym ()
- Cryptol.Backend: bitAnd :: Backend sym => sym -> SBit sym -> SBit sym -> SEval sym (SBit sym)
- Cryptol.Backend: bitAsLit :: Backend sym => sym -> SBit sym -> Maybe Bool
- Cryptol.Backend: bitComplement :: Backend sym => sym -> SBit sym -> SEval sym (SBit sym)
- Cryptol.Backend: bitEq :: Backend sym => sym -> SBit sym -> SBit sym -> SEval sym (SBit sym)
- Cryptol.Backend: bitLit :: Backend sym => sym -> Bool -> SBit sym
- Cryptol.Backend: bitOr :: Backend sym => sym -> SBit sym -> SBit sym -> SEval sym (SBit sym)
- Cryptol.Backend: bitXor :: Backend sym => sym -> SBit sym -> SBit sym -> SEval sym (SBit sym)
- Cryptol.Backend: class MonadIO (SEval sym) => Backend sym where {
- Cryptol.Backend: cryNoPrimError :: Backend sym => sym -> Name -> SEval sym a
- Cryptol.Backend: cryUserError :: Backend sym => sym -> String -> SEval sym a
- Cryptol.Backend: data IndexDirection
- Cryptol.Backend: data SRational sym
- Cryptol.Backend: enumerateIntBits :: Backend sym => sym -> Nat' -> SInteger sym -> SEval sym (Integer, [SBit sym])
- Cryptol.Backend: enumerateIntBits' :: Backend sym => sym -> Integer -> SInteger sym -> SEval sym (Integer, [SBit sym])
- Cryptol.Backend: extractWord :: Backend sym => sym -> Integer -> Integer -> SWord sym -> SEval sym (SWord sym)
- Cryptol.Backend: fpAbs :: Backend sym => sym -> SFloat sym -> SEval sym (SFloat sym)
- Cryptol.Backend: fpAsLit :: Backend sym => sym -> SFloat sym -> Maybe BF
- Cryptol.Backend: fpDiv :: Backend sym => FPArith2 sym
- Cryptol.Backend: fpEq :: Backend sym => sym -> SFloat sym -> SFloat sym -> SEval sym (SBit sym)
- Cryptol.Backend: fpExactLit :: Backend sym => sym -> BF -> SEval sym (SFloat sym)
- Cryptol.Backend: fpFMA :: Backend sym => sym -> SWord sym -> SFloat sym -> SFloat sym -> SFloat sym -> SEval sym (SFloat sym)
- Cryptol.Backend: fpFromBits :: Backend sym => sym -> Integer -> Integer -> SWord sym -> SEval sym (SFloat sym)
- Cryptol.Backend: fpFromInteger :: Backend sym => sym -> Integer -> Integer -> SWord sym -> SInteger sym -> SEval sym (SFloat sym)
- Cryptol.Backend: fpFromRational :: Backend sym => sym -> Integer -> Integer -> SWord sym -> SRational sym -> SEval sym (SFloat sym)
- Cryptol.Backend: fpGreaterThan :: Backend sym => sym -> SFloat sym -> SFloat sym -> SEval sym (SBit sym)
- Cryptol.Backend: fpIsInf :: Backend sym => sym -> SFloat sym -> SEval sym (SBit sym)
- Cryptol.Backend: fpIsNaN :: Backend sym => sym -> SFloat sym -> SEval sym (SBit sym)
- Cryptol.Backend: fpIsNeg :: Backend sym => sym -> SFloat sym -> SEval sym (SBit sym)
- Cryptol.Backend: fpIsNorm :: Backend sym => sym -> SFloat sym -> SEval sym (SBit sym)
- Cryptol.Backend: fpIsSubnorm :: Backend sym => sym -> SFloat sym -> SEval sym (SBit sym)
- Cryptol.Backend: fpIsZero :: Backend sym => sym -> SFloat sym -> SEval sym (SBit sym)
- Cryptol.Backend: fpLessThan :: Backend sym => sym -> SFloat sym -> SFloat sym -> SEval sym (SBit sym)
- Cryptol.Backend: fpLit :: Backend sym => sym -> Integer -> Integer -> Rational -> SEval sym (SFloat sym)
- Cryptol.Backend: fpLogicalEq :: Backend sym => sym -> SFloat sym -> SFloat sym -> SEval sym (SBit sym)
- Cryptol.Backend: fpMinus :: Backend sym => FPArith2 sym
- Cryptol.Backend: fpMult :: Backend sym => FPArith2 sym
- Cryptol.Backend: fpNaN :: Backend sym => sym -> Integer -> Integer -> SEval sym (SFloat sym)
- Cryptol.Backend: fpNeg :: Backend sym => sym -> SFloat sym -> SEval sym (SFloat sym)
- Cryptol.Backend: fpPlus :: Backend sym => FPArith2 sym
- Cryptol.Backend: fpPosInf :: Backend sym => sym -> Integer -> Integer -> SEval sym (SFloat sym)
- Cryptol.Backend: fpSqrt :: Backend sym => sym -> SWord sym -> SFloat sym -> SEval sym (SFloat sym)
- Cryptol.Backend: fpToBits :: Backend sym => sym -> SFloat sym -> SEval sym (SWord sym)
- Cryptol.Backend: fpToInteger :: Backend sym => sym -> String -> SWord sym -> SFloat sym -> SEval sym (SInteger sym)
- Cryptol.Backend: fpToRational :: Backend sym => sym -> SFloat sym -> SEval sym (SRational sym)
- Cryptol.Backend: intDiv :: Backend sym => sym -> SInteger sym -> SInteger sym -> SEval sym (SInteger sym)
- Cryptol.Backend: intEq :: Backend sym => sym -> SInteger sym -> SInteger sym -> SEval sym (SBit sym)
- Cryptol.Backend: intGreaterThan :: Backend sym => sym -> SInteger sym -> SInteger sym -> SEval sym (SBit sym)
- Cryptol.Backend: intLessThan :: Backend sym => sym -> SInteger sym -> SInteger sym -> SEval sym (SBit sym)
- Cryptol.Backend: intMinus :: Backend sym => sym -> SInteger sym -> SInteger sym -> SEval sym (SInteger sym)
- Cryptol.Backend: intMod :: Backend sym => sym -> SInteger sym -> SInteger sym -> SEval sym (SInteger sym)
- Cryptol.Backend: intMult :: Backend sym => sym -> SInteger sym -> SInteger sym -> SEval sym (SInteger sym)
- Cryptol.Backend: intNegate :: Backend sym => sym -> SInteger sym -> SEval sym (SInteger sym)
- Cryptol.Backend: intPlus :: Backend sym => sym -> SInteger sym -> SInteger sym -> SEval sym (SInteger sym)
- Cryptol.Backend: intToRational :: Backend sym => sym -> SInteger sym -> SEval sym (SRational sym)
- Cryptol.Backend: intToZn :: Backend sym => sym -> Integer -> SInteger sym -> SEval sym (SInteger sym)
- Cryptol.Backend: integerAsLit :: Backend sym => sym -> SInteger sym -> Maybe Integer
- Cryptol.Backend: integerLit :: Backend sym => sym -> Integer -> SEval sym (SInteger sym)
- Cryptol.Backend: invalidIndex :: Backend sym => sym -> Integer -> SEval sym a
- Cryptol.Backend: isReady :: Backend sym => sym -> SEval sym a -> SEval sym (Maybe a)
- Cryptol.Backend: iteBit :: Backend sym => sym -> SBit sym -> SBit sym -> SBit sym -> SEval sym (SBit sym)
- Cryptol.Backend: iteFloat :: Backend sym => sym -> SBit sym -> SFloat sym -> SFloat sym -> SEval sym (SFloat sym)
- Cryptol.Backend: iteInteger :: Backend sym => sym -> SBit sym -> SInteger sym -> SInteger sym -> SEval sym (SInteger sym)
- Cryptol.Backend: iteRational :: Backend sym => sym -> SBit sym -> SRational sym -> SRational sym -> SEval sym (SRational sym)
- Cryptol.Backend: iteWord :: Backend sym => sym -> SBit sym -> SWord sym -> SWord sym -> SEval sym (SWord sym)
- Cryptol.Backend: joinWord :: Backend sym => sym -> SWord sym -> SWord sym -> SEval sym (SWord sym)
- Cryptol.Backend: mergeEval :: Backend sym => sym -> (SBit sym -> a -> a -> SEval sym a) -> SBit sym -> SEval sym a -> SEval sym a -> SEval sym a
- Cryptol.Backend: packWord :: Backend sym => sym -> [SBit sym] -> SEval sym (SWord sym)
- Cryptol.Backend: raiseError :: Backend sym => sym -> EvalError -> SEval sym a
- Cryptol.Backend: ratio :: Backend sym => sym -> SInteger sym -> SInteger sym -> SEval sym (SRational sym)
- Cryptol.Backend: rationalAdd :: Backend sym => sym -> SRational sym -> SRational sym -> SEval sym (SRational sym)
- Cryptol.Backend: rationalCeiling :: Backend sym => sym -> SRational sym -> SEval sym (SInteger sym)
- Cryptol.Backend: rationalDivide :: Backend sym => sym -> SRational sym -> SRational sym -> SEval sym (SRational sym)
- Cryptol.Backend: rationalEq :: Backend sym => sym -> SRational sym -> SRational sym -> SEval sym (SBit sym)
- Cryptol.Backend: rationalFloor :: Backend sym => sym -> SRational sym -> SEval sym (SInteger sym)
- Cryptol.Backend: rationalGreaterThan :: Backend sym => sym -> SRational sym -> SRational sym -> SEval sym (SBit sym)
- Cryptol.Backend: rationalLessThan :: Backend sym => sym -> SRational sym -> SRational sym -> SEval sym (SBit sym)
- Cryptol.Backend: rationalMul :: Backend sym => sym -> SRational sym -> SRational sym -> SEval sym (SRational sym)
- Cryptol.Backend: rationalNegate :: Backend sym => sym -> SRational sym -> SEval sym (SRational sym)
- Cryptol.Backend: rationalRecip :: Backend sym => sym -> SRational sym -> SEval sym (SRational sym)
- Cryptol.Backend: rationalRoundAway :: Backend sym => sym -> SRational sym -> SEval sym (SInteger sym)
- Cryptol.Backend: rationalRoundToEven :: Backend sym => sym -> SRational sym -> SEval sym (SInteger sym)
- Cryptol.Backend: rationalSub :: Backend sym => sym -> SRational sym -> SRational sym -> SEval sym (SRational sym)
- Cryptol.Backend: rationalTrunc :: Backend sym => sym -> SRational sym -> SEval sym (SInteger sym)
- Cryptol.Backend: sDeclareHole :: Backend sym => sym -> String -> SEval sym (SEval sym a, SEval sym a -> SEval sym ())
- Cryptol.Backend: sDelay :: Backend sym => sym -> SEval sym a -> SEval sym (SEval sym a)
- Cryptol.Backend: sDelayFill :: Backend sym => sym -> SEval sym a -> Maybe (SEval sym a) -> String -> SEval sym (SEval sym a)
- Cryptol.Backend: sGetCallStack :: Backend sym => sym -> SEval sym CallStack
- Cryptol.Backend: sModifyCallStack :: Backend sym => sym -> (CallStack -> CallStack) -> SEval sym a -> SEval sym a
- Cryptol.Backend: sPushFrame :: Backend sym => sym -> Name -> Range -> SEval sym a -> SEval sym a
- Cryptol.Backend: sSpark :: Backend sym => sym -> SEval sym a -> SEval sym (SEval sym a)
- Cryptol.Backend: sWithCallStack :: Backend sym => sym -> CallStack -> SEval sym a -> SEval sym a
- Cryptol.Backend: splitWord :: Backend sym => sym -> Integer -> Integer -> SWord sym -> SEval sym (SWord sym, SWord sym)
- Cryptol.Backend: type FPArith2 sym = sym -> SWord sym -> SFloat sym -> SFloat sym -> SEval sym (SFloat sym)
- Cryptol.Backend: type SBit sym :: Type;
- Cryptol.Backend: type SEval sym :: Type -> Type;
- Cryptol.Backend: type SFloat sym :: Type;
- Cryptol.Backend: type SInteger sym :: Type;
- Cryptol.Backend: type SWord sym :: Type;
- Cryptol.Backend: unpackWord :: Backend sym => sym -> SWord sym -> SEval sym [SBit sym]
- Cryptol.Backend: wordAnd :: Backend sym => sym -> SWord sym -> SWord sym -> SEval sym (SWord sym)
- Cryptol.Backend: wordAsChar :: Backend sym => sym -> SWord sym -> Maybe Char
- Cryptol.Backend: wordAsLit :: Backend sym => sym -> SWord sym -> Maybe (Integer, Integer)
- Cryptol.Backend: wordBit :: Backend sym => sym -> SWord sym -> Integer -> SEval sym (SBit sym)
- Cryptol.Backend: wordComplement :: Backend sym => sym -> SWord sym -> SEval sym (SWord sym)
- Cryptol.Backend: wordDiv :: Backend sym => sym -> SWord sym -> SWord sym -> SEval sym (SWord sym)
- Cryptol.Backend: wordEq :: Backend sym => sym -> SWord sym -> SWord sym -> SEval sym (SBit sym)
- Cryptol.Backend: wordFromInt :: Backend sym => sym -> Integer -> SInteger sym -> SEval sym (SWord sym)
- Cryptol.Backend: wordGreaterThan :: Backend sym => sym -> SWord sym -> SWord sym -> SEval sym (SBit sym)
- Cryptol.Backend: wordLen :: Backend sym => sym -> SWord sym -> Integer
- Cryptol.Backend: wordLessThan :: Backend sym => sym -> SWord sym -> SWord sym -> SEval sym (SBit sym)
- Cryptol.Backend: wordLg2 :: Backend sym => sym -> SWord sym -> SEval sym (SWord sym)
- Cryptol.Backend: wordLit :: Backend sym => sym -> Integer -> Integer -> SEval sym (SWord sym)
- Cryptol.Backend: wordMinus :: Backend sym => sym -> SWord sym -> SWord sym -> SEval sym (SWord sym)
- Cryptol.Backend: wordMod :: Backend sym => sym -> SWord sym -> SWord sym -> SEval sym (SWord sym)
- Cryptol.Backend: wordMult :: Backend sym => sym -> SWord sym -> SWord sym -> SEval sym (SWord sym)
- Cryptol.Backend: wordNegate :: Backend sym => sym -> SWord sym -> SEval sym (SWord sym)
- Cryptol.Backend: wordOr :: Backend sym => sym -> SWord sym -> SWord sym -> SEval sym (SWord sym)
- Cryptol.Backend: wordPlus :: Backend sym => sym -> SWord sym -> SWord sym -> SEval sym (SWord sym)
- Cryptol.Backend: wordRotateLeft :: Backend sym => sym -> SWord sym -> SWord sym -> SEval sym (SWord sym)
- Cryptol.Backend: wordRotateRight :: Backend sym => sym -> SWord sym -> SWord sym -> SEval sym (SWord sym)
- Cryptol.Backend: wordShiftLeft :: Backend sym => sym -> SWord sym -> SWord sym -> SEval sym (SWord sym)
- Cryptol.Backend: wordShiftRight :: Backend sym => sym -> SWord sym -> SWord sym -> SEval sym (SWord sym)
- Cryptol.Backend: wordSignedDiv :: Backend sym => sym -> SWord sym -> SWord sym -> SEval sym (SWord sym)
- Cryptol.Backend: wordSignedLessThan :: Backend sym => sym -> SWord sym -> SWord sym -> SEval sym (SBit sym)
- Cryptol.Backend: wordSignedMod :: Backend sym => sym -> SWord sym -> SWord sym -> SEval sym (SWord sym)
- Cryptol.Backend: wordSignedShiftRight :: Backend sym => sym -> SWord sym -> SWord sym -> SEval sym (SWord sym)
- Cryptol.Backend: wordToInt :: Backend sym => sym -> SWord sym -> SEval sym (SInteger sym)
- Cryptol.Backend: wordToSignedInt :: Backend sym => sym -> SWord sym -> SEval sym (SInteger sym)
- Cryptol.Backend: wordUpdate :: Backend sym => sym -> SWord sym -> Integer -> SBit sym -> SEval sym (SWord sym)
- Cryptol.Backend: wordXor :: Backend sym => sym -> SWord sym -> SWord sym -> SEval sym (SWord sym)
- Cryptol.Backend: znEq :: Backend sym => sym -> Integer -> SInteger sym -> SInteger sym -> SEval sym (SBit sym)
- Cryptol.Backend: znMinus :: Backend sym => sym -> Integer -> SInteger sym -> SInteger sym -> SEval sym (SInteger sym)
- Cryptol.Backend: znMult :: Backend sym => sym -> Integer -> SInteger sym -> SInteger sym -> SEval sym (SInteger sym)
- Cryptol.Backend: znNegate :: Backend sym => sym -> Integer -> SInteger sym -> SEval sym (SInteger sym)
- Cryptol.Backend: znPlus :: Backend sym => sym -> Integer -> SInteger sym -> SInteger sym -> SEval sym (SInteger sym)
- Cryptol.Backend: znRecip :: Backend sym => sym -> Integer -> SInteger sym -> SEval sym (SInteger sym)
- Cryptol.Backend: znToInt :: Backend sym => sym -> Integer -> SInteger sym -> SEval sym (SInteger sym)
- Cryptol.Backend: }
- Cryptol.Backend.Arch: maxBigIntWidth :: Integer
- Cryptol.Backend.Concrete: BV :: !Integer -> !Integer -> BV
- Cryptol.Backend.Concrete: Concrete :: Concrete
- Cryptol.Backend.Concrete: binBV :: Applicative m => (Integer -> Integer -> Integer) -> BV -> BV -> m BV
- Cryptol.Backend.Concrete: bvVal :: BV -> Integer
- Cryptol.Backend.Concrete: data BV
- Cryptol.Backend.Concrete: data Concrete
- Cryptol.Backend.Concrete: fpBinArith :: (BFOpts -> BigFloat -> BigFloat -> (BigFloat, Status)) -> Concrete -> SWord Concrete -> SFloat Concrete -> SFloat Concrete -> SEval Concrete (SFloat Concrete)
- Cryptol.Backend.Concrete: fpRoundMode :: Concrete -> SWord Concrete -> SEval Concrete RoundMode
- Cryptol.Backend.Concrete: instance Cryptol.Backend.Backend Cryptol.Backend.Concrete.Concrete
- Cryptol.Backend.Concrete: instance GHC.Show.Show Cryptol.Backend.Concrete.BV
- Cryptol.Backend.Concrete: instance GHC.Show.Show Cryptol.Backend.Concrete.Concrete
- Cryptol.Backend.Concrete: integerToChar :: Integer -> Char
- Cryptol.Backend.Concrete: lg2 :: Integer -> Integer
- Cryptol.Backend.Concrete: liftBinIntMod :: Monad m => (Integer -> Integer -> Integer) -> Integer -> Integer -> Integer -> m Integer
- Cryptol.Backend.Concrete: mask :: Integer -> Integer -> Integer
- Cryptol.Backend.Concrete: mkBv :: Integer -> Integer -> BV
- Cryptol.Backend.Concrete: ppBV :: PPOpts -> BV -> Doc
- Cryptol.Backend.Concrete: signedBV :: BV -> Integer
- Cryptol.Backend.Concrete: signedValue :: Integer -> Integer -> Integer
- Cryptol.Backend.Concrete: unaryBV :: (Integer -> Integer) -> BV -> BV
- Cryptol.Backend.FFI: SomeFFIArg :: a -> SomeFFIArg
- Cryptol.Backend.FFI: callForeignImpl :: forall a. FFIRet a => ForeignImpl -> [SomeFFIArg] -> IO a
- Cryptol.Backend.FFI: class Storable a => FFIArg a
- Cryptol.Backend.FFI: class Storable a => FFIRet a
- Cryptol.Backend.FFI: data ForeignImpl
- Cryptol.Backend.FFI: data ForeignSrc
- Cryptol.Backend.FFI: data SomeFFIArg
- Cryptol.Backend.FFI: foreignLibPath :: FilePath -> IO (Maybe (FilePath, Bool))
- Cryptol.Backend.FFI: getForeignSrcPath :: ForeignSrc -> Maybe FilePath
- Cryptol.Backend.FFI: instance Control.DeepSeq.NFData Cryptol.Backend.FFI.ForeignSrc
- Cryptol.Backend.FFI: instance Cryptol.Backend.FFI.FFIArg (GHC.Ptr.Ptr a)
- Cryptol.Backend.FFI: instance Cryptol.Backend.FFI.FFIArg Foreign.C.Types.CDouble
- Cryptol.Backend.FFI: instance Cryptol.Backend.FFI.FFIArg Foreign.C.Types.CFloat
- Cryptol.Backend.FFI: instance Cryptol.Backend.FFI.FFIArg Foreign.C.Types.CSize
- Cryptol.Backend.FFI: instance Cryptol.Backend.FFI.FFIArg GHC.Word.Word16
- Cryptol.Backend.FFI: instance Cryptol.Backend.FFI.FFIArg GHC.Word.Word32
- Cryptol.Backend.FFI: instance Cryptol.Backend.FFI.FFIArg GHC.Word.Word64
- Cryptol.Backend.FFI: instance Cryptol.Backend.FFI.FFIArg GHC.Word.Word8
- Cryptol.Backend.FFI: instance Cryptol.Backend.FFI.FFIRet ()
- Cryptol.Backend.FFI: instance Cryptol.Backend.FFI.FFIRet Foreign.C.Types.CDouble
- Cryptol.Backend.FFI: instance Cryptol.Backend.FFI.FFIRet Foreign.C.Types.CFloat
- Cryptol.Backend.FFI: instance Cryptol.Backend.FFI.FFIRet GHC.Word.Word16
- Cryptol.Backend.FFI: instance Cryptol.Backend.FFI.FFIRet GHC.Word.Word32
- Cryptol.Backend.FFI: instance Cryptol.Backend.FFI.FFIRet GHC.Word.Word64
- Cryptol.Backend.FFI: instance Cryptol.Backend.FFI.FFIRet GHC.Word.Word8
- Cryptol.Backend.FFI: instance GHC.Show.Show Cryptol.Backend.FFI.ForeignSrc
- Cryptol.Backend.FFI: loadForeignImpl :: ForeignSrc -> String -> IO (Either FFILoadError ForeignImpl)
- Cryptol.Backend.FFI: loadForeignSrc :: FilePath -> IO (Either FFILoadError ForeignSrc)
- Cryptol.Backend.FFI: unloadForeignSrc :: ForeignSrc -> IO ()
- Cryptol.Backend.FFI.Error: CantLoadFFIImpl :: String -> String -> FFILoadError
- Cryptol.Backend.FFI.Error: CantLoadFFISrc :: FilePath -> String -> FFILoadError
- Cryptol.Backend.FFI.Error: FFIDuplicates :: NonEmpty Name -> FFILoadError
- Cryptol.Backend.FFI.Error: FFIInFunctor :: Name -> FFILoadError
- Cryptol.Backend.FFI.Error: data FFILoadError
- Cryptol.Backend.FFI.Error: instance Control.DeepSeq.NFData Cryptol.Backend.FFI.Error.FFILoadError
- Cryptol.Backend.FFI.Error: instance Cryptol.Utils.PP.PP Cryptol.Backend.FFI.Error.FFILoadError
- Cryptol.Backend.FFI.Error: instance GHC.Generics.Generic Cryptol.Backend.FFI.Error.FFILoadError
- Cryptol.Backend.FFI.Error: instance GHC.Show.Show Cryptol.Backend.FFI.Error.FFILoadError
- Cryptol.Backend.FloatHelpers: BF :: !Integer -> !Integer -> !BigFloat -> BF
- Cryptol.Backend.FloatHelpers: [bfExpWidth] :: BF -> !Integer
- Cryptol.Backend.FloatHelpers: [bfPrecWidth] :: BF -> !Integer
- Cryptol.Backend.FloatHelpers: [bfValue] :: BF -> !BigFloat
- Cryptol.Backend.FloatHelpers: data BF
- Cryptol.Backend.FloatHelpers: floatFromBits :: Integer -> Integer -> Integer -> BF
- Cryptol.Backend.FloatHelpers: floatFromDouble :: Double -> BF
- Cryptol.Backend.FloatHelpers: floatFromRational :: Integer -> Integer -> RoundMode -> Rational -> BF
- Cryptol.Backend.FloatHelpers: floatToBits :: Integer -> Integer -> BigFloat -> Integer
- Cryptol.Backend.FloatHelpers: floatToInteger :: String -> RoundMode -> BF -> Either EvalError Integer
- Cryptol.Backend.FloatHelpers: floatToRational :: String -> BF -> Either EvalError Rational
- Cryptol.Backend.FloatHelpers: fpCheckStatus :: (BigFloat, Status) -> BigFloat
- Cryptol.Backend.FloatHelpers: fpLit :: Integer -> Integer -> Rational -> BF
- Cryptol.Backend.FloatHelpers: fpOpts :: Integer -> Integer -> RoundMode -> BFOpts
- Cryptol.Backend.FloatHelpers: fpPP :: PPOpts -> BF -> Doc
- Cryptol.Backend.FloatHelpers: fpRound :: Integer -> Either EvalError RoundMode
- Cryptol.Backend.Monad: BadRoundingMode :: Integer -> EvalError
- Cryptol.Backend.Monad: BadValue :: String -> EvalError
- Cryptol.Backend.Monad: DivideByZero :: EvalError
- Cryptol.Backend.Monad: Eval :: !CallStack -> IO a -> Eval a
- Cryptol.Backend.Monad: EvalErrorEx :: CallStack -> EvalError -> EvalErrorEx
- Cryptol.Backend.Monad: FFINotSupported :: Name -> EvalError
- Cryptol.Backend.Monad: FFITypeNumTooBig :: Name -> TParam -> Integer -> EvalError
- Cryptol.Backend.Monad: InvalidIndex :: Maybe Integer -> EvalError
- Cryptol.Backend.Monad: LogNegative :: EvalError
- Cryptol.Backend.Monad: LoopError :: String -> EvalError
- Cryptol.Backend.Monad: NegativeExponent :: EvalError
- Cryptol.Backend.Monad: NoMatchingConstructor :: Maybe String -> EvalError
- Cryptol.Backend.Monad: NoMatchingPropGuardCase :: String -> EvalError
- Cryptol.Backend.Monad: NoPrim :: Name -> EvalError
- Cryptol.Backend.Monad: Ready :: !a -> Eval a
- Cryptol.Backend.Monad: Thunk :: !TVar (ThunkState a) -> Eval a
- Cryptol.Backend.Monad: UnsupportedSymbolicOp :: String -> Unsupported
- Cryptol.Backend.Monad: UserError :: String -> EvalError
- Cryptol.Backend.Monad: WordTooWide :: Integer -> WordTooWide
- Cryptol.Backend.Monad: blackhole :: String -> Eval (Eval a, Eval a -> Eval ())
- Cryptol.Backend.Monad: combineCallStacks :: CallStack -> CallStack -> CallStack
- Cryptol.Backend.Monad: data CallStack
- Cryptol.Backend.Monad: data Eval a
- Cryptol.Backend.Monad: data EvalError
- Cryptol.Backend.Monad: data EvalErrorEx
- Cryptol.Backend.Monad: data Unsupported
- Cryptol.Backend.Monad: data WordTooWide
- Cryptol.Backend.Monad: delayFill :: Eval a -> Maybe (Eval a) -> String -> Eval (Eval a)
- Cryptol.Backend.Monad: displayCallStack :: CallStack -> Doc
- Cryptol.Backend.Monad: evalPanic :: HasCallStack => String -> [String] -> a
- Cryptol.Backend.Monad: evalSpark :: Eval a -> Eval (Eval a)
- Cryptol.Backend.Monad: getCallStack :: Eval CallStack
- Cryptol.Backend.Monad: instance Control.Monad.IO.Class.MonadIO Cryptol.Backend.Monad.Eval
- Cryptol.Backend.Monad: instance Cryptol.Utils.PP.PP Cryptol.Backend.Monad.EvalError
- Cryptol.Backend.Monad: instance Cryptol.Utils.PP.PP Cryptol.Backend.Monad.EvalErrorEx
- Cryptol.Backend.Monad: instance Cryptol.Utils.PP.PP Cryptol.Backend.Monad.Unsupported
- Cryptol.Backend.Monad: instance Cryptol.Utils.PP.PP Cryptol.Backend.Monad.WordTooWide
- Cryptol.Backend.Monad: instance GHC.Base.Applicative Cryptol.Backend.Monad.Eval
- Cryptol.Backend.Monad: instance GHC.Base.Functor Cryptol.Backend.Monad.Eval
- Cryptol.Backend.Monad: instance GHC.Base.Monad Cryptol.Backend.Monad.Eval
- Cryptol.Backend.Monad: instance GHC.Base.Monoid Cryptol.Backend.Monad.CallStack
- Cryptol.Backend.Monad: instance GHC.Base.Semigroup Cryptol.Backend.Monad.CallStack
- Cryptol.Backend.Monad: instance GHC.Exception.Type.Exception Cryptol.Backend.Monad.EvalErrorEx
- Cryptol.Backend.Monad: instance GHC.Exception.Type.Exception Cryptol.Backend.Monad.Unsupported
- Cryptol.Backend.Monad: instance GHC.Exception.Type.Exception Cryptol.Backend.Monad.WordTooWide
- Cryptol.Backend.Monad: instance GHC.Show.Show Cryptol.Backend.Monad.EvalError
- Cryptol.Backend.Monad: instance GHC.Show.Show Cryptol.Backend.Monad.EvalErrorEx
- Cryptol.Backend.Monad: instance GHC.Show.Show Cryptol.Backend.Monad.Unsupported
- Cryptol.Backend.Monad: instance GHC.Show.Show Cryptol.Backend.Monad.WordTooWide
- Cryptol.Backend.Monad: io :: IO a -> Eval a
- Cryptol.Backend.Monad: maybeReady :: Eval a -> Eval (Maybe a)
- Cryptol.Backend.Monad: modifyCallStack :: (CallStack -> CallStack) -> Eval a -> Eval a
- Cryptol.Backend.Monad: pushCallFrame :: Name -> Range -> CallStack -> CallStack
- Cryptol.Backend.Monad: ready :: a -> Eval a
- Cryptol.Backend.Monad: runEval :: CallStack -> Eval a -> IO a
- Cryptol.Backend.Monad: withCallStack :: CallStack -> Eval a -> Eval a
- Cryptol.Backend.Monad: wordTooWide :: Integer -> a
- Cryptol.Backend.SBV: SBV :: MVar State -> MVar SVal -> SBV
- Cryptol.Backend.SBV: SBVError :: !EvalErrorEx -> SBVResult a
- Cryptol.Backend.SBV: SBVEval :: Eval (SBVResult a) -> SBVEval a
- Cryptol.Backend.SBV: SBVResult :: !SVal -> !a -> SBVResult a
- Cryptol.Backend.SBV: [sbvDefRelations] :: SBV -> MVar SVal
- Cryptol.Backend.SBV: [sbvEval] :: SBVEval a -> Eval (SBVResult a)
- Cryptol.Backend.SBV: [sbvStateVar] :: SBV -> MVar State
- Cryptol.Backend.SBV: addDefEqn :: SBV -> SVal -> IO ()
- Cryptol.Backend.SBV: ashr :: SVal -> SVal -> SVal
- Cryptol.Backend.SBV: data SBV
- Cryptol.Backend.SBV: data SBVResult a
- Cryptol.Backend.SBV: evalPanic :: String -> [String] -> a
- Cryptol.Backend.SBV: freshBV_ :: SBV -> Int -> IO (SWord SBV)
- Cryptol.Backend.SBV: freshSBool_ :: SBV -> IO (SBit SBV)
- Cryptol.Backend.SBV: freshSInteger_ :: SBV -> IO (SInteger SBV)
- Cryptol.Backend.SBV: instance Control.Monad.IO.Class.MonadIO Cryptol.Backend.SBV.SBVEval
- Cryptol.Backend.SBV: instance Cryptol.Backend.Backend Cryptol.Backend.SBV.SBV
- Cryptol.Backend.SBV: instance GHC.Base.Applicative Cryptol.Backend.SBV.SBVEval
- Cryptol.Backend.SBV: instance GHC.Base.Applicative Cryptol.Backend.SBV.SBVResult
- Cryptol.Backend.SBV: instance GHC.Base.Functor Cryptol.Backend.SBV.SBVEval
- Cryptol.Backend.SBV: instance GHC.Base.Functor Cryptol.Backend.SBV.SBVResult
- Cryptol.Backend.SBV: instance GHC.Base.Monad Cryptol.Backend.SBV.SBVEval
- Cryptol.Backend.SBV: instance GHC.Base.Monad Cryptol.Backend.SBV.SBVResult
- Cryptol.Backend.SBV: literalSWord :: Int -> Integer -> SWord SBV
- Cryptol.Backend.SBV: lshr :: SVal -> SVal -> SVal
- Cryptol.Backend.SBV: newtype SBVEval a
- Cryptol.Backend.SBV: shl :: SVal -> SVal -> SVal
- Cryptol.Backend.SBV: svFromInteger :: Integer -> SInteger SBV -> SWord SBV
- Cryptol.Backend.SBV: svToInteger :: SWord SBV -> SInteger SBV
- Cryptol.Backend.SeqMap: BitIndexSegment :: SBit sym -> IndexSegment sym
- Cryptol.Backend.SeqMap: WordIndexSegment :: SWord sym -> IndexSegment sym
- Cryptol.Backend.SeqMap: barrelShifter :: Backend sym => sym -> (SBit sym -> a -> a -> SEval sym a) -> (SeqMap sym a -> Integer -> SEval sym (SeqMap sym a)) -> Nat' -> SeqMap sym a -> Integer -> [IndexSegment sym] -> SEval sym (SeqMap sym a)
- Cryptol.Backend.SeqMap: concatSeqMap :: Backend sym => Integer -> SeqMap sym a -> SeqMap sym a -> SeqMap sym a
- Cryptol.Backend.SeqMap: data IndexSegment sym
- Cryptol.Backend.SeqMap: data SeqMap sym a
- Cryptol.Backend.SeqMap: delaySeqMap :: Backend sym => sym -> SEval sym (SeqMap sym a) -> SEval sym (SeqMap sym a)
- Cryptol.Backend.SeqMap: dropSeqMap :: Backend sym => Integer -> SeqMap sym a -> SeqMap sym a
- Cryptol.Backend.SeqMap: enumerateSeqMap :: (Backend sym, Integral n) => n -> SeqMap sym a -> [SEval sym a]
- Cryptol.Backend.SeqMap: finiteSeqMap :: Backend sym => sym -> [SEval sym a] -> SeqMap sym a
- Cryptol.Backend.SeqMap: indexSeqMap :: (Integer -> SEval sym a) -> SeqMap sym a
- Cryptol.Backend.SeqMap: infiniteSeqMap :: Backend sym => sym -> [SEval sym a] -> SEval sym (SeqMap sym a)
- Cryptol.Backend.SeqMap: instance Cryptol.Backend.Backend sym => GHC.Base.Functor (Cryptol.Backend.SeqMap.SeqMap sym)
- Cryptol.Backend.SeqMap: lookupSeqMap :: Backend sym => SeqMap sym a -> Integer -> SEval sym a
- Cryptol.Backend.SeqMap: mapSeqMap :: Backend sym => sym -> (a -> SEval sym a) -> Nat' -> SeqMap sym a -> SEval sym (SeqMap sym a)
- Cryptol.Backend.SeqMap: memoMap :: Backend sym => sym -> Nat' -> SeqMap sym a -> SEval sym (SeqMap sym a)
- Cryptol.Backend.SeqMap: mergeSeqMap :: Backend sym => sym -> (SBit sym -> a -> a -> SEval sym a) -> SBit sym -> SeqMap sym a -> SeqMap sym a -> SeqMap sym a
- Cryptol.Backend.SeqMap: reverseSeqMap :: Backend sym => Integer -> SeqMap sym a -> SeqMap sym a
- Cryptol.Backend.SeqMap: shiftSeqByInteger :: Backend sym => sym -> (SBit sym -> a -> a -> SEval sym a) -> (Integer -> Integer -> Maybe Integer) -> SEval sym a -> Nat' -> SeqMap sym a -> SInteger sym -> SEval sym (SeqMap sym a)
- Cryptol.Backend.SeqMap: splitSeqMap :: Backend sym => Integer -> SeqMap sym a -> (SeqMap sym a, SeqMap sym a)
- Cryptol.Backend.SeqMap: streamSeqMap :: Backend sym => SeqMap sym a -> [SEval sym a]
- Cryptol.Backend.SeqMap: updateSeqMap :: SeqMap sym a -> Integer -> SEval sym a -> SeqMap sym a
- Cryptol.Backend.SeqMap: zipSeqMap :: Backend sym => sym -> (a -> a -> SEval sym a) -> Nat' -> SeqMap sym a -> SeqMap sym a -> SEval sym (SeqMap sym a)
- Cryptol.Backend.What4: SomeSymFn :: SymFn sym args ret -> SomeSymFn sym
- Cryptol.Backend.What4: W4Conn :: (sym -> Eval a) -> W4Conn sym a
- Cryptol.Backend.What4: W4Error :: !EvalErrorEx -> W4Result sym a
- Cryptol.Backend.What4: W4Eval :: W4Conn sym (W4Result sym a) -> W4Eval sym a
- Cryptol.Backend.What4: W4Result :: !Pred sym -> !a -> W4Result sym a
- Cryptol.Backend.What4: What4 :: sym -> MVar (Pred sym) -> MVar (What4FunCache sym) -> MVar (Set Text) -> What4 sym
- Cryptol.Backend.What4: [evalConn] :: W4Conn sym a -> sym -> Eval a
- Cryptol.Backend.What4: [evalPartial] :: W4Eval sym a -> W4Conn sym (W4Result sym a)
- Cryptol.Backend.What4: [w4] :: What4 sym -> sym
- Cryptol.Backend.What4: [w4defs] :: What4 sym -> MVar (Pred sym)
- Cryptol.Backend.What4: [w4funs] :: What4 sym -> MVar (What4FunCache sym)
- Cryptol.Backend.What4: [w4uninterpWarns] :: What4 sym -> MVar (Set Text)
- Cryptol.Backend.What4: addDefEqn :: IsSymExprBuilder sym => What4 sym -> Pred sym -> W4Eval sym ()
- Cryptol.Backend.What4: addSafety :: IsSymExprBuilder sym => Pred sym -> W4Eval sym ()
- Cryptol.Backend.What4: assertBVDivisor :: IsSymExprBuilder sym => What4 sym -> SWord sym -> W4Eval sym ()
- Cryptol.Backend.What4: assertIntDivisor :: IsSymExprBuilder sym => What4 sym -> SymInteger sym -> W4Eval sym ()
- Cryptol.Backend.What4: data SomeSymFn sym
- Cryptol.Backend.What4: data W4Result sym a
- Cryptol.Backend.What4: data What4 sym
- Cryptol.Backend.What4: doEval :: IsSymExprBuilder sym => Eval a -> W4Conn sym a
- Cryptol.Backend.What4: evalError :: IsSymExprBuilder sym => EvalError -> W4Eval sym a
- Cryptol.Backend.What4: evalPanic :: String -> [String] -> a
- Cryptol.Backend.What4: fpBinArith :: IsSymExprBuilder sym => SFloatBinArith sym -> What4 sym -> SWord (What4 sym) -> SFloat (What4 sym) -> SFloat (What4 sym) -> SEval (What4 sym) (SFloat (What4 sym))
- Cryptol.Backend.What4: fpCvtFromRational :: (IsSymExprBuilder sy, sym ~ What4 sy) => sym -> Integer -> Integer -> SWord sym -> SRational sym -> SEval sym (SFloat sym)
- Cryptol.Backend.What4: fpCvtToInteger :: (IsSymExprBuilder sy, sym ~ What4 sy) => sym -> String -> SWord sym -> SFloat sym -> SEval sym (SInteger sym)
- Cryptol.Backend.What4: fpCvtToRational :: (IsSymExprBuilder sy, sym ~ What4 sy) => sym -> SFloat sym -> SEval sym (SRational sym)
- Cryptol.Backend.What4: fpRoundingMode :: IsSymExprBuilder sym => What4 sym -> SWord (What4 sym) -> SEval (What4 sym) RoundingMode
- Cryptol.Backend.What4: getSym :: W4Conn sym sym
- Cryptol.Backend.What4: instance GHC.Base.Functor (Cryptol.Backend.What4.W4Result sym)
- Cryptol.Backend.What4: instance What4.Interface.IsSymExprBuilder sym => Control.Monad.IO.Class.MonadIO (Cryptol.Backend.What4.W4Conn sym)
- Cryptol.Backend.What4: instance What4.Interface.IsSymExprBuilder sym => Control.Monad.IO.Class.MonadIO (Cryptol.Backend.What4.W4Eval sym)
- Cryptol.Backend.What4: instance What4.Interface.IsSymExprBuilder sym => Cryptol.Backend.Backend (Cryptol.Backend.What4.What4 sym)
- Cryptol.Backend.What4: instance What4.Interface.IsSymExprBuilder sym => GHC.Base.Applicative (Cryptol.Backend.What4.W4Conn sym)
- Cryptol.Backend.What4: instance What4.Interface.IsSymExprBuilder sym => GHC.Base.Applicative (Cryptol.Backend.What4.W4Eval sym)
- Cryptol.Backend.What4: instance What4.Interface.IsSymExprBuilder sym => GHC.Base.Functor (Cryptol.Backend.What4.W4Conn sym)
- Cryptol.Backend.What4: instance What4.Interface.IsSymExprBuilder sym => GHC.Base.Functor (Cryptol.Backend.What4.W4Eval sym)
- Cryptol.Backend.What4: instance What4.Interface.IsSymExprBuilder sym => GHC.Base.Monad (Cryptol.Backend.What4.W4Conn sym)
- Cryptol.Backend.What4: instance What4.Interface.IsSymExprBuilder sym => GHC.Base.Monad (Cryptol.Backend.What4.W4Eval sym)
- Cryptol.Backend.What4: lazyIte :: (IsExpr p, Monad m) => (p BaseBoolType -> a -> a -> m a) -> p BaseBoolType -> m a -> m a -> m a
- Cryptol.Backend.What4: newtype W4Conn sym a
- Cryptol.Backend.What4: newtype W4Eval sym a
- Cryptol.Backend.What4: sLg2 :: IsSymExprBuilder sym => sym -> SWord sym -> SEval (What4 sym) (SWord sym)
- Cryptol.Backend.What4: sModAdd :: IsSymExprBuilder sym => sym -> Integer -> SymInteger sym -> SymInteger sym -> IO (SymInteger sym)
- Cryptol.Backend.What4: sModMult :: IsSymExprBuilder sym => sym -> Integer -> SymInteger sym -> SymInteger sym -> IO (SymInteger sym)
- Cryptol.Backend.What4: sModNegate :: IsSymExprBuilder sym => sym -> Integer -> SymInteger sym -> IO (SymInteger sym)
- Cryptol.Backend.What4: sModRecip :: IsSymExprBuilder sym => What4 sym -> Integer -> SymInteger sym -> W4Eval sym (SymInteger sym)
- Cryptol.Backend.What4: sModSub :: IsSymExprBuilder sym => sym -> Integer -> SymInteger sym -> SymInteger sym -> IO (SymInteger sym)
- Cryptol.Backend.What4: total :: IsSymExprBuilder sym => W4Conn sym a -> W4Eval sym a
- Cryptol.Backend.What4: type What4FunCache sym = Map Text (SomeSymFn sym)
- Cryptol.Backend.What4: w4And :: IsSymExprBuilder sym => Pred sym -> Pred sym -> W4Conn sym (Pred sym)
- Cryptol.Backend.What4: w4Eval :: W4Eval sym a -> sym -> Eval (W4Result sym a)
- Cryptol.Backend.What4: w4ITE :: IsSymExprBuilder sym => Pred sym -> Pred sym -> Pred sym -> W4Conn sym (Pred sym)
- Cryptol.Backend.What4: w4Not :: IsSymExprBuilder sym => Pred sym -> W4Conn sym (Pred sym)
- Cryptol.Backend.What4: w4Thunk :: Eval (W4Result sym a) -> W4Eval sym a
- Cryptol.Backend.What4: w4bvAshr :: IsSymExprBuilder sym => sym -> SWord sym -> SWord sym -> W4Eval sym (SWord sym)
- Cryptol.Backend.What4: w4bvLshr :: IsSymExprBuilder sym => sym -> SWord sym -> SWord sym -> W4Eval sym (SWord sym)
- Cryptol.Backend.What4: w4bvRol :: IsSymExprBuilder sym => sym -> SWord sym -> SWord sym -> W4Eval sym (SWord sym)
- Cryptol.Backend.What4: w4bvRor :: IsSymExprBuilder sym => sym -> SWord sym -> SWord sym -> W4Eval sym (SWord sym)
- Cryptol.Backend.What4: w4bvShl :: IsSymExprBuilder sym => sym -> SWord sym -> SWord sym -> W4Eval sym (SWord sym)
- Cryptol.Backend.WordValue: asBitsMap :: Backend sym => sym -> WordValue sym -> SeqMap sym (SBit sym)
- Cryptol.Backend.WordValue: asWordList :: forall sym. Backend sym => sym -> [WordValue sym] -> SEval sym (Maybe [SWord sym])
- Cryptol.Backend.WordValue: asWordVal :: Backend sym => sym -> WordValue sym -> SEval sym (SWord sym)
- Cryptol.Backend.WordValue: assertWordValueInBounds :: Backend sym => sym -> Integer -> WordValue sym -> SEval sym ()
- Cryptol.Backend.WordValue: bitmapWordVal :: Backend sym => sym -> Integer -> SeqMap sym (SBit sym) -> SEval sym (WordValue sym)
- Cryptol.Backend.WordValue: data WordValue sym
- Cryptol.Backend.WordValue: delayWordValue :: Backend sym => sym -> Integer -> SEval sym (WordValue sym) -> SEval sym (WordValue sym)
- Cryptol.Backend.WordValue: dropWordVal :: Backend sym => sym -> Integer -> Integer -> WordValue sym -> SEval sym (WordValue sym)
- Cryptol.Backend.WordValue: enumerateIndexSegments :: Backend sym => sym -> WordValue sym -> SEval sym [IndexSegment sym]
- Cryptol.Backend.WordValue: enumerateWordValue :: Backend sym => sym -> WordValue sym -> SEval sym [SBit sym]
- Cryptol.Backend.WordValue: enumerateWordValueRev :: Backend sym => sym -> WordValue sym -> SEval sym [SBit sym]
- Cryptol.Backend.WordValue: extractWordVal :: Backend sym => sym -> Integer -> Integer -> WordValue sym -> SEval sym (WordValue sym)
- Cryptol.Backend.WordValue: forceWordValue :: Backend sym => WordValue sym -> SEval sym ()
- Cryptol.Backend.WordValue: indexWordValue :: Backend sym => sym -> WordValue sym -> Integer -> SEval sym (SBit sym)
- Cryptol.Backend.WordValue: instance GHC.Generics.Generic (Cryptol.Backend.WordValue.WordValue sym)
- Cryptol.Backend.WordValue: joinWordVal :: Backend sym => sym -> WordValue sym -> WordValue sym -> SEval sym (WordValue sym)
- Cryptol.Backend.WordValue: joinWords :: forall sym. Backend sym => sym -> Integer -> Integer -> SeqMap sym (WordValue sym) -> SEval sym (WordValue sym)
- Cryptol.Backend.WordValue: mergeWord :: Backend sym => sym -> SBit sym -> WordValue sym -> WordValue sym -> SEval sym (WordValue sym)
- Cryptol.Backend.WordValue: mergeWord' :: Backend sym => sym -> SBit sym -> SEval sym (WordValue sym) -> SEval sym (WordValue sym) -> SEval sym (WordValue sym)
- Cryptol.Backend.WordValue: reverseWordVal :: Backend sym => sym -> WordValue sym -> SEval sym (WordValue sym)
- Cryptol.Backend.WordValue: shiftSeqByWord :: Backend sym => sym -> (SBit sym -> a -> a -> SEval sym a) -> (Integer -> Integer -> Maybe Integer) -> SEval sym a -> Nat' -> SeqMap sym a -> WordValue sym -> SEval sym (SeqMap sym a)
- Cryptol.Backend.WordValue: shiftWordByInteger :: Backend sym => sym -> (SWord sym -> SWord sym -> SEval sym (SWord sym)) -> (Integer -> Integer -> Maybe Integer) -> WordValue sym -> SInteger sym -> SEval sym (WordValue sym)
- Cryptol.Backend.WordValue: shiftWordByWord :: Backend sym => sym -> (SWord sym -> SWord sym -> SEval sym (SWord sym)) -> (Integer -> Integer -> Maybe Integer) -> WordValue sym -> WordValue sym -> SEval sym (WordValue sym)
- Cryptol.Backend.WordValue: takeWordVal :: Backend sym => sym -> Integer -> Integer -> WordValue sym -> SEval sym (WordValue sym)
- Cryptol.Backend.WordValue: updateWordByWord :: Backend sym => sym -> IndexDirection -> WordValue sym -> WordValue sym -> SEval sym (SBit sym) -> SEval sym (WordValue sym)
- Cryptol.Backend.WordValue: updateWordValue :: Backend sym => sym -> WordValue sym -> Integer -> SEval sym (SBit sym) -> SEval sym (WordValue sym)
- Cryptol.Backend.WordValue: wordVal :: SWord sym -> WordValue sym
- Cryptol.Backend.WordValue: wordValAsLit :: Backend sym => sym -> WordValue sym -> SEval sym (Maybe Integer)
- Cryptol.Backend.WordValue: wordValLogicOp :: Backend sym => sym -> (SBit sym -> SBit sym -> SEval sym (SBit sym)) -> (SWord sym -> SWord sym -> SEval sym (SWord sym)) -> WordValue sym -> WordValue sym -> SEval sym (WordValue sym)
- Cryptol.Backend.WordValue: wordValUnaryOp :: Backend sym => sym -> (SBit sym -> SEval sym (SBit sym)) -> (SWord sym -> SEval sym (SWord sym)) -> WordValue sym -> SEval sym (WordValue sym)
- Cryptol.Backend.WordValue: wordValueEqualsInteger :: forall sym. Backend sym => sym -> WordValue sym -> Integer -> SEval sym (SBit sym)
- Cryptol.Backend.WordValue: wordValueSize :: Backend sym => sym -> WordValue sym -> Integer
- Cryptol.Eval: BadRoundingMode :: Integer -> EvalError
- Cryptol.Eval: BadValue :: String -> EvalError
- Cryptol.Eval: DivideByZero :: EvalError
- Cryptol.Eval: EvalErrorEx :: CallStack -> EvalError -> EvalErrorEx
- Cryptol.Eval: EvalOpts :: Logger -> PPOpts -> EvalOpts
- Cryptol.Eval: FFINotSupported :: Name -> EvalError
- Cryptol.Eval: FFITypeNumTooBig :: Name -> TParam -> Integer -> EvalError
- Cryptol.Eval: InvalidIndex :: Maybe Integer -> EvalError
- Cryptol.Eval: LogNegative :: EvalError
- Cryptol.Eval: LoopError :: String -> EvalError
- Cryptol.Eval: NegativeExponent :: EvalError
- Cryptol.Eval: NoMatchingConstructor :: Maybe String -> EvalError
- Cryptol.Eval: NoMatchingPropGuardCase :: String -> EvalError
- Cryptol.Eval: NoPrim :: Name -> EvalError
- Cryptol.Eval: PPOpts :: Bool -> Int -> Int -> Int -> PPFloatFormat -> FieldOrder -> PPOpts
- Cryptol.Eval: UnsupportedSymbolicOp :: String -> Unsupported
- Cryptol.Eval: UserError :: String -> EvalError
- Cryptol.Eval: WordTooWide :: Integer -> WordTooWide
- Cryptol.Eval: [evalLogger] :: EvalOpts -> Logger
- Cryptol.Eval: [evalPPOpts] :: EvalOpts -> PPOpts
- Cryptol.Eval: [useAscii] :: PPOpts -> Bool
- Cryptol.Eval: [useBase] :: PPOpts -> Int
- Cryptol.Eval: [useFPBase] :: PPOpts -> Int
- Cryptol.Eval: [useFPFormat] :: PPOpts -> PPFloatFormat
- Cryptol.Eval: [useFieldOrder] :: PPOpts -> FieldOrder
- Cryptol.Eval: [useInfLength] :: PPOpts -> Int
- Cryptol.Eval: checkProp :: Prop -> Bool
- Cryptol.Eval: data Eval a
- Cryptol.Eval: data EvalError
- Cryptol.Eval: data EvalErrorEx
- Cryptol.Eval: data EvalOpts
- Cryptol.Eval: data PPOpts
- Cryptol.Eval: data Unsupported
- Cryptol.Eval: data WordTooWide
- Cryptol.Eval: defaultPPOpts :: PPOpts
- Cryptol.Eval: emptyEnv :: GenEvalEnv sym
- Cryptol.Eval: evalDecls :: EvalPrims sym => sym -> [DeclGroup] -> GenEvalEnv sym -> SEval sym (GenEvalEnv sym)
- Cryptol.Eval: evalEnumCon :: Backend sym => sym -> Ident -> Int -> SEval sym (Vector (SEval sym (GenValue sym)) -> GenValue sym)
- Cryptol.Eval: evalExpr :: (?range :: Range, EvalPrims sym) => sym -> GenEvalEnv sym -> Expr -> SEval sym (GenValue sym)
- Cryptol.Eval: evalNominalDecls :: EvalPrims sym => sym -> Map Name NominalType -> GenEvalEnv sym -> SEval sym (GenEvalEnv sym)
- Cryptol.Eval: evalSel :: Backend sym => sym -> GenValue sym -> Selector -> SEval sym (GenValue sym)
- Cryptol.Eval: evalSetSel :: forall sym. Backend sym => sym -> TValue -> GenValue sym -> Selector -> SEval sym (GenValue sym) -> SEval sym (GenValue sym)
- Cryptol.Eval: forceValue :: Backend sym => GenValue sym -> SEval sym ()
- Cryptol.Eval: instance GHC.Base.Monoid (Cryptol.Eval.ListEnv sym)
- Cryptol.Eval: instance GHC.Base.Semigroup (Cryptol.Eval.ListEnv sym)
- Cryptol.Eval: moduleEnv :: EvalPrims sym => sym -> Module -> GenEvalEnv sym -> SEval sym (GenEvalEnv sym)
- Cryptol.Eval: runEval :: CallStack -> Eval a -> IO a
- Cryptol.Eval: type EvalEnv = GenEvalEnv Concrete
- Cryptol.Eval.Concrete: primTable :: IO EvalOpts -> Map PrimIdent (Prim Concrete)
- Cryptol.Eval.Concrete: toExpr :: PrimMap -> TValue -> Value -> Eval (Maybe Expr)
- Cryptol.Eval.Concrete: type Value = GenValue Concrete
- Cryptol.Eval.Env: EvalEnv :: !IntMap (Either (Prim sym) (SEval sym (GenValue sym))) -> !TypeEnv -> GenEvalEnv sym
- Cryptol.Eval.Env: [envTypes] :: GenEvalEnv sym -> !TypeEnv
- Cryptol.Eval.Env: [envVars] :: GenEvalEnv sym -> !IntMap (Either (Prim sym) (SEval sym (GenValue sym)))
- Cryptol.Eval.Env: bindType :: TVar -> Either Nat' TValue -> GenEvalEnv sym -> GenEvalEnv sym
- Cryptol.Eval.Env: bindVar :: Backend sym => sym -> Name -> SEval sym (GenValue sym) -> GenEvalEnv sym -> SEval sym (GenEvalEnv sym)
- Cryptol.Eval.Env: bindVarDirect :: Backend sym => Name -> Prim sym -> GenEvalEnv sym -> GenEvalEnv sym
- Cryptol.Eval.Env: data GenEvalEnv sym
- Cryptol.Eval.Env: emptyEnv :: GenEvalEnv sym
- Cryptol.Eval.Env: instance GHC.Base.Monoid (Cryptol.Eval.Env.GenEvalEnv sym)
- Cryptol.Eval.Env: instance GHC.Base.Semigroup (Cryptol.Eval.Env.GenEvalEnv sym)
- Cryptol.Eval.Env: instance GHC.Generics.Generic (Cryptol.Eval.Env.GenEvalEnv sym)
- Cryptol.Eval.Env: lookupType :: TVar -> GenEvalEnv sym -> Maybe (Either Nat' TValue)
- Cryptol.Eval.Env: lookupVar :: Name -> GenEvalEnv sym -> Maybe (Either (Prim sym) (SEval sym (GenValue sym)))
- Cryptol.Eval.Env: ppEnv :: Backend sym => sym -> PPOpts -> GenEvalEnv sym -> SEval sym Doc
- Cryptol.Eval.FFI: evalForeignDecls :: ForeignSrc -> [(Name, FFIFunType)] -> EvalEnv -> Eval ([FFILoadError], EvalEnv)
- Cryptol.Eval.FFI: findForeignDecls :: ModuleG mname -> [(Name, FFIFunType)]
- Cryptol.Eval.FFI.GenHeader: generateForeignHeader :: [(Name, FFIFunType)] -> String
- Cryptol.Eval.FFI.GenHeader: instance GHC.Classes.Eq Cryptol.Eval.FFI.GenHeader.Include
- Cryptol.Eval.FFI.GenHeader: instance GHC.Classes.Ord Cryptol.Eval.FFI.GenHeader.Include
- Cryptol.Eval.Generic: addV :: Backend sym => sym -> Binary sym
- Cryptol.Eval.Generic: andV :: Backend sym => sym -> Binary sym
- Cryptol.Eval.Generic: assertIndexInBounds :: Backend sym => sym -> Nat' -> Either (SInteger sym) (WordValue sym) -> SEval sym ()
- Cryptol.Eval.Generic: binary :: Backend sym => Binary sym -> Prim sym
- Cryptol.Eval.Generic: bitGreaterThan :: Backend sym => sym -> SBit sym -> SBit sym -> SEval sym (SBit sym)
- Cryptol.Eval.Generic: bitLessThan :: Backend sym => sym -> SBit sym -> SBit sym -> SEval sym (SBit sym)
- Cryptol.Eval.Generic: ccatV :: Backend sym => sym -> Integer -> Nat' -> TValue -> SEval sym (GenValue sym) -> SEval sym (GenValue sym) -> SEval sym (GenValue sym)
- Cryptol.Eval.Generic: ceilingV :: Backend sym => sym -> Unary sym
- Cryptol.Eval.Generic: cmpValue :: Backend sym => sym -> (SBit sym -> SBit sym -> SEval sym a -> SEval sym a) -> (SWord sym -> SWord sym -> SEval sym a -> SEval sym a) -> (SInteger sym -> SInteger sym -> SEval sym a -> SEval sym a) -> (Integer -> SInteger sym -> SInteger sym -> SEval sym a -> SEval sym a) -> (SRational sym -> SRational sym -> SEval sym a -> SEval sym a) -> (SFloat sym -> SFloat sym -> SEval sym a -> SEval sym a) -> TValue -> GenValue sym -> GenValue sym -> SEval sym a -> SEval sym a
- Cryptol.Eval.Generic: complementV :: Backend sym => sym -> Unary sym
- Cryptol.Eval.Generic: computeExponent :: Backend sym => sym -> TValue -> GenValue sym -> [SBit sym] -> SEval sym (GenValue sym)
- Cryptol.Eval.Generic: distinctV :: Backend sym => sym -> Binary sym
- Cryptol.Eval.Generic: divV :: Backend sym => sym -> Binary sym
- Cryptol.Eval.Generic: dropV :: Backend sym => sym -> Integer -> Nat' -> TValue -> SEval sym (GenValue sym) -> SEval sym (GenValue sym)
- Cryptol.Eval.Generic: ecFractionV :: Backend sym => sym -> Prim sym
- Cryptol.Eval.Generic: ecNumberV :: Backend sym => sym -> Prim sym
- Cryptol.Eval.Generic: eqCombine :: Backend sym => sym -> SEval sym (SBit sym) -> SEval sym (SBit sym) -> SEval sym (SBit sym)
- Cryptol.Eval.Generic: eqV :: Backend sym => sym -> Binary sym
- Cryptol.Eval.Generic: errorV :: forall sym. Backend sym => sym -> TValue -> String -> SEval sym (GenValue sym)
- Cryptol.Eval.Generic: expV :: Backend sym => sym -> Prim sym
- Cryptol.Eval.Generic: fieldDivideV :: Backend sym => sym -> Prim sym
- Cryptol.Eval.Generic: floorV :: Backend sym => sym -> Unary sym
- Cryptol.Eval.Generic: foldl'V :: Backend sym => sym -> Prim sym
- Cryptol.Eval.Generic: foldlV :: Backend sym => sym -> Prim sym
- Cryptol.Eval.Generic: fpBinArithV :: Backend sym => sym -> FPArith2 sym -> Prim sym
- Cryptol.Eval.Generic: fpConst :: Backend sym => (Integer -> Integer -> SEval sym (SFloat sym)) -> Prim sym
- Cryptol.Eval.Generic: fpRndMode :: Backend sym => sym -> SEval sym (SWord sym)
- Cryptol.Eval.Generic: fpRndRNA :: Backend sym => sym -> SEval sym (SWord sym)
- Cryptol.Eval.Generic: fpRndRNE :: Backend sym => sym -> SEval sym (SWord sym)
- Cryptol.Eval.Generic: fpRndRTN :: Backend sym => sym -> SEval sym (SWord sym)
- Cryptol.Eval.Generic: fpRndRTP :: Backend sym => sym -> SEval sym (SWord sym)
- Cryptol.Eval.Generic: fpRndRTZ :: Backend sym => sym -> SEval sym (SWord sym)
- Cryptol.Eval.Generic: fromIntegerV :: Backend sym => sym -> Prim sym
- Cryptol.Eval.Generic: fromThenToV :: Backend sym => sym -> Prim sym
- Cryptol.Eval.Generic: fromToByLessThanV :: Backend sym => sym -> Prim sym
- Cryptol.Eval.Generic: fromToByV :: Backend sym => sym -> Prim sym
- Cryptol.Eval.Generic: fromToDownByGreaterThanV :: Backend sym => sym -> Prim sym
- Cryptol.Eval.Generic: fromToDownByV :: Backend sym => sym -> Prim sym
- Cryptol.Eval.Generic: fromToLessThanV :: Backend sym => sym -> Prim sym
- Cryptol.Eval.Generic: fromToV :: Backend sym => sym -> Prim sym
- Cryptol.Eval.Generic: fromZV :: Backend sym => sym -> Prim sym
- Cryptol.Eval.Generic: genericFloatTable :: Backend sym => sym -> Map PrimIdent (Prim sym)
- Cryptol.Eval.Generic: genericPrimTable :: Backend sym => sym -> IO EvalOpts -> Map PrimIdent (Prim sym)
- Cryptol.Eval.Generic: greaterThanEqV :: Backend sym => sym -> Binary sym
- Cryptol.Eval.Generic: greaterThanV :: Backend sym => sym -> Binary sym
- Cryptol.Eval.Generic: indexPrim :: Backend sym => sym -> IndexDirection -> (Nat' -> TValue -> SeqMap sym (GenValue sym) -> TValue -> SInteger sym -> SEval sym (GenValue sym)) -> (Nat' -> TValue -> SeqMap sym (GenValue sym) -> TValue -> Integer -> [IndexSegment sym] -> SEval sym (GenValue sym)) -> Prim sym
- Cryptol.Eval.Generic: infFromThenV :: Backend sym => sym -> Prim sym
- Cryptol.Eval.Generic: infFromV :: Backend sym => sym -> Prim sym
- Cryptol.Eval.Generic: intShifter :: Backend sym => sym -> String -> (SWord sym -> SWord sym -> SEval sym (SWord sym)) -> (Nat' -> Integer -> Integer -> Maybe Integer) -> Nat' -> TValue -> GenValue sym -> SInteger sym -> SEval sym (GenValue sym)
- Cryptol.Eval.Generic: intV :: Backend sym => sym -> SInteger sym -> TValue -> SEval sym (GenValue sym)
- Cryptol.Eval.Generic: integralBinary :: forall sym. Backend sym => sym -> BinWord sym -> (SInteger sym -> SInteger sym -> SEval sym (SInteger sym)) -> Binary sym
- Cryptol.Eval.Generic: joinSeq :: Backend sym => sym -> Nat' -> Integer -> TValue -> SEval sym (SeqMap sym (GenValue sym)) -> SEval sym (GenValue sym)
- Cryptol.Eval.Generic: joinV :: Backend sym => sym -> Nat' -> Integer -> TValue -> SEval sym (GenValue sym) -> SEval sym (GenValue sym)
- Cryptol.Eval.Generic: lessThanEqV :: Backend sym => sym -> Binary sym
- Cryptol.Eval.Generic: lessThanV :: Backend sym => sym -> Binary sym
- Cryptol.Eval.Generic: lexCombine :: Backend sym => sym -> SEval sym (SBit sym) -> SEval sym (SBit sym) -> SEval sym (SBit sym) -> SEval sym (SBit sym)
- Cryptol.Eval.Generic: lg2V :: Backend sym => sym -> Prim sym
- Cryptol.Eval.Generic: logicBinary :: forall sym. Backend sym => sym -> (SBit sym -> SBit sym -> SEval sym (SBit sym)) -> (SWord sym -> SWord sym -> SEval sym (SWord sym)) -> Binary sym
- Cryptol.Eval.Generic: logicShift :: Backend sym => sym -> String -> (sym -> Nat' -> TValue -> SInteger sym -> SEval sym (SInteger sym)) -> (SWord sym -> SWord sym -> SEval sym (SWord sym)) -> (SWord sym -> SWord sym -> SEval sym (SWord sym)) -> (Nat' -> Integer -> Integer -> Maybe Integer) -> (Nat' -> Integer -> Integer -> Maybe Integer) -> Prim sym
- Cryptol.Eval.Generic: logicUnary :: forall sym. Backend sym => sym -> (SBit sym -> SEval sym (SBit sym)) -> (SWord sym -> SEval sym (SWord sym)) -> Unary sym
- Cryptol.Eval.Generic: mkLit :: Backend sym => sym -> TValue -> Integer -> SEval sym (GenValue sym)
- Cryptol.Eval.Generic: modV :: Backend sym => sym -> Binary sym
- Cryptol.Eval.Generic: mulV :: Backend sym => sym -> Binary sym
- Cryptol.Eval.Generic: negateV :: Backend sym => sym -> Unary sym
- Cryptol.Eval.Generic: orV :: Backend sym => sym -> Binary sym
- Cryptol.Eval.Generic: parmapV :: Backend sym => sym -> Prim sym
- Cryptol.Eval.Generic: randomV :: Backend sym => sym -> TValue -> Integer -> SEval sym (GenValue sym)
- Cryptol.Eval.Generic: ratioV :: Backend sym => sym -> Prim sym
- Cryptol.Eval.Generic: recipV :: Backend sym => sym -> Prim sym
- Cryptol.Eval.Generic: reverseV :: forall sym. Backend sym => sym -> Integer -> TValue -> SEval sym (GenValue sym) -> SEval sym (GenValue sym)
- Cryptol.Eval.Generic: ringBinary :: forall sym. Backend sym => sym -> BinWord sym -> (SInteger sym -> SInteger sym -> SEval sym (SInteger sym)) -> (Integer -> SInteger sym -> SInteger sym -> SEval sym (SInteger sym)) -> (SRational sym -> SRational sym -> SEval sym (SRational sym)) -> (SFloat sym -> SFloat sym -> SEval sym (SFloat sym)) -> Binary sym
- Cryptol.Eval.Generic: ringNullary :: forall sym. Backend sym => sym -> (Integer -> SEval sym (SWord sym)) -> SEval sym (SInteger sym) -> (Integer -> SEval sym (SInteger sym)) -> SEval sym (SRational sym) -> (Integer -> Integer -> SEval sym (SFloat sym)) -> TValue -> SEval sym (GenValue sym)
- Cryptol.Eval.Generic: ringUnary :: forall sym. Backend sym => sym -> UnaryWord sym -> (SInteger sym -> SEval sym (SInteger sym)) -> (Integer -> SInteger sym -> SEval sym (SInteger sym)) -> (SRational sym -> SEval sym (SRational sym)) -> (SFloat sym -> SEval sym (SFloat sym)) -> Unary sym
- Cryptol.Eval.Generic: rotateLeftReindex :: Nat' -> Integer -> Integer -> Maybe Integer
- Cryptol.Eval.Generic: rotateRightReindex :: Nat' -> Integer -> Integer -> Maybe Integer
- Cryptol.Eval.Generic: rotateShrink :: Backend sym => sym -> Nat' -> TValue -> SInteger sym -> SEval sym (SInteger sym)
- Cryptol.Eval.Generic: roundAwayV :: Backend sym => sym -> Unary sym
- Cryptol.Eval.Generic: roundOp :: Backend sym => sym -> String -> (SRational sym -> SEval sym (SInteger sym)) -> (SFloat sym -> SEval sym (SInteger sym)) -> Unary sym
- Cryptol.Eval.Generic: roundToEvenV :: Backend sym => sym -> Unary sym
- Cryptol.Eval.Generic: scanlV :: forall sym. Backend sym => sym -> Prim sym
- Cryptol.Eval.Generic: sdivV :: Backend sym => sym -> Prim sym
- Cryptol.Eval.Generic: shiftLeftReindex :: Nat' -> Integer -> Integer -> Maybe Integer
- Cryptol.Eval.Generic: shiftRightReindex :: Nat' -> Integer -> Integer -> Maybe Integer
- Cryptol.Eval.Generic: shiftShrink :: Backend sym => sym -> Nat' -> TValue -> SInteger sym -> SEval sym (SInteger sym)
- Cryptol.Eval.Generic: signedLessThanV :: Backend sym => sym -> Binary sym
- Cryptol.Eval.Generic: smodV :: Backend sym => sym -> Prim sym
- Cryptol.Eval.Generic: sparkParMap :: Backend sym => sym -> (SEval sym a -> SEval sym (GenValue sym)) -> Integer -> SeqMap sym a -> SEval sym (SeqMap sym (GenValue sym))
- Cryptol.Eval.Generic: splitV :: Backend sym => sym -> Nat' -> Integer -> TValue -> SEval sym (GenValue sym) -> SEval sym (GenValue sym)
- Cryptol.Eval.Generic: sshrV :: Backend sym => sym -> Prim sym
- Cryptol.Eval.Generic: subV :: Backend sym => sym -> Binary sym
- Cryptol.Eval.Generic: takeV :: Backend sym => sym -> Nat' -> Nat' -> TValue -> SEval sym (GenValue sym) -> SEval sym (GenValue sym)
- Cryptol.Eval.Generic: toIntegerV :: Backend sym => sym -> Prim sym
- Cryptol.Eval.Generic: toSignedIntegerV :: Backend sym => sym -> Prim sym
- Cryptol.Eval.Generic: transposeV :: Backend sym => sym -> Nat' -> Nat' -> TValue -> GenValue sym -> SEval sym (GenValue sym)
- Cryptol.Eval.Generic: truncV :: Backend sym => sym -> Unary sym
- Cryptol.Eval.Generic: type BinWord sym = Integer -> SWord sym -> SWord sym -> SEval sym (SWord sym)
- Cryptol.Eval.Generic: type Binary sym = TValue -> GenValue sym -> GenValue sym -> SEval sym (GenValue sym)
- Cryptol.Eval.Generic: type Unary sym = TValue -> GenValue sym -> SEval sym (GenValue sym)
- Cryptol.Eval.Generic: type UnaryWord sym = Integer -> SWord sym -> SEval sym (SWord sym)
- Cryptol.Eval.Generic: unary :: Backend sym => Unary sym -> Prim sym
- Cryptol.Eval.Generic: updatePrim :: Backend sym => sym -> (Nat' -> TValue -> WordValue sym -> Either (SInteger sym) (WordValue sym) -> SEval sym (GenValue sym) -> SEval sym (WordValue sym)) -> (Nat' -> TValue -> SeqMap sym (GenValue sym) -> Either (SInteger sym) (WordValue sym) -> SEval sym (GenValue sym) -> SEval sym (SeqMap sym (GenValue sym))) -> Prim sym
- Cryptol.Eval.Generic: valEq :: Backend sym => sym -> TValue -> GenValue sym -> GenValue sym -> SEval sym (SBit sym)
- Cryptol.Eval.Generic: valGt :: Backend sym => sym -> TValue -> GenValue sym -> GenValue sym -> SBit sym -> SEval sym (SBit sym)
- Cryptol.Eval.Generic: valLt :: Backend sym => sym -> TValue -> GenValue sym -> GenValue sym -> SBit sym -> SEval sym (SBit sym)
- Cryptol.Eval.Generic: valueToChar :: Backend sym => sym -> GenValue sym -> SEval sym Char
- Cryptol.Eval.Generic: valueToString :: Backend sym => sym -> GenValue sym -> SEval sym String
- Cryptol.Eval.Generic: wordShifter :: Backend sym => sym -> String -> (SWord sym -> SWord sym -> SEval sym (SWord sym)) -> (Nat' -> Integer -> Integer -> Maybe Integer) -> Nat' -> TValue -> GenValue sym -> WordValue sym -> SEval sym (GenValue sym)
- Cryptol.Eval.Generic: xorV :: Backend sym => sym -> Binary sym
- Cryptol.Eval.Generic: zeroV :: forall sym. Backend sym => sym -> TValue -> SEval sym (GenValue sym)
- Cryptol.Eval.Prims: PFinPoly :: (Integer -> Prim sym) -> Prim sym
- Cryptol.Eval.Prims: PFloatFun :: (SFloat sym -> Prim sym) -> Prim sym
- Cryptol.Eval.Prims: PFun :: (SEval sym (GenValue sym) -> Prim sym) -> Prim sym
- Cryptol.Eval.Prims: PNumPoly :: (Nat' -> Prim sym) -> Prim sym
- Cryptol.Eval.Prims: PPrim :: SEval sym (GenValue sym) -> Prim sym
- Cryptol.Eval.Prims: PStrict :: (GenValue sym -> Prim sym) -> Prim sym
- Cryptol.Eval.Prims: PTyPoly :: (TValue -> Prim sym) -> Prim sym
- Cryptol.Eval.Prims: PVal :: GenValue sym -> Prim sym
- Cryptol.Eval.Prims: PWordFun :: (SWord sym -> Prim sym) -> Prim sym
- Cryptol.Eval.Prims: data Prim sym
- Cryptol.Eval.Prims: evalPrim :: Backend sym => sym -> Name -> Prim sym -> SEval sym (GenValue sym)
- Cryptol.Eval.Reference: Err :: EvalError -> E a
- Cryptol.Eval.Reference: VBit :: !Bool -> Value
- Cryptol.Eval.Reference: VEnum :: Ident -> [E Value] -> Value
- Cryptol.Eval.Reference: VFloat :: !BF -> Value
- Cryptol.Eval.Reference: VFun :: (E Value -> E Value) -> Value
- Cryptol.Eval.Reference: VInteger :: !Integer -> Value
- Cryptol.Eval.Reference: VList :: Nat' -> [E Value] -> Value
- Cryptol.Eval.Reference: VNumPoly :: (Nat' -> E Value) -> Value
- Cryptol.Eval.Reference: VPoly :: (TValue -> E Value) -> Value
- Cryptol.Eval.Reference: VRational :: !Rational -> Value
- Cryptol.Eval.Reference: VRecord :: [(Ident, E Value)] -> Value
- Cryptol.Eval.Reference: VTuple :: [E Value] -> Value
- Cryptol.Eval.Reference: Value :: !a -> E a
- Cryptol.Eval.Reference: data E a
- Cryptol.Eval.Reference: data Value
- Cryptol.Eval.Reference: evalDeclGroup :: Env -> DeclGroup -> Env
- Cryptol.Eval.Reference: evalExpr :: Env -> Expr -> E Value
- Cryptol.Eval.Reference: evaluate :: Expr -> ModuleCmd (E Value)
- Cryptol.Eval.Reference: instance GHC.Base.Applicative Cryptol.Eval.Reference.E
- Cryptol.Eval.Reference: instance GHC.Base.Functor Cryptol.Eval.Reference.E
- Cryptol.Eval.Reference: instance GHC.Base.Monad Cryptol.Eval.Reference.E
- Cryptol.Eval.Reference: instance GHC.Base.Monoid Cryptol.Eval.Reference.Env
- Cryptol.Eval.Reference: instance GHC.Base.Semigroup Cryptol.Eval.Reference.Env
- Cryptol.Eval.Reference: ppEValue :: PPOpts -> E Value -> Doc
- Cryptol.Eval.Reference: ppValue :: PPOpts -> Value -> Doc
- Cryptol.Eval.SBV: primTable :: SBV -> IO EvalOpts -> Map PrimIdent (Prim SBV)
- Cryptol.Eval.Type: ConInfo :: Ident -> Vector a -> ConInfo a
- Cryptol.Eval.Type: TVAbstract :: TNominalTypeValue
- Cryptol.Eval.Type: TVArray :: TValue -> TValue -> TValue
- Cryptol.Eval.Type: TVBit :: TValue
- Cryptol.Eval.Type: TVEnum :: Vector (ConInfo TValue) -> TNominalTypeValue
- Cryptol.Eval.Type: TVFloat :: Integer -> Integer -> TValue
- Cryptol.Eval.Type: TVFun :: TValue -> TValue -> TValue
- Cryptol.Eval.Type: TVIntMod :: Integer -> TValue
- Cryptol.Eval.Type: TVInteger :: TValue
- Cryptol.Eval.Type: TVNominal :: NominalType -> [Either Nat' TValue] -> TNominalTypeValue -> TValue
- Cryptol.Eval.Type: TVRational :: TValue
- Cryptol.Eval.Type: TVRec :: RecordMap Ident TValue -> TValue
- Cryptol.Eval.Type: TVSeq :: Integer -> TValue -> TValue
- Cryptol.Eval.Type: TVStream :: TValue -> TValue
- Cryptol.Eval.Type: TVStruct :: RecordMap Ident TValue -> TNominalTypeValue
- Cryptol.Eval.Type: TVTuple :: [TValue] -> TValue
- Cryptol.Eval.Type: TypeEnv :: IntMap (Either Nat' TValue) -> TypeEnv
- Cryptol.Eval.Type: [conFields] :: ConInfo a -> Vector a
- Cryptol.Eval.Type: [conIdent] :: ConInfo a -> Ident
- Cryptol.Eval.Type: [envTypeMap] :: TypeEnv -> IntMap (Either Nat' TValue)
- Cryptol.Eval.Type: bindTypeVar :: TVar -> Either Nat' TValue -> TypeEnv -> TypeEnv
- Cryptol.Eval.Type: data ConInfo a
- Cryptol.Eval.Type: data TNominalTypeValue
- Cryptol.Eval.Type: data TValue
- Cryptol.Eval.Type: evalNominalTypeBody :: TypeEnv -> NominalType -> [Either Nat' TValue] -> TNominalTypeValue
- Cryptol.Eval.Type: evalNumType :: TypeEnv -> Type -> Nat'
- Cryptol.Eval.Type: evalTF :: TFun -> [Nat'] -> Nat'
- Cryptol.Eval.Type: evalType :: TypeEnv -> Type -> Either Nat' TValue
- Cryptol.Eval.Type: evalValType :: TypeEnv -> Type -> TValue
- Cryptol.Eval.Type: finNat' :: Nat' -> Integer
- Cryptol.Eval.Type: instance Control.DeepSeq.NFData Cryptol.Eval.Type.TNominalTypeValue
- Cryptol.Eval.Type: instance Control.DeepSeq.NFData Cryptol.Eval.Type.TValue
- Cryptol.Eval.Type: instance Control.DeepSeq.NFData a => Control.DeepSeq.NFData (Cryptol.Eval.Type.ConInfo a)
- Cryptol.Eval.Type: instance Data.Foldable.Foldable Cryptol.Eval.Type.ConInfo
- Cryptol.Eval.Type: instance Data.Traversable.Traversable Cryptol.Eval.Type.ConInfo
- Cryptol.Eval.Type: instance GHC.Base.Functor Cryptol.Eval.Type.ConInfo
- Cryptol.Eval.Type: instance GHC.Base.Monoid Cryptol.Eval.Type.TypeEnv
- Cryptol.Eval.Type: instance GHC.Base.Semigroup Cryptol.Eval.Type.TypeEnv
- Cryptol.Eval.Type: instance GHC.Classes.Eq Cryptol.Eval.Type.TNominalTypeValue
- Cryptol.Eval.Type: instance GHC.Classes.Eq Cryptol.Eval.Type.TValue
- Cryptol.Eval.Type: instance GHC.Classes.Eq a => GHC.Classes.Eq (Cryptol.Eval.Type.ConInfo a)
- Cryptol.Eval.Type: instance GHC.Generics.Generic (Cryptol.Eval.Type.ConInfo a)
- Cryptol.Eval.Type: instance GHC.Generics.Generic Cryptol.Eval.Type.TNominalTypeValue
- Cryptol.Eval.Type: instance GHC.Generics.Generic Cryptol.Eval.Type.TValue
- Cryptol.Eval.Type: instance GHC.Show.Show Cryptol.Eval.Type.TValue
- Cryptol.Eval.Type: instance GHC.Show.Show Cryptol.Eval.Type.TypeEnv
- Cryptol.Eval.Type: isNullaryCon :: ConInfo a -> Bool
- Cryptol.Eval.Type: isTBit :: TValue -> Bool
- Cryptol.Eval.Type: lookupTypeVar :: TVar -> TypeEnv -> Maybe (Either Nat' TValue)
- Cryptol.Eval.Type: newtype TypeEnv
- Cryptol.Eval.Type: tNumTy :: Nat' -> Type
- Cryptol.Eval.Type: tNumValTy :: Either Nat' TValue -> Type
- Cryptol.Eval.Type: tValTy :: TValue -> Type
- Cryptol.Eval.Type: tvFloat64 :: TValue
- Cryptol.Eval.Type: tvSeq :: Nat' -> TValue -> TValue
- Cryptol.Eval.Type: zipConInfo :: (a -> b -> c) -> ConInfo a -> ConInfo b -> ConInfo c
- Cryptol.Eval.Value: CaseCont :: Map Ident ([SEval sym (GenValue sym)] -> SEval sym (GenValue sym)) -> Maybe (SEval sym (GenValue sym)) -> CaseCont sym
- Cryptol.Eval.Value: EvalOpts :: Logger -> PPOpts -> EvalOpts
- Cryptol.Eval.Value: VBit :: !SBit sym -> GenValue sym
- Cryptol.Eval.Value: VEnum :: !SInteger sym -> !IntMap (ConValue sym) -> GenValue sym
- Cryptol.Eval.Value: VFloat :: !SFloat sym -> GenValue sym
- Cryptol.Eval.Value: VFun :: CallStack -> (SEval sym (GenValue sym) -> SEval sym (GenValue sym)) -> GenValue sym
- Cryptol.Eval.Value: VInteger :: !SInteger sym -> GenValue sym
- Cryptol.Eval.Value: VNumPoly :: CallStack -> (Nat' -> SEval sym (GenValue sym)) -> GenValue sym
- Cryptol.Eval.Value: VPoly :: CallStack -> (TValue -> SEval sym (GenValue sym)) -> GenValue sym
- Cryptol.Eval.Value: VRational :: !SRational sym -> GenValue sym
- Cryptol.Eval.Value: VRecord :: !RecordMap Ident (SEval sym (GenValue sym)) -> GenValue sym
- Cryptol.Eval.Value: VSeq :: !Integer -> !SeqMap sym (GenValue sym) -> GenValue sym
- Cryptol.Eval.Value: VStream :: !SeqMap sym (GenValue sym) -> GenValue sym
- Cryptol.Eval.Value: VTuple :: ![SEval sym (GenValue sym)] -> GenValue sym
- Cryptol.Eval.Value: VWord :: !Integer -> !WordValue sym -> GenValue sym
- Cryptol.Eval.Value: [caseCon] :: CaseCont sym -> Map Ident ([SEval sym (GenValue sym)] -> SEval sym (GenValue sym))
- Cryptol.Eval.Value: [caseDflt] :: CaseCont sym -> Maybe (SEval sym (GenValue sym))
- Cryptol.Eval.Value: [evalLogger] :: EvalOpts -> Logger
- Cryptol.Eval.Value: [evalPPOpts] :: EvalOpts -> PPOpts
- Cryptol.Eval.Value: asIndex :: Backend sym => sym -> String -> TValue -> GenValue sym -> Either (SInteger sym) (WordValue sym)
- Cryptol.Eval.Value: asciiMode :: PPOpts -> Integer -> Bool
- Cryptol.Eval.Value: assertSideCondition :: Backend sym => sym -> SBit sym -> EvalError -> SEval sym ()
- Cryptol.Eval.Value: bitAnd :: Backend sym => sym -> SBit sym -> SBit sym -> SEval sym (SBit sym)
- Cryptol.Eval.Value: bitAsLit :: Backend sym => sym -> SBit sym -> Maybe Bool
- Cryptol.Eval.Value: bitComplement :: Backend sym => sym -> SBit sym -> SEval sym (SBit sym)
- Cryptol.Eval.Value: bitEq :: Backend sym => sym -> SBit sym -> SBit sym -> SEval sym (SBit sym)
- Cryptol.Eval.Value: bitLit :: Backend sym => sym -> Bool -> SBit sym
- Cryptol.Eval.Value: bitOr :: Backend sym => sym -> SBit sym -> SBit sym -> SEval sym (SBit sym)
- Cryptol.Eval.Value: bitXor :: Backend sym => sym -> SBit sym -> SBit sym -> SEval sym (SBit sym)
- Cryptol.Eval.Value: caseValue :: Backend sym => sym -> SInteger sym -> IntMap (ConValue sym) -> CaseCont sym -> SEval sym (GenValue sym)
- Cryptol.Eval.Value: class MonadIO (SEval sym) => Backend sym where {
- Cryptol.Eval.Value: data CaseCont sym
- Cryptol.Eval.Value: data EvalOpts
- Cryptol.Eval.Value: data GenValue sym
- Cryptol.Eval.Value: defaultPPOpts :: PPOpts
- Cryptol.Eval.Value: extractWord :: Backend sym => sym -> Integer -> Integer -> SWord sym -> SEval sym (SWord sym)
- Cryptol.Eval.Value: flam :: Backend sym => sym -> (SFloat sym -> SEval sym (GenValue sym)) -> SEval sym (GenValue sym)
- Cryptol.Eval.Value: forceValue :: Backend sym => GenValue sym -> SEval sym ()
- Cryptol.Eval.Value: fpAbs :: Backend sym => sym -> SFloat sym -> SEval sym (SFloat sym)
- Cryptol.Eval.Value: fpAsLit :: Backend sym => sym -> SFloat sym -> Maybe BF
- Cryptol.Eval.Value: fpDiv :: Backend sym => FPArith2 sym
- Cryptol.Eval.Value: fpEq :: Backend sym => sym -> SFloat sym -> SFloat sym -> SEval sym (SBit sym)
- Cryptol.Eval.Value: fpExactLit :: Backend sym => sym -> BF -> SEval sym (SFloat sym)
- Cryptol.Eval.Value: fpFMA :: Backend sym => sym -> SWord sym -> SFloat sym -> SFloat sym -> SFloat sym -> SEval sym (SFloat sym)
- Cryptol.Eval.Value: fpFromBits :: Backend sym => sym -> Integer -> Integer -> SWord sym -> SEval sym (SFloat sym)
- Cryptol.Eval.Value: fpFromInteger :: Backend sym => sym -> Integer -> Integer -> SWord sym -> SInteger sym -> SEval sym (SFloat sym)
- Cryptol.Eval.Value: fpFromRational :: Backend sym => sym -> Integer -> Integer -> SWord sym -> SRational sym -> SEval sym (SFloat sym)
- Cryptol.Eval.Value: fpGreaterThan :: Backend sym => sym -> SFloat sym -> SFloat sym -> SEval sym (SBit sym)
- Cryptol.Eval.Value: fpIsInf :: Backend sym => sym -> SFloat sym -> SEval sym (SBit sym)
- Cryptol.Eval.Value: fpIsNaN :: Backend sym => sym -> SFloat sym -> SEval sym (SBit sym)
- Cryptol.Eval.Value: fpIsNeg :: Backend sym => sym -> SFloat sym -> SEval sym (SBit sym)
- Cryptol.Eval.Value: fpIsNorm :: Backend sym => sym -> SFloat sym -> SEval sym (SBit sym)
- Cryptol.Eval.Value: fpIsSubnorm :: Backend sym => sym -> SFloat sym -> SEval sym (SBit sym)
- Cryptol.Eval.Value: fpIsZero :: Backend sym => sym -> SFloat sym -> SEval sym (SBit sym)
- Cryptol.Eval.Value: fpLessThan :: Backend sym => sym -> SFloat sym -> SFloat sym -> SEval sym (SBit sym)
- Cryptol.Eval.Value: fpLit :: Backend sym => sym -> Integer -> Integer -> Rational -> SEval sym (SFloat sym)
- Cryptol.Eval.Value: fpLogicalEq :: Backend sym => sym -> SFloat sym -> SFloat sym -> SEval sym (SBit sym)
- Cryptol.Eval.Value: fpMinus :: Backend sym => FPArith2 sym
- Cryptol.Eval.Value: fpMult :: Backend sym => FPArith2 sym
- Cryptol.Eval.Value: fpNaN :: Backend sym => sym -> Integer -> Integer -> SEval sym (SFloat sym)
- Cryptol.Eval.Value: fpNeg :: Backend sym => sym -> SFloat sym -> SEval sym (SFloat sym)
- Cryptol.Eval.Value: fpPlus :: Backend sym => FPArith2 sym
- Cryptol.Eval.Value: fpPosInf :: Backend sym => sym -> Integer -> Integer -> SEval sym (SFloat sym)
- Cryptol.Eval.Value: fpSqrt :: Backend sym => sym -> SWord sym -> SFloat sym -> SEval sym (SFloat sym)
- Cryptol.Eval.Value: fpToBits :: Backend sym => sym -> SFloat sym -> SEval sym (SWord sym)
- Cryptol.Eval.Value: fpToInteger :: Backend sym => sym -> String -> SWord sym -> SFloat sym -> SEval sym (SInteger sym)
- Cryptol.Eval.Value: fpToRational :: Backend sym => sym -> SFloat sym -> SEval sym (SRational sym)
- Cryptol.Eval.Value: fromSeq :: Backend sym => String -> GenValue sym -> SEval sym (SeqMap sym (GenValue sym))
- Cryptol.Eval.Value: fromVBit :: GenValue sym -> SBit sym
- Cryptol.Eval.Value: fromVEnum :: GenValue sym -> (SInteger sym, IntMap (ConValue sym))
- Cryptol.Eval.Value: fromVFloat :: GenValue sym -> SFloat sym
- Cryptol.Eval.Value: fromVFun :: Backend sym => sym -> GenValue sym -> SEval sym (GenValue sym) -> SEval sym (GenValue sym)
- Cryptol.Eval.Value: fromVInteger :: GenValue sym -> SInteger sym
- Cryptol.Eval.Value: fromVNumPoly :: Backend sym => sym -> GenValue sym -> Nat' -> SEval sym (GenValue sym)
- Cryptol.Eval.Value: fromVPoly :: Backend sym => sym -> GenValue sym -> TValue -> SEval sym (GenValue sym)
- Cryptol.Eval.Value: fromVRational :: GenValue sym -> SRational sym
- Cryptol.Eval.Value: fromVRecord :: GenValue sym -> RecordMap Ident (SEval sym (GenValue sym))
- Cryptol.Eval.Value: fromVSeq :: GenValue sym -> SeqMap sym (GenValue sym)
- Cryptol.Eval.Value: fromVTuple :: GenValue sym -> [SEval sym (GenValue sym)]
- Cryptol.Eval.Value: fromVWord :: Backend sym => sym -> String -> GenValue sym -> SEval sym (SWord sym)
- Cryptol.Eval.Value: fromWordVal :: Backend sym => String -> GenValue sym -> WordValue sym
- Cryptol.Eval.Value: ilam :: Backend sym => sym -> (Integer -> SEval sym (GenValue sym)) -> SEval sym (GenValue sym)
- Cryptol.Eval.Value: instance GHC.Generics.Generic (Cryptol.Eval.Value.GenValue sym)
- Cryptol.Eval.Value: instance GHC.Show.Show (Cryptol.Eval.Value.GenValue sym)
- Cryptol.Eval.Value: intDiv :: Backend sym => sym -> SInteger sym -> SInteger sym -> SEval sym (SInteger sym)
- Cryptol.Eval.Value: intEq :: Backend sym => sym -> SInteger sym -> SInteger sym -> SEval sym (SBit sym)
- Cryptol.Eval.Value: intGreaterThan :: Backend sym => sym -> SInteger sym -> SInteger sym -> SEval sym (SBit sym)
- Cryptol.Eval.Value: intLessThan :: Backend sym => sym -> SInteger sym -> SInteger sym -> SEval sym (SBit sym)
- Cryptol.Eval.Value: intMinus :: Backend sym => sym -> SInteger sym -> SInteger sym -> SEval sym (SInteger sym)
- Cryptol.Eval.Value: intMod :: Backend sym => sym -> SInteger sym -> SInteger sym -> SEval sym (SInteger sym)
- Cryptol.Eval.Value: intMult :: Backend sym => sym -> SInteger sym -> SInteger sym -> SEval sym (SInteger sym)
- Cryptol.Eval.Value: intNegate :: Backend sym => sym -> SInteger sym -> SEval sym (SInteger sym)
- Cryptol.Eval.Value: intPlus :: Backend sym => sym -> SInteger sym -> SInteger sym -> SEval sym (SInteger sym)
- Cryptol.Eval.Value: intToZn :: Backend sym => sym -> Integer -> SInteger sym -> SEval sym (SInteger sym)
- Cryptol.Eval.Value: integerAsLit :: Backend sym => sym -> SInteger sym -> Maybe Integer
- Cryptol.Eval.Value: integerLit :: Backend sym => sym -> Integer -> SEval sym (SInteger sym)
- Cryptol.Eval.Value: isReady :: Backend sym => sym -> SEval sym a -> SEval sym (Maybe a)
- Cryptol.Eval.Value: iteBit :: Backend sym => sym -> SBit sym -> SBit sym -> SBit sym -> SEval sym (SBit sym)
- Cryptol.Eval.Value: iteFloat :: Backend sym => sym -> SBit sym -> SFloat sym -> SFloat sym -> SEval sym (SFloat sym)
- Cryptol.Eval.Value: iteInteger :: Backend sym => sym -> SBit sym -> SInteger sym -> SInteger sym -> SEval sym (SInteger sym)
- Cryptol.Eval.Value: iteValue :: Backend sym => sym -> SBit sym -> SEval sym (GenValue sym) -> SEval sym (GenValue sym) -> SEval sym (GenValue sym)
- Cryptol.Eval.Value: iteWord :: Backend sym => sym -> SBit sym -> SWord sym -> SWord sym -> SEval sym (SWord sym)
- Cryptol.Eval.Value: joinWord :: Backend sym => sym -> SWord sym -> SWord sym -> SEval sym (SWord sym)
- Cryptol.Eval.Value: lam :: Backend sym => sym -> (SEval sym (GenValue sym) -> SEval sym (GenValue sym)) -> SEval sym (GenValue sym)
- Cryptol.Eval.Value: lookupRecord :: Ident -> GenValue sym -> SEval sym (GenValue sym)
- Cryptol.Eval.Value: mergeEval :: Backend sym => sym -> (SBit sym -> a -> a -> SEval sym a) -> SBit sym -> SEval sym a -> SEval sym a -> SEval sym a
- Cryptol.Eval.Value: mergeValue :: Backend sym => sym -> SBit sym -> GenValue sym -> GenValue sym -> SEval sym (GenValue sym)
- Cryptol.Eval.Value: mkSeq :: Backend sym => sym -> Nat' -> TValue -> SeqMap sym (GenValue sym) -> SEval sym (GenValue sym)
- Cryptol.Eval.Value: nlam :: Backend sym => sym -> (Nat' -> SEval sym (GenValue sym)) -> SEval sym (GenValue sym)
- Cryptol.Eval.Value: packWord :: Backend sym => sym -> [SBit sym] -> SEval sym (SWord sym)
- Cryptol.Eval.Value: ppValue :: forall sym. Backend sym => sym -> PPOpts -> GenValue sym -> SEval sym Doc
- Cryptol.Eval.Value: ppValuePrec :: forall sym. Backend sym => sym -> PPOpts -> Int -> GenValue sym -> SEval sym Doc
- Cryptol.Eval.Value: raiseError :: Backend sym => sym -> EvalError -> SEval sym a
- Cryptol.Eval.Value: sDeclareHole :: Backend sym => sym -> String -> SEval sym (SEval sym a, SEval sym a -> SEval sym ())
- Cryptol.Eval.Value: sDelayFill :: Backend sym => sym -> SEval sym a -> Maybe (SEval sym a) -> String -> SEval sym (SEval sym a)
- Cryptol.Eval.Value: sGetCallStack :: Backend sym => sym -> SEval sym CallStack
- Cryptol.Eval.Value: sModifyCallStack :: Backend sym => sym -> (CallStack -> CallStack) -> SEval sym a -> SEval sym a
- Cryptol.Eval.Value: sPushFrame :: Backend sym => sym -> Name -> Range -> SEval sym a -> SEval sym a
- Cryptol.Eval.Value: sSpark :: Backend sym => sym -> SEval sym a -> SEval sym (SEval sym a)
- Cryptol.Eval.Value: sWithCallStack :: Backend sym => sym -> CallStack -> SEval sym a -> SEval sym a
- Cryptol.Eval.Value: splitWord :: Backend sym => sym -> Integer -> Integer -> SWord sym -> SEval sym (SWord sym, SWord sym)
- Cryptol.Eval.Value: tlam :: Backend sym => sym -> (TValue -> SEval sym (GenValue sym)) -> SEval sym (GenValue sym)
- Cryptol.Eval.Value: tryFromBits :: Backend sym => sym -> [SEval sym (GenValue sym)] -> SEval sym (Maybe (SWord sym))
- Cryptol.Eval.Value: type ConValue sym = ConInfo (SEval sym (GenValue sym))
- Cryptol.Eval.Value: type SBit sym :: Type;
- Cryptol.Eval.Value: type SEval sym :: Type -> Type;
- Cryptol.Eval.Value: type SFloat sym :: Type;
- Cryptol.Eval.Value: type SInteger sym :: Type;
- Cryptol.Eval.Value: type SWord sym :: Type;
- Cryptol.Eval.Value: unpackWord :: Backend sym => sym -> SWord sym -> SEval sym [SBit sym]
- Cryptol.Eval.Value: vWordLen :: Backend sym => GenValue sym -> Maybe Integer
- Cryptol.Eval.Value: word :: Backend sym => sym -> Integer -> Integer -> SEval sym (GenValue sym)
- Cryptol.Eval.Value: wordAnd :: Backend sym => sym -> SWord sym -> SWord sym -> SEval sym (SWord sym)
- Cryptol.Eval.Value: wordAsChar :: Backend sym => sym -> SWord sym -> Maybe Char
- Cryptol.Eval.Value: wordAsLit :: Backend sym => sym -> SWord sym -> Maybe (Integer, Integer)
- Cryptol.Eval.Value: wordBit :: Backend sym => sym -> SWord sym -> Integer -> SEval sym (SBit sym)
- Cryptol.Eval.Value: wordComplement :: Backend sym => sym -> SWord sym -> SEval sym (SWord sym)
- Cryptol.Eval.Value: wordDiv :: Backend sym => sym -> SWord sym -> SWord sym -> SEval sym (SWord sym)
- Cryptol.Eval.Value: wordEq :: Backend sym => sym -> SWord sym -> SWord sym -> SEval sym (SBit sym)
- Cryptol.Eval.Value: wordFromInt :: Backend sym => sym -> Integer -> SInteger sym -> SEval sym (SWord sym)
- Cryptol.Eval.Value: wordGreaterThan :: Backend sym => sym -> SWord sym -> SWord sym -> SEval sym (SBit sym)
- Cryptol.Eval.Value: wordLen :: Backend sym => sym -> SWord sym -> Integer
- Cryptol.Eval.Value: wordLessThan :: Backend sym => sym -> SWord sym -> SWord sym -> SEval sym (SBit sym)
- Cryptol.Eval.Value: wordLg2 :: Backend sym => sym -> SWord sym -> SEval sym (SWord sym)
- Cryptol.Eval.Value: wordLit :: Backend sym => sym -> Integer -> Integer -> SEval sym (SWord sym)
- Cryptol.Eval.Value: wordMinus :: Backend sym => sym -> SWord sym -> SWord sym -> SEval sym (SWord sym)
- Cryptol.Eval.Value: wordMod :: Backend sym => sym -> SWord sym -> SWord sym -> SEval sym (SWord sym)
- Cryptol.Eval.Value: wordMult :: Backend sym => sym -> SWord sym -> SWord sym -> SEval sym (SWord sym)
- Cryptol.Eval.Value: wordNegate :: Backend sym => sym -> SWord sym -> SEval sym (SWord sym)
- Cryptol.Eval.Value: wordOr :: Backend sym => sym -> SWord sym -> SWord sym -> SEval sym (SWord sym)
- Cryptol.Eval.Value: wordPlus :: Backend sym => sym -> SWord sym -> SWord sym -> SEval sym (SWord sym)
- Cryptol.Eval.Value: wordRotateLeft :: Backend sym => sym -> SWord sym -> SWord sym -> SEval sym (SWord sym)
- Cryptol.Eval.Value: wordRotateRight :: Backend sym => sym -> SWord sym -> SWord sym -> SEval sym (SWord sym)
- Cryptol.Eval.Value: wordShiftLeft :: Backend sym => sym -> SWord sym -> SWord sym -> SEval sym (SWord sym)
- Cryptol.Eval.Value: wordShiftRight :: Backend sym => sym -> SWord sym -> SWord sym -> SEval sym (SWord sym)
- Cryptol.Eval.Value: wordSignedDiv :: Backend sym => sym -> SWord sym -> SWord sym -> SEval sym (SWord sym)
- Cryptol.Eval.Value: wordSignedLessThan :: Backend sym => sym -> SWord sym -> SWord sym -> SEval sym (SBit sym)
- Cryptol.Eval.Value: wordSignedMod :: Backend sym => sym -> SWord sym -> SWord sym -> SEval sym (SWord sym)
- Cryptol.Eval.Value: wordSignedShiftRight :: Backend sym => sym -> SWord sym -> SWord sym -> SEval sym (SWord sym)
- Cryptol.Eval.Value: wordToInt :: Backend sym => sym -> SWord sym -> SEval sym (SInteger sym)
- Cryptol.Eval.Value: wordToSignedInt :: Backend sym => sym -> SWord sym -> SEval sym (SInteger sym)
- Cryptol.Eval.Value: wordUpdate :: Backend sym => sym -> SWord sym -> Integer -> SBit sym -> SEval sym (SWord sym)
- Cryptol.Eval.Value: wordXor :: Backend sym => sym -> SWord sym -> SWord sym -> SEval sym (SWord sym)
- Cryptol.Eval.Value: znEq :: Backend sym => sym -> Integer -> SInteger sym -> SInteger sym -> SEval sym (SBit sym)
- Cryptol.Eval.Value: znMinus :: Backend sym => sym -> Integer -> SInteger sym -> SInteger sym -> SEval sym (SInteger sym)
- Cryptol.Eval.Value: znMult :: Backend sym => sym -> Integer -> SInteger sym -> SInteger sym -> SEval sym (SInteger sym)
- Cryptol.Eval.Value: znNegate :: Backend sym => sym -> Integer -> SInteger sym -> SEval sym (SInteger sym)
- Cryptol.Eval.Value: znPlus :: Backend sym => sym -> Integer -> SInteger sym -> SInteger sym -> SEval sym (SInteger sym)
- Cryptol.Eval.Value: znRecip :: Backend sym => sym -> Integer -> SInteger sym -> SEval sym (SInteger sym)
- Cryptol.Eval.Value: znToInt :: Backend sym => sym -> Integer -> SInteger sym -> SEval sym (SInteger sym)
- Cryptol.Eval.Value: }
- Cryptol.Eval.What4: primTable :: IsSymExprBuilder sym => What4 sym -> IO EvalOpts -> Map PrimIdent (Prim (What4 sym))
- Cryptol.Eval.What4: type Value sym = GenValue (What4 sym)
- Cryptol.F2: pdiv :: Int -> Integer -> Integer -> Integer
- Cryptol.F2: pmod :: Int -> Integer -> Integer -> Integer
- Cryptol.F2: pmult :: Int -> Integer -> Integer -> Integer
- Cryptol.IR.FreeVars: Deps :: Set Name -> Set Name -> Set TParam -> Deps
- Cryptol.IR.FreeVars: [tyDeps] :: Deps -> Set Name
- Cryptol.IR.FreeVars: [tyParams] :: Deps -> Set TParam
- Cryptol.IR.FreeVars: [valDeps] :: Deps -> Set Name
- Cryptol.IR.FreeVars: class Defs d
- Cryptol.IR.FreeVars: class FreeVars e
- Cryptol.IR.FreeVars: data Deps
- Cryptol.IR.FreeVars: defs :: Defs d => d -> Set Name
- Cryptol.IR.FreeVars: freeVars :: FreeVars e => e -> Deps
- Cryptol.IR.FreeVars: instance Cryptol.IR.FreeVars.Defs Cryptol.TypeCheck.AST.Decl
- Cryptol.IR.FreeVars: instance Cryptol.IR.FreeVars.Defs Cryptol.TypeCheck.AST.DeclGroup
- Cryptol.IR.FreeVars: instance Cryptol.IR.FreeVars.Defs Cryptol.TypeCheck.AST.Match
- Cryptol.IR.FreeVars: instance Cryptol.IR.FreeVars.Defs a => Cryptol.IR.FreeVars.Defs [a]
- Cryptol.IR.FreeVars: instance Cryptol.IR.FreeVars.FreeVars Cryptol.TypeCheck.AST.CaseAlt
- Cryptol.IR.FreeVars: instance Cryptol.IR.FreeVars.FreeVars Cryptol.TypeCheck.AST.Decl
- Cryptol.IR.FreeVars: instance Cryptol.IR.FreeVars.FreeVars Cryptol.TypeCheck.AST.DeclDef
- Cryptol.IR.FreeVars: instance Cryptol.IR.FreeVars.FreeVars Cryptol.TypeCheck.AST.DeclGroup
- Cryptol.IR.FreeVars: instance Cryptol.IR.FreeVars.FreeVars Cryptol.TypeCheck.AST.Expr
- Cryptol.IR.FreeVars: instance Cryptol.IR.FreeVars.FreeVars Cryptol.TypeCheck.AST.Match
- Cryptol.IR.FreeVars: instance Cryptol.IR.FreeVars.FreeVars Cryptol.TypeCheck.TCon.TCon
- Cryptol.IR.FreeVars: instance Cryptol.IR.FreeVars.FreeVars Cryptol.TypeCheck.Type.EnumCon
- Cryptol.IR.FreeVars: instance Cryptol.IR.FreeVars.FreeVars Cryptol.TypeCheck.Type.NominalType
- Cryptol.IR.FreeVars: instance Cryptol.IR.FreeVars.FreeVars Cryptol.TypeCheck.Type.NominalTypeDef
- Cryptol.IR.FreeVars: instance Cryptol.IR.FreeVars.FreeVars Cryptol.TypeCheck.Type.Schema
- Cryptol.IR.FreeVars: instance Cryptol.IR.FreeVars.FreeVars Cryptol.TypeCheck.Type.StructCon
- Cryptol.IR.FreeVars: instance Cryptol.IR.FreeVars.FreeVars Cryptol.TypeCheck.Type.TVar
- Cryptol.IR.FreeVars: instance Cryptol.IR.FreeVars.FreeVars Cryptol.TypeCheck.Type.Type
- Cryptol.IR.FreeVars: instance Cryptol.IR.FreeVars.FreeVars e => Cryptol.IR.FreeVars.FreeVars [e]
- Cryptol.IR.FreeVars: instance GHC.Base.Monoid Cryptol.IR.FreeVars.Deps
- Cryptol.IR.FreeVars: instance GHC.Base.Semigroup Cryptol.IR.FreeVars.Deps
- Cryptol.IR.FreeVars: instance GHC.Classes.Eq Cryptol.IR.FreeVars.Deps
- Cryptol.IR.FreeVars: moduleDeps :: Module -> Map Name Deps
- Cryptol.IR.FreeVars: transDeps :: Map Name Deps -> Map Name Deps
- Cryptol.IR.TraverseNames: class TraverseNames t
- Cryptol.IR.TraverseNames: instance (GHC.Classes.Ord a, Cryptol.IR.TraverseNames.TraverseNames a) => Cryptol.IR.TraverseNames.TraverseNames (Cryptol.ModuleSystem.Exports.ExportSpec a)
- Cryptol.IR.TraverseNames: instance (GHC.Classes.Ord a, Cryptol.IR.TraverseNames.TraverseNames a) => Cryptol.IR.TraverseNames.TraverseNames (Data.Set.Internal.Set a)
- Cryptol.IR.TraverseNames: instance Cryptol.IR.TraverseNames.TraverseNames Cryptol.ModuleSystem.Name.Name
- Cryptol.IR.TraverseNames: instance Cryptol.IR.TraverseNames.TraverseNames Cryptol.TypeCheck.AST.CaseAlt
- Cryptol.IR.TraverseNames: instance Cryptol.IR.TraverseNames.TraverseNames Cryptol.TypeCheck.AST.Decl
- Cryptol.IR.TraverseNames: instance Cryptol.IR.TraverseNames.TraverseNames Cryptol.TypeCheck.AST.DeclDef
- Cryptol.IR.TraverseNames: instance Cryptol.IR.TraverseNames.TraverseNames Cryptol.TypeCheck.AST.DeclGroup
- Cryptol.IR.TraverseNames: instance Cryptol.IR.TraverseNames.TraverseNames Cryptol.TypeCheck.AST.Expr
- Cryptol.IR.TraverseNames: instance Cryptol.IR.TraverseNames.TraverseNames Cryptol.TypeCheck.AST.Match
- Cryptol.IR.TraverseNames: instance Cryptol.IR.TraverseNames.TraverseNames Cryptol.TypeCheck.FFI.FFIType.FFIFunType
- Cryptol.IR.TraverseNames: instance Cryptol.IR.TraverseNames.TraverseNames Cryptol.TypeCheck.FFI.FFIType.FFIType
- Cryptol.IR.TraverseNames: instance Cryptol.IR.TraverseNames.TraverseNames Cryptol.TypeCheck.Type.ArgDescr
- Cryptol.IR.TraverseNames: instance Cryptol.IR.TraverseNames.TraverseNames Cryptol.TypeCheck.Type.EnumCon
- Cryptol.IR.TraverseNames: instance Cryptol.IR.TraverseNames.TraverseNames Cryptol.TypeCheck.Type.ModTParam
- Cryptol.IR.TraverseNames: instance Cryptol.IR.TraverseNames.TraverseNames Cryptol.TypeCheck.Type.ModVParam
- Cryptol.IR.TraverseNames: instance Cryptol.IR.TraverseNames.TraverseNames Cryptol.TypeCheck.Type.NominalType
- Cryptol.IR.TraverseNames: instance Cryptol.IR.TraverseNames.TraverseNames Cryptol.TypeCheck.Type.NominalTypeDef
- Cryptol.IR.TraverseNames: instance Cryptol.IR.TraverseNames.TraverseNames Cryptol.TypeCheck.Type.Schema
- Cryptol.IR.TraverseNames: instance Cryptol.IR.TraverseNames.TraverseNames Cryptol.TypeCheck.Type.StructCon
- Cryptol.IR.TraverseNames: instance Cryptol.IR.TraverseNames.TraverseNames Cryptol.TypeCheck.Type.TPFlavor
- Cryptol.IR.TraverseNames: instance Cryptol.IR.TraverseNames.TraverseNames Cryptol.TypeCheck.Type.TParam
- Cryptol.IR.TraverseNames: instance Cryptol.IR.TraverseNames.TraverseNames Cryptol.TypeCheck.Type.TVar
- Cryptol.IR.TraverseNames: instance Cryptol.IR.TraverseNames.TraverseNames Cryptol.TypeCheck.Type.TVarInfo
- Cryptol.IR.TraverseNames: instance Cryptol.IR.TraverseNames.TraverseNames Cryptol.TypeCheck.Type.TySyn
- Cryptol.IR.TraverseNames: instance Cryptol.IR.TraverseNames.TraverseNames Cryptol.TypeCheck.Type.Type
- Cryptol.IR.TraverseNames: instance Cryptol.IR.TraverseNames.TraverseNames Cryptol.TypeCheck.Type.TypeSource
- Cryptol.IR.TraverseNames: instance Cryptol.IR.TraverseNames.TraverseNames a => Cryptol.IR.TraverseNames.TraverseNames (Cryptol.Parser.Position.Located a)
- Cryptol.IR.TraverseNames: instance Cryptol.IR.TraverseNames.TraverseNames a => Cryptol.IR.TraverseNames.TraverseNames (GHC.Maybe.Maybe a)
- Cryptol.IR.TraverseNames: instance Cryptol.IR.TraverseNames.TraverseNames a => Cryptol.IR.TraverseNames.TraverseNames [a]
- Cryptol.IR.TraverseNames: mapNames :: TraverseNames t => (Name -> Name) -> t -> t
- Cryptol.IR.TraverseNames: traverseNames :: (TraverseNames t, Applicative f) => (Name -> f Name) -> t -> f t
- Cryptol.IR.TraverseNames: traverseNamesIP :: (TraverseNames t, Applicative f, ?name :: Name -> f Name) => t -> f t
- Cryptol.ModuleSystem: BadUtf8 :: ModulePath -> UnicodeException -> ModuleError
- Cryptol.ModuleSystem: CantFindFile :: FilePath -> ModuleError
- Cryptol.ModuleSystem: DEnv :: NamingEnv -> [DeclGroup] -> Map Name TySyn -> EvalEnv -> DynamicEnv
- Cryptol.ModuleSystem: DuplicateModuleName :: ModName -> FilePath -> FilePath -> ModuleError
- Cryptol.ModuleSystem: ErrorInFile :: ModulePath -> ModuleError -> ModuleError
- Cryptol.ModuleSystem: ExpandPropGuardsError :: ImportSource -> Error -> ModuleError
- Cryptol.ModuleSystem: FFILoadErrors :: ModName -> [FFILoadError] -> ModuleError
- Cryptol.ModuleSystem: Iface :: IfaceNames name -> FunctorParams -> IfaceDecls -> IfaceG name
- Cryptol.ModuleSystem: IfaceDecl :: !Name -> Schema -> !Bool -> [Pragma] -> Bool -> Maybe Fixity -> Maybe Text -> IfaceDecl
- Cryptol.ModuleSystem: IfaceDecls :: Map Name TySyn -> Map Name NominalType -> Map Name IfaceDecl -> !Map Name (IfaceNames Name) -> !Map Name ModParamNames -> !Map Name (IfaceG Name) -> IfaceDecls
- Cryptol.ModuleSystem: ModuleEnv :: LoadedModules -> NameSeeds -> EvalEnv -> CoreLint -> !Bool -> Maybe (ImpName Name) -> [FilePath] -> DynamicEnv -> !Supply -> EvalForeignPolicy -> ModuleEnv
- Cryptol.ModuleSystem: ModuleInput :: Bool -> m EvalOpts -> (FilePath -> m ByteString) -> ModuleEnv -> Solver -> ModuleInput m
- Cryptol.ModuleSystem: ModuleNameMismatch :: ModName -> Located ModName -> ModuleError
- Cryptol.ModuleSystem: ModuleNotFound :: ModName -> [FilePath] -> ModuleError
- Cryptol.ModuleSystem: ModuleParseError :: ModulePath -> ParseError -> ModuleError
- Cryptol.ModuleSystem: NoIncludeErrors :: ImportSource -> [IncludeError] -> ModuleError
- Cryptol.ModuleSystem: NoPatErrors :: ImportSource -> [Error] -> ModuleError
- Cryptol.ModuleSystem: OtherFailure :: String -> ModuleError
- Cryptol.ModuleSystem: OtherIOError :: FilePath -> IOException -> ModuleError
- Cryptol.ModuleSystem: RecursiveModules :: [ImportSource] -> ModuleError
- Cryptol.ModuleSystem: RenamerErrors :: ImportSource -> [RenamerError] -> ModuleError
- Cryptol.ModuleSystem: RenamerWarnings :: [RenamerWarning] -> ModuleWarning
- Cryptol.ModuleSystem: TypeCheckWarnings :: NameMap -> [(Range, Warning)] -> ModuleWarning
- Cryptol.ModuleSystem: TypeCheckingFailed :: ImportSource -> NameMap -> [(Range, Error)] -> ModuleError
- Cryptol.ModuleSystem: [deDecls] :: DynamicEnv -> [DeclGroup]
- Cryptol.ModuleSystem: [deEnv] :: DynamicEnv -> EvalEnv
- Cryptol.ModuleSystem: [deNames] :: DynamicEnv -> NamingEnv
- Cryptol.ModuleSystem: [deTySyns] :: DynamicEnv -> Map Name TySyn
- Cryptol.ModuleSystem: [ifDeclDoc] :: IfaceDecl -> Maybe Text
- Cryptol.ModuleSystem: [ifDeclFixity] :: IfaceDecl -> Maybe Fixity
- Cryptol.ModuleSystem: [ifDeclInfix] :: IfaceDecl -> Bool
- Cryptol.ModuleSystem: [ifDeclIsPrim] :: IfaceDecl -> !Bool
- Cryptol.ModuleSystem: [ifDeclName] :: IfaceDecl -> !Name
- Cryptol.ModuleSystem: [ifDeclPragmas] :: IfaceDecl -> [Pragma]
- Cryptol.ModuleSystem: [ifDeclSig] :: IfaceDecl -> Schema
- Cryptol.ModuleSystem: [ifDecls] :: IfaceDecls -> Map Name IfaceDecl
- Cryptol.ModuleSystem: [ifDefines] :: IfaceG name -> IfaceDecls
- Cryptol.ModuleSystem: [ifFunctors] :: IfaceDecls -> !Map Name (IfaceG Name)
- Cryptol.ModuleSystem: [ifModules] :: IfaceDecls -> !Map Name (IfaceNames Name)
- Cryptol.ModuleSystem: [ifNames] :: IfaceG name -> IfaceNames name
- Cryptol.ModuleSystem: [ifNominalTypes] :: IfaceDecls -> Map Name NominalType
- Cryptol.ModuleSystem: [ifParams] :: IfaceG name -> FunctorParams
- Cryptol.ModuleSystem: [ifSignatures] :: IfaceDecls -> !Map Name ModParamNames
- Cryptol.ModuleSystem: [ifTySyns] :: IfaceDecls -> Map Name TySyn
- Cryptol.ModuleSystem: [meCoreLint] :: ModuleEnv -> CoreLint
- Cryptol.ModuleSystem: [meDynEnv] :: ModuleEnv -> DynamicEnv
- Cryptol.ModuleSystem: [meEvalEnv] :: ModuleEnv -> EvalEnv
- Cryptol.ModuleSystem: [meEvalForeignPolicy] :: ModuleEnv -> EvalForeignPolicy
- Cryptol.ModuleSystem: [meFocusedModule] :: ModuleEnv -> Maybe (ImpName Name)
- Cryptol.ModuleSystem: [meLoadedModules] :: ModuleEnv -> LoadedModules
- Cryptol.ModuleSystem: [meMonoBinds] :: ModuleEnv -> !Bool
- Cryptol.ModuleSystem: [meNameSeeds] :: ModuleEnv -> NameSeeds
- Cryptol.ModuleSystem: [meSearchPath] :: ModuleEnv -> [FilePath]
- Cryptol.ModuleSystem: [meSupply] :: ModuleEnv -> !Supply
- Cryptol.ModuleSystem: [minpByteReader] :: ModuleInput m -> FilePath -> m ByteString
- Cryptol.ModuleSystem: [minpCallStacks] :: ModuleInput m -> Bool
- Cryptol.ModuleSystem: [minpEvalOpts] :: ModuleInput m -> m EvalOpts
- Cryptol.ModuleSystem: [minpModuleEnv] :: ModuleInput m -> ModuleEnv
- Cryptol.ModuleSystem: [minpTCSolver] :: ModuleInput m -> Solver
- Cryptol.ModuleSystem: benchmarkExpr :: Double -> Expr -> ModuleCmd BenchmarkStats
- Cryptol.ModuleSystem: checkDecls :: [TopDecl PName] -> ModuleCmd (NamingEnv, [DeclGroup], Map Name TySyn)
- Cryptol.ModuleSystem: checkExpr :: Expr PName -> ModuleCmd (Expr Name, Expr, Schema)
- Cryptol.ModuleSystem: checkModuleByPath :: FilePath -> ModuleCmd (ModulePath, TCTopEntity)
- Cryptol.ModuleSystem: data DynamicEnv
- Cryptol.ModuleSystem: data IfaceDecl
- Cryptol.ModuleSystem: data IfaceDecls
- Cryptol.ModuleSystem: data IfaceG name
- Cryptol.ModuleSystem: data ModuleEnv
- Cryptol.ModuleSystem: data ModuleError
- Cryptol.ModuleSystem: data ModuleInput m
- Cryptol.ModuleSystem: data ModuleWarning
- Cryptol.ModuleSystem: evalDecls :: [DeclGroup] -> ModuleCmd ()
- Cryptol.ModuleSystem: evalExpr :: Expr -> ModuleCmd Value
- Cryptol.ModuleSystem: findModule :: ModName -> ModuleCmd ModulePath
- Cryptol.ModuleSystem: focusedEnv :: ModuleEnv -> ModContext
- Cryptol.ModuleSystem: genIface :: ModuleG name -> IfaceG name
- Cryptol.ModuleSystem: getFileDependencies :: FilePath -> ModuleCmd (ModulePath, FileInfo)
- Cryptol.ModuleSystem: getModuleDependencies :: ModName -> ModuleCmd (ModulePath, FileInfo)
- Cryptol.ModuleSystem: getPrimMap :: ModuleCmd PrimMap
- Cryptol.ModuleSystem: impNameTopModule :: ImpName Name -> ModName
- Cryptol.ModuleSystem: initialModuleEnv :: IO ModuleEnv
- Cryptol.ModuleSystem: loadModuleByName :: ModName -> ModuleCmd (ModulePath, TCTopEntity)
- Cryptol.ModuleSystem: loadModuleByPath :: FilePath -> ModuleCmd (ModulePath, TCTopEntity)
- Cryptol.ModuleSystem: noPat :: RemovePatterns a => a -> ModuleCmd a
- Cryptol.ModuleSystem: renameImpNameInCurrentEnv :: ImpName PName -> ModuleM (ImpName Name)
- Cryptol.ModuleSystem: renameType :: NamingEnv -> PName -> ModuleCmd Name
- Cryptol.ModuleSystem: renameVar :: NamingEnv -> PName -> ModuleCmd Name
- Cryptol.ModuleSystem: setFocusedModule :: ImpName Name -> ModuleM ()
- Cryptol.ModuleSystem: type Iface = IfaceG ModName
- Cryptol.ModuleSystem: type ModuleCmd a = ModuleInput IO -> IO (ModuleRes a)
- Cryptol.ModuleSystem: type ModuleRes a = (Either ModuleError (a, ModuleEnv), [ModuleWarning])
- Cryptol.ModuleSystem.Base: TCAction :: Act i o -> TCLinter o -> PrimMap -> TCAction i o
- Cryptol.ModuleSystem.Base: TCLinter :: (o -> InferInput -> Either (Range, Error) [ProofObligation]) -> Maybe ModName -> TCLinter o
- Cryptol.ModuleSystem.Base: [lintCheck] :: TCLinter o -> o -> InferInput -> Either (Range, Error) [ProofObligation]
- Cryptol.ModuleSystem.Base: [lintModule] :: TCLinter o -> Maybe ModName
- Cryptol.ModuleSystem.Base: [tcAction] :: TCAction i o -> Act i o
- Cryptol.ModuleSystem.Base: [tcLinter] :: TCAction i o -> TCLinter o
- Cryptol.ModuleSystem.Base: [tcPrims] :: TCAction i o -> PrimMap
- Cryptol.ModuleSystem.Base: addPrelude :: Module PName -> Module PName
- Cryptol.ModuleSystem.Base: benchmarkExpr :: Double -> Expr -> ModuleM BenchmarkStats
- Cryptol.ModuleSystem.Base: checkDecls :: [TopDecl PName] -> ModuleM (NamingEnv, [DeclGroup], Map Name TySyn)
- Cryptol.ModuleSystem.Base: checkExpr :: Expr PName -> ModuleM (Expr Name, Expr, Schema)
- Cryptol.ModuleSystem.Base: checkModule :: ImportSource -> Module PName -> ModuleM (NamingEnv, TCTopEntity)
- Cryptol.ModuleSystem.Base: data TCAction i o
- Cryptol.ModuleSystem.Base: data TCLinter o
- Cryptol.ModuleSystem.Base: declsLinter :: TCLinter ([DeclGroup], a)
- Cryptol.ModuleSystem.Base: doLoadModule :: Bool -> Bool -> ImportSource -> ModulePath -> Fingerprint -> Set FilePath -> Module PName -> ModuleM TCTopEntity
- Cryptol.ModuleSystem.Base: evalDecls :: [DeclGroup] -> ModuleM ()
- Cryptol.ModuleSystem.Base: evalExpr :: Expr -> ModuleM Value
- Cryptol.ModuleSystem.Base: expandPropGuards :: Module PName -> ModuleM (Module PName)
- Cryptol.ModuleSystem.Base: exprLinter :: TCLinter (Expr, Schema)
- Cryptol.ModuleSystem.Base: findDeps :: ModuleG mname name -> [ImportSource]
- Cryptol.ModuleSystem.Base: findDeps' :: ModuleG mname name -> (Any, Endo [ImportSource])
- Cryptol.ModuleSystem.Base: findDepsOf :: ModulePath -> ModuleM (ModulePath, FileInfo)
- Cryptol.ModuleSystem.Base: findDepsOfModule :: ModName -> ModuleM (ModulePath, FileInfo)
- Cryptol.ModuleSystem.Base: findFile :: FilePath -> ModuleM FilePath
- Cryptol.ModuleSystem.Base: findModule :: ModName -> ModuleM ModulePath
- Cryptol.ModuleSystem.Base: findModuleDeps :: ModuleG mname name -> Set ModName
- Cryptol.ModuleSystem.Base: fullyQualified :: Import -> Import
- Cryptol.ModuleSystem.Base: genInferInput :: Range -> PrimMap -> ModContextParams -> IfaceDecls -> ModuleM InferInput
- Cryptol.ModuleSystem.Base: getPrimMap :: ModuleM PrimMap
- Cryptol.ModuleSystem.Base: loadDeps :: ModuleG mname name -> ModuleM (Set ModName)
- Cryptol.ModuleSystem.Base: loadModuleByPath :: Bool -> FilePath -> ModuleM TCTopEntity
- Cryptol.ModuleSystem.Base: loadModuleFrom :: Bool -> ImportSource -> ModuleM (ModulePath, TCTopEntity)
- Cryptol.ModuleSystem.Base: moduleFile :: ModName -> String -> FilePath
- Cryptol.ModuleSystem.Base: moduleLinter :: ModName -> TCLinter Module
- Cryptol.ModuleSystem.Base: noPat :: RemovePatterns a => a -> ModuleM a
- Cryptol.ModuleSystem.Base: parseModule :: ModulePath -> ModuleM (Fingerprint, Set FilePath, [Module PName])
- Cryptol.ModuleSystem.Base: rename :: ModName -> NamingEnv -> RenameM a -> ModuleM a
- Cryptol.ModuleSystem.Base: renameImpNameInCurrentEnv :: ImpName PName -> ModuleM (ImpName Name)
- Cryptol.ModuleSystem.Base: renameModule :: Module PName -> ModuleM RenamedModule
- Cryptol.ModuleSystem.Base: tcTopEntitytLinter :: ModName -> TCLinter TCTopEntity
- Cryptol.ModuleSystem.Base: type Act i o = i -> InferInput -> IO (InferOutput o)
- Cryptol.ModuleSystem.Base: typecheck :: (Show i, Show o, HasLoc i) => TCAction i o -> i -> ModContextParams -> IfaceDecls -> ModuleM o
- Cryptol.ModuleSystem.Binds: AFunctor :: ModKind
- Cryptol.ModuleSystem.Binds: AModule :: ModKind
- Cryptol.ModuleSystem.Binds: ASignature :: ModKind
- Cryptol.ModuleSystem.Binds: InModule :: Maybe ModPath -> a -> InModule a
- Cryptol.ModuleSystem.Binds: Mod :: [ImportG (ImpName PName)] -> ModKind -> Map Name (ImpName PName, ModuleInstanceArgs PName) -> Map Name (Mod a) -> NamingEnv -> !Set Name -> a -> Mod a
- Cryptol.ModuleSystem.Binds: TopInst :: ModName -> ImpName PName -> ModuleInstanceArgs PName -> TopDef
- Cryptol.ModuleSystem.Binds: TopMod :: ModName -> Mod () -> TopDef
- Cryptol.ModuleSystem.Binds: [modDefines] :: Mod a -> NamingEnv
- Cryptol.ModuleSystem.Binds: [modImports] :: Mod a -> [ImportG (ImpName PName)]
- Cryptol.ModuleSystem.Binds: [modInstances] :: Mod a -> Map Name (ImpName PName, ModuleInstanceArgs PName)
- Cryptol.ModuleSystem.Binds: [modKind] :: Mod a -> ModKind
- Cryptol.ModuleSystem.Binds: [modMods] :: Mod a -> Map Name (Mod a)
- Cryptol.ModuleSystem.Binds: [modPublic] :: Mod a -> !Set Name
- Cryptol.ModuleSystem.Binds: [modState] :: Mod a -> a
- Cryptol.ModuleSystem.Binds: class BindsNames a
- Cryptol.ModuleSystem.Binds: data InModule a
- Cryptol.ModuleSystem.Binds: data Mod a
- Cryptol.ModuleSystem.Binds: data ModKind
- Cryptol.ModuleSystem.Binds: data TopDef
- Cryptol.ModuleSystem.Binds: defsOf :: BindsNames a => a -> Supply -> (NamingEnv, Supply)
- Cryptol.ModuleSystem.Binds: ifaceSigToMod :: ModParamNames -> Mod ()
- Cryptol.ModuleSystem.Binds: ifaceToMod :: IfaceG name -> Mod ()
- Cryptol.ModuleSystem.Binds: instance Cryptol.ModuleSystem.Binds.BindsNames (Cryptol.ModuleSystem.Binds.InModule (Cryptol.Parser.AST.Bind Cryptol.Parser.Name.PName))
- Cryptol.ModuleSystem.Binds: instance Cryptol.ModuleSystem.Binds.BindsNames (Cryptol.ModuleSystem.Binds.InModule (Cryptol.Parser.AST.Decl Cryptol.Parser.Name.PName))
- Cryptol.ModuleSystem.Binds: instance Cryptol.ModuleSystem.Binds.BindsNames (Cryptol.ModuleSystem.Binds.InModule (Cryptol.Parser.AST.EnumDecl Cryptol.Parser.Name.PName))
- Cryptol.ModuleSystem.Binds: instance Cryptol.ModuleSystem.Binds.BindsNames (Cryptol.ModuleSystem.Binds.InModule (Cryptol.Parser.AST.NestedModule Cryptol.Parser.Name.PName))
- Cryptol.ModuleSystem.Binds: instance Cryptol.ModuleSystem.Binds.BindsNames (Cryptol.ModuleSystem.Binds.InModule (Cryptol.Parser.AST.Newtype Cryptol.Parser.Name.PName))
- Cryptol.ModuleSystem.Binds: instance Cryptol.ModuleSystem.Binds.BindsNames (Cryptol.ModuleSystem.Binds.InModule (Cryptol.Parser.AST.ParameterFun Cryptol.Parser.Name.PName))
- Cryptol.ModuleSystem.Binds: instance Cryptol.ModuleSystem.Binds.BindsNames (Cryptol.ModuleSystem.Binds.InModule (Cryptol.Parser.AST.ParameterType Cryptol.Parser.Name.PName))
- Cryptol.ModuleSystem.Binds: instance Cryptol.ModuleSystem.Binds.BindsNames (Cryptol.ModuleSystem.Binds.InModule (Cryptol.Parser.AST.PrimType Cryptol.Parser.Name.PName))
- Cryptol.ModuleSystem.Binds: instance Cryptol.ModuleSystem.Binds.BindsNames (Cryptol.ModuleSystem.Binds.InModule (Cryptol.Parser.AST.SigDecl Cryptol.Parser.Name.PName))
- Cryptol.ModuleSystem.Binds: instance Cryptol.ModuleSystem.Binds.BindsNames (Cryptol.ModuleSystem.Binds.InModule (Cryptol.Parser.AST.TopDecl Cryptol.Parser.Name.PName))
- Cryptol.ModuleSystem.Binds: instance Cryptol.ModuleSystem.Binds.BindsNames (Cryptol.Parser.AST.Pattern Cryptol.Parser.Name.PName)
- Cryptol.ModuleSystem.Binds: instance Cryptol.ModuleSystem.Binds.BindsNames (Cryptol.Parser.AST.Schema Cryptol.Parser.Name.PName)
- Cryptol.ModuleSystem.Binds: instance Cryptol.ModuleSystem.Binds.BindsNames (Cryptol.Parser.AST.TParam Cryptol.Parser.Name.PName)
- Cryptol.ModuleSystem.Binds: instance Cryptol.ModuleSystem.Binds.BindsNames Cryptol.ModuleSystem.NamingEnv.Types.NamingEnv
- Cryptol.ModuleSystem.Binds: instance Cryptol.ModuleSystem.Binds.BindsNames a => Cryptol.ModuleSystem.Binds.BindsNames (GHC.Maybe.Maybe a)
- Cryptol.ModuleSystem.Binds: instance Cryptol.ModuleSystem.Binds.BindsNames a => Cryptol.ModuleSystem.Binds.BindsNames [a]
- Cryptol.ModuleSystem.Binds: instance Data.Foldable.Foldable Cryptol.ModuleSystem.Binds.InModule
- Cryptol.ModuleSystem.Binds: instance Data.Traversable.Traversable Cryptol.ModuleSystem.Binds.InModule
- Cryptol.ModuleSystem.Binds: instance GHC.Base.Functor Cryptol.ModuleSystem.Binds.InModule
- Cryptol.ModuleSystem.Binds: instance GHC.Base.Functor Cryptol.ModuleSystem.Binds.Mod
- Cryptol.ModuleSystem.Binds: instance GHC.Base.Monoid Cryptol.ModuleSystem.Binds.BuildNamingEnv
- Cryptol.ModuleSystem.Binds: instance GHC.Base.Semigroup Cryptol.ModuleSystem.Binds.BuildNamingEnv
- Cryptol.ModuleSystem.Binds: instance GHC.Show.Show a => GHC.Show.Show (Cryptol.ModuleSystem.Binds.InModule a)
- Cryptol.ModuleSystem.Binds: modBuilder :: ModBuilder a -> Supply -> ((a, [RenamerError]), Supply)
- Cryptol.ModuleSystem.Binds: modNested :: Mod a -> Set Name
- Cryptol.ModuleSystem.Binds: modToMap :: ImpName Name -> Mod () -> Map (ImpName Name) (Mod ()) -> Map (ImpName Name) (Mod ())
- Cryptol.ModuleSystem.Binds: newFunctorInst :: FreshM m => ModPath -> Name -> m Name
- Cryptol.ModuleSystem.Binds: newModParam :: FreshM m => ModPath -> Ident -> Range -> Name -> m Name
- Cryptol.ModuleSystem.Binds: topDeclsDefs :: ModPath -> [TopDecl PName] -> ModBuilder (Mod ())
- Cryptol.ModuleSystem.Binds: topModuleDefs :: Module PName -> ModBuilder TopDef
- Cryptol.ModuleSystem.Env: ALoadedFunctor :: LoadedModule -> LoadedEntity
- Cryptol.ModuleSystem.Env: ALoadedInterface :: LoadedSignature -> LoadedEntity
- Cryptol.ModuleSystem.Env: ALoadedModule :: LoadedModule -> LoadedEntity
- Cryptol.ModuleSystem.Env: AlwaysEvalForeign :: EvalForeignPolicy
- Cryptol.ModuleSystem.Env: CoreLint :: CoreLint
- Cryptol.ModuleSystem.Env: DEnv :: NamingEnv -> [DeclGroup] -> Map Name TySyn -> EvalEnv -> DynamicEnv
- Cryptol.ModuleSystem.Env: FileInfo :: Fingerprint -> Set FilePath -> Set ModName -> Map FilePath Bool -> FileInfo
- Cryptol.ModuleSystem.Env: FunctorParams :: FunctorParams -> ModContextParams
- Cryptol.ModuleSystem.Env: InFile :: FilePath -> ModulePath
- Cryptol.ModuleSystem.Env: InMem :: String -> ByteString -> ModulePath
- Cryptol.ModuleSystem.Env: InterfaceParams :: ModParamNames -> ModContextParams
- Cryptol.ModuleSystem.Env: LoadedModule :: ModName -> ModulePath -> String -> !NamingEnv -> !FileInfo -> a -> LoadedModuleG a
- Cryptol.ModuleSystem.Env: LoadedModuleData :: Iface -> Module -> Maybe ForeignSrc -> LoadedModuleData
- Cryptol.ModuleSystem.Env: LoadedModules :: [LoadedModule] -> [LoadedModule] -> ![LoadedSignature] -> LoadedModules
- Cryptol.ModuleSystem.Env: ModContext :: ModContextParams -> Set Name -> IfaceDecls -> NamingEnv -> NameDisp -> ModContext
- Cryptol.ModuleSystem.Env: ModuleEnv :: LoadedModules -> NameSeeds -> EvalEnv -> CoreLint -> !Bool -> Maybe (ImpName Name) -> [FilePath] -> DynamicEnv -> !Supply -> EvalForeignPolicy -> ModuleEnv
- Cryptol.ModuleSystem.Env: NeverEvalForeign :: EvalForeignPolicy
- Cryptol.ModuleSystem.Env: NoCoreLint :: CoreLint
- Cryptol.ModuleSystem.Env: NoParams :: ModContextParams
- Cryptol.ModuleSystem.Env: PreferEvalForeign :: EvalForeignPolicy
- Cryptol.ModuleSystem.Env: [deDecls] :: DynamicEnv -> [DeclGroup]
- Cryptol.ModuleSystem.Env: [deEnv] :: DynamicEnv -> EvalEnv
- Cryptol.ModuleSystem.Env: [deNames] :: DynamicEnv -> NamingEnv
- Cryptol.ModuleSystem.Env: [deTySyns] :: DynamicEnv -> Map Name TySyn
- Cryptol.ModuleSystem.Env: [fiFingerprint] :: FileInfo -> Fingerprint
- Cryptol.ModuleSystem.Env: [fiForeignDeps] :: FileInfo -> Map FilePath Bool
- Cryptol.ModuleSystem.Env: [fiImportDeps] :: FileInfo -> Set ModName
- Cryptol.ModuleSystem.Env: [fiIncludeDeps] :: FileInfo -> Set FilePath
- Cryptol.ModuleSystem.Env: [lmData] :: LoadedModuleG a -> a
- Cryptol.ModuleSystem.Env: [lmFileInfo] :: LoadedModuleG a -> !FileInfo
- Cryptol.ModuleSystem.Env: [lmFilePath] :: LoadedModuleG a -> ModulePath
- Cryptol.ModuleSystem.Env: [lmForeignSrc] :: LoadedModuleData -> Maybe ForeignSrc
- Cryptol.ModuleSystem.Env: [lmLoadedModules] :: LoadedModules -> [LoadedModule]
- Cryptol.ModuleSystem.Env: [lmLoadedParamModules] :: LoadedModules -> [LoadedModule]
- Cryptol.ModuleSystem.Env: [lmLoadedSignatures] :: LoadedModules -> ![LoadedSignature]
- Cryptol.ModuleSystem.Env: [lmModuleId] :: LoadedModuleG a -> String
- Cryptol.ModuleSystem.Env: [lmName] :: LoadedModuleG a -> ModName
- Cryptol.ModuleSystem.Env: [lmNamingEnv] :: LoadedModuleG a -> !NamingEnv
- Cryptol.ModuleSystem.Env: [lmdInterface] :: LoadedModuleData -> Iface
- Cryptol.ModuleSystem.Env: [lmdModule] :: LoadedModuleData -> Module
- Cryptol.ModuleSystem.Env: [mctxDecls] :: ModContext -> IfaceDecls
- Cryptol.ModuleSystem.Env: [mctxExported] :: ModContext -> Set Name
- Cryptol.ModuleSystem.Env: [mctxNameDisp] :: ModContext -> NameDisp
- Cryptol.ModuleSystem.Env: [mctxNames] :: ModContext -> NamingEnv
- Cryptol.ModuleSystem.Env: [mctxParams] :: ModContext -> ModContextParams
- Cryptol.ModuleSystem.Env: [meCoreLint] :: ModuleEnv -> CoreLint
- Cryptol.ModuleSystem.Env: [meDynEnv] :: ModuleEnv -> DynamicEnv
- Cryptol.ModuleSystem.Env: [meEvalEnv] :: ModuleEnv -> EvalEnv
- Cryptol.ModuleSystem.Env: [meEvalForeignPolicy] :: ModuleEnv -> EvalForeignPolicy
- Cryptol.ModuleSystem.Env: [meFocusedModule] :: ModuleEnv -> Maybe (ImpName Name)
- Cryptol.ModuleSystem.Env: [meLoadedModules] :: ModuleEnv -> LoadedModules
- Cryptol.ModuleSystem.Env: [meMonoBinds] :: ModuleEnv -> !Bool
- Cryptol.ModuleSystem.Env: [meNameSeeds] :: ModuleEnv -> NameSeeds
- Cryptol.ModuleSystem.Env: [meSearchPath] :: ModuleEnv -> [FilePath]
- Cryptol.ModuleSystem.Env: [meSupply] :: ModuleEnv -> !Supply
- Cryptol.ModuleSystem.Env: addLoadedModule :: ModulePath -> String -> FileInfo -> NamingEnv -> Maybe ForeignSrc -> Module -> LoadedModules -> LoadedModules
- Cryptol.ModuleSystem.Env: addLoadedSignature :: ModulePath -> String -> FileInfo -> NamingEnv -> ModName -> ModParamNames -> LoadedModules -> LoadedModules
- Cryptol.ModuleSystem.Env: allDeclGroups :: ModuleEnv -> [DeclGroup]
- Cryptol.ModuleSystem.Env: data CoreLint
- Cryptol.ModuleSystem.Env: data DynamicEnv
- Cryptol.ModuleSystem.Env: data EvalForeignPolicy
- Cryptol.ModuleSystem.Env: data FileInfo
- Cryptol.ModuleSystem.Env: data LoadedEntity
- Cryptol.ModuleSystem.Env: data LoadedModuleData
- Cryptol.ModuleSystem.Env: data LoadedModuleG a
- Cryptol.ModuleSystem.Env: data LoadedModules
- Cryptol.ModuleSystem.Env: data ModContext
- Cryptol.ModuleSystem.Env: data ModContextParams
- Cryptol.ModuleSystem.Env: data ModuleEnv
- Cryptol.ModuleSystem.Env: data ModulePath
- Cryptol.ModuleSystem.Env: deIfaceDecls :: DynamicEnv -> IfaceDecls
- Cryptol.ModuleSystem.Env: defaultEvalForeignPolicy :: EvalForeignPolicy
- Cryptol.ModuleSystem.Env: dynModContext :: ModuleEnv -> ModContext
- Cryptol.ModuleSystem.Env: fileInfo :: Fingerprint -> Set FilePath -> Set ModName -> Maybe ForeignSrc -> FileInfo
- Cryptol.ModuleSystem.Env: findEnv :: Name -> Iface -> ModuleG a -> Maybe (NamingEnv, Set Name)
- Cryptol.ModuleSystem.Env: focusModule :: ModName -> ModuleEnv -> Maybe ModuleEnv
- Cryptol.ModuleSystem.Env: focusedEnv :: ModuleEnv -> ModContext
- Cryptol.ModuleSystem.Env: getLoadedEntities :: LoadedModules -> Map ModName LoadedEntity
- Cryptol.ModuleSystem.Env: getLoadedModules :: LoadedModules -> [LoadedModule]
- Cryptol.ModuleSystem.Env: getLoadedNames :: LoadedModules -> Set ModName
- Cryptol.ModuleSystem.Env: hasParamModules :: ModuleEnv -> Bool
- Cryptol.ModuleSystem.Env: initialModuleEnv :: IO ModuleEnv
- Cryptol.ModuleSystem.Env: instance Control.DeepSeq.NFData Cryptol.ModuleSystem.Env.CoreLint
- Cryptol.ModuleSystem.Env: instance Control.DeepSeq.NFData Cryptol.ModuleSystem.Env.FileInfo
- Cryptol.ModuleSystem.Env: instance Control.DeepSeq.NFData Cryptol.ModuleSystem.Env.LoadedModuleData
- Cryptol.ModuleSystem.Env: instance Control.DeepSeq.NFData Cryptol.ModuleSystem.Env.LoadedModules
- Cryptol.ModuleSystem.Env: instance Control.DeepSeq.NFData Cryptol.ModuleSystem.Env.ModuleEnv
- Cryptol.ModuleSystem.Env: instance Control.DeepSeq.NFData Cryptol.ModuleSystem.Env.ModulePath
- Cryptol.ModuleSystem.Env: instance Control.DeepSeq.NFData a => Control.DeepSeq.NFData (Cryptol.ModuleSystem.Env.LoadedModuleG a)
- Cryptol.ModuleSystem.Env: instance Cryptol.Utils.PP.PP Cryptol.ModuleSystem.Env.ModulePath
- Cryptol.ModuleSystem.Env: instance GHC.Base.Monoid Cryptol.ModuleSystem.Env.DynamicEnv
- Cryptol.ModuleSystem.Env: instance GHC.Base.Monoid Cryptol.ModuleSystem.Env.LoadedModules
- Cryptol.ModuleSystem.Env: instance GHC.Base.Monoid Cryptol.ModuleSystem.Env.ModContext
- Cryptol.ModuleSystem.Env: instance GHC.Base.Semigroup Cryptol.ModuleSystem.Env.DynamicEnv
- Cryptol.ModuleSystem.Env: instance GHC.Base.Semigroup Cryptol.ModuleSystem.Env.LoadedModules
- Cryptol.ModuleSystem.Env: instance GHC.Base.Semigroup Cryptol.ModuleSystem.Env.ModContext
- Cryptol.ModuleSystem.Env: instance GHC.Classes.Eq Cryptol.ModuleSystem.Env.EvalForeignPolicy
- Cryptol.ModuleSystem.Env: instance GHC.Classes.Eq Cryptol.ModuleSystem.Env.ModulePath
- Cryptol.ModuleSystem.Env: instance GHC.Classes.Ord Cryptol.ModuleSystem.Env.ModulePath
- Cryptol.ModuleSystem.Env: instance GHC.Generics.Generic (Cryptol.ModuleSystem.Env.LoadedModuleG a)
- Cryptol.ModuleSystem.Env: instance GHC.Generics.Generic Cryptol.ModuleSystem.Env.CoreLint
- Cryptol.ModuleSystem.Env: instance GHC.Generics.Generic Cryptol.ModuleSystem.Env.DynamicEnv
- Cryptol.ModuleSystem.Env: instance GHC.Generics.Generic Cryptol.ModuleSystem.Env.FileInfo
- Cryptol.ModuleSystem.Env: instance GHC.Generics.Generic Cryptol.ModuleSystem.Env.LoadedModuleData
- Cryptol.ModuleSystem.Env: instance GHC.Generics.Generic Cryptol.ModuleSystem.Env.LoadedModules
- Cryptol.ModuleSystem.Env: instance GHC.Generics.Generic Cryptol.ModuleSystem.Env.ModuleEnv
- Cryptol.ModuleSystem.Env: instance GHC.Generics.Generic Cryptol.ModuleSystem.Env.ModulePath
- Cryptol.ModuleSystem.Env: instance GHC.Show.Show Cryptol.ModuleSystem.Env.FileInfo
- Cryptol.ModuleSystem.Env: instance GHC.Show.Show Cryptol.ModuleSystem.Env.LoadedModuleData
- Cryptol.ModuleSystem.Env: instance GHC.Show.Show Cryptol.ModuleSystem.Env.LoadedModules
- Cryptol.ModuleSystem.Env: instance GHC.Show.Show Cryptol.ModuleSystem.Env.ModulePath
- Cryptol.ModuleSystem.Env: instance GHC.Show.Show a => GHC.Show.Show (Cryptol.ModuleSystem.Env.LoadedModuleG a)
- Cryptol.ModuleSystem.Env: isLoaded :: ImpName Name -> LoadedModules -> Bool
- Cryptol.ModuleSystem.Env: isLoadedInterface :: ImpName Name -> LoadedModules -> Bool
- Cryptol.ModuleSystem.Env: isLoadedParamMod :: ImpName Name -> LoadedModules -> Bool
- Cryptol.ModuleSystem.Env: lmInterface :: LoadedModule -> Iface
- Cryptol.ModuleSystem.Env: lmModule :: LoadedModule -> Module
- Cryptol.ModuleSystem.Env: loadedModules :: ModuleEnv -> [Module]
- Cryptol.ModuleSystem.Env: loadedNominalTypes :: ModuleEnv -> Map Name NominalType
- Cryptol.ModuleSystem.Env: loadedNonParamModules :: ModuleEnv -> [Module]
- Cryptol.ModuleSystem.Env: loadedParamModDeps :: FreeVars a => LoadedModules -> a -> (Set TParam, Set Name)
- Cryptol.ModuleSystem.Env: lookupModule :: ModName -> ModuleEnv -> Maybe LoadedModule
- Cryptol.ModuleSystem.Env: lookupSignature :: ModName -> ModuleEnv -> Maybe LoadedSignature
- Cryptol.ModuleSystem.Env: lookupTCEntity :: ModName -> ModuleEnv -> Maybe (LoadedModuleG TCTopEntity)
- Cryptol.ModuleSystem.Env: modContextOf :: ImpName Name -> ModuleEnv -> Maybe ModContext
- Cryptol.ModuleSystem.Env: modContextParamNames :: ModContextParams -> ModParamNames
- Cryptol.ModuleSystem.Env: modulePathLabel :: ModulePath -> String
- Cryptol.ModuleSystem.Env: removeLoadedModule :: (forall a. LoadedModuleG a -> Bool) -> LoadedModules -> LoadedModules
- Cryptol.ModuleSystem.Env: resetModuleEnv :: ModuleEnv -> IO ModuleEnv
- Cryptol.ModuleSystem.Env: type LoadedModule = LoadedModuleG LoadedModuleData
- Cryptol.ModuleSystem.Env: type LoadedSignature = LoadedModuleG ModParamNames
- Cryptol.ModuleSystem.Exports: ExportSpec :: Map Namespace (Set name) -> ExportSpec name
- Cryptol.ModuleSystem.Exports: allExported :: Ord name => ExportSpec name -> Set name
- Cryptol.ModuleSystem.Exports: exportBind :: Ord name => TopLevel name -> ExportSpec name
- Cryptol.ModuleSystem.Exports: exportCon :: Ord name => TopLevel name -> ExportSpec name
- Cryptol.ModuleSystem.Exports: exportName :: Ord name => Namespace -> TopLevel name -> ExportSpec name
- Cryptol.ModuleSystem.Exports: exportType :: Ord name => TopLevel name -> ExportSpec name
- Cryptol.ModuleSystem.Exports: exported :: Namespace -> ExportSpec name -> Set name
- Cryptol.ModuleSystem.Exports: exportedDecls :: Ord name => [TopDecl name] -> ExportSpec name
- Cryptol.ModuleSystem.Exports: exportedNames :: Ord name => TopDecl name -> [ExportSpec name]
- Cryptol.ModuleSystem.Exports: instance Control.DeepSeq.NFData name => Control.DeepSeq.NFData (Cryptol.ModuleSystem.Exports.ExportSpec name)
- Cryptol.ModuleSystem.Exports: instance GHC.Classes.Ord name => GHC.Base.Monoid (Cryptol.ModuleSystem.Exports.ExportSpec name)
- Cryptol.ModuleSystem.Exports: instance GHC.Classes.Ord name => GHC.Base.Semigroup (Cryptol.ModuleSystem.Exports.ExportSpec name)
- Cryptol.ModuleSystem.Exports: instance GHC.Generics.Generic (Cryptol.ModuleSystem.Exports.ExportSpec name)
- Cryptol.ModuleSystem.Exports: instance GHC.Show.Show name => GHC.Show.Show (Cryptol.ModuleSystem.Exports.ExportSpec name)
- Cryptol.ModuleSystem.Exports: isExported :: Ord name => Namespace -> name -> ExportSpec name -> Bool
- Cryptol.ModuleSystem.Exports: isExportedBind :: Ord name => name -> ExportSpec name -> Bool
- Cryptol.ModuleSystem.Exports: isExportedType :: Ord name => name -> ExportSpec name -> Bool
- Cryptol.ModuleSystem.Exports: newtype ExportSpec name
- Cryptol.ModuleSystem.Fingerprint: data Fingerprint
- Cryptol.ModuleSystem.Fingerprint: fingerprint :: ByteString -> Fingerprint
- Cryptol.ModuleSystem.Fingerprint: fingerprintFile :: FilePath -> IO (Maybe Fingerprint)
- Cryptol.ModuleSystem.Fingerprint: fingerprintHexString :: Fingerprint -> String
- Cryptol.ModuleSystem.Fingerprint: instance Control.DeepSeq.NFData Cryptol.ModuleSystem.Fingerprint.Fingerprint
- Cryptol.ModuleSystem.Fingerprint: instance GHC.Classes.Eq Cryptol.ModuleSystem.Fingerprint.Fingerprint
- Cryptol.ModuleSystem.Fingerprint: instance GHC.Show.Show Cryptol.ModuleSystem.Fingerprint.Fingerprint
- Cryptol.ModuleSystem.Interface: Iface :: IfaceNames name -> FunctorParams -> IfaceDecls -> IfaceG name
- Cryptol.ModuleSystem.Interface: IfaceDecl :: !Name -> Schema -> !Bool -> [Pragma] -> Bool -> Maybe Fixity -> Maybe Text -> IfaceDecl
- Cryptol.ModuleSystem.Interface: IfaceDecls :: Map Name TySyn -> Map Name NominalType -> Map Name IfaceDecl -> !Map Name (IfaceNames Name) -> !Map Name ModParamNames -> !Map Name (IfaceG Name) -> IfaceDecls
- Cryptol.ModuleSystem.Interface: IfaceNames :: name -> Set Name -> Set Name -> Set Name -> ![Text] -> IfaceNames name
- Cryptol.ModuleSystem.Interface: [ifDeclDoc] :: IfaceDecl -> Maybe Text
- Cryptol.ModuleSystem.Interface: [ifDeclFixity] :: IfaceDecl -> Maybe Fixity
- Cryptol.ModuleSystem.Interface: [ifDeclInfix] :: IfaceDecl -> Bool
- Cryptol.ModuleSystem.Interface: [ifDeclIsPrim] :: IfaceDecl -> !Bool
- Cryptol.ModuleSystem.Interface: [ifDeclName] :: IfaceDecl -> !Name
- Cryptol.ModuleSystem.Interface: [ifDeclPragmas] :: IfaceDecl -> [Pragma]
- Cryptol.ModuleSystem.Interface: [ifDeclSig] :: IfaceDecl -> Schema
- Cryptol.ModuleSystem.Interface: [ifDecls] :: IfaceDecls -> Map Name IfaceDecl
- Cryptol.ModuleSystem.Interface: [ifDefines] :: IfaceG name -> IfaceDecls
- Cryptol.ModuleSystem.Interface: [ifFunctors] :: IfaceDecls -> !Map Name (IfaceG Name)
- Cryptol.ModuleSystem.Interface: [ifModules] :: IfaceDecls -> !Map Name (IfaceNames Name)
- Cryptol.ModuleSystem.Interface: [ifNames] :: IfaceG name -> IfaceNames name
- Cryptol.ModuleSystem.Interface: [ifNominalTypes] :: IfaceDecls -> Map Name NominalType
- Cryptol.ModuleSystem.Interface: [ifParams] :: IfaceG name -> FunctorParams
- Cryptol.ModuleSystem.Interface: [ifSignatures] :: IfaceDecls -> !Map Name ModParamNames
- Cryptol.ModuleSystem.Interface: [ifTySyns] :: IfaceDecls -> Map Name TySyn
- Cryptol.ModuleSystem.Interface: [ifsDefines] :: IfaceNames name -> Set Name
- Cryptol.ModuleSystem.Interface: [ifsDoc] :: IfaceNames name -> ![Text]
- Cryptol.ModuleSystem.Interface: [ifsName] :: IfaceNames name -> name
- Cryptol.ModuleSystem.Interface: [ifsNested] :: IfaceNames name -> Set Name
- Cryptol.ModuleSystem.Interface: [ifsPublic] :: IfaceNames name -> Set Name
- Cryptol.ModuleSystem.Interface: data IfaceDecl
- Cryptol.ModuleSystem.Interface: data IfaceDecls
- Cryptol.ModuleSystem.Interface: data IfaceG name
- Cryptol.ModuleSystem.Interface: data IfaceNames name
- Cryptol.ModuleSystem.Interface: emptyIface :: ModName -> Iface
- Cryptol.ModuleSystem.Interface: filterIfaceDecls :: (Name -> Bool) -> IfaceDecls -> IfaceDecls
- Cryptol.ModuleSystem.Interface: ifModName :: IfaceG name -> name
- Cryptol.ModuleSystem.Interface: ifaceDeclsNames :: IfaceDecls -> Set Name
- Cryptol.ModuleSystem.Interface: ifaceForgetName :: IfaceG name -> IfaceG ()
- Cryptol.ModuleSystem.Interface: ifaceIsFunctor :: IfaceG name -> Bool
- Cryptol.ModuleSystem.Interface: ifaceNameToModuleMap :: Iface -> Map Name (ImpName Name)
- Cryptol.ModuleSystem.Interface: ifaceOrigNameMap :: IfaceG name -> Map Namespace (Map OrigName Name)
- Cryptol.ModuleSystem.Interface: ifacePrimMap :: Iface -> PrimMap
- Cryptol.ModuleSystem.Interface: instance Control.DeepSeq.NFData Cryptol.ModuleSystem.Interface.IfaceDecl
- Cryptol.ModuleSystem.Interface: instance Control.DeepSeq.NFData Cryptol.ModuleSystem.Interface.IfaceDecls
- Cryptol.ModuleSystem.Interface: instance Control.DeepSeq.NFData name => Control.DeepSeq.NFData (Cryptol.ModuleSystem.Interface.IfaceG name)
- Cryptol.ModuleSystem.Interface: instance Control.DeepSeq.NFData name => Control.DeepSeq.NFData (Cryptol.ModuleSystem.Interface.IfaceNames name)
- Cryptol.ModuleSystem.Interface: instance GHC.Base.Functor Cryptol.ModuleSystem.Interface.IfaceG
- Cryptol.ModuleSystem.Interface: instance GHC.Base.Functor Cryptol.ModuleSystem.Interface.IfaceNames
- Cryptol.ModuleSystem.Interface: instance GHC.Base.Monoid Cryptol.ModuleSystem.Interface.IfaceDecls
- Cryptol.ModuleSystem.Interface: instance GHC.Base.Semigroup Cryptol.ModuleSystem.Interface.IfaceDecls
- Cryptol.ModuleSystem.Interface: instance GHC.Generics.Generic (Cryptol.ModuleSystem.Interface.IfaceG name)
- Cryptol.ModuleSystem.Interface: instance GHC.Generics.Generic (Cryptol.ModuleSystem.Interface.IfaceNames name)
- Cryptol.ModuleSystem.Interface: instance GHC.Generics.Generic Cryptol.ModuleSystem.Interface.IfaceDecl
- Cryptol.ModuleSystem.Interface: instance GHC.Generics.Generic Cryptol.ModuleSystem.Interface.IfaceDecls
- Cryptol.ModuleSystem.Interface: instance GHC.Show.Show Cryptol.ModuleSystem.Interface.IfaceDecl
- Cryptol.ModuleSystem.Interface: instance GHC.Show.Show Cryptol.ModuleSystem.Interface.IfaceDecls
- Cryptol.ModuleSystem.Interface: instance GHC.Show.Show name => GHC.Show.Show (Cryptol.ModuleSystem.Interface.IfaceG name)
- Cryptol.ModuleSystem.Interface: instance GHC.Show.Show name => GHC.Show.Show (Cryptol.ModuleSystem.Interface.IfaceNames name)
- Cryptol.ModuleSystem.Interface: type Iface = IfaceG ModName
- Cryptol.ModuleSystem.Monad: BadUtf8 :: ModulePath -> UnicodeException -> ModuleError
- Cryptol.ModuleSystem.Monad: CantFindFile :: FilePath -> ModuleError
- Cryptol.ModuleSystem.Monad: DuplicateModuleName :: ModName -> FilePath -> FilePath -> ModuleError
- Cryptol.ModuleSystem.Monad: ErrorInFile :: ModulePath -> ModuleError -> ModuleError
- Cryptol.ModuleSystem.Monad: ExpandPropGuardsError :: ImportSource -> Error -> ModuleError
- Cryptol.ModuleSystem.Monad: FFILoadErrors :: ModName -> [FFILoadError] -> ModuleError
- Cryptol.ModuleSystem.Monad: FromImport :: Located Import -> ImportSource
- Cryptol.ModuleSystem.Monad: FromModule :: ModName -> ImportSource
- Cryptol.ModuleSystem.Monad: FromModuleInstance :: Located ModName -> ImportSource
- Cryptol.ModuleSystem.Monad: FromSigImport :: Located ModName -> ImportSource
- Cryptol.ModuleSystem.Monad: ModuleInput :: Bool -> m EvalOpts -> (FilePath -> m ByteString) -> ModuleEnv -> Solver -> ModuleInput m
- Cryptol.ModuleSystem.Monad: ModuleNameMismatch :: ModName -> Located ModName -> ModuleError
- Cryptol.ModuleSystem.Monad: ModuleNotFound :: ModName -> [FilePath] -> ModuleError
- Cryptol.ModuleSystem.Monad: ModuleParseError :: ModulePath -> ParseError -> ModuleError
- Cryptol.ModuleSystem.Monad: ModuleT :: ReaderT (RO m) (StateT ModuleEnv (ExceptionT ModuleError (WriterT [ModuleWarning] m))) a -> ModuleT m a
- Cryptol.ModuleSystem.Monad: NoIncludeErrors :: ImportSource -> [IncludeError] -> ModuleError
- Cryptol.ModuleSystem.Monad: NoPatErrors :: ImportSource -> [Error] -> ModuleError
- Cryptol.ModuleSystem.Monad: OtherFailure :: String -> ModuleError
- Cryptol.ModuleSystem.Monad: OtherIOError :: FilePath -> IOException -> ModuleError
- Cryptol.ModuleSystem.Monad: RO :: [ImportSource] -> m EvalOpts -> Bool -> (FilePath -> m ByteString) -> Solver -> RO m
- Cryptol.ModuleSystem.Monad: RecursiveModules :: [ImportSource] -> ModuleError
- Cryptol.ModuleSystem.Monad: RenamerErrors :: ImportSource -> [RenamerError] -> ModuleError
- Cryptol.ModuleSystem.Monad: RenamerWarnings :: [RenamerWarning] -> ModuleWarning
- Cryptol.ModuleSystem.Monad: TypeCheckWarnings :: NameMap -> [(Range, Warning)] -> ModuleWarning
- Cryptol.ModuleSystem.Monad: TypeCheckingFailed :: ImportSource -> NameMap -> [(Range, Error)] -> ModuleError
- Cryptol.ModuleSystem.Monad: [minpByteReader] :: ModuleInput m -> FilePath -> m ByteString
- Cryptol.ModuleSystem.Monad: [minpCallStacks] :: ModuleInput m -> Bool
- Cryptol.ModuleSystem.Monad: [minpEvalOpts] :: ModuleInput m -> m EvalOpts
- Cryptol.ModuleSystem.Monad: [minpModuleEnv] :: ModuleInput m -> ModuleEnv
- Cryptol.ModuleSystem.Monad: [minpTCSolver] :: ModuleInput m -> Solver
- Cryptol.ModuleSystem.Monad: [roCallStacks] :: RO m -> Bool
- Cryptol.ModuleSystem.Monad: [roEvalOpts] :: RO m -> m EvalOpts
- Cryptol.ModuleSystem.Monad: [roFileReader] :: RO m -> FilePath -> m ByteString
- Cryptol.ModuleSystem.Monad: [roLoading] :: RO m -> [ImportSource]
- Cryptol.ModuleSystem.Monad: [roTCSolver] :: RO m -> Solver
- Cryptol.ModuleSystem.Monad: [unModuleT] :: ModuleT m a -> ReaderT (RO m) (StateT ModuleEnv (ExceptionT ModuleError (WriterT [ModuleWarning] m))) a
- Cryptol.ModuleSystem.Monad: badUtf8 :: ModulePath -> UnicodeException -> ModuleM a
- Cryptol.ModuleSystem.Monad: cantFindFile :: FilePath -> ModuleM a
- Cryptol.ModuleSystem.Monad: data ImportSource
- Cryptol.ModuleSystem.Monad: data ModuleError
- Cryptol.ModuleSystem.Monad: data ModuleInput m
- Cryptol.ModuleSystem.Monad: data ModuleWarning
- Cryptol.ModuleSystem.Monad: data RO m
- Cryptol.ModuleSystem.Monad: duplicateModuleName :: ModName -> FilePath -> FilePath -> ModuleM a
- Cryptol.ModuleSystem.Monad: emptyRO :: ModuleInput m -> RO m
- Cryptol.ModuleSystem.Monad: errorInFile :: ModulePath -> ModuleM a -> ModuleM a
- Cryptol.ModuleSystem.Monad: expandPropGuardsError :: Error -> ModuleM a
- Cryptol.ModuleSystem.Monad: ffiLoadErrors :: ModName -> [FFILoadError] -> ModuleM a
- Cryptol.ModuleSystem.Monad: getAllLoaded :: ModuleM (ModName -> Maybe (ModuleG (), IfaceG ()))
- Cryptol.ModuleSystem.Monad: getAllLoadedSignatures :: ModuleM (ModName -> Maybe ModParamNames)
- Cryptol.ModuleSystem.Monad: getByteReader :: Monad m => ModuleT m (FilePath -> m ByteString)
- Cryptol.ModuleSystem.Monad: getCallStacks :: Monad m => ModuleT m Bool
- Cryptol.ModuleSystem.Monad: getDynEnv :: ModuleM DynamicEnv
- Cryptol.ModuleSystem.Monad: getEvalEnv :: ModuleM EvalEnv
- Cryptol.ModuleSystem.Monad: getEvalForeignPolicy :: ModuleM EvalForeignPolicy
- Cryptol.ModuleSystem.Monad: getEvalOpts :: ModuleM EvalOpts
- Cryptol.ModuleSystem.Monad: getEvalOptsAction :: ModuleM (IO EvalOpts)
- Cryptol.ModuleSystem.Monad: getFocusedEnv :: ModuleM ModContext
- Cryptol.ModuleSystem.Monad: getFocusedModule :: ModuleM (Maybe (ImpName Name))
- Cryptol.ModuleSystem.Monad: getIfaces :: ModuleM (Map ModName (Either ModParamNames Iface))
- Cryptol.ModuleSystem.Monad: getImportSource :: ModuleM ImportSource
- Cryptol.ModuleSystem.Monad: getLoaded :: ModName -> ModuleM Module
- Cryptol.ModuleSystem.Monad: getLoadedMaybe :: ModName -> ModuleM (Maybe (LoadedModuleG TCTopEntity))
- Cryptol.ModuleSystem.Monad: getModuleEnv :: Monad m => ModuleT m ModuleEnv
- Cryptol.ModuleSystem.Monad: getMonoBinds :: ModuleM Bool
- Cryptol.ModuleSystem.Monad: getNameSeeds :: ModuleM NameSeeds
- Cryptol.ModuleSystem.Monad: getNominalTypes :: ModuleM (Map Name NominalType)
- Cryptol.ModuleSystem.Monad: getSearchPath :: ModuleM [FilePath]
- Cryptol.ModuleSystem.Monad: getSupply :: ModuleM Supply
- Cryptol.ModuleSystem.Monad: getTCSolver :: Monad m => ModuleT m Solver
- Cryptol.ModuleSystem.Monad: importedModule :: ImportSource -> ModName
- Cryptol.ModuleSystem.Monad: instance Control.DeepSeq.NFData Cryptol.ModuleSystem.Monad.ImportSource
- Cryptol.ModuleSystem.Monad: instance Control.DeepSeq.NFData Cryptol.ModuleSystem.Monad.ModuleError
- Cryptol.ModuleSystem.Monad: instance Control.DeepSeq.NFData Cryptol.ModuleSystem.Monad.ModuleWarning
- Cryptol.ModuleSystem.Monad: instance Control.Monad.Fail.MonadFail m => Control.Monad.Fail.MonadFail (Cryptol.ModuleSystem.Monad.ModuleT m)
- Cryptol.ModuleSystem.Monad: instance Control.Monad.IO.Class.MonadIO m => Control.Monad.IO.Class.MonadIO (Cryptol.ModuleSystem.Monad.ModuleT m)
- Cryptol.ModuleSystem.Monad: instance Cryptol.Utils.PP.PP Cryptol.ModuleSystem.Monad.ImportSource
- Cryptol.ModuleSystem.Monad: instance Cryptol.Utils.PP.PP Cryptol.ModuleSystem.Monad.ModuleError
- Cryptol.ModuleSystem.Monad: instance Cryptol.Utils.PP.PP Cryptol.ModuleSystem.Monad.ModuleWarning
- Cryptol.ModuleSystem.Monad: instance GHC.Base.Monad m => Cryptol.ModuleSystem.Name.FreshM (Cryptol.ModuleSystem.Monad.ModuleT m)
- Cryptol.ModuleSystem.Monad: instance GHC.Base.Monad m => GHC.Base.Applicative (Cryptol.ModuleSystem.Monad.ModuleT m)
- Cryptol.ModuleSystem.Monad: instance GHC.Base.Monad m => GHC.Base.Functor (Cryptol.ModuleSystem.Monad.ModuleT m)
- Cryptol.ModuleSystem.Monad: instance GHC.Base.Monad m => GHC.Base.Monad (Cryptol.ModuleSystem.Monad.ModuleT m)
- Cryptol.ModuleSystem.Monad: instance GHC.Classes.Eq Cryptol.ModuleSystem.Monad.ImportSource
- Cryptol.ModuleSystem.Monad: instance GHC.Generics.Generic Cryptol.ModuleSystem.Monad.ImportSource
- Cryptol.ModuleSystem.Monad: instance GHC.Generics.Generic Cryptol.ModuleSystem.Monad.ModuleWarning
- Cryptol.ModuleSystem.Monad: instance GHC.Show.Show Cryptol.ModuleSystem.Monad.ImportSource
- Cryptol.ModuleSystem.Monad: instance GHC.Show.Show Cryptol.ModuleSystem.Monad.ModuleError
- Cryptol.ModuleSystem.Monad: instance GHC.Show.Show Cryptol.ModuleSystem.Monad.ModuleWarning
- Cryptol.ModuleSystem.Monad: instance MonadLib.MonadT Cryptol.ModuleSystem.Monad.ModuleT
- Cryptol.ModuleSystem.Monad: interactive :: ModuleM a -> ModuleM a
- Cryptol.ModuleSystem.Monad: io :: BaseM m IO => IO a -> ModuleT m a
- Cryptol.ModuleSystem.Monad: isLoaded :: ModName -> ModuleM Bool
- Cryptol.ModuleSystem.Monad: loadedModule :: ModulePath -> FileInfo -> NamingEnv -> Maybe ForeignSrc -> TCTopEntity -> ModuleM ()
- Cryptol.ModuleSystem.Monad: loading :: ImportSource -> ModuleM a -> ModuleM a
- Cryptol.ModuleSystem.Monad: loadingImport :: Located Import -> ModuleM a -> ModuleM a
- Cryptol.ModuleSystem.Monad: loadingModInstance :: Located ModName -> ModuleM a -> ModuleM a
- Cryptol.ModuleSystem.Monad: loadingModule :: ModName -> ModuleM a -> ModuleM a
- Cryptol.ModuleSystem.Monad: modifyEvalEnv :: (EvalEnv -> Eval EvalEnv) -> ModuleM ()
- Cryptol.ModuleSystem.Monad: modifyEvalEnvM :: Traversable t => (EvalEnv -> Eval (t EvalEnv)) -> ModuleM (t ())
- Cryptol.ModuleSystem.Monad: modifyModuleEnv :: Monad m => (ModuleEnv -> ModuleEnv) -> ModuleT m ()
- Cryptol.ModuleSystem.Monad: moduleNameMismatch :: ModName -> Located ModName -> ModuleM a
- Cryptol.ModuleSystem.Monad: moduleNotFound :: ModName -> [FilePath] -> ModuleM a
- Cryptol.ModuleSystem.Monad: moduleParseError :: ModulePath -> ParseError -> ModuleM a
- Cryptol.ModuleSystem.Monad: newtype ModuleT m a
- Cryptol.ModuleSystem.Monad: noIncludeErrors :: [IncludeError] -> ModuleM a
- Cryptol.ModuleSystem.Monad: noPatErrors :: [Error] -> ModuleM a
- Cryptol.ModuleSystem.Monad: otherIOError :: FilePath -> IOException -> ModuleM a
- Cryptol.ModuleSystem.Monad: readBytes :: Monad m => FilePath -> ModuleT m ByteString
- Cryptol.ModuleSystem.Monad: recursiveModules :: [ImportSource] -> ModuleM a
- Cryptol.ModuleSystem.Monad: renamerErrors :: [RenamerError] -> ModuleM a
- Cryptol.ModuleSystem.Monad: renamerWarnings :: [RenamerWarning] -> ModuleM ()
- Cryptol.ModuleSystem.Monad: runModuleM :: ModuleInput IO -> ModuleM a -> IO (Either ModuleError (a, ModuleEnv), [ModuleWarning])
- Cryptol.ModuleSystem.Monad: runModuleT :: Monad m => ModuleInput m -> ModuleT m a -> m (Either ModuleError (a, ModuleEnv), [ModuleWarning])
- Cryptol.ModuleSystem.Monad: setDynEnv :: DynamicEnv -> ModuleM ()
- Cryptol.ModuleSystem.Monad: setFocusedModule :: ImpName Name -> ModuleM ()
- Cryptol.ModuleSystem.Monad: setMaybeFocusedModule :: Maybe (ImpName Name) -> ModuleM ()
- Cryptol.ModuleSystem.Monad: setModuleEnv :: Monad m => ModuleEnv -> ModuleT m ()
- Cryptol.ModuleSystem.Monad: setMonoBinds :: Bool -> ModuleM ()
- Cryptol.ModuleSystem.Monad: setNameSeeds :: NameSeeds -> ModuleM ()
- Cryptol.ModuleSystem.Monad: setSupply :: Supply -> ModuleM ()
- Cryptol.ModuleSystem.Monad: type ModuleM = ModuleT IO
- Cryptol.ModuleSystem.Monad: typeCheckWarnings :: NameMap -> [(Range, Warning)] -> ModuleM ()
- Cryptol.ModuleSystem.Monad: typeCheckingFailed :: NameMap -> [(Range, Error)] -> ModuleM a
- Cryptol.ModuleSystem.Monad: unloadModule :: (forall a. LoadedModuleG a -> Bool) -> ModuleM ()
- Cryptol.ModuleSystem.Monad: warn :: [ModuleWarning] -> ModuleM ()
- Cryptol.ModuleSystem.Monad: withLogger :: (Logger -> a -> IO b) -> a -> ModuleM b
- Cryptol.ModuleSystem.Monad: withPrependedSearchPath :: [FilePath] -> ModuleM a -> ModuleM a
- Cryptol.ModuleSystem.Name: GlobalName :: NameSource -> OrigName -> NameInfo
- Cryptol.ModuleSystem.Name: LocalName :: Namespace -> Ident -> NameInfo
- Cryptol.ModuleSystem.Name: NSConstructor :: Namespace
- Cryptol.ModuleSystem.Name: NSModule :: Namespace
- Cryptol.ModuleSystem.Name: NSType :: Namespace
- Cryptol.ModuleSystem.Name: NSValue :: Namespace
- Cryptol.ModuleSystem.Name: Nested :: ModPath -> Ident -> ModPath
- Cryptol.ModuleSystem.Name: PrimMap :: Map PrimIdent Name -> Map PrimIdent Name -> PrimMap
- Cryptol.ModuleSystem.Name: SystemName :: NameSource
- Cryptol.ModuleSystem.Name: TopModule :: ModName -> ModPath
- Cryptol.ModuleSystem.Name: UserName :: NameSource
- Cryptol.ModuleSystem.Name: [primDecls] :: PrimMap -> Map PrimIdent Name
- Cryptol.ModuleSystem.Name: [primTypes] :: PrimMap -> Map PrimIdent Name
- Cryptol.ModuleSystem.Name: asLocal :: Namespace -> Name -> Name
- Cryptol.ModuleSystem.Name: asOrigName :: Name -> Maybe OrigName
- Cryptol.ModuleSystem.Name: asPrim :: Name -> Maybe PrimIdent
- Cryptol.ModuleSystem.Name: class Monad m => FreshM m
- Cryptol.ModuleSystem.Name: cmpNameDisplay :: NameDisp -> Name -> Name -> Ordering
- Cryptol.ModuleSystem.Name: data ModPath
- Cryptol.ModuleSystem.Name: data Name
- Cryptol.ModuleSystem.Name: data NameInfo
- Cryptol.ModuleSystem.Name: data NameSource
- Cryptol.ModuleSystem.Name: data Namespace
- Cryptol.ModuleSystem.Name: data PrimMap
- Cryptol.ModuleSystem.Name: data Supply
- Cryptol.ModuleSystem.Name: data SupplyT m a
- Cryptol.ModuleSystem.Name: emptySupply :: Supply
- Cryptol.ModuleSystem.Name: freshNameFor :: ModPath -> Name -> Supply -> (Name, Supply)
- Cryptol.ModuleSystem.Name: instance (GHC.Base.Monoid i, Cryptol.ModuleSystem.Name.FreshM m) => Cryptol.ModuleSystem.Name.FreshM (MonadLib.WriterT i m)
- Cryptol.ModuleSystem.Name: instance Control.DeepSeq.NFData Cryptol.ModuleSystem.Name.Name
- Cryptol.ModuleSystem.Name: instance Control.DeepSeq.NFData Cryptol.ModuleSystem.Name.NameInfo
- Cryptol.ModuleSystem.Name: instance Control.DeepSeq.NFData Cryptol.ModuleSystem.Name.NameSource
- Cryptol.ModuleSystem.Name: instance Control.DeepSeq.NFData Cryptol.ModuleSystem.Name.PrimMap
- Cryptol.ModuleSystem.Name: instance Control.DeepSeq.NFData Cryptol.ModuleSystem.Name.Supply
- Cryptol.ModuleSystem.Name: instance Cryptol.ModuleSystem.Name.FreshM m => Cryptol.ModuleSystem.Name.FreshM (MonadLib.ExceptionT i m)
- Cryptol.ModuleSystem.Name: instance Cryptol.ModuleSystem.Name.FreshM m => Cryptol.ModuleSystem.Name.FreshM (MonadLib.ReaderT i m)
- Cryptol.ModuleSystem.Name: instance Cryptol.ModuleSystem.Name.FreshM m => Cryptol.ModuleSystem.Name.FreshM (MonadLib.StateT i m)
- Cryptol.ModuleSystem.Name: instance Cryptol.Utils.PP.PP Cryptol.ModuleSystem.Name.Name
- Cryptol.ModuleSystem.Name: instance Cryptol.Utils.PP.PPName Cryptol.ModuleSystem.Name.Name
- Cryptol.ModuleSystem.Name: instance GHC.Base.Monad m => Cryptol.ModuleSystem.Name.FreshM (Cryptol.ModuleSystem.Name.SupplyT m)
- Cryptol.ModuleSystem.Name: instance GHC.Base.Monad m => GHC.Base.Applicative (Cryptol.ModuleSystem.Name.SupplyT m)
- Cryptol.ModuleSystem.Name: instance GHC.Base.Monad m => GHC.Base.Functor (Cryptol.ModuleSystem.Name.SupplyT m)
- Cryptol.ModuleSystem.Name: instance GHC.Base.Monad m => GHC.Base.Monad (Cryptol.ModuleSystem.Name.SupplyT m)
- Cryptol.ModuleSystem.Name: instance GHC.Base.Semigroup Cryptol.ModuleSystem.Name.PrimMap
- Cryptol.ModuleSystem.Name: instance GHC.Classes.Eq Cryptol.ModuleSystem.Name.Name
- Cryptol.ModuleSystem.Name: instance GHC.Classes.Eq Cryptol.ModuleSystem.Name.NameSource
- Cryptol.ModuleSystem.Name: instance GHC.Classes.Ord Cryptol.ModuleSystem.Name.Name
- Cryptol.ModuleSystem.Name: instance GHC.Generics.Generic Cryptol.ModuleSystem.Name.Name
- Cryptol.ModuleSystem.Name: instance GHC.Generics.Generic Cryptol.ModuleSystem.Name.NameInfo
- Cryptol.ModuleSystem.Name: instance GHC.Generics.Generic Cryptol.ModuleSystem.Name.NameSource
- Cryptol.ModuleSystem.Name: instance GHC.Generics.Generic Cryptol.ModuleSystem.Name.PrimMap
- Cryptol.ModuleSystem.Name: instance GHC.Generics.Generic Cryptol.ModuleSystem.Name.Supply
- Cryptol.ModuleSystem.Name: instance GHC.Show.Show Cryptol.ModuleSystem.Name.Name
- Cryptol.ModuleSystem.Name: instance GHC.Show.Show Cryptol.ModuleSystem.Name.NameInfo
- Cryptol.ModuleSystem.Name: instance GHC.Show.Show Cryptol.ModuleSystem.Name.NameSource
- Cryptol.ModuleSystem.Name: instance GHC.Show.Show Cryptol.ModuleSystem.Name.PrimMap
- Cryptol.ModuleSystem.Name: instance GHC.Show.Show Cryptol.ModuleSystem.Name.Supply
- Cryptol.ModuleSystem.Name: instance MonadLib.BaseM m n => MonadLib.BaseM (Cryptol.ModuleSystem.Name.SupplyT m) n
- Cryptol.ModuleSystem.Name: instance MonadLib.MonadT Cryptol.ModuleSystem.Name.SupplyT
- Cryptol.ModuleSystem.Name: instance MonadLib.RunM m (a, Cryptol.ModuleSystem.Name.Supply) r => MonadLib.RunM (Cryptol.ModuleSystem.Name.SupplyT m) a (Cryptol.ModuleSystem.Name.Supply -> r)
- Cryptol.ModuleSystem.Name: liftSupply :: FreshM m => (Supply -> (a, Supply)) -> m a
- Cryptol.ModuleSystem.Name: lookupPrimDecl :: PrimIdent -> PrimMap -> Name
- Cryptol.ModuleSystem.Name: lookupPrimType :: PrimIdent -> PrimMap -> Name
- Cryptol.ModuleSystem.Name: mapNameIdent :: (Ident -> Ident) -> Name -> Name
- Cryptol.ModuleSystem.Name: mkDeclared :: Namespace -> ModPath -> NameSource -> Ident -> Maybe Fixity -> Range -> Supply -> (Name, Supply)
- Cryptol.ModuleSystem.Name: mkLocal :: Namespace -> Ident -> Range -> Supply -> (Name, Supply)
- Cryptol.ModuleSystem.Name: mkModParam :: ModPath -> Ident -> Range -> Name -> Supply -> (Name, Supply)
- Cryptol.ModuleSystem.Name: nameFixity :: Name -> Maybe Fixity
- Cryptol.ModuleSystem.Name: nameIdent :: Name -> Ident
- Cryptol.ModuleSystem.Name: nameInfo :: Name -> NameInfo
- Cryptol.ModuleSystem.Name: nameLoc :: Name -> Range
- Cryptol.ModuleSystem.Name: nameModPath :: Name -> ModPath
- Cryptol.ModuleSystem.Name: nameModPathMaybe :: Name -> Maybe ModPath
- Cryptol.ModuleSystem.Name: nameNamespace :: Name -> Namespace
- Cryptol.ModuleSystem.Name: nameToDefPName :: Name -> PName
- Cryptol.ModuleSystem.Name: nameTopModule :: Name -> ModName
- Cryptol.ModuleSystem.Name: nameTopModuleMaybe :: Name -> Maybe ModName
- Cryptol.ModuleSystem.Name: nameUnique :: Name -> Int
- Cryptol.ModuleSystem.Name: nextUnique :: Supply -> (Int, Supply)
- Cryptol.ModuleSystem.Name: nextUniqueM :: FreshM m => m Int
- Cryptol.ModuleSystem.Name: ppLocName :: Name -> Doc
- Cryptol.ModuleSystem.Name: runSupply :: Supply -> (forall m. FreshM m => m a) -> (a, Supply)
- Cryptol.ModuleSystem.Name: runSupplyT :: Monad m => Supply -> SupplyT m a -> m (a, Supply)
- Cryptol.ModuleSystem.Names: Ambig :: Set Name -> Names
- Cryptol.ModuleSystem.Names: One :: Name -> Names
- Cryptol.ModuleSystem.Names: anyOne :: Names -> Name
- Cryptol.ModuleSystem.Names: data Names
- Cryptol.ModuleSystem.Names: diffNames :: Names -> Names -> Maybe Names
- Cryptol.ModuleSystem.Names: filterNames :: (Name -> Bool) -> Names -> Maybe Names
- Cryptol.ModuleSystem.Names: instance Control.DeepSeq.NFData Cryptol.ModuleSystem.Names.Names
- Cryptol.ModuleSystem.Names: instance GHC.Base.Semigroup Cryptol.ModuleSystem.Names.Names
- Cryptol.ModuleSystem.Names: instance GHC.Generics.Generic Cryptol.ModuleSystem.Names.Names
- Cryptol.ModuleSystem.Names: instance GHC.Show.Show Cryptol.ModuleSystem.Names.Names
- Cryptol.ModuleSystem.Names: mapNames :: (Name -> Name) -> Names -> Names
- Cryptol.ModuleSystem.Names: namesFromSet :: Set Name -> Names
- Cryptol.ModuleSystem.Names: namesToList :: Names -> [Name]
- Cryptol.ModuleSystem.Names: travNames :: Applicative f => (Name -> f Name) -> Names -> f Names
- Cryptol.ModuleSystem.Names: unionManyNames :: [Names] -> Maybe Names
- Cryptol.ModuleSystem.NamingEnv: filterPNames :: (PName -> Bool) -> NamingEnv -> NamingEnv
- Cryptol.ModuleSystem.NamingEnv: filterUNames :: (Name -> Bool) -> NamingEnv -> NamingEnv
- Cryptol.ModuleSystem.NamingEnv: findAmbig :: NamingEnv -> [[Name]]
- Cryptol.ModuleSystem.NamingEnv: findShadowing :: NamingEnv -> NamingEnv -> [(PName, Name, [Name])]
- Cryptol.ModuleSystem.NamingEnv: forceUnambig :: NamingEnv -> NamingEnv
- Cryptol.ModuleSystem.NamingEnv: interpImportEnv :: ImportG name -> NamingEnv -> NamingEnv
- Cryptol.ModuleSystem.NamingEnv: isEmptyNamingEnv :: NamingEnv -> Bool
- Cryptol.ModuleSystem.NamingEnv: lookupListNS :: Namespace -> PName -> NamingEnv -> [Name]
- Cryptol.ModuleSystem.NamingEnv: lookupNS :: Namespace -> PName -> NamingEnv -> Maybe Names
- Cryptol.ModuleSystem.NamingEnv: mapNamingEnv :: (Name -> Name) -> NamingEnv -> NamingEnv
- Cryptol.ModuleSystem.NamingEnv: modParamNamesNamingEnv :: ModParamNames -> NamingEnv
- Cryptol.ModuleSystem.NamingEnv: modParamNamingEnv :: ModParam -> NamingEnv
- Cryptol.ModuleSystem.NamingEnv: namespaceMap :: Namespace -> NamingEnv -> Map PName Names
- Cryptol.ModuleSystem.NamingEnv: namingEnvFromNames :: Set Name -> NamingEnv
- Cryptol.ModuleSystem.NamingEnv: namingEnvNames :: NamingEnv -> Set Name
- Cryptol.ModuleSystem.NamingEnv: qualify :: ModName -> NamingEnv -> NamingEnv
- Cryptol.ModuleSystem.NamingEnv: shadowing :: NamingEnv -> NamingEnv -> NamingEnv
- Cryptol.ModuleSystem.NamingEnv: singletonNS :: Namespace -> PName -> Name -> NamingEnv
- Cryptol.ModuleSystem.NamingEnv: toNameDisp :: NamingEnv -> NameDisp
- Cryptol.ModuleSystem.NamingEnv: toPrimMap :: NamingEnv -> PrimMap
- Cryptol.ModuleSystem.NamingEnv: travNamingEnv :: Applicative f => (Name -> f Name) -> NamingEnv -> f NamingEnv
- Cryptol.ModuleSystem.NamingEnv: unqualifiedEnv :: IfaceDecls -> NamingEnv
- Cryptol.ModuleSystem.NamingEnv: visibleNames :: NamingEnv -> Map Namespace (Set Name)
- Cryptol.ModuleSystem.NamingEnv: without :: NamingEnv -> NamingEnv -> NamingEnv
- Cryptol.ModuleSystem.NamingEnv: zipByTextName :: NamingEnv -> NamingEnv -> Map Name Name
- Cryptol.ModuleSystem.NamingEnv.Types: NamingEnv :: Map Namespace (Map PName Names) -> NamingEnv
- Cryptol.ModuleSystem.NamingEnv.Types: consToValues :: NamingEnv -> NamingEnv
- Cryptol.ModuleSystem.NamingEnv.Types: instance Control.DeepSeq.NFData Cryptol.ModuleSystem.NamingEnv.Types.NamingEnv
- Cryptol.ModuleSystem.NamingEnv.Types: instance Cryptol.Utils.PP.PP Cryptol.ModuleSystem.NamingEnv.Types.NamingEnv
- Cryptol.ModuleSystem.NamingEnv.Types: instance GHC.Base.Monoid Cryptol.ModuleSystem.NamingEnv.Types.NamingEnv
- Cryptol.ModuleSystem.NamingEnv.Types: instance GHC.Base.Semigroup Cryptol.ModuleSystem.NamingEnv.Types.NamingEnv
- Cryptol.ModuleSystem.NamingEnv.Types: instance GHC.Generics.Generic Cryptol.ModuleSystem.NamingEnv.Types.NamingEnv
- Cryptol.ModuleSystem.NamingEnv.Types: instance GHC.Show.Show Cryptol.ModuleSystem.NamingEnv.Types.NamingEnv
- Cryptol.ModuleSystem.NamingEnv.Types: newtype NamingEnv
- Cryptol.ModuleSystem.Renamer: FixityError :: Located Name -> Fixity -> Located Name -> Fixity -> RenamerError
- Cryptol.ModuleSystem.Renamer: InModule :: Maybe ModPath -> a -> InModule a
- Cryptol.ModuleSystem.Renamer: InvalidDependency :: [DepName] -> RenamerError
- Cryptol.ModuleSystem.Renamer: InvalidFunctorImport :: ImpName Name -> RenamerError
- Cryptol.ModuleSystem.Renamer: ModuleKindMismatch :: Range -> ImpName Name -> ModKind -> ModKind -> RenamerError
- Cryptol.ModuleSystem.Renamer: MultipleModParams :: Ident -> [Range] -> RenamerError
- Cryptol.ModuleSystem.Renamer: MultipleSyms :: Located PName -> [Name] -> RenamerError
- Cryptol.ModuleSystem.Renamer: NameBind :: NameType
- Cryptol.ModuleSystem.Renamer: NameUse :: NameType
- Cryptol.ModuleSystem.Renamer: OverlappingRecordUpdate :: Located [Selector] -> Located [Selector] -> RenamerError
- Cryptol.ModuleSystem.Renamer: OverlappingSyms :: [Name] -> RenamerError
- Cryptol.ModuleSystem.Renamer: PrefixAssocChanged :: PrefixOp -> Expr Name -> Located Name -> Fixity -> Expr Name -> RenamerWarning
- Cryptol.ModuleSystem.Renamer: RenamedModule :: Module Name -> NamingEnv -> IfaceDecls -> RenamedModule
- Cryptol.ModuleSystem.Renamer: RenamerInfo :: Supply -> ModPath -> NamingEnv -> Map ModName (Either ModParamNames Iface) -> RenamerInfo
- Cryptol.ModuleSystem.Renamer: SymbolShadowed :: PName -> Name -> [Name] -> RenamerWarning
- Cryptol.ModuleSystem.Renamer: UnboundName :: Namespace -> Located PName -> RenamerError
- Cryptol.ModuleSystem.Renamer: UnexpectedNest :: Range -> PName -> RenamerError
- Cryptol.ModuleSystem.Renamer: UnusedName :: Name -> RenamerWarning
- Cryptol.ModuleSystem.Renamer: WrongNamespace :: Namespace -> Namespace -> Located PName -> RenamerError
- Cryptol.ModuleSystem.Renamer: [renContext] :: RenamerInfo -> ModPath
- Cryptol.ModuleSystem.Renamer: [renEnv] :: RenamerInfo -> NamingEnv
- Cryptol.ModuleSystem.Renamer: [renIfaces] :: RenamerInfo -> Map ModName (Either ModParamNames Iface)
- Cryptol.ModuleSystem.Renamer: [renSupply] :: RenamerInfo -> Supply
- Cryptol.ModuleSystem.Renamer: [rmDefines] :: RenamedModule -> NamingEnv
- Cryptol.ModuleSystem.Renamer: [rmImported] :: RenamedModule -> IfaceDecls
- Cryptol.ModuleSystem.Renamer: [rmModule] :: RenamedModule -> Module Name
- Cryptol.ModuleSystem.Renamer: class BindsNames a
- Cryptol.ModuleSystem.Renamer: class Rename f
- Cryptol.ModuleSystem.Renamer: data InModule a
- Cryptol.ModuleSystem.Renamer: data NameType
- Cryptol.ModuleSystem.Renamer: data NamingEnv
- Cryptol.ModuleSystem.Renamer: data RenameM a
- Cryptol.ModuleSystem.Renamer: data RenamedModule
- Cryptol.ModuleSystem.Renamer: data RenamerError
- Cryptol.ModuleSystem.Renamer: data RenamerInfo
- Cryptol.ModuleSystem.Renamer: data RenamerWarning
- Cryptol.ModuleSystem.Renamer: instance Cryptol.ModuleSystem.Renamer.Rename Cryptol.Parser.AST.Bind
- Cryptol.ModuleSystem.Renamer: instance Cryptol.ModuleSystem.Renamer.Rename Cryptol.Parser.AST.BindDef
- Cryptol.ModuleSystem.Renamer: instance Cryptol.ModuleSystem.Renamer.Rename Cryptol.Parser.AST.BindImpl
- Cryptol.ModuleSystem.Renamer: instance Cryptol.ModuleSystem.Renamer.Rename Cryptol.Parser.AST.CaseAlt
- Cryptol.ModuleSystem.Renamer: instance Cryptol.ModuleSystem.Renamer.Rename Cryptol.Parser.AST.Decl
- Cryptol.ModuleSystem.Renamer: instance Cryptol.ModuleSystem.Renamer.Rename Cryptol.Parser.AST.EnumDecl
- Cryptol.ModuleSystem.Renamer: instance Cryptol.ModuleSystem.Renamer.Rename Cryptol.Parser.AST.Expr
- Cryptol.ModuleSystem.Renamer: instance Cryptol.ModuleSystem.Renamer.Rename Cryptol.Parser.AST.FunDesc
- Cryptol.ModuleSystem.Renamer: instance Cryptol.ModuleSystem.Renamer.Rename Cryptol.Parser.AST.ImpName
- Cryptol.ModuleSystem.Renamer: instance Cryptol.ModuleSystem.Renamer.Rename Cryptol.Parser.AST.Match
- Cryptol.ModuleSystem.Renamer: instance Cryptol.ModuleSystem.Renamer.Rename Cryptol.Parser.AST.ModParam
- Cryptol.ModuleSystem.Renamer: instance Cryptol.ModuleSystem.Renamer.Rename Cryptol.Parser.AST.ModuleInstanceArg
- Cryptol.ModuleSystem.Renamer: instance Cryptol.ModuleSystem.Renamer.Rename Cryptol.Parser.AST.ModuleInstanceArgs
- Cryptol.ModuleSystem.Renamer: instance Cryptol.ModuleSystem.Renamer.Rename Cryptol.Parser.AST.ModuleInstanceNamedArg
- Cryptol.ModuleSystem.Renamer: instance Cryptol.ModuleSystem.Renamer.Rename Cryptol.Parser.AST.NestedModule
- Cryptol.ModuleSystem.Renamer: instance Cryptol.ModuleSystem.Renamer.Rename Cryptol.Parser.AST.Newtype
- Cryptol.ModuleSystem.Renamer: instance Cryptol.ModuleSystem.Renamer.Rename Cryptol.Parser.AST.ParameterFun
- Cryptol.ModuleSystem.Renamer: instance Cryptol.ModuleSystem.Renamer.Rename Cryptol.Parser.AST.ParameterType
- Cryptol.ModuleSystem.Renamer: instance Cryptol.ModuleSystem.Renamer.Rename Cryptol.Parser.AST.Pattern
- Cryptol.ModuleSystem.Renamer: instance Cryptol.ModuleSystem.Renamer.Rename Cryptol.Parser.AST.PrimType
- Cryptol.ModuleSystem.Renamer: instance Cryptol.ModuleSystem.Renamer.Rename Cryptol.Parser.AST.Prop
- Cryptol.ModuleSystem.Renamer: instance Cryptol.ModuleSystem.Renamer.Rename Cryptol.Parser.AST.PropGuardCase
- Cryptol.ModuleSystem.Renamer: instance Cryptol.ModuleSystem.Renamer.Rename Cryptol.Parser.AST.PropSyn
- Cryptol.ModuleSystem.Renamer: instance Cryptol.ModuleSystem.Renamer.Rename Cryptol.Parser.AST.Schema
- Cryptol.ModuleSystem.Renamer: instance Cryptol.ModuleSystem.Renamer.Rename Cryptol.Parser.AST.SigDecl
- Cryptol.ModuleSystem.Renamer: instance Cryptol.ModuleSystem.Renamer.Rename Cryptol.Parser.AST.TParam
- Cryptol.ModuleSystem.Renamer: instance Cryptol.ModuleSystem.Renamer.Rename Cryptol.Parser.AST.TopDecl
- Cryptol.ModuleSystem.Renamer: instance Cryptol.ModuleSystem.Renamer.Rename Cryptol.Parser.AST.TySyn
- Cryptol.ModuleSystem.Renamer: instance Cryptol.ModuleSystem.Renamer.Rename Cryptol.Parser.AST.Type
- Cryptol.ModuleSystem.Renamer: instance Cryptol.ModuleSystem.Renamer.Rename Cryptol.Parser.AST.TypeInst
- Cryptol.ModuleSystem.Renamer: instance Cryptol.ModuleSystem.Renamer.Rename Cryptol.Parser.AST.UpdField
- Cryptol.ModuleSystem.Renamer: instance Cryptol.Utils.PP.PP Cryptol.ModuleSystem.Renamer.RenamedModule
- Cryptol.ModuleSystem.Renamer: rename :: Rename f => f PName -> RenameM (f Name)
- Cryptol.ModuleSystem.Renamer: renameModule :: Module PName -> RenameM RenamedModule
- Cryptol.ModuleSystem.Renamer: renameTopDecls :: ModName -> [TopDecl PName] -> RenameM (NamingEnv, [TopDecl Name])
- Cryptol.ModuleSystem.Renamer: renameType :: NameType -> PName -> RenameM Name
- Cryptol.ModuleSystem.Renamer: renameVar :: NameType -> PName -> RenameM Name
- Cryptol.ModuleSystem.Renamer: runRenamer :: RenamerInfo -> RenameM a -> (Either [RenamerError] (a, Supply), [RenamerWarning])
- Cryptol.ModuleSystem.Renamer: shadowNames :: BindsNames env => env -> RenameM a -> RenameM a
- Cryptol.ModuleSystem.Renamer: shadowing :: NamingEnv -> NamingEnv -> NamingEnv
- Cryptol.ModuleSystem.Renamer.Error: AFunctor :: ModKind
- Cryptol.ModuleSystem.Renamer.Error: AModule :: ModKind
- Cryptol.ModuleSystem.Renamer.Error: ASignature :: ModKind
- Cryptol.ModuleSystem.Renamer.Error: ConstratintAt :: Range -> DepName
- Cryptol.ModuleSystem.Renamer.Error: FixityError :: Located Name -> Fixity -> Located Name -> Fixity -> RenamerError
- Cryptol.ModuleSystem.Renamer.Error: InvalidDependency :: [DepName] -> RenamerError
- Cryptol.ModuleSystem.Renamer.Error: InvalidFunctorImport :: ImpName Name -> RenamerError
- Cryptol.ModuleSystem.Renamer.Error: ModParamName :: Range -> Ident -> DepName
- Cryptol.ModuleSystem.Renamer.Error: ModPath :: ModPath -> DepName
- Cryptol.ModuleSystem.Renamer.Error: ModuleKindMismatch :: Range -> ImpName Name -> ModKind -> ModKind -> RenamerError
- Cryptol.ModuleSystem.Renamer.Error: MultipleModParams :: Ident -> [Range] -> RenamerError
- Cryptol.ModuleSystem.Renamer.Error: MultipleSyms :: Located PName -> [Name] -> RenamerError
- Cryptol.ModuleSystem.Renamer.Error: NamedThing :: Name -> DepName
- Cryptol.ModuleSystem.Renamer.Error: OverlappingRecordUpdate :: Located [Selector] -> Located [Selector] -> RenamerError
- Cryptol.ModuleSystem.Renamer.Error: OverlappingSyms :: [Name] -> RenamerError
- Cryptol.ModuleSystem.Renamer.Error: PrefixAssocChanged :: PrefixOp -> Expr Name -> Located Name -> Fixity -> Expr Name -> RenamerWarning
- Cryptol.ModuleSystem.Renamer.Error: SymbolShadowed :: PName -> Name -> [Name] -> RenamerWarning
- Cryptol.ModuleSystem.Renamer.Error: UnboundName :: Namespace -> Located PName -> RenamerError
- Cryptol.ModuleSystem.Renamer.Error: UnexpectedNest :: Range -> PName -> RenamerError
- Cryptol.ModuleSystem.Renamer.Error: UnusedName :: Name -> RenamerWarning
- Cryptol.ModuleSystem.Renamer.Error: WrongNamespace :: Namespace -> Namespace -> Located PName -> RenamerError
- Cryptol.ModuleSystem.Renamer.Error: data DepName
- Cryptol.ModuleSystem.Renamer.Error: data ModKind
- Cryptol.ModuleSystem.Renamer.Error: data RenamerError
- Cryptol.ModuleSystem.Renamer.Error: data RenamerWarning
- Cryptol.ModuleSystem.Renamer.Error: depNameLoc :: DepName -> Maybe Range
- Cryptol.ModuleSystem.Renamer.Error: instance Control.DeepSeq.NFData Cryptol.ModuleSystem.Renamer.Error.DepName
- Cryptol.ModuleSystem.Renamer.Error: instance Control.DeepSeq.NFData Cryptol.ModuleSystem.Renamer.Error.ModKind
- Cryptol.ModuleSystem.Renamer.Error: instance Control.DeepSeq.NFData Cryptol.ModuleSystem.Renamer.Error.RenamerError
- Cryptol.ModuleSystem.Renamer.Error: instance Control.DeepSeq.NFData Cryptol.ModuleSystem.Renamer.Error.RenamerWarning
- Cryptol.ModuleSystem.Renamer.Error: instance Cryptol.Utils.PP.PP Cryptol.ModuleSystem.Renamer.Error.DepName
- Cryptol.ModuleSystem.Renamer.Error: instance Cryptol.Utils.PP.PP Cryptol.ModuleSystem.Renamer.Error.ModKind
- Cryptol.ModuleSystem.Renamer.Error: instance Cryptol.Utils.PP.PP Cryptol.ModuleSystem.Renamer.Error.RenamerError
- Cryptol.ModuleSystem.Renamer.Error: instance Cryptol.Utils.PP.PP Cryptol.ModuleSystem.Renamer.Error.RenamerWarning
- Cryptol.ModuleSystem.Renamer.Error: instance GHC.Classes.Eq Cryptol.ModuleSystem.Renamer.Error.DepName
- Cryptol.ModuleSystem.Renamer.Error: instance GHC.Classes.Eq Cryptol.ModuleSystem.Renamer.Error.ModKind
- Cryptol.ModuleSystem.Renamer.Error: instance GHC.Classes.Eq Cryptol.ModuleSystem.Renamer.Error.RenamerError
- Cryptol.ModuleSystem.Renamer.Error: instance GHC.Classes.Eq Cryptol.ModuleSystem.Renamer.Error.RenamerWarning
- Cryptol.ModuleSystem.Renamer.Error: instance GHC.Classes.Ord Cryptol.ModuleSystem.Renamer.Error.DepName
- Cryptol.ModuleSystem.Renamer.Error: instance GHC.Classes.Ord Cryptol.ModuleSystem.Renamer.Error.ModKind
- Cryptol.ModuleSystem.Renamer.Error: instance GHC.Classes.Ord Cryptol.ModuleSystem.Renamer.Error.RenamerError
- Cryptol.ModuleSystem.Renamer.Error: instance GHC.Classes.Ord Cryptol.ModuleSystem.Renamer.Error.RenamerWarning
- Cryptol.ModuleSystem.Renamer.Error: instance GHC.Generics.Generic Cryptol.ModuleSystem.Renamer.Error.DepName
- Cryptol.ModuleSystem.Renamer.Error: instance GHC.Generics.Generic Cryptol.ModuleSystem.Renamer.Error.ModKind
- Cryptol.ModuleSystem.Renamer.Error: instance GHC.Generics.Generic Cryptol.ModuleSystem.Renamer.Error.RenamerError
- Cryptol.ModuleSystem.Renamer.Error: instance GHC.Generics.Generic Cryptol.ModuleSystem.Renamer.Error.RenamerWarning
- Cryptol.ModuleSystem.Renamer.Error: instance GHC.Show.Show Cryptol.ModuleSystem.Renamer.Error.DepName
- Cryptol.ModuleSystem.Renamer.Error: instance GHC.Show.Show Cryptol.ModuleSystem.Renamer.Error.ModKind
- Cryptol.ModuleSystem.Renamer.Error: instance GHC.Show.Show Cryptol.ModuleSystem.Renamer.Error.RenamerError
- Cryptol.ModuleSystem.Renamer.Error: instance GHC.Show.Show Cryptol.ModuleSystem.Renamer.Error.RenamerWarning
- Cryptol.ModuleSystem.Renamer.ImplicitImports: addImplicitNestedImports :: [TopDecl PName] -> [TopDecl PName]
- Cryptol.ModuleSystem.Renamer.Imports: AFunctor :: ModKind
- Cryptol.ModuleSystem.Renamer.Imports: AModule :: ModKind
- Cryptol.ModuleSystem.Renamer.Imports: ASignature :: ModKind
- Cryptol.ModuleSystem.Renamer.Imports: ResolvedModule :: NamingEnv -> !Set Name -> ModKind -> Set Name -> imps -> ResolvedModule imps
- Cryptol.ModuleSystem.Renamer.Imports: [rmodDefines] :: ResolvedModule imps -> NamingEnv
- Cryptol.ModuleSystem.Renamer.Imports: [rmodImports] :: ResolvedModule imps -> imps
- Cryptol.ModuleSystem.Renamer.Imports: [rmodKind] :: ResolvedModule imps -> ModKind
- Cryptol.ModuleSystem.Renamer.Imports: [rmodNested] :: ResolvedModule imps -> Set Name
- Cryptol.ModuleSystem.Renamer.Imports: [rmodPublic] :: ResolvedModule imps -> !Set Name
- Cryptol.ModuleSystem.Renamer.Imports: data ModKind
- Cryptol.ModuleSystem.Renamer.Imports: data ResolvedModule imps
- Cryptol.ModuleSystem.Renamer.Imports: instance Cryptol.ModuleSystem.Renamer.Imports.HasCurScope ()
- Cryptol.ModuleSystem.Renamer.Imports: instance Cryptol.ModuleSystem.Renamer.Imports.HasCurScope Cryptol.ModuleSystem.Renamer.Imports.Todo
- Cryptol.ModuleSystem.Renamer.Imports: resolveImports :: (ImpName Name -> Mod ()) -> TopDef -> Supply -> (Map (ImpName Name) ResolvedLocal, Supply)
- Cryptol.ModuleSystem.Renamer.Imports: type ResolvedExt = ResolvedModule ()
- Cryptol.ModuleSystem.Renamer.Imports: type ResolvedLocal = ResolvedModule NamingEnv
- Cryptol.ModuleSystem.Renamer.Monad: CheckAll :: EnvCheck
- Cryptol.ModuleSystem.Renamer.Monad: CheckNone :: EnvCheck
- Cryptol.ModuleSystem.Renamer.Monad: CheckOverlap :: EnvCheck
- Cryptol.ModuleSystem.Renamer.Monad: NameBind :: NameType
- Cryptol.ModuleSystem.Renamer.Monad: NameUse :: NameType
- Cryptol.ModuleSystem.Renamer.Monad: RO :: Range -> NamingEnv -> Map ModName (Maybe Iface, Map (ImpName Name) (Mod ())) -> ModPath -> Map ModPath Name -> Map (ImpName Name) ResolvedLocal -> Map Ident RenModParam -> Map Name DepName -> RO
- Cryptol.ModuleSystem.Renamer.Monad: RW :: ![RenamerWarning] -> !Set RenamerError -> !Supply -> !Map Name Int -> Set Name -> Map DepName (Set Name) -> !IfaceDecls -> RW
- Cryptol.ModuleSystem.Renamer.Monad: RenModParam :: Ident -> Range -> ImpName Name -> Map Name Name -> RenModParam
- Cryptol.ModuleSystem.Renamer.Monad: RenameM :: ReaderT RO (StateT RW Lift) a -> RenameM a
- Cryptol.ModuleSystem.Renamer.Monad: RenamerInfo :: Supply -> ModPath -> NamingEnv -> Map ModName (Either ModParamNames Iface) -> RenamerInfo
- Cryptol.ModuleSystem.Renamer.Monad: [renContext] :: RenamerInfo -> ModPath
- Cryptol.ModuleSystem.Renamer.Monad: [renEnv] :: RenamerInfo -> NamingEnv
- Cryptol.ModuleSystem.Renamer.Monad: [renIfaces] :: RenamerInfo -> Map ModName (Either ModParamNames Iface)
- Cryptol.ModuleSystem.Renamer.Monad: [renModParamInstance] :: RenModParam -> Map Name Name
- Cryptol.ModuleSystem.Renamer.Monad: [renModParamName] :: RenModParam -> Ident
- Cryptol.ModuleSystem.Renamer.Monad: [renModParamRange] :: RenModParam -> Range
- Cryptol.ModuleSystem.Renamer.Monad: [renModParamSig] :: RenModParam -> ImpName Name
- Cryptol.ModuleSystem.Renamer.Monad: [renSupply] :: RenamerInfo -> Supply
- Cryptol.ModuleSystem.Renamer.Monad: [roCurMod] :: RO -> ModPath
- Cryptol.ModuleSystem.Renamer.Monad: [roExternal] :: RO -> Map ModName (Maybe Iface, Map (ImpName Name) (Mod ()))
- Cryptol.ModuleSystem.Renamer.Monad: [roFromModParam] :: RO -> Map Name DepName
- Cryptol.ModuleSystem.Renamer.Monad: [roLoc] :: RO -> Range
- Cryptol.ModuleSystem.Renamer.Monad: [roModParams] :: RO -> Map Ident RenModParam
- Cryptol.ModuleSystem.Renamer.Monad: [roNames] :: RO -> NamingEnv
- Cryptol.ModuleSystem.Renamer.Monad: [roNestedMods] :: RO -> Map ModPath Name
- Cryptol.ModuleSystem.Renamer.Monad: [roResolvedModules] :: RO -> Map (ImpName Name) ResolvedLocal
- Cryptol.ModuleSystem.Renamer.Monad: [rwCurrentDeps] :: RW -> Set Name
- Cryptol.ModuleSystem.Renamer.Monad: [rwDepGraph] :: RW -> Map DepName (Set Name)
- Cryptol.ModuleSystem.Renamer.Monad: [rwErrors] :: RW -> !Set RenamerError
- Cryptol.ModuleSystem.Renamer.Monad: [rwExternalDeps] :: RW -> !IfaceDecls
- Cryptol.ModuleSystem.Renamer.Monad: [rwNameUseCount] :: RW -> !Map Name Int
- Cryptol.ModuleSystem.Renamer.Monad: [rwSupply] :: RW -> !Supply
- Cryptol.ModuleSystem.Renamer.Monad: [rwWarnings] :: RW -> ![RenamerWarning]
- Cryptol.ModuleSystem.Renamer.Monad: [unRenameM] :: RenameM a -> ReaderT RO (StateT RW Lift) a
- Cryptol.ModuleSystem.Renamer.Monad: addDep :: Name -> RenameM ()
- Cryptol.ModuleSystem.Renamer.Monad: checkIsModule :: Range -> ImpName Name -> ModKind -> RenameM ()
- Cryptol.ModuleSystem.Renamer.Monad: checkOverlap :: NamingEnv -> RenameM NamingEnv
- Cryptol.ModuleSystem.Renamer.Monad: checkShadowing :: NamingEnv -> NamingEnv -> RenameM ()
- Cryptol.ModuleSystem.Renamer.Monad: collectIfaceDeps :: RenameM a -> RenameM (IfaceDecls, a)
- Cryptol.ModuleSystem.Renamer.Monad: curLoc :: RenameM Range
- Cryptol.ModuleSystem.Renamer.Monad: data EnvCheck
- Cryptol.ModuleSystem.Renamer.Monad: data NameType
- Cryptol.ModuleSystem.Renamer.Monad: data RO
- Cryptol.ModuleSystem.Renamer.Monad: data RW
- Cryptol.ModuleSystem.Renamer.Monad: data RenModParam
- Cryptol.ModuleSystem.Renamer.Monad: data RenamerInfo
- Cryptol.ModuleSystem.Renamer.Monad: depGroup :: RenameM a -> RenameM (a, Map DepName (Set Name))
- Cryptol.ModuleSystem.Renamer.Monad: depsOf :: DepName -> RenameM a -> RenameM a
- Cryptol.ModuleSystem.Renamer.Monad: foldLoop :: [a] -> b -> (a -> b -> b) -> b
- Cryptol.ModuleSystem.Renamer.Monad: getCurMod :: RenameM ModPath
- Cryptol.ModuleSystem.Renamer.Monad: getExternal :: RenameM (ImpName Name -> Mod ())
- Cryptol.ModuleSystem.Renamer.Monad: getExternalMod :: ImpName Name -> RenameM (Mod ())
- Cryptol.ModuleSystem.Renamer.Monad: getLocalModParamDeps :: RenameM (Map Ident DepName)
- Cryptol.ModuleSystem.Renamer.Monad: getModParam :: Ident -> RenameM RenModParam
- Cryptol.ModuleSystem.Renamer.Monad: getNamesFromModParams :: RenameM (Map Name DepName)
- Cryptol.ModuleSystem.Renamer.Monad: getNamingEnv :: RenameM NamingEnv
- Cryptol.ModuleSystem.Renamer.Monad: getTopModuleIface :: ImpName Name -> RenameM (Maybe Iface)
- Cryptol.ModuleSystem.Renamer.Monad: instance (GHC.Base.Semigroup a, GHC.Base.Monoid a) => GHC.Base.Monoid (Cryptol.ModuleSystem.Renamer.Monad.RenameM a)
- Cryptol.ModuleSystem.Renamer.Monad: instance Cryptol.ModuleSystem.Name.FreshM Cryptol.ModuleSystem.Renamer.Monad.RenameM
- Cryptol.ModuleSystem.Renamer.Monad: instance GHC.Base.Applicative Cryptol.ModuleSystem.Renamer.Monad.RenameM
- Cryptol.ModuleSystem.Renamer.Monad: instance GHC.Base.Functor Cryptol.ModuleSystem.Renamer.Monad.RenameM
- Cryptol.ModuleSystem.Renamer.Monad: instance GHC.Base.Monad Cryptol.ModuleSystem.Renamer.Monad.RenameM
- Cryptol.ModuleSystem.Renamer.Monad: instance GHC.Base.Semigroup a => GHC.Base.Semigroup (Cryptol.ModuleSystem.Renamer.Monad.RenameM a)
- Cryptol.ModuleSystem.Renamer.Monad: instance GHC.Classes.Eq Cryptol.ModuleSystem.Renamer.Monad.EnvCheck
- Cryptol.ModuleSystem.Renamer.Monad: instance GHC.Show.Show Cryptol.ModuleSystem.Renamer.Monad.EnvCheck
- Cryptol.ModuleSystem.Renamer.Monad: located :: a -> RenameM (Located a)
- Cryptol.ModuleSystem.Renamer.Monad: lookupDefines :: ImpName Name -> RenameM NamingEnv
- Cryptol.ModuleSystem.Renamer.Monad: lookupDefinesAndSubs :: ImpName Name -> RenameM (NamingEnv, Set Name)
- Cryptol.ModuleSystem.Renamer.Monad: lookupModuleThing :: ImpName Name -> RenameM (Either ResolvedLocal (Mod ()))
- Cryptol.ModuleSystem.Renamer.Monad: lookupResolved :: ImpName Name -> RenameM ResolvedLocal
- Cryptol.ModuleSystem.Renamer.Monad: nestedModuleOrig :: ModPath -> RenameM (Maybe Name)
- Cryptol.ModuleSystem.Renamer.Monad: newtype RenameM a
- Cryptol.ModuleSystem.Renamer.Monad: recordError :: RenamerError -> RenameM ()
- Cryptol.ModuleSystem.Renamer.Monad: recordImport :: Range -> ImpName Name -> RenameM ()
- Cryptol.ModuleSystem.Renamer.Monad: recordUse :: Name -> RenameM ()
- Cryptol.ModuleSystem.Renamer.Monad: recordWarning :: RenamerWarning -> RenameM ()
- Cryptol.ModuleSystem.Renamer.Monad: runRenamer :: RenamerInfo -> RenameM a -> (Either [RenamerError] (a, Supply), [RenamerWarning])
- Cryptol.ModuleSystem.Renamer.Monad: setCurMod :: ModPath -> RenameM a -> RenameM a
- Cryptol.ModuleSystem.Renamer.Monad: setModParams :: [RenModParam] -> RenameM a -> RenameM a
- Cryptol.ModuleSystem.Renamer.Monad: setNestedModule :: Map ModPath Name -> RenameM a -> RenameM a
- Cryptol.ModuleSystem.Renamer.Monad: setResolvedLocals :: Map (ImpName Name) ResolvedLocal -> RenameM a -> RenameM a
- Cryptol.ModuleSystem.Renamer.Monad: shadowNames :: BindsNames env => env -> RenameM a -> RenameM a
- Cryptol.ModuleSystem.Renamer.Monad: shadowNames' :: BindsNames env => EnvCheck -> env -> RenameM a -> RenameM a
- Cryptol.ModuleSystem.Renamer.Monad: warnUnused :: ModPath -> NamingEnv -> RW -> [RenamerWarning]
- Cryptol.ModuleSystem.Renamer.Monad: withLoc :: HasLoc loc => loc -> RenameM a -> RenameM a
- Cryptol.Parser: Config :: !FilePath -> !Position -> !Layout -> PreProc -> [FilePath] -> Bool -> Config
- Cryptol.Parser: HappyError :: FilePath -> Located Token -> ParseError
- Cryptol.Parser: HappyErrorMsg :: Range -> [String] -> ParseError
- Cryptol.Parser: HappyOutOfTokens :: FilePath -> Position -> ParseError
- Cryptol.Parser: HappyUnexpected :: FilePath -> Maybe (Located Token) -> String -> ParseError
- Cryptol.Parser: LaTeX :: PreProc
- Cryptol.Parser: Layout :: Layout
- Cryptol.Parser: Markdown :: PreProc
- Cryptol.Parser: NoLayout :: Layout
- Cryptol.Parser: None :: PreProc
- Cryptol.Parser: RST :: PreProc
- Cryptol.Parser: [cfgAutoInclude] :: Config -> [FilePath]
- Cryptol.Parser: [cfgLayout] :: Config -> !Layout
- Cryptol.Parser: [cfgModuleScope] :: Config -> Bool
- Cryptol.Parser: [cfgPreProc] :: Config -> PreProc
- Cryptol.Parser: [cfgSource] :: Config -> !FilePath
- Cryptol.Parser: [cfgStart] :: Config -> !Position
- Cryptol.Parser: data Config
- Cryptol.Parser: data Layout
- Cryptol.Parser: data ParseError
- Cryptol.Parser: data PreProc
- Cryptol.Parser: defaultConfig :: Config
- Cryptol.Parser: guessPreProc :: FilePath -> PreProc
- Cryptol.Parser: parseDecl :: Text -> Either ParseError (Decl PName)
- Cryptol.Parser: parseDeclWith :: Config -> Text -> Either ParseError (Decl PName)
- Cryptol.Parser: parseDecls :: Text -> Either ParseError [Decl PName]
- Cryptol.Parser: parseDeclsWith :: Config -> Text -> Either ParseError [Decl PName]
- Cryptol.Parser: parseExpr :: Text -> Either ParseError (Expr PName)
- Cryptol.Parser: parseExprWith :: Config -> Text -> Either ParseError (Expr PName)
- Cryptol.Parser: parseHelpName :: String -> Maybe PName
- Cryptol.Parser: parseImpName :: String -> Maybe (ImpName PName)
- Cryptol.Parser: parseLetDecl :: Text -> Either ParseError (Decl PName)
- Cryptol.Parser: parseLetDeclWith :: Config -> Text -> Either ParseError (Decl PName)
- Cryptol.Parser: parseModName :: String -> Maybe ModName
- Cryptol.Parser: parseModule :: Config -> Text -> Either ParseError [Module PName]
- Cryptol.Parser: parseProgram :: Layout -> Text -> Either ParseError (Program PName)
- Cryptol.Parser: parseProgramWith :: Config -> Text -> Either ParseError (Program PName)
- Cryptol.Parser: parseRepl :: Text -> Either ParseError (ReplInput PName)
- Cryptol.Parser: parseReplWith :: Config -> Text -> Either ParseError (ReplInput PName)
- Cryptol.Parser: parseSchema :: Text -> Either ParseError (Schema PName)
- Cryptol.Parser: parseSchemaWith :: Config -> Text -> Either ParseError (Schema PName)
- Cryptol.Parser: ppError :: ParseError -> Doc
- Cryptol.Parser.AST: AddParams :: ModuleInstanceArg name
- Cryptol.Parser.AST: BinFrac :: Text -> FracInfo
- Cryptol.Parser.AST: BinLit :: Text -> Int -> NumInfo
- Cryptol.Parser.AST: Bind :: Located name -> [Pattern name] -> Located (BindDef name) -> Maybe (Schema name) -> Bool -> Maybe Fixity -> [Pragma] -> Bool -> Maybe (Located Text) -> !ExportType -> Bind name
- Cryptol.Parser.AST: CType :: Type n -> Prop n
- Cryptol.Parser.AST: CaseAlt :: Pattern n -> Expr n -> CaseAlt n
- Cryptol.Parser.AST: DBind :: Bind name -> Decl name
- Cryptol.Parser.AST: DExpr :: Expr name -> BindImpl name
- Cryptol.Parser.AST: DFixity :: !Fixity -> [Located name] -> Decl name
- Cryptol.Parser.AST: DForeign :: Maybe (BindImpl name) -> BindDef name
- Cryptol.Parser.AST: DImpl :: BindImpl name -> BindDef name
- Cryptol.Parser.AST: DImport :: Located (ImportG (ImpName name)) -> TopDecl name
- Cryptol.Parser.AST: DInterfaceConstraint :: Maybe (Located Text) -> Located [Prop name] -> TopDecl name
- Cryptol.Parser.AST: DLocated :: Decl name -> Range -> Decl name
- Cryptol.Parser.AST: DModParam :: ModParam name -> TopDecl name
- Cryptol.Parser.AST: DModule :: TopLevel (NestedModule name) -> TopDecl name
- Cryptol.Parser.AST: DParamDecl :: Range -> Signature name -> TopDecl name
- Cryptol.Parser.AST: DParameterConstraint :: ParameterConstraint name -> ParamDecl name
- Cryptol.Parser.AST: DParameterDecl :: SigDecl name -> ParamDecl name
- Cryptol.Parser.AST: DParameterFun :: ParameterFun name -> ParamDecl name
- Cryptol.Parser.AST: DParameterType :: ParameterType name -> ParamDecl name
- Cryptol.Parser.AST: DPatBind :: Pattern name -> Expr name -> Decl name
- Cryptol.Parser.AST: DPragma :: [Located name] -> Pragma -> Decl name
- Cryptol.Parser.AST: DPrim :: BindDef name
- Cryptol.Parser.AST: DPrimType :: TopLevel (PrimType name) -> TopDecl name
- Cryptol.Parser.AST: DProp :: PropSyn name -> Decl name
- Cryptol.Parser.AST: DPropGuards :: [PropGuardCase name] -> BindImpl name
- Cryptol.Parser.AST: DRec :: [Bind name] -> Decl name
- Cryptol.Parser.AST: DSignature :: [Located name] -> Schema name -> Decl name
- Cryptol.Parser.AST: DType :: TySyn name -> Decl name
- Cryptol.Parser.AST: DecFrac :: Text -> FracInfo
- Cryptol.Parser.AST: DecLit :: Text -> NumInfo
- Cryptol.Parser.AST: Decl :: TopLevel (Decl name) -> TopDecl name
- Cryptol.Parser.AST: DefaultInstAnonArg :: [TopDecl name] -> ModuleInstanceArgs name
- Cryptol.Parser.AST: DefaultInstArg :: Located (ModuleInstanceArg name) -> ModuleInstanceArgs name
- Cryptol.Parser.AST: EApp :: Expr n -> Expr n -> Expr n
- Cryptol.Parser.AST: EAppT :: Expr n -> [TypeInst n] -> Expr n
- Cryptol.Parser.AST: ECChar :: Char -> Literal
- Cryptol.Parser.AST: ECFrac :: Rational -> FracInfo -> Literal
- Cryptol.Parser.AST: ECNum :: Integer -> NumInfo -> Literal
- Cryptol.Parser.AST: ECString :: String -> Literal
- Cryptol.Parser.AST: ECase :: Expr n -> [CaseAlt n] -> Expr n
- Cryptol.Parser.AST: EComp :: Expr n -> [[Match n]] -> Expr n
- Cryptol.Parser.AST: EFromTo :: Type n -> Maybe (Type n) -> Type n -> Maybe (Type n) -> Expr n
- Cryptol.Parser.AST: EFromToBy :: Bool -> Type n -> Type n -> Type n -> Maybe (Type n) -> Expr n
- Cryptol.Parser.AST: EFromToDownBy :: Bool -> Type n -> Type n -> Type n -> Maybe (Type n) -> Expr n
- Cryptol.Parser.AST: EFromToLessThan :: Type n -> Type n -> Maybe (Type n) -> Expr n
- Cryptol.Parser.AST: EFun :: FunDesc n -> [Pattern n] -> Expr n -> Expr n
- Cryptol.Parser.AST: EGenerate :: Expr n -> Expr n
- Cryptol.Parser.AST: EIf :: Expr n -> Expr n -> Expr n -> Expr n
- Cryptol.Parser.AST: EInfFrom :: Expr n -> Maybe (Expr n) -> Expr n
- Cryptol.Parser.AST: EInfix :: Expr n -> Located n -> Fixity -> Expr n -> Expr n
- Cryptol.Parser.AST: EList :: [Expr n] -> Expr n
- Cryptol.Parser.AST: ELit :: Literal -> Expr n
- Cryptol.Parser.AST: ELocated :: Expr n -> Range -> Expr n
- Cryptol.Parser.AST: EParens :: Expr n -> Expr n
- Cryptol.Parser.AST: EPrefix :: PrefixOp -> Expr n -> Expr n
- Cryptol.Parser.AST: ERecord :: Rec (Expr n) -> Expr n
- Cryptol.Parser.AST: ESel :: Expr n -> Selector -> Expr n
- Cryptol.Parser.AST: ESplit :: Expr n -> Expr n
- Cryptol.Parser.AST: ETuple :: [Expr n] -> Expr n
- Cryptol.Parser.AST: ETypeVal :: Type n -> Expr n
- Cryptol.Parser.AST: ETyped :: Expr n -> Type n -> Expr n
- Cryptol.Parser.AST: EUpd :: Maybe (Expr n) -> [UpdField n] -> Expr n
- Cryptol.Parser.AST: EVar :: n -> Expr n
- Cryptol.Parser.AST: EWhere :: Expr n -> [Decl n] -> Expr n
- Cryptol.Parser.AST: EmptyInput :: ReplInput name
- Cryptol.Parser.AST: EnumCon :: Located name -> [Type name] -> EnumCon name
- Cryptol.Parser.AST: EnumDecl :: Located name -> [TParam name] -> [TopLevel (EnumCon name)] -> EnumDecl name
- Cryptol.Parser.AST: ExpandPropGuards :: String -> Pass
- Cryptol.Parser.AST: ExprInput :: Expr name -> ReplInput name
- Cryptol.Parser.AST: FCError :: FixityCmp
- Cryptol.Parser.AST: FCLeft :: FixityCmp
- Cryptol.Parser.AST: FCRight :: FixityCmp
- Cryptol.Parser.AST: Fixity :: !Assoc -> !Int -> Fixity
- Cryptol.Parser.AST: Forall :: [TParam n] -> [Prop n] -> Type n -> Maybe Range -> Schema n
- Cryptol.Parser.AST: FunDesc :: Maybe n -> Int -> FunDesc n
- Cryptol.Parser.AST: FunctorInstance :: Located (ImpName name) -> ModuleInstanceArgs name -> ModuleInstance name -> ModuleDefinition name
- Cryptol.Parser.AST: HexFrac :: Text -> FracInfo
- Cryptol.Parser.AST: HexLit :: Text -> Int -> NumInfo
- Cryptol.Parser.AST: Hiding :: [Ident] -> ImportSpec
- Cryptol.Parser.AST: ImpNested :: name -> ImpName name
- Cryptol.Parser.AST: ImpTop :: ModName -> ImpName name
- Cryptol.Parser.AST: Import :: !mname -> Maybe ModName -> Maybe ImportSpec -> !Maybe (ModuleInstanceArgs PName) -> Maybe (Located Text) -> ImportG mname
- Cryptol.Parser.AST: Include :: Located FilePath -> TopDecl name
- Cryptol.Parser.AST: InterfaceModule :: Signature name -> ModuleDefinition name
- Cryptol.Parser.AST: KFun :: Kind -> Kind -> Kind
- Cryptol.Parser.AST: KNum :: Kind
- Cryptol.Parser.AST: KProp :: Kind
- Cryptol.Parser.AST: KType :: Kind
- Cryptol.Parser.AST: LeftAssoc :: Assoc
- Cryptol.Parser.AST: LetInput :: [Decl name] -> ReplInput name
- Cryptol.Parser.AST: ListSel :: Int -> Maybe Int -> Selector
- Cryptol.Parser.AST: Located :: !Range -> !a -> Located a
- Cryptol.Parser.AST: Match :: Pattern name -> Expr name -> Match name
- Cryptol.Parser.AST: MatchLet :: Bind name -> Match name
- Cryptol.Parser.AST: ModParam :: Located (ImpName name) -> Maybe ModName -> !Ident -> Maybe (Located Text) -> !Map name name -> ModParam name
- Cryptol.Parser.AST: Module :: Located mname -> ModuleDefinition name -> NamingEnv -> Maybe (Located Text) -> ModuleG mname name
- Cryptol.Parser.AST: ModuleArg :: ImpName name -> ModuleInstanceArg name
- Cryptol.Parser.AST: ModuleInstanceNamedArg :: Located Ident -> Located (ModuleInstanceArg name) -> ModuleInstanceNamedArg name
- Cryptol.Parser.AST: MonoValues :: Pass
- Cryptol.Parser.AST: Named :: Located Ident -> a -> Named a
- Cryptol.Parser.AST: NamedInst :: Named (Type name) -> TypeInst name
- Cryptol.Parser.AST: NamedInstArgs :: [ModuleInstanceNamedArg name] -> ModuleInstanceArgs name
- Cryptol.Parser.AST: NestedModule :: ModuleG name name -> NestedModule name
- Cryptol.Parser.AST: NewName :: !Pass -> !Int -> PName
- Cryptol.Parser.AST: Newtype :: Located name -> [TParam name] -> !name -> Rec (Type name) -> Newtype name
- Cryptol.Parser.AST: NoPat :: Pass
- Cryptol.Parser.AST: NonAssoc :: Assoc
- Cryptol.Parser.AST: NormalModule :: [TopDecl name] -> ModuleDefinition name
- Cryptol.Parser.AST: OctFrac :: Text -> FracInfo
- Cryptol.Parser.AST: OctLit :: Text -> Int -> NumInfo
- Cryptol.Parser.AST: Only :: [Ident] -> ImportSpec
- Cryptol.Parser.AST: PCon :: Located n -> [Pattern n] -> Pattern n
- Cryptol.Parser.AST: PList :: [Pattern n] -> Pattern n
- Cryptol.Parser.AST: PLocated :: Pattern n -> Range -> Pattern n
- Cryptol.Parser.AST: PRecord :: Rec (Pattern n) -> Pattern n
- Cryptol.Parser.AST: PSplit :: Pattern n -> Pattern n -> Pattern n
- Cryptol.Parser.AST: PTuple :: [Pattern n] -> Pattern n
- Cryptol.Parser.AST: PTyped :: Pattern n -> Type n -> Pattern n
- Cryptol.Parser.AST: PVar :: Located n -> Pattern n
- Cryptol.Parser.AST: PWild :: Pattern n
- Cryptol.Parser.AST: ParameterArg :: Ident -> ModuleInstanceArg name
- Cryptol.Parser.AST: ParameterConstraint :: [Located (Prop name)] -> Maybe (Located Text) -> ParameterConstraint name
- Cryptol.Parser.AST: ParameterFun :: Located name -> Schema name -> Maybe (Located Text) -> Maybe Fixity -> ParameterFun name
- Cryptol.Parser.AST: ParameterType :: Located name -> Kind -> Maybe (Located Text) -> Maybe Fixity -> !Int -> ParameterType name
- Cryptol.Parser.AST: PolyLit :: Int -> NumInfo
- Cryptol.Parser.AST: PosInst :: Type name -> TypeInst name
- Cryptol.Parser.AST: PragmaNote :: String -> Pragma
- Cryptol.Parser.AST: PragmaProperty :: Pragma
- Cryptol.Parser.AST: PrefixComplement :: PrefixOp
- Cryptol.Parser.AST: PrefixNeg :: PrefixOp
- Cryptol.Parser.AST: PrimType :: Located name -> Located Kind -> ([TParam name], [Prop name]) -> Maybe Fixity -> PrimType name
- Cryptol.Parser.AST: Private :: ExportType
- Cryptol.Parser.AST: Program :: [TopDecl name] -> Program name
- Cryptol.Parser.AST: PropGuardCase :: [Located (Prop name)] -> Expr name -> PropGuardCase name
- Cryptol.Parser.AST: PropSyn :: Located n -> Maybe Fixity -> [TParam n] -> [Prop n] -> PropSyn n
- Cryptol.Parser.AST: Public :: ExportType
- Cryptol.Parser.AST: Qual :: !ModName -> !Ident -> PName
- Cryptol.Parser.AST: RecordSel :: Ident -> Maybe [Ident] -> Selector
- Cryptol.Parser.AST: RightAssoc :: Assoc
- Cryptol.Parser.AST: SigPropSyn :: PropSyn name -> Maybe Text -> SigDecl name
- Cryptol.Parser.AST: SigTySyn :: TySyn name -> Maybe Text -> SigDecl name
- Cryptol.Parser.AST: Signature :: ![Located (ImportG (ImpName name))] -> [ParameterType name] -> [Located (Prop name)] -> [SigDecl name] -> [ParameterFun name] -> Signature name
- Cryptol.Parser.AST: TBit :: Type n
- Cryptol.Parser.AST: TChar :: Char -> Type n
- Cryptol.Parser.AST: TDEnum :: TopLevel (EnumDecl name) -> TopDecl name
- Cryptol.Parser.AST: TDNewtype :: TopLevel (Newtype name) -> TopDecl name
- Cryptol.Parser.AST: TFun :: Type n -> Type n -> Type n
- Cryptol.Parser.AST: TInfix :: Type n -> Located n -> Fixity -> Type n -> Type n
- Cryptol.Parser.AST: TLocated :: Type n -> Range -> Type n
- Cryptol.Parser.AST: TNum :: Integer -> Type n
- Cryptol.Parser.AST: TParam :: n -> Maybe Kind -> Maybe Range -> TParam n
- Cryptol.Parser.AST: TParens :: Type n -> Maybe Kind -> Type n
- Cryptol.Parser.AST: TRecord :: Rec (Type n) -> Type n
- Cryptol.Parser.AST: TSeq :: Type n -> Type n -> Type n
- Cryptol.Parser.AST: TTuple :: [Type n] -> Type n
- Cryptol.Parser.AST: TTyApp :: [Named (Type n)] -> Type n
- Cryptol.Parser.AST: TUser :: n -> [Type n] -> Type n
- Cryptol.Parser.AST: TWild :: Type n
- Cryptol.Parser.AST: TopLevel :: ExportType -> Maybe (Located Text) -> a -> TopLevel a
- Cryptol.Parser.AST: TupleSel :: Int -> Maybe Int -> Selector
- Cryptol.Parser.AST: TySyn :: Located n -> Maybe Fixity -> [TParam n] -> Type n -> TySyn n
- Cryptol.Parser.AST: UnQual :: !Ident -> PName
- Cryptol.Parser.AST: UpdField :: UpdHow -> [Located Selector] -> Expr n -> UpdField n
- Cryptol.Parser.AST: UpdFun :: UpdHow
- Cryptol.Parser.AST: UpdSet :: UpdHow
- Cryptol.Parser.AST: [bDef] :: Bind name -> Located (BindDef name)
- Cryptol.Parser.AST: [bDoc] :: Bind name -> Maybe (Located Text)
- Cryptol.Parser.AST: [bExport] :: Bind name -> !ExportType
- Cryptol.Parser.AST: [bFixity] :: Bind name -> Maybe Fixity
- Cryptol.Parser.AST: [bInfix] :: Bind name -> Bool
- Cryptol.Parser.AST: [bMono] :: Bind name -> Bool
- Cryptol.Parser.AST: [bName] :: Bind name -> Located name
- Cryptol.Parser.AST: [bParams] :: Bind name -> [Pattern name]
- Cryptol.Parser.AST: [bPragmas] :: Bind name -> [Pragma]
- Cryptol.Parser.AST: [bSignature] :: Bind name -> Maybe (Schema name)
- Cryptol.Parser.AST: [eCons] :: EnumDecl name -> [TopLevel (EnumCon name)]
- Cryptol.Parser.AST: [eName] :: EnumDecl name -> Located name
- Cryptol.Parser.AST: [eParams] :: EnumDecl name -> [TParam name]
- Cryptol.Parser.AST: [ecFields] :: EnumCon name -> [Type name]
- Cryptol.Parser.AST: [ecName] :: EnumCon name -> Located name
- Cryptol.Parser.AST: [fAssoc] :: Fixity -> !Assoc
- Cryptol.Parser.AST: [fLevel] :: Fixity -> !Int
- Cryptol.Parser.AST: [funDescrArgOffset] :: FunDesc n -> Int
- Cryptol.Parser.AST: [funDescrName] :: FunDesc n -> Maybe n
- Cryptol.Parser.AST: [iAs] :: ImportG mname -> Maybe ModName
- Cryptol.Parser.AST: [iDoc] :: ImportG mname -> Maybe (Located Text)
- Cryptol.Parser.AST: [iInst] :: ImportG mname -> !Maybe (ModuleInstanceArgs PName)
- Cryptol.Parser.AST: [iModule] :: ImportG mname -> !mname
- Cryptol.Parser.AST: [iSpec] :: ImportG mname -> Maybe ImportSpec
- Cryptol.Parser.AST: [mDef] :: ModuleG mname name -> ModuleDefinition name
- Cryptol.Parser.AST: [mDocTop] :: ModuleG mname name -> Maybe (Located Text)
- Cryptol.Parser.AST: [mInScope] :: ModuleG mname name -> NamingEnv
- Cryptol.Parser.AST: [mName] :: ModuleG mname name -> Located mname
- Cryptol.Parser.AST: [mpAs] :: ModParam name -> Maybe ModName
- Cryptol.Parser.AST: [mpDoc] :: ModParam name -> Maybe (Located Text)
- Cryptol.Parser.AST: [mpName] :: ModParam name -> !Ident
- Cryptol.Parser.AST: [mpRenaming] :: ModParam name -> !Map name name
- Cryptol.Parser.AST: [mpSignature] :: ModParam name -> Located (ImpName name)
- Cryptol.Parser.AST: [nBody] :: Newtype name -> Rec (Type name)
- Cryptol.Parser.AST: [nConName] :: Newtype name -> !name
- Cryptol.Parser.AST: [nName] :: Newtype name -> Located name
- Cryptol.Parser.AST: [nParams] :: Newtype name -> [TParam name]
- Cryptol.Parser.AST: [name] :: Named a -> Located Ident
- Cryptol.Parser.AST: [pcDoc] :: ParameterConstraint name -> Maybe (Located Text)
- Cryptol.Parser.AST: [pcProps] :: ParameterConstraint name -> [Located (Prop name)]
- Cryptol.Parser.AST: [pfDoc] :: ParameterFun name -> Maybe (Located Text)
- Cryptol.Parser.AST: [pfFixity] :: ParameterFun name -> Maybe Fixity
- Cryptol.Parser.AST: [pfName] :: ParameterFun name -> Located name
- Cryptol.Parser.AST: [pfSchema] :: ParameterFun name -> Schema name
- Cryptol.Parser.AST: [pgcExpr] :: PropGuardCase name -> Expr name
- Cryptol.Parser.AST: [pgcProps] :: PropGuardCase name -> [Located (Prop name)]
- Cryptol.Parser.AST: [primTCts] :: PrimType name -> ([TParam name], [Prop name])
- Cryptol.Parser.AST: [primTFixity] :: PrimType name -> Maybe Fixity
- Cryptol.Parser.AST: [primTKind] :: PrimType name -> Located Kind
- Cryptol.Parser.AST: [primTName] :: PrimType name -> Located name
- Cryptol.Parser.AST: [ptDoc] :: ParameterType name -> Maybe (Located Text)
- Cryptol.Parser.AST: [ptFixity] :: ParameterType name -> Maybe Fixity
- Cryptol.Parser.AST: [ptKind] :: ParameterType name -> Kind
- Cryptol.Parser.AST: [ptName] :: ParameterType name -> Located name
- Cryptol.Parser.AST: [ptNumber] :: ParameterType name -> !Int
- Cryptol.Parser.AST: [sigConstraints] :: Signature name -> [Located (Prop name)]
- Cryptol.Parser.AST: [sigDecls] :: Signature name -> [SigDecl name]
- Cryptol.Parser.AST: [sigFunParams] :: Signature name -> [ParameterFun name]
- Cryptol.Parser.AST: [sigImports] :: Signature name -> ![Located (ImportG (ImpName name))]
- Cryptol.Parser.AST: [sigTypeParams] :: Signature name -> [ParameterType name]
- Cryptol.Parser.AST: [srcRange] :: Located a -> !Range
- Cryptol.Parser.AST: [thing] :: Located a -> !a
- Cryptol.Parser.AST: [tlDoc] :: TopLevel a -> Maybe (Located Text)
- Cryptol.Parser.AST: [tlExport] :: TopLevel a -> ExportType
- Cryptol.Parser.AST: [tlValue] :: TopLevel a -> a
- Cryptol.Parser.AST: [tpKind] :: TParam n -> Maybe Kind
- Cryptol.Parser.AST: [tpName] :: TParam n -> n
- Cryptol.Parser.AST: [tpRange] :: TParam n -> Maybe Range
- Cryptol.Parser.AST: [value] :: Named a -> a
- Cryptol.Parser.AST: asEApps :: Expr n -> (Expr n, [Expr n])
- Cryptol.Parser.AST: bindImpl :: Bind name -> Maybe (BindImpl name)
- Cryptol.Parser.AST: class NoPos t
- Cryptol.Parser.AST: compareFixity :: Fixity -> Fixity -> FixityCmp
- Cryptol.Parser.AST: cppKind :: Kind -> Doc
- Cryptol.Parser.AST: data Assoc
- Cryptol.Parser.AST: data Bind name
- Cryptol.Parser.AST: data BindDef name
- Cryptol.Parser.AST: data BindImpl name
- Cryptol.Parser.AST: data CaseAlt n
- Cryptol.Parser.AST: data Decl name
- Cryptol.Parser.AST: data EnumCon name
- Cryptol.Parser.AST: data EnumDecl name
- Cryptol.Parser.AST: data ExportType
- Cryptol.Parser.AST: data Expr n
- Cryptol.Parser.AST: data Fixity
- Cryptol.Parser.AST: data FixityCmp
- Cryptol.Parser.AST: data FracInfo
- Cryptol.Parser.AST: data FunDesc n
- Cryptol.Parser.AST: data Ident
- Cryptol.Parser.AST: data ImpName name
- Cryptol.Parser.AST: data ImportG mname
- Cryptol.Parser.AST: data ImportSpec
- Cryptol.Parser.AST: data Kind
- Cryptol.Parser.AST: data Literal
- Cryptol.Parser.AST: data Located a
- Cryptol.Parser.AST: data Match name
- Cryptol.Parser.AST: data ModName
- Cryptol.Parser.AST: data ModParam name
- Cryptol.Parser.AST: data ModuleDefinition name
- Cryptol.Parser.AST: data ModuleG mname name
- Cryptol.Parser.AST: data ModuleInstanceArg name
- Cryptol.Parser.AST: data ModuleInstanceArgs name
- Cryptol.Parser.AST: data ModuleInstanceNamedArg name
- Cryptol.Parser.AST: data Named a
- Cryptol.Parser.AST: data Newtype name
- Cryptol.Parser.AST: data NumInfo
- Cryptol.Parser.AST: data PName
- Cryptol.Parser.AST: data ParamDecl name
- Cryptol.Parser.AST: data ParameterConstraint name
- Cryptol.Parser.AST: data ParameterFun name
- Cryptol.Parser.AST: data ParameterType name
- Cryptol.Parser.AST: data Pass
- Cryptol.Parser.AST: data Pattern n
- Cryptol.Parser.AST: data Pragma
- Cryptol.Parser.AST: data PrefixOp
- Cryptol.Parser.AST: data PrimType name
- Cryptol.Parser.AST: data PropGuardCase name
- Cryptol.Parser.AST: data PropSyn n
- Cryptol.Parser.AST: data ReplInput name
- Cryptol.Parser.AST: data Schema n
- Cryptol.Parser.AST: data Selector
- Cryptol.Parser.AST: data SigDecl name
- Cryptol.Parser.AST: data Signature name
- Cryptol.Parser.AST: data TParam n
- Cryptol.Parser.AST: data TopDecl name
- Cryptol.Parser.AST: data TopLevel a
- Cryptol.Parser.AST: data TySyn n
- Cryptol.Parser.AST: data Type n
- Cryptol.Parser.AST: data TypeInst name
- Cryptol.Parser.AST: data UpdField n
- Cryptol.Parser.AST: data UpdHow
- Cryptol.Parser.AST: defaultFixity :: Fixity
- Cryptol.Parser.AST: emptyFunDesc :: FunDesc n
- Cryptol.Parser.AST: emptyModuleInstance :: Ord name => ModuleInstance name
- Cryptol.Parser.AST: exprDef :: Expr name -> BindDef name
- Cryptol.Parser.AST: getIdent :: PName -> Ident
- Cryptol.Parser.AST: getModName :: PName -> Maybe ModName
- Cryptol.Parser.AST: identText :: Ident -> Text
- Cryptol.Parser.AST: impNameModPath :: ImpName Name -> ModPath
- Cryptol.Parser.AST: instance (Control.DeepSeq.NFData mname, Control.DeepSeq.NFData name) => Control.DeepSeq.NFData (Cryptol.Parser.AST.ModuleG mname name)
- Cryptol.Parser.AST: instance (Cryptol.Parser.AST.NoPos a, Cryptol.Parser.AST.NoPos b) => Cryptol.Parser.AST.NoPos (a, b)
- Cryptol.Parser.AST: instance (GHC.Show.Show mname, GHC.Show.Show name) => GHC.Show.Show (Cryptol.Parser.AST.ModuleG mname name)
- Cryptol.Parser.AST: instance (GHC.Show.Show name, Cryptol.Utils.PP.PPName mname, Cryptol.Utils.PP.PPName name) => Cryptol.Utils.PP.PP (Cryptol.Parser.AST.ModuleG mname name)
- Cryptol.Parser.AST: instance (GHC.Show.Show name, Cryptol.Utils.PP.PPName name) => Cryptol.Utils.PP.PP (Cryptol.Parser.AST.Bind name)
- Cryptol.Parser.AST: instance (GHC.Show.Show name, Cryptol.Utils.PP.PPName name) => Cryptol.Utils.PP.PP (Cryptol.Parser.AST.BindDef name)
- Cryptol.Parser.AST: instance (GHC.Show.Show name, Cryptol.Utils.PP.PPName name) => Cryptol.Utils.PP.PP (Cryptol.Parser.AST.BindImpl name)
- Cryptol.Parser.AST: instance (GHC.Show.Show name, Cryptol.Utils.PP.PPName name) => Cryptol.Utils.PP.PP (Cryptol.Parser.AST.CaseAlt name)
- Cryptol.Parser.AST: instance (GHC.Show.Show name, Cryptol.Utils.PP.PPName name) => Cryptol.Utils.PP.PP (Cryptol.Parser.AST.Decl name)
- Cryptol.Parser.AST: instance (GHC.Show.Show name, Cryptol.Utils.PP.PPName name) => Cryptol.Utils.PP.PP (Cryptol.Parser.AST.EnumCon name)
- Cryptol.Parser.AST: instance (GHC.Show.Show name, Cryptol.Utils.PP.PPName name) => Cryptol.Utils.PP.PP (Cryptol.Parser.AST.EnumDecl name)
- Cryptol.Parser.AST: instance (GHC.Show.Show name, Cryptol.Utils.PP.PPName name) => Cryptol.Utils.PP.PP (Cryptol.Parser.AST.Expr name)
- Cryptol.Parser.AST: instance (GHC.Show.Show name, Cryptol.Utils.PP.PPName name) => Cryptol.Utils.PP.PP (Cryptol.Parser.AST.Match name)
- Cryptol.Parser.AST: instance (GHC.Show.Show name, Cryptol.Utils.PP.PPName name) => Cryptol.Utils.PP.PP (Cryptol.Parser.AST.ModParam name)
- Cryptol.Parser.AST: instance (GHC.Show.Show name, Cryptol.Utils.PP.PPName name) => Cryptol.Utils.PP.PP (Cryptol.Parser.AST.ModuleDefinition name)
- Cryptol.Parser.AST: instance (GHC.Show.Show name, Cryptol.Utils.PP.PPName name) => Cryptol.Utils.PP.PP (Cryptol.Parser.AST.ModuleInstanceArg name)
- Cryptol.Parser.AST: instance (GHC.Show.Show name, Cryptol.Utils.PP.PPName name) => Cryptol.Utils.PP.PP (Cryptol.Parser.AST.ModuleInstanceArgs name)
- Cryptol.Parser.AST: instance (GHC.Show.Show name, Cryptol.Utils.PP.PPName name) => Cryptol.Utils.PP.PP (Cryptol.Parser.AST.ModuleInstanceNamedArg name)
- Cryptol.Parser.AST: instance (GHC.Show.Show name, Cryptol.Utils.PP.PPName name) => Cryptol.Utils.PP.PP (Cryptol.Parser.AST.NestedModule name)
- Cryptol.Parser.AST: instance (GHC.Show.Show name, Cryptol.Utils.PP.PPName name) => Cryptol.Utils.PP.PP (Cryptol.Parser.AST.ParamDecl name)
- Cryptol.Parser.AST: instance (GHC.Show.Show name, Cryptol.Utils.PP.PPName name) => Cryptol.Utils.PP.PP (Cryptol.Parser.AST.ParameterConstraint name)
- Cryptol.Parser.AST: instance (GHC.Show.Show name, Cryptol.Utils.PP.PPName name) => Cryptol.Utils.PP.PP (Cryptol.Parser.AST.ParameterFun name)
- Cryptol.Parser.AST: instance (GHC.Show.Show name, Cryptol.Utils.PP.PPName name) => Cryptol.Utils.PP.PP (Cryptol.Parser.AST.ParameterType name)
- Cryptol.Parser.AST: instance (GHC.Show.Show name, Cryptol.Utils.PP.PPName name) => Cryptol.Utils.PP.PP (Cryptol.Parser.AST.PrimType name)
- Cryptol.Parser.AST: instance (GHC.Show.Show name, Cryptol.Utils.PP.PPName name) => Cryptol.Utils.PP.PP (Cryptol.Parser.AST.Program name)
- Cryptol.Parser.AST: instance (GHC.Show.Show name, Cryptol.Utils.PP.PPName name) => Cryptol.Utils.PP.PP (Cryptol.Parser.AST.SigDecl name)
- Cryptol.Parser.AST: instance (GHC.Show.Show name, Cryptol.Utils.PP.PPName name) => Cryptol.Utils.PP.PP (Cryptol.Parser.AST.TopDecl name)
- Cryptol.Parser.AST: instance (GHC.Show.Show name, Cryptol.Utils.PP.PPName name) => Cryptol.Utils.PP.PP (Cryptol.Parser.AST.UpdField name)
- Cryptol.Parser.AST: instance Control.DeepSeq.NFData Cryptol.Parser.AST.ExportType
- Cryptol.Parser.AST: instance Control.DeepSeq.NFData Cryptol.Parser.AST.FracInfo
- Cryptol.Parser.AST: instance Control.DeepSeq.NFData Cryptol.Parser.AST.ImportSpec
- Cryptol.Parser.AST: instance Control.DeepSeq.NFData Cryptol.Parser.AST.Kind
- Cryptol.Parser.AST: instance Control.DeepSeq.NFData Cryptol.Parser.AST.Literal
- Cryptol.Parser.AST: instance Control.DeepSeq.NFData Cryptol.Parser.AST.NumInfo
- Cryptol.Parser.AST: instance Control.DeepSeq.NFData Cryptol.Parser.AST.Pragma
- Cryptol.Parser.AST: instance Control.DeepSeq.NFData Cryptol.Parser.AST.PrefixOp
- Cryptol.Parser.AST: instance Control.DeepSeq.NFData Cryptol.Parser.AST.UpdHow
- Cryptol.Parser.AST: instance Control.DeepSeq.NFData a => Control.DeepSeq.NFData (Cryptol.Parser.AST.Named a)
- Cryptol.Parser.AST: instance Control.DeepSeq.NFData a => Control.DeepSeq.NFData (Cryptol.Parser.AST.TopLevel a)
- Cryptol.Parser.AST: instance Control.DeepSeq.NFData mname => Control.DeepSeq.NFData (Cryptol.Parser.AST.ImportG mname)
- Cryptol.Parser.AST: instance Control.DeepSeq.NFData n => Control.DeepSeq.NFData (Cryptol.Parser.AST.CaseAlt n)
- Cryptol.Parser.AST: instance Control.DeepSeq.NFData n => Control.DeepSeq.NFData (Cryptol.Parser.AST.Expr n)
- Cryptol.Parser.AST: instance Control.DeepSeq.NFData n => Control.DeepSeq.NFData (Cryptol.Parser.AST.FunDesc n)
- Cryptol.Parser.AST: instance Control.DeepSeq.NFData n => Control.DeepSeq.NFData (Cryptol.Parser.AST.Pattern n)
- Cryptol.Parser.AST: instance Control.DeepSeq.NFData n => Control.DeepSeq.NFData (Cryptol.Parser.AST.Prop n)
- Cryptol.Parser.AST: instance Control.DeepSeq.NFData n => Control.DeepSeq.NFData (Cryptol.Parser.AST.PropSyn n)
- Cryptol.Parser.AST: instance Control.DeepSeq.NFData n => Control.DeepSeq.NFData (Cryptol.Parser.AST.Schema n)
- Cryptol.Parser.AST: instance Control.DeepSeq.NFData n => Control.DeepSeq.NFData (Cryptol.Parser.AST.TParam n)
- Cryptol.Parser.AST: instance Control.DeepSeq.NFData n => Control.DeepSeq.NFData (Cryptol.Parser.AST.TySyn n)
- Cryptol.Parser.AST: instance Control.DeepSeq.NFData n => Control.DeepSeq.NFData (Cryptol.Parser.AST.Type n)
- Cryptol.Parser.AST: instance Control.DeepSeq.NFData n => Control.DeepSeq.NFData (Cryptol.Parser.AST.UpdField n)
- Cryptol.Parser.AST: instance Control.DeepSeq.NFData name => Control.DeepSeq.NFData (Cryptol.Parser.AST.Bind name)
- Cryptol.Parser.AST: instance Control.DeepSeq.NFData name => Control.DeepSeq.NFData (Cryptol.Parser.AST.BindDef name)
- Cryptol.Parser.AST: instance Control.DeepSeq.NFData name => Control.DeepSeq.NFData (Cryptol.Parser.AST.BindImpl name)
- Cryptol.Parser.AST: instance Control.DeepSeq.NFData name => Control.DeepSeq.NFData (Cryptol.Parser.AST.Decl name)
- Cryptol.Parser.AST: instance Control.DeepSeq.NFData name => Control.DeepSeq.NFData (Cryptol.Parser.AST.EnumCon name)
- Cryptol.Parser.AST: instance Control.DeepSeq.NFData name => Control.DeepSeq.NFData (Cryptol.Parser.AST.EnumDecl name)
- Cryptol.Parser.AST: instance Control.DeepSeq.NFData name => Control.DeepSeq.NFData (Cryptol.Parser.AST.ImpName name)
- Cryptol.Parser.AST: instance Control.DeepSeq.NFData name => Control.DeepSeq.NFData (Cryptol.Parser.AST.Match name)
- Cryptol.Parser.AST: instance Control.DeepSeq.NFData name => Control.DeepSeq.NFData (Cryptol.Parser.AST.ModParam name)
- Cryptol.Parser.AST: instance Control.DeepSeq.NFData name => Control.DeepSeq.NFData (Cryptol.Parser.AST.ModuleDefinition name)
- Cryptol.Parser.AST: instance Control.DeepSeq.NFData name => Control.DeepSeq.NFData (Cryptol.Parser.AST.ModuleInstanceArg name)
- Cryptol.Parser.AST: instance Control.DeepSeq.NFData name => Control.DeepSeq.NFData (Cryptol.Parser.AST.ModuleInstanceArgs name)
- Cryptol.Parser.AST: instance Control.DeepSeq.NFData name => Control.DeepSeq.NFData (Cryptol.Parser.AST.ModuleInstanceNamedArg name)
- Cryptol.Parser.AST: instance Control.DeepSeq.NFData name => Control.DeepSeq.NFData (Cryptol.Parser.AST.NestedModule name)
- Cryptol.Parser.AST: instance Control.DeepSeq.NFData name => Control.DeepSeq.NFData (Cryptol.Parser.AST.Newtype name)
- Cryptol.Parser.AST: instance Control.DeepSeq.NFData name => Control.DeepSeq.NFData (Cryptol.Parser.AST.ParamDecl name)
- Cryptol.Parser.AST: instance Control.DeepSeq.NFData name => Control.DeepSeq.NFData (Cryptol.Parser.AST.ParameterConstraint name)
- Cryptol.Parser.AST: instance Control.DeepSeq.NFData name => Control.DeepSeq.NFData (Cryptol.Parser.AST.ParameterFun name)
- Cryptol.Parser.AST: instance Control.DeepSeq.NFData name => Control.DeepSeq.NFData (Cryptol.Parser.AST.ParameterType name)
- Cryptol.Parser.AST: instance Control.DeepSeq.NFData name => Control.DeepSeq.NFData (Cryptol.Parser.AST.PrimType name)
- Cryptol.Parser.AST: instance Control.DeepSeq.NFData name => Control.DeepSeq.NFData (Cryptol.Parser.AST.PropGuardCase name)
- Cryptol.Parser.AST: instance Control.DeepSeq.NFData name => Control.DeepSeq.NFData (Cryptol.Parser.AST.SigDecl name)
- Cryptol.Parser.AST: instance Control.DeepSeq.NFData name => Control.DeepSeq.NFData (Cryptol.Parser.AST.Signature name)
- Cryptol.Parser.AST: instance Control.DeepSeq.NFData name => Control.DeepSeq.NFData (Cryptol.Parser.AST.TopDecl name)
- Cryptol.Parser.AST: instance Control.DeepSeq.NFData name => Control.DeepSeq.NFData (Cryptol.Parser.AST.TypeInst name)
- Cryptol.Parser.AST: instance Cryptol.Parser.AST.NoPos (Cryptol.Parser.AST.Bind name)
- Cryptol.Parser.AST: instance Cryptol.Parser.AST.NoPos (Cryptol.Parser.AST.CaseAlt name)
- Cryptol.Parser.AST: instance Cryptol.Parser.AST.NoPos (Cryptol.Parser.AST.Decl name)
- Cryptol.Parser.AST: instance Cryptol.Parser.AST.NoPos (Cryptol.Parser.AST.EnumCon name)
- Cryptol.Parser.AST: instance Cryptol.Parser.AST.NoPos (Cryptol.Parser.AST.EnumDecl name)
- Cryptol.Parser.AST: instance Cryptol.Parser.AST.NoPos (Cryptol.Parser.AST.Expr name)
- Cryptol.Parser.AST: instance Cryptol.Parser.AST.NoPos (Cryptol.Parser.AST.Match name)
- Cryptol.Parser.AST: instance Cryptol.Parser.AST.NoPos (Cryptol.Parser.AST.ModParam name)
- Cryptol.Parser.AST: instance Cryptol.Parser.AST.NoPos (Cryptol.Parser.AST.ModuleDefinition name)
- Cryptol.Parser.AST: instance Cryptol.Parser.AST.NoPos (Cryptol.Parser.AST.ModuleG mname name)
- Cryptol.Parser.AST: instance Cryptol.Parser.AST.NoPos (Cryptol.Parser.AST.ModuleInstanceArgs name)
- Cryptol.Parser.AST: instance Cryptol.Parser.AST.NoPos (Cryptol.Parser.AST.ModuleInstanceNamedArg name)
- Cryptol.Parser.AST: instance Cryptol.Parser.AST.NoPos (Cryptol.Parser.AST.NestedModule name)
- Cryptol.Parser.AST: instance Cryptol.Parser.AST.NoPos (Cryptol.Parser.AST.Newtype name)
- Cryptol.Parser.AST: instance Cryptol.Parser.AST.NoPos (Cryptol.Parser.AST.ParamDecl name)
- Cryptol.Parser.AST: instance Cryptol.Parser.AST.NoPos (Cryptol.Parser.AST.ParameterConstraint x)
- Cryptol.Parser.AST: instance Cryptol.Parser.AST.NoPos (Cryptol.Parser.AST.ParameterFun x)
- Cryptol.Parser.AST: instance Cryptol.Parser.AST.NoPos (Cryptol.Parser.AST.ParameterType name)
- Cryptol.Parser.AST: instance Cryptol.Parser.AST.NoPos (Cryptol.Parser.AST.Pattern name)
- Cryptol.Parser.AST: instance Cryptol.Parser.AST.NoPos (Cryptol.Parser.AST.PrimType name)
- Cryptol.Parser.AST: instance Cryptol.Parser.AST.NoPos (Cryptol.Parser.AST.Program name)
- Cryptol.Parser.AST: instance Cryptol.Parser.AST.NoPos (Cryptol.Parser.AST.Prop name)
- Cryptol.Parser.AST: instance Cryptol.Parser.AST.NoPos (Cryptol.Parser.AST.PropSyn name)
- Cryptol.Parser.AST: instance Cryptol.Parser.AST.NoPos (Cryptol.Parser.AST.Schema name)
- Cryptol.Parser.AST: instance Cryptol.Parser.AST.NoPos (Cryptol.Parser.AST.SigDecl name)
- Cryptol.Parser.AST: instance Cryptol.Parser.AST.NoPos (Cryptol.Parser.AST.Signature name)
- Cryptol.Parser.AST: instance Cryptol.Parser.AST.NoPos (Cryptol.Parser.AST.TParam name)
- Cryptol.Parser.AST: instance Cryptol.Parser.AST.NoPos (Cryptol.Parser.AST.TopDecl name)
- Cryptol.Parser.AST: instance Cryptol.Parser.AST.NoPos (Cryptol.Parser.AST.TySyn name)
- Cryptol.Parser.AST: instance Cryptol.Parser.AST.NoPos (Cryptol.Parser.AST.Type name)
- Cryptol.Parser.AST: instance Cryptol.Parser.AST.NoPos (Cryptol.Parser.AST.TypeInst name)
- Cryptol.Parser.AST: instance Cryptol.Parser.AST.NoPos (Cryptol.Parser.AST.UpdField name)
- Cryptol.Parser.AST: instance Cryptol.Parser.AST.NoPos (Cryptol.Parser.Position.Located t)
- Cryptol.Parser.AST: instance Cryptol.Parser.AST.NoPos Cryptol.Parser.AST.Pragma
- Cryptol.Parser.AST: instance Cryptol.Parser.AST.NoPos Cryptol.Parser.Position.Range
- Cryptol.Parser.AST: instance Cryptol.Parser.AST.NoPos a => Cryptol.Parser.AST.NoPos (Cryptol.Parser.AST.TopLevel a)
- Cryptol.Parser.AST: instance Cryptol.Parser.AST.NoPos t => Cryptol.Parser.AST.NoPos (Cryptol.Parser.AST.Named t)
- Cryptol.Parser.AST: instance Cryptol.Parser.AST.NoPos t => Cryptol.Parser.AST.NoPos (GHC.Maybe.Maybe t)
- Cryptol.Parser.AST: instance Cryptol.Parser.AST.NoPos t => Cryptol.Parser.AST.NoPos [t]
- Cryptol.Parser.AST: instance Cryptol.Parser.Position.AddLoc (Cryptol.Parser.AST.Decl name)
- Cryptol.Parser.AST: instance Cryptol.Parser.Position.AddLoc (Cryptol.Parser.AST.Expr n)
- Cryptol.Parser.AST: instance Cryptol.Parser.Position.AddLoc (Cryptol.Parser.AST.Pattern name)
- Cryptol.Parser.AST: instance Cryptol.Parser.Position.AddLoc (Cryptol.Parser.AST.Schema name)
- Cryptol.Parser.AST: instance Cryptol.Parser.Position.AddLoc (Cryptol.Parser.AST.TParam name)
- Cryptol.Parser.AST: instance Cryptol.Parser.Position.AddLoc (Cryptol.Parser.AST.Type name)
- Cryptol.Parser.AST: instance Cryptol.Parser.Position.HasLoc (Cryptol.Parser.AST.Bind name)
- Cryptol.Parser.AST: instance Cryptol.Parser.Position.HasLoc (Cryptol.Parser.AST.Decl name)
- Cryptol.Parser.AST: instance Cryptol.Parser.Position.HasLoc (Cryptol.Parser.AST.EnumCon name)
- Cryptol.Parser.AST: instance Cryptol.Parser.Position.HasLoc (Cryptol.Parser.AST.EnumDecl name)
- Cryptol.Parser.AST: instance Cryptol.Parser.Position.HasLoc (Cryptol.Parser.AST.Expr name)
- Cryptol.Parser.AST: instance Cryptol.Parser.Position.HasLoc (Cryptol.Parser.AST.Match name)
- Cryptol.Parser.AST: instance Cryptol.Parser.Position.HasLoc (Cryptol.Parser.AST.ModParam name)
- Cryptol.Parser.AST: instance Cryptol.Parser.Position.HasLoc (Cryptol.Parser.AST.ModuleG mname name)
- Cryptol.Parser.AST: instance Cryptol.Parser.Position.HasLoc (Cryptol.Parser.AST.NestedModule name)
- Cryptol.Parser.AST: instance Cryptol.Parser.Position.HasLoc (Cryptol.Parser.AST.Newtype name)
- Cryptol.Parser.AST: instance Cryptol.Parser.Position.HasLoc (Cryptol.Parser.AST.ParamDecl name)
- Cryptol.Parser.AST: instance Cryptol.Parser.Position.HasLoc (Cryptol.Parser.AST.ParameterConstraint name)
- Cryptol.Parser.AST: instance Cryptol.Parser.Position.HasLoc (Cryptol.Parser.AST.ParameterFun name)
- Cryptol.Parser.AST: instance Cryptol.Parser.Position.HasLoc (Cryptol.Parser.AST.ParameterType name)
- Cryptol.Parser.AST: instance Cryptol.Parser.Position.HasLoc (Cryptol.Parser.AST.Pattern name)
- Cryptol.Parser.AST: instance Cryptol.Parser.Position.HasLoc (Cryptol.Parser.AST.PrimType name)
- Cryptol.Parser.AST: instance Cryptol.Parser.Position.HasLoc (Cryptol.Parser.AST.PropSyn name)
- Cryptol.Parser.AST: instance Cryptol.Parser.Position.HasLoc (Cryptol.Parser.AST.Schema name)
- Cryptol.Parser.AST: instance Cryptol.Parser.Position.HasLoc (Cryptol.Parser.AST.SigDecl name)
- Cryptol.Parser.AST: instance Cryptol.Parser.Position.HasLoc (Cryptol.Parser.AST.TParam name)
- Cryptol.Parser.AST: instance Cryptol.Parser.Position.HasLoc (Cryptol.Parser.AST.TopDecl name)
- Cryptol.Parser.AST: instance Cryptol.Parser.Position.HasLoc (Cryptol.Parser.AST.TySyn name)
- Cryptol.Parser.AST: instance Cryptol.Parser.Position.HasLoc (Cryptol.Parser.AST.Type name)
- Cryptol.Parser.AST: instance Cryptol.Parser.Position.HasLoc a => Cryptol.Parser.Position.HasLoc (Cryptol.Parser.AST.Named a)
- Cryptol.Parser.AST: instance Cryptol.Parser.Position.HasLoc a => Cryptol.Parser.Position.HasLoc (Cryptol.Parser.AST.TopLevel a)
- Cryptol.Parser.AST: instance Cryptol.Utils.PP.PP Cryptol.Parser.AST.ImportSpec
- Cryptol.Parser.AST: instance Cryptol.Utils.PP.PP Cryptol.Parser.AST.Kind
- Cryptol.Parser.AST: instance Cryptol.Utils.PP.PP Cryptol.Parser.AST.Literal
- Cryptol.Parser.AST: instance Cryptol.Utils.PP.PP Cryptol.Parser.AST.Pragma
- Cryptol.Parser.AST: instance Cryptol.Utils.PP.PP Cryptol.Parser.AST.UpdHow
- Cryptol.Parser.AST: instance Cryptol.Utils.PP.PP a => Cryptol.Utils.PP.PP (Cryptol.Parser.AST.TopLevel a)
- Cryptol.Parser.AST: instance Cryptol.Utils.PP.PP mname => Cryptol.Utils.PP.PP (Cryptol.Parser.AST.ImportG mname)
- Cryptol.Parser.AST: instance Cryptol.Utils.PP.PP name => Cryptol.Utils.PP.PP (Cryptol.Parser.AST.ImpName name)
- Cryptol.Parser.AST: instance Cryptol.Utils.PP.PPName name => Cryptol.Utils.PP.PP (Cryptol.Parser.AST.Newtype name)
- Cryptol.Parser.AST: instance Cryptol.Utils.PP.PPName name => Cryptol.Utils.PP.PP (Cryptol.Parser.AST.Pattern name)
- Cryptol.Parser.AST: instance Cryptol.Utils.PP.PPName name => Cryptol.Utils.PP.PP (Cryptol.Parser.AST.Prop name)
- Cryptol.Parser.AST: instance Cryptol.Utils.PP.PPName name => Cryptol.Utils.PP.PP (Cryptol.Parser.AST.PropSyn name)
- Cryptol.Parser.AST: instance Cryptol.Utils.PP.PPName name => Cryptol.Utils.PP.PP (Cryptol.Parser.AST.Schema name)
- Cryptol.Parser.AST: instance Cryptol.Utils.PP.PPName name => Cryptol.Utils.PP.PP (Cryptol.Parser.AST.TParam name)
- Cryptol.Parser.AST: instance Cryptol.Utils.PP.PPName name => Cryptol.Utils.PP.PP (Cryptol.Parser.AST.TySyn name)
- Cryptol.Parser.AST: instance Cryptol.Utils.PP.PPName name => Cryptol.Utils.PP.PP (Cryptol.Parser.AST.Type name)
- Cryptol.Parser.AST: instance Cryptol.Utils.PP.PPName name => Cryptol.Utils.PP.PP (Cryptol.Parser.AST.TypeInst name)
- Cryptol.Parser.AST: instance Cryptol.Utils.PP.PPName name => Cryptol.Utils.PP.PP [Cryptol.Parser.AST.Prop name]
- Cryptol.Parser.AST: instance Data.Foldable.Foldable Cryptol.Parser.AST.Named
- Cryptol.Parser.AST: instance Data.Foldable.Foldable Cryptol.Parser.AST.TopLevel
- Cryptol.Parser.AST: instance Data.Traversable.Traversable Cryptol.Parser.AST.Named
- Cryptol.Parser.AST: instance Data.Traversable.Traversable Cryptol.Parser.AST.TopLevel
- Cryptol.Parser.AST: instance GHC.Base.Functor Cryptol.Parser.AST.Bind
- Cryptol.Parser.AST: instance GHC.Base.Functor Cryptol.Parser.AST.BindDef
- Cryptol.Parser.AST: instance GHC.Base.Functor Cryptol.Parser.AST.BindImpl
- Cryptol.Parser.AST: instance GHC.Base.Functor Cryptol.Parser.AST.CaseAlt
- Cryptol.Parser.AST: instance GHC.Base.Functor Cryptol.Parser.AST.Decl
- Cryptol.Parser.AST: instance GHC.Base.Functor Cryptol.Parser.AST.Expr
- Cryptol.Parser.AST: instance GHC.Base.Functor Cryptol.Parser.AST.FunDesc
- Cryptol.Parser.AST: instance GHC.Base.Functor Cryptol.Parser.AST.Match
- Cryptol.Parser.AST: instance GHC.Base.Functor Cryptol.Parser.AST.Named
- Cryptol.Parser.AST: instance GHC.Base.Functor Cryptol.Parser.AST.Pattern
- Cryptol.Parser.AST: instance GHC.Base.Functor Cryptol.Parser.AST.Prop
- Cryptol.Parser.AST: instance GHC.Base.Functor Cryptol.Parser.AST.PropGuardCase
- Cryptol.Parser.AST: instance GHC.Base.Functor Cryptol.Parser.AST.PropSyn
- Cryptol.Parser.AST: instance GHC.Base.Functor Cryptol.Parser.AST.Schema
- Cryptol.Parser.AST: instance GHC.Base.Functor Cryptol.Parser.AST.TParam
- Cryptol.Parser.AST: instance GHC.Base.Functor Cryptol.Parser.AST.TopLevel
- Cryptol.Parser.AST: instance GHC.Base.Functor Cryptol.Parser.AST.TySyn
- Cryptol.Parser.AST: instance GHC.Base.Functor Cryptol.Parser.AST.Type
- Cryptol.Parser.AST: instance GHC.Base.Functor Cryptol.Parser.AST.TypeInst
- Cryptol.Parser.AST: instance GHC.Base.Functor Cryptol.Parser.AST.UpdField
- Cryptol.Parser.AST: instance GHC.Classes.Eq Cryptol.Parser.AST.ExportType
- Cryptol.Parser.AST: instance GHC.Classes.Eq Cryptol.Parser.AST.FracInfo
- Cryptol.Parser.AST: instance GHC.Classes.Eq Cryptol.Parser.AST.ImportSpec
- Cryptol.Parser.AST: instance GHC.Classes.Eq Cryptol.Parser.AST.Kind
- Cryptol.Parser.AST: instance GHC.Classes.Eq Cryptol.Parser.AST.Literal
- Cryptol.Parser.AST: instance GHC.Classes.Eq Cryptol.Parser.AST.NumInfo
- Cryptol.Parser.AST: instance GHC.Classes.Eq Cryptol.Parser.AST.Pragma
- Cryptol.Parser.AST: instance GHC.Classes.Eq Cryptol.Parser.AST.PrefixOp
- Cryptol.Parser.AST: instance GHC.Classes.Eq Cryptol.Parser.AST.UpdHow
- Cryptol.Parser.AST: instance GHC.Classes.Eq a => GHC.Classes.Eq (Cryptol.Parser.AST.Named a)
- Cryptol.Parser.AST: instance GHC.Classes.Eq n => GHC.Classes.Eq (Cryptol.Parser.AST.CaseAlt n)
- Cryptol.Parser.AST: instance GHC.Classes.Eq n => GHC.Classes.Eq (Cryptol.Parser.AST.Expr n)
- Cryptol.Parser.AST: instance GHC.Classes.Eq n => GHC.Classes.Eq (Cryptol.Parser.AST.FunDesc n)
- Cryptol.Parser.AST: instance GHC.Classes.Eq n => GHC.Classes.Eq (Cryptol.Parser.AST.Pattern n)
- Cryptol.Parser.AST: instance GHC.Classes.Eq n => GHC.Classes.Eq (Cryptol.Parser.AST.Prop n)
- Cryptol.Parser.AST: instance GHC.Classes.Eq n => GHC.Classes.Eq (Cryptol.Parser.AST.PropSyn n)
- Cryptol.Parser.AST: instance GHC.Classes.Eq n => GHC.Classes.Eq (Cryptol.Parser.AST.Schema n)
- Cryptol.Parser.AST: instance GHC.Classes.Eq n => GHC.Classes.Eq (Cryptol.Parser.AST.TParam n)
- Cryptol.Parser.AST: instance GHC.Classes.Eq n => GHC.Classes.Eq (Cryptol.Parser.AST.TySyn n)
- Cryptol.Parser.AST: instance GHC.Classes.Eq n => GHC.Classes.Eq (Cryptol.Parser.AST.Type n)
- Cryptol.Parser.AST: instance GHC.Classes.Eq n => GHC.Classes.Eq (Cryptol.Parser.AST.UpdField n)
- Cryptol.Parser.AST: instance GHC.Classes.Eq name => GHC.Classes.Eq (Cryptol.Parser.AST.Bind name)
- Cryptol.Parser.AST: instance GHC.Classes.Eq name => GHC.Classes.Eq (Cryptol.Parser.AST.BindDef name)
- Cryptol.Parser.AST: instance GHC.Classes.Eq name => GHC.Classes.Eq (Cryptol.Parser.AST.BindImpl name)
- Cryptol.Parser.AST: instance GHC.Classes.Eq name => GHC.Classes.Eq (Cryptol.Parser.AST.Decl name)
- Cryptol.Parser.AST: instance GHC.Classes.Eq name => GHC.Classes.Eq (Cryptol.Parser.AST.ImpName name)
- Cryptol.Parser.AST: instance GHC.Classes.Eq name => GHC.Classes.Eq (Cryptol.Parser.AST.Match name)
- Cryptol.Parser.AST: instance GHC.Classes.Eq name => GHC.Classes.Eq (Cryptol.Parser.AST.ModParam name)
- Cryptol.Parser.AST: instance GHC.Classes.Eq name => GHC.Classes.Eq (Cryptol.Parser.AST.Newtype name)
- Cryptol.Parser.AST: instance GHC.Classes.Eq name => GHC.Classes.Eq (Cryptol.Parser.AST.ParameterConstraint name)
- Cryptol.Parser.AST: instance GHC.Classes.Eq name => GHC.Classes.Eq (Cryptol.Parser.AST.ParameterFun name)
- Cryptol.Parser.AST: instance GHC.Classes.Eq name => GHC.Classes.Eq (Cryptol.Parser.AST.ParameterType name)
- Cryptol.Parser.AST: instance GHC.Classes.Eq name => GHC.Classes.Eq (Cryptol.Parser.AST.PropGuardCase name)
- Cryptol.Parser.AST: instance GHC.Classes.Eq name => GHC.Classes.Eq (Cryptol.Parser.AST.ReplInput name)
- Cryptol.Parser.AST: instance GHC.Classes.Eq name => GHC.Classes.Eq (Cryptol.Parser.AST.TypeInst name)
- Cryptol.Parser.AST: instance GHC.Classes.Ord Cryptol.Parser.AST.ExportType
- Cryptol.Parser.AST: instance GHC.Classes.Ord name => GHC.Classes.Ord (Cryptol.Parser.AST.ImpName name)
- Cryptol.Parser.AST: instance GHC.Generics.Generic (Cryptol.Parser.AST.Bind name)
- Cryptol.Parser.AST: instance GHC.Generics.Generic (Cryptol.Parser.AST.BindDef name)
- Cryptol.Parser.AST: instance GHC.Generics.Generic (Cryptol.Parser.AST.BindImpl name)
- Cryptol.Parser.AST: instance GHC.Generics.Generic (Cryptol.Parser.AST.CaseAlt n)
- Cryptol.Parser.AST: instance GHC.Generics.Generic (Cryptol.Parser.AST.Decl name)
- Cryptol.Parser.AST: instance GHC.Generics.Generic (Cryptol.Parser.AST.EnumCon name)
- Cryptol.Parser.AST: instance GHC.Generics.Generic (Cryptol.Parser.AST.EnumDecl name)
- Cryptol.Parser.AST: instance GHC.Generics.Generic (Cryptol.Parser.AST.Expr n)
- Cryptol.Parser.AST: instance GHC.Generics.Generic (Cryptol.Parser.AST.FunDesc n)
- Cryptol.Parser.AST: instance GHC.Generics.Generic (Cryptol.Parser.AST.ImpName name)
- Cryptol.Parser.AST: instance GHC.Generics.Generic (Cryptol.Parser.AST.ImportG mname)
- Cryptol.Parser.AST: instance GHC.Generics.Generic (Cryptol.Parser.AST.Match name)
- Cryptol.Parser.AST: instance GHC.Generics.Generic (Cryptol.Parser.AST.ModParam name)
- Cryptol.Parser.AST: instance GHC.Generics.Generic (Cryptol.Parser.AST.ModuleDefinition name)
- Cryptol.Parser.AST: instance GHC.Generics.Generic (Cryptol.Parser.AST.ModuleG mname name)
- Cryptol.Parser.AST: instance GHC.Generics.Generic (Cryptol.Parser.AST.ModuleInstanceArg name)
- Cryptol.Parser.AST: instance GHC.Generics.Generic (Cryptol.Parser.AST.ModuleInstanceArgs name)
- Cryptol.Parser.AST: instance GHC.Generics.Generic (Cryptol.Parser.AST.ModuleInstanceNamedArg name)
- Cryptol.Parser.AST: instance GHC.Generics.Generic (Cryptol.Parser.AST.Named a)
- Cryptol.Parser.AST: instance GHC.Generics.Generic (Cryptol.Parser.AST.NestedModule name)
- Cryptol.Parser.AST: instance GHC.Generics.Generic (Cryptol.Parser.AST.Newtype name)
- Cryptol.Parser.AST: instance GHC.Generics.Generic (Cryptol.Parser.AST.ParamDecl name)
- Cryptol.Parser.AST: instance GHC.Generics.Generic (Cryptol.Parser.AST.ParameterConstraint name)
- Cryptol.Parser.AST: instance GHC.Generics.Generic (Cryptol.Parser.AST.ParameterFun name)
- Cryptol.Parser.AST: instance GHC.Generics.Generic (Cryptol.Parser.AST.ParameterType name)
- Cryptol.Parser.AST: instance GHC.Generics.Generic (Cryptol.Parser.AST.Pattern n)
- Cryptol.Parser.AST: instance GHC.Generics.Generic (Cryptol.Parser.AST.PrimType name)
- Cryptol.Parser.AST: instance GHC.Generics.Generic (Cryptol.Parser.AST.Prop n)
- Cryptol.Parser.AST: instance GHC.Generics.Generic (Cryptol.Parser.AST.PropGuardCase name)
- Cryptol.Parser.AST: instance GHC.Generics.Generic (Cryptol.Parser.AST.PropSyn n)
- Cryptol.Parser.AST: instance GHC.Generics.Generic (Cryptol.Parser.AST.Schema n)
- Cryptol.Parser.AST: instance GHC.Generics.Generic (Cryptol.Parser.AST.SigDecl name)
- Cryptol.Parser.AST: instance GHC.Generics.Generic (Cryptol.Parser.AST.Signature name)
- Cryptol.Parser.AST: instance GHC.Generics.Generic (Cryptol.Parser.AST.TParam n)
- Cryptol.Parser.AST: instance GHC.Generics.Generic (Cryptol.Parser.AST.TopDecl name)
- Cryptol.Parser.AST: instance GHC.Generics.Generic (Cryptol.Parser.AST.TopLevel a)
- Cryptol.Parser.AST: instance GHC.Generics.Generic (Cryptol.Parser.AST.TySyn n)
- Cryptol.Parser.AST: instance GHC.Generics.Generic (Cryptol.Parser.AST.Type n)
- Cryptol.Parser.AST: instance GHC.Generics.Generic (Cryptol.Parser.AST.TypeInst name)
- Cryptol.Parser.AST: instance GHC.Generics.Generic (Cryptol.Parser.AST.UpdField n)
- Cryptol.Parser.AST: instance GHC.Generics.Generic Cryptol.Parser.AST.ExportType
- Cryptol.Parser.AST: instance GHC.Generics.Generic Cryptol.Parser.AST.FracInfo
- Cryptol.Parser.AST: instance GHC.Generics.Generic Cryptol.Parser.AST.ImportSpec
- Cryptol.Parser.AST: instance GHC.Generics.Generic Cryptol.Parser.AST.Kind
- Cryptol.Parser.AST: instance GHC.Generics.Generic Cryptol.Parser.AST.Literal
- Cryptol.Parser.AST: instance GHC.Generics.Generic Cryptol.Parser.AST.NumInfo
- Cryptol.Parser.AST: instance GHC.Generics.Generic Cryptol.Parser.AST.Pragma
- Cryptol.Parser.AST: instance GHC.Generics.Generic Cryptol.Parser.AST.PrefixOp
- Cryptol.Parser.AST: instance GHC.Generics.Generic Cryptol.Parser.AST.UpdHow
- Cryptol.Parser.AST: instance GHC.Show.Show Cryptol.Parser.AST.ExportType
- Cryptol.Parser.AST: instance GHC.Show.Show Cryptol.Parser.AST.FracInfo
- Cryptol.Parser.AST: instance GHC.Show.Show Cryptol.Parser.AST.ImportSpec
- Cryptol.Parser.AST: instance GHC.Show.Show Cryptol.Parser.AST.Kind
- Cryptol.Parser.AST: instance GHC.Show.Show Cryptol.Parser.AST.Literal
- Cryptol.Parser.AST: instance GHC.Show.Show Cryptol.Parser.AST.NumInfo
- Cryptol.Parser.AST: instance GHC.Show.Show Cryptol.Parser.AST.Pragma
- Cryptol.Parser.AST: instance GHC.Show.Show Cryptol.Parser.AST.PrefixOp
- Cryptol.Parser.AST: instance GHC.Show.Show Cryptol.Parser.AST.UpdHow
- Cryptol.Parser.AST: instance GHC.Show.Show a => GHC.Show.Show (Cryptol.Parser.AST.Named a)
- Cryptol.Parser.AST: instance GHC.Show.Show a => GHC.Show.Show (Cryptol.Parser.AST.TopLevel a)
- Cryptol.Parser.AST: instance GHC.Show.Show mname => GHC.Show.Show (Cryptol.Parser.AST.ImportG mname)
- Cryptol.Parser.AST: instance GHC.Show.Show n => GHC.Show.Show (Cryptol.Parser.AST.CaseAlt n)
- Cryptol.Parser.AST: instance GHC.Show.Show n => GHC.Show.Show (Cryptol.Parser.AST.Expr n)
- Cryptol.Parser.AST: instance GHC.Show.Show n => GHC.Show.Show (Cryptol.Parser.AST.FunDesc n)
- Cryptol.Parser.AST: instance GHC.Show.Show n => GHC.Show.Show (Cryptol.Parser.AST.Pattern n)
- Cryptol.Parser.AST: instance GHC.Show.Show n => GHC.Show.Show (Cryptol.Parser.AST.Prop n)
- Cryptol.Parser.AST: instance GHC.Show.Show n => GHC.Show.Show (Cryptol.Parser.AST.PropSyn n)
- Cryptol.Parser.AST: instance GHC.Show.Show n => GHC.Show.Show (Cryptol.Parser.AST.Schema n)
- Cryptol.Parser.AST: instance GHC.Show.Show n => GHC.Show.Show (Cryptol.Parser.AST.TParam n)
- Cryptol.Parser.AST: instance GHC.Show.Show n => GHC.Show.Show (Cryptol.Parser.AST.TySyn n)
- Cryptol.Parser.AST: instance GHC.Show.Show n => GHC.Show.Show (Cryptol.Parser.AST.Type n)
- Cryptol.Parser.AST: instance GHC.Show.Show n => GHC.Show.Show (Cryptol.Parser.AST.UpdField n)
- Cryptol.Parser.AST: instance GHC.Show.Show name => GHC.Show.Show (Cryptol.Parser.AST.Bind name)
- Cryptol.Parser.AST: instance GHC.Show.Show name => GHC.Show.Show (Cryptol.Parser.AST.BindDef name)
- Cryptol.Parser.AST: instance GHC.Show.Show name => GHC.Show.Show (Cryptol.Parser.AST.BindImpl name)
- Cryptol.Parser.AST: instance GHC.Show.Show name => GHC.Show.Show (Cryptol.Parser.AST.Decl name)
- Cryptol.Parser.AST: instance GHC.Show.Show name => GHC.Show.Show (Cryptol.Parser.AST.EnumCon name)
- Cryptol.Parser.AST: instance GHC.Show.Show name => GHC.Show.Show (Cryptol.Parser.AST.EnumDecl name)
- Cryptol.Parser.AST: instance GHC.Show.Show name => GHC.Show.Show (Cryptol.Parser.AST.ImpName name)
- Cryptol.Parser.AST: instance GHC.Show.Show name => GHC.Show.Show (Cryptol.Parser.AST.Match name)
- Cryptol.Parser.AST: instance GHC.Show.Show name => GHC.Show.Show (Cryptol.Parser.AST.ModParam name)
- Cryptol.Parser.AST: instance GHC.Show.Show name => GHC.Show.Show (Cryptol.Parser.AST.ModuleDefinition name)
- Cryptol.Parser.AST: instance GHC.Show.Show name => GHC.Show.Show (Cryptol.Parser.AST.ModuleInstanceArg name)
- Cryptol.Parser.AST: instance GHC.Show.Show name => GHC.Show.Show (Cryptol.Parser.AST.ModuleInstanceArgs name)
- Cryptol.Parser.AST: instance GHC.Show.Show name => GHC.Show.Show (Cryptol.Parser.AST.ModuleInstanceNamedArg name)
- Cryptol.Parser.AST: instance GHC.Show.Show name => GHC.Show.Show (Cryptol.Parser.AST.NestedModule name)
- Cryptol.Parser.AST: instance GHC.Show.Show name => GHC.Show.Show (Cryptol.Parser.AST.Newtype name)
- Cryptol.Parser.AST: instance GHC.Show.Show name => GHC.Show.Show (Cryptol.Parser.AST.ParamDecl name)
- Cryptol.Parser.AST: instance GHC.Show.Show name => GHC.Show.Show (Cryptol.Parser.AST.ParameterConstraint name)
- Cryptol.Parser.AST: instance GHC.Show.Show name => GHC.Show.Show (Cryptol.Parser.AST.ParameterFun name)
- Cryptol.Parser.AST: instance GHC.Show.Show name => GHC.Show.Show (Cryptol.Parser.AST.ParameterType name)
- Cryptol.Parser.AST: instance GHC.Show.Show name => GHC.Show.Show (Cryptol.Parser.AST.PrimType name)
- Cryptol.Parser.AST: instance GHC.Show.Show name => GHC.Show.Show (Cryptol.Parser.AST.Program name)
- Cryptol.Parser.AST: instance GHC.Show.Show name => GHC.Show.Show (Cryptol.Parser.AST.PropGuardCase name)
- Cryptol.Parser.AST: instance GHC.Show.Show name => GHC.Show.Show (Cryptol.Parser.AST.ReplInput name)
- Cryptol.Parser.AST: instance GHC.Show.Show name => GHC.Show.Show (Cryptol.Parser.AST.SigDecl name)
- Cryptol.Parser.AST: instance GHC.Show.Show name => GHC.Show.Show (Cryptol.Parser.AST.Signature name)
- Cryptol.Parser.AST: instance GHC.Show.Show name => GHC.Show.Show (Cryptol.Parser.AST.TopDecl name)
- Cryptol.Parser.AST: instance GHC.Show.Show name => GHC.Show.Show (Cryptol.Parser.AST.TypeInst name)
- Cryptol.Parser.AST: isInfixIdent :: Ident -> Bool
- Cryptol.Parser.AST: isParamDecl :: TopDecl a -> Bool
- Cryptol.Parser.AST: mDecls :: ModuleG mname name -> [TopDecl name]
- Cryptol.Parser.AST: mImports :: ModuleG mname name -> [Located Import]
- Cryptol.Parser.AST: mIsFunctor :: ModuleG mname nmae -> Bool
- Cryptol.Parser.AST: mModParams :: ModuleG mname name -> [ModParam name]
- Cryptol.Parser.AST: mkIdent :: Text -> Ident
- Cryptol.Parser.AST: mkInfix :: Text -> Ident
- Cryptol.Parser.AST: mkQual :: ModName -> Ident -> PName
- Cryptol.Parser.AST: mkUnqual :: Ident -> PName
- Cryptol.Parser.AST: modRange :: Module name -> Range
- Cryptol.Parser.AST: newtype NestedModule name
- Cryptol.Parser.AST: newtype Program name
- Cryptol.Parser.AST: newtype Prop n
- Cryptol.Parser.AST: noPos :: NoPos t => t -> t
- Cryptol.Parser.AST: nullIdent :: Ident -> Bool
- Cryptol.Parser.AST: ppSelector :: Selector -> Doc
- Cryptol.Parser.AST: prefixFixity :: PrefixOp -> Fixity
- Cryptol.Parser.AST: psFixity :: PropSyn name -> Maybe Fixity
- Cryptol.Parser.AST: psName :: PropSyn name -> Located name
- Cryptol.Parser.AST: tsFixity :: TySyn name -> Maybe Fixity
- Cryptol.Parser.AST: tsName :: TySyn name -> Located name
- Cryptol.Parser.AST: type Import = ImportG ModName
- Cryptol.Parser.AST: type LBindDef = Located (BindDef PName)
- Cryptol.Parser.AST: type LIdent = Located Ident
- Cryptol.Parser.AST: type LPName = Located PName
- Cryptol.Parser.AST: type LString = Located String
- Cryptol.Parser.AST: type Module = ModuleG ModName
- Cryptol.Parser.AST: type ModuleInstance name = Map name name
- Cryptol.Parser.ExpandPropGuards: NestedConstraintGuard :: Located PName -> Error
- Cryptol.Parser.ExpandPropGuards: NoSignature :: Located PName -> Error
- Cryptol.Parser.ExpandPropGuards: checkNestedGuardsInBind :: Bind PName -> ExpandPropGuardsM ()
- Cryptol.Parser.ExpandPropGuards: checkNestedGuardsInDecl :: Decl PName -> ExpandPropGuardsM ()
- Cryptol.Parser.ExpandPropGuards: checkNestedGuardsInExpr :: Expr PName -> ExpandPropGuardsM ()
- Cryptol.Parser.ExpandPropGuards: data Error
- Cryptol.Parser.ExpandPropGuards: expandBind :: Bind PName -> ExpandPropGuardsM [Bind PName]
- Cryptol.Parser.ExpandPropGuards: expandDecl :: Decl PName -> ExpandPropGuardsM [Decl PName]
- Cryptol.Parser.ExpandPropGuards: expandModuleDef :: ModuleDefinition PName -> ExpandPropGuardsM (ModuleDefinition PName)
- Cryptol.Parser.ExpandPropGuards: expandPropGuards :: ModuleG mname PName -> ExpandPropGuardsM (ModuleG mname PName)
- Cryptol.Parser.ExpandPropGuards: expandTopDecl :: TopDecl PName -> ExpandPropGuardsM [TopDecl PName]
- Cryptol.Parser.ExpandPropGuards: instance Control.DeepSeq.NFData Cryptol.Parser.ExpandPropGuards.Error
- Cryptol.Parser.ExpandPropGuards: instance Cryptol.Utils.PP.PP Cryptol.Parser.ExpandPropGuards.Error
- Cryptol.Parser.ExpandPropGuards: instance GHC.Generics.Generic Cryptol.Parser.ExpandPropGuards.Error
- Cryptol.Parser.ExpandPropGuards: instance GHC.Show.Show Cryptol.Parser.ExpandPropGuards.Error
- Cryptol.Parser.ExpandPropGuards: newName :: Located PName -> [Prop PName] -> ExpandPropGuardsM (Located PName)
- Cryptol.Parser.ExpandPropGuards: patternToExpr :: Pattern PName -> Expr PName
- Cryptol.Parser.ExpandPropGuards: runExpandPropGuardsM :: ExpandPropGuardsM a -> Either Error a
- Cryptol.Parser.ExpandPropGuards: type ExpandPropGuardsM a = Either Error a
- Cryptol.Parser.Layout: Explicit :: TokenT -> Block
- Cryptol.Parser.Layout: Virtual :: Int -> Block
- Cryptol.Parser.Layout: data Block
- Cryptol.Parser.Layout: endsLayout :: TokenT -> Bool
- Cryptol.Parser.Layout: errTok :: Range -> TokenErr -> Located Token
- Cryptol.Parser.Layout: instance GHC.Show.Show Cryptol.Parser.Layout.Block
- Cryptol.Parser.Layout: layout :: Bool -> [Located Token] -> [Located Token]
- Cryptol.Parser.Layout: startsLayout :: TokenT -> Bool
- Cryptol.Parser.Layout: startsParenBlock :: TokenT -> Maybe TokenT
- Cryptol.Parser.Layout: virt :: Range -> TokenV -> Located Token
- Cryptol.Parser.Lexer: ArrL :: TokenSym
- Cryptol.Parser.Lexer: ArrR :: TokenSym
- Cryptol.Parser.Lexer: BackTick :: TokenSym
- Cryptol.Parser.Lexer: Bar :: TokenSym
- Cryptol.Parser.Lexer: BlockComment :: TokenW
- Cryptol.Parser.Lexer: BracketL :: TokenSym
- Cryptol.Parser.Lexer: BracketR :: TokenSym
- Cryptol.Parser.Lexer: ChrLit :: !Char -> TokenT
- Cryptol.Parser.Lexer: Colon :: TokenSym
- Cryptol.Parser.Lexer: Comma :: TokenSym
- Cryptol.Parser.Lexer: Config :: !FilePath -> !Position -> !Layout -> PreProc -> [FilePath] -> Bool -> Config
- Cryptol.Parser.Lexer: CurlyL :: TokenSym
- Cryptol.Parser.Lexer: CurlyR :: TokenSym
- Cryptol.Parser.Lexer: DocStr :: TokenW
- Cryptol.Parser.Lexer: Dot :: TokenSym
- Cryptol.Parser.Lexer: DotDot :: TokenSym
- Cryptol.Parser.Lexer: DotDotDot :: TokenSym
- Cryptol.Parser.Lexer: DotDotGt :: TokenSym
- Cryptol.Parser.Lexer: DotDotLt :: TokenSym
- Cryptol.Parser.Lexer: EOF :: TokenT
- Cryptol.Parser.Lexer: EqDef :: TokenSym
- Cryptol.Parser.Lexer: Err :: !TokenErr -> TokenT
- Cryptol.Parser.Lexer: FatArrR :: TokenSym
- Cryptol.Parser.Lexer: Frac :: !Rational -> !Int -> TokenT
- Cryptol.Parser.Lexer: Gt :: TokenSym
- Cryptol.Parser.Lexer: Ident :: ![Text] -> !Text -> TokenT
- Cryptol.Parser.Lexer: InvalidChar :: TokenErr
- Cryptol.Parser.Lexer: InvalidIndentation :: TokenT -> TokenErr
- Cryptol.Parser.Lexer: InvalidString :: TokenErr
- Cryptol.Parser.Lexer: KW :: !TokenKW -> TokenT
- Cryptol.Parser.Lexer: KW_Prop :: TokenKW
- Cryptol.Parser.Lexer: KW_as :: TokenKW
- Cryptol.Parser.Lexer: KW_by :: TokenKW
- Cryptol.Parser.Lexer: KW_case :: TokenKW
- Cryptol.Parser.Lexer: KW_constraint :: TokenKW
- Cryptol.Parser.Lexer: KW_down :: TokenKW
- Cryptol.Parser.Lexer: KW_else :: TokenKW
- Cryptol.Parser.Lexer: KW_enum :: TokenKW
- Cryptol.Parser.Lexer: KW_fin :: TokenKW
- Cryptol.Parser.Lexer: KW_foreign :: TokenKW
- Cryptol.Parser.Lexer: KW_hiding :: TokenKW
- Cryptol.Parser.Lexer: KW_if :: TokenKW
- Cryptol.Parser.Lexer: KW_import :: TokenKW
- Cryptol.Parser.Lexer: KW_include :: TokenKW
- Cryptol.Parser.Lexer: KW_inf :: TokenKW
- Cryptol.Parser.Lexer: KW_infix :: TokenKW
- Cryptol.Parser.Lexer: KW_infixl :: TokenKW
- Cryptol.Parser.Lexer: KW_infixr :: TokenKW
- Cryptol.Parser.Lexer: KW_interface :: TokenKW
- Cryptol.Parser.Lexer: KW_lengthFromThen :: TokenKW
- Cryptol.Parser.Lexer: KW_lengthFromThenTo :: TokenKW
- Cryptol.Parser.Lexer: KW_let :: TokenKW
- Cryptol.Parser.Lexer: KW_lg2 :: TokenKW
- Cryptol.Parser.Lexer: KW_max :: TokenKW
- Cryptol.Parser.Lexer: KW_min :: TokenKW
- Cryptol.Parser.Lexer: KW_module :: TokenKW
- Cryptol.Parser.Lexer: KW_newtype :: TokenKW
- Cryptol.Parser.Lexer: KW_of :: TokenKW
- Cryptol.Parser.Lexer: KW_parameter :: TokenKW
- Cryptol.Parser.Lexer: KW_pragma :: TokenKW
- Cryptol.Parser.Lexer: KW_primitive :: TokenKW
- Cryptol.Parser.Lexer: KW_private :: TokenKW
- Cryptol.Parser.Lexer: KW_property :: TokenKW
- Cryptol.Parser.Lexer: KW_submodule :: TokenKW
- Cryptol.Parser.Lexer: KW_then :: TokenKW
- Cryptol.Parser.Lexer: KW_type :: TokenKW
- Cryptol.Parser.Lexer: KW_where :: TokenKW
- Cryptol.Parser.Lexer: KW_x :: TokenKW
- Cryptol.Parser.Lexer: Lambda :: TokenSym
- Cryptol.Parser.Lexer: Layout :: Layout
- Cryptol.Parser.Lexer: LexicalError :: TokenErr
- Cryptol.Parser.Lexer: LineComment :: TokenW
- Cryptol.Parser.Lexer: Located :: !Range -> !a -> Located a
- Cryptol.Parser.Lexer: Lt :: TokenSym
- Cryptol.Parser.Lexer: MalformedLiteral :: TokenErr
- Cryptol.Parser.Lexer: MalformedSelector :: TokenErr
- Cryptol.Parser.Lexer: NoLayout :: Layout
- Cryptol.Parser.Lexer: Num :: !Integer -> !Int -> !Int -> TokenT
- Cryptol.Parser.Lexer: Op :: !TokenOp -> TokenT
- Cryptol.Parser.Lexer: ParenL :: TokenSym
- Cryptol.Parser.Lexer: ParenR :: TokenSym
- Cryptol.Parser.Lexer: Selector :: !SelectorType -> TokenT
- Cryptol.Parser.Lexer: Semi :: TokenSym
- Cryptol.Parser.Lexer: Space :: TokenW
- Cryptol.Parser.Lexer: StrLit :: !String -> TokenT
- Cryptol.Parser.Lexer: Sym :: !TokenSym -> TokenT
- Cryptol.Parser.Lexer: Token :: !TokenT -> !Text -> Token
- Cryptol.Parser.Lexer: TriL :: TokenSym
- Cryptol.Parser.Lexer: TriR :: TokenSym
- Cryptol.Parser.Lexer: Underscore :: TokenSym
- Cryptol.Parser.Lexer: UnterminatedChar :: TokenErr
- Cryptol.Parser.Lexer: UnterminatedComment :: TokenErr
- Cryptol.Parser.Lexer: UnterminatedString :: TokenErr
- Cryptol.Parser.Lexer: VCurlyL :: TokenV
- Cryptol.Parser.Lexer: VCurlyR :: TokenV
- Cryptol.Parser.Lexer: VSemi :: TokenV
- Cryptol.Parser.Lexer: Virt :: !TokenV -> TokenT
- Cryptol.Parser.Lexer: White :: !TokenW -> TokenT
- Cryptol.Parser.Lexer: [cfgAutoInclude] :: Config -> [FilePath]
- Cryptol.Parser.Lexer: [cfgLayout] :: Config -> !Layout
- Cryptol.Parser.Lexer: [cfgModuleScope] :: Config -> Bool
- Cryptol.Parser.Lexer: [cfgPreProc] :: Config -> PreProc
- Cryptol.Parser.Lexer: [cfgSource] :: Config -> !FilePath
- Cryptol.Parser.Lexer: [cfgStart] :: Config -> !Position
- Cryptol.Parser.Lexer: [srcRange] :: Located a -> !Range
- Cryptol.Parser.Lexer: [thing] :: Located a -> !a
- Cryptol.Parser.Lexer: [tokenText] :: Token -> !Text
- Cryptol.Parser.Lexer: [tokenType] :: Token -> !TokenT
- Cryptol.Parser.Lexer: data Config
- Cryptol.Parser.Lexer: data Layout
- Cryptol.Parser.Lexer: data Located a
- Cryptol.Parser.Lexer: data Token
- Cryptol.Parser.Lexer: data TokenErr
- Cryptol.Parser.Lexer: data TokenKW
- Cryptol.Parser.Lexer: data TokenSym
- Cryptol.Parser.Lexer: data TokenT
- Cryptol.Parser.Lexer: data TokenV
- Cryptol.Parser.Lexer: data TokenW
- Cryptol.Parser.Lexer: dbgLex :: FilePath -> IO ()
- Cryptol.Parser.Lexer: defaultConfig :: Config
- Cryptol.Parser.Lexer: lexer :: Config -> Text -> ([Located Token], Position)
- Cryptol.Parser.Lexer: primLexer :: Config -> Text -> ([Located Token], Position)
- Cryptol.Parser.Name: ExpandPropGuards :: String -> Pass
- Cryptol.Parser.Name: MonoValues :: Pass
- Cryptol.Parser.Name: NewName :: !Pass -> !Int -> PName
- Cryptol.Parser.Name: NoPat :: Pass
- Cryptol.Parser.Name: Qual :: !ModName -> !Ident -> PName
- Cryptol.Parser.Name: UnQual :: !Ident -> PName
- Cryptol.Parser.Name: data PName
- Cryptol.Parser.Name: data Pass
- Cryptol.Parser.Name: getIdent :: PName -> Ident
- Cryptol.Parser.Name: getModName :: PName -> Maybe ModName
- Cryptol.Parser.Name: instance Control.DeepSeq.NFData Cryptol.Parser.Name.PName
- Cryptol.Parser.Name: instance Control.DeepSeq.NFData Cryptol.Parser.Name.Pass
- Cryptol.Parser.Name: instance Cryptol.Utils.PP.PP Cryptol.Parser.Name.PName
- Cryptol.Parser.Name: instance Cryptol.Utils.PP.PPName Cryptol.Parser.Name.PName
- Cryptol.Parser.Name: instance GHC.Classes.Eq Cryptol.Parser.Name.PName
- Cryptol.Parser.Name: instance GHC.Classes.Eq Cryptol.Parser.Name.Pass
- Cryptol.Parser.Name: instance GHC.Classes.Ord Cryptol.Parser.Name.PName
- Cryptol.Parser.Name: instance GHC.Classes.Ord Cryptol.Parser.Name.Pass
- Cryptol.Parser.Name: instance GHC.Generics.Generic Cryptol.Parser.Name.PName
- Cryptol.Parser.Name: instance GHC.Generics.Generic Cryptol.Parser.Name.Pass
- Cryptol.Parser.Name: instance GHC.Show.Show Cryptol.Parser.Name.PName
- Cryptol.Parser.Name: instance GHC.Show.Show Cryptol.Parser.Name.Pass
- Cryptol.Parser.Name: isGeneratedName :: PName -> Bool
- Cryptol.Parser.Name: mkQual :: ModName -> Ident -> PName
- Cryptol.Parser.Name: mkUnqual :: Ident -> PName
- Cryptol.Parser.Name: origNameToDefPName :: OrigName -> PName
- Cryptol.Parser.Names: boundNames :: Ord name => [name] -> Set name -> Set name
- Cryptol.Parser.Names: boundNamesSet :: Ord name => Set name -> Set name -> Set name
- Cryptol.Parser.Names: namesB :: Ord name => Bind name -> ([Located name], Set name)
- Cryptol.Parser.Names: namesD :: Ord name => Decl name -> ([Located name], Set name)
- Cryptol.Parser.Names: namesEnum :: EnumDecl name -> ([Located name], ())
- Cryptol.Parser.Names: namesNT :: Newtype name -> ([Located name], ())
- Cryptol.Parser.Names: namesP :: Ord name => Pattern name -> ([Located name], Set name)
- Cryptol.Parser.Names: namesP' :: Ord name => Pattern name -> [Located name]
- Cryptol.Parser.Names: tnamesC :: Ord name => Prop name -> Set name
- Cryptol.Parser.Names: tnamesD :: Ord name => Decl name -> ([Located name], Set name)
- Cryptol.Parser.Names: tnamesEnum :: EnumDecl name -> ([Located name], ())
- Cryptol.Parser.Names: tnamesNT :: Newtype name -> ([Located name], ())
- Cryptol.Parser.Names: tnamesT :: Ord name => Type name -> Set name
- Cryptol.Parser.NoInclude: IncludeCycle :: [Located FilePath] -> IncludeError
- Cryptol.Parser.NoInclude: IncludeDecodeFailed :: Located FilePath -> UnicodeException -> IncludeError
- Cryptol.Parser.NoInclude: IncludeFailed :: Located FilePath -> IncludeError
- Cryptol.Parser.NoInclude: IncludeParseError :: ParseError -> IncludeError
- Cryptol.Parser.NoInclude: data IncludeError
- Cryptol.Parser.NoInclude: instance Control.DeepSeq.NFData Cryptol.Parser.NoInclude.IncludeError
- Cryptol.Parser.NoInclude: instance Control.Monad.Fail.MonadFail Cryptol.Parser.NoInclude.NoIncM
- Cryptol.Parser.NoInclude: instance GHC.Base.Applicative Cryptol.Parser.NoInclude.NoIncM
- Cryptol.Parser.NoInclude: instance GHC.Base.Functor Cryptol.Parser.NoInclude.NoIncM
- Cryptol.Parser.NoInclude: instance GHC.Base.Monad Cryptol.Parser.NoInclude.NoIncM
- Cryptol.Parser.NoInclude: instance GHC.Generics.Generic Cryptol.Parser.NoInclude.IncludeError
- Cryptol.Parser.NoInclude: instance GHC.Show.Show Cryptol.Parser.NoInclude.IncludeError
- Cryptol.Parser.NoInclude: ppIncludeError :: IncludeError -> Doc
- Cryptol.Parser.NoInclude: removeIncludesModule :: (FilePath -> IO ByteString) -> FilePath -> Module PName -> IO (Either [IncludeError] (Module PName, Set FilePath))
- Cryptol.Parser.NoPat: FixityNoBind :: Located PName -> Error
- Cryptol.Parser.NoPat: InvalidConstructorPattern :: Range -> Error
- Cryptol.Parser.NoPat: MultipleDocs :: PName -> [Range] -> Error
- Cryptol.Parser.NoPat: MultipleFixities :: PName -> [Range] -> Error
- Cryptol.Parser.NoPat: MultipleSignatures :: PName -> [Located (Schema PName)] -> Error
- Cryptol.Parser.NoPat: PragmaNoBind :: Located PName -> Pragma -> Error
- Cryptol.Parser.NoPat: SignatureNoBind :: Located PName -> Schema PName -> Error
- Cryptol.Parser.NoPat: class RemovePatterns t
- Cryptol.Parser.NoPat: data Error
- Cryptol.Parser.NoPat: instance Control.DeepSeq.NFData Cryptol.Parser.NoPat.Error
- Cryptol.Parser.NoPat: instance Cryptol.Parser.NoPat.RemovePatterns (Cryptol.Parser.AST.Expr Cryptol.Parser.Name.PName)
- Cryptol.Parser.NoPat: instance Cryptol.Parser.NoPat.RemovePatterns (Cryptol.Parser.AST.ModuleG mname Cryptol.Parser.Name.PName)
- Cryptol.Parser.NoPat: instance Cryptol.Parser.NoPat.RemovePatterns (Cryptol.Parser.AST.NestedModule Cryptol.Parser.Name.PName)
- Cryptol.Parser.NoPat: instance Cryptol.Parser.NoPat.RemovePatterns (Cryptol.Parser.AST.Program Cryptol.Parser.Name.PName)
- Cryptol.Parser.NoPat: instance Cryptol.Parser.NoPat.RemovePatterns [Cryptol.Parser.AST.Decl Cryptol.Parser.Name.PName]
- Cryptol.Parser.NoPat: instance Cryptol.Utils.PP.PP Cryptol.Parser.NoPat.Error
- Cryptol.Parser.NoPat: instance GHC.Base.Applicative Cryptol.Parser.NoPat.NoPatM
- Cryptol.Parser.NoPat: instance GHC.Base.Functor Cryptol.Parser.NoPat.NoPatM
- Cryptol.Parser.NoPat: instance GHC.Base.Monad Cryptol.Parser.NoPat.NoPatM
- Cryptol.Parser.NoPat: instance GHC.Base.Semigroup Cryptol.Parser.NoPat.AnnForeign
- Cryptol.Parser.NoPat: instance GHC.Generics.Generic Cryptol.Parser.NoPat.Error
- Cryptol.Parser.NoPat: instance GHC.Show.Show Cryptol.Parser.NoPat.Error
- Cryptol.Parser.NoPat: removePatterns :: RemovePatterns t => t -> (t, [Error])
- Cryptol.Parser.Position: Located :: !Range -> !a -> Located a
- Cryptol.Parser.Position: Position :: !Int -> !Int -> Position
- Cryptol.Parser.Position: Range :: !Position -> !Position -> FilePath -> Range
- Cryptol.Parser.Position: [col] :: Position -> !Int
- Cryptol.Parser.Position: [from] :: Range -> !Position
- Cryptol.Parser.Position: [line] :: Position -> !Int
- Cryptol.Parser.Position: [source] :: Range -> FilePath
- Cryptol.Parser.Position: [srcRange] :: Located a -> !Range
- Cryptol.Parser.Position: [thing] :: Located a -> !a
- Cryptol.Parser.Position: [to] :: Range -> !Position
- Cryptol.Parser.Position: addLoc :: AddLoc t => t -> Range -> t
- Cryptol.Parser.Position: at :: (HasLoc l, AddLoc t) => l -> t -> t
- Cryptol.Parser.Position: class HasLoc t => AddLoc t
- Cryptol.Parser.Position: class HasLoc t
- Cryptol.Parser.Position: combLoc :: (a -> b -> c) -> Located a -> Located b -> Located c
- Cryptol.Parser.Position: data Located a
- Cryptol.Parser.Position: data Position
- Cryptol.Parser.Position: data Range
- Cryptol.Parser.Position: dropLoc :: AddLoc t => t -> t
- Cryptol.Parser.Position: emptyRange :: Range
- Cryptol.Parser.Position: getLoc :: HasLoc t => t -> Maybe Range
- Cryptol.Parser.Position: instance (Cryptol.Parser.Position.HasLoc a, Cryptol.Parser.Position.HasLoc b) => Cryptol.Parser.Position.HasLoc (a, b)
- Cryptol.Parser.Position: instance Control.DeepSeq.NFData Cryptol.Parser.Position.Position
- Cryptol.Parser.Position: instance Control.DeepSeq.NFData Cryptol.Parser.Position.Range
- Cryptol.Parser.Position: instance Control.DeepSeq.NFData a => Control.DeepSeq.NFData (Cryptol.Parser.Position.Located a)
- Cryptol.Parser.Position: instance Cryptol.Parser.Position.AddLoc (Cryptol.Parser.Position.Located a)
- Cryptol.Parser.Position: instance Cryptol.Parser.Position.HasLoc (Cryptol.Parser.Position.Located a)
- Cryptol.Parser.Position: instance Cryptol.Parser.Position.HasLoc Cryptol.Parser.Position.Range
- Cryptol.Parser.Position: instance Cryptol.Parser.Position.HasLoc a => Cryptol.Parser.Position.HasLoc [a]
- Cryptol.Parser.Position: instance Cryptol.Utils.PP.PP Cryptol.Parser.Position.Position
- Cryptol.Parser.Position: instance Cryptol.Utils.PP.PP Cryptol.Parser.Position.Range
- Cryptol.Parser.Position: instance Cryptol.Utils.PP.PP a => Cryptol.Utils.PP.PP (Cryptol.Parser.Position.Located a)
- Cryptol.Parser.Position: instance Cryptol.Utils.PP.PPName a => Cryptol.Utils.PP.PPName (Cryptol.Parser.Position.Located a)
- Cryptol.Parser.Position: instance Data.Foldable.Foldable Cryptol.Parser.Position.Located
- Cryptol.Parser.Position: instance Data.Traversable.Traversable Cryptol.Parser.Position.Located
- Cryptol.Parser.Position: instance GHC.Base.Functor Cryptol.Parser.Position.Located
- Cryptol.Parser.Position: instance GHC.Classes.Eq Cryptol.Parser.Position.Position
- Cryptol.Parser.Position: instance GHC.Classes.Eq Cryptol.Parser.Position.Range
- Cryptol.Parser.Position: instance GHC.Classes.Eq a => GHC.Classes.Eq (Cryptol.Parser.Position.Located a)
- Cryptol.Parser.Position: instance GHC.Classes.Ord Cryptol.Parser.Position.Position
- Cryptol.Parser.Position: instance GHC.Classes.Ord Cryptol.Parser.Position.Range
- Cryptol.Parser.Position: instance GHC.Classes.Ord a => GHC.Classes.Ord (Cryptol.Parser.Position.Located a)
- Cryptol.Parser.Position: instance GHC.Generics.Generic (Cryptol.Parser.Position.Located a)
- Cryptol.Parser.Position: instance GHC.Generics.Generic Cryptol.Parser.Position.Position
- Cryptol.Parser.Position: instance GHC.Generics.Generic Cryptol.Parser.Position.Range
- Cryptol.Parser.Position: instance GHC.Show.Show Cryptol.Parser.Position.Position
- Cryptol.Parser.Position: instance GHC.Show.Show Cryptol.Parser.Position.Range
- Cryptol.Parser.Position: instance GHC.Show.Show a => GHC.Show.Show (Cryptol.Parser.Position.Located a)
- Cryptol.Parser.Position: move :: Position -> Char -> Position
- Cryptol.Parser.Position: moves :: Position -> Text -> Position
- Cryptol.Parser.Position: rComb :: Range -> Range -> Range
- Cryptol.Parser.Position: rCombMaybe :: Maybe Range -> Maybe Range -> Maybe Range
- Cryptol.Parser.Position: rCombs :: [Range] -> Range
- Cryptol.Parser.Position: rangeWithin :: Range -> Range -> Bool
- Cryptol.Parser.Position: start :: Position
- Cryptol.Parser.Selector: ListSel :: Int -> Maybe Int -> Selector
- Cryptol.Parser.Selector: RecordSel :: Ident -> Maybe [Ident] -> Selector
- Cryptol.Parser.Selector: TupleSel :: Int -> Maybe Int -> Selector
- Cryptol.Parser.Selector: data Selector
- Cryptol.Parser.Selector: instance Control.DeepSeq.NFData Cryptol.Parser.Selector.Selector
- Cryptol.Parser.Selector: instance Cryptol.Utils.PP.PP Cryptol.Parser.Selector.Selector
- Cryptol.Parser.Selector: instance GHC.Classes.Eq Cryptol.Parser.Selector.Selector
- Cryptol.Parser.Selector: instance GHC.Classes.Ord Cryptol.Parser.Selector.Selector
- Cryptol.Parser.Selector: instance GHC.Generics.Generic Cryptol.Parser.Selector.Selector
- Cryptol.Parser.Selector: instance GHC.Show.Show Cryptol.Parser.Selector.Selector
- Cryptol.Parser.Selector: ppNestedSels :: [Selector] -> Doc
- Cryptol.Parser.Selector: ppSelector :: Selector -> Doc
- Cryptol.Parser.Selector: selName :: Selector -> Ident
- Cryptol.Parser.Token: ArrL :: TokenSym
- Cryptol.Parser.Token: ArrR :: TokenSym
- Cryptol.Parser.Token: At :: TokenOp
- Cryptol.Parser.Token: BackTick :: TokenSym
- Cryptol.Parser.Token: Bar :: TokenSym
- Cryptol.Parser.Token: BlockComment :: TokenW
- Cryptol.Parser.Token: BracketL :: TokenSym
- Cryptol.Parser.Token: BracketR :: TokenSym
- Cryptol.Parser.Token: ChrLit :: !Char -> TokenT
- Cryptol.Parser.Token: Colon :: TokenSym
- Cryptol.Parser.Token: Comma :: TokenSym
- Cryptol.Parser.Token: Complement :: TokenOp
- Cryptol.Parser.Token: CurlyL :: TokenSym
- Cryptol.Parser.Token: CurlyR :: TokenSym
- Cryptol.Parser.Token: Div :: TokenOp
- Cryptol.Parser.Token: DocStr :: TokenW
- Cryptol.Parser.Token: Dot :: TokenSym
- Cryptol.Parser.Token: DotDot :: TokenSym
- Cryptol.Parser.Token: DotDotDot :: TokenSym
- Cryptol.Parser.Token: DotDotGt :: TokenSym
- Cryptol.Parser.Token: DotDotLt :: TokenSym
- Cryptol.Parser.Token: EOF :: TokenT
- Cryptol.Parser.Token: EqDef :: TokenSym
- Cryptol.Parser.Token: Equal :: TokenOp
- Cryptol.Parser.Token: Err :: !TokenErr -> TokenT
- Cryptol.Parser.Token: Exp :: TokenOp
- Cryptol.Parser.Token: FatArrR :: TokenSym
- Cryptol.Parser.Token: Frac :: !Rational -> !Int -> TokenT
- Cryptol.Parser.Token: GEQ :: TokenOp
- Cryptol.Parser.Token: Gt :: TokenSym
- Cryptol.Parser.Token: Hash :: TokenOp
- Cryptol.Parser.Token: Ident :: ![Text] -> !Text -> TokenT
- Cryptol.Parser.Token: InvalidChar :: TokenErr
- Cryptol.Parser.Token: InvalidIndentation :: TokenT -> TokenErr
- Cryptol.Parser.Token: InvalidString :: TokenErr
- Cryptol.Parser.Token: KW :: !TokenKW -> TokenT
- Cryptol.Parser.Token: KW_Prop :: TokenKW
- Cryptol.Parser.Token: KW_as :: TokenKW
- Cryptol.Parser.Token: KW_by :: TokenKW
- Cryptol.Parser.Token: KW_case :: TokenKW
- Cryptol.Parser.Token: KW_constraint :: TokenKW
- Cryptol.Parser.Token: KW_down :: TokenKW
- Cryptol.Parser.Token: KW_else :: TokenKW
- Cryptol.Parser.Token: KW_enum :: TokenKW
- Cryptol.Parser.Token: KW_fin :: TokenKW
- Cryptol.Parser.Token: KW_foreign :: TokenKW
- Cryptol.Parser.Token: KW_hiding :: TokenKW
- Cryptol.Parser.Token: KW_if :: TokenKW
- Cryptol.Parser.Token: KW_import :: TokenKW
- Cryptol.Parser.Token: KW_include :: TokenKW
- Cryptol.Parser.Token: KW_inf :: TokenKW
- Cryptol.Parser.Token: KW_infix :: TokenKW
- Cryptol.Parser.Token: KW_infixl :: TokenKW
- Cryptol.Parser.Token: KW_infixr :: TokenKW
- Cryptol.Parser.Token: KW_interface :: TokenKW
- Cryptol.Parser.Token: KW_lengthFromThen :: TokenKW
- Cryptol.Parser.Token: KW_lengthFromThenTo :: TokenKW
- Cryptol.Parser.Token: KW_let :: TokenKW
- Cryptol.Parser.Token: KW_lg2 :: TokenKW
- Cryptol.Parser.Token: KW_max :: TokenKW
- Cryptol.Parser.Token: KW_min :: TokenKW
- Cryptol.Parser.Token: KW_module :: TokenKW
- Cryptol.Parser.Token: KW_newtype :: TokenKW
- Cryptol.Parser.Token: KW_of :: TokenKW
- Cryptol.Parser.Token: KW_parameter :: TokenKW
- Cryptol.Parser.Token: KW_pragma :: TokenKW
- Cryptol.Parser.Token: KW_primitive :: TokenKW
- Cryptol.Parser.Token: KW_private :: TokenKW
- Cryptol.Parser.Token: KW_property :: TokenKW
- Cryptol.Parser.Token: KW_submodule :: TokenKW
- Cryptol.Parser.Token: KW_then :: TokenKW
- Cryptol.Parser.Token: KW_type :: TokenKW
- Cryptol.Parser.Token: KW_where :: TokenKW
- Cryptol.Parser.Token: KW_x :: TokenKW
- Cryptol.Parser.Token: LEQ :: TokenOp
- Cryptol.Parser.Token: Lambda :: TokenSym
- Cryptol.Parser.Token: LexicalError :: TokenErr
- Cryptol.Parser.Token: LineComment :: TokenW
- Cryptol.Parser.Token: Lt :: TokenSym
- Cryptol.Parser.Token: MalformedLiteral :: TokenErr
- Cryptol.Parser.Token: MalformedSelector :: TokenErr
- Cryptol.Parser.Token: Minus :: TokenOp
- Cryptol.Parser.Token: Mod :: TokenOp
- Cryptol.Parser.Token: Mul :: TokenOp
- Cryptol.Parser.Token: Num :: !Integer -> !Int -> !Int -> TokenT
- Cryptol.Parser.Token: Op :: !TokenOp -> TokenT
- Cryptol.Parser.Token: Other :: [Text] -> Text -> TokenOp
- Cryptol.Parser.Token: ParenL :: TokenSym
- Cryptol.Parser.Token: ParenR :: TokenSym
- Cryptol.Parser.Token: Plus :: TokenOp
- Cryptol.Parser.Token: RecordSelectorTok :: Text -> SelectorType
- Cryptol.Parser.Token: Selector :: !SelectorType -> TokenT
- Cryptol.Parser.Token: Semi :: TokenSym
- Cryptol.Parser.Token: Space :: TokenW
- Cryptol.Parser.Token: StrLit :: !String -> TokenT
- Cryptol.Parser.Token: Sym :: !TokenSym -> TokenT
- Cryptol.Parser.Token: Token :: !TokenT -> !Text -> Token
- Cryptol.Parser.Token: TriL :: TokenSym
- Cryptol.Parser.Token: TriR :: TokenSym
- Cryptol.Parser.Token: TupleSelectorTok :: Int -> SelectorType
- Cryptol.Parser.Token: Underscore :: TokenSym
- Cryptol.Parser.Token: UnterminatedChar :: TokenErr
- Cryptol.Parser.Token: UnterminatedComment :: TokenErr
- Cryptol.Parser.Token: UnterminatedString :: TokenErr
- Cryptol.Parser.Token: VCurlyL :: TokenV
- Cryptol.Parser.Token: VCurlyR :: TokenV
- Cryptol.Parser.Token: VSemi :: TokenV
- Cryptol.Parser.Token: Virt :: !TokenV -> TokenT
- Cryptol.Parser.Token: White :: !TokenW -> TokenT
- Cryptol.Parser.Token: [tokenText] :: Token -> !Text
- Cryptol.Parser.Token: [tokenType] :: Token -> !TokenT
- Cryptol.Parser.Token: data SelectorType
- Cryptol.Parser.Token: data Token
- Cryptol.Parser.Token: data TokenErr
- Cryptol.Parser.Token: data TokenKW
- Cryptol.Parser.Token: data TokenOp
- Cryptol.Parser.Token: data TokenSym
- Cryptol.Parser.Token: data TokenT
- Cryptol.Parser.Token: data TokenV
- Cryptol.Parser.Token: data TokenW
- Cryptol.Parser.Token: instance Control.DeepSeq.NFData Cryptol.Parser.Token.SelectorType
- Cryptol.Parser.Token: instance Control.DeepSeq.NFData Cryptol.Parser.Token.Token
- Cryptol.Parser.Token: instance Control.DeepSeq.NFData Cryptol.Parser.Token.TokenErr
- Cryptol.Parser.Token: instance Control.DeepSeq.NFData Cryptol.Parser.Token.TokenKW
- Cryptol.Parser.Token: instance Control.DeepSeq.NFData Cryptol.Parser.Token.TokenOp
- Cryptol.Parser.Token: instance Control.DeepSeq.NFData Cryptol.Parser.Token.TokenSym
- Cryptol.Parser.Token: instance Control.DeepSeq.NFData Cryptol.Parser.Token.TokenT
- Cryptol.Parser.Token: instance Control.DeepSeq.NFData Cryptol.Parser.Token.TokenV
- Cryptol.Parser.Token: instance Control.DeepSeq.NFData Cryptol.Parser.Token.TokenW
- Cryptol.Parser.Token: instance Cryptol.Utils.PP.PP Cryptol.Parser.Token.Token
- Cryptol.Parser.Token: instance GHC.Classes.Eq Cryptol.Parser.Token.SelectorType
- Cryptol.Parser.Token: instance GHC.Classes.Eq Cryptol.Parser.Token.TokenErr
- Cryptol.Parser.Token: instance GHC.Classes.Eq Cryptol.Parser.Token.TokenKW
- Cryptol.Parser.Token: instance GHC.Classes.Eq Cryptol.Parser.Token.TokenOp
- Cryptol.Parser.Token: instance GHC.Classes.Eq Cryptol.Parser.Token.TokenSym
- Cryptol.Parser.Token: instance GHC.Classes.Eq Cryptol.Parser.Token.TokenT
- Cryptol.Parser.Token: instance GHC.Classes.Eq Cryptol.Parser.Token.TokenV
- Cryptol.Parser.Token: instance GHC.Classes.Eq Cryptol.Parser.Token.TokenW
- Cryptol.Parser.Token: instance GHC.Generics.Generic Cryptol.Parser.Token.SelectorType
- Cryptol.Parser.Token: instance GHC.Generics.Generic Cryptol.Parser.Token.Token
- Cryptol.Parser.Token: instance GHC.Generics.Generic Cryptol.Parser.Token.TokenErr
- Cryptol.Parser.Token: instance GHC.Generics.Generic Cryptol.Parser.Token.TokenKW
- Cryptol.Parser.Token: instance GHC.Generics.Generic Cryptol.Parser.Token.TokenOp
- Cryptol.Parser.Token: instance GHC.Generics.Generic Cryptol.Parser.Token.TokenSym
- Cryptol.Parser.Token: instance GHC.Generics.Generic Cryptol.Parser.Token.TokenT
- Cryptol.Parser.Token: instance GHC.Generics.Generic Cryptol.Parser.Token.TokenV
- Cryptol.Parser.Token: instance GHC.Generics.Generic Cryptol.Parser.Token.TokenW
- Cryptol.Parser.Token: instance GHC.Show.Show Cryptol.Parser.Token.SelectorType
- Cryptol.Parser.Token: instance GHC.Show.Show Cryptol.Parser.Token.Token
- Cryptol.Parser.Token: instance GHC.Show.Show Cryptol.Parser.Token.TokenErr
- Cryptol.Parser.Token: instance GHC.Show.Show Cryptol.Parser.Token.TokenKW
- Cryptol.Parser.Token: instance GHC.Show.Show Cryptol.Parser.Token.TokenOp
- Cryptol.Parser.Token: instance GHC.Show.Show Cryptol.Parser.Token.TokenSym
- Cryptol.Parser.Token: instance GHC.Show.Show Cryptol.Parser.Token.TokenT
- Cryptol.Parser.Token: instance GHC.Show.Show Cryptol.Parser.Token.TokenV
- Cryptol.Parser.Token: instance GHC.Show.Show Cryptol.Parser.Token.TokenW
- Cryptol.Parser.Unlit: LaTeX :: PreProc
- Cryptol.Parser.Unlit: Markdown :: PreProc
- Cryptol.Parser.Unlit: None :: PreProc
- Cryptol.Parser.Unlit: RST :: PreProc
- Cryptol.Parser.Unlit: data PreProc
- Cryptol.Parser.Unlit: guessPreProc :: FilePath -> PreProc
- Cryptol.Parser.Unlit: knownExts :: [String]
- Cryptol.Parser.Unlit: unLit :: PreProc -> Text -> Text
- Cryptol.Parser.Utils: translateExprToNumT :: Expr PName -> Maybe (Type PName)
- Cryptol.Parser.Utils: widthIdent :: Ident
- Cryptol.PrimeEC: ProjectivePoint :: !BigNat# -> !BigNat# -> !BigNat# -> ProjectivePoint
- Cryptol.PrimeEC: [px] :: ProjectivePoint -> !BigNat#
- Cryptol.PrimeEC: [py] :: ProjectivePoint -> !BigNat#
- Cryptol.PrimeEC: [pz] :: ProjectivePoint -> !BigNat#
- Cryptol.PrimeEC: bigNatToInteger :: BigNat# -> Integer
- Cryptol.PrimeEC: data PrimeModulus
- Cryptol.PrimeEC: data ProjectivePoint
- Cryptol.PrimeEC: ec_add_nonzero :: PrimeModulus -> ProjectivePoint -> ProjectivePoint -> ProjectivePoint
- Cryptol.PrimeEC: ec_double :: PrimeModulus -> ProjectivePoint -> ProjectivePoint
- Cryptol.PrimeEC: ec_mult :: PrimeModulus -> Integer -> ProjectivePoint -> ProjectivePoint
- Cryptol.PrimeEC: ec_twin_mult :: PrimeModulus -> Integer -> ProjectivePoint -> Integer -> ProjectivePoint -> ProjectivePoint
- Cryptol.PrimeEC: integerToBigNat :: Integer -> BigNat#
- Cryptol.PrimeEC: primeModulus :: Integer -> PrimeModulus
- Cryptol.PrimeEC: toProjectivePoint :: Integer -> Integer -> Integer -> ProjectivePoint
- Cryptol.REPL.Browse: BrowseExported :: BrowseHow
- Cryptol.REPL.Browse: BrowseInScope :: BrowseHow
- Cryptol.REPL.Browse: browseModContext :: BrowseHow -> ModContext -> Doc Void
- Cryptol.REPL.Browse: data BrowseHow
- Cryptol.REPL.Command: Ambiguous :: String -> [String] -> Command
- Cryptol.REPL.Command: Command :: (Int -> Maybe FilePath -> REPL CommandResult) -> Command
- Cryptol.REPL.Command: CommandDescr :: [String] -> [String] -> CommandBody -> String -> String -> CommandDescr
- Cryptol.REPL.Command: CommandResult :: Maybe String -> Maybe String -> Bool -> CommandResult
- Cryptol.REPL.Command: DeclsArg :: (String -> REPL CommandResult) -> CommandBody
- Cryptol.REPL.Command: DocstringResult :: DocFor -> [[SubcommandResult]] -> DocstringResult
- Cryptol.REPL.Command: ExprArg :: (String -> (Int, Int) -> Maybe FilePath -> REPL CommandResult) -> CommandBody
- Cryptol.REPL.Command: ExprTypeArg :: (String -> REPL CommandResult) -> CommandBody
- Cryptol.REPL.Command: FileExprArg :: (FilePath -> String -> (Int, Int) -> Maybe FilePath -> REPL CommandResult) -> CommandBody
- Cryptol.REPL.Command: FilenameArg :: (FilePath -> REPL CommandResult) -> CommandBody
- Cryptol.REPL.Command: HelpArg :: (String -> REPL CommandResult) -> CommandBody
- Cryptol.REPL.Command: ModNameArg :: (String -> REPL CommandResult) -> CommandBody
- Cryptol.REPL.Command: NoArg :: REPL CommandResult -> CommandBody
- Cryptol.REPL.Command: OptionArg :: (String -> REPL CommandResult) -> CommandBody
- Cryptol.REPL.Command: QCExhaust :: QCMode
- Cryptol.REPL.Command: QCRandom :: QCMode
- Cryptol.REPL.Command: ShellArg :: (String -> REPL CommandResult) -> CommandBody
- Cryptol.REPL.Command: SubcommandResult :: Text -> CommandResult -> String -> SubcommandResult
- Cryptol.REPL.Command: TestReport :: Doc -> TestResult -> Integer -> Maybe Integer -> TestReport
- Cryptol.REPL.Command: Unknown :: String -> Command
- Cryptol.REPL.Command: [cArgs] :: CommandDescr -> [String]
- Cryptol.REPL.Command: [cBody] :: CommandDescr -> CommandBody
- Cryptol.REPL.Command: [cHelp] :: CommandDescr -> String
- Cryptol.REPL.Command: [cLongHelp] :: CommandDescr -> String
- Cryptol.REPL.Command: [cNames] :: CommandDescr -> [String]
- Cryptol.REPL.Command: [crSuccess] :: CommandResult -> Bool
- Cryptol.REPL.Command: [crType] :: CommandResult -> Maybe String
- Cryptol.REPL.Command: [crValue] :: CommandResult -> Maybe String
- Cryptol.REPL.Command: [drFences] :: DocstringResult -> [[SubcommandResult]]
- Cryptol.REPL.Command: [drName] :: DocstringResult -> DocFor
- Cryptol.REPL.Command: [reportExpr] :: TestReport -> Doc
- Cryptol.REPL.Command: [reportResult] :: TestReport -> TestResult
- Cryptol.REPL.Command: [reportTestsPossible] :: TestReport -> Maybe Integer
- Cryptol.REPL.Command: [reportTestsRun] :: TestReport -> Integer
- Cryptol.REPL.Command: [srInput] :: SubcommandResult -> Text
- Cryptol.REPL.Command: [srLog] :: SubcommandResult -> String
- Cryptol.REPL.Command: [srResult] :: SubcommandResult -> CommandResult
- Cryptol.REPL.Command: checkDocStrings :: LoadedModule -> REPL [DocstringResult]
- Cryptol.REPL.Command: commandList :: [CommandDescr]
- Cryptol.REPL.Command: data Command
- Cryptol.REPL.Command: data CommandBody
- Cryptol.REPL.Command: data CommandDescr
- Cryptol.REPL.Command: data CommandResult
- Cryptol.REPL.Command: data DocstringResult
- Cryptol.REPL.Command: data QCMode
- Cryptol.REPL.Command: data SubcommandResult
- Cryptol.REPL.Command: data TestReport
- Cryptol.REPL.Command: emptyCommandResult :: CommandResult
- Cryptol.REPL.Command: findCommand :: String -> [CommandDescr]
- Cryptol.REPL.Command: findCommandExact :: String -> [CommandDescr]
- Cryptol.REPL.Command: findNbCommand :: Bool -> String -> [CommandDescr]
- Cryptol.REPL.Command: handleCtrlC :: a -> REPL a
- Cryptol.REPL.Command: instance GHC.Classes.Eq Cryptol.REPL.Command.CommandDescr
- Cryptol.REPL.Command: instance GHC.Classes.Eq Cryptol.REPL.Command.QCMode
- Cryptol.REPL.Command: instance GHC.Classes.Ord Cryptol.REPL.Command.CommandDescr
- Cryptol.REPL.Command: instance GHC.Show.Show Cryptol.REPL.Command.CommandDescr
- Cryptol.REPL.Command: instance GHC.Show.Show Cryptol.REPL.Command.CommandResult
- Cryptol.REPL.Command: instance GHC.Show.Show Cryptol.REPL.Command.QCMode
- Cryptol.REPL.Command: interactiveConfig :: Config
- Cryptol.REPL.Command: liftModuleCmd :: ModuleCmd a -> REPL a
- Cryptol.REPL.Command: loadCmd :: FilePath -> REPL CommandResult
- Cryptol.REPL.Command: loadPrelude :: REPL ()
- Cryptol.REPL.Command: moduleCmd :: String -> REPL CommandResult
- Cryptol.REPL.Command: moduleCmdResult :: ModuleRes a -> REPL a
- Cryptol.REPL.Command: offlineProveSat :: String -> QueryType -> Expr -> Schema -> Maybe FilePath -> REPL Bool
- Cryptol.REPL.Command: onlineProveSat :: String -> QueryType -> Expr -> Schema -> Maybe FilePath -> REPL (Maybe String, ProverResult, ProverStats)
- Cryptol.REPL.Command: parseCommand :: (String -> [CommandDescr]) -> String -> Maybe Command
- Cryptol.REPL.Command: proveCmd :: String -> (Int, Int) -> Maybe FilePath -> REPL CommandResult
- Cryptol.REPL.Command: qcCmd :: QCMode -> String -> (Int, Int) -> Maybe FilePath -> REPL CommandResult
- Cryptol.REPL.Command: qcExpr :: QCMode -> Doc -> Expr -> Schema -> REPL TestReport
- Cryptol.REPL.Command: replCheckExpr :: Expr PName -> REPL (Expr Name, Expr, Schema)
- Cryptol.REPL.Command: replEvalExpr :: Expr PName -> REPL (Value, Type)
- Cryptol.REPL.Command: replParse :: (String -> Either ParseError a) -> String -> REPL a
- Cryptol.REPL.Command: replParseExpr :: String -> (Int, Int) -> Maybe FilePath -> REPL (Expr PName)
- Cryptol.REPL.Command: runCommand :: Int -> Maybe FilePath -> Command -> REPL CommandResult
- Cryptol.REPL.Command: sanitize :: String -> String
- Cryptol.REPL.Command: satCmd :: String -> (Int, Int) -> Maybe FilePath -> REPL CommandResult
- Cryptol.REPL.Command: setOptionCmd :: String -> REPL CommandResult
- Cryptol.REPL.Command: splitCommand :: String -> Maybe (Int, String, String)
- Cryptol.REPL.Command: withRWTempFile :: String -> (Handle -> IO a) -> IO a
- Cryptol.REPL.Help: helpForNamed :: PName -> REPL Bool
- Cryptol.REPL.Monad: DirectoryNotFound :: FilePath -> REPLException
- Cryptol.REPL.Monad: EnvBool :: Bool -> EnvVal
- Cryptol.REPL.Monad: EnvNum :: !Int -> EnvVal
- Cryptol.REPL.Monad: EnvProg :: String -> [String] -> EnvVal
- Cryptol.REPL.Monad: EnvString :: String -> EnvVal
- Cryptol.REPL.Monad: EvalError :: EvalErrorEx -> REPLException
- Cryptol.REPL.Monad: EvalInParamModule :: [TParam] -> [Name] -> REPLException
- Cryptol.REPL.Monad: EvalPolyError :: Schema -> REPLException
- Cryptol.REPL.Monad: FileNotFound :: FilePath -> REPLException
- Cryptol.REPL.Monad: InstantiationsNotFound :: Schema -> REPLException
- Cryptol.REPL.Monad: LoadedModule :: Maybe (ImpName Name) -> ModulePath -> LoadedModule
- Cryptol.REPL.Monad: ModuleSystemError :: NameDisp -> ModuleError -> REPLException
- Cryptol.REPL.Monad: NoIncludeError :: [IncludeError] -> REPLException
- Cryptol.REPL.Monad: NoPatError :: [Error] -> REPLException
- Cryptol.REPL.Monad: OptionDescr :: String -> [String] -> EnvVal -> Checker -> String -> (EnvVal -> REPL ()) -> OptionDescr
- Cryptol.REPL.Monad: ParseError :: ParseError -> REPLException
- Cryptol.REPL.Monad: REPL :: (IORef RW -> IO a) -> REPL a
- Cryptol.REPL.Monad: RW :: Maybe LoadedModule -> Maybe FilePath -> Bool -> Bool -> ModuleEnv -> UserEnv -> Logger -> Bool -> REPL () -> Either SBVProverConfig W4ProverConfig -> SolverConfig -> Maybe Solver -> !Int -> TFGen -> RW
- Cryptol.REPL.Monad: SBVError :: String -> REPLException
- Cryptol.REPL.Monad: SBVException :: SBVException -> REPLException
- Cryptol.REPL.Monad: SBVPortfolioException :: SBVPortfolioException -> REPLException
- Cryptol.REPL.Monad: TooWide :: WordTooWide -> REPLException
- Cryptol.REPL.Monad: TypeNotTestable :: Type -> REPLException
- Cryptol.REPL.Monad: Unsupported :: Unsupported -> REPLException
- Cryptol.REPL.Monad: W4Exception :: W4Exception -> REPLException
- Cryptol.REPL.Monad: Z3NotFound :: Smoke
- Cryptol.REPL.Monad: [eCallStacks] :: RW -> Bool
- Cryptol.REPL.Monad: [eContinue] :: RW -> Bool
- Cryptol.REPL.Monad: [eEditFile] :: RW -> Maybe FilePath
- Cryptol.REPL.Monad: [eIsBatch] :: RW -> Bool
- Cryptol.REPL.Monad: [eLoadedMod] :: RW -> Maybe LoadedModule
- Cryptol.REPL.Monad: [eLogger] :: RW -> Logger
- Cryptol.REPL.Monad: [eModuleEnv] :: RW -> ModuleEnv
- Cryptol.REPL.Monad: [eProverConfig] :: RW -> Either SBVProverConfig W4ProverConfig
- Cryptol.REPL.Monad: [eRandomGen] :: RW -> TFGen
- Cryptol.REPL.Monad: [eTCConfig] :: RW -> SolverConfig
- Cryptol.REPL.Monad: [eTCSolverRestarts] :: RW -> !Int
- Cryptol.REPL.Monad: [eTCSolver] :: RW -> Maybe Solver
- Cryptol.REPL.Monad: [eUpdateTitle] :: RW -> REPL ()
- Cryptol.REPL.Monad: [eUserEnv] :: RW -> UserEnv
- Cryptol.REPL.Monad: [lFocus] :: LoadedModule -> Maybe (ImpName Name)
- Cryptol.REPL.Monad: [lPath] :: LoadedModule -> ModulePath
- Cryptol.REPL.Monad: [optAliases] :: OptionDescr -> [String]
- Cryptol.REPL.Monad: [optCheck] :: OptionDescr -> Checker
- Cryptol.REPL.Monad: [optDefault] :: OptionDescr -> EnvVal
- Cryptol.REPL.Monad: [optEff] :: OptionDescr -> EnvVal -> REPL ()
- Cryptol.REPL.Monad: [optHelp] :: OptionDescr -> String
- Cryptol.REPL.Monad: [optName] :: OptionDescr -> String
- Cryptol.REPL.Monad: [unREPL] :: REPL a -> IORef RW -> IO a
- Cryptol.REPL.Monad: asBatch :: REPL a -> REPL a
- Cryptol.REPL.Monad: catch :: REPL a -> (REPLException -> REPL a) -> REPL a
- Cryptol.REPL.Monad: clearEditPath :: REPL ()
- Cryptol.REPL.Monad: clearLoadedMod :: REPL ()
- Cryptol.REPL.Monad: data EnvVal
- Cryptol.REPL.Monad: data LoadedModule
- Cryptol.REPL.Monad: data OptionDescr
- Cryptol.REPL.Monad: data REPLException
- Cryptol.REPL.Monad: data RW
- Cryptol.REPL.Monad: data Smoke
- Cryptol.REPL.Monad: defaultRW :: Bool -> Bool -> Logger -> IO RW
- Cryptol.REPL.Monad: finally :: REPL a -> REPL b -> REPL a
- Cryptol.REPL.Monad: freshName :: Ident -> NameSource -> REPL Name
- Cryptol.REPL.Monad: getCallStacks :: REPL Bool
- Cryptol.REPL.Monad: getDynEnv :: REPL DynamicEnv
- Cryptol.REPL.Monad: getEditPath :: REPL (Maybe FilePath)
- Cryptol.REPL.Monad: getEvalOptsAction :: REPL (IO EvalOpts)
- Cryptol.REPL.Monad: getExprNames :: REPL [String]
- Cryptol.REPL.Monad: getFocusedEnv :: REPL ModContext
- Cryptol.REPL.Monad: getKnownUser :: IsEnvVal a => String -> REPL a
- Cryptol.REPL.Monad: getLoadedMod :: REPL (Maybe LoadedModule)
- Cryptol.REPL.Monad: getLogger :: REPL Logger
- Cryptol.REPL.Monad: getModNames :: REPL [ModName]
- Cryptol.REPL.Monad: getModuleEnv :: REPL ModuleEnv
- Cryptol.REPL.Monad: getPPValOpts :: REPL PPOpts
- Cryptol.REPL.Monad: getPrompt :: REPL String
- Cryptol.REPL.Monad: getPropertyNames :: REPL ([(Name, IfaceDecl)], NameDisp)
- Cryptol.REPL.Monad: getProverConfig :: REPL (Either SBVProverConfig W4ProverConfig)
- Cryptol.REPL.Monad: getPutStr :: REPL (String -> IO ())
- Cryptol.REPL.Monad: getRandomGen :: REPL TFGen
- Cryptol.REPL.Monad: getTCSolver :: REPL Solver
- Cryptol.REPL.Monad: getTypeNames :: REPL [String]
- Cryptol.REPL.Monad: getUser :: String -> REPL EnvVal
- Cryptol.REPL.Monad: getUserProverValidate :: REPL Bool
- Cryptol.REPL.Monad: getUserSatNum :: REPL SatNum
- Cryptol.REPL.Monad: getUserShowProverStats :: REPL Bool
- Cryptol.REPL.Monad: instance Control.Monad.Base.MonadBase GHC.Types.IO Cryptol.REPL.Monad.REPL
- Cryptol.REPL.Monad: instance Control.Monad.Catch.MonadCatch Cryptol.REPL.Monad.REPL
- Cryptol.REPL.Monad: instance Control.Monad.Catch.MonadMask Cryptol.REPL.Monad.REPL
- Cryptol.REPL.Monad: instance Control.Monad.Catch.MonadThrow Cryptol.REPL.Monad.REPL
- Cryptol.REPL.Monad: instance Control.Monad.IO.Class.MonadIO Cryptol.REPL.Monad.REPL
- Cryptol.REPL.Monad: instance Control.Monad.Trans.Control.MonadBaseControl GHC.Types.IO Cryptol.REPL.Monad.REPL
- Cryptol.REPL.Monad: instance Cryptol.ModuleSystem.Name.FreshM Cryptol.REPL.Monad.REPL
- Cryptol.REPL.Monad: instance Cryptol.REPL.Monad.IsEnvVal (GHC.Base.String, [GHC.Base.String])
- Cryptol.REPL.Monad: instance Cryptol.REPL.Monad.IsEnvVal Cryptol.Utils.PP.FieldOrder
- Cryptol.REPL.Monad: instance Cryptol.REPL.Monad.IsEnvVal GHC.Base.String
- Cryptol.REPL.Monad: instance Cryptol.REPL.Monad.IsEnvVal GHC.Types.Bool
- Cryptol.REPL.Monad: instance Cryptol.REPL.Monad.IsEnvVal GHC.Types.Int
- Cryptol.REPL.Monad: instance Cryptol.Utils.PP.PP Cryptol.REPL.Monad.REPLException
- Cryptol.REPL.Monad: instance Cryptol.Utils.PP.PP Cryptol.REPL.Monad.Smoke
- Cryptol.REPL.Monad: instance GHC.Base.Applicative Cryptol.REPL.Monad.REPL
- Cryptol.REPL.Monad: instance GHC.Base.Functor Cryptol.REPL.Monad.REPL
- Cryptol.REPL.Monad: instance GHC.Base.Monad Cryptol.REPL.Monad.REPL
- Cryptol.REPL.Monad: instance GHC.Classes.Eq Cryptol.REPL.Monad.Smoke
- Cryptol.REPL.Monad: instance GHC.Exception.Type.Exception Cryptol.REPL.Monad.REPLException
- Cryptol.REPL.Monad: instance GHC.Show.Show Cryptol.REPL.Monad.EnvVal
- Cryptol.REPL.Monad: instance GHC.Show.Show Cryptol.REPL.Monad.REPLException
- Cryptol.REPL.Monad: instance GHC.Show.Show Cryptol.REPL.Monad.Smoke
- Cryptol.REPL.Monad: io :: IO a -> REPL a
- Cryptol.REPL.Monad: isolated :: REPL a -> REPL a
- Cryptol.REPL.Monad: lName :: LoadedModule -> Maybe ModName
- Cryptol.REPL.Monad: mkUserEnv :: OptionMap -> UserEnv
- Cryptol.REPL.Monad: newtype REPL a
- Cryptol.REPL.Monad: parseFieldOrder :: String -> Maybe FieldOrder
- Cryptol.REPL.Monad: parsePPFloatFormat :: String -> Maybe PPFloatFormat
- Cryptol.REPL.Monad: parseSearchPath :: String -> [String]
- Cryptol.REPL.Monad: prependSearchPath :: [FilePath] -> REPL ()
- Cryptol.REPL.Monad: rPrint :: Show a => a -> REPL ()
- Cryptol.REPL.Monad: rPutStr :: String -> REPL ()
- Cryptol.REPL.Monad: rPutStrLn :: String -> REPL ()
- Cryptol.REPL.Monad: raise :: REPLException -> REPL a
- Cryptol.REPL.Monad: resetTCSolver :: REPL ()
- Cryptol.REPL.Monad: rethrowEvalError :: IO a -> IO a
- Cryptol.REPL.Monad: runREPL :: Bool -> Bool -> Logger -> REPL a -> IO a
- Cryptol.REPL.Monad: setDynEnv :: DynamicEnv -> REPL ()
- Cryptol.REPL.Monad: setEditPath :: FilePath -> REPL ()
- Cryptol.REPL.Monad: setLoadedMod :: LoadedModule -> REPL ()
- Cryptol.REPL.Monad: setLogger :: Logger -> REPL ()
- Cryptol.REPL.Monad: setModuleEnv :: ModuleEnv -> REPL ()
- Cryptol.REPL.Monad: setPutStr :: (String -> IO ()) -> REPL ()
- Cryptol.REPL.Monad: setRandomGen :: TFGen -> REPL ()
- Cryptol.REPL.Monad: setSearchPath :: [FilePath] -> REPL ()
- Cryptol.REPL.Monad: setUpdateREPLTitle :: REPL () -> REPL ()
- Cryptol.REPL.Monad: setUser :: String -> String -> REPL Bool
- Cryptol.REPL.Monad: shouldContinue :: REPL Bool
- Cryptol.REPL.Monad: smokeTest :: REPL [Smoke]
- Cryptol.REPL.Monad: stop :: REPL ()
- Cryptol.REPL.Monad: try :: REPL a -> REPL (Either REPLException a)
- Cryptol.REPL.Monad: tryGetUser :: String -> REPL (Maybe EnvVal)
- Cryptol.REPL.Monad: uniqify :: Name -> REPL Name
- Cryptol.REPL.Monad: unlessBatch :: REPL () -> REPL ()
- Cryptol.REPL.Monad: updateREPLTitle :: REPL ()
- Cryptol.REPL.Monad: userOptions :: OptionMap
- Cryptol.REPL.Monad: userOptionsWithAliases :: OptionMap
- Cryptol.REPL.Monad: validEvalContext :: FreeVars a => a -> REPL ()
- Cryptol.REPL.Monad: whenDebug :: REPL () -> REPL ()
- Cryptol.REPL.Monad: withRandomGen :: (TFGen -> REPL (a, TFGen)) -> REPL a
- Cryptol.REPL.Trie: Node :: Map Char (Trie a) -> Maybe a -> Trie a
- Cryptol.REPL.Trie: data Trie a
- Cryptol.REPL.Trie: emptyTrie :: Trie a
- Cryptol.REPL.Trie: insertTrie :: String -> a -> Trie a -> Trie a
- Cryptol.REPL.Trie: instance GHC.Show.Show a => GHC.Show.Show (Cryptol.REPL.Trie.Trie a)
- Cryptol.REPL.Trie: leaves :: Trie a -> [a]
- Cryptol.REPL.Trie: lookupTrie :: String -> Trie a -> [a]
- Cryptol.REPL.Trie: lookupTrieExact :: String -> Trie a -> [a]
- Cryptol.SHA: SHA256Block :: !Word32 -> !Word32 -> !Word32 -> !Word32 -> !Word32 -> !Word32 -> !Word32 -> !Word32 -> !Word32 -> !Word32 -> !Word32 -> !Word32 -> !Word32 -> !Word32 -> !Word32 -> !Word32 -> SHA256Block
- Cryptol.SHA: SHA256S :: !Word32 -> !Word32 -> !Word32 -> !Word32 -> !Word32 -> !Word32 -> !Word32 -> !Word32 -> SHA256State
- Cryptol.SHA: SHA512Block :: !Word64 -> !Word64 -> !Word64 -> !Word64 -> !Word64 -> !Word64 -> !Word64 -> !Word64 -> !Word64 -> !Word64 -> !Word64 -> !Word64 -> !Word64 -> !Word64 -> !Word64 -> !Word64 -> SHA512Block
- Cryptol.SHA: SHA512S :: !Word64 -> !Word64 -> !Word64 -> !Word64 -> !Word64 -> !Word64 -> !Word64 -> !Word64 -> SHA512State
- Cryptol.SHA: calc_k :: Word64 -> Word64 -> Word64 -> Word64
- Cryptol.SHA: data SHA256Block
- Cryptol.SHA: data SHA256State
- Cryptol.SHA: data SHA512Block
- Cryptol.SHA: data SHA512State
- Cryptol.SHA: fromBigEndianSBS :: (Integral a, Bits a) => ByteString -> a
- Cryptol.SHA: initialSHA224State :: SHA256State
- Cryptol.SHA: initialSHA256State :: SHA256State
- Cryptol.SHA: initialSHA384State :: SHA512State
- Cryptol.SHA: initialSHA512State :: SHA512State
- Cryptol.SHA: padSHA1 :: ByteString -> ByteString
- Cryptol.SHA: padSHA1Chunks :: Int -> [ByteString]
- Cryptol.SHA: padSHA512 :: ByteString -> ByteString
- Cryptol.SHA: padSHA512Chunks :: Int -> [ByteString]
- Cryptol.SHA: processSHA256Block :: SHA256State -> SHA256Block -> SHA256State
- Cryptol.SHA: processSHA512Block :: SHA512State -> SHA512Block -> SHA512State
- Cryptol.SHA: toBigEndianSBS :: (Integral a, Bits a) => Int -> a -> ByteString
- Cryptol.Symbolic: AllSat :: SatNum
- Cryptol.Symbolic: AllSatResult :: [SatResult] -> ProverResult
- Cryptol.Symbolic: CounterExample :: CounterExampleType -> SatResult -> ProverResult
- Cryptol.Symbolic: EmptyResult :: ProverResult
- Cryptol.Symbolic: FEnum :: Vector (ConInfo FinType) -> FinNominalType
- Cryptol.Symbolic: FStruct :: RecordMap Ident FinType -> FinNominalType
- Cryptol.Symbolic: FTBit :: FinType
- Cryptol.Symbolic: FTFloat :: Integer -> Integer -> FinType
- Cryptol.Symbolic: FTIntMod :: Integer -> FinType
- Cryptol.Symbolic: FTInteger :: FinType
- Cryptol.Symbolic: FTNominal :: NominalType -> [Either Nat' TValue] -> FinNominalType -> FinType
- Cryptol.Symbolic: FTRational :: FinType
- Cryptol.Symbolic: FTRecord :: RecordMap Ident FinType -> FinType
- Cryptol.Symbolic: FTSeq :: Integer -> FinType -> FinType
- Cryptol.Symbolic: FTTuple :: [FinType] -> FinType
- Cryptol.Symbolic: FreshVarFns :: IO (SBit sym) -> (Integer -> IO (SWord sym)) -> (Maybe Integer -> Maybe Integer -> IO (SInteger sym)) -> (Integer -> Integer -> IO (SFloat sym)) -> FreshVarFns sym
- Cryptol.Symbolic: PredicateFalsified :: CounterExampleType
- Cryptol.Symbolic: ProveQuery :: QueryType
- Cryptol.Symbolic: ProverCommand :: QueryType -> String -> Bool -> Bool -> !IORef ProverStats -> [DeclGroup] -> Maybe FilePath -> Expr -> Schema -> Bool -> ProverCommand
- Cryptol.Symbolic: ProverError :: String -> ProverResult
- Cryptol.Symbolic: SafetyQuery :: QueryType
- Cryptol.Symbolic: SafetyViolation :: CounterExampleType
- Cryptol.Symbolic: SatQuery :: SatNum -> QueryType
- Cryptol.Symbolic: SomeSat :: Int -> SatNum
- Cryptol.Symbolic: ThmResult :: [TValue] -> ProverResult
- Cryptol.Symbolic: VarBit :: SBit sym -> VarShape sym
- Cryptol.Symbolic: VarEnum :: SInteger sym -> Vector (ConInfo (VarShape sym)) -> VarShape sym
- Cryptol.Symbolic: VarFinSeq :: Integer -> [VarShape sym] -> VarShape sym
- Cryptol.Symbolic: VarFloat :: SFloat sym -> VarShape sym
- Cryptol.Symbolic: VarInteger :: SInteger sym -> VarShape sym
- Cryptol.Symbolic: VarRational :: SInteger sym -> SInteger sym -> VarShape sym
- Cryptol.Symbolic: VarRecord :: RecordMap Ident (VarShape sym) -> VarShape sym
- Cryptol.Symbolic: VarTuple :: [VarShape sym] -> VarShape sym
- Cryptol.Symbolic: VarWord :: SWord sym -> VarShape sym
- Cryptol.Symbolic: [freshBitVar] :: FreshVarFns sym -> IO (SBit sym)
- Cryptol.Symbolic: [freshFloatVar] :: FreshVarFns sym -> Integer -> Integer -> IO (SFloat sym)
- Cryptol.Symbolic: [freshIntegerVar] :: FreshVarFns sym -> Maybe Integer -> Maybe Integer -> IO (SInteger sym)
- Cryptol.Symbolic: [freshWordVar] :: FreshVarFns sym -> Integer -> IO (SWord sym)
- Cryptol.Symbolic: [pcExpr] :: ProverCommand -> Expr
- Cryptol.Symbolic: [pcExtraDecls] :: ProverCommand -> [DeclGroup]
- Cryptol.Symbolic: [pcIgnoreSafety] :: ProverCommand -> Bool
- Cryptol.Symbolic: [pcProverName] :: ProverCommand -> String
- Cryptol.Symbolic: [pcProverStats] :: ProverCommand -> !IORef ProverStats
- Cryptol.Symbolic: [pcQueryType] :: ProverCommand -> QueryType
- Cryptol.Symbolic: [pcSchema] :: ProverCommand -> Schema
- Cryptol.Symbolic: [pcSmtFile] :: ProverCommand -> Maybe FilePath
- Cryptol.Symbolic: [pcValidate] :: ProverCommand -> Bool
- Cryptol.Symbolic: [pcVerbose] :: ProverCommand -> Bool
- Cryptol.Symbolic: computeModel :: PrimMap -> [FinType] -> [VarShape Concrete] -> [(TValue, Expr, Value)]
- Cryptol.Symbolic: data CounterExampleType
- Cryptol.Symbolic: data FinNominalType
- Cryptol.Symbolic: data FinType
- Cryptol.Symbolic: data FreshVarFns sym
- Cryptol.Symbolic: data ProverCommand
- Cryptol.Symbolic: data ProverResult
- Cryptol.Symbolic: data QueryType
- Cryptol.Symbolic: data SatNum
- Cryptol.Symbolic: data VarShape sym
- Cryptol.Symbolic: finType :: TValue -> Maybe FinType
- Cryptol.Symbolic: flattenShape :: VarShape sym -> [VarShape sym] -> [VarShape sym]
- Cryptol.Symbolic: flattenShapes :: [VarShape sym] -> [VarShape sym] -> [VarShape sym]
- Cryptol.Symbolic: freshVar :: Backend sym => FreshVarFns sym -> FinType -> IO (VarShape sym)
- Cryptol.Symbolic: instance GHC.Show.Show Cryptol.Symbolic.QueryType
- Cryptol.Symbolic: instance GHC.Show.Show Cryptol.Symbolic.SatNum
- Cryptol.Symbolic: modelPred :: Backend sym => sym -> [VarShape sym] -> [VarShape Concrete] -> SEval sym (SBit sym)
- Cryptol.Symbolic: predArgTypes :: QueryType -> Schema -> Either String [FinType]
- Cryptol.Symbolic: type ProverStats = NominalDiffTime
- Cryptol.Symbolic: unFinType :: FinType -> TValue
- Cryptol.Symbolic: varModelPred :: Backend sym => sym -> (VarShape sym, VarShape Concrete) -> SEval sym (SBit sym)
- Cryptol.Symbolic: varShapeToValue :: Backend sym => sym -> VarShape sym -> GenValue sym
- Cryptol.Symbolic: varToExpr :: PrimMap -> FinType -> VarShape Concrete -> Expr
- Cryptol.Symbolic.SBV: SBVPortfolioException :: [Either SomeException (Maybe String, String)] -> SBVPortfolioException
- Cryptol.Symbolic.SBV: data SBVProverConfig
- Cryptol.Symbolic.SBV: defaultProver :: SBVProverConfig
- Cryptol.Symbolic.SBV: instance GHC.Exception.Type.Exception Cryptol.Symbolic.SBV.SBVPortfolioException
- Cryptol.Symbolic.SBV: instance GHC.Show.Show Cryptol.Symbolic.SBV.SBVPortfolioException
- Cryptol.Symbolic.SBV: newtype SBVPortfolioException
- Cryptol.Symbolic.SBV: proverNames :: [String]
- Cryptol.Symbolic.SBV: satProve :: SBVProverConfig -> Int -> ProverCommand -> ModuleCmd (Maybe String, ProverResult)
- Cryptol.Symbolic.SBV: satProveOffline :: SBVProverConfig -> ProverCommand -> ModuleCmd (Either String String)
- Cryptol.Symbolic.SBV: setupProver :: String -> IO (Either String ([String], SBVProverConfig))
- Cryptol.Symbolic.What4: W4Ex :: SomeException -> W4Exception
- Cryptol.Symbolic.What4: W4PortfolioFailure :: [Either SomeException (Maybe String, String)] -> W4Exception
- Cryptol.Symbolic.What4: data W4Exception
- Cryptol.Symbolic.What4: data W4ProverConfig
- Cryptol.Symbolic.What4: defaultProver :: W4ProverConfig
- Cryptol.Symbolic.What4: instance Control.Monad.IO.Class.MonadIO Cryptol.Symbolic.What4.MultiSat
- Cryptol.Symbolic.What4: instance GHC.Base.Applicative Cryptol.Symbolic.What4.MultiSat
- Cryptol.Symbolic.What4: instance GHC.Base.Functor Cryptol.Symbolic.What4.MultiSat
- Cryptol.Symbolic.What4: instance GHC.Base.Monad Cryptol.Symbolic.What4.MultiSat
- Cryptol.Symbolic.What4: instance GHC.Exception.Type.Exception Cryptol.Symbolic.What4.W4Exception
- Cryptol.Symbolic.What4: instance GHC.Show.Show Cryptol.Symbolic.What4.W4Exception
- Cryptol.Symbolic.What4: proverNames :: [String]
- Cryptol.Symbolic.What4: satProve :: W4ProverConfig -> Bool -> Bool -> Int -> ProverCommand -> ModuleCmd (Maybe String, ProverResult)
- Cryptol.Symbolic.What4: satProveOffline :: Bool -> Bool -> ProverCommand -> ((Handle -> IO ()) -> IO ()) -> ModuleCmd (Maybe String)
- Cryptol.Symbolic.What4: setupProver :: String -> IO (Either String ([String], W4ProverConfig))
- Cryptol.Testing.Random: FailError :: EvalErrorEx -> [Value] -> TestResult
- Cryptol.Testing.Random: FailFalse :: [Value] -> TestResult
- Cryptol.Testing.Random: Pass :: TestResult
- Cryptol.Testing.Random: data TestResult
- Cryptol.Testing.Random: dumpableType :: forall g. RandomGen g => TValue -> Maybe [Gen g Concrete]
- Cryptol.Testing.Random: exhaustiveTests :: MonadIO m => (Integer -> m ()) -> Value -> [[Value]] -> m (TestResult, Integer)
- Cryptol.Testing.Random: isPass :: TestResult -> Bool
- Cryptol.Testing.Random: randomTests :: (MonadIO m, RandomGen g) => (Integer -> m ()) -> Integer -> Value -> [Gen g Concrete] -> g -> m (TestResult, Integer)
- Cryptol.Testing.Random: randomTests' :: (MonadIO m, RandomGen g) => (Integer -> m ()) -> Integer -> Value -> [Gen g Concrete] -> g -> m ((TestResult, Integer), g)
- Cryptol.Testing.Random: randomValue :: (Backend sym, RandomGen g) => sym -> TValue -> Maybe (Gen g sym)
- Cryptol.Testing.Random: returnTests :: RandomGen g => g -> [Gen g Concrete] -> Value -> Int -> IO [([Value], Value)]
- Cryptol.Testing.Random: returnTests' :: RandomGen g => g -> [Gen g Concrete] -> Value -> Int -> IO ([([Value], Value)], g)
- Cryptol.Testing.Random: testableType :: RandomGen g => TValue -> Maybe (Maybe Integer, [TValue], [[Value]], [Gen g Concrete])
- Cryptol.Testing.Random: type Gen g x = Integer -> g -> (SEval x (GenValue x), g)
- Cryptol.Transform.MonoValues: instance Cryptol.TypeCheck.TypeMap.TrieMap Cryptol.Transform.MonoValues.RewMap' (Cryptol.ModuleSystem.Name.Name, [Cryptol.TypeCheck.Type.Type], GHC.Types.Int)
- Cryptol.Transform.MonoValues: rewModule :: Supply -> Module -> (Module, Supply)
- Cryptol.Transform.Specialize: allDeclGroups :: ModuleEnv -> [DeclGroup]
- Cryptol.Transform.Specialize: destEProofAbs :: Expr -> ([Prop], Expr)
- Cryptol.Transform.Specialize: destEProofApps :: Expr -> (Expr, Int)
- Cryptol.Transform.Specialize: destETAbs :: Expr -> ([TParam], Expr)
- Cryptol.Transform.Specialize: destETApps :: Expr -> (Expr, [Type])
- Cryptol.Transform.Specialize: freshName :: Name -> [Type] -> SpecM Name
- Cryptol.Transform.Specialize: getSpecCache :: Monad m => SpecT m SpecCache
- Cryptol.Transform.Specialize: instantiateExpr :: [Type] -> Int -> Expr -> SpecM Expr
- Cryptol.Transform.Specialize: instantiateSchema :: [Type] -> Int -> Schema -> SpecM Schema
- Cryptol.Transform.Specialize: liftSpecT :: Monad m => ModuleT m a -> SpecT m a
- Cryptol.Transform.Specialize: modify :: StateM m s => (s -> s) -> m ()
- Cryptol.Transform.Specialize: modifySpecCache :: Monad m => (SpecCache -> SpecCache) -> SpecT m ()
- Cryptol.Transform.Specialize: runSpecT :: SpecCache -> SpecT m a -> ModuleT m (a, SpecCache)
- Cryptol.Transform.Specialize: setSpecCache :: Monad m => SpecCache -> SpecT m ()
- Cryptol.Transform.Specialize: specialize :: Expr -> ModuleCmd Expr
- Cryptol.Transform.Specialize: specializeCaseAlt :: CaseAlt -> SpecM CaseAlt
- Cryptol.Transform.Specialize: specializeConst :: Expr -> SpecM Expr
- Cryptol.Transform.Specialize: specializeDeclGroups :: [DeclGroup] -> SpecM ([DeclGroup], Map Name (TypesMap Name))
- Cryptol.Transform.Specialize: specializeEWhere :: Expr -> [DeclGroup] -> SpecM Expr
- Cryptol.Transform.Specialize: specializeExpr :: Expr -> SpecM Expr
- Cryptol.Transform.Specialize: specializeMatch :: Match -> SpecM Match
- Cryptol.Transform.Specialize: traverseSnd :: Functor f => (b -> f c) -> (a, b) -> f (a, c)
- Cryptol.Transform.Specialize: type SpecCache = Map Name (Decl, TypesMap (Name, Maybe Decl))
- Cryptol.Transform.Specialize: type SpecM a = SpecT IO a
- Cryptol.Transform.Specialize: type SpecT m a = StateT SpecCache (ModuleT m) a
- Cryptol.Transform.Specialize: withDeclGroups :: [DeclGroup] -> SpecM a -> SpecM (a, [DeclGroup], Map Name (TypesMap Name))
- Cryptol.TypeCheck: AmbiguousSize :: TVarInfo -> Maybe Type -> Error
- Cryptol.TypeCheck: BadParameterKind :: TParam -> Kind -> Error
- Cryptol.TypeCheck: BareTypeApp :: Error
- Cryptol.TypeCheck: CannotMixPositionalAndNamedTypeParams :: Error
- Cryptol.TypeCheck: DefaultingKind :: TParam Name -> Kind -> Warning
- Cryptol.TypeCheck: DefaultingTo :: !TVarInfo -> Type -> Warning
- Cryptol.TypeCheck: DefaultingWildType :: Kind -> Warning
- Cryptol.TypeCheck: EnumTypeMismatch :: Type -> Error
- Cryptol.TypeCheck: FunctorInstanceBadArgument :: Ident -> Error
- Cryptol.TypeCheck: FunctorInstanceBadBacktick :: BadBacktickInstance -> Error
- Cryptol.TypeCheck: FunctorInstanceMissingArgument :: Ident -> Error
- Cryptol.TypeCheck: FunctorInstanceMissingName :: Namespace -> Ident -> Error
- Cryptol.TypeCheck: InferFailed :: NameMap -> [(Range, Warning)] -> [(Range, Error)] -> InferOutput a
- Cryptol.TypeCheck: InferInput :: Range -> Map Name Schema -> Map Name TySyn -> Map Name NominalType -> !Map Name ModParamNames -> (ModName -> Maybe (ModuleG (), IfaceG ())) -> (ModName -> Maybe ModParamNames) -> !ModParamNames -> NameSeeds -> Bool -> Bool -> [FilePath] -> !PrimMap -> !Supply -> Solver -> InferInput
- Cryptol.TypeCheck: InferOK :: NameMap -> [(Range, Warning)] -> NameSeeds -> Supply -> a -> InferOutput a
- Cryptol.TypeCheck: InvalidConPat :: Int -> Int -> Error
- Cryptol.TypeCheck: InvalidConstraintGuard :: Prop -> Error
- Cryptol.TypeCheck: KindMismatch :: Maybe TypeSource -> Kind -> Kind -> Error
- Cryptol.TypeCheck: MissingModParam :: Ident -> Error
- Cryptol.TypeCheck: MissingModTParam :: Located Ident -> Error
- Cryptol.TypeCheck: MissingModVParam :: Located Ident -> Error
- Cryptol.TypeCheck: NonExhaustivePropGuards :: Name -> Warning
- Cryptol.TypeCheck: NotForAll :: TypeSource -> Path -> TVar -> Type -> Error
- Cryptol.TypeCheck: OverlappingPat :: Maybe Ident -> [Range] -> Error
- Cryptol.TypeCheck: RecursiveType :: TypeSource -> Path -> Type -> Type -> Error
- Cryptol.TypeCheck: RecursiveTypeDecls :: [Name] -> Error
- Cryptol.TypeCheck: RepeatedTypeParameter :: Ident -> [Range] -> Error
- Cryptol.TypeCheck: SchemaMismatch :: Ident -> Schema -> Schema -> Error
- Cryptol.TypeCheck: SolverConfig :: FilePath -> [String] -> Int -> [FilePath] -> SolverConfig
- Cryptol.TypeCheck: TemporaryError :: Doc -> Error
- Cryptol.TypeCheck: TooFewTyParams :: Name -> Int -> Error
- Cryptol.TypeCheck: TooManyPositionalTypeParams :: Error
- Cryptol.TypeCheck: TooManyTySynParams :: Name -> Int -> Error
- Cryptol.TypeCheck: TooManyTypeParams :: Int -> Kind -> Error
- Cryptol.TypeCheck: TyVarWithParams :: Error
- Cryptol.TypeCheck: TypeMismatch :: TypeSource -> Path -> Type -> Type -> Error
- Cryptol.TypeCheck: TypeShadowing :: String -> Name -> String -> Error
- Cryptol.TypeCheck: TypeVariableEscaped :: TypeSource -> Path -> Type -> [TParam] -> Error
- Cryptol.TypeCheck: UncoveredConPat :: [Name] -> Error
- Cryptol.TypeCheck: UndefinedExistVar :: Name -> Error
- Cryptol.TypeCheck: UndefinedTypeParameter :: Located Ident -> Error
- Cryptol.TypeCheck: UnexpectedTypeWildCard :: Error
- Cryptol.TypeCheck: UnsolvableGoals :: [Goal] -> Error
- Cryptol.TypeCheck: UnsolvedDelayedCt :: DelayedCt -> Error
- Cryptol.TypeCheck: UnsolvedGoals :: [Goal] -> Error
- Cryptol.TypeCheck: UnsupportedFFIKind :: TypeSource -> TParam -> Kind -> Error
- Cryptol.TypeCheck: UnsupportedFFIType :: TypeSource -> FFITypeError -> Error
- Cryptol.TypeCheck: WithNames :: a -> NameMap -> WithNames a
- Cryptol.TypeCheck: [inpCallStacks] :: InferInput -> Bool
- Cryptol.TypeCheck: [inpMonoBinds] :: InferInput -> Bool
- Cryptol.TypeCheck: [inpNameSeeds] :: InferInput -> NameSeeds
- Cryptol.TypeCheck: [inpNominalTypes] :: InferInput -> Map Name NominalType
- Cryptol.TypeCheck: [inpParams] :: InferInput -> !ModParamNames
- Cryptol.TypeCheck: [inpPrimNames] :: InferInput -> !PrimMap
- Cryptol.TypeCheck: [inpRange] :: InferInput -> Range
- Cryptol.TypeCheck: [inpSearchPath] :: InferInput -> [FilePath]
- Cryptol.TypeCheck: [inpSignatures] :: InferInput -> !Map Name ModParamNames
- Cryptol.TypeCheck: [inpSolver] :: InferInput -> Solver
- Cryptol.TypeCheck: [inpSupply] :: InferInput -> !Supply
- Cryptol.TypeCheck: [inpTSyns] :: InferInput -> Map Name TySyn
- Cryptol.TypeCheck: [inpTopModules] :: InferInput -> ModName -> Maybe (ModuleG (), IfaceG ())
- Cryptol.TypeCheck: [inpTopSignatures] :: InferInput -> ModName -> Maybe ModParamNames
- Cryptol.TypeCheck: [inpVars] :: InferInput -> Map Name Schema
- Cryptol.TypeCheck: [solverArgs] :: SolverConfig -> [String]
- Cryptol.TypeCheck: [solverPath] :: SolverConfig -> FilePath
- Cryptol.TypeCheck: [solverPreludePath] :: SolverConfig -> [FilePath]
- Cryptol.TypeCheck: [solverVerbose] :: SolverConfig -> Int
- Cryptol.TypeCheck: data Error
- Cryptol.TypeCheck: data InferInput
- Cryptol.TypeCheck: data InferOutput a
- Cryptol.TypeCheck: data NameSeeds
- Cryptol.TypeCheck: data SolverConfig
- Cryptol.TypeCheck: data Warning
- Cryptol.TypeCheck: data WithNames a
- Cryptol.TypeCheck: defaultSolverConfig :: [FilePath] -> SolverConfig
- Cryptol.TypeCheck: nameSeeds :: NameSeeds
- Cryptol.TypeCheck: ppError :: (Range, Error) -> Doc
- Cryptol.TypeCheck: ppNamedError :: NameMap -> (Range, Error) -> Doc
- Cryptol.TypeCheck: ppNamedWarning :: NameMap -> (Range, Warning) -> Doc
- Cryptol.TypeCheck: ppWarning :: (Range, Warning) -> Doc
- Cryptol.TypeCheck: tcDecls :: [TopDecl Name] -> InferInput -> IO (InferOutput ([DeclGroup], Map Name TySyn))
- Cryptol.TypeCheck: tcExpr :: Expr Name -> InferInput -> IO (InferOutput (Expr, Schema))
- Cryptol.TypeCheck: tcModule :: Module Name -> InferInput -> IO (InferOutput TCTopEntity)
- Cryptol.TypeCheck: type NameMap = IntMap String
- Cryptol.TypeCheck.AST: CaseAlt :: [(Name, Type)] -> Expr -> CaseAlt
- Cryptol.TypeCheck.AST: DExpr :: Expr -> DeclDef
- Cryptol.TypeCheck.AST: DForeign :: FFIFunType -> Maybe Expr -> DeclDef
- Cryptol.TypeCheck.AST: DPrim :: DeclDef
- Cryptol.TypeCheck.AST: Decl :: !Name -> Schema -> DeclDef -> [Pragma] -> !Bool -> Maybe Fixity -> Maybe Text -> Decl
- Cryptol.TypeCheck.AST: DocForDef :: Name -> DocFor
- Cryptol.TypeCheck.AST: DocForMod :: ImpName Name -> DocFor
- Cryptol.TypeCheck.AST: DocItem :: ImpName Name -> DocFor -> [Text] -> DocItem
- Cryptol.TypeCheck.AST: EAbs :: Name -> Type -> Expr -> Expr
- Cryptol.TypeCheck.AST: EApp :: Expr -> Expr -> Expr
- Cryptol.TypeCheck.AST: ECase :: Expr -> Map Ident CaseAlt -> Maybe CaseAlt -> Expr
- Cryptol.TypeCheck.AST: EComp :: Type -> Type -> Expr -> [[Match]] -> Expr
- Cryptol.TypeCheck.AST: EIf :: Expr -> Expr -> Expr -> Expr
- Cryptol.TypeCheck.AST: EList :: [Expr] -> Type -> Expr
- Cryptol.TypeCheck.AST: ELocated :: Range -> Expr -> Expr
- Cryptol.TypeCheck.AST: EProofAbs :: Prop -> Expr -> Expr
- Cryptol.TypeCheck.AST: EProofApp :: Expr -> Expr
- Cryptol.TypeCheck.AST: EPropGuards :: [([Prop], Expr)] -> Type -> Expr
- Cryptol.TypeCheck.AST: ERec :: RecordMap Ident Expr -> Expr
- Cryptol.TypeCheck.AST: ESel :: Expr -> Selector -> Expr
- Cryptol.TypeCheck.AST: ESet :: Type -> Expr -> Selector -> Expr -> Expr
- Cryptol.TypeCheck.AST: ETAbs :: TParam -> Expr -> Expr
- Cryptol.TypeCheck.AST: ETApp :: Expr -> Type -> Expr
- Cryptol.TypeCheck.AST: ETuple :: [Expr] -> Expr
- Cryptol.TypeCheck.AST: EVar :: Name -> Expr
- Cryptol.TypeCheck.AST: EWhere :: Expr -> [DeclGroup] -> Expr
- Cryptol.TypeCheck.AST: ExportSpec :: Map Namespace (Set name) -> ExportSpec name
- Cryptol.TypeCheck.AST: Fixity :: !Assoc -> !Int -> Fixity
- Cryptol.TypeCheck.AST: From :: Name -> Type -> Type -> Expr -> Match
- Cryptol.TypeCheck.AST: Hiding :: [Ident] -> ImportSpec
- Cryptol.TypeCheck.AST: ImpNested :: name -> ImpName name
- Cryptol.TypeCheck.AST: ImpTop :: ModName -> ImpName name
- Cryptol.TypeCheck.AST: Import :: !mname -> Maybe ModName -> Maybe ImportSpec -> !Maybe (ModuleInstanceArgs PName) -> Maybe (Located Text) -> ImportG mname
- Cryptol.TypeCheck.AST: Let :: Decl -> Match
- Cryptol.TypeCheck.AST: ListSel :: Int -> Maybe Int -> Selector
- Cryptol.TypeCheck.AST: Module :: !mname -> ![Text] -> ExportSpec Name -> Map Name ModTParam -> Map Name ModVParam -> [Located Prop] -> FunctorParams -> Map Name (ModuleG Name) -> !Set Name -> Map Name TySyn -> Map Name NominalType -> [DeclGroup] -> Map Name Submodule -> !Map Name ModParamNames -> NamingEnv -> ModuleG mname
- Cryptol.TypeCheck.AST: NonRecursive :: Decl -> DeclGroup
- Cryptol.TypeCheck.AST: Only :: [Ident] -> ImportSpec
- Cryptol.TypeCheck.AST: PragmaNote :: String -> Pragma
- Cryptol.TypeCheck.AST: PragmaProperty :: Pragma
- Cryptol.TypeCheck.AST: PrimMap :: Map PrimIdent Name -> Map PrimIdent Name -> PrimMap
- Cryptol.TypeCheck.AST: Private :: ExportType
- Cryptol.TypeCheck.AST: Public :: ExportType
- Cryptol.TypeCheck.AST: RecordSel :: Ident -> Maybe [Ident] -> Selector
- Cryptol.TypeCheck.AST: Recursive :: [Decl] -> DeclGroup
- Cryptol.TypeCheck.AST: Submodule :: IfaceNames Name -> NamingEnv -> Submodule
- Cryptol.TypeCheck.AST: TCAdd :: TFun
- Cryptol.TypeCheck.AST: TCCeilDiv :: TFun
- Cryptol.TypeCheck.AST: TCCeilMod :: TFun
- Cryptol.TypeCheck.AST: TCDiv :: TFun
- Cryptol.TypeCheck.AST: TCExp :: TFun
- Cryptol.TypeCheck.AST: TCLenFromThenTo :: TFun
- Cryptol.TypeCheck.AST: TCMax :: TFun
- Cryptol.TypeCheck.AST: TCMin :: TFun
- Cryptol.TypeCheck.AST: TCMod :: TFun
- Cryptol.TypeCheck.AST: TCMul :: TFun
- Cryptol.TypeCheck.AST: TCSub :: TFun
- Cryptol.TypeCheck.AST: TCTopModule :: ModuleG ModName -> TCTopEntity
- Cryptol.TypeCheck.AST: TCTopSignature :: ModName -> ModParamNames -> TCTopEntity
- Cryptol.TypeCheck.AST: TCWidth :: TFun
- Cryptol.TypeCheck.AST: TupleSel :: Int -> Maybe Int -> Selector
- Cryptol.TypeCheck.AST: [dDefinition] :: Decl -> DeclDef
- Cryptol.TypeCheck.AST: [dDoc] :: Decl -> Maybe Text
- Cryptol.TypeCheck.AST: [dFixity] :: Decl -> Maybe Fixity
- Cryptol.TypeCheck.AST: [dInfix] :: Decl -> !Bool
- Cryptol.TypeCheck.AST: [dName] :: Decl -> !Name
- Cryptol.TypeCheck.AST: [dPragmas] :: Decl -> [Pragma]
- Cryptol.TypeCheck.AST: [dSignature] :: Decl -> Schema
- Cryptol.TypeCheck.AST: [docFor] :: DocItem -> DocFor
- Cryptol.TypeCheck.AST: [docModContext] :: DocItem -> ImpName Name
- Cryptol.TypeCheck.AST: [docText] :: DocItem -> [Text]
- Cryptol.TypeCheck.AST: [fAssoc] :: Fixity -> !Assoc
- Cryptol.TypeCheck.AST: [fLevel] :: Fixity -> !Int
- Cryptol.TypeCheck.AST: [iAs] :: ImportG mname -> Maybe ModName
- Cryptol.TypeCheck.AST: [iDoc] :: ImportG mname -> Maybe (Located Text)
- Cryptol.TypeCheck.AST: [iInst] :: ImportG mname -> !Maybe (ModuleInstanceArgs PName)
- Cryptol.TypeCheck.AST: [iModule] :: ImportG mname -> !mname
- Cryptol.TypeCheck.AST: [iSpec] :: ImportG mname -> Maybe ImportSpec
- Cryptol.TypeCheck.AST: [mDecls] :: ModuleG mname -> [DeclGroup]
- Cryptol.TypeCheck.AST: [mDoc] :: ModuleG mname -> ![Text]
- Cryptol.TypeCheck.AST: [mExports] :: ModuleG mname -> ExportSpec Name
- Cryptol.TypeCheck.AST: [mFunctors] :: ModuleG mname -> Map Name (ModuleG Name)
- Cryptol.TypeCheck.AST: [mInScope] :: ModuleG mname -> NamingEnv
- Cryptol.TypeCheck.AST: [mName] :: ModuleG mname -> !mname
- Cryptol.TypeCheck.AST: [mNested] :: ModuleG mname -> !Set Name
- Cryptol.TypeCheck.AST: [mNominalTypes] :: ModuleG mname -> Map Name NominalType
- Cryptol.TypeCheck.AST: [mParamConstraints] :: ModuleG mname -> [Located Prop]
- Cryptol.TypeCheck.AST: [mParamFuns] :: ModuleG mname -> Map Name ModVParam
- Cryptol.TypeCheck.AST: [mParamTypes] :: ModuleG mname -> Map Name ModTParam
- Cryptol.TypeCheck.AST: [mParams] :: ModuleG mname -> FunctorParams
- Cryptol.TypeCheck.AST: [mSignatures] :: ModuleG mname -> !Map Name ModParamNames
- Cryptol.TypeCheck.AST: [mSubmodules] :: ModuleG mname -> Map Name Submodule
- Cryptol.TypeCheck.AST: [mTySyns] :: ModuleG mname -> Map Name TySyn
- Cryptol.TypeCheck.AST: [primDecls] :: PrimMap -> Map PrimIdent Name
- Cryptol.TypeCheck.AST: [primTypes] :: PrimMap -> Map PrimIdent Name
- Cryptol.TypeCheck.AST: [smIface] :: Submodule -> IfaceNames Name
- Cryptol.TypeCheck.AST: [smInScope] :: Submodule -> NamingEnv
- Cryptol.TypeCheck.AST: data CaseAlt
- Cryptol.TypeCheck.AST: data Decl
- Cryptol.TypeCheck.AST: data DeclDef
- Cryptol.TypeCheck.AST: data DeclGroup
- Cryptol.TypeCheck.AST: data DocFor
- Cryptol.TypeCheck.AST: data DocItem
- Cryptol.TypeCheck.AST: data ExportType
- Cryptol.TypeCheck.AST: data Expr
- Cryptol.TypeCheck.AST: data Fixity
- Cryptol.TypeCheck.AST: data ImpName name
- Cryptol.TypeCheck.AST: data ImportG mname
- Cryptol.TypeCheck.AST: data ImportSpec
- Cryptol.TypeCheck.AST: data Match
- Cryptol.TypeCheck.AST: data ModuleG mname
- Cryptol.TypeCheck.AST: data Name
- Cryptol.TypeCheck.AST: data Pragma
- Cryptol.TypeCheck.AST: data PrimMap
- Cryptol.TypeCheck.AST: data Selector
- Cryptol.TypeCheck.AST: data Submodule
- Cryptol.TypeCheck.AST: data TCTopEntity
- Cryptol.TypeCheck.AST: data TFun
- Cryptol.TypeCheck.AST: dropLocs :: Expr -> Expr
- Cryptol.TypeCheck.AST: eChar :: PrimMap -> Char -> Expr
- Cryptol.TypeCheck.AST: eError :: PrimMap -> Type -> String -> Expr
- Cryptol.TypeCheck.AST: ePrim :: PrimMap -> PrimIdent -> Expr
- Cryptol.TypeCheck.AST: eString :: PrimMap -> String -> Expr
- Cryptol.TypeCheck.AST: emptyModule :: mname -> ModuleG mname
- Cryptol.TypeCheck.AST: findForeignDecls :: ModuleG mname -> [(Name, FFIFunType)]
- Cryptol.TypeCheck.AST: findForeignDeclsInFunctors :: ModuleG mname -> [Name]
- Cryptol.TypeCheck.AST: gatherModuleDocstrings :: Map Name (ImpName Name) -> Module -> [DocItem]
- Cryptol.TypeCheck.AST: groupDecls :: DeclGroup -> [Decl]
- Cryptol.TypeCheck.AST: instance Control.DeepSeq.NFData Cryptol.TypeCheck.AST.CaseAlt
- Cryptol.TypeCheck.AST: instance Control.DeepSeq.NFData Cryptol.TypeCheck.AST.Decl
- Cryptol.TypeCheck.AST: instance Control.DeepSeq.NFData Cryptol.TypeCheck.AST.DeclDef
- Cryptol.TypeCheck.AST: instance Control.DeepSeq.NFData Cryptol.TypeCheck.AST.DeclGroup
- Cryptol.TypeCheck.AST: instance Control.DeepSeq.NFData Cryptol.TypeCheck.AST.Expr
- Cryptol.TypeCheck.AST: instance Control.DeepSeq.NFData Cryptol.TypeCheck.AST.Match
- Cryptol.TypeCheck.AST: instance Control.DeepSeq.NFData Cryptol.TypeCheck.AST.Submodule
- Cryptol.TypeCheck.AST: instance Control.DeepSeq.NFData Cryptol.TypeCheck.AST.TCTopEntity
- Cryptol.TypeCheck.AST: instance Control.DeepSeq.NFData mname => Control.DeepSeq.NFData (Cryptol.TypeCheck.AST.ModuleG mname)
- Cryptol.TypeCheck.AST: instance Cryptol.Parser.Position.HasLoc Cryptol.TypeCheck.AST.Expr
- Cryptol.TypeCheck.AST: instance Cryptol.Utils.PP.PP (Cryptol.TypeCheck.PP.WithNames Cryptol.TypeCheck.AST.Decl)
- Cryptol.TypeCheck.AST: instance Cryptol.Utils.PP.PP (Cryptol.TypeCheck.PP.WithNames Cryptol.TypeCheck.AST.DeclDef)
- Cryptol.TypeCheck.AST: instance Cryptol.Utils.PP.PP (Cryptol.TypeCheck.PP.WithNames Cryptol.TypeCheck.AST.DeclGroup)
- Cryptol.TypeCheck.AST: instance Cryptol.Utils.PP.PP (Cryptol.TypeCheck.PP.WithNames Cryptol.TypeCheck.AST.Expr)
- Cryptol.TypeCheck.AST: instance Cryptol.Utils.PP.PP (Cryptol.TypeCheck.PP.WithNames Cryptol.TypeCheck.AST.Match)
- Cryptol.TypeCheck.AST: instance Cryptol.Utils.PP.PP (Cryptol.TypeCheck.PP.WithNames Cryptol.TypeCheck.AST.TCTopEntity)
- Cryptol.TypeCheck.AST: instance Cryptol.Utils.PP.PP Cryptol.TypeCheck.AST.CaseAlt
- Cryptol.TypeCheck.AST: instance Cryptol.Utils.PP.PP Cryptol.TypeCheck.AST.Decl
- Cryptol.TypeCheck.AST: instance Cryptol.Utils.PP.PP Cryptol.TypeCheck.AST.DeclGroup
- Cryptol.TypeCheck.AST: instance Cryptol.Utils.PP.PP Cryptol.TypeCheck.AST.DocFor
- Cryptol.TypeCheck.AST: instance Cryptol.Utils.PP.PP Cryptol.TypeCheck.AST.Expr
- Cryptol.TypeCheck.AST: instance Cryptol.Utils.PP.PP Cryptol.TypeCheck.AST.Match
- Cryptol.TypeCheck.AST: instance Cryptol.Utils.PP.PP Cryptol.TypeCheck.AST.TCTopEntity
- Cryptol.TypeCheck.AST: instance Cryptol.Utils.PP.PP n => Cryptol.Utils.PP.PP (Cryptol.TypeCheck.AST.ModuleG n)
- Cryptol.TypeCheck.AST: instance Cryptol.Utils.PP.PP n => Cryptol.Utils.PP.PP (Cryptol.TypeCheck.PP.WithNames (Cryptol.TypeCheck.AST.ModuleG n))
- Cryptol.TypeCheck.AST: instance GHC.Generics.Generic (Cryptol.TypeCheck.AST.ModuleG mname)
- Cryptol.TypeCheck.AST: instance GHC.Generics.Generic Cryptol.TypeCheck.AST.CaseAlt
- Cryptol.TypeCheck.AST: instance GHC.Generics.Generic Cryptol.TypeCheck.AST.Decl
- Cryptol.TypeCheck.AST: instance GHC.Generics.Generic Cryptol.TypeCheck.AST.DeclDef
- Cryptol.TypeCheck.AST: instance GHC.Generics.Generic Cryptol.TypeCheck.AST.DeclGroup
- Cryptol.TypeCheck.AST: instance GHC.Generics.Generic Cryptol.TypeCheck.AST.Expr
- Cryptol.TypeCheck.AST: instance GHC.Generics.Generic Cryptol.TypeCheck.AST.Match
- Cryptol.TypeCheck.AST: instance GHC.Generics.Generic Cryptol.TypeCheck.AST.Submodule
- Cryptol.TypeCheck.AST: instance GHC.Generics.Generic Cryptol.TypeCheck.AST.TCTopEntity
- Cryptol.TypeCheck.AST: instance GHC.Show.Show Cryptol.TypeCheck.AST.CaseAlt
- Cryptol.TypeCheck.AST: instance GHC.Show.Show Cryptol.TypeCheck.AST.Decl
- Cryptol.TypeCheck.AST: instance GHC.Show.Show Cryptol.TypeCheck.AST.DeclDef
- Cryptol.TypeCheck.AST: instance GHC.Show.Show Cryptol.TypeCheck.AST.DeclGroup
- Cryptol.TypeCheck.AST: instance GHC.Show.Show Cryptol.TypeCheck.AST.Expr
- Cryptol.TypeCheck.AST: instance GHC.Show.Show Cryptol.TypeCheck.AST.Match
- Cryptol.TypeCheck.AST: instance GHC.Show.Show Cryptol.TypeCheck.AST.Submodule
- Cryptol.TypeCheck.AST: instance GHC.Show.Show Cryptol.TypeCheck.AST.TCTopEntity
- Cryptol.TypeCheck.AST: instance GHC.Show.Show mname => GHC.Show.Show (Cryptol.TypeCheck.AST.ModuleG mname)
- Cryptol.TypeCheck.AST: isExported :: Ord name => Namespace -> name -> ExportSpec name -> Bool
- Cryptol.TypeCheck.AST: isExportedBind :: Ord name => name -> ExportSpec name -> Bool
- Cryptol.TypeCheck.AST: isExportedType :: Ord name => name -> ExportSpec name -> Bool
- Cryptol.TypeCheck.AST: isParametrizedModule :: ModuleG mname -> Bool
- Cryptol.TypeCheck.AST: newtype ExportSpec name
- Cryptol.TypeCheck.AST: ppLam :: NameMap -> Int -> [TParam] -> [Prop] -> [(Name, Type)] -> Expr -> Doc
- Cryptol.TypeCheck.AST: splitAbs :: Expr -> Maybe ((Name, Type), Expr)
- Cryptol.TypeCheck.AST: splitApp :: Expr -> Maybe (Expr, Expr)
- Cryptol.TypeCheck.AST: splitExprInst :: Expr -> (Expr, [Type], Int)
- Cryptol.TypeCheck.AST: splitLoc :: Expr -> Maybe (Range, Expr)
- Cryptol.TypeCheck.AST: splitProofAbs :: Expr -> Maybe (Prop, Expr)
- Cryptol.TypeCheck.AST: splitProofApp :: Expr -> Maybe ((), Expr)
- Cryptol.TypeCheck.AST: splitTAbs :: Expr -> Maybe (TParam, Expr)
- Cryptol.TypeCheck.AST: splitTApp :: Expr -> Maybe (Type, Expr)
- Cryptol.TypeCheck.AST: splitWhile :: (a -> Maybe (b, a)) -> a -> ([b], a)
- Cryptol.TypeCheck.AST: tcTopEntityToModule :: TCTopEntity -> Module
- Cryptol.TypeCheck.AST: tcTopEntitytName :: TCTopEntity -> ModName
- Cryptol.TypeCheck.AST: type Import = ImportG ModName
- Cryptol.TypeCheck.AST: type Module = ModuleG ModName
- Cryptol.TypeCheck.Default: defaultLiterals :: [TVar] -> [Goal] -> ([TVar], Subst, [Warning])
- Cryptol.TypeCheck.Default: defaultReplExpr' :: Solver -> [TParam] -> [Prop] -> IO (Maybe [(TParam, Type)])
- Cryptol.TypeCheck.Default: flitDefaultCandidates :: Goals -> Map TVar (Maybe ((TVar, Type), Warning))
- Cryptol.TypeCheck.Default: improveByDefaultingWithPure :: [TVar] -> [Goal] -> ([TVar], [Goal], Subst, [Error])
- Cryptol.TypeCheck.Error: AmbiguousSize :: TVarInfo -> Maybe Type -> Error
- Cryptol.TypeCheck.Error: BIAbstractType :: BIWhat
- Cryptol.TypeCheck.Error: BIForeign :: BIWhat
- Cryptol.TypeCheck.Error: BIFunctor :: BIWhat
- Cryptol.TypeCheck.Error: BIInterface :: BIWhat
- Cryptol.TypeCheck.Error: BIMultipleParams :: Ident -> BadBacktickInstance
- Cryptol.TypeCheck.Error: BINested :: [(BIWhat, Name)] -> BadBacktickInstance
- Cryptol.TypeCheck.Error: BIPolymorphicArgument :: Ident -> Ident -> BadBacktickInstance
- Cryptol.TypeCheck.Error: BIPrimitive :: BIWhat
- Cryptol.TypeCheck.Error: BadParameterKind :: TParam -> Kind -> Error
- Cryptol.TypeCheck.Error: BareTypeApp :: Error
- Cryptol.TypeCheck.Error: CannotMixPositionalAndNamedTypeParams :: Error
- Cryptol.TypeCheck.Error: DefaultingKind :: TParam Name -> Kind -> Warning
- Cryptol.TypeCheck.Error: DefaultingTo :: !TVarInfo -> Type -> Warning
- Cryptol.TypeCheck.Error: DefaultingWildType :: Kind -> Warning
- Cryptol.TypeCheck.Error: EnumTypeMismatch :: Type -> Error
- Cryptol.TypeCheck.Error: FunctorInstanceBadArgument :: Ident -> Error
- Cryptol.TypeCheck.Error: FunctorInstanceBadBacktick :: BadBacktickInstance -> Error
- Cryptol.TypeCheck.Error: FunctorInstanceMissingArgument :: Ident -> Error
- Cryptol.TypeCheck.Error: FunctorInstanceMissingName :: Namespace -> Ident -> Error
- Cryptol.TypeCheck.Error: InvalidConPat :: Int -> Int -> Error
- Cryptol.TypeCheck.Error: InvalidConstraintGuard :: Prop -> Error
- Cryptol.TypeCheck.Error: KindMismatch :: Maybe TypeSource -> Kind -> Kind -> Error
- Cryptol.TypeCheck.Error: MissingModParam :: Ident -> Error
- Cryptol.TypeCheck.Error: MissingModTParam :: Located Ident -> Error
- Cryptol.TypeCheck.Error: MissingModVParam :: Located Ident -> Error
- Cryptol.TypeCheck.Error: NonExhaustivePropGuards :: Name -> Warning
- Cryptol.TypeCheck.Error: NotForAll :: TypeSource -> Path -> TVar -> Type -> Error
- Cryptol.TypeCheck.Error: OverlappingPat :: Maybe Ident -> [Range] -> Error
- Cryptol.TypeCheck.Error: RecursiveType :: TypeSource -> Path -> Type -> Type -> Error
- Cryptol.TypeCheck.Error: RecursiveTypeDecls :: [Name] -> Error
- Cryptol.TypeCheck.Error: RepeatedTypeParameter :: Ident -> [Range] -> Error
- Cryptol.TypeCheck.Error: SchemaMismatch :: Ident -> Schema -> Schema -> Error
- Cryptol.TypeCheck.Error: TemporaryError :: Doc -> Error
- Cryptol.TypeCheck.Error: TooFewTyParams :: Name -> Int -> Error
- Cryptol.TypeCheck.Error: TooManyPositionalTypeParams :: Error
- Cryptol.TypeCheck.Error: TooManyTySynParams :: Name -> Int -> Error
- Cryptol.TypeCheck.Error: TooManyTypeParams :: Int -> Kind -> Error
- Cryptol.TypeCheck.Error: TyVarWithParams :: Error
- Cryptol.TypeCheck.Error: TypeMismatch :: TypeSource -> Path -> Type -> Type -> Error
- Cryptol.TypeCheck.Error: TypeShadowing :: String -> Name -> String -> Error
- Cryptol.TypeCheck.Error: TypeVariableEscaped :: TypeSource -> Path -> Type -> [TParam] -> Error
- Cryptol.TypeCheck.Error: UncoveredConPat :: [Name] -> Error
- Cryptol.TypeCheck.Error: UndefinedExistVar :: Name -> Error
- Cryptol.TypeCheck.Error: UndefinedTypeParameter :: Located Ident -> Error
- Cryptol.TypeCheck.Error: UnexpectedTypeWildCard :: Error
- Cryptol.TypeCheck.Error: UnsolvableGoals :: [Goal] -> Error
- Cryptol.TypeCheck.Error: UnsolvedDelayedCt :: DelayedCt -> Error
- Cryptol.TypeCheck.Error: UnsolvedGoals :: [Goal] -> Error
- Cryptol.TypeCheck.Error: UnsupportedFFIKind :: TypeSource -> TParam -> Kind -> Error
- Cryptol.TypeCheck.Error: UnsupportedFFIType :: TypeSource -> FFITypeError -> Error
- Cryptol.TypeCheck.Error: cleanupErrors :: [(Range, Error)] -> [(Range, Error)]
- Cryptol.TypeCheck.Error: computeFreeVarNames :: [(Range, Warning)] -> [(Range, Error)] -> NameMap
- Cryptol.TypeCheck.Error: data BIWhat
- Cryptol.TypeCheck.Error: data BadBacktickInstance
- Cryptol.TypeCheck.Error: data Error
- Cryptol.TypeCheck.Error: data Warning
- Cryptol.TypeCheck.Error: errorImportance :: Error -> Int
- Cryptol.TypeCheck.Error: explainUnsolvable :: NameMap -> [Goal] -> Doc
- Cryptol.TypeCheck.Error: instance Control.DeepSeq.NFData Cryptol.TypeCheck.Error.BIWhat
- Cryptol.TypeCheck.Error: instance Control.DeepSeq.NFData Cryptol.TypeCheck.Error.BadBacktickInstance
- Cryptol.TypeCheck.Error: instance Control.DeepSeq.NFData Cryptol.TypeCheck.Error.Error
- Cryptol.TypeCheck.Error: instance Control.DeepSeq.NFData Cryptol.TypeCheck.Error.Warning
- Cryptol.TypeCheck.Error: instance Cryptol.TypeCheck.Subst.TVars Cryptol.TypeCheck.Error.Error
- Cryptol.TypeCheck.Error: instance Cryptol.TypeCheck.Subst.TVars Cryptol.TypeCheck.Error.Warning
- Cryptol.TypeCheck.Error: instance Cryptol.TypeCheck.Type.FVS Cryptol.TypeCheck.Error.Error
- Cryptol.TypeCheck.Error: instance Cryptol.TypeCheck.Type.FVS Cryptol.TypeCheck.Error.Warning
- Cryptol.TypeCheck.Error: instance Cryptol.Utils.PP.PP (Cryptol.TypeCheck.PP.WithNames Cryptol.TypeCheck.Error.Error)
- Cryptol.TypeCheck.Error: instance Cryptol.Utils.PP.PP (Cryptol.TypeCheck.PP.WithNames Cryptol.TypeCheck.Error.Warning)
- Cryptol.TypeCheck.Error: instance Cryptol.Utils.PP.PP Cryptol.TypeCheck.Error.Error
- Cryptol.TypeCheck.Error: instance Cryptol.Utils.PP.PP Cryptol.TypeCheck.Error.Warning
- Cryptol.TypeCheck.Error: instance GHC.Generics.Generic Cryptol.TypeCheck.Error.BIWhat
- Cryptol.TypeCheck.Error: instance GHC.Generics.Generic Cryptol.TypeCheck.Error.BadBacktickInstance
- Cryptol.TypeCheck.Error: instance GHC.Generics.Generic Cryptol.TypeCheck.Error.Error
- Cryptol.TypeCheck.Error: instance GHC.Generics.Generic Cryptol.TypeCheck.Error.Warning
- Cryptol.TypeCheck.Error: instance GHC.Show.Show Cryptol.TypeCheck.Error.BIWhat
- Cryptol.TypeCheck.Error: instance GHC.Show.Show Cryptol.TypeCheck.Error.BadBacktickInstance
- Cryptol.TypeCheck.Error: instance GHC.Show.Show Cryptol.TypeCheck.Error.Error
- Cryptol.TypeCheck.Error: instance GHC.Show.Show Cryptol.TypeCheck.Error.Warning
- Cryptol.TypeCheck.Error: subsumes :: (Range, Error) -> (Range, Error) -> Bool
- Cryptol.TypeCheck.FFI: toFFIFunType :: Schema -> Either FFITypeError ([Prop], FFIFunType)
- Cryptol.TypeCheck.FFI.Error: FFIBadArrayType :: FFITypeErrorReason
- Cryptol.TypeCheck.FFI.Error: FFIBadComponentTypes :: [FFITypeError] -> FFITypeErrorReason
- Cryptol.TypeCheck.FFI.Error: FFIBadFloatSize :: FFITypeErrorReason
- Cryptol.TypeCheck.FFI.Error: FFIBadType :: FFITypeErrorReason
- Cryptol.TypeCheck.FFI.Error: FFIBadWordSize :: FFITypeErrorReason
- Cryptol.TypeCheck.FFI.Error: FFINotFunction :: FFITypeErrorReason
- Cryptol.TypeCheck.FFI.Error: FFITypeError :: Type -> FFITypeErrorReason -> FFITypeError
- Cryptol.TypeCheck.FFI.Error: data FFITypeError
- Cryptol.TypeCheck.FFI.Error: data FFITypeErrorReason
- Cryptol.TypeCheck.FFI.Error: instance Control.DeepSeq.NFData Cryptol.TypeCheck.FFI.Error.FFITypeError
- Cryptol.TypeCheck.FFI.Error: instance Control.DeepSeq.NFData Cryptol.TypeCheck.FFI.Error.FFITypeErrorReason
- Cryptol.TypeCheck.FFI.Error: instance Cryptol.TypeCheck.Subst.TVars Cryptol.TypeCheck.FFI.Error.FFITypeError
- Cryptol.TypeCheck.FFI.Error: instance Cryptol.TypeCheck.Subst.TVars Cryptol.TypeCheck.FFI.Error.FFITypeErrorReason
- Cryptol.TypeCheck.FFI.Error: instance Cryptol.TypeCheck.Type.FVS Cryptol.TypeCheck.FFI.Error.FFITypeError
- Cryptol.TypeCheck.FFI.Error: instance Cryptol.TypeCheck.Type.FVS Cryptol.TypeCheck.FFI.Error.FFITypeErrorReason
- Cryptol.TypeCheck.FFI.Error: instance Cryptol.Utils.PP.PP (Cryptol.TypeCheck.PP.WithNames Cryptol.TypeCheck.FFI.Error.FFITypeError)
- Cryptol.TypeCheck.FFI.Error: instance Cryptol.Utils.PP.PP (Cryptol.TypeCheck.PP.WithNames Cryptol.TypeCheck.FFI.Error.FFITypeErrorReason)
- Cryptol.TypeCheck.FFI.Error: instance GHC.Generics.Generic Cryptol.TypeCheck.FFI.Error.FFITypeError
- Cryptol.TypeCheck.FFI.Error: instance GHC.Generics.Generic Cryptol.TypeCheck.FFI.Error.FFITypeErrorReason
- Cryptol.TypeCheck.FFI.Error: instance GHC.Show.Show Cryptol.TypeCheck.FFI.Error.FFITypeError
- Cryptol.TypeCheck.FFI.Error: instance GHC.Show.Show Cryptol.TypeCheck.FFI.Error.FFITypeErrorReason
- Cryptol.TypeCheck.FFI.FFIType: FFIArray :: [Type] -> FFIBasicType -> FFIType
- Cryptol.TypeCheck.FFI.FFIType: FFIBasic :: FFIBasicType -> FFIType
- Cryptol.TypeCheck.FFI.FFIType: FFIBasicRef :: FFIBasicRefType -> FFIBasicType
- Cryptol.TypeCheck.FFI.FFIType: FFIBasicVal :: FFIBasicValType -> FFIBasicType
- Cryptol.TypeCheck.FFI.FFIType: FFIBool :: FFIType
- Cryptol.TypeCheck.FFI.FFIType: FFIFloat :: Integer -> Integer -> FFIFloatSize -> FFIBasicValType
- Cryptol.TypeCheck.FFI.FFIType: FFIFloat32 :: FFIFloatSize
- Cryptol.TypeCheck.FFI.FFIType: FFIFloat64 :: FFIFloatSize
- Cryptol.TypeCheck.FFI.FFIType: FFIFunType :: [TParam] -> [FFIType] -> FFIType -> FFIFunType
- Cryptol.TypeCheck.FFI.FFIType: FFIInteger :: Maybe Type -> FFIBasicRefType
- Cryptol.TypeCheck.FFI.FFIType: FFIRational :: FFIBasicRefType
- Cryptol.TypeCheck.FFI.FFIType: FFIRecord :: RecordMap Ident FFIType -> FFIType
- Cryptol.TypeCheck.FFI.FFIType: FFITuple :: [FFIType] -> FFIType
- Cryptol.TypeCheck.FFI.FFIType: FFIWord :: Integer -> FFIWordSize -> FFIBasicValType
- Cryptol.TypeCheck.FFI.FFIType: FFIWord16 :: FFIWordSize
- Cryptol.TypeCheck.FFI.FFIType: FFIWord32 :: FFIWordSize
- Cryptol.TypeCheck.FFI.FFIType: FFIWord64 :: FFIWordSize
- Cryptol.TypeCheck.FFI.FFIType: FFIWord8 :: FFIWordSize
- Cryptol.TypeCheck.FFI.FFIType: [ffiArgTypes] :: FFIFunType -> [FFIType]
- Cryptol.TypeCheck.FFI.FFIType: [ffiRetType] :: FFIFunType -> FFIType
- Cryptol.TypeCheck.FFI.FFIType: [ffiTParams] :: FFIFunType -> [TParam]
- Cryptol.TypeCheck.FFI.FFIType: data FFIBasicRefType
- Cryptol.TypeCheck.FFI.FFIType: data FFIBasicType
- Cryptol.TypeCheck.FFI.FFIType: data FFIBasicValType
- Cryptol.TypeCheck.FFI.FFIType: data FFIFloatSize
- Cryptol.TypeCheck.FFI.FFIType: data FFIFunType
- Cryptol.TypeCheck.FFI.FFIType: data FFIType
- Cryptol.TypeCheck.FFI.FFIType: data FFIWordSize
- Cryptol.TypeCheck.FFI.FFIType: instance Control.DeepSeq.NFData Cryptol.TypeCheck.FFI.FFIType.FFIBasicRefType
- Cryptol.TypeCheck.FFI.FFIType: instance Control.DeepSeq.NFData Cryptol.TypeCheck.FFI.FFIType.FFIBasicType
- Cryptol.TypeCheck.FFI.FFIType: instance Control.DeepSeq.NFData Cryptol.TypeCheck.FFI.FFIType.FFIBasicValType
- Cryptol.TypeCheck.FFI.FFIType: instance Control.DeepSeq.NFData Cryptol.TypeCheck.FFI.FFIType.FFIFloatSize
- Cryptol.TypeCheck.FFI.FFIType: instance Control.DeepSeq.NFData Cryptol.TypeCheck.FFI.FFIType.FFIFunType
- Cryptol.TypeCheck.FFI.FFIType: instance Control.DeepSeq.NFData Cryptol.TypeCheck.FFI.FFIType.FFIType
- Cryptol.TypeCheck.FFI.FFIType: instance Control.DeepSeq.NFData Cryptol.TypeCheck.FFI.FFIType.FFIWordSize
- Cryptol.TypeCheck.FFI.FFIType: instance GHC.Generics.Generic Cryptol.TypeCheck.FFI.FFIType.FFIBasicRefType
- Cryptol.TypeCheck.FFI.FFIType: instance GHC.Generics.Generic Cryptol.TypeCheck.FFI.FFIType.FFIBasicType
- Cryptol.TypeCheck.FFI.FFIType: instance GHC.Generics.Generic Cryptol.TypeCheck.FFI.FFIType.FFIBasicValType
- Cryptol.TypeCheck.FFI.FFIType: instance GHC.Generics.Generic Cryptol.TypeCheck.FFI.FFIType.FFIFloatSize
- Cryptol.TypeCheck.FFI.FFIType: instance GHC.Generics.Generic Cryptol.TypeCheck.FFI.FFIType.FFIFunType
- Cryptol.TypeCheck.FFI.FFIType: instance GHC.Generics.Generic Cryptol.TypeCheck.FFI.FFIType.FFIType
- Cryptol.TypeCheck.FFI.FFIType: instance GHC.Generics.Generic Cryptol.TypeCheck.FFI.FFIType.FFIWordSize
- Cryptol.TypeCheck.FFI.FFIType: instance GHC.Show.Show Cryptol.TypeCheck.FFI.FFIType.FFIBasicRefType
- Cryptol.TypeCheck.FFI.FFIType: instance GHC.Show.Show Cryptol.TypeCheck.FFI.FFIType.FFIBasicType
- Cryptol.TypeCheck.FFI.FFIType: instance GHC.Show.Show Cryptol.TypeCheck.FFI.FFIType.FFIBasicValType
- Cryptol.TypeCheck.FFI.FFIType: instance GHC.Show.Show Cryptol.TypeCheck.FFI.FFIType.FFIFloatSize
- Cryptol.TypeCheck.FFI.FFIType: instance GHC.Show.Show Cryptol.TypeCheck.FFI.FFIType.FFIFunType
- Cryptol.TypeCheck.FFI.FFIType: instance GHC.Show.Show Cryptol.TypeCheck.FFI.FFIType.FFIType
- Cryptol.TypeCheck.FFI.FFIType: instance GHC.Show.Show Cryptol.TypeCheck.FFI.FFIType.FFIWordSize
- Cryptol.TypeCheck.Infer: checkE :: Expr Name -> TypeWithSource -> InferM Expr
- Cryptol.TypeCheck.Infer: checkSigB :: Bind Name -> (Schema, [Goal]) -> InferM Decl
- Cryptol.TypeCheck.Infer: checkTopDecls :: [TopDecl Name] -> InferM ()
- Cryptol.TypeCheck.Infer: inferBinds :: Bool -> Bool -> [Bind Name] -> InferM [Decl]
- Cryptol.TypeCheck.Infer: inferTopModule :: Module Name -> InferM TCTopEntity
- Cryptol.TypeCheck.InferTypes: CtComprehension :: ConstraintSource
- Cryptol.TypeCheck.InferTypes: CtDefaulting :: ConstraintSource
- Cryptol.TypeCheck.InferTypes: CtEnumeration :: ConstraintSource
- Cryptol.TypeCheck.InferTypes: CtExactType :: ConstraintSource
- Cryptol.TypeCheck.InferTypes: CtFFI :: Name -> ConstraintSource
- Cryptol.TypeCheck.InferTypes: CtImprovement :: ConstraintSource
- Cryptol.TypeCheck.InferTypes: CtInst :: Expr -> ConstraintSource
- Cryptol.TypeCheck.InferTypes: CtModuleInstance :: Range -> ConstraintSource
- Cryptol.TypeCheck.InferTypes: CtPartialTypeFun :: Name -> ConstraintSource
- Cryptol.TypeCheck.InferTypes: CtPattern :: TypeSource -> ConstraintSource
- Cryptol.TypeCheck.InferTypes: CtPropGuardsExhaustive :: Name -> ConstraintSource
- Cryptol.TypeCheck.InferTypes: CtSelector :: ConstraintSource
- Cryptol.TypeCheck.InferTypes: CtSplitPat :: ConstraintSource
- Cryptol.TypeCheck.InferTypes: CtTypeSig :: ConstraintSource
- Cryptol.TypeCheck.InferTypes: CurSCC :: Expr -> Type -> VarType
- Cryptol.TypeCheck.InferTypes: DelayedCt :: Maybe Name -> [TParam] -> [Prop] -> [Goal] -> DelayedCt
- Cryptol.TypeCheck.InferTypes: ExtVar :: Schema -> VarType
- Cryptol.TypeCheck.InferTypes: Goal :: ConstraintSource -> Range -> Prop -> Goal
- Cryptol.TypeCheck.InferTypes: Goals :: Set Goal -> Set Prop -> Map TVar LitGoal -> Map TVar LitGoal -> Goals
- Cryptol.TypeCheck.InferTypes: HasGoal :: !Int -> Goal -> HasGoal
- Cryptol.TypeCheck.InferTypes: HasGoalSln :: (Expr -> Expr) -> (Expr -> Expr -> Expr) -> HasGoalSln
- Cryptol.TypeCheck.InferTypes: SolverConfig :: FilePath -> [String] -> Int -> [FilePath] -> SolverConfig
- Cryptol.TypeCheck.InferTypes: [dctAsmps] :: DelayedCt -> [Prop]
- Cryptol.TypeCheck.InferTypes: [dctForall] :: DelayedCt -> [TParam]
- Cryptol.TypeCheck.InferTypes: [dctGoals] :: DelayedCt -> [Goal]
- Cryptol.TypeCheck.InferTypes: [dctSource] :: DelayedCt -> Maybe Name
- Cryptol.TypeCheck.InferTypes: [goalRange] :: Goal -> Range
- Cryptol.TypeCheck.InferTypes: [goalSet] :: Goals -> Set Goal
- Cryptol.TypeCheck.InferTypes: [goalSource] :: Goal -> ConstraintSource
- Cryptol.TypeCheck.InferTypes: [goal] :: Goal -> Prop
- Cryptol.TypeCheck.InferTypes: [hasDoSelect] :: HasGoalSln -> Expr -> Expr
- Cryptol.TypeCheck.InferTypes: [hasDoSet] :: HasGoalSln -> Expr -> Expr -> Expr
- Cryptol.TypeCheck.InferTypes: [hasGoal] :: HasGoal -> Goal
- Cryptol.TypeCheck.InferTypes: [hasName] :: HasGoal -> !Int
- Cryptol.TypeCheck.InferTypes: [literalGoals] :: Goals -> Map TVar LitGoal
- Cryptol.TypeCheck.InferTypes: [literalLessThanGoals] :: Goals -> Map TVar LitGoal
- Cryptol.TypeCheck.InferTypes: [saturatedPropSet] :: Goals -> Set Prop
- Cryptol.TypeCheck.InferTypes: [solverArgs] :: SolverConfig -> [String]
- Cryptol.TypeCheck.InferTypes: [solverPath] :: SolverConfig -> FilePath
- Cryptol.TypeCheck.InferTypes: [solverPreludePath] :: SolverConfig -> [FilePath]
- Cryptol.TypeCheck.InferTypes: [solverVerbose] :: SolverConfig -> Int
- Cryptol.TypeCheck.InferTypes: addTVarsDescsAfter :: FVS t => NameMap -> t -> Doc -> Doc
- Cryptol.TypeCheck.InferTypes: addTVarsDescsBefore :: FVS t => NameMap -> t -> Doc -> Doc
- Cryptol.TypeCheck.InferTypes: cppKind :: Kind -> Doc
- Cryptol.TypeCheck.InferTypes: data ConstraintSource
- Cryptol.TypeCheck.InferTypes: data DelayedCt
- Cryptol.TypeCheck.InferTypes: data Goal
- Cryptol.TypeCheck.InferTypes: data Goals
- Cryptol.TypeCheck.InferTypes: data HasGoal
- Cryptol.TypeCheck.InferTypes: data HasGoalSln
- Cryptol.TypeCheck.InferTypes: data SolverConfig
- Cryptol.TypeCheck.InferTypes: data VarType
- Cryptol.TypeCheck.InferTypes: defaultSolverConfig :: [FilePath] -> SolverConfig
- Cryptol.TypeCheck.InferTypes: emptyGoals :: Goals
- Cryptol.TypeCheck.InferTypes: fromGoals :: Goals -> [Goal]
- Cryptol.TypeCheck.InferTypes: goalToLitGoal :: Goal -> Maybe (TVar, LitGoal)
- Cryptol.TypeCheck.InferTypes: goalToLitLessThanGoal :: Goal -> Maybe (TVar, LitGoal)
- Cryptol.TypeCheck.InferTypes: goalsFromList :: [Goal] -> Goals
- Cryptol.TypeCheck.InferTypes: insertGoal :: Goal -> Goals -> Goals
- Cryptol.TypeCheck.InferTypes: instance Control.DeepSeq.NFData Cryptol.TypeCheck.InferTypes.ConstraintSource
- Cryptol.TypeCheck.InferTypes: instance Control.DeepSeq.NFData Cryptol.TypeCheck.InferTypes.DelayedCt
- Cryptol.TypeCheck.InferTypes: instance Control.DeepSeq.NFData Cryptol.TypeCheck.InferTypes.Goal
- Cryptol.TypeCheck.InferTypes: instance Control.DeepSeq.NFData Cryptol.TypeCheck.InferTypes.SolverConfig
- Cryptol.TypeCheck.InferTypes: instance Cryptol.TypeCheck.Subst.TVars Cryptol.TypeCheck.InferTypes.ConstraintSource
- Cryptol.TypeCheck.InferTypes: instance Cryptol.TypeCheck.Subst.TVars Cryptol.TypeCheck.InferTypes.DelayedCt
- Cryptol.TypeCheck.InferTypes: instance Cryptol.TypeCheck.Subst.TVars Cryptol.TypeCheck.InferTypes.Goal
- Cryptol.TypeCheck.InferTypes: instance Cryptol.TypeCheck.Subst.TVars Cryptol.TypeCheck.InferTypes.Goals
- Cryptol.TypeCheck.InferTypes: instance Cryptol.TypeCheck.Subst.TVars Cryptol.TypeCheck.InferTypes.HasGoal
- Cryptol.TypeCheck.InferTypes: instance Cryptol.TypeCheck.Type.FVS Cryptol.TypeCheck.InferTypes.DelayedCt
- Cryptol.TypeCheck.InferTypes: instance Cryptol.TypeCheck.Type.FVS Cryptol.TypeCheck.InferTypes.Goal
- Cryptol.TypeCheck.InferTypes: instance Cryptol.Utils.PP.PP (Cryptol.TypeCheck.PP.WithNames Cryptol.TypeCheck.InferTypes.DelayedCt)
- Cryptol.TypeCheck.InferTypes: instance Cryptol.Utils.PP.PP (Cryptol.TypeCheck.PP.WithNames Cryptol.TypeCheck.InferTypes.Goal)
- Cryptol.TypeCheck.InferTypes: instance Cryptol.Utils.PP.PP Cryptol.TypeCheck.InferTypes.ConstraintSource
- Cryptol.TypeCheck.InferTypes: instance GHC.Classes.Eq Cryptol.TypeCheck.InferTypes.Goal
- Cryptol.TypeCheck.InferTypes: instance GHC.Classes.Ord Cryptol.TypeCheck.InferTypes.Goal
- Cryptol.TypeCheck.InferTypes: instance GHC.Generics.Generic Cryptol.TypeCheck.InferTypes.ConstraintSource
- Cryptol.TypeCheck.InferTypes: instance GHC.Generics.Generic Cryptol.TypeCheck.InferTypes.DelayedCt
- Cryptol.TypeCheck.InferTypes: instance GHC.Generics.Generic Cryptol.TypeCheck.InferTypes.Goal
- Cryptol.TypeCheck.InferTypes: instance GHC.Generics.Generic Cryptol.TypeCheck.InferTypes.SolverConfig
- Cryptol.TypeCheck.InferTypes: instance GHC.Show.Show Cryptol.TypeCheck.InferTypes.ConstraintSource
- Cryptol.TypeCheck.InferTypes: instance GHC.Show.Show Cryptol.TypeCheck.InferTypes.DelayedCt
- Cryptol.TypeCheck.InferTypes: instance GHC.Show.Show Cryptol.TypeCheck.InferTypes.Goal
- Cryptol.TypeCheck.InferTypes: instance GHC.Show.Show Cryptol.TypeCheck.InferTypes.Goals
- Cryptol.TypeCheck.InferTypes: instance GHC.Show.Show Cryptol.TypeCheck.InferTypes.HasGoal
- Cryptol.TypeCheck.InferTypes: instance GHC.Show.Show Cryptol.TypeCheck.InferTypes.SolverConfig
- Cryptol.TypeCheck.InferTypes: litGoalToGoal :: (TVar, LitGoal) -> Goal
- Cryptol.TypeCheck.InferTypes: litLessThanGoalToGoal :: (TVar, LitGoal) -> Goal
- Cryptol.TypeCheck.InferTypes: nullGoals :: Goals -> Bool
- Cryptol.TypeCheck.InferTypes: ppUse :: Expr -> Doc
- Cryptol.TypeCheck.InferTypes: selSrc :: Selector -> TypeSource
- Cryptol.TypeCheck.InferTypes: type LitGoal = Goal
- Cryptol.TypeCheck.Instantiate: Checked :: Type -> MaybeCheckedType
- Cryptol.TypeCheck.Instantiate: TypeArg :: Maybe (Located Ident) -> MaybeCheckedType -> TypeArg
- Cryptol.TypeCheck.Instantiate: Unchecked :: Type Name -> MaybeCheckedType
- Cryptol.TypeCheck.Instantiate: [tyArgName] :: TypeArg -> Maybe (Located Ident)
- Cryptol.TypeCheck.Instantiate: [tyArgType] :: TypeArg -> MaybeCheckedType
- Cryptol.TypeCheck.Instantiate: data MaybeCheckedType
- Cryptol.TypeCheck.Instantiate: data TypeArg
- Cryptol.TypeCheck.Instantiate: instantiatePCon :: Name -> InferM ([Type], Int, [Type], Type)
- Cryptol.TypeCheck.Instantiate: instantiateWith :: Name -> Expr -> Schema -> [TypeArg] -> InferM (Expr, Type)
- Cryptol.TypeCheck.Instantiate: uncheckedTypeArg :: TypeInst Name -> TypeArg
- Cryptol.TypeCheck.Interface: genIface :: ModuleG name -> IfaceG name
- Cryptol.TypeCheck.Interface: genIfaceNames :: ModuleG name -> IfaceNames name
- Cryptol.TypeCheck.Interface: genIfaceWithNames :: IfaceNames name -> ModuleG ignored -> IfaceG name
- Cryptol.TypeCheck.Interface: genModDefines :: ModuleG name -> Set Name
- Cryptol.TypeCheck.Interface: mkIfaceDecl :: Decl -> IfaceDecl
- Cryptol.TypeCheck.Kind: checkEnum :: EnumDecl Name -> Maybe Text -> InferM NominalType
- Cryptol.TypeCheck.Kind: checkNewtype :: Newtype Name -> Maybe Text -> InferM NominalType
- Cryptol.TypeCheck.Kind: checkParameterConstraints :: [Located (Prop Name)] -> InferM [Located Prop]
- Cryptol.TypeCheck.Kind: checkParameterType :: ParameterType Name -> InferM ModTParam
- Cryptol.TypeCheck.Kind: checkPrimType :: PrimType Name -> Maybe Text -> InferM NominalType
- Cryptol.TypeCheck.Kind: checkPropGuards :: [Located (Prop Name)] -> InferM [Prop]
- Cryptol.TypeCheck.Kind: checkPropSyn :: PropSyn Name -> Maybe Text -> InferM TySyn
- Cryptol.TypeCheck.Kind: checkSchema :: AllowWildCards -> Schema Name -> InferM (Schema, [Goal])
- Cryptol.TypeCheck.Kind: checkTySyn :: TySyn Name -> Maybe Text -> InferM TySyn
- Cryptol.TypeCheck.Kind: checkType :: Type Name -> Maybe Kind -> InferM Type
- Cryptol.TypeCheck.Module: doFunctorInst :: Located (ImpName Name) -> Located (ImpName Name) -> ModuleInstanceArgs Name -> Map Name Name -> NamingEnv -> Maybe Text -> InferM (Maybe TCTopEntity)
- Cryptol.TypeCheck.ModuleBacktickInstance: doBacktickInstance :: Set (MBQual TParam) -> [Prop] -> Map (MBQual Name) Type -> ModuleG (Located (ImpName Name)) -> InferM (ModuleG (Located (ImpName Name)))
- Cryptol.TypeCheck.ModuleBacktickInstance: instance Cryptol.TypeCheck.ModuleBacktickInstance.AddParams Cryptol.TypeCheck.AST.Decl
- Cryptol.TypeCheck.ModuleBacktickInstance: instance Cryptol.TypeCheck.ModuleBacktickInstance.AddParams Cryptol.TypeCheck.AST.DeclGroup
- Cryptol.TypeCheck.ModuleBacktickInstance: instance Cryptol.TypeCheck.ModuleBacktickInstance.AddParams Cryptol.TypeCheck.Type.NominalType
- Cryptol.TypeCheck.ModuleBacktickInstance: instance Cryptol.TypeCheck.ModuleBacktickInstance.AddParams Cryptol.TypeCheck.Type.TySyn
- Cryptol.TypeCheck.ModuleBacktickInstance: instance Cryptol.TypeCheck.ModuleBacktickInstance.AddParams a => Cryptol.TypeCheck.ModuleBacktickInstance.AddParams (Data.Map.Internal.Map Cryptol.ModuleSystem.Name.Name a)
- Cryptol.TypeCheck.ModuleBacktickInstance: instance Cryptol.TypeCheck.ModuleBacktickInstance.AddParams a => Cryptol.TypeCheck.ModuleBacktickInstance.AddParams [a]
- Cryptol.TypeCheck.ModuleBacktickInstance: instance Cryptol.TypeCheck.ModuleBacktickInstance.RewType Cryptol.TypeCheck.Type.Schema
- Cryptol.TypeCheck.ModuleBacktickInstance: instance Cryptol.TypeCheck.ModuleBacktickInstance.RewType Cryptol.TypeCheck.Type.Type
- Cryptol.TypeCheck.ModuleBacktickInstance: instance Cryptol.TypeCheck.ModuleBacktickInstance.RewType a => Cryptol.TypeCheck.ModuleBacktickInstance.RewType [a]
- Cryptol.TypeCheck.ModuleBacktickInstance: instance Cryptol.TypeCheck.ModuleBacktickInstance.RewType b => Cryptol.TypeCheck.ModuleBacktickInstance.RewType (Cryptol.Utils.RecordMap.RecordMap a b)
- Cryptol.TypeCheck.ModuleBacktickInstance: instance Cryptol.TypeCheck.ModuleBacktickInstance.RewVal Cryptol.TypeCheck.AST.CaseAlt
- Cryptol.TypeCheck.ModuleBacktickInstance: instance Cryptol.TypeCheck.ModuleBacktickInstance.RewVal Cryptol.TypeCheck.AST.Decl
- Cryptol.TypeCheck.ModuleBacktickInstance: instance Cryptol.TypeCheck.ModuleBacktickInstance.RewVal Cryptol.TypeCheck.AST.DeclDef
- Cryptol.TypeCheck.ModuleBacktickInstance: instance Cryptol.TypeCheck.ModuleBacktickInstance.RewVal Cryptol.TypeCheck.AST.DeclGroup
- Cryptol.TypeCheck.ModuleBacktickInstance: instance Cryptol.TypeCheck.ModuleBacktickInstance.RewVal Cryptol.TypeCheck.AST.Expr
- Cryptol.TypeCheck.ModuleBacktickInstance: instance Cryptol.TypeCheck.ModuleBacktickInstance.RewVal Cryptol.TypeCheck.AST.Match
- Cryptol.TypeCheck.ModuleBacktickInstance: instance Cryptol.TypeCheck.ModuleBacktickInstance.RewVal a => Cryptol.TypeCheck.ModuleBacktickInstance.RewVal [a]
- Cryptol.TypeCheck.ModuleBacktickInstance: instance Cryptol.TypeCheck.ModuleBacktickInstance.RewVal b => Cryptol.TypeCheck.ModuleBacktickInstance.RewVal (Cryptol.Utils.RecordMap.RecordMap a b)
- Cryptol.TypeCheck.ModuleBacktickInstance: type MBQual a = (Maybe ModName, a)
- Cryptol.TypeCheck.ModuleInstance: class ModuleInstance t
- Cryptol.TypeCheck.ModuleInstance: doInst :: (Su, TVars a, TraverseNames a) => a -> a
- Cryptol.TypeCheck.ModuleInstance: doMap :: (Su, ModuleInstance a) => Map Name a -> Map Name a
- Cryptol.TypeCheck.ModuleInstance: doNameInst :: (Su, TraverseNames a) => a -> a
- Cryptol.TypeCheck.ModuleInstance: doSet :: Su => Set Name -> Set Name
- Cryptol.TypeCheck.ModuleInstance: doTVarInst :: (Su, TVars a) => a -> a
- Cryptol.TypeCheck.ModuleInstance: instance Cryptol.TypeCheck.ModuleInstance.ModuleInstance (Cryptol.TypeCheck.AST.ModuleG name)
- Cryptol.TypeCheck.ModuleInstance: instance Cryptol.TypeCheck.ModuleInstance.ModuleInstance Cryptol.ModuleSystem.Name.Name
- Cryptol.TypeCheck.ModuleInstance: instance Cryptol.TypeCheck.ModuleInstance.ModuleInstance Cryptol.ModuleSystem.NamingEnv.Types.NamingEnv
- Cryptol.TypeCheck.ModuleInstance: instance Cryptol.TypeCheck.ModuleInstance.ModuleInstance Cryptol.TypeCheck.AST.Decl
- Cryptol.TypeCheck.ModuleInstance: instance Cryptol.TypeCheck.ModuleInstance.ModuleInstance Cryptol.TypeCheck.AST.DeclGroup
- Cryptol.TypeCheck.ModuleInstance: instance Cryptol.TypeCheck.ModuleInstance.ModuleInstance Cryptol.TypeCheck.AST.Submodule
- Cryptol.TypeCheck.ModuleInstance: instance Cryptol.TypeCheck.ModuleInstance.ModuleInstance Cryptol.TypeCheck.Type.EnumCon
- Cryptol.TypeCheck.ModuleInstance: instance Cryptol.TypeCheck.ModuleInstance.ModuleInstance Cryptol.TypeCheck.Type.ModParam
- Cryptol.TypeCheck.ModuleInstance: instance Cryptol.TypeCheck.ModuleInstance.ModuleInstance Cryptol.TypeCheck.Type.ModParamNames
- Cryptol.TypeCheck.ModuleInstance: instance Cryptol.TypeCheck.ModuleInstance.ModuleInstance Cryptol.TypeCheck.Type.ModTParam
- Cryptol.TypeCheck.ModuleInstance: instance Cryptol.TypeCheck.ModuleInstance.ModuleInstance Cryptol.TypeCheck.Type.ModVParam
- Cryptol.TypeCheck.ModuleInstance: instance Cryptol.TypeCheck.ModuleInstance.ModuleInstance Cryptol.TypeCheck.Type.NominalType
- Cryptol.TypeCheck.ModuleInstance: instance Cryptol.TypeCheck.ModuleInstance.ModuleInstance Cryptol.TypeCheck.Type.NominalTypeDef
- Cryptol.TypeCheck.ModuleInstance: instance Cryptol.TypeCheck.ModuleInstance.ModuleInstance Cryptol.TypeCheck.Type.Schema
- Cryptol.TypeCheck.ModuleInstance: instance Cryptol.TypeCheck.ModuleInstance.ModuleInstance Cryptol.TypeCheck.Type.StructCon
- Cryptol.TypeCheck.ModuleInstance: instance Cryptol.TypeCheck.ModuleInstance.ModuleInstance Cryptol.TypeCheck.Type.TySyn
- Cryptol.TypeCheck.ModuleInstance: instance Cryptol.TypeCheck.ModuleInstance.ModuleInstance Cryptol.TypeCheck.Type.Type
- Cryptol.TypeCheck.ModuleInstance: instance Cryptol.TypeCheck.ModuleInstance.ModuleInstance a => Cryptol.TypeCheck.ModuleInstance.ModuleInstance (Cryptol.Parser.Position.Located a)
- Cryptol.TypeCheck.ModuleInstance: instance Cryptol.TypeCheck.ModuleInstance.ModuleInstance a => Cryptol.TypeCheck.ModuleInstance.ModuleInstance [a]
- Cryptol.TypeCheck.ModuleInstance: instance Cryptol.TypeCheck.ModuleInstance.ModuleInstance name => Cryptol.TypeCheck.ModuleInstance.ModuleInstance (Cryptol.ModuleSystem.Interface.IfaceNames name)
- Cryptol.TypeCheck.ModuleInstance: instance Cryptol.TypeCheck.ModuleInstance.ModuleInstance name => Cryptol.TypeCheck.ModuleInstance.ModuleInstance (Cryptol.Parser.AST.ImpName name)
- Cryptol.TypeCheck.ModuleInstance: moduleInstance :: (ModuleInstance t, Su) => t -> t
- Cryptol.TypeCheck.ModuleInstance: type Su = (?tVarSu :: Subst, ?nameSu :: Map Name Name)
- Cryptol.TypeCheck.Monad: AllowWildCards :: AllowWildCards
- Cryptol.TypeCheck.Monad: ExternalScope :: ScopeName
- Cryptol.TypeCheck.Monad: IM :: ReaderT RO (StateT RW (ExceptionT [(Range, Error)] IO)) a -> InferM a
- Cryptol.TypeCheck.Monad: InferFailed :: NameMap -> [(Range, Warning)] -> [(Range, Error)] -> InferOutput a
- Cryptol.TypeCheck.Monad: InferInput :: Range -> Map Name Schema -> Map Name TySyn -> Map Name NominalType -> !Map Name ModParamNames -> (ModName -> Maybe (ModuleG (), IfaceG ())) -> (ModName -> Maybe ModParamNames) -> !ModParamNames -> NameSeeds -> Bool -> Bool -> [FilePath] -> !PrimMap -> !Supply -> Solver -> InferInput
- Cryptol.TypeCheck.Monad: InferOK :: NameMap -> [(Range, Warning)] -> NameSeeds -> Supply -> a -> InferOutput a
- Cryptol.TypeCheck.Monad: KM :: ReaderT KRO (StateT KRW InferM) a -> KindM a
- Cryptol.TypeCheck.Monad: KRO :: Map Name TParam -> AllowWildCards -> KRO
- Cryptol.TypeCheck.Monad: KRW :: Map Name Kind -> [(ConstraintSource, [Prop])] -> KRW
- Cryptol.TypeCheck.Monad: LocalScope :: ScopeName
- Cryptol.TypeCheck.Monad: MTopModule :: ModName -> ScopeName
- Cryptol.TypeCheck.Monad: NameSeeds :: !Int -> !Int -> NameSeeds
- Cryptol.TypeCheck.Monad: NoWildCards :: AllowWildCards
- Cryptol.TypeCheck.Monad: RO :: Range -> Map Name VarType -> [TParam] -> (ModName -> Maybe (ModuleG (), IfaceG ())) -> (ModName -> Maybe ModParamNames) -> ModuleG ScopeName -> Map Int HasGoalSln -> Bool -> Bool -> Solver -> !PrimMap -> !IORef Int -> RO
- Cryptol.TypeCheck.Monad: RW :: ![(Range, Error)] -> ![(Range, Warning)] -> !Subst -> [Map Name Type] -> Map Int HasGoalSln -> !NameSeeds -> !Goals -> ![[HasGoal]] -> ![ModuleG ScopeName] -> !Map Name Schema -> !Supply -> RW
- Cryptol.TypeCheck.Monad: SignatureScope :: Name -> Maybe Text -> ScopeName
- Cryptol.TypeCheck.Monad: SubModule :: Name -> ScopeName
- Cryptol.TypeCheck.Monad: TLocalVar :: TParam -> Maybe Kind -> LkpTyVar
- Cryptol.TypeCheck.Monad: TOuterVar :: TParam -> LkpTyVar
- Cryptol.TypeCheck.Monad: TopSignatureScope :: ModName -> ScopeName
- Cryptol.TypeCheck.Monad: [allowWild] :: KRO -> AllowWildCards
- Cryptol.TypeCheck.Monad: [iBindTypes] :: RW -> !Map Name Schema
- Cryptol.TypeCheck.Monad: [iCallStacks] :: RO -> Bool
- Cryptol.TypeCheck.Monad: [iCts] :: RW -> !Goals
- Cryptol.TypeCheck.Monad: [iErrors] :: RW -> ![(Range, Error)]
- Cryptol.TypeCheck.Monad: [iExistTVars] :: RW -> [Map Name Type]
- Cryptol.TypeCheck.Monad: [iExtModules] :: RO -> ModName -> Maybe (ModuleG (), IfaceG ())
- Cryptol.TypeCheck.Monad: [iExtScope] :: RO -> ModuleG ScopeName
- Cryptol.TypeCheck.Monad: [iExtSignatures] :: RO -> ModName -> Maybe ModParamNames
- Cryptol.TypeCheck.Monad: [iHasCts] :: RW -> ![[HasGoal]]
- Cryptol.TypeCheck.Monad: [iMonoBinds] :: RO -> Bool
- Cryptol.TypeCheck.Monad: [iNameSeeds] :: RW -> !NameSeeds
- Cryptol.TypeCheck.Monad: [iPrimNames] :: RO -> !PrimMap
- Cryptol.TypeCheck.Monad: [iRange] :: RO -> Range
- Cryptol.TypeCheck.Monad: [iScope] :: RW -> ![ModuleG ScopeName]
- Cryptol.TypeCheck.Monad: [iSolveCounter] :: RO -> !IORef Int
- Cryptol.TypeCheck.Monad: [iSolvedHasLazy] :: RO -> Map Int HasGoalSln
- Cryptol.TypeCheck.Monad: [iSolvedHas] :: RW -> Map Int HasGoalSln
- Cryptol.TypeCheck.Monad: [iSolver] :: RO -> Solver
- Cryptol.TypeCheck.Monad: [iSubst] :: RW -> !Subst
- Cryptol.TypeCheck.Monad: [iSupply] :: RW -> !Supply
- Cryptol.TypeCheck.Monad: [iTVars] :: RO -> [TParam]
- Cryptol.TypeCheck.Monad: [iVars] :: RO -> Map Name VarType
- Cryptol.TypeCheck.Monad: [iWarnings] :: RW -> ![(Range, Warning)]
- Cryptol.TypeCheck.Monad: [inpCallStacks] :: InferInput -> Bool
- Cryptol.TypeCheck.Monad: [inpMonoBinds] :: InferInput -> Bool
- Cryptol.TypeCheck.Monad: [inpNameSeeds] :: InferInput -> NameSeeds
- Cryptol.TypeCheck.Monad: [inpNominalTypes] :: InferInput -> Map Name NominalType
- Cryptol.TypeCheck.Monad: [inpParams] :: InferInput -> !ModParamNames
- Cryptol.TypeCheck.Monad: [inpPrimNames] :: InferInput -> !PrimMap
- Cryptol.TypeCheck.Monad: [inpRange] :: InferInput -> Range
- Cryptol.TypeCheck.Monad: [inpSearchPath] :: InferInput -> [FilePath]
- Cryptol.TypeCheck.Monad: [inpSignatures] :: InferInput -> !Map Name ModParamNames
- Cryptol.TypeCheck.Monad: [inpSolver] :: InferInput -> Solver
- Cryptol.TypeCheck.Monad: [inpSupply] :: InferInput -> !Supply
- Cryptol.TypeCheck.Monad: [inpTSyns] :: InferInput -> Map Name TySyn
- Cryptol.TypeCheck.Monad: [inpTopModules] :: InferInput -> ModName -> Maybe (ModuleG (), IfaceG ())
- Cryptol.TypeCheck.Monad: [inpTopSignatures] :: InferInput -> ModName -> Maybe ModParamNames
- Cryptol.TypeCheck.Monad: [inpVars] :: InferInput -> Map Name Schema
- Cryptol.TypeCheck.Monad: [kCtrs] :: KRW -> [(ConstraintSource, [Prop])]
- Cryptol.TypeCheck.Monad: [lazyTParams] :: KRO -> Map Name TParam
- Cryptol.TypeCheck.Monad: [seedGoal] :: NameSeeds -> !Int
- Cryptol.TypeCheck.Monad: [seedTVar] :: NameSeeds -> !Int
- Cryptol.TypeCheck.Monad: [typeParams] :: KRW -> Map Name Kind
- Cryptol.TypeCheck.Monad: [unIM] :: InferM a -> ReaderT RO (StateT RW (ExceptionT [(Range, Error)] IO)) a
- Cryptol.TypeCheck.Monad: [unKM] :: KindM a -> ReaderT KRO (StateT KRW InferM) a
- Cryptol.TypeCheck.Monad: abortIfErrors :: InferM ()
- Cryptol.TypeCheck.Monad: addDecls :: DeclGroup -> InferM ()
- Cryptol.TypeCheck.Monad: addFunctors :: Map Name (ModuleG Name) -> InferM ()
- Cryptol.TypeCheck.Monad: addGoals :: [Goal] -> InferM ()
- Cryptol.TypeCheck.Monad: addHasGoal :: HasGoal -> InferM ()
- Cryptol.TypeCheck.Monad: addModParam :: ModParam -> InferM ()
- Cryptol.TypeCheck.Monad: addNominal :: NominalType -> InferM ()
- Cryptol.TypeCheck.Monad: addParamFun :: ModVParam -> InferM ()
- Cryptol.TypeCheck.Monad: addParamType :: ModTParam -> InferM ()
- Cryptol.TypeCheck.Monad: addParameterConstraints :: [Located Prop] -> InferM ()
- Cryptol.TypeCheck.Monad: addSignatures :: Map Name ModParamNames -> InferM ()
- Cryptol.TypeCheck.Monad: addSubmodules :: Map Name Submodule -> InferM ()
- Cryptol.TypeCheck.Monad: addTySyn :: TySyn -> InferM ()
- Cryptol.TypeCheck.Monad: applySubst :: TVars t => t -> InferM t
- Cryptol.TypeCheck.Monad: applySubstGoals :: [Goal] -> InferM [Goal]
- Cryptol.TypeCheck.Monad: applySubstPreds :: [Prop] -> InferM [Prop]
- Cryptol.TypeCheck.Monad: bumpCounter :: InferM ()
- Cryptol.TypeCheck.Monad: checkParamKind :: TParam -> TPFlavor -> Kind -> InferM ()
- Cryptol.TypeCheck.Monad: checkTShadowing :: String -> Name -> InferM ()
- Cryptol.TypeCheck.Monad: collectGoals :: InferM a -> InferM (a, [Goal])
- Cryptol.TypeCheck.Monad: curRange :: InferM Range
- Cryptol.TypeCheck.Monad: data AllowWildCards
- Cryptol.TypeCheck.Monad: data InferInput
- Cryptol.TypeCheck.Monad: data InferOutput a
- Cryptol.TypeCheck.Monad: data KRO
- Cryptol.TypeCheck.Monad: data KRW
- Cryptol.TypeCheck.Monad: data LkpTyVar
- Cryptol.TypeCheck.Monad: data NameSeeds
- Cryptol.TypeCheck.Monad: data RO
- Cryptol.TypeCheck.Monad: data RW
- Cryptol.TypeCheck.Monad: data ScopeName
- Cryptol.TypeCheck.Monad: endLocalScope :: InferM ([DeclGroup], Map Name TySyn)
- Cryptol.TypeCheck.Monad: endModule :: InferM TCTopEntity
- Cryptol.TypeCheck.Monad: endSignature :: InferM ()
- Cryptol.TypeCheck.Monad: endSubmodule :: InferM ()
- Cryptol.TypeCheck.Monad: endTopSignature :: InferM TCTopEntity
- Cryptol.TypeCheck.Monad: existVar :: Name -> Kind -> InferM Type
- Cryptol.TypeCheck.Monad: extendSubst :: Subst -> InferM ()
- Cryptol.TypeCheck.Monad: freshTParam :: (Name -> TPFlavor) -> TParam -> InferM TParam
- Cryptol.TypeCheck.Monad: getBoundInScope :: InferM (Set TParam)
- Cryptol.TypeCheck.Monad: getCallStacks :: InferM Bool
- Cryptol.TypeCheck.Monad: getCurDecls :: InferM (ModuleG ())
- Cryptol.TypeCheck.Monad: getGoals :: InferM [Goal]
- Cryptol.TypeCheck.Monad: getHasGoals :: InferM [HasGoal]
- Cryptol.TypeCheck.Monad: getMonoBinds :: InferM Bool
- Cryptol.TypeCheck.Monad: getNominalTypes :: InferM (Map Name NominalType)
- Cryptol.TypeCheck.Monad: getParamConstraints :: InferM [Located Prop]
- Cryptol.TypeCheck.Monad: getParamTypes :: InferM (Map Name ModTParam)
- Cryptol.TypeCheck.Monad: getPrimMap :: InferM PrimMap
- Cryptol.TypeCheck.Monad: getScope :: Semigroup a => (ModuleG ScopeName -> a) -> InferM a
- Cryptol.TypeCheck.Monad: getSignatures :: InferM (Map Name ModParamNames)
- Cryptol.TypeCheck.Monad: getSolver :: InferM Solver
- Cryptol.TypeCheck.Monad: getSubst :: InferM Subst
- Cryptol.TypeCheck.Monad: getTSyns :: InferM (Map Name TySyn)
- Cryptol.TypeCheck.Monad: getTVars :: InferM (Set Name)
- Cryptol.TypeCheck.Monad: inNewScope :: InferM a -> InferM a
- Cryptol.TypeCheck.Monad: inRange :: Range -> InferM a -> InferM a
- Cryptol.TypeCheck.Monad: inRangeMb :: Maybe Range -> InferM a -> InferM a
- Cryptol.TypeCheck.Monad: instance Control.DeepSeq.NFData Cryptol.TypeCheck.Monad.NameSeeds
- Cryptol.TypeCheck.Monad: instance Control.Monad.Fail.MonadFail Cryptol.TypeCheck.Monad.InferM
- Cryptol.TypeCheck.Monad: instance Control.Monad.Fail.MonadFail Cryptol.TypeCheck.Monad.KindM
- Cryptol.TypeCheck.Monad: instance Control.Monad.Fix.MonadFix Cryptol.TypeCheck.Monad.InferM
- Cryptol.TypeCheck.Monad: instance Cryptol.ModuleSystem.Name.FreshM Cryptol.TypeCheck.Monad.InferM
- Cryptol.TypeCheck.Monad: instance GHC.Base.Applicative Cryptol.TypeCheck.Monad.InferM
- Cryptol.TypeCheck.Monad: instance GHC.Base.Applicative Cryptol.TypeCheck.Monad.KindM
- Cryptol.TypeCheck.Monad: instance GHC.Base.Functor Cryptol.TypeCheck.Monad.InferM
- Cryptol.TypeCheck.Monad: instance GHC.Base.Functor Cryptol.TypeCheck.Monad.KindM
- Cryptol.TypeCheck.Monad: instance GHC.Base.Monad Cryptol.TypeCheck.Monad.InferM
- Cryptol.TypeCheck.Monad: instance GHC.Base.Monad Cryptol.TypeCheck.Monad.KindM
- Cryptol.TypeCheck.Monad: instance GHC.Generics.Generic Cryptol.TypeCheck.Monad.NameSeeds
- Cryptol.TypeCheck.Monad: instance GHC.Show.Show Cryptol.TypeCheck.Monad.NameSeeds
- Cryptol.TypeCheck.Monad: instance GHC.Show.Show a => GHC.Show.Show (Cryptol.TypeCheck.Monad.InferOutput a)
- Cryptol.TypeCheck.Monad: io :: IO a -> InferM a
- Cryptol.TypeCheck.Monad: kExistTVar :: Name -> Kind -> KindM Type
- Cryptol.TypeCheck.Monad: kIO :: IO a -> KindM a
- Cryptol.TypeCheck.Monad: kInInferM :: InferM a -> KindM a
- Cryptol.TypeCheck.Monad: kInRange :: Range -> KindM a -> KindM a
- Cryptol.TypeCheck.Monad: kInstantiateT :: Type -> [(TParam, Type)] -> KindM Type
- Cryptol.TypeCheck.Monad: kLookupNominal :: Name -> KindM (Maybe NominalType)
- Cryptol.TypeCheck.Monad: kLookupParamType :: Name -> KindM (Maybe ModTParam)
- Cryptol.TypeCheck.Monad: kLookupTSyn :: Name -> KindM (Maybe TySyn)
- Cryptol.TypeCheck.Monad: kLookupTyVar :: Name -> KindM (Maybe LkpTyVar)
- Cryptol.TypeCheck.Monad: kNewGoals :: ConstraintSource -> [Prop] -> KindM ()
- Cryptol.TypeCheck.Monad: kNewType :: TypeSource -> Kind -> KindM Type
- Cryptol.TypeCheck.Monad: kRecordError :: Error -> KindM ()
- Cryptol.TypeCheck.Monad: kRecordWarning :: Warning -> KindM ()
- Cryptol.TypeCheck.Monad: kSetKind :: Name -> Kind -> KindM ()
- Cryptol.TypeCheck.Monad: kWildOK :: KindM AllowWildCards
- Cryptol.TypeCheck.Monad: lookupFunctor :: ImpName Name -> InferM (ModuleG ())
- Cryptol.TypeCheck.Monad: lookupModParam :: Ident -> InferM (Maybe ModParam)
- Cryptol.TypeCheck.Monad: lookupModule :: ImpName Name -> InferM (IfaceG ())
- Cryptol.TypeCheck.Monad: lookupNominal :: Name -> InferM (Maybe NominalType)
- Cryptol.TypeCheck.Monad: lookupParamType :: Name -> InferM (Maybe ModTParam)
- Cryptol.TypeCheck.Monad: lookupSignature :: ImpName Name -> InferM ModParamNames
- Cryptol.TypeCheck.Monad: lookupTParam :: Name -> InferM (Maybe TParam)
- Cryptol.TypeCheck.Monad: lookupTSyn :: Name -> InferM (Maybe TySyn)
- Cryptol.TypeCheck.Monad: lookupTopModule :: ModName -> InferM (Maybe (ModuleG (), IfaceG ()))
- Cryptol.TypeCheck.Monad: lookupVar :: Name -> InferM VarType
- Cryptol.TypeCheck.Monad: nameSeeds :: NameSeeds
- Cryptol.TypeCheck.Monad: newGoal :: ConstraintSource -> Prop -> InferM Goal
- Cryptol.TypeCheck.Monad: newGoalName :: InferM Int
- Cryptol.TypeCheck.Monad: newGoals :: ConstraintSource -> [Prop] -> InferM ()
- Cryptol.TypeCheck.Monad: newHasGoal :: Selector -> Type -> Type -> InferM HasGoalSln
- Cryptol.TypeCheck.Monad: newLocalName :: Namespace -> Ident -> InferM Name
- Cryptol.TypeCheck.Monad: newLocalScope :: InferM ()
- Cryptol.TypeCheck.Monad: newModuleScope :: [Text] -> ModName -> ExportSpec Name -> NamingEnv -> InferM ()
- Cryptol.TypeCheck.Monad: newName :: (NameSeeds -> (a, NameSeeds)) -> InferM a
- Cryptol.TypeCheck.Monad: newScope :: ScopeName -> InferM ()
- Cryptol.TypeCheck.Monad: newSignatureScope :: Name -> Maybe Text -> InferM ()
- Cryptol.TypeCheck.Monad: newSubmoduleScope :: Name -> [Text] -> ExportSpec Name -> NamingEnv -> InferM ()
- Cryptol.TypeCheck.Monad: newTParam :: TParam Name -> TPFlavor -> Kind -> InferM TParam
- Cryptol.TypeCheck.Monad: newTVar :: TypeSource -> Kind -> InferM TVar
- Cryptol.TypeCheck.Monad: newTVar' :: TypeSource -> Set TParam -> Kind -> InferM TVar
- Cryptol.TypeCheck.Monad: newTopSignatureScope :: ModName -> InferM ()
- Cryptol.TypeCheck.Monad: newType :: TypeSource -> Kind -> InferM Type
- Cryptol.TypeCheck.Monad: newtype InferM a
- Cryptol.TypeCheck.Monad: newtype KindM a
- Cryptol.TypeCheck.Monad: recordError :: Error -> InferM ()
- Cryptol.TypeCheck.Monad: recordErrorLoc :: Maybe Range -> Error -> InferM ()
- Cryptol.TypeCheck.Monad: recordWarning :: Warning -> InferM ()
- Cryptol.TypeCheck.Monad: runInferM :: TVars a => InferInput -> InferM a -> IO (InferOutput a)
- Cryptol.TypeCheck.Monad: runKindM :: AllowWildCards -> [(Name, Maybe Kind, TParam)] -> KindM a -> InferM (a, Map Name Kind, [(ConstraintSource, [Prop])])
- Cryptol.TypeCheck.Monad: selectorScope :: InferM a -> InferM a
- Cryptol.TypeCheck.Monad: setNested :: Set Name -> InferM ()
- Cryptol.TypeCheck.Monad: simpGoal :: Goal -> InferM [Goal]
- Cryptol.TypeCheck.Monad: simpGoals :: [Goal] -> InferM [Goal]
- Cryptol.TypeCheck.Monad: solveHasGoal :: Int -> HasGoalSln -> InferM ()
- Cryptol.TypeCheck.Monad: unify :: TypeWithSource -> Type -> InferM [Prop]
- Cryptol.TypeCheck.Monad: updScope :: (ModuleG ScopeName -> ModuleG ScopeName) -> InferM ()
- Cryptol.TypeCheck.Monad: varsWithAsmps :: InferM (Set TVar)
- Cryptol.TypeCheck.Monad: withMonoType :: (Name, Located Type) -> InferM a -> InferM a
- Cryptol.TypeCheck.Monad: withMonoTypes :: Map Name (Located Type) -> InferM a -> InferM a
- Cryptol.TypeCheck.Monad: withTParam :: TParam -> InferM a -> InferM a
- Cryptol.TypeCheck.Monad: withTParams :: [TParam] -> InferM a -> InferM a
- Cryptol.TypeCheck.Monad: withVar :: Name -> Schema -> InferM a -> InferM a
- Cryptol.TypeCheck.Monad: withVarType :: Name -> VarType -> InferM a -> InferM a
- Cryptol.TypeCheck.Monad: withVarTypes :: [(Name, VarType)] -> InferM a -> InferM a
- Cryptol.TypeCheck.PP: WithNames :: a -> NameMap -> WithNames a
- Cryptol.TypeCheck.PP: data WithNames a
- Cryptol.TypeCheck.PP: dump :: PP (WithNames a) => a -> String
- Cryptol.TypeCheck.PP: emptyNameMap :: NameMap
- Cryptol.TypeCheck.PP: nameList :: [String] -> [String]
- Cryptol.TypeCheck.PP: ppWithNames :: PP (WithNames a) => NameMap -> a -> Doc
- Cryptol.TypeCheck.PP: ppWithNamesPrec :: PP (WithNames a) => NameMap -> Int -> a -> Doc
- Cryptol.TypeCheck.PP: type NameMap = IntMap String
- Cryptol.TypeCheck.Parseable: ($$) :: Doc a -> Doc a -> Doc a
- Cryptol.TypeCheck.Parseable: class ShowParseable t
- Cryptol.TypeCheck.Parseable: infixl 5 $$
- Cryptol.TypeCheck.Parseable: instance (Cryptol.TypeCheck.Parseable.ShowParseable a, Cryptol.TypeCheck.Parseable.ShowParseable b) => Cryptol.TypeCheck.Parseable.ShowParseable (a, b)
- Cryptol.TypeCheck.Parseable: instance Cryptol.TypeCheck.Parseable.ShowParseable Cryptol.ModuleSystem.Name.Name
- Cryptol.TypeCheck.Parseable: instance Cryptol.TypeCheck.Parseable.ShowParseable Cryptol.Parser.Selector.Selector
- Cryptol.TypeCheck.Parseable: instance Cryptol.TypeCheck.Parseable.ShowParseable Cryptol.TypeCheck.AST.CaseAlt
- Cryptol.TypeCheck.Parseable: instance Cryptol.TypeCheck.Parseable.ShowParseable Cryptol.TypeCheck.AST.Decl
- Cryptol.TypeCheck.Parseable: instance Cryptol.TypeCheck.Parseable.ShowParseable Cryptol.TypeCheck.AST.DeclDef
- Cryptol.TypeCheck.Parseable: instance Cryptol.TypeCheck.Parseable.ShowParseable Cryptol.TypeCheck.AST.DeclGroup
- Cryptol.TypeCheck.Parseable: instance Cryptol.TypeCheck.Parseable.ShowParseable Cryptol.TypeCheck.AST.Expr
- Cryptol.TypeCheck.Parseable: instance Cryptol.TypeCheck.Parseable.ShowParseable Cryptol.TypeCheck.AST.Match
- Cryptol.TypeCheck.Parseable: instance Cryptol.TypeCheck.Parseable.ShowParseable Cryptol.TypeCheck.Type.TParam
- Cryptol.TypeCheck.Parseable: instance Cryptol.TypeCheck.Parseable.ShowParseable Cryptol.TypeCheck.Type.Type
- Cryptol.TypeCheck.Parseable: instance Cryptol.TypeCheck.Parseable.ShowParseable Cryptol.Utils.Ident.Ident
- Cryptol.TypeCheck.Parseable: instance Cryptol.TypeCheck.Parseable.ShowParseable GHC.Types.Int
- Cryptol.TypeCheck.Parseable: instance Cryptol.TypeCheck.Parseable.ShowParseable a => Cryptol.TypeCheck.Parseable.ShowParseable (Cryptol.Parser.Position.Located a)
- Cryptol.TypeCheck.Parseable: instance Cryptol.TypeCheck.Parseable.ShowParseable a => Cryptol.TypeCheck.Parseable.ShowParseable (GHC.Maybe.Maybe a)
- Cryptol.TypeCheck.Parseable: instance Cryptol.TypeCheck.Parseable.ShowParseable a => Cryptol.TypeCheck.Parseable.ShowParseable [a]
- Cryptol.TypeCheck.Parseable: int :: Int -> Doc a
- Cryptol.TypeCheck.Parseable: maybeNameDoc :: Maybe Name -> Doc Void
- Cryptol.TypeCheck.Parseable: showParseable :: ShowParseable t => t -> Doc Void
- Cryptol.TypeCheck.Parseable: text :: String -> Doc a
- Cryptol.TypeCheck.Sanity: BadApplication :: Type -> Type -> Error
- Cryptol.TypeCheck.Sanity: BadCase :: Maybe Type -> Error
- Cryptol.TypeCheck.Sanity: BadCaseAlt :: Maybe Ident -> Error
- Cryptol.TypeCheck.Sanity: BadInstantiation :: Error
- Cryptol.TypeCheck.Sanity: BadMatch :: Type -> Error
- Cryptol.TypeCheck.Sanity: BadProofNoAbs :: Error
- Cryptol.TypeCheck.Sanity: BadProofTyVars :: [TParam] -> Error
- Cryptol.TypeCheck.Sanity: BadSelector :: Selector -> Type -> Error
- Cryptol.TypeCheck.Sanity: BadTypeApplication :: Kind -> [Kind] -> Error
- Cryptol.TypeCheck.Sanity: Captured :: TVar -> Error
- Cryptol.TypeCheck.Sanity: EmptyArm :: Error
- Cryptol.TypeCheck.Sanity: ExpectedMono :: Schema -> Error
- Cryptol.TypeCheck.Sanity: FreeTypeVariable :: TVar -> Error
- Cryptol.TypeCheck.Sanity: KindMismatch :: Kind -> Kind -> Error
- Cryptol.TypeCheck.Sanity: MissingField :: Ident -> [Ident] -> Error
- Cryptol.TypeCheck.Sanity: NotEnoughArgumentsInKind :: Kind -> Error
- Cryptol.TypeCheck.Sanity: NotSame :: AreSame
- Cryptol.TypeCheck.Sanity: RepeatedVariableInForall :: TParam -> Error
- Cryptol.TypeCheck.Sanity: SameIf :: [Prop] -> AreSame
- Cryptol.TypeCheck.Sanity: TupleSelectorOutOfRange :: Int -> Int -> Error
- Cryptol.TypeCheck.Sanity: TypeMismatch :: String -> Schema -> Schema -> Error
- Cryptol.TypeCheck.Sanity: UndefinedTypeVaraible :: TVar -> Error
- Cryptol.TypeCheck.Sanity: UndefinedVariable :: Name -> Error
- Cryptol.TypeCheck.Sanity: UnexpectedRecordShape :: [Ident] -> [Ident] -> Error
- Cryptol.TypeCheck.Sanity: UnexpectedSequenceShape :: Int -> Type -> Error
- Cryptol.TypeCheck.Sanity: UnexpectedTupleShape :: Int -> Int -> Error
- Cryptol.TypeCheck.Sanity: data AreSame
- Cryptol.TypeCheck.Sanity: data Error
- Cryptol.TypeCheck.Sanity: instance (GHC.Classes.Eq a, Cryptol.TypeCheck.Sanity.Same b) => Cryptol.TypeCheck.Sanity.Same (Cryptol.TypeCheck.Sanity.Field a b)
- Cryptol.TypeCheck.Sanity: instance Cryptol.TypeCheck.Sanity.Same Cryptol.TypeCheck.Type.Schema
- Cryptol.TypeCheck.Sanity: instance Cryptol.TypeCheck.Sanity.Same Cryptol.TypeCheck.Type.TParam
- Cryptol.TypeCheck.Sanity: instance Cryptol.TypeCheck.Sanity.Same Cryptol.TypeCheck.Type.Type
- Cryptol.TypeCheck.Sanity: instance Cryptol.TypeCheck.Sanity.Same a => Cryptol.TypeCheck.Sanity.Same [a]
- Cryptol.TypeCheck.Sanity: instance Cryptol.Utils.PP.PP Cryptol.TypeCheck.Sanity.Error
- Cryptol.TypeCheck.Sanity: instance GHC.Base.Applicative Cryptol.TypeCheck.Sanity.TcM
- Cryptol.TypeCheck.Sanity: instance GHC.Base.Functor Cryptol.TypeCheck.Sanity.TcM
- Cryptol.TypeCheck.Sanity: instance GHC.Base.Monad Cryptol.TypeCheck.Sanity.TcM
- Cryptol.TypeCheck.Sanity: instance GHC.Show.Show Cryptol.TypeCheck.Sanity.Error
- Cryptol.TypeCheck.Sanity: onlyNonTrivial :: [ProofObligation] -> [ProofObligation]
- Cryptol.TypeCheck.Sanity: same :: Same a => a -> a -> AreSame
- Cryptol.TypeCheck.Sanity: tcDecls :: InferInput -> [DeclGroup] -> Either (Range, Error) [ProofObligation]
- Cryptol.TypeCheck.Sanity: tcExpr :: InferInput -> Expr -> Either (Range, Error) (Schema, [ProofObligation])
- Cryptol.TypeCheck.Sanity: tcModule :: InferInput -> Module -> Either (Range, Error) [ProofObligation]
- Cryptol.TypeCheck.Sanity: type ProofObligation = Schema
- Cryptol.TypeCheck.SimpType: op1 :: (a -> b) -> [a] -> b
- Cryptol.TypeCheck.SimpType: op2 :: (a -> a -> b) -> [a] -> b
- Cryptol.TypeCheck.SimpType: op3 :: (a -> a -> a -> b) -> [a] -> b
- Cryptol.TypeCheck.SimpType: tAdd :: Type -> Type -> Type
- Cryptol.TypeCheck.SimpType: tCeilDiv :: Type -> Type -> Type
- Cryptol.TypeCheck.SimpType: tCeilMod :: Type -> Type -> Type
- Cryptol.TypeCheck.SimpType: tCon :: TCon -> [Type] -> Type
- Cryptol.TypeCheck.SimpType: tDiv :: Type -> Type -> Type
- Cryptol.TypeCheck.SimpType: tExp :: Type -> Type -> Type
- Cryptol.TypeCheck.SimpType: tLenFromThenTo :: Type -> Type -> Type -> Type
- Cryptol.TypeCheck.SimpType: tMax :: Type -> Type -> Type
- Cryptol.TypeCheck.SimpType: tMin :: Type -> Type -> Type
- Cryptol.TypeCheck.SimpType: tMod :: Type -> Type -> Type
- Cryptol.TypeCheck.SimpType: tMul :: Type -> Type -> Type
- Cryptol.TypeCheck.SimpType: tOp :: TFun -> ([Nat'] -> Maybe Nat') -> [Type] -> Maybe Type
- Cryptol.TypeCheck.SimpType: tRebuild :: Type -> Type
- Cryptol.TypeCheck.SimpType: tRebuild' :: Bool -> Type -> Type
- Cryptol.TypeCheck.SimpType: tSub :: Type -> Type -> Type
- Cryptol.TypeCheck.SimpType: tWidth :: Type -> Type
- Cryptol.TypeCheck.SimpType: total :: ([Nat'] -> Nat') -> [Nat'] -> Maybe Nat'
- Cryptol.TypeCheck.SimpleSolver: simplify :: Ctxt -> Prop -> Prop
- Cryptol.TypeCheck.SimpleSolver: simplifyStep :: Ctxt -> Prop -> Solved
- Cryptol.TypeCheck.Solve: defaultAndSimplify :: [TVar] -> [Goal] -> ([TVar], [Goal], Subst, [Warning], [Error])
- Cryptol.TypeCheck.Solve: defaultReplExpr :: Solver -> Expr -> Schema -> IO (Maybe ([(TParam, Type)], Expr))
- Cryptol.TypeCheck.Solve: proveImplication :: Bool -> Maybe Name -> [TParam] -> [Prop] -> [Goal] -> InferM Subst
- Cryptol.TypeCheck.Solve: proveModuleTopLevel :: InferM ()
- Cryptol.TypeCheck.Solve: simplifyAllConstraints :: InferM ()
- Cryptol.TypeCheck.Solve: tryProveImplication :: Maybe Name -> [TParam] -> [Prop] -> [Goal] -> InferM Bool
- Cryptol.TypeCheck.Solver.Class: solveCmpInst :: Type -> Solved
- Cryptol.TypeCheck.Solver.Class: solveEqInst :: Type -> Solved
- Cryptol.TypeCheck.Solver.Class: solveFLiteralInst :: Type -> Type -> Type -> Type -> Solved
- Cryptol.TypeCheck.Solver.Class: solveFieldInst :: Type -> Solved
- Cryptol.TypeCheck.Solver.Class: solveIntegralInst :: Type -> Solved
- Cryptol.TypeCheck.Solver.Class: solveLiteralInst :: Type -> Type -> Solved
- Cryptol.TypeCheck.Solver.Class: solveLiteralLessThanInst :: Type -> Type -> Solved
- Cryptol.TypeCheck.Solver.Class: solveLogicInst :: Type -> Solved
- Cryptol.TypeCheck.Solver.Class: solveRingInst :: Type -> Solved
- Cryptol.TypeCheck.Solver.Class: solveRoundInst :: Type -> Solved
- Cryptol.TypeCheck.Solver.Class: solveSignedCmpInst :: Type -> Solved
- Cryptol.TypeCheck.Solver.Class: solveValidFloat :: Type -> Type -> Solved
- Cryptol.TypeCheck.Solver.Class: solveZeroInst :: Type -> Solved
- Cryptol.TypeCheck.Solver.Improve: improveEq :: Bool -> Ctxt -> Prop -> Match (Subst, [Prop])
- Cryptol.TypeCheck.Solver.Improve: improveLit :: Bool -> Prop -> Match (Subst, [Prop])
- Cryptol.TypeCheck.Solver.Improve: improveProp :: Bool -> Ctxt -> Prop -> Match (Subst, [Prop])
- Cryptol.TypeCheck.Solver.Improve: improveProps :: Bool -> Ctxt -> [Prop] -> Match (Subst, [Prop])
- Cryptol.TypeCheck.Solver.InfNat: Inf :: Nat'
- Cryptol.TypeCheck.Solver.InfNat: Nat :: Integer -> Nat'
- Cryptol.TypeCheck.Solver.InfNat: data Nat'
- Cryptol.TypeCheck.Solver.InfNat: fromNat :: Nat' -> Maybe Integer
- Cryptol.TypeCheck.Solver.InfNat: genLog :: Integer -> Integer -> Maybe (Integer, Bool)
- Cryptol.TypeCheck.Solver.InfNat: genRoot :: Integer -> Integer -> Maybe (Integer, Bool)
- Cryptol.TypeCheck.Solver.InfNat: instance Control.DeepSeq.NFData Cryptol.TypeCheck.Solver.InfNat.Nat'
- Cryptol.TypeCheck.Solver.InfNat: instance GHC.Classes.Eq Cryptol.TypeCheck.Solver.InfNat.Nat'
- Cryptol.TypeCheck.Solver.InfNat: instance GHC.Classes.Ord Cryptol.TypeCheck.Solver.InfNat.Nat'
- Cryptol.TypeCheck.Solver.InfNat: instance GHC.Generics.Generic Cryptol.TypeCheck.Solver.InfNat.Nat'
- Cryptol.TypeCheck.Solver.InfNat: instance GHC.Show.Show Cryptol.TypeCheck.Solver.InfNat.Nat'
- Cryptol.TypeCheck.Solver.InfNat: nAdd :: Nat' -> Nat' -> Nat'
- Cryptol.TypeCheck.Solver.InfNat: nCeilDiv :: Nat' -> Nat' -> Maybe Nat'
- Cryptol.TypeCheck.Solver.InfNat: nCeilMod :: Nat' -> Nat' -> Maybe Nat'
- Cryptol.TypeCheck.Solver.InfNat: nDiv :: Nat' -> Nat' -> Maybe Nat'
- Cryptol.TypeCheck.Solver.InfNat: nExp :: Nat' -> Nat' -> Nat'
- Cryptol.TypeCheck.Solver.InfNat: nLenFromThenTo :: Nat' -> Nat' -> Nat' -> Maybe Nat'
- Cryptol.TypeCheck.Solver.InfNat: nLg2 :: Nat' -> Nat'
- Cryptol.TypeCheck.Solver.InfNat: nMax :: Nat' -> Nat' -> Nat'
- Cryptol.TypeCheck.Solver.InfNat: nMin :: Nat' -> Nat' -> Nat'
- Cryptol.TypeCheck.Solver.InfNat: nMod :: Nat' -> Nat' -> Maybe Nat'
- Cryptol.TypeCheck.Solver.InfNat: nMul :: Nat' -> Nat' -> Nat'
- Cryptol.TypeCheck.Solver.InfNat: nSub :: Nat' -> Nat' -> Maybe Nat'
- Cryptol.TypeCheck.Solver.InfNat: nWidth :: Nat' -> Nat'
- Cryptol.TypeCheck.Solver.InfNat: rootExact :: Integer -> Integer -> Maybe Integer
- Cryptol.TypeCheck.Solver.InfNat: widthInteger :: Integer -> Integer
- Cryptol.TypeCheck.Solver.Numeric: cryIsEqual :: Ctxt -> Type -> Type -> Solved
- Cryptol.TypeCheck.Solver.Numeric: cryIsGeq :: Ctxt -> Type -> Type -> Solved
- Cryptol.TypeCheck.Solver.Numeric: cryIsNotEqual :: Ctxt -> Type -> Type -> Solved
- Cryptol.TypeCheck.Solver.Numeric: cryIsPrime :: Ctxt -> Type -> Solved
- Cryptol.TypeCheck.Solver.Numeric: primeTable :: Integer :->: Bool
- Cryptol.TypeCheck.Solver.Numeric.Fin: cryIsFin :: Ctxt -> Prop -> Solved
- Cryptol.TypeCheck.Solver.Numeric.Fin: cryIsFinType :: Ctxt -> Type -> Solved
- Cryptol.TypeCheck.Solver.Numeric.Interval: Interval :: Nat' -> Maybe Nat' -> Interval
- Cryptol.TypeCheck.Solver.Numeric.Interval: InvalidInterval :: TVar -> IntervalUpdate
- Cryptol.TypeCheck.Solver.Numeric.Interval: NewIntervals :: Map TVar Interval -> IntervalUpdate
- Cryptol.TypeCheck.Solver.Numeric.Interval: NoChange :: IntervalUpdate
- Cryptol.TypeCheck.Solver.Numeric.Interval: [iLower] :: Interval -> Nat'
- Cryptol.TypeCheck.Solver.Numeric.Interval: [iUpper] :: Interval -> Maybe Nat'
- Cryptol.TypeCheck.Solver.Numeric.Interval: computePropIntervals :: Map TVar Interval -> [Prop] -> IntervalUpdate
- Cryptol.TypeCheck.Solver.Numeric.Interval: data Interval
- Cryptol.TypeCheck.Solver.Numeric.Interval: data IntervalUpdate
- Cryptol.TypeCheck.Solver.Numeric.Interval: iAdd :: Interval -> Interval -> Interval
- Cryptol.TypeCheck.Solver.Numeric.Interval: iAny :: Interval
- Cryptol.TypeCheck.Solver.Numeric.Interval: iAnyFin :: Interval
- Cryptol.TypeCheck.Solver.Numeric.Interval: iCeilDiv :: Interval -> Interval -> Interval
- Cryptol.TypeCheck.Solver.Numeric.Interval: iCeilMod :: Interval -> Interval -> Interval
- Cryptol.TypeCheck.Solver.Numeric.Interval: iConst :: Nat' -> Interval
- Cryptol.TypeCheck.Solver.Numeric.Interval: iDiv :: Interval -> Interval -> Interval
- Cryptol.TypeCheck.Solver.Numeric.Interval: iExp :: Interval -> Interval -> Interval
- Cryptol.TypeCheck.Solver.Numeric.Interval: iIntersect :: Interval -> Interval -> Maybe Interval
- Cryptol.TypeCheck.Solver.Numeric.Interval: iIsExact :: Interval -> Maybe Nat'
- Cryptol.TypeCheck.Solver.Numeric.Interval: iIsFin :: Interval -> Bool
- Cryptol.TypeCheck.Solver.Numeric.Interval: iIsPosFin :: Interval -> Bool
- Cryptol.TypeCheck.Solver.Numeric.Interval: iLenFromThenTo :: Interval -> Interval -> Interval -> Interval
- Cryptol.TypeCheck.Solver.Numeric.Interval: iMax :: Interval -> Interval -> Interval
- Cryptol.TypeCheck.Solver.Numeric.Interval: iMin :: Interval -> Interval -> Interval
- Cryptol.TypeCheck.Solver.Numeric.Interval: iMod :: Interval -> Interval -> Interval
- Cryptol.TypeCheck.Solver.Numeric.Interval: iMul :: Interval -> Interval -> Interval
- Cryptol.TypeCheck.Solver.Numeric.Interval: iOverlap :: Interval -> Interval -> Bool
- Cryptol.TypeCheck.Solver.Numeric.Interval: iSub :: Interval -> Interval -> Interval
- Cryptol.TypeCheck.Solver.Numeric.Interval: iWidth :: Interval -> Interval
- Cryptol.TypeCheck.Solver.Numeric.Interval: instance GHC.Classes.Eq Cryptol.TypeCheck.Solver.Numeric.Interval.Interval
- Cryptol.TypeCheck.Solver.Numeric.Interval: instance GHC.Show.Show Cryptol.TypeCheck.Solver.Numeric.Interval.Interval
- Cryptol.TypeCheck.Solver.Numeric.Interval: instance GHC.Show.Show Cryptol.TypeCheck.Solver.Numeric.Interval.IntervalUpdate
- Cryptol.TypeCheck.Solver.Numeric.Interval: ppInterval :: Interval -> Doc
- Cryptol.TypeCheck.Solver.Numeric.Interval: ppIntervals :: Map TVar Interval -> Doc
- Cryptol.TypeCheck.Solver.Numeric.Interval: ppIntervalsWithNames :: NameMap -> Map TVar Interval -> Doc
- Cryptol.TypeCheck.Solver.Numeric.Interval: propInterval :: Map TVar Interval -> Prop -> [(TVar, Interval)]
- Cryptol.TypeCheck.Solver.Numeric.Interval: tvarInterval :: Map TVar Interval -> TVar -> Interval
- Cryptol.TypeCheck.Solver.Numeric.Interval: typeInterval :: Map TVar Interval -> Type -> Interval
- Cryptol.TypeCheck.Solver.Numeric.Interval: updateInterval :: (TVar, Interval) -> Map TVar Interval -> IntervalUpdate
- Cryptol.TypeCheck.Solver.SMT: assume :: Solver -> TVars -> Prop -> IO ()
- Cryptol.TypeCheck.Solver.SMT: checkUnsolvable :: Solver -> [Goal] -> IO Bool
- Cryptol.TypeCheck.Solver.SMT: data Solver
- Cryptol.TypeCheck.Solver.SMT: data SolverConfig
- Cryptol.TypeCheck.Solver.SMT: debugBlock :: Solver -> String -> IO a -> IO a
- Cryptol.TypeCheck.Solver.SMT: debugLog :: DebugLog t => Solver -> t -> IO ()
- Cryptol.TypeCheck.Solver.SMT: declareVars :: Solver -> [TVar] -> IO TVars
- Cryptol.TypeCheck.Solver.SMT: inNewFrame :: Solver -> IO a -> IO a
- Cryptol.TypeCheck.Solver.SMT: instance Cryptol.TypeCheck.Solver.SMT.DebugLog Cryptol.TypeCheck.InferTypes.Goal
- Cryptol.TypeCheck.Solver.SMT: instance Cryptol.TypeCheck.Solver.SMT.DebugLog Cryptol.TypeCheck.Subst.Subst
- Cryptol.TypeCheck.Solver.SMT: instance Cryptol.TypeCheck.Solver.SMT.DebugLog Cryptol.TypeCheck.Type.Type
- Cryptol.TypeCheck.Solver.SMT: instance Cryptol.TypeCheck.Solver.SMT.DebugLog Cryptol.Utils.PP.Doc
- Cryptol.TypeCheck.Solver.SMT: instance Cryptol.TypeCheck.Solver.SMT.DebugLog GHC.Types.Char
- Cryptol.TypeCheck.Solver.SMT: instance Cryptol.TypeCheck.Solver.SMT.DebugLog a => Cryptol.TypeCheck.Solver.SMT.DebugLog (GHC.Maybe.Maybe a)
- Cryptol.TypeCheck.Solver.SMT: instance Cryptol.TypeCheck.Solver.SMT.DebugLog a => Cryptol.TypeCheck.Solver.SMT.DebugLog [a]
- Cryptol.TypeCheck.Solver.SMT: instance Cryptol.TypeCheck.Solver.SMT.Mk ()
- Cryptol.TypeCheck.Solver.SMT: instance Cryptol.TypeCheck.Solver.SMT.Mk (Cryptol.TypeCheck.Type.Type, Cryptol.TypeCheck.Type.Type)
- Cryptol.TypeCheck.Solver.SMT: instance Cryptol.TypeCheck.Solver.SMT.Mk (Cryptol.TypeCheck.Type.Type, Cryptol.TypeCheck.Type.Type, Cryptol.TypeCheck.Type.Type)
- Cryptol.TypeCheck.Solver.SMT: instance Cryptol.TypeCheck.Solver.SMT.Mk Cryptol.TypeCheck.Type.TVar
- Cryptol.TypeCheck.Solver.SMT: instance Cryptol.TypeCheck.Solver.SMT.Mk Cryptol.TypeCheck.Type.Type
- Cryptol.TypeCheck.Solver.SMT: instance Cryptol.TypeCheck.Solver.SMT.Mk GHC.Num.Integer.Integer
- Cryptol.TypeCheck.Solver.SMT: isNumeric :: Prop -> Bool
- Cryptol.TypeCheck.Solver.SMT: pop :: Solver -> IO ()
- Cryptol.TypeCheck.Solver.SMT: proveImp :: Solver -> [Prop] -> [Goal] -> IO [Goal]
- Cryptol.TypeCheck.Solver.SMT: push :: Solver -> IO ()
- Cryptol.TypeCheck.Solver.SMT: resetSolver :: Solver -> SolverConfig -> IO ()
- Cryptol.TypeCheck.Solver.SMT: shrinkModel :: Solver -> [TVar] -> [Prop] -> [(TVar, Nat')] -> IO [(TVar, Nat')]
- Cryptol.TypeCheck.Solver.SMT: startSolver :: IO () -> SolverConfig -> IO Solver
- Cryptol.TypeCheck.Solver.SMT: stopSolver :: Solver -> IO ()
- Cryptol.TypeCheck.Solver.SMT: tryGetModel :: Solver -> [TVar] -> [Prop] -> IO (Maybe [(TVar, Nat')])
- Cryptol.TypeCheck.Solver.SMT: type TVars = Map TVar SExpr
- Cryptol.TypeCheck.Solver.SMT: unsolvable :: Solver -> TVars -> [Prop] -> IO Bool
- Cryptol.TypeCheck.Solver.SMT: withSolver :: IO () -> SolverConfig -> (Solver -> IO a) -> IO a
- Cryptol.TypeCheck.Solver.Selector: tryHasGoal :: HasGoal -> InferM (Bool, Bool)
- Cryptol.TypeCheck.Solver.Types: SolvedIf :: [Prop] -> Solved
- Cryptol.TypeCheck.Solver.Types: SolverCtxt :: Map TVar Interval -> Set Prop -> Ctxt
- Cryptol.TypeCheck.Solver.Types: Unsolvable :: Solved
- Cryptol.TypeCheck.Solver.Types: Unsolved :: Solved
- Cryptol.TypeCheck.Solver.Types: [intervals] :: Ctxt -> Map TVar Interval
- Cryptol.TypeCheck.Solver.Types: [saturatedAsmps] :: Ctxt -> Set Prop
- Cryptol.TypeCheck.Solver.Types: data Ctxt
- Cryptol.TypeCheck.Solver.Types: data Solved
- Cryptol.TypeCheck.Solver.Types: elseTry :: Solved -> Solved -> Solved
- Cryptol.TypeCheck.Solver.Types: guarded :: Bool -> Solved -> Solved
- Cryptol.TypeCheck.Solver.Types: instance Cryptol.Utils.PP.PP Cryptol.TypeCheck.Solver.Types.Solved
- Cryptol.TypeCheck.Solver.Types: instance GHC.Base.Monoid Cryptol.TypeCheck.Solver.Types.Ctxt
- Cryptol.TypeCheck.Solver.Types: instance GHC.Base.Semigroup Cryptol.TypeCheck.Solver.Types.Ctxt
- Cryptol.TypeCheck.Solver.Types: instance GHC.Show.Show Cryptol.TypeCheck.Solver.Types.Solved
- Cryptol.TypeCheck.Solver.Types: matchThen :: Maybe a -> (a -> Solved) -> Solved
- Cryptol.TypeCheck.Solver.Types: solveOpts :: [Solved] -> Solved
- Cryptol.TypeCheck.Solver.Utils: splitConstFactor :: Type -> Maybe (Integer, Type)
- Cryptol.TypeCheck.Solver.Utils: splitConstSummand :: Type -> Maybe (Integer, Type)
- Cryptol.TypeCheck.Solver.Utils: splitVarSummand :: TVar -> Type -> Maybe Type
- Cryptol.TypeCheck.Solver.Utils: splitVarSummands :: Type -> [(TVar, Type)]
- Cryptol.TypeCheck.Subst: (!$) :: (a -> b) -> a -> b
- Cryptol.TypeCheck.Subst: (.$) :: (a -> b) -> a -> b
- Cryptol.TypeCheck.Subst: (@@) :: Subst -> Subst -> Subst
- Cryptol.TypeCheck.Subst: SubstEscaped :: [TParam] -> SubstError
- Cryptol.TypeCheck.Subst: SubstKindMismatch :: Kind -> Kind -> SubstError
- Cryptol.TypeCheck.Subst: SubstRecursive :: SubstError
- Cryptol.TypeCheck.Subst: apSubst :: TVars t => Subst -> t -> t
- Cryptol.TypeCheck.Subst: apSubstMaybe :: Subst -> Type -> Maybe Type
- Cryptol.TypeCheck.Subst: apSubstTypeMapKeys :: Subst -> TypeMap a -> TypeMap a
- Cryptol.TypeCheck.Subst: applySubstToVar :: Subst -> TVar -> Maybe Type
- Cryptol.TypeCheck.Subst: class FVS t
- Cryptol.TypeCheck.Subst: class TVars t
- Cryptol.TypeCheck.Subst: data Subst
- Cryptol.TypeCheck.Subst: data SubstError
- Cryptol.TypeCheck.Subst: defaultingSubst :: Subst -> Subst
- Cryptol.TypeCheck.Subst: emptySubst :: Subst
- Cryptol.TypeCheck.Subst: fmap' :: Traversable t => (a -> b) -> t a -> t b
- Cryptol.TypeCheck.Subst: fvs :: FVS t => t -> Set TVar
- Cryptol.TypeCheck.Subst: infixl 0 .$
- Cryptol.TypeCheck.Subst: instance (Cryptol.TypeCheck.Subst.TVars s, Cryptol.TypeCheck.Subst.TVars t) => Cryptol.TypeCheck.Subst.TVars (s, t)
- Cryptol.TypeCheck.Subst: instance (Data.Traversable.Traversable m, Cryptol.TypeCheck.Subst.TVars a) => Cryptol.TypeCheck.Subst.TVars (Cryptol.TypeCheck.TypeMap.List m a)
- Cryptol.TypeCheck.Subst: instance Cryptol.TypeCheck.Subst.TVars (Cryptol.TypeCheck.AST.ModuleG names)
- Cryptol.TypeCheck.Subst: instance Cryptol.TypeCheck.Subst.TVars Cryptol.TypeCheck.AST.CaseAlt
- Cryptol.TypeCheck.Subst: instance Cryptol.TypeCheck.Subst.TVars Cryptol.TypeCheck.AST.Decl
- Cryptol.TypeCheck.Subst: instance Cryptol.TypeCheck.Subst.TVars Cryptol.TypeCheck.AST.DeclDef
- Cryptol.TypeCheck.Subst: instance Cryptol.TypeCheck.Subst.TVars Cryptol.TypeCheck.AST.DeclGroup
- Cryptol.TypeCheck.Subst: instance Cryptol.TypeCheck.Subst.TVars Cryptol.TypeCheck.AST.Expr
- Cryptol.TypeCheck.Subst: instance Cryptol.TypeCheck.Subst.TVars Cryptol.TypeCheck.AST.Match
- Cryptol.TypeCheck.Subst: instance Cryptol.TypeCheck.Subst.TVars Cryptol.TypeCheck.AST.TCTopEntity
- Cryptol.TypeCheck.Subst: instance Cryptol.TypeCheck.Subst.TVars Cryptol.TypeCheck.Type.Schema
- Cryptol.TypeCheck.Subst: instance Cryptol.TypeCheck.Subst.TVars Cryptol.TypeCheck.Type.TySyn
- Cryptol.TypeCheck.Subst: instance Cryptol.TypeCheck.Subst.TVars Cryptol.TypeCheck.Type.Type
- Cryptol.TypeCheck.Subst: instance Cryptol.TypeCheck.Subst.TVars a => Cryptol.TypeCheck.Subst.TVars (Cryptol.TypeCheck.TypeMap.TypeMap a)
- Cryptol.TypeCheck.Subst: instance Cryptol.TypeCheck.Subst.TVars a => Cryptol.TypeCheck.Subst.TVars (Data.Map.Internal.Map k a)
- Cryptol.TypeCheck.Subst: instance Cryptol.TypeCheck.Subst.TVars t => Cryptol.TypeCheck.Subst.TVars (GHC.Maybe.Maybe t)
- Cryptol.TypeCheck.Subst: instance Cryptol.TypeCheck.Subst.TVars t => Cryptol.TypeCheck.Subst.TVars [t]
- Cryptol.TypeCheck.Subst: instance Cryptol.Utils.PP.PP (Cryptol.TypeCheck.PP.WithNames Cryptol.TypeCheck.Subst.Subst)
- Cryptol.TypeCheck.Subst: instance Cryptol.Utils.PP.PP Cryptol.TypeCheck.Subst.Subst
- Cryptol.TypeCheck.Subst: instance Data.Foldable.Foldable Cryptol.TypeCheck.Subst.Done
- Cryptol.TypeCheck.Subst: instance Data.Traversable.Traversable Cryptol.TypeCheck.Subst.Done
- Cryptol.TypeCheck.Subst: instance GHC.Base.Applicative Cryptol.TypeCheck.Subst.Done
- Cryptol.TypeCheck.Subst: instance GHC.Base.Functor Cryptol.TypeCheck.Subst.Done
- Cryptol.TypeCheck.Subst: instance GHC.Show.Show Cryptol.TypeCheck.Subst.Subst
- Cryptol.TypeCheck.Subst: isEmptySubst :: Subst -> Bool
- Cryptol.TypeCheck.Subst: listParamSubst :: [(TParam, Type)] -> Subst
- Cryptol.TypeCheck.Subst: listSubst :: [(TVar, Type)] -> Subst
- Cryptol.TypeCheck.Subst: mergeDistinctSubst :: [Subst] -> Subst
- Cryptol.TypeCheck.Subst: singleSubst :: TVar -> Type -> Either SubstError Subst
- Cryptol.TypeCheck.Subst: singleTParamSubst :: TParam -> Type -> Subst
- Cryptol.TypeCheck.Subst: substBinds :: Subst -> Set TVar
- Cryptol.TypeCheck.Subst: substToList :: Subst -> [(TVar, Type)]
- Cryptol.TypeCheck.Subst: uncheckedSingleSubst :: TVar -> Type -> Subst
- Cryptol.TypeCheck.TCon: (:->) :: Kind -> Kind -> Kind
- Cryptol.TypeCheck.TCon: KNum :: Kind
- Cryptol.TypeCheck.TCon: KProp :: Kind
- Cryptol.TypeCheck.TCon: KType :: Kind
- Cryptol.TypeCheck.TCon: PAnd :: PC
- Cryptol.TypeCheck.TCon: PC :: PC -> TCon
- Cryptol.TypeCheck.TCon: PCmp :: PC
- Cryptol.TypeCheck.TCon: PEq :: PC
- Cryptol.TypeCheck.TCon: PEqual :: PC
- Cryptol.TypeCheck.TCon: PFLiteral :: PC
- Cryptol.TypeCheck.TCon: PField :: PC
- Cryptol.TypeCheck.TCon: PFin :: PC
- Cryptol.TypeCheck.TCon: PGeq :: PC
- Cryptol.TypeCheck.TCon: PHas :: Selector -> PC
- Cryptol.TypeCheck.TCon: PIntegral :: PC
- Cryptol.TypeCheck.TCon: PLiteral :: PC
- Cryptol.TypeCheck.TCon: PLiteralLessThan :: PC
- Cryptol.TypeCheck.TCon: PLogic :: PC
- Cryptol.TypeCheck.TCon: PNeq :: PC
- Cryptol.TypeCheck.TCon: PPrime :: PC
- Cryptol.TypeCheck.TCon: PRing :: PC
- Cryptol.TypeCheck.TCon: PRound :: PC
- Cryptol.TypeCheck.TCon: PSignedCmp :: PC
- Cryptol.TypeCheck.TCon: PTrue :: PC
- Cryptol.TypeCheck.TCon: PValidFloat :: PC
- Cryptol.TypeCheck.TCon: PZero :: PC
- Cryptol.TypeCheck.TCon: TC :: TC -> TCon
- Cryptol.TypeCheck.TCon: TCAdd :: TFun
- Cryptol.TypeCheck.TCon: TCArray :: TC
- Cryptol.TypeCheck.TCon: TCBit :: TC
- Cryptol.TypeCheck.TCon: TCCeilDiv :: TFun
- Cryptol.TypeCheck.TCon: TCCeilMod :: TFun
- Cryptol.TypeCheck.TCon: TCDiv :: TFun
- Cryptol.TypeCheck.TCon: TCExp :: TFun
- Cryptol.TypeCheck.TCon: TCFloat :: TC
- Cryptol.TypeCheck.TCon: TCFun :: TC
- Cryptol.TypeCheck.TCon: TCInf :: TC
- Cryptol.TypeCheck.TCon: TCIntMod :: TC
- Cryptol.TypeCheck.TCon: TCInteger :: TC
- Cryptol.TypeCheck.TCon: TCLenFromThenTo :: TFun
- Cryptol.TypeCheck.TCon: TCMax :: TFun
- Cryptol.TypeCheck.TCon: TCMin :: TFun
- Cryptol.TypeCheck.TCon: TCMod :: TFun
- Cryptol.TypeCheck.TCon: TCMul :: TFun
- Cryptol.TypeCheck.TCon: TCNum :: Integer -> TC
- Cryptol.TypeCheck.TCon: TCRational :: TC
- Cryptol.TypeCheck.TCon: TCSeq :: TC
- Cryptol.TypeCheck.TCon: TCSub :: TFun
- Cryptol.TypeCheck.TCon: TCTuple :: Int -> TC
- Cryptol.TypeCheck.TCon: TCWidth :: TFun
- Cryptol.TypeCheck.TCon: TError :: Kind -> TCon
- Cryptol.TypeCheck.TCon: TF :: TFun -> TCon
- Cryptol.TypeCheck.TCon: builtInType :: Name -> Maybe TCon
- Cryptol.TypeCheck.TCon: class HasKind t
- Cryptol.TypeCheck.TCon: data Kind
- Cryptol.TypeCheck.TCon: data PC
- Cryptol.TypeCheck.TCon: data TC
- Cryptol.TypeCheck.TCon: data TCon
- Cryptol.TypeCheck.TCon: data TFun
- Cryptol.TypeCheck.TCon: infixPrimTy :: TCon -> Maybe (Ident, Fixity)
- Cryptol.TypeCheck.TCon: infixr 5 :->
- Cryptol.TypeCheck.TCon: instance Control.DeepSeq.NFData Cryptol.TypeCheck.TCon.Kind
- Cryptol.TypeCheck.TCon: instance Control.DeepSeq.NFData Cryptol.TypeCheck.TCon.PC
- Cryptol.TypeCheck.TCon: instance Control.DeepSeq.NFData Cryptol.TypeCheck.TCon.TC
- Cryptol.TypeCheck.TCon: instance Control.DeepSeq.NFData Cryptol.TypeCheck.TCon.TCon
- Cryptol.TypeCheck.TCon: instance Control.DeepSeq.NFData Cryptol.TypeCheck.TCon.TFun
- Cryptol.TypeCheck.TCon: instance Cryptol.TypeCheck.TCon.HasKind Cryptol.TypeCheck.TCon.PC
- Cryptol.TypeCheck.TCon: instance Cryptol.TypeCheck.TCon.HasKind Cryptol.TypeCheck.TCon.TC
- Cryptol.TypeCheck.TCon: instance Cryptol.TypeCheck.TCon.HasKind Cryptol.TypeCheck.TCon.TCon
- Cryptol.TypeCheck.TCon: instance Cryptol.TypeCheck.TCon.HasKind Cryptol.TypeCheck.TCon.TFun
- Cryptol.TypeCheck.TCon: instance Cryptol.Utils.PP.PP Cryptol.TypeCheck.TCon.Kind
- Cryptol.TypeCheck.TCon: instance Cryptol.Utils.PP.PP Cryptol.TypeCheck.TCon.PC
- Cryptol.TypeCheck.TCon: instance Cryptol.Utils.PP.PP Cryptol.TypeCheck.TCon.TC
- Cryptol.TypeCheck.TCon: instance Cryptol.Utils.PP.PP Cryptol.TypeCheck.TCon.TCon
- Cryptol.TypeCheck.TCon: instance Cryptol.Utils.PP.PP Cryptol.TypeCheck.TCon.TFun
- Cryptol.TypeCheck.TCon: instance GHC.Classes.Eq Cryptol.TypeCheck.TCon.Kind
- Cryptol.TypeCheck.TCon: instance GHC.Classes.Eq Cryptol.TypeCheck.TCon.PC
- Cryptol.TypeCheck.TCon: instance GHC.Classes.Eq Cryptol.TypeCheck.TCon.TC
- Cryptol.TypeCheck.TCon: instance GHC.Classes.Eq Cryptol.TypeCheck.TCon.TCon
- Cryptol.TypeCheck.TCon: instance GHC.Classes.Eq Cryptol.TypeCheck.TCon.TFun
- Cryptol.TypeCheck.TCon: instance GHC.Classes.Ord Cryptol.TypeCheck.TCon.Kind
- Cryptol.TypeCheck.TCon: instance GHC.Classes.Ord Cryptol.TypeCheck.TCon.PC
- Cryptol.TypeCheck.TCon: instance GHC.Classes.Ord Cryptol.TypeCheck.TCon.TC
- Cryptol.TypeCheck.TCon: instance GHC.Classes.Ord Cryptol.TypeCheck.TCon.TCon
- Cryptol.TypeCheck.TCon: instance GHC.Classes.Ord Cryptol.TypeCheck.TCon.TFun
- Cryptol.TypeCheck.TCon: instance GHC.Enum.Bounded Cryptol.TypeCheck.TCon.TFun
- Cryptol.TypeCheck.TCon: instance GHC.Enum.Enum Cryptol.TypeCheck.TCon.TFun
- Cryptol.TypeCheck.TCon: instance GHC.Generics.Generic Cryptol.TypeCheck.TCon.Kind
- Cryptol.TypeCheck.TCon: instance GHC.Generics.Generic Cryptol.TypeCheck.TCon.PC
- Cryptol.TypeCheck.TCon: instance GHC.Generics.Generic Cryptol.TypeCheck.TCon.TC
- Cryptol.TypeCheck.TCon: instance GHC.Generics.Generic Cryptol.TypeCheck.TCon.TCon
- Cryptol.TypeCheck.TCon: instance GHC.Generics.Generic Cryptol.TypeCheck.TCon.TFun
- Cryptol.TypeCheck.TCon: instance GHC.Show.Show Cryptol.TypeCheck.TCon.Kind
- Cryptol.TypeCheck.TCon: instance GHC.Show.Show Cryptol.TypeCheck.TCon.PC
- Cryptol.TypeCheck.TCon: instance GHC.Show.Show Cryptol.TypeCheck.TCon.TC
- Cryptol.TypeCheck.TCon: instance GHC.Show.Show Cryptol.TypeCheck.TCon.TCon
- Cryptol.TypeCheck.TCon: instance GHC.Show.Show Cryptol.TypeCheck.TCon.TFun
- Cryptol.TypeCheck.TCon: kindOf :: HasKind t => t -> Kind
- Cryptol.TypeCheck.Type: (=#=) :: Type -> Type -> Prop
- Cryptol.TypeCheck.Type: (=/=) :: Type -> Type -> Prop
- Cryptol.TypeCheck.Type: (>==) :: Type -> Type -> Prop
- Cryptol.TypeCheck.Type: Abstract :: NominalTypeDef
- Cryptol.TypeCheck.Type: ArgDescr :: Maybe Name -> Maybe Int -> ArgDescr
- Cryptol.TypeCheck.Type: CasedExpression :: TypeSource
- Cryptol.TypeCheck.Type: ConPat :: TypeSource
- Cryptol.TypeCheck.Type: DefinitionOf :: Name -> TypeSource
- Cryptol.TypeCheck.Type: Enum :: [EnumCon] -> NominalTypeDef
- Cryptol.TypeCheck.Type: EnumCon :: Name -> !Int -> [Type] -> Bool -> Maybe Text -> EnumCon
- Cryptol.TypeCheck.Type: Forall :: [TParam] -> [Prop] -> Type -> Schema
- Cryptol.TypeCheck.Type: FunApp :: TypeSource
- Cryptol.TypeCheck.Type: GeneratorOfListComp :: TypeSource
- Cryptol.TypeCheck.Type: LenOfCompGen :: TypeSource
- Cryptol.TypeCheck.Type: LenOfSeq :: TypeSource
- Cryptol.TypeCheck.Type: ModParam :: Ident -> !Maybe ModName -> ImpName Name -> ModParamNames -> ModParam
- Cryptol.TypeCheck.Type: ModParamNames :: Map Name ModTParam -> !Map Name TySyn -> [Located Prop] -> Map Name ModVParam -> !Maybe Text -> ModParamNames
- Cryptol.TypeCheck.Type: ModTParam :: Name -> Kind -> Maybe Text -> ModTParam
- Cryptol.TypeCheck.Type: ModVParam :: Name -> Schema -> Maybe Text -> Maybe Fixity -> ModVParam
- Cryptol.TypeCheck.Type: NominalType :: Name -> [TParam] -> !Kind -> [Prop] -> NominalTypeDef -> !Maybe Fixity -> Maybe Text -> NominalType
- Cryptol.TypeCheck.Type: Struct :: StructCon -> NominalTypeDef
- Cryptol.TypeCheck.Type: StructCon :: !Name -> RecordMap Ident Type -> StructCon
- Cryptol.TypeCheck.Type: TCon :: !TCon -> ![Type] -> Type
- Cryptol.TypeCheck.Type: TNominal :: !NominalType -> ![Type] -> Type
- Cryptol.TypeCheck.Type: TPModParam :: Name -> TPFlavor
- Cryptol.TypeCheck.Type: TPNominalParam :: Name -> TPFlavor
- Cryptol.TypeCheck.Type: TPPrimParam :: Name -> TPFlavor
- Cryptol.TypeCheck.Type: TPPropSynParam :: Name -> TPFlavor
- Cryptol.TypeCheck.Type: TPSchemaParam :: Name -> TPFlavor
- Cryptol.TypeCheck.Type: TPTySynParam :: Name -> TPFlavor
- Cryptol.TypeCheck.Type: TPUnifyVar :: TPFlavor
- Cryptol.TypeCheck.Type: TParam :: !Int -> Kind -> TPFlavor -> !TVarInfo -> TParam
- Cryptol.TypeCheck.Type: TRec :: !RecordMap Ident Type -> Type
- Cryptol.TypeCheck.Type: TUser :: !Name -> ![Type] -> !Type -> Type
- Cryptol.TypeCheck.Type: TVBound :: {-# UNPACK #-} !TParam -> TVar
- Cryptol.TypeCheck.Type: TVFree :: !Int -> Kind -> Set TParam -> TVarInfo -> TVar
- Cryptol.TypeCheck.Type: TVFromModParam :: Name -> TypeSource
- Cryptol.TypeCheck.Type: TVFromSignature :: Name -> TypeSource
- Cryptol.TypeCheck.Type: TVar :: TVar -> Type
- Cryptol.TypeCheck.Type: TVarInfo :: !Range -> !TypeSource -> TVarInfo
- Cryptol.TypeCheck.Type: TySyn :: Name -> [TParam] -> [Prop] -> Type -> !Maybe Text -> TySyn
- Cryptol.TypeCheck.Type: TypeErrorPlaceHolder :: TypeSource
- Cryptol.TypeCheck.Type: TypeFromUserAnnotation :: TypeSource
- Cryptol.TypeCheck.Type: TypeOfArg :: ArgDescr -> TypeSource
- Cryptol.TypeCheck.Type: TypeOfIfCondExpr :: TypeSource
- Cryptol.TypeCheck.Type: TypeOfRecordField :: Ident -> TypeSource
- Cryptol.TypeCheck.Type: TypeOfRes :: TypeSource
- Cryptol.TypeCheck.Type: TypeOfSeqElement :: TypeSource
- Cryptol.TypeCheck.Type: TypeOfTupleField :: Int -> TypeSource
- Cryptol.TypeCheck.Type: TypeParamInstNamed :: Name -> Ident -> TypeSource
- Cryptol.TypeCheck.Type: TypeParamInstPos :: Name -> Int -> TypeSource
- Cryptol.TypeCheck.Type: TypeWildCard :: TypeSource
- Cryptol.TypeCheck.Type: WithSource :: Type -> TypeSource -> !Maybe Range -> TypeWithSource
- Cryptol.TypeCheck.Type: [argDescrFun] :: ArgDescr -> Maybe Name
- Cryptol.TypeCheck.Type: [argDescrNumber] :: ArgDescr -> Maybe Int
- Cryptol.TypeCheck.Type: [ecDoc] :: EnumCon -> Maybe Text
- Cryptol.TypeCheck.Type: [ecFields] :: EnumCon -> [Type]
- Cryptol.TypeCheck.Type: [ecName] :: EnumCon -> Name
- Cryptol.TypeCheck.Type: [ecNumber] :: EnumCon -> !Int
- Cryptol.TypeCheck.Type: [ecPublic] :: EnumCon -> Bool
- Cryptol.TypeCheck.Type: [mpIface] :: ModParam -> ImpName Name
- Cryptol.TypeCheck.Type: [mpName] :: ModParam -> Ident
- Cryptol.TypeCheck.Type: [mpParameters] :: ModParam -> ModParamNames
- Cryptol.TypeCheck.Type: [mpQual] :: ModParam -> !Maybe ModName
- Cryptol.TypeCheck.Type: [mpnConstraints] :: ModParamNames -> [Located Prop]
- Cryptol.TypeCheck.Type: [mpnDoc] :: ModParamNames -> !Maybe Text
- Cryptol.TypeCheck.Type: [mpnFuns] :: ModParamNames -> Map Name ModVParam
- Cryptol.TypeCheck.Type: [mpnTySyn] :: ModParamNames -> !Map Name TySyn
- Cryptol.TypeCheck.Type: [mpnTypes] :: ModParamNames -> Map Name ModTParam
- Cryptol.TypeCheck.Type: [mtpDoc] :: ModTParam -> Maybe Text
- Cryptol.TypeCheck.Type: [mtpKind] :: ModTParam -> Kind
- Cryptol.TypeCheck.Type: [mtpName] :: ModTParam -> Name
- Cryptol.TypeCheck.Type: [mvpDoc] :: ModVParam -> Maybe Text
- Cryptol.TypeCheck.Type: [mvpFixity] :: ModVParam -> Maybe Fixity
- Cryptol.TypeCheck.Type: [mvpName] :: ModVParam -> Name
- Cryptol.TypeCheck.Type: [mvpType] :: ModVParam -> Schema
- Cryptol.TypeCheck.Type: [ntConName] :: StructCon -> !Name
- Cryptol.TypeCheck.Type: [ntConstraints] :: NominalType -> [Prop]
- Cryptol.TypeCheck.Type: [ntDef] :: NominalType -> NominalTypeDef
- Cryptol.TypeCheck.Type: [ntDoc] :: NominalType -> Maybe Text
- Cryptol.TypeCheck.Type: [ntFields] :: StructCon -> RecordMap Ident Type
- Cryptol.TypeCheck.Type: [ntFixity] :: NominalType -> !Maybe Fixity
- Cryptol.TypeCheck.Type: [ntKind] :: NominalType -> !Kind
- Cryptol.TypeCheck.Type: [ntName] :: NominalType -> Name
- Cryptol.TypeCheck.Type: [ntParams] :: NominalType -> [TParam]
- Cryptol.TypeCheck.Type: [sProps] :: Schema -> [Prop]
- Cryptol.TypeCheck.Type: [sType] :: Schema -> Type
- Cryptol.TypeCheck.Type: [sVars] :: Schema -> [TParam]
- Cryptol.TypeCheck.Type: [tpFlav] :: TParam -> TPFlavor
- Cryptol.TypeCheck.Type: [tpInfo] :: TParam -> !TVarInfo
- Cryptol.TypeCheck.Type: [tpKind] :: TParam -> Kind
- Cryptol.TypeCheck.Type: [tpUnique] :: TParam -> !Int
- Cryptol.TypeCheck.Type: [tsConstraints] :: TySyn -> [Prop]
- Cryptol.TypeCheck.Type: [tsDef] :: TySyn -> Type
- Cryptol.TypeCheck.Type: [tsDoc] :: TySyn -> !Maybe Text
- Cryptol.TypeCheck.Type: [tsName] :: TySyn -> Name
- Cryptol.TypeCheck.Type: [tsParams] :: TySyn -> [TParam]
- Cryptol.TypeCheck.Type: [tvarDesc] :: TVarInfo -> !TypeSource
- Cryptol.TypeCheck.Type: [tvarSource] :: TVarInfo -> !Range
- Cryptol.TypeCheck.Type: [twsRange] :: TypeWithSource -> !Maybe Range
- Cryptol.TypeCheck.Type: [twsSource] :: TypeWithSource -> TypeSource
- Cryptol.TypeCheck.Type: [twsType] :: TypeWithSource -> Type
- Cryptol.TypeCheck.Type: addTNames :: [TParam] -> NameMap -> NameMap
- Cryptol.TypeCheck.Type: allParamNames :: FunctorParams -> ModParamNames
- Cryptol.TypeCheck.Type: class FVS t
- Cryptol.TypeCheck.Type: data ArgDescr
- Cryptol.TypeCheck.Type: data EnumCon
- Cryptol.TypeCheck.Type: data ModParam
- Cryptol.TypeCheck.Type: data ModParamNames
- Cryptol.TypeCheck.Type: data ModTParam
- Cryptol.TypeCheck.Type: data ModVParam
- Cryptol.TypeCheck.Type: data NominalType
- Cryptol.TypeCheck.Type: data NominalTypeDef
- Cryptol.TypeCheck.Type: data Schema
- Cryptol.TypeCheck.Type: data StructCon
- Cryptol.TypeCheck.Type: data TPFlavor
- Cryptol.TypeCheck.Type: data TParam
- Cryptol.TypeCheck.Type: data TVar
- Cryptol.TypeCheck.Type: data TVarInfo
- Cryptol.TypeCheck.Type: data TySyn
- Cryptol.TypeCheck.Type: data Type
- Cryptol.TypeCheck.Type: data TypeSource
- Cryptol.TypeCheck.Type: data TypeWithSource
- Cryptol.TypeCheck.Type: freeParams :: FVS t => t -> Set TParam
- Cryptol.TypeCheck.Type: fvs :: FVS t => t -> Set TVar
- Cryptol.TypeCheck.Type: infix 4 >==
- Cryptol.TypeCheck.Type: infixr 5 `tFun`
- Cryptol.TypeCheck.Type: instance (Cryptol.TypeCheck.Type.FVS a, Cryptol.TypeCheck.Type.FVS b) => Cryptol.TypeCheck.Type.FVS (a, b)
- Cryptol.TypeCheck.Type: instance Control.DeepSeq.NFData Cryptol.TypeCheck.Type.ArgDescr
- Cryptol.TypeCheck.Type: instance Control.DeepSeq.NFData Cryptol.TypeCheck.Type.EnumCon
- Cryptol.TypeCheck.Type: instance Control.DeepSeq.NFData Cryptol.TypeCheck.Type.ModParam
- Cryptol.TypeCheck.Type: instance Control.DeepSeq.NFData Cryptol.TypeCheck.Type.ModParamNames
- Cryptol.TypeCheck.Type: instance Control.DeepSeq.NFData Cryptol.TypeCheck.Type.ModTParam
- Cryptol.TypeCheck.Type: instance Control.DeepSeq.NFData Cryptol.TypeCheck.Type.ModVParam
- Cryptol.TypeCheck.Type: instance Control.DeepSeq.NFData Cryptol.TypeCheck.Type.NominalType
- Cryptol.TypeCheck.Type: instance Control.DeepSeq.NFData Cryptol.TypeCheck.Type.NominalTypeDef
- Cryptol.TypeCheck.Type: instance Control.DeepSeq.NFData Cryptol.TypeCheck.Type.Schema
- Cryptol.TypeCheck.Type: instance Control.DeepSeq.NFData Cryptol.TypeCheck.Type.StructCon
- Cryptol.TypeCheck.Type: instance Control.DeepSeq.NFData Cryptol.TypeCheck.Type.TPFlavor
- Cryptol.TypeCheck.Type: instance Control.DeepSeq.NFData Cryptol.TypeCheck.Type.TParam
- Cryptol.TypeCheck.Type: instance Control.DeepSeq.NFData Cryptol.TypeCheck.Type.TVar
- Cryptol.TypeCheck.Type: instance Control.DeepSeq.NFData Cryptol.TypeCheck.Type.TVarInfo
- Cryptol.TypeCheck.Type: instance Control.DeepSeq.NFData Cryptol.TypeCheck.Type.TySyn
- Cryptol.TypeCheck.Type: instance Control.DeepSeq.NFData Cryptol.TypeCheck.Type.Type
- Cryptol.TypeCheck.Type: instance Control.DeepSeq.NFData Cryptol.TypeCheck.Type.TypeSource
- Cryptol.TypeCheck.Type: instance Cryptol.TypeCheck.TCon.HasKind Cryptol.TypeCheck.Type.NominalType
- Cryptol.TypeCheck.Type: instance Cryptol.TypeCheck.TCon.HasKind Cryptol.TypeCheck.Type.TParam
- Cryptol.TypeCheck.Type: instance Cryptol.TypeCheck.TCon.HasKind Cryptol.TypeCheck.Type.TVar
- Cryptol.TypeCheck.Type: instance Cryptol.TypeCheck.TCon.HasKind Cryptol.TypeCheck.Type.TySyn
- Cryptol.TypeCheck.Type: instance Cryptol.TypeCheck.TCon.HasKind Cryptol.TypeCheck.Type.Type
- Cryptol.TypeCheck.Type: instance Cryptol.TypeCheck.Type.FVS Cryptol.TypeCheck.Type.Schema
- Cryptol.TypeCheck.Type: instance Cryptol.TypeCheck.Type.FVS Cryptol.TypeCheck.Type.Type
- Cryptol.TypeCheck.Type: instance Cryptol.TypeCheck.Type.FVS a => Cryptol.TypeCheck.Type.FVS (GHC.Maybe.Maybe a)
- Cryptol.TypeCheck.Type: instance Cryptol.TypeCheck.Type.FVS a => Cryptol.TypeCheck.Type.FVS [a]
- Cryptol.TypeCheck.Type: instance Cryptol.Utils.PP.PP (Cryptol.TypeCheck.PP.WithNames Cryptol.TypeCheck.Type.NominalType)
- Cryptol.TypeCheck.Type: instance Cryptol.Utils.PP.PP (Cryptol.TypeCheck.PP.WithNames Cryptol.TypeCheck.Type.Schema)
- Cryptol.TypeCheck.Type: instance Cryptol.Utils.PP.PP (Cryptol.TypeCheck.PP.WithNames Cryptol.TypeCheck.Type.TParam)
- Cryptol.TypeCheck.Type: instance Cryptol.Utils.PP.PP (Cryptol.TypeCheck.PP.WithNames Cryptol.TypeCheck.Type.TVar)
- Cryptol.TypeCheck.Type: instance Cryptol.Utils.PP.PP (Cryptol.TypeCheck.PP.WithNames Cryptol.TypeCheck.Type.TySyn)
- Cryptol.TypeCheck.Type: instance Cryptol.Utils.PP.PP (Cryptol.TypeCheck.PP.WithNames Cryptol.TypeCheck.Type.Type)
- Cryptol.TypeCheck.Type: instance Cryptol.Utils.PP.PP Cryptol.TypeCheck.Type.ArgDescr
- Cryptol.TypeCheck.Type: instance Cryptol.Utils.PP.PP Cryptol.TypeCheck.Type.ModParamNames
- Cryptol.TypeCheck.Type: instance Cryptol.Utils.PP.PP Cryptol.TypeCheck.Type.ModTParam
- Cryptol.TypeCheck.Type: instance Cryptol.Utils.PP.PP Cryptol.TypeCheck.Type.ModVParam
- Cryptol.TypeCheck.Type: instance Cryptol.Utils.PP.PP Cryptol.TypeCheck.Type.NominalType
- Cryptol.TypeCheck.Type: instance Cryptol.Utils.PP.PP Cryptol.TypeCheck.Type.Schema
- Cryptol.TypeCheck.Type: instance Cryptol.Utils.PP.PP Cryptol.TypeCheck.Type.TParam
- Cryptol.TypeCheck.Type: instance Cryptol.Utils.PP.PP Cryptol.TypeCheck.Type.TVar
- Cryptol.TypeCheck.Type: instance Cryptol.Utils.PP.PP Cryptol.TypeCheck.Type.TVarInfo
- Cryptol.TypeCheck.Type: instance Cryptol.Utils.PP.PP Cryptol.TypeCheck.Type.TySyn
- Cryptol.TypeCheck.Type: instance Cryptol.Utils.PP.PP Cryptol.TypeCheck.Type.Type
- Cryptol.TypeCheck.Type: instance Cryptol.Utils.PP.PP Cryptol.TypeCheck.Type.TypeSource
- Cryptol.TypeCheck.Type: instance GHC.Classes.Eq Cryptol.TypeCheck.Type.NominalType
- Cryptol.TypeCheck.Type: instance GHC.Classes.Eq Cryptol.TypeCheck.Type.Schema
- Cryptol.TypeCheck.Type: instance GHC.Classes.Eq Cryptol.TypeCheck.Type.TParam
- Cryptol.TypeCheck.Type: instance GHC.Classes.Eq Cryptol.TypeCheck.Type.TVar
- Cryptol.TypeCheck.Type: instance GHC.Classes.Eq Cryptol.TypeCheck.Type.Type
- Cryptol.TypeCheck.Type: instance GHC.Classes.Ord Cryptol.TypeCheck.Type.NominalType
- Cryptol.TypeCheck.Type: instance GHC.Classes.Ord Cryptol.TypeCheck.Type.TParam
- Cryptol.TypeCheck.Type: instance GHC.Classes.Ord Cryptol.TypeCheck.Type.TVar
- Cryptol.TypeCheck.Type: instance GHC.Classes.Ord Cryptol.TypeCheck.Type.Type
- Cryptol.TypeCheck.Type: instance GHC.Generics.Generic Cryptol.TypeCheck.Type.ArgDescr
- Cryptol.TypeCheck.Type: instance GHC.Generics.Generic Cryptol.TypeCheck.Type.EnumCon
- Cryptol.TypeCheck.Type: instance GHC.Generics.Generic Cryptol.TypeCheck.Type.ModParam
- Cryptol.TypeCheck.Type: instance GHC.Generics.Generic Cryptol.TypeCheck.Type.ModParamNames
- Cryptol.TypeCheck.Type: instance GHC.Generics.Generic Cryptol.TypeCheck.Type.ModTParam
- Cryptol.TypeCheck.Type: instance GHC.Generics.Generic Cryptol.TypeCheck.Type.ModVParam
- Cryptol.TypeCheck.Type: instance GHC.Generics.Generic Cryptol.TypeCheck.Type.NominalType
- Cryptol.TypeCheck.Type: instance GHC.Generics.Generic Cryptol.TypeCheck.Type.NominalTypeDef
- Cryptol.TypeCheck.Type: instance GHC.Generics.Generic Cryptol.TypeCheck.Type.Schema
- Cryptol.TypeCheck.Type: instance GHC.Generics.Generic Cryptol.TypeCheck.Type.StructCon
- Cryptol.TypeCheck.Type: instance GHC.Generics.Generic Cryptol.TypeCheck.Type.TPFlavor
- Cryptol.TypeCheck.Type: instance GHC.Generics.Generic Cryptol.TypeCheck.Type.TParam
- Cryptol.TypeCheck.Type: instance GHC.Generics.Generic Cryptol.TypeCheck.Type.TVar
- Cryptol.TypeCheck.Type: instance GHC.Generics.Generic Cryptol.TypeCheck.Type.TVarInfo
- Cryptol.TypeCheck.Type: instance GHC.Generics.Generic Cryptol.TypeCheck.Type.TySyn
- Cryptol.TypeCheck.Type: instance GHC.Generics.Generic Cryptol.TypeCheck.Type.Type
- Cryptol.TypeCheck.Type: instance GHC.Generics.Generic Cryptol.TypeCheck.Type.TypeSource
- Cryptol.TypeCheck.Type: instance GHC.Show.Show Cryptol.TypeCheck.Type.ArgDescr
- Cryptol.TypeCheck.Type: instance GHC.Show.Show Cryptol.TypeCheck.Type.EnumCon
- Cryptol.TypeCheck.Type: instance GHC.Show.Show Cryptol.TypeCheck.Type.ModParam
- Cryptol.TypeCheck.Type: instance GHC.Show.Show Cryptol.TypeCheck.Type.ModParamNames
- Cryptol.TypeCheck.Type: instance GHC.Show.Show Cryptol.TypeCheck.Type.ModTParam
- Cryptol.TypeCheck.Type: instance GHC.Show.Show Cryptol.TypeCheck.Type.ModVParam
- Cryptol.TypeCheck.Type: instance GHC.Show.Show Cryptol.TypeCheck.Type.NominalType
- Cryptol.TypeCheck.Type: instance GHC.Show.Show Cryptol.TypeCheck.Type.NominalTypeDef
- Cryptol.TypeCheck.Type: instance GHC.Show.Show Cryptol.TypeCheck.Type.Schema
- Cryptol.TypeCheck.Type: instance GHC.Show.Show Cryptol.TypeCheck.Type.StructCon
- Cryptol.TypeCheck.Type: instance GHC.Show.Show Cryptol.TypeCheck.Type.TPFlavor
- Cryptol.TypeCheck.Type: instance GHC.Show.Show Cryptol.TypeCheck.Type.TParam
- Cryptol.TypeCheck.Type: instance GHC.Show.Show Cryptol.TypeCheck.Type.TVar
- Cryptol.TypeCheck.Type: instance GHC.Show.Show Cryptol.TypeCheck.Type.TVarInfo
- Cryptol.TypeCheck.Type: instance GHC.Show.Show Cryptol.TypeCheck.Type.TySyn
- Cryptol.TypeCheck.Type: instance GHC.Show.Show Cryptol.TypeCheck.Type.Type
- Cryptol.TypeCheck.Type: instance GHC.Show.Show Cryptol.TypeCheck.Type.TypeSource
- Cryptol.TypeCheck.Type: isBoundTV :: TVar -> Bool
- Cryptol.TypeCheck.Type: isFreeTV :: TVar -> Bool
- Cryptol.TypeCheck.Type: isMono :: Schema -> Maybe Type
- Cryptol.TypeCheck.Type: kindResult :: Kind -> Kind
- Cryptol.TypeCheck.Type: modTyParam :: Name -> TPFlavor
- Cryptol.TypeCheck.Type: mtpParam :: ModTParam -> TParam
- Cryptol.TypeCheck.Type: noArgDescr :: ArgDescr
- Cryptol.TypeCheck.Type: noFreeVariables :: FVS t => t -> Bool
- Cryptol.TypeCheck.Type: nominalParam :: Name -> TPFlavor
- Cryptol.TypeCheck.Type: nominalTypeConTypes :: NominalType -> [(Name, Schema)]
- Cryptol.TypeCheck.Type: nominalTypeIsAbstract :: NominalType -> Bool
- Cryptol.TypeCheck.Type: pAnd :: [Prop] -> Prop
- Cryptol.TypeCheck.Type: pCmp :: Type -> Prop
- Cryptol.TypeCheck.Type: pEq :: Type -> Prop
- Cryptol.TypeCheck.Type: pField :: Type -> Prop
- Cryptol.TypeCheck.Type: pFin :: Type -> Prop
- Cryptol.TypeCheck.Type: pHas :: Selector -> Type -> Type -> Prop
- Cryptol.TypeCheck.Type: pIntegral :: Type -> Prop
- Cryptol.TypeCheck.Type: pIsCmp :: Prop -> Maybe Type
- Cryptol.TypeCheck.Type: pIsEq :: Prop -> Maybe Type
- Cryptol.TypeCheck.Type: pIsEqual :: Prop -> Maybe (Type, Type)
- Cryptol.TypeCheck.Type: pIsFLiteral :: Prop -> Maybe (Type, Type, Type, Type)
- Cryptol.TypeCheck.Type: pIsField :: Prop -> Maybe Type
- Cryptol.TypeCheck.Type: pIsFin :: Prop -> Maybe Type
- Cryptol.TypeCheck.Type: pIsGeq :: Prop -> Maybe (Type, Type)
- Cryptol.TypeCheck.Type: pIsIntegral :: Prop -> Maybe Type
- Cryptol.TypeCheck.Type: pIsLiteral :: Prop -> Maybe (Type, Type)
- Cryptol.TypeCheck.Type: pIsLiteralLessThan :: Prop -> Maybe (Type, Type)
- Cryptol.TypeCheck.Type: pIsLogic :: Prop -> Maybe Type
- Cryptol.TypeCheck.Type: pIsPrime :: Prop -> Maybe Type
- Cryptol.TypeCheck.Type: pIsRing :: Prop -> Maybe Type
- Cryptol.TypeCheck.Type: pIsRound :: Prop -> Maybe Type
- Cryptol.TypeCheck.Type: pIsSignedCmp :: Prop -> Maybe Type
- Cryptol.TypeCheck.Type: pIsTrue :: Prop -> Bool
- Cryptol.TypeCheck.Type: pIsValidFloat :: Prop -> Maybe (Type, Type)
- Cryptol.TypeCheck.Type: pIsWidth :: Prop -> Maybe Type
- Cryptol.TypeCheck.Type: pIsZero :: Prop -> Maybe Type
- Cryptol.TypeCheck.Type: pLiteral :: Type -> Type -> Prop
- Cryptol.TypeCheck.Type: pLiteralLessThan :: Type -> Type -> Prop
- Cryptol.TypeCheck.Type: pLogic :: Type -> Prop
- Cryptol.TypeCheck.Type: pNegNumeric :: Prop -> [Prop]
- Cryptol.TypeCheck.Type: pPrime :: Type -> Prop
- Cryptol.TypeCheck.Type: pRing :: Type -> Prop
- Cryptol.TypeCheck.Type: pRound :: Type -> Prop
- Cryptol.TypeCheck.Type: pSignedCmp :: Type -> Prop
- Cryptol.TypeCheck.Type: pSplitAnd :: Prop -> [Prop]
- Cryptol.TypeCheck.Type: pTrue :: Prop
- Cryptol.TypeCheck.Type: pValidFloat :: Type -> Type -> Type
- Cryptol.TypeCheck.Type: pZero :: Type -> Prop
- Cryptol.TypeCheck.Type: pickTVarName :: Kind -> TypeSource -> Int -> Doc
- Cryptol.TypeCheck.Type: ppNominalFull :: NominalType -> Doc
- Cryptol.TypeCheck.Type: ppNominalShort :: NominalType -> Doc
- Cryptol.TypeCheck.Type: primParam :: Name -> TPFlavor
- Cryptol.TypeCheck.Type: propSynParam :: Name -> TPFlavor
- Cryptol.TypeCheck.Type: quickApply :: Kind -> [a] -> Kind
- Cryptol.TypeCheck.Type: schemaParam :: Name -> TPFlavor
- Cryptol.TypeCheck.Type: superclassSet :: Prop -> Set Prop
- Cryptol.TypeCheck.Type: tArray :: Type -> Type -> Type
- Cryptol.TypeCheck.Type: tBit :: Type
- Cryptol.TypeCheck.Type: tCeilDiv :: Type -> Type -> Type
- Cryptol.TypeCheck.Type: tCeilMod :: Type -> Type -> Type
- Cryptol.TypeCheck.Type: tChar :: Type
- Cryptol.TypeCheck.Type: tDiv :: Type -> Type -> Type
- Cryptol.TypeCheck.Type: tError :: Type -> Type
- Cryptol.TypeCheck.Type: tExp :: Type -> Type -> Type
- Cryptol.TypeCheck.Type: tFloat :: Type -> Type -> Type
- Cryptol.TypeCheck.Type: tFun :: Type -> Type -> Type
- Cryptol.TypeCheck.Type: tHasErrors :: Type -> Bool
- Cryptol.TypeCheck.Type: tInf :: Type
- Cryptol.TypeCheck.Type: tIntMod :: Type -> Type
- Cryptol.TypeCheck.Type: tInteger :: Type
- Cryptol.TypeCheck.Type: tIsBinFun :: TFun -> Type -> Maybe (Type, Type)
- Cryptol.TypeCheck.Type: tIsBit :: Type -> Bool
- Cryptol.TypeCheck.Type: tIsError :: Type -> Maybe Type
- Cryptol.TypeCheck.Type: tIsFloat :: Type -> Maybe (Type, Type)
- Cryptol.TypeCheck.Type: tIsFun :: Type -> Maybe (Type, Type)
- Cryptol.TypeCheck.Type: tIsInf :: Type -> Bool
- Cryptol.TypeCheck.Type: tIsIntMod :: Type -> Maybe Type
- Cryptol.TypeCheck.Type: tIsInteger :: Type -> Bool
- Cryptol.TypeCheck.Type: tIsNat' :: Type -> Maybe Nat'
- Cryptol.TypeCheck.Type: tIsNominal :: Type -> Maybe (NominalType, [Type])
- Cryptol.TypeCheck.Type: tIsNum :: Type -> Maybe Integer
- Cryptol.TypeCheck.Type: tIsRational :: Type -> Bool
- Cryptol.TypeCheck.Type: tIsRec :: Type -> Maybe (RecordMap Ident Type)
- Cryptol.TypeCheck.Type: tIsSeq :: Type -> Maybe (Type, Type)
- Cryptol.TypeCheck.Type: tIsTuple :: Type -> Maybe [Type]
- Cryptol.TypeCheck.Type: tIsVar :: Type -> Maybe TVar
- Cryptol.TypeCheck.Type: tLenFromThenTo :: Type -> Type -> Type -> Type
- Cryptol.TypeCheck.Type: tMin :: Type -> Type -> Type
- Cryptol.TypeCheck.Type: tMod :: Type -> Type -> Type
- Cryptol.TypeCheck.Type: tMono :: Type -> Schema
- Cryptol.TypeCheck.Type: tMul :: Type -> Type -> Type
- Cryptol.TypeCheck.Type: tNat' :: Nat' -> Type
- Cryptol.TypeCheck.Type: tNoUser :: Type -> Type
- Cryptol.TypeCheck.Type: tNominal :: NominalType -> [Type] -> Type
- Cryptol.TypeCheck.Type: tNum :: Integral a => a -> Type
- Cryptol.TypeCheck.Type: tOne :: Type
- Cryptol.TypeCheck.Type: tRational :: Type
- Cryptol.TypeCheck.Type: tRec :: RecordMap Ident Type -> Type
- Cryptol.TypeCheck.Type: tSeq :: Type -> Type -> Type
- Cryptol.TypeCheck.Type: tSplitFun :: TFun -> Type -> [Type]
- Cryptol.TypeCheck.Type: tString :: Int -> Type
- Cryptol.TypeCheck.Type: tSub :: Type -> Type -> Type
- Cryptol.TypeCheck.Type: tTuple :: [Type] -> Type
- Cryptol.TypeCheck.Type: tTwo :: Type
- Cryptol.TypeCheck.Type: tWord :: Type -> Type
- Cryptol.TypeCheck.Type: tZero :: Type
- Cryptol.TypeCheck.Type: tf1 :: TFun -> Type -> Type
- Cryptol.TypeCheck.Type: tf2 :: TFun -> Type -> Type -> Type
- Cryptol.TypeCheck.Type: tf3 :: TFun -> Type -> Type -> Type -> Type
- Cryptol.TypeCheck.Type: tpName :: TParam -> Maybe Name
- Cryptol.TypeCheck.Type: tpVar :: TParam -> TVar
- Cryptol.TypeCheck.Type: tpfName :: TPFlavor -> Maybe Name
- Cryptol.TypeCheck.Type: tvInfo :: TVar -> TVarInfo
- Cryptol.TypeCheck.Type: tvSourceName :: TypeSource -> Maybe Name
- Cryptol.TypeCheck.Type: tvUnique :: TVar -> Int
- Cryptol.TypeCheck.Type: tySynParam :: Name -> TPFlavor
- Cryptol.TypeCheck.Type: type FunctorParams = Map Ident ModParam
- Cryptol.TypeCheck.Type: type Prop = Type
- Cryptol.TypeCheck.Type: type SType = Type
- Cryptol.TypeCheck.TypeMap: L :: Maybe a -> m (List m a) -> List m a
- Cryptol.TypeCheck.TypeMap: TM :: Map TVar a -> Map TCon (List TypeMap a) -> Map [Ident] (List TypeMap a) -> Map NominalType (List TypeMap a) -> TypeMap a
- Cryptol.TypeCheck.TypeMap: [cons] :: List m a -> m (List m a)
- Cryptol.TypeCheck.TypeMap: [nil] :: List m a -> Maybe a
- Cryptol.TypeCheck.TypeMap: [tcon] :: TypeMap a -> Map TCon (List TypeMap a)
- Cryptol.TypeCheck.TypeMap: [tnominal] :: TypeMap a -> Map NominalType (List TypeMap a)
- Cryptol.TypeCheck.TypeMap: [trec] :: TypeMap a -> Map [Ident] (List TypeMap a)
- Cryptol.TypeCheck.TypeMap: [tvar] :: TypeMap a -> Map TVar a
- Cryptol.TypeCheck.TypeMap: alterTM :: TrieMap m k => k -> (Maybe a -> Maybe a) -> m a -> m a
- Cryptol.TypeCheck.TypeMap: class TrieMap m k | m -> k
- Cryptol.TypeCheck.TypeMap: data List m a
- Cryptol.TypeCheck.TypeMap: data TypeMap a
- Cryptol.TypeCheck.TypeMap: emptyTM :: TrieMap m k => m a
- Cryptol.TypeCheck.TypeMap: insertTM :: TrieMap m k => k -> a -> m a -> m a
- Cryptol.TypeCheck.TypeMap: insertWithTM :: TrieMap m k => (a -> a -> a) -> k -> a -> m a -> m a
- Cryptol.TypeCheck.TypeMap: instance Cryptol.TypeCheck.TypeMap.TrieMap Cryptol.TypeCheck.TypeMap.TypeMap Cryptol.TypeCheck.Type.Type
- Cryptol.TypeCheck.TypeMap: instance Cryptol.TypeCheck.TypeMap.TrieMap m a => Cryptol.TypeCheck.TypeMap.TrieMap (Cryptol.TypeCheck.TypeMap.List m) [a]
- Cryptol.TypeCheck.TypeMap: instance Data.Foldable.Foldable Cryptol.TypeCheck.TypeMap.TypeMap
- Cryptol.TypeCheck.TypeMap: instance Data.Foldable.Foldable m => Data.Foldable.Foldable (Cryptol.TypeCheck.TypeMap.List m)
- Cryptol.TypeCheck.TypeMap: instance Data.Traversable.Traversable Cryptol.TypeCheck.TypeMap.TypeMap
- Cryptol.TypeCheck.TypeMap: instance Data.Traversable.Traversable m => Data.Traversable.Traversable (Cryptol.TypeCheck.TypeMap.List m)
- Cryptol.TypeCheck.TypeMap: instance GHC.Base.Functor Cryptol.TypeCheck.TypeMap.TypeMap
- Cryptol.TypeCheck.TypeMap: instance GHC.Base.Functor m => GHC.Base.Functor (Cryptol.TypeCheck.TypeMap.List m)
- Cryptol.TypeCheck.TypeMap: instance GHC.Classes.Ord a => Cryptol.TypeCheck.TypeMap.TrieMap (Data.Map.Internal.Map a) a
- Cryptol.TypeCheck.TypeMap: instance GHC.Show.Show a => GHC.Show.Show (Cryptol.TypeCheck.TypeMap.TypeMap a)
- Cryptol.TypeCheck.TypeMap: lookupTM :: TrieMap m k => k -> m a -> Maybe a
- Cryptol.TypeCheck.TypeMap: mapMaybeTM :: TrieMap m k => (a -> Maybe b) -> m a -> m b
- Cryptol.TypeCheck.TypeMap: mapMaybeWithKeyTM :: TrieMap m k => (k -> a -> Maybe b) -> m a -> m b
- Cryptol.TypeCheck.TypeMap: mapTM :: TrieMap m k => (a -> b) -> m a -> m b
- Cryptol.TypeCheck.TypeMap: mapWithKeyTM :: TrieMap m k => (k -> a -> b) -> m a -> m b
- Cryptol.TypeCheck.TypeMap: membersTM :: TrieMap m k => m a -> [a]
- Cryptol.TypeCheck.TypeMap: nullTM :: TrieMap m k => m a -> Bool
- Cryptol.TypeCheck.TypeMap: toListTM :: TrieMap m k => m a -> [(k, a)]
- Cryptol.TypeCheck.TypeMap: type TypesMap = List TypeMap
- Cryptol.TypeCheck.TypeMap: unionTM :: TrieMap m k => (a -> a -> a) -> m a -> m a -> m a
- Cryptol.TypeCheck.TypeOf: fastSchemaOf :: Map Name Schema -> Expr -> Schema
- Cryptol.TypeCheck.TypeOf: fastTypeOf :: Map Name Schema -> Expr -> Type
- Cryptol.TypeCheck.TypePat: (|%|) :: Pat Type (Type, Type)
- Cryptol.TypeCheck.TypePat: (|->|) :: Pat Type (Type, Type)
- Cryptol.TypeCheck.TypePat: (|-|) :: Pat Type (Type, Type)
- Cryptol.TypeCheck.TypePat: (|/=|) :: Pat Prop (Type, Type)
- Cryptol.TypeCheck.TypePat: (|/|) :: Pat Type (Type, Type)
- Cryptol.TypeCheck.TypePat: (|=|) :: Pat Prop (Type, Type)
- Cryptol.TypeCheck.TypePat: (|>=|) :: Pat Prop (Type, Type)
- Cryptol.TypeCheck.TypePat: (|^|) :: Pat Type (Type, Type)
- Cryptol.TypeCheck.TypePat: aAnd :: Pat Prop (Prop, Prop)
- Cryptol.TypeCheck.TypePat: aBit :: Pat Type ()
- Cryptol.TypeCheck.TypePat: aCeilDiv :: Pat Type (Type, Type)
- Cryptol.TypeCheck.TypePat: aCeilMod :: Pat Type (Type, Type)
- Cryptol.TypeCheck.TypePat: aChar :: Pat Type ()
- Cryptol.TypeCheck.TypePat: aFin :: Pat Prop Type
- Cryptol.TypeCheck.TypePat: aFreeTVar :: Pat Type TVar
- Cryptol.TypeCheck.TypePat: aInf :: Pat Type ()
- Cryptol.TypeCheck.TypePat: aLenFromThenTo :: Pat Type (Type, Type, Type)
- Cryptol.TypeCheck.TypePat: aLiteral :: Pat Prop (Type, Type)
- Cryptol.TypeCheck.TypePat: aLiteralLessThan :: Pat Prop (Type, Type)
- Cryptol.TypeCheck.TypePat: aLogic :: Pat Prop Type
- Cryptol.TypeCheck.TypePat: aMax :: Pat Type (Type, Type)
- Cryptol.TypeCheck.TypePat: aMin :: Pat Type (Type, Type)
- Cryptol.TypeCheck.TypePat: aMul :: Pat Type (Type, Type)
- Cryptol.TypeCheck.TypePat: aNat :: Pat Type Integer
- Cryptol.TypeCheck.TypePat: aNat' :: Pat Type Nat'
- Cryptol.TypeCheck.TypePat: aRec :: Pat Type (RecordMap Ident Type)
- Cryptol.TypeCheck.TypePat: aSeq :: Pat Type (Type, Type)
- Cryptol.TypeCheck.TypePat: aTVar :: Pat Type TVar
- Cryptol.TypeCheck.TypePat: aTrue :: Pat Prop ()
- Cryptol.TypeCheck.TypePat: aTuple :: Pat Type [Type]
- Cryptol.TypeCheck.TypePat: aWidth :: Pat Type Type
- Cryptol.TypeCheck.TypePat: aWord :: Pat Type Type
- Cryptol.TypeCheck.TypePat: anAdd :: Pat Type (Type, Type)
- Cryptol.TypeCheck.TypePat: anError :: Kind -> Pat Type ()
- Cryptol.TypeCheck.Unify: Path :: [PathElement] -> Path
- Cryptol.TypeCheck.Unify: TConArg :: TC -> Int -> PathElement
- Cryptol.TypeCheck.Unify: TNominalArg :: NominalType -> Int -> PathElement
- Cryptol.TypeCheck.Unify: TRecArg :: Ident -> PathElement
- Cryptol.TypeCheck.Unify: UniKindMismatch :: Kind -> Kind -> UnificationError
- Cryptol.TypeCheck.Unify: UniNonPoly :: TVar -> Type -> UnificationError
- Cryptol.TypeCheck.Unify: UniNonPolyDepends :: TVar -> [TParam] -> UnificationError
- Cryptol.TypeCheck.Unify: UniRecursive :: TVar -> Type -> UnificationError
- Cryptol.TypeCheck.Unify: UniTypeLenMismatch :: Int -> Int -> UnificationError
- Cryptol.TypeCheck.Unify: UniTypeMismatch :: Type -> Type -> UnificationError
- Cryptol.TypeCheck.Unify: bindVar :: Path -> TVar -> Type -> Result MGU
- Cryptol.TypeCheck.Unify: data PathElement
- Cryptol.TypeCheck.Unify: data UnificationError
- Cryptol.TypeCheck.Unify: doMGU :: Type -> Type -> Result MGU
- Cryptol.TypeCheck.Unify: emptyMGU :: MGU
- Cryptol.TypeCheck.Unify: extPath :: Path -> PathElement -> Path
- Cryptol.TypeCheck.Unify: instance Control.DeepSeq.NFData Cryptol.TypeCheck.Unify.Path
- Cryptol.TypeCheck.Unify: instance Control.DeepSeq.NFData Cryptol.TypeCheck.Unify.PathElement
- Cryptol.TypeCheck.Unify: instance Cryptol.Utils.PP.PP Cryptol.TypeCheck.Unify.Path
- Cryptol.TypeCheck.Unify: instance GHC.Generics.Generic Cryptol.TypeCheck.Unify.Path
- Cryptol.TypeCheck.Unify: instance GHC.Generics.Generic Cryptol.TypeCheck.Unify.PathElement
- Cryptol.TypeCheck.Unify: instance GHC.Show.Show Cryptol.TypeCheck.Unify.Path
- Cryptol.TypeCheck.Unify: instance GHC.Show.Show Cryptol.TypeCheck.Unify.PathElement
- Cryptol.TypeCheck.Unify: isRootPath :: Path -> Bool
- Cryptol.TypeCheck.Unify: mgu :: Path -> Type -> Type -> Result MGU
- Cryptol.TypeCheck.Unify: mguMany :: Path -> [Path] -> [Type] -> [Type] -> Result MGU
- Cryptol.TypeCheck.Unify: newtype Path
- Cryptol.TypeCheck.Unify: ppPathEl :: PathElement -> Int -> (Int -> Doc) -> Doc
- Cryptol.TypeCheck.Unify: rootPath :: Path
- Cryptol.TypeCheck.Unify: runResult :: Result a -> (a, [(Path, UnificationError)])
- Cryptol.TypeCheck.Unify: type MGU = (Subst, [Prop])
- Cryptol.TypeCheck.Unify: type Result a = Writer [(Path, UnificationError)] a
- Cryptol.TypeCheck.Unify: uniError :: Path -> UnificationError -> Result MGU
- Cryptol.Utils.Benchmark: BenchmarkStats :: !Double -> !Double -> !Int64 -> BenchmarkStats
- Cryptol.Utils.Benchmark: [benchAvgCpuTime] :: BenchmarkStats -> !Double
- Cryptol.Utils.Benchmark: [benchAvgCycles] :: BenchmarkStats -> !Int64
- Cryptol.Utils.Benchmark: [benchAvgTime] :: BenchmarkStats -> !Double
- Cryptol.Utils.Benchmark: benchmark :: Double -> (a -> IO b) -> a -> IO BenchmarkStats
- Cryptol.Utils.Benchmark: data BenchmarkStats
- Cryptol.Utils.Benchmark: instance GHC.Show.Show Cryptol.Utils.Benchmark.BenchmarkStats
- Cryptol.Utils.Benchmark: secs :: Double -> String
- Cryptol.Utils.Debug: ppTrace :: Doc -> b -> b
- Cryptol.Utils.Debug: trace :: String -> b -> b
- Cryptol.Utils.Fixity: FCError :: FixityCmp
- Cryptol.Utils.Fixity: FCLeft :: FixityCmp
- Cryptol.Utils.Fixity: FCRight :: FixityCmp
- Cryptol.Utils.Fixity: Fixity :: !Assoc -> !Int -> Fixity
- Cryptol.Utils.Fixity: LeftAssoc :: Assoc
- Cryptol.Utils.Fixity: NonAssoc :: Assoc
- Cryptol.Utils.Fixity: RightAssoc :: Assoc
- Cryptol.Utils.Fixity: [fAssoc] :: Fixity -> !Assoc
- Cryptol.Utils.Fixity: [fLevel] :: Fixity -> !Int
- Cryptol.Utils.Fixity: compareFixity :: Fixity -> Fixity -> FixityCmp
- Cryptol.Utils.Fixity: data Assoc
- Cryptol.Utils.Fixity: data Fixity
- Cryptol.Utils.Fixity: data FixityCmp
- Cryptol.Utils.Fixity: defaultFixity :: Fixity
- Cryptol.Utils.Fixity: instance Control.DeepSeq.NFData Cryptol.Utils.Fixity.Assoc
- Cryptol.Utils.Fixity: instance Control.DeepSeq.NFData Cryptol.Utils.Fixity.Fixity
- Cryptol.Utils.Fixity: instance GHC.Classes.Eq Cryptol.Utils.Fixity.Assoc
- Cryptol.Utils.Fixity: instance GHC.Classes.Eq Cryptol.Utils.Fixity.Fixity
- Cryptol.Utils.Fixity: instance GHC.Classes.Eq Cryptol.Utils.Fixity.FixityCmp
- Cryptol.Utils.Fixity: instance GHC.Classes.Ord Cryptol.Utils.Fixity.Assoc
- Cryptol.Utils.Fixity: instance GHC.Classes.Ord Cryptol.Utils.Fixity.Fixity
- Cryptol.Utils.Fixity: instance GHC.Generics.Generic Cryptol.Utils.Fixity.Assoc
- Cryptol.Utils.Fixity: instance GHC.Generics.Generic Cryptol.Utils.Fixity.Fixity
- Cryptol.Utils.Fixity: instance GHC.Show.Show Cryptol.Utils.Fixity.Assoc
- Cryptol.Utils.Fixity: instance GHC.Show.Show Cryptol.Utils.Fixity.Fixity
- Cryptol.Utils.Fixity: instance GHC.Show.Show Cryptol.Utils.Fixity.FixityCmp
- Cryptol.Utils.Ident: FromDefinition :: OrigSource
- Cryptol.Utils.Ident: FromFunctorInst :: OrigSource
- Cryptol.Utils.Ident: FromModParam :: OrigSource
- Cryptol.Utils.Ident: NSConstructor :: Namespace
- Cryptol.Utils.Ident: NSModule :: Namespace
- Cryptol.Utils.Ident: NSType :: Namespace
- Cryptol.Utils.Ident: NSValue :: Namespace
- Cryptol.Utils.Ident: Nested :: ModPath -> Ident -> ModPath
- Cryptol.Utils.Ident: OrigName :: Namespace -> ModPath -> OrigSource -> Ident -> !Maybe Ident -> OrigName
- Cryptol.Utils.Ident: PrimIdent :: ModName -> Text -> PrimIdent
- Cryptol.Utils.Ident: TopModule :: ModName -> ModPath
- Cryptol.Utils.Ident: [ogFromParam] :: OrigName -> !Maybe Ident
- Cryptol.Utils.Ident: [ogModule] :: OrigName -> ModPath
- Cryptol.Utils.Ident: [ogName] :: OrigName -> Ident
- Cryptol.Utils.Ident: [ogNamespace] :: OrigName -> Namespace
- Cryptol.Utils.Ident: [ogSource] :: OrigName -> OrigSource
- Cryptol.Utils.Ident: allNamespaces :: [Namespace]
- Cryptol.Utils.Ident: apPathRoot :: (ModName -> ModName) -> ModPath -> ModPath
- Cryptol.Utils.Ident: arrayName :: ModName
- Cryptol.Utils.Ident: arrayPrim :: Text -> PrimIdent
- Cryptol.Utils.Ident: data Ident
- Cryptol.Utils.Ident: data ModName
- Cryptol.Utils.Ident: data ModPath
- Cryptol.Utils.Ident: data Namespace
- Cryptol.Utils.Ident: data OrigName
- Cryptol.Utils.Ident: data OrigSource
- Cryptol.Utils.Ident: data PrimIdent
- Cryptol.Utils.Ident: exprModName :: ModName
- Cryptol.Utils.Ident: floatName :: ModName
- Cryptol.Utils.Ident: floatPrim :: Text -> PrimIdent
- Cryptol.Utils.Ident: identAnonArg :: Ident -> Ident
- Cryptol.Utils.Ident: identAnonIfaceMod :: Ident -> Ident
- Cryptol.Utils.Ident: identAnontInstImport :: Ident -> Ident
- Cryptol.Utils.Ident: identIsNormal :: Ident -> Bool
- Cryptol.Utils.Ident: identText :: Ident -> Text
- Cryptol.Utils.Ident: identToModName :: Ident -> ModName
- Cryptol.Utils.Ident: instance Control.DeepSeq.NFData Cryptol.Utils.Ident.Ident
- Cryptol.Utils.Ident: instance Control.DeepSeq.NFData Cryptol.Utils.Ident.MaybeAnon
- Cryptol.Utils.Ident: instance Control.DeepSeq.NFData Cryptol.Utils.Ident.ModName
- Cryptol.Utils.Ident: instance Control.DeepSeq.NFData Cryptol.Utils.Ident.ModPath
- Cryptol.Utils.Ident: instance Control.DeepSeq.NFData Cryptol.Utils.Ident.Namespace
- Cryptol.Utils.Ident: instance Control.DeepSeq.NFData Cryptol.Utils.Ident.OrigName
- Cryptol.Utils.Ident: instance Control.DeepSeq.NFData Cryptol.Utils.Ident.OrigSource
- Cryptol.Utils.Ident: instance Control.DeepSeq.NFData Cryptol.Utils.Ident.PrimIdent
- Cryptol.Utils.Ident: instance Data.String.IsString Cryptol.Utils.Ident.Ident
- Cryptol.Utils.Ident: instance GHC.Classes.Eq Cryptol.Utils.Ident.Ident
- Cryptol.Utils.Ident: instance GHC.Classes.Eq Cryptol.Utils.Ident.MaybeAnon
- Cryptol.Utils.Ident: instance GHC.Classes.Eq Cryptol.Utils.Ident.ModName
- Cryptol.Utils.Ident: instance GHC.Classes.Eq Cryptol.Utils.Ident.ModPath
- Cryptol.Utils.Ident: instance GHC.Classes.Eq Cryptol.Utils.Ident.Namespace
- Cryptol.Utils.Ident: instance GHC.Classes.Eq Cryptol.Utils.Ident.OrigName
- Cryptol.Utils.Ident: instance GHC.Classes.Eq Cryptol.Utils.Ident.OrigSource
- Cryptol.Utils.Ident: instance GHC.Classes.Eq Cryptol.Utils.Ident.PrimIdent
- Cryptol.Utils.Ident: instance GHC.Classes.Ord Cryptol.Utils.Ident.Ident
- Cryptol.Utils.Ident: instance GHC.Classes.Ord Cryptol.Utils.Ident.MaybeAnon
- Cryptol.Utils.Ident: instance GHC.Classes.Ord Cryptol.Utils.Ident.ModName
- Cryptol.Utils.Ident: instance GHC.Classes.Ord Cryptol.Utils.Ident.ModPath
- Cryptol.Utils.Ident: instance GHC.Classes.Ord Cryptol.Utils.Ident.Namespace
- Cryptol.Utils.Ident: instance GHC.Classes.Ord Cryptol.Utils.Ident.OrigName
- Cryptol.Utils.Ident: instance GHC.Classes.Ord Cryptol.Utils.Ident.OrigSource
- Cryptol.Utils.Ident: instance GHC.Classes.Ord Cryptol.Utils.Ident.PrimIdent
- Cryptol.Utils.Ident: instance GHC.Enum.Bounded Cryptol.Utils.Ident.Namespace
- Cryptol.Utils.Ident: instance GHC.Enum.Enum Cryptol.Utils.Ident.Namespace
- Cryptol.Utils.Ident: instance GHC.Generics.Generic Cryptol.Utils.Ident.Ident
- Cryptol.Utils.Ident: instance GHC.Generics.Generic Cryptol.Utils.Ident.MaybeAnon
- Cryptol.Utils.Ident: instance GHC.Generics.Generic Cryptol.Utils.Ident.ModName
- Cryptol.Utils.Ident: instance GHC.Generics.Generic Cryptol.Utils.Ident.ModPath
- Cryptol.Utils.Ident: instance GHC.Generics.Generic Cryptol.Utils.Ident.Namespace
- Cryptol.Utils.Ident: instance GHC.Generics.Generic Cryptol.Utils.Ident.OrigName
- Cryptol.Utils.Ident: instance GHC.Generics.Generic Cryptol.Utils.Ident.OrigSource
- Cryptol.Utils.Ident: instance GHC.Generics.Generic Cryptol.Utils.Ident.PrimIdent
- Cryptol.Utils.Ident: instance GHC.Show.Show Cryptol.Utils.Ident.Ident
- Cryptol.Utils.Ident: instance GHC.Show.Show Cryptol.Utils.Ident.MaybeAnon
- Cryptol.Utils.Ident: instance GHC.Show.Show Cryptol.Utils.Ident.ModName
- Cryptol.Utils.Ident: instance GHC.Show.Show Cryptol.Utils.Ident.ModPath
- Cryptol.Utils.Ident: instance GHC.Show.Show Cryptol.Utils.Ident.Namespace
- Cryptol.Utils.Ident: instance GHC.Show.Show Cryptol.Utils.Ident.OrigName
- Cryptol.Utils.Ident: instance GHC.Show.Show Cryptol.Utils.Ident.OrigSource
- Cryptol.Utils.Ident: instance GHC.Show.Show Cryptol.Utils.Ident.PrimIdent
- Cryptol.Utils.Ident: interactiveName :: ModName
- Cryptol.Utils.Ident: isInfixIdent :: Ident -> Bool
- Cryptol.Utils.Ident: isUpperIdent :: Ident -> Bool
- Cryptol.Utils.Ident: mkIdent :: Text -> Ident
- Cryptol.Utils.Ident: mkInfix :: Text -> Ident
- Cryptol.Utils.Ident: modNameArg :: ModName -> ModName
- Cryptol.Utils.Ident: modNameChunks :: ModName -> [String]
- Cryptol.Utils.Ident: modNameChunksText :: ModName -> [Text]
- Cryptol.Utils.Ident: modNameIfaceMod :: ModName -> ModName
- Cryptol.Utils.Ident: modNameIsNormal :: ModName -> Bool
- Cryptol.Utils.Ident: modNameToNormalModName :: ModName -> ModName
- Cryptol.Utils.Ident: modNameToText :: ModName -> Text
- Cryptol.Utils.Ident: modParamIdent :: Ident -> Ident
- Cryptol.Utils.Ident: modPathCommon :: ModPath -> ModPath -> Maybe (ModPath, [Ident], [Ident])
- Cryptol.Utils.Ident: modPathIsNormal :: ModPath -> Bool
- Cryptol.Utils.Ident: modPathIsOrContains :: ModPath -> ModPath -> Bool
- Cryptol.Utils.Ident: modPathSplit :: ModPath -> (ModName, [Ident])
- Cryptol.Utils.Ident: noModuleName :: ModName
- Cryptol.Utils.Ident: nullIdent :: Ident -> Bool
- Cryptol.Utils.Ident: ogIsModParam :: OrigName -> Bool
- Cryptol.Utils.Ident: packIdent :: String -> Ident
- Cryptol.Utils.Ident: packInfix :: String -> Ident
- Cryptol.Utils.Ident: packModName :: [Text] -> ModName
- Cryptol.Utils.Ident: prelPrim :: Text -> PrimIdent
- Cryptol.Utils.Ident: preludeName :: ModName
- Cryptol.Utils.Ident: preludeReferenceName :: ModName
- Cryptol.Utils.Ident: primeECName :: ModName
- Cryptol.Utils.Ident: primeECPrim :: Text -> PrimIdent
- Cryptol.Utils.Ident: suiteBName :: ModName
- Cryptol.Utils.Ident: suiteBPrim :: Text -> PrimIdent
- Cryptol.Utils.Ident: textToModName :: Text -> ModName
- Cryptol.Utils.Ident: topModuleFor :: ModPath -> ModName
- Cryptol.Utils.Ident: undefinedModName :: ModName
- Cryptol.Utils.Ident: unpackIdent :: Ident -> String
- Cryptol.Utils.Logger: data Logger
- Cryptol.Utils.Logger: funLogger :: (String -> IO ()) -> Logger
- Cryptol.Utils.Logger: handleLogger :: Handle -> Logger
- Cryptol.Utils.Logger: instance Control.DeepSeq.NFData Cryptol.Utils.Logger.Logger
- Cryptol.Utils.Logger: logPrint :: Show a => Logger -> a -> IO ()
- Cryptol.Utils.Logger: logPutStr :: Logger -> String -> IO ()
- Cryptol.Utils.Logger: logPutStrLn :: Logger -> String -> IO ()
- Cryptol.Utils.Logger: quietLogger :: Logger
- Cryptol.Utils.Logger: stderrLogger :: Logger
- Cryptol.Utils.Logger: stdoutLogger :: Logger
- Cryptol.Utils.Misc: anyJust :: Traversable t => (a -> Maybe a) -> t a -> Maybe (t a)
- Cryptol.Utils.Misc: anyJust2 :: (a -> Maybe a) -> (b -> Maybe b) -> (a, b) -> Maybe (a, b)
- Cryptol.Utils.PP: ($$) :: Doc -> Doc -> Doc
- Cryptol.Utils.PP: (<+>) :: Doc -> Doc -> Doc
- Cryptol.Utils.PP: (<.>) :: Doc -> Doc -> Doc
- Cryptol.Utils.PP: (</>) :: Doc -> Doc -> Doc
- Cryptol.Utils.PP: AutoExponent :: PPFloatExp
- Cryptol.Utils.PP: CanonicalOrder :: FieldOrder
- Cryptol.Utils.PP: DisplayOrder :: FieldOrder
- Cryptol.Utils.PP: Doc :: (PPCfg -> Doc Void) -> Doc
- Cryptol.Utils.PP: EmptyNameDisp :: NameDisp
- Cryptol.Utils.PP: FloatFixed :: Int -> PPFloatExp -> PPFloatFormat
- Cryptol.Utils.PP: FloatFrac :: Int -> PPFloatFormat
- Cryptol.Utils.PP: FloatFree :: PPFloatExp -> PPFloatFormat
- Cryptol.Utils.PP: ForceExponent :: PPFloatExp
- Cryptol.Utils.PP: Infix :: op -> thing -> thing -> Fixity -> Infix op thing
- Cryptol.Utils.PP: NameDisp :: (OrigName -> Maybe NameFormat) -> NameDisp
- Cryptol.Utils.PP: NotInScope :: NameFormat
- Cryptol.Utils.PP: PPCfg :: NameDisp -> Bool -> PPCfg
- Cryptol.Utils.PP: PPOpts :: Bool -> Int -> Int -> Int -> PPFloatFormat -> FieldOrder -> PPOpts
- Cryptol.Utils.PP: Qualified :: !ModName -> NameFormat
- Cryptol.Utils.PP: UnQualified :: NameFormat
- Cryptol.Utils.PP: [ieFixity] :: Infix op thing -> Fixity
- Cryptol.Utils.PP: [ieLeft] :: Infix op thing -> thing
- Cryptol.Utils.PP: [ieOp] :: Infix op thing -> op
- Cryptol.Utils.PP: [ieRight] :: Infix op thing -> thing
- Cryptol.Utils.PP: [ppcfgNameDisp] :: PPCfg -> NameDisp
- Cryptol.Utils.PP: [ppcfgShowNameUniques] :: PPCfg -> Bool
- Cryptol.Utils.PP: [useAscii] :: PPOpts -> Bool
- Cryptol.Utils.PP: [useBase] :: PPOpts -> Int
- Cryptol.Utils.PP: [useFPBase] :: PPOpts -> Int
- Cryptol.Utils.PP: [useFPFormat] :: PPOpts -> PPFloatFormat
- Cryptol.Utils.PP: [useFieldOrder] :: PPOpts -> FieldOrder
- Cryptol.Utils.PP: [useInfLength] :: PPOpts -> Int
- Cryptol.Utils.PP: align :: Doc -> Doc
- Cryptol.Utils.PP: asciiMode :: PPOpts -> Integer -> Bool
- Cryptol.Utils.PP: backticks :: Doc -> Doc
- Cryptol.Utils.PP: braces :: Doc -> Doc
- Cryptol.Utils.PP: brackets :: Doc -> Doc
- Cryptol.Utils.PP: char :: Char -> Doc
- Cryptol.Utils.PP: class PP a
- Cryptol.Utils.PP: class PP a => PPName a
- Cryptol.Utils.PP: colon :: Doc
- Cryptol.Utils.PP: comma :: Doc
- Cryptol.Utils.PP: commaSep :: [Doc] -> Doc
- Cryptol.Utils.PP: commaSepFill :: [Doc] -> Doc
- Cryptol.Utils.PP: data FieldOrder
- Cryptol.Utils.PP: data Infix op thing
- Cryptol.Utils.PP: data NameDisp
- Cryptol.Utils.PP: data NameFormat
- Cryptol.Utils.PP: data PPCfg
- Cryptol.Utils.PP: data PPFloatExp
- Cryptol.Utils.PP: data PPFloatFormat
- Cryptol.Utils.PP: data PPOpts
- Cryptol.Utils.PP: debugShowUniques :: Doc -> Doc
- Cryptol.Utils.PP: defaultPPCfg :: PPCfg
- Cryptol.Utils.PP: defaultPPOpts :: PPOpts
- Cryptol.Utils.PP: extend :: NameDisp -> NameDisp -> NameDisp
- Cryptol.Utils.PP: fixNameDisp :: NameDisp -> Doc -> Doc
- Cryptol.Utils.PP: fixPPCfg :: PPCfg -> Doc -> Doc
- Cryptol.Utils.PP: fsep :: [Doc] -> Doc
- Cryptol.Utils.PP: getNameFormat :: OrigName -> NameDisp -> NameFormat
- Cryptol.Utils.PP: group :: Doc -> Doc
- Cryptol.Utils.PP: hang :: Doc -> Int -> Doc -> Doc
- Cryptol.Utils.PP: hcat :: [Doc] -> Doc
- Cryptol.Utils.PP: hsep :: [Doc] -> Doc
- Cryptol.Utils.PP: indent :: Int -> Doc -> Doc
- Cryptol.Utils.PP: infixl 5 $$
- Cryptol.Utils.PP: infixl 6 </>
- Cryptol.Utils.PP: instance Control.DeepSeq.NFData Cryptol.Utils.PP.Doc
- Cryptol.Utils.PP: instance Control.DeepSeq.NFData Cryptol.Utils.PP.NameDisp
- Cryptol.Utils.PP: instance Cryptol.Utils.PP.PP Cryptol.Utils.Fixity.Assoc
- Cryptol.Utils.PP: instance Cryptol.Utils.PP.PP Cryptol.Utils.Fixity.Fixity
- Cryptol.Utils.PP: instance Cryptol.Utils.PP.PP Cryptol.Utils.Ident.Ident
- Cryptol.Utils.PP: instance Cryptol.Utils.PP.PP Cryptol.Utils.Ident.ModName
- Cryptol.Utils.PP: instance Cryptol.Utils.PP.PP Cryptol.Utils.Ident.ModPath
- Cryptol.Utils.PP: instance Cryptol.Utils.PP.PP Cryptol.Utils.Ident.Namespace
- Cryptol.Utils.PP: instance Cryptol.Utils.PP.PP Cryptol.Utils.Ident.OrigName
- Cryptol.Utils.PP: instance Cryptol.Utils.PP.PP Cryptol.Utils.Ident.PrimIdent
- Cryptol.Utils.PP: instance Cryptol.Utils.PP.PP Data.Text.Internal.Text
- Cryptol.Utils.PP: instance Cryptol.Utils.PP.PPName Cryptol.Utils.Ident.ModName
- Cryptol.Utils.PP: instance Data.String.IsString Cryptol.Utils.PP.Doc
- Cryptol.Utils.PP: instance GHC.Base.Monoid Cryptol.Utils.PP.Doc
- Cryptol.Utils.PP: instance GHC.Base.Monoid Cryptol.Utils.PP.NameDisp
- Cryptol.Utils.PP: instance GHC.Base.Semigroup Cryptol.Utils.PP.Doc
- Cryptol.Utils.PP: instance GHC.Base.Semigroup Cryptol.Utils.PP.NameDisp
- Cryptol.Utils.PP: instance GHC.Classes.Eq Cryptol.Utils.PP.FieldOrder
- Cryptol.Utils.PP: instance GHC.Classes.Ord Cryptol.Utils.PP.FieldOrder
- Cryptol.Utils.PP: instance GHC.Enum.Bounded Cryptol.Utils.PP.FieldOrder
- Cryptol.Utils.PP: instance GHC.Enum.Enum Cryptol.Utils.PP.FieldOrder
- Cryptol.Utils.PP: instance GHC.Generics.Generic Cryptol.Utils.PP.Doc
- Cryptol.Utils.PP: instance GHC.Generics.Generic Cryptol.Utils.PP.NameDisp
- Cryptol.Utils.PP: instance GHC.Read.Read Cryptol.Utils.PP.FieldOrder
- Cryptol.Utils.PP: instance GHC.Show.Show Cryptol.Utils.PP.Doc
- Cryptol.Utils.PP: instance GHC.Show.Show Cryptol.Utils.PP.FieldOrder
- Cryptol.Utils.PP: instance GHC.Show.Show Cryptol.Utils.PP.NameDisp
- Cryptol.Utils.PP: instance GHC.Show.Show Cryptol.Utils.PP.NameFormat
- Cryptol.Utils.PP: instance GHC.Show.Show Cryptol.Utils.PP.PPFloatExp
- Cryptol.Utils.PP: instance GHC.Show.Show Cryptol.Utils.PP.PPFloatFormat
- Cryptol.Utils.PP: instance GHC.Show.Show Cryptol.Utils.PP.PPOpts
- Cryptol.Utils.PP: int :: Int -> Doc
- Cryptol.Utils.PP: integer :: Integer -> Doc
- Cryptol.Utils.PP: liftPP :: Doc Void -> Doc
- Cryptol.Utils.PP: liftPP1 :: (Doc Void -> Doc Void) -> Doc -> Doc
- Cryptol.Utils.PP: liftPP2 :: (Doc Void -> Doc Void -> Doc Void) -> Doc -> Doc -> Doc
- Cryptol.Utils.PP: liftSep :: ([Doc Void] -> Doc Void) -> [Doc] -> Doc
- Cryptol.Utils.PP: nest :: Int -> Doc -> Doc
- Cryptol.Utils.PP: neverQualify :: NameDisp
- Cryptol.Utils.PP: neverQualifyMod :: ModPath -> NameDisp
- Cryptol.Utils.PP: newtype Doc
- Cryptol.Utils.PP: optParens :: Bool -> Doc -> Doc
- Cryptol.Utils.PP: ordSuffix :: (Integral a, Eq a) => a -> String
- Cryptol.Utils.PP: ordinal :: (Integral a, Show a, Eq a) => a -> Doc
- Cryptol.Utils.PP: parens :: Doc -> Doc
- Cryptol.Utils.PP: pipe :: Doc
- Cryptol.Utils.PP: pp :: PP a => a -> Doc
- Cryptol.Utils.PP: ppInfix :: (PP thing, PP op) => Int -> (thing -> Maybe (Infix op thing)) -> Infix op thing -> Doc
- Cryptol.Utils.PP: ppInfixName :: PPName a => a -> Doc
- Cryptol.Utils.PP: ppList :: [Doc] -> Doc
- Cryptol.Utils.PP: ppNameFixity :: PPName a => a -> Maybe Fixity
- Cryptol.Utils.PP: ppPrec :: PP a => Int -> a -> Doc
- Cryptol.Utils.PP: ppPrefixName :: PPName a => a -> Doc
- Cryptol.Utils.PP: ppRecord :: [Doc] -> Doc
- Cryptol.Utils.PP: ppTuple :: [Doc] -> Doc
- Cryptol.Utils.PP: pretty :: PP a => a -> String
- Cryptol.Utils.PP: quotes :: Doc -> Doc
- Cryptol.Utils.PP: reflow :: Text -> Doc
- Cryptol.Utils.PP: renderOneLine :: Doc -> String
- Cryptol.Utils.PP: runDoc :: NameDisp -> Doc -> Doc Void
- Cryptol.Utils.PP: runDocWith :: PPCfg -> Doc -> Doc Void
- Cryptol.Utils.PP: sep :: [Doc] -> Doc
- Cryptol.Utils.PP: text :: String -> Doc
- Cryptol.Utils.PP: updPPCfg :: (PPCfg -> PPCfg) -> Doc -> Doc
- Cryptol.Utils.PP: vcat :: [Doc] -> Doc
- Cryptol.Utils.PP: vsep :: [Doc] -> Doc
- Cryptol.Utils.PP: withNameDisp :: (NameDisp -> Doc) -> Doc
- Cryptol.Utils.PP: withPPCfg :: (PPCfg -> Doc) -> Doc
- Cryptol.Utils.Panic: data Cryptol
- Cryptol.Utils.Panic: data () => Panic a
- Cryptol.Utils.Panic: instance Panic.PanicComponent Cryptol.Utils.Panic.Cryptol
- Cryptol.Utils.Panic: panic :: HasCallStack => String -> [String] -> a
- Cryptol.Utils.Panic: type CryptolPanic = Panic Cryptol
- Cryptol.Utils.Panic: type HasCallStack = ?callStack :: CallStack
- Cryptol.Utils.Panic: xxxTODO :: HasCallStack => String -> a
- Cryptol.Utils.Patterns: (&&&) :: Pat a b -> Pat a c -> Pat a (b, c)
- Cryptol.Utils.Patterns: (<~) :: (a -> b) -> Pat b c -> Pat a c
- Cryptol.Utils.Patterns: (><) :: Pat a b -> Pat x y -> Pat (a, x) (b, y)
- Cryptol.Utils.Patterns: (|||) :: Pat a b -> Pat a b -> Pat a b
- Cryptol.Utils.Patterns: (~>) :: Pat a b -> (b -> c) -> Pat a c
- Cryptol.Utils.Patterns: (~~>) :: Pat a b -> c -> Pat a c
- Cryptol.Utils.Patterns: Match :: (forall r. r -> (b -> r) -> r) -> Match b
- Cryptol.Utils.Patterns: __ :: Pat a a
- Cryptol.Utils.Patterns: checkThat :: (a -> Bool) -> Pat a ()
- Cryptol.Utils.Patterns: class Matches thing pats res | pats -> thing res
- Cryptol.Utils.Patterns: instance (f GHC.Types.~ Cryptol.Utils.Patterns.Pat a a1', a1 GHC.Types.~ Cryptol.Utils.Patterns.Pat a1' r1) => Cryptol.Utils.Patterns.Matches a (f, a1) r1
- Cryptol.Utils.Patterns: instance (op GHC.Types.~ Cryptol.Utils.Patterns.Pat a (a1', a2'), a1 GHC.Types.~ Cryptol.Utils.Patterns.Pat a1' r1, a2 GHC.Types.~ Cryptol.Utils.Patterns.Pat a2' r2) => Cryptol.Utils.Patterns.Matches a (op, a1, a2) (r1, r2)
- Cryptol.Utils.Patterns: instance (op GHC.Types.~ Cryptol.Utils.Patterns.Pat a (a1', a2', a3'), a1 GHC.Types.~ Cryptol.Utils.Patterns.Pat a1' r1, a2 GHC.Types.~ Cryptol.Utils.Patterns.Pat a2' r2, a3 GHC.Types.~ Cryptol.Utils.Patterns.Pat a3' r3) => Cryptol.Utils.Patterns.Matches a (op, a1, a2, a3) (r1, r2, r3)
- Cryptol.Utils.Patterns: instance Control.Monad.Fail.MonadFail Cryptol.Utils.Patterns.Match
- Cryptol.Utils.Patterns: instance GHC.Base.Alternative Cryptol.Utils.Patterns.Match
- Cryptol.Utils.Patterns: instance GHC.Base.Applicative Cryptol.Utils.Patterns.Match
- Cryptol.Utils.Patterns: instance GHC.Base.Functor Cryptol.Utils.Patterns.Match
- Cryptol.Utils.Patterns: instance GHC.Base.Monad Cryptol.Utils.Patterns.Match
- Cryptol.Utils.Patterns: instance GHC.Base.MonadPlus Cryptol.Utils.Patterns.Match
- Cryptol.Utils.Patterns: list :: [Pat a b] -> Pat [a] [b]
- Cryptol.Utils.Patterns: lit :: Eq a => a -> Pat a ()
- Cryptol.Utils.Patterns: match :: Match a -> a
- Cryptol.Utils.Patterns: matchDefault :: a -> Match a -> a
- Cryptol.Utils.Patterns: matchMaybe :: Match a -> Maybe a
- Cryptol.Utils.Patterns: matches :: Matches thing pats res => thing -> pats -> Match res
- Cryptol.Utils.Patterns: newtype Match b
- Cryptol.Utils.Patterns: succeed :: a -> Pat x a
- Cryptol.Utils.Patterns: type Pat a b = a -> Match b
- Cryptol.Utils.RecordMap: adjustField :: forall a b. Ord a => a -> (b -> b) -> RecordMap a b -> Maybe (RecordMap a b)
- Cryptol.Utils.RecordMap: canonicalFields :: RecordMap a b -> [(a, b)]
- Cryptol.Utils.RecordMap: data RecordMap a b
- Cryptol.Utils.RecordMap: displayElements :: (Show a, Ord a) => RecordMap a b -> [b]
- Cryptol.Utils.RecordMap: displayFields :: (Show a, Ord a) => RecordMap a b -> [(a, b)]
- Cryptol.Utils.RecordMap: displayOrder :: RecordMap a b -> [a]
- Cryptol.Utils.RecordMap: fieldSet :: Ord a => RecordMap a b -> Set a
- Cryptol.Utils.RecordMap: instance (Control.DeepSeq.NFData a, Control.DeepSeq.NFData b) => Control.DeepSeq.NFData (Cryptol.Utils.RecordMap.RecordMap a b)
- Cryptol.Utils.RecordMap: instance (GHC.Classes.Ord a, GHC.Classes.Eq b) => GHC.Classes.Eq (Cryptol.Utils.RecordMap.RecordMap a b)
- Cryptol.Utils.RecordMap: instance (GHC.Classes.Ord a, GHC.Classes.Ord b) => GHC.Classes.Ord (Cryptol.Utils.RecordMap.RecordMap a b)
- Cryptol.Utils.RecordMap: instance (GHC.Show.Show a, GHC.Classes.Ord a, GHC.Show.Show b) => GHC.Show.Show (Cryptol.Utils.RecordMap.RecordMap a b)
- Cryptol.Utils.RecordMap: instance Data.Foldable.Foldable (Cryptol.Utils.RecordMap.RecordMap a)
- Cryptol.Utils.RecordMap: instance Data.Traversable.Traversable (Cryptol.Utils.RecordMap.RecordMap a)
- Cryptol.Utils.RecordMap: instance GHC.Base.Functor (Cryptol.Utils.RecordMap.RecordMap a)
- Cryptol.Utils.RecordMap: lookupField :: Ord a => a -> RecordMap a b -> Maybe b
- Cryptol.Utils.RecordMap: mapWithFieldName :: (a -> b -> c) -> RecordMap a b -> RecordMap a c
- Cryptol.Utils.RecordMap: recordElements :: RecordMap a b -> [b]
- Cryptol.Utils.RecordMap: recordFromFields :: (Show a, Ord a) => [(a, b)] -> RecordMap a b
- Cryptol.Utils.RecordMap: recordFromFieldsErr :: (Show a, Ord a) => [(a, b)] -> Either (a, b) (RecordMap a b)
- Cryptol.Utils.RecordMap: recordFromFieldsWithDisplay :: (Show a, Ord a) => [a] -> [(a, b)] -> RecordMap a b
- Cryptol.Utils.RecordMap: recordMapAccum :: (a -> b -> (a, c)) -> a -> RecordMap k b -> (a, RecordMap k c)
- Cryptol.Utils.RecordMap: traverseRecordMap :: Applicative t => (a -> b -> t c) -> RecordMap a b -> t (RecordMap a c)
- Cryptol.Utils.RecordMap: zipRecords :: forall a b c d. Ord a => (a -> b -> c -> d) -> RecordMap a b -> RecordMap a c -> Either (Either a a) (RecordMap a d)
- Cryptol.Utils.RecordMap: zipRecordsM :: forall t a b c d. (Ord a, Monad t) => (a -> b -> c -> t d) -> RecordMap a b -> RecordMap a c -> t (Either (Either a a) (RecordMap a d))
- Cryptol.Utils.Types: float32ExpPrec :: (Integer, Integer)
- Cryptol.Utils.Types: float64ExpPrec :: (Integer, Integer)
- Cryptol.Version: commitBranch :: String
- Cryptol.Version: commitDirty :: Bool
- Cryptol.Version: commitHash :: String
- Cryptol.Version: commitShortHash :: String
- Cryptol.Version: displayVersion :: Monad m => (String -> m ()) -> m ()
- Cryptol.Version: ffiEnabled :: Bool
- Cryptol.Version: version :: Version
+ REPL.Haskeline: (+++) :: CompletionFunc REPL -> CompletionFunc REPL -> CompletionFunc REPL
+ REPL.Haskeline: Batch :: FilePath -> ReplMode
+ REPL.Haskeline: CryrcDefault :: Cryptolrc
+ REPL.Haskeline: CryrcDisabled :: Cryptolrc
+ REPL.Haskeline: CryrcFiles :: [FilePath] -> Cryptolrc
+ REPL.Haskeline: InteractiveBatch :: FilePath -> ReplMode
+ REPL.Haskeline: InteractiveRepl :: ReplMode
+ REPL.Haskeline: Interrupted :: NextLine
+ REPL.Haskeline: NextLine :: [String] -> NextLine
+ REPL.Haskeline: NoMoreLines :: NextLine
+ REPL.Haskeline: canDisplayColor :: REPL Bool
+ REPL.Haskeline: cmdArgument :: CommandBody -> CompletionFunc REPL
+ REPL.Haskeline: cmdComp :: String -> CommandDescr -> [Completion]
+ REPL.Haskeline: completeExpr :: CompletionFunc REPL
+ REPL.Haskeline: completeHelp :: CompletionFunc REPL
+ REPL.Haskeline: completeModName :: CompletionFunc REPL
+ REPL.Haskeline: completeOption :: CompletionFunc REPL
+ REPL.Haskeline: completeType :: CompletionFunc REPL
+ REPL.Haskeline: crySession :: ReplMode -> Bool -> REPL CommandResult
+ REPL.Haskeline: cryptolCommand :: CompletionFunc REPL
+ REPL.Haskeline: data Cryptolrc
+ REPL.Haskeline: data NextLine
+ REPL.Haskeline: data ReplMode
+ REPL.Haskeline: getInputLines :: String -> InputT REPL NextLine
+ REPL.Haskeline: instance GHC.Classes.Eq REPL.Haskeline.ReplMode
+ REPL.Haskeline: instance GHC.Show.Show REPL.Haskeline.Cryptolrc
+ REPL.Haskeline: instance GHC.Show.Show REPL.Haskeline.ReplMode
+ REPL.Haskeline: isIdentChar :: Char -> Bool
+ REPL.Haskeline: keywords :: [String]
+ REPL.Haskeline: loadCryRC :: Cryptolrc -> REPL CommandResult
+ REPL.Haskeline: mkTitle :: Maybe LoadedModule -> String
+ REPL.Haskeline: nameComp :: String -> String -> Completion
+ REPL.Haskeline: repl :: Cryptolrc -> Maybe Config -> LoadProjectMode -> ReplMode -> Bool -> Bool -> REPL () -> IO CommandResult
+ REPL.Haskeline: replSettings :: Bool -> Settings REPL
+ REPL.Haskeline: setHistoryFile :: Settings REPL -> IO (Settings REPL)
+ REPL.Haskeline: setREPLTitle :: REPL ()
+ REPL.Haskeline: shouldSetREPLTitle :: REPL Bool
+ REPL.Haskeline: takeIdent :: String -> String
+ REPL.Logo: displayLogo :: Bool -> Bool -> REPL ()
+ REPL.Logo: logo :: Bool -> (String -> [String]) -> Logo
+ REPL.Logo: logo1 :: String -> [String]
+ REPL.Logo: logo2 :: String -> [String]
+ REPL.Logo: type Logo = [String]
+ REPL.Logo: type Version = String

Files

CHANGES.md view
@@ -1,3 +1,91 @@+# 3.3.0 -- 2025-03-21++## Language changes++## Bug fixes++* Fix a bug where setting at timeout would cause+  sbv-yices, sbv-cvc4 and sbc-cvc5 to crash.+  Uses a deadman timer workaround for yices, due+  to a [known issue](https://github.com/LeventErkok/sbv/issues/735).+  ([#1808](https://github.com/GaloisInc/cryptol/issues/1808))++* Update Yices build in CI to fix a crash when running+  test `issue_1807.icry` on Mac OS X (ARM64).+  ([what4-solvers #58](https://github.com/GaloisInc/what4-solvers/issues/58))++* Fix a bug where using a timeout with a subset of the what4 solvers+  would cause a runtime error. Includes a version bump for what4 to address+  a nondeterministic crash when using timeouts with cvc4/5.+  ([what4 PR #288](https://github.com/GaloisInc/what4/pull/288))+  ([#1807](https://github.com/GaloisInc/cryptol/issues/1807))++* Fix #1437, enforce the VSeq invariant that it is not a sequence of bits.+  Replaces the VSeq constructor with a view-only pattern, and smart constructors+  `mkSeq` and `finSeq`.+  ([#1437](https://github.com/GaloisInc/cryptol/issues/1437))++* Fix #1740, removes duplicated width from word values.+  Note that since this changes the types, it may require changes to libraries+  depending on Cryptol.++* Fix a bug in which splitting a `[0]` value into type `[inf][0]` would panic.+  ([#1749](https://github.com/GaloisInc/cryptol/issues/1749))++* Fix a bug in which the free variables of types mentioning newtypes or enums+  were incorrectly computed.+  ([#1773](https://github.com/GaloisInc/cryptol/issues/1773))++* The reference evaluator now evaluates the `toSignedInteger` and `deepseq`+  primitives instead of panicking.++* Fix a bug in which `a ^^ (x ^^ y)` could be incorrectly simplified to+  `a ^^ (x * y)` at the type level.+  ([#1799](https://github.com/GaloisInc/cryptol/issues/1799))++## New features++* Improved error messages during type inference for bindings.+  Adds a specific error message for when a binding has+  more arguments than expected, given its type signature.+  ([#1744](https://github.com/GaloisInc/cryptol/issues/1744))++* Improved warning messages for non-exhaustive guards.+  Warnings are now ordered by source location.+  ([#1798](https://github.com/GaloisInc/cryptol/issues/1798))++* More aggressive exhaustivity check that is less dependent on+  guard ordering.+  ([#1796](https://github.com/GaloisInc/cryptol/issues/1796))++* Improved error messages mentioning module parameters+  ([#1560](https://github.com/GaloisInc/cryptol/issues/1560))++* Improved the naming convention for anonymous modules generated by the+  module system ([#1810](https://github.com/GaloisInc/cryptol/issues/1810))++* REPL command `:dumptests <FILE> <EXPR>` updated to write to stdout when+  invoked as `:dumptests - <EXPR>` allowing for easier experimentation and+  testing.++* The REPL properly supports tab completion for the `:t` and `:check` commands.+  ([#1780](https://github.com/GaloisInc/cryptol/issues/1780))++* Add support for incrementally loading projects via cryptol's `--project`+  flag as documented in the reference manual.+  ([#1641](https://github.com/GaloisInc/cryptol/issues/1641))++* Add support for the Bitwuzla SMT solver, which can be selected with+  `:set prover=bitwuzla`. If you want to specify a What4 or SBV backend, you can+  use `:set prover=w4-bitwuzla` or `:set prover=sbv-bitwuzla`, respectively.+  ([#1786](https://github.com/GaloisInc/cryptol/issues/1786))++* Add a REPL option `tcSmtFile` that allows writing typechecker-related SMT+  solver interactions to a file.++* The typechecker can now simplify types of the form `width (2^^n)` to `n + 1`.+  ([#1802](https://github.com/GaloisInc/cryptol/issues/1802))+ # 3.2.0 -- 2024-08-20  ## Language changes
+ api-tests/Main.hs view
@@ -0,0 +1,114 @@+{-# LANGUAGE ScopedTypeVariables #-}+module Main (main) where++import Data.Foldable (traverse_)+import System.Console.Haskeline.Completion (Completion(..))+import Test.Tasty+import Test.Tasty.HUnit++import qualified Cryptol.REPL.Command as REPL+import qualified Cryptol.REPL.Monad as REPL+import Cryptol.REPL.Monad (REPL)+import Cryptol.Utils.Logger (quietLogger)+import Cryptol.Utils.PP (pp)++import REPL.Haskeline (cryptolCommand)++main :: IO ()+main = defaultMain $+  testGroup "Cryptol API tests"+    [ testGroup "Tab completion tests" $+      map (uncurry replTabCompletionTestCase)+        [ (":ch", ":check")+        , (":check", ":check")+        , (":check ", ":check ")+        , (":check rev", ":check reverse")+        , (":check-docstrings", ":check-docstrings ")+        , (":check-docstrings ", ":check-docstrings ")+        , (":t", ":t")+        , (":t rev", ":t reverse")+        , (":time", ":time ")+        , (":time ", ":time ")+        , (":time rev", ":time reverse")+        , (":type", ":type ")+        , (":type ", ":type ")+        , (":type rev", ":type reverse")+        ]+    ]++-- | Assert a property in the 'REPL' monad and turn it into a test case.+replTestCase :: TestName -> REPL () -> TestTree+replTestCase name replAssertion =+  testCase name $+  REPL.runREPL+    False       -- Don't use batch mode+    False       -- Disable call stacks+    quietLogger -- Ignore all log messages+    replAssertion++-- | Assert that the REPL will tab-complete the given input in one specific way.+replTabCompletionTestCase ::+  -- | The input before the cursor just prior to hitting the tab key.+  String ->+  -- | The expected terminal input after hitting the tab key. Note that although+  -- this is specified as a single 'String', this may actually correspond to+  -- multiple Haskeline 'Completion's under the hood. See the comments below for+  -- details on how multiple 'Completion's are resolved to a single 'String'.+  String ->+  TestTree+replTabCompletionTestCase beforeTab afterTabExpected =+  replTestCase (show beforeTab ++ " --> " ++ show afterTabExpected) $+  do -- Load the prelude so that the REPL knows how to tab-complete prelude+     -- definitions.+     REPL.loadPrelude+     -- Perform the actual tab completion. (Oddly, Haskeline requires that the+     -- input to the left of the cursor should be reversed.)+     (_input, completions) <- cryptolCommand (reverse beforeTab, "")+     -- Check that the results match what is expected. We have to do a bit of+     -- additional work that Haskeline does not do:+     --+     -- 1. If there is exactly one Completion and its replacement value is+     --    empty, then Haskeline will add a space character to the end of the+     --    input on the terminal. Oddly, this space character is /not/ added in+     --    the Completion itself. As such, we have to add this ourselves.+     --+     -- 2. If there are multiple completions, then Haskeline will complete the+     --    terminal input up to the longest common prefix of all the+     --    completions' replacement strings. As such, we compute this longest+     --    common prefix ourselves.+     REPL.io $+       case completions of+         [] -> assertFailure "Expected tab completions, but received none"+         [completion] ->+           do assertFinished completion+              let replace = replacement completion+                  afterTabActual+                    | null replace = -- See (1) above+                                     beforeTab ++ " "+                    | otherwise    = beforeTab ++ replace+              afterTabExpected @=? afterTabActual+         _:_ ->+           do traverse_ assertFinished completions+              let replaceLcp =+                    -- See (2) above+                    longestCommonPrefix (map replacement completions)+                  afterTabActual = beforeTab ++ replaceLcp+              afterTabExpected @=? afterTabActual+  `REPL.catch`+    -- If something goes wrong run running the REPL, report it as a test+    -- failure.+    \x -> REPL.io $ assertFailure $ show $ pp x+  where+    assertFinished :: Completion -> Assertion+    assertFinished completion =+      assertBool ("Tab completion for " ++ display completion ++ " finished")+                 (isFinished completion)++-- | Compute the longest common prefix in a list of lists.+longestCommonPrefix :: forall a. Eq a => [[a]] -> [a]+longestCommonPrefix [] = []+longestCommonPrefix s = foldr1 lcp s+  where+    lcp :: [a] -> [a] -> [a]+    lcp xs ys = map fst $ takeWhile (uncurry (==))+                        $ zip xs ys
+ cryptol-repl-internal/REPL/Haskeline.hs view
@@ -0,0 +1,401 @@+-- |+-- Module      :  REPL.Haskeline+-- Copyright   :  (c) 2013-2016 Galois, Inc.+-- License     :  BSD3+-- Maintainer  :  cryptol@galois.com+-- Stability   :  provisional+-- Portability :  portable++{-# LANGUAGE CPP #-}+{-# LANGUAGE MultiWayIf #-}+{-# LANGUAGE PatternGuards #-}+{-# LANGUAGE BangPatterns #-}+{-# OPTIONS_GHC -fno-warn-orphans #-}++module REPL.Haskeline where++import qualified Cryptol.Project as Project+import           Cryptol.REPL.Command+import           Cryptol.REPL.Monad+import           Cryptol.REPL.Trie+import           Cryptol.Utils.PP hiding ((</>))+import           Cryptol.Utils.Logger(stdoutLogger)+import           Cryptol.Utils.Ident(modNameToText, interactiveName)++import qualified Control.Exception as X+import           Control.Monad (guard, join)+import qualified Control.Monad.Trans.Class as MTL+#if !MIN_VERSION_haskeline(0,8,0)+import           Control.Monad.Trans.Control+#endif+import           Data.Char (isAlphaNum, isSpace)+import           Data.Function (on)+import           Data.List (isPrefixOf,nub,sortBy,sort)+import qualified Data.Set as Set+import qualified Data.Text as T (unpack)+import           System.Console.ANSI (setTitle, hSupportsANSI)+import           System.Console.Haskeline+import           System.Directory ( doesFileExist+                                  , getHomeDirectory+                                  , getCurrentDirectory)+import           System.FilePath ((</>))+import           System.IO (stdout)++import           Prelude ()+import           Prelude.Compat+import Cryptol.Project.Monad (LoadProjectMode)+++data ReplMode+  = InteractiveRepl -- ^ Interactive terminal session+  | Batch FilePath  -- ^ Execute from a batch file+  | InteractiveBatch FilePath+     -- ^ Execute from a batch file, but behave as though+     --   lines are entered in an interactive session.+ deriving (Show, Eq)++-- | One REPL invocation, either from a file or from the terminal.+crySession :: ReplMode -> Bool -> REPL CommandResult+crySession replMode stopOnError =+  do settings <- io (setHistoryFile (replSettings isBatch))+     let act = runInputTBehavior behavior settings (withInterrupt (loop True 1))+     if isBatch then asBatch act else act+  where+  (isBatch,behavior) = case replMode of+    InteractiveRepl       -> (False, defaultBehavior)+    Batch path            -> (True,  useFile path)+    InteractiveBatch path -> (False, useFile path)++  loop :: Bool -> Int -> InputT REPL CommandResult+  loop !success !lineNum =+    do ln <- getInputLines =<< MTL.lift getPrompt+       case ln of+         NoMoreLines -> return emptyCommandResult { crSuccess = success }+         Interrupted+           | isBatch && stopOnError -> return emptyCommandResult { crSuccess = False }+           | otherwise -> loop success lineNum+         NextLine ls+           | all (all isSpace) ls -> loop success (lineNum + length ls)+           | otherwise            -> doCommand success lineNum ls++  run lineNum cmd =+    case replMode of+      InteractiveRepl    -> runCommand lineNum Nothing cmd+      InteractiveBatch _ -> runCommand lineNum Nothing cmd+      Batch path         -> runCommand lineNum (Just path) cmd++  doCommand success lineNum txt =+    case parseCommand findCommandExact (unlines txt) of+      Nothing | isBatch && stopOnError -> return emptyCommandResult { crSuccess = False }+              | otherwise -> loop False (lineNum + length txt)  -- say somtething?+      Just cmd -> join $ MTL.lift $+        do status <- handleInterrupt (handleCtrlC emptyCommandResult { crSuccess = False }) (run lineNum cmd)+           case crSuccess status of+             False | isBatch && stopOnError -> return (return status)+             _ -> do goOn <- shouldContinue+                     return (if goOn then loop (crSuccess status && success) (lineNum + length txt) else return status)+++data NextLine = NextLine [String] | NoMoreLines | Interrupted++getInputLines :: String -> InputT REPL NextLine+getInputLines = handleInterrupt (MTL.lift (handleCtrlC Interrupted)) . loop []+  where+  loop ls prompt =+    do mb <- fmap (filter (/= '\r')) <$> getInputLine prompt+       let newPropmpt = map (\_ -> ' ') prompt+       case mb of+         Nothing -> return NoMoreLines+         Just l+           | not (null l) && last l == '\\' -> loop (init l : ls) newPropmpt+           | otherwise -> return $ NextLine $ reverse $ l : ls++loadCryRC :: Cryptolrc -> REPL CommandResult+loadCryRC cryrc =+  case cryrc of+    CryrcDisabled   -> return emptyCommandResult+    CryrcDefault    -> check [ getCurrentDirectory, getHomeDirectory ]+    CryrcFiles opts -> loadMany opts+  where+  check [] = return emptyCommandResult+  check (place : others) =+    do dir <- io place+       let file = dir </> ".cryptolrc"+       present <- io (doesFileExist file)+       if present+         then crySession (Batch file) True+         else check others++  loadMany []       = return emptyCommandResult+  loadMany (f : fs) = do status <- crySession (Batch f) True+                         if crSuccess status+                           then loadMany fs+                           else return status++-- | Haskeline-specific repl implementation.+repl ::+  Cryptolrc ->+  Maybe Project.Config ->+  LoadProjectMode {- ^ refresh project -} ->+  ReplMode -> Bool -> Bool -> REPL () -> IO CommandResult+repl cryrc projectConfig loadProjectMode replMode callStacks stopOnError begin =+  runREPL isBatch callStacks stdoutLogger replAction++ where+  -- this flag is used to suppress the logo and prompts+  isBatch =+    case projectConfig of+      Just _ -> True+      Nothing ->+        case replMode of+          InteractiveRepl -> False+          Batch _ -> True+          InteractiveBatch _ -> True++  replAction =+    do status <- loadCryRC cryrc+       if crSuccess status then do+          begin+          case projectConfig of+            Just config -> loadProjectREPL loadProjectMode config+            Nothing     -> crySession replMode stopOnError+       else return status++-- | Try to set the history file.+setHistoryFile :: Settings REPL -> IO (Settings REPL)+setHistoryFile ss =+  do dir <- getHomeDirectory+     return ss { historyFile = Just (dir </> ".cryptol_history") }+   `X.catch` \(X.SomeException {}) -> return ss++-- | Haskeline settings for the REPL.+replSettings :: Bool -> Settings REPL+replSettings isBatch = Settings+  { complete       = cryptolCommand+  , historyFile    = Nothing+  , autoAddHistory = not isBatch+  }++-- .cryptolrc ------------------------------------------------------------------++-- | Configuration of @.cryptolrc@ file behavior. The default option+-- searches the following locations in order, and evaluates the first+-- file that exists in batch mode on interpreter startup:+--+-- 1. $PWD/.cryptolrc+-- 2. $HOME/.cryptolrc+--+-- If files are specified, they will all be evaluated, but none of the+-- default files will be (unless they are explicitly specified).+--+-- The disabled option inhibits any reading of any .cryptolrc files.+data Cryptolrc =+    CryrcDefault+  | CryrcDisabled+  | CryrcFiles [FilePath]+  deriving (Show)++-- Utilities -------------------------------------------------------------------++#if !MIN_VERSION_haskeline(0,8,0)+instance MonadException REPL where+  controlIO f = join $ liftBaseWith $ \f' ->+    f $ RunIO $ \m -> restoreM <$> (f' m)+#endif++-- Titles ----------------------------------------------------------------------++mkTitle :: Maybe LoadedModule -> String+mkTitle lm = maybe "" (\ m -> pretty m ++ " - ") (lName =<< lm)+          ++ "cryptol"++setREPLTitle :: REPL ()+setREPLTitle = do+  lm <- getLoadedMod+  io (setTitle (mkTitle lm))++-- | In certain environments like Emacs, we shouldn't set the terminal+-- title. Note: this does not imply we can't use color output. We can+-- use ANSI color sequences in places like Emacs, but not terminal+-- codes.+--+-- This checks that @'stdout'@ is a proper terminal handle, and that the+-- terminal mode is not @dumb@, which is set by Emacs and others.+shouldSetREPLTitle :: REPL Bool+shouldSetREPLTitle = io (hSupportsANSI stdout)++-- | Whether we can display color titles. This checks that @'stdout'@+-- is a proper terminal handle, and that the terminal mode is not+-- @dumb@, which is set by Emacs and others.+canDisplayColor :: REPL Bool+canDisplayColor = io (hSupportsANSI stdout)++-- Completion ------------------------------------------------------------------++-- | Completion for cryptol commands.+cryptolCommand :: CompletionFunc REPL+cryptolCommand cursor@(l,r)+  | ":" `isPrefixOf` l'+  , Just (_,cmd,rest) <- splitCommand l' = case nub (findCommand cmd) of++      [c] | cursorRightAfterCmd rest ->+            return (l, cmdComp cmd c)+          | otherwise ->+            completeCmdArgument cmd rest c++      cmds+        -- If the command name is a prefix of multiple commands, then as a+        -- special case, check if (1) the name matches one command exactly, and+        -- (2) there is already some input for an argument. If so, proceed to+        -- tab-complete that argument. This ensures that something like+        -- `:check rev` will complete to `:check reverse`, even though the+        -- command name `:check` is a prefix for both the `:check` and+        -- `:check-docstrings` commands (#1781).+        | [c] <- nub (findCommandExact cmd)+        , not (cursorRightAfterCmd rest) ->+          completeCmdArgument cmd rest c++        | otherwise ->+          return (l, concat [ cmdComp l' c | c <- cmds ])+  -- Complete all : commands when the line is just a :+  | ":" == l' = return (l, concat [ cmdComp l' c | c <- nub (findCommand ":") ])+  | otherwise = completeExpr cursor+  where+  l' = sanitize (reverse l)++  -- Check if the cursor is positioned immediately after the input for the+  -- command, without any command arguments typed in after the command's name.+  cursorRightAfterCmd ::+    String+      {- The rest of the input after the command. -} ->+    Bool+  cursorRightAfterCmd rest = null rest && not (any isSpace l')++  -- Perform tab completion for a single argument to a command.+  completeCmdArgument ::+    String+      {- The name of the command as a String. -} ->+    String+      {- The rest of the input after the command. -} ->+    CommandDescr+      {- The description of the command. -} ->+    REPL (String, [Completion])+  completeCmdArgument cmd rest c =+    do (rest',cs) <- cmdArgument (cBody c) (reverse (sanitize rest),r)+       return (unwords [rest', reverse cmd],cs)++-- | Generate completions from a REPL command definition.+cmdComp :: String -> CommandDescr -> [Completion]+cmdComp prefix c = do+  cName <- cNames c+  guard (prefix `isPrefixOf` cName)+  return $ nameComp prefix cName++-- | Dispatch to a completion function based on the kind of completion the+-- command is expecting.+cmdArgument :: CommandBody -> CompletionFunc REPL+cmdArgument ct cursor@(l,_) = case ct of+  ExprArg     _ -> completeExpr cursor+  DeclsArg    _ -> (completeExpr +++ completeType) cursor+  ExprTypeArg _ -> (completeExpr +++ completeType) cursor+  ModNameArg _  -> completeModName cursor+  FilenameArg _ -> completeFilename cursor+  ShellArg _    -> completeFilename cursor+  OptionArg _   -> completeOption cursor+  HelpArg     _ -> completeHelp cursor+  NoArg       _ -> return (l,[])+  FileExprArg _ -> completeExpr cursor++-- | Additional keywords to suggest in the REPL+--   autocompletion list.+keywords :: [String]+keywords =+  [ "else"+  , "if"+  , "let"+  , "then"+  , "where"+  ]++-- | Complete a name from the expression environment.+completeExpr :: CompletionFunc REPL+completeExpr (l,_) = do+  ns <- (keywords++) <$> getExprNames+  let n    = reverse (takeIdent l)+      vars = sort $ filter (n `isPrefixOf`) ns+  return (l,map (nameComp n) vars)++-- | Complete a name from the type synonym environment.+completeType :: CompletionFunc REPL+completeType (l,_) = do+  ns <- getTypeNames+  let n    = reverse (takeIdent l)+      vars = filter (n `isPrefixOf`) ns+  return (l,map (nameComp n) vars)++-- | Complete a name for which we can show REPL help documentation.+completeHelp :: CompletionFunc REPL+completeHelp (l, _) = do+  ns1 <- getExprNames+  ns2 <- getTypeNames+  let ns3 = concatMap cNames (nub (findCommand ":"))+  let ns = Set.toAscList (Set.fromList (ns1 ++ ns2)) ++ ns3+  let n    = reverse l+  case break isSpace n of+    (":set", _ : n') ->+      do let n'' = dropWhile isSpace n'+         let vars = map optName (lookupTrie (dropWhile isSpace n') userOptions)+         return (l, map (nameComp n'') vars)+    _                ->+      do let vars = filter (n `isPrefixOf`) ns+         return (l, map (nameComp n) vars)+++-- | Complete a name from the list of loaded modules.+completeModName :: CompletionFunc REPL+completeModName (l, _) = do+  ms <- getModNames+  let ns   = map (T.unpack . modNameToText) (interactiveName : ms)+      n    = reverse (takeWhile (not . isSpace) l)+      vars = filter (n `isPrefixOf`) ns+  return (l, map (nameComp n) vars)++-- | Generate a completion from a prefix and a name.+nameComp :: String -> String -> Completion+nameComp prefix c = Completion+  { replacement = drop (length prefix) c+  , display     = c+  , isFinished  = True+  }++-- | Return longest identifier (possibly a qualified name) that is a+-- prefix of the given string+takeIdent :: String -> String+takeIdent (c : cs) | isIdentChar c = c : takeIdent cs+takeIdent (':' : ':' : cs) = ':' : ':' : takeIdent cs+takeIdent _ = []++isIdentChar :: Char -> Bool+isIdentChar c = isAlphaNum c || c `elem` "_\'"++-- | Join two completion functions together, merging and sorting their results.+(+++) :: CompletionFunc REPL -> CompletionFunc REPL -> CompletionFunc REPL+(as +++ bs) cursor = do+  (_,acs) <- as cursor+  (_,bcs) <- bs cursor+  return (fst cursor, sortBy (compare `on` replacement) (acs ++ bcs))+++-- | Complete an option from the options environment.+--+-- XXX this can do better, as it has access to the expected form of the value+completeOption :: CompletionFunc REPL+completeOption cursor@(l,_) = return (fst cursor, map comp opts)+  where+  n        = reverse l+  opts     = lookupTrie n userOptions+  comp opt = Completion+    { replacement = drop (length n) (optName opt)+    , display     = optName opt+    , isFinished  = False+    }
+ cryptol-repl-internal/REPL/Logo.hs view
@@ -0,0 +1,75 @@+-- |+-- Module      :  REPL.Logo+-- Copyright   :  (c) 2013-2016 Galois, Inc.+-- License     :  BSD3+-- Maintainer  :  cryptol@galois.com+-- Stability   :  provisional+-- Portability :  portable++module REPL.Logo where++import Cryptol.REPL.Monad+import Cryptol.Utils.Panic (panic)+import Paths_cryptol (version)++import Cryptol.Version (commitShortHash,commitDirty)+import Data.Version (showVersion)+import System.Console.ANSI+import Prelude ()+import Prelude.Compat+++type Version = String++type Logo = [String]++-- | The list of 'String's returned by the @mk@ function should be non-empty.+logo :: Bool -> (String -> [String]) -> Logo+logo useColor mk =+     [ sgr [SetColor Foreground Dull  White] ++ l | l <- ws ]+  ++ [ sgr [SetColor Foreground Vivid Blue ] ++ l | l <- vs ]+  ++ [ sgr [SetColor Foreground Dull  Blue ] ++ l | l <- ds ]+  ++ [ sgr [Reset] ]+  where+  sgr | useColor  = setSGRCode+      | otherwise = const []+  hashText | commitShortHash == "UNKNOWN" = ""+           | otherwise = " (" ++ commitShortHash +++                                 (if commitDirty then ", modified)" else ")")+  versionText = "version " ++ showVersion version ++ hashText+  ver = sgr [SetColor Foreground Dull White]+        ++ replicate (lineLen - 20 - length versionText) ' '+        ++ versionText ++ "\n"+        ++ "https://cryptol.net  :? for help"+  ls        = mk ver+  slen      = length ls `div` 3+  (ws,rest) = splitAt slen ls+  (vs,ds)   = splitAt slen rest+  line      = case ls of+                line':_ -> line'+                [] -> panic "logo" ["empty lines"]+  lineLen   = length line++displayLogo :: Bool -> Bool -> REPL ()+displayLogo useColor useUnicode =+  unlessBatch (io (mapM_ putStrLn (logo useColor (if useUnicode then logo2 else logo1))))++logo1 :: String -> [String]+logo1 ver =+    [ "                        _        _"+    , "   ___ _ __ _   _ _ __ | |_ ___ | |"+    , "  / __| \'__| | | | \'_ \\| __/ _ \\| |"+    , " | (__| |  | |_| | |_) | || (_) | |"+    , "  \\___|_|   \\__, | .__/ \\__\\___/|_|"+    , "            |___/|_| " ++ ver+    ]++logo2 :: String -> [String]+logo2 ver =+    [ "┏━╸┏━┓╻ ╻┏━┓╺┳╸┏━┓╻  "+    , "┃  ┣┳┛┗┳┛┣━┛ ┃ ┃ ┃┃  "+    , "┗━╸╹┗╸ ╹ ╹   ╹ ┗━┛┗━╸"+    , ver+    ]++
cryptol.cabal view
@@ -1,21 +1,22 @@ Cabal-version:       2.4 Name:                cryptol-Version:             3.2.0+Version:             3.3.0 Synopsis:            Cryptol: The Language of Cryptography Description: Cryptol is a domain-specific language for specifying cryptographic algorithms. A Cryptol implementation of an algorithm resembles its mathematical specification more closely than an implementation in a general purpose language. For more, see <http://www.cryptol.net/>. License:             BSD-3-Clause License-file:        LICENSE Author:              Galois, Inc. Maintainer:          cryptol@galois.com-Homepage:            http://www.cryptol.net/+Homepage:            https://tools.galois.com/cryptol Bug-reports:         https://github.com/GaloisInc/cryptol/issues-Copyright:           2013-2022 Galois Inc.+Copyright:           2013-2025 Galois Inc. Category:            Language Build-type:          Simple extra-source-files:  bench/data/*.cry-                     CHANGES.md                      lib/*.cry lib/*.z3 +extra-doc-files:     CHANGES.md+ data-files:          **/*.cry **/*.z3 data-dir:            lib @@ -27,7 +28,7 @@   type:     git   location: https://github.com/GaloisInc/cryptol.git   -- add a tag on release branches-  tag: 3.2.0+  tag: 3.3.0   flag static@@ -54,7 +55,7 @@                        array             >= 0.4,                        containers        >= 0.5,                        criterion-measurement,-                       cryptohash-sha1   >= 0.11 && < 0.12,+                       cryptohash-sha256 >= 0.11 && < 0.12,                        deepseq           >= 1.3,                        directory         >= 1.2.2.0,                        exceptions,@@ -63,6 +64,7 @@                        gitrev            >= 1.0,                        ghc-prim,                        GraphSCC          >= 1.0.4,+                       heredoc           >= 0.2,                        language-c99,                        language-c99-simple,                        libBF             >= 0.6 && < 0.7,@@ -75,17 +77,18 @@                        pretty-show,                        process           >= 1.2,                        sbv               >= 9.1 && < 10.11,-                       simple-smt        >= 0.9.7,+                       simple-smt        >= 0.9.8,                        stm               >= 2.4,                        strict,                        text              >= 1.1,                        tf-random         >= 0.5,+                       toml-parser       >= 2.0 && <2.1,                        transformers-base >= 0.4,                        vector,                        mtl               >= 2.2.1,                        time              >= 1.6.0.1,                        panic             >= 0.3,-                       what4             >= 1.4 && < 1.7+                       what4             >= 1.6 && < 1.8    if impl(ghc >= 9.0)     build-depends:     ghc-bignum        >= 1.0 && < 1.4@@ -238,8 +241,15 @@                        Cryptol.REPL.Help,                        Cryptol.REPL.Browse,                        Cryptol.REPL.Monad,-                       Cryptol.REPL.Trie+                       Cryptol.REPL.Trie, +                       Cryptol.Project+                       Cryptol.Project.Config+                       Cryptol.Project.Monad+                       Cryptol.Project.Cache+                       Cryptol.Project.WildMatch++  Autogen-modules:     Paths_cryptol   Other-modules:       Cryptol.Parser.LexerUtils,                        Cryptol.Parser.ParserUtils,                        Cryptol.Prelude,@@ -254,20 +264,24 @@   if flag(relocatable)       cpp-options: -DRELOCATABLE -executable cryptol-  Default-language:-    Haskell2010-  Main-is:             Main.hs-  hs-source-dirs:      cryptol+-- The portions of the Cryptol REPL that are specific to the Cryptol executable.+-- We factor this out into a separate internal library because (1) it has some+-- dependencies (e.g., ansi-terminal and haskeline) that the Cryptol library+-- does not need to depend on, and (2) we want to be able to test this code in+-- the cryptol-api-tests test suite.+library cryptol-repl-internal+  exposed-modules:     REPL.Haskeline+                       REPL.Logo   Autogen-modules:     Paths_cryptol--  Other-modules:       OptParser,-                       REPL.Haskeline,-                       REPL.Logo,-                       Paths_cryptol-+  Other-modules:       Paths_cryptol+  hs-source-dirs:      cryptol-repl-internal+  default-language:    Haskell2010+  GHC-options:         -Wall -O2+  if os(linux) && flag(static)+      ld-options: -static -pthread+      ghc-options: -optl-fuse-ld=bfd   build-depends:       ansi-terminal-                     , base+                     , base >= 4.9 && < 5                      , base-compat                      , containers                      , cryptol@@ -278,6 +292,19 @@                      , monad-control                      , text                      , transformers++executable cryptol+  Default-language:+    Haskell2010+  Main-is:             Main.hs+  hs-source-dirs:      cryptol+  Other-modules:       OptParser+  build-depends:       base >= 4.9 && < 5+                     , base-compat+                     , cryptol+                     , cryptol-repl-internal+                     , directory+                     , filepath   GHC-options:         -Wall -threaded -rtsopts "-with-rtsopts=-N1 -A64m" -O2   if impl(ghc >= 8.0.1)      ghc-options: -Wno-redundant-constraints@@ -291,7 +318,11 @@     Haskell2010   main-is: CryHtml.hs   hs-source-dirs: utils-  build-depends: base, text, cryptol, blaze-html+  build-depends:+     base >= 4.9 && < 5,+     text,+     cryptol,+     blaze-html   GHC-options: -Wall    if os(linux) && flag(static)@@ -304,7 +335,7 @@   Main-is:             CheckExercises.hs   hs-source-dirs:      cryptol   build-depends:       ansi-terminal-                     , base+                     , base >= 4.9 && < 5                      , containers                      , directory                      , extra@@ -315,6 +346,26 @@                      , temporary                      , text   GHC-options: -Wall++-- Test cases that require the use of the Cryptol API to test effectively. Most+-- other test cases should be added to the integration tests (which only require+-- the Cryptol executable and/or the REPL) under tests/.+test-suite cryptol-api-tests+  type:                exitcode-stdio-1.0+  main-is:             Main.hs+  hs-source-dirs:      api-tests+  default-language:    Haskell2010+  GHC-options:         -Wall -threaded -rtsopts "-with-rtsopts=-N1 -A64m" -O2+  if os(linux) && flag(static)+      ld-options: -static -pthread+      ghc-options: -optl-fuse-ld=bfd+  build-depends:       base >= 4.9 && < 5+                     , cryptol+                     , cryptol-repl-internal+                     , haskeline+                     , tasty+                     , tasty-hunit+ benchmark cryptol-bench   type:                exitcode-stdio-1.0   main-is:             Main.hs@@ -326,7 +377,7 @@   if os(linux) && flag(static)       ld-options: -static -pthread       ghc-options: -optl-fuse-ld=bfd-  build-depends:       base+  build-depends:       base >= 4.9 && < 5                      , criterion                      , cryptol                      , deepseq
cryptol/Main.hs view
@@ -8,6 +8,7 @@  {-# LANGUAGE CPP #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE LambdaCase #-} {-# LANGUAGE OverloadedStrings #-} module Main where @@ -18,6 +19,7 @@                    io,prependSearchPath,setSearchPath,parseSearchPath) import qualified Cryptol.REPL.Monad as REPL import Cryptol.ModuleSystem.Env(ModulePath(..))+import qualified Cryptol.Project as Project  import REPL.Haskeline import REPL.Logo@@ -26,6 +28,7 @@ import Cryptol.Version (displayVersion)  import Control.Monad (when, void)+import Data.Maybe (isJust, isNothing) import GHC.IO.Encoding (setLocaleEncoding, utf8) import System.Console.GetOpt     (OptDescr(..),ArgOrder(..),ArgDescr(..),getOpt,usageInfo)@@ -47,6 +50,8 @@   , optVersion         :: Bool   , optHelp            :: Bool   , optBatch           :: ReplMode+  , optProject         :: Maybe FilePath+  , optProjectRefresh  :: Project.LoadProjectMode   , optCallStacks      :: Bool   , optCommands        :: [String]   , optColorMode       :: ColorMode@@ -62,6 +67,8 @@   , optVersion         = False   , optHelp            = False   , optBatch           = InteractiveRepl+  , optProject         = Nothing+  , optProjectRefresh  = Project.ModifiedMode   , optCallStacks      = True   , optCommands        = []   , optColorMode       = AutoColor@@ -79,6 +86,16 @@   , Option "" ["interactive-batch"] (ReqArg setInteractiveBatchScript "FILE")     "run the script provided and exit, but behave as if running an interactive session" +  , Option "p" ["project"] (ReqArg setProject "CRYPROJECT")+    ("Load and verify a Cryptol project using the provided project "+      ++ "configuration file or directory containing 'cryproject.toml'")+  +  , Option "" ["refresh-project"] (NoArg setProjectRefresh)+    "Ignore a pre-existing cache file when loading a project."++  , Option "" ["untested-project"] (NoArg setProjectUntested)+    "Load all project files that don't have a test result."+   , Option "e" ["stop-on-error"] (NoArg setStopOnError)     "stop script execution as soon as an error occurs." @@ -137,6 +154,15 @@ setInteractiveBatchScript :: String -> OptParser Options setInteractiveBatchScript path = modify $ \ opts -> opts { optBatch = InteractiveBatch path } +setProject :: String -> OptParser Options+setProject path = modify $ \opts -> opts { optProject = Just path }++setProjectRefresh :: OptParser Options+setProjectRefresh = modify $ \opts -> opts { optProjectRefresh = Project.RefreshMode }++setProjectUntested :: OptParser Options+setProjectUntested = modify $ \opts -> opts { optProjectRefresh = Project.UntestedMode }+ -- | Set the color mode of the terminal output. setColorMode :: String -> OptParser Options setColorMode "auto"   = modify $ \ opts -> opts { optColorMode = AutoColor }@@ -200,7 +226,7 @@             , "via the `:edit` command"             ]           )-        , ( "SBV_{ABC,BOOLECTOR,CVC4,CVC5,MATHSAT,YICES,Z3}_OPTIONS"+        , ( "SBV_{ABC,BITWUZLA,BOOLECTOR,CVC4,CVC5,MATHSAT,YICES,Z3}_OPTIONS"           , [ "A string of command-line arguments to be passed to the"             , "corresponding solver invoked for `:sat` and `:prove`"             , "when using a prover via SBV"@@ -225,11 +251,14 @@       | optVersion opts -> displayVersion putStrLn       | otherwise       -> do           (opts', mCleanup) <- setupCmdScript opts-          status <- repl (optCryptolrc opts')-                         (optBatch opts')-                         (optCallStacks opts')-                         (optStopOnError opts')-                         (setupREPL opts')+          (opts'', mConfig) <- setupProject opts'+          status <- repl (optCryptolrc opts'')+                         mConfig+                         (optProjectRefresh opts'')+                         (optBatch opts'')+                         (optCallStacks opts'')+                         (optStopOnError opts'')+                         (setupREPL opts'')           case mCleanup of             Nothing -> return ()             Just cmdFile -> removeFile cmdFile@@ -249,8 +278,28 @@       hClose h       when (optBatch opts /= InteractiveRepl) $         putStrLn "[warning] --command argument specified; ignoring batch file"-      return (opts { optBatch = InteractiveBatch path }, Just path)+      when (isJust (optProject opts)) $+        putStrLn $+          "[warning] --command argument specified; "+          ++ "ignoring project configuration file"+      return+        ( opts { optBatch = InteractiveBatch path, optProject = Nothing }+        , Just path ) +setupProject :: Options -> IO (Options, Maybe Project.Config)+setupProject opts =+  case optProject opts of+    Nothing -> pure (opts, Nothing)+    Just path -> do+      when (optBatch opts /= InteractiveRepl) $+        putStrLn "[warning] --project argument specified; ignoring batch file"+      Project.loadConfig path >>= \case+        Left err -> do+          print $ pp err+          exitFailure+        Right config ->+          pure (opts { optBatch = InteractiveRepl }, Just config)+ setupREPL :: Options -> REPL () setupREPL opts = do   mCryptolPath <- io $ lookupEnv "CRYPTOLPATH"@@ -281,18 +330,20 @@     Batch file -> prependSearchPath [ takeDirectory file ]     _ -> return () -  case optLoad opts of-    []  -> loadPrelude `REPL.catch` \x -> io $ print $ pp x-    [l] -> void (loadCmd l) `REPL.catch` \x -> do-             io $ print $ pp x-             -- If the requested file fails to load, load the prelude instead...-             loadPrelude `REPL.catch` \y -> do-               io $ print $ pp y-             -- ... but make sure the loaded module is set to the file-             -- we tried, instead of the Prelude-             REPL.setEditPath l-             REPL.setLoadedMod REPL.LoadedModule-               { REPL.lFocus = Nothing-               , REPL.lPath = InFile l-               }-    _   -> io $ putStrLn "Only one file may be loaded at the command line."+  when (isNothing (optProject opts)) $+    case optLoad opts of+      []  -> loadPrelude `REPL.catch` \x -> io $ print $ pp x+      [l] -> void (loadCmd l) `REPL.catch` \x -> do+              io $ print $ pp x+              -- If the requested file fails to load,+              -- load the prelude instead...+              loadPrelude `REPL.catch` \y -> do+                io $ print $ pp y+              -- ... but make sure the loaded module is set to the file+              -- we tried, instead of the Prelude+              REPL.setEditPath l+              REPL.setLoadedMod REPL.LoadedModule+                { REPL.lFocus = Nothing+                , REPL.lPath = InFile l+                }+      _   -> io $ putStrLn "Only one file may be loaded at the command line."
− cryptol/REPL/Haskeline.hs
@@ -1,356 +0,0 @@--- |--- Module      :  REPL.Haskeline--- Copyright   :  (c) 2013-2016 Galois, Inc.--- License     :  BSD3--- Maintainer  :  cryptol@galois.com--- Stability   :  provisional--- Portability :  portable--{-# LANGUAGE CPP #-}-{-# LANGUAGE MultiWayIf #-}-{-# LANGUAGE PatternGuards #-}-{-# LANGUAGE BangPatterns #-}-{-# OPTIONS_GHC -fno-warn-orphans #-}--module REPL.Haskeline where--import           Cryptol.REPL.Command-import           Cryptol.REPL.Monad-import           Cryptol.REPL.Trie-import           Cryptol.Utils.PP hiding ((</>))-import           Cryptol.Utils.Logger(stdoutLogger)-import           Cryptol.Utils.Ident(modNameToText, interactiveName)--import qualified Control.Exception as X-import           Control.Monad (guard, join)-import qualified Control.Monad.Trans.Class as MTL-#if !MIN_VERSION_haskeline(0,8,0)-import           Control.Monad.Trans.Control-#endif-import           Data.Char (isAlphaNum, isSpace)-import           Data.Function (on)-import           Data.List (isPrefixOf,nub,sortBy,sort)-import qualified Data.Set as Set-import qualified Data.Text as T (unpack)-import           System.Console.ANSI (setTitle, hSupportsANSI)-import           System.Console.Haskeline-import           System.Directory ( doesFileExist-                                  , getHomeDirectory-                                  , getCurrentDirectory)-import           System.FilePath ((</>))-import           System.IO (stdout)--import           Prelude ()-import           Prelude.Compat---data ReplMode-  = InteractiveRepl -- ^ Interactive terminal session-  | Batch FilePath  -- ^ Execute from a batch file-  | InteractiveBatch FilePath-     -- ^ Execute from a batch file, but behave as though-     --   lines are entered in an interactive session.- deriving (Show, Eq)---- | One REPL invocation, either from a file or from the terminal.-crySession :: ReplMode -> Bool -> REPL CommandResult-crySession replMode stopOnError =-  do settings <- io (setHistoryFile (replSettings isBatch))-     let act = runInputTBehavior behavior settings (withInterrupt (loop True 1))-     if isBatch then asBatch act else act-  where-  (isBatch,behavior) = case replMode of-    InteractiveRepl       -> (False, defaultBehavior)-    Batch path            -> (True,  useFile path)-    InteractiveBatch path -> (False, useFile path)--  loop :: Bool -> Int -> InputT REPL CommandResult-  loop !success !lineNum =-    do ln <- getInputLines =<< MTL.lift getPrompt-       case ln of-         NoMoreLines -> return emptyCommandResult { crSuccess = success }-         Interrupted-           | isBatch && stopOnError -> return emptyCommandResult { crSuccess = False }-           | otherwise -> loop success lineNum-         NextLine ls-           | all (all isSpace) ls -> loop success (lineNum + length ls)-           | otherwise            -> doCommand success lineNum ls--  run lineNum cmd =-    case replMode of-      InteractiveRepl    -> runCommand lineNum Nothing cmd-      InteractiveBatch _ -> runCommand lineNum Nothing cmd-      Batch path         -> runCommand lineNum (Just path) cmd--  doCommand success lineNum txt =-    case parseCommand findCommandExact (unlines txt) of-      Nothing | isBatch && stopOnError -> return emptyCommandResult { crSuccess = False }-              | otherwise -> loop False (lineNum + length txt)  -- say somtething?-      Just cmd -> join $ MTL.lift $-        do status <- handleInterrupt (handleCtrlC emptyCommandResult { crSuccess = False }) (run lineNum cmd)-           case crSuccess status of-             False | isBatch && stopOnError -> return (return status)-             _ -> do goOn <- shouldContinue-                     return (if goOn then loop (crSuccess status && success) (lineNum + length txt) else return status)---data NextLine = NextLine [String] | NoMoreLines | Interrupted--getInputLines :: String -> InputT REPL NextLine-getInputLines = handleInterrupt (MTL.lift (handleCtrlC Interrupted)) . loop []-  where-  loop ls prompt =-    do mb <- fmap (filter (/= '\r')) <$> getInputLine prompt-       let newPropmpt = map (\_ -> ' ') prompt-       case mb of-         Nothing -> return NoMoreLines-         Just l-           | not (null l) && last l == '\\' -> loop (init l : ls) newPropmpt-           | otherwise -> return $ NextLine $ reverse $ l : ls--loadCryRC :: Cryptolrc -> REPL CommandResult-loadCryRC cryrc =-  case cryrc of-    CryrcDisabled   -> return emptyCommandResult-    CryrcDefault    -> check [ getCurrentDirectory, getHomeDirectory ]-    CryrcFiles opts -> loadMany opts-  where-  check [] = return emptyCommandResult-  check (place : others) =-    do dir <- io place-       let file = dir </> ".cryptolrc"-       present <- io (doesFileExist file)-       if present-         then crySession (Batch file) True-         else check others--  loadMany []       = return emptyCommandResult-  loadMany (f : fs) = do status <- crySession (Batch f) True-                         if crSuccess status-                           then loadMany fs-                           else return status---- | Haskeline-specific repl implementation.-repl :: Cryptolrc -> ReplMode -> Bool -> Bool -> REPL () -> IO CommandResult-repl cryrc replMode callStacks stopOnError begin =-  runREPL isBatch callStacks stdoutLogger replAction-- where-  -- this flag is used to suppress the logo and prompts-  isBatch = case replMode of-              InteractiveRepl -> False-              Batch _ -> True-              InteractiveBatch _ -> True--  replAction =-    do status <- loadCryRC cryrc-       if crSuccess status-         then begin >> crySession replMode stopOnError-         else return status---- | Try to set the history file.-setHistoryFile :: Settings REPL -> IO (Settings REPL)-setHistoryFile ss =-  do dir <- getHomeDirectory-     return ss { historyFile = Just (dir </> ".cryptol_history") }-   `X.catch` \(X.SomeException {}) -> return ss---- | Haskeline settings for the REPL.-replSettings :: Bool -> Settings REPL-replSettings isBatch = Settings-  { complete       = cryptolCommand-  , historyFile    = Nothing-  , autoAddHistory = not isBatch-  }---- .cryptolrc ---------------------------------------------------------------------- | Configuration of @.cryptolrc@ file behavior. The default option--- searches the following locations in order, and evaluates the first--- file that exists in batch mode on interpreter startup:------ 1. $PWD/.cryptolrc--- 2. $HOME/.cryptolrc------ If files are specified, they will all be evaluated, but none of the--- default files will be (unless they are explicitly specified).------ The disabled option inhibits any reading of any .cryptolrc files.-data Cryptolrc =-    CryrcDefault-  | CryrcDisabled-  | CryrcFiles [FilePath]-  deriving (Show)---- Utilities ---------------------------------------------------------------------#if !MIN_VERSION_haskeline(0,8,0)-instance MonadException REPL where-  controlIO f = join $ liftBaseWith $ \f' ->-    f $ RunIO $ \m -> restoreM <$> (f' m)-#endif---- Titles ------------------------------------------------------------------------mkTitle :: Maybe LoadedModule -> String-mkTitle lm = maybe "" (\ m -> pretty m ++ " - ") (lName =<< lm)-          ++ "cryptol"--setREPLTitle :: REPL ()-setREPLTitle = do-  lm <- getLoadedMod-  io (setTitle (mkTitle lm))---- | In certain environments like Emacs, we shouldn't set the terminal--- title. Note: this does not imply we can't use color output. We can--- use ANSI color sequences in places like Emacs, but not terminal--- codes.------ This checks that @'stdout'@ is a proper terminal handle, and that the--- terminal mode is not @dumb@, which is set by Emacs and others.-shouldSetREPLTitle :: REPL Bool-shouldSetREPLTitle = io (hSupportsANSI stdout)---- | Whether we can display color titles. This checks that @'stdout'@--- is a proper terminal handle, and that the terminal mode is not--- @dumb@, which is set by Emacs and others.-canDisplayColor :: REPL Bool-canDisplayColor = io (hSupportsANSI stdout)---- Completion ---------------------------------------------------------------------- | Completion for cryptol commands.-cryptolCommand :: CompletionFunc REPL-cryptolCommand cursor@(l,r)-  | ":" `isPrefixOf` l'-  , Just (_,cmd,rest) <- splitCommand l' = case nub (findCommand cmd) of--      [c] | null rest && not (any isSpace l') -> do-            return (l, cmdComp cmd c)-          | otherwise -> do-            (rest',cs) <- cmdArgument (cBody c) (reverse (sanitize rest),r)-            return (unwords [rest', reverse cmd],cs)--      cmds ->-        return (l, concat [ cmdComp l' c | c <- cmds ])-  -- Complete all : commands when the line is just a :-  | ":" == l' = return (l, concat [ cmdComp l' c | c <- nub (findCommand ":") ])-  | otherwise = completeExpr cursor-  where-  l' = sanitize (reverse l)---- | Generate completions from a REPL command definition.-cmdComp :: String -> CommandDescr -> [Completion]-cmdComp prefix c = do-  cName <- cNames c-  guard (prefix `isPrefixOf` cName)-  return $ nameComp prefix cName---- | Dispatch to a completion function based on the kind of completion the--- command is expecting.-cmdArgument :: CommandBody -> CompletionFunc REPL-cmdArgument ct cursor@(l,_) = case ct of-  ExprArg     _ -> completeExpr cursor-  DeclsArg    _ -> (completeExpr +++ completeType) cursor-  ExprTypeArg _ -> (completeExpr +++ completeType) cursor-  ModNameArg _  -> completeModName cursor-  FilenameArg _ -> completeFilename cursor-  ShellArg _    -> completeFilename cursor-  OptionArg _   -> completeOption cursor-  HelpArg     _ -> completeHelp cursor-  NoArg       _ -> return (l,[])-  FileExprArg _ -> completeExpr cursor---- | Additional keywords to suggest in the REPL---   autocompletion list.-keywords :: [String]-keywords =-  [ "else"-  , "if"-  , "let"-  , "then"-  , "where"-  ]---- | Complete a name from the expression environment.-completeExpr :: CompletionFunc REPL-completeExpr (l,_) = do-  ns <- (keywords++) <$> getExprNames-  let n    = reverse (takeIdent l)-      vars = sort $ filter (n `isPrefixOf`) ns-  return (l,map (nameComp n) vars)---- | Complete a name from the type synonym environment.-completeType :: CompletionFunc REPL-completeType (l,_) = do-  ns <- getTypeNames-  let n    = reverse (takeIdent l)-      vars = filter (n `isPrefixOf`) ns-  return (l,map (nameComp n) vars)---- | Complete a name for which we can show REPL help documentation.-completeHelp :: CompletionFunc REPL-completeHelp (l, _) = do-  ns1 <- getExprNames-  ns2 <- getTypeNames-  let ns3 = concatMap cNames (nub (findCommand ":"))-  let ns = Set.toAscList (Set.fromList (ns1 ++ ns2)) ++ ns3-  let n    = reverse l-  case break isSpace n of-    (":set", _ : n') ->-      do let n'' = dropWhile isSpace n'-         let vars = map optName (lookupTrie (dropWhile isSpace n') userOptions)-         return (l, map (nameComp n'') vars)-    _                ->-      do let vars = filter (n `isPrefixOf`) ns-         return (l, map (nameComp n) vars)----- | Complete a name from the list of loaded modules.-completeModName :: CompletionFunc REPL-completeModName (l, _) = do-  ms <- getModNames-  let ns   = map (T.unpack . modNameToText) (interactiveName : ms)-      n    = reverse (takeWhile (not . isSpace) l)-      vars = filter (n `isPrefixOf`) ns-  return (l, map (nameComp n) vars)---- | Generate a completion from a prefix and a name.-nameComp :: String -> String -> Completion-nameComp prefix c = Completion-  { replacement = drop (length prefix) c-  , display     = c-  , isFinished  = True-  }---- | Return longest identifier (possibly a qualified name) that is a--- prefix of the given string-takeIdent :: String -> String-takeIdent (c : cs) | isIdentChar c = c : takeIdent cs-takeIdent (':' : ':' : cs) = ':' : ':' : takeIdent cs-takeIdent _ = []--isIdentChar :: Char -> Bool-isIdentChar c = isAlphaNum c || c `elem` "_\'"---- | Join two completion functions together, merging and sorting their results.-(+++) :: CompletionFunc REPL -> CompletionFunc REPL -> CompletionFunc REPL-(as +++ bs) cursor = do-  (_,acs) <- as cursor-  (_,bcs) <- bs cursor-  return (fst cursor, sortBy (compare `on` replacement) (acs ++ bcs))----- | Complete an option from the options environment.------ XXX this can do better, as it has access to the expected form of the value-completeOption :: CompletionFunc REPL-completeOption cursor@(l,_) = return (fst cursor, map comp opts)-  where-  n        = reverse l-  opts     = lookupTrie n userOptions-  comp opt = Completion-    { replacement = drop (length n) (optName opt)-    , display     = optName opt-    , isFinished  = False-    }
− cryptol/REPL/Logo.hs
@@ -1,75 +0,0 @@--- |--- Module      :  REPL.Logo--- Copyright   :  (c) 2013-2016 Galois, Inc.--- License     :  BSD3--- Maintainer  :  cryptol@galois.com--- Stability   :  provisional--- Portability :  portable--module REPL.Logo where--import Cryptol.REPL.Monad-import Cryptol.Utils.Panic (panic)-import Paths_cryptol (version)--import Cryptol.Version (commitShortHash,commitDirty)-import Data.Version (showVersion)-import System.Console.ANSI-import Prelude ()-import Prelude.Compat---type Version = String--type Logo = [String]---- | The list of 'String's returned by the @mk@ function should be non-empty.-logo :: Bool -> (String -> [String]) -> Logo-logo useColor mk =-     [ sgr [SetColor Foreground Dull  White] ++ l | l <- ws ]-  ++ [ sgr [SetColor Foreground Vivid Blue ] ++ l | l <- vs ]-  ++ [ sgr [SetColor Foreground Dull  Blue ] ++ l | l <- ds ]-  ++ [ sgr [Reset] ]-  where-  sgr | useColor  = setSGRCode-      | otherwise = const []-  hashText | commitShortHash == "UNKNOWN" = ""-           | otherwise = " (" ++ commitShortHash ++-                                 (if commitDirty then ", modified)" else ")")-  versionText = "version " ++ showVersion version ++ hashText-  ver = sgr [SetColor Foreground Dull White]-        ++ replicate (lineLen - 20 - length versionText) ' '-        ++ versionText ++ "\n"-        ++ "https://cryptol.net  :? for help"-  ls        = mk ver-  slen      = length ls `div` 3-  (ws,rest) = splitAt slen ls-  (vs,ds)   = splitAt slen rest-  line      = case ls of-                line':_ -> line'-                [] -> panic "logo" ["empty lines"]-  lineLen   = length line--displayLogo :: Bool -> Bool -> REPL ()-displayLogo useColor useUnicode =-  unlessBatch (io (mapM_ putStrLn (logo useColor (if useUnicode then logo2 else logo1))))--logo1 :: String -> [String]-logo1 ver =-    [ "                        _        _"-    , "   ___ _ __ _   _ _ __ | |_ ___ | |"-    , "  / __| \'__| | | | \'_ \\| __/ _ \\| |"-    , " | (__| |  | |_| | |_) | || (_) | |"-    , "  \\___|_|   \\__, | .__/ \\__\\___/|_|"-    , "            |___/|_| " ++ ver-    ]--logo2 :: String -> [String]-logo2 ver =-    [ "┏━╸┏━┓╻ ╻┏━┓╺┳╸┏━┓╻  "-    , "┃  ┣┳┛┗┳┛┣━┛ ┃ ┃ ┃┃  "-    , "┗━╸╹┗╸ ╹ ╹   ╹ ┗━┛┗━╸"-    , ver-    ]--
lib/CryptolTC.z3 view
@@ -75,6 +75,15 @@   (cryBool true) ) ++(declare-fun cryPrimeUnknown (Int) Bool)++(define-fun cryPrime ((x InfNat)) MaybeBool+  (ite (isErr x) cryErrProp+    (cryBool (and (isFin x) (cryPrimeUnknown (value x)))))+)++ ; ------------------------------------------------------------------------------ ; Basic Cryptol assume/assert @@ -327,14 +336,14 @@  ; (declare-fun L () InfNat) ; (declare-fun w () InfNat)-; +; ; (assert (cryVar L)) ; (assert (cryVar w))-; +; ; (assert (cryAssume (cryFin w))) ; (assert (cryAssume (cryGeq w (cryNat 1)))) ; (assert (cryAssume (cryGeq (cryMul (cryNat 2) w) (cryWidth L))))-; +; ; (assert (cryProve ;   (cryGeq ;     (cryMul@@ -343,7 +352,7 @@ ;         (cryMul (cryNat 16) w)) ;       (cryMul (cryNat 16) w)) ;     (cryAdd (cryNat 1) (cryAdd L (cryMul (cryNat 2) w))))))-; +; ; (check-sat)  
src/Cryptol/Backend.hs view
@@ -1,7 +1,9 @@ {-# Language FlexibleContexts #-} {-# Language TypeFamilies #-}+{-# Language ScopedTypeVariables #-} module Cryptol.Backend   ( Backend(..)+  , wordLen   , sDelay   , invalidIndex   , cryUserError@@ -36,6 +38,7 @@ import qualified Control.Exception as X import Control.Monad.IO.Class import Data.Kind (Type)+import Data.Proxy(Proxy(..))  import Cryptol.Backend.FloatHelpers (BF) import Cryptol.Backend.Monad@@ -295,7 +298,7 @@   bitAsLit :: sym -> SBit sym -> Maybe Bool    -- | The number of bits in a word value.-  wordLen :: sym -> SWord sym -> Integer+  wordLen' :: proxy sym -> SWord sym -> Integer    -- | Determine if this symbolic word is a literal.   --   If so, return the bit width and value.@@ -813,3 +816,7 @@   SFloat sym ->   SFloat sym ->   SEval sym (SFloat sym)++wordLen :: forall sym. Backend sym => sym -> SWord sym -> Integer+wordLen _ x = wordLen' (Proxy :: Proxy sym) x+{-# INLINE wordLen #-}
src/Cryptol/Backend/Concrete.hs view
@@ -144,7 +144,9 @@   assertSideCondition _ True _ = return ()   assertSideCondition sym False err = raiseError sym err -  wordLen _ (BV w _) = w+  wordLen' _ (BV w _) = w+  {-# INLINE wordLen' #-}+     wordAsChar _ (BV _ x) = Just $! integerToChar x    wordBit _ (BV w x) idx = pure $! testBit x (fromInteger (w - 1 - idx))
src/Cryptol/Backend/SBV.hs view
@@ -201,7 +201,8 @@                 SBVResult pz z ->                   pure $ SBVResult (svAnd (svIte c px py) pz) z -  wordLen _ v = toInteger (intSizeOf v)+  wordLen' _ v = toInteger (intSizeOf v)+  {-# INLINE wordLen' #-}   wordAsChar _ v = integerToChar <$> svAsInteger v    iteBit _ b x y = pure $! svSymbolicMerge KBool True b x y
src/Cryptol/Backend/What4.hs view
@@ -273,7 +273,8 @@     | SW.bvWidth bv == 8 = toEnum . fromInteger <$> SW.bvAsUnsignedInteger bv     | otherwise = Nothing -  wordLen _ bv = SW.bvWidth bv+  wordLen' _ bv = SW.bvWidth bv+  {-# INLINE wordLen' #-}    bitLit sym b = W4.backendPred (w4 sym) b   bitAsLit _ v = W4.asConstantPred v
src/Cryptol/Backend/WordValue.hs view
@@ -25,6 +25,7 @@   ( -- * WordValue     WordValue   , wordVal+  , wordValWidth   , bitmapWordVal   , asWordList   , asWordVal@@ -59,6 +60,7 @@  import Control.Monad (unless) import Data.Bits+import Data.Proxy(Proxy(..)) import GHC.Generics (Generic)  import Cryptol.Backend@@ -96,6 +98,14 @@        !(SEval sym (SWord sym)) -- ^ Thunk for packing the word        !(SeqMap sym (SBit sym)) -- ^  deriving (Generic)++wordValWidth :: forall sym. Backend sym => WordValue sym -> Integer+wordValWidth val =+  case val of+    ThunkWordVal n _ -> n+    WordVal sv -> wordLen' (Proxy :: Proxy sym) sv+    BitmapVal n _ _ -> n+{-# INLINE wordValWidth #-}  wordVal :: SWord sym -> WordValue sym wordVal = WordVal
src/Cryptol/Eval.hs view
@@ -130,14 +130,14 @@     -- NB, even if the list cannot be packed, we must use `VWord`     -- when the element type is `Bit`.     | isTBit tyv -> {-# SCC "evalExpr->Elist/bit" #-}-        VWord len <$>+        VWord <$>           (tryFromBits sym vs >>= \case              Just w  -> pure (wordVal w)              Nothing -> do xs <- mapM (\x -> sDelay sym (fromVBit <$> x)) vs                            bitmapWordVal sym len $ finiteSeqMap sym xs)     | otherwise -> {-# SCC "evalExpr->EList" #-} do         xs <- mapM (sDelay sym) vs-        return $ VSeq len $ finiteSeqMap sym xs+        mkSeq sym (Nat len) tyv $ finiteSeqMap sym xs    where     tyv = evalValType (envTypes env) ty     vs  = map eval es@@ -594,7 +594,7 @@     case v of       VSeq _ vs       -> lookupSeqMap vs (toInteger n)       VStream vs      -> lookupSeqMap vs (toInteger n)-      VWord _ wv      -> VBit <$> indexWordValue sym wv (toInteger n)+      VWord wv        -> VBit <$> indexWordValue sym wv (toInteger n)       _               -> do vdoc <- ppValue sym defaultPPOpts val                             evalPanic "Cryptol.Eval.evalSel"                               [ "Unexpected value in list selection"@@ -608,7 +608,7 @@   sym ->   TValue ->   GenValue sym -> Selector -> SEval sym (GenValue sym) -> SEval sym (GenValue sym)-evalSetSel sym _tyv e sel v =+evalSetSel sym tyv e sel v =   case sel of     TupleSel n _  -> setTuple n     RecordSel n _ -> setRecord n@@ -641,9 +641,10 @@    setList n =     case e of-      VSeq i mp  -> pure $ VSeq i  $ updateSeqMap mp n v+      VSeq i mp | TVSeq _ elty <- tyv -> +        mkSeq sym (Nat i) elty $ updateSeqMap mp n v       VStream mp -> pure $ VStream $ updateSeqMap mp n v-      VWord i m  -> VWord i <$> updateWordValue sym m n asBit+      VWord m    -> VWord <$> updateWordValue sym m n asBit       _ -> bad "Sequence update on a non-sequence."    asBit = do res <- v@@ -781,7 +782,7 @@         let lenv' = lenv { leVars = fmap stutter (leVars lenv) }         let vs i = do let (q, r) = i `divMod` nLen                       lookupSeqMap vss q >>= \case-                        VWord _ w   -> VBit <$> indexWordValue sym w r+                        VWord w     -> VBit <$> indexWordValue sym w r                         VSeq _ xs'  -> lookupSeqMap xs' r                         VStream xs' -> lookupSeqMap xs' r                         _           -> evalPanic "evalMatch" ["Not a list value"]@@ -795,7 +796,7 @@         let env = EvalEnv (leStatic lenv) (leTypes lenv)         xs <- evalExpr sym env expr         let vs i = case xs of-                     VWord _ w   -> VBit <$> indexWordValue sym w i+                     VWord w     -> VBit <$> indexWordValue sym w i                      VSeq _ xs'  -> lookupSeqMap xs' i                      VStream xs' -> lookupSeqMap xs' i                      _           -> evalPanic "evalMatch" ["Not a list value"]
src/Cryptol/Eval/Concrete.hs view
@@ -134,7 +134,7 @@       (TVSeq _ b, VSeq n svs) ->         do ses <- traverse (go b) =<< lift (sequence (enumerateSeqMap n svs))            pure $ EList ses (tValTy b)-      (TVSeq n TVBit, VWord _ wval) ->+      (TVSeq n TVBit, VWord wval) ->         do BV _ v <- lift (asWordVal Concrete wval)            pure $ ETApp (ETApp (prim "number") (tNum v)) (tWord (tNum n)) @@ -206,7 +206,7 @@                       F2.pmult (fromInteger (u+1)) x y                     else                       F2.pmult (fromInteger (v+1)) y x-             in return . VWord (1+u+v) . wordVal . mkBv (1+u+v) $! z)+             in return . VWord . wordVal . mkBv (1+u+v) $! z)     , ("pmod",         PFinPoly \_u ->@@ -215,7 +215,7 @@         PWordFun \(BV _ m) ->         PPrim           do assertSideCondition sym (m /= 0) DivideByZero-             return . VWord v . wordVal . mkBv v $! F2.pmod (fromInteger w) x m)+             return . VWord . wordVal . mkBv v $! F2.pmod (fromInteger w) x m)    , ("pdiv",         PFinPoly \_u ->@@ -224,7 +224,7 @@         PWordFun \(BV _ m) ->         PPrim           do assertSideCondition sym (m /= 0) DivideByZero-             return . VWord w . wordVal . mkBv w $! F2.pdiv (fromInteger w) x m)+             return . VWord . wordVal . mkBv w $! F2.pdiv (fromInteger w) x m)   ]  @@ -297,9 +297,9 @@               foldM (\st blk -> seq st (SHA.processSHA256Block st <$> (toSHA256Block =<< blk)))                     SHA.initialSHA224State blks            let f :: Word32 -> Eval Value-               f = pure . VWord 32 . wordVal . BV 32 . toInteger+               f = pure . VWord . wordVal . BV 32 . toInteger                zs = finiteSeqMap Concrete (map f [w0,w1,w2,w3,w4,w5,w6])-           seq zs (pure (VSeq 7 zs)))+           seq zs (wordSeq Concrete 7 32 zs))    , ("processSHA2_256", {-# SCC "SuiteB::processSHA2_256" #-}      PFinPoly \n ->@@ -310,9 +310,9 @@              foldM (\st blk -> seq st (SHA.processSHA256Block st <$> (toSHA256Block =<< blk)))                    SHA.initialSHA256State blks            let f :: Word32 -> Eval Value-               f = pure . VWord 32 . wordVal . BV 32 . toInteger+               f = pure . VWord . wordVal . BV 32 . toInteger                zs = finiteSeqMap Concrete (map f [w0,w1,w2,w3,w4,w5,w6,w7])-           seq zs (pure (VSeq 8 zs)))+           seq zs (wordSeq Concrete 8 32 zs))    , ("processSHA2_384", {-# SCC "SuiteB::processSHA2_384" #-}      PFinPoly \n ->@@ -323,9 +323,9 @@              foldM (\st blk -> seq st (SHA.processSHA512Block st <$> (toSHA512Block =<< blk)))                    SHA.initialSHA384State blks            let f :: Word64 -> Eval Value-               f = pure . VWord 64 . wordVal . BV 64 . toInteger+               f = pure . VWord . wordVal . BV 64 . toInteger                zs = finiteSeqMap Concrete (map f [w0,w1,w2,w3,w4,w5])-           seq zs (pure (VSeq 6 zs)))+           seq zs (wordSeq Concrete 6 64 zs))    , ("processSHA2_512", {-# SCC "SuiteB::processSHA2_512" #-}      PFinPoly \n ->@@ -336,9 +336,9 @@              foldM (\st blk -> seq st (SHA.processSHA512Block st <$> (toSHA512Block =<< blk)))                    SHA.initialSHA512State blks            let f :: Word64 -> Eval Value-               f = pure . VWord 64 . wordVal . BV 64 . toInteger+               f = pure . VWord . wordVal . BV 64 . toInteger                zs = finiteSeqMap Concrete (map f [w0,w1,w2,w3,w4,w5,w6,w7])-           seq zs (pure (VSeq 8 zs)))+           seq zs (wordSeq Concrete 8 64 zs))    , ("AESKeyExpand", {-# SCC "SuiteB::AESKeyExpand" #-}       PFinPoly \k ->@@ -348,11 +348,11 @@             let toWord :: Integer -> Eval Word32                 toWord i = fromInteger. bvVal <$> (fromVWord Concrete "AESInfKeyExpand" =<< lookupSeqMap ss i)             let fromWord :: Word32 -> Eval Value-                fromWord = pure . VWord 32 . wordVal . BV 32 . toInteger+                fromWord = pure . VWord . wordVal . BV 32 . toInteger             kws <- mapM toWord [0 .. k-1]             let ws = AES.keyExpansionWords k kws             let len = 4*(k+7)-            pure (VSeq len (finiteSeqMap Concrete (map fromWord ws))))+            wordSeq Concrete len 32 (finiteSeqMap Concrete (map fromWord ws)))    , ("AESInvMixColumns", {-# SCC "SuiteB::AESInvMixColumns" #-}       PFun \st ->@@ -361,10 +361,10 @@             let toWord :: Integer -> Eval Word32                 toWord i = fromInteger. bvVal <$> (fromVWord Concrete "AESInvMixColumns" =<< lookupSeqMap ss i)             let fromWord :: Word32 -> Eval Value-                fromWord = pure . VWord 32 . wordVal . BV 32 . toInteger+                fromWord = pure . VWord . wordVal . BV 32 . toInteger             ws <- mapM toWord [0,1,2,3]             let ws' = AES.invMixColumns ws-            pure . VSeq 4 . finiteSeqMap Concrete . map fromWord $ ws')+            wordSeq Concrete 4 32 (finiteSeqMap Concrete . map fromWord $ ws'))    , ("AESEncRound", {-# SCC "SuiteB::AESEncRound" #-}       PFun \st ->@@ -373,10 +373,10 @@             let toWord :: Integer -> Eval Word32                 toWord i = fromInteger. bvVal <$> (fromVWord Concrete "AESEncRound" =<< lookupSeqMap ss i)             let fromWord :: Word32 -> Eval Value-                fromWord = pure . VWord 32 . wordVal . BV 32 . toInteger+                fromWord = pure . VWord . wordVal . BV 32 . toInteger             ws <- mapM toWord [0,1,2,3]             let ws' = AES.aesRound ws-            pure . VSeq 4 . finiteSeqMap Concrete . map fromWord $ ws')+            wordSeq Concrete 4 32 (finiteSeqMap Concrete . map fromWord $ ws'))    , ("AESEncFinalRound", {-# SCC "SuiteB::AESEncFinalRound" #-}      PFun \st ->@@ -385,10 +385,10 @@             let toWord :: Integer -> Eval Word32                 toWord i = fromInteger. bvVal <$> (fromVWord Concrete "AESEncFinalRound" =<< lookupSeqMap ss i)             let fromWord :: Word32 -> Eval Value-                fromWord = pure . VWord 32 . wordVal . BV 32 . toInteger+                fromWord = pure . VWord . wordVal . BV 32 . toInteger             ws <- mapM toWord [0,1,2,3]             let ws' = AES.aesFinalRound ws-            pure . VSeq 4 . finiteSeqMap Concrete . map fromWord $ ws')+            wordSeq Concrete 4 32 (finiteSeqMap Concrete . map fromWord $ ws'))    , ("AESDecRound", {-# SCC "SuiteB::AESDecRound" #-}       PFun \st ->@@ -397,10 +397,10 @@             let toWord :: Integer -> Eval Word32                 toWord i = fromInteger. bvVal <$> (fromVWord Concrete "AESDecRound" =<< lookupSeqMap ss i)             let fromWord :: Word32 -> Eval Value-                fromWord = pure . VWord 32 . wordVal . BV 32 . toInteger+                fromWord = pure . VWord . wordVal . BV 32 . toInteger             ws <- mapM toWord [0,1,2,3]             let ws' = AES.aesInvRound ws-            pure . VSeq 4 . finiteSeqMap Concrete . map fromWord $ ws')+            wordSeq Concrete 4 32 . finiteSeqMap Concrete . map fromWord $ ws')    , ("AESDecFinalRound", {-# SCC "SuiteB::AESDecFinalRound" #-}      PFun \st ->@@ -409,10 +409,10 @@             let toWord :: Integer -> Eval Word32                 toWord i = fromInteger. bvVal <$> (fromVWord Concrete "AESDecFinalRound" =<< lookupSeqMap ss i)             let fromWord :: Word32 -> Eval Value-                fromWord = pure . VWord 32 . wordVal . BV 32 . toInteger+                fromWord = pure . VWord . wordVal . BV 32 . toInteger             ws <- mapM toWord [0,1,2,3]             let ws' = AES.aesInvFinalRound ws-            pure . VSeq 4 . finiteSeqMap Concrete . map fromWord $ ws')+            wordSeq Concrete 4 32 . finiteSeqMap Concrete . map fromWord $ ws')   ]  
src/Cryptol/Eval/FFI.hs view
@@ -51,6 +51,7 @@ import           Cryptol.Eval.Type import           Cryptol.Eval.Value import           Cryptol.ModuleSystem.Name+import           Cryptol.TypeCheck.Solver.InfNat import           Cryptol.Utils.Ident import           Cryptol.Utils.RecordMap @@ -269,6 +270,14 @@     let totalSize = fromInteger (product sizes)         getResult marshal ptr = do           getRetAsOutArgs gr [SomeFFIArg ptr]+          let tyv = case bt of+                FFIBasicVal bv -> case bv of+                  FFIWord len _ -> TVSeq len TVBit+                  FFIFloat e p _ -> TVFloat e p+                FFIBasicRef br -> case br of+                  FFIInteger Nothing -> TVInteger+                  FFIInteger (Just z) -> TVIntMod $ evalFinType z+                  FFIRational -> TVRational            let build (n:ns) !i = do                 -- We need to be careful to actually run this here and not just@@ -276,8 +285,11 @@                 -- will read from the array after it is deallocated.                 vs <- for [0 .. fromInteger n - 1] \j ->                   build ns (i * fromInteger n + j)-                pure (VSeq n (finiteSeqMap Concrete (map pure vs)))-              build [] !i = peekElemOff ptr i >>= runEval stk . marshal+                runEval stk $ +                  mkSeq Concrete (Nat n) tyv (finiteSeqMap Concrete (map pure vs))+              build [] !i = do+                e <- peekElemOff ptr i+                runEval stk (marshal e)            build sizes 0 
src/Cryptol/Eval/Generic.hs view
@@ -222,10 +222,12 @@                   lw <- fromVWord sym "ringLeft" l                   rw <- fromVWord sym "ringRight" r                   stk <- sGetCallStack sym-                  VWord w . wordVal <$> (sWithCallStack sym stk (opw w lw rw))-      | otherwise -> VSeq w <$> (join (zipSeqMap sym (loop a) (Nat w) <$>-                                      (fromSeq "ringBinary left" l) <*>-                                      (fromSeq "ringBinary right" r)))+                  VWord . wordVal <$> (sWithCallStack sym stk (opw w lw rw))+      | otherwise -> do+        vals <- (join (zipSeqMap sym (loop a) (Nat w) <$>+                  (fromSeq "ringBinary left" l) <*>+                  (fromSeq "ringBinary right" r)))+        mkSeq sym (Nat w) a vals      TVStream a ->       -- streams@@ -305,8 +307,10 @@       | isTBit a -> do               wx <- fromVWord sym "ringUnary" v               stk <- sGetCallStack sym-              VWord w . wordVal <$> sWithCallStack sym stk (opw w wx)-      | otherwise -> VSeq w <$> (mapSeqMap sym (loop a) (Nat w) =<< fromSeq "ringUnary" v)+              VWord . wordVal <$> sWithCallStack sym stk (opw w wx)+      | otherwise -> do+              vals <- mapSeqMap sym (loop a) (Nat w) =<< fromSeq "ringUnary" v+              mkSeq sym (Nat w) a vals      TVStream a ->       VStream <$> (mapSeqMap sym (loop a) Inf =<< fromSeq "ringUnary" v)@@ -372,10 +376,10 @@           -- words and finite sequences           | isTBit a ->              do stk <- sGetCallStack sym-                VWord w . wordVal <$> sWithCallStack sym stk (opw w)+                VWord . wordVal <$> sWithCallStack sym stk (opw w)           | otherwise ->              do v <- sDelay sym (loop a)-                pure $ VSeq w $ indexSeqMap \_i -> v+                mkSeq sym (Nat w) a $ indexSeqMap \_i -> v          TVStream a ->              do v <- sDelay sym (loop a)@@ -417,7 +421,7 @@           do wl <- fromVWord sym "integralBinary left" l              wr <- fromVWord sym "integralBinary right" r              stk <- sGetCallStack sym-             VWord w . wordVal <$> sWithCallStack sym stk (opw w wl wr)+             VWord . wordVal <$> sWithCallStack sym stk (opw w wl wr)      _ -> evalPanic "integralBinary" [show ty ++ " not int class `Integral`"] @@ -690,25 +694,25 @@ {-# INLINE lg2V #-} lg2V :: Backend sym => sym -> Prim sym lg2V sym =-  PFinPoly \w ->+  PFinPoly \_w ->   PWordFun \x ->-  PPrim (VWord w . wordVal <$> wordLg2 sym x)+  PPrim (VWord . wordVal <$> wordLg2 sym x)  {-# SPECIALIZE sdivV :: Concrete -> Prim Concrete #-} sdivV :: Backend sym => sym -> Prim sym sdivV sym =-  PFinPoly \w ->+  PFinPoly \_w ->   PWordFun \x ->   PWordFun \y ->-  PPrim (VWord w . wordVal <$> wordSignedDiv sym x y)+  PPrim (VWord . wordVal <$> wordSignedDiv sym x y)  {-# SPECIALIZE smodV :: Concrete -> Prim Concrete #-} smodV :: Backend sym => sym -> Prim sym smodV sym  =-  PFinPoly \w ->+  PFinPoly \_w ->   PWordFun \x ->   PWordFun \y ->-  PPrim (VWord w . wordVal <$> wordSignedMod sym x y)+  PPrim (VWord . wordVal <$> wordSignedMod sym x y)  {-# SPECIALIZE toSignedIntegerV :: Concrete -> Prim Concrete #-} toSignedIntegerV :: Backend sym => sym -> Prim sym@@ -920,7 +924,7 @@       | isTBit ety -> word sym w 0       | otherwise  ->            do z <- sDelay sym (zeroV sym ety)-              pure $ VSeq w (indexSeqMap \_i -> z)+              mkSeq sym (Nat w) ety (indexSeqMap \_i -> z)    TVStream ety ->      do z <- sDelay sym (zeroV sym ety)@@ -969,7 +973,7 @@ joinSeq sym (Nat parts) each TVBit val   = do w <- delayWordValue sym (parts*each)               (joinWords sym parts each . fmap (fromWordVal "joinV") =<< val)-       pure (VWord (parts*each) w)+       pure (VWord w)  -- infinite sequence of words joinSeq sym Inf each TVBit val@@ -980,19 +984,15 @@          VBit <$> indexWordValue sym ys r  -- finite or infinite sequence of non-words-joinSeq _sym parts each _a val-  = return $ vSeq $ indexSeqMap $ \i -> do+joinSeq sym parts each a val+  = mkSeq sym len a $ indexSeqMap $ \i -> do       let (q,r) = divMod i each       xs <- val       ys <- fromSeq "join seq" =<< lookupSeqMap xs q       lookupSeqMap ys r   where   len = parts `nMul` (Nat each)-  vSeq = case len of-           Inf    -> VStream-           Nat n  -> VSeq n - {-# INLINE joinV #-}  -- | Join a sequence of sequences into a single sequence.@@ -1024,15 +1024,15 @@       case back of         Nat back' | isTBit a ->           do w <- delayWordValue sym front' (takeWordVal sym front' back' =<< (fromWordVal "takeV" <$> val))-             pure (VWord front' w)+             pure (VWord w)          Inf | isTBit a ->           do w <- delayWordValue sym front' (bitmapWordVal sym front' . fmap fromVBit =<< (fromSeq "takeV" =<< val))-             pure (VWord front' w)+             pure (VWord w)          _ ->           do xs <- delaySeqMap sym (fromSeq "takeV" =<< val)-             pure (VSeq front' xs)+             mkSeq sym (Nat front') a xs  {-# INLINE dropV #-} dropV ::@@ -1047,7 +1047,7 @@   case back of     Nat back' | isTBit a ->       do w <- delayWordValue sym back' (dropWordVal sym front back' =<< (fromWordVal "dropV" <$> val))-         pure (VWord back' w)+         pure (VWord w)      _ ->       do xs <- delaySeqMap sym (dropSeqMap front <$> (fromSeq "dropV" =<< val))@@ -1065,32 +1065,49 @@   SEval sym (GenValue sym) ->   SEval sym (GenValue sym) splitV sym parts each a val =-    case (parts, each) of-       (Nat p, e) | isTBit a -> do-          val' <- sDelay sym (fromWordVal "splitV" <$> val)-          return $ VSeq p $ indexSeqMap $ \i ->-            VWord e <$> (extractWordVal sym e ((p-i-1)*e) =<< val')-       (Inf, e) | isTBit a -> do-          val' <- sDelay sym (fromSeq "splitV" =<< val)-          return $ VStream $ indexSeqMap $ \i ->-            VWord e <$> bitmapWordVal sym e (indexSeqMap $ \j ->-              let idx = i*e + toInteger j-               in idx `seq` do-                      xs <- val'-                      fromVBit <$> lookupSeqMap xs idx)-       (Nat p, e) -> do-          val' <- sDelay sym (fromSeq "splitV" =<< val)-          return $ VSeq p $ indexSeqMap $ \i ->-            return $ VSeq e $ indexSeqMap $ \j -> do-              xs <- val'-              lookupSeqMap xs (e * i + j)-       (Inf  , e) -> do-          val' <- sDelay sym (fromSeq "splitV" =<< val)-          return $ VStream $ indexSeqMap $ \i ->-            return $ VSeq e $ indexSeqMap $ \j -> do+  case parts of+    Nat p+     | isTBit a ->+       do val' <- sDelay sym (fromWordVal "splitV" <$> val)+          mkSeq sym (Nat p) tyv $ indexSeqMap $ \i ->+            VWord <$> (extractWordVal sym each ((p-i-1)*each) =<< val')+     | otherwise ->+       do val' <- sDelay sym (fromSeq "splitV" =<< val)+          mkSeq sym (Nat p) tyv $ indexSeqMap $ \i ->+            mkSeq sym (Nat each) a $ indexSeqMap $ \j -> do               xs <- val'-              lookupSeqMap xs (e * i + j)+              lookupSeqMap xs (each * i + j) +    Inf+      -- The return type is [inf][each], (where each is non-zero) and `val` is+      -- of type [inf * each], or [inf]. Therefore, `val` is a stream.+      | isTBit a, each /= 0 ->+        do val' <- sDelay sym (fromSeq "splitV" =<< val)+           return $ VStream $ indexSeqMap $ \i ->+             VWord <$> bitmapWordVal sym each (indexSeqMap $ \j ->+               let idx = i*each + toInteger j+                in idx `seq` do+                       xs <- val'+                       fromVBit <$> lookupSeqMap xs idx)+      -- The return type is [inf][0], and `val` is of type [inf * 0], or [0].+      -- Therefore, `val` is a word. We need to special-case this, because the+      -- case directly above this one will panic if `val` is not a stream due to+      -- the use of `fromSeq` (#1749).+      --+      -- Because `val` is an empty sequence, there is no need to split it apart.+      -- Instead, we can just return a stream with infinite copies of `val`.+      | isTBit a, each == 0 ->+        return $ VStream $ indexSeqMap $ \_i -> val+      -- If `a` is not `Bit`, then `val` must be a sequence or a stream (and not+      -- a word).+      | otherwise ->+        do val' <- sDelay sym (fromSeq "splitV" =<< val)+           return $ VStream $ indexSeqMap $ \i ->+             mkSeq sym (Nat each) a $ indexSeqMap $ \j -> do+               xs <- val'+               lookupSeqMap xs (each * i + j)+  where+    tyv = TVSeq each TVBit  {-# INLINE reverseV #-} @@ -1104,11 +1121,11 @@  reverseV sym n TVBit val =   do w <- delayWordValue sym n (reverseWordVal sym . fromWordVal "reverseV" =<< val)-     pure (VWord n w)+     pure (VWord w) -reverseV sym n _a val =+reverseV sym n a val =   do xs <- delaySeqMap sym (reverseSeqMap n <$> (fromSeq "reverseV" =<< val))-     pure (VSeq n xs)+     mkSeq sym (Nat n) a xs   {-# INLINE transposeV #-}@@ -1123,42 +1140,38 @@   SEval sym (GenValue sym) transposeV sym a b c xs   | isTBit c, Nat na <- a = -- Fin a => [a][b]Bit -> [b][a]Bit-      return $ bseq $ indexSeqMap $ \bi ->-        VWord na <$> bitmapWordVal sym na (indexSeqMap $ \ai ->+      bseq $ indexSeqMap $ \bi ->+        VWord <$> bitmapWordVal sym na (indexSeqMap $ \ai ->          do xs' <- fromSeq "transposeV" xs             ys <- lookupSeqMap xs' ai             case ys of               VStream ys' -> fromVBit <$> lookupSeqMap ys' bi-              VWord _ wv  -> indexWordValue sym wv bi+              VWord wv    -> indexWordValue sym wv bi               _ -> evalPanic "transpose" ["expected sequence of bits"])    | isTBit c, Inf <- a = -- [inf][b]Bit -> [b][inf]Bit-      return $ bseq $ indexSeqMap $ \bi ->+      bseq $ indexSeqMap $ \bi ->         return $ VStream $ indexSeqMap $ \ai ->          do xs' <- fromSeq "transposeV" xs             ys  <- lookupSeqMap xs' ai             case ys of               VStream ys' -> lookupSeqMap ys' bi-              VWord _ wv  -> VBit <$> indexWordValue sym wv bi+              VWord wv    -> VBit <$> indexWordValue sym wv bi               _ -> evalPanic "transpose" ["expected sequence of bits"]    | otherwise = -- [a][b]c -> [b][a]c-      return $ bseq $ indexSeqMap $ \bi ->-        return $ aseq $ indexSeqMap $ \ai -> do+      bseq $ indexSeqMap $ \bi ->+        aseq $ indexSeqMap $ \ai -> do           xs' <- fromSeq "transposeV 1" xs           ys  <- fromSeq "transposeV 2" =<< lookupSeqMap xs' ai           z   <- lookupSeqMap ys bi           return z   where-  bseq =-        case b of-          Nat nb -> VSeq nb-          Inf    -> VStream-  aseq =-        case a of-          Nat na -> VSeq na-          Inf    -> VStream+  bseq = case b of+    Nat n -> mkSeq sym b (TVSeq n c)+    Inf -> mkSeq sym b (TVStream c)+  aseq = mkSeq sym a c   {-# INLINE ccatV #-}@@ -1179,10 +1192,10 @@      mr <- isReady sym r      case (ml, mr) of        (Just l', Just r') ->-         VWord (front+back) <$>+         VWord <$>            joinWordVal sym (fromWordVal "ccatV left" l') (fromWordVal "ccatV right" r')        _ ->-         VWord (front+back) <$> delayWordValue sym (front+back)+         VWord <$> delayWordValue sym (front+back)                 (do l' <- fromWordVal "ccatV left"  <$> l                     r' <- fromWordVal "ccatV right" <$> r                     joinWordVal sym l' r')@@ -1250,17 +1263,19 @@     TVSeq w aty          -- words          | isTBit aty-              -> VWord w <$> delayWordValue sym w+              -> VWord <$> delayWordValue sym w                                (wordValLogicOp sym opb opw                                     (fromWordVal "logicBinary l" l)                                     (fromWordVal "logicBinary r" r))           -- finite sequences-         | otherwise -> VSeq w <$>-                           (join (zipSeqMap sym (loop aty) (Nat w) <$>-                                    (fromSeq "logicBinary left" l)-                                    <*> (fromSeq "logicBinary right" r)))+         | otherwise -> do+            vals <- join (zipSeqMap sym (loop aty) (Nat w) <$>+                              (fromSeq "logicBinary left" l)+                              <*> (fromSeq "logicBinary right" r))+            mkSeq sym (Nat w) aty vals +     TVStream aty ->         VStream <$> (join (zipSeqMap sym (loop aty) Inf <$>                           (fromSeq "logicBinary left" l) <*>@@ -1314,11 +1329,11 @@     TVSeq w ety          -- words          | isTBit ety-              -> VWord w <$> delayWordValue sym w (wordValUnaryOp sym opb opw (fromWordVal "logicUnary" val))+              -> VWord <$> delayWordValue sym w (wordValUnaryOp sym opb opw (fromWordVal "logicUnary" val))           -- finite sequences          | otherwise-              -> VSeq w <$> (mapSeqMap sym (loop ety) (Nat w) =<< fromSeq "logicUnary" val)+              -> mkSeq sym (Nat w) ety =<< (mapSeqMap sym (loop ety) (Nat w) =<< fromSeq "logicUnary" val)           -- streams     TVStream ety ->@@ -1388,7 +1403,7 @@   PFun     \idx ->   PPrim    do vs <- xs >>= \case-               VWord _ w  -> return $ indexSeqMap (\i -> VBit <$> indexWordValue sym w i)+               VWord w    -> return $ indexSeqMap (\i -> VBit <$> indexWordValue sym w i)                VSeq _ vs  -> return vs                VStream vs -> return vs                _ -> evalPanic "Expected sequence value" ["indexPrim"]@@ -1421,9 +1436,9 @@    do idx' <- asIndex sym "update" ix <$> idx       assertIndexInBounds sym len idx'       case (len, eltTy) of-        (Nat n, TVBit) -> VWord n <$> delayWordValue sym n+        (Nat n, TVBit) -> VWord <$> delayWordValue sym n                              (do w <- fromWordVal "updatePrim" <$> xs; updateWord len eltTy w idx' val)-        (Nat n, _    ) -> VSeq n <$> delaySeqMap sym+        (Nat n, _    ) -> mkSeq sym (Nat n) eltTy =<< delaySeqMap sym                              (do vs <- fromSeq "updatePrim" =<< xs; updateSeq len eltTy vs idx' val)         (Inf  , _    ) -> VStream <$> delaySeqMap sym                              (do vs <- fromSeq "updatePrim" =<< xs; updateSeq len eltTy vs idx' val)@@ -1644,8 +1659,8 @@    SEval sym (GenValue sym) intShifter sym nm wop reindex m a xs idx =   case xs of-    VWord w x  -> VWord w <$> shiftWordByInteger sym wop (reindex m) x idx-    VSeq w vs  -> VSeq w  <$> shiftSeqByInteger sym (mergeValue sym) (reindex m) (zeroV sym a) m vs idx+    VWord x    -> VWord   <$> shiftWordByInteger sym wop (reindex m) x idx+    VSeq w vs  -> mkSeq sym (Nat w) a =<< shiftSeqByInteger sym (mergeValue sym) (reindex m) (zeroV sym a) m vs idx     VStream vs -> VStream <$> shiftSeqByInteger sym (mergeValue sym) (reindex m) (zeroV sym a) m vs idx     _ -> evalPanic "expected sequence value in shift operation" [nm] @@ -1663,8 +1678,8 @@    SEval sym (GenValue sym) wordShifter sym nm wop reindex m a xs idx =   case xs of-    VWord w x  -> VWord w <$> shiftWordByWord sym wop (reindex m) x idx-    VSeq w vs  -> VSeq w  <$> shiftSeqByWord sym (mergeValue sym) (reindex m) (zeroV sym a) (Nat w) vs idx+    VWord x    -> VWord   <$> shiftWordByWord sym wop (reindex m) x idx+    VSeq w vs  -> mkSeq sym (Nat w) a =<< shiftSeqByWord sym (mergeValue sym) (reindex m) (zeroV sym a) (Nat w) vs idx     VStream vs -> VStream <$> shiftSeqByWord sym (mergeValue sym) (reindex m) (zeroV sym a) Inf     vs idx     _ -> evalPanic "expected sequence value in shift operation" [nm] @@ -1697,7 +1712,7 @@     case asIndex sym ">>$" ix y of        Left i ->          do pneg <- intLessThan sym i =<< integerLit sym 0-            VWord n <$> mergeWord' sym+            VWord <$> mergeWord' sym               pneg               (do i' <- shiftShrink sym (Nat n) ix =<< intNegate sym i                   amt <- wordFromInt sym n i'@@ -1708,7 +1723,7 @@         Right wv ->          do amt <- asWordVal sym wv-            VWord n . wordVal <$> wordSignedShiftRight sym x amt+            VWord . wordVal <$> wordSignedShiftRight sym x amt  -- Miscellaneous --------------------------------------------------------------- @@ -1734,7 +1749,7 @@ --   and return the associated character, if it is concrete. --   Otherwise, return a '?' character valueToChar :: Backend sym => sym -> GenValue sym -> SEval sym Char-valueToChar sym (VWord 8 wval) =+valueToChar sym (VWord wval) | wordValWidth wval == 8 =   do w <- asWordVal sym wval      pure $! fromMaybe '?' (wordAsChar sym w) valueToChar _ _ = evalPanic "valueToChar" ["Not an 8-bit bitvector"]@@ -1756,8 +1771,8 @@   PStrict  \v ->   PPrim     case v of-      VSeq n m    -> go0 f z (enumerateSeqMap n m)-      VWord _n wv -> go0 f z . map (pure . VBit) =<< (enumerateWordValue sym wv)+      VSeq n m  -> go0 f z (enumerateSeqMap n m)+      VWord  wv -> go0 f z . map (pure . VBit) =<< (enumerateWordValue sym wv)       _ -> panic "Cryptol.Eval.Generic.foldlV" ["Expected finite sequence"]   where   go0 _f a [] = a@@ -1781,7 +1796,7 @@   PPrim     case v of       VSeq n m    -> go0 f z (enumerateSeqMap n m)-      VWord _n wv -> go0 f z . map (pure . VBit) =<< (enumerateWordValue sym wv)+      VWord wv    -> go0 f z . map (pure . VBit) =<< (enumerateWordValue sym wv)       _ -> panic "Cryptol.Eval.Generic.foldlV" ["Expected finite sequence"]   where   go0 _f a [] = a@@ -1811,7 +1826,7 @@   PPrim     do sm <- case v of             VSeq _ m   -> scan n f z m-            VWord _ wv -> scan n f z (VBit <$> asBitsMap sym wv)+            VWord wv   -> scan n f z (VBit <$> asBitsMap sym wv)             VStream m  -> scan n f z m             _ -> panic "Cryptol.Eval.Generic.scanlV" ["Expected sequence"]        mkSeq sym (nAdd (Nat 1) n) a sm@@ -1869,7 +1884,7 @@        xs' <- xs        m <-          case xs' of-           VWord _n w ->+           VWord w ->              let m = asBitsMap sym w in              sparkParMap sym (\x -> f' (VBit <$> x)) n m            VSeq _n m ->@@ -1938,8 +1953,8 @@     , "fpPosInf"    ~> fpConst (fpPosInf sym)     , "fpFromBits"  ~> PFinPoly \e -> PFinPoly \p -> PWordFun \w ->                        PPrim (VFloat <$> fpFromBits sym e p w)-    , "fpToBits"    ~> PFinPoly \e -> PFinPoly \p -> PFloatFun \x -> PPrim-                            (VWord (e+p) . wordVal <$> fpToBits sym x)+    , "fpToBits"    ~> PFinPoly \_e -> PFinPoly \_p -> PFloatFun \x -> PPrim+                            (VWord . wordVal <$> fpToBits sym x)     , "=.="         ~> PFinPoly \_ -> PFinPoly \_ -> PFloatFun \x -> PFloatFun \y ->                        PPrim (VBit <$> fpLogicalEq sym x y) 
src/Cryptol/Eval/Reference.lhs view
@@ -247,7 +247,28 @@ >   where >     g (Nat n) = f n >     g Inf     = evalPanic "vFinPoly" ["Expected finite numeric type"]-+>+> -- | Reduce a value to normal form.+> forceValue :: Value -> E ()+> forceValue v =+>   case v of+>     -- Values where the field is already is normal form+>     VBit{}       -> pure ()+>     VInteger{}   -> pure ()+>     VRational{}  -> pure ()+>     VFloat{}     -> pure ()+>     -- Values with fields containing other values to reduce to normal form+>     VList _ xs   -> forceValues xs+>     VTuple xs    -> forceValues xs+>     VRecord fs   -> forceValues $ map snd fs+>     VEnum _ xs   -> forceValues xs+>     -- Lambdas and other abstractions are already in normal form+>     VFun{}       -> pure ()+>     VPoly{}      -> pure ()+>     VNumPoly{}   -> pure ()+>   where+>     forceValues :: [E Value] -> E ()+>     forceValues = mapM_ (\x -> forceValue =<< x)  Environments ------------@@ -758,6 +779,10 @@ >   , "lg2"        ~> vFinPoly $ \n -> pure $ >                     VFun $ \v -> >                       vWord n <$> appOp1 lg2Wrap (fromVWord =<< v)+>   , "toSignedInteger"+>                  ~> vFinPoly $ \_n -> pure $+>                     VFun $ \x ->+>                     VInteger <$> (fromSignedVWord =<< x) >   -- Rational >   , "ratio"      ~> VFun $ \l -> pure $ >                     VFun $ \r ->@@ -943,6 +968,13 @@ >                           -- Note: the reference implementation simply >                           -- executes parmap sequentially >                           pure $ VList n (map f' xs')+>+>   , "deepseq"    ~> VPoly $ \_a -> pure $+>                     VPoly $ \_b -> pure $+>                     VFun $ \x -> pure $+>                     VFun $ \y ->+>                       do forceValue =<< x+>                          y > >   , "error"      ~> VPoly $ \_a -> pure $ >                     VNumPoly $ \_ -> pure $
src/Cryptol/Eval/SBV.hs view
@@ -81,7 +81,7 @@        asWordList sym wvs >>= \case          Just ws ->            do z <- wordLit sym wlen 0-              return $ VWord wlen $ wordVal $ SBV.svSelect ws z idx+              return $ VWord $ wordVal $ SBV.svSelect ws z idx          Nothing -> folded'    | otherwise = folded'
src/Cryptol/Eval/Value.hs view
@@ -17,6 +17,7 @@ {-# LANGUAGE LambdaCase #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE PatternGuards #-}+{-# LANGUAGE PatternSynonyms #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE StandaloneDeriving #-} {-# LANGUAGE TupleSections #-}@@ -25,7 +26,15 @@  module Cryptol.Eval.Value   ( -- * GenericValue-    GenValue(..), ConValue+    GenValue +      (VRecord, VTuple+      , VEnum, VBit+      , VInteger, VRational+      , VFloat, VWord+      , VStream, VFun+      , VPoly, VNumPoly+      , VSeq) -- pattern synonym+  , ConValue   , forceValue   , Backend(..)   , asciiMode@@ -38,7 +47,12 @@   , tlam   , nlam   , ilam+  , FinSeq+  , toFinSeq+  , unsafeToFinSeq+  , finSeq   , mkSeq+  , wordSeq     -- ** Value eliminators   , fromVBit   , fromVInteger@@ -122,15 +136,29 @@   | VInteger !(SInteger sym)                   -- ^ @ Integer @ or @ Z n @   | VRational !(SRational sym)                 -- ^ @ Rational @   | VFloat !(SFloat sym)-  | VSeq !Integer !(SeqMap sym (GenValue sym)) -- ^ @ [n]a   @-                                               --   Invariant: VSeq is never a sequence of bits-  | VWord !Integer !(WordValue sym)            -- ^ @ [n]Bit @+  | VSeqCtor !Integer !(SeqMap sym (GenValue sym)) -- ^ @ [n]a   @+                                                   --   Invariant: VSeqCtor is never a sequence of bits+                                                   --   This constructor is intentionally not exported+                                                   --   to preserve the invariant. Use smart constructors+                                                   --   such as 'mkSeq' or 'finSeq' instead.+  | VWord !(WordValue sym)                     -- ^ @ [n]Bit @   | VStream !(SeqMap sym (GenValue sym))       -- ^ @ [inf]a @   | VFun  CallStack (SEval sym (GenValue sym) -> SEval sym (GenValue sym)) -- ^ functions   | VPoly CallStack (TValue -> SEval sym (GenValue sym))   -- ^ polymorphic values (kind *)   | VNumPoly CallStack (Nat' -> SEval sym (GenValue sym))  -- ^ polymorphic values (kind #)  deriving Generic +-- | A view-only pattern for deconstructing finite sequences. Use+--   'mkSeq' or 'finSeq' for construction.+pattern VSeq :: Integer -> SeqMap sym (GenValue sym) -> GenValue sym+pattern VSeq len vals <- VSeqCtor len vals++-- This is all GenValue constructors except for VSeqCtor, which+-- is instead swapped for the view-only VSeq pattern+{-# COMPLETE VRecord, VTuple, VEnum, VBit, VInteger,+             VRational, VFloat, VWord, VStream,+             VFun, VPoly, VNumPoly, VSeq #-}+ type ConValue sym = ConInfo (SEval sym (GenValue sym))  -- | Force the evaluation of a value@@ -144,7 +172,7 @@   VInteger i  -> seq i (return ())   VRational q -> seq q (return ())   VFloat f    -> seq f (return ())-  VWord _ wv  -> forceWordValue wv+  VWord wv    -> forceWordValue wv   VStream _   -> return ()   VFun{}      -> return ()   VPoly{}     -> return ()@@ -153,7 +181,7 @@ forceConValue :: Backend sym => ConValue sym -> SEval sym () forceConValue (ConInfo i vs) = i `seq` mapM_ (forceValue =<<) vs -instance Show (GenValue sym) where+instance Backend sym => Show (GenValue sym) where   show v = case v of     VRecord fs -> "record:" ++ show (displayOrder fs)     VTuple xs  -> "tuple:" ++ show (length xs)@@ -163,7 +191,7 @@     VRational _ -> "rational"     VFloat _   -> "float"     VSeq n _   -> "seq:" ++ show n-    VWord n _  -> "word:"  ++ show n+    VWord wv    -> "word:"  ++ show (wordValWidth wv)     VStream _  -> "stream"     VFun{}     -> "fun"     VPoly{}    -> "poly"@@ -202,7 +230,7 @@     VRational q        -> ppSRational x q     VFloat i           -> ppSFloat x opts i     VSeq sz vals       -> ppWordSeq sz vals-    VWord _ wv         -> ppWordVal wv+    VWord wv           -> ppWordVal wv     VStream vals       -> do vals' <- traverse (>>=loop 0) $ enumerateSeqMap (useInfLength opts) vals                              return $ ppList ( vals' ++ [text "..."] )     VFun{}             -> return $ text "<function>"@@ -342,7 +370,7 @@ word :: Backend sym => sym -> Integer -> Integer -> SEval sym (GenValue sym) word sym n i   | n >= Arch.maxBigIntWidth = wordTooWide n-  | otherwise                = VWord n . wordVal <$> wordLit sym n i+  | otherwise                = VWord . wordVal <$> wordLit sym n i   -- | Construct a function value@@ -369,38 +397,77 @@                      Nat i -> f i                      Inf   -> panic "ilam" [ "Unexpected `inf`" ]) +-- | A finite sequence of non-VBit values. Used in 'finSeq' to+--   safely construct a 'VSeq'.+newtype FinSeq sym = FinSeq [SEval sym (GenValue sym)]++-- | Safely wrap a 'GenValue' list as a 'FinSeq'. Returns 'Nothing'+--   if any values are a 'VBit'.+toFinSeq :: Backend sym => [GenValue sym] -> Maybe (FinSeq sym)+toFinSeq xs = FinSeq <$> mapM go xs+  where+    go x = case x of+      VBit _ -> Nothing+      _ -> Just (pure x)++-- | Wrap a 'GenValue' thunk list as a 'FinSeq'. Any 'VBit' elements+--   will raise an runtime error when evaluated.+unsafeToFinSeq :: Backend sym => [SEval sym (GenValue sym)] -> FinSeq sym+unsafeToFinSeq xs = FinSeq (map go xs)+  where+    go f = f >>= \x -> case x of+      VBit _ -> evalPanic "unsafeToFinSeq" [ "Unexpected `VBit`", show x ]+      _ -> pure x++-- | Construct a finite sequence from a 'FinSeq'. In contrast to+--   'mkSeq' this is a pure function. See 'toFinSeq' or 'unsafeToFinSeq'+--   for creating a 'FinSeq' from a list of values.+finSeq :: Backend sym => sym -> Integer -> FinSeq sym -> GenValue sym+finSeq sym len (FinSeq vs) = VSeqCtor len (finiteSeqMap sym vs)+ -- | Construct either a finite sequence, or a stream.  In the finite case, -- record whether or not the elements were bits, to aid pretty-printing. mkSeq :: Backend sym => sym -> Nat' -> TValue -> SeqMap sym (GenValue sym) -> SEval sym (GenValue sym) mkSeq sym len elty vals = case len of   Nat n-    | isTBit elty -> VWord n <$> bitmapWordVal sym n (fromVBit <$> vals)-    | otherwise   -> pure $ VSeq n vals+    | isTBit elty -> VWord <$> bitmapWordVal sym n (fromVBit <$> vals)+    | otherwise   -> pure $ VSeqCtor n vals   Inf             -> pure $ VStream vals +-- | Construct a finite sequence of word values.+wordSeq :: +  Backend sym => +  sym ->+  -- | The length of the sequence.+  Integer ->+  -- | The word size of the element type.+  Integer ->+  SeqMap sym (GenValue sym) -> +  SEval sym (GenValue sym)+wordSeq sym n w vals = mkSeq sym (Nat n) (TVSeq w TVBit) vals  -- Value Destructors -----------------------------------------------------------  -- | Extract a bit value.-fromVBit :: GenValue sym -> SBit sym+fromVBit :: Backend sym => GenValue sym -> SBit sym fromVBit val = case val of   VBit b -> b   _      -> evalPanic "fromVBit" ["not a Bit", show val]  -- | Extract an integer value.-fromVInteger :: GenValue sym -> SInteger sym+fromVInteger :: Backend sym => GenValue sym -> SInteger sym fromVInteger val = case val of   VInteger i -> i   _      -> evalPanic "fromVInteger" ["not an Integer", show val]  -- | Extract a rational value.-fromVRational :: GenValue sym -> SRational sym+fromVRational :: Backend sym => GenValue sym -> SRational sym fromVRational val = case val of   VRational q -> q   _      -> evalPanic "fromVRational" ["not a Rational", show val]  -- | Extract a finite sequence value.-fromVSeq :: GenValue sym -> SeqMap sym (GenValue sym)+fromVSeq :: Backend sym => GenValue sym -> SeqMap sym (GenValue sym) fromVSeq val = case val of   VSeq _ vs -> vs   _         -> evalPanic "fromVSeq" ["not a sequence", show val]@@ -413,24 +480,24 @@   _           -> evalPanic "fromSeq" ["not a sequence", msg, show val]  fromWordVal :: Backend sym => String -> GenValue sym -> WordValue sym-fromWordVal _msg (VWord _ wval) = wval+fromWordVal _msg (VWord wval) = wval fromWordVal msg val = evalPanic "fromWordVal" ["not a word value", msg, show val]  asIndex :: Backend sym =>   sym -> String -> TValue -> GenValue sym -> Either (SInteger sym) (WordValue sym) asIndex _sym _msg TVInteger (VInteger i) = Left i-asIndex _sym _msg _ (VWord _ wval) = Right wval+asIndex _sym _msg _ (VWord wval) = Right wval asIndex _sym  msg _ val = evalPanic "asIndex" ["not an index value", msg, show val]  -- | Extract a packed word. fromVWord :: Backend sym => sym -> String -> GenValue sym -> SEval sym (SWord sym)-fromVWord sym _msg (VWord _ wval) = asWordVal sym wval+fromVWord sym _msg (VWord wval) = asWordVal sym wval fromVWord _ msg val = evalPanic "fromVWord" ["not a word", msg, show val]  vWordLen :: Backend sym => GenValue sym -> Maybe Integer vWordLen val = case val of-  VWord n _wv              -> Just n-  _                        -> Nothing+  VWord wv              -> Just (wordValWidth wv)+  _                     -> Nothing  -- | If the given list of values are all fully-evaluated thunks --   containing bits, return a packed word built from the same bits.@@ -466,31 +533,31 @@   _  -> evalPanic "fromVNumPoly" ["not a polymorphic value", show val]  -- | Extract a tuple from a value.-fromVTuple :: GenValue sym -> [SEval sym (GenValue sym)]+fromVTuple :: Backend sym => GenValue sym -> [SEval sym (GenValue sym)] fromVTuple val = case val of   VTuple vs -> vs   _         -> evalPanic "fromVTuple" ["not a tuple", show val]  -- | Extract a record from a value.-fromVRecord :: GenValue sym -> RecordMap Ident (SEval sym (GenValue sym))+fromVRecord :: Backend sym => GenValue sym -> RecordMap Ident (SEval sym (GenValue sym)) fromVRecord val = case val of   VRecord fs -> fs   _          -> evalPanic "fromVRecord" ["not a record", show val] -fromVEnum :: GenValue sym -> (SInteger sym, IntMap (ConValue sym))+fromVEnum :: Backend sym => GenValue sym -> (SInteger sym, IntMap (ConValue sym)) fromVEnum val =   case val of     VEnum c xs -> (c,xs)     _          -> evalPanic "fromVEnum" ["not an enum", show val] -fromVFloat :: GenValue sym -> SFloat sym+fromVFloat :: Backend sym => GenValue sym -> SFloat sym fromVFloat val =   case val of     VFloat x -> x     _        -> evalPanic "fromVFloat" ["not a Float", show val]  -- | Lookup a field in a record.-lookupRecord :: Ident -> GenValue sym -> SEval sym (GenValue sym)+lookupRecord :: Backend sym => Ident -> GenValue sym -> SEval sym (GenValue sym) lookupRecord f val =   case lookupField f (fromVRecord val) of     Just x  -> x@@ -581,8 +648,8 @@     (VInteger i1 , VInteger i2 ) -> VInteger <$> iteInteger sym c i1 i2     (VRational q1, VRational q2) -> VRational <$> iteRational sym c q1 q2     (VFloat f1   , VFloat f2)    -> VFloat <$> iteFloat sym c f1 f2-    (VWord n1 w1 , VWord n2 w2 ) | n1 == n2 -> VWord n1 <$> mergeWord sym c w1 w2-    (VSeq n1 vs1 , VSeq n2 vs2 ) | n1 == n2 -> VSeq n1 <$> memoMap sym (Nat n1) (mergeSeqMapVal sym c vs1 vs2)+    (VWord w1    , VWord w2 ) | wordValWidth w1 == wordValWidth w2 -> VWord <$> mergeWord sym c w1 w2+    (VSeqCtor n1 vs1 , VSeqCtor n2 vs2 ) | n1 == n2 -> VSeqCtor n1 <$> memoMap sym (Nat n1) (mergeSeqMapVal sym c vs1 vs2)     (VStream vs1 , VStream vs2 ) -> VStream <$> memoMap sym Inf (mergeSeqMapVal sym c vs1 vs2)     (f1@VFun{}   , f2@VFun{}   ) -> lam sym $ \x -> mergeValue' sym c (fromVFun sym f1 x) (fromVFun sym f2 x)     (f1@VPoly{}  , f2@VPoly{}  ) -> tlam sym $ \x -> mergeValue' sym c (fromVPoly sym f1 x) (fromVPoly sym f2 x)
src/Cryptol/Eval/What4.hs view
@@ -222,7 +222,7 @@              fn <- liftIO $ getUninterpFn sym ("AESKeyExpand" <> Text.pack (show k)) args (W4.BaseStructRepr ret)              z  <- liftIO $ W4.applySymFn (w4 sym) fn ws              -- compute a sequence that projects the relevant fields from the outout tuple-             pure $ VSeq (4*(k+7)) $ indexSeqMap $ \i ->+             wordSeq sym (4*(k+7)) 32 $ indexSeqMap $ \i ->                case intIndex (fromInteger i) (size ret) of                  Just (Some idx) | Just W4.Refl <- W4.testEquality (ret!idx) (W4.BaseBVRepr (W4.knownNat @32)) ->                    fromWord32 =<< liftIO (W4.structField (w4 sym) z idx)@@ -237,7 +237,7 @@           addUninterpWarning sym "SHA-224"           initSt <- liftIO (mkSHA256InitialState sym SHA.initialSHA224State)           finalSt <- foldM (\st blk -> processSHA256Block sym st =<< blk) initSt blks-          pure $ VSeq 7 $ indexSeqMap \i ->+          wordSeq sym 7 32 $ indexSeqMap \i ->             case intIndex (fromInteger i) (knownSize :: Size SHA256State) of               Just (Some idx) ->                 do z <- liftIO $ W4.structField (w4 sym) finalSt idx@@ -255,7 +255,7 @@           addUninterpWarning sym "SHA-256"           initSt <- liftIO (mkSHA256InitialState sym SHA.initialSHA256State)           finalSt <- foldM (\st blk -> processSHA256Block sym st =<< blk) initSt blks-          pure $ VSeq 8 $ indexSeqMap \i ->+          wordSeq sym 8 32 $ indexSeqMap \i ->             case intIndex (fromInteger i) (knownSize :: Size SHA256State) of               Just (Some idx) ->                 do z <- liftIO $ W4.structField (w4 sym) finalSt idx@@ -273,7 +273,7 @@           addUninterpWarning sym "SHA-384"           initSt <- liftIO (mkSHA512InitialState sym SHA.initialSHA384State)           finalSt <- foldM (\st blk -> processSHA512Block sym st =<< blk) initSt blks-          pure $ VSeq 6 $ indexSeqMap \i ->+          wordSeq sym 6 64 $ indexSeqMap \i ->             case intIndex (fromInteger i) (knownSize :: Size SHA512State) of               Just (Some idx) ->                 do z <- liftIO $ W4.structField (w4 sym) finalSt idx@@ -291,7 +291,7 @@           addUninterpWarning sym "SHA-512"           initSt <- liftIO (mkSHA512InitialState sym SHA.initialSHA512State)           finalSt <- foldM (\st blk -> processSHA512Block sym st =<< blk) initSt blks-          pure $ VSeq 8 $ indexSeqMap \i ->+          wordSeq sym 8 64 $ indexSeqMap \i ->             case intIndex (fromInteger i) (knownSize :: Size SHA512State) of               Just (Some idx) ->                 do z <- liftIO $ W4.structField (w4 sym) finalSt idx@@ -454,7 +454,7 @@        _ -> panic nm ["Unexpected word size", show (SW.bvWidth x)]  fromWord32 :: W4.IsSymExprBuilder sym => W4.SymBV sym 32 -> SEval (What4 sym) (Value sym)-fromWord32 = pure . VWord 32 . wordVal . SW.DBV+fromWord32 = pure . VWord . wordVal . SW.DBV  toWord64 :: W4.IsSymExprBuilder sym =>   What4 sym -> String -> SeqMap (What4 sym) (GenValue (What4 sym)) -> Integer -> SEval (What4 sym) (W4.SymBV sym 64)@@ -465,7 +465,7 @@        _ -> panic nm ["Unexpected word size", show (SW.bvWidth x)]  fromWord64 :: W4.IsSymExprBuilder sym => W4.SymBV sym 64 -> SEval (What4 sym) (Value sym)-fromWord64 = pure . VWord 64 . wordVal . SW.DBV+fromWord64 = pure . VWord . wordVal . SW.DBV   @@ -482,7 +482,7 @@      w3 <- toWord32 sym nm ss 3      fn <- liftIO $ getUninterpFn sym funNm argCtx (W4.BaseStructRepr argCtx)      z  <- liftIO $ W4.applySymFn (w4 sym) fn (Empty :> w0 :> w1 :> w2 :> w3)-     pure $ VSeq 4 $ indexSeqMap \i ->+     mkSeq sym (Nat 4) (TVSeq 32 TVBit) $ indexSeqMap \i ->        if | i == 0 -> fromWord32 =<< liftIO (W4.structField (w4 sym) z (natIndex @0))           | i == 1 -> fromWord32 =<< liftIO (W4.structField (w4 sym) z (natIndex @1))           | i == 2 -> fromWord32 =<< liftIO (W4.structField (w4 sym) z (natIndex @2))
src/Cryptol/IR/FreeVars.hs view
@@ -159,7 +159,8 @@        TUser _ _ t -> freeVars t       TRec fs     -> freeVars (recordElements fs)-      TNominal nt ts -> freeVars nt <> freeVars ts+      TNominal nt ts -> mempty { tyDeps = Set.singleton (ntName nt) }+                        <> freeVars ts  instance FreeVars TVar where   freeVars tv = case tv of
src/Cryptol/ModuleSystem/Base.hs view
@@ -12,8 +12,8 @@ {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE ImplicitParams #-} {-# LANGUAGE LambdaCase #-}-{-# LANGUAGE RecordWildCards #-} {-# LANGUAGE OverloadedStrings #-}+{-# Language DisambiguateRecordFields #-} {-# LANGUAGE BlockArguments #-}  module Cryptol.ModuleSystem.Base where@@ -41,6 +41,7 @@                        ) import qualified System.IO.Error as IOE import qualified Data.Map as Map+import qualified Data.Map.Strict as MapS  import Prelude () import Prelude.Compat hiding ( (<>) )@@ -82,7 +83,7 @@  import Cryptol.Utils.Ident ( preludeName, floatName, arrayName, suiteBName, primeECName                            , preludeReferenceName, interactiveName, modNameChunks-                           , modNameToNormalModName, Namespace(NSModule) )+                           , modNamesMatch, Namespace(NSModule) ) import Cryptol.Utils.PP (pretty, pp, hang, vcat, ($$), (<+>), (<.>), colon) import Cryptol.Utils.Panic (panic) import Cryptol.Utils.Logger(logPutStrLn, logPrint)@@ -133,7 +134,7 @@         fail ("Undefined submodule name: " ++ show (pp pname))       _:_:_ -> do         fail ("Ambiguous submodule name: " ++ show (pp pname))-      [name] -> pure (P.ImpNested name)+      [n] -> pure (P.ImpNested n)  -- NoPat ----------------------------------------------------------------------- @@ -159,7 +160,8 @@ -- Returns a fingerprint of the module, and a set of dependencies due -- to `include` directives. parseModule ::-  ModulePath -> ModuleM (Fingerprint, Set FilePath, [P.Module PName])+  ModulePath ->+  ModuleM (Fingerprint, MapS.Map FilePath Fingerprint, [P.Module PName]) parseModule path = do   getBytes <- getByteReader @@ -175,14 +177,16 @@           | IOE.isDoesNotExistError exn -> cantFindFile p           | otherwise                   -> otherIOError p exn         InMem p _ -> panic "parseModule"-                       [ "IOError for in-memory contetns???"+                       [ "IOError for in-memory contents???"                        , "Label: " ++ show p                        , "Exception: " ++ show exn ] +  let fp = fingerprint bytes   txt <- case decodeUtf8' bytes of-    Right txt -> return $! (T.replace "\r\n" "\n" txt)-    Left e    -> badUtf8 path e+    Right txt -> return $! T.replace "\r\n" "\n" txt+    Left e    -> badUtf8 path fp e +   let cfg = P.defaultConfig               { P.cfgSource  = case path of                                  InFile p -> p@@ -192,8 +196,7 @@    case P.parseModule cfg txt of     Right pms ->-      do let fp = fingerprint bytes-         (pm1,deps) <-+      do (pm1,deps) <-            case path of              InFile p ->                do r <- getByteReader@@ -203,7 +206,7 @@                        case mb of                          Right ok -> pure ok                          Left err -> noIncludeErrors err-                  pure (mo, Set.unions d)+                  pure (mo, MapS.unions d)               {- We don't do "include" resolution for in-memory files                 because at the moment the include resolution pass requires@@ -211,7 +214,7 @@                 looking for other inlcude files.  This could be                 generalized, but we can do it once we have a concrete use                 case as it would help guide the design. -}-             InMem {} -> pure (pms, Set.empty)+             InMem {} -> pure (pms, MapS.empty)  {-          case path of@@ -220,7 +223,7 @@ --}          fp `seq` return (fp, deps, pm1) -    Left err -> moduleParseError path err+    Left err -> moduleParseError path fp err   -- Top Level Modules and Signatures --------------------------------------------@@ -248,7 +251,8 @@        case lookupTCEntity n env of          -- loadModule will calculate the canonical path again          Nothing ->-           doLoadModule eval False (FromModule n) (InFile foundPath) fp deps pm+           loadModuleAndDeps eval False+             (FromModule n) (InFile foundPath) fp deps pm          Just lm           | path' == loaded -> return (lmData lm)           | otherwise       -> duplicateModuleName n path' loaded@@ -267,25 +271,38 @@          do path <- findModule n             errorInFile path $               do (fp, deps, pms) <- parseModule path-                 ms <- mapM (doLoadModule True quiet isrc path fp deps) pms+                 ms <- mapM (loadModuleAndDeps True quiet isrc path fp deps) pms                  return (path,last ms)  -- | Load dependencies, typecheck, and add to the eval environment.-doLoadModule ::+loadModuleAndDeps ::   Bool {- ^ evaluate declarations in the module -} ->   Bool {- ^ quiet mode: true suppresses the "loading module" message -} ->   ImportSource ->   ModulePath ->   Fingerprint ->-  Set FilePath {- ^ `include` dependencies -} ->+  MapS.Map FilePath Fingerprint {- ^ `include` dependencies -} ->   P.Module PName ->   ModuleM T.TCTopEntity-doLoadModule eval quiet isrc path fp incDeps pm0 =+loadModuleAndDeps eval quiet isrc path fp incDeps pm0 =   loading isrc $   do let pm = addPrelude pm0      impDeps <- loadDeps pm+     fst <$> doLoadModule eval quiet isrc path fp incDeps pm impDeps -     let what = case P.mDef pm of+-- | Typecheck and add to the eval environment.+doLoadModule ::+  Bool {- ^ evaluate declarations in the module -} ->+  Bool {- ^ quiet mode: true suppresses the "loading module" message -} ->+  ImportSource ->+  ModulePath ->+  Fingerprint ->+  MapS.Map FilePath Fingerprint {- ^ `include` dependencies -} ->+  P.Module PName ->+  Set ModName ->+  ModuleM (T.TCTopEntity, FileInfo)+doLoadModule eval quiet isrc path fp incDeps pm impDeps =+  do let what = case P.mDef pm of                   P.InterfaceModule {} -> "interface module"                   _                    -> "module" @@ -315,7 +332,7 @@      let fi = fileInfo fp incDeps impDeps foreignSrc      loadedModule path fi nameEnv foreignSrc tcm -     return tcm+     return (tcm, fi)    where   evalForeign tcm@@ -467,10 +484,26 @@      findDepsOf mpath  findDepsOf :: ModulePath -> ModuleM (ModulePath, FileInfo)-findDepsOf mpath =+findDepsOf mpath' =+  do mpath <- case mpath' of+                InFile file -> InFile <$> io (canonicalizePath file)+                InMem {}    -> pure mpath'+     (fi, _) <- parseWithDeps mpath+     pure (mpath, fi)++{- | Parse the given module path and find its dependencies.+The reason we return a list here, is that sometime files may+contain multiple modules (e.g., due to desugaring `parameter` blocks+in functors. -}+parseWithDeps ::+  ModulePath ->+  ModuleM (FileInfo, [(Module PName, [ImportSource])])+parseWithDeps mpath =   do (fp, incs, ms) <- parseModule mpath-     let (anyF,imps) = mconcat (map (findDeps' . addPrelude) ms)-     fdeps <- if getAny anyF+     let ms' = map addPrelude ms+         depss = map findDeps' ms'+     let (anyF,imps) = mconcat depss+     fpath <- if getAny anyF                 then do mb <- io case mpath of                                    InFile path -> foreignLibPath path                                    InMem {}    -> pure Nothing@@ -480,13 +513,13 @@                                  Map.singleton fpath exists                 else pure Map.empty      pure-       ( mpath-       , FileInfo+       ( FileInfo            { fiFingerprint = fp            , fiIncludeDeps = incs            , fiImportDeps  = Set.fromList (map importedModule (appEndo imps []))-           , fiForeignDeps = fdeps+           , fiForeignDeps = fpath            }+       , zip ms' $ map ((`appEndo` []) . snd) depss        )  -- | Find the set of top-level modules imported by a module.@@ -622,8 +655,7 @@    -- check that the name of the module matches expectations   let nm = importedModule isrc-  unless (modNameToNormalModName nm ==-                                  modNameToNormalModName (thing (P.mName m)))+  unless (modNamesMatch nm (thing (P.mName m)))          (moduleNameMismatch nm (mName m))    -- remove pattern bindings
src/Cryptol/ModuleSystem/Env.hs view
@@ -192,10 +192,10 @@     }  -- | Try to focus a loaded module in the module environment.-focusModule :: ModName -> ModuleEnv -> Maybe ModuleEnv+focusModule :: ImpName Name -> ModuleEnv -> Maybe ModuleEnv focusModule n me = do-  guard (isLoaded (ImpTop n) (meLoadedModules me))-  return me { meFocusedModule = Just (ImpTop n) }+  guard (isLoaded n (meLoadedModules me))+  return me { meFocusedModule = Just n }  -- | Get a list of all the loaded modules. Each module in the -- resulting list depends only on other modules that precede it.@@ -360,7 +360,7 @@ -- | The location of a module data ModulePath = InFile FilePath                 | InMem String ByteString -- ^ Label, content-    deriving (Show, Generic, NFData)+    deriving (Show, Read, Generic, NFData)  -- | In-memory things are compared by label. instance Eq ModulePath where@@ -426,12 +426,19 @@ getLoadedModules :: LoadedModules -> [LoadedModule] getLoadedModules x = lmLoadedParamModules x ++ lmLoadedModules x +getLoadedField :: Ord a =>+  (forall b. LoadedModuleG b -> a) -> LoadedModules -> Set a+getLoadedField f lm = Set.fromList+                    $ map f (lmLoadedModules lm)+                   ++ map f (lmLoadedParamModules lm)+                   ++ map f (lmLoadedSignatures lm)+ getLoadedNames :: LoadedModules -> Set ModName-getLoadedNames lm = Set.fromList-                  $ map lmName (lmLoadedModules lm)-                 ++ map lmName (lmLoadedParamModules lm)-                 ++ map lmName (lmLoadedSignatures lm)+getLoadedNames = getLoadedField lmName +getLoadedIds :: LoadedModules -> Set String+getLoadedIds = getLoadedField lmModuleId+ instance Semigroup LoadedModules where   l <> r = LoadedModules     { lmLoadedModules = List.unionBy ((==) `on` lmName)@@ -503,6 +510,10 @@       Map.member nn (T.mSubmodules m) ||       any check (T.mFunctors m) +isLoadedStrict :: ImpName Name -> String -> LoadedModules -> Bool+isLoadedStrict mn modId lm =+  isLoaded mn lm && modId `Set.member` getLoadedIds lm+ -- | Is this a loaded parameterized module. isLoadedParamMod :: ImpName Name -> LoadedModules -> Bool isLoadedParamMod (ImpTop mn) lm = any ((mn ==) . lmName) (lmLoadedParamModules lm)@@ -568,14 +579,21 @@  -- | Try to find a previously loaded module lookupModule :: ModName -> ModuleEnv -> Maybe LoadedModule-lookupModule mn me = search lmLoadedModules `mplus` search lmLoadedParamModules+lookupModule mn = lookupModuleWith ((mn ==) . lmName)++lookupModuleWith :: (LoadedModule -> Bool) -> ModuleEnv -> Maybe LoadedModule+lookupModuleWith p me =+  search lmLoadedModules `mplus` search lmLoadedParamModules   where-  search how = List.find ((mn ==) . lmName) (how (meLoadedModules me))+  search how = List.find p (how (meLoadedModules me))  lookupSignature :: ModName -> ModuleEnv -> Maybe LoadedSignature-lookupSignature mn me =-  List.find ((mn ==) . lmName) (lmLoadedSignatures (meLoadedModules me))+lookupSignature mn = lookupSignatureWith ((mn ==) . lmName) +lookupSignatureWith ::+  (LoadedSignature -> Bool) -> ModuleEnv -> Maybe LoadedSignature+lookupSignatureWith p me = List.find p (lmLoadedSignatures (meLoadedModules me))+ addLoadedSignature ::   ModulePath -> String ->   FileInfo ->@@ -583,7 +601,7 @@   ModName -> T.ModParamNames ->   LoadedModules -> LoadedModules addLoadedSignature path ident fi nameEnv nm si lm-  | isLoaded (ImpTop nm) lm = lm+  | isLoadedStrict (ImpTop nm) ident lm = lm   | otherwise = lm { lmLoadedSignatures = loaded : lmLoadedSignatures lm }   where   loaded = LoadedModule@@ -605,7 +623,7 @@   Maybe ForeignSrc ->   T.Module -> LoadedModules -> LoadedModules addLoadedModule path ident fi nameEnv fsrc tm lm-  | isLoaded (ImpTop (T.mName tm)) lm  = lm+  | isLoadedStrict (ImpTop (T.mName tm)) ident lm = lm   | T.isParametrizedModule tm = lm { lmLoadedParamModules = loaded :                                                 lmLoadedParamModules lm }   | otherwise                = lm { lmLoadedModules =@@ -640,15 +658,16 @@  data FileInfo = FileInfo   { fiFingerprint :: Fingerprint-  , fiIncludeDeps :: Set FilePath+  , fiIncludeDeps :: Map FilePath Fingerprint   , fiImportDeps  :: Set ModName   , fiForeignDeps :: Map FilePath Bool+    -- ^ The bool indicates if the library for the foreign import exists.   } deriving (Show,Generic,NFData)   fileInfo ::   Fingerprint ->-  Set FilePath ->+  Map FilePath Fingerprint ->   Set ModName ->   Maybe ForeignSrc ->   FileInfo
src/Cryptol/ModuleSystem/Fingerprint.hs view
@@ -14,14 +14,17 @@   ) where  import Control.DeepSeq          (NFData (rnf))-import Crypto.Hash.SHA1         (hash)-import Data.ByteString          (ByteString) import Control.Exception        (try)+import Control.Monad            ((<$!>))+import Crypto.Hash.SHA256       (hash)+import Data.ByteString          (ByteString)+import Data.Char (intToDigit, digitToInt, isHexDigit) import qualified Data.ByteString as B-import qualified Data.Vector as Vector+import qualified Toml+import qualified Toml.Schema as Toml  newtype Fingerprint = Fingerprint ByteString-  deriving (Eq, Show)+  deriving (Eq, Ord, Show, Read)  instance NFData Fingerprint where   rnf (Fingerprint fp) = rnf fp@@ -31,21 +34,34 @@ fingerprint = Fingerprint . hash  -- | Attempt to compute the fingerprint of the file at the given path.--- Returns 'Nothing' in the case of an error.-fingerprintFile :: FilePath -> IO (Maybe Fingerprint)+-- Returns 'Left' in the case of an error.+fingerprintFile :: FilePath -> IO (Either IOError Fingerprint) fingerprintFile path =   do res <- try (B.readFile path)-     return $!-       case res :: Either IOError ByteString of-         Left{}  -> Nothing-         Right b -> Just $! fingerprint b+     return $! fingerprint <$!> (res :: Either IOError ByteString)  fingerprintHexString :: Fingerprint -> String fingerprintHexString (Fingerprint bs) = B.foldr hex "" bs   where-  digits   = Vector.fromList "0123456789ABCDEF"-  digit x  = digits Vector.! fromIntegral x-  hex b cs = let (x,y) = divMod b 16-             in digit x : digit y : cs+  hex b cs = let (x,y) = divMod (fromIntegral b) 16+             in intToDigit x : intToDigit y : cs +fingerprintFromHexString :: String -> Maybe Fingerprint+fingerprintFromHexString str = Fingerprint . B.pack <$> go str+  where+    go [] = Just []+    go (x:y:z)+      | isHexDigit x+      , isHexDigit y+      = (fromIntegral (digitToInt x * 16 + digitToInt y):) <$> go z+    go _ = Nothing +instance Toml.ToValue Fingerprint where+  toValue = Toml.toValue . fingerprintHexString++instance Toml.FromValue Fingerprint where+  fromValue x =+   do str <- Toml.fromValue x+      case fingerprintFromHexString str of+        Nothing -> Toml.failAt (Toml.valueAnn x) "malformed fingerprint hex-string"+        Just fp -> pure fp
src/Cryptol/ModuleSystem/Monad.hs view
@@ -26,6 +26,7 @@ import           Cryptol.ModuleSystem.Name (FreshM(..),Supply) import           Cryptol.ModuleSystem.Renamer (RenamerError(),RenamerWarning()) import           Cryptol.ModuleSystem.NamingEnv(NamingEnv)+import           Cryptol.ModuleSystem.Fingerprint(Fingerprint) import qualified Cryptol.Parser     as Parser import qualified Cryptol.Parser.AST as P import           Cryptol.Utils.Panic (panic)@@ -40,6 +41,7 @@ import           Cryptol.Utils.Ident (interactiveName, noModuleName) import           Cryptol.Utils.PP import           Cryptol.Utils.Logger(Logger)+import qualified Cryptol.Project.Config as Proj  import qualified Control.Monad.Fail as Fail import Control.Monad.IO.Class@@ -94,11 +96,11 @@     -- ^ Unable to find the module given, tried looking in these paths   | CantFindFile FilePath     -- ^ Unable to open a file-  | BadUtf8 ModulePath UnicodeException+  | BadUtf8 ModulePath Fingerprint UnicodeException     -- ^ Bad UTF-8 encoding in while decoding this file   | OtherIOError FilePath IOException     -- ^ Some other IO error occurred while reading this file-  | ModuleParseError ModulePath Parser.ParseError+  | ModuleParseError ModulePath Fingerprint Parser.ParseError     -- ^ Generated this parse error when parsing the file for module m   | RecursiveModules [ImportSource]     -- ^ Recursive module group discovered@@ -120,11 +122,11 @@     -- ^ Two modules loaded from different files have the same module name   | FFILoadErrors P.ModName [FFILoadError]     -- ^ Errors loading foreign function implementations-+  | ConfigLoadError Proj.ConfigLoadError   | ErrorInFile ModulePath ModuleError     -- ^ This is just a tag on the error, indicating the file containing it.     -- It is convenient when we had to look for the module, and we'd like-    -- to communicate the location of pthe problematic module to the handler.+    -- to communicate the location of the problematic module to the handler.      deriving (Show) @@ -132,9 +134,9 @@   rnf e = case e of     ModuleNotFound src path              -> src `deepseq` path `deepseq` ()     CantFindFile path                    -> path `deepseq` ()-    BadUtf8 path ue                      -> rnf (path, ue)+    BadUtf8 path fp ue                   -> rnf (path, fp, ue)     OtherIOError path exn                -> path `deepseq` exn `seq` ()-    ModuleParseError source err          -> source `deepseq` err `deepseq` ()+    ModuleParseError source fp err       -> rnf (source, fp, err)     RecursiveModules mods                -> mods `deepseq` ()     RenamerErrors src errs               -> src `deepseq` errs `deepseq` ()     NoPatErrors src errs                 -> src `deepseq` errs `deepseq` ()@@ -148,6 +150,7 @@     OtherFailure x                       -> x `deepseq` ()     FFILoadErrors x errs                 -> x `deepseq` errs `deepseq` ()     ErrorInFile x y                      -> x `deepseq` y `deepseq` ()+    ConfigLoadError x                    -> x `seq` ()  instance PP ModuleError where   ppPrec prec e = case e of@@ -165,7 +168,7 @@       text "[error]" <+>       text "can't find file:" <+> text path -    BadUtf8 path _ue ->+    BadUtf8 path _fp _ue ->       text "[error]" <+>       text "bad utf-8 encoding:" <+> pp path @@ -174,7 +177,7 @@             text "IO error while loading file:" <+> text path <.> colon)          4 (text (show exn)) -    ModuleParseError _source err -> Parser.ppError err+    ModuleParseError _source _fp err -> Parser.ppError err      RecursiveModules mods ->       hang (text "[error] module imports form a cycle:")@@ -208,6 +211,8 @@       hang (text "[error] Failed to load foreign implementations for module"             <+> pp x <.> colon)          4 (vcat $ map pp errs)+      +    ConfigLoadError err -> pp err      ErrorInFile _ x -> ppPrec prec x @@ -217,15 +222,15 @@ cantFindFile :: FilePath -> ModuleM a cantFindFile path = ModuleT (raise (CantFindFile path)) -badUtf8 :: ModulePath -> UnicodeException -> ModuleM a-badUtf8 path ue = ModuleT (raise (BadUtf8 path ue))+badUtf8 :: ModulePath -> Fingerprint -> UnicodeException -> ModuleM a+badUtf8 path fp ue = ModuleT (raise (BadUtf8 path fp ue))  otherIOError :: FilePath -> IOException -> ModuleM a otherIOError path exn = ModuleT (raise (OtherIOError path exn)) -moduleParseError :: ModulePath -> Parser.ParseError -> ModuleM a-moduleParseError path err =-  ModuleT (raise (ModuleParseError path err))+moduleParseError :: ModulePath -> Fingerprint -> Parser.ParseError -> ModuleM a+moduleParseError path fp err =+  ModuleT (raise (ModuleParseError path fp err))  recursiveModules :: [ImportSource] -> ModuleM a recursiveModules loaded = ModuleT (raise (RecursiveModules loaded))@@ -274,6 +279,9 @@                         ErrorInFile {} -> e                         _              -> ErrorInFile file e +tryModule :: ModuleM a -> ModuleM (Either ModuleError a)+tryModule (ModuleT m) = ModuleT (handle (Right <$> m) (pure . Left))+ -- Warnings --------------------------------------------------------------------  data ModuleWarning@@ -434,6 +442,11 @@ isLoaded mn =   do env <- ModuleT get      pure (MEnv.isLoaded (T.ImpTop mn) (meLoadedModules env))++isLoadedStrict :: P.ModName -> ModulePath -> ModuleM Bool+isLoadedStrict mn mpath =+  do env <- ModuleT get+     pure (MEnv.isLoadedStrict (T.ImpTop mn) (modulePathLabel mpath) (meLoadedModules env))  loadingImport :: Located P.Import -> ModuleM a -> ModuleM a loadingImport  = loading . FromImport
src/Cryptol/ModuleSystem/Renamer.hs view
@@ -1073,12 +1073,12 @@        depsOf (NamedThing (thing n'))          do mbSig <- traverse renameSchema (bSignature b)             shadowNames (fst `fmap` mbSig) $-              do (patEnv,pats') <- renamePats (bParams b)+              do (patEnv,bParams') <- renameBindParams (bParams b)                  -- NOTE: renamePats will generate warnings,                  -- so we don't need to trigger them again here.                  e' <- shadowNames' CheckNone patEnv (rnLocated rename (bDef b))                  return b { bName      = n'-                          , bParams    = pats'+                          , bParams    = bParams'                           , bDef       = e'                           , bSignature = snd `fmap` mbSig                           , bPragmas   = bPragmas b@@ -1350,6 +1350,12 @@            return (pe `mappend` env', p':rest')      [] -> return (mempty, [])++-- | Rename patterns used as bind parameters, and collect the new environment that they introduce.+renameBindParams :: BindParams PName -> RenameM (NamingEnv, BindParams Name)+renameBindParams (PatternParams pats) =+  (\(env,pats') -> (env, PatternParams pats')) <$> renamePats pats+renameBindParams (DroppedParams rng i) = return (mempty, DroppedParams rng i)  patternEnv :: Pattern PName -> RenameM NamingEnv patternEnv  = go
src/Cryptol/Parser.y view
@@ -173,8 +173,8 @@ top_module :: { [Module PName] }   : mbDoc 'module' module_def {% mkTopMods $1 $3 }   | 'v{' vmod_body 'v}'       {% mkAnonymousModule $2 }-  | 'interface' 'module' modName 'where' 'v{' sig_body 'v}'-                              { mkTopSig $3 $6 }+  | mbDoc 'interface' 'module' modName 'where' 'v{' sig_body 'v}'+                              { mkTopSig $1 $4 $7 }  module_def :: { Module PName } @@ -380,7 +380,7 @@   | iapat pat_op iapat '=' expr                            { at ($1,$5) $                              DBind $ Bind { bName      = $2-                                          , bParams    = [$1,$3]+                                          , bParams    = PatternParams [$1,$3]                                           , bDef       = at $5 (Located emptyRange (exprDef $5))                                           , bSignature = Nothing                                           , bPragmas   = []@@ -410,7 +410,7 @@   | 'let' iapat pat_op iapat '=' expr                            { at ($2,$6) $                              DBind $ Bind { bName      = $3-                                          , bParams    = [$2,$4]+                                          , bParams    = PatternParams [$2,$4]                                           , bDef       = at $6 (Located emptyRange (exprDef $6))                                           , bSignature = Nothing                                           , bPragmas   = []
src/Cryptol/Parser/AST.hs view
@@ -62,7 +62,8 @@   , FixityCmp(..), compareFixity   , TySyn(..)   , PropSyn(..)-  , Bind(..)+  , Bind(..), bindParams, bindHeaderLoc+  , BindParams(..), dropParams, noParams   , BindDef(..), LBindDef   , BindImpl(..), bindImpl, exprDef   , Pragma(..)@@ -484,7 +485,7 @@ -} data Bind name = Bind   { bName      :: Located name            -- ^ Defined thing-  , bParams    :: [Pattern name]          -- ^ Parameters+  , bParams    :: BindParams name         -- ^ Parameters   , bDef       :: Located (BindDef name)  -- ^ Definition   , bSignature :: Maybe (Schema name)     -- ^ Optional type sig   , bInfix     :: Bool                    -- ^ Infix operator?@@ -495,6 +496,49 @@   , bExport    :: !ExportType   } deriving (Eq, Generic, NFData, Functor, Show) +bindParams :: Bind name -> [Pattern name]+bindParams b = case bParams b of+  PatternParams ps -> ps+  DroppedParams _ _ -> []++-- | Sets the number of parameters for a binding to zero, noting+-- the original number and source location of the patterns.+-- e.g. when rewriting @let f a b c = \x -> ...@, into+-- @let f = \\a b c x -> ...@ the parameters for @f@ change from+-- @PatternParams [a,b,c]@ to @DroppedParams (getLoc [a,b,c]) 3@+dropParams :: BindParams name -> BindParams name+dropParams bps = case bps of+  PatternParams ps -> DroppedParams (getLoc ps) (length ps)+  DroppedParams rng i -> DroppedParams rng i++-- | Range encompassing the LHS of a binder, its signature, but not+-- its definition.+bindHeaderLoc :: Bind name -> Maybe Range+bindHeaderLoc b = getLoc (bName b, (bSignature b, bParams b))++-- | An empty 'BindParams' (i.e. zero parameters).+--   Note that 'dropParams' should be used instead of this+--   when rewriting an existing 'Bind' to have no parameters.+noParams :: BindParams name+noParams = PatternParams []++-- | A list of patterns used as parameters to a 'Bind'.+--   This is only used to improve error messages, by retaining+--   information about the original shape of a 'Bind' when+--   rewriting (see 'dropParams').+data BindParams name =+    PatternParams [Pattern name]+    -- ^ Parameters that appear in the LHS of a binding equation+    -- as patterns. +    -- e.g. @[a,b,c]@ in @let f a b c = \x -> ...@+  | DroppedParams (Maybe Range) Int+    -- ^ Represents zero parameters to a binding equation that+    -- originally had parameters, but was rewritten to have none+    -- (see 'Cryptol.Parser.NoPat').+    -- Retains the original source range, and number+    -- of dropped parameters (see 'dropParams').+  deriving (Eq, Generic, NFData, Functor, Show)+ type LBindDef = Located (BindDef PName)  data BindDef name = DPrim@@ -881,7 +925,17 @@ instance HasLoc (PropSyn name) where   getLoc (PropSyn x _ _ _) = getLoc x +instance HasLoc (PropGuardCase name) where+  getLoc n+    | null locs = Nothing+    | otherwise = Just (rCombs locs)+    where+    locs = catMaybes (getLoc (pgcExpr n) : map getLoc (pgcProps n)) +instance HasLoc (BindParams name) where+  getLoc bps = case bps of+    PatternParams ps -> getLoc ps+    DroppedParams rng _ -> rng  -------------------------------------------------------------------------------- @@ -1129,9 +1183,9 @@                   Nothing -> []                   Just s  -> [pp (DSignature [f] s)]           eq  = if bMono b then text ":=" else text "="-          lhs = fsep (ppL f : (map (ppPrec 3) (bParams b)))+          lhs = fsep (ppL f : (map (ppPrec 3) (bindParams b))) -          lhsOp = case bParams b of+          lhsOp = case bindParams b of                     [x,y] -> pp x <+> ppL f <+> pp y                     xs -> parens (parens (ppL f) <+> fsep (map (ppPrec 0) xs))                     -- _     -> panic "AST" [ "Malformed infix operator", show b ]@@ -1568,6 +1622,11 @@  instance NoPos (EnumCon name) where   noPos c = EnumCon { ecName = noPos (ecName c), ecFields = noPos (ecFields c) }++instance NoPos (BindParams name) where+  noPos bp = case bp of+    PatternParams ps -> PatternParams (noPos ps)+    DroppedParams _ i -> DroppedParams Nothing i  instance NoPos (Bind name) where   noPos x = Bind { bName      = noPos (bName      x)
src/Cryptol/Parser/ExpandPropGuards.hs view
@@ -127,7 +127,7 @@           typeInsts <-             (\(TParam n _ _) -> Right . PosInst $ TUser n [])               `traverse` tParams-          let e' = foldl EApp (EAppT (EVar $ thing bName') typeInsts) (patternToExpr <$> bParams bind)+          let e' = foldl EApp (EAppT (EVar $ thing bName') typeInsts) (patternToExpr <$> bindParams bind)           pure             ( PropGuardCase props' e',               bind
src/Cryptol/Parser/Names.hs view
@@ -73,7 +73,7 @@ -- | The names defined and used by a single binding. namesB :: Ord name => Bind name -> ([Located name], Set name) namesB b =-  ([bName b], boundLNames (namesPs' (bParams b)) (namesDef (thing (bDef b))))+  ([bName b], boundLNames (namesPs' (bindParams b)) (namesDef (thing (bDef b))))   namesDef :: Ord name => BindDef name -> Set name@@ -216,7 +216,7 @@ tnamesB b = Set.unions [setS, setP, setE]   where     setS = maybe Set.empty tnamesS (bSignature b)-    setP = Set.unions (map tnamesP (bParams b))+    setP = Set.unions (map tnamesP (bindParams b))     setE = tnamesDef (thing (bDef b))  tnamesDef :: Ord name => BindDef name -> Set name
src/Cryptol/Parser/NoInclude.hs view
@@ -20,8 +20,8 @@ import qualified Control.Exception as X import qualified Control.Monad.Fail as Fail -import Data.Set(Set)-import qualified Data.Set as Set+import Data.Map.Strict(Map)+import qualified Data.Map.Strict as Map import Data.ByteString (ByteString) import Data.Either (partitionEithers) import Data.Text(Text)@@ -38,12 +38,13 @@ import Cryptol.Parser.LexerUtils (Config(..),defaultConfig) import Cryptol.Parser.ParserUtils import Cryptol.Parser.Unlit (guessPreProc)+import Cryptol.ModuleSystem.Fingerprint  removeIncludesModule ::   (FilePath -> IO ByteString) ->   FilePath ->   Module PName ->-  IO (Either [IncludeError] (Module PName, Set FilePath))+  IO (Either [IncludeError] (Module PName, Map FilePath Fingerprint)) removeIncludesModule reader modPath m =   runNoIncM reader modPath (noIncludeModule m) @@ -82,7 +83,7 @@            IO          )) a } -type Deps = Set FilePath+type Deps = Map FilePath Fingerprint  data Env = Env { envSeen       :: [Located FilePath]                  -- ^ Files that have been loaded@@ -106,7 +107,7 @@                       , envIncPath = incPath                       , envFileReader = reader                       }-                  Set.empty+                  Map.empty      pure        do ok <- mb           pure (ok,s)@@ -135,10 +136,10 @@     do Env { .. } <- ask        return (envIncPath </> path) -addDep :: FilePath -> NoIncM ()-addDep path = M+addDep :: FilePath -> Fingerprint -> NoIncM ()+addDep path fp = M   do s <- get-     let s1 = Set.insert path s+     let s1 = Map.insert path fp s      s1 `seq` set s1  @@ -247,12 +248,13 @@ readInclude path = do   readBytes   <- envFileReader <$> M ask   file        <- fromIncPath (thing path)-  addDep file   sourceBytes <- readBytes file `failsWith` handler   sourceText  <- X.evaluate (T.decodeUtf8' sourceBytes) `failsWith` handler   case sourceText of     Left encodingErr -> M (raise [IncludeDecodeFailed path encodingErr])-    Right txt -> return txt+    Right txt -> do+      addDep file (fingerprint sourceBytes)+      return txt   where   handler :: X.IOException -> NoIncM a   handler _ = includeFailed path
src/Cryptol/Parser/NoPat.hs view
@@ -58,7 +58,7 @@     where (m1,errs) = removePatterns m  simpleBind :: Located PName -> Expr PName -> Bind PName-simpleBind x e = Bind { bName = x, bParams = []+simpleBind x e = Bind { bName = x, bParams = noParams                       , bDef = at e (Located emptyRange (exprDef e))                       , bSignature = Nothing, bPragmas = []                       , bMono = True, bInfix = False, bFixity = Nothing@@ -68,7 +68,7 @@  sel :: Pattern PName -> PName -> Selector -> Bind PName sel p x s = let (a,ts) = splitSimpleP p-            in simpleBind a (foldl ETyped (ESel (EVar x) s) ts)+            in simpleBind a (at p (foldl ETyped (ESel (EVar x) s) ts))  -- | Given a pattern, transform it into a simple pattern and a set of bindings. -- Simple patterns may only contain variables and type annotations.@@ -238,12 +238,12 @@ noMatchB b =   case thing (bDef b) of -    DPrim | null (bParams b) -> return b+    DPrim | null (bindParams b) -> return b           | otherwise        -> panic "NoPat" [ "noMatchB: primitive with params"                                               , show b ]      DForeign Nothing-      | null (bParams b) -> return b+      | null (bindParams b) -> return b       | otherwise        -> panic "NoPat" [ "noMatchB: foreign with params"                                           , show b ] @@ -255,12 +255,12 @@   noMatchI def i =     do i' <- case i of                DExpr e ->-                 DExpr <$> noPatFun (Just (thing (bName b))) 0 (bParams b) e+                 DExpr <$> noPatFun (Just (thing (bName b))) 0 (bindParams b) e                DPropGuards guards ->                  let nm = thing (bName b)-                     ps = bParams b+                     ps = bindParams b                  in  DPropGuards <$> mapM (noPatPropGuardCase nm ps) guards-       pure b { bParams = [], bDef = def i' <$ bDef b }+       pure b { bParams = dropParams (bParams b), bDef = def i' <$ bDef b }  noPatPropGuardCase ::   PName ->@@ -286,7 +286,7 @@                           e1 <- noPatE e                           let e2 = foldl ETyped e1 ts                           return $ DBind Bind { bName = x-                                              , bParams = []+                                              , bParams = noParams                                               , bDef = at e (Located emptyRange (exprDef e2))                                               , bSignature = Nothing                                               , bPragmas = []
src/Cryptol/Parser/ParserUtils.hs view
@@ -14,11 +14,11 @@ {-# LANGUAGE PatternGuards #-} {-# LANGUAGE BlockArguments #-} {-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE LambdaCase #-} -- See Note [-Wincomplete-uni-patterns and irrefutable patterns] in Cryptol.TypeCheck.TypePat {-# OPTIONS_GHC -Wno-incomplete-uni-patterns #-} module Cryptol.Parser.ParserUtils where -import qualified Data.Text as Text import Data.Char(isAlphaNum, isSpace) import Data.Maybe(fromMaybe, mapMaybe) import Data.Bits(testBit,setBit)@@ -31,6 +31,7 @@ import qualified Data.Text as T import qualified Data.Map as Map import Text.Read(readMaybe)+import Data.Foldable (for_)  import GHC.Generics (Generic) import Control.DeepSeq@@ -45,9 +46,9 @@ import Cryptol.Parser.Position import Cryptol.Parser.Utils (translateExprToNumT,widthIdent) import Cryptol.Utils.Ident( packModName,packIdent,modNameChunks-                          , identAnonArg, identAnonIfaceMod+                          , identAnonArg, identAnonIfaceMod, identAnonInstImport                           , modNameArg, modNameIfaceMod-                          , modNameToText, modNameIsNormal+                          , mainModName, modNameIsNormal                           , modNameToNormalModName                           , unpackIdent, isUpperIdent                           )@@ -73,6 +74,8 @@ newtype ParseM a =   P { unP :: Config -> Position -> S -> Either ParseError (a,S) } +askConfig :: ParseM Config+askConfig = P \cfg _ s -> Right (cfg, s)  lexerP :: (Located Token -> ParseM a) -> ParseM a lexerP k = P $ \cfg p s ->@@ -786,7 +789,7 @@ mkProperty :: LPName -> [Pattern PName] -> Expr PName -> Decl PName mkProperty f ps e = at (f,e) $                     DBind Bind { bName       = f-                               , bParams     = reverse ps+                               , bParams     = PatternParams (reverse ps)                                , bDef        = at e (Located emptyRange (exprDef e))                                , bSignature  = Nothing                                , bPragmas    = [PragmaProperty]@@ -802,7 +805,7 @@   LPName -> ([Pattern PName], [Pattern PName]) -> Expr PName -> Decl PName mkIndexedDecl f (ps, ixs) e =   DBind Bind { bName       = f-             , bParams     = reverse ps+             , bParams     = PatternParams (reverse ps)              , bDef        = at e (Located emptyRange (exprDef rhs))              , bSignature  = Nothing              , bPragmas    = []@@ -829,7 +832,7 @@      let gs  = reverse guards      pure $        DBind Bind { bName       = f-                  , bParams     = reverse ps+                  , bParams     = PatternParams (reverse ps)                   , bDef        = Located (srcRange f) (DImpl (DPropGuards gs))                   , bSignature  = Nothing                   , bPragmas    = []@@ -920,7 +923,7 @@ mkNoImplDecl def mbDoc ln sig =   [ exportDecl Nothing Public     $ DBind Bind { bName      = ln-                 , bParams    = []+                 , bParams    = noParams                  , bDef       = at sig (Located emptyRange def)                  , bSignature = Nothing                  , bPragmas   = []@@ -1203,10 +1206,22 @@  -- | Make an unnamed module---gets the name @Main@. mkAnonymousModule :: [TopDecl PName] -> ParseM [Module PName]-mkAnonymousModule = mkTopMods Nothing-                  . mkModule Located { srcRange = emptyRange-                                     , thing    = mkModName [T.pack "Main"]-                                     }+mkAnonymousModule ds =+  do for_ ds \case+       DParamDecl l _            -> mainParamError l+       DModParam p               -> mainParamError (srcRange (mpSignature p))+       DInterfaceConstraint _ ps -> mainParamError (srcRange ps)+       _                         -> pure ()+     src <- cfgSource <$> askConfig+     mkTopMods Nothing $+        mkModule Located+          { srcRange = emptyRange+          , thing    = mainModName src+          }+                          ds+  where+  mainParamError l = errorMessage l+    ["Unnamed module cannot be parameterized"]  -- | Make a module which defines a functor instance. mkModuleInstanceAnon :: Located ModName ->@@ -1364,12 +1379,12 @@  do (m', ms) <- desugarMod m { mDocTop = doc }     pure (ms ++ [m']) -mkTopSig :: Located ModName -> Signature PName -> [Module PName]-mkTopSig nm sig =+mkTopSig :: Maybe (Located Text) -> Located ModName -> Signature PName -> [Module PName]+mkTopSig doc nm sig =   [ Module { mName    = nm            , mDef     = InterfaceModule sig            , mInScope = mempty-           , mDocTop  = Nothing+           , mDocTop  = doc            }   ] @@ -1378,18 +1393,20 @@   mkAnon    :: AnonThing -> t -> t   toImpName :: t -> ImpName PName -data AnonThing = AnonArg | AnonIfaceMod+data AnonThing = AnonArg Int Int+                -- ^ The ints are line, column used for disambiguation+               | AnonIfaceMod  instance MkAnon ModName where   mkAnon what   = case what of-                    AnonArg      -> modNameArg+                    AnonArg l c  -> modNameArg l c                     AnonIfaceMod -> modNameIfaceMod   toImpName     = ImpTop  instance MkAnon PName where   mkAnon what   = mkUnqual                 . case what of-                    AnonArg      -> identAnonArg+                    AnonArg l c  -> const (identAnonArg l c)                     AnonIfaceMod -> identAnonIfaceMod                 . getIdent   toImpName     = ImpNested@@ -1411,7 +1428,8 @@                 [ "Instantiation of a parameterized module may not itself be "                   ++ "parameterized" ]            _ -> pure ()-         let i      = mkAnon AnonArg (thing (mName mo))+         let i      = mkAnon (AnonArg (line pos) (col pos)) (thing (mName mo))+             pos    = from (srcRange nm)              nm     = Located { srcRange = srcRange (mName mo), thing = i }              as'    = DefaultInstArg (ModuleArg . toImpName <$> nm)          pure ( mo { mDef = FunctorInstance f as' mempty }@@ -1531,15 +1549,9 @@      pure (DImport (newImp <$> i) : map modTop (ms ++ [m]))    where-  imp = thing i   iname = mkUnqual-        $ identAnonIfaceMod-        $ mkIdent-        $ "import of " <> nm <> " at " <> Text.pack (show (pp (srcRange i)))-    where-    nm = case iModule imp of-           ImpTop f    -> modNameToText f-           ImpNested n -> "submodule " <> Text.pack (show (pp n))+        $ let pos = from (srcRange i)+          in identAnonInstImport (line pos) (col pos)    newImp d = d { iModule = ImpNested iname                , iInst   = Nothing
src/Cryptol/Parser/Position.hs view
@@ -120,6 +120,10 @@                              Nothing -> go (Just l) xs                              Just l1 -> go (Just (rComb l l1)) xs +instance HasLoc a => HasLoc (Maybe a) where+  getLoc Nothing = Nothing+  getLoc (Just x) = getLoc x+ class HasLoc t => AddLoc t where   addLoc  :: t -> Range -> t   dropLoc :: t -> t
+ src/Cryptol/Project.hs view
@@ -0,0 +1,244 @@+{-# LANGUAGE BlockArguments    #-}+{-# LANGUAGE LambdaCase        #-}+{-# LANGUAGE ScopedTypeVariables #-}+module Cryptol.Project+  ( Config(..)+  , loadConfig+  , ScanStatus(..)+  , ChangeStatus(..)+  , InvalidStatus(..)+  , LoadProjectMode(..)+  , Parsed+  , loadProject+  , depMap+  ) where++import           Control.Monad                    (void)+import           Data.Foldable+import           Data.Map.Strict                  (Map)+import qualified Data.Map.Strict                  as Map+import           Data.Set                         (Set)+import qualified Data.Set                         as Set+import           Data.Traversable+import           System.Directory+import           System.FilePath                  as FP++import           Cryptol.ModuleSystem.Base        as M+import           Cryptol.ModuleSystem.Env+import           Cryptol.ModuleSystem.Fingerprint+import           Cryptol.ModuleSystem.Monad       as M+import           Cryptol.Project.Config+import           Cryptol.Project.Cache+import           Cryptol.Project.Monad+import           Cryptol.Project.WildMatch+import qualified Cryptol.Parser.AST as P+import Cryptol.Parser.Position (Located(..))+import Control.Exception (try)++-- | Load a project.+-- Returns information about the modules that are part of the project.+loadProject :: LoadProjectMode -> Config -> M.ModuleM (Map CacheModulePath FullFingerprint, Map ModulePath ScanStatus, Map CacheModulePath (Maybe Bool))+loadProject mode cfg =+   do (fps, statuses, out) <- runLoadM mode cfg (loadPatterns (modules cfg) >> getOldDocstringResults)+      let deps = depMap [p | Scanned _ _ ps <- Map.elems statuses, p <- ps]++      let untested (InMem{}) = False+          untested (InFile f) =+            case out of+              Left _ -> True+              Right m -> Map.lookup (CacheInFile f) m /= Just (Just True)++      let needLoad = case mode of+            RefreshMode  -> [thing (P.mName m) | Scanned _ _ ps <- Map.elems statuses, (m, _) <- ps]+            ModifiedMode -> [thing (P.mName m) | Scanned Changed _ ps <- Map.elems statuses, (m, _) <- ps]+            UntestedMode -> [thing (P.mName m) | (k, Scanned ch _ ps) <- Map.assocs statuses, ch == Changed || untested k,  (m, _) <- ps]+      let order = loadOrder deps needLoad++      let modDetails = Map.fromList [(thing (P.mName m), (m, mp, fp)) | (mp, Scanned _ fp ps) <- Map.assocs statuses, (m, _) <- ps]++      let fingerprints = Map.fromList [(path, moduleFingerprint ffp) | (CacheInFile path, ffp) <- Map.assocs fps]++      for_ order \name ->+        let (m, path, fp) = modDetails Map.! name in+        -- XXX: catch modules that don't load?+        doLoadModule+          True {- eval -}+          False {- quiet -}+          (FromModule name)+          path+          (moduleFingerprint fp)+          fingerprints+          m+          (Map.findWithDefault mempty name deps)++      let oldResults =+            case out of+              Left{} -> mempty+              Right x -> x+      pure (fps, statuses, oldResults)+++--------------------------------------------------------------------------------++loadPatterns :: [String] -> LoadM any ()+loadPatterns patterns =+ do mb <- tryLoadM (doIO (map flatten <$> listDirectoryRecursive []))+    case mb of+      Left{} -> pure ()+      Right files ->+       do let files' = filter (\x -> any (`wildmatch` x) patterns) files+          for_ files' scanPath++-- | Process all .cry files in the given path.+scanPath :: FilePath -> LoadM any ()+scanPath path =+  tryLoadM (doIO (doesDirectoryExist path)) >>=+  \case+    Left {} -> pure ()++    Right True ->+      tryLoadM (doIO (listDirectory path)) >>=+        \case+           Left {} -> pure ()+           Right entries ->+             for_ entries \entry -> scanPath (path FP.</> entry)++    Right False ->+      -- XXX: This should probably handle other extenions+      -- (literate Cryptol)+      case takeExtension path of+        ".cry" -> void (tryLoadM (scanFromPath path))+                  -- XXX: failure: file disappeared.+        _      -> pure ()+++-- | Process a particular file path.+-- Fails if we can't find the module at this path.+scanFromPath :: FilePath -> LoadM Err ScanStatus+scanFromPath fpath =+  liftCallback (withPrependedSearchPath [takeDirectory fpath])+  do foundFPath <- doModule (M.findFile fpath)+     mpath      <- doIO (InFile <$> canonicalizePath foundFPath)+     scan mpath+++-- | Process the given module, and return information about what happened.+-- Also, saves the status of the module path.+scan :: ModulePath -> LoadM any ScanStatus+scan mpath =++  tryIt $+  do mbStat <- getStatus mpath+     case mbStat of+       Just status -> pure status++       Nothing ->+         do (newFp,parsed) <- doParse mpath+            mbOldFP <- getCachedFingerprint mpath+            let needLoad = mbOldFP /= Just newFp+            let deps     = [ dep+                           | (_,ds) <- parsed+                           , dep@(_,otherPath) <- ds+                           , mpath /= otherPath+                           ]+            mb <- checkDeps False deps+            case mb of+              Left (a,b) -> addScanned mpath (Invalid (InvalidDep a b))+              Right depChanges ->+                do let ch = if needLoad || depChanges+                            then Changed else Unchanged+                   addScanned mpath (Scanned ch newFp parsed)+  where+  tryIt m =+    do mb <- tryLoadM m+       case mb of+         Left err -> addScanned mpath (Invalid (InvalidModule err))+         Right a  -> pure a+++-- | Parse a module.+doParse :: ModulePath -> LoadM Err (FullFingerprint, Parsed)+doParse mpath =+  do lab <- getModulePathLabel mpath+     lPutStrLn ("Scanning " ++ lab)++     (parsed, newFp) <-+        doModule+        do (fi, parsed) <- parseWithDeps mpath+           foreignFps   <- getForeignFps (fiForeignDeps fi)+           pure ( parsed+                , FullFingerprint+                    { moduleFingerprint   = fiFingerprint fi+                    , includeFingerprints = fiIncludeDeps fi+                    , foreignFingerprints = foreignFps+                    }+                 )+     addFingerprint mpath newFp+     ps <- forM parsed \(m,ds) ->+             do paths <- mapM findModule' ds+                pure (m, zip ds paths)+     pure (newFp, ps)++-- | Get the fingerprints for external libraries.+getForeignFps :: Map FilePath Bool -> ModuleM (Set Fingerprint)+getForeignFps fsrcPaths =+  Set.fromList <$>+    let foundFiles = Map.keys (Map.filter id fsrcPaths) in+    for foundFiles \fsrcPath ->+      M.io (fingerprintFile fsrcPath) >>=+        \case+          Left ioe -> otherIOError fsrcPath ioe+          Right fp -> pure fp++-- | Scan the dependencies of a module.+checkDeps ::+  Bool {- ^ Should we load the dependencies -} ->+  [(ImportSource,ModulePath)] {- ^ The dependencies -} ->+  LoadM err (Either (ImportSource,ModulePath) Bool)+  -- ^ Returns `Left bad_dep` if one of the dependencies fails to load.+  -- Returns `Right changes` if all dependencies were validated correctly.+  -- The boolean flag `changes` indicates if any of the dependencies contain+  -- changes and so we should also load the main module.+checkDeps shouldLoad ds =+  case ds of+    [] -> pure (Right shouldLoad)+    (imp, mpath) : more ->+      do status <- scan mpath+         case status of+           Invalid {} -> pure (Left (imp,mpath))+           Scanned ch _ _ ->+             case ch of+               Changed   -> checkDeps True more+               Unchanged -> checkDeps shouldLoad more+++depMap :: Parsed -> Map P.ModName (Set P.ModName)+depMap xs = Map.fromList [(thing (P.mName k), Set.fromList [importedModule i | (i, _) <- v]) | (k, v) <- xs]++loadOrder :: Map P.ModName (Set P.ModName) -> [P.ModName] -> [P.ModName]+loadOrder deps roots0 = snd (go Set.empty roots0) []+  where+    go seen mms =+      case mms of+        [] -> (seen, id)+        m : ms+          | Set.member m seen -> go seen ms+          | (seen1, out1) <- go (Set.insert m seen) (Set.toList (Map.findWithDefault mempty m deps))+          , (seen2, out2) <- go seen1 ms+          -> (seen2, out1 . (m:) . out2)++-- Similar to listDirectory except directories are expanded+-- when possible instead of returned in the list+listDirectoryRecursive :: [FilePath] -> IO [[FilePath]]+listDirectoryRecursive d =+ do localEntries <- listDirectory (flatten d)+    concat <$> for localEntries \x ->+     do let x' = d ++ [x]+        mb <- try (listDirectoryRecursive x')+        case mb of+          Left (_ :: IOError) -> pure [x']+          Right xs -> pure xs++flatten :: [String] -> String+flatten [] = "."+flatten xs = foldr1 (\x y -> x ++ "/" ++ y) xs
+ src/Cryptol/Project/Cache.hs view
@@ -0,0 +1,130 @@+{-# Language OverloadedStrings, BlockArguments #-}+module Cryptol.Project.Cache where++import           Data.Map.Strict                  (Map)+import qualified Data.Map.Strict                  as Map+import qualified Data.Set                         as Set+import qualified Data.Text.IO                     as Text+import           Data.Set                         (Set)+import           System.Directory+import           System.FilePath                  as FP+import           System.IO.Error+import qualified Toml+import qualified Toml.Schema                      as Toml+import           Cryptol.ModuleSystem.Fingerprint ( Fingerprint )+import           Cryptol.ModuleSystem.Env++-- | The load cache. This is what persists across invocations.+newtype LoadCache = LoadCache+  { cacheModules :: Map CacheModulePath CacheEntry+  }+  deriving (Show, Read)++toCacheModulePath :: ModulePath -> CacheModulePath+toCacheModulePath mpath =+  case mpath of+    InMem x _ -> CacheInMem x+    InFile x -> CacheInFile x++data CacheModulePath+  = CacheInMem String -- ^ module name+  | CacheInFile FilePath -- ^ absolute file path+  deriving (Show, Read, Ord, Eq)++instance Toml.ToValue LoadCache where+  toValue = Toml.defaultTableToValue++instance Toml.ToTable LoadCache where+  toTable x = Toml.table [+    "version" Toml..= (1 :: Int), -- increase this to invalidate old files+                                  -- also look at the `Toml.FromValue` instance+    "modules" Toml..= [+      Toml.table $ [+        case k of+          CacheInFile a -> "file" Toml..= a+          CacheInMem a -> "memory" Toml..= a,+        "fingerprint" Toml..= moduleFingerprint fp,+        "foreign_fingerprints" Toml..= Set.toList (foreignFingerprints fp),+        "include_fingerprints" Toml..= [+          Toml.table [+            "file" Toml..= k1,+            "fingerprint" Toml..= v1+          ]+          | (k1, v1) <- Map.assocs (includeFingerprints fp)+        ]+      ] +++      [ "docstring_result" Toml..= result+        | Just result <- [cacheDocstringResult v]+      ]+      | (k,v) <- Map.assocs (cacheModules x)+      , let fp = cacheFingerprint v+    ]]++instance Toml.FromValue LoadCache where+  fromValue = Toml.parseTableFromValue+   do 1 <- Toml.reqKey "version" :: Toml.ParseTable l Int+      kvs <- Toml.reqKeyOf "modules"+           $ Toml.listOf \ _ix ->+             Toml.parseTableFromValue+             do k <- Toml.pickKey [+                    Toml.Key "memory" (fmap CacheInMem . Toml.fromValue),+                    Toml.Key "file" (fmap CacheInFile . Toml.fromValue)+                  ]+                fp <- Toml.reqKey "fingerprint"+                foreigns <- Toml.reqKey "foreign_fingerprints"+                includes <- Toml.reqKeyOf "include_fingerprints"+                          $ Toml.listOf \ _ix ->+                            Toml.parseTableFromValue+                          $ (,) <$> Toml.reqKey "file"+                                <*> Toml.reqKey "fingerprint"+                checkResult <- Toml.optKey "docstring_result"+                pure (k, CacheEntry+                  { cacheFingerprint = FullFingerprint+                      { moduleFingerprint = fp+                      , foreignFingerprints = Set.fromList foreigns+                      , includeFingerprints = Map.fromList includes+                      }+                  , cacheDocstringResult = checkResult+                  })+      pure LoadCache {+        cacheModules = Map.fromList kvs+        }++data CacheEntry = CacheEntry+  { cacheFingerprint :: FullFingerprint+  , cacheDocstringResult :: Maybe Bool+  }+  deriving (Show, Read)++-- | The full fingerprint hashes the module, but+-- also the contents of included files and foreign libraries.+data FullFingerprint = FullFingerprint+  { moduleFingerprint   :: Fingerprint+  , includeFingerprints :: Map FilePath Fingerprint+  , foreignFingerprints :: Set Fingerprint+  }+  deriving (Eq, Show, Read)++-- | Directory where to store the project state.+-- XXX: This should probably be a parameter+metaDir :: FilePath+metaDir = ".cryproject"++loadCachePath :: FilePath+loadCachePath = metaDir FP.</> "loadcache.toml"++emptyLoadCache :: LoadCache+emptyLoadCache = LoadCache { cacheModules = mempty }++loadLoadCache :: IO LoadCache+loadLoadCache =+ do txt <- Text.readFile loadCachePath+    case Toml.decode txt of+      Toml.Success _ c -> pure c+      Toml.Failure _ -> pure emptyLoadCache+  `catchIOError` \_ -> pure emptyLoadCache++saveLoadCache :: LoadCache -> IO ()+saveLoadCache cache =+  do createDirectoryIfMissing False metaDir+     writeFile loadCachePath (show (Toml.encode cache))
+ src/Cryptol/Project/Config.hs view
@@ -0,0 +1,75 @@+{-# LANGUAGE BlockArguments #-}+{-# LANGUAGE OverloadedStrings #-}+module Cryptol.Project.Config where++import           Data.Maybe                       (fromMaybe)+import qualified Data.Text.IO                     as Text+import           Toml+import           Toml.Schema+import           Data.Bifunctor (first)+import           System.Directory+import           System.FilePath                  as FP+import           System.IO.Error++import           Cryptol.Utils.PP                 as PP++data Config = Config+  { root    :: FilePath+    -- ^ The root of the project.++  , modules :: [String]+    -- ^ Git-style patterns describing the files for the project.+  }++data LoadProjectMode+  = RefreshMode  -- load all files+  | ModifiedMode -- load modified files+  | UntestedMode -- load files without a successful test result+  deriving Show++instance FromValue Config where+  fromValue =+    parseTableFromValue+    do mbRoot <- optKey "root"+       mods <- reqKey "modules"+       pure Config+         { root = fromMaybe "." mbRoot+         , modules = mods+         }++data ConfigLoadError = ConfigLoadError FilePath ConfigLoadErrorInfo+  deriving Show++data ConfigLoadErrorInfo+  = ConfigParseError [String]+  | SetRootFailed IOError+  deriving Show++instance PP ConfigLoadError where+  ppPrec _ (ConfigLoadError path info) =+    case info of+      ConfigParseError errs -> text (unlines errs)+      SetRootFailed ioe ->+        hang topMsg+           4 (hang "Failed to set project root:"+                 4 (text (show ioe)))+    where+    topMsg = "Error loading project configuration" <+> text path PP.<.> ":"++-- | Parse project configuration.+loadConfig :: FilePath -> IO (Either ConfigLoadError Config)+loadConfig path =+  do isDir <- doesDirectoryExist path+     let filePath = if isDir then path FP.</> "cryproject.toml" else path+     -- Use strict IO since we are writing to the same file later+     file <- Text.readFile filePath+     first (ConfigLoadError filePath) <$>+       case decode file of+         Failure errs  -> pure (Left (ConfigParseError errs))+         Success _warns config ->+           first SetRootFailed <$>+           tryIOError+             do dir <- canonicalizePath+                                    (takeDirectory filePath FP.</> root config)+                setCurrentDirectory dir+                pure config { root = dir }
+ src/Cryptol/Project/Monad.hs view
@@ -0,0 +1,214 @@+{-# LANGUAGE BlockArguments #-}+{-# LANGUAGE RankNTypes #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+module Cryptol.Project.Monad+  ( LoadM, Err, NoErr+  , ScanStatus(..), ChangeStatus(..), InvalidStatus(..), Parsed+  , LoadProjectMode(..)+  , runLoadM+  , doModule+  , doModuleNonFail+  , doIO+  , tryLoadM+  , liftCallback+  , addFingerprint+  , addScanned+  , getModulePathLabel+  , getCachedFingerprint+  , findModule'+  , getStatus+  , getFingerprint+  , lPutStrLn+  , getOldDocstringResults+  ) where++import           Data.Map.Strict                  (Map)+import qualified Data.Map.Strict                  as Map+import           Control.Monad.Reader+import           Control.Monad.State+import           Control.Monad.Except hiding (tryError)+import           System.Directory+import           System.FilePath                  (makeRelative)++import           Cryptol.Utils.Ident+import           Cryptol.Parser.AST               (Module,PName)+import           Cryptol.ModuleSystem.Base        as M+import           Cryptol.ModuleSystem.Monad       as M+import           Cryptol.ModuleSystem.Env+import           Cryptol.Utils.Logger             (logPutStrLn)++import           Cryptol.Project.Config+import           Cryptol.Project.Cache++newtype LoadM err a =+  LoadM (ReaderT LoadConfig (ExceptT ModuleError (StateT LoadState ModuleM)) a)+  deriving (Functor,Applicative,Monad)++-- | Computations may raise an error+data Err++-- | Computations may not raise errors+data NoErr++type Parsed = [ (Module PName, [(ImportSource, ModulePath)]) ]++data ScanStatus =+    Scanned ChangeStatus FullFingerprint Parsed+  | Invalid InvalidStatus+  deriving Show++data ChangeStatus =+    Changed       -- ^ The module, or one of its dependencies changed.+  | Unchanged     -- ^ The module did not change.+  deriving (Eq, Show)++data InvalidStatus =+    InvalidModule ModuleError+    -- ^ Error in one of the modules in this file++  | InvalidDep ImportSource ModulePath+    -- ^ Error in one of our dependencies+  deriving Show+++data LoadState = LoadState+  { findModuleCache :: Map (ModName, [FilePath]) ModulePath+    -- ^ Map (module name, search path) -> module path++  , fingerprints    :: Map CacheModulePath FullFingerprint+    -- ^ Hashes of known things.++  , scanned         :: Map ModulePath ScanStatus+    -- ^ Information about the proccessed top-level modules.+  }+++-- | Information about the current project.+data LoadConfig = LoadConfig+  { canonRoot :: FilePath+    -- ^ Path to the project root, cannoicalized.++  , loadCache :: LoadCache+    -- ^ The state of the cache before we started loading the project.+  }+++-- | Do an operation in the module monad.+doModuleNonFail :: M.ModuleM a -> LoadM any a+doModuleNonFail m =+  do mb <- LoadM (lift (lift (lift (M.tryModule m))))+     case mb of+       Left err -> LoadM (throwError err)+       Right a  -> pure a++-- | Do an operation in the module monad.+doModule :: M.ModuleM a -> LoadM Err a+doModule = doModuleNonFail++-- | Do an operation in the IO monad+doIO :: IO a -> LoadM Err a+doIO m = doModule (M.io m)++tryLoadM :: LoadM Err a -> LoadM any (Either M.ModuleError a)+tryLoadM (LoadM m) = LoadM (tryError m)++-- Introduced in mtl-2.3.1 which we can't rely upon yet+tryError :: MonadError e m => m a -> m (Either e a)+tryError action = (Right <$> action) `catchError` (pure . Left)++-- | Print a line+lPutStrLn :: String -> LoadM any ()+lPutStrLn msg = doModuleNonFail (withLogger logPutStrLn msg)++-- | Lift a module level operation to the LoadM monad.+liftCallback :: (forall a. ModuleM a -> ModuleM a) -> LoadM any b -> LoadM Err b+liftCallback f (LoadM m) =+  do r <- LoadM ask+     s <- LoadM get+     (mb,s1) <- doModule (f (runStateT (runExceptT (runReaderT m r)) s))+     LoadM (put s1)+     case mb of+       Left err -> LoadM (throwError err)+       Right a  -> pure a++-- | Run a LoadM computation using the given configuration.+runLoadM ::+  LoadProjectMode {- ^ force a refresh -} ->+  Config ->+  LoadM NoErr a ->+  M.ModuleM (Map CacheModulePath FullFingerprint, Map ModulePath ScanStatus, Either ModuleError a)+runLoadM mode cfg (LoadM m) =+  do loadCfg <-+       M.io+         do path  <- canonicalizePath (root cfg)+            cache <- case mode of+                       RefreshMode  -> pure emptyLoadCache+                       UntestedMode -> loadLoadCache+                       ModifiedMode -> loadLoadCache+            pure LoadConfig { canonRoot = path+                            , loadCache = cache+                            }+     let loadState = LoadState { findModuleCache = mempty+                               , fingerprints = mempty+                               , scanned = mempty+                               }+     (result, s) <- runStateT (runExceptT (runReaderT m loadCfg)) loadState+     pure (fingerprints s, scanned s, result)++addFingerprint :: ModulePath -> FullFingerprint -> LoadM any ()+addFingerprint mpath fp =+  LoadM+    (modify' \ls -> ls { fingerprints = Map.insert (toCacheModulePath mpath) fp (fingerprints ls) })+++-- | Add information about the status of a module path.+addScanned :: ModulePath -> ScanStatus -> LoadM any ScanStatus+addScanned mpath status =+  do LoadM+       (modify' \ls -> ls { scanned = Map.insert mpath status (scanned ls) })+     pure status+++-- | Get a label for the given module path.+-- Typically used for output.+getModulePathLabel :: ModulePath -> LoadM any String+getModulePathLabel mpath =+  case mpath of+    InFile p  -> LoadM (asks ((`makeRelative` p) . canonRoot))+    InMem l _ -> pure l+++-- | Get the fingerprint for the given module path.+getCachedFingerprint :: ModulePath -> LoadM any (Maybe FullFingerprint)+getCachedFingerprint mpath =+  LoadM (asks (fmap cacheFingerprint . Map.lookup (toCacheModulePath mpath) . cacheModules . loadCache))+++-- | Module path for the given import+findModule' :: ImportSource -> LoadM Err ModulePath+findModule' isrc =+  do ls <- LoadM get+     let mname = modNameToNormalModName (importedModule isrc)+     searchPath <- doModule M.getSearchPath+     case Map.lookup (mname, searchPath) (findModuleCache ls) of+       Just mpath -> pure mpath+       Nothing ->+         do modLoc <- doModule (findModule mname)+            mpath  <- case modLoc of+                        InFile path -> InFile <$> doIO (canonicalizePath path)+                        InMem l c   -> pure (InMem l c)+            LoadM $ put ls { findModuleCache = Map.insert (mname, searchPath)+                                                  mpath (findModuleCache ls) }+            pure mpath++-- | Check if the given file has beein processed.+getStatus :: ModulePath -> LoadM any (Maybe ScanStatus)+getStatus mpath = LoadM (gets (Map.lookup mpath . scanned))++-- | Get the fingerpint for the ginve path, if any.+getFingerprint :: ModulePath -> LoadM any (Maybe FullFingerprint)+getFingerprint mpath = LoadM (gets (Map.lookup (toCacheModulePath mpath) . fingerprints))++getOldDocstringResults :: LoadM any (Map CacheModulePath (Maybe Bool))+getOldDocstringResults =+  LoadM (asks (fmap cacheDocstringResult . cacheModules . loadCache))
+ src/Cryptol/Project/WildMatch.hs view
@@ -0,0 +1,110 @@+{- |+This module follows the convention found in <https://git-scm.com/docs/gitignore>+-}+module Cryptol.Project.WildMatch (wildmatch) where++import Data.Char+import System.FilePath++-- | `wildmatch p x` checks if file `x` matches pattern `p`.+wildmatch :: String -> FilePath -> Bool+wildmatch mbNegP x+  -- When a pattern contains a path separator, it matches the whole path+  | '/' `elem` p = mbNeg (matchP (ensureLeadingSlash p) (ensureLeadingSlash x))+  -- When the pattern contains no path separator it only matches the filename+  | otherwise    = mbNeg (matchP p (takeFileName x))+  where+  (mbNeg,p) =+    case mbNegP of+      '!':rest -> (not,rest)+      _        -> (id,mbNegP)+++-- | Normalize a path pattern to start with a leading slash for consistency later+ensureLeadingSlash :: String -> String+ensureLeadingSlash ('/':p) = '/':p+ensureLeadingSlash p       = '/':p++------------------+-- Path processing+------------------++matchP :: String -> FilePath -> Bool++matchP "/**" _ = True -- Accepts everything++matchP ('/':'*':'*':'/':p) ('/':xs) =+  matchP ('/':p) ('/':xs) ||+  matchP ('/':'*':'*':'/':p) (dropWhile ('/'/=) xs)++matchP ('/':'*':'*':'/':_p) _ = False++-- escaped characters match literally+matchP ('\\':a:p) (x:xs) = a==x && matchP p xs+matchP ('\\':_)   ""     = False++-- match zero or more component characters+matchP ('*':p) (x:xs) = matchP p (x:xs) || ('/' /= x) && matchP ('*':p) xs+matchP ('*':p) ""     = matchP p ""++-- match zero or one component characters+matchP ('?':p) (x : xs) = matchP p (x : xs) || ('/' /= x) && matchP p xs+matchP ('?':p) ""       = matchP p ""++-- process a character class+matchP ('[':p) (x:xs)+  | x == '/'                         = False+  | Just (f, p') <- parseCharClass p = f x && matchP p' xs+matchP ('[':_) _                     = False++-- literal match+matchP (a:p) (x:xs) = a==x && matchP p xs+matchP (_a:_p) ""   = False++matchP "" xs        = null xs++-----------------------------+-- Character class processing+-----------------------------++parseCharClass :: String -> Maybe (Char -> Bool, String)++-- leading ! negates a character class+parseCharClass ('!':p) =+ do (f, p') <- parseCharClass1 True p+    Just (not . f, p')+parseCharClass p = parseCharClass1 True p++-- A ] in the first position is a literal match+parseCharClass1 :: Bool -> [Char] -> Maybe (Char -> Bool, [Char])+parseCharClass1 False (']':p) =+  Just (const False, p)++parseCharClass1 first (x:'-':y:p)+  | first || x /= ']', y /= ']' = cc (\c -> x <= c && c <= y) p++parseCharClass1 _ ('[':':':p) =+  case span (\x -> 'a' <= x && x <= 'z') p of+    ("alnum", ':':']':p1) -> cc isAlphaNum p1+    ("cntrl", ':':']':p1) -> cc isControl p1+    ("lower", ':':']':p1) -> cc isLower p1+    ("space", ':':']':p1) -> cc isSpace p1+    ("alpha", ':':']':p1) -> cc isAlpha p1+    ("digit", ':':']':p1) -> cc isDigit p1+    ("print", ':':']':p1) -> cc isPrint p1+    ("upper", ':':']':p1) -> cc isUpper p1+    ("blank", ':':']':p1) -> cc (`elem` " \t") p1+    ("graph", ':':']':p1) -> cc (\x -> isAlphaNum x || isPunctuation x) p1+    ("punct", ':':']':p1) -> cc isPunctuation p1+    ("xdigit", ':':']':p1) -> cc isHexDigit p1+    (_       , ':':']':_) -> Nothing+    _ -> cc ('['==) (':':p)++parseCharClass1 _ (x:p) = cc (x==) p+parseCharClass1 _ ""    = Nothing++-- Helper for continuing to build a character class matcher+cc :: (Char -> Bool) -> [Char] -> Maybe (Char -> Bool, [Char])+cc f p =+ do (g, p') <- parseCharClass1 False p+    Just (\x -> f x || g x, p')
src/Cryptol/REPL/Command.hs view
@@ -10,10 +10,10 @@ {-# LANGUAGE BlockArguments #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE LambdaCase #-}-{-# LANGUAGE MultiWayIf #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE PatternGuards #-} {-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE ScopedTypeVariables #-} -- See Note [-Wincomplete-uni-patterns and irrefutable patterns] in Cryptol.TypeCheck.TypePat {-# OPTIONS_GHC -Wno-incomplete-uni-patterns #-} module Cryptol.REPL.Command (@@ -55,11 +55,14 @@   , handleCtrlC   , sanitize   , withRWTempFile+  , printModuleWarnings      -- To support Notebook interface (might need to refactor)   , replParse   , liftModuleCmd   , moduleCmdResult++  , loadProjectREPL   ) where  import Cryptol.REPL.Monad@@ -74,6 +77,7 @@ import qualified Cryptol.ModuleSystem.NamingEnv as M import qualified Cryptol.ModuleSystem.Renamer as M     (RenamerWarning(SymbolShadowed, PrefixAssocChanged))+import qualified Cryptol.Utils.Logger as Logger import qualified Cryptol.Utils.Ident as M import qualified Cryptol.ModuleSystem.Env as M import Cryptol.ModuleSystem.Fingerprint(fingerprintHexString)@@ -106,6 +110,7 @@ import           Cryptol.Utils.Panic(panic) import           Cryptol.Utils.RecordMap import qualified Cryptol.Parser.AST as P+import qualified Cryptol.Project as Proj import qualified Cryptol.Transform.Specialize as S import Cryptol.Symbolic   ( ProverCommand(..), QueryType(..)@@ -122,6 +127,7 @@ import Text.Read (readMaybe) import Control.Applicative ((<|>)) import qualified Data.Set as Set+import qualified Data.Map.Strict as Map import Data.ByteString (ByteString) import qualified Data.ByteString as BS import qualified Data.ByteString.Char8 as BS8@@ -129,7 +135,6 @@ import Data.Char (isSpace,isPunctuation,isSymbol,isAlphaNum,isAscii) import Data.Function (on) import Data.List (intercalate, nub, isPrefixOf)-import qualified Data.Map as Map import Data.Maybe (fromMaybe,mapMaybe,isNothing) import System.Environment (lookupEnv) import System.Exit (ExitCode(ExitSuccess))@@ -146,7 +151,7 @@ import qualified System.Random.TF.Instances as TFI import Numeric (showFFloat) import qualified Data.Text as T-import Data.IORef(newIORef, readIORef, writeIORef, modifyIORef)+import Data.IORef(newIORef, readIORef, writeIORef)  import GHC.Float (log1p, expm1) @@ -155,6 +160,8 @@  import qualified Data.SBV.Internals as SBV (showTDiff) import Data.Foldable (foldl')+import qualified Cryptol.Project.Cache as Proj+import Cryptol.Project.Monad (LoadProjectMode)   @@ -351,6 +358,7 @@              , "expression into a file. The first column in each line is"              , "the expected output, and the remainder are the inputs. The"              , "number of tests is determined by the \"tests\" option."+             , "Use filename \"-\" to write tests to stdout."              ])     ""   , CommandDescr [ ":generate-foreign-header" ] ["FILE"] (FilenameArg genHeaderCmd)@@ -473,12 +481,13 @@          Nothing -> raise (TypeNotTestable ty)          Just gens -> return gens      tests <- withRandomGen (\g -> io $ TestR.returnTests' g gens val testNum)-     out <- forM tests $+     outs <- forM tests $             \(args, x) ->               do argOut <- mapM (rEval . E.ppValue Concrete ppopts) args                  resOut <- rEval (E.ppValue Concrete ppopts x)                  return (renderOneLine resOut ++ "\t" ++ intercalate "\t" (map renderOneLine argOut) ++ "\n")-     writeResult <- io $ X.try (writeFile outFile (concat out))+     let out = concat outs+     writeResult <- io (X.try (if outFile == "-" then putStr out else writeFile outFile out))      case writeResult of        Right{} -> pure emptyCommandResult        Left e ->@@ -505,7 +514,7 @@                do let str = nameStr x                   rPutStr $ "property " ++ str ++ " "                   let texpr = T.EVar x-                  let schema = M.ifDeclSig d+                  let schema = T.dSignature d                   nd <- M.mctxNameDisp <$> getFocusedEnv                   let doc = fixNameDisp nd (pp texpr)                   testReport <- qcExpr qcMode doc texpr schema@@ -827,7 +836,7 @@                   then rPutStr $ ":sat "   ++ str ++ "\n\t"                   else rPutStr $ ":prove " ++ str ++ "\n\t"                 let texpr = T.EVar x-                let schema = M.ifDeclSig d+                let schema = T.dSignature d                 nd <- M.mctxNameDisp <$> getFocusedEnv                 let doc = fixNameDisp nd (pp texpr)                 success <- proveSatExpr isSat (M.nameLoc x) doc texpr schema@@ -1340,7 +1349,7 @@       Nothing ->         do rPutStrLn "Invalid module name."            pure emptyCommandResult { crSuccess = False }-    +       Just pimpName -> do         impName <- liftModuleCmd (setFocusedModuleCmd pimpName)         mb <- getLoadedMod@@ -1585,25 +1594,12 @@ getPrimMap  = liftModuleCmd M.getPrimMap  liftModuleCmd :: M.ModuleCmd a -> REPL a-liftModuleCmd cmd =-  do evo <- getEvalOptsAction-     env <- getModuleEnv-     callStacks <- getCallStacks-     tcSolver <- getTCSolver-     let minp =-             M.ModuleInput-                { minpCallStacks = callStacks-                , minpEvalOpts   = evo-                , minpByteReader = BS.readFile-                , minpModuleEnv  = env-                , minpTCSolver   = tcSolver-                }-     moduleCmdResult =<< io (cmd minp)+liftModuleCmd cmd = moduleCmdResult =<< io . cmd =<< getModuleInput --- TODO: add filter for my exhaustie prop guards warning here+-- TODO: add filter for my exhaustive prop guards warning here -moduleCmdResult :: M.ModuleRes a -> REPL a-moduleCmdResult (res,ws0) = do+printModuleWarnings :: [M.ModuleWarning] -> REPL ()+printModuleWarnings ws0 = do   warnDefaulting  <- getKnownUser "warnDefaulting"   warnShadowing   <- getKnownUser "warnShadowing"   warnPrefixAssoc <- getKnownUser "warnPrefixAssoc"@@ -1642,6 +1638,10 @@          $ ws0   names <- M.mctxNameDisp <$> getFocusedEnv   mapM_ (rPrint . runDoc names . pp) ws++moduleCmdResult :: M.ModuleRes a -> REPL a+moduleCmdResult (res,ws) = do+  printModuleWarnings ws   case res of     Right (a,me') -> setModuleEnv me' >> return a     Left err      ->@@ -1653,6 +1653,7 @@                   do setEditPath file                      return e                 _ -> return err+         names <- M.mctxNameDisp <$> getFocusedEnv          raise (ModuleSystemError names e)  @@ -1985,7 +1986,7 @@                        mapM_ (\j -> rPutStrLn ("     , " ++ f j)) is                        rPutStrLn "     ]" -       depList show               "includes" (Set.toList (M.fiIncludeDeps fi))+       depList show               "includes" (Map.keys   (M.fiIncludeDeps fi))        depList (show . show . pp) "imports"  (Set.toList (M.fiImportDeps  fi))        depList show               "foreign"  (Map.toList (M.fiForeignDeps fi)) @@ -2062,58 +2063,88 @@ checkBlock ::   [T.Text] {- ^ lines of the code block -} ->   REPL [SubcommandResult]-checkBlock = isolated . go+checkBlock = isolated . go . continuedLines   where     go [] = pure []-    go (line:block) =-      case parseCommand (findNbCommand True) (T.unpack line) of-        Nothing -> do-          pure [SubcommandResult-            { srInput = line-            , srLog = "Failed to parse command"-            , srResult = emptyCommandResult { crSuccess = False }-            }]-        Just Ambiguous{} -> do-          pure [SubcommandResult-            { srInput = line-            , srLog = "Ambiguous command"-            , srResult = emptyCommandResult { crSuccess = False }-            }]-        Just Unknown{} -> do-          pure [SubcommandResult-            { srInput = line-            , srLog = "Unknown command"-            , srResult = emptyCommandResult { crSuccess = False }-            }]-        Just (Command cmd) -> do-          (logtxt, eresult) <- captureLog (Cryptol.REPL.Monad.try (cmd 0 Nothing))-          case eresult of-            Left e -> do-              let result = SubcommandResult+    go (line:block)+      | T.all isSpace line = go block+      | otherwise =+       do let tab n = replicate n ' '+          rPutStrLn (tab 4 ++ T.unpack line)+          let doErr msg =+               do rPutStrLn (tab 6 ++ msg) +                  pure [SubcommandResult                     { srInput = line-                    , srLog = logtxt ++ show (pp e) ++ "\n"+                    , srLog = msg                     , srResult = emptyCommandResult { crSuccess = False }-                    }-              pure [result]-            Right result -> do-              let subresult = SubcommandResult-                    { srInput = line-                    , srLog = logtxt-                    , srResult = result-                    }-              subresults <- checkBlock block-              pure (subresult : subresults)+                    }]+          case parseCommand (findNbCommand True) (T.unpack line) of+            Nothing -> doErr "Failed to parse command"+            Just Ambiguous{} -> doErr "Ambiguous command"+            Just Unknown{} -> doErr "Unknown command"+            Just (Command cmd) -> do+              (logtxt, eresult) <- captureLog (Cryptol.REPL.Monad.try (cmd 0 Nothing))+              case eresult of+                Left e -> do+                  let result = SubcommandResult+                        { srInput = line+                        , srLog = logtxt ++ show (pp e) ++ "\n"+                        , srResult = emptyCommandResult { crSuccess = False }+                        }+                  pure [result]+                Right result -> do+                  let subresult = SubcommandResult+                        { srInput = line+                        , srLog = logtxt+                        , srResult = result+                        }+                  subresults <- checkBlock block+                  pure (subresult : subresults) +-- | Combine lines ending in a backslash with the next line.+continuedLines :: [T.Text] -> [T.Text]+continuedLines xs =+  case span ("\\" `T.isSuffixOf`) xs of+    ([], []) -> []+    (a, []) -> [concat' (map T.init a)] -- permissive+    (a, b:bs) -> concat' (map T.init a ++ [b]) : continuedLines bs+  where+    -- concat that eats leading whitespace between elements+    concat' [] = T.empty+    concat' (y:ys) = T.concat (y : map (T.dropWhile isSpace) ys)++ captureLog :: REPL a -> REPL (String, a) captureLog m = do   previousLogger <- getLogger   outputsRef <- io (newIORef [])-  setPutStr (\str -> modifyIORef outputsRef (str:))+  setPutStr $ \str ->+    unless (null str) $+    do lns <- readIORef outputsRef+       let msg = preTab lns (postTab str)+       Logger.logPutStr previousLogger msg+       writeIORef outputsRef (str:lns)   result <- m `finally` setLogger previousLogger   outputs <- io (readIORef outputsRef)   let output = interpretControls (concat (reverse outputs))   pure (output, result)+  where+  tab = replicate 6 ' ' +  preTab prevLns msg =+    case prevLns of+      l : _+        | last l /= '\n' -> msg+      _ -> tab ++ msg++  postTab cs =+    case cs of+      [] -> ""+      ['\n'] -> "\n"+      '\n' : more -> '\n' : tab ++ postTab more+      c : more -> c : postTab more+        + -- | Apply control character semantics to the result of the logger interpretControls :: String -> String interpretControls ('\b' : xs) = interpretControls xs@@ -2130,7 +2161,8 @@ -- | Check all the code blocks in a given docstring. checkDocItem :: T.DocItem -> REPL DocstringResult checkDocItem item =- do xs <- case traverse extractCodeBlocks (T.docText item) of+ do rPrint ("  Docstrings on" <+> pp (T.docFor item))+    xs <- case traverse extractCodeBlocks (T.docText item) of             [] -> pure [] -- optimization             bs ->               Ex.bracket@@ -2150,9 +2182,31 @@ checkDocStrings :: M.LoadedModule -> REPL [DocstringResult] checkDocStrings m = do   let dat = M.lmdModule (M.lmData m)+  rPrint ("Checking module" <+> pp (T.mName dat))   let ds = T.gatherModuleDocstrings (M.ifaceNameToModuleMap (M.lmInterface m)) dat-  traverse checkDocItem ds+  results <- traverse checkDocItem ds+  updateDocstringCache m (all checkDocstringResult results)+  pure results +checkDocstringResult :: DocstringResult -> Bool+checkDocstringResult r = all (all (crSuccess . srResult)) (drFences r)++updateDocstringCache :: M.LoadedModule -> Bool -> REPL ()+updateDocstringCache m result =+ do cache <- io Proj.loadLoadCache+    case M.lmFilePath m of+      M.InMem{} -> pure ()+      M.InFile fp ->+        case Map.lookup (Proj.CacheInFile fp) (Proj.cacheModules cache) of+          Nothing -> pure ()+          Just entry ->+            if Proj.moduleFingerprint (Proj.cacheFingerprint entry) /= M.fiFingerprint (M.lmFileInfo m)+              then pure ()+              else+                do let entry' = entry { Proj.cacheDocstringResult = Just result }+                   let cache' = cache { Proj.cacheModules = Map.insert (Proj.CacheInFile fp) entry' (Proj.cacheModules cache) }+                   io (Proj.saveLoadCache cache')+ -- | Evaluate all the docstrings in the specified module. -- -- This command succeeds when:@@ -2169,56 +2223,127 @@       Nothing -> do         rPutStrLn "No current module"         pure emptyCommandResult { crSuccess = False }-      Just mn -> checkModName mn+      Just mn -> checkModName 0 mn   | otherwise =     case parseModName input of       Nothing -> do         rPutStrLn "Invalid module name"         pure emptyCommandResult { crSuccess = False }-      Just mn -> checkModName mn+      Just mn -> checkModName 0 mn +countOutcomes :: [[SubcommandResult]] -> (Int, Int, Int)+countOutcomes = foldl' countOutcomes1 (0, 0, 0)   where+    countOutcomes1 (successes, nofences, failures) []+      = (successes, nofences + 1, failures)+    countOutcomes1 acc result = foldl' countOutcomes2 acc result -    countOutcomes :: [[SubcommandResult]] -> (Int, Int, Int)-    countOutcomes = foldl' countOutcomes1 (0, 0, 0)-      where-        countOutcomes1 (successes, nofences, failures) []-          = (successes, nofences + 1, failures)-        countOutcomes1 acc result = foldl' countOutcomes2 acc result+    countOutcomes2 (successes, nofences, failures) result+      | crSuccess (srResult result) = (successes + 1, nofences, failures)+      | otherwise = (successes, nofences, failures + 1) -        countOutcomes2 (successes, nofences, failures) result-          | crSuccess (srResult result) = (successes + 1, nofences, failures)-          | otherwise = (successes, nofences, failures + 1) +checkModName :: Int -> P.ModName -> REPL CommandResult+checkModName ind mn =+ do env <- getModuleEnv+    case M.lookupModule mn env of+      Nothing ->+        case M.lookupSignature mn env of+          Nothing ->+           do rPutStrLn (tab ++ "Module " ++ show mn ++ " is not loaded")+              pure emptyCommandResult { crSuccess = False }+          Just{} ->+           do rPutStrLn (tab ++ "Skipping docstrings on interface module")+              pure emptyCommandResult+      Just fe+        | T.isParametrizedModule (M.lmdModule (M.lmData fe)) -> do+          rPutStrLn (tab ++ "Skipping docstrings on parameterized module")+          pure emptyCommandResult+        | otherwise -> do+          results <- checkDocStrings fe+          let (successes, nofences, failures) = countOutcomes [concat (drFences r) | r <- results]+          rPutStrLn (tab ++ "Successes: " ++ show successes +++                          ", No fences: " ++ show nofences +++                          ", Failures: " ++ show failures)+          pure emptyCommandResult { crSuccess = failures == 0 }+  where+  tab = replicate ind ' ' -    checkModName :: P.ModName -> REPL CommandResult-    checkModName mn = do-        mb <- M.lookupModule mn <$> getModuleEnv-        case mb of-          Nothing -> do-            rPutStrLn ("Module " ++ show input ++ " is not loaded")-            pure emptyCommandResult { crSuccess = False }+-- | Load a project.+-- Note that this does not update the Cryptol environment, it only updates+-- the project cache.+loadProjectREPL :: LoadProjectMode -> Proj.Config -> REPL CommandResult+loadProjectREPL mode cfg =+ do minp <- getModuleInput+    (res, warnings) <- io $ M.runModuleM minp $ Proj.loadProject mode cfg+    printModuleWarnings warnings+    case res of+      Left err ->+       do names <- M.mctxNameDisp <$> getFocusedEnv+          rPrint (pp (ModuleSystemError names err))+          pure emptyCommandResult { crSuccess = False } -          Just fe-            | T.isParametrizedModule (M.lmdModule (M.lmData fe)) -> do-              rPutStrLn "Skipping docstrings on parameterized module"-              pure emptyCommandResult+      Right ((fps, mp, docstringResults),env) ->+       do setModuleEnv env+          let cache0 = fmap (\fp -> Proj.CacheEntry { cacheDocstringResult = Nothing, cacheFingerprint = fp }) fps+          (cache, success) <-+            foldM (\(fpAcc_, success_) (k, v) ->+              case k of+                M.InMem{} -> pure (fpAcc_, success_)+                M.InFile path ->+                  case v of+                    Proj.Invalid e ->+                     do rPrint ("Failed to process module:" <+> (text path <> ":") $$+                                 indent 2 (ppInvalidStatus e))+                        pure (fpAcc_, False) -- report failure+                    Proj.Scanned Proj.Unchanged _ ms ->+                      foldM f (fpAcc_, success_) ms+                      where+                        f (fpAcc, success) (m, _) =+                         do let name = P.thing (P.mName m)+                            case join (Map.lookup (Proj.CacheInFile path) docstringResults) of+                              Just True  ->+                               do rPrint ("Checking module" <+> hcat [pp name, ": PASS (cached)"])+                                  let fpAcc' = Map.adjust (\e -> e{ Proj.cacheDocstringResult = Just True }) (Proj.CacheInFile path) fpAcc+                                  pure (fpAcc', success) -- preserve success -            | otherwise -> do-              results <- checkDocStrings fe-              let (successes, nofences, failures) = countOutcomes [concat (drFences r) | r <- results]+                              Just False ->+                               do rPrint ("Checking module" <+> hcat [pp name, ": FAIL (cached)"])+                                  let fpAcc' = Map.adjust (\e -> e{ Proj.cacheDocstringResult = Just False }) (Proj.CacheInFile path) fpAcc+                                  pure (fpAcc', False) -- preserve failure -              forM_ results $ \dr ->-                unless (null (drFences dr)) $-                 do rPutStrLn ""-                    rPutStrLn ("\nChecking " ++ show (pp (drName dr)))-                    forM_ (drFences dr) $ \fence ->-                      forM_ fence $ \line -> do-                        rPutStrLn ""-                        rPutStrLn (T.unpack (srInput line))-                        rPutStr (srLog line)+                              Nothing ->+                               do checkRes <- checkModName 2 name+                                  let success1 = crSuccess checkRes+                                  let fpAcc' = Map.adjust (\e -> e{ Proj.cacheDocstringResult = Just success1 }) (Proj.CacheInFile path) fpAcc+                                  pure (fpAcc', success && success1) -              rPutStrLn ""-              rPutStrLn ("Successes: " ++ show successes ++ ", No fences: " ++ show nofences ++ ", Failures: " ++ show failures)+                    Proj.Scanned Proj.Changed _ ms ->+                      foldM f (fpAcc_, success_) ms+                      where+                        f (fpAcc, success) (m, _) =+                         do let name = P.thing (P.mName m)+                            checkRes <- checkModName 2 name+                            let fpAcc' = Map.adjust (\fp -> fp { Proj.cacheDocstringResult = Just (crSuccess checkRes) }) (Proj.CacheInFile path) fpAcc+                            pure (fpAcc', success && crSuccess checkRes) -              pure emptyCommandResult { crSuccess = failures == 0 }+              ) (cache0, True) (Map.assocs mp)++          let (passing, failing, missing) =+                foldl+                  (\(a,b,c) x ->+                    case Proj.cacheDocstringResult x of+                      Nothing -> (a,b,c+1)+                      Just True -> (a+1,b,c)+                      Just False -> (a,b+1,c))+                  (0::Int,0::Int,0::Int) (Map.elems cache)++          rPutStrLn ("Passing: " ++ show passing ++ ", Failing: " ++ show failing ++ ", Missing: " ++ show missing)++          io (Proj.saveLoadCache (Proj.LoadCache cache))+          pure emptyCommandResult { crSuccess = success }++ppInvalidStatus :: Proj.InvalidStatus -> Doc+ppInvalidStatus = \case+    Proj.InvalidModule modErr -> pp modErr+    Proj.InvalidDep d _ -> "Error in dependency: " <> pp d
src/Cryptol/REPL/Monad.hs view
@@ -63,6 +63,7 @@   , withRandomGen   , setRandomGen   , getRandomGen+  , getModuleInput      -- ** Config Options   , EnvVal(..)@@ -127,6 +128,7 @@ import qualified Control.Monad.Catch as Ex import Control.Monad.IO.Class import Control.Monad.Trans.Control+import qualified Data.ByteString as BS import Data.Char (isSpace, toLower) import Data.IORef     (IORef,newIORef,readIORef,atomicModifyIORef)@@ -248,7 +250,7 @@         | M.isLoadedParamMod m loaded -> modName ++ "(parameterized)"         | M.isLoadedInterface m loaded -> modName ++ "(interface)"         | otherwise -> modName-        where +        where           modName = pretty m           loaded = M.meLoadedModules (eModuleEnv rw) @@ -646,15 +648,29 @@      return (map (show . pp) (Map.keys (M.namespaceMap M.NSType fNames)))  -- | Return a list of property names, sorted by position in the file.-getPropertyNames :: REPL ([(M.Name,M.IfaceDecl)],NameDisp)+-- Only properties defined in the current module are returned, including+-- private properties in the current module. Imported properties are not+-- returned.+getPropertyNames :: REPL ([(M.Name, T.Decl)], NameDisp) getPropertyNames =-  do fe <- getFocusedEnv-     let xs = M.ifDecls (M.mctxDecls fe)-         ps = sortBy (comparing (from . M.nameLoc . fst))-              [ (x,d) | (x,d) <- Map.toList xs,-                    T.PragmaProperty `elem` M.ifDeclPragmas d ]+ do fe <- getFocusedEnv+    let nd = M.mctxNameDisp fe+    mblm <- fmap (lName =<<) getLoadedMod+    case mblm of+      Nothing -> pure ([], nd)+      Just mn ->+       do mb <- M.lookupModule mn <$> getModuleEnv+          case mb of+            Nothing -> pure ([], nd)+            Just lm -> pure (ps, nd)+              where+                ps =+                  sortBy (comparing (from . M.nameLoc . fst))+                    [ (T.dName d,d)+                    | d <- T.groupDecls =<< T.mDecls (M.lmdModule (M.lmData lm))+                    , T.PragmaProperty `elem` T.dPragmas d+                    ] -     return (ps, M.mctxNameDisp fe)  getModNames :: REPL [I.ModName] getModNames =@@ -688,6 +704,20 @@       setRandomGen g'       pure result +getModuleInput :: REPL (M.ModuleInput IO)+getModuleInput = do+  evo <- getEvalOptsAction+  env <- getModuleEnv+  callStacks <- getCallStacks+  tcSolver <- getTCSolver+  pure M.ModuleInput+    { minpCallStacks = callStacks+    , minpEvalOpts   = evo+    , minpByteReader = BS.readFile+    , minpModuleEnv  = env+    , minpTCSolver   = tcSolver+    }+ -- | Given an existing qualified name, prefix it with a -- relatively-unique string. We make it unique by prefixing with a -- character @#@ that is not lexically valid in a module name.@@ -957,6 +987,17 @@     \case EnvBool b -> do me <- getModuleEnv                           setModuleEnv me { M.meMonoBinds = b }           _         -> return ()++  , OptionDescr "tcSmtFile" ["tc-smt-file"] (EnvString "-") noCheck+    (unlines+      [ "The file to record SMT solver interactions in the type checker (for debugging or offline proving)."+      , "Use \"-\" for stdout." ]) $+    \case EnvString fileName -> do let mfile = if fileName == "-" then Nothing else Just fileName+                                   modifyRW_ (\rw -> rw { eTCConfig = (eTCConfig rw)+                                                                       { T.solverSmtFile = mfile+                                                                       }})+                                   resetTCSolver+          _                  -> return ()    , OptionDescr "tcSolver" ["tc-solver"] (EnvProg "z3" [ "-smt2", "-in" ])     noCheck  -- TODO: check for the program in the path
src/Cryptol/Symbolic.hs view
@@ -56,7 +56,6 @@  import           Cryptol.Backend import           Cryptol.Backend.FloatHelpers(bfValue)-import           Cryptol.Backend.SeqMap (finiteSeqMap) import           Cryptol.Backend.WordValue (wordVal)  import qualified Cryptol.Eval.Concrete as Concrete@@ -268,9 +267,11 @@     VarBit b     -> VBit b     VarInteger i -> VInteger i     VarRational n d -> VRational (SRational n d)-    VarWord w    -> VWord (wordLen sym w) (wordVal w)+    VarWord w    -> VWord (wordVal w)     VarFloat f   -> VFloat f-    VarFinSeq n vs -> VSeq n (finiteSeqMap sym (map (pure . varShapeToValue sym) vs))+    VarFinSeq n vs -> case toFinSeq (map (varShapeToValue sym) vs) of+      Just vs' -> finSeq sym n vs'+      Nothing -> panic "varShapeToValue" ["Unexpected VarBit in VarFinSeq"]     VarTuple vs  -> VTuple (map (pure . varShapeToValue sym) vs)     VarRecord fs -> VRecord (fmap (pure . varShapeToValue sym) fs)     VarEnum tag cons ->
src/Cryptol/Symbolic/SBV.hs view
@@ -29,6 +29,7 @@   import Control.Applicative+import Control.Concurrent (threadDelay) import Control.Concurrent.Async import Control.Concurrent.MVar import Control.Monad.IO.Class@@ -42,7 +43,7 @@  import LibBF(bfNaN) -import qualified Data.SBV as SBV (sObserve, symbolicEnv)+import qualified Data.SBV as SBV (sObserve, symbolicEnv, SMTReasonUnknown (..)) import qualified Data.SBV.Internals as SBV (SBV(..)) import qualified Data.SBV.Dynamic as SBV import qualified Data.SBV.Trans.Control as SBV (SMTOption(..))@@ -88,6 +89,7 @@   , ("cvc5"     , SBV.cvc5     )   , ("yices"    , SBV.yices    )   , ("z3"       , SBV.z3       )+  , ("bitwuzla" , SBV.bitwuzla )   , ("boolector", SBV.boolector)   , ("mathsat"  , SBV.mathSAT  )   , ("abc"      , SBV.abc      )@@ -98,6 +100,7 @@   , ("sbv-cvc5"     , SBV.cvc5     )   , ("sbv-yices"    , SBV.yices    )   , ("sbv-z3"       , SBV.z3       )+  , ("sbv-bitwuzla" , SBV.bitwuzla )   , ("sbv-boolector", SBV.boolector)   , ("sbv-mathsat"  , SBV.mathSAT  )   , ("sbv-abc"      , SBV.abc      )@@ -108,11 +111,41 @@ setTimeoutSecs ::   Int {- ^ seconds -} ->   SBV.SMTConfig -> SBV.SMTConfig-setTimeoutSecs s cfg = cfg-  { SBV.solverSetOptions =-    SBV.OptionKeyword ":timeout" [show (toInteger s * 1000)] :-    filter (not . isTimeout) (SBV.solverSetOptions cfg) }+setTimeoutSecs s cfg = case SBV.name (SBV.solver cfg) of+  SBV.Yices -> cfg'+  -- TODO: although "--timeout" correctly sets the timeout for Yices,+  -- SBV crashes due to an unexpected response from Yices after+  -- a timeout is hit.+  -- As a workaround, we ignore the timeout setting for Yices+  -- and instead rely on 'addDeadmanTimer' to kill Yices when the+  -- timeout is hit.+  -- see:+  --   https://github.com/LeventErkok/sbv/issues/735+  --   https://github.com/SRI-CSL/yices2/issues/547+    {- { SBV.extraArgs =+      ["--timeout", show (toInteger s)] +++      SBV.extraArgs cfg' } -}++  -- NOTE: Once Cryptol requires sbv 11.1.5 as a minimum, we+  -- can use the new 'SetTimeOut' option for all solvers and+  -- the special cases for CVC4 and CVC5 can be dropped.+  SBV.CVC4 -> cfg'+    { SBV.extraArgs =+      ["--tlimit-per", show (toInteger s * 1000)] +++      SBV.extraArgs cfg' }+  SBV.CVC5 -> cfg'+    { SBV.extraArgs =+      ["--tlimit-per", show (toInteger s * 1000)] +++      SBV.extraArgs cfg' }+  _ -> cfg'+    { SBV.solverSetOptions =+      SBV.OptionKeyword ":timeout" [show (toInteger s * 1000)] :+      (SBV.solverSetOptions cfg') }   where+    cfg' = cfg+      { SBV.solverSetOptions =+        filter (not . isTimeout) (SBV.solverSetOptions cfg) }+     isTimeout (SBV.OptionKeyword k _) = k == ":timeout"     isTimeout _ = False @@ -248,6 +281,29 @@               do forM_ others (\a -> X.throwTo (asyncThreadId a) ExitSuccess)                  return r +-- | Wrap a solver call with a given timeout. If the timeout is reached, then+--   the default result is returned and the solver call is terminated.+--   This is required to handle timeouts when using Yices due to a known+--   issue (see 'setTimeoutSecs').+--   However, it can be used with any solver as an additional measure+--   to ensure the timeout is respected.+addDeadmanTimer ::+  Int {- ^ timeout in seconds -} ->+  (SBV.SMTConfig -> res) {- ^ result to give when a timeout is hit -} ->+  (SBV.SMTConfig -> SBV.Symbolic SBV.SVal -> IO res) {- ^ call the SMT solver -} ->+  (SBV.SMTConfig -> SBV.Symbolic SBV.SVal -> IO res)+addDeadmanTimer timeoutSecs _defaultRes callProver | timeoutSecs <= 0 = callProver+addDeadmanTimer timeoutSecs defaultRes callProver =+  let deadmanTimeoutPeriodMicroSeconds =+        (timeoutSecs * 1000000) + -- sec to usec+        1000 -- buffer to wait for solver-native timeout+      deadmanTimer = threadDelay deadmanTimeoutPeriodMicroSeconds+  in \cfg v ->+        do res <- race deadmanTimer (callProver cfg v)+           case res of+             Left () -> return $ defaultRes cfg+             Right a -> return a+ -- | Select the appropriate solver or solvers from the given prover command, --   and invoke those solvers on the given symbolic value. runProver ::@@ -275,9 +331,9 @@                    ] in            case pcQueryType of-            ProveQuery  -> runMultiProvers pc lPutStrLn ps' SBV.proveWith thmSMTResults x-            SafetyQuery -> runMultiProvers pc lPutStrLn ps' SBV.proveWith thmSMTResults x-            SatQuery (SomeSat 1) -> runMultiProvers pc lPutStrLn ps' SBV.satWith satSMTResults x+            ProveQuery  -> runMultiProvers pc lPutStrLn ps' proveWith thmSMTResults x+            SafetyQuery -> runMultiProvers pc lPutStrLn ps' proveWith thmSMTResults x+            SatQuery (SomeSat 1) -> runMultiProvers pc lPutStrLn ps' satWith satSMTResults x             _ -> return (Nothing,                    [SBV.ProofError p                      [":sat with option prover=any requires option satNum=1"]@@ -295,11 +351,17 @@                 | otherwise = p1           in           case pcQueryType of-            ProveQuery  -> runSingleProver pc lPutStrLn p2 SBV.proveWith thmSMTResults x-            SafetyQuery -> runSingleProver pc lPutStrLn p2 SBV.proveWith thmSMTResults x-            SatQuery (SomeSat 1) -> runSingleProver pc lPutStrLn p2 SBV.satWith satSMTResults x-            SatQuery _           -> runSingleProver pc lPutStrLn p2 SBV.allSatWith allSatSMTResults x-+            ProveQuery  -> runSingleProver pc lPutStrLn p2 proveWith thmSMTResults x+            SafetyQuery -> runSingleProver pc lPutStrLn p2 proveWith thmSMTResults x+            SatQuery (SomeSat 1) -> runSingleProver pc lPutStrLn p2 satWith satSMTResults x+            SatQuery _           -> runSingleProver pc lPutStrLn p2 allSatWith allSatSMTResults x+  where+    proveWith =+      addDeadmanTimer timeoutSecs (\cfg -> SBV.ThmResult (SBV.Unknown cfg SBV.UnknownTimeOut)) SBV.proveWith+    satWith =+      addDeadmanTimer timeoutSecs (\cfg -> SBV.SatResult (SBV.Unknown cfg SBV.UnknownTimeOut)) SBV.satWith+    allSatWith =+      addDeadmanTimer timeoutSecs (\cfg -> SBV.AllSatResult False True False [(SBV.Unknown cfg SBV.UnknownTimeOut)]) SBV.allSatWith  -- | Prepare a symbolic query by symbolically simulating the expression found in --   the @ProverQuery@.  The result will either be an error or a list of the types
src/Cryptol/Symbolic/What4.hs view
@@ -81,6 +81,7 @@ import qualified What4.SFloat as W4 import qualified What4.SWord as SW import           What4.Solver+import qualified What4.Solver.Bitwuzla as W4 import qualified What4.Solver.Boolector as W4 import qualified What4.Solver.CVC4 as W4 import qualified What4.Solver.CVC5 as W4@@ -144,7 +145,37 @@        W4Error err  -> liftIO (X.throwIO err)        W4Result p x -> pure (p,x) +-- | Wraps a 'W4.ConfigOption' to provide a consistent interface for setting+--   solver goal timeouts (see 'configTimeoutMilliSeconds', 'configTimeoutSeconds', 'setConfigTimeout').+data ConfigTimeout = +        ConfigTimeout +          (W4.ConfigOption W4.BaseIntegerType)+          -- | Translate a 'W4.SolverGoalTimeout' into the integer backing this config option.+          (W4.SolverGoalTimeout -> Integer) +-- | Construct a 'ConfigTimeout' from a 'W4.ConfigOption', where the given+--   option configures a solver-specific timeout measured in milliseconds.+configTimeoutMilliSeconds :: W4.ConfigOption W4.BaseIntegerType -> ConfigTimeout+configTimeoutMilliSeconds opt = ConfigTimeout opt W4.getGoalTimeoutInMilliSeconds++-- | Construct a 'ConfigTimeout' from a 'W4.ConfigOption', where the given+--   option configures a solver-specific timeout measured in seconds. +--   Rounds up to at least 1 second when setting a non-zero timeout +--   (see 'W4.getGoalTimeoutInSeconds').+configTimeoutSeconds :: W4.ConfigOption W4.BaseIntegerType -> ConfigTimeout+configTimeoutSeconds opt = ConfigTimeout opt W4.getGoalTimeoutInSeconds++setConfigTimeout :: +  W4.IsExprBuilder sym =>+  ConfigTimeout ->+  W4.SolverGoalTimeout ->+  sym ->+  IO ()+setConfigTimeout (ConfigTimeout opt toOpt) t sym = +  do optSetting <- W4.getOptionSetting opt (W4.getConfiguration sym)+     _ <- W4.trySetOpt optSetting (toOpt t)+     pure ()+ data AnAdapter   = AnAdapter (forall st. SolverAdapter st)   | forall s. W4.OnlineSolver s =>@@ -152,6 +183,7 @@        String        W4.ProblemFeatures        [W4.ConfigDesc]+       ConfigTimeout        (Proxy s)  data W4ProverConfig@@ -159,12 +191,19 @@   | W4OfflineConfig   | W4Portfolio (NonEmpty AnAdapter) +adapters :: W4ProverConfig -> [AnAdapter]+adapters cfg = case cfg of+  W4ProverConfig adpt -> [adpt]+  W4OfflineConfig -> []+  W4Portfolio adpts -> NE.toList adpts+ proverConfigs :: [(String, W4ProverConfig)] proverConfigs =   [ ("w4-cvc4"      , W4ProverConfig cvc4OnlineAdapter)   , ("w4-cvc5"      , W4ProverConfig cvc5OnlineAdapter)   , ("w4-yices"     , W4ProverConfig yicesOnlineAdapter)   , ("w4-z3"        , W4ProverConfig z3OnlineAdapter)+  , ("w4-bitwuzla"  , W4ProverConfig bitwuzlaOnlineAdapter)   , ("w4-boolector" , W4ProverConfig boolectorOnlineAdapter)    , ("w4-abc"       , W4ProverConfig (AnAdapter W4.externalABCAdapter))@@ -175,27 +214,32 @@  z3OnlineAdapter :: AnAdapter z3OnlineAdapter =-  AnOnlineAdapter "Z3" W4.z3Features W4.z3Options+  AnOnlineAdapter "Z3" W4.z3Features W4.z3Options (configTimeoutMilliSeconds W4.z3Timeout)          (Proxy :: Proxy (W4.Writer W4.Z3))  yicesOnlineAdapter :: AnAdapter yicesOnlineAdapter =-  AnOnlineAdapter "Yices" W4.yicesDefaultFeatures W4.yicesOptions+  AnOnlineAdapter "Yices" W4.yicesDefaultFeatures W4.yicesOptions (configTimeoutSeconds W4.yicesGoalTimeout)          (Proxy :: Proxy W4.Connection)  cvc4OnlineAdapter :: AnAdapter cvc4OnlineAdapter =-  AnOnlineAdapter "CVC4" W4.cvc4Features W4.cvc4Options+  AnOnlineAdapter "CVC4" W4.cvc4Features W4.cvc4Options (configTimeoutMilliSeconds W4.cvc4Timeout)          (Proxy :: Proxy (W4.Writer W4.CVC4))  cvc5OnlineAdapter :: AnAdapter cvc5OnlineAdapter =-  AnOnlineAdapter "CVC5" W4.cvc5Features W4.cvc5Options+  AnOnlineAdapter "CVC5" W4.cvc5Features W4.cvc5Options (configTimeoutMilliSeconds W4.cvc5Timeout)          (Proxy :: Proxy (W4.Writer W4.CVC5)) +bitwuzlaOnlineAdapter :: AnAdapter+bitwuzlaOnlineAdapter =+  AnOnlineAdapter "Bitwuzla" W4.bitwuzlaFeatures W4.bitwuzlaOptions (configTimeoutMilliSeconds W4.bitwuzlaTimeout)+         (Proxy :: Proxy (W4.Writer W4.Bitwuzla))+ boolectorOnlineAdapter :: AnAdapter boolectorOnlineAdapter =-  AnOnlineAdapter "Boolector" W4.boolectorFeatures W4.boolectorOptions+  AnOnlineAdapter "Boolector" W4.boolectorFeatures W4.boolectorOptions (configTimeoutMilliSeconds W4.boolectorTimeout)          (Proxy :: Proxy (W4.Writer W4.Boolector))  allSolvers :: W4ProverConfig@@ -203,6 +247,7 @@   $ z3OnlineAdapter :|   [ cvc4OnlineAdapter   , cvc5OnlineAdapter+  , bitwuzlaOnlineAdapter   , boolectorOnlineAdapter   , yicesOnlineAdapter   , AnAdapter W4.externalABCAdapter@@ -240,7 +285,7 @@   adapterNames [] = []   adapterNames (AnAdapter adpt : ps) =     solver_adapter_name adpt : adapterNames ps-  adapterNames (AnOnlineAdapter n _ _ _ : ps) =+  adapterNames (AnOnlineAdapter n _ _ _ _ : ps) =     n : adapterNames ps    filterAdapters [] = pure []@@ -256,7 +301,7 @@         W4.extendConfig (W4.solver_adapter_config_options adpt) (W4.getConfiguration sym)         W4.smokeTest sym adpt -  tryAdapter (AnOnlineAdapter _ fs opts (_ :: Proxy s)) = test `X.catch` (pure . Just)+  tryAdapter (AnOnlineAdapter _ fs opts _ (_ :: Proxy s)) = test `X.catch` (pure . Just)    where     test =       do sym <- W4.newExprBuilder W4.FloatIEEERepr CryptolState globalNonceGenerator@@ -288,7 +333,7 @@   where   setupAnAdapter (AnAdapter adpt) =     W4.extendConfig (W4.solver_adapter_config_options adpt) (W4.getConfiguration sym)-  setupAnAdapter (AnOnlineAdapter _n _fs opts _p) =+  setupAnAdapter (AnOnlineAdapter _n _fs opts _ _p) =     W4.extendConfig opts (W4.getConfiguration sym)  what4FreshFns :: W4.IsSymExprBuilder sym => sym -> FreshVarFns (What4 sym)@@ -411,7 +456,7 @@                                   globalNonceGenerator        setupAdapterOptions solverCfg w4sym        when hashConsing (W4.startCaching w4sym)-       when (timeoutMs > 0) (setTimeout (fromIntegral timeoutMs) w4sym)+       when (timeoutMs > 0) (setTimeout solverCfg (fromIntegral timeoutMs) w4sym)        pure w4sym    doLog lg () =@@ -512,7 +557,7 @@   fail ("Solver " ++ solver_adapter_name adpt ++ " does not support incremental solving and " ++         "cannot be used for multi-SAT queries.") -multiSATQuery sym (W4ProverConfig (AnOnlineAdapter nm fs _opts (_ :: Proxy s)))+multiSATQuery sym (W4ProverConfig (AnOnlineAdapter nm fs _opts _ (_ :: Proxy s)))                ProverCommand{..} primMap _logData ts args query satNum0 =     withMaybeFile pcSmtFile WriteMode $ \smtFileHdl ->     X.bracket@@ -692,7 +737,7 @@       return (Just (W4.solver_adapter_name adpt), pres) -singleQuery sym (W4ProverConfig (AnOnlineAdapter nm fs _opts (_ :: Proxy s)))+singleQuery sym (W4ProverConfig (AnOnlineAdapter nm fs _opts _ (_ :: Proxy s)))               ProverCommand{..} primMap _logData ts args msafe query =   withMaybeFile pcSmtFile WriteMode $ \smtFileHdl ->   X.bracket@@ -758,17 +803,22 @@       VarEnum <$> W4.groundEval evalFn tag               <*> traverse (traverse (varShapeToConcrete evalFn)) cons -symCfg :: (W4.IsExprBuilder sym, W4.Opt t a) => sym -> W4.ConfigOption t -> a -> IO ()-symCfg sym x y =- do opt <- W4.getOptionSetting x (W4.getConfiguration sym)-    _   <- W4.trySetOpt opt y-    pure ()+setAdapterTimeout :: +  W4.IsExprBuilder sym =>+  AnAdapter ->+  W4.SolverGoalTimeout ->+  sym ->+  IO ()+setAdapterTimeout (AnAdapter _) _timeout _sym =+  pure () -- NOTE: this is only externalABC at the moment, which has no timeout option+setAdapterTimeout (AnOnlineAdapter _ _ _ cfgTimeout _) timeout sym =+  setConfigTimeout cfgTimeout timeout sym -setTimeout :: W4.IsExprBuilder sym => Integer -> sym -> IO ()-setTimeout s sym =- do symCfg sym W4.z3Timeout (1000 * s)-    symCfg sym W4.cvc4Timeout (1000 * s)-    symCfg sym W4.cvc5Timeout (1000 * s)-    symCfg sym W4.boolectorTimeout (1000 * s)-    symCfg sym W4.yicesGoalTimeout s -- N.B. yices takes seconds-    pure ()+setTimeout ::+  W4.IsExprBuilder sym =>+  W4ProverConfig ->+  Integer {- ^ timeout in seconds -} ->+  sym ->+  IO ()+setTimeout cfg s sym = forM_ (adapters cfg) $ \adpt ->+  setAdapterTimeout adpt (W4.SolverGoalTimeout (1000 * s)) sym
src/Cryptol/Testing/Random.hs view
@@ -47,14 +47,14 @@ import Cryptol.Backend.FloatHelpers (floatFromBits) import Cryptol.Backend.Monad  (runEval,Eval,EvalErrorEx(..)) import Cryptol.Backend.Concrete-import Cryptol.Backend.SeqMap (indexSeqMap, finiteSeqMap)+import Cryptol.Backend.SeqMap (indexSeqMap) import Cryptol.Backend.WordValue (wordVal)  import Cryptol.Eval(evalEnumCon) import Cryptol.Eval.Type      ( TValue(..), TNominalTypeValue(..), ConInfo(..)                               , isNullaryCon )-import Cryptol.Eval.Value     ( GenValue(..), ppValue, defaultPPOpts, fromVFun)-import Cryptol.TypeCheck.Solver.InfNat (widthInteger)+import Cryptol.Eval.Value     ( GenValue(..), ppValue, defaultPPOpts, fromVFun, mkSeq, unsafeToFinSeq, finSeq)+import Cryptol.TypeCheck.Solver.InfNat (widthInteger, Nat' (..)) import Cryptol.Utils.Ident    (Ident) import Cryptol.Utils.Panic    (panic) import Cryptol.Utils.RecordMap@@ -160,7 +160,7 @@     TVSeq n TVBit -> Just (randomWord sym n)     TVSeq n el ->          do mk <- randomValue sym el-            return (randomSequence n mk)+            return (randomSequence sym n el mk)     TVStream el  ->          do mk <- randomValue sym el             return (randomStream mk)@@ -237,7 +237,7 @@ randomWord :: (Backend sym, RandomGen g) => sym -> Integer -> Gen g sym randomWord sym w _sz g =    let (val, g1) = randomR (0,2^w-1) g-   in (VWord w . wordVal <$> wordLit sym w val, g1)+   in (VWord . wordVal <$> wordLit sym w val, g1)  {-# INLINE randomStream #-} @@ -251,14 +251,14 @@  {- | Generate a random sequence.  This should be used for sequences other than bits.  For sequences of bits use "randomWord". -}-randomSequence :: (Backend sym, RandomGen g) => Integer -> Gen g sym -> Gen g sym-randomSequence w mkElem sz g0 = do+randomSequence :: (Backend sym, RandomGen g) => sym -> Integer -> TValue -> Gen g sym -> Gen g sym+randomSequence sym w elty mkElem sz g0 = do   let (g1,g2) = split g0   let f g = let (x,g') = mkElem sz g              in seq x (Just (x, g'))   let xs = Seq.fromList $ genericTake w $ unfoldr f g1-  let v  = VSeq w $ indexSeqMap $ \i -> Seq.index xs (fromInteger i)-  seq xs (pure v, g2)+  let v  = mkSeq sym (Nat w) elty $ indexSeqMap $ \i -> Seq.index xs (fromInteger i)+  seq xs (v, g2)  {-# INLINE randomTuple #-} @@ -493,11 +493,11 @@     TVArray{}   -> []     TVStream{}  -> []     TVSeq n TVBit ->-      [ VWord n (wordVal (BV n x))+      [ VWord (wordVal (BV n x))       | x <- [ 0 .. 2^n - 1 ]       ]     TVSeq n el ->-      [ VSeq n (finiteSeqMap Concrete (map pure xs))+      [ finSeq Concrete n (unsafeToFinSeq (map pure xs)) -- safe, since the TVBit case is covered above       | xs <- sequence (genericReplicate n (typeValues el))       ]     TVTuple ts ->
src/Cryptol/TypeCheck.hs view
@@ -85,7 +85,7 @@               res   <- inferBinds True False                 [ P.Bind                     { P.bName      = P.Located { P.srcRange = loc, P.thing = fresh }-                    , P.bParams    = []+                    , P.bParams    = P.noParams                     , P.bDef       = P.Located (inpRange inp) (P.exprDef expr)                     , P.bPragmas   = []                     , P.bSignature = Nothing
src/Cryptol/TypeCheck/AST.hs view
@@ -13,7 +13,6 @@ {-# LANGUAGE FlexibleInstances, FlexibleContexts #-} {-# LANGUAGE DeriveAnyClass, DeriveGeneric       #-} {-# LANGUAGE OverloadedStrings                   #-}-{-# LANGUAGE NamedFieldPuns                      #-} {-# LANGUAGE ViewPatterns                        #-} module Cryptol.TypeCheck.AST   ( module Cryptol.TypeCheck.AST@@ -31,6 +30,7 @@   , DocFor(..)   ) where +import Data.Maybe(catMaybes) import Cryptol.Utils.Panic(panic) import Cryptol.Utils.Ident (Ident,isInfixIdent,ModName,PrimIdent,prelPrim) import Cryptol.Parser.Position(Located, HasLoc(..), Range)@@ -57,7 +57,7 @@ import qualified Data.IntMap as IntMap import           Data.Map    (Map) import qualified Data.Map    as Map-import           Data.Maybe  (mapMaybe, maybeToList)+import           Data.Maybe  (mapMaybe, maybeToList, isJust) import           Data.Set    (Set) import           Data.Text   (Text) @@ -227,6 +227,8 @@              | EWhere Expr [DeclGroup] +            {- | Use 'ePropGuards' when constructing to get automatic+                 simplification of trivial constraints -}             | EPropGuards [([Prop], Expr)] Type                deriving (Show, Generic, NFData)@@ -289,6 +291,20 @@   where v = fromEnum c         w = 8 :: Int +-- | Construct a prop guard expression simplifying trivial cases.+ePropGuards :: [([Prop], Expr)] -> Type -> Expr+ePropGuards guards ty =+  case check True guards of+    Left body     -> body+    Right guards' -> EPropGuards guards' ty+  where+    check _ [] = Right []+    check trivial ((p, e):xs)+      | trivial, all (null . pSplitAnd) p = Left e+      | otherwise = ((p,e):) <$> check trivial' xs+      where+        trivial' = trivial && any (isJust . tIsError) p+ instance PP TCTopEntity where   ppPrec _ te =     case te of@@ -509,17 +525,25 @@  instance PP n => PP (WithNames (ModuleG n)) where   ppPrec _ (WithNames Module { .. } nm) =-    vcat [ text "module" <+> pp mName+    vcat $+    catMaybes+         [ Just (text "module" <+> pp mName)+         , Just ""          -- XXX: Print exports?-         , vcat (map pp' (Map.elems mTySyns))+         , vcat' (map pp' (Map.elems mTySyns))          -- XXX: Print abstarct types/functions-         , vcat (map pp' mDecls)+         , vcat' (map pp' mDecls) -         , vcat (map pp (Map.elems mFunctors))+         , vcat' (map pp (Map.elems mFunctors))++         , vcat' (map ppSig (Map.toList mSignatures))          ]     where mps = map mtpParam (Map.elems mParamTypes)           pp' :: PP (WithNames a) => a -> Doc           pp' = ppWithNames (addTNames mps nm)+          ppSig (x,y) = "interface module" <+> pp x <+> "where"+                        $$ indent 2 (pp y)+          vcat' xs = if null xs then Nothing else Just (vcat xs)  instance PP (WithNames TCTopEntity) where   ppPrec _ (WithNames ent nm) =
src/Cryptol/TypeCheck/Error.hs view
@@ -25,6 +25,11 @@ import Cryptol.ModuleSystem.Name(Name) import Cryptol.Utils.RecordMap +-- | Clean up error messages by:+---  * only reporting one error (most severe) for any given source location+--   * sorting errors by source location (they are accumulated in+--     reverse order by 'recordError')+--   * dropping any errors that are subsumed by another cleanupErrors :: [(Range,Error)] -> [(Range,Error)] cleanupErrors = dropErrorsFromSameLoc               . sortBy (compare `on` (cmpR . fst))    -- order errors@@ -56,6 +61,17 @@          in dropSubsumed (err : filter keep survived) (filter keep rest)       [] -> survived +-- | Clean up warning messages by sorting them by source location+--   (they are accumulated in reverse order by 'recordWarning').+cleanupWarnings :: [(Range,Warning)] -> [(Range,Warning)]+cleanupWarnings = +  sortBy (compare `on` (cmpR . fst))    -- order warnings+  where+    cmpR r  = ( source r    -- First by file+              , from r      -- Then starting position+              , to r        -- Finally end position+              )+ -- | Should the first error suppress the next one. subsumes :: (Range,Error) -> (Range,Error) -> Bool subsumes (_,NotForAll _ _ x _) (_,NotForAll _ _ y _) = x == y@@ -65,6 +81,8 @@   case err of     KindMismatch {} -> r1 == r2     _               -> True+subsumes (_, TooManyParams nm1 _ _ _) (_, TypeMismatch (DefinitionOf nm2) _ _ _) =+  nm1 == nm2 subsumes _ _ = False  data Warning  = DefaultingKind (P.TParam Name) P.Kind@@ -93,6 +111,12 @@               | RecursiveTypeDecls [Name]                 -- ^ The type synonym declarations are recursive +              | TooManyParams Name Type Int Int+                -- ^ Name of bind, bind signature, number of patterns given,+                --   expected number of parameters from signature.+                --   More patterns provided for a bind than expected,+                --   given its signature.+               | TypeMismatch TypeSource Path Type Type                 -- ^ Expected type, inferred type @@ -220,6 +244,7 @@      KindMismatch {}                                  -> 10     TyVarWithParams {}                               -> 9+    TooManyParams{}                                  -> 9     TypeMismatch {}                                  -> 8     EnumTypeMismatch {}                              -> 7     SchemaMismatch {}                                -> 7@@ -296,6 +321,7 @@       RecursiveTypeDecls {}     -> err       SchemaMismatch i t1 t2  ->         SchemaMismatch i !$ (apSubst su t1) !$ (apSubst su t2)+      TooManyParams b t i j     -> TooManyParams b !$ (apSubst su t) .$ i .$ j       TypeMismatch src pa t1 t2 -> TypeMismatch src pa !$ (apSubst su t1) !$ (apSubst su t2)       EnumTypeMismatch t        -> EnumTypeMismatch !$ apSubst su t       InvalidConPat {}          -> err@@ -348,6 +374,7 @@       TooFewTyParams {}         -> Set.empty       RecursiveTypeDecls {}     -> Set.empty       SchemaMismatch _ t1 t2    -> fvs (t1,t2)+      TooManyParams _ t _ _     -> fvs t       TypeMismatch _ _ t1 t2    -> fvs (t1,t2)       EnumTypeMismatch t        -> fvs t       InvalidConPat {}          -> Set.empty@@ -470,6 +497,14 @@         addTVarsDescsAfter names err $         nested "Recursive type declarations:"                (commaSep $ map nm ts)+      +      TooManyParams n t i j ->+        addTVarsDescsAfter names err $+        nested "Type signature mismatch." $+          vcat $+            [ "Expected number of parameters:" <+> int j+            , "Actual number of parameters:" <+> int i+            , "When defining" <+> quotes ((pp n <> ":") <+> ppWithNames names t) ]        TypeMismatch src pa t1 t2 ->         addTVarsDescsAfter names err $@@ -819,6 +854,7 @@ computeFreeVarNames :: [(Range,Warning)] -> [(Range,Error)] -> NameMap computeFreeVarNames warns errs =   mkMap numRoots numVaras `IntMap.union` mkMap otherRoots otherVars+    `IntMap.union` mpNames    {- XXX: Currently we pick the names based on the unique of the variable:      smaller uniques get an earlier name (e.g., 100 might get `a` and 200 `b`)@@ -831,20 +867,16 @@   mkName x v = (tvUnique x, v)   mkMap roots vs = IntMap.fromList (zipWith mkName vs (variants roots)) -  (numVaras,otherVars) = partition ((== KNum) . kindOf)-                       $ Set.toList-                       $ Set.filter isFreeTV-                       $ fvs (map snd warns, map snd errs)+  (uvars,non_uvars) = partition isFreeTV+                    $ Set.toList+                    $ fvs (map snd warns, map snd errs)+        +  mpNames = computeModParamNames [ tp | TVBound tp <- non_uvars ] mempty+        +  (numVaras,otherVars) = partition ((== KNum) . kindOf) uvars    otherRoots = [ "a", "b", "c", "d" ]   numRoots   = [ "m", "n", "u", "v" ] -  useUnicode = True--  suff n-    | n < 10 && useUnicode = [toEnum (0x2080 + n)]-    | otherwise = show n--  variant n x = if n == 0 then x else x ++ suff n+  variants roots = [ nameVariant n r | n <- [ 0 .. ], r <- roots ] -  variants roots = [ variant n r | n <- [ 0 .. ], r <- roots ]
src/Cryptol/TypeCheck/Infer.hs view
@@ -799,6 +799,25 @@        [] -> return ()        _  -> newGoals CtExactType ps +-- | Check that the number of named parameters in a binding is compatible with+--   the type signature. This specifically catches the case where there+--   are more named parameters in the binding than the type would imply.+checkBindParams :: P.Bind Name -> TypeWithSource -> InferM ()+checkBindParams b (WithSource ty0 _src _) = case P.bParams b of+  P.PatternParams nbps -> go (length nbps) 0 ty0+  P.DroppedParams _ i -> go i 0 ty0+  where+    -- if the signature implies more parameters than we have available, we'll defer+    -- this check, since the function body itself may be a lambda+    go bindArity _ _ | bindArity <= 0 = return ()+    go bindArity tyArity ty = case ty of+      TUser _ _ ty' -> go bindArity tyArity ty'+      TCon (TC TCFun) [_,y] -> go (bindArity-1) (tyArity+1) y+      -- signature may imply any number of additional parameters given a free type+      TVar TVFree{} -> return ()+      _ -> when (bindArity > 0) $+        recordErrorLoc (P.bindHeaderLoc b)+          (TooManyParams (thing (P.bName b)) ty0 (bindArity + tyArity) tyArity)  checkFun ::   P.FunDesc Name -> [P.Pattern Name] ->@@ -807,13 +826,12 @@ checkFun (P.FunDesc fun offset) ps e tGoal =   inNewScope   do let descs = [ TypeOfArg (ArgDescr fun (Just n)) | n <- [ 1 + offset .. ] ]-      (tys,tRes) <- expectFun fun (length ps) tGoal      let srcs = zipWith3 WithSource tys descs (map getLoc ps)      largs      <- sequence (zipWith checkP ps srcs)      let ds = Map.fromList [ (thing x, x { thing = t }) | (x,t) <- zip largs tys ]      e1 <- withMonoTypes ds-              (checkE e (WithSource tRes TypeOfRes (twsRange tGoal)))+              (checkE e (WithSource tRes (twsSource tGoal) (twsRange tGoal)))       let args = [ (thing x, t) | (x,t) <- zip largs tys ]      return (foldr (\(x,t) b -> EAbs x t b) e1 args)@@ -1128,7 +1146,8 @@         P.DExpr e ->           do let nm = thing (P.bName b)              let tGoal = WithSource t (DefinitionOf nm) (getLoc b)-             e1 <- checkFun (P.FunDesc (Just nm) 0) (P.bParams b) e tGoal+             checkBindParams b tGoal+             e1 <- checkFun (P.FunDesc (Just nm) 0) (P.bindParams b) e tGoal              let f = thing (P.bName b)              return Decl { dName = f                          , dSignature = Forall [] [] t@@ -1227,7 +1246,7 @@                , foldr ETAbs (foldr EProofAbs e2 asmps) as                ) -        P.DPropGuards cases0 -> do+        P.DPropGuards cases0 -> inRangeMb (getLoc cases0) $ do           asmps1 <- applySubstPreds asmps0           t1     <- applySubst t0           cases1 <- mapM (checkPropGuardCase asmps1) cases0@@ -1247,7 +1266,7 @@                , t1                , foldr ETAbs                    (foldr EProofAbs-                     (EPropGuards cases1 t1)+                     (ePropGuards cases1 t1)                    asmps1)                  as                )@@ -1259,7 +1278,8 @@       (e1,cs0) <- collectGoals $ do         let nm = thing (P.bName b)             tGoal = WithSource t0 (DefinitionOf nm) (getLoc b)-        e1 <- checkFun (P.FunDesc (Just nm) 0) (P.bParams b) e0 tGoal+        checkBindParams b tGoal+        e1 <- checkFun (P.FunDesc (Just nm) 0) (P.bindParams b) e0 tGoal         addGoals validSchema         () <- simplifyAllConstraints  -- XXX: using `asmps` also?         return e1@@ -1320,17 +1340,42 @@   we need to consider a branch for each disjunct --- one branch gets the   assumption @~B1@ and another branch gets the assumption @~B2@. Each   branch's implications need to be proven independently.-+- If the solver fails to prove any subgoal, but with an error indicating+  the subgoal may be provable (i.e. the attempt was terminated due to some partial+  heuristic), then pick the next-longest guard as the RHS and re-start. e.g.:+  @+    A /\ ~C1 => B1 /\ B2+    A /\ ~C2 => B1 /\ B2+    A /\ ~C3 => B1 /\ B2+  @+  Note that this is sound because the first step (choosing a guard as the RHS)+  is heuristic: we can always choose to rewrite @P \/ Q@+  into either @~P => Q@ or @~Q => P@. -} checkExhaustive :: Located Name -> [TParam] -> [Prop] -> [[Prop]] -> InferM Bool checkExhaustive name as asmps guards =-  case sortBy cmpByLonger guards of-    [] -> pure False -- XXX: we should check the asmps are unsatisfiable-    longest : rest -> doGoals (theAlts rest) (map toGoal longest)-+  go (sortBy cmpByLonger guards) 0   where+  pluck i xs = case splitAt i xs of+    (_, []) -> Nothing+    (ys,x:xs') -> Just (x, ys ++ xs')++  -- if starting with the longest guard fails with a 'ProofUnknown' result,+  -- then re-try with the next guard in descending order.+  -- NB: in the worst case this is quadratic in the number of guard predicates, but+  -- in practice we expect this number to be low+  go [] _ = pure False -- XXX: we should check the asmps are unsatisfiable+  go goals i = case pluck i goals of+    Just (goalp, rest) ->+      do ok <- doGoals (theAlts rest) (map toGoal goalp)+         case ok of+           ProofSuccess -> pure True+           ProofFail -> pure False+           ProofUnknown -> go goals (i+1)+    Nothing -> pure False+   cmpByLonger props1 props2 = compare (length props2) (length props1)-                                          -- reversed, so that longets is first+                                          -- reversed, so that longest is first    theAlts :: [[Prop]] -> [[Prop]]   theAlts = map concat . sequence . map chooseNeg@@ -1346,11 +1391,13 @@   -- Try to validate all cases   doGoals todo gs =     case todo of-      []     -> pure True+      []     -> pure ProofSuccess       alt : more ->         do ok <- canProve (asmps ++ alt) gs-           if ok then doGoals more gs-                 else pure False+           case ok of+             ProofSuccess -> doGoals more gs+             ProofFail -> pure ProofFail+             ProofUnknown -> pure ProofUnknown    toGoal :: Prop -> Goal   toGoal prop =@@ -1359,10 +1406,29 @@       , goalRange  = srcRange name       , goal       = prop       }+  +  maybeSolvable :: Error -> Bool+  maybeSolvable err = case err of+    UnsolvedDelayedCt{} -> True+    UnsolvedGoals{} -> True+    _ -> False -  canProve :: [Prop] -> [Goal] -> InferM Bool+  canProve :: [Prop] -> [Goal] -> InferM ProofResult   canProve asmps' goals =-    tryProveImplication (Just (thing name)) as asmps' goals+    do res <- tryProveImplication (Just (thing name)) as asmps' goals+       case res of+         Left errs | all maybeSolvable errs -> return ProofUnknown+         Left{} -> return ProofFail+         Right{} -> return ProofSuccess++data ProofResult = +    ProofSuccess+    -- ^ Proof attempt was successful.+  | ProofFail+    -- ^ Proof attempt failed, and goal is most likely not provable.+  | ProofUnknown+    -- ^ Proof attempt failed due to incomplete heuristics, goal may+    -- still be provable.  {- | Generate type-checked syntax for the code in a PropGuard. For example, consider the following (pre–type-checked) syntax for a guard:
src/Cryptol/TypeCheck/InferTypes.hs view
@@ -21,7 +21,7 @@ import           Control.Monad(guard)  import           Cryptol.Parser.Position-import           Cryptol.ModuleSystem.Name (asPrim,nameLoc)+import           Cryptol.ModuleSystem.Name (asPrim,nameLoc,nameIdent) import           Cryptol.TypeCheck.AST import           Cryptol.TypeCheck.PP import           Cryptol.TypeCheck.Subst@@ -31,10 +31,13 @@ import           Cryptol.Utils.Panic(panic) import           Cryptol.Utils.Misc(anyJust) +import           Data.List(mapAccumL,partition)+import           Data.Maybe(mapMaybe) import           Data.Set ( Set ) import qualified Data.Set as Set import           Data.Map ( Map ) import qualified Data.Map as Map+import qualified Data.IntMap as IntMap  import GHC.Generics (Generic) import Control.DeepSeq@@ -45,6 +48,9 @@   , solverVerbose :: Int        -- ^ How verbose to be when type-checking   , solverPreludePath :: [FilePath]     -- ^ Look for the solver prelude in these locations.+  , solverSmtFile :: Maybe FilePath+    -- ^ The optional file to record SMT solver interactions in the type+    -- checker. If 'Nothing', this will print to @stdout@ instead.   } deriving (Show, Generic, NFData)  @@ -58,6 +64,7 @@   , solverArgs = [ "-smt2", "-in" ]   , solverVerbose = 0   , solverPreludePath = searchPath+  , solverSmtFile = Nothing   }  -- | The types of variables in the environment.@@ -319,14 +326,17 @@     _     -> pp ki  addTVarsDescsAfter :: FVS t => NameMap -> t -> Doc -> Doc-addTVarsDescsAfter nm t d+addTVarsDescsAfter nm t = addTVarsDescsAfterFVS nm (fvs t)++addTVarsDescsAfterFVS :: NameMap -> Set TVar -> Doc -> Doc+addTVarsDescsAfterFVS nm vs d   | Set.null vs = d -- TODO? use `hang` here instead to indent things after "where"   | otherwise   = d $$ text "where" $$ vcat (map desc (Set.toList vs))   where-  vs     = fvs t   desc v = ppWithNames nm v <+> text "is" <+> pp (tvInfo v) + addTVarsDescsBefore :: FVS t => NameMap -> t -> Doc -> Doc addTVarsDescsBefore nm t d = vcat (frontMsg ++ [d] ++ backMsg)   where@@ -389,13 +399,16 @@   ppPrec _ (WithNames d names) =     sig $$     hang "we need to show that"-       2 (vcat ( vars ++ asmps ++ +    +       2 (explain (vcat ( vars ++ asmps ++                [ hang "the following constraints hold:"                     2 (vcat                        $ bullets                        $ map (ppWithNames ns1)-                       $ dctGoals d )]))+                       $ dctGoals d )])))     where+ +     bullets xs = [ "•" <+> x | x <- xs ]      sig = case name of@@ -404,7 +417,7 @@             Nothing -> "when checking the module's parameters,"      name  = dctSource d-    vars = case dctForall d of+    vars = case otherTPs of              [] -> []              xs -> ["for any type" <+> commaSep (map (ppWithNames ns1) xs)]     asmps = case dctAsmps d of@@ -412,4 +425,51 @@               xs -> [hang "assuming"                        2 (vcat (bullets (map (ppWithNames ns1) xs)))] -    ns1 = addTNames (dctForall d) names+    tvars = fvs (dctAsmps d, dctGoals d)+    used = filter ((`Set.member` tvars) . TVBound) (dctForall d)+    isModP tp =+      case tpFlav tp of+        TPModParam {} -> True+        _ -> False+    (mpTPs,otherTPs) = partition isModP used+    explain = addTVarsDescsAfterFVS ns1 (Set.fromList (map TVBound mpTPs))+    +    mps = computeModParamNames mpTPs names+    ns1 = addTNames otherTPs mps++++-- | Add a suffix to a name to make a different label.+nameVariant :: Int -> String -> String+nameVariant n x = if n == 0 then x else x ++ suff+  where+  useUnicode = True++  suff+    | n < 10 && useUnicode = [toEnum (0x2080 + n)]+    | otherwise = show n++  ++-- | Pick names for the type parameters that correspond to module parameters,+-- avoiding strings that already appear in the given name map.+-- Returns an extended name map.+computeModParamNames :: [TParam] -> NameMap -> NameMap+computeModParamNames tps names = IntMap.fromList newNames `IntMap.union` names+  where+  newNames = snd (mapAccumL pickName used0 (mapMaybe isModP tps))++  used0 = Set.fromList (IntMap.elems names)++  pickName used (u,i) =+    let ns   = filter (not . (`Set.member` used))+              $ map (`nameVariant` i) [0..]+        name = case ns of+                 x : _ -> x+                 []    -> panic "computeModParamNames" ["Out of names!"]+    in (Set.insert name used, (u,name))++  isModP tp =+    case tpFlav tp of+      TPModParam x -> Just (tpUnique tp, show (pp (nameIdent x)))+      _ -> Nothing
src/Cryptol/TypeCheck/ModuleBacktickInstance.hs view
@@ -376,7 +376,7 @@       ELocated r e      -> ELocated r (rew e)       EProofAbs p e     -> EProofAbs (rewType p) (rew e)       EWhere e ds       -> EWhere (rew e) (rew ds)-      EPropGuards gs t  -> EPropGuards gs' (rewType t)+      EPropGuards gs t  -> ePropGuards gs' (rewType t)         where gs' = [ (rewType <$> p, rew e) | (p,e) <- gs ]      where
src/Cryptol/TypeCheck/Monad.hs view
@@ -51,7 +51,7 @@                                         , Path, rootPath) import           Cryptol.TypeCheck.InferTypes import           Cryptol.TypeCheck.Error( Warning(..),Error(..)-                                        , cleanupErrors, computeFreeVarNames+                                        , cleanupErrors, computeFreeVarNames, cleanupWarnings                                         ) import qualified Cryptol.TypeCheck.SimpleSolver as Simple import qualified Cryptol.TypeCheck.Solver.SMT as SMT@@ -184,10 +184,13 @@               errs -> inferFailed warns [(r,apSubst theSu e) | (r,e) <- errs]    where-  inferOk ws a b c  = pure (InferOK (computeFreeVarNames ws []) ws a b c)+  inferOk ws a b c  = +    let ws1 = cleanupWarnings ws+    in pure (InferOK (computeFreeVarNames ws1 []) ws1 a b c)   inferFailed ws es =     let es1 = cleanupErrors es-    in pure (InferFailed (computeFreeVarNames ws es1) ws es1)+        ws1 = cleanupWarnings ws+    in pure (InferFailed (computeFreeVarNames ws1 es1) ws1 es1)     rw = RW { iErrors     = []@@ -420,7 +423,9 @@ -- | Report an error. recordErrorLoc :: Maybe Range -> Error -> InferM () recordErrorLoc rng e =-  do r <- case rng of+  do r' <- curRange+     r <- case rng of+            Just r | rangeWithin r' r -> pure r'             Just r  -> pure r             Nothing -> case e of                          AmbiguousSize d _ -> return (tvarSource d)
src/Cryptol/TypeCheck/SimpType.hs view
@@ -59,13 +59,16 @@   | Just (n,x1) <- isSumK x = addK n (tAdd x1 y)   | Just (n,y1) <- isSumK y = addK n (tAdd x y1)   | Just v <- matchMaybe (do (a,b) <- (|-|) y-                             guard (x == b)-                             return a) = v+                             ((guard (x == b) >> return a)+                              -- added to handle this case: 2 ^^ (1 + h) - 1 == 2 ^^ h - 1 + 2 ^^ h+                              <|> (same x a >>= \x2 -> return (tSub x2 b)))+                              ) = v   | Just v <- matchMaybe (do (a,b) <- (|-|) x-                             guard (b == y)-                             return a) = v+                             ((guard (b == y) >> return a)+                              <|> (same y a >>= \y2 -> return (tSub y2 b)))+                             ) = v -  | Just v <- matchMaybe (factor <|> same <|> swapVars) = v+  | Just v <- matchMaybe (factor <|> same x y <|> swapVars) = v    | otherwise           = tf2 TCAdd x y   where@@ -101,8 +104,8 @@               guard (a == a')               return (tMul a (tAdd b1 b2)) -  same = do guard (x == y)-            return (tMul (tNum (2 :: Int)) x)+  same x1 y1 = do guard (x1 == y1)+                  return (tMul (tNum (2 :: Int)) x1)    swapVars = do a <- aTVar x                 b <- aTVar y@@ -113,6 +116,13 @@ tSub x y   | Just t <- tOp TCSub (op2 nSub) [x,y] = t   | tIsInf y  = tError (tf2 TCSub x y)++  | tIsInf x = x+    {- This assumes that `y` is finite and not error.  The first should+       follow from the typing on `tSub`, which asserts that the second argument+       is finite and less than the first;  the second should have been handled+       by the first equation above, see `tOp`. -}+   | Just 0 <- yNum = x   | Just k <- yNum   , TCon (TF TCAdd) [a,b] <- tNoUser x@@ -126,6 +136,23 @@                                 <|> (guard (b == y) >> return a))                        = v +    --    x^^(n+h) - x^^h +    -- ~> (x^^n * x^^h) - x^^h +    -- ~> ((x^^n - 1) * x^^h+    -- allows subtraction cancelling to occur when+    -- (2^^h + 2^^h) has been rewritten into 2^^(1+h)+  | Just v <- matchMaybe $ +      do (x_base,x_exp) <- (|^|) x+         (y_base,y_exp) <- (|^|) y+         guard (x_base == y_base)+         x_exp_sum <- anAdd x_exp+         matchSwap x_exp_sum $ \(h,n) -> +           do guard (h == y_exp)+              let x_to_n = tExp x_base n+              let lhs = tSub x_to_n (tNum (1 :: Int))+              return $ tMul lhs y+       = v+   | Just v <- matchMaybe (do (a,b) <- (|-|) y                              return (tSub (tAdd x b) a)) = v @@ -143,7 +170,7 @@   | Just n <- tIsNum y  = mulK n x   | Just v <- matchMaybe swapVars = v   | otherwise = checkExpMul x y-  +   where   mulK 0 _ = tNum (0 :: Int)   mulK 1 t = t@@ -167,7 +194,7 @@                 b <- aTVar y                 guard (b < a)                 return (tf2 TCMul y x)-  +   -- Check if (K^a * K^b) => K^(a + b) otherwise default to standard mul   checkExpMul s t | TCon (TF TCExp) [a,aExp] <- s                   , Just a' <- tIsNum a@@ -215,7 +242,9 @@ tExp x y   | Just t <- tOp TCExp (total (op2 nExp)) [x,y] = t   | Just 0 <- tIsNum y = tNum (1 :: Int)-  | TCon (TF TCExp) [a,b] <- tNoUser y = tExp x (tMul a b)+    -- If `x = (a ^^ b)`, then `(a ^^ b) ^^ y` simplifies to `a ^^ (b * y)`.+    -- This even holds if `a == 0`, given that `0 ^^ 0 == 1` in Cryptol.+  | TCon (TF TCExp) [a,b] <- tNoUser x = tExp a (tMul b y)   | otherwise = tf2 TCExp x y  @@ -310,6 +339,10 @@   , Just 1 <- tIsNum b   , TCon (TF TCExp) [p,q] <- tNoUser a   , Just 2 <- tIsNum p = q++  -- width (2^n) = n + 1+  | TCon (TF TCExp) [m,n] <- tNoUser x+  , Just 2 <- tIsNum m = tf2 TCAdd n (tNum (1 :: Int))    | otherwise = tf1 TCWidth x 
src/Cryptol/TypeCheck/Solve.hs view
@@ -287,13 +287,12 @@        Left errs -> mapM_ recordError errs      return su --- | Tries to prove an implication. If proved, then returns `Right (m_su ::--- InferM Subst)` where `m_su` is an `InferM` computation that results in the--- solution substitution, and records any warning invoked during proving. If not--- proved, then returns `Left (m_err :: InferM ())`, which records all errors--- invoked during proving.+-- | Tries to prove an implication. If proved, then returns+-- a (possibly-empty) list of warnings raised during proving.+-- If not proved, then returns `Left errs`, which records all errors+-- raised during proving. tryProveImplication :: -  Maybe Name -> [TParam] -> [Prop] -> [Goal] -> InferM Bool+  Maybe Name -> [TParam] -> [Prop] -> [Goal] -> InferM (Either [Error] [Warning]) tryProveImplication lnam as ps gs =   do evars <- varsWithAsmps      solver <- getSolver@@ -301,11 +300,10 @@      extraAs <- (map mtpParam . Map.elems) <$> getParamTypes      extra   <- map thing <$> getParamConstraints -     (mbErr,_su) <- io (proveImplicationIO solver False lnam evars+     (res,_su) <- io (proveImplicationIO solver False lnam evars                             (extraAs ++ as) (extra ++ ps) gs)-     case mbErr of-       Left {}  -> pure False-       Right {} -> pure True+     return res+  proveImplicationIO :: Solver                    -> Bool     -- ^ Whether to remove duplicate goals in errors
src/Cryptol/TypeCheck/Solver/Numeric.hs view
@@ -151,12 +151,21 @@   tryGeqThanSub :: Ctxt -> Type -> Type -> Match Solved-tryGeqThanSub _ x y =+tryGeqThanSub ctxt x y =    -- t1 >= t1 - t2-  do (a,_) <- (|-|) y-     guard (x == a)-     return (SolvedIf [])+  (do (a,_) <- (|-|) y+      guard (x == a)+      return (SolvedIf []))+  <|> do+    (x1, x2) <- (|-|) x+    (y1, y2) <- (|-|) y+    let x1Fin = iIsFin (typeInterval (intervals ctxt) x1)+    -- (x - z) >= (y - z)  only if x >= y+    ((guard (x2 == y2) >> return (SolvedIf [x1 >== y1]))+     <|>+    -- (z - x) >= (z - y)  only if y >= x and fin z+     (guard (x1 == y1 && x1Fin) >> return (SolvedIf [y2 >== x2])))  tryGeqThanVar :: Ctxt -> Type -> TVar -> Match Solved tryGeqThanVar _ctxt ty x =
src/Cryptol/TypeCheck/Solver/SMT.hs view
@@ -41,12 +41,13 @@ import           Data.Map ( Map ) import qualified Data.Map as Map import qualified Data.Set as Set-import           Data.Maybe(catMaybes)+import           Data.Maybe(catMaybes,isJust) import           Data.List(partition) import           Control.Exception import           Control.Monad(msum,zipWithM,void) import           Data.Char(isSpace) import           Text.Read(readMaybe)+import           System.IO(IOMode(..), hClose, openFile) import qualified System.IO.Strict as StrictIO import           System.FilePath((</>)) import           System.Directory(doesFileExist)@@ -80,12 +81,38 @@ -- | Start a fresh solver instance startSolver :: IO () -> SolverConfig -> IO Solver startSolver onExit sCfg =-   do logger <- if (solverVerbose sCfg) > 0 then SMT.newLogger 0--                                     else return quietLogger-      let smtDbg = if (solverVerbose sCfg) > 1 then Just logger else Nothing-      solver <- SMT.newSolverNotify-                    (solverPath sCfg) (solverArgs sCfg) smtDbg (Just (const onExit))+   do let smtFileEnabled = isJust (solverSmtFile sCfg)+      (logger, mbLoggerCloseHdl) <-+        -- There are two scenarios under which we want to explicitly log SMT+        -- solver interactions:+        --+        -- 1. The user wants to debug-print interactions with the `tcDebug`+        --    option+        -- 2. The user wants to write interactions to the `tcSmtFile` option+        --+        -- We enable logging if either one is true.+        if (solverVerbose sCfg) > 0 || smtFileEnabled+        then case solverSmtFile sCfg of+               Nothing ->+                 do logger <- SMT.newLogger 0+                    pure (logger, Nothing)+               Just file ->+                 do loggerHdl <- openFile file WriteMode+                    logger <- SMT.newLoggerWithHandle loggerHdl 0+                    pure (logger, Just (hClose loggerHdl))+        else pure (quietLogger, Nothing)+      let smtDbg = if (solverVerbose sCfg) > 1 || smtFileEnabled+                   then Just logger+                   else Nothing+      solver <- SMT.newSolverWithConfig+                  (SMT.defaultConfig (solverPath sCfg) (solverArgs sCfg))+                    { SMT.solverOnExit =+                        Just $ \_exitCode ->+                        do onExit+                           sequence_ mbLoggerCloseHdl+                    , SMT.solverLogger =+                        maybe SMT.noSolverLogger SMT.smtSolverLogger smtDbg+                    }       let sol = Solver solver logger       setupSolver sol sCfg       return sol@@ -150,7 +177,7 @@  debugBlock :: Solver -> String -> IO a -> IO a debugBlock s@Solver { .. } name m =-  do debugLog s name+  do debugLog s (";;; " ++ name)      SMT.logTab logger      a <- m      SMT.logUntab logger@@ -348,7 +375,8 @@  -- | Assumes no 'And' isNumeric :: Prop -> Bool-isNumeric ty = matchDefault False $ msum [ is (|=|), is (|/=|), is (|>=|), is aFin ]+isNumeric ty = matchDefault False $ msum [ is (|=|), is (|/=|), is (|>=|)+                                         , is aFin, is aPrime ]   where   is f = f ty >> return True @@ -368,6 +396,7 @@   , aNat            ~> "cryNat"    , aFin            ~> "cryFin"+  , aPrime          ~> "cryPrime"   , (|=|)           ~> "cryEq"   , (|/=|)          ~> "cryNeq"   , (|>=|)          ~> "cryGeq"
src/Cryptol/TypeCheck/Subst.hs view
@@ -448,7 +448,7 @@          EWhere e ds   -> EWhere !$ (go e) !$ (apSubst su ds) -        EPropGuards guards ty -> EPropGuards+        EPropGuards guards ty -> ePropGuards           !$ (\(props, e) -> (apSubst su `fmap'` props, go e)) `fmap'` guards           !$ apSubst su ty 
src/Cryptol/TypeCheck/Type.hs view
@@ -1353,12 +1353,12 @@     let tps = Map.elems (mpnTypes ps)     in     vcat $ map pp tps ++-          if null (mpnConstraints ps) then [] else             [ "type constraint" <+>                 parens (commaSep (map (pp . thing) (mpnConstraints ps)))+            | not (null (mpnConstraints ps))             ] ++            [ pp t | t <- Map.elems (mpnTySyn ps) ] ++-           map pp (Map.elems (mpnFuns ps))+           map pp (Map.elems (mpnFuns ps))   instance PP ModTParam where   ppPrec _ p =
src/Cryptol/TypeCheck/TypePat.hs view
@@ -24,7 +24,7 @@   , aRec   , (|->|) -  , aFin, (|=|), (|/=|), (|>=|)+  , aFin, aPrime, (|=|), (|/=|), (|>=|)   , aAnd   , aTrue @@ -164,6 +164,9 @@  aFin :: Pat Prop Type aFin = tp PFin ar1++aPrime :: Pat Prop Type+aPrime = tp PPrime ar1  (|=|) :: Pat Prop (Type,Type) (|=|) = tp PEqual ar2
src/Cryptol/Utils/Ident.hs view
@@ -23,6 +23,7 @@   , ModName   , modNameToText   , textToModName+  , mainModName   , modNameChunks   , modNameChunksText   , packModName@@ -40,6 +41,7 @@   , modNameArg   , modNameIfaceMod   , modNameToNormalModName+  , modNamesMatch   , modNameIsNormal      -- * Identifiers@@ -51,12 +53,12 @@   , mkInfix   , isInfixIdent   , isUpperIdent+  , isAnonIfaceModIdnet   , nullIdent   , identText-  , modParamIdent   , identAnonArg   , identAnonIfaceMod-  , identAnontInstImport+  , identAnonInstImport   , identIsNormal      -- * Namespaces@@ -161,18 +163,22 @@ -------------------------------------------------------------------------------- -- | Top-level Module names are just text. data ModName = ModName Text MaybeAnon+             | ModMain FilePath   deriving (Eq,Ord,Show,Generic)  instance NFData ModName  -- | Change a normal module name to a module name to be used for an--- anonnymous argument.-modNameArg :: ModName -> ModName-modNameArg (ModName m fl) =+-- anonnymous argument.  The first two ints are the line and column of the+-- name, which are used for name disambiguation.+modNameArg :: Int -> Int -> ModName -> ModName+modNameArg l c (ModName m fl) =   case fl of-    NormalName  -> ModName m AnonModArgName-    _           -> panic "modNameArg" ["Name is not normal"]-+    NormalName        -> ModName m (AnonModArgName l c)+    AnonModArgName {} -> panic "modNameArg" ["Name is not normal"]+    AnonIfaceModName  -> panic "modNameArg" ["Name is not normal", "AnonModArgName" ]+    AnonInstImport {} -> panic "modNameArg" ["Name is not normal", "AnonIfaceModName" ]+modNameArg _ _ (ModMain _) = panic "modNameArg" ["Name is not normal", "AnonInstImport"]  -- | Change a normal module name to a module name to be used for an -- anonnymous interface.@@ -180,25 +186,42 @@ modNameIfaceMod (ModName m fl) =   case fl of     NormalName        -> ModName m AnonIfaceModName-    _                 -> panic "modNameIfaceMod" ["Name is not normal"]+    AnonModArgName {} -> panic "modNameIfaceMod" ["Name is not normal", "AnonModArgName"]+    AnonIfaceModName  -> panic "modNameIfaceMod" ["Name is not normal", "AnonIfaceModName" ]+    AnonInstImport {} -> panic "modNameIfaceMod" ["Name is not normal", "AnonInstImport" ]+modNameIfaceMod (ModMain _) = panic "modNameIfaceMod" ["Name is not normal"] --- | This is used when we check that the name of a module matches the--- file where it is defined. modNameToNormalModName :: ModName -> ModName modNameToNormalModName (ModName t _) = ModName t NormalName+modNameToNormalModName (ModMain p) = ModMain p +-- | This is used when we check that the name of a module matches the+-- file where it is defined.+modNamesMatch :: ModName -> ModName -> Bool+modNamesMatch (ModName a _) (ModName b _) = a == b+modNamesMatch (ModMain a) (ModMain b) = a == b+modNamesMatch _ _ = False+ modNameToText :: ModName -> Text modNameToText (ModName x fl) = maybeAnonText fl x+modNameToText (ModMain _) = "Main"  -- | This is useful when we want to hide anonymous modules. modNameIsNormal :: ModName -> Bool modNameIsNormal (ModName _ fl) = isNormal fl+modNameIsNormal (ModMain _) = False --- | Make a normal module name out of text.+-- | Make a normal module name out of text. This function should not+-- be used to build a @Main@ module name. See 'mainModName'. textToModName :: T.Text -> ModName textToModName txt = ModName txt NormalName +mainModName :: FilePath -> ModName+mainModName = ModMain+ -- | Break up a module name on the separators, `Text` version.+-- For the main module this will forget the filename that+-- corresponds to this module and will only report @["Main"]@ modNameChunksText :: ModName -> [T.Text] modNameChunksText (ModName x fl) = unfoldr step x   where@@ -209,6 +232,7 @@         (a,b)           | T.null b  -> Just (maybeAnonText fl str, b)           | otherwise -> Just (a,T.drop (T.length modSep) b)+modNameChunksText (ModMain _) =  ["Main"]  -- | Break up a module name on the separators, `String` version modNameChunks :: ModName -> [String]@@ -331,20 +355,25 @@     NormalName | Just (c,_) <- T.uncons t -> isUpper c     _ -> False +-- | Is this an ident for an anonymous module interface+-- (i.e., a `parameter` block)?+isAnonIfaceModIdnet :: Ident -> Bool+isAnonIfaceModIdnet (Ident _ ty _) =+  case ty of+    AnonIfaceModName -> True+    _                -> False+ nullIdent :: Ident -> Bool nullIdent = T.null . identText  identText :: Ident -> T.Text identText (Ident _ mb t) = maybeAnonText mb t -modParamIdent :: Ident -> Ident-modParamIdent (Ident x a t) =-  Ident x a (T.append (T.pack "module parameter ") t)- -- | Make an anonymous identifier for the module corresponding to--- a `where` block in a functor instantiation.-identAnonArg :: Ident -> Ident-identAnonArg (Ident b _ txt) = Ident b AnonModArgName txt+-- a `where` block in a functor instantiation. +-- The two ints are the line and column of the definition site.+identAnonArg :: Int -> Int -> Ident+identAnonArg l c = Ident False (AnonModArgName l c) ""  -- | Make an anonymous identifier for the interface corresponding to -- a `parameter` declaration.@@ -352,8 +381,9 @@ identAnonIfaceMod (Ident b _ txt) = Ident b AnonIfaceModName txt  -- | Make an anonymous identifier for an instantiation in an import.-identAnontInstImport :: Ident -> Ident-identAnontInstImport (Ident b _ txt) = Ident b AnonInstImport txt+-- The two ints are the line and column of the definition site.+identAnonInstImport :: Int -> Int -> Ident+identAnonInstImport l c = Ident False (AnonInstImport l c) ""  identIsNormal :: Ident -> Bool identIsNormal (Ident _ mb _) = isNormal mb@@ -362,21 +392,29 @@  -- | Information about anonymous names. data MaybeAnon = NormalName       -- ^ Not an anonymous name.-               | AnonModArgName   -- ^ Anonymous module (from `where`)+               | AnonModArgName Int Int-- ^ Anonymous module (line,column) (from `where`)                | AnonIfaceModName -- ^ Anonymous interface (from `parameter`)-               | AnonInstImport   -- ^ Anonymous instance import+               | AnonInstImport Int Int +                 -- ^ Anonymous instance import (line, column)   deriving (Eq,Ord,Show,Generic)  instance NFData MaybeAnon --- | Modify a name, if it is a nonymous+-- | Modify a name, if it is a nonymous.+-- If we change this, please update the reference manual as well, so that+-- folks know how to refer to these in external tools. maybeAnonText :: MaybeAnon -> Text -> Text maybeAnonText mb txt =   case mb of-    NormalName       -> txt-    AnonModArgName   -> "`where` argument of " <> txt-    AnonIfaceModName -> "`parameter` interface of " <> txt-    AnonInstImport   -> txt+    NormalName -> txt+    AnonModArgName l c+      | T.null txt -> "where_at__" <> suff l c+      | otherwise  -> txt <> "__where"+    AnonIfaceModName    -> txt <> "__parameter"+    AnonInstImport l c  -> "import_at__" <> suff l c+  where+  suff l c = T.pack (if c == 1 then show l else show l ++ "_" ++ show c)+  isNormal :: MaybeAnon -> Bool isNormal mb =
src/Cryptol/Utils/PP.hs view
@@ -174,7 +174,11 @@   fromString = text  renderOneLine :: Doc -> String-renderOneLine d = PP.renderString (PP.layoutCompact (runDocWith defaultPPCfg d))+renderOneLine d = PP.renderString (PP.layoutPretty opts (runDocWith defaultPPCfg d))+  where+    opts = PP.LayoutOptions+      { PP.layoutPageWidth = PP.Unbounded+      }  class PP a where   ppPrec :: Int -> a -> Doc@@ -411,8 +415,8 @@         Qualified m -> ppQual (TopModule m) (pp (ogName og))         NotInScope  -> ppQual (ogModule og)                        case ogFromParam og of-                         Just x  -> pp x <.> "::" <.> pp (ogName og)-                         Nothing -> pp (ogName og)+                         Just x | not (isAnonIfaceModIdnet x) -> pp x <.> "::" <.> pp (ogName og)+                         _ -> pp (ogName og)     where     ppQual mo x =       case mo of
src/Cryptol/Utils/Patterns.hs view
@@ -86,6 +86,10 @@ matchMaybe :: Match a -> Maybe a matchMaybe (Match m) = m Nothing Just +-- | Attempt matching the given pattern against a tuple, +--   making a second attempt with the values swapped if the first fails.+matchSwap :: (a, a) -> Pat (a, a) b -> Match b+matchSwap (x, y) n = n (x, y) <|> n (y, x)  list :: [Pat a b] -> Pat [a] [b] list [] = \a ->