ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: Fin.prod_univ_seven
File: Mathlib/Algebra/BigOperators/Fin.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝ : CommMonoid β
f : Fin 7 → β
⊢ ∏ i : Fin 7, f i = f 0 * f 1 * f 2 * f 3 * f 4 * f 5 * f 6
state_after: α : Type u_1
β : Type u_2
inst✝ : CommMonoid β
f : Fin 7 → β
⊢ f (castSucc 0) * f (castSucc 1) * f (castSucc 2) * f (castSucc 3) * f (castSucc 4) * f (castSucc 5) * f (last 6) =
    f 0 * f 1 * f 2 * f 3 * f 4 * f 5 * f 6
tactic: rw [prod_univ_castSucc, prod_univ_six]
state_before: α : Type u_1
β : Type u_2
inst✝ : CommMonoid β
f : Fin 7 → β
⊢ f (castSucc 0) * f (castSucc 1) * f (castSucc 2) * f (castSucc 3) * f (castSucc 4) * f (castSucc 5) * f (last 6) =
    f 0 * f 1 * f 2 * f 3 * f 4 * f 5 * f 6
state_after: no goals
tactic: rfl
Theorem: cauchySeq_finset_of_norm_bounded_eventually
File: Mathlib/Analysis/Normed/Group/InfiniteSum.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
E : Type u_3
F : Type u_4
inst✝¹ : SeminormedAddCommGroup E
inst✝ : SeminormedAddCommGroup F
f : ι → E
g : ι → ℝ
hg : Summable g
h : ∀ᶠ (i : ι) in cofinite, ‖f i‖ ≤ g i
⊢ CauchySeq fun s => ∑ i ∈ s, f i
state_after: ι : Type u_1
α : Type u_2
E : Type u_3
F : Type u_4
inst✝¹ : SeminormedAddCommGroup E
inst✝ : SeminormedAddCommGroup F
f : ι → E
g : ι → ℝ
hg : Summable g
h : ∀ᶠ (i : ι) in cofinite, ‖f i‖ ≤ g i
ε : ℝ
hε : ε > 0
⊢ ∃ s, ∀ (t : Finset ι), Disjoint t s → ‖∑ i ∈ t, f i‖ < ε
tactic: refine cauchySeq_finset_iff_vanishing_norm.2 fun ε hε => ?_
state_before: ι : Type u_1
α : Type u_2
E : Type u_3
F : Type u_4
inst✝¹ : SeminormedAddCommGroup E
inst✝ : SeminormedAddCommGroup F
f : ι → E
g : ι → ℝ
hg : Summable g
h : ∀ᶠ (i : ι) in cofinite, ‖f i‖ ≤ g i
ε : ℝ
hε : ε > 0
⊢ ∃ s, ∀ (t : Finset ι), Disjoint t s → ‖∑ i ∈ t, f i‖ < ε
state_after: case intro
ι : Type u_1
α : Type u_2
E : Type u_3
F : Type u_4
inst✝¹ : SeminormedAddCommGroup E
inst✝ : SeminormedAddCommGroup F
f : ι → E
g : ι → ℝ
hg : Summable g
h : ∀ᶠ (i : ι) in cofinite, ‖f i‖ ≤ g i
ε : ℝ
hε : ε > 0
s : Finset ι
hs : ∀ (t : Finset ι), Disjoint t s → ‖∑ i ∈ t, g i‖ < ε
⊢ ∃ s, ∀ (t : Finset ι), Disjoint t s → ‖∑ i ∈ t, f i‖ < ε
tactic: rcases summable_iff_vanishing_norm.1 hg ε hε with ⟨s, hs⟩
state_before: case intro
ι : Type u_1
α : Type u_2
E : Type u_3
F : Type u_4
inst✝¹ : SeminormedAddCommGroup E
inst✝ : SeminormedAddCommGroup F
f : ι → E
g : ι → ℝ
hg : Summable g
h : ∀ᶠ (i : ι) in cofinite, ‖f i‖ ≤ g i
ε : ℝ
hε : ε > 0
s : Finset ι
hs : ∀ (t : Finset ι), Disjoint t s → ‖∑ i ∈ t, g i‖ < ε
⊢ ∃ s, ∀ (t : Finset ι), Disjoint t s → ‖∑ i ∈ t, f i‖ < ε
state_after: no goals
tactic: classical
  refine ⟨s ∪ h.toFinset, fun t ht => ?_⟩
  have : ∀ i ∈ t, ‖f i‖ ≤ g i := by
    intro i hi
    simp only [disjoint_left, mem_union, not_or, h.mem_toFinset, Set.mem_compl_iff,
      Classical.not_not] at ht
    exact (ht hi).2
  calc
    ‖∑ i ∈ t, f i‖ ≤ ∑ i ∈ t, g i := norm_sum_le_of_le _ this
    _ ≤ ‖∑ i ∈ t, g i‖ := le_abs_self _
    _ < ε := hs _ (ht.mono_right le_sup_left)
Theorem: Int.mod_nat_eq_sub_mul_floor_rat_div
File: Mathlib/Data/Rat/Floor.lean

Proof steps:
state_before: n : ℤ
d : ℕ
⊢ n % ↑d = n - ↑d * ⌊↑n / ↑d⌋
state_after: no goals
tactic: rw [eq_sub_of_add_eq <| Int.emod_add_ediv n d, Rat.floor_int_div_nat_eq_div]
Theorem: List.Perm.kunion_right
File: Mathlib/Data/List/Sigma.lean

Proof steps:
state_before: α : Type u
β : α → Type v
l✝ l₁✝ l₂✝ : List (Sigma β)
inst✝ : DecidableEq α
l₁ l₂ : List (Sigma β)
p : l₁ ~ l₂
l : List (Sigma β)
⊢ l₁.kunion l ~ l₂.kunion l
state_after: no goals
tactic: induction p generalizing l with
  | nil => rfl
  | cons hd _ ih =>
    simp [ih (List.kerase _ _), Perm.cons]
  | swap s₁ s₂ l => simp [kerase_comm, Perm.swap]
  | trans _ _ ih₁₂ ih₂₃ => exact Perm.trans (ih₁₂ l) (ih₂₃ l)
Theorem: PerfectRing.liftAux_self_apply
File: Mathlib/FieldTheory/IsPerfectClosure.lean

Proof steps:
state_before: K : Type u_1
L : Type u_2
M : Type u_3
N : Type u_4
inst✝⁸ : CommSemiring K
inst✝⁷ : CommSemiring L
inst✝⁶ : CommSemiring M
i : K →+* L
j : K →+* M
f : L →+* M
p : ℕ
inst✝⁵ : ExpChar K p
inst✝⁴ : ExpChar L p
inst✝³ : ExpChar M p
inst✝² : PerfectRing M p
inst✝¹ : IsPRadical i p
inst✝ : PerfectRing L p
x : L
⊢ liftAux i i p x = x
state_after: no goals
tactic: rw [liftAux, Classical.choose_spec (lift_aux i p x), ← iterateFrobenius_def,
    ← iterateFrobeniusEquiv_apply, RingEquiv.symm_apply_apply]
Theorem: Turing.TM2.stmts₁_supportsStmt_mono
File: Mathlib/Computability/TuringMachine.lean

Proof steps:
state_before: K : Type u_1
inst✝ : DecidableEq K
Γ : K → Type u_2
Λ : Type u_3
σ : Type u_4
S : Finset Λ
q₁ q₂ : Stmt₂
h : q₁ ∈ stmts₁ q₂
hs : SupportsStmt S q₂
⊢ SupportsStmt S q₁
state_after: no goals
tactic: induction q₂ with
    simp only [stmts₁, SupportsStmt, Finset.mem_insert, Finset.mem_union, Finset.mem_singleton]
      at h hs
  | branch f q₁ q₂ IH₁ IH₂ => rcases h with (rfl | h | h); exacts [hs, IH₁ h hs.1, IH₂ h hs.2]
  | goto l => subst h; exact hs
  | halt => subst h; trivial
  | load _ _ IH | _ _ _ _ IH => rcases h with (rfl | h) <;> [exact hs; exact IH h hs]
Theorem: RingQuot.pow_quot
File: Mathlib/Algebra/RingQuot.lean

Proof steps:
state_before: R : Type uR
inst✝³ : Semiring R
S : Type uS
inst✝² : CommSemiring S
T : Type uT
A : Type uA
inst✝¹ : Semiring A
inst✝ : Algebra S A
r : R → R → Prop
a : R
n : ℕ
⊢ { toQuot := Quot.mk (Rel r) a } ^ n = { toQuot := Quot.mk (Rel r) (a ^ n) }
state_after: R : Type uR
inst✝³ : Semiring R
S : Type uS
inst✝² : CommSemiring S
T : Type uT
A : Type uA
inst✝¹ : Semiring A
inst✝ : Algebra S A
r : R → R → Prop
a : R
n : ℕ
⊢ RingQuot.npow r n { toQuot := Quot.mk (Rel r) a } = { toQuot := Quot.mk (Rel r) (a ^ n) }
tactic: show npow r _ _ = _
state_before: R : Type uR
inst✝³ : Semiring R
S : Type uS
inst✝² : CommSemiring S
T : Type uT
A : Type uA
inst✝¹ : Semiring A
inst✝ : Algebra S A
r : R → R → Prop
a : R
n : ℕ
⊢ RingQuot.npow r n { toQuot := Quot.mk (Rel r) a } = { toQuot := Quot.mk (Rel r) (a ^ n) }
state_after: no goals
tactic: rw [npow_def]
Theorem: Finset.prod_range_induction
File: Mathlib/Algebra/BigOperators/Group/Finset.lean

Proof steps:
state_before: ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝ : CommMonoid β
f s : ℕ → β
base : s 0 = 1
step : ∀ (n : ℕ), s (n + 1) = s n * f n
n : ℕ
⊢ ∏ k ∈ range n, f k = s n
state_after: case zero
ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝ : CommMonoid β
f s : ℕ → β
base : s 0 = 1
step : ∀ (n : ℕ), s (n + 1) = s n * f n
⊢ ∏ k ∈ range 0, f k = s 0

case succ
ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝ : CommMonoid β
f s : ℕ → β
base : s 0 = 1
step : ∀ (n : ℕ), s (n + 1) = s n * f n
k : ℕ
hk : ∏ k ∈ range k, f k = s k
⊢ ∏ k ∈ range (k + 1), f k = s (k + 1)
tactic: induction' n with k hk
Theorem: WeierstrassCurve.Affine.slope_of_Y_eq
File: Mathlib/AlgebraicGeometry/EllipticCurve/Affine.lean

Proof steps:
state_before: R : Type u
inst✝¹ : CommRing R
W✝ : Affine R
F : Type u
inst✝ : Field F
W : Affine F
x₁ x₂ y₁ y₂ : F
hx : x₁ = x₂
hy : y₁ = W.negY x₂ y₂
⊢ W.slope x₁ x₂ y₁ y₂ = 0
state_after: no goals
tactic: rw [slope, if_pos hx, if_pos hy]
Theorem: AffineIndependent.eq_of_sum_eq_sum_subtype
File: Mathlib/LinearAlgebra/AffineSpace/Independent.lean

Proof steps:
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
ι : Type u_4
s✝ : Finset ι
w w₁✝ w₂✝ : ι → k
p : ι → V
s : Finset V
hp : AffineIndependent k Subtype.val
w₁ w₂ : V → k
hw : ∑ i ∈ s, w₁ i = ∑ i ∈ s, w₂ i
hwp : ∑ i ∈ s, w₁ i • i = ∑ i ∈ s, w₂ i • i
⊢ ∀ i ∈ s, w₁ i = w₂ i
state_after: no goals
tactic: refine fun i hi => sub_eq_zero.1 (hp.eq_zero_of_sum_eq_zero_subtype (w := w₁ - w₂) ?_ ?_ _ hi) <;>
    simpa [sub_mul, sub_smul, sub_eq_zero]
Theorem: Primrec.comp
File: Mathlib/Computability/Primrec.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
σ : Type u_3
inst✝² : Primcodable α
inst✝¹ : Primcodable β
inst✝ : Primcodable σ
f : β → σ
g : α → β
hf : Primrec f
hg : Primrec g
n : ℕ
⊢ (Nat.casesOn (encode (decode n)) 0 fun n => encode (Option.map f (decode (encode (Option.map g (decode n))).pred))) =
    encode (Option.map (fun a => f (g a)) (decode n))
state_after: no goals
tactic: cases @decode α _ n <;> simp [encodek]
Theorem: Ideal.ker_Pi_Quotient_mk
File: Mathlib/RingTheory/Ideal/QuotientOperations.lean

Proof steps:
state_before: R : Type u
S : Type v
F : Type w
inst✝¹ : CommRing R
inst✝ : Semiring S
ι : Type u_1
I : ι → Ideal R
⊢ ker (Pi.ringHom fun i => Quotient.mk (I i)) = ⨅ i, I i
state_after: no goals
tactic: simp [Pi.ker_ringHom, mk_ker]
Theorem: Equiv.exists_congr
File: Mathlib/Logic/Equiv/Defs.lean

Proof steps:
state_before: α : Sort u
β : Sort v
γ : Sort w
p : α → Prop
q : β → Prop
e : α ≃ β
h : ∀ (a : α), p a ↔ q (e a)
⊢ (∃ b, p (e.symm b)) ↔ ∃ b, q b
state_after: no goals
tactic: simp [h]
Theorem: GenContFract.exists_rat_eq_nth_den
File: Mathlib/Algebra/ContinuedFractions/Computation/TerminatesIffRat.lean

Proof steps:
state_before: K : Type u_1
inst✝¹ : LinearOrderedField K
inst✝ : FloorRing K
v : K
n : ℕ
⊢ ∃ q, (of v).dens n = ↑q
state_after: case intro.mk
K : Type u_1
inst✝¹ : LinearOrderedField K
inst✝ : FloorRing K
v : K
n : ℕ
a✝ b : ℚ
nth_cont_eq : (of v).conts n = Pair.map Rat.cast { a := a✝, b := b }
⊢ ∃ q, (of v).dens n = ↑q
tactic: rcases exists_gcf_pair_rat_eq_nth_conts v n with ⟨⟨_, b⟩, nth_cont_eq⟩
state_before: case intro.mk
K : Type u_1
inst✝¹ : LinearOrderedField K
inst✝ : FloorRing K
v : K
n : ℕ
a✝ b : ℚ
nth_cont_eq : (of v).conts n = Pair.map Rat.cast { a := a✝, b := b }
⊢ ∃ q, (of v).dens n = ↑q
state_after: case h
K : Type u_1
inst✝¹ : LinearOrderedField K
inst✝ : FloorRing K
v : K
n : ℕ
a✝ b : ℚ
nth_cont_eq : (of v).conts n = Pair.map Rat.cast { a := a✝, b := b }
⊢ (of v).dens n = ↑b
tactic: use b
state_before: case h
K : Type u_1
inst✝¹ : LinearOrderedField K
inst✝ : FloorRing K
v : K
n : ℕ
a✝ b : ℚ
nth_cont_eq : (of v).conts n = Pair.map Rat.cast { a := a✝, b := b }
⊢ (of v).dens n = ↑b
state_after: no goals
tactic: simp [den_eq_conts_b, nth_cont_eq]
Theorem: Ordinal.mul_principal_add_is_principal_add
File: Mathlib/SetTheory/Ordinal/Principal.lean

Proof steps:
state_before: a b : Ordinal.{u}
hb₁ : b ≠ 1
hb : Principal (fun x x_1 => x + x_1) b
⊢ Principal (fun x x_1 => x + x_1) (a * b)
state_after: case inl
b : Ordinal.{u}
hb₁ : b ≠ 1
hb : Principal (fun x x_1 => x + x_1) b
⊢ Principal (fun x x_1 => x + x_1) (0 * b)

case inr
a b : Ordinal.{u}
hb₁ : b ≠ 1
hb : Principal (fun x x_1 => x + x_1) b
h✝ : 0 < a
⊢ Principal (fun x x_1 => x + x_1) (a * b)
tactic: rcases eq_zero_or_pos a with (rfl | _)
Theorem: Set.exists_subset_encard_eq
File: Mathlib/Data/Set/Card.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
s t : Set α
k : ℕ∞
hk : k ≤ s.encard
⊢ ∃ t ⊆ s, t.encard = k
state_after: α : Type u_1
β : Type u_2
s t : Set α
k : ℕ∞
⊢ k ≤ s.encard → ∃ t ⊆ s, t.encard = k
tactic: revert hk
state_before: α : Type u_1
β : Type u_2
s t : Set α
k : ℕ∞
⊢ k ≤ s.encard → ∃ t ⊆ s, t.encard = k
state_after: case refine_1
α : Type u_1
β : Type u_2
s t : Set α
k : ℕ∞
n : ℕ
IH : ↑n ≤ s.encard → ∃ t ⊆ s, t.encard = ↑n
hle : ↑n.succ ≤ s.encard
⊢ ∃ t ⊆ s, t.encard = ↑n.succ

case refine_2
α : Type u_1
β : Type u_2
s t : Set α
k : ℕ∞
⊢ (∀ (n : ℕ), ↑n ≤ s.encard → ∃ t ⊆ s, t.encard = ↑n) → ⊤ ≤ s.encard → ∃ t ⊆ s, t.encard = ⊤
tactic: refine ENat.nat_induction k (fun _ ↦ ⟨∅, empty_subset _, by simp⟩) (fun n IH hle ↦ ?_) ?_
state_before: case refine_2
α : Type u_1
β : Type u_2
s t : Set α
k : ℕ∞
⊢ (∀ (n : ℕ), ↑n ≤ s.encard → ∃ t ⊆ s, t.encard = ↑n) → ⊤ ≤ s.encard → ∃ t ⊆ s, t.encard = ⊤
state_after: case refine_2
α : Type u_1
β : Type u_2
s t : Set α
k : ℕ∞
⊢ (∀ (n : ℕ), ↑n ≤ s.encard → ∃ t ⊆ s, t.encard = ↑n) → s.Infinite → ∃ t ⊆ s, t.Infinite
tactic: simp only [top_le_iff, encard_eq_top_iff]
state_before: case refine_2
α : Type u_1
β : Type u_2
s t : Set α
k : ℕ∞
⊢ (∀ (n : ℕ), ↑n ≤ s.encard → ∃ t ⊆ s, t.encard = ↑n) → s.Infinite → ∃ t ⊆ s, t.Infinite
state_after: no goals
tactic: exact fun _ hi ↦ ⟨s, Subset.rfl, hi⟩
Theorem: CategoryTheory.InjectiveResolution.descFOne_zero_comm
File: Mathlib/CategoryTheory/Abelian/InjectiveResolution.lean

Proof steps:
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : Abelian C
Y Z : C
f : Z ⟶ Y
I : InjectiveResolution Y
J : InjectiveResolution Z
⊢ J.cocomplex.d 0 1 ≫ descFOne f I J = descFZero f I J ≫ I.cocomplex.d 0 1
state_after: no goals
tactic: apply J.exact₀.comp_descToInjective
Theorem: OmegaCompletePartialOrder.ωSup_total
File: Mathlib/Order/OmegaCompletePartialOrder.lean

Proof steps:
state_before: α : Type u
β : Type v
γ : Type u_1
inst✝ : OmegaCompletePartialOrder α
c : Chain α
x : α
h : ∀ (i : ℕ), c i ≤ x ∨ x ≤ c i
this : ¬∀ (i : ℕ), c i ≤ x
⊢ ∃ i, ¬c i ≤ x
state_after: α : Type u
β : Type v
γ : Type u_1
inst✝ : OmegaCompletePartialOrder α
c : Chain α
x : α
h : ∀ (i : ℕ), c i ≤ x ∨ x ≤ c i
this : ∃ x_1, ¬c x_1 ≤ x
⊢ ∃ i, ¬c i ≤ x
tactic: simp only [not_forall] at this ⊢
state_before: α : Type u
β : Type v
γ : Type u_1
inst✝ : OmegaCompletePartialOrder α
c : Chain α
x : α
h : ∀ (i : ℕ), c i ≤ x ∨ x ≤ c i
this : ∃ x_1, ¬c x_1 ≤ x
⊢ ∃ i, ¬c i ≤ x
state_after: no goals
tactic: assumption
Theorem: Matrix.col_smul
File: Mathlib/Data/Matrix/RowCol.lean

Proof steps:
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
R : Type u_5
α : Type v
β : Type w
ι : Type u_6
inst✝ : SMul R α
x : R
v : m → α
⊢ col ι (x • v) = x • col ι v
state_after: case a
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
R : Type u_5
α : Type v
β : Type w
ι : Type u_6
inst✝ : SMul R α
x : R
v : m → α
i✝ : m
j✝ : ι
⊢ col ι (x • v) i✝ j✝ = (x • col ι v) i✝ j✝
tactic: ext
state_before: case a
l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
R : Type u_5
α : Type v
β : Type w
ι : Type u_6
inst✝ : SMul R α
x : R
v : m → α
i✝ : m
j✝ : ι
⊢ col ι (x • v) i✝ j✝ = (x • col ι v) i✝ j✝
state_after: no goals
tactic: rfl
Theorem: contDiffWithinAtProp_self_source
File: Mathlib/Geometry/Manifold/ContMDiff/Defs.lean

Proof steps:
state_before: 𝕜 : Type u_1
inst✝³⁷ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝³⁶ : NormedAddCommGroup E
inst✝³⁵ : NormedSpace 𝕜 E
H : Type u_3
inst✝³⁴ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
M : Type u_4
inst✝³³ : TopologicalSpace M
inst✝³² : ChartedSpace H M
inst✝³¹ : SmoothManifoldWithCorners I M
E' : Type u_5
inst✝³⁰ : NormedAddCommGroup E'
inst✝²⁹ : NormedSpace 𝕜 E'
H' : Type u_6
inst✝²⁸ : TopologicalSpace H'
I' : ModelWithCorners 𝕜 E' H'
M' : Type u_7
inst✝²⁷ : TopologicalSpace M'
inst✝²⁶ : ChartedSpace H' M'
inst✝²⁵ : SmoothManifoldWithCorners I' M'
E'' : Type u_8
inst✝²⁴ : NormedAddCommGroup E''
inst✝²³ : NormedSpace 𝕜 E''
H'' : Type u_9
inst✝²² : TopologicalSpace H''
I'' : ModelWithCorners 𝕜 E'' H''
M'' : Type u_10
inst✝²¹ : TopologicalSpace M''
inst✝²⁰ : ChartedSpace H'' M''
F : Type u_11
inst✝¹⁹ : NormedAddCommGroup F
inst✝¹⁸ : NormedSpace 𝕜 F
G : Type u_12
inst✝¹⁷ : TopologicalSpace G
J : ModelWithCorners 𝕜 F G
N : Type u_13
inst✝¹⁶ : TopologicalSpace N
inst✝¹⁵ : ChartedSpace G N
inst✝¹⁴ : SmoothManifoldWithCorners J N
F' : Type u_14
inst✝¹³ : NormedAddCommGroup F'
inst✝¹² : NormedSpace 𝕜 F'
G' : Type u_15
inst✝¹¹ : TopologicalSpace G'
J' : ModelWithCorners 𝕜 F' G'
N' : Type u_16
inst✝¹⁰ : TopologicalSpace N'
inst✝⁹ : ChartedSpace G' N'
inst✝⁸ : SmoothManifoldWithCorners J' N'
F₁ : Type u_17
inst✝⁷ : NormedAddCommGroup F₁
inst✝⁶ : NormedSpace 𝕜 F₁
F₂ : Type u_18
inst✝⁵ : NormedAddCommGroup F₂
inst✝⁴ : NormedSpace 𝕜 F₂
F₃ : Type u_19
inst✝³ : NormedAddCommGroup F₃
inst✝² : NormedSpace 𝕜 F₃
F₄ : Type u_20
inst✝¹ : NormedAddCommGroup F₄
inst✝ : NormedSpace 𝕜 F₄
e : PartialHomeomorph M H
e' : PartialHomeomorph M' H'
f✝ f₁ : M → M'
s✝ s₁ t : Set M
x✝ : M
m n : ℕ∞
f : E → H'
s : Set E
x : E
⊢ ContDiffWithinAtProp 𝓘(𝕜, E) I' n f s x ↔ ContDiffWithinAt 𝕜 n (↑I' ∘ f) s x
state_after: no goals
tactic: simp_rw [ContDiffWithinAtProp, modelWithCornersSelf_coe, range_id, inter_univ,
    modelWithCornersSelf_coe_symm, CompTriple.comp_eq, preimage_id_eq, id_eq]
Theorem: Quaternion.normSq_coe
File: Mathlib/Algebra/Quaternion.lean

Proof steps:
state_before: S : Type u_1
T : Type u_2
R : Type u_3
inst✝ : CommRing R
r x y z : R
a b c : ℍ[R]
⊢ normSq ↑x = x ^ 2
state_after: no goals
tactic: rw [normSq_def, star_coe, ← coe_mul, coe_re, sq]
Theorem: MeasureTheory.Measure.toBoxAdditive_apply
File: Mathlib/Analysis/BoxIntegral/Partition/Measure.lean

Proof steps:
state_before: ι : Type u_1
inst✝¹ : Finite ι
μ : Measure (ι → ℝ)
inst✝ : IsLocallyFiniteMeasure μ
J : Box ι
x✝ : ↑J ≤ ⊤
π : Prepartition J
hπ : π.IsPartition
⊢ ∑ Ji ∈ π.boxes, (fun J => (μ ↑J).toReal) Ji = (fun J => (μ ↑J).toReal) J
state_after: no goals
tactic: rw [← π.measure_iUnion_toReal, hπ.iUnion_eq]
Theorem: MeasureTheory.L1.norm_def
File: Mathlib/MeasureTheory/Function/L1Space.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝² : MeasurableSpace δ
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedAddCommGroup γ
f : ↥(Lp β 1 μ)
⊢ ‖f‖ = (∫⁻ (a : α), ↑‖↑↑f a‖₊ ∂μ).toReal
state_after: no goals
tactic: simp [Lp.norm_def, eLpNorm, eLpNorm']
Theorem: Module.Flat.iff_rTensor_injective
File: Mathlib/RingTheory/Flat/Basic.lean

Proof steps:
state_before: R : Type u
M : Type v
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
⊢ Flat R M ↔ ∀ ⦃I : Ideal R⦄, I.FG → Function.Injective ⇑(rTensor M (Submodule.subtype I))
state_after: no goals
tactic: simp [flat_iff, ← lid_comp_rTensor]
Theorem: Finset.prod_sub_ordered
File: Mathlib/Algebra/BigOperators/Ring.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
κ : ι → Type u_5
s✝ s₁ s₂ : Finset ι
i : ι
a : α
f✝ g✝ : ι → α
inst✝¹ : CommRing α
inst✝ : LinearOrder ι
s : Finset ι
f g : ι → α
⊢ ∏ i ∈ s, (f i - g i) =
    ∏ i ∈ s, f i - ∑ i ∈ s, (g i * ∏ j ∈ filter (fun x => x < i) s, (f j - g j)) * ∏ j ∈ filter (fun j => i < j) s, f j
state_after: ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
κ : ι → Type u_5
s✝ s₁ s₂ : Finset ι
i : ι
a : α
f✝ g✝ : ι → α
inst✝¹ : CommRing α
inst✝ : LinearOrder ι
s : Finset ι
f g : ι → α
⊢ ∏ x ∈ s, (f x + -g x) =
    ∏ i ∈ s, f i +
      -∑ x ∈ s, (g x * ∏ x ∈ filter (fun x_1 => x_1 < x) s, (f x + -g x)) * ∏ i ∈ filter (fun j => x < j) s, f i
tactic: simp only [sub_eq_add_neg]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
κ : ι → Type u_5
s✝ s₁ s₂ : Finset ι
i : ι
a : α
f✝ g✝ : ι → α
inst✝¹ : CommRing α
inst✝ : LinearOrder ι
s : Finset ι
f g : ι → α
⊢ ∏ x ∈ s, (f x + -g x) =
    ∏ i ∈ s, f i +
      -∑ x ∈ s, (g x * ∏ x ∈ filter (fun x_1 => x_1 < x) s, (f x + -g x)) * ∏ i ∈ filter (fun j => x < j) s, f i
state_after: case h.e'_3.h.e'_6
ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
κ : ι → Type u_5
s✝ s₁ s₂ : Finset ι
i : ι
a : α
f✝ g✝ : ι → α
inst✝¹ : CommRing α
inst✝ : LinearOrder ι
s : Finset ι
f g : ι → α
⊢ -∑ x ∈ s, (g x * ∏ x ∈ filter (fun x_1 => x_1 < x) s, (f x + -g x)) * ∏ i ∈ filter (fun j => x < j) s, f i =
    ∑ i ∈ s, (-g i * ∏ j ∈ filter (fun x => x < i) s, (f j + -g j)) * ∏ j ∈ filter (fun j => i < j) s, f j
tactic: convert prod_add_ordered s f fun i => -g i
state_before: case h.e'_3.h.e'_6
ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
κ : ι → Type u_5
s✝ s₁ s₂ : Finset ι
i : ι
a : α
f✝ g✝ : ι → α
inst✝¹ : CommRing α
inst✝ : LinearOrder ι
s : Finset ι
f g : ι → α
⊢ -∑ x ∈ s, (g x * ∏ x ∈ filter (fun x_1 => x_1 < x) s, (f x + -g x)) * ∏ i ∈ filter (fun j => x < j) s, f i =
    ∑ i ∈ s, (-g i * ∏ j ∈ filter (fun x => x < i) s, (f j + -g j)) * ∏ j ∈ filter (fun j => i < j) s, f j
state_after: no goals
tactic: simp
Theorem: _private.Mathlib.NumberTheory.Padics.Hensel.0.T_pos
File: Mathlib/NumberTheory/Padics/Hensel.lean

Proof steps:
state_before: p : ℕ
inst✝ : Fact (Nat.Prime p)
F : Polynomial ℤ_[p]
a : ℤ_[p]
hnorm : ‖Polynomial.eval a F‖ < ‖Polynomial.eval a (Polynomial.derivative F)‖ ^ 2
hnsol : Polynomial.eval a F ≠ 0
⊢ T_gen p F a > 0
state_after: p : ℕ
inst✝ : Fact (Nat.Prime p)
F : Polynomial ℤ_[p]
a : ℤ_[p]
hnorm : ‖Polynomial.eval a F‖ < ‖Polynomial.eval a (Polynomial.derivative F)‖ ^ 2
hnsol : Polynomial.eval a F ≠ 0
⊢ ‖Polynomial.eval a F‖ / ‖Polynomial.eval a (Polynomial.derivative F)‖ ^ 2 > 0
tactic: rw [T_def]
state_before: p : ℕ
inst✝ : Fact (Nat.Prime p)
F : Polynomial ℤ_[p]
a : ℤ_[p]
hnorm : ‖Polynomial.eval a F‖ < ‖Polynomial.eval a (Polynomial.derivative F)‖ ^ 2
hnsol : Polynomial.eval a F ≠ 0
⊢ ‖Polynomial.eval a F‖ / ‖Polynomial.eval a (Polynomial.derivative F)‖ ^ 2 > 0
state_after: no goals
tactic: exact div_pos (norm_pos_iff.2 hnsol) (deriv_sq_norm_pos hnorm)
Theorem: spectrum.unit_mem_mul_iff_mem_swap_mul
File: Mathlib/Algebra/Algebra/Spectrum.lean

Proof steps:
state_before: R : Type u
A : Type v
inst✝² : CommSemiring R
inst✝¹ : Ring A
inst✝ : Algebra R A
a b : A
r : Rˣ
h₁ : ∀ (x y : A), IsUnit (1 - x * y) → IsUnit (1 - y * x)
⊢ ↑r ∈ σ (a * b) ↔ ↑r ∈ σ (b * a)
state_after: R : Type u
A : Type v
inst✝² : CommSemiring R
inst✝¹ : Ring A
inst✝ : Algebra R A
a b : A
r : Rˣ
h₁ : ∀ (x y : A), IsUnit (1 - x * y) → IsUnit (1 - y * x)
this : IsUnit (1 - r⁻¹ • a * b) ↔ IsUnit (1 - b * r⁻¹ • a)
⊢ ↑r ∈ σ (a * b) ↔ ↑r ∈ σ (b * a)
tactic: have := Iff.intro (h₁ (r⁻¹ • a) b) (h₁ b (r⁻¹ • a))
state_before: R : Type u
A : Type v
inst✝² : CommSemiring R
inst✝¹ : Ring A
inst✝ : Algebra R A
a b : A
r : Rˣ
h₁ : ∀ (x y : A), IsUnit (1 - x * y) → IsUnit (1 - y * x)
this : IsUnit (1 - r⁻¹ • a * b) ↔ IsUnit (1 - b * r⁻¹ • a)
⊢ ↑r ∈ σ (a * b) ↔ ↑r ∈ σ (b * a)
state_after: R : Type u
A : Type v
inst✝² : CommSemiring R
inst✝¹ : Ring A
inst✝ : Algebra R A
a b : A
r : Rˣ
h₁ : ∀ (x y : A), IsUnit (1 - x * y) → IsUnit (1 - y * x)
this : IsUnit (1 - r⁻¹ • a * b) ↔ IsUnit (1 - r⁻¹ • (b * a))
⊢ ↑r ∈ σ (a * b) ↔ ↑r ∈ σ (b * a)
tactic: rw [mul_smul_comm r⁻¹ b a] at this
state_before: R : Type u
A : Type v
inst✝² : CommSemiring R
inst✝¹ : Ring A
inst✝ : Algebra R A
a b : A
r : Rˣ
h₁ : ∀ (x y : A), IsUnit (1 - x * y) → IsUnit (1 - y * x)
this : IsUnit (1 - r⁻¹ • a * b) ↔ IsUnit (1 - r⁻¹ • (b * a))
⊢ ↑r ∈ σ (a * b) ↔ ↑r ∈ σ (b * a)
state_after: no goals
tactic: simpa only [mem_iff, not_iff_not, Algebra.algebraMap_eq_smul_one, ← Units.smul_def,
    IsUnit.smul_sub_iff_sub_inv_smul, smul_mul_assoc]
Theorem: Real.sin_sq_eq_half_sub
File: Mathlib/Data/Complex/Exponential.lean

Proof steps:
state_before: x y : ℝ
⊢ sin x ^ 2 = 1 / 2 - cos (2 * x) / 2
state_after: no goals
tactic: rw [sin_sq, cos_sq, ← sub_sub, sub_half]