unfold bitwise
case refl
f : Bool → Bool → Bool
n : Nat
⊢ bitwise (flip f) 0 n = bitwise f n 0
case refl
f : Bool → Bool → Bool
n : Nat
⊢ (if 0 = 0 then if flip f false true = true then n else 0
    else
      if n = 0 then if flip f true false = true then 0 else 0
      else
        let n' := 0 / 2;
        let m' := n / 2;
        let b₁ := 0 % 2 = 1;
        let b₂ := n % 2 = 1;
        let r := bitwise (flip f) n' m';
        if flip f (decide b₁) (decide b₂) = true then r + r + 1 else r + r) =
    if n = 0 then if f false true = true then 0 else 0
    else
      if 0 = 0 then if f true false = true then n else 0
      else
        let n' := n / 2;
        let m' := 0 / 2;
        let b₁ := n % 2 = 1;
        let b₂ := 0 % 2 = 1;
        let r := bitwise f n' m';
        if f (decide b₁) (decide b₂) = true then r + r + 1 else r + r