Merge remote-tracking branch 'origin/master' into literal-class

# Conflicts:
#	tests/mono-binds/test04.icry.stdout
#	tests/regression/check01.icry.stdout
#	tests/regression/check16-tab.icry.stdout
#	tests/regression/check16.icry.stdout
#	tests/regression/check21.icry.stdout
#	tests/regression/check22.icry.stdout
This commit is contained in:
Iavor Diatchki 2018-06-20 09:14:17 -07:00
commit e579113d05
35 changed files with 213 additions and 184 deletions

View File

@ -14,7 +14,14 @@ else
TESTS=("$@") TESTS=("$@")
fi fi
CRY=$(find dist-newstyle -name cryptol -type f) GHC_VERSION=$(ghc --numeric-version)
if [ ${GHC_VERSION}x == "x" ]; then
echo Failed to guess version of GHC.
exit 1
fi
CRY=$(find dist-newstyle -name cryptol -type f | grep $GHC_VERSION)
cabal new-run cryptol-test-runner -- -c $CRY --ignore-expected ${TESTS[*]} cabal new-run cryptol-test-runner -- -c $CRY --ignore-expected ${TESTS[*]}

View File

@ -51,7 +51,7 @@ subsumes _ _ = False
data Warning = DefaultingKind (P.TParam Name) P.Kind data Warning = DefaultingKind (P.TParam Name) P.Kind
| DefaultingWildType P.Kind | DefaultingWildType P.Kind
| DefaultingTo Doc Type | DefaultingTo TVarInfo Type
deriving (Show, Generic, NFData) deriving (Show, Generic, NFData)
-- | Various errors that might happen during type checking/inference -- | Various errors that might happen during type checking/inference
@ -208,7 +208,7 @@ instance PP (WithNames Warning) where
text "Assuming _ to have" <+> P.cppKind k text "Assuming _ to have" <+> P.cppKind k
DefaultingTo d ty -> DefaultingTo d ty ->
text "Defaulting" <+> d $$ text "to" <+> ppWithNames names ty text "Defaulting" <+> tvarDesc d $$ text "to" <+> ppWithNames names ty
instance PP (WithNames Error) where instance PP (WithNames Error) where
ppPrec _ (WithNames err names) = ppPrec _ (WithNames err names) =
@ -297,7 +297,7 @@ instance PP (WithNames Error) where
<+> text "is ambiguous.") <+> text "is ambiguous.")
$$ text "Arising from:" $$ text "Arising from:"
$$ nest 2 (vcat [ text "*" <+> var v | v <- vs ]) $$ nest 2 (vcat [ text "*" <+> var v | v <- vs ])
where var (TVFree _ _ _ d) = d where var (TVFree _ _ _ d) = tvarDesc d
var x = pp x var x = pp x
UndefinedTypeParameter x -> UndefinedTypeParameter x ->

View File

@ -50,7 +50,8 @@ import Control.Monad(when,zipWithM,unless)
inferModule :: P.Module Name -> InferM Module inferModule :: P.Module Name -> InferM Module
inferModule m = inferModuleK m return inferModule m =
do inferModuleK m return
inferModuleK :: P.Module Name -> (Module -> InferM a) -> InferM a inferModuleK :: P.Module Name -> (Module -> InferM a) -> InferM a
inferModuleK m continue = inferModuleK m continue =
@ -683,7 +684,7 @@ generalize [] gs0 =
generalize bs0 gs0 = generalize bs0 gs0 =
do {- First, we apply the accumulating substituion to the goals do {- First, we apply the accumulating substitution to the goals
and the inferred types, to ensure that we have the most up and the inferred types, to ensure that we have the most up
to date information. -} to date information. -}
gs <- forM gs0 $ \g -> applySubst g gs <- forM gs0 $ \g -> applySubst g
@ -704,11 +705,11 @@ generalize bs0 gs0 =
addGoals later -- these ones we keep around for to solve later addGoals later -- these ones we keep around for to solve later
{- Figure out what might be ambigious. We count something as {- Figure out what might be ambiguous. We count something as
ambiguous if it is to be generalized, but does not appear in ambiguous if it is to be generalized, but does not appear in
the any of the inferred types. Things like that of kind `*` the any of the inferred types. Things like that of kind `*`
are certainly ambiguous because we don't have any fancy type functions are certainly ambiguous because we don't have any fancy type functions
on them. However, things of kind `#` may not actually be mabiguos. on them. However, things of kind `#` may not actually be ambiguous.
-} -}
let (maybeAmbig, ambig) = partition ((KNum ==) . kindOf) let (maybeAmbig, ambig) = partition ((KNum ==) . kindOf)
$ Set.toList $ Set.toList
@ -718,13 +719,13 @@ generalize bs0 gs0 =
{- See if we might be able to default some of the potentially ambiguous {- See if we might be able to default some of the potentially ambiguous
numeric vairables using the constraints that will be part of the numeric variables using the constraints that will be part of the
newly generalized schema. Note that we only use the `here0` constrains newly generalized schema. Note that we only use the `here0` constrains
as these should be the only ones that might mention the potentially as these should be the only ones that might mention the potentially
ambiguous variable. ambiguous variable.
XXX: It is not clear if we should do this, or simply leave the XXX: It is not clear if we should do this, or simply leave the
variables as is. After all, they might not actually be ambiugous... variables as is. After all, they might not actually be ambiguous...
-} -}
let (as0,here1,defSu,ws) = improveByDefaultingWithPure maybeAmbig here0 let (as0,here1,defSu,ws) = improveByDefaultingWithPure maybeAmbig here0
mapM_ recordWarning ws mapM_ recordWarning ws
@ -740,7 +741,7 @@ generalize bs0 gs0 =
{- Finally, we replace free variables with bound ones, and fix-up {- Finally, we replace free variables with bound ones, and fix-up
the definitions as needed to reflect that we are now working the definitions as needed to reflect that we are now working
with polymorphic things. For example, apply each occurance to the with polymorphic things. For example, apply each occurrence to the
type parameters. -} type parameters. -}
totSu <- getSubst totSu <- getSubst
let let
@ -758,7 +759,7 @@ generalize bs0 gs0 =
return (map genB bs) return (map genB bs)
-- | Check a monomrphic binding. -- | Check a monomorphic binding.
checkMonoB :: P.Bind Name -> Type -> InferM Decl checkMonoB :: P.Bind Name -> Type -> InferM Decl
checkMonoB b t = checkMonoB b t =
inRangeMb (getLoc b) $ inRangeMb (getLoc b) $
@ -803,44 +804,27 @@ checkSigB b (Forall as asmps0 t0, validSchema) = case thing (P.bDef b) of
return e1 return e1
cs <- applySubst cs0 cs <- applySubst cs0
let letGo qs c = Set.null (qs `Set.intersection` fvs (goal c)) let findKeep vs keep todo =
let stays (_,cvs) = not $ Set.null $ Set.intersection vs cvs
(yes,perhaps) = partition stays todo
(stayPs,newVars) = unzip yes
in case stayPs of
[] -> (keep,map fst todo)
_ -> findKeep (Set.unions (vs:newVars)) (stayPs ++ keep) perhaps
splitPreds qs n ps = let (stay,leave) = findKeep (Set.fromList (map tpVar as)) []
let (l,n1) = partition (letGo qs) ps [ (c, fvs c) | c <- cs ]
in if null n1
then (l,n)
else splitPreds (fvs (map goal n1) `Set.union` qs) (n1 ++ n) l
(later0,now) = splitPreds (Set.fromList (map tpVar as)) [] cs addGoals leave
asmps1 <- applySubst asmps0 asmps1 <- applySubst asmps0
defSu1 <- proveImplication (Just (thing (P.bName b))) as asmps1 now su <- proveImplication (Just (thing (P.bName b))) as asmps1 stay
let later = apSubst defSu1 later0 extendSubst su
asmps = apSubst defSu1 asmps1
-- Now we check for any remaining variables that are not mentioned let asmps = apSubst su asmps1
-- in the environment. The plan is to try to default these to something t <- applySubst t0
-- reasonable. e2 <- applySubst e1
do let laterVs = fvs (map goal later)
asmpVs <- varsWithAsmps
let genVs = laterVs `Set.difference` asmpVs
(maybeAmbig,ambig) = partition ((== KNum) . kindOf)
(Set.toList genVs)
when (not (null ambig)) $ recordError
$ AmbiguousType [ thing (P.bName b) ] ambig
-- XXX: Uhm, why are we defaulting that 'later' things here?
-- Surely this should be done later, when we solve them?
let (_,newGs,defSu2,ws) = improveByDefaultingWithPure maybeAmbig later
mapM_ recordWarning ws
extendSubst defSu2
addGoals newGs
su <- getSubst
let su' = defSu1 @@ su
t = apSubst su' t0
e2 = apSubst su' e1
return Decl return Decl
{ dName = thing (P.bName b) { dName = thing (P.bName b)

View File

@ -233,7 +233,7 @@ addTVarsDescs nm t d
| otherwise = d $$ text "where" $$ vcat (map desc (Set.toList vs)) | otherwise = d $$ text "where" $$ vcat (map desc (Set.toList vs))
where where
vs = Set.filter isFreeTV (fvs t) vs = Set.filter isFreeTV (fvs t)
desc v@(TVFree _ _ _ x) = ppWithNames nm v <+> text "is" <+> x desc v@(TVFree _ _ _ x) = ppWithNames nm v <+> text "is" <+> tvarDesc x
desc (TVBound {}) = empty desc (TVBound {}) = empty

View File

@ -23,7 +23,8 @@ import Cryptol.TypeCheck.AST
import Cryptol.TypeCheck.Subst import Cryptol.TypeCheck.Subst
import Cryptol.TypeCheck.Unify(mgu, Result(..), UnificationError(..)) import Cryptol.TypeCheck.Unify(mgu, Result(..), UnificationError(..))
import Cryptol.TypeCheck.InferTypes import Cryptol.TypeCheck.InferTypes
import Cryptol.TypeCheck.Error(Warning,Error(..),cleanupErrors) import Cryptol.TypeCheck.Error(Warning(..),Error(..),cleanupErrors)
import Cryptol.TypeCheck.PP (brackets, commaSep)
import qualified Cryptol.TypeCheck.SimpleSolver as Simple import qualified Cryptol.TypeCheck.SimpleSolver as Simple
import qualified Cryptol.TypeCheck.Solver.SMT as SMT import qualified Cryptol.TypeCheck.Solver.SMT as SMT
import Cryptol.Utils.PP(pp, ($$), (<+>), Doc, text, quotes) import Cryptol.Utils.PP(pp, ($$), (<+>), Doc, text, quotes)
@ -309,7 +310,9 @@ recordError e =
recordWarning :: Warning -> InferM () recordWarning :: Warning -> InferM ()
recordWarning w = recordWarning w =
do r <- curRange do r <- case w of
DefaultingTo d _ -> return (tvarSource d)
_ -> curRange
IM $ sets_ $ \s -> s { iWarnings = (r,w) : iWarnings s } IM $ sets_ $ \s -> s { iWarnings = (r,w) : iWarnings s }
getSolver :: InferM SMT.Solver getSolver :: InferM SMT.Solver
@ -443,7 +446,8 @@ newTVar' src extraBound k =
do r <- curRange do r <- curRange
bound <- getBoundInScope bound <- getBoundInScope
let vs = Set.union extraBound bound let vs = Set.union extraBound bound
msg = src $$ text "at" <+> pp r msg = TVarInfo { tvarDesc = src $$ text "at" <+> pp r
, tvarSource = r }
newName $ \s -> let x = seedTVar s newName $ \s -> let x = seedTVar s
in (TVFree x k vs msg, s { seedTVar = x + 1 }) in (TVFree x k vs msg, s { seedTVar = x + 1 })
@ -501,7 +505,21 @@ getSubst = IM $ fmap iSubst get
-- | Add to the accumulated substitution. -- | Add to the accumulated substitution.
extendSubst :: Subst -> InferM () extendSubst :: Subst -> InferM ()
extendSubst su = IM $ sets_ $ \s -> s { iSubst = su @@ iSubst s } extendSubst su =
do IM $ sets_ $ \s -> s { iSubst = su @@ iSubst s }
bound <- getBoundInScope
let suBound = Set.filter isBoundTV (Set.unions (map (fvs . snd) (substToList su)))
let escaped = Set.difference suBound bound
if Set.null escaped then return () else
panic "Cryptol.TypeCheck.Monad.extendSubst"
[ "Escaped quantified variables:"
, "Substitution: " ++ show (brackets (commaSep (map ppBinding su_binds)))
, "Vars in scope: " ++ show (brackets (commaSep (map pp (Set.toList bound))))
, "Escaped: " ++ show (brackets (commaSep (map pp (Set.toList escaped))))
]
where
su_binds = substToList su
ppBinding (v,x) = pp v <+> text ":=" <+> pp x
-- | Variables that are either mentioned in the environment or in -- | Variables that are either mentioned in the environment or in
@ -603,6 +621,7 @@ getParamFuns = IM $ asks iParamFuns
getParamTypes :: InferM (Map Name ModTParam) getParamTypes :: InferM (Map Name ModTParam)
getParamTypes = IM $ asks iParamTypes getParamTypes = IM $ asks iParamTypes
-- | Constraints on the module's parameters.
getParamConstraints :: InferM [Located Prop] getParamConstraints :: InferM [Located Prop]
getParamConstraints = IM $ asks iParamConstraints getParamConstraints = IM $ asks iParamConstraints

View File

@ -20,7 +20,7 @@ module Cryptol.TypeCheck.Solve
) where ) where
import Cryptol.Parser.Position(thing) import Cryptol.Parser.Position(thing)
import Cryptol.TypeCheck.PP(pp) import Cryptol.TypeCheck.PP -- (pp)
import Cryptol.TypeCheck.AST import Cryptol.TypeCheck.AST
import Cryptol.TypeCheck.Monad import Cryptol.TypeCheck.Monad
import Cryptol.TypeCheck.Default import Cryptol.TypeCheck.Default
@ -182,16 +182,21 @@ simpHasGoals = go False [] =<< getHasGoals
-- on the module's type parameters. -- on the module's type parameters.
proveModuleTopLevel :: InferM () proveModuleTopLevel :: InferM ()
proveModuleTopLevel = proveModuleTopLevel =
do -- io $ putStrLn "Module top level" do simplifyAllConstraints
simplifyAllConstraints gs <- getGoals
let vs = Set.toList (Set.filter isFreeTV (fvs gs))
(_,gs1,su1,ws) = improveByDefaultingWithPure vs gs
extendSubst su1
mapM_ recordWarning ws
cs <- getParamConstraints cs <- getParamConstraints
case cs of case cs of
[] -> return () [] -> addGoals gs1
_ -> do gs <- getGoals _ -> do su2 <- proveImplication Nothing [] [] gs1
su <- proveImplication Nothing [] [] gs extendSubst su2
extendSubst su
-- | Prove an implication, and return any improvements that we computed.
-- Records errors, if any of the goals couldn't be solved.
proveImplication :: Maybe Name -> [TParam] -> [Prop] -> [Goal] -> InferM Subst proveImplication :: Maybe Name -> [TParam] -> [Prop] -> [Goal] -> InferM Subst
proveImplication lnam as ps gs = proveImplication lnam as ps gs =
do evars <- varsWithAsmps do evars <- varsWithAsmps
@ -232,7 +237,8 @@ proveImplicationIO s f varsInEnv ps asmps0 gs0 =
$ Set.difference (fvs (map goal gs3)) varsInEnv $ Set.difference (fvs (map goal gs3)) varsInEnv
case improveByDefaultingWithPure free gs3 of case improveByDefaultingWithPure free gs3 of
(_,_,newSu,_) (_,_,newSu,_)
| isEmptySubst newSu -> return (err gs3, su) -- XXX: Old? | isEmptySubst newSu ->
return (err gs3, su) -- XXX: Old?
(_,newGs,newSu,ws) -> (_,newGs,newSu,ws) ->
do let su1 = newSu @@ su do let su1 = newSu @@ su
(res1,su2) <- proveImplicationIO s f varsInEnv ps (res1,su2) <- proveImplicationIO s f varsInEnv ps

View File

@ -16,6 +16,7 @@ import Data.List(sortBy)
import Data.Ord(comparing) import Data.Ord(comparing)
import Cryptol.Parser.Selector import Cryptol.Parser.Selector
import Cryptol.Parser.Position(Range)
import Cryptol.ModuleSystem.Name import Cryptol.ModuleSystem.Name
import Cryptol.Prims.Syntax import Cryptol.Prims.Syntax
import Cryptol.Utils.Ident (Ident) import Cryptol.Utils.Ident (Ident)
@ -112,14 +113,19 @@ data Type = TCon !TCon ![Type]
-- | Type variables. -- | Type variables.
data TVar = TVFree !Int Kind (Set TVar) Doc data TVar = TVFree !Int Kind (Set TVar) TVarInfo
-- ^ Unique, kind, ids of bound type variables that are in scope -- ^ Unique, kind, ids of bound type variables that are in scope
-- The `Doc` is a description of how this type came to be. -- The last field gives us some infor for nicer warnings/errors.
| TVBound {-# UNPACK #-} !TParam | TVBound {-# UNPACK #-} !TParam
deriving (Show, Generic, NFData) deriving (Show, Generic, NFData)
data TVarInfo = TVarInfo { tvarSource :: Range -- ^ Source code that gave rise
, tvarDesc :: Doc -- ^ Description
}
deriving (Show, Generic, NFData)
-- | The type is supposed to be of kind `KProp` -- | The type is supposed to be of kind `KProp`
type Prop = Type type Prop = Type

View File

@ -1,7 +1,7 @@
Loading module Cryptol Loading module Cryptol
Loading module Cryptol Loading module Cryptol
Loading module Main Loading module Main
[warning] at ./issue268.cry:2:1--2:74: [warning] at ./issue268.cry:2:61--2:65:
Defaulting 2nd type parameter Defaulting 2nd type parameter
of expression drop of expression drop
at ./issue268.cry:2:61--2:65 at ./issue268.cry:2:61--2:65

View File

@ -4,9 +4,9 @@ Loading module test04
module test04 module test04
import Cryptol import Cryptol
/* Not recursive */ /* Not recursive */
test04::test : {a, b} (Literal 10 b) => a -> ((a, ()), (a, b)) test04::test : {a, b} (b >= 4, fin b) => a -> ((a, ()), (a, [b]))
test04::test = \{a, b} (Literal 10 b) (a : a) -> test04::test = \{a, b} (b >= 4, fin b) (a : a) ->
(test04::f () (), test04::f b (Cryptol::demote 10 b <>)) (test04::f () (), test04::f [b] (Cryptol::demote 10 b <> <>))
where where
/* Not recursive */ /* Not recursive */
test04::f : {c} c -> (a, c) test04::f : {c} c -> (a, c)
@ -16,10 +16,17 @@ test04::test = \{a, b} (Literal 10 b) (a : a) ->
Loading module Cryptol Loading module Cryptol
Loading module test04 Loading module test04
[warning] at ./test04.cry:3:19--3:21:
Defaulting type parameter 'bits'
of literal or demoted expression
at ./test04.cry:3:19--3:21
to 4
[error] at ./test04.cry:3:19--3:21: [error] at ./test04.cry:3:19--3:21:
Unsolved constraints: Type mismatch:
Literal 10 () Expected type: ()
arising from Inferred type: [?p33]
use of literal or demoted expression where
at ./test04.cry:3:19--3:21 ?p33 is type parameter 'bits'
of literal or demoted expression
at ./test04.cry:3:19--3:21

View File

@ -48,7 +48,7 @@ Loading module test05
[warning] at ./test05.cry:13:5--13:8 [warning] at ./test05.cry:13:5--13:8
This binding for foo shadows the existing binding from This binding for foo shadows the existing binding from
(at ./test05.cry:9:3--9:6, foo) (at ./test05.cry:9:3--9:6, foo)
[warning] at ./test05.cry:1:1--14:21: [warning] at ./test05.cry:14:11--14:21:
Defaulting 1st type parameter Defaulting 1st type parameter
of expression (#) of expression (#)
at ./test05.cry:14:11--14:21 at ./test05.cry:14:11--14:21

View File

@ -1,12 +1,12 @@
Loading module Cryptol Loading module Cryptol
Loading module Cryptol Loading module Cryptol
Loading module Main Loading module Main
[warning] at :1:1--3:23: [warning] at ./unary-2.cry:3:22--3:23:
Defaulting type parameter 'bits' Defaulting type parameter 'bits'
of literal or demoted expression of literal or demoted expression
at ./unary-2.cry:3:22--3:23 at ./unary-2.cry:3:22--3:23
to 2 to 2
[warning] at :1:1--3:23: [warning] at ./unary-2.cry:2:22--2:23:
Defaulting type parameter 'bits' Defaulting type parameter 'bits'
of literal or demoted expression of literal or demoted expression
at ./unary-2.cry:2:22--2:23 at ./unary-2.cry:2:22--2:23

View File

@ -1,31 +1,31 @@
Loading module Cryptol Loading module Cryptol
Loading module Cryptol Loading module Cryptol
Loading module AES Loading module AES
[warning] at ./AES.cry:147:1--150:39: [warning] at ./AES.cry:87:58--87:66:
Defaulting type parameter 'bits'
of finite enumeration
at ./AES.cry:147:36--147:51
to 4
[warning] at ./AES.cry:147:1--150:39:
Defaulting type parameter 'bits'
of literal or demoted expression
at ./AES.cry:147:60--147:63
to 4
[warning] at ./AES.cry:124:1--129:31:
Defaulting type parameter 'bits'
of literal or demoted expression
at ./AES.cry:127:32--127:33
to 3
[warning] at ./AES.cry:91:1--93:23:
Defaulting type parameter 'bits'
of finite enumeration
at ./AES.cry:92:61--92:69
to 2
[warning] at ./AES.cry:86:1--88:20:
Defaulting type parameter 'bits' Defaulting type parameter 'bits'
of finite enumeration of finite enumeration
at ./AES.cry:87:58--87:66 at ./AES.cry:87:58--87:66
to 2 to 2
[warning] at ./AES.cry:92:61--92:69:
Defaulting type parameter 'bits'
of finite enumeration
at ./AES.cry:92:61--92:69
to 2
[warning] at ./AES.cry:127:32--127:33:
Defaulting type parameter 'bits'
of literal or demoted expression
at ./AES.cry:127:32--127:33
to 3
[warning] at ./AES.cry:147:36--147:51:
Defaulting type parameter 'bits'
of finite enumeration
at ./AES.cry:147:36--147:51
to 4
[warning] at ./AES.cry:147:60--147:63:
Defaulting type parameter 'bits'
of literal or demoted expression
at ./AES.cry:147:60--147:63
to 4
True True
True True
True True

View File

@ -1,10 +1,10 @@
Loading module Cryptol Loading module Cryptol
Loading module Cryptol Loading module Cryptol
Loading module Main Loading module Main
[warning] at ./check01.cry:2:1--2:27: [warning] at ./check01.cry:2:24--2:26:
Defaulting 4th type parameter Defaulting type parameter 'bits'
of expression (@@) of literal or demoted expression
at ./check01.cry:2:5--2:27 at ./check01.cry:2:24--2:26
to max (width 19) (width 6) to 5
[0x00000007, 0x00000014] [0x00000007, 0x00000014]
True True

View File

@ -1,12 +1,12 @@
Loading module Cryptol Loading module Cryptol
Loading module Cryptol Loading module Cryptol
Loading module Main Loading module Main
[warning] at :1:1--3:25: [warning] at ./check02.cry:3:24--3:25:
Defaulting type parameter 'bits' Defaulting type parameter 'bits'
of literal or demoted expression of literal or demoted expression
at ./check02.cry:3:24--3:25 at ./check02.cry:3:24--3:25
to 1 to 1
[warning] at <interactive>:1:1--1:18: [warning] at <interactive>:1:9--1:18:
Defaulting type parameter 'bits' Defaulting type parameter 'bits'
of finite enumeration of finite enumeration
at <interactive>:1:9--1:18 at <interactive>:1:9--1:18

View File

@ -1,7 +1,7 @@
Loading module Cryptol Loading module Cryptol
Loading module Cryptol Loading module Cryptol
Loading module Main Loading module Main
[warning] at <interactive>:1:1--1:22: [warning] at <interactive>:1:11--1:22:
Defaulting type parameter 'bits' Defaulting type parameter 'bits'
of finite enumeration of finite enumeration
at <interactive>:1:11--1:22 at <interactive>:1:11--1:22
@ -9,7 +9,7 @@ Loading module Main
[0x00000000, 0x00000001, 0x00000002, 0x00000003, 0x00000004, [0x00000000, 0x00000001, 0x00000002, 0x00000003, 0x00000004,
0x00000005, 0x00000006, 0x00000007, 0x00000008, 0x00000009, 0x00000005, 0x00000006, 0x00000007, 0x00000008, 0x00000009,
0x0000000a] 0x0000000a]
[warning] at <interactive>:1:1--1:23: [warning] at <interactive>:1:12--1:23:
Defaulting type parameter 'bits' Defaulting type parameter 'bits'
of finite enumeration of finite enumeration
at <interactive>:1:12--1:23 at <interactive>:1:12--1:23

View File

@ -1,17 +1,17 @@
Loading module Cryptol Loading module Cryptol
Loading module Cryptol Loading module Cryptol
Loading module Main Loading module Main
[warning] at :1:1--4:45: [warning] at ./check04.cry:4:21--4:29:
Defaulting type parameter 'bits' Defaulting type parameter 'bits'
of finite enumeration of finite enumeration
at ./check04.cry:4:21--4:29 at ./check04.cry:4:21--4:29
to 2 to 2
[warning] at :1:1--4:45: [warning] at ./check04.cry:4:43--4:44:
Defaulting type parameter 'bits' Defaulting type parameter 'bits'
of literal or demoted expression of literal or demoted expression
at ./check04.cry:4:43--4:44 at ./check04.cry:4:43--4:44
to 2 to 2
[warning] at <interactive>:1:1--1:21: [warning] at <interactive>:1:12--1:21:
Defaulting type parameter 'bits' Defaulting type parameter 'bits'
of finite enumeration of finite enumeration
at <interactive>:1:12--1:21 at <interactive>:1:12--1:21

View File

@ -1,17 +1,17 @@
Loading module Cryptol Loading module Cryptol
Loading module Cryptol Loading module Cryptol
Loading module Main Loading module Main
[warning] at :1:1--4:45: [warning] at ./check05.cry:4:21--4:29:
Defaulting type parameter 'bits' Defaulting type parameter 'bits'
of finite enumeration of finite enumeration
at ./check05.cry:4:21--4:29 at ./check05.cry:4:21--4:29
to 2 to 2
[warning] at :1:1--4:45: [warning] at ./check05.cry:4:43--4:44:
Defaulting type parameter 'bits' Defaulting type parameter 'bits'
of literal or demoted expression of literal or demoted expression
at ./check05.cry:4:43--4:44 at ./check05.cry:4:43--4:44
to 2 to 2
[warning] at <interactive>:1:1--1:21: [warning] at <interactive>:1:12--1:21:
Defaulting type parameter 'bits' Defaulting type parameter 'bits'
of finite enumeration of finite enumeration
at <interactive>:1:12--1:21 at <interactive>:1:12--1:21

View File

@ -1,17 +1,17 @@
Loading module Cryptol Loading module Cryptol
Loading module Cryptol Loading module Cryptol
Loading module Main Loading module Main
[warning] at :1:1--5:70: [warning] at ./check06.cry:5:24--5:32:
Defaulting type parameter 'bits' Defaulting type parameter 'bits'
of finite enumeration of finite enumeration
at ./check06.cry:5:24--5:32 at ./check06.cry:5:24--5:32
to 2 to 2
[warning] at :1:1--5:70: [warning] at ./check06.cry:5:66--5:67:
Defaulting type parameter 'bits' Defaulting type parameter 'bits'
of literal or demoted expression of literal or demoted expression
at ./check06.cry:5:66--5:67 at ./check06.cry:5:66--5:67
to 2 to 2
[warning] at <interactive>:1:1--1:24: [warning] at <interactive>:1:15--1:24:
Defaulting type parameter 'bits' Defaulting type parameter 'bits'
of finite enumeration of finite enumeration
at <interactive>:1:15--1:24 at <interactive>:1:15--1:24

View File

@ -1,42 +1,42 @@
Loading module Cryptol Loading module Cryptol
Loading module Cryptol Loading module Cryptol
Loading module Main Loading module Main
[warning] at :1:1--14:39: [warning] at ./check07.cry:7:43--7:54:
Defaulting type parameter 'bits'
of literal or demoted expression
at ./check07.cry:13:21--13:22
to 1
[warning] at :1:1--14:39:
Defaulting type parameter 'bits'
of finite enumeration
at ./check07.cry:11:39--11:51
to 4
[warning] at ./check07.cry:7:1--7:56:
Defaulting type parameter 'bits' Defaulting type parameter 'bits'
of finite enumeration of finite enumeration
at ./check07.cry:7:43--7:54 at ./check07.cry:7:43--7:54
to 6 to 6
[warning] at :1:1--14:39: [warning] at ./check07.cry:13:21--13:22:
Defaulting type parameter 'bits'
of literal or demoted expression
at ./check07.cry:13:21--13:22
to 1
[warning] at ./check07.cry:11:39--11:51:
Defaulting type parameter 'bits'
of finite enumeration
at ./check07.cry:11:39--11:51
to 4
[warning] at ./check07.cry:5:37--5:49:
Defaulting type parameter 'bits' Defaulting type parameter 'bits'
of finite enumeration of finite enumeration
at ./check07.cry:5:37--5:49 at ./check07.cry:5:37--5:49
to 7 to 7
[warning] at :1:1--14:39: [warning] at ./check07.cry:4:37--4:48:
Defaulting type parameter 'bits' Defaulting type parameter 'bits'
of finite enumeration of finite enumeration
at ./check07.cry:4:37--4:48 at ./check07.cry:4:37--4:48
to 6 to 6
[warning] at :1:1--14:39: [warning] at ./check07.cry:3:37--3:65:
Defaulting type parameter 'bits' Defaulting type parameter 'bits'
of finite enumeration of finite enumeration
at ./check07.cry:3:37--3:65 at ./check07.cry:3:37--3:65
to 32 to 32
[warning] at :1:1--14:39: [warning] at ./check07.cry:2:37--2:49:
Defaulting type parameter 'bits' Defaulting type parameter 'bits'
of finite enumeration of finite enumeration
at ./check07.cry:2:37--2:49 at ./check07.cry:2:37--2:49
to 7 to 7
[warning] at :1:1--14:39: [warning] at ./check07.cry:1:37--1:48:
Defaulting type parameter 'bits' Defaulting type parameter 'bits'
of finite enumeration of finite enumeration
at ./check07.cry:1:37--1:48 at ./check07.cry:1:37--1:48

View File

@ -1,17 +1,17 @@
Loading module Cryptol Loading module Cryptol
Loading module Cryptol Loading module Cryptol
Loading module Main Loading module Main
[warning] at :1:1--7:45: [warning] at ./check08.cry:9:25--9:33:
Defaulting type parameter 'bits' Defaulting type parameter 'bits'
of finite enumeration of finite enumeration
at ./check08.cry:9:25--9:33 at ./check08.cry:9:25--9:33
to 3 to 3
[warning] at :1:1--7:45: [warning] at ./check08.cry:7:16--7:24:
Defaulting type parameter 'bits' Defaulting type parameter 'bits'
of finite enumeration of finite enumeration
at ./check08.cry:7:16--7:24 at ./check08.cry:7:16--7:24
to 3 to 3
[warning] at <interactive>:1:1--1:15: [warning] at <interactive>:1:7--1:15:
Defaulting type parameter 'bits' Defaulting type parameter 'bits'
of finite enumeration of finite enumeration
at <interactive>:1:7--1:15 at <interactive>:1:7--1:15

View File

@ -13,28 +13,28 @@ Loading module Main
[warning] at ./check09.cry:23:5--23:7 [warning] at ./check09.cry:23:5--23:7
This binding for ss shadows the existing binding from This binding for ss shadows the existing binding from
(at ./check09.cry:5:1--5:3, ss) (at ./check09.cry:5:1--5:3, ss)
[warning] at ./check09.cry:17:1--30:54: [warning] at ./check09.cry:17:18--17:28:
Defaulting type parameter 'bits' Defaulting type parameter 'bits'
of finite enumeration of finite enumeration
at ./check09.cry:17:18--17:28 at ./check09.cry:17:18--17:28
to 3 to 3
[warning] at :1:1--37:28: [warning] at ./check09.cry:13:18--13:26:
Defaulting type parameter 'bits' Defaulting type parameter 'bits'
of finite enumeration of finite enumeration
at ./check09.cry:13:18--13:26 at ./check09.cry:13:18--13:26
to 2 to 2
[warning] at :1:1--37:28: [warning] at ./check09.cry:14:18--14:26:
Defaulting type parameter 'bits' Defaulting type parameter 'bits'
of finite enumeration of finite enumeration
at ./check09.cry:14:18--14:26 at ./check09.cry:14:18--14:26
to 2 to 2
[warning] at <interactive>:1:1--1:15: [warning] at <interactive>:1:7--1:15:
Defaulting type parameter 'bits' Defaulting type parameter 'bits'
of finite enumeration of finite enumeration
at <interactive>:1:7--1:15 at <interactive>:1:7--1:15
to 2 to 2
[0x00000008, 0x00004080, 0x00068c00, 0x00a22800] [0x00000008, 0x00004080, 0x00068c00, 0x00a22800]
[warning] at <interactive>:1:1--1:15: [warning] at <interactive>:1:7--1:15:
Defaulting type parameter 'bits' Defaulting type parameter 'bits'
of finite enumeration of finite enumeration
at <interactive>:1:7--1:15 at <interactive>:1:7--1:15

View File

@ -1,12 +1,12 @@
Loading module Cryptol Loading module Cryptol
Loading module Cryptol Loading module Cryptol
Loading module Main Loading module Main
[warning] at :1:1--5:25: [warning] at ./check11.cry:3:10--3:19:
Defaulting type parameter 'bits' Defaulting type parameter 'bits'
of finite enumeration of finite enumeration
at ./check11.cry:3:10--3:19 at ./check11.cry:3:10--3:19
to 7 to 7
[warning] at :1:1--5:25: [warning] at ./check11.cry:5:16--5:25:
Defaulting type parameter 'bits' Defaulting type parameter 'bits'
of finite enumeration of finite enumeration
at ./check11.cry:5:16--5:25 at ./check11.cry:5:16--5:25

View File

@ -1,7 +1,7 @@
Loading module Cryptol Loading module Cryptol
Loading module Cryptol Loading module Cryptol
Loading module Main Loading module Main
[warning] at :1:1--5:76: [warning] at ./check14.cry:5:73--5:74:
Defaulting type parameter 'bits' Defaulting type parameter 'bits'
of literal or demoted expression of literal or demoted expression
at ./check14.cry:5:73--5:74 at ./check14.cry:5:73--5:74

View File

@ -1,9 +1,9 @@
Loading module Cryptol Loading module Cryptol
Loading module Cryptol Loading module Cryptol
Loading module Main Loading module Main
[warning] at :1:1--4:17: [warning] at ./check16-tab.cry:1:22--1:23:
Defaulting 1st type parameter Defaulting type parameter 'bits'
of expression width of literal or demoted expression
at ./check16-tab.cry:1:11--1:16 at ./check16-tab.cry:1:22--1:23
to max 4 (width 8) to 4
True True

View File

@ -1,9 +1,9 @@
Loading module Cryptol Loading module Cryptol
Loading module Cryptol Loading module Cryptol
Loading module Main Loading module Main
[warning] at :1:1--4:13: [warning] at ./check16.cry:1:22--1:23:
Defaulting 1st type parameter Defaulting type parameter 'bits'
of expression width of literal or demoted expression
at ./check16.cry:1:11--1:16 at ./check16.cry:1:22--1:23
to max 4 (width 8) to 4
True True

View File

@ -1,7 +1,7 @@
Loading module Cryptol Loading module Cryptol
Loading module Cryptol Loading module Cryptol
Loading module Main Loading module Main
[warning] at :1:1--3:39: [warning] at ./check20.cry:3:31--3:33:
Defaulting type parameter 'bits' Defaulting type parameter 'bits'
of literal or demoted expression of literal or demoted expression
at ./check20.cry:3:31--3:33 at ./check20.cry:3:31--3:33

View File

@ -1,9 +1,9 @@
Loading module Cryptol Loading module Cryptol
Loading module Cryptol Loading module Cryptol
Loading module Main Loading module Main
[warning] at :1:1--7:63: [warning] at ./check21.cry:4:31--4:32:
Defaulting 1st type parameter Defaulting type parameter 'bits'
of expression width of literal or demoted expression
at ./check21.cry:4:21--4:26 at ./check21.cry:4:31--4:32
to max 4 (width 1) to 4
True True

View File

@ -1,9 +1,9 @@
Loading module Cryptol Loading module Cryptol
Loading module Cryptol Loading module Cryptol
Loading module Main Loading module Main
[warning] at :1:1--12:70: [warning] at ./check22.cry:3:31--3:32:
Defaulting 1st type parameter Defaulting type parameter 'bits'
of expression width of literal or demoted expression
at ./check22.cry:3:21--3:26 at ./check22.cry:3:31--3:32
to max 4 (width 1) to 4
True True

View File

@ -1,7 +1,7 @@
Loading module Cryptol Loading module Cryptol
Loading module Cryptol Loading module Cryptol
Loading module Main Loading module Main
[warning] at :1:1--4:82: [warning] at ./check24.cry:4:60--4:71:
Defaulting type parameter 'bits' Defaulting type parameter 'bits'
of finite enumeration of finite enumeration
at ./check24.cry:4:60--4:71 at ./check24.cry:4:60--4:71

View File

@ -4,12 +4,12 @@ Loading module check25
[warning] at ./check25.cry:6:9--6:11 [warning] at ./check25.cry:6:9--6:11
This binding for tz shadows the existing binding from This binding for tz shadows the existing binding from
(at ./check25.cry:3:1--3:3, tz) (at ./check25.cry:3:1--3:3, tz)
[warning] at ./check25.cry:1:1--8:19: [warning] at ./check25.cry:8:17--8:19:
Defaulting type parameter 'bits' Defaulting type parameter 'bits'
of literal or demoted expression of literal or demoted expression
at ./check25.cry:8:17--8:19 at ./check25.cry:8:17--8:19
to 4 to 4
[warning] at ./check25.cry:1:1--8:19: [warning] at ./check25.cry:6:14--6:16:
Defaulting type parameter 'bits' Defaulting type parameter 'bits'
of literal or demoted expression of literal or demoted expression
at ./check25.cry:6:14--6:16 at ./check25.cry:6:14--6:16

View File

@ -1,72 +1,72 @@
Loading module Cryptol Loading module Cryptol
Loading module Cryptol Loading module Cryptol
Loading module Main Loading module Main
[warning] at :1:1--13:43: [warning] at ./check26.cry:11:42--11:45:
Defaulting 2nd type parameter Defaulting 2nd type parameter
of expression Main::xys of expression Main::xys
at ./check26.cry:11:42--11:45 at ./check26.cry:11:42--11:45
to 4 to 4
[warning] at :1:1--13:43: [warning] at ./check26.cry:8:31--8:34:
Defaulting 2nd type parameter Defaulting 2nd type parameter
of expression Main::xys of expression Main::xys
at ./check26.cry:8:31--8:34 at ./check26.cry:8:31--8:34
to 3 to 3
[warning] at :1:1--13:43: [warning] at ./check26.cry:9:23--9:34:
Defaulting type parameter 'bits' Defaulting type parameter 'bits'
of finite enumeration of finite enumeration
at ./check26.cry:9:23--9:34 at ./check26.cry:9:23--9:34
to 4 to 4
[warning] at :1:1--13:43: [warning] at ./check26.cry:9:41--9:51:
Defaulting type parameter 'bits' Defaulting type parameter 'bits'
of finite enumeration of finite enumeration
at ./check26.cry:9:41--9:51 at ./check26.cry:9:41--9:51
to 3 to 3
[warning] at :1:1--13:43: [warning] at ./check26.cry:4:17--4:19:
Defaulting 1st type parameter Defaulting 1st type parameter
of expression Main::xy of expression Main::xy
at ./check26.cry:4:17--4:19 at ./check26.cry:4:17--4:19
to 4 to 4
[warning] at :1:1--13:43: [warning] at ./check26.cry:4:17--4:19:
Defaulting 2nd type parameter Defaulting 2nd type parameter
of expression Main::xy of expression Main::xy
at ./check26.cry:4:17--4:19 at ./check26.cry:4:17--4:19
to 5 to 5
[warning] at :1:1--13:43: [warning] at ./check26.cry:4:23--4:25:
Defaulting 2nd type parameter Defaulting 2nd type parameter
of expression Main::xy of expression Main::xy
at ./check26.cry:4:23--4:25 at ./check26.cry:4:23--4:25
to 5 to 5
[warning] at :1:1--13:43: [warning] at ./check26.cry:4:37--4:39:
Defaulting 1st type parameter Defaulting 1st type parameter
of expression Main::xy of expression Main::xy
at ./check26.cry:4:37--4:39 at ./check26.cry:4:37--4:39
to 4 to 4
[warning] at :1:1--13:43: [warning] at ./check26.cry:4:37--4:39:
Defaulting 2nd type parameter Defaulting 2nd type parameter
of expression Main::xy of expression Main::xy
at ./check26.cry:4:37--4:39 at ./check26.cry:4:37--4:39
to 5 to 5
[warning] at :1:1--13:43: [warning] at ./check26.cry:4:43--4:45:
Defaulting 1st type parameter Defaulting 1st type parameter
of expression Main::xy of expression Main::xy
at ./check26.cry:4:43--4:45 at ./check26.cry:4:43--4:45
to 4 to 4
[warning] at :1:1--13:43: [warning] at ./check26.cry:5:17--5:19:
Defaulting 2nd type parameter Defaulting 2nd type parameter
of expression Main::xy of expression Main::xy
at ./check26.cry:5:17--5:19 at ./check26.cry:5:17--5:19
to 5 to 5
[warning] at :1:1--13:43: [warning] at ./check26.cry:5:23--5:25:
Defaulting type parameter 'bits' Defaulting type parameter 'bits'
of literal or demoted expression of literal or demoted expression
at ./check26.cry:5:23--5:25 at ./check26.cry:5:23--5:25
to 4 to 4
[warning] at :1:1--13:43: [warning] at ./check26.cry:5:35--5:37:
Defaulting 1st type parameter Defaulting 1st type parameter
of expression Main::xy of expression Main::xy
at ./check26.cry:5:35--5:37 at ./check26.cry:5:35--5:37
to 4 to 4
[warning] at :1:1--13:43: [warning] at ./check26.cry:5:41--5:43:
Defaulting type parameter 'bits' Defaulting type parameter 'bits'
of literal or demoted expression of literal or demoted expression
at ./check26.cry:5:41--5:43 at ./check26.cry:5:41--5:43

View File

@ -1,7 +1,7 @@
Loading module Cryptol Loading module Cryptol
Loading module Cryptol Loading module Cryptol
Loading module Main Loading module Main
[warning] at :1:1--2:42: [warning] at ./check28.cry:2:29--2:31:
Defaulting 2nd type parameter Defaulting 2nd type parameter
of expression Main::xs of expression Main::xs
at ./check28.cry:2:29--2:31 at ./check28.cry:2:29--2:31

View File

@ -6,14 +6,14 @@ Assuming a = 2
Assuming a = 1 Assuming a = 1
Assuming b = 2 Assuming b = 2
{x = 0x1, y = 0x2} {x = 0x1, y = 0x2}
[warning] at <interactive>:1:1--1:22: [warning] at <interactive>:1:20--1:21:
Defaulting type parameter 'bits' Defaulting type parameter 'bits'
of literal or demoted expression of literal or demoted expression
at <interactive>:1:20--1:21 at <interactive>:1:20--1:21
to 2 to 2
Assuming a = 1 Assuming a = 1
0x1 0x1
[warning] at <interactive>:1:1--1:46: [warning] at <interactive>:1:42--1:44:
Defaulting type parameter 'bits' Defaulting type parameter 'bits'
of literal or demoted expression of literal or demoted expression
at <interactive>:1:42--1:44 at <interactive>:1:42--1:44

View File

@ -1,25 +1,25 @@
Loading module Cryptol Loading module Cryptol
Loading module Cryptol Loading module Cryptol
Loading module Main Loading module Main
[warning] at <interactive>:1:1--1:42: [warning] at <interactive>:1:11--1:19:
Defaulting type parameter 'bits' Defaulting type parameter 'bits'
of finite enumeration of finite enumeration
at <interactive>:1:11--1:19 at <interactive>:1:11--1:19
to max 4 (width 10) to max 4 (width 10)
True True
[warning] at <interactive>:1:1--1:43: [warning] at <interactive>:1:11--1:20:
Defaulting type parameter 'bits' Defaulting type parameter 'bits'
of finite enumeration of finite enumeration
at <interactive>:1:11--1:20 at <interactive>:1:11--1:20
to max 4 (width 10) to max 4 (width 10)
False False
[warning] at <interactive>:1:1--1:48: [warning] at <interactive>:1:11--1:25:
Defaulting type parameter 'bits' Defaulting type parameter 'bits'
of finite enumeration of finite enumeration
at <interactive>:1:11--1:25 at <interactive>:1:11--1:25
to max 7 (width 10) to max 7 (width 10)
False False
[warning] at <interactive>:1:1--1:47: [warning] at <interactive>:1:11--1:24:
Defaulting type parameter 'bits' Defaulting type parameter 'bits'
of finite enumeration of finite enumeration
at <interactive>:1:11--1:24 at <interactive>:1:11--1:24

View File

@ -1,7 +1,7 @@
Loading module Cryptol Loading module Cryptol
Assuming a = 4 Assuming a = 4
[0xb, 0xb, 0xb, 0xb, 0xb, 0xb, 0xb, 0xb, 0xb, 0xb] [0xb, 0xb, 0xb, 0xb, 0xb, 0xb, 0xb, 0xb, 0xb, 0xb]
[warning] at <interactive>:1:1--1:68: [warning] at <interactive>:1:65--1:67:
Defaulting type parameter 'bits' Defaulting type parameter 'bits'
of finite enumeration of finite enumeration
at <interactive>:1:13--1:24 at <interactive>:1:13--1:24