1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Complex.Gammaℝ_div_Gammaℝ_one_sub
File: Mathlib/Analysis/SpecialFunctions/Gamma/Deligne.lean

tactic: have : Gammaℝ (s + 1) ≠ 0 := by
  simpa only [Ne, Gammaℝ_eq_zero_iff, not_exists, ← eq_sub_iff_add_eq,
    sub_eq_add_neg, ← neg_add]
state_before: s : ℂ
hs : ∀ (n : ℕ), s ≠ -(2 * ↑n + 1)
⊢ s.Gammaℝ / (1 - s).Gammaℝ = s.Gammaℂ * cos (↑π * s / 2)
state_after: s : ℂ
hs : ∀ (n : ℕ), s ≠ -(2 * ↑n + 1)
this : (s + 1).Gammaℝ ≠ 0
⊢ s.Gammaℝ / (1 - s).Gammaℝ = s.Gammaℂ * cos (↑π * s / 2)

tactic: calc Gammaℝ s / Gammaℝ (1 - s)
_ = (Gammaℝ s * Gammaℝ (s + 1)) / (Gammaℝ (1 - s) * Gammaℝ (1 + s)) := by
  rw [add_comm 1 s, mul_comm (Gammaℝ (1 - s)) (Gammaℝ (s + 1)), ← div_div,
    mul_div_cancel_right₀ _ this]
_ = (2 * (2 * π) ^ (-s) * Gamma s) / ((cos (π * s / 2))⁻¹) := by
  rw [Gammaℝ_one_sub_mul_Gammaℝ_one_add, Gammaℝ_mul_Gammaℝ_add_one, Gammaℂ_def]
_ = _ := by rw [Gammaℂ_def, div_eq_mul_inv, inv_inv]
state_before: s : ℂ
hs : ∀ (n : ℕ), s ≠ -(2 * ↑n + 1)
this : (s + 1).Gammaℝ ≠ 0
⊢ s.Gammaℝ / (1 - s).Gammaℝ = s.Gammaℂ * cos (↑π * s / 2)
state_after: no goals

tactic: simpa only [Ne, Gammaℝ_eq_zero_iff, not_exists, ← eq_sub_iff_add_eq,
  sub_eq_add_neg, ← neg_add]
state_before: s : ℂ
hs : ∀ (n : ℕ), s ≠ -(2 * ↑n + 1)
⊢ (s + 1).Gammaℝ ≠ 0
state_after: no goals

tactic: rw [add_comm 1 s, mul_comm (Gammaℝ (1 - s)) (Gammaℝ (s + 1)), ← div_div,
  mul_div_cancel_right₀ _ this]
state_before: s : ℂ
hs : ∀ (n : ℕ), s ≠ -(2 * ↑n + 1)
this : (s + 1).Gammaℝ ≠ 0
⊢ s.Gammaℝ / (1 - s).Gammaℝ = s.Gammaℝ * (s + 1).Gammaℝ / ((1 - s).Gammaℝ * (1 + s).Gammaℝ)
state_after: no goals

tactic: rw [Gammaℝ_one_sub_mul_Gammaℝ_one_add, Gammaℝ_mul_Gammaℝ_add_one, Gammaℂ_def]
state_before: s : ℂ
hs : ∀ (n : ℕ), s ≠ -(2 * ↑n + 1)
this : (s + 1).Gammaℝ ≠ 0
⊢ s.Gammaℝ * (s + 1).Gammaℝ / ((1 - s).Gammaℝ * (1 + s).Gammaℝ) = 2 * (2 * ↑π) ^ (-s) * Gamma s / (cos (↑π * s / 2))⁻¹
state_after: no goals

tactic: rw [Gammaℂ_def, div_eq_mul_inv, inv_inv]
state_before: s : ℂ
hs : ∀ (n : ℕ), s ≠ -(2 * ↑n + 1)
this : (s + 1).Gammaℝ ≠ 0
⊢ 2 * (2 * ↑π) ^ (-s) * Gamma s / (cos (↑π * s / 2))⁻¹ = s.Gammaℂ * cos (↑π * s / 2)
state_after: no goals
Theorem: Associates.mk_quot_out
File: Mathlib/Algebra/Associated.lean

tactic: rw [← Associates.mk_eq_mk_iff_associated, Associates.quot_out]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : Monoid α
a : α
⊢ Quot.out (Associates.mk a) ~ᵤ a
state_after: no goals
Theorem: Submonoid.LocalizationMap.map_mk'
File: Mathlib/GroupTheory/MonoidLocalization.lean

tactic: rw [map, lift_mk', mul_inv_left]
state_before: M : Type u_1
inst✝³ : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝² : CommMonoid N
P : Type u_3
inst✝¹ : CommMonoid P
f : S.LocalizationMap N
g : M →* P
hg : ∀ (y : ↥S), IsUnit (g ↑y)
T : Submonoid P
hy : ∀ (y : ↥S), g ↑y ∈ T
Q : Type u_4
inst✝ : CommMonoid Q
k : T.LocalizationMap Q
x : M
y : ↥S
⊢ (f.map hy k) (f.mk' x y) = k.mk' (g x) ⟨g ↑y, ⋯⟩
state_after: M : Type u_1
inst✝³ : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝² : CommMonoid N
P : Type u_3
inst✝¹ : CommMonoid P
f : S.LocalizationMap N
g : M →* P
hg : ∀ (y : ↥S), IsUnit (g ↑y)
T : Submonoid P
hy : ∀ (y : ↥S), g ↑y ∈ T
Q : Type u_4
inst✝ : CommMonoid Q
k : T.LocalizationMap Q
x : M
y : ↥S
⊢ (k.toMap.comp g) x = (k.toMap.comp g) ↑y * k.mk' (g x) ⟨g ↑y, ⋯⟩

tactic: show k.toMap (g x) = k.toMap (g y) * _
state_before: M : Type u_1
inst✝³ : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝² : CommMonoid N
P : Type u_3
inst✝¹ : CommMonoid P
f : S.LocalizationMap N
g : M →* P
hg : ∀ (y : ↥S), IsUnit (g ↑y)
T : Submonoid P
hy : ∀ (y : ↥S), g ↑y ∈ T
Q : Type u_4
inst✝ : CommMonoid Q
k : T.LocalizationMap Q
x : M
y : ↥S
⊢ (k.toMap.comp g) x = (k.toMap.comp g) ↑y * k.mk' (g x) ⟨g ↑y, ⋯⟩
state_after: M : Type u_1
inst✝³ : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝² : CommMonoid N
P : Type u_3
inst✝¹ : CommMonoid P
f : S.LocalizationMap N
g : M →* P
hg : ∀ (y : ↥S), IsUnit (g ↑y)
T : Submonoid P
hy : ∀ (y : ↥S), g ↑y ∈ T
Q : Type u_4
inst✝ : CommMonoid Q
k : T.LocalizationMap Q
x : M
y : ↥S
⊢ k.toMap (g x) = k.toMap (g ↑y) * k.mk' (g x) ⟨g ↑y, ⋯⟩

tactic: rw [mul_mk'_eq_mk'_of_mul]
state_before: M : Type u_1
inst✝³ : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝² : CommMonoid N
P : Type u_3
inst✝¹ : CommMonoid P
f : S.LocalizationMap N
g : M →* P
hg : ∀ (y : ↥S), IsUnit (g ↑y)
T : Submonoid P
hy : ∀ (y : ↥S), g ↑y ∈ T
Q : Type u_4
inst✝ : CommMonoid Q
k : T.LocalizationMap Q
x : M
y : ↥S
⊢ k.toMap (g x) = k.toMap (g ↑y) * k.mk' (g x) ⟨g ↑y, ⋯⟩
state_after: M : Type u_1
inst✝³ : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝² : CommMonoid N
P : Type u_3
inst✝¹ : CommMonoid P
f : S.LocalizationMap N
g : M →* P
hg : ∀ (y : ↥S), IsUnit (g ↑y)
T : Submonoid P
hy : ∀ (y : ↥S), g ↑y ∈ T
Q : Type u_4
inst✝ : CommMonoid Q
k : T.LocalizationMap Q
x : M
y : ↥S
⊢ k.toMap (g x) = k.mk' (g ↑y * g x) ⟨g ↑y, ⋯⟩

tactic: exact (k.mk'_mul_cancel_left (g x) ⟨g y, hy y⟩).symm
state_before: M : Type u_1
inst✝³ : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝² : CommMonoid N
P : Type u_3
inst✝¹ : CommMonoid P
f : S.LocalizationMap N
g : M →* P
hg : ∀ (y : ↥S), IsUnit (g ↑y)
T : Submonoid P
hy : ∀ (y : ↥S), g ↑y ∈ T
Q : Type u_4
inst✝ : CommMonoid Q
k : T.LocalizationMap Q
x : M
y : ↥S
⊢ k.toMap (g x) = k.mk' (g ↑y * g x) ⟨g ↑y, ⋯⟩
state_after: no goals
Theorem: StrictConvexOn.eq_of_le_map_sum
File: Mathlib/Analysis/Convex/Jensen.lean

tactic: by_contra!
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
β : Type u_4
ι : Type u_5
inst✝⁵ : LinearOrderedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : OrderedAddCommGroup β
inst✝² : Module 𝕜 E
inst✝¹ : Module 𝕜 β
inst✝ : OrderedSMul 𝕜 β
s : Set E
f : E → β
t : Finset ι
w : ι → 𝕜
p : ι → E
v : 𝕜
q : E
hf : StrictConvexOn 𝕜 s f
h₀ : ∀ i ∈ t, 0 < w i
h₁ : ∑ i ∈ t, w i = 1
hmem : ∀ i ∈ t, p i ∈ s
h_eq : ∑ i ∈ t, w i • f (p i) ≤ f (∑ i ∈ t, w i • p i)
⊢ ∀ ⦃j : ι⦄, j ∈ t → ∀ ⦃k : ι⦄, k ∈ t → p j = p k
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
β : Type u_4
ι : Type u_5
inst✝⁵ : LinearOrderedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : OrderedAddCommGroup β
inst✝² : Module 𝕜 E
inst✝¹ : Module 𝕜 β
inst✝ : OrderedSMul 𝕜 β
s : Set E
f : E → β
t : Finset ι
w : ι → 𝕜
p : ι → E
v : 𝕜
q : E
hf : StrictConvexOn 𝕜 s f
h₀ : ∀ i ∈ t, 0 < w i
h₁ : ∑ i ∈ t, w i = 1
hmem : ∀ i ∈ t, p i ∈ s
h_eq : ∑ i ∈ t, w i • f (p i) ≤ f (∑ i ∈ t, w i • p i)
this : ∃ j ∈ t, ∃ k ∈ t, p j ≠ p k
⊢ False

tactic: exact h_eq.not_lt <| hf.map_sum_lt h₀ h₁ hmem this
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
β : Type u_4
ι : Type u_5
inst✝⁵ : LinearOrderedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : OrderedAddCommGroup β
inst✝² : Module 𝕜 E
inst✝¹ : Module 𝕜 β
inst✝ : OrderedSMul 𝕜 β
s : Set E
f : E → β
t : Finset ι
w : ι → 𝕜
p : ι → E
v : 𝕜
q : E
hf : StrictConvexOn 𝕜 s f
h₀ : ∀ i ∈ t, 0 < w i
h₁ : ∑ i ∈ t, w i = 1
hmem : ∀ i ∈ t, p i ∈ s
h_eq : ∑ i ∈ t, w i • f (p i) ≤ f (∑ i ∈ t, w i • p i)
this : ∃ j ∈ t, ∃ k ∈ t, p j ≠ p k
⊢ False
state_after: no goals
Theorem: Batteries.OrientedCmp.cmp_eq_eq_symm
File: .lake/packages/batteries/Batteries/Classes/Order.lean

tactic: rw [← Ordering.swap_inj, symm]
state_before: α✝ : Sort u_1
cmp : α✝ → α✝ → Ordering
x y : α✝
inst✝ : OrientedCmp cmp
⊢ cmp x y = Ordering.eq ↔ cmp y x = Ordering.eq
state_after: α✝ : Sort u_1
cmp : α✝ → α✝ → Ordering
x y : α✝
inst✝ : OrientedCmp cmp
⊢ cmp y x = Ordering.eq.swap ↔ cmp y x = Ordering.eq

tactic: exact .rfl
state_before: α✝ : Sort u_1
cmp : α✝ → α✝ → Ordering
x y : α✝
inst✝ : OrientedCmp cmp
⊢ cmp y x = Ordering.eq.swap ↔ cmp y x = Ordering.eq
state_after: no goals
Theorem: MvPolynomial.degreeOf_rename_of_injective
File: Mathlib/Algebra/MvPolynomial/Degrees.lean

tactic: classical
simp only [degreeOf, degrees_rename_of_injective h, Multiset.count_map_eq_count' f p.degrees h]
state_before: R : Type u
S : Type v
σ : Type u_1
τ : Type u_2
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝ : CommSemiring R
p✝ q p : MvPolynomial σ R
f : σ → τ
h : Injective f
i : σ
⊢ degreeOf (f i) ((rename f) p) = degreeOf i p
state_after: no goals

tactic: simp only [degreeOf, degrees_rename_of_injective h, Multiset.count_map_eq_count' f p.degrees h]
state_before: R : Type u
S : Type v
σ : Type u_1
τ : Type u_2
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝ : CommSemiring R
p✝ q p : MvPolynomial σ R
f : σ → τ
h : Injective f
i : σ
⊢ degreeOf (f i) ((rename f) p) = degreeOf i p
state_after: no goals
Theorem: CategoryTheory.Abelian.exact_iff_exact_image_ι
File: Mathlib/CategoryTheory/Abelian/Exact.lean

tactic: conv_lhs => rw [← Abelian.image.fac f]
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : Abelian C
X Y Z : C
f : X ⟶ Y
g : Y ⟶ Z
⊢ Exact f g ↔ Exact (image.ι f) g
state_after: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : Abelian C
X Y Z : C
f : X ⟶ Y
g : Y ⟶ Z
⊢ Exact (Abelian.factorThruImage f ≫ image.ι f) g ↔ Exact (image.ι f) g

tactic: rw [exact_epi_comp_iff]
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : Abelian C
X Y Z : C
f : X ⟶ Y
g : Y ⟶ Z
⊢ Exact (Abelian.factorThruImage f ≫ image.ι f) g ↔ Exact (image.ι f) g
state_after: no goals
Theorem: QuaternionAlgebra.star_add_self
File: Mathlib/Algebra/Quaternion.lean

tactic: rw [add_comm, self_add_star]
state_before: S : Type u_1
T : Type u_2
R : Type u_3
inst✝ : CommRing R
c₁ c₂ r x y z : R
a b c : ℍ[R,c₁,c₂]
⊢ star a + a = 2 * ↑a.re
state_after: no goals
Theorem: CategoryTheory.GrothendieckTopology.bot_covers
File: Mathlib/CategoryTheory/Sites/Grothendieck.lean

tactic: rw [covers_iff, bot_covering, ← Sieve.pullback_eq_top_iff_mem]
state_before: C : Type u
inst✝ : Category.{v, u} C
X Y : C
S✝ R : Sieve X
J : GrothendieckTopology C
S : Sieve X
f : Y ⟶ X
⊢ ⊥.Covers S f ↔ S.arrows f
state_after: no goals
Theorem: MeasureTheory.lowerCrossingTime_mono
File: Mathlib/Probability/Martingale/Upcrossing.lean

tactic: suffices Monotone fun n => lowerCrossingTime a b f N n ω by exact this hnm
state_before: Ω : Type u_1
ι : Type u_2
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝ : ConditionallyCompleteLinearOrderBot ι
a b : ℝ
f : ι → Ω → ℝ
N : ι
n m : ℕ
ω : Ω
hnm : n ≤ m
⊢ lowerCrossingTime a b f N n ω ≤ lowerCrossingTime a b f N m ω
state_after: Ω : Type u_1
ι : Type u_2
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝ : ConditionallyCompleteLinearOrderBot ι
a b : ℝ
f : ι → Ω → ℝ
N : ι
n m : ℕ
ω : Ω
hnm : n ≤ m
⊢ Monotone fun n => lowerCrossingTime a b f N n ω

tactic: exact monotone_nat_of_le_succ fun n =>
  le_trans lowerCrossingTime_le_upperCrossingTime_succ upperCrossingTime_le_lowerCrossingTime
state_before: Ω : Type u_1
ι : Type u_2
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝ : ConditionallyCompleteLinearOrderBot ι
a b : ℝ
f : ι → Ω → ℝ
N : ι
n m : ℕ
ω : Ω
hnm : n ≤ m
⊢ Monotone fun n => lowerCrossingTime a b f N n ω
state_after: no goals

tactic: exact this hnm
state_before: Ω : Type u_1
ι : Type u_2
m0 : MeasurableSpace Ω
μ : Measure Ω
inst✝ : ConditionallyCompleteLinearOrderBot ι
a b : ℝ
f : ι → Ω → ℝ
N : ι
n m : ℕ
ω : Ω
hnm : n ≤ m
this : Monotone fun n => lowerCrossingTime a b f N n ω
⊢ lowerCrossingTime a b f N n ω ≤ lowerCrossingTime a b f N m ω
state_after: no goals
Theorem: BoxIntegral.hasIntegral_iff
File: Mathlib/Analysis/BoxIntegral/Basic.lean

tactic: simp [@forall_swap ℝ≥0 (TaggedPrepartition I)]
state_before: ι : Type u
E : Type v
F : Type w
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
I J : Box ι
π : TaggedPrepartition I
inst✝ : Fintype ι
l : IntegrationParams
f g : (ι → ℝ) → E
vol : ι →ᵇᵃ[⊤] E →L[ℝ] F
y y' : F
⊢ (∀ (ib : ℝ),
      0 < ib →
        ∃ ia,
          (∀ (c : ℝ≥0), l.RCond (ia c)) ∧
            ∀ x ∈ {π | ∃ c, l.MemBaseSet I c (ia c) π ∧ π.IsPartition}, integralSum f vol x ∈ closedBall y ib) ↔
    ∀ ε > 0,
      ∃ r,
        (∀ (c : ℝ≥0), l.RCond (r c)) ∧
          ∀ (c : ℝ≥0) (π : TaggedPrepartition I),
            l.MemBaseSet I c (r c) π → π.IsPartition → dist (integralSum f vol π) y ≤ ε
state_after: no goals
Theorem: tendsto_inv_nhdsWithin_Ioi_inv
File: Mathlib/Topology/Algebra/Group/Basic.lean

tactic: simpa only [inv_inv] using @tendsto_inv_nhdsWithin_Ioi _ _ _ _ a⁻¹
state_before: G : Type w
H : Type x
α : Type u
β : Type v
inst✝⁶ : TopologicalSpace G
inst✝⁵ : Group G
inst✝⁴ : TopologicalGroup G
inst✝³ : TopologicalSpace α
f : α → G
s : Set α
x : α
inst✝² : TopologicalSpace H
inst✝¹ : OrderedCommGroup H
inst✝ : ContinuousInv H
a : H
⊢ Tendsto Inv.inv (𝓝[>] a⁻¹) (𝓝[<] a)
state_after: no goals
Theorem: div_lt_one
File: Mathlib/Algebra/Order/Field/Basic.lean

tactic: rw [div_lt_iff hb, one_mul]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedSemifield α
a b c d e : α
m n : ℤ
hb : 0 < b
⊢ a / b < 1 ↔ a < b
state_after: no goals
Theorem: IsCoprime.of_add_mul_right_right
File: Mathlib/RingTheory/Coprime/Basic.lean

tactic: rw [mul_comm] at h
state_before: R : Type u
inst✝ : CommSemiring R
x y z : R
h : IsCoprime x (y + z * x)
⊢ IsCoprime x y
state_after: R : Type u
inst✝ : CommSemiring R
x y z : R
h : IsCoprime x (y + x * z)
⊢ IsCoprime x y

tactic: exact h.of_add_mul_left_right
state_before: R : Type u
inst✝ : CommSemiring R
x y z : R
h : IsCoprime x (y + x * z)
⊢ IsCoprime x y
state_after: no goals
Theorem: homology'.condition_ι
File: Mathlib/CategoryTheory/Abelian/Homology.lean

tactic: dsimp [ι]
state_before: A : Type u
inst✝¹ : Category.{v, u} A
inst✝ : Abelian A
X Y Z : A
f : X ⟶ Y
g : Y ⟶ Z
w : f ≫ g = 0
⊢ ι f g w ≫ cokernel.desc f g w = 0
state_after: A : Type u
inst✝¹ : Category.{v, u} A
inst✝ : Abelian A
X Y Z : A
f : X ⟶ Y
g : Y ⟶ Z
w : f ≫ g = 0
⊢ ((homology'IsoKernelDesc f g w).hom ≫ kernel.ι (cokernel.desc f g w)) ≫ cokernel.desc f g w = 0

tactic: simp
state_before: A : Type u
inst✝¹ : Category.{v, u} A
inst✝ : Abelian A
X Y Z : A
f : X ⟶ Y
g : Y ⟶ Z
w : f ≫ g = 0
⊢ ((homology'IsoKernelDesc f g w).hom ≫ kernel.ι (cokernel.desc f g w)) ≫ cokernel.desc f g w = 0
state_after: no goals
Theorem: CategoryTheory.FinitaryExtensive.isVanKampen_finiteCoproducts
File: Mathlib/CategoryTheory/Extensive.lean

tactic: obtain ⟨n, ⟨e⟩⟩ := Finite.exists_equiv_fin ι
state_before: J : Type v'
inst✝⁴ : Category.{u', v'} J
C : Type u
inst✝³ : Category.{v, u} C
D : Type u''
inst✝² : Category.{v'', u''} D
X Y : C
inst✝¹ : FinitaryExtensive C
ι : Type u_1
inst✝ : Finite ι
F : Discrete ι ⥤ C
c : Cocone F
hc : IsColimit c
⊢ IsVanKampenColimit c
state_after: case intro.intro
J : Type v'
inst✝⁴ : Category.{u', v'} J
C : Type u
inst✝³ : Category.{v, u} C
D : Type u''
inst✝² : Category.{v'', u''} D
X Y : C
inst✝¹ : FinitaryExtensive C
ι : Type u_1
inst✝ : Finite ι
F : Discrete ι ⥤ C
c : Cocone F
hc : IsColimit c
n : ℕ
e : ι ≃ Fin n
⊢ IsVanKampenColimit c

tactic: apply (IsVanKampenColimit.whiskerEquivalence_iff (Discrete.equivalence e).symm).mp
state_before: case intro.intro
J : Type v'
inst✝⁴ : Category.{u', v'} J
C : Type u
inst✝³ : Category.{v, u} C
D : Type u''
inst✝² : Category.{v'', u''} D
X Y : C
inst✝¹ : FinitaryExtensive C
ι : Type u_1
inst✝ : Finite ι
F : Discrete ι ⥤ C
c : Cocone F
hc : IsColimit c
n : ℕ
e : ι ≃ Fin n
⊢ IsVanKampenColimit c
state_after: case intro.intro
J : Type v'
inst✝⁴ : Category.{u', v'} J
C : Type u
inst✝³ : Category.{v, u} C
D : Type u''
inst✝² : Category.{v'', u''} D
X Y : C
inst✝¹ : FinitaryExtensive C
ι : Type u_1
inst✝ : Finite ι
F : Discrete ι ⥤ C
c : Cocone F
hc : IsColimit c
n : ℕ
e : ι ≃ Fin n
⊢ IsVanKampenColimit (Cocone.whisker (Discrete.equivalence e).symm.functor c)

tactic: apply FinitaryExtensive.isVanKampen_finiteCoproducts_Fin
state_before: case intro.intro
J : Type v'
inst✝⁴ : Category.{u', v'} J
C : Type u
inst✝³ : Category.{v, u} C
D : Type u''
inst✝² : Category.{v'', u''} D
X Y : C
inst✝¹ : FinitaryExtensive C
ι : Type u_1
inst✝ : Finite ι
F : Discrete ι ⥤ C
c : Cocone F
hc : IsColimit c
n : ℕ
e : ι ≃ Fin n
⊢ IsVanKampenColimit (Cocone.whisker (Discrete.equivalence e).symm.functor c)
state_after: case intro.intro.hc
J : Type v'
inst✝⁴ : Category.{u', v'} J
C : Type u
inst✝³ : Category.{v, u} C
D : Type u''
inst✝² : Category.{v'', u''} D
X Y : C
inst✝¹ : FinitaryExtensive C
ι : Type u_1
inst✝ : Finite ι
F : Discrete ι ⥤ C
c : Cocone F
hc : IsColimit c
n : ℕ
e : ι ≃ Fin n
⊢ IsColimit (Cocone.whisker (Discrete.equivalence e).symm.functor c)

tactic: exact (IsColimit.whiskerEquivalenceEquiv (Discrete.equivalence e).symm) hc
state_before: case intro.intro.hc
J : Type v'
inst✝⁴ : Category.{u', v'} J
C : Type u
inst✝³ : Category.{v, u} C
D : Type u''
inst✝² : Category.{v'', u''} D
X Y : C
inst✝¹ : FinitaryExtensive C
ι : Type u_1
inst✝ : Finite ι
F : Discrete ι ⥤ C
c : Cocone F
hc : IsColimit c
n : ℕ
e : ι ≃ Fin n
⊢ IsColimit (Cocone.whisker (Discrete.equivalence e).symm.functor c)
state_after: no goals
Theorem: ProbabilityTheory.cond_eq_zero
File: Mathlib/Probability/ConditionalProbability.lean

tactic: simp [cond, hμs]
state_before: Ω : Type u_1
Ω' : Type u_2
α : Type u_3
m : MeasurableSpace Ω
m' : MeasurableSpace Ω'
μ : Measure Ω
s t : Set Ω
hμs : μ s ≠ ⊤
⊢ μ[|s] = 0 ↔ μ s = 0
state_after: no goals
Theorem: FormalMultilinearSeries.rightInv_coeff_zero
File: Mathlib/Analysis/Analytic/Inverse.lean

tactic: rw [rightInv]
state_before: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace 𝕜 E
F : Type u_3
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : FormalMultilinearSeries 𝕜 E F
i : E ≃L[𝕜] F
⊢ p.rightInv i 0 = 0
state_after: no goals
Theorem: Stream'.zip_inits_tails
File: Mathlib/Data/Stream/Init.lean

tactic: apply Stream'.ext
state_before: α : Type u
β : Type v
δ : Type w
s : Stream' α
⊢ zip appendStream' s.inits s.tails = const s
state_after: case a
α : Type u
β : Type v
δ : Type w
s : Stream' α
⊢ ∀ (n : ℕ), (zip appendStream' s.inits s.tails).get n = (const s).get n

tactic: intro n
state_before: case a
α : Type u
β : Type v
δ : Type w
s : Stream' α
⊢ ∀ (n : ℕ), (zip appendStream' s.inits s.tails).get n = (const s).get n
state_after: case a
α : Type u
β : Type v
δ : Type w
s : Stream' α
n : ℕ
⊢ (zip appendStream' s.inits s.tails).get n = (const s).get n

tactic: rw [get_zip, get_inits, get_tails, get_const, take_succ, cons_append_stream, append_take_drop,
  Stream'.eta]
state_before: case a
α : Type u
β : Type v
δ : Type w
s : Stream' α
n : ℕ
⊢ (zip appendStream' s.inits s.tails).get n = (const s).get n
state_after: no goals
Theorem: Nat.card_submonoidPowers
File: Mathlib/GroupTheory/OrderOfElement.lean

tactic: by_cases ha : IsOfFinOrder a
state_before: G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝ : LeftCancelMonoid G
x y a : G
m n : ℕ
⊢ Nat.card ↥(powers a) = orderOf a
state_after: case pos
G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝ : LeftCancelMonoid G
x y a : G
m n : ℕ
ha : IsOfFinOrder a
⊢ Nat.card ↥(powers a) = orderOf a

case neg
G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝ : LeftCancelMonoid G
x y a : G
m n : ℕ
ha : ¬IsOfFinOrder a
⊢ Nat.card ↥(powers a) = orderOf a

tactic: exact (Nat.card_congr (finEquivPowers _ ha).symm).trans <| by simp
state_before: case pos
G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝ : LeftCancelMonoid G
x y a : G
m n : ℕ
ha : IsOfFinOrder a
⊢ Nat.card ↥(powers a) = orderOf a
state_after: no goals

tactic: simp
state_before: G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝ : LeftCancelMonoid G
x y a : G
m n : ℕ
ha : IsOfFinOrder a
⊢ Nat.card (Fin (orderOf a)) = orderOf a
state_after: no goals

tactic: have := (infinite_powers.2 ha).to_subtype
state_before: case neg
G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝ : LeftCancelMonoid G
x y a : G
m n : ℕ
ha : ¬IsOfFinOrder a
⊢ Nat.card ↥(powers a) = orderOf a
state_after: case neg
G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝ : LeftCancelMonoid G
x y a : G
m n : ℕ
ha : ¬IsOfFinOrder a
this : Infinite ↑↑(powers a)
⊢ Nat.card ↥(powers a) = orderOf a

tactic: rw [orderOf_eq_zero ha, Nat.card_eq_zero_of_infinite]
state_before: case neg
G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝ : LeftCancelMonoid G
x y a : G
m n : ℕ
ha : ¬IsOfFinOrder a
this : Infinite ↑↑(powers a)
⊢ Nat.card ↥(powers a) = orderOf a
state_after: no goals
Theorem: OrderIso.isLUB_preimage'
File: Mathlib/Order/Bounds/OrderIso.lean

tactic: rw [isLUB_preimage, f.apply_symm_apply]
state_before: α : Type u_1
β : Type u_2
inst✝¹ : Preorder α
inst✝ : Preorder β
f : α ≃o β
s : Set β
x : β
⊢ IsLUB (⇑f ⁻¹' s) (f.symm x) ↔ IsLUB s x
state_after: no goals
Theorem: BoundedContinuousFunction.coe_nsmulRec
File: Mathlib/Topology/ContinuousFunction/Bounded.lean

tactic: rw [nsmulRec, zero_smul, coe_zero]
state_before: F : Type u_1
α : Type u
β : Type v
γ : Type w
inst✝⁴ : TopologicalSpace α
inst✝³ : PseudoMetricSpace β
inst✝² : AddMonoid β
inst✝¹ : BoundedAdd β
inst✝ : ContinuousAdd β
f g : α →ᵇ β
x : α
C : ℝ
⊢ ⇑(nsmulRec 0 f) = 0 • ⇑f
state_after: no goals

tactic: rw [nsmulRec, succ_nsmul, coe_add, coe_nsmulRec n]
state_before: F : Type u_1
α : Type u
β : Type v
γ : Type w
inst✝⁴ : TopologicalSpace α
inst✝³ : PseudoMetricSpace β
inst✝² : AddMonoid β
inst✝¹ : BoundedAdd β
inst✝ : ContinuousAdd β
f g : α →ᵇ β
x : α
C : ℝ
n : ℕ
⊢ ⇑(nsmulRec (n + 1) f) = (n + 1) • ⇑f
state_after: no goals
Theorem: Submonoid.LocalizationMap.mk'_mul
File: Mathlib/GroupTheory/MonoidLocalization.lean

tactic: rw [← mul_assoc, ← mul_assoc, mul_inv_right f.map_units, mul_assoc, mul_assoc,
    mul_comm _ (f.toMap x₂), ← mul_assoc, ← mul_assoc, mul_inv_right f.map_units,
    Submonoid.coe_mul, f.toMap.map_mul, f.toMap.map_mul]
state_before: M : Type u_1
inst✝² : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝¹ : CommMonoid N
P : Type u_3
inst✝ : CommMonoid P
f : S.LocalizationMap N
x₁ x₂ : M
y₁ y₂ : ↥S
⊢ f.toMap (x₁ * x₂) =
    f.toMap ↑(y₁ * y₂) *
      (f.toMap x₁ * ↑((IsUnit.liftRight (f.toMap.restrict S) ⋯) y₁)⁻¹ *
        (f.toMap x₂ * ↑((IsUnit.liftRight (f.toMap.restrict S) ⋯) y₂)⁻¹))
state_after: M : Type u_1
inst✝² : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝¹ : CommMonoid N
P : Type u_3
inst✝ : CommMonoid P
f : S.LocalizationMap N
x₁ x₂ : M
y₁ y₂ : ↥S
⊢ f.toMap x₁ * f.toMap x₂ * f.toMap ↑y₂ * f.toMap ↑y₁ = f.toMap ↑y₁ * f.toMap ↑y₂ * f.toMap x₁ * f.toMap x₂

tactic: ac_rfl
state_before: M : Type u_1
inst✝² : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝¹ : CommMonoid N
P : Type u_3
inst✝ : CommMonoid P
f : S.LocalizationMap N
x₁ x₂ : M
y₁ y₂ : ↥S
⊢ f.toMap x₁ * f.toMap x₂ * f.toMap ↑y₂ * f.toMap ↑y₁ = f.toMap ↑y₁ * f.toMap ↑y₂ * f.toMap x₁ * f.toMap x₂
state_after: no goals
Theorem: HahnSeries.SummableFamily.one_sub_self_mul_hsum_powers
File: Mathlib/RingTheory/HahnSeries/Summable.lean

tactic: rw [← hsum_smul, sub_smul 1 x (powers x hx), one_smul, hsum_sub, ←
  hsum_embDomain (x • powers x hx) ⟨Nat.succ, Nat.succ_injective⟩, embDomain_succ_smul_powers]
state_before: Γ : Type u_1
R : Type u_2
inst✝² : LinearOrderedCancelAddCommMonoid Γ
inst✝¹ : CommRing R
inst✝ : IsDomain R
x : HahnSeries Γ R
hx : 0 < (addVal Γ R) x
⊢ (1 - x) * (powers x hx).hsum = 1
state_after: Γ : Type u_1
R : Type u_2
inst✝² : LinearOrderedCancelAddCommMonoid Γ
inst✝¹ : CommRing R
inst✝ : IsDomain R
x : HahnSeries Γ R
hx : 0 < (addVal Γ R) x
⊢ (powers x hx).hsum - (powers x hx - ofFinsupp (Finsupp.single 0 1)).hsum = 1

tactic: simp
state_before: Γ : Type u_1
R : Type u_2
inst✝² : LinearOrderedCancelAddCommMonoid Γ
inst✝¹ : CommRing R
inst✝ : IsDomain R
x : HahnSeries Γ R
hx : 0 < (addVal Γ R) x
⊢ (powers x hx).hsum - (powers x hx - ofFinsupp (Finsupp.single 0 1)).hsum = 1
state_after: no goals
Theorem: Submonoid.iSup_eq_closure
File: Mathlib/Algebra/Group/Submonoid/Basic.lean

tactic: simp_rw [Submonoid.closure_iUnion, Submonoid.closure_eq]
state_before: M : Type u_1
N : Type u_2
A : Type u_3
inst✝¹ : MulOneClass M
s : Set M
inst✝ : AddZeroClass A
t : Set A
S : Submonoid M
ι : Sort u_4
p : ι → Submonoid M
⊢ ⨆ i, p i = closure (⋃ i, ↑(p i))
state_after: no goals