Socket
Types
linear type DatagramSocket
Functions
def ipv4_addr (host : String) (port : Int | port ≥ 0 && port ≤ 65535) : {a : SockAddr | ipv4_sock_addr a = true}
def stream_socket (_ : Unit) : {s : StreamSocket | stream_bound s = false && stream_connected s = false}
def dgram_socket (_ : Unit) : {s : DatagramSocket | dgram_bound s = false && dgram_connected s = false}
def tcp_accept_socket (1 r : TcpAccept) : {s : StreamSocket | stream_connected s = true}
def tcp_accept_peer (borrow r : TcpAccept) : {a : SockAddr | ipv4_sock_addr a = true}
def stream_bind (addr : SockAddr | ipv4_sock_addr addr = true) (1 s : StreamSocket | stream_bound s = false) : {out : StreamSocket | stream_bound out = true}
def stream_listen (backlog : Int | backlog > 0) (1 s : StreamSocket | stream_bound s = true) : {out : StreamSocket | stream_bound out = true}
def stream_connect (addr : SockAddr | ipv4_sock_addr addr = true) (1 s : StreamSocket | stream_connected s = false) : {out : StreamSocket | stream_connected out = true}
def stream_accept (1 s : StreamSocket | stream_bound s = true && stream_connected s = false) : TcpAccept
def stream_send (data : SocketPayload) (1 s : StreamSocket | stream_connected s = true) : {sent : Int | sent ≥ 0 && sent ≤ payload_len data}
def stream_recv (bufsize : Int | bufsize > 0) (1 s : StreamSocket | stream_connected s = true) : {p : SocketPayload | payload_len p ≤ bufsize}
def stream_close (1 s : StreamSocket) : Unit
def dgram_bind (addr : SockAddr | ipv4_sock_addr addr = true) (1 s : DatagramSocket | dgram_bound s = false) : {out : DatagramSocket | dgram_bound out = true}
def dgram_connect (addr : SockAddr | ipv4_sock_addr addr = true) (1 s : DatagramSocket) : {out : DatagramSocket | dgram_connected out = true}
def dgram_sendto (data : SocketPayload) (addr : SockAddr | ipv4_sock_addr addr = true) (1 s : DatagramSocket) : {sent : Int | sent ≥ 0 && sent ≤ payload_len data}
def dgram_recvfrom (bufsize : Int | bufsize > 0) (1 s : DatagramSocket | dgram_bound s = true) : {r : UdpRecvFrom | udp_payload_len r ≤ bufsize}
def udp_recv_payload (r : UdpRecvFrom) : {p : SocketPayload | payload_len p = udp_payload_len r}
def udp_recv_peer (r : UdpRecvFrom) : {a : SockAddr | ipv4_sock_addr a = true}
def dgram_send (data : SocketPayload) (1 s : DatagramSocket | dgram_connected s = true) : {sent : Int | sent ≥ 0 && sent ≤ payload_len data}
def dgram_recv (bufsize : Int | bufsize > 0) (1 s : DatagramSocket | dgram_connected s = true) : {p : SocketPayload | payload_len p ≤ bufsize}
def dgram_close (1 s : DatagramSocket) : Unit
Uninterpreted
Functions declared as def f ... = uninterpreted: only their signature is known to the verifier; they have no body.
def stream_bound : (s : StreamSocket) → Bool
def stream_connected : (s : StreamSocket) → Bool
def dgram_bound : (s : DatagramSocket) → Bool
def dgram_connected : (s : DatagramSocket) → Bool
def payload_len : (p : SocketPayload) → Int
def udp_payload_len : (r : UdpRecvFrom) → Int
def ipv4_sock_addr : (a : SockAddr) → Bool