1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Finset.Ioi_subset_Ici_self
File: Mathlib/Order/Interval/Finset/Basic.lean

tactic: simpa [← coe_subset] using Set.Ioi_subset_Ici_self
state_before: ι : Type u_1
α : Type u_2
inst✝¹ : Preorder α
inst✝ : LocallyFiniteOrderTop α
a : α
⊢ Ioi a ⊆ Ici a
state_after: no goals
Theorem: IsOpen.mul_closure
File: Mathlib/Topology/Algebra/Group/Basic.lean

tactic: refine (mul_subset_iff.2 fun a ha b hb => ?_).antisymm (mul_subset_mul_left subset_closure)
state_before: G : Type w
H : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
s t✝ : Set G
hs : IsOpen s
t : Set G
⊢ s * closure t = s * t
state_after: G : Type w
H : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
s t✝ : Set G
hs : IsOpen s
t : Set G
a : G
ha : a ∈ s
b : G
hb : b ∈ closure t
⊢ a * b ∈ s * t

tactic: rw [mem_closure_iff] at hb
state_before: G : Type w
H : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
s t✝ : Set G
hs : IsOpen s
t : Set G
a : G
ha : a ∈ s
b : G
hb : b ∈ closure t
⊢ a * b ∈ s * t
state_after: G : Type w
H : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
s t✝ : Set G
hs : IsOpen s
t : Set G
a : G
ha : a ∈ s
b : G
hb : ∀ (o : Set G), IsOpen o → b ∈ o → (o ∩ t).Nonempty
⊢ a * b ∈ s * t

tactic: have hbU : b ∈ s⁻¹ * {a * b} := ⟨a⁻¹, Set.inv_mem_inv.2 ha, a * b, rfl, inv_mul_cancel_left _ _⟩
state_before: G : Type w
H : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
s t✝ : Set G
hs : IsOpen s
t : Set G
a : G
ha : a ∈ s
b : G
hb : ∀ (o : Set G), IsOpen o → b ∈ o → (o ∩ t).Nonempty
⊢ a * b ∈ s * t
state_after: G : Type w
H : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
s t✝ : Set G
hs : IsOpen s
t : Set G
a : G
ha : a ∈ s
b : G
hb : ∀ (o : Set G), IsOpen o → b ∈ o → (o ∩ t).Nonempty
hbU : b ∈ s⁻¹ * {a * b}
⊢ a * b ∈ s * t

tactic: obtain ⟨_, ⟨c, hc, d, rfl : d = _, rfl⟩, hcs⟩ := hb _ hs.inv.mul_right hbU
state_before: G : Type w
H : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
s t✝ : Set G
hs : IsOpen s
t : Set G
a : G
ha : a ∈ s
b : G
hb : ∀ (o : Set G), IsOpen o → b ∈ o → (o ∩ t).Nonempty
hbU : b ∈ s⁻¹ * {a * b}
⊢ a * b ∈ s * t
state_after: case intro.intro.intro.intro.intro.intro
G : Type w
H : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
s t✝ : Set G
hs : IsOpen s
t : Set G
a : G
ha : a ∈ s
b : G
hb : ∀ (o : Set G), IsOpen o → b ∈ o → (o ∩ t).Nonempty
hbU : b ∈ s⁻¹ * {a * b}
c : G
hc : c ∈ s⁻¹
hcs : (fun x x_1 => x * x_1) c (a * b) ∈ t
⊢ a * b ∈ s * t

tactic: exact ⟨c⁻¹, hc, _, hcs, inv_mul_cancel_left _ _⟩
state_before: case intro.intro.intro.intro.intro.intro
G : Type w
H : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : TopologicalGroup G
s t✝ : Set G
hs : IsOpen s
t : Set G
a : G
ha : a ∈ s
b : G
hb : ∀ (o : Set G), IsOpen o → b ∈ o → (o ∩ t).Nonempty
hbU : b ∈ s⁻¹ * {a * b}
c : G
hc : c ∈ s⁻¹
hcs : (fun x x_1 => x * x_1) c (a * b) ∈ t
⊢ a * b ∈ s * t
state_after: no goals
Theorem: Set.eval_preimage'
File: Mathlib/Data/Set/Prod.lean

tactic: ext
state_before: ι : Type u_1
α : ι → Type u_2
β : ι → Type u_3
s✝ s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
i : ι
inst✝ : DecidableEq ι
s : Set (α i)
⊢ eval i ⁻¹' s = {i}.pi (update (fun i => univ) i s)
state_after: case h
ι : Type u_1
α : ι → Type u_2
β : ι → Type u_3
s✝ s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
i : ι
inst✝ : DecidableEq ι
s : Set (α i)
x✝ : (x : ι) → α x
⊢ x✝ ∈ eval i ⁻¹' s ↔ x✝ ∈ {i}.pi (update (fun i => univ) i s)

tactic: simp
state_before: case h
ι : Type u_1
α : ι → Type u_2
β : ι → Type u_3
s✝ s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
i : ι
inst✝ : DecidableEq ι
s : Set (α i)
x✝ : (x : ι) → α x
⊢ x✝ ∈ eval i ⁻¹' s ↔ x✝ ∈ {i}.pi (update (fun i => univ) i s)
state_after: no goals
Theorem: HasProd.sigma_of_hasProd
File: Mathlib/Topology/Algebra/InfiniteSum/Constructions.lean

tactic: simpa [(hf'.hasProd.sigma hf).unique ha] using hf'.hasProd
state_before: α : Type u_1
β : Type u_2
γ✝ : Type u_3
δ : Type u_4
inst✝³ : CommMonoid α
inst✝² : TopologicalSpace α
inst✝¹ : ContinuousMul α
inst✝ : T3Space α
γ : β → Type u_5
f : (b : β) × γ b → α
g : β → α
a : α
ha : HasProd g a
hf : ∀ (b : β), HasProd (fun c => f ⟨b, c⟩) (g b)
hf' : Multipliable f
⊢ HasProd f a
state_after: no goals
Theorem: List.perm_split
File: Mathlib/Data/List/Sort.lean

tactic: cases' e : split l with l₁ l₂
state_before: α : Type u
r : α → α → Prop
inst✝ : DecidableRel r
a : α
l l₁' l₂' : List α
h : (a :: l).split = (l₁', l₂')
⊢ a :: l ~ l₁' ++ l₂'
state_after: case mk
α : Type u
r : α → α → Prop
inst✝ : DecidableRel r
a : α
l l₁' l₂' : List α
h : (a :: l).split = (l₁', l₂')
l₁ l₂ : List α
e : l.split = (l₁, l₂)
⊢ a :: l ~ l₁' ++ l₂'

tactic: injection (split_cons_of_eq _ e).symm.trans h
state_before: case mk
α : Type u
r : α → α → Prop
inst✝ : DecidableRel r
a : α
l l₁' l₂' : List α
h : (a :: l).split = (l₁', l₂')
l₁ l₂ : List α
e : l.split = (l₁, l₂)
⊢ a :: l ~ l₁' ++ l₂'
state_after: case mk
α : Type u
r : α → α → Prop
inst✝ : DecidableRel r
a : α
l l₁' l₂' : List α
h : (a :: l).split = (l₁', l₂')
l₁ l₂ : List α
e : l.split = (l₁, l₂)
fst_eq✝ : a :: l₂ = l₁'
snd_eq✝ : l₁ = l₂'
⊢ a :: l ~ l₁' ++ l₂'

tactic: substs l₁' l₂'
state_before: case mk
α : Type u
r : α → α → Prop
inst✝ : DecidableRel r
a : α
l l₁' l₂' : List α
h : (a :: l).split = (l₁', l₂')
l₁ l₂ : List α
e : l.split = (l₁, l₂)
fst_eq✝ : a :: l₂ = l₁'
snd_eq✝ : l₁ = l₂'
⊢ a :: l ~ l₁' ++ l₂'
state_after: case mk
α : Type u
r : α → α → Prop
inst✝ : DecidableRel r
a : α
l l₁ l₂ : List α
e : l.split = (l₁, l₂)
h : (a :: l).split = (a :: l₂, l₁)
⊢ a :: l ~ a :: l₂ ++ l₁

tactic: exact ((perm_split e).trans perm_append_comm).cons a
state_before: case mk
α : Type u
r : α → α → Prop
inst✝ : DecidableRel r
a : α
l l₁ l₂ : List α
e : l.split = (l₁, l₂)
h : (a :: l).split = (a :: l₂, l₁)
⊢ a :: l ~ a :: l₂ ++ l₁
state_after: no goals
Theorem: Multiset.Ico_filter_le_of_le_left
File: Mathlib/Order/Interval/Multiset.lean

tactic: rw [Ico, ← Finset.filter_val, Finset.Ico_filter_le_of_le_left hca]
state_before: α : Type u_1
inst✝² : Preorder α
inst✝¹ : LocallyFiniteOrder α
a b c : α
inst✝ : DecidablePred fun x => c ≤ x
hca : c ≤ a
⊢ filter (fun x => c ≤ x) (Ico a b) = Ico a b
state_after: no goals
Theorem: MeasurableSpace.CountablyGenerated.sup
File: Mathlib/MeasureTheory/MeasurableSpace/CountablyGenerated.lean

tactic: rcases h₁ with ⟨⟨b₁, hb₁c, rfl⟩⟩
state_before: α : Type u_1
β : Type u_2
m₁ m₂ : MeasurableSpace β
h₁ : CountablyGenerated β
h₂ : CountablyGenerated β
⊢ CountablyGenerated β
state_after: case mk.intro.intro
α : Type u_1
β : Type u_2
m₂ : MeasurableSpace β
h₂ : CountablyGenerated β
b₁ : Set (Set β)
hb₁c : b₁.Countable
⊢ CountablyGenerated β

tactic: rcases h₂ with ⟨⟨b₂, hb₂c, rfl⟩⟩
state_before: case mk.intro.intro
α : Type u_1
β : Type u_2
m₂ : MeasurableSpace β
h₂ : CountablyGenerated β
b₁ : Set (Set β)
hb₁c : b₁.Countable
⊢ CountablyGenerated β
state_after: case mk.intro.intro.mk.intro.intro
α : Type u_1
β : Type u_2
b₁ : Set (Set β)
hb₁c : b₁.Countable
b₂ : Set (Set β)
hb₂c : b₂.Countable
⊢ CountablyGenerated β

tactic: exact @mk _ (_ ⊔ _) ⟨_, hb₁c.union hb₂c, generateFrom_sup_generateFrom⟩
state_before: case mk.intro.intro.mk.intro.intro
α : Type u_1
β : Type u_2
b₁ : Set (Set β)
hb₁c : b₁.Countable
b₂ : Set (Set β)
hb₂c : b₂.Countable
⊢ CountablyGenerated β
state_after: no goals
Theorem: MeasureTheory.Lp.coe_nnnorm_toLp
File: Mathlib/MeasureTheory/Function/LpSpace.lean

tactic: rw [nnnorm_toLp f hf, ENNReal.coe_toNNReal hf.2.ne]
state_before: α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
f : α → E
hf : Memℒp f p μ
⊢ ↑‖Memℒp.toLp f hf‖₊ = snorm f p μ
state_after: no goals
Theorem: ENNReal.add_biSup'
File: Mathlib/Topology/Instances/ENNReal.lean

tactic: simp only [add_comm a, biSup_add' h]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
a b c d : ℝ≥0∞
r p✝ q : ℝ≥0
x y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
ι : Sort u_4
p : ι → Prop
h : ∃ i, p i
f : ι → ℝ≥0∞
⊢ a + ⨆ i, ⨆ (_ : p i), f i = ⨆ i, ⨆ (_ : p i), a + f i
state_after: no goals
Theorem: Set.integer_eq
File: Mathlib/RingTheory/DedekindDomain/SInteger.lean

tactic: ext
state_before: R : Type u
inst✝⁴ : CommRing R
inst✝³ : IsDedekindDomain R
S : Set (HeightOneSpectrum R)
K : Type v
inst✝² : Field K
inst✝¹ : Algebra R K
inst✝ : IsFractionRing R K
⊢ ↑(S.integer K).toSubring = ↑(⨅ v, ⨅ (_ : v ∉ S), v.valuation.valuationSubring.toSubring)
state_after: case h
R : Type u
inst✝⁴ : CommRing R
inst✝³ : IsDedekindDomain R
S : Set (HeightOneSpectrum R)
K : Type v
inst✝² : Field K
inst✝¹ : Algebra R K
inst✝ : IsFractionRing R K
x✝ : K
⊢ x✝ ∈ ↑(S.integer K).toSubring ↔ x✝ ∈ ↑(⨅ v, ⨅ (_ : v ∉ S), v.valuation.valuationSubring.toSubring)

tactic: simp
state_before: case h
R : Type u
inst✝⁴ : CommRing R
inst✝³ : IsDedekindDomain R
S : Set (HeightOneSpectrum R)
K : Type v
inst✝² : Field K
inst✝¹ : Algebra R K
inst✝ : IsFractionRing R K
x✝ : K
⊢ x✝ ∈ ↑(S.integer K).toSubring ↔ x✝ ∈ ↑(⨅ v, ⨅ (_ : v ∉ S), v.valuation.valuationSubring.toSubring)
state_after: no goals
Theorem: Polynomial.X_mul_monomial
File: Mathlib/Algebra/Polynomial/Basic.lean

tactic: rw [X_mul, monomial_mul_X]
state_before: R : Type u
a b : R
m n✝ : ℕ
inst✝ : Semiring R
p q : R[X]
n : ℕ
r : R
⊢ X * (monomial n) r = (monomial (n + 1)) r
state_after: no goals
Theorem: ContDiffWithinAt.fderivWithin_right
File: Mathlib/Analysis/Calculus/ContDiff/Basic.lean

tactic: rw [preimage_id']
state_before: 𝕜 : Type u_1
inst✝¹⁰ : NontriviallyNormedField 𝕜
D : Type uD
inst✝⁹ : NormedAddCommGroup D
inst✝⁸ : NormedSpace 𝕜 D
E : Type uE
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type uF
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type uG
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
X : Type u_2
inst✝¹ : NormedAddCommGroup X
inst✝ : NormedSpace 𝕜 X
s s₁ t u : Set E
f f₁ : E → F
g : F → G
x x₀ : E
c : F
b : E × F → G
m n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
hf : ContDiffWithinAt 𝕜 n f s x₀
hs : UniqueDiffOn 𝕜 s
hmn : m + 1 ≤ n
hx₀s : x₀ ∈ s
⊢ s ⊆ (fun x => x) ⁻¹' s
state_after: no goals
Theorem: hasLineDerivAt_iff_isLittleO_nhds_zero
File: Mathlib/Analysis/Calculus/LineDeriv/Basic.lean

tactic: simp only [HasLineDerivAt, hasDerivAt_iff_isLittleO_nhds_zero, zero_add, zero_smul, add_zero]
state_before: 𝕜 : Type u_1
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type u_3
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
f f₁ : E → F
f' f₀' f₁' : F
s t : Set E
x v : E
⊢ HasLineDerivAt 𝕜 f f' x v ↔ (fun t => f (x + t • v) - f x - t • f') =o[𝓝 0] fun t => t
state_after: no goals
Theorem: CategoryTheory.Limits.WidePushout.ι_desc
File: Mathlib/CategoryTheory/Limits/Shapes/WidePullbacks.lean

tactic: simp only [colimit.ι_desc, WidePushoutShape.mkCocone_pt, WidePushoutShape.mkCocone_ι_app]
state_before: J : Type w
C✝ : Type u
inst✝² : Category.{v, u} C✝
C : Type u
inst✝¹ : Category.{v, u} C
B : C
objs : J → C
arrows : (j : J) → B ⟶ objs j
inst✝ : HasWidePushout B objs arrows
X : C
f : B ⟶ X
fs : (j : J) → objs j ⟶ X
w : ∀ (j : J), arrows j ≫ fs j = f
j : J
⊢ ι arrows j ≫ desc f fs w = fs j
state_after: no goals
Theorem: HurwitzZeta.cosZeta_eq
File: Mathlib/NumberTheory/LSeries/HurwitzZeta.lean

tactic: rw [expZeta, expZeta, cosZeta_neg, sinZeta_neg]
state_before: a : UnitAddCircle
s : ℂ
⊢ cosZeta a s = (expZeta a s + expZeta (-a) s) / 2
state_after: a : UnitAddCircle
s : ℂ
⊢ cosZeta a s = (cosZeta a s + I * sinZeta a s + (cosZeta a s + I * -sinZeta a s)) / 2

tactic: ring_nf
state_before: a : UnitAddCircle
s : ℂ
⊢ cosZeta a s = (cosZeta a s + I * sinZeta a s + (cosZeta a s + I * -sinZeta a s)) / 2
state_after: no goals
Theorem: IsExposed.subset
File: Mathlib/Analysis/Convex/Exposed.lean

tactic: rintro x hx
state_before: 𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace 𝕜
inst✝³ : OrderedRing 𝕜
inst✝² : AddCommMonoid E
inst✝¹ : TopologicalSpace E
inst✝ : Module 𝕜 E
l : E →L[𝕜] 𝕜
A B C : Set E
X : Finset E
x : E
hAB : IsExposed 𝕜 A B
⊢ B ⊆ A
state_after: 𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace 𝕜
inst✝³ : OrderedRing 𝕜
inst✝² : AddCommMonoid E
inst✝¹ : TopologicalSpace E
inst✝ : Module 𝕜 E
l : E →L[𝕜] 𝕜
A B C : Set E
X : Finset E
x✝ : E
hAB : IsExposed 𝕜 A B
x : E
hx : x ∈ B
⊢ x ∈ A

tactic: obtain ⟨_, rfl⟩ := hAB ⟨x, hx⟩
state_before: 𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace 𝕜
inst✝³ : OrderedRing 𝕜
inst✝² : AddCommMonoid E
inst✝¹ : TopologicalSpace E
inst✝ : Module 𝕜 E
l : E →L[𝕜] 𝕜
A B C : Set E
X : Finset E
x✝ : E
hAB : IsExposed 𝕜 A B
x : E
hx : x ∈ B
⊢ x ∈ A
state_after: case intro
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace 𝕜
inst✝³ : OrderedRing 𝕜
inst✝² : AddCommMonoid E
inst✝¹ : TopologicalSpace E
inst✝ : Module 𝕜 E
l : E →L[𝕜] 𝕜
A C : Set E
X : Finset E
x✝ x : E
w✝ : E →L[𝕜] 𝕜
hAB : IsExposed 𝕜 A {x | x ∈ A ∧ ∀ y ∈ A, w✝ y ≤ w✝ x}
hx : x ∈ {x | x ∈ A ∧ ∀ y ∈ A, w✝ y ≤ w✝ x}
⊢ x ∈ A

tactic: exact hx.1
state_before: case intro
𝕜 : Type u_1
E : Type u_2
inst✝⁴ : TopologicalSpace 𝕜
inst✝³ : OrderedRing 𝕜
inst✝² : AddCommMonoid E
inst✝¹ : TopologicalSpace E
inst✝ : Module 𝕜 E
l : E →L[𝕜] 𝕜
A C : Set E
X : Finset E
x✝ x : E
w✝ : E →L[𝕜] 𝕜
hAB : IsExposed 𝕜 A {x | x ∈ A ∧ ∀ y ∈ A, w✝ y ≤ w✝ x}
hx : x ∈ {x | x ∈ A ∧ ∀ y ∈ A, w✝ y ≤ w✝ x}
⊢ x ∈ A
state_after: no goals
Theorem: Path.symm_range
File: Mathlib/Topology/Connected/PathConnected.lean

tactic: ext x
state_before: X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
x y z : X
ι : Type u_3
γ✝ : Path x y
a b : X
γ : Path a b
⊢ range ⇑γ.symm = range ⇑γ
state_after: case h
X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
x✝ y z : X
ι : Type u_3
γ✝ : Path x✝ y
a b : X
γ : Path a b
x : X
⊢ x ∈ range ⇑γ.symm ↔ x ∈ range ⇑γ

tactic: simp only [mem_range, Path.symm, DFunLike.coe, unitInterval.symm, SetCoe.exists, comp_apply,
  Subtype.coe_mk]
state_before: case h
X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
x✝ y z : X
ι : Type u_3
γ✝ : Path x✝ y
a b : X
γ : Path a b
x : X
⊢ x ∈ range ⇑γ.symm ↔ x ∈ range ⇑γ
state_after: case h
X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
x✝ y z : X
ι : Type u_3
γ✝ : Path x✝ y
a b : X
γ : Path a b
x : X
⊢ (∃ x_1, ∃ (h : x_1 ∈ I), γ.toFun ⟨1 - x_1, ⋯⟩ = x) ↔ ∃ x_1, ∃ (h : x_1 ∈ I), γ.toFun ⟨x_1, h⟩ = x

tactic: constructor <;> rintro ⟨y, hy, hxy⟩ <;> refine ⟨1 - y, mem_iff_one_sub_mem.mp hy, ?_⟩ <;>
  convert hxy
state_before: case h
X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
x✝ y z : X
ι : Type u_3
γ✝ : Path x✝ y
a b : X
γ : Path a b
x : X
⊢ (∃ x_1, ∃ (h : x_1 ∈ I), γ.toFun ⟨1 - x_1, ⋯⟩ = x) ↔ ∃ x_1, ∃ (h : x_1 ∈ I), γ.toFun ⟨x_1, h⟩ = x
state_after: case h.e'_2.h.e'_6.h.e'_3
X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
x✝ y✝ z : X
ι : Type u_3
γ✝ : Path x✝ y✝
a b : X
γ : Path a b
x : X
y : ℝ
hy : y ∈ I
hxy : γ.toFun ⟨y, hy⟩ = x
⊢ 1 - (1 - y) = y

tactic: simp
state_before: case h.e'_2.h.e'_6.h.e'_3
X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
x✝ y✝ z : X
ι : Type u_3
γ✝ : Path x✝ y✝
a b : X
γ : Path a b
x : X
y : ℝ
hy : y ∈ I
hxy : γ.toFun ⟨y, hy⟩ = x
⊢ 1 - (1 - y) = y
state_after: no goals
Theorem: PrimeSpectrum.coe_vanishingIdeal
File: Mathlib/AlgebraicGeometry/PrimeSpectrum/Basic.lean

tactic: ext f
state_before: R : Type u
S : Type v
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
t : Set (PrimeSpectrum R)
⊢ ↑(vanishingIdeal t) = {f | ∀ x ∈ t, f ∈ x.asIdeal}
state_after: case h
R : Type u
S : Type v
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
t : Set (PrimeSpectrum R)
f : R
⊢ f ∈ ↑(vanishingIdeal t) ↔ f ∈ {f | ∀ x ∈ t, f ∈ x.asIdeal}

tactic: rw [vanishingIdeal, SetLike.mem_coe, Submodule.mem_iInf]
state_before: case h
R : Type u
S : Type v
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
t : Set (PrimeSpectrum R)
f : R
⊢ f ∈ ↑(vanishingIdeal t) ↔ f ∈ {f | ∀ x ∈ t, f ∈ x.asIdeal}
state_after: case h
R : Type u
S : Type v
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
t : Set (PrimeSpectrum R)
f : R
⊢ (∀ (i : PrimeSpectrum R), f ∈ ⨅ (_ : i ∈ t), i.asIdeal) ↔ f ∈ {f | ∀ x ∈ t, f ∈ x.asIdeal}

tactic: apply forall_congr'
state_before: case h
R : Type u
S : Type v
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
t : Set (PrimeSpectrum R)
f : R
⊢ (∀ (i : PrimeSpectrum R), f ∈ ⨅ (_ : i ∈ t), i.asIdeal) ↔ f ∈ {f | ∀ x ∈ t, f ∈ x.asIdeal}
state_after: case h.h
R : Type u
S : Type v
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
t : Set (PrimeSpectrum R)
f : R
⊢ ∀ (a : PrimeSpectrum R), f ∈ ⨅ (_ : a ∈ t), a.asIdeal ↔ a ∈ t → f ∈ a.asIdeal

tactic: intro x
state_before: case h.h
R : Type u
S : Type v
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
t : Set (PrimeSpectrum R)
f : R
⊢ ∀ (a : PrimeSpectrum R), f ∈ ⨅ (_ : a ∈ t), a.asIdeal ↔ a ∈ t → f ∈ a.asIdeal
state_after: case h.h
R : Type u
S : Type v
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
t : Set (PrimeSpectrum R)
f : R
x : PrimeSpectrum R
⊢ f ∈ ⨅ (_ : x ∈ t), x.asIdeal ↔ x ∈ t → f ∈ x.asIdeal

tactic: rw [Submodule.mem_iInf]
state_before: case h.h
R : Type u
S : Type v
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
t : Set (PrimeSpectrum R)
f : R
x : PrimeSpectrum R
⊢ f ∈ ⨅ (_ : x ∈ t), x.asIdeal ↔ x ∈ t → f ∈ x.asIdeal
state_after: no goals
Theorem: SetTheory.PGame.inv_eq_of_equiv_zero
File: Mathlib/SetTheory/Game/Basic.lean

tactic: classical exact if_pos h
state_before: x : PGame
h : x ≈ 0
⊢ x⁻¹ = 0
state_after: no goals

tactic: exact if_pos h
state_before: x : PGame
h : x ≈ 0
⊢ x⁻¹ = 0
state_after: no goals
Theorem: Finsupp.filter_eq_self_iff
File: Mathlib/Data/Finsupp/Basic.lean

tactic: simp only [DFunLike.ext_iff, filter_eq_indicator, Set.indicator_apply_eq_self, Set.mem_setOf_eq,
  not_imp_comm]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝¹ : Zero M
p : α → Prop
inst✝ : DecidablePred p
f : α →₀ M
⊢ filter p f = f ↔ ∀ (x : α), f x ≠ 0 → p x
state_after: no goals
Theorem: Real.arcsin_lt_pi_div_two
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Inverse.lean

tactic: rw [sin_pi_div_two]
state_before: x✝ y x : ℝ
⊢ x < sin (π / 2) ↔ x < 1
state_after: no goals
Theorem: aemeasurable_uIoc_iff
File: Mathlib/MeasureTheory/Measure/AEMeasurable.lean

tactic: rw [uIoc_eq_union, aemeasurable_union_iff]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
δ : Type u_5
R : Type u_6
m0 : MeasurableSpace α
inst✝³ : MeasurableSpace β
inst✝² : MeasurableSpace γ
inst✝¹ : MeasurableSpace δ
f✝ g : α → β
μ ν : Measure α
inst✝ : LinearOrder α
f : α → β
a b : α
⊢ AEMeasurable f (μ.restrict (Ι a b)) ↔ AEMeasurable f (μ.restrict (Ioc a b)) ∧ AEMeasurable f (μ.restrict (Ioc b a))
state_after: no goals
Theorem: Function.Periodic.map_vadd_zmultiples
File: Mathlib/Algebra/Periodic.lean

tactic: rcases a with ⟨_, m, rfl⟩
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f g : α → β
c c₁ c₂ x✝ : α
inst✝ : AddCommGroup α
hf : Periodic f c
a : ↥(AddSubgroup.zmultiples c)
x : α
⊢ f (a +ᵥ x) = f x
state_after: case mk.intro
α : Type u_1
β : Type u_2
γ : Type u_3
f g : α → β
c c₁ c₂ x✝ : α
inst✝ : AddCommGroup α
hf : Periodic f c
x : α
m : ℤ
⊢ f (⟨(fun x => x • c) m, ⋯⟩ +ᵥ x) = f x

tactic: simp [AddSubgroup.vadd_def, add_comm _ x, hf.zsmul m x]
state_before: case mk.intro
α : Type u_1
β : Type u_2
γ : Type u_3
f g : α → β
c c₁ c₂ x✝ : α
inst✝ : AddCommGroup α
hf : Periodic f c
x : α
m : ℤ
⊢ f (⟨(fun x => x • c) m, ⋯⟩ +ᵥ x) = f x
state_after: no goals
Theorem: List.merge_loop_nil_right
File: .lake/packages/batteries/Batteries/Data/List/Lemmas.lean

tactic: cases l <;> rw [merge.loop]
state_before: α : Type u_1
s : α → α → Bool
l t : List α
⊢ merge.loop s l [] t = t.reverseAux l
state_after: case cons.x_3
α : Type u_1
s : α → α → Bool
t : List α
head✝ : α
tail✝ : List α
⊢ head✝ :: tail✝ = [] → False

tactic: intro
state_before: case cons.x_3
α : Type u_1
s : α → α → Bool
t : List α
head✝ : α
tail✝ : List α
⊢ head✝ :: tail✝ = [] → False
state_after: case cons.x_3
α : Type u_1
s : α → α → Bool
t : List α
head✝ : α
tail✝ : List α
x✝ : head✝ :: tail✝ = []
⊢ False

tactic: contradiction
state_before: case cons.x_3
α : Type u_1
s : α → α → Bool
t : List α
head✝ : α
tail✝ : List α
x✝ : head✝ :: tail✝ = []
⊢ False
state_after: no goals
Theorem: Filter.comap_sup
File: Mathlib/Order/Filter/Basic.lean

tactic: rw [sup_eq_iSup, comap_iSup, iSup_bool_eq, Bool.cond_true, Bool.cond_false]
state_before: α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
l f f₁ f₂ : Filter α
g g₁ g₂ : Filter β
m : α → β
m' : β → γ
s : Set α
t : Set β
⊢ comap m (g₁ ⊔ g₂) = comap m g₁ ⊔ comap m g₂
state_after: no goals
Theorem: Multiset.filterMap_eq_filter
File: Mathlib/Data/Multiset/Basic.lean

tactic: rw [← List.filterMap_eq_filter]
state_before: α : Type u_1
β : Type v
γ : Type u_2
p : α → Prop
inst✝ : DecidablePred p
s : Multiset α
l : List α
⊢ List.filterMap (Option.guard p) l = List.filter (fun b => decide (p b)) l
state_after: α : Type u_1
β : Type v
γ : Type u_2
p : α → Prop
inst✝ : DecidablePred p
s : Multiset α
l : List α
⊢ List.filterMap (Option.guard p) l = List.filterMap (Option.guard fun x => decide (p x) = true) l

tactic: congr
state_before: α : Type u_1
β : Type v
γ : Type u_2
p : α → Prop
inst✝ : DecidablePred p
s : Multiset α
l : List α
⊢ List.filterMap (Option.guard p) l = List.filterMap (Option.guard fun x => decide (p x) = true) l
state_after: case e_f
α : Type u_1
β : Type v
γ : Type u_2
p : α → Prop
inst✝ : DecidablePred p
s : Multiset α
l : List α
⊢ Option.guard p = Option.guard fun x => decide (p x) = true

tactic: funext a
state_before: case e_f
α : Type u_1
β : Type v
γ : Type u_2
p : α → Prop
inst✝ : DecidablePred p
s : Multiset α
l : List α
⊢ Option.guard p = Option.guard fun x => decide (p x) = true
state_after: case e_f.h
α : Type u_1
β : Type v
γ : Type u_2
p : α → Prop
inst✝ : DecidablePred p
s : Multiset α
l : List α
a : α
⊢ Option.guard p a = Option.guard (fun x => decide (p x) = true) a

tactic: simp
state_before: case e_f.h
α : Type u_1
β : Type v
γ : Type u_2
p : α → Prop
inst✝ : DecidablePred p
s : Multiset α
l : List α
a : α
⊢ Option.guard p a = Option.guard (fun x => decide (p x) = true) a
state_after: no goals
Theorem: IsSMulRegular.mul_iff
File: Mathlib/Algebra/Regular/SMul.lean

tactic: rw [← mul_and_mul_iff]
state_before: R : Type u_1
S : Type u_2
M : Type u_3
a b : R
s : S
inst✝² : CommSemigroup R
inst✝¹ : SMul R M
inst✝ : IsScalarTower R R M
⊢ IsSMulRegular M (a * b) ↔ IsSMulRegular M a ∧ IsSMulRegular M b
state_after: R : Type u_1
S : Type u_2
M : Type u_3
a b : R
s : S
inst✝² : CommSemigroup R
inst✝¹ : SMul R M
inst✝ : IsScalarTower R R M
⊢ IsSMulRegular M (a * b) ↔ IsSMulRegular M (a * b) ∧ IsSMulRegular M (b * a)

tactic: exact ⟨fun ab => ⟨ab, by rwa [mul_comm]⟩, fun rab => rab.1⟩
state_before: R : Type u_1
S : Type u_2
M : Type u_3
a b : R
s : S
inst✝² : CommSemigroup R
inst✝¹ : SMul R M
inst✝ : IsScalarTower R R M
⊢ IsSMulRegular M (a * b) ↔ IsSMulRegular M (a * b) ∧ IsSMulRegular M (b * a)
state_after: no goals

tactic: rwa [mul_comm]
state_before: R : Type u_1
S : Type u_2
M : Type u_3
a b : R
s : S
inst✝² : CommSemigroup R
inst✝¹ : SMul R M
inst✝ : IsScalarTower R R M
ab : IsSMulRegular M (a * b)
⊢ IsSMulRegular M (b * a)
state_after: no goals