anchor.diff:        measure(length, commands_length(Cmds),
         aggregate(TcpStates,
         aggregate(adjacent(TcpStates),
  -      aggregate(call_features(H),
  +      aggregate([ Sock#socket.tcp_state
  +                  || Hist <- H, 
  +                     Sock <- (eqc_statem:history_state(Hist))#state.sockets ],
         eqc_component:pretty_commands(?MODULE, Cmds, {H, S, Res},
           Res == ok))))))
     end))))).
  
positive.code: 
  %% --- syn_ack ---
  
  %% syn_ack_pre(S) ->
  %%   in_tcp_state(S, syn_sent) andalso
  %%   S#socket.rcvd == S#socket.seq.
  
  syn_ack_pre(S) ->
    [] /= sockets_in_state(S, syn_sent).
  
  syn_ack_args(S) ->
    ?LET(Sock, elements(sockets_in_state(S, syn_sent)),
         [Sock#socket.ip, Sock#socket.port, Sock#socket.rip,
          Sock#socket.rport, uint32(), Sock#socket.seq, Sock#socket.id]).
  
  
negative.code:   ?SET(Id, rport, RemotePort),
    ?MATCH(Port, ?APPLY(sent_syn, [Id])),
    ?SET(Id, tcp_state, syn_sent),
    ?SET(Id, socket_type, connect),
    ?SET(Id, port, Port),
    ?BLOCK({syn_sent, Id}),
    ?PAR([ ?APPLY(set_socket, [Id])
         , ?APPLY(sent_ack, [Id]) ]),
    ?SET(Id, tcp_state, established).
  
  %% --- listen ---
  