Library Pip.Proof.invariants.CheckChild


Summary

This file contains the invariant of checkChild some associated lemmas
getFstShadow
getIndexOfAddr
getTableAddr
case isNullptSh1
readPDflag
Lemma checkChildInv vaInCurrentPartition vaChild currentPart descChild level:
{{ fun s : state ⇒ ((((partitionsIsolation s ∧
    kernelDataIsolation s ∧
    verticalSharing s ∧
    consistency s) ∧
    (Nat.eqb Kidx
       (List.nth (length vaInCurrentPartition - (nbLevel - 1 + 2)) vaInCurrentPartition defaultIndex))
       = false) ∧
    (Nat.eqb Kidx
       (List.nth (length vaChild - (nbLevel - 1 + 2)) vaChild defaultIndex))
       = false) ∧
    currentPart = currentPartition s) ∧
    Some level = StateLib.getNbLevel
}}
  Internal.checkChild currentPart level descChild
{{
  fun res s ⇒
     (res = false ∧
        partitionsIsolation s ∧
        kernelDataIsolation s ∧
        verticalSharing s ∧
        consistency s
     )
  ∨ (res = true ∧
        ∃ currentShadow1 idxRefChild ptRefChild,
          partitionsIsolation s ∧
          kernelDataIsolation s ∧
          verticalSharing s ∧
          consistency s ∧

          (Nat.eqb
             Kidx
             (List.nth (length vaInCurrentPartition - (nbLevel - 1 + 2)) vaInCurrentPartition defaultIndex)
          ) = false ∧
          (Nat.eqb
             Kidx
             (List.nth (length vaChild - (nbLevel - 1 + 2)) vaChild defaultIndex)
          ) = false ∧

          currentPart = currentPartition s ∧
          Some level = StateLib.getNbLevel ∧

          nextEntryIsPP currentPart sh1idx currentShadow1 s ∧
          StateLib.getIndexOfAddr descChild fstLevel = idxRefChild ∧
          (getTableAddrRoot' ptRefChild sh1idx currentPart descChild s ∧
             ptRefChild = defaultPage ∨
             (∀ idx : index,
                StateLib.getIndexOfAddr descChild fstLevel = idx →
                  isVE ptRefChild idx s ∧
                  getTableAddrRoot ptRefChild sh1idx currentPart descChild s
             )
          ) ∧
          (Nat.eqb defaultPage ptRefChild) = false
     )
}}.
getFstShadow
StateLib.getIndexOfAddr
getTableAddr
simplify the new precondition