def cnd.law
bend-osdev-apparmor@0.1.0.0 · PROOF.bend:3407
import bend-osdev-apparmor@0.1.0.0/PROOF.bend as PROOF
import Base
import bend-osdev-apparmor@0.1.0.0/perm.bend as P
import bend-osdev-apparmor@0.1.0.0/options.bend as O
import bend-osdev-apparmor@0.1.0.0/profile.bend as PR
import bend-osdev-apparmor@0.1.0.0/eval.bend as V
import bend-osdev-apparmor@0.1.0.0/LAWS.bend as Laws
3407def cnd.law(+opts: O.AaOptions, +flags: PR.AaFlags, +req: P.AaPerms, +gs: List<&2, P.AaGrant>, +h1: {O.AaOptions.complain_deny(opts) == False{} : Bool}, +h2: {PR.AaMode.is_complain(PR.AaFlags.mode(flags)) == True{} : Bool}) -> {V.AaDecision.allowed(V.AaEval.decide(opts, flags, req, gs)) == True{} : Bool}:
3408 Equal.trans(Bool, V.AaDecision.allowed(V.AaEval.decide(opts, flags, req, gs)), Bool.not(Bool.and(O.AaOptions.complain_deny(opts), P.AaPerms.meets(req, V.AaEval.denied(gs)))), True{}, Laws.complain_decided_by_deny(opts, flags, req, gs, h2), Equal.cong(Bool, Bool, x => Bool.not(Bool.and(x, P.AaPerms.meets(req, V.AaEval.denied(gs)))), O.AaOptions.complain_deny(opts), False{}, h1))