tasksource/leandojo huggingface dataset:
Theorem: Ideal.IsHomogeneous.sInf
File: Mathlib/RingTheory/GradedAlgebra/HomogeneousIdeal.lean

tactic: rw [sInf_eq_iInf]
state_before: ι : Type u_2
σ : Type u_3
R : Type ?u.130786
A : Type u_1
inst✝⁵ : Semiring A
inst✝⁴ : DecidableEq ι
inst✝³ : AddMonoid ι
inst✝² : SetLike σ A
inst✝¹ : AddSubmonoidClass σ A
𝒜 : ι → σ
inst✝ : GradedRing 𝒜
ℐ : Set (Ideal A)
h : ∀ (I : Ideal A), I ∈ ℐ → IsHomogeneous 𝒜 I
⊢ IsHomogeneous 𝒜 (InfSet.sInf ℐ)

tactic: exact iInf₂ h
state_before: ι : Type u_2
σ : Type u_3
R : Type ?u.130786
A : Type u_1
inst✝⁵ : Semiring A
inst✝⁴ : DecidableEq ι
inst✝³ : AddMonoid ι
inst✝² : SetLike σ A
inst✝¹ : AddSubmonoidClass σ A
𝒜 : ι → σ
inst✝ : GradedRing 𝒜
ℐ : Set (Ideal A)
h : ∀ (I : Ideal A), I ∈ ℐ → IsHomogeneous 𝒜 I
⊢ IsHomogeneous 𝒜 (⨅ (a : Ideal A) (_ : a ∈ ℐ), a)
Theorem: LinearMap.trace_eq_contract_apply
File: Mathlib/LinearAlgebra/Trace.lean

tactic: rw [← comp_apply, trace_eq_contract]
state_before: R : Type u_1
inst✝⁹ : CommRing R
M : Type u_2
inst✝⁸ : AddCommGroup M
inst✝⁷ : Module R M
N : Type ?u.374987
inst✝⁶ : AddCommGroup N
inst✝⁵ : Module R N
ι : Type ?u.375529
inst✝⁴ : Module.Free R M
inst✝³ : Module.Finite R M
inst✝² : Module.Free R N
inst✝¹ : Module.Finite R N
inst✝ : Nontrivial R
x : Module.Dual R M ⊗[R] M
⊢ ↑(trace R M) (↑(dualTensorHom R M M) x) = ↑(contractLeft R M) x
Theorem: Associates.factors_eq_none_iff_zero
File: Mathlib/RingTheory/UniqueFactorizationDomain.lean

tactic: nontriviality α
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
dec_irr : (p : Associates α) → Decidable (Irreducible p)
inst✝ : UniqueFactorizationMonoid α
dec : DecidableEq α
dec' : DecidableEq (Associates α)
a : Associates α
⊢ factors a = none ↔ a = 0

tactic: exact
  ⟨fun h => by rwa [← factors_prod a, FactorSet.prod_eq_zero_iff], fun h => h.symm ▸ factors_0⟩
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
dec_irr : (p : Associates α) → Decidable (Irreducible p)
inst✝ : UniqueFactorizationMonoid α
dec : DecidableEq α
dec' : DecidableEq (Associates α)
a : Associates α
✝ : Nontrivial α
⊢ factors a = none ↔ a = 0

tactic: rwa [← factors_prod a, FactorSet.prod_eq_zero_iff]
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
dec_irr : (p : Associates α) → Decidable (Irreducible p)
inst✝ : UniqueFactorizationMonoid α
dec : DecidableEq α
dec' : DecidableEq (Associates α)
a : Associates α
✝ : Nontrivial α
h : factors a = none
⊢ a = 0
Theorem: ENNReal.lt_top_of_tsum_ne_top
File: Mathlib/Topology/Instances/ENNReal.lean

tactic: contrapose! tsum_ne_top with h
state_before: α : Type u_1
β : Type ?u.245507
γ : Type ?u.245510
a✝ b c d : ℝ≥0∞
r p q : ℝ≥0
x y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
f g a : α → ℝ≥0∞
tsum_ne_top : (∑' (i : α), a i) ≠ ⊤
j : α
⊢ a j < ⊤

tactic: exact ENNReal.tsum_eq_top_of_eq_top ⟨j, top_unique h⟩
state_before: α : Type u_1
β : Type ?u.245507
γ : Type ?u.245510
a✝ b c d : ℝ≥0∞
r p q : ℝ≥0
x y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
f g a : α → ℝ≥0∞
j : α
h : ⊤ ≤ a j
⊢ (∑' (i : α), a i) = ⊤
Theorem: Metric.hausdorffDist_triangle
File: Mathlib/Topology/MetricSpace/HausdorffDistance.lean

tactic: refine toReal_le_add' hausdorffEdist_triangle (flip absurd fin) (not_imp_not.1 fun h ↦ ?_)
state_before: ι : Sort ?u.83408
α : Type u
β : Type v
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
s t u : Set α
x y : α
Φ : α → β
fin : hausdorffEdist s t ≠ ⊤
⊢ hausdorffDist s u ≤ hausdorffDist s t + hausdorffDist t u

tactic: rw [hausdorffEdist_comm] at fin
state_before: ι : Sort ?u.83408
α : Type u
β : Type v
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
s t u : Set α
x y : α
Φ : α → β
fin : hausdorffEdist s t ≠ ⊤
h : ¬hausdorffEdist s u = ⊤
⊢ ¬hausdorffEdist t u = ⊤

tactic: exact ne_top_of_le_ne_top (add_ne_top.2 ⟨fin, h⟩) hausdorffEdist_triangle
state_before: ι : Sort ?u.83408
α : Type u
β : Type v
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
s t u : Set α
x y : α
Φ : α → β
fin : hausdorffEdist t s ≠ ⊤
h : ¬hausdorffEdist s u = ⊤
⊢ ¬hausdorffEdist t u = ⊤
Theorem: AlgebraicGeometry.PresheafedSpace.colimitPresheafObjIsoComponentwiseLimit_hom_π
File: Mathlib/AlgebraicGeometry/PresheafedSpace/HasColimits.lean

tactic: rw [← Iso.eq_inv_comp, colimitPresheafObjIsoComponentwiseLimit_inv_ι_app]
state_before: J : Type u'
inst✝⁴ : Category J
C : Type u
inst✝³ : Category C
inst✝² : HasColimitsOfShape J TopCat
inst✝¹ : ∀ (X : TopCat), HasLimitsOfShape Jᵒᵖ (Presheaf C X)
inst✝ : HasLimitsOfShape Jᵒᵖ C
F : J ⥤ PresheafedSpace C
U : Opens ↑↑(Limits.colimit F)
j : J
⊢ (colimitPresheafObjIsoComponentwiseLimit F U).hom ≫ limit.π (componentwiseDiagram F U) j.op =
    (colimit.ι F j).c.app U.op
Theorem: Polynomial.coeff_expand_mul'
File: Mathlib/Data/Polynomial/Expand.lean

tactic: rw [mul_comm, coeff_expand_mul hp]
state_before: R : Type u
inst✝¹ : CommSemiring R
S : Type v
inst✝ : CommSemiring S
p✝ q p : ℕ
hp : 0 < p
f : R[X]
n : ℕ
⊢ coeff (↑(expand R p) f) (p * n) = coeff f n
Theorem: List.find?_some
File: Std/Data/List/Lemmas.lean

tactic: by_cases h : p b <;> simp [find?, h] at H
state_before: α✝ : Type u_1
p : α✝ → Bool
a b : α✝
l : List α✝
H : find? p (b :: l) = some a
⊢ p a = true

tactic: exact H ▸ h
state_before: case pos
α✝ : Type u_1
p : α✝ → Bool
a b : α✝
l : List α✝
h : p b = true
H : b = a
⊢ p a = true

tactic: exact find?_some H
state_before: case neg
α✝ : Type u_1
p : α✝ → Bool
a b : α✝
l : List α✝
h : ¬p b = true
H : find? p l = some a
⊢ p a = true
Theorem: CompositionSeries.append_succ_natAdd_aux
File: Mathlib/Order/JordanHolder.lean

tactic: cases' i with i hi
state_before: X : Type u
inst✝¹ : Lattice X
inst✝ : JordanHolderLattice X
α : Type u_1
m n : ℕ
a : Fin (Nat.succ m) → α
b : Fin (Nat.succ n) → α
i : Fin n
⊢ Matrix.vecAppend (_ : Nat.succ (m + n) = m + Nat.succ n) (a ∘ ↑Fin.castSucc) b (Fin.succ (↑(Fin.natAdd m) i)) =
    b (Fin.succ i)

tactic: simp only [Matrix.vecAppend_eq_ite, add_assoc, Nat.not_lt_zero, Fin.natAdd_mk,
  add_lt_iff_neg_left, add_tsub_cancel_left, Fin.succ_mk, dif_neg, not_false_iff, Fin.val_mk]
state_before: case mk
X : Type u
inst✝¹ : Lattice X
inst✝ : JordanHolderLattice X
α : Type u_1
m n : ℕ
a : Fin (Nat.succ m) → α
b : Fin (Nat.succ n) → α
i : ℕ
hi : i < n
⊢ Matrix.vecAppend (_ : Nat.succ (m + n) = m + Nat.succ n) (a ∘ ↑Fin.castSucc) b
      (Fin.succ (↑(Fin.natAdd m) { val := i, isLt := hi })) =
    b (Fin.succ { val := i, isLt := hi })
Theorem: padicNorm.nonneg
File: Mathlib/NumberTheory/Padics/PadicNorm.lean

tactic: simp [hq, padicNorm]
state_before: p : ℕ
q : ℚ
hq : q = 0
⊢ 0 ≤ padicNorm p q

tactic: unfold padicNorm
state_before: p : ℕ
q : ℚ
hq : ¬q = 0
⊢ 0 ≤ padicNorm p q

tactic: split_ifs
state_before: p : ℕ
q : ℚ
hq : ¬q = 0
⊢ 0 ≤ if q = 0 then 0 else ↑p ^ (-padicValRat p q)

tactic: apply zpow_nonneg
state_before: p : ℕ
q : ℚ
hq : ¬q = 0
⊢ 0 ≤ ↑p ^ (-padicValRat p q)

tactic: exact_mod_cast Nat.zero_le _
state_before: case ha
p : ℕ
q : ℚ
hq : ¬q = 0
⊢ 0 ≤ ↑p
Theorem: Finset.gcd_eq_zero_iff
File: Mathlib/Algebra/GCDMonoid/Finset.lean

tactic: rw [gcd_def, Multiset.gcd_eq_zero_iff]
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.21349
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : NormalizedGCDMonoid α
s s₁ s₂ : Finset β
f : β → α
⊢ gcd s f = 0 ↔ ∀ (x : β), x ∈ s → f x = 0

tactic: constructor <;> intro h
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.21349
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : NormalizedGCDMonoid α
s s₁ s₂ : Finset β
f : β → α
⊢ (∀ (x : α), x ∈ Multiset.map f s.val → x = 0) ↔ ∀ (x : β), x ∈ s → f x = 0

tactic: intro b bs
state_before: case mp
α : Type u_1
β : Type u_2
γ : Type ?u.21349
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : NormalizedGCDMonoid α
s s₁ s₂ : Finset β
f : β → α
h : ∀ (x : α), x ∈ Multiset.map f s.val → x = 0
⊢ ∀ (x : β), x ∈ s → f x = 0

tactic: apply h (f b)
state_before: case mp
α : Type u_1
β : Type u_2
γ : Type ?u.21349
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : NormalizedGCDMonoid α
s s₁ s₂ : Finset β
f : β → α
h : ∀ (x : α), x ∈ Multiset.map f s.val → x = 0
b : β
bs : b ∈ s
⊢ f b = 0

tactic: simp only [Multiset.mem_map, mem_def.1 bs]
state_before: case mp
α : Type u_1
β : Type u_2
γ : Type ?u.21349
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : NormalizedGCDMonoid α
s s₁ s₂ : Finset β
f : β → α
h : ∀ (x : α), x ∈ Multiset.map f s.val → x = 0
b : β
bs : b ∈ s
⊢ f b ∈ Multiset.map f s.val

tactic: use b
state_before: case mp
α : Type u_1
β : Type u_2
γ : Type ?u.21349
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : NormalizedGCDMonoid α
s s₁ s₂ : Finset β
f : β → α
h : ∀ (x : α), x ∈ Multiset.map f s.val → x = 0
b : β
bs : b ∈ s
⊢ ∃ a, a ∈ s.val ∧ f a = f b

tactic: simp only [mem_def.1 bs, eq_self_iff_true, and_self]
state_before: case mp
α : Type u_1
β : Type u_2
γ : Type ?u.21349
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : NormalizedGCDMonoid α
s s₁ s₂ : Finset β
f : β → α
h : ∀ (x : α), x ∈ Multiset.map f s.val → x = 0
b : β
bs : b ∈ s
⊢ b ∈ s.val ∧ f b = f b

tactic: intro a as
state_before: case mpr
α : Type u_1
β : Type u_2
γ : Type ?u.21349
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : NormalizedGCDMonoid α
s s₁ s₂ : Finset β
f : β → α
h : ∀ (x : β), x ∈ s → f x = 0
⊢ ∀ (x : α), x ∈ Multiset.map f s.val → x = 0

tactic: rw [Multiset.mem_map] at as
state_before: case mpr
α : Type u_1
β : Type u_2
γ : Type ?u.21349
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : NormalizedGCDMonoid α
s s₁ s₂ : Finset β
f : β → α
h : ∀ (x : β), x ∈ s → f x = 0
a : α
as : a ∈ Multiset.map f s.val
⊢ a = 0

tactic: rcases as with ⟨b, ⟨bs, rfl⟩⟩
state_before: case mpr
α : Type u_1
β : Type u_2
γ : Type ?u.21349
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : NormalizedGCDMonoid α
s s₁ s₂ : Finset β
f : β → α
h : ∀ (x : β), x ∈ s → f x = 0
a : α
as : ∃ a_1, a_1 ∈ s.val ∧ f a_1 = a
⊢ a = 0

tactic: apply h b (mem_def.1 bs)
state_before: case mpr.intro.intro
α : Type u_1
β : Type u_2
γ : Type ?u.21349
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : NormalizedGCDMonoid α
s s₁ s₂ : Finset β
f : β → α
h : ∀ (x : β), x ∈ s → f x = 0
b : β
bs : b ∈ s.val
⊢ f b = 0
Theorem: differentiableOn_of_locally_differentiableOn
File: Mathlib/Analysis/Calculus/FDeriv/Basic.lean

tactic: intro x xs
state_before: 𝕜 : Type u_2
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type u_1
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type u_3
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type ?u.328214
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type ?u.328309
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f f₀ f₁ g : E → F
f' f₀' f₁' g' e : E →L[𝕜] F
x : E
s t : Set E
L L₁ L₂ : Filter E
h : ∀ (x : E), x ∈ s → ∃ u, IsOpen u ∧ x ∈ u ∧ DifferentiableOn 𝕜 f (s ∩ u)
⊢ DifferentiableOn 𝕜 f s

tactic: rcases h x xs with ⟨t, t_open, xt, ht⟩
state_before: 𝕜 : Type u_2
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type u_1
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type u_3
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type ?u.328214
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type ?u.328309
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f f₀ f₁ g : E → F
f' f₀' f₁' g' e : E →L[𝕜] F
x✝ : E
s t : Set E
L L₁ L₂ : Filter E
h : ∀ (x : E), x ∈ s → ∃ u, IsOpen u ∧ x ∈ u ∧ DifferentiableOn 𝕜 f (s ∩ u)
x : E
xs : x ∈ s
⊢ DifferentiableWithinAt 𝕜 f s x

tactic: exact (differentiableWithinAt_inter (IsOpen.mem_nhds t_open xt)).1 (ht x ⟨xs, xt⟩)
state_before: case intro.intro.intro
𝕜 : Type u_2
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type u_1
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type u_3
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type ?u.328214
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type ?u.328309
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f f₀ f₁ g : E → F
f' f₀' f₁' g' e : E →L[𝕜] F
x✝ : E
s t✝ : Set E
L L₁ L₂ : Filter E
h : ∀ (x : E), x ∈ s → ∃ u, IsOpen u ∧ x ∈ u ∧ DifferentiableOn 𝕜 f (s ∩ u)
x : E
xs : x ∈ s
t : Set E
t_open : IsOpen t
xt : x ∈ t
ht : DifferentiableOn 𝕜 f (s ∩ t)
⊢ DifferentiableWithinAt 𝕜 f s x
Theorem: continuousMul_inf
File: Mathlib/Topology/Algebra/Monoid.lean

tactic: rw [inf_eq_iInf]
state_before: ι : Type ?u.457146
α : Type ?u.457149
X : Type ?u.457152
M : Type u_1
N : Type ?u.457158
inst✝¹ : TopologicalSpace X
ι' : Sort ?u.457164
inst✝ : Mul M
t₁ t₂ : TopologicalSpace M
h₁ : ContinuousMul M
h₂ : ContinuousMul M
⊢ ContinuousMul M

tactic: refine' continuousMul_iInf fun b => _
state_before: ι : Type ?u.457146
α : Type ?u.457149
X : Type ?u.457152
M : Type u_1
N : Type ?u.457158
inst✝¹ : TopologicalSpace X
ι' : Sort ?u.457164
inst✝ : Mul M
t₁ t₂ : TopologicalSpace M
h₁ : ContinuousMul M
h₂ : ContinuousMul M
⊢ ContinuousMul M

tactic: cases b <;> assumption
state_before: ι : Type ?u.457146
α : Type ?u.457149
X : Type ?u.457152
M : Type u_1
N : Type ?u.457158
inst✝¹ : TopologicalSpace X
ι' : Sort ?u.457164
inst✝ : Mul M
t₁ t₂ : TopologicalSpace M
h₁ : ContinuousMul M
h₂ : ContinuousMul M
b : Bool
⊢ ContinuousMul M
Theorem: ack_strictMono_right
File: Mathlib/Computability/Ackermann.lean

tactic: simpa using h
state_before: n₁ n₂ : ℕ
h : n₁ < n₂
⊢ ack 0 n₁ < ack 0 n₂

tactic: rw [ack_succ_zero, ack_succ_succ]
state_before: m n : ℕ
_h : 0 < n + 1
⊢ ack (m + 1) 0 < ack (m + 1) (n + 1)

tactic: exact ack_strictMono_right _ (one_lt_ack_succ_left m n)
state_before: m n : ℕ
_h : 0 < n + 1
⊢ ack m 1 < ack m (ack (m + 1) n)

tactic: rw [ack_succ_succ, ack_succ_succ]
state_before: m n₁ n₂ : ℕ
h : n₁ + 1 < n₂ + 1
⊢ ack (m + 1) (n₁ + 1) < ack (m + 1) (n₂ + 1)

tactic: apply ack_strictMono_right _ (ack_strictMono_right _ _)
state_before: m n₁ n₂ : ℕ
h : n₁ + 1 < n₂ + 1
⊢ ack m (ack (m + 1) n₁) < ack m (ack (m + 1) n₂)

tactic: rwa [add_lt_add_iff_right] at h
state_before: m n₁ n₂ : ℕ
h : n₁ + 1 < n₂ + 1
⊢ n₁ < n₂
Theorem: Bool.decide_or
File: Mathlib/Data/Bool/Basic.lean

tactic: by_cases p <;> by_cases q <;> simp [*]
state_before: p q : Prop
inst✝¹ : Decidable p
inst✝ : Decidable q
⊢ decide (p ∨ q) = (decide p || decide q)
Theorem: Mathlib.Tactic.Ring.pow_prod_atom
File: Mathlib/Tactic/Ring/Basic.lean

tactic: simp
state_before: u : Lean.Level
R : Type u_1
α : Q(Type u)
sα : Q(CommSemiring «$α»)
inst✝ : CommSemiring R
a : R
b : ℕ
⊢ a ^ b = (a + 0) ^ b * Nat.rawCast 1
Theorem: Matrix.dotProduct_star
File: Mathlib/Data/Matrix/Basic.lean

tactic: simp [dotProduct]
state_before: l : Type ?u.219472
m : Type u_1
n : Type ?u.219478
o : Type ?u.219481
m' : o → Type ?u.219486
n' : o → Type ?u.219491
R : Type ?u.219494
S : Type ?u.219497
α : Type v
β : Type w
γ : Type ?u.219504
inst✝³ : Fintype m
inst✝² : Fintype n
inst✝¹ : NonUnitalSemiring α
inst✝ : StarRing α
v w : m → α
⊢ v ⬝ᵥ star w = star (w ⬝ᵥ star v)
Theorem: mul_eq_one_iff_eq_inv
File: Mathlib/Algebra/Group/Basic.lean

tactic: rw [h, mul_left_inv]
state_before: α : Type ?u.53031
β : Type ?u.53034
G : Type u_1
inst✝ : Group G
a b c d : G
h : a = b⁻¹
⊢ a * b = 1
Theorem: EMetric.hausdorffEdist_zero_iff_eq_of_closed
File: Mathlib/Topology/MetricSpace/HausdorffDistance.lean

tactic: rw [hausdorffEdist_zero_iff_closure_eq_closure, hs.closure_eq, ht.closure_eq]
state_before: ι : Sort ?u.54522
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
inst✝ : PseudoEMetricSpace β
x y : α
s t u : Set α
Φ : α → β
hs : IsClosed s
ht : IsClosed t
⊢ hausdorffEdist s t = 0 ↔ s = t
Theorem: MeasureTheory.integral_comp_mul_deriv_Ioi
File: Mathlib/MeasureTheory/Integral/IntegralEqImproper.lean

tactic: have hg2' : IntegrableOn (fun x => f' x • (g ∘ f) x) (Ici a) := by simpa [mul_comm] using hg2
state_before: E : Type ?u.179480
f✝ : ℝ → E
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f f' g : ℝ → ℝ
a : ℝ
hf : ContinuousOn f (Ici a)
hft : Tendsto f atTop atTop
hff' : ∀ (x : ℝ), x ∈ Ioi a → HasDerivWithinAt f (f' x) (Ioi x) x
hg_cont : ContinuousOn g (f '' Ioi a)
hg1 : IntegrableOn g (f '' Ici a)
hg2 : IntegrableOn (fun x => (g ∘ f) x * f' x) (Ici a)
⊢ (∫ (x : ℝ) in Ioi a, (g ∘ f) x * f' x) = ∫ (u : ℝ) in Ioi (f a), g u

tactic: simpa [mul_comm] using integral_comp_smul_deriv_Ioi hf hft hff' hg_cont hg1 hg2'
state_before: E : Type ?u.179480
f✝ : ℝ → E
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f f' g : ℝ → ℝ
a : ℝ
hf : ContinuousOn f (Ici a)
hft : Tendsto f atTop atTop
hff' : ∀ (x : ℝ), x ∈ Ioi a → HasDerivWithinAt f (f' x) (Ioi x) x
hg_cont : ContinuousOn g (f '' Ioi a)
hg1 : IntegrableOn g (f '' Ici a)
hg2 : IntegrableOn (fun x => (g ∘ f) x * f' x) (Ici a)
hg2' : IntegrableOn (fun x => f' x • (g ∘ f) x) (Ici a)
⊢ (∫ (x : ℝ) in Ioi a, (g ∘ f) x * f' x) = ∫ (u : ℝ) in Ioi (f a), g u

tactic: simpa [mul_comm] using hg2
state_before: E : Type ?u.179480
f✝ : ℝ → E
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
f f' g : ℝ → ℝ
a : ℝ
hf : ContinuousOn f (Ici a)
hft : Tendsto f atTop atTop
hff' : ∀ (x : ℝ), x ∈ Ioi a → HasDerivWithinAt f (f' x) (Ioi x) x
hg_cont : ContinuousOn g (f '' Ioi a)
hg1 : IntegrableOn g (f '' Ici a)
hg2 : IntegrableOn (fun x => (g ∘ f) x * f' x) (Ici a)
⊢ IntegrableOn (fun x => f' x • (g ∘ f) x) (Ici a)
Theorem: MonoidHom.map_mulIndicator
File: Mathlib/Algebra/IndicatorFunction.lean

tactic: simp [Set.mulIndicator_comp_of_one]
state_before: α : Type u_3
β : Type ?u.169338
ι : Type ?u.169341
M✝ : Type ?u.169344
N✝ : Type ?u.169347
M : Type u_1
N : Type u_2
inst✝¹ : MulOneClass M
inst✝ : MulOneClass N
f : M →* N
s : Set α
g : α → M
x : α
⊢ ↑f (Set.mulIndicator s g x) = Set.mulIndicator s (↑f ∘ g) x
Theorem: CategoryTheory.Limits.MonoFactorisation.ext
File: Mathlib/CategoryTheory/Limits/Shapes/Images.lean

tactic: cases' F with _ Fm _ _ Ffac
state_before: C : Type u
inst✝ : Category C
X Y : C
f : X ⟶ Y
F F' : MonoFactorisation f
hI : F.I = F'.I
hm : F.m = eqToHom hI ≫ F'.m
⊢ F = F'

tactic: cases' F' with _ Fm' _ _ Ffac'
state_before: case mk
C : Type u
inst✝ : Category C
X Y : C
f : X ⟶ Y
F' : MonoFactorisation f
I✝ : C
Fm : I✝ ⟶ Y
m_mono✝ : Mono Fm
e✝ : X ⟶ I✝
Ffac : e✝ ≫ Fm = f
hI : (mk I✝ Fm e✝).I = F'.I
hm : (mk I✝ Fm e✝).m = eqToHom hI ≫ F'.m
⊢ mk I✝ Fm e✝ = F'

tactic: cases' hI
state_before: case mk.mk
C : Type u
inst✝ : Category C
X Y : C
f : X ⟶ Y
I✝¹ : C
Fm : I✝¹ ⟶ Y
m_mono✝¹ : Mono Fm
e✝¹ : X ⟶ I✝¹
Ffac : e✝¹ ≫ Fm = f
I✝ : C
Fm' : I✝ ⟶ Y
m_mono✝ : Mono Fm'
e✝ : X ⟶ I✝
Ffac' : e✝ ≫ Fm' = f
hI : (mk I✝¹ Fm e✝¹).I = (mk I✝ Fm' e✝).I
hm : (mk I✝¹ Fm e✝¹).m = eqToHom hI ≫ (mk I✝ Fm' e✝).m
⊢ mk I✝¹ Fm e✝¹ = mk I✝ Fm' e✝

tactic: simp at hm
state_before: case mk.mk.refl
C : Type u
inst✝ : Category C
X Y : C
f : X ⟶ Y
I✝ : C
Fm : I✝ ⟶ Y
m_mono✝¹ : Mono Fm
e✝¹ : X ⟶ I✝
Ffac : e✝¹ ≫ Fm = f
Fm' : I✝ ⟶ Y
m_mono✝ : Mono Fm'
e✝ : X ⟶ I✝
Ffac' : e✝ ≫ Fm' = f
hm : (mk I✝ Fm e✝¹).m = eqToHom (_ : (mk I✝ Fm e✝¹).I = (mk I✝ Fm e✝¹).I) ≫ (mk I✝ Fm' e✝).m
⊢ mk I✝ Fm e✝¹ = mk I✝ Fm' e✝

tactic: dsimp at Ffac Ffac'
state_before: case mk.mk.refl
C : Type u
inst✝ : Category C
X Y : C
f : X ⟶ Y
I✝ : C
Fm : I✝ ⟶ Y
m_mono✝¹ : Mono Fm
e✝¹ : X ⟶ I✝
Ffac : e✝¹ ≫ Fm = f
Fm' : I✝ ⟶ Y
m_mono✝ : Mono Fm'
e✝ : X ⟶ I✝
Ffac' : e✝ ≫ Fm' = f
hm : Fm = Fm'
⊢ mk I✝ Fm e✝¹ = mk I✝ Fm' e✝

tactic: congr
state_before: case mk.mk.refl
C : Type u
inst✝ : Category C
X Y : C
f : X ⟶ Y
I✝ : C
Fm : I✝ ⟶ Y
m_mono✝¹ : Mono Fm
e✝¹ : X ⟶ I✝
Ffac : e✝¹ ≫ Fm = f
Fm' : I✝ ⟶ Y
m_mono✝ : Mono Fm'
e✝ : X ⟶ I✝
Ffac' : e✝ ≫ Fm' = f
hm : Fm = Fm'
⊢ mk I✝ Fm e✝¹ = mk I✝ Fm' e✝

tactic: apply (cancel_mono Fm).1
state_before: case mk.mk.refl.e_e
C : Type u
inst✝ : Category C
X Y : C
f : X ⟶ Y
I✝ : C
Fm : I✝ ⟶ Y
m_mono✝¹ : Mono Fm
e✝¹ : X ⟶ I✝
Ffac : e✝¹ ≫ Fm = f
Fm' : I✝ ⟶ Y
m_mono✝ : Mono Fm'
e✝ : X ⟶ I✝
Ffac' : e✝ ≫ Fm' = f
hm : Fm = Fm'
⊢ e✝¹ = e✝

tactic: rw [Ffac, hm, Ffac']
state_before: case mk.mk.refl.e_e
C : Type u
inst✝ : Category C
X Y : C
f : X ⟶ Y
I✝ : C
Fm : I✝ ⟶ Y
m_mono✝¹ : Mono Fm
e✝¹ : X ⟶ I✝
Ffac : e✝¹ ≫ Fm = f
Fm' : I✝ ⟶ Y
m_mono✝ : Mono Fm'
e✝ : X ⟶ I✝
Ffac' : e✝ ≫ Fm' = f
hm : Fm = Fm'
⊢ e✝¹ ≫ Fm = e✝ ≫ Fm
Theorem: MvPowerSeries.map_X
File: Mathlib/RingTheory/PowerSeries/Basic.lean

tactic: simp [MvPowerSeries.X]
state_before: σ : Type u_1
R : Type u_3
S : Type u_2
T : Type ?u.997314
inst✝² : Semiring R
inst✝¹ : Semiring S
inst✝ : Semiring T
f : R →+* S
g : S →+* T
s : σ
⊢ ↑(map σ f) (X s) = X s
Theorem: MeasureTheory.set_lintegral_measure_zero
File: Mathlib/MeasureTheory/Integral/Lebesgue.lean

tactic: convert lintegral_zero_measure _
state_before: α : Type u_1
β : Type ?u.925649
γ : Type ?u.925652
δ : Type ?u.925655
m : MeasurableSpace α
μ ν : Measure α
s : Set α
f : α → ℝ≥0∞
hs' : ↑↑μ s = 0
⊢ (∫⁻ (x : α) in s, f x ∂μ) = 0

tactic: exact Measure.restrict_eq_zero.2 hs'
state_before: case h.e'_2.h.e'_3.h
α : Type u_1
β : Type ?u.925649
γ : Type ?u.925652
δ : Type ?u.925655
m : MeasurableSpace α
μ ν : Measure α
s : Set α
f : α → ℝ≥0∞
hs' : ↑↑μ s = 0
⊢ Measure.restrict μ s = 0
Theorem: Ordinal.sup_opow_nat
File: Mathlib/SetTheory/Ordinal/Exponential.lean

tactic: rcases lt_or_eq_of_le (one_le_iff_pos.2 ho) with (ho₁ | rfl)
state_before: o : Ordinal
ho : 0 < o
⊢ (sup fun n => o ^ ↑n) = o ^ ω

tactic: exact (opow_isNormal ho₁).apply_omega
state_before: case inl
o : Ordinal
ho : 0 < o
ho₁ : 1 < o
⊢ (sup fun n => o ^ ↑n) = o ^ ω

tactic: rw [one_opow]
state_before: case inr
ho : 0 < 1
⊢ (sup fun n => 1 ^ ↑n) = 1 ^ ω

tactic: refine' le_antisymm (sup_le fun n => by rw [one_opow]) _
state_before: case inr
ho : 0 < 1
⊢ (sup fun n => 1 ^ ↑n) = 1

tactic: convert le_sup (fun n : ℕ => 1^n) 0
state_before: case inr
ho : 0 < 1
⊢ 1 ≤ sup fun n => 1 ^ ↑n

tactic: rw [Nat.cast_zero, opow_zero]
state_before: case h.e'_3
ho : 0 < 1
⊢ 1 = 1 ^ ↑0

tactic: rw [one_opow]
state_before: ho : 0 < 1
n : ℕ
⊢ 1 ^ ↑n ≤ 1
Theorem: Filter.mul_top_of_one_le
File: Mathlib/Order/Filter/Pointwise.lean

tactic: refine' top_le_iff.1 fun s => _
state_before: F : Type ?u.261734
α : Type u_1
β : Type ?u.261740
γ : Type ?u.261743
δ : Type ?u.261746
ε : Type ?u.261749
inst✝ : Monoid α
f g : Filter α
s : Set α
a : α
m n : ℕ
hf : 1 ≤ f
⊢ f * ⊤ = ⊤

tactic: simp only [mem_mul, mem_top, exists_and_left, exists_eq_left]
state_before: F : Type ?u.261734
α : Type u_1
β : Type ?u.261740
γ : Type ?u.261743
δ : Type ?u.261746
ε : Type ?u.261749
inst✝ : Monoid α
f g : Filter α
s✝ : Set α
a : α
m n : ℕ
hf : 1 ≤ f
s : Set α
⊢ s ∈ f * ⊤ → s ∈ ⊤

tactic: rintro ⟨t, ht, hs⟩
state_before: F : Type ?u.261734
α : Type u_1
β : Type ?u.261740
γ : Type ?u.261743
δ : Type ?u.261746
ε : Type ?u.261749
inst✝ : Monoid α
f g : Filter α
s✝ : Set α
a : α
m n : ℕ
hf : 1 ≤ f
s : Set α
⊢ (∃ t₁, t₁ ∈ f ∧ t₁ * univ ⊆ s) → s = univ

tactic: rwa [mul_univ_of_one_mem (mem_one.1 <| hf ht), univ_subset_iff] at hs
state_before: case intro.intro
F : Type ?u.261734
α : Type u_1
β : Type ?u.261740
γ : Type ?u.261743
δ : Type ?u.261746
ε : Type ?u.261749
inst✝ : Monoid α
f g : Filter α
s✝ : Set α
a : α
m n : ℕ
hf : 1 ≤ f
s t : Set α
ht : t ∈ f
hs : t * univ ⊆ s
⊢ s = univ
Theorem: convexOn_dist
File: Mathlib/Analysis/Convex/Normed.lean

tactic: simpa [dist_eq_norm, preimage_preimage] using
  (convexOn_norm (hs.translate (-z))).comp_affineMap (AffineMap.id ℝ E - AffineMap.const ℝ E z)
state_before: ι : Type ?u.9758
E : Type u_1
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace ℝ E
s t : Set E
z : E
hs : Convex ℝ s
⊢ ConvexOn ℝ s fun z' => dist z' z
Theorem: StructureGroupoid.LocalInvariantProp.liftPropAt_chart_symm
File: Mathlib/Geometry/Manifold/LocalInvariantProperties.lean

tactic: simp
state_before: H : Type u_1
M : Type u_2
H' : Type ?u.60695
M' : Type ?u.60698
X : Type ?u.60701
inst✝⁷ : TopologicalSpace H
inst✝⁶ : TopologicalSpace M
inst✝⁵ : ChartedSpace H M
inst✝⁴ : TopologicalSpace H'
inst✝³ : TopologicalSpace M'
inst✝² : ChartedSpace H' M'
inst✝¹ : TopologicalSpace X
G : StructureGroupoid H
G' : StructureGroupoid H'
e e' : LocalHomeomorph M H
f f' : LocalHomeomorph M' H'
P : (H → H') → Set H → H → Prop
g g' : M → M'
s t : Set M
x : M
Q : (H → H) → Set H → H → Prop
hG✝ : LocalInvariantProp G G' P
inst✝ : HasGroupoid M G
hG : LocalInvariantProp G G Q
hQ : ∀ (y : H), Q id univ y
⊢ ↑(chartAt H x) x ∈ (chartAt H x).toLocalEquiv.target