úÎ,»)Î4      !"#$%&'()*+,- . / 0 1 2 3 Unsafe<=:This monad labels the results of the computation (of type a) with label l.Labeling expressions of type a with label l.Label of resourcesIt lifts arbitrary 4 -actions.Execute secure computations.    Trustworthy<= Throwing exceptions VThrowing and catching exceptions are done among family members with the same labels     Trustworthy<= To help the type-system    Safe<=%Type class encoding security lattices5IType class used to avoid arbitrary instances by attackers (Pablo's trick)Label for secretsLabel for public data 567 567Unsafe<=bIt lifts functions which create resources into secure functions which create labeled resources It lifts an 4&-action which writes into a data type d a@ into a secure function which writes into a labeled resource It lifts an 4%-action which reads from a data type d a? into a secure function which reads from a labeled resource5Proxy function to set the index of the family member %Auxiliary function. A combination of  and .%Auxiliary function. A combination of  and .8It lifts an operation which perform a read on data type d a7, but it also performs a write on it as side-effect9It lifts an operation which perform a write on data type d a6, but it also performs a read on it as side-effect Trustworthy<=Labeled expressions Type denoting values of type a#Creation of labeled expressions$Observing labeled expressions !"#$ !"#$ !"#$ !"#$ Trustworthy<=%Labeled MVars&Creation of a labeled MVar'Creation of an empty labeled MVar(Securely taking a labeled MVar) Securely writing into a labeled MVar%&'()%&'()%&'()%&'() Trustworthy<=*¿Primitive which allows family members to safely communicate. The function finishes even if an exception is raised---the exception is rethrown when the returned value gets inspected. 6This function must not be used in a concurrent setting.+Safely spawning new threads,<Safely spawning new threads. The function returns a labeled 8- where the outcome of the thread is stored*+,*+,*+,*+,  Trustworthy<=-Labeled references.Creation of labeled references/Reading labeled references0Writing labeled references-./0-./0-./0-./0  Trustworthy<=1Labeled resources as functors3It upgrades a labeled resource1231231231239    !"#$%&'()*+,-./0123456 7 8 9 : ; < =>?@ABCDEFG"mac-0.1.3.0-Li6em9wEPqhIiNqosnTOgTMAC.Core MAC.ExceptionMAC.MAC MAC.Lattice MAC.Effects MAC.LabeledMAC.MVar MAC.ControlMAC.RefMAC.FlexibleLbMACMkMACResMkResunReslabelOfioTCBrunMAC $fMonadMAC$fApplicativeMAC $fFunctorMACthrowMACcatchMACfixLessHL$fLessHH$fLessLH$fLessLL $fCanFlowToHH $fCanFlowToLH $fCanFlowToLLcreatewriteupreaddown read_and_fix write_and_fixrw_readrw_writeLabeledIdMkIdunIdlabelunlabelMACMVar newMACMVarnewMACEmptyMVar takeMACMVar putMACMVarjoinMACforkMAC forkMACMVarMACRef newMACRef readMACRef writeMACRefsfmap<<*>>relabelghc-prim GHC.TypesIO CanFlowToMkHMkLbaseGHC.MVarMVar