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 (r : TcpAccept) : {s : StreamSocket | stream_connected s = True}
def tcp_accept_peer (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