Verification: open

Require ModelProperties.

Require AuxiliaryLemmas.

Section openIsSecure.




Lemma OpenPSS:
 (s,t:SFSstate; u:SUBJECT)
  (FuncPre5 s)
  ->(SecureState s)->(TransFunc u s Open t)->(SecureState t).
Intros s t Sub FP5 SS TF; Inversion TF.
Inversion H.
Unfold SecureState DACSecureState SimpleSecurity; Simpl; BreakSS .
Split; Intros.
Elim (OBJeq_dec o o0); Intro EQo.
Rewrite <- EQo.
Elim (SUBeq_dec Sub u0); Intro EQu.
Rewrite <- EQu.
Unfold 1 open_sm PreDACRead PreDACWrite; Simpl.
Cut Cases (fsecmat (secmat s) o) of
      (Some y) => (set_In (o,y) (secmat s))
    | None => ~(set_In o (DOM OBJeq_dec (secmat s)))
    end.
Cut Cases (fsecmat (secmat s) o) of
      None => True
    | (Some y) => (set_In Sub (ActWriters y))->(PreDACWrite s Sub o)
    end.
Elim (fsecmat (secmat s) o).
Intros;
  Replace (fsecmat
            (set_add SECMATeq_dec
              (o,
               (mkRW (set_add SUBeq_dec Sub (ActReaders a))
                 (ActWriters a)))
              (set_remove SECMATeq_dec (o,a) (secmat s))) o)
   with (Some ReadersWriters
          (mkRW (set_add SUBeq_dec Sub (ActReaders a)) (ActWriters a))).
Simpl.
Split; Intros.
Auto.

Unfold PreDACWrite in H9; Apply H9; Auto.

Unfold fsecmat; Apply AddEq1.
Auto.

Intros;
  Replace (fsecmat
            (set_add SECMATeq_dec
              (o,(mkRW (cons Sub (nil SUBJECT)) (empty_set SUBJECT)))
              (secmat s)) o)
   with (Some ReadersWriters
          (mkRW (cons Sub (nil SUBJECT)) (empty_set SUBJECT))).
Simpl.
Split; (Intro H12; Elim H12).
Auto.

Tauto.

Unfold fsecmat; Apply AddEq1; Auto.

Apply ReadWriteImpWrite; Auto.

Unfold fsecmat; Apply DOMFuncRel4.

Cut Cases (fsecmat (open_sm s Sub o READ) o) (fsecmat (secmat s) o) of
      (Some y) None =>
       (ActReaders y)=(set_add SUBeq_dec Sub (empty_set SUBJECT))
       /\(ActWriters 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.
Cut Cases (fsecmat (secmat s) o) of
      None => True
    | (Some y) =>
       ((set_In u0 (ActReaders y))->(PreDACRead s u0 o))
       /\((set_In u0 (ActWriters y))->(PreDACWrite s u0 o))
    end.
Unfold PreDACRead PreDACWrite; Simpl; Elim (fsecmat (secmat s) o);
  Elim (fsecmat (open_sm s Sub o READ) o).
Tauto.

Auto.

Split; Intros.
Elim H10; Intros.
Absurd Sub=u0; Auto.
Rewrite H12 in H11.
Simpl in H11.
Tauto.

Elim H10; Intros H13 H14; Rewrite H14 in H11; Simpl in H11;
  Contradiction.

Auto.

Apply DAC.

Apply Open_smCorr21; Auto.

Replace (fsecmat (open_sm s Sub o READ) o0)
 with (fsecmat (secmat s) o0).
Unfold PreDACRead PreDACWrite; Simpl;
  Unfold DACSecureState PreDACRead PreDACWrite in DAC; Apply DAC.

Auto.

Elim (OBJeq_dec o o0); Intro EQo.
Rewrite <- EQo.
Elim (SUBeq_dec Sub u0); Intro EQu.
Rewrite <- EQu.
Unfold open_sm; Simpl.
Cut Cases (fsecmat (secmat s) o) of
      (Some y) => (set_In (o,y) (secmat s))
    | None => ~(set_In o (DOM OBJeq_dec (secmat s)))
    end.
Cut Cases (fOSC (objectSC s) o) of
      (Some t) =>
       Cases (fSSC (subjectSC s) Sub) of
         (Some b) => (le_sc t b)
       | None => False
       end
    | None => False
    end.
Elim (fsecmat (secmat s) o); Elim (fOSC (objectSC s) o);
  Elim (fSSC (subjectSC s) Sub); Contradiction Orelse Auto.
Intros until a1;
  Elim (fsecmat
         (set_add SECMATeq_dec
           (o,
            (mkRW (set_add SUBeq_dec Sub (ActReaders a1))
              (ActWriters a1)))
           (set_remove SECMATeq_dec (o,a1) (secmat s))) o); Auto.

Intros until a0;
  Elim (fsecmat
         (set_add SECMATeq_dec
           (o,(mkRW (cons Sub (nil SUBJECT)) (empty_set SUBJECT)))
           (secmat s)) o); Auto.

Auto.

Unfold fsecmat; Apply DOMFuncRel4.

Cut Cases (fsecmat (open_sm s Sub o READ) o) (fsecmat (secmat s) o) of
      (Some y) None =>
       (ActReaders y)=(set_add SUBeq_dec Sub (empty_set SUBJECT))
       /\(ActWriters 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.
Cut Cases (fOSC (objectSC s) o) of
      (Some t) =>
       Cases (fSSC (subjectSC s) Sub) of
         (Some b) => (le_sc t b)
       | None => False
       end
    | None => False
    end.
Cut Cases
      (fsecmat (secmat s) o)
    (fOSC (objectSC s) o)
    (fSSC (subjectSC s) u0)
    of
      None _ _ => True
    | _ None _ => True
    | _ _ None => True
    | (Some x) (Some y) (Some z) =>
       (set_In u0 (ActReaders x))\/(set_In u0 (ActWriters x))
       ->(le_sc y z)
    end.
Elim (fSSC (subjectSC s) u0); Elim (fsecmat (open_sm s Sub o READ) o);
  Elim (fsecmat (secmat s) o); Elim (fOSC (objectSC s) o);
  Elim (fSSC (subjectSC s) Sub); Contradiction Orelse Auto.
Tauto.

Intros.
Elim H11; Intros H14 H15; Rewrite H14 in H12; Rewrite H15 in H12;
  Simpl in H12; Tauto.

Unfold SimpleSecurity in MAC; Apply MAC; Auto.

Auto.

Apply Open_smCorr21; Auto.

Replace (fsecmat (open_sm s Sub o READ) o0)
 with (fsecmat (secmat s) o0).
Unfold SimpleSecurity in MAC; Apply MAC; Auto.

Auto.









Unfold SecureState DACSecureState SimpleSecurity; Simpl; BreakSS .
Split; Intros.
Elim (OBJeq_dec o o0); Intro EQo.
Rewrite <- EQo.
Elim (SUBeq_dec Sub u0); Intro EQu.
Rewrite <- EQu.
Unfold 1 open_sm PreDACRead PreDACWrite; Simpl.
Cut Cases (fsecmat (secmat s) o) of
      (Some y) => (set_In (o,y) (secmat s))
    | None => ~(set_In o (DOM OBJeq_dec (secmat s)))
    end.
Cut Cases (fsecmat (secmat s) o) of
      None => True
    | (Some y) => (set_In Sub (ActReaders y))->(PreDACRead s Sub o)
    end.
Elim (fsecmat (secmat s) o).
Intros;
  Replace (fsecmat
            (set_add SECMATeq_dec
              (o,
               (mkRW (ActReaders a)
                 (set_add SUBeq_dec Sub (ActWriters a))))
              (set_remove SECMATeq_dec (o,a) (secmat s))) o)
   with (Some ReadersWriters
          (mkRW (ActReaders a) (set_add SUBeq_dec Sub (ActWriters a)))).
Simpl.
Split; Intros.
Unfold PreDACRead in H9; Apply H9; Auto.

Auto.

Unfold fsecmat; Apply AddEq1; Auto.

Intros;
  Replace (fsecmat
            (set_add SECMATeq_dec
              (o,(mkRW (empty_set SUBJECT) (cons Sub (nil SUBJECT))))
              (secmat s)) o)
   with (Some ReadersWriters
          (mkRW (empty_set SUBJECT) (cons Sub (nil SUBJECT)))).
Simpl.
Split; (Intro H12; Elim H12).
Auto.

Contradiction.

Unfold fsecmat; Apply AddEq1; Auto.

Apply ReadWriteImpRead; Auto.

Unfold fsecmat; Apply DOMFuncRel4.

Cut Cases (fsecmat (open_sm s Sub o WRITE) o) (fsecmat (secmat s) o) of
      (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.
Cut Cases (fsecmat (secmat s) o) of
      None => True
    | (Some y) =>
       ((set_In u0 (ActReaders y))->(PreDACRead s u0 o))
       /\((set_In u0 (ActWriters y))->(PreDACWrite s u0 o))
    end.
Unfold PreDACRead PreDACWrite; Simpl; Elim (fsecmat (secmat s) o);
  Elim (fsecmat (open_sm s Sub o WRITE) o).
Tauto.

Contradiction.

Split; Intros.
Elim H10; Intros.
Absurd Sub=u0; Auto.
Rewrite H13 in H11.
Simpl in H11.
Tauto.

Elim H10; Intros H13 H14; Rewrite H13 in H11; Simpl in H11;
  Tauto.

Auto.

Apply DAC.

Apply Open_smCorr22; Auto.

Replace (fsecmat (open_sm s Sub o WRITE) o0)
 with (fsecmat (secmat s) o0).
Unfold PreDACRead PreDACWrite; Simpl;
  Unfold DACSecureState PreDACRead PreDACWrite in DAC; Apply DAC.

Auto.

Unfold SimpleSecurity; Intros; Simpl.
Elim (OBJeq_dec o o0); Intro EQo.
Rewrite <- EQo.
Elim (SUBeq_dec Sub u0); Intro EQu.
Rewrite <- EQu.
Unfold open_sm; Simpl.
Cut Cases (fsecmat (secmat s) o) of
      (Some y) => (set_In (o,y) (secmat s))
    | None => ~(set_In o (DOM OBJeq_dec (secmat s)))
    end.
Cut Cases (fOSC (objectSC s) o) of
      (Some t) =>
       Cases (fSSC (subjectSC s) Sub) of
         (Some b) => (le_sc t b)
       | None => False
       end
    | None => False
    end.
Elim (fsecmat (secmat s) o); Elim (fOSC (objectSC s) o);
  Elim (fSSC (subjectSC s) Sub); Contradiction Orelse Auto.
Intros until a1;
  Elim (fsecmat
         (set_add SECMATeq_dec
           (o,
            (mkRW (ActReaders a1)
              (set_add SUBeq_dec Sub (ActWriters a1))))
           (set_remove SECMATeq_dec (o,a1) (secmat s))) o); Auto.

Intros until a0;
  Elim (fsecmat
         (set_add SECMATeq_dec
           (o,(mkRW (empty_set SUBJECT) (cons Sub (nil SUBJECT))))
           (secmat s)) o); Auto.

Auto.

Unfold fsecmat; Apply DOMFuncRel4.

Cut Cases (fsecmat (open_sm s Sub o WRITE) o) (fsecmat (secmat s) o) of
      (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.
Cut Cases (fOSC (objectSC s) o) of
      (Some t) =>
       Cases (fSSC (subjectSC s) Sub) of
         (Some b) => (le_sc t b)
       | None => False
       end
    | None => False
    end.
Cut Cases
      (fsecmat (secmat s) o)
    (fOSC (objectSC s) o)
    (fSSC (subjectSC s) u0)
    of
      None _ _ => True
    | _ None _ => True
    | _ _ None => True
    | (Some x) (Some y) (Some z) =>
       (set_In u0 (ActReaders x))\/(set_In u0 (ActWriters x))
       ->(le_sc y z)
    end.
Elim (fSSC (subjectSC s) u0); Elim (fsecmat (open_sm s Sub o WRITE) o);
  Elim (fsecmat (secmat s) o); Elim (fOSC (objectSC s) o);
  Elim (fSSC (subjectSC s) Sub); Contradiction Orelse Auto.
Tauto.

Intros.
Elim H11; Intros H14 H15; Rewrite H14 in H12; Rewrite H15 in H12;
  Simpl in H12; Tauto.

Unfold SimpleSecurity in MAC; Apply MAC; Auto.

Auto.

Apply Open_smCorr22; Auto.

Replace (fsecmat (open_sm s Sub o WRITE) o0)
 with (fsecmat (secmat s) o0).
Unfold SimpleSecurity in MAC; Apply MAC; Auto.

Auto.

Qed.




Lemma OpenPSP:
 (s,t:SFSstate; u:SUBJECT)
  (FuncPre5 s)
  ->(StarProperty s)->(TransFunc u s Open t)->(StarProperty t).
Intros s t Sub FP5 SP TF; Inversion TF.
Inversion H.
Unfold StarProperty; Simpl; Intros.
Cut Cases
      (fsecmat (secmat s) o1)
    (fsecmat (secmat s) o2)
    (fOSC (objectSC s) o2)
    (fOSC (objectSC s) o1)
    of
      None _ _ _ => True
    | _ None _ _ => True
    | _ _ None _ => True
    | _ _ _ None => True
    | (Some w) (Some x) (Some y) (Some z) =>
       (set_In u0 (ActWriters w))
       ->(set_In u0 (ActReaders x))
       ->(le_sc y z)
    end.
Elim (OBJeq_dec o o1); Elim (OBJeq_dec o o2); Intros EQ2 EQ1.
Rewrite <- EQ1; Rewrite <- EQ2.
Elim (fsecmat (secmat s) o); Elim (fOSC (objectSC s) o);
  Elim (fsecmat (open_sm s Sub o READ) o); Auto.

Rewrite <- EQ1.
Replace (fsecmat (open_sm s Sub o READ) o2)
 with (fsecmat (secmat s) o2).
Cut Cases (fsecmat (open_sm s Sub o READ) o) (fsecmat (secmat s) o) of
      None _ => False
    | (Some y) None =>
       (ActReaders y)=(set_add SUBeq_dec Sub (empty_set SUBJECT))
       /\(ActWriters y)=(empty_set SUBJECT)
    | (Some x) (Some y) =>
       (set_In u0 (ActWriters x))->(set_In u0 (ActWriters y))
    end.
Elim (fsecmat (secmat s) o); Elim (fOSC (objectSC s) o);
  Elim (fsecmat (secmat s) o2);
  Elim (fsecmat (open_sm s Sub o READ) o); Elim (fOSC (objectSC s) o2);
  Auto.
Intros.
Elim H9; Intros H16 H17; Rewrite H17 in H11; Simpl in H11;
  Contradiction.

Apply Open_smCorr31; Auto.

Auto.

Rewrite <- EQ2.
Replace (fsecmat (open_sm s Sub o READ) o1)
 with (fsecmat (secmat s) o1).
Elim (SUBeq_dec Sub u0); Intro EQu.
Cut Cases
      (fsecmat (secmat s) o1)
    (fOSC (objectSC s) o)
    (fOSC (objectSC s) o1)
    of
      None _ _ => False
    | _ None _ => False
    | _ _ None => False
    | (Some x) (Some y) (Some z) =>
       (set_In Sub (ActWriters x))->(le_sc y z)
    end.
Rewrite <- EQu.
Elim (fsecmat (secmat s) o); Elim (fOSC (objectSC s) o);
  Elim (fsecmat (secmat s) o1);
  Elim (fsecmat (open_sm s Sub o READ) o); Elim (fOSC (objectSC s) o1);
  Auto.

Unfold PreStarPropRead in H6; Apply H6.

Cut Cases (fsecmat (open_sm s Sub o READ) o) (fsecmat (secmat s) o) of
      (Some y) None =>
       (ActReaders y)=(set_add SUBeq_dec Sub (empty_set SUBJECT))
       /\(ActWriters 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.
Elim (fsecmat (secmat s) o); Elim (fOSC (objectSC s) o);
  Elim (fsecmat (secmat s) o1);
  Elim (fsecmat (open_sm s Sub o READ) o); Elim (fOSC (objectSC s) o1);
  Auto.
Tauto.

Intros.
Elim H9; Intros H16 H17; Rewrite H16 in H12; Simpl in H12; Elim H12;
  Intro; Try Contradiction.
Absurd Sub=u0; Auto.

Apply Open_smCorr21; Auto.

Auto.

Replace (fsecmat (open_sm s Sub o READ) o1)
 with (fsecmat (secmat s) o1).
Replace (fsecmat (open_sm s Sub o READ) o2)
 with (fsecmat (secmat s) o2).
Auto.

Auto.

Auto.

Unfold StarProperty in SP; Apply SP; Auto.











Unfold StarProperty; Simpl; Intros.
Cut Cases
      (fsecmat (secmat s) o1)
    (fsecmat (secmat s) o2)
    (fOSC (objectSC s) o2)
    (fOSC (objectSC s) o1)
    of
      None _ _ _ => True
    | _ None _ _ => True
    | _ _ None _ => True
    | _ _ _ None => True
    | (Some w) (Some x) (Some y) (Some z) =>
       (set_In u0 (ActWriters w))
       ->(set_In u0 (ActReaders x))
       ->(le_sc y z)
    end.
Elim (OBJeq_dec o o1); Elim (OBJeq_dec o o2); Intros EQ2 EQ1.
Rewrite <- EQ1; Rewrite <- EQ2.
Elim (fsecmat (secmat s) o); Elim (fOSC (objectSC s) o);
  Elim (fsecmat (open_sm s Sub o WRITE) o); Auto.

Rewrite <- EQ1.
Replace (fsecmat (open_sm s Sub o WRITE) o2)
 with (fsecmat (secmat s) o2).
Elim (SUBeq_dec Sub u0); Intro EQu.
Cut Cases
       (fsecmat (secmat s) o2)
     (fOSC (objectSC s) o)
     (fOSC (objectSC s) o2)
     of
       None _ _ => False
     | _ None _ => False
     | _ _ None => False
     | (Some x) (Some y) (Some z) =>
        (set_In Sub (ActReaders x))->(le_sc z y)
     end.
Rewrite <- EQu.
Elim (fsecmat (secmat s) o); Elim (fOSC (objectSC s) o);
  Elim (fsecmat (secmat s) o2);
  Elim (fsecmat (open_sm s Sub o WRITE) o);
  Elim (fOSC (objectSC s) o2); Auto.

Unfold PreStarPropWrite in H6; Apply H6.

Cut Cases (fsecmat (open_sm s Sub o WRITE) o) (fsecmat (secmat s) o) of
      (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.
Elim (fsecmat (secmat s) o); Elim (fOSC (objectSC s) o);
  Elim (fsecmat (secmat s) o2);
  Elim (fsecmat (open_sm s Sub o WRITE) o);
  Elim (fOSC (objectSC s) o2); Auto.
Tauto.

Intros.
Elim H9; Intros H15 H16.
Rewrite H15 in H11; Simpl in H11; Elim H11; Intro; Try Contradiction.
Absurd Sub=u0; Auto.

Apply Open_smCorr22; Auto.

Auto.

Rewrite <- EQ2.
Replace (fsecmat (open_sm s Sub o WRITE) o1)
 with (fsecmat (secmat s) o1).
Elim (SUBeq_dec Sub u0); Intro EQu.
Cut Cases (fsecmat (open_sm s Sub o WRITE) o) (fsecmat (secmat s) o) of
      (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))
    end.
Rewrite <- EQu.
Elim (fsecmat (secmat s) o); Elim (fOSC (objectSC s) o);
  Elim (fsecmat (secmat s) o1);
  Elim (fsecmat (open_sm s Sub o WRITE) o);
  Elim (fOSC (objectSC s) o1); Auto.
Intros.
Elim H9; Intros H14 H15; Rewrite H15 in H12; Simpl in H12;
  Contradiction.

Apply Open_smCorr32; Auto.

Cut Cases (fsecmat (open_sm s Sub o WRITE) o) (fsecmat (secmat s) o) of
      (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.
Elim (fsecmat (secmat s) o); Elim (fOSC (objectSC s) o);
  Elim (fsecmat (secmat s) o1);
  Elim (fsecmat (open_sm s Sub o WRITE) o);
  Elim (fOSC (objectSC s) o1); Auto.
Tauto.

Intros.
Elim H9; Intros H14 H15; Rewrite H15 in H12; Simpl in H12;
  Contradiction.

Apply Open_smCorr22; Auto.

Auto.

Replace (fsecmat (open_sm s Sub o WRITE) o1)
 with (fsecmat (secmat s) o1).
Replace (fsecmat (open_sm s Sub o WRITE) o2)
 with (fsecmat (secmat s) o2).
Auto.

Auto.

Auto.

Unfold StarProperty in SP; Apply SP; Auto.

Qed.




Lemma OpenPCP:
 (s,t:SFSstate)(PreservesControlProp s Open t).
Intros; Unfold PreservesControlProp; Intros Sub TF; Inversion TF;
  Unfold ControlProperty.
Inversion H.
Split.
Intros.
Split.
Intros;
  Absurd (DACCtrlAttrHaveChanged s
           (mkSFS (groups s) (primaryGrp s) (subjectSC s) (AllGrp s)
             (RootGrp s) (SecAdmGrp s) (objectSC s) (acl s)
             (open_sm s Sub o READ) (files s) (directories s)) o0);
  Auto.

Intros;
  Absurd (MACObjCtrlAttrHaveChanged s
           (mkSFS (groups s) (primaryGrp s) (subjectSC s) (AllGrp s)
             (RootGrp s) (SecAdmGrp s) (objectSC s) (acl s)
             (open_sm s Sub o READ) (files s) (directories s)) o0);
  Auto.

Intros;
  Absurd (MACSubCtrlAttrHaveChanged s
           (mkSFS (groups s) (primaryGrp s) (subjectSC s) (AllGrp s)
             (RootGrp s) (SecAdmGrp s) (objectSC s) (acl s)
             (open_sm s Sub o READ) (files s) (directories s)) u0);
  Auto.

Split.
Intros.
Split.
Intros;
  Absurd (DACCtrlAttrHaveChanged s
           (mkSFS (groups s) (primaryGrp s) (subjectSC s) (AllGrp s)
             (RootGrp s) (SecAdmGrp s) (objectSC s) (acl s)
             (open_sm s Sub o WRITE) (files s) (directories s)) o0);
  Auto.

Intros;
  Absurd (MACObjCtrlAttrHaveChanged s
           (mkSFS (groups s) (primaryGrp s) (subjectSC s) (AllGrp s)
             (RootGrp s) (SecAdmGrp s) (objectSC s) (acl s)
             (open_sm s Sub o WRITE) (files s) (directories s)) o0);
  Auto.

Intros;
  Absurd (MACSubCtrlAttrHaveChanged s
           (mkSFS (groups s) (primaryGrp s) (subjectSC s) (AllGrp s)
             (RootGrp s) (SecAdmGrp s) (objectSC s) (acl s)
             (open_sm s Sub o WRITE) (files s) (directories s)) u0);
  Auto.

Qed.


End openIsSecure.

Hints Resolve OpenPSS OpenPSP OpenPCP.


Index
This page has been generated by coqdoc