cryptol/tests/issues/issue226.icry.stdout

171 lines
6.3 KiB
Plaintext
Raw Normal View History

2014-04-18 02:34:25 +04:00
Loading module Cryptol
Loading module Cryptol
Loading module issue226r2
Loading module issue226
Type Synonyms
=============
type Bool = Bit
type Char = [8]
type lg2 n = width (max 1 n - 1)
2014-04-18 02:34:25 +04:00
type String n = [n][8]
type Word n = [n]
Constraint Synonyms
===================
type constraint i < j = j >= 1 + i
type constraint i <= j = j >= i
type constraint i > j = i >= 1 + j
Primitive Types
===============
(!=) : # -> # -> Prop
(==) : # -> # -> Prop
(>=) : # -> # -> Prop
(+) : # -> # -> #
(-) : # -> # -> #
(%) : # -> # -> #
(%^) : # -> # -> #
(*) : # -> # -> #
(/) : # -> # -> #
(/^) : # -> # -> #
(^^) : # -> # -> #
Arith : * -> Prop
Bit : *
Cmp : * -> Prop
fin : * -> Prop
Integer : *
inf : #
Literal : # -> * -> Prop
Logic : * -> Prop
lengthFromThenTo : # -> # -> # -> #
max : # -> # -> #
min : # -> # -> #
SignedCmp : * -> Prop
width : # -> #
Z : # -> *
Zero : * -> Prop
2014-04-18 02:34:25 +04:00
Symbols
=======
(==>) : Bit -> Bit -> Bit
(\/) : Bit -> Bit -> Bit
(/\) : Bit -> Bit -> Bit
2015-08-13 01:52:18 +03:00
(!=) : {a} (Cmp a) => a -> a -> Bit
(!==) : {a, b} (Cmp b) => (a -> b) -> (a -> b) -> a -> Bit
(==) : {a} (Cmp a) => a -> a -> Bit
(===) : {a, b} (Cmp b) => (a -> b) -> (a -> b) -> a -> Bit
2015-08-13 01:52:18 +03:00
(<) : {a} (Cmp a) => a -> a -> Bit
(<$) : {a} (SignedCmp a) => a -> a -> Bit
2015-08-13 01:52:18 +03:00
(<=) : {a} (Cmp a) => a -> a -> Bit
(<=$) : {a} (SignedCmp a) => a -> a -> Bit
2015-08-13 01:52:18 +03:00
(>) : {a} (Cmp a) => a -> a -> Bit
(>$) : {a} (SignedCmp a) => a -> a -> Bit
2015-08-13 01:52:18 +03:00
(>=) : {a} (Cmp a) => a -> a -> Bit
(>=$) : {a} (SignedCmp a) => a -> a -> Bit
(||) : {a} (Logic a) => a -> a -> a
(^) : {a} (Logic a) => a -> a -> a
(&&) : {a} (Logic a) => a -> a -> a
(#) :
{front, back, a} (fin front) =>
[front]a -> [back]a -> [front + back]a
(<<) : {n, ix, a} (fin ix, Zero a) => [n]a -> [ix] -> [n]a
(<<<) : {n, ix, a} (fin n, fin ix) => [n]a -> [ix] -> [n]a
(>>) : {n, ix, a} (fin ix, Zero a) => [n]a -> [ix] -> [n]a
(>>$) : {n, ix} (fin n, n >= 1, fin ix) => [n] -> [ix] -> [n]
(>>>) : {n, ix, a} (fin n, fin ix) => [n]a -> [ix] -> [n]a
(+) : {a} (Arith a) => a -> a -> a
(-) : {a} (Arith a) => a -> a -> a
(%) : {a} (Arith a) => a -> a -> a
(%$) : {a} (Arith a) => a -> a -> a
(*) : {a} (Arith a) => a -> a -> a
(/) : {a} (Arith a) => a -> a -> a
(/$) : {a} (Arith a) => a -> a -> a
(^^) : {a} (Arith a) => a -> a -> a
(!) : {n, a, ix} (fin n, fin ix) => [n]a -> [ix] -> a
(!!) : {n, k, ix, a} (fin n, fin ix) => [n]a -> [k][ix] -> [k]a
(@) : {n, a, ix} (fin ix) => [n]a -> [ix] -> a
(@@) : {n, k, ix, a} (fin ix) => [n]a -> [k][ix] -> [k]a
all : {n, a} (fin n) => (a -> Bit) -> [n]a -> Bit
and : {n} (fin n) => [n] -> Bit
any : {n, a} (fin n) => (a -> Bit) -> [n]a -> Bit
carry : {n} (fin n) => [n] -> [n] -> Bit
2017-09-16 00:05:27 +03:00
complement : {a} (Logic a) => a -> a
curry : {a, b, c} ((a, b) -> c) -> a -> b -> c
demote : {val, rep} (Literal val rep) => rep
drop : {front, back, a} (fin front) => [front + back]a -> [back]a
elem : {n, a} (fin n, Cmp a) => a -> [n]a -> Bit
error : {a, len} (fin len) => [len][8] -> a
False : Bit
foldl : {n, a, b} (fin n) => (a -> b -> a) -> a -> [n]b -> a
foldr : {n, a, b} (fin n) => (a -> b -> b) -> b -> [n]a -> b
2014-04-18 02:34:25 +04:00
foo : {a} a -> a
fromInteger : {a} (Arith a) => Integer -> a
fromThenTo :
{first, next, last, a, len} (fin first, fin next, fin last,
Literal first a, Literal next a, Literal last a, first != next,
lengthFromThenTo first next last == len) =>
[len]a
fromTo :
{first, last, a} (fin last, last >= first, Literal last a) =>
[1 + (last - first)]a
2018-06-15 20:18:02 +03:00
fromZ : {n} (fin n, n >= 1) => Z n -> Integer
generate :
{n, ix, a} (fin ix, n >= 1, ix >= width (n - 1)) =>
([ix] -> a) -> [n]a
groupBy :
{each, parts, a} (fin each) => [each * parts]a -> [parts][each]a
head : {n, a} [1 + n]a -> a
infFrom : {a} (Arith a) => a -> [inf]a
infFromThen : {a} (Arith a) => a -> a -> [inf]a
iterate : {a} (a -> a) -> a -> [inf]a
join :
{parts, each, a} (fin each) => [parts][each]a -> [parts * each]a
last : {n, a} (fin n) => [1 + n]a -> a
length : {n, a, b} (fin n, Literal n b) => [n]a -> b
2015-06-10 00:32:17 +03:00
lg2 : {a} (Arith a) => a -> a
map : {n, a, b} (a -> b) -> [n]a -> [n]b
2015-06-10 00:32:17 +03:00
max : {a} (Cmp a) => a -> a -> a
min : {a} (Cmp a) => a -> a -> a
negate : {a} (Arith a) => a -> a
number : {val, rep} (Literal val rep) => rep
or : {n} (fin n) => [n] -> Bit
pdiv : {u, v} (fin u, fin v) => [u] -> [v] -> [u]
pmod : {u, v} (fin u, fin v) => [u] -> [1 + v] -> [v]
pmult :
{u, v} (fin u, fin v) => [1 + u] -> [1 + v] -> [1 + (u + v)]
random : {a} [256] -> a
repeat : {n, a} a -> [n]a
reverse : {n, a} (fin n) => [n]a -> [n]a
sborrow : {n} (fin n, n >= 1) => [n] -> [n] -> Bit
scanl : {n, b, a} (b -> a -> b) -> b -> [n]a -> [1 + n]b
scanr : {n, a, b} (fin n) => (a -> b -> b) -> b -> [n]a -> [1 + n]b
scarry : {n} (fin n, n >= 1) => [n] -> [n] -> Bit
sext : {m, n} (fin m, m >= n, n >= 1) => [n] -> [m]
split :
{parts, each, a} (fin each) => [parts * each]a -> [parts][each]a
splitAt :
{front, back, a} (fin front) =>
[front + back]a -> ([front]a, [back]a)
sum : {n, a} (fin n, Arith a) => [n]a -> a
True : Bit
tail : {n, a} [1 + n]a -> [n]a
take : {front, back, a} (fin front) => [front + back]a -> [front]a
toInteger : {bits} (fin bits) => [bits] -> Integer
trace : {n, a, b} (fin n) => [n][8] -> a -> b -> b
traceVal : {n, a} (fin n) => [n][8] -> a -> a
transpose : {rows, cols, a} [rows][cols]a -> [cols][rows]a
uncurry : {a, b, c} (a -> b -> c) -> (a, b) -> c
2014-04-18 02:34:25 +04:00
undefined : {a} a
update : {n, a, ix} (fin ix) => [n]a -> [ix] -> a -> [n]a
updateEnd : {n, a, ix} (fin n, fin ix) => [n]a -> [ix] -> a -> [n]a
updates :
{n, k, ix, a} (fin ix, fin k) => [n]a -> [k][ix] -> [k]a -> [n]a
updatesEnd :
{n, k, ix, a} (fin n, fin ix, fin k) =>
[n]a -> [k][ix] -> [k]a -> [n]a
2017-09-16 02:38:03 +03:00
zero : {a} (Zero a) => a
zext : {m, n} (fin m, m >= n) => [n] -> [m]
zip : {n, a, b} [n]a -> [n]b -> [n](a, b)
zipWith : {n, a, b, c} (a -> b -> c) -> [n]a -> [n]b -> [n]c
2014-04-18 02:34:25 +04:00