(*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 NoMACObjChange : forall (s : SFSstate) (o : OBJECT) (FILES : set (OBJECT * FILECONT)) (DIRECTS : set (OBJECT * DIRCONT)) (ACL : set (OBJECT * AccessCtrlListData)) (SSC : set (SUBJECT * SecClass)) (SM : set (OBJECT * ReadersWriters)), ~ MACObjCtrlAttrHaveChanged s (mkSFS (groups s) (primaryGrp s) SSC (AllGrp s) (RootGrp s) (SecAdmGrp s) (objectSC s) ACL SM FILES DIRECTS) o.