Notation epoch := nat (only parsing).Record server_state :=
  ServerState {
      outstanding : seq nid;
      current_epoch : epoch;
      current_holder : option nid
    }.Record server_state :=
  ServerState {
      outstanding : seq nid;
      current_epoch : epoch;
      current_holder : option nid
    }.Record server_state :=
  ServerState {
      outstanding : seq nid;
      current_epoch : epoch;
      current_holder : option nid
    }.Record server_state :=
  ServerState {
      outstanding : seq nid;
      current_epoch : epoch;
      current_holder : option nid
    }.Record server_state :=
  ServerState {
      outstanding : seq nid;
      current_epoch : epoch;
      current_holder : option nid
    }.Inductive client_state :=
| NotHeld
| Held of epoch.Inductive client_state :=
| NotHeld
| Held of epoch.Inductive client_state :=
| NotHeld
| Held of epoch.Definition acquire_tag := 0.Definition grant_tag := 1.Definition release_tag := 2.Definition st := ptr_nat 1.

Lemma l2 d: lock_coh d -> valid (dsoup d).