1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Ordinal.limitRecOn_limit
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

tactic: simp_rw [limitRecOn, SuccOrder.limitRecOn_limit _ _ h.isSuccLimit, dif_neg h.1]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
C : Ordinal.{u_4} → Sort u_5
o : Ordinal.{u_4}
H₁ : C 0
H₂ : (o : Ordinal.{u_4}) → C o → C (succ o)
H₃ : (o : Ordinal.{u_4}) → o.IsLimit → ((o' : Ordinal.{u_4}) → o' < o → C o') → C o
h : o.IsLimit
⊢ o.limitRecOn H₁ H₂ H₃ = H₃ o h fun x _h => x.limitRecOn H₁ H₂ H₃
state_after: no goals
Theorem: LieSubmodule.map_incl_lt_iff_lt_top
File: Mathlib/Algebra/Lie/Submodule.lean

tactic: convert (LieSubmodule.mapOrderEmbedding (f := N.incl) Subtype.coe_injective).lt_iff_lt
state_before: R : Type u
L : Type v
M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : LieRing L
inst✝⁴ : LieAlgebra R L
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : LieRingModule L M
inst✝ : LieModule R L M
N : LieSubmodule R L M
N' : LieSubmodule R L ↥↑N
⊢ map N.incl N' < N ↔ N' < ⊤
state_after: case h.e'_1.h.e'_4
R : Type u
L : Type v
M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : LieRing L
inst✝⁴ : LieAlgebra R L
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : LieRingModule L M
inst✝ : LieModule R L M
N : LieSubmodule R L M
N' : LieSubmodule R L ↥↑N
⊢ N = (mapOrderEmbedding ⋯) ⊤

tactic: simp
state_before: case h.e'_1.h.e'_4
R : Type u
L : Type v
M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : LieRing L
inst✝⁴ : LieAlgebra R L
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : LieRingModule L M
inst✝ : LieModule R L M
N : LieSubmodule R L M
N' : LieSubmodule R L ↥↑N
⊢ N = (mapOrderEmbedding ⋯) ⊤
state_after: no goals
Theorem: Order.Ico_succ_right_of_not_isMax
File: Mathlib/Order/SuccPred/Basic.lean

tactic: rw [← Ici_inter_Iio, Iio_succ_of_not_isMax hb, Ici_inter_Iic]
state_before: α : Type u_1
β : Type u_2
inst✝¹ : Preorder α
inst✝ : SuccOrder α
a b : α
hb : ¬IsMax b
⊢ Ico a (succ b) = Icc a b
state_after: no goals
Theorem: Complex.cosh_ofReal_im
File: Mathlib/Data/Complex/Exponential.lean

tactic: rw [← ofReal_cosh_ofReal_re, ofReal_im]
state_before: x✝ y : ℂ
x : ℝ
⊢ (cosh ↑x).im = 0
state_after: no goals
Theorem: Polynomial.cardinal_mk_eq_max
File: Mathlib/Algebra/Polynomial/Cardinal.lean

tactic: rw [AddMonoidAlgebra, mk_finsupp_lift_of_infinite, lift_uzero, max_comm]
state_before: R : Type u
inst✝¹ : Semiring R
inst✝ : Nontrivial R
⊢ #(AddMonoidAlgebra R ℕ) = max #R ℵ₀
state_after: R : Type u
inst✝¹ : Semiring R
inst✝ : Nontrivial R
⊢ max (#R) (lift.{u, 0} #ℕ) = max #R ℵ₀

tactic: rfl
state_before: R : Type u
inst✝¹ : Semiring R
inst✝ : Nontrivial R
⊢ max (#R) (lift.{u, 0} #ℕ) = max #R ℵ₀
state_after: no goals
Theorem: CategoryTheory.Limits.WidePullback.lift_base
File: Mathlib/CategoryTheory/Limits/Shapes/WidePullbacks.lean

tactic: simp only [limit.lift_π, WidePullbackShape.mkCone_pt, WidePullbackShape.mkCone_π_app]
state_before: J : Type w
C✝ : Type u
inst✝² : Category.{v, u} C✝
C : Type u
inst✝¹ : Category.{v, u} C
B : C
objs : J → C
arrows : (j : J) → objs j ⟶ B
inst✝ : HasWidePullback B objs arrows
X : C
f : X ⟶ B
fs : (j : J) → X ⟶ objs j
w : ∀ (j : J), fs j ≫ arrows j = f
⊢ lift f fs w ≫ base arrows = f
state_after: no goals
Theorem: MeasureTheory.Memℒp.neg
File: Mathlib/MeasureTheory/Function/LpSeminorm/Basic.lean

tactic: simp [hf.right]
state_before: α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
f : α → E
hf : Memℒp f p μ
⊢ snorm (-f) p μ < ⊤
state_after: no goals
Theorem: DFinsupp.update_self
File: Mathlib/Data/DFinsupp/Basic.lean

tactic: ext
state_before: ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝¹ : DecidableEq ι
inst✝ : (i : ι) → Zero (β i)
s : Finset ι
x : (i : ↑↑s) → β ↑i
i : ι
f : Π₀ (i : ι), β i
b : β i
j : ι
⊢ update i f (f i) = f
state_after: case h
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝¹ : DecidableEq ι
inst✝ : (i : ι) → Zero (β i)
s : Finset ι
x : (i : ↑↑s) → β ↑i
i : ι
f : Π₀ (i : ι), β i
b : β i
j i✝ : ι
⊢ (update i f (f i)) i✝ = f i✝

tactic: simp
state_before: case h
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝¹ : DecidableEq ι
inst✝ : (i : ι) → Zero (β i)
s : Finset ι
x : (i : ↑↑s) → β ↑i
i : ι
f : Π₀ (i : ι), β i
b : β i
j i✝ : ι
⊢ (update i f (f i)) i✝ = f i✝
state_after: no goals
Theorem: MeasureTheory.Measure.sum_extend_zero
File: Mathlib/MeasureTheory/Measure/MeasureSpace.lean

tactic: ext s hs
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι✝ : Type u_5
R : Type u_6
R' : Type u_7
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s s' t : Set α
f✝ : α → β
ι : Type u_8
ι' : Type u_9
f : ι → ι'
hf : Injective f
m : ι → Measure α
⊢ sum (Function.extend f m 0) = sum m
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι✝ : Type u_5
R : Type u_6
R' : Type u_7
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s✝ s' t : Set α
f✝ : α → β
ι : Type u_8
ι' : Type u_9
f : ι → ι'
hf : Injective f
m : ι → Measure α
s : Set α
hs : MeasurableSet s
⊢ (sum (Function.extend f m 0)) s = (sum m) s

tactic: simp [*, Function.apply_extend (fun μ : Measure α ↦ μ s)]
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι✝ : Type u_5
R : Type u_6
R' : Type u_7
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s✝ s' t : Set α
f✝ : α → β
ι : Type u_8
ι' : Type u_9
f : ι → ι'
hf : Injective f
m : ι → Measure α
s : Set α
hs : MeasurableSet s
⊢ (sum (Function.extend f m 0)) s = (sum m) s
state_after: no goals
Theorem: Polynomial.opRingEquiv_symm_monomial
File: Mathlib/RingTheory/Polynomial/Opposites.lean

tactic: simp
state_before: R : Type u_1
inst✝ : Semiring R
n : ℕ
r : Rᵐᵒᵖ
⊢ (opRingEquiv R) ((opRingEquiv R).symm ((monomial n) r)) = (opRingEquiv R) (op ((monomial n) (unop r)))
state_after: no goals
Theorem: FirstOrder.Language.realize_noBotOrder_iff
File: Mathlib/ModelTheory/Order.lean

tactic: simp only [noBotOrderSentence, Sentence.Realize, Formula.Realize, BoundedFormula.realize_all,
  BoundedFormula.realize_ex, BoundedFormula.realize_not, Term.realize, Term.realize_le,
  Sum.elim_inr]
state_before: L : Language
α : Type w
M : Type w'
n : ℕ
inst✝ : LE M
⊢ M ⊨ Language.order.noBotOrderSentence ↔ NoBotOrder M
state_after: L : Language
α : Type w
M : Type w'
n : ℕ
inst✝ : LE M
⊢ (∀ (a : M), ∃ a_1, ¬Fin.snoc (Fin.snoc default a) a_1 0 ≤ Fin.snoc (Fin.snoc default a) a_1 1) ↔ NoBotOrder M

tactic: refine ⟨fun h => ⟨fun a => h a⟩, ?_⟩
state_before: L : Language
α : Type w
M : Type w'
n : ℕ
inst✝ : LE M
⊢ (∀ (a : M), ∃ a_1, ¬Fin.snoc (Fin.snoc default a) a_1 0 ≤ Fin.snoc (Fin.snoc default a) a_1 1) ↔ NoBotOrder M
state_after: L : Language
α : Type w
M : Type w'
n : ℕ
inst✝ : LE M
⊢ NoBotOrder M → ∀ (a : M), ∃ a_1, ¬Fin.snoc (Fin.snoc default a) a_1 0 ≤ Fin.snoc (Fin.snoc default a) a_1 1

tactic: intro h a
state_before: L : Language
α : Type w
M : Type w'
n : ℕ
inst✝ : LE M
⊢ NoBotOrder M → ∀ (a : M), ∃ a_1, ¬Fin.snoc (Fin.snoc default a) a_1 0 ≤ Fin.snoc (Fin.snoc default a) a_1 1
state_after: L : Language
α : Type w
M : Type w'
n : ℕ
inst✝ : LE M
h : NoBotOrder M
a : M
⊢ ∃ a_1, ¬Fin.snoc (Fin.snoc default a) a_1 0 ≤ Fin.snoc (Fin.snoc default a) a_1 1

tactic: exact exists_not_ge a
state_before: L : Language
α : Type w
M : Type w'
n : ℕ
inst✝ : LE M
h : NoBotOrder M
a : M
⊢ ∃ a_1, ¬Fin.snoc (Fin.snoc default a) a_1 0 ≤ Fin.snoc (Fin.snoc default a) a_1 1
state_after: no goals
Theorem: Group.covariant_swap_iff_contravariant_swap
File: Mathlib/Algebra/Order/Monoid/Unbundled/Defs.lean

tactic: refine ⟨fun h a b c bc ↦ ?_, fun h a b c bc ↦ ?_⟩
state_before: M : Type u_1
N : Type u_2
μ : M → N → N
r : N → N → Prop
inst✝¹ : CovariantClass M N μ r
inst✝ : Group N
⊢ Covariant N N (swap fun x x_1 => x * x_1) r ↔ Contravariant N N (swap fun x x_1 => x * x_1) r
state_after: case refine_1
M : Type u_1
N : Type u_2
μ : M → N → N
r : N → N → Prop
inst✝¹ : CovariantClass M N μ r
inst✝ : Group N
h : Covariant N N (swap fun x x_1 => x * x_1) r
a b c : N
bc : r (swap (fun x x_1 => x * x_1) a b) (swap (fun x x_1 => x * x_1) a c)
⊢ r b c

case refine_2
M : Type u_1
N : Type u_2
μ : M → N → N
r : N → N → Prop
inst✝¹ : CovariantClass M N μ r
inst✝ : Group N
h : Contravariant N N (swap fun x x_1 => x * x_1) r
a b c : N
bc : r b c
⊢ r (swap (fun x x_1 => x * x_1) a b) (swap (fun x x_1 => x * x_1) a c)

tactic: rw [← mul_inv_cancel_right b a, ← mul_inv_cancel_right c a]
state_before: case refine_1
M : Type u_1
N : Type u_2
μ : M → N → N
r : N → N → Prop
inst✝¹ : CovariantClass M N μ r
inst✝ : Group N
h : Covariant N N (swap fun x x_1 => x * x_1) r
a b c : N
bc : r (swap (fun x x_1 => x * x_1) a b) (swap (fun x x_1 => x * x_1) a c)
⊢ r b c
state_after: case refine_1
M : Type u_1
N : Type u_2
μ : M → N → N
r : N → N → Prop
inst✝¹ : CovariantClass M N μ r
inst✝ : Group N
h : Covariant N N (swap fun x x_1 => x * x_1) r
a b c : N
bc : r (swap (fun x x_1 => x * x_1) a b) (swap (fun x x_1 => x * x_1) a c)
⊢ r (b * a * a⁻¹) (c * a * a⁻¹)

tactic: exact h a⁻¹ bc
state_before: case refine_1
M : Type u_1
N : Type u_2
μ : M → N → N
r : N → N → Prop
inst✝¹ : CovariantClass M N μ r
inst✝ : Group N
h : Covariant N N (swap fun x x_1 => x * x_1) r
a b c : N
bc : r (swap (fun x x_1 => x * x_1) a b) (swap (fun x x_1 => x * x_1) a c)
⊢ r (b * a * a⁻¹) (c * a * a⁻¹)
state_after: no goals

tactic: rw [← mul_inv_cancel_right b a, ← mul_inv_cancel_right c a] at bc
state_before: case refine_2
M : Type u_1
N : Type u_2
μ : M → N → N
r : N → N → Prop
inst✝¹ : CovariantClass M N μ r
inst✝ : Group N
h : Contravariant N N (swap fun x x_1 => x * x_1) r
a b c : N
bc : r b c
⊢ r (swap (fun x x_1 => x * x_1) a b) (swap (fun x x_1 => x * x_1) a c)
state_after: case refine_2
M : Type u_1
N : Type u_2
μ : M → N → N
r : N → N → Prop
inst✝¹ : CovariantClass M N μ r
inst✝ : Group N
h : Contravariant N N (swap fun x x_1 => x * x_1) r
a b c : N
bc : r (b * a * a⁻¹) (c * a * a⁻¹)
⊢ r (swap (fun x x_1 => x * x_1) a b) (swap (fun x x_1 => x * x_1) a c)

tactic: exact h a⁻¹ bc
state_before: case refine_2
M : Type u_1
N : Type u_2
μ : M → N → N
r : N → N → Prop
inst✝¹ : CovariantClass M N μ r
inst✝ : Group N
h : Contravariant N N (swap fun x x_1 => x * x_1) r
a b c : N
bc : r (b * a * a⁻¹) (c * a * a⁻¹)
⊢ r (swap (fun x x_1 => x * x_1) a b) (swap (fun x x_1 => x * x_1) a c)
state_after: no goals
Theorem: PowerSeries.coeff_mul_eq_coeff_trunc_mul_trunc₂
File: Mathlib/RingTheory/PowerSeries/Trunc.lean

tactic: symm
state_before: R✝ : Type u_1
R : Type u_2
inst✝ : CommSemiring R
n a b : ℕ
f g : R⟦X⟧
ha : n < a
hb : n < b
⊢ (coeff R n) (f * g) = (coeff R n) (↑(trunc a f) * ↑(trunc b g))
state_after: R✝ : Type u_1
R : Type u_2
inst✝ : CommSemiring R
n a b : ℕ
f g : R⟦X⟧
ha : n < a
hb : n < b
⊢ (coeff R n) (↑(trunc a f) * ↑(trunc b g)) = (coeff R n) (f * g)

tactic: rw [← coeff_coe_trunc_of_lt n.lt_succ_self, ← trunc_trunc_mul_trunc, trunc_trunc_of_le f ha,
  trunc_trunc_of_le g hb, trunc_trunc_mul_trunc, coeff_coe_trunc_of_lt n.lt_succ_self]
state_before: R✝ : Type u_1
R : Type u_2
inst✝ : CommSemiring R
n a b : ℕ
f g : R⟦X⟧
ha : n < a
hb : n < b
⊢ (coeff R n) (↑(trunc a f) * ↑(trunc b g)) = (coeff R n) (f * g)
state_after: no goals
Theorem: UpperHalfPlane.bounded_mem
File: Mathlib/Analysis/Complex/UpperHalfPlane/FunctionsBoundedAtInfty.lean

tactic: simp [IsBoundedAtImInfty, BoundedAtFilter, Asymptotics.isBigO_iff, Filter.Eventually,
  atImInfty_mem]
state_before: f : ℍ → ℂ
⊢ IsBoundedAtImInfty f ↔ ∃ M A, ∀ (z : ℍ), A ≤ z.im → Complex.abs (f z) ≤ M
state_after: no goals
Theorem: CategoryTheory.Limits.coprodComparison_natural
File: Mathlib/CategoryTheory/Limits/Shapes/BinaryProducts.lean

tactic: rw [coprodComparison, coprodComparison, coprod.map_desc, ← F.map_comp, ← F.map_comp,
  coprod.desc_comp, ← F.map_comp, coprod.inl_map, ← F.map_comp, coprod.inr_map]
state_before: C : Type u
inst✝⁵ : Category.{v, u} C
X Y : C
D : Type u₂
inst✝⁴ : Category.{w, u₂} D
F : C ⥤ D
A A' B B' : C
inst✝³ : HasBinaryCoproduct A B
inst✝² : HasBinaryCoproduct A' B'
inst✝¹ : HasBinaryCoproduct (F.obj A) (F.obj B)
inst✝ : HasBinaryCoproduct (F.obj A') (F.obj B')
f : A ⟶ A'
g : B ⟶ B'
⊢ coprodComparison F A B ≫ F.map (coprod.map f g) = coprod.map (F.map f) (F.map g) ≫ coprodComparison F A' B'
state_after: no goals
Theorem: jacobiTheta₂_undef
File: Mathlib/NumberTheory/ModularForms/JacobiTheta/TwoVariable.lean

tactic: apply tsum_eq_zero_of_not_summable
state_before: z τ : ℂ
hτ : τ.im ≤ 0
⊢ jacobiTheta₂ z τ = 0
state_after: case h
z τ : ℂ
hτ : τ.im ≤ 0
⊢ ¬Summable fun b => jacobiTheta₂_term b z τ

tactic: rw [summable_jacobiTheta₂_term_iff]
state_before: case h
z τ : ℂ
hτ : τ.im ≤ 0
⊢ ¬Summable fun b => jacobiTheta₂_term b z τ
state_after: case h
z τ : ℂ
hτ : τ.im ≤ 0
⊢ ¬0 < τ.im

tactic: exact not_lt.mpr hτ
state_before: case h
z τ : ℂ
hτ : τ.im ≤ 0
⊢ ¬0 < τ.im
state_after: no goals
Theorem: UniqueFactorizationMonoid.ne_zero_of_mem_factors
File: Mathlib/RingTheory/UniqueFactorizationDomain.lean

tactic: rintro rfl
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : UniqueFactorizationMonoid α
p a : α
h : p ∈ factors a
⊢ a ≠ 0
state_after: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : UniqueFactorizationMonoid α
p : α
h : p ∈ factors 0
⊢ False

tactic: simp at h
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : UniqueFactorizationMonoid α
p : α
h : p ∈ factors 0
⊢ False
state_after: no goals
Theorem: Metric.diam_closure
File: Mathlib/Topology/Instances/ENNReal.lean

tactic: simp only [Metric.diam, EMetric.diam_closure]
state_before: α✝ : Type u_1
β : Type u_2
γ : Type u_3
inst✝¹ : PseudoEMetricSpace α✝
α : Type u_4
inst✝ : PseudoMetricSpace α
s : Set α
⊢ diam (closure s) = diam s
state_after: no goals
Theorem: List.zipLeft_eq_zipLeft'
File: Mathlib/Data/List/Basic.lean

tactic: rw [zipLeft, zipLeft']
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
a : α
as✝ : List α
b : β
bs✝ : List β
as : List α
bs : List β
⊢ as.zipLeft bs = (as.zipLeft' bs).1
state_after: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
a : α
as✝ : List α
b : β
bs✝ : List β
as : List α
bs : List β
⊢ zipWithLeft Prod.mk as bs = (zipWithLeft' Prod.mk as bs).1

tactic: cases as with
| nil => rfl
| cons _ atl =>
  cases bs with
  | nil => rfl
  | cons _ btl =>
    rw [zipWithLeft, zipWithLeft', cons_inj_right]
    exact @zipLeft_eq_zipLeft' atl btl
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
a : α
as✝ : List α
b : β
bs✝ : List β
as : List α
bs : List β
⊢ zipWithLeft Prod.mk as bs = (zipWithLeft' Prod.mk as bs).1
state_after: no goals

tactic: rfl
state_before: case nil
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
a : α
as : List α
b : β
bs✝ bs : List β
⊢ zipWithLeft Prod.mk [] bs = (zipWithLeft' Prod.mk [] bs).1
state_after: no goals

tactic: cases bs with
| nil => rfl
| cons _ btl =>
  rw [zipWithLeft, zipWithLeft', cons_inj_right]
  exact @zipLeft_eq_zipLeft' atl btl
state_before: case cons
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
a : α
as : List α
b : β
bs✝ bs : List β
head✝ : α
atl : List α
⊢ zipWithLeft Prod.mk (head✝ :: atl) bs = (zipWithLeft' Prod.mk (head✝ :: atl) bs).1
state_after: no goals

tactic: rfl
state_before: case cons.nil
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
a : α
as : List α
b : β
bs : List β
head✝ : α
atl : List α
⊢ zipWithLeft Prod.mk (head✝ :: atl) [] = (zipWithLeft' Prod.mk (head✝ :: atl) []).1
state_after: no goals

tactic: rw [zipWithLeft, zipWithLeft', cons_inj_right]
state_before: case cons.cons
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
a : α
as : List α
b : β
bs : List β
head✝¹ : α
atl : List α
head✝ : β
btl : List β
⊢ zipWithLeft Prod.mk (head✝¹ :: atl) (head✝ :: btl) = (zipWithLeft' Prod.mk (head✝¹ :: atl) (head✝ :: btl)).1
state_after: case cons.cons
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
a : α
as : List α
b : β
bs : List β
head✝¹ : α
atl : List α
head✝ : β
btl : List β
⊢ zipWithLeft Prod.mk atl btl = (zipWithLeft' Prod.mk atl btl).1

tactic: exact @zipLeft_eq_zipLeft' atl btl
state_before: case cons.cons
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
a : α
as : List α
b : β
bs : List β
head✝¹ : α
atl : List α
head✝ : β
btl : List β
⊢ zipWithLeft Prod.mk atl btl = (zipWithLeft' Prod.mk atl btl).1
state_after: no goals
Theorem: Batteries.RBNode.foldl_eq_foldl_toList
File: .lake/packages/batteries/Batteries/Data/RBMap/Lemmas.lean

tactic: induction t generalizing init <;> simp [*]
state_before: α : Type u_1
α✝ : Type u_2
f : α✝ → α → α✝
init : α✝
t : RBNode α
⊢ foldl f init t = List.foldl f init t.toList
state_after: no goals
Theorem: ppow_mul
File: Mathlib/Algebra/Group/PNatPowAssoc.lean

tactic: refine PNat.recOn n ?_ fun k hk ↦ ?_
state_before: M : Type u_1
inst✝² : Mul M
inst✝¹ : Pow M ℕ+
inst✝ : PNatPowAssoc M
x : M
m n : ℕ+
⊢ x ^ (m * n) = (x ^ m) ^ n
state_after: case refine_1
M : Type u_1
inst✝² : Mul M
inst✝¹ : Pow M ℕ+
inst✝ : PNatPowAssoc M
x : M
m n : ℕ+
⊢ x ^ (m * 1) = (x ^ m) ^ 1

case refine_2
M : Type u_1
inst✝² : Mul M
inst✝¹ : Pow M ℕ+
inst✝ : PNatPowAssoc M
x : M
m n k : ℕ+
hk : x ^ (m * k) = (x ^ m) ^ k
⊢ x ^ (m * (k + 1)) = (x ^ m) ^ (k + 1)

tactic: rw [ppow_one, mul_one]
state_before: case refine_1
M : Type u_1
inst✝² : Mul M
inst✝¹ : Pow M ℕ+
inst✝ : PNatPowAssoc M
x : M
m n : ℕ+
⊢ x ^ (m * 1) = (x ^ m) ^ 1
state_after: no goals

tactic: rw [ppow_add, ppow_one, mul_add, ppow_add, mul_one, hk]
state_before: case refine_2
M : Type u_1
inst✝² : Mul M
inst✝¹ : Pow M ℕ+
inst✝ : PNatPowAssoc M
x : M
m n k : ℕ+
hk : x ^ (m * k) = (x ^ m) ^ k
⊢ x ^ (m * (k + 1)) = (x ^ m) ^ (k + 1)
state_after: no goals
Theorem: map_comp_div
File: Mathlib/Algebra/Group/Hom/Defs.lean

tactic: ext
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
G : Type u_7
H : Type u_8
F : Type u_9
inst✝⁶ : MulOneClass M
inst✝⁵ : MulOneClass N
inst✝⁴ : FunLike F M N
inst✝³ : FunLike F G H
inst✝² : Group G
inst✝¹ : DivisionMonoid H
inst✝ : MonoidHomClass F G H
f : F
g h : ι → G
⊢ ⇑f ∘ (g / h) = ⇑f ∘ g / ⇑f ∘ h
state_after: case h
ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
G : Type u_7
H : Type u_8
F : Type u_9
inst✝⁶ : MulOneClass M
inst✝⁵ : MulOneClass N
inst✝⁴ : FunLike F M N
inst✝³ : FunLike F G H
inst✝² : Group G
inst✝¹ : DivisionMonoid H
inst✝ : MonoidHomClass F G H
f : F
g h : ι → G
x✝ : ι
⊢ (⇑f ∘ (g / h)) x✝ = (⇑f ∘ g / ⇑f ∘ h) x✝

tactic: simp
state_before: case h
ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
G : Type u_7
H : Type u_8
F : Type u_9
inst✝⁶ : MulOneClass M
inst✝⁵ : MulOneClass N
inst✝⁴ : FunLike F M N
inst✝³ : FunLike F G H
inst✝² : Group G
inst✝¹ : DivisionMonoid H
inst✝ : MonoidHomClass F G H
f : F
g h : ι → G
x✝ : ι
⊢ (⇑f ∘ (g / h)) x✝ = (⇑f ∘ g / ⇑f ∘ h) x✝
state_after: no goals
Theorem: Complex.abs_exp_sub_one_sub_id_le
File: Mathlib/Data/Complex/Exponential.lean

tactic: simp [sub_eq_add_neg, sum_range_succ_comm, add_assoc, Nat.factorial]
state_before: x : ℂ
hx : abs x ≤ 1
⊢ abs (cexp x - 1 - x) = abs (cexp x - ∑ m ∈ range 2, x ^ m / ↑m.factorial)
state_after: no goals

tactic: decide
state_before: x : ℂ
hx : abs x ≤ 1
⊢ 0 < 2
state_after: no goals

tactic: gcongr
state_before: x : ℂ
hx : abs x ≤ 1
⊢ abs x ^ 2 * (↑(Nat.succ 2) * (↑(Nat.factorial 2) * ↑2)⁻¹) ≤ abs x ^ 2 * 1
state_after: case h
x : ℂ
hx : abs x ≤ 1
⊢ ↑(Nat.succ 2) * (↑(Nat.factorial 2) * ↑2)⁻¹ ≤ 1

tactic: norm_num [Nat.factorial]
state_before: case h
x : ℂ
hx : abs x ≤ 1
⊢ ↑(Nat.succ 2) * (↑(Nat.factorial 2) * ↑2)⁻¹ ≤ 1
state_after: no goals

tactic: rw [mul_one]
state_before: x : ℂ
hx : abs x ≤ 1
⊢ abs x ^ 2 * 1 = abs x ^ 2
state_after: no goals
Theorem: Homeomorph.image_frontier
File: Mathlib/Topology/Homeomorph.lean

tactic: rw [← preimage_symm, preimage_frontier]
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
inst✝⁴ : TopologicalSpace X
inst✝³ : TopologicalSpace Y
inst✝² : TopologicalSpace Z
X' : Type u_4
Y' : Type u_5
inst✝¹ : TopologicalSpace X'
inst✝ : TopologicalSpace Y'
h : X ≃ₜ Y
s : Set X
⊢ ⇑h '' frontier s = frontier (⇑h '' s)
state_after: no goals
Theorem: Algebra.TensorProduct.basis_repr_symm_apply'
File: Mathlib/RingTheory/TensorProduct/Basic.lean

tactic: simpa using basis_repr_symm_apply b a i
state_before: R : Type uR
S : Type uS
A : Type uA
B : Type uB
C : Type uC
D : Type uD
E : Type uE
F : Type uF
M : Type uM
ι : Type uι
inst✝⁴ : CommSemiring R
inst✝³ : Semiring A
inst✝² : Algebra R A
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
b : Basis ι R M
a : A
i : ι
⊢ a • (basis A b) i = a ⊗ₜ[R] b i
state_after: no goals
Theorem: cauchy_iInf_uniformSpace'
File: Mathlib/Topology/UniformSpace/Cauchy.lean

tactic: simp_rw [cauchy_iff_le (uniformSpace := _), iInf_uniformity, le_iInf_iff]
state_before: α : Type u
β : Type v
uniformSpace : UniformSpace α
ι : Sort u_1
u : ι → UniformSpace β
l : Filter β
inst✝ : l.NeBot
⊢ Cauchy l ↔ ∀ (i : ι), Cauchy l
state_after: no goals
Theorem: IsPathConnected.preimage_coe
File: Mathlib/Topology/Connected/PathConnected.lean

tactic: rcases hW with ⟨x, x_in, hx⟩
state_before: X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
x y z : X
ι : Type u_3
F U W : Set X
hW : IsPathConnected W
hWU : W ⊆ U
⊢ IsPathConnected (Subtype.val ⁻¹' W)
state_after: case intro.intro
X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
x✝ y z : X
ι : Type u_3
F U W : Set X
hWU : W ⊆ U
x : X
x_in : x ∈ W
hx : ∀ {y : X}, y ∈ W → JoinedIn W x y
⊢ IsPathConnected (Subtype.val ⁻¹' W)

tactic: use ⟨x, hWU x_in⟩, by simp [x_in]
state_before: case intro.intro
X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
x✝ y z : X
ι : Type u_3
F U W : Set X
hWU : W ⊆ U
x : X
x_in : x ∈ W
hx : ∀ {y : X}, y ∈ W → JoinedIn W x y
⊢ IsPathConnected (Subtype.val ⁻¹' W)
state_after: case right
X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
x✝ y z : X
ι : Type u_3
F U W : Set X
hWU : W ⊆ U
x : X
x_in : x ∈ W
hx : ∀ {y : X}, y ∈ W → JoinedIn W x y
⊢ ∀ {y : { x // x ∈ U }}, y ∈ Subtype.val ⁻¹' W → JoinedIn (Subtype.val ⁻¹' W) ⟨x, ⋯⟩ y

tactic: rintro ⟨y, hyU⟩ hyW
state_before: case right
X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
x✝ y z : X
ι : Type u_3
F U W : Set X
hWU : W ⊆ U
x : X
x_in : x ∈ W
hx : ∀ {y : X}, y ∈ W → JoinedIn W x y
⊢ ∀ {y : { x // x ∈ U }}, y ∈ Subtype.val ⁻¹' W → JoinedIn (Subtype.val ⁻¹' W) ⟨x, ⋯⟩ y
state_after: case right.mk
X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
x✝ y✝ z : X
ι : Type u_3
F U W : Set X
hWU : W ⊆ U
x : X
x_in : x ∈ W
hx : ∀ {y : X}, y ∈ W → JoinedIn W x y
y : X
hyU : y ∈ U
hyW : ⟨y, hyU⟩ ∈ Subtype.val ⁻¹' W
⊢ JoinedIn (Subtype.val ⁻¹' W) ⟨x, ⋯⟩ ⟨y, hyU⟩

tactic: exact ⟨(hx hyW).joined_subtype.somePath.map (continuous_inclusion hWU), by simp⟩
state_before: case right.mk
X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
x✝ y✝ z : X
ι : Type u_3
F U W : Set X
hWU : W ⊆ U
x : X
x_in : x ∈ W
hx : ∀ {y : X}, y ∈ W → JoinedIn W x y
y : X
hyU : y ∈ U
hyW : ⟨y, hyU⟩ ∈ Subtype.val ⁻¹' W
⊢ JoinedIn (Subtype.val ⁻¹' W) ⟨x, ⋯⟩ ⟨y, hyU⟩
state_after: no goals

tactic: simp [x_in]
state_before: X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
x✝ y z : X
ι : Type u_3
F U W : Set X
hWU : W ⊆ U
x : X
x_in : x ∈ W
hx : ∀ {y : X}, y ∈ W → JoinedIn W x y
⊢ ⟨x, ⋯⟩ ∈ Subtype.val ⁻¹' W
state_after: no goals

tactic: simp
state_before: X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
x✝ y✝ z : X
ι : Type u_3
F U W : Set X
hWU : W ⊆ U
x : X
x_in : x ∈ W
hx : ∀ {y : X}, y ∈ W → JoinedIn W x y
y : X
hyU : y ∈ U
hyW : ⟨y, hyU⟩ ∈ Subtype.val ⁻¹' W
⊢ ∀ (t : ↑I), (⋯.somePath.map ⋯) t ∈ Subtype.val ⁻¹' W
state_after: no goals