language-ats-1.7.6.0: test/data/memchr.out
// bad (?) idea: use rawmemchr + append lol
fn memchr
{ l : addr | l != null }{m:nat}{ n : nat | n <= m }(bytes_v(l,m)
| ptr(l), int, size_t(n)) :
[ l0 : addr | l0 == null || l0 >= l && l0-l <= m ] ( bytes_v(l, l0-l)
, bytes_v(l0, l+m-l0)
| ptr(l0)) =
"mac#"
fn memchr2_rs
{ l : addr | l != null }{m:nat}{ n : nat | n <= m }(!bytes_v(l, m)
| ptr(l), char, char, size_t(n)) :
[ k : nat | k <= n || k == 18446744073709551615 ] size_t(k) =
"ext#"
fn memchr2
{ l : addr | l != null }{m:nat}{ n : nat | n <= m }(!bytes_v(l, m)
| ptr(l), char, char, size_t(n)) :
Option_vt([ k : nat | k <= n ] size_t(k)) =
"ext#"
fn memchr3_rs
{ l : addr | l != null }{m:nat}{ n : nat | n <= m }(!bytes_v(l, m)
| ptr(l), char, char, char, size_t(n)) :
[ k : nat | k <= n || k == 18446744073709551615 ] size_t(k) =
"ext#"
fn memchr3
{ l : addr | l != null }{m:nat}{ n : nat | n <= m }(!bytes_v(l, m)
| ptr(l), char, char, char, size_t(n)) :
Option_vt([ k : nat | k <= n ] size_t(k)) =
"ext#"