cases m
sz : ℕ
m : FinInt (sz + 1)
dn : Bool
n' : FinInt sz
h_nov :
  (match next dn n', m with
      | next false n'_1, next false m' =>
        match next dn n' + m with
        | next msb r' => (next msb r', msb)
      | next true n'_1, next true m' =>
        match next dn n' + m with
        | next msb r' => (next msb r', !msb)
      | x, x_1 => (next dn n' + m, false)).snd =
    false
h :
  toSint (next dn n' + m) =
    match next dn n', m with
    | next false n'_1, next false m' =>
      match next dn n' + m with
      | next false a => toSint (next dn n') + toSint m
      | next true a => toSint (next dn n') + toSint m - 2 ^ (sz + 1)
    | next false n'_1, next true m' => toSint (next dn n') + toSint m
    | next true n'_1, next false m' => toSint (next dn n') + toSint m
    | next true n'_1, next true m' =>
      match next dn n' + m with
      | next false a => toSint (next dn n') + toSint m + 2 ^ (sz + 1)
      | next true a => toSint (next dn n') + toSint m
⊢ toSint
      (match next dn n', m with
        | next false n'_1, next false m' =>
          match next dn n' + m with
          | next msb r' => (next msb r', msb)
        | next true n'_1, next true m' =>
          match next dn n' + m with
          | next msb r' => (next msb r', !msb)
        | x, x_1 => (next dn n' + m, false)).fst =
    toSint (next dn n') + toSint m
case next
sz : ℕ
dn : Bool
n' : FinInt sz
a✝¹ : Bool
a✝ : FinInt sz
h_nov :
  (match next dn n', next a✝¹ a✝ with
      | next false n'_1, next false m' =>
        match next dn n' + next a✝¹ a✝ with
        | next msb r' => (next msb r', msb)
      | next true n'_1, next true m' =>
        match next dn n' + next a✝¹ a✝ with
        | next msb r' => (next msb r', !msb)
      | x, x_1 => (next dn n' + next a✝¹ a✝, false)).snd =
    false
h :
  toSint (next dn n' + next a✝¹ a✝) =
    match next dn n', next a✝¹ a✝ with
    | next false n'_1, next false m' =>
      match next dn n' + next a✝¹ a✝ with
      | next false a => toSint (next dn n') + toSint (next a✝¹ a✝)
      | next true a => toSint (next dn n') + toSint (next a✝¹ a✝) - 2 ^ (sz + 1)
    | next false n'_1, next true m' => toSint (next dn n') + toSint (next a✝¹ a✝)
    | next true n'_1, next false m' => toSint (next dn n') + toSint (next a✝¹ a✝)
    | next true n'_1, next true m' =>
      match next dn n' + next a✝¹ a✝ with
      | next false a => toSint (next dn n') + toSint (next a✝¹ a✝) + 2 ^ (sz + 1)
      | next true a => toSint (next dn n') + toSint (next a✝¹ a✝)
⊢ toSint
      (match next dn n', next a✝¹ a✝ with
        | next false n'_1, next false m' =>
          match next dn n' + next a✝¹ a✝ with
          | next msb r' => (next msb r', msb)
        | next true n'_1, next true m' =>
          match next dn n' + next a✝¹ a✝ with
          | next msb r' => (next msb r', !msb)
        | x, x_1 => (next dn n' + next a✝¹ a✝, false)).fst =
    toSint (next dn n') + toSint (next a✝¹ a✝)