1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Polynomial.monic_of_injective
File: Mathlib/Algebra/Polynomial/Monic.lean

tactic: apply hf
state_before: R : Type u
S : Type v
a b : R
m n : ℕ
ι : Type y
inst✝¹ : Semiring R
inst✝ : Semiring S
f : R →+* S
hf : Injective ⇑f
p : R[X]
hp : (map f p).Monic
⊢ p.Monic
state_after: case a
R : Type u
S : Type v
a b : R
m n : ℕ
ι : Type y
inst✝¹ : Semiring R
inst✝ : Semiring S
f : R →+* S
hf : Injective ⇑f
p : R[X]
hp : (map f p).Monic
⊢ f p.leadingCoeff = f 1

tactic: rw [← leadingCoeff_of_injective hf, hp.leadingCoeff, f.map_one]
state_before: case a
R : Type u
S : Type v
a b : R
m n : ℕ
ι : Type y
inst✝¹ : Semiring R
inst✝ : Semiring S
f : R →+* S
hf : Injective ⇑f
p : R[X]
hp : (map f p).Monic
⊢ f p.leadingCoeff = f 1
state_after: no goals
Theorem: ZNum.zneg_bitm1
File: Mathlib/Data/Num/Lemmas.lean

tactic: cases n <;> rfl
state_before: α : Type u_1
n : ZNum
⊢ -n.bitm1 = (-n).bit1
state_after: no goals
Theorem: CategoryTheory.Pseudofunctor.map₂_hom_inv
File: Mathlib/CategoryTheory/Bicategory/Functor/Pseudofunctor.lean

tactic: simp
state_before: B : Type u₁
inst✝³ : Bicategory B
C : Type u₂
inst✝² : Bicategory C
D : Type u₃
inst✝¹ : Bicategory D
F : Pseudofunctor B C
a b : B
f g : a ⟶ b
η : f ⟶ g
inst✝ : IsIso η
⊢ F.map₂ η ≫ F.map₂ (inv η) = 𝟙 ((↑F.toPrelaxFunctor).map f)
state_after: no goals
Theorem: AffineSubspace.map_eq_bot_iff
File: Mathlib/LinearAlgebra/AffineSpace/AffineSubspace.lean

tactic: refine ⟨fun h => ?_, fun h => ?_⟩
state_before: k : Type u_1
V₁ : Type u_2
P₁ : Type u_3
V₂ : Type u_4
P₂ : Type u_5
V₃ : Type u_6
P₃ : Type u_7
inst✝⁹ : Ring k
inst✝⁸ : AddCommGroup V₁
inst✝⁷ : Module k V₁
inst✝⁶ : AffineSpace V₁ P₁
inst✝⁵ : AddCommGroup V₂
inst✝⁴ : Module k V₂
inst✝³ : AffineSpace V₂ P₂
inst✝² : AddCommGroup V₃
inst✝¹ : Module k V₃
inst✝ : AffineSpace V₃ P₃
f : P₁ →ᵃ[k] P₂
s : AffineSubspace k P₁
⊢ map f s = ⊥ ↔ s = ⊥
state_after: case refine_1
k : Type u_1
V₁ : Type u_2
P₁ : Type u_3
V₂ : Type u_4
P₂ : Type u_5
V₃ : Type u_6
P₃ : Type u_7
inst✝⁹ : Ring k
inst✝⁸ : AddCommGroup V₁
inst✝⁷ : Module k V₁
inst✝⁶ : AffineSpace V₁ P₁
inst✝⁵ : AddCommGroup V₂
inst✝⁴ : Module k V₂
inst✝³ : AffineSpace V₂ P₂
inst✝² : AddCommGroup V₃
inst✝¹ : Module k V₃
inst✝ : AffineSpace V₃ P₃
f : P₁ →ᵃ[k] P₂
s : AffineSubspace k P₁
h : map f s = ⊥
⊢ s = ⊥

case refine_2
k : Type u_1
V₁ : Type u_2
P₁ : Type u_3
V₂ : Type u_4
P₂ : Type u_5
V₃ : Type u_6
P₃ : Type u_7
inst✝⁹ : Ring k
inst✝⁸ : AddCommGroup V₁
inst✝⁷ : Module k V₁
inst✝⁶ : AffineSpace V₁ P₁
inst✝⁵ : AddCommGroup V₂
inst✝⁴ : Module k V₂
inst✝³ : AffineSpace V₂ P₂
inst✝² : AddCommGroup V₃
inst✝¹ : Module k V₃
inst✝ : AffineSpace V₃ P₃
f : P₁ →ᵃ[k] P₂
s : AffineSubspace k P₁
h : s = ⊥
⊢ map f s = ⊥

tactic: rwa [← coe_eq_bot_iff, coe_map, image_eq_empty, coe_eq_bot_iff] at h
state_before: case refine_1
k : Type u_1
V₁ : Type u_2
P₁ : Type u_3
V₂ : Type u_4
P₂ : Type u_5
V₃ : Type u_6
P₃ : Type u_7
inst✝⁹ : Ring k
inst✝⁸ : AddCommGroup V₁
inst✝⁷ : Module k V₁
inst✝⁶ : AffineSpace V₁ P₁
inst✝⁵ : AddCommGroup V₂
inst✝⁴ : Module k V₂
inst✝³ : AffineSpace V₂ P₂
inst✝² : AddCommGroup V₃
inst✝¹ : Module k V₃
inst✝ : AffineSpace V₃ P₃
f : P₁ →ᵃ[k] P₂
s : AffineSubspace k P₁
h : map f s = ⊥
⊢ s = ⊥
state_after: no goals

tactic: rw [h, map_bot]
state_before: case refine_2
k : Type u_1
V₁ : Type u_2
P₁ : Type u_3
V₂ : Type u_4
P₂ : Type u_5
V₃ : Type u_6
P₃ : Type u_7
inst✝⁹ : Ring k
inst✝⁸ : AddCommGroup V₁
inst✝⁷ : Module k V₁
inst✝⁶ : AffineSpace V₁ P₁
inst✝⁵ : AddCommGroup V₂
inst✝⁴ : Module k V₂
inst✝³ : AffineSpace V₂ P₂
inst✝² : AddCommGroup V₃
inst✝¹ : Module k V₃
inst✝ : AffineSpace V₃ P₃
f : P₁ →ᵃ[k] P₂
s : AffineSubspace k P₁
h : s = ⊥
⊢ map f s = ⊥
state_after: no goals
Theorem: LieModule.toEnd_baseChange
File: Mathlib/Algebra/Lie/BaseChange.lean

tactic: ext
state_before: R : Type u_1
A : Type u_2
L : Type u_3
M : Type u_4
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
inst✝¹ : CommRing A
inst✝ : Algebra R A
x : L
⊢ (toEnd A (A ⊗[R] L) (A ⊗[R] M)) (1 ⊗ₜ[R] x) = LinearMap.baseChange A ((toEnd R L M) x)
state_after: case a.h.h
R : Type u_1
A : Type u_2
L : Type u_3
M : Type u_4
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
inst✝¹ : CommRing A
inst✝ : Algebra R A
x : L
x✝ : M
⊢ ((TensorProduct.AlgebraTensorModule.curry ((toEnd A (A ⊗[R] L) (A ⊗[R] M)) (1 ⊗ₜ[R] x))) 1) x✝ =
    ((TensorProduct.AlgebraTensorModule.curry (LinearMap.baseChange A ((toEnd R L M) x))) 1) x✝

tactic: simp
state_before: case a.h.h
R : Type u_1
A : Type u_2
L : Type u_3
M : Type u_4
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
inst✝¹ : CommRing A
inst✝ : Algebra R A
x : L
x✝ : M
⊢ ((TensorProduct.AlgebraTensorModule.curry ((toEnd A (A ⊗[R] L) (A ⊗[R] M)) (1 ⊗ₜ[R] x))) 1) x✝ =
    ((TensorProduct.AlgebraTensorModule.curry (LinearMap.baseChange A ((toEnd R L M) x))) 1) x✝
state_after: no goals
Theorem: mul_right_eq_self
File: Mathlib/Algebra/Group/Basic.lean

tactic: rw [mul_one]
state_before: α : Type u_1
β : Type u_2
G : Type u_3
M✝ : Type u_4
M : Type u
inst✝ : LeftCancelMonoid M
a b : M
⊢ a * b = a ↔ a * b = a * 1
state_after: no goals
Theorem: sSup_inv
File: Mathlib/Algebra/Order/Pointwise.lean

tactic: rw [← image_inv, sSup_image]
state_before: α : Type u_1
inst✝³ : CompleteLattice α
inst✝² : Group α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
s✝ t s : Set α
⊢ sSup s⁻¹ = (sInf s)⁻¹
state_after: α : Type u_1
inst✝³ : CompleteLattice α
inst✝² : Group α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
s✝ t s : Set α
⊢ ⨆ a ∈ s, a⁻¹ = (sInf s)⁻¹

tactic: exact ((OrderIso.inv α).map_sInf _).symm
state_before: α : Type u_1
inst✝³ : CompleteLattice α
inst✝² : Group α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
s✝ t s : Set α
⊢ ⨆ a ∈ s, a⁻¹ = (sInf s)⁻¹
state_after: no goals
Theorem: IsCyclic.image_range_card
File: Mathlib/GroupTheory/SpecificGroups/Cyclic.lean

tactic: rw [← orderOf_eq_card_of_forall_mem_zpowers ha, IsCyclic.image_range_orderOf ha]
state_before: α : Type u
a : α
inst✝² : Group α
inst✝¹ : DecidableEq α
inst✝ : Fintype α
ha : ∀ (x : α), x ∈ zpowers a
⊢ image (fun i => a ^ i) (range (Fintype.card α)) = univ
state_after: no goals
Theorem: integral_cos
File: Mathlib/Analysis/SpecialFunctions/Integrals.lean

tactic: rw [integral_deriv_eq_sub']
state_before: a b : ℝ
n : ℕ
⊢ ∫ (x : ℝ) in a..b, cos x = sin b - sin a
state_after: case hderiv
a b : ℝ
n : ℕ
⊢ deriv sin = cos

case hdiff
a b : ℝ
n : ℕ
⊢ ∀ x ∈ [[a, b]], DifferentiableAt ℝ sin x

case hcont
a b : ℝ
n : ℕ
⊢ ContinuousOn cos [[a, b]]

tactic: norm_num
state_before: case hderiv
a b : ℝ
n : ℕ
⊢ deriv sin = cos
state_after: no goals

tactic: simp only [differentiableAt_sin, implies_true]
state_before: case hdiff
a b : ℝ
n : ℕ
⊢ ∀ x ∈ [[a, b]], DifferentiableAt ℝ sin x
state_after: no goals

tactic: exact continuousOn_cos
state_before: case hcont
a b : ℝ
n : ℕ
⊢ ContinuousOn cos [[a, b]]
state_after: no goals
Theorem: lt_or_le_of_mul_le_mul
File: Mathlib/Algebra/Order/Monoid/Unbundled/MinMax.lean

tactic: contrapose!
state_before: α : Type u_1
β : Type u_2
inst✝³ : LinearOrder α
inst✝² : Mul α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x < x_1
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a₁ a₂ b₁ b₂ : α
⊢ a₁ * b₁ ≤ a₂ * b₂ → a₁ < a₂ ∨ b₁ ≤ b₂
state_after: α : Type u_1
β : Type u_2
inst✝³ : LinearOrder α
inst✝² : Mul α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x < x_1
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a₁ a₂ b₁ b₂ : α
⊢ a₂ ≤ a₁ ∧ b₂ < b₁ → a₂ * b₂ < a₁ * b₁

tactic: exact fun h => mul_lt_mul_of_le_of_lt h.1 h.2
state_before: α : Type u_1
β : Type u_2
inst✝³ : LinearOrder α
inst✝² : Mul α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x < x_1
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a₁ a₂ b₁ b₂ : α
⊢ a₂ ≤ a₁ ∧ b₂ < b₁ → a₂ * b₂ < a₁ * b₁
state_after: no goals
Theorem: LinearIndependent.mono
File: Mathlib/LinearAlgebra/LinearIndependent.lean

tactic: simp only [linearIndependent_subtype_disjoint]
state_before: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M
inst✝⁶ : Semiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid M'
inst✝³ : AddCommMonoid M''
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M''
a b : R
x y : M
t s : Set M
h : t ⊆ s
⊢ (LinearIndependent R fun (x : ↑s) => ↑x) → LinearIndependent R fun (x : ↑t) => ↑x
state_after: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M
inst✝⁶ : Semiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid M'
inst✝³ : AddCommMonoid M''
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M''
a b : R
x y : M
t s : Set M
h : t ⊆ s
⊢ Disjoint (Finsupp.supported R R s) (LinearMap.ker (Finsupp.total M M R id)) →
    Disjoint (Finsupp.supported R R t) (LinearMap.ker (Finsupp.total M M R id))

tactic: exact Disjoint.mono_left (Finsupp.supported_mono h)
state_before: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M
inst✝⁶ : Semiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid M'
inst✝³ : AddCommMonoid M''
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M''
a b : R
x y : M
t s : Set M
h : t ⊆ s
⊢ Disjoint (Finsupp.supported R R s) (LinearMap.ker (Finsupp.total M M R id)) →
    Disjoint (Finsupp.supported R R t) (LinearMap.ker (Finsupp.total M M R id))
state_after: no goals
Theorem: Polynomial.C_half_mul_two_eq_one
File: Mathlib/RingTheory/Polynomial/Dickson.lean

tactic: rw [mul_comm, two_mul_C_half_eq_one]
state_before: R : Type u_1
S : Type u_2
inst✝² : CommRing R
inst✝¹ : CommRing S
k : ℕ
a : R
inst✝ : Invertible 2
⊢ C ⅟2 * 2 = 1
state_after: no goals
Theorem: Fin.cycleRange_last
File: Mathlib/GroupTheory/Perm/Fin.lean

tactic: ext i
state_before: n : ℕ
⊢ (last n).cycleRange = finRotate (n + 1)
state_after: case H.h
n : ℕ
i : Fin (n + 1)
⊢ ↑((last n).cycleRange i) = ↑((finRotate (n + 1)) i)

tactic: rw [coe_cycleRange_of_le (le_last _), coe_finRotate]
state_before: case H.h
n : ℕ
i : Fin (n + 1)
⊢ ↑((last n).cycleRange i) = ↑((finRotate (n + 1)) i)
state_after: no goals
Theorem: isQuasiSeparated_iff_quasiSeparatedSpace
File: Mathlib/Topology/QuasiSeparated.lean

tactic: rw [← isQuasiSeparated_univ_iff]
state_before: α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
f : α → β
s : Set α
hs : IsOpen s
⊢ IsQuasiSeparated s ↔ QuasiSeparatedSpace ↑s
state_after: α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
f : α → β
s : Set α
hs : IsOpen s
⊢ IsQuasiSeparated s ↔ IsQuasiSeparated Set.univ

tactic: convert (hs.openEmbedding_subtype_val.isQuasiSeparated_iff (s := Set.univ)).symm
state_before: α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
f : α → β
s : Set α
hs : IsOpen s
⊢ IsQuasiSeparated s ↔ IsQuasiSeparated Set.univ
state_after: case h.e'_1.h.e'_3
α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
f : α → β
s : Set α
hs : IsOpen s
⊢ s = Subtype.val '' Set.univ

tactic: simp
state_before: case h.e'_1.h.e'_3
α : Type u_1
β : Type u_2
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace β
f : α → β
s : Set α
hs : IsOpen s
⊢ s = Subtype.val '' Set.univ
state_after: no goals
Theorem: Cardinal.one_le_ofENat
File: Mathlib/SetTheory/Cardinal/ENat.lean

tactic: norm_cast
state_before: n : ℕ∞
⊢ 1 ≤ ↑n ↔ 1 ≤ n
state_after: no goals
Theorem: CochainComplex.mappingCone.lift_f
File: Mathlib/Algebra/Homology/HomotopyCategory/MappingCone.lean

tactic: omega
state_before: C : Type u_1
inst✝² : Category.{?u.221549, u_1} C
inst✝¹ : Preadditive C
F G : CochainComplex C ℤ
φ : F ⟶ G
inst✝ : HasHomotopyCofiber φ
K : CochainComplex C ℤ
α : Cocycle K F 1
β : Cochain K G 0
eq : δ 0 1 β + (↑α).comp (Cochain.ofHom φ) ⋯ = 0
p q : ℤ
hpq : p + 1 = q
⊢ q + -1 = p
state_after: no goals

tactic: simp [ext_to_iff _ _ _ hpq]
state_before: C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : Preadditive C
F G : CochainComplex C ℤ
φ : F ⟶ G
inst✝ : HasHomotopyCofiber φ
K : CochainComplex C ℤ
α : Cocycle K F 1
β : Cochain K G 0
eq : δ 0 1 β + (↑α).comp (Cochain.ofHom φ) ⋯ = 0
p q : ℤ
hpq : p + 1 = q
⊢ (lift φ α β eq).f p = (↑α).v p q hpq ≫ (inl φ).v q p ⋯ + β.v p p ⋯ ≫ (inr φ).f p
state_after: no goals
Theorem: MeasureTheory.Measure.AbsolutelyContinuous.add_right
File: Mathlib/MeasureTheory/Measure/MeasureSpace.lean

tactic: intro 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 : α → β
h1 : μ ≪ ν
ν' : Measure α
⊢ μ ≪ ν + ν'
state_after: α : 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 : α → β
h1 : μ ≪ ν
ν' : Measure α
s : Set α
hs : (ν + ν') s = 0
⊢ μ s = 0

tactic: simp only [coe_add, Pi.add_apply, add_eq_zero] at 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 : α → β
h1 : μ ≪ ν
ν' : Measure α
s : Set α
hs : (ν + ν') s = 0
⊢ μ s = 0
state_after: α : 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 : α → β
h1 : μ ≪ ν
ν' : Measure α
s : Set α
hs : ν s = 0 ∧ ν' s = 0
⊢ μ s = 0

tactic: exact h1 hs.1
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 : α → β
h1 : μ ≪ ν
ν' : Measure α
s : Set α
hs : ν s = 0 ∧ ν' s = 0
⊢ μ s = 0
state_after: no goals
Theorem: Polynomial.isNilpotent_mul_X_iff
File: Mathlib/RingTheory/Polynomial/Nilpotent.lean

tactic: rw [← commute_X P]
state_before: R : Type u_1
r : R
inst✝ : Semiring R
P : R[X]
⊢ IsNilpotent (P * X) ↔ IsNilpotent P
state_after: R : Type u_1
r : R
inst✝ : Semiring R
P : R[X]
⊢ IsNilpotent (X * P) ↔ IsNilpotent P

tactic: exact isNilpotent_X_mul_iff
state_before: R : Type u_1
r : R
inst✝ : Semiring R
P : R[X]
⊢ IsNilpotent (X * P) ↔ IsNilpotent P
state_after: no goals
Theorem: CategoryTheory.InjectiveResolution.desc_commutes_zero
File: Mathlib/CategoryTheory/Abelian/InjectiveResolution.lean

tactic: simp
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
⊢ ((CochainComplex.single₀ C).map f ≫ I.ι).f 0 = f ≫ I.ι.f 0
state_after: no goals
Theorem: Set.surjective_iff_surjective_of_iUnion_eq_univ
File: Mathlib/Data/Set/Lattice.lean

tactic: refine ⟨fun H i => (U i).restrictPreimage_surjective H, fun H x => ?_⟩
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
s : Set β
f : α → β
U : ι → Set β
hU : iUnion U = univ
⊢ Surjective f ↔ ∀ (i : ι), Surjective ((U i).restrictPreimage f)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
s : Set β
f : α → β
U : ι → Set β
hU : iUnion U = univ
H : ∀ (i : ι), Surjective ((U i).restrictPreimage f)
x : β
⊢ ∃ a, f a = x

tactic: obtain ⟨i, hi⟩ :=
  Set.mem_iUnion.mp
    (show x ∈ Set.iUnion U by rw [hU]; trivial)
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
s : Set β
f : α → β
U : ι → Set β
hU : iUnion U = univ
H : ∀ (i : ι), Surjective ((U i).restrictPreimage f)
x : β
⊢ ∃ a, f a = x
state_after: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
s : Set β
f : α → β
U : ι → Set β
hU : iUnion U = univ
H : ∀ (i : ι), Surjective ((U i).restrictPreimage f)
x : β
i : ι
hi : x ∈ U i
⊢ ∃ a, f a = x

tactic: exact ⟨_, congr_arg Subtype.val (H i ⟨x, hi⟩).choose_spec⟩
state_before: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
s : Set β
f : α → β
U : ι → Set β
hU : iUnion U = univ
H : ∀ (i : ι), Surjective ((U i).restrictPreimage f)
x : β
i : ι
hi : x ∈ U i
⊢ ∃ a, f a = x
state_after: no goals

tactic: rw [hU]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
s : Set β
f : α → β
U : ι → Set β
hU : iUnion U = univ
H : ∀ (i : ι), Surjective ((U i).restrictPreimage f)
x : β
⊢ x ∈ iUnion U
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
s : Set β
f : α → β
U : ι → Set β
hU : iUnion U = univ
H : ∀ (i : ι), Surjective ((U i).restrictPreimage f)
x : β
⊢ x ∈ univ

tactic: trivial
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
s : Set β
f : α → β
U : ι → Set β
hU : iUnion U = univ
H : ∀ (i : ι), Surjective ((U i).restrictPreimage f)
x : β
⊢ x ∈ univ
state_after: no goals
Theorem: Real.diam_Icc
File: Mathlib/Topology/Instances/ENNReal.lean

tactic: simp [Metric.diam, ENNReal.toReal_ofReal (sub_nonneg.2 h)]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : PseudoEMetricSpace α
a b : ℝ
h : a ≤ b
⊢ Metric.diam (Icc a b) = b - a
state_after: no goals
Theorem: MeasureTheory.snormEssSup_add_le
File: Mathlib/MeasureTheory/Function/LpSeminorm/TriangleInequality.lean

tactic: refine le_trans (essSup_mono_ae (eventually_of_forall fun x => ?_)) (ENNReal.essSup_add_le _ _)
state_before: α : Type u_1
E : Type u_2
m : MeasurableSpace α
inst✝ : NormedAddCommGroup E
p : ℝ≥0∞
q : ℝ
μ : Measure α
f✝ g✝ f g : α → E
⊢ snormEssSup (f + g) μ ≤ snormEssSup f μ + snormEssSup g μ
state_after: α : Type u_1
E : Type u_2
m : MeasurableSpace α
inst✝ : NormedAddCommGroup E
p : ℝ≥0∞
q : ℝ
μ : Measure α
f✝ g✝ f g : α → E
x : α
⊢ (fun x => ↑‖(f + g) x‖₊) x ≤ ((fun x => ↑‖f x‖₊) + fun x => ↑‖g x‖₊) x

tactic: simp_rw [Pi.add_apply, ← ENNReal.coe_add, ENNReal.coe_le_coe]
state_before: α : Type u_1
E : Type u_2
m : MeasurableSpace α
inst✝ : NormedAddCommGroup E
p : ℝ≥0∞
q : ℝ
μ : Measure α
f✝ g✝ f g : α → E
x : α
⊢ (fun x => ↑‖(f + g) x‖₊) x ≤ ((fun x => ↑‖f x‖₊) + fun x => ↑‖g x‖₊) x
state_after: α : Type u_1
E : Type u_2
m : MeasurableSpace α
inst✝ : NormedAddCommGroup E
p : ℝ≥0∞
q : ℝ
μ : Measure α
f✝ g✝ f g : α → E
x : α
⊢ ‖f x + g x‖₊ ≤ ‖f x‖₊ + ‖g x‖₊

tactic: exact nnnorm_add_le _ _
state_before: α : Type u_1
E : Type u_2
m : MeasurableSpace α
inst✝ : NormedAddCommGroup E
p : ℝ≥0∞
q : ℝ
μ : Measure α
f✝ g✝ f g : α → E
x : α
⊢ ‖f x + g x‖₊ ≤ ‖f x‖₊ + ‖g x‖₊
state_after: no goals
Theorem: Subtype.heq_iff_coe_heq
File: Mathlib/Data/Subtype.lean

tactic: subst h
state_before: α✝ : Sort u_1
β✝ : Sort u_2
γ : Sort u_3
p✝ q✝ : α✝ → Prop
α β : Sort u_4
p : α → Prop
q : β → Prop
a : { x // p x }
b : { y // q y }
h : α = β
h' : HEq p q
⊢ HEq a b ↔ HEq ↑a ↑b
state_after: α✝ : Sort u_1
β : Sort u_2
γ : Sort u_3
p✝ q✝ : α✝ → Prop
α : Sort u_4
p : α → Prop
a : { x // p x }
q : α → Prop
b : { y // q y }
h' : HEq p q
⊢ HEq a b ↔ HEq ↑a ↑b

tactic: subst h'
state_before: α✝ : Sort u_1
β : Sort u_2
γ : Sort u_3
p✝ q✝ : α✝ → Prop
α : Sort u_4
p : α → Prop
a : { x // p x }
q : α → Prop
b : { y // q y }
h' : HEq p q
⊢ HEq a b ↔ HEq ↑a ↑b
state_after: α✝ : Sort u_1
β : Sort u_2
γ : Sort u_3
p✝ q : α✝ → Prop
α : Sort u_4
p : α → Prop
a b : { y // p y }
⊢ HEq a b ↔ HEq ↑a ↑b

tactic: rw [heq_iff_eq, heq_iff_eq, ext_iff]
state_before: α✝ : Sort u_1
β : Sort u_2
γ : Sort u_3
p✝ q : α✝ → Prop
α : Sort u_4
p : α → Prop
a b : { y // p y }
⊢ HEq a b ↔ HEq ↑a ↑b
state_after: no goals
Theorem: List.Sublist.diff_right
File: .lake/packages/batteries/Batteries/Data/List/Lemmas.lean

tactic: simp only [diff_cons, (h.erase _).diff_right]
state_before: α : Type u_1
inst✝¹ : BEq α
inst✝ : LawfulBEq α
l₁ l₂ : List α
a : α
l₃ : List α
h : l₁ <+ l₂
⊢ l₁.diff (a :: l₃) <+ l₂.diff (a :: l₃)
state_after: no goals
Theorem: MulAction.mem_orbit_self
File: Mathlib/GroupTheory/GroupAction/Basic.lean

tactic: simp [MulAction.one_smul]
state_before: M : Type u
inst✝² : Monoid M
α : Type v
inst✝¹ : MulAction M α
β : Type u_1
inst✝ : MulAction M β
a : α
⊢ (fun m => m • a) 1 = a
state_after: no goals
Theorem: lt_mul_of_lt_one_right
File: Mathlib/Algebra/Order/Ring/Defs.lean

tactic: simpa only [mul_one] using mul_lt_mul_of_neg_left h ha
state_before: α : Type u
β : Type u_1
inst✝¹ : StrictOrderedSemiring α
a b c d : α
inst✝ : ExistsAddOfLE α
ha : a < 0
h : b < 1
⊢ a < a * b
state_after: no goals
Theorem: List.Chain'.rel_head?
File: Mathlib/Data/List/Chain.lean

tactic: rw [← cons_head?_tail hy] at h
state_before: α : Type u
β : Type v
R r : α → α → Prop
l✝ l₁ l₂ : List α
a b x : α
l : List α
h : Chain' R (x :: l)
y : α
hy : y ∈ l.head?
⊢ R x y
state_after: α : Type u
β : Type v
R r : α → α → Prop
l✝ l₁ l₂ : List α
a b x : α
l : List α
y : α
h : Chain' R (x :: y :: l.tail)
hy : y ∈ l.head?
⊢ R x y

tactic: exact h.rel_head
state_before: α : Type u
β : Type v
R r : α → α → Prop
l✝ l₁ l₂ : List α
a b x : α
l : List α
y : α
h : Chain' R (x :: y :: l.tail)
hy : y ∈ l.head?
⊢ R x y
state_after: no goals
Theorem: DirichletCharacter.eval_modulus_sub
File: Mathlib/NumberTheory/DirichletCharacter/Basic.lean

tactic: simp
state_before: R : Type u_1
inst✝ : CommMonoidWithZero R
n : ℕ
χ : DirichletCharacter R n
x : ZMod n
⊢ χ (↑n - x) = χ (-x)
state_after: no goals
Theorem: Polynomial.degree_natCast_le
File: Mathlib/Algebra/Polynomial/Degree/Definitions.lean

tactic: simp
state_before: R : Type u
S : Type v
a b c d : R
n✝ m : ℕ
inst✝ : Semiring R
p q r : R[X]
n : ℕ
⊢ (↑n).natDegree ≤ Zero.zero
state_after: no goals