1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: CategoryTheory.Presheaf.isLocallyInjective_forget_iff
File: Mathlib/CategoryTheory/Sites/LocallyInjective.lean

tactic: constructor
state_before: C : Type u
inst✝² : Category.{v, u} C
D : Type u'
inst✝¹ : Category.{v', u'} D
inst✝ : ConcreteCategory D
J : GrothendieckTopology C
F₁ F₂ F₃ : Cᵒᵖ ⥤ D
φ : F₁ ⟶ F₂
ψ : F₂ ⟶ F₃
⊢ IsLocallyInjective J (whiskerRight φ (forget D)) ↔ IsLocallyInjective J φ
state_after: case mp
C : Type u
inst✝² : Category.{v, u} C
D : Type u'
inst✝¹ : Category.{v', u'} D
inst✝ : ConcreteCategory D
J : GrothendieckTopology C
F₁ F₂ F₃ : Cᵒᵖ ⥤ D
φ : F₁ ⟶ F₂
ψ : F₂ ⟶ F₃
⊢ IsLocallyInjective J (whiskerRight φ (forget D)) → IsLocallyInjective J φ

case mpr
C : Type u
inst✝² : Category.{v, u} C
D : Type u'
inst✝¹ : Category.{v', u'} D
inst✝ : ConcreteCategory D
J : GrothendieckTopology C
F₁ F₂ F₃ : Cᵒᵖ ⥤ D
φ : F₁ ⟶ F₂
ψ : F₂ ⟶ F₃
⊢ IsLocallyInjective J φ → IsLocallyInjective J (whiskerRight φ (forget D))

tactic: intro
state_before: case mp
C : Type u
inst✝² : Category.{v, u} C
D : Type u'
inst✝¹ : Category.{v', u'} D
inst✝ : ConcreteCategory D
J : GrothendieckTopology C
F₁ F₂ F₃ : Cᵒᵖ ⥤ D
φ : F₁ ⟶ F₂
ψ : F₂ ⟶ F₃
⊢ IsLocallyInjective J (whiskerRight φ (forget D)) → IsLocallyInjective J φ
state_after: case mp
C : Type u
inst✝² : Category.{v, u} C
D : Type u'
inst✝¹ : Category.{v', u'} D
inst✝ : ConcreteCategory D
J : GrothendieckTopology C
F₁ F₂ F₃ : Cᵒᵖ ⥤ D
φ : F₁ ⟶ F₂
ψ : F₂ ⟶ F₃
a✝ : IsLocallyInjective J (whiskerRight φ (forget D))
⊢ IsLocallyInjective J φ

tactic: exact ⟨fun x y h => equalizerSieve_mem J (whiskerRight φ (forget D)) x y h⟩
state_before: case mp
C : Type u
inst✝² : Category.{v, u} C
D : Type u'
inst✝¹ : Category.{v', u'} D
inst✝ : ConcreteCategory D
J : GrothendieckTopology C
F₁ F₂ F₃ : Cᵒᵖ ⥤ D
φ : F₁ ⟶ F₂
ψ : F₂ ⟶ F₃
a✝ : IsLocallyInjective J (whiskerRight φ (forget D))
⊢ IsLocallyInjective J φ
state_after: no goals

tactic: intro
state_before: case mpr
C : Type u
inst✝² : Category.{v, u} C
D : Type u'
inst✝¹ : Category.{v', u'} D
inst✝ : ConcreteCategory D
J : GrothendieckTopology C
F₁ F₂ F₃ : Cᵒᵖ ⥤ D
φ : F₁ ⟶ F₂
ψ : F₂ ⟶ F₃
⊢ IsLocallyInjective J φ → IsLocallyInjective J (whiskerRight φ (forget D))
state_after: case mpr
C : Type u
inst✝² : Category.{v, u} C
D : Type u'
inst✝¹ : Category.{v', u'} D
inst✝ : ConcreteCategory D
J : GrothendieckTopology C
F₁ F₂ F₃ : Cᵒᵖ ⥤ D
φ : F₁ ⟶ F₂
ψ : F₂ ⟶ F₃
a✝ : IsLocallyInjective J φ
⊢ IsLocallyInjective J (whiskerRight φ (forget D))

tactic: infer_instance
state_before: case mpr
C : Type u
inst✝² : Category.{v, u} C
D : Type u'
inst✝¹ : Category.{v', u'} D
inst✝ : ConcreteCategory D
J : GrothendieckTopology C
F₁ F₂ F₃ : Cᵒᵖ ⥤ D
φ : F₁ ⟶ F₂
ψ : F₂ ⟶ F₃
a✝ : IsLocallyInjective J φ
⊢ IsLocallyInjective J (whiskerRight φ (forget D))
state_after: no goals
Theorem: ProbabilityTheory.kernel.sum_map_seq
File: Mathlib/Probability/Kernel/Composition.lean

tactic: ext a s hs
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
γ : Type u_4
δ : Type u_5
mγ : MeasurableSpace γ
mδ : MeasurableSpace δ
f : β → γ
g : γ → α
κ : ↥(kernel α β)
inst✝ : IsSFiniteKernel κ
hf : Measurable f
⊢ (kernel.sum fun n => map (seq κ n) f hf) = map κ f hf
state_after: case h.h
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
γ : Type u_4
δ : Type u_5
mγ : MeasurableSpace γ
mδ : MeasurableSpace δ
f : β → γ
g : γ → α
κ : ↥(kernel α β)
inst✝ : IsSFiniteKernel κ
hf : Measurable f
a : α
s : Set γ
hs : MeasurableSet s
⊢ ((kernel.sum fun n => map (seq κ n) f hf) a) s = ((map κ f hf) a) s

tactic: rw [kernel.sum_apply, map_apply' κ hf a hs, Measure.sum_apply _ hs, ← measure_sum_seq κ,
  Measure.sum_apply _ (hf hs)]
state_before: case h.h
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
γ : Type u_4
δ : Type u_5
mγ : MeasurableSpace γ
mδ : MeasurableSpace δ
f : β → γ
g : γ → α
κ : ↥(kernel α β)
inst✝ : IsSFiniteKernel κ
hf : Measurable f
a : α
s : Set γ
hs : MeasurableSet s
⊢ ((kernel.sum fun n => map (seq κ n) f hf) a) s = ((map κ f hf) a) s
state_after: case h.h
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
γ : Type u_4
δ : Type u_5
mγ : MeasurableSpace γ
mδ : MeasurableSpace δ
f : β → γ
g : γ → α
κ : ↥(kernel α β)
inst✝ : IsSFiniteKernel κ
hf : Measurable f
a : α
s : Set γ
hs : MeasurableSet s
⊢ ∑' (i : ℕ), ((map (seq κ i) f hf) a) s = ∑' (i : ℕ), ((seq κ i) a) (f ⁻¹' s)

tactic: simp_rw [map_apply' _ hf _ hs]
state_before: case h.h
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
γ : Type u_4
δ : Type u_5
mγ : MeasurableSpace γ
mδ : MeasurableSpace δ
f : β → γ
g : γ → α
κ : ↥(kernel α β)
inst✝ : IsSFiniteKernel κ
hf : Measurable f
a : α
s : Set γ
hs : MeasurableSet s
⊢ ∑' (i : ℕ), ((map (seq κ i) f hf) a) s = ∑' (i : ℕ), ((seq κ i) a) (f ⁻¹' s)
state_after: no goals
Theorem: Nat.coprime_sub_self_left
File: Mathlib/Data/Nat/GCD/Basic.lean

tactic: rw [Coprime, Coprime, gcd_sub_self_left h]
state_before: m n : ℕ
h : m ≤ n
⊢ (n - m).Coprime m ↔ n.Coprime m
state_after: no goals
Theorem: Homotopy.dNext_succ_chainComplex
File: Mathlib/Algebra/Homology/Homotopy.lean

tactic: dsimp [dNext]
state_before: ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : Preadditive V
c : ComplexShape ι
C D E : HomologicalComplex V c
f✝ g : C ⟶ D
h k : D ⟶ E
i✝ : ι
P Q : ChainComplex V ℕ
f : (i j : ℕ) → P.X i ⟶ Q.X j
i : ℕ
⊢ (dNext (i + 1)) f = P.d (i + 1) i ≫ f i (i + 1)
state_after: ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : Preadditive V
c : ComplexShape ι
C D E : HomologicalComplex V c
f✝ g : C ⟶ D
h k : D ⟶ E
i✝ : ι
P Q : ChainComplex V ℕ
f : (i j : ℕ) → P.X i ⟶ Q.X j
i : ℕ
⊢ P.d (i + 1) ((ComplexShape.down ℕ).next (i + 1)) ≫ f ((ComplexShape.down ℕ).next (i + 1)) (i + 1) =
    P.d (i + 1) i ≫ f i (i + 1)

tactic: have : (ComplexShape.down ℕ).next (i + 1) = i := ChainComplex.next_nat_succ _
state_before: ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : Preadditive V
c : ComplexShape ι
C D E : HomologicalComplex V c
f✝ g : C ⟶ D
h k : D ⟶ E
i✝ : ι
P Q : ChainComplex V ℕ
f : (i j : ℕ) → P.X i ⟶ Q.X j
i : ℕ
⊢ P.d (i + 1) ((ComplexShape.down ℕ).next (i + 1)) ≫ f ((ComplexShape.down ℕ).next (i + 1)) (i + 1) =
    P.d (i + 1) i ≫ f i (i + 1)
state_after: ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : Preadditive V
c : ComplexShape ι
C D E : HomologicalComplex V c
f✝ g : C ⟶ D
h k : D ⟶ E
i✝ : ι
P Q : ChainComplex V ℕ
f : (i j : ℕ) → P.X i ⟶ Q.X j
i : ℕ
this : (ComplexShape.down ℕ).next (i + 1) = i
⊢ P.d (i + 1) ((ComplexShape.down ℕ).next (i + 1)) ≫ f ((ComplexShape.down ℕ).next (i + 1)) (i + 1) =
    P.d (i + 1) i ≫ f i (i + 1)

tactic: congr 2
state_before: ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : Preadditive V
c : ComplexShape ι
C D E : HomologicalComplex V c
f✝ g : C ⟶ D
h k : D ⟶ E
i✝ : ι
P Q : ChainComplex V ℕ
f : (i j : ℕ) → P.X i ⟶ Q.X j
i : ℕ
this : (ComplexShape.down ℕ).next (i + 1) = i
⊢ P.d (i + 1) ((ComplexShape.down ℕ).next (i + 1)) ≫ f ((ComplexShape.down ℕ).next (i + 1)) (i + 1) =
    P.d (i + 1) i ≫ f i (i + 1)
state_after: no goals
Theorem: Subgroup.isComplement'_of_disjoint_and_mul_eq_univ
File: Mathlib/GroupTheory/Complement.lean

tactic: refine ⟨mul_injective_of_disjoint h1, fun g => ?_⟩
state_before: G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
h1 : Disjoint H K
h2 : ↑H * ↑K = univ
⊢ H.IsComplement' K
state_after: G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
h1 : Disjoint H K
h2 : ↑H * ↑K = univ
g : G
⊢ ∃ a, (fun x => ↑x.1 * ↑x.2) a = g

tactic: obtain ⟨h, hh, k, hk, hg⟩ := Set.eq_univ_iff_forall.mp h2 g
state_before: G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
h1 : Disjoint H K
h2 : ↑H * ↑K = univ
g : G
⊢ ∃ a, (fun x => ↑x.1 * ↑x.2) a = g
state_after: case intro.intro.intro.intro
G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
h1 : Disjoint H K
h2 : ↑H * ↑K = univ
g h : G
hh : h ∈ ↑H
k : G
hk : k ∈ ↑K
hg : (fun x x_1 => x * x_1) h k = g
⊢ ∃ a, (fun x => ↑x.1 * ↑x.2) a = g

tactic: exact ⟨(⟨h, hh⟩, ⟨k, hk⟩), hg⟩
state_before: case intro.intro.intro.intro
G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
h1 : Disjoint H K
h2 : ↑H * ↑K = univ
g h : G
hh : h ∈ ↑H
k : G
hk : k ∈ ↑K
hg : (fun x x_1 => x * x_1) h k = g
⊢ ∃ a, (fun x => ↑x.1 * ↑x.2) a = g
state_after: no goals
Theorem: interior_sInter_subset
File: Mathlib/Topology/Basic.lean

tactic: rw [sInter_eq_biInter]
state_before: X : Type u
Y : Type v
ι : Sort w
α : Type u_1
β : Type u_2
x : X
s s₁ s₂ t : Set X
p p₁ p₂ : X → Prop
inst✝ : TopologicalSpace X
S : Set (Set X)
⊢ interior (⋂₀ S) = interior (⋂ s ∈ S, s)
state_after: no goals
Theorem: LinearMap.nilRankAux_basis_indep
File: Mathlib/Algebra/Module/LinearMap/Polynomial.lean

tactic: apply le_antisymm <;> apply nilRankAux_le
state_before: R : Type u_1
L : Type u_2
M : Type u_3
n : Type u_4
ι : Type u_5
ι' : Type u_6
ιM : Type u_7
inst✝¹² : CommRing R
inst✝¹¹ : AddCommGroup L
inst✝¹⁰ : Module R L
inst✝⁹ : AddCommGroup M
inst✝⁸ : Module R M
φ : L →ₗ[R] Module.End R M
inst✝⁷ : Fintype ι
inst✝⁶ : Fintype ι'
inst✝⁵ : Fintype ιM
inst✝⁴ : DecidableEq ι
inst✝³ : DecidableEq ι'
inst✝² : Module.Free R M
inst✝¹ : Module.Finite R M
b✝ : Basis ι R L
inst✝ : Nontrivial R
b : Basis ι R L
b' : Basis ι' R L
⊢ φ.nilRankAux b = (φ.polyCharpoly b').natTrailingDegree
state_after: no goals
Theorem: Grp.SurjectiveOfEpiAuxs.fromCoset_eq_of_mem_range
File: Mathlib/Algebra/Category/Grp/EpiMono.lean

tactic: congr
state_before: A B : Grp
f : A ⟶ B
b : ↑B
hb : b ∈ MonoidHom.range f
⊢ fromCoset ⟨b • ↑(MonoidHom.range f), ⋯⟩ = fromCoset ⟨↑(MonoidHom.range f), ⋯⟩
state_after: case e_a.e_val
A B : Grp
f : A ⟶ B
b : ↑B
hb : b ∈ MonoidHom.range f
⊢ b • ↑(MonoidHom.range f) = ↑(MonoidHom.range f)

tactic: let b : B.α := b
state_before: case e_a.e_val
A B : Grp
f : A ⟶ B
b : ↑B
hb : b ∈ MonoidHom.range f
⊢ b • ↑(MonoidHom.range f) = ↑(MonoidHom.range f)
state_after: case e_a.e_val
A B : Grp
f : A ⟶ B
b✝ : ↑B
hb : b✝ ∈ MonoidHom.range f
b : ↑B := b✝
⊢ b✝ • ↑(MonoidHom.range f) = ↑(MonoidHom.range f)

tactic: change b • (f.range : Set B) = f.range
state_before: case e_a.e_val
A B : Grp
f : A ⟶ B
b✝ : ↑B
hb : b✝ ∈ MonoidHom.range f
b : ↑B := b✝
⊢ b✝ • ↑(MonoidHom.range f) = ↑(MonoidHom.range f)
state_after: case e_a.e_val
A B : Grp
f : A ⟶ B
b✝ : ↑B
hb : b✝ ∈ MonoidHom.range f
b : ↑B := b✝
⊢ b • ↑(MonoidHom.range f) = ↑(MonoidHom.range f)

tactic: nth_rw 2 [show (f.range : Set B.α) = (1 : B) • f.range from (one_leftCoset _).symm]
state_before: case e_a.e_val
A B : Grp
f : A ⟶ B
b✝ : ↑B
hb : b✝ ∈ MonoidHom.range f
b : ↑B := b✝
⊢ b • ↑(MonoidHom.range f) = ↑(MonoidHom.range f)
state_after: case e_a.e_val
A B : Grp
f : A ⟶ B
b✝ : ↑B
hb : b✝ ∈ MonoidHom.range f
b : ↑B := b✝
⊢ b • ↑(MonoidHom.range f) = 1 • ↑(MonoidHom.range f)

tactic: rw [leftCoset_eq_iff, mul_one]
state_before: case e_a.e_val
A B : Grp
f : A ⟶ B
b✝ : ↑B
hb : b✝ ∈ MonoidHom.range f
b : ↑B := b✝
⊢ b • ↑(MonoidHom.range f) = 1 • ↑(MonoidHom.range f)
state_after: case e_a.e_val
A B : Grp
f : A ⟶ B
b✝ : ↑B
hb : b✝ ∈ MonoidHom.range f
b : ↑B := b✝
⊢ b⁻¹ ∈ MonoidHom.range f

tactic: exact Subgroup.inv_mem _ hb
state_before: case e_a.e_val
A B : Grp
f : A ⟶ B
b✝ : ↑B
hb : b✝ ∈ MonoidHom.range f
b : ↑B := b✝
⊢ b⁻¹ ∈ MonoidHom.range f
state_after: no goals
Theorem: MeasureTheory.setIntegral_condexp
File: Mathlib/MeasureTheory/Function/ConditionalExpectation/Basic.lean

tactic: rw [setIntegral_congr_ae (hm s hs) ((condexp_ae_eq_condexpL1 hm f).mono fun x hx _ => hx)]
state_before: α : Type u_1
F : Type u_2
F' : Type u_3
𝕜 : Type u_4
p : ℝ≥0∞
inst✝⁷ : RCLike 𝕜
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedSpace 𝕜 F
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : NormedSpace 𝕜 F'
inst✝² : NormedSpace ℝ F'
inst✝¹ : CompleteSpace F'
m m0 : MeasurableSpace α
μ : Measure α
f g : α → F'
s : Set α
hm : m ≤ m0
inst✝ : SigmaFinite (μ.trim hm)
hf : Integrable f μ
hs : MeasurableSet s
⊢ ∫ (x : α) in s, (μ[f|m]) x ∂μ = ∫ (x : α) in s, f x ∂μ
state_after: α : Type u_1
F : Type u_2
F' : Type u_3
𝕜 : Type u_4
p : ℝ≥0∞
inst✝⁷ : RCLike 𝕜
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedSpace 𝕜 F
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : NormedSpace 𝕜 F'
inst✝² : NormedSpace ℝ F'
inst✝¹ : CompleteSpace F'
m m0 : MeasurableSpace α
μ : Measure α
f g : α → F'
s : Set α
hm : m ≤ m0
inst✝ : SigmaFinite (μ.trim hm)
hf : Integrable f μ
hs : MeasurableSet s
⊢ ∫ (x : α) in s, ↑↑(condexpL1 hm μ f) x ∂μ = ∫ (x : α) in s, f x ∂μ

tactic: exact setIntegral_condexpL1 hf hs
state_before: α : Type u_1
F : Type u_2
F' : Type u_3
𝕜 : Type u_4
p : ℝ≥0∞
inst✝⁷ : RCLike 𝕜
inst✝⁶ : NormedAddCommGroup F
inst✝⁵ : NormedSpace 𝕜 F
inst✝⁴ : NormedAddCommGroup F'
inst✝³ : NormedSpace 𝕜 F'
inst✝² : NormedSpace ℝ F'
inst✝¹ : CompleteSpace F'
m m0 : MeasurableSpace α
μ : Measure α
f g : α → F'
s : Set α
hm : m ≤ m0
inst✝ : SigmaFinite (μ.trim hm)
hf : Integrable f μ
hs : MeasurableSet s
⊢ ∫ (x : α) in s, ↑↑(condexpL1 hm μ f) x ∂μ = ∫ (x : α) in s, f x ∂μ
state_after: no goals
Theorem: convexJoin_singleton_right
File: Mathlib/Analysis/Convex/Join.lean

tactic: simp [convexJoin]
state_before: ι : Sort u_1
𝕜 : Type u_2
E : Type u_3
inst✝² : OrderedSemiring 𝕜
inst✝¹ : AddCommMonoid E
inst✝ : Module 𝕜 E
s✝ t s₁ s₂ t₁ t₂ u : Set E
x y✝ : E
s : Set E
y : E
⊢ convexJoin 𝕜 s {y} = ⋃ x ∈ s, segment 𝕜 x y
state_after: no goals
Theorem: MulAction.stabilizer_quotient
File: Mathlib/GroupTheory/GroupAction/Quotient.lean

tactic: ext
state_before: α : Type u
β : Type v
γ : Type w
inst✝³ inst✝² : Group α
inst✝¹ : MulAction α β
x : β
G : Type u_1
inst✝ : Group G
H : Subgroup G
⊢ stabilizer G ↑1 = H
state_after: case h
α : Type u
β : Type v
γ : Type w
inst✝³ inst✝² : Group α
inst✝¹ : MulAction α β
x : β
G : Type u_1
inst✝ : Group G
H : Subgroup G
x✝ : G
⊢ x✝ ∈ stabilizer G ↑1 ↔ x✝ ∈ H

tactic: simp [QuotientGroup.eq]
state_before: case h
α : Type u
β : Type v
γ : Type w
inst✝³ inst✝² : Group α
inst✝¹ : MulAction α β
x : β
G : Type u_1
inst✝ : Group G
H : Subgroup G
x✝ : G
⊢ x✝ ∈ stabilizer G ↑1 ↔ x✝ ∈ H
state_after: no goals
Theorem: LucasLehmer.X.ext
File: Mathlib/NumberTheory/LucasLehmer.lean

tactic: cases x
state_before: q : ℕ+
x y : X q
h₁ : x.1 = y.1
h₂ : x.2 = y.2
⊢ x = y
state_after: case mk
q : ℕ+
y : X q
fst✝ snd✝ : ZMod ↑q
h₁ : (fst✝, snd✝).1 = y.1
h₂ : (fst✝, snd✝).2 = y.2
⊢ (fst✝, snd✝) = y

tactic: cases y
state_before: case mk
q : ℕ+
y : X q
fst✝ snd✝ : ZMod ↑q
h₁ : (fst✝, snd✝).1 = y.1
h₂ : (fst✝, snd✝).2 = y.2
⊢ (fst✝, snd✝) = y
state_after: case mk.mk
q : ℕ+
fst✝¹ snd✝¹ fst✝ snd✝ : ZMod ↑q
h₁ : (fst✝¹, snd✝¹).1 = (fst✝, snd✝).1
h₂ : (fst✝¹, snd✝¹).2 = (fst✝, snd✝).2
⊢ (fst✝¹, snd✝¹) = (fst✝, snd✝)

tactic: congr
state_before: case mk.mk
q : ℕ+
fst✝¹ snd✝¹ fst✝ snd✝ : ZMod ↑q
h₁ : (fst✝¹, snd✝¹).1 = (fst✝, snd✝).1
h₂ : (fst✝¹, snd✝¹).2 = (fst✝, snd✝).2
⊢ (fst✝¹, snd✝¹) = (fst✝, snd✝)
state_after: no goals
Theorem: Finsupp.cons_support
File: Mathlib/Data/Finsupp/Fin.lean

tactic: intro i hi
state_before: n : ℕ
i : Fin n
M : Type u_1
inst✝ : Zero M
y : M
t : Fin (n + 1) →₀ M
s : Fin n →₀ M
⊢ (cons y s).support ⊆ insert 0 (Finset.map (Fin.succEmb n) s.support)
state_after: n : ℕ
i✝ : Fin n
M : Type u_1
inst✝ : Zero M
y : M
t : Fin (n + 1) →₀ M
s : Fin n →₀ M
i : Fin (n + 1)
hi : i ∈ (cons y s).support
⊢ i ∈ insert 0 (Finset.map (Fin.succEmb n) s.support)

tactic: suffices i = 0 ∨ ∃ a, ¬s a = 0 ∧ a.succ = i by simpa
state_before: n : ℕ
i✝ : Fin n
M : Type u_1
inst✝ : Zero M
y : M
t : Fin (n + 1) →₀ M
s : Fin n →₀ M
i : Fin (n + 1)
hi : i ∈ (cons y s).support
⊢ i ∈ insert 0 (Finset.map (Fin.succEmb n) s.support)
state_after: n : ℕ
i✝ : Fin n
M : Type u_1
inst✝ : Zero M
y : M
t : Fin (n + 1) →₀ M
s : Fin n →₀ M
i : Fin (n + 1)
hi : i ∈ (cons y s).support
⊢ i = 0 ∨ ∃ a, ¬s a = 0 ∧ a.succ = i

tactic: apply (Fin.eq_zero_or_eq_succ i).imp id (Exists.imp _)
state_before: n : ℕ
i✝ : Fin n
M : Type u_1
inst✝ : Zero M
y : M
t : Fin (n + 1) →₀ M
s : Fin n →₀ M
i : Fin (n + 1)
hi : i ∈ (cons y s).support
⊢ i = 0 ∨ ∃ a, ¬s a = 0 ∧ a.succ = i
state_after: n : ℕ
i✝ : Fin n
M : Type u_1
inst✝ : Zero M
y : M
t : Fin (n + 1) →₀ M
s : Fin n →₀ M
i : Fin (n + 1)
hi : i ∈ (cons y s).support
⊢ ∀ (a : Fin n), i = a.succ → ¬s a = 0 ∧ a.succ = i

tactic: rintro i rfl
state_before: n : ℕ
i✝ : Fin n
M : Type u_1
inst✝ : Zero M
y : M
t : Fin (n + 1) →₀ M
s : Fin n →₀ M
i : Fin (n + 1)
hi : i ∈ (cons y s).support
⊢ ∀ (a : Fin n), i = a.succ → ¬s a = 0 ∧ a.succ = i
state_after: n : ℕ
i✝ : Fin n
M : Type u_1
inst✝ : Zero M
y : M
t : Fin (n + 1) →₀ M
s : Fin n →₀ M
i : Fin n
hi : i.succ ∈ (cons y s).support
⊢ ¬s i = 0 ∧ i.succ = i.succ

tactic: simpa [Finsupp.mem_support_iff] using hi
state_before: n : ℕ
i✝ : Fin n
M : Type u_1
inst✝ : Zero M
y : M
t : Fin (n + 1) →₀ M
s : Fin n →₀ M
i : Fin n
hi : i.succ ∈ (cons y s).support
⊢ ¬s i = 0 ∧ i.succ = i.succ
state_after: no goals

tactic: simpa
state_before: n : ℕ
i✝ : Fin n
M : Type u_1
inst✝ : Zero M
y : M
t : Fin (n + 1) →₀ M
s : Fin n →₀ M
i : Fin (n + 1)
hi : i ∈ (cons y s).support
this : i = 0 ∨ ∃ a, ¬s a = 0 ∧ a.succ = i
⊢ i ∈ insert 0 (Finset.map (Fin.succEmb n) s.support)
state_after: no goals
Theorem: Complex.arg_eq_zero_iff_zero_le
File: Mathlib/Analysis/SpecialFunctions/Complex/Arg.lean

tactic: rw [arg_eq_zero_iff, eq_comm, nonneg_iff]
state_before: a x z✝ z : ℂ
⊢ z.arg = 0 ↔ 0 ≤ z
state_after: no goals
Theorem: List.zipWith_congr
File: Mathlib/Data/List/Zip.lean

tactic: induction' h with a b as bs hfg _ ih
state_before: α : Type u
β : Type u_1
γ : Type u_2
δ : Type u_3
ε : Type u_4
f g : α → β → γ
la : List α
lb : List β
h : Forall₂ (fun a b => f a b = g a b) la lb
⊢ zipWith f la lb = zipWith g la lb
state_after: case nil
α : Type u
β : Type u_1
γ : Type u_2
δ : Type u_3
ε : Type u_4
f g : α → β → γ
la : List α
lb : List β
⊢ zipWith f [] [] = zipWith g [] []

case cons
α : Type u
β : Type u_1
γ : Type u_2
δ : Type u_3
ε : Type u_4
f g : α → β → γ
la : List α
lb : List β
a : α
b : β
as : List α
bs : List β
hfg : f a b = g a b
a✝ : Forall₂ (fun a b => f a b = g a b) as bs
ih : zipWith f as bs = zipWith g as bs
⊢ zipWith f (a :: as) (b :: bs) = zipWith g (a :: as) (b :: bs)

tactic: rfl
state_before: case nil
α : Type u
β : Type u_1
γ : Type u_2
δ : Type u_3
ε : Type u_4
f g : α → β → γ
la : List α
lb : List β
⊢ zipWith f [] [] = zipWith g [] []
state_after: no goals

tactic: exact congr_arg₂ _ hfg ih
state_before: case cons
α : Type u
β : Type u_1
γ : Type u_2
δ : Type u_3
ε : Type u_4
f g : α → β → γ
la : List α
lb : List β
a : α
b : β
as : List α
bs : List β
hfg : f a b = g a b
a✝ : Forall₂ (fun a b => f a b = g a b) as bs
ih : zipWith f as bs = zipWith g as bs
⊢ zipWith f (a :: as) (b :: bs) = zipWith g (a :: as) (b :: bs)
state_after: no goals
Theorem: RingHom.codomain_trivial_iff_range_eq_singleton_zero
File: Mathlib/Algebra/Ring/Hom/Basic.lean

tactic: simp [← hx, h x]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
x✝³ : NonAssocSemiring α
x✝² : NonAssocSemiring β
f : α →+* β
x✝¹ y✝ : α
h : ∀ (x : α), f x = 0
y : β
x✝ : y ∈ Set.range ⇑f
x : α
hx : f x = y
⊢ y ∈ {0}
state_after: no goals

tactic: simpa using hy.symm
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
x✝¹ : NonAssocSemiring α
x✝ : NonAssocSemiring β
f : α →+* β
x y✝ : α
h : ∀ (x : α), f x = 0
y : β
hy : y ∈ {0}
⊢ f 0 = y
state_after: no goals
Theorem: MeasureTheory.measure_add_measure_compl₀
File: Mathlib/MeasureTheory/Measure/NullMeasurable.lean

tactic: rw [← measure_union₀' hs aedisjoint_compl_right, union_compl_self]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
m0 : MeasurableSpace α
μ : Measure α
s✝ t s : Set α
hs : NullMeasurableSet s μ
⊢ μ s + μ sᶜ = μ univ
state_after: no goals
Theorem: List.zipLeft'_nil_right
File: Mathlib/Data/List/Basic.lean

tactic: cases as <;> rfl
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
a : α
as : List α
b : β
bs : List β
⊢ as.zipLeft' [] = (map (fun a => (a, none)) as, [])
state_after: no goals
Theorem: t2_iff_nhds
File: Mathlib/Topology/Separation.lean

tactic: simp only [t2Space_iff_disjoint_nhds, disjoint_iff, neBot_iff, Ne, not_imp_comm, Pairwise]
state_before: X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : FirstCountableTopology X
⊢ T2Space X ↔ ∀ {x y : X}, (𝓝 x ⊓ 𝓝 y).NeBot → x = y
state_after: no goals
Theorem: UpperSet.coe_iSup
File: Mathlib/Order/UpperLower/Basic.lean

tactic: simp [iSup]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝ : LE α
S : Set (UpperSet α)
s t : UpperSet α
a : α
f : ι → UpperSet α
⊢ ↑(⨆ i, f i) = ⋂ i, ↑(f i)
state_after: no goals
Theorem: Filter.tendsto_of_isEmpty
File: Mathlib/Order/Filter/Basic.lean

tactic: simp only [filter_eq_bot_of_isEmpty la, tendsto_bot]
state_before: α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
l : Filter α
inst✝ : IsEmpty α
f : α → β
la : Filter α
lb : Filter β
⊢ Tendsto f la lb
state_after: no goals
Theorem: CategoryTheory.ShortComplex.RightHomologyData.ofEpiOfIsIsoOfMono_p
File: Mathlib/Algebra/Homology/ShortComplex/RightHomology.lean

tactic: simp [ofEpiOfIsIsoOfMono, opMap]
state_before: C : Type u_1
inst✝⁴ : Category.{u_2, u_1} C
inst✝³ : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
φ : S₁ ⟶ S₂
h : S₁.RightHomologyData
inst✝² : Epi φ.τ₁
inst✝¹ : IsIso φ.τ₂
inst✝ : Mono φ.τ₃
⊢ (ofEpiOfIsIsoOfMono φ h).p = inv φ.τ₂ ≫ h.p
state_after: no goals
Theorem: mellin_const_smul
File: Mathlib/Analysis/MellinTransform.lean

tactic: simp only [mellin, smul_comm, integral_smul]
state_before: E : Type u_1
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℂ E
f : ℝ → E
s : ℂ
𝕜 : Type u_2
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : NormedSpace 𝕜 E
inst✝ : SMulCommClass ℂ 𝕜 E
c : 𝕜
⊢ mellin (fun t => c • f t) s = c • mellin f s
state_after: no goals
Theorem: Filter.bot_coprod_bot
File: Mathlib/Order/Filter/Prod.lean

tactic: simp
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort u_5
f : Filter α
g : Filter β
⊢ ⊥.coprod ⊥ = ⊥
state_after: no goals
Theorem: omegaLimit_subset_closure_fw_image
File: Mathlib/Dynamics/OmegaLimit.lean

tactic: rw [omegaLimit_eq_iInter]
state_before: τ : Type u_1
α : Type u_2
β : Type u_3
ι : Type u_4
inst✝ : TopologicalSpace β
f : Filter τ
ϕ : τ → α → β
s s₁ s₂ : Set α
u : Set τ
hu : u ∈ f
⊢ ω f ϕ s ⊆ closure (image2 ϕ u s)
state_after: τ : Type u_1
α : Type u_2
β : Type u_3
ι : Type u_4
inst✝ : TopologicalSpace β
f : Filter τ
ϕ : τ → α → β
s s₁ s₂ : Set α
u : Set τ
hu : u ∈ f
⊢ ⋂ u, closure (image2 ϕ (↑u) s) ⊆ closure (image2 ϕ u s)

tactic: intro _ hx
state_before: τ : Type u_1
α : Type u_2
β : Type u_3
ι : Type u_4
inst✝ : TopologicalSpace β
f : Filter τ
ϕ : τ → α → β
s s₁ s₂ : Set α
u : Set τ
hu : u ∈ f
⊢ ⋂ u, closure (image2 ϕ (↑u) s) ⊆ closure (image2 ϕ u s)
state_after: τ : Type u_1
α : Type u_2
β : Type u_3
ι : Type u_4
inst✝ : TopologicalSpace β
f : Filter τ
ϕ : τ → α → β
s s₁ s₂ : Set α
u : Set τ
hu : u ∈ f
a✝ : β
hx : a✝ ∈ ⋂ u, closure (image2 ϕ (↑u) s)
⊢ a✝ ∈ closure (image2 ϕ u s)

tactic: rw [mem_iInter] at hx
state_before: τ : Type u_1
α : Type u_2
β : Type u_3
ι : Type u_4
inst✝ : TopologicalSpace β
f : Filter τ
ϕ : τ → α → β
s s₁ s₂ : Set α
u : Set τ
hu : u ∈ f
a✝ : β
hx : a✝ ∈ ⋂ u, closure (image2 ϕ (↑u) s)
⊢ a✝ ∈ closure (image2 ϕ u s)
state_after: τ : Type u_1
α : Type u_2
β : Type u_3
ι : Type u_4
inst✝ : TopologicalSpace β
f : Filter τ
ϕ : τ → α → β
s s₁ s₂ : Set α
u : Set τ
hu : u ∈ f
a✝ : β
hx : ∀ (i : ↑f.sets), a✝ ∈ closure (image2 ϕ (↑i) s)
⊢ a✝ ∈ closure (image2 ϕ u s)

tactic: exact hx ⟨u, hu⟩
state_before: τ : Type u_1
α : Type u_2
β : Type u_3
ι : Type u_4
inst✝ : TopologicalSpace β
f : Filter τ
ϕ : τ → α → β
s s₁ s₂ : Set α
u : Set τ
hu : u ∈ f
a✝ : β
hx : ∀ (i : ↑f.sets), a✝ ∈ closure (image2 ϕ (↑i) s)
⊢ a✝ ∈ closure (image2 ϕ u s)
state_after: no goals