(** Actions that require a [Readable] permission*)
Inductive raction ev : Prop :=
| read: action ev = Read ->
raction ev
| acq: action ev = Acquire ->
raction ev
| rel: action ev = Release ->
raction ev
| facq: action ev = Failacq ->
raction ev.
(** Actions that require a [Writable] permission*)
Inductive waction ev : Prop:=
| write: action ev = Write ->
waction ev
| mk: action ev = Mklock ->
waction ev
| fl: action ev = Freelock ->
waction ev.

Lemma compete_cases:
forall evi evj
(Hcompetes: competes evi evj),
(raction evi /\ waction evj) \/
(waction evi /\ caction evj).