unfold DACSecureState in |- *.
intros.
cut
match fsecmat (secmat s) o with
| Some y =>
(set_In u (ActReaders y) -> PreDACRead s u o) /\
(set_In u (ActWriters y) -> PreDACWrite s u o)
| None => True
end.
elim (fsecmat (secmat s) o).
intros.
elim H0; intros.
auto.
auto.
apply H.
Qed.

(* Specifications: *)
Lemma ReadWriteImpWrite :
forall s : SFSstate,
DACSecureState s ->
forall (u : SUBJECT) (o : OBJECT),
match fsecmat (secmat s) o with
| Some y => set_In u (ActWriters y) -> PreDACWrite s u o
| None => True
end.
Lemma TwoImpLeft :
forall (s : SFSstate) (u : SUBJECT),
(forall rw : ReadersWriters,
set_In rw (ransecmat (secmat s)) ->
~ set_In u (ActReaders rw) /\ ~ set_In u (ActWriters rw)) ->
forall rw : ReadersWriters,
set_In rw (ransecmat (secmat s)) -> ~ set_In u (ActReaders rw).