Theorem: incr_eq_propagate (Lean4bits/lemmas.lean)

State before:
α β α' β' : Type
γ : β → Type
x : ℕ → Bool
⊢ incrSeq x =
    propagate (fun x => true) (fun carry bits => (fun x => bits () && carry (), _root_.xor (bits ()) (carry ())))
      fun x_1 => x
Tactic:
ext n
State after:
case h
α β α' β' : Type
γ : β → Type
x : ℕ → Bool
n : ℕ
⊢ incrSeq x n =
    propagate (fun x => true) (fun carry bits => (fun x => bits () && carry (), _root_.xor (bits ()) (carry ())))
      (fun x_1 => x) n

State before:
case h
α β α' β' : Type
γ : β → Type
x : ℕ → Bool
n : ℕ
⊢ incrSeq x n =
    propagate (fun x => true) (fun carry bits => (fun x => bits () && carry (), _root_.xor (bits ()) (carry ())))
      (fun x_1 => x) n
Tactic:
match n with
| 0 => simp [incrSeq, incrSeqAux]
| 1 => simp [incrSeq, incrSeqAux, propagate, propagateAux]
| n+2 => simp [incrSeq, incrSeqAux, incrSeqAux_eq_propagateCarry, propagate_succ]
State after:
no goals

State before:
α β α' β' : Type
γ : β → Type
x : ℕ → Bool
n : ℕ
⊢ incrSeq x 0 =
    propagate (fun x => true) (fun carry bits => (fun x => bits () && carry (), _root_.xor (bits ()) (carry ())))
      (fun x_1 => x) 0
Tactic:
simp [incrSeq, incrSeqAux]
State after:
no goals

State before:
α β α' β' : Type
γ : β → Type
x : ℕ → Bool
n : ℕ
⊢ incrSeq x 1 =
    propagate (fun x => true) (fun carry bits => (fun x => bits () && carry (), _root_.xor (bits ()) (carry ())))
      (fun x_1 => x) 1
Tactic:
simp [incrSeq, incrSeqAux, propagate, propagateAux]
State after:
no goals

State before:
α β α' β' : Type
γ : β → Type
x : ℕ → Bool
n✝ n : ℕ
⊢ incrSeq x (n + 2) =
    propagate (fun x => true) (fun carry bits => (fun x => bits () && carry (), _root_.xor (bits ()) (carry ())))
      (fun x_1 => x) (n + 2)
Tactic:
simp [incrSeq, incrSeqAux, incrSeqAux_eq_propagateCarry, propagate_succ]
State after:
no goals