def bits.or_assoc

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

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

3183def bits.or_assoc(+a: List<&2, Bool>, +b: List<&2, Bool>, +c: List<&2, Bool>) -> {P.AaBits.or(P.AaBits.or(a, b), c) == P.AaBits.or(a, P.AaBits.or(b, c)) : List<&2, Bool>}:
3184  match a:
3185    case Nil{}:
3186      {==}
3187    case Con{x, xs}:
3188      match b:
3189        case Nil{}:
3190          {==}
3191        case Con{y, ys}:
3192          match c:
3193            case Nil{}:
3194              {==}
3195            case Con{z, zs}:
3196              %b.or_assoc(x, y, z) : {Con{Bool.or(Bool.or(x, y), z), P.AaBits.or(P.AaBits.or(xs, ys), zs)} == Con{_, P.AaBits.or(xs, P.AaBits.or(ys, zs))} : List<&2, Bool>}
3197              %bits.or_assoc(xs, ys, zs) : {Con{Bool.or(Bool.or(x, y), z), P.AaBits.or(P.AaBits.or(xs, ys), zs)} == Con{Bool.or(Bool.or(x, y), z), _} : List<&2, Bool>}
3198              {==}

Uses (5)

Used by (1)