ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- HomologicalComplex.HomologySequence.snakeInput_L₀
@[simps]
noncomputable def snakeInput : ShortComplex.SnakeInput C 
Arguments: {C : Type u_1} {ι : Type u_2} [CategoryTheory.Category.{u_3, u_1} C] [CategoryTheory.Abelian C] {c : ComplexShape ι} {S : CategoryTheory.ShortComplex (HomologicalComplex C c)} (hS : S.ShortExact) (i j : ι) (hij : c.Rel i j)
Goal: (HomologicalComplex.HomologySequence.snakeInput hS i j hij).L₀ =
  (HomologicalComplex.homologyFunctor C c i).mapShortComplex.obj S
-- HomologicalComplex.HomologySequence.snakeInput_L₂
@[simps]
noncomputable def snakeInput : ShortComplex.SnakeInput C 
Arguments: {C : Type u_1} {ι : Type u_2} [CategoryTheory.Category.{u_3, u_1} C] [CategoryTheory.Abelian C] {c : ComplexShape ι} {S : CategoryTheory.ShortComplex (HomologicalComplex C c)} (hS : S.ShortExact) (i j : ι) (hij : c.Rel i j)
Goal: (HomologicalComplex.HomologySequence.snakeInput hS i j hij).L₂ =
  (HomologicalComplex.cyclesFunctor C c j).mapShortComplex.obj S
-- HomologicalComplex.HomologySequence.snakeInput_L₃
@[simps]
noncomputable def snakeInput : ShortComplex.SnakeInput C 
Arguments: {C : Type u_1} {ι : Type u_2} [CategoryTheory.Category.{u_3, u_1} C] [CategoryTheory.Abelian C] {c : ComplexShape ι} {S : CategoryTheory.ShortComplex (HomologicalComplex C c)} (hS : S.ShortExact) (i j : ι) (hij : c.Rel i j)
Goal: (HomologicalComplex.HomologySequence.snakeInput hS i j hij).L₃ =
  (HomologicalComplex.homologyFunctor C c j).mapShortComplex.obj S
-- HomologicalComplex.HomologySequence.snakeInput_v₁₂
@[simps]
noncomputable def snakeInput : ShortComplex.SnakeInput C 
Arguments: {C : Type u_1} {ι : Type u_2} [CategoryTheory.Category.{u_3, u_1} C] [CategoryTheory.Abelian C] {c : ComplexShape ι} {S : CategoryTheory.ShortComplex (HomologicalComplex C c)} (hS : S.ShortExact) (i j : ι) (hij : c.Rel i j)
Goal: (HomologicalComplex.HomologySequence.snakeInput hS i j hij).v₁₂ =
  S.mapNatTrans (HomologicalComplex.natTransOpCyclesToCycles C c i j)
-- CategoryTheory.ShortComplex.ShortExact.δ_comp
@[reassoc (attr := simp)]
lemma δ_comp : hS.δ i j hij ≫ HomologicalComplex.homologyMap S.f j = 0 
Arguments: {C : Type u_1} {ι : Type u_2} [CategoryTheory.Category.{u_3, u_1} C] [CategoryTheory.Abelian C] {c : ComplexShape ι} {S : CategoryTheory.ShortComplex (HomologicalComplex C c)} (hS : S.ShortExact) (i j : ι) (hij : c.Rel i j)
Goal: hS.δ i j hij ≫ HomologicalComplex.homologyMap S.f j = 0
-- CategoryTheory.ShortComplex.ShortExact.comp_δ
@[reassoc (attr := simp)]
lemma comp_δ : HomologicalComplex.homologyMap S.g i ≫ hS.δ i j hij = 0 
Arguments: {C : Type u_1} {ι : Type u_2} [CategoryTheory.Category.{u_3, u_1} C] [CategoryTheory.Abelian C] {c : ComplexShape ι} {S : CategoryTheory.ShortComplex (HomologicalComplex C c)} (hS : S.ShortExact) (i j : ι) (hij : c.Rel i j)
Goal: HomologicalComplex.homologyMap S.g i ≫ hS.δ i j hij = 0
-- CategoryTheory.ShortComplex.ShortExact.homology_exact₁
lemma homology_exact₁ : (ShortComplex.mk _ _ (δ_comp hS i j hij)).Exact 
Arguments: {C : Type u_1} {ι : Type u_2} [CategoryTheory.Category.{u_3, u_1} C] [CategoryTheory.Abelian C] {c : ComplexShape ι} {S : CategoryTheory.ShortComplex (HomologicalComplex C c)} (hS : S.ShortExact) (i j : ι) (hij : c.Rel i j)
Goal: (CategoryTheory.ShortComplex.mk (hS.δ i j hij) (HomologicalComplex.homologyMap S.f j) ⋯).Exact
-- CategoryTheory.ShortComplex.ShortExact.homology_exact₂
lemma homology_exact₂ : (ShortComplex.mk (HomologicalComplex.homologyMap S.f i)
    (HomologicalComplex.homologyMap S.g i) (by rw [← HomologicalComplex.homologyMap_comp,
      S.zero, HomologicalComplex.homologyMap_zero])).Exact 
Arguments: {C : Type u_1} {ι : Type u_2} [CategoryTheory.Category.{u_3, u_1} C] [CategoryTheory.Abelian C] {c : ComplexShape ι} {S : CategoryTheory.ShortComplex (HomologicalComplex C c)} (hS : S.ShortExact) (i : ι)
Goal: (CategoryTheory.ShortComplex.mk (HomologicalComplex.homologyMap S.f i) (HomologicalComplex.homologyMap S.g i) ⋯).Exact
-- CategoryTheory.ShortComplex.ShortExact.homology_exact₃
lemma homology_exact₃ : (ShortComplex.mk _ _ (comp_δ hS i j hij)).Exact 
Arguments: {C : Type u_1} {ι : Type u_2} [CategoryTheory.Category.{u_3, u_1} C] [CategoryTheory.Abelian C] {c : ComplexShape ι} {S : CategoryTheory.ShortComplex (HomologicalComplex C c)} (hS : S.ShortExact) (i j : ι) (hij : c.Rel i j)
Goal: (CategoryTheory.ShortComplex.mk (HomologicalComplex.homologyMap S.g i) (hS.δ i j hij) ⋯).Exact
-- CategoryTheory.ShortComplex.ShortExact.δ_eq'
lemma δ_eq' {A : C} (x₃ : A ⟶ S.X₃.homology i) (x₂ : A ⟶ S.X₂.opcycles i)
    (x₁ : A ⟶ S.X₁.cycles j)
    (h₂ : x₂ ≫ HomologicalComplex.opcyclesMap S.g i = x₃ ≫ S.X₃.homologyι i)
    (h₁ : x₁ ≫ HomologicalComplex.cyclesMap S.f j = x₂ ≫ S.X₂.opcyclesToCycles i j) :
    x₃ ≫ hS.δ i j hij = x₁ ≫ S.X₁.homologyπ j 
Arguments: {C : Type u_1} {ι : Type u_2} [CategoryTheory.Category.{u_3, u_1} C] [CategoryTheory.Abelian C] {c : ComplexShape ι} {S : CategoryTheory.ShortComplex (HomologicalComplex C c)} (hS : S.ShortExact) (i j : ι) (hij : c.Rel i j) {A : C} (x₃ : A ⟶ S.X₃.homology i) (x₂ : A ⟶ S.X₂.opcycles i) (x₁ : A ⟶ S.X₁.cycles j) (h₂ : x₂ ≫ HomologicalComplex.opcyclesMap S.g i = x₃ ≫ S.X₃.homologyι i) (h₁ : x₁ ≫ HomologicalComplex.cyclesMap S.f j = x₂ ≫ S.X₂.opcyclesToCycles i j)
Goal: x₃ ≫ hS.δ i j hij = x₁ ≫ S.X₁.homologyπ j
-- CategoryTheory.ShortComplex.ShortExact.δ_eq
lemma δ_eq {A : C} (x₃ : A ⟶ S.X₃.X i) (hx₃ : x₃ ≫ S.X₃.d i j = 0)
    (x₂ : A ⟶ S.X₂.X i) (hx₂ : x₂ ≫ S.g.f i = x₃)
    (x₁ : A ⟶ S.X₁.X j) (hx₁ : x₁ ≫ S.f.f j = x₂ ≫ S.X₂.d i j)
    (k : ι) (hk : c.next j = k) :
    S.X₃.liftCycles x₃ j (c.next_eq' hij) hx₃ ≫ S.X₃.homologyπ i ≫ hS.δ i j hij =
      S.X₁.liftCycles x₁ k hk (by
        have := hS.mono_f
        rw [← cancel_mono (S.f.f k), assoc, ← S.f.comm, reassoc_of% hx₁,
          d_comp_d, comp_zero, zero_comp]) ≫ S.X₁.homologyπ j 
Arguments: {C : Type u_1} {ι : Type u_2} [CategoryTheory.Category.{u_3, u_1} C] [CategoryTheory.Abelian C] {c : ComplexShape ι} {S : CategoryTheory.ShortComplex (HomologicalComplex C c)} (hS : S.ShortExact) (i j : ι) (hij : c.Rel i j) {A : C} (x₃ : A ⟶ S.X₃.X i) (hx₃ : x₃ ≫ S.X₃.d i j = 0) (x₂ : A ⟶ S.X₂.X i) (hx₂ : x₂ ≫ S.g.f i = x₃) (x₁ : A ⟶ S.X₁.X j) (hx₁ : x₁ ≫ S.f.f j = x₂ ≫ S.X₂.d i j) (k : ι) (hk : c.next j = k)
Goal: S.X₃.liftCycles x₃ j ⋯ hx₃ ≫ S.X₃.homologyπ i ≫ hS.δ i j hij = S.X₁.liftCycles x₁ k hk ⋯ ≫ S.X₁.homologyπ j
-- GenContFract.Pair.coe_toPair
@[simp, norm_cast]
theorem coe_toPair {a b : α} : (↑(Pair.mk a b) : Pair β) = Pair.mk (a : β) (b : β) 
Arguments: {α : Type u_1} {β : Type u_2} [Coe α β] {a b : α}
Goal: ↑{ a := a, b := b } = { a := Coe.coe a, b := Coe.coe b }
-- GenContFract.coe_toGenContFract
@[simp, norm_cast]
theorem coe_toGenContFract {g : GenContFract α} :
    (g : GenContFract β) =
      ⟨(g.h : β), (g.s.map (↑) : Stream'.Seq <| Pair β)⟩ 
Arguments: {α : Type u_1} {β : Type u_2} [Coe α β] {g : GenContFract α}
Goal: ↑g = { h := Coe.coe g.h, s := Stream'.Seq.map GenContFract.Pair.coeFn g.s }
-- GenContFract.IntFractPair.stream_zero
theorem stream_zero (v : K) : IntFractPair.stream v 0 = some (IntFractPair.of v) 
Arguments: {K : Type u_1} [LinearOrderedField K] [FloorRing K] (v : K)
Goal: GenContFract.IntFractPair.stream v 0 = some (GenContFract.IntFractPair.of v)
-- GenContFract.IntFractPair.stream_eq_none_of_fr_eq_zero
theorem stream_eq_none_of_fr_eq_zero {ifp_n : IntFractPair K}
    (stream_nth_eq : IntFractPair.stream v n = some ifp_n) (nth_fr_eq_zero : ifp_n.fr = 0) :
    IntFractPair.stream v (n + 1) = none 
Arguments: {K : Type u_1} [LinearOrderedField K] [FloorRing K] {v : K} {n : ℕ} {ifp_n : GenContFract.IntFractPair K} (stream_nth_eq : GenContFract.IntFractPair.stream v n = some ifp_n) (nth_fr_eq_zero : ifp_n.fr = 0)
Goal: GenContFract.IntFractPair.stream v (n + 1) = none
-- GenContFract.IntFractPair.succ_nth_stream_eq_none_iff
theorem succ_nth_stream_eq_none_iff :
    IntFractPair.stream v (n + 1) = none ↔
      IntFractPair.stream v n = none ∨ ∃ ifp, IntFractPair.stream v n = some ifp ∧ ifp.fr = 0 
Arguments: {K : Type u_1} [LinearOrderedField K] [FloorRing K] {v : K} {n : ℕ}
Goal: GenContFract.IntFractPair.stream v (n + 1) = none ↔
  GenContFract.IntFractPair.stream v n = none ∨ ∃ ifp, GenContFract.IntFractPair.stream v n = some ifp ∧ ifp.fr = 0
-- GenContFract.IntFractPair.succ_nth_stream_eq_some_iff
theorem succ_nth_stream_eq_some_iff {ifp_succ_n : IntFractPair K} :
    IntFractPair.stream v (n + 1) = some ifp_succ_n ↔
      ∃ ifp_n : IntFractPair K,
        IntFractPair.stream v n = some ifp_n ∧
          ifp_n.fr ≠ 0 ∧ IntFractPair.of ifp_n.fr⁻¹ = ifp_succ_n 
Arguments: {K : Type u_1} [LinearOrderedField K] [FloorRing K] {v : K} {n : ℕ} {ifp_succ_n : GenContFract.IntFractPair K}
Goal: GenContFract.IntFractPair.stream v (n + 1) = some ifp_succ_n ↔
  ∃ ifp_n,
    GenContFract.IntFractPair.stream v n = some ifp_n ∧
      ifp_n.fr ≠ 0 ∧ GenContFract.IntFractPair.of ifp_n.fr⁻¹ = ifp_succ_n
-- GenContFract.IntFractPair.stream_succ_of_some
theorem stream_succ_of_some {p : IntFractPair K} (h : IntFractPair.stream v n = some p)
    (h' : p.fr ≠ 0) : IntFractPair.stream v (n + 1) = some (IntFractPair.of p.fr⁻¹) 
Arguments: {K : Type u_1} [LinearOrderedField K] [FloorRing K] {v : K} {n : ℕ} {p : GenContFract.IntFractPair K} (h : GenContFract.IntFractPair.stream v n = some p) (h' : p.fr ≠ 0)
Goal: GenContFract.IntFractPair.stream v (n + 1) = some (GenContFract.IntFractPair.of p.fr⁻¹)
-- GenContFract.IntFractPair.stream_succ_of_int
theorem stream_succ_of_int (a : ℤ) (n : ℕ) : IntFractPair.stream (a : K) (n + 1) = none 
Arguments: {K : Type u_1} [LinearOrderedField K] [FloorRing K] (a : ℤ) (n : ℕ)
Goal: GenContFract.IntFractPair.stream (↑a) (n + 1) = none
-- GenContFract.IntFractPair.exists_succ_nth_stream_of_fr_zero
theorem exists_succ_nth_stream_of_fr_zero {ifp_succ_n : IntFractPair K}
    (stream_succ_nth_eq : IntFractPair.stream v (n + 1) = some ifp_succ_n)
    (succ_nth_fr_eq_zero : ifp_succ_n.fr = 0) :
    ∃ ifp_n : IntFractPair K, IntFractPair.stream v n = some ifp_n ∧ ifp_n.fr⁻¹ = ⌊ifp_n.fr⁻¹⌋ 
Arguments: {K : Type u_1} [LinearOrderedField K] [FloorRing K] {v : K} {n : ℕ} {ifp_succ_n : GenContFract.IntFractPair K} (stream_succ_nth_eq : GenContFract.IntFractPair.stream v (n + 1) = some ifp_succ_n) (succ_nth_fr_eq_zero : ifp_succ_n.fr = 0)
Goal: ∃ ifp_n, GenContFract.IntFractPair.stream v n = some ifp_n ∧ ifp_n.fr⁻¹ = ↑⌊ifp_n.fr⁻¹⌋
-- GenContFract.IntFractPair.stream_succ
theorem stream_succ (h : Int.fract v ≠ 0) (n : ℕ) :
    IntFractPair.stream v (n + 1) = IntFractPair.stream (Int.fract v)⁻¹ n 
Arguments: {K : Type u_1} [LinearOrderedField K] [FloorRing K] {v : K} (h : Int.fract v ≠ 0) (n : ℕ)
Goal: GenContFract.IntFractPair.stream v (n + 1) = GenContFract.IntFractPair.stream (Int.fract v)⁻¹ n
-- GenContFract.IntFractPair.seq1_fst_eq_of
@[simp]
theorem IntFractPair.seq1_fst_eq_of : (IntFractPair.seq1 v).fst = IntFractPair.of v 
Arguments: {K : Type u_1} [LinearOrderedField K] [FloorRing K] {v : K}
Goal: (GenContFract.IntFractPair.seq1 v).1 = GenContFract.IntFractPair.of v
-- GenContFract.of_h_eq_intFractPair_seq1_fst_b
theorem of_h_eq_intFractPair_seq1_fst_b : (of v).h = (IntFractPair.seq1 v).fst.b 
Arguments: {K : Type u_1} [LinearOrderedField K] [FloorRing K] {v : K}
Goal: (GenContFract.of v).h = ↑(GenContFract.IntFractPair.seq1 v).1.b
-- GenContFract.of_h_eq_floor
@[simp]
theorem of_h_eq_floor : (of v).h = ⌊v⌋ 
Arguments: {K : Type u_1} [LinearOrderedField K] [FloorRing K] {v : K}
Goal: (GenContFract.of v).h = ↑⌊v⌋
-- GenContFract.IntFractPair.get?_seq1_eq_succ_get?_stream
theorem IntFractPair.get?_seq1_eq_succ_get?_stream :
    (IntFractPair.seq1 v).snd.get? n = (IntFractPair.stream v) (n + 1) 
Arguments: {K : Type u_1} [LinearOrderedField K] [FloorRing K] {v : K} {n : ℕ}
Goal: (GenContFract.IntFractPair.seq1 v).2.get? n = GenContFract.IntFractPair.stream v (n + 1)
-- GenContFract.of_terminatedAt_iff_intFractPair_seq1_terminatedAt
theorem of_terminatedAt_iff_intFractPair_seq1_terminatedAt :
    (of v).TerminatedAt n ↔ (IntFractPair.seq1 v).snd.TerminatedAt n 
Arguments: {K : Type u_1} [LinearOrderedField K] [FloorRing K] {v : K} {n : ℕ}
Goal: (GenContFract.of v).TerminatedAt n ↔ (GenContFract.IntFractPair.seq1 v).2.TerminatedAt n
-- GenContFract.of_terminatedAt_n_iff_succ_nth_intFractPair_stream_eq_none
theorem of_terminatedAt_n_iff_succ_nth_intFractPair_stream_eq_none :
    (of v).TerminatedAt n ↔ IntFractPair.stream v (n + 1) = none 
Arguments: {K : Type u_1} [LinearOrderedField K] [FloorRing K] {v : K} {n : ℕ}
Goal: (GenContFract.of v).TerminatedAt n ↔ GenContFract.IntFractPair.stream v (n + 1) = none
-- GenContFract.IntFractPair.exists_succ_get?_stream_of_gcf_of_get?_eq_some
theorem IntFractPair.exists_succ_get?_stream_of_gcf_of_get?_eq_some {gp_n : Pair K}
    (s_nth_eq : (of v).s.get? n = some gp_n) :
    ∃ ifp : IntFractPair K, IntFractPair.stream v (n + 1) = some ifp ∧ (ifp.b : K) = gp_n.b 
Arguments: {K : Type u_1} [LinearOrderedField K] [FloorRing K] {v : K} {n : ℕ} {gp_n : GenContFract.Pair K} (s_nth_eq : (GenContFract.of v).s.get? n = some gp_n)
Goal: ∃ ifp, GenContFract.IntFractPair.stream v (n + 1) = some ifp ∧ ↑ifp.b = gp_n.b
-- GenContFract.get?_of_eq_some_of_succ_get?_intFractPair_stream
theorem get?_of_eq_some_of_succ_get?_intFractPair_stream {ifp_succ_n : IntFractPair K}
    (stream_succ_nth_eq : IntFractPair.stream v (n + 1) = some ifp_succ_n) :
    (of v).s.get? n = some ⟨1, ifp_succ_n.b⟩ 
Arguments: {K : Type u_1} [LinearOrderedField K] [FloorRing K] {v : K} {n : ℕ} {ifp_succ_n : GenContFract.IntFractPair K} (stream_succ_nth_eq : GenContFract.IntFractPair.stream v (n + 1) = some ifp_succ_n)
Goal: (GenContFract.of v).s.get? n = some { a := 1, b := ↑ifp_succ_n.b }
-- GenContFract.get?_of_eq_some_of_get?_intFractPair_stream_fr_ne_zero
theorem get?_of_eq_some_of_get?_intFractPair_stream_fr_ne_zero {ifp_n : IntFractPair K}
    (stream_nth_eq : IntFractPair.stream v n = some ifp_n) (nth_fr_ne_zero : ifp_n.fr ≠ 0) :
    (of v).s.get? n = some ⟨1, (IntFractPair.of ifp_n.fr⁻¹).b⟩ 
Arguments: {K : Type u_1} [LinearOrderedField K] [FloorRing K] {v : K} {n : ℕ} {ifp_n : GenContFract.IntFractPair K} (stream_nth_eq : GenContFract.IntFractPair.stream v n = some ifp_n) (nth_fr_ne_zero : ifp_n.fr ≠ 0)
Goal: (GenContFract.of v).s.get? n = some { a := 1, b := ↑(GenContFract.IntFractPair.of ifp_n.fr⁻¹).b }
-- GenContFract.of_s_head_aux
theorem of_s_head_aux (v : K) : (of v).s.get? 0 = (IntFractPair.stream v 1).bind (some ∘ fun p =>
    { a := 1
      b := p.b }) 
Arguments: {K : Type u_1} [LinearOrderedField K] [FloorRing K] (v : K)
Goal: (GenContFract.of v).s.get? 0 = (GenContFract.IntFractPair.stream v 1).bind (some ∘ fun p => { a := 1, b := ↑p.b })
-- GenContFract.of_s_head
theorem of_s_head (h : fract v ≠ 0) : (of v).s.head = some ⟨1, ⌊(fract v)⁻¹⌋⟩ 
Arguments: {K : Type u_1} [LinearOrderedField K] [FloorRing K] {v : K} (h : Int.fract v ≠ 0)
Goal: (GenContFract.of v).s.head = some { a := 1, b := ↑⌊(Int.fract v)⁻¹⌋ }
-- GenContFract.of_s_of_int
theorem of_s_of_int (a : ℤ) : (of (a : K)).s = Stream'.Seq.nil 
Arguments: (K : Type u_1) [LinearOrderedField K] [FloorRing K] (a : ℤ)
Goal: (GenContFract.of ↑a).s = Stream'.Seq.nil
-- GenContFract.of_s_succ
theorem of_s_succ (n : ℕ) : (of v).s.get? (n + 1) = (of (fract v)⁻¹).s.get? n 
Arguments: {K : Type u_1} [LinearOrderedField K] [FloorRing K] (v : K) (n : ℕ)
Goal: (GenContFract.of v).s.get? (n + 1) = (GenContFract.of (Int.fract v)⁻¹).s.get? n
-- GenContFract.of_s_tail
theorem of_s_tail : (of v).s.tail = (of (fract v)⁻¹).s 
Arguments: {K : Type u_1} [LinearOrderedField K] [FloorRing K] (v : K)
Goal: (GenContFract.of v).s.tail = (GenContFract.of (Int.fract v)⁻¹).s
-- GenContFract.convs'_of_int
theorem convs'_of_int (a : ℤ) : (of (a : K)).convs' n = a 
Arguments: (K : Type u_1) [LinearOrderedField K] [FloorRing K] (n : ℕ) (a : ℤ)
Goal: (GenContFract.of ↑a).convs' n = ↑a
-- GenContFract.convs'_succ
theorem convs'_succ :
    (of v).convs' (n + 1) = ⌊v⌋ + 1 / (of (fract v)⁻¹).convs' n 
Arguments: {K : Type u_1} [LinearOrderedField K] [FloorRing K] (v : K) (n : ℕ)
Goal: (GenContFract.of v).convs' (n + 1) = ↑⌊v⌋ + 1 / (GenContFract.of (Int.fract v)⁻¹).convs' n
-- GenContFract.contsAux_recurrence
theorem contsAux_recurrence {gp ppred pred : Pair K} (nth_s_eq : g.s.get? n = some gp)
    (nth_contsAux_eq : g.contsAux n = ppred)
    (succ_nth_contsAux_eq : g.contsAux (n + 1) = pred) :
    g.contsAux (n + 2) = ⟨gp.b * pred.a + gp.a * ppred.a, gp.b * pred.b + gp.a * ppred.b⟩ 
Arguments: {K : Type u_1} {g : GenContFract K} {n : ℕ} [DivisionRing K] {gp ppred pred : GenContFract.Pair K} (nth_s_eq : g.s.get? n = some gp) (nth_contsAux_eq : g.contsAux n = ppred) (succ_nth_contsAux_eq : g.contsAux (n + 1) = pred)
Goal: g.contsAux (n + 2) = { a := gp.b * pred.a + gp.a * ppred.a, b := gp.b * pred.b + gp.a * ppred.b }
-- GenContFract.conts_recurrenceAux
theorem conts_recurrenceAux {gp ppred pred : Pair K} (nth_s_eq : g.s.get? n = some gp)
    (nth_contsAux_eq : g.contsAux n = ppred)
    (succ_nth_contsAux_eq : g.contsAux (n + 1) = pred) :
    g.conts (n + 1) = ⟨gp.b * pred.a + gp.a * ppred.a, gp.b * pred.b + gp.a * ppred.b⟩ 
Arguments: {K : Type u_1} {g : GenContFract K} {n : ℕ} [DivisionRing K] {gp ppred pred : GenContFract.Pair K} (nth_s_eq : g.s.get? n = some gp) (nth_contsAux_eq : g.contsAux n = ppred) (succ_nth_contsAux_eq : g.contsAux (n + 1) = pred)
Goal: g.conts (n + 1) = { a := gp.b * pred.a + gp.a * ppred.a, b := gp.b * pred.b + gp.a * ppred.b }
-- GenContFract.conts_recurrence
theorem conts_recurrence {gp ppred pred : Pair K} (succ_nth_s_eq : g.s.get? (n + 1) = some gp)
    (nth_conts_eq : g.conts n = ppred) (succ_nth_conts_eq : g.conts (n + 1) = pred) :
    g.conts (n + 2) = ⟨gp.b * pred.a + gp.a * ppred.a, gp.b * pred.b + gp.a * ppred.b⟩ 
Arguments: {K : Type u_1} {g : GenContFract K} {n : ℕ} [DivisionRing K] {gp ppred pred : GenContFract.Pair K} (succ_nth_s_eq : g.s.get? (n + 1) = some gp) (nth_conts_eq : g.conts n = ppred) (succ_nth_conts_eq : g.conts (n + 1) = pred)
Goal: g.conts (n + 2) = { a := gp.b * pred.a + gp.a * ppred.a, b := gp.b * pred.b + gp.a * ppred.b }
-- GenContFract.nums_recurrence
theorem nums_recurrence {gp : Pair K} {ppredA predA : K}
    (succ_nth_s_eq : g.s.get? (n + 1) = some gp) (nth_num_eq : g.nums n = ppredA)
    (succ_nth_num_eq : g.nums (n + 1) = predA) :
    g.nums (n + 2) = gp.b * predA + gp.a * ppredA 
Arguments: {K : Type u_1} {g : GenContFract K} {n : ℕ} [DivisionRing K] {gp : GenContFract.Pair K} {ppredA predA : K} (succ_nth_s_eq : g.s.get? (n + 1) = some gp) (nth_num_eq : g.nums n = ppredA) (succ_nth_num_eq : g.nums (n + 1) = predA)
Goal: g.nums (n + 2) = gp.b * predA + gp.a * ppredA
-- GenContFract.dens_recurrence
theorem dens_recurrence {gp : Pair K} {ppredB predB : K}
    (succ_nth_s_eq : g.s.get? (n + 1) = some gp) (nth_den_eq : g.dens n = ppredB)
    (succ_nth_den_eq : g.dens (n + 1) = predB) :
    g.dens (n + 2) = gp.b * predB + gp.a * ppredB 
Arguments: {K : Type u_1} {g : GenContFract K} {n : ℕ} [DivisionRing K] {gp : GenContFract.Pair K} {ppredB predB : K} (succ_nth_s_eq : g.s.get? (n + 1) = some gp) (nth_den_eq : g.dens n = ppredB) (succ_nth_den_eq : g.dens (n + 1) = predB)
Goal: g.dens (n + 2) = gp.b * predB + gp.a * ppredB
-- GenContFract.terminated_stable
theorem terminated_stable (n_le_m : n ≤ m) (terminatedAt_n : g.TerminatedAt n) :
    g.TerminatedAt m 
Arguments: {K : Type u_1} {g : GenContFract K} {n m : ℕ} (n_le_m : n ≤ m) (terminatedAt_n : g.TerminatedAt n)
Goal: g.TerminatedAt m
-- GenContFract.contsAux_stable_step_of_terminated
theorem contsAux_stable_step_of_terminated (terminatedAt_n : g.TerminatedAt n) :
    g.contsAux (n + 2) = g.contsAux (n + 1) 
Arguments: {K : Type u_1} {g : GenContFract K} {n : ℕ} [DivisionRing K] (terminatedAt_n : g.TerminatedAt n)
Goal: g.contsAux (n + 2) = g.contsAux (n + 1)
-- GenContFract.contsAux_stable_of_terminated
theorem contsAux_stable_of_terminated (n_lt_m : n < m) (terminatedAt_n : g.TerminatedAt n) :
    g.contsAux m = g.contsAux (n + 1) 
Arguments: {K : Type u_1} {g : GenContFract K} {n m : ℕ} [DivisionRing K] (n_lt_m : n < m) (terminatedAt_n : g.TerminatedAt n)
Goal: g.contsAux m = g.contsAux (n + 1)
-- GenContFract.convs'Aux_stable_step_of_terminated
theorem convs'Aux_stable_step_of_terminated {s : Stream'.Seq <| Pair K}
    (terminatedAt_n : s.TerminatedAt n) : convs'Aux s (n + 1) = convs'Aux s n 
Arguments: {K : Type u_1} {n : ℕ} [DivisionRing K] {s : Stream'.Seq (GenContFract.Pair K)} (terminatedAt_n : s.TerminatedAt n)
Goal: GenContFract.convs'Aux s (n + 1) = GenContFract.convs'Aux s n
-- GenContFract.convs'Aux_stable_of_terminated
theorem convs'Aux_stable_of_terminated {s : Stream'.Seq <| Pair K} (n_le_m : n ≤ m)
    (terminatedAt_n : s.TerminatedAt n) : convs'Aux s m = convs'Aux s n 
Arguments: {K : Type u_1} {n m : ℕ} [DivisionRing K] {s : Stream'.Seq (GenContFract.Pair K)} (n_le_m : n ≤ m) (terminatedAt_n : s.TerminatedAt n)
Goal: GenContFract.convs'Aux s m = GenContFract.convs'Aux s n
-- GenContFract.conts_stable_of_terminated
theorem conts_stable_of_terminated (n_le_m : n ≤ m) (terminatedAt_n : g.TerminatedAt n) :
    g.conts m = g.conts n 
Arguments: {K : Type u_1} {g : GenContFract K} {n m : ℕ} [DivisionRing K] (n_le_m : n ≤ m) (terminatedAt_n : g.TerminatedAt n)
Goal: g.conts m = g.conts n
-- GenContFract.nums_stable_of_terminated
theorem nums_stable_of_terminated (n_le_m : n ≤ m) (terminatedAt_n : g.TerminatedAt n) :
    g.nums m = g.nums n 
Arguments: {K : Type u_1} {g : GenContFract K} {n m : ℕ} [DivisionRing K] (n_le_m : n ≤ m) (terminatedAt_n : g.TerminatedAt n)
Goal: g.nums m = g.nums n
-- GenContFract.dens_stable_of_terminated
theorem dens_stable_of_terminated (n_le_m : n ≤ m) (terminatedAt_n : g.TerminatedAt n) :
    g.dens m = g.dens n 
Arguments: {K : Type u_1} {g : GenContFract K} {n m : ℕ} [DivisionRing K] (n_le_m : n ≤ m) (terminatedAt_n : g.TerminatedAt n)
Goal: g.dens m = g.dens n
-- GenContFract.convs_stable_of_terminated
theorem convs_stable_of_terminated (n_le_m : n ≤ m) (terminatedAt_n : g.TerminatedAt n) :
    g.convs m = g.convs n 
Arguments: {K : Type u_1} {g : GenContFract K} {n m : ℕ} [DivisionRing K] (n_le_m : n ≤ m) (terminatedAt_n : g.TerminatedAt n)
Goal: g.convs m = g.convs n
-- GenContFract.convs'_stable_of_terminated
theorem convs'_stable_of_terminated (n_le_m : n ≤ m) (terminatedAt_n : g.TerminatedAt n) :
    g.convs' m = g.convs' n 
Arguments: {K : Type u_1} {g : GenContFract K} {n m : ℕ} [DivisionRing K] (n_le_m : n ≤ m) (terminatedAt_n : g.TerminatedAt n)
Goal: g.convs' m = g.convs' n
-- GenContFract.terminatedAt_iff_s_terminatedAt
theorem terminatedAt_iff_s_terminatedAt : g.TerminatedAt n ↔ g.s.TerminatedAt n 
Arguments: {α : Type u_1} {g : GenContFract α} {n : ℕ}
Goal: g.TerminatedAt n ↔ g.s.TerminatedAt n
-- GenContFract.terminatedAt_iff_s_none
theorem terminatedAt_iff_s_none : g.TerminatedAt n ↔ g.s.get? n = none 
Arguments: {α : Type u_1} {g : GenContFract α} {n : ℕ}
Goal: g.TerminatedAt n ↔ g.s.get? n = none
-- GenContFract.partNum_none_iff_s_none
theorem partNum_none_iff_s_none : g.partNums.get? n = none ↔ g.s.get? n = none 
Arguments: {α : Type u_1} {g : GenContFract α} {n : ℕ}
Goal: g.partNums.get? n = none ↔ g.s.get? n = none
-- GenContFract.terminatedAt_iff_partNum_none
theorem terminatedAt_iff_partNum_none : g.TerminatedAt n ↔ g.partNums.get? n = none 
Arguments: {α : Type u_1} {g : GenContFract α} {n : ℕ}
Goal: g.TerminatedAt n ↔ g.partNums.get? n = none
-- GenContFract.partDen_none_iff_s_none
theorem partDen_none_iff_s_none : g.partDens.get? n = none ↔ g.s.get? n = none 
Arguments: {α : Type u_1} {g : GenContFract α} {n : ℕ}
Goal: g.partDens.get? n = none ↔ g.s.get? n = none
-- GenContFract.terminatedAt_iff_partDen_none
theorem terminatedAt_iff_partDen_none : g.TerminatedAt n ↔ g.partDens.get? n = none 
Arguments: {α : Type u_1} {g : GenContFract α} {n : ℕ}
Goal: g.TerminatedAt n ↔ g.partDens.get? n = none
-- GenContFract.partNum_eq_s_a
theorem partNum_eq_s_a {gp : Pair α} (s_nth_eq : g.s.get? n = some gp) :
    g.partNums.get? n = some gp.a 
Arguments: {α : Type u_1} {g : GenContFract α} {n : ℕ} {gp : GenContFract.Pair α} (s_nth_eq : g.s.get? n = some gp)
Goal: g.partNums.get? n = some gp.a