fact: Definition decide {T : Type} (H : bool) (kt : (H = true) -> T) (kf : (H = false) -> T) : T := (fun (if_true : (fun b : bool => protect_term (H = b) -> T) true) (if_false : (fun b : bool => protect_term (H = b) -> T) false) => if H as b return ((fun b0 : bool => protect_term (H = b0) -> T) b) then if_true else if_false) (fun (E : H = true) => kt E) (fun (E : H = false) => kf E) (erefl H).