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 +88/−0
- api-tests/Main.hs +114/−0
- cryptol-repl-internal/REPL/Haskeline.hs +401/−0
- cryptol-repl-internal/REPL/Logo.hs +75/−0
- cryptol.cabal +75/−24
- cryptol/Main.hs +73/−22
- cryptol/REPL/Haskeline.hs +0/−356
- cryptol/REPL/Logo.hs +0/−75
- lib/CryptolTC.z3 +13/−4
- src/Cryptol/Backend.hs +8/−1
- src/Cryptol/Backend/Concrete.hs +3/−1
- src/Cryptol/Backend/SBV.hs +2/−1
- src/Cryptol/Backend/What4.hs +2/−1
- src/Cryptol/Backend/WordValue.hs +10/−0
- src/Cryptol/Eval.hs +9/−8
- src/Cryptol/Eval/Concrete.hs +24/−24
- src/Cryptol/Eval/FFI.hs +14/−2
- src/Cryptol/Eval/Generic.hs +110/−95
- src/Cryptol/Eval/Reference.lhs +33/−1
- src/Cryptol/Eval/SBV.hs +1/−1
- src/Cryptol/Eval/Value.hs +94/−27
- src/Cryptol/Eval/What4.hs +8/−8
- src/Cryptol/IR/FreeVars.hs +2/−1
- src/Cryptol/ModuleSystem/Base.hs +59/−27
- src/Cryptol/ModuleSystem/Env.hs +35/−16
- src/Cryptol/ModuleSystem/Fingerprint.hs +30/−14
- src/Cryptol/ModuleSystem/Monad.hs +26/−13
- src/Cryptol/ModuleSystem/Renamer.hs +8/−2
- src/Cryptol/Parser.y +4/−4
- src/Cryptol/Parser/AST.hs +63/−4
- src/Cryptol/Parser/ExpandPropGuards.hs +1/−1
- src/Cryptol/Parser/Names.hs +2/−2
- src/Cryptol/Parser/NoInclude.hs +12/−10
- src/Cryptol/Parser/NoPat.hs +8/−8
- src/Cryptol/Parser/ParserUtils.hs +38/−26
- src/Cryptol/Parser/Position.hs +4/−0
- src/Cryptol/Project.hs +244/−0
- src/Cryptol/Project/Cache.hs +130/−0
- src/Cryptol/Project/Config.hs +75/−0
- src/Cryptol/Project/Monad.hs +214/−0
- src/Cryptol/Project/WildMatch.hs +110/−0
- src/Cryptol/REPL/Command.hs +228/−103
- src/Cryptol/REPL/Monad.hs +49/−8
- src/Cryptol/Symbolic.hs +4/−3
- src/Cryptol/Symbolic/SBV.hs +75/−13
- src/Cryptol/Symbolic/What4.hs +74/−24
- src/Cryptol/Testing/Random.hs +11/−11
- src/Cryptol/TypeCheck.hs +1/−1
- src/Cryptol/TypeCheck/AST.hs +30/−6
- src/Cryptol/TypeCheck/Error.hs +44/−12
- src/Cryptol/TypeCheck/Infer.hs +83/−17
- src/Cryptol/TypeCheck/InferTypes.hs +67/−7
- src/Cryptol/TypeCheck/ModuleBacktickInstance.hs +1/−1
- src/Cryptol/TypeCheck/Monad.hs +9/−4
- src/Cryptol/TypeCheck/SimpType.hs +43/−10
- src/Cryptol/TypeCheck/Solve.hs +8/−10
- src/Cryptol/TypeCheck/Solver/Numeric.hs +13/−4
- src/Cryptol/TypeCheck/Solver/SMT.hs +38/−9
- src/Cryptol/TypeCheck/Subst.hs +1/−1
- src/Cryptol/TypeCheck/Type.hs +2/−2
- src/Cryptol/TypeCheck/TypePat.hs +4/−1
- src/Cryptol/Utils/Ident.hs +66/−28
- src/Cryptol/Utils/PP.hs +7/−3
- src/Cryptol/Utils/Patterns.hs +4/−0
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 ->