(*SUBJECT, Property and TransFunc*)
Ltac OpDontChangeStPSS :=
  intros s t Sub SS TF; inversion TF;
   match goal with
   | id:(s = t) |- _ => rewrite <- id; auto
   end.Ltac OpDontChangeStPSP :=
  intros s t Sub SP TF;  (* SUBJECT, Property and TransFunc *)
   inversion TF; match goal with
                 | id:(s = t) |- _ => rewrite <- id; auto
                 end.Ltac StartPSS := intros s t Sub SS TF; inversion TF.Ltac BreakSS :=
  match goal with
  | SS:(SecureState _) |- _ =>
      unfold SecureState in SS; elim SS; intros DAC MAC
  end.Ltac StartPSP := intros s t Sub SP TF; inversion TF.

Lemma Open_smCorr22 : forall (s : SFSstate) (Sub u0 : SUBJECT) (o : OBJECT) (m : MODE), Sub <> u0 -> FuncPre5 s -> match fsecmat (open_sm s Sub o WRITE) o, fsecmat (secmat s) o with | Some y, None => ActWriters y = set_add SUBeq_dec Sub (empty_set SUBJECT) /\ ActReaders y = empty_set SUBJECT | None, _ => False | Some y, Some z => (set_In u0 (ActReaders y) -> set_In u0 (ActReaders z)) /\ (set_In u0 (ActWriters y) -> set_In u0 (ActWriters z)) end.