#if defined(__GLASGOW_HASKELL__) && (__GLASGOW_HASKELL__ >= 702)
#endif
module DCLabel.Secrecy ( SLabel(..) ) where
import DCLabel.Core
newtype SLabel = MkSLabel DCLabel
deriving (Eq, Show, Read)
instance ToLNF SLabel where
toLNF (MkSLabel l) = MkSLabel (toLNF l)
instance Lattice SLabel where
bottom = MkSLabel bottom
top = MkSLabel top
join (MkSLabel l1) (MkSLabel l2) = MkSLabel $
join l1 { integrity = emptyComponent } l2 { integrity = emptyComponent }
meet (MkSLabel l1) (MkSLabel l2) = MkSLabel $
meet l1 { integrity = emptyComponent } l2 { integrity = emptyComponent }
canflowto (MkSLabel l1) (MkSLabel l2) =
canflowto l1 { integrity = emptyComponent } l2 { integrity = emptyComponent }
instance RelaxedLattice SLabel where
canflowto_p p (MkSLabel l1) (MkSLabel l2) =
canflowto_p p l1 { integrity = emptyComponent } l2 { integrity = emptyComponent }