simp only [
  this, ←Nat.lsb_shiftLeft,
  Nat.succ_eq_add_one,
  ←Nat.shiftRight_getBit,
  Nat.shiftLeft_shiftRight_self,
  Nat.shiftLeft_getBit
]
n : Nat
h_ind :
  ∀ {i : Nat},
    getBit (Nat.lsb (n / 2 + 1)) i = true ↔
      getBit (n / 2 + 1) i = true ∧ ∀ (j : Nat), j < i → getBit (n / 2 + 1) j = false
i : Nat
heven : n % 2 = 0
this : n + 2 = (n / 2 + 1) <<< 1
⊢ getBit (Nat.lsb (n + 2)) (succ i) = true ↔
    getBit (n + 2) (succ i) = true ∧ ∀ (j : Nat), j < succ i → getBit (n + 2) j = false
n : Nat
h_ind :
  ∀ {i : Nat},
    getBit (Nat.lsb (n / 2 + 1)) i = true ↔
      getBit (n / 2 + 1) i = true ∧ ∀ (j : Nat), j < i → getBit (n / 2 + 1) j = false
i : Nat
heven : n % 2 = 0
this : n + 2 = (n / 2 + 1) <<< 1
⊢ getBit (Nat.lsb (n / 2 + 1)) i = true ↔
    getBit (n / 2 + 1) i = true ∧ ∀ (j : Nat), j < i + 1 → (decide (j ≥ 1) && getBit (n / 2 + 1) (j - 1)) = false