cases br <;> simp at h' <;> simp [toSint]
sz : ℕ
n' m' : FinInt sz
br : Bool
r : FinInt sz
h : addfull n' m' = next br r
h' : toUint (next br r) = toUint n' + toUint m'
⊢ toSint
      (match next br r with
      | next false r => next false (next (true != false) r)
      | next true r => next true (next (true == false) r)) =
    match
      match next br r with
      | next false r => next false (next (true != false) r)
      | next true r => next true (next (true == false) r) with
    | next false a => toSint (next true n') + toSint (next false m') + 2 ^ (sz + 1)
    | next true a => toSint (next true n') + toSint (next false m') - 2 ^ (sz + 1)
case false
sz : ℕ
n' m' r : FinInt sz
h : addfull n' m' = next false r
h' : toUint r = toUint n' + toUint m'
⊢ 2 ^ sz + toUint r = toUint n' - 2 ^ sz + toUint m' + 2 ^ (sz + 1)

case true
sz : ℕ
n' m' r : FinInt sz
h : addfull n' m' = next true r
h' : 2 ^ sz + toUint r = toUint n' + toUint m'
⊢ toUint r = toUint n' - 2 ^ sz + toUint m'