def bool.and3

bend-osdev-caps@0.1.0.0 · PROOF.bend:68

import bend-osdev-caps@0.1.0.0/PROOF.bend as PROOF
import Base

68def bool.and3(+x: Bool, +y: Bool, +z: Bool) -> {x == True{} : Bool} -> {y == True{} : Bool} -> {z == True{} : Bool} -> {Bool.and(x, Bool.and(y, z)) == True{} : Bool}:
69  match x y z:
70    case True{} True{} True{}:
71      hx => hy => hz => {==}
72    case False{} y z:
73      hx => hy => hz => bits.absurd(Bool.and(False{}, Bool.and(y, z)), hx)
74    case True{} False{} z:
75      hx => hy => hz => bits.absurd(Bool.and(True{}, Bool.and(False{}, z)), hy)
76    case True{} True{} False{}:
77      hx => hy => hz => bits.absurd(False{}, hz)

Uses (3)

Used by (4)