def ptr.inc

bend-osdev-apparmor@0.1.0.0 · PROOF.bend:3699

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/rule_ptrace.bend as RP

3699def ptr.inc(+opts: O.AaOptions, +flags: PR.AaFlags, +req: P.AaPerms, +xs: List<&2, RP.AaPtraceRule>, +ys: List<&2, RP.AaPtraceRule>, +q: RP.AaPtraceQuery) -> {V.AaEval.decide(opts, flags, req, RP.AaPtraceRule.grants(RP.AaPtraceRule.append(RP.AaPtraceRule.append(xs, ys), ys), q)) == V.AaEval.decide(opts, flags, req, RP.AaPtraceRule.grants(RP.AaPtraceRule.append(xs, ys), q)) : V.AaDecision}:
3700  Equal.trans(V.AaDecision, V.AaEval.decide(opts, flags, req, RP.AaPtraceRule.grants(RP.AaPtraceRule.append(RP.AaPtraceRule.append(xs, ys), ys), q)), V.AaEval.decide(opts, flags, req, P.AaGrant.append(P.AaGrant.append(RP.AaPtraceRule.grants(xs, q), RP.AaPtraceRule.grants(ys, q)), RP.AaPtraceRule.grants(ys, q))), V.AaEval.decide(opts, flags, req, RP.AaPtraceRule.grants(RP.AaPtraceRule.append(xs, ys), q)), Equal.cong(List<&2, P.AaGrant>, V.AaDecision, x => V.AaEval.decide(opts, flags, req, x), RP.AaPtraceRule.grants(RP.AaPtraceRule.append(RP.AaPtraceRule.append(xs, ys), ys), q), P.AaGrant.append(P.AaGrant.append(RP.AaPtraceRule.grants(xs, q), RP.AaPtraceRule.grants(ys, q)), RP.AaPtraceRule.grants(ys, q)), Equal.trans(List<&2, P.AaGrant>, RP.AaPtraceRule.grants(RP.AaPtraceRule.append(RP.AaPtraceRule.append(xs, ys), ys), q), P.AaGrant.append(RP.AaPtraceRule.grants(RP.AaPtraceRule.append(xs, ys), q), RP.AaPtraceRule.grants(ys, q)), P.AaGrant.append(P.AaGrant.append(RP.AaPtraceRule.grants(xs, q), RP.AaPtraceRule.grants(ys, q)), RP.AaPtraceRule.grants(ys, q)), ptr.gapp(RP.AaPtraceRule.append(xs, ys), ys, q), Equal.cong(List<&2, P.AaGrant>, List<&2, P.AaGrant>, x => P.AaGrant.append(x, RP.AaPtraceRule.grants(ys, q)), RP.AaPtraceRule.grants(RP.AaPtraceRule.append(xs, ys), q), P.AaGrant.append(RP.AaPtraceRule.grants(xs, q), RP.AaPtraceRule.grants(ys, q)), ptr.gapp(xs, ys, q)))), Equal.trans(V.AaDecision, V.AaEval.decide(opts, flags, req, P.AaGrant.append(P.AaGrant.append(RP.AaPtraceRule.grants(xs, q), RP.AaPtraceRule.grants(ys, q)), RP.AaPtraceRule.grants(ys, q))), V.AaEval.decide(opts, flags, req, P.AaGrant.append(RP.AaPtraceRule.grants(xs, q), RP.AaPtraceRule.grants(ys, q))), V.AaEval.decide(opts, flags, req, RP.AaPtraceRule.grants(RP.AaPtraceRule.append(xs, ys), q)), inc.decide(opts, flags, req, RP.AaPtraceRule.grants(xs, q), RP.AaPtraceRule.grants(ys, q)), Equal.cong(List<&2, P.AaGrant>, V.AaDecision, x => V.AaEval.decide(opts, flags, req, x), P.AaGrant.append(RP.AaPtraceRule.grants(xs, q), RP.AaPtraceRule.grants(ys, q)), RP.AaPtraceRule.grants(RP.AaPtraceRule.append(xs, ys), q), Equal.sym(List<&2, P.AaGrant>, RP.AaPtraceRule.grants(RP.AaPtraceRule.append(xs, ys), q), P.AaGrant.append(RP.AaPtraceRule.grants(xs, q), RP.AaPtraceRule.grants(ys, q)), ptr.gapp(xs, ys, q)))))

Uses (17)

Used by (1)