Socket
Types
Functions
def ipv4_addr (host: String) (port: {p : Int | p ≥ 0 && p ≤ 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: {ad : SockAddr | ipv4_sock_addr ad = True}) (s: {sock : StreamSocket | stream_bound sock = False}) : {out : StreamSocket | stream_bound out = True}
def stream_listen (backlog: {n : Int | n > 0}) (s: {sock : StreamSocket | stream_bound sock = True}) : {out : StreamSocket | stream_bound out = True}
def stream_connect (addr: {ad : SockAddr | ipv4_sock_addr ad = True}) (s: {sock : StreamSocket | stream_connected sock = False}) : {out : StreamSocket | stream_connected out = True}
def stream_accept (s: {sock : StreamSocket | stream_bound sock = True && stream_connected sock = False}) : TcpAccept
def stream_send (data: SocketPayload) (s: {sock : StreamSocket | stream_connected sock = True}) : {sent : Int | sent ≥ 0 && sent ≤ payload_len data}
def stream_recv (bufsize: {n : Int | n > 0}) (s: {sock : StreamSocket | stream_connected sock = True}) : {p : SocketPayload | payload_len p ≤ bufsize}
def stream_close (s: StreamSocket) : Unit
def dgram_bind (addr: {ad : SockAddr | ipv4_sock_addr ad = True}) (s: {sock : DatagramSocket | dgram_bound sock = False}) : {out : DatagramSocket | dgram_bound out = True}
def dgram_connect (addr: {ad : SockAddr | ipv4_sock_addr ad = True}) (s: DatagramSocket) : {out : DatagramSocket | dgram_connected out = True}
def dgram_sendto (data: SocketPayload) (addr: {ad : SockAddr | ipv4_sock_addr ad = True}) (s: DatagramSocket) : {sent : Int | sent ≥ 0 && sent ≤ payload_len data}
def dgram_recvfrom (bufsize: {n : Int | n > 0}) (s: {sock : DatagramSocket | dgram_bound sock = 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) (s: {sock : DatagramSocket | dgram_connected sock = True}) : {sent : Int | sent ≥ 0 && sent ≤ payload_len data}
def dgram_recv (bufsize: {n : Int | n > 0}) (s: {sock : DatagramSocket | dgram_connected sock = True}) : {p : SocketPayload | payload_len p ≤ bufsize}
def dgram_close (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