1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: List.getLast_append'
File: Mathlib/Data/List/Basic.lean

tactic: induction' l₁ with _ _ ih
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁✝ l₂✝ l₁ l₂ : List α
h : l₂ ≠ []
⊢ (l₁ ++ l₂).getLast ⋯ = l₂.getLast h
state_after: case nil
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂✝ l₂ : List α
h : l₂ ≠ []
⊢ ([] ++ l₂).getLast ⋯ = l₂.getLast h

case cons
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂✝ l₂ : List α
h : l₂ ≠ []
head✝ : α
tail✝ : List α
ih : (tail✝ ++ l₂).getLast ⋯ = l₂.getLast h
⊢ (head✝ :: tail✝ ++ l₂).getLast ⋯ = l₂.getLast h

tactic: simp
state_before: case nil
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂✝ l₂ : List α
h : l₂ ≠ []
⊢ ([] ++ l₂).getLast ⋯ = l₂.getLast h
state_after: no goals

tactic: simp only [cons_append]
state_before: case cons
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂✝ l₂ : List α
h : l₂ ≠ []
head✝ : α
tail✝ : List α
ih : (tail✝ ++ l₂).getLast ⋯ = l₂.getLast h
⊢ (head✝ :: tail✝ ++ l₂).getLast ⋯ = l₂.getLast h
state_after: case cons
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂✝ l₂ : List α
h : l₂ ≠ []
head✝ : α
tail✝ : List α
ih : (tail✝ ++ l₂).getLast ⋯ = l₂.getLast h
⊢ (head✝ :: (tail✝ ++ l₂)).getLast ⋯ = l₂.getLast h

tactic: rw [List.getLast_cons]
state_before: case cons
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂✝ l₂ : List α
h : l₂ ≠ []
head✝ : α
tail✝ : List α
ih : (tail✝ ++ l₂).getLast ⋯ = l₂.getLast h
⊢ (head✝ :: (tail✝ ++ l₂)).getLast ⋯ = l₂.getLast h
state_after: case cons
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂✝ l₂ : List α
h : l₂ ≠ []
head✝ : α
tail✝ : List α
ih : (tail✝ ++ l₂).getLast ⋯ = l₂.getLast h
⊢ (tail✝ ++ l₂).getLast ?cons = l₂.getLast h

case cons
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂✝ l₂ : List α
h : l₂ ≠ []
head✝ : α
tail✝ : List α
ih : (tail✝ ++ l₂).getLast ⋯ = l₂.getLast h
⊢ tail✝ ++ l₂ ≠ []

tactic: exact ih
state_before: case cons
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂✝ l₂ : List α
h : l₂ ≠ []
head✝ : α
tail✝ : List α
ih : (tail✝ ++ l₂).getLast ⋯ = l₂.getLast h
⊢ (tail✝ ++ l₂).getLast ?cons = l₂.getLast h

case cons
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂✝ l₂ : List α
h : l₂ ≠ []
head✝ : α
tail✝ : List α
ih : (tail✝ ++ l₂).getLast ⋯ = l₂.getLast h
⊢ tail✝ ++ l₂ ≠ []
state_after: no goals
Theorem: AlgebraicTopology.DoldKan.HigherFacesVanish.of_P
File: Mathlib/AlgebraicTopology/DoldKan/Projections.lean

tactic: omega
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
n : ℕ
j : Fin (n + 1)
hj₁ : n + 1 ≤ ↑j + 0
⊢ (P 0).f (n + 1) ≫ X.δ j.succ = 0
state_after: no goals

tactic: simp only [P_succ]
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
q n : ℕ
⊢ HigherFacesVanish (q + 1) ((P (q + 1)).f (n + 1))
state_after: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
q n : ℕ
⊢ HigherFacesVanish (q + 1) ((P q ≫ (𝟙 K[X] + Hσ q)).f (n + 1))

tactic: exact (of_P q n).induction
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
q n : ℕ
⊢ HigherFacesVanish (q + 1) ((P q ≫ (𝟙 K[X] + Hσ q)).f (n + 1))
state_after: no goals
Theorem: dist_anti_left_pi
File: Mathlib/Analysis/Normed/Order/UpperLower.lean

tactic: refine' fun y₁ hy₁ y₂ hy₂ hy ↦ NNReal.coe_le_coe.2 (Finset.sup_mono_fun fun i _ ↦ _)
state_before: α : Type u_1
ι : Type u_2
inst✝ : Fintype ι
s t : Set (ι → ℝ)
a₁ a₂ b₁ b₂ x y : ι → ℝ
δ : ℝ
⊢ AntitoneOn (fun x => dist x y) (Iic y)
state_after: α : Type u_1
ι : Type u_2
inst✝ : Fintype ι
s t : Set (ι → ℝ)
a₁ a₂ b₁ b₂ x y : ι → ℝ
δ : ℝ
y₁ : ι → ℝ
hy₁ : y₁ ∈ Iic y
y₂ : ι → ℝ
hy₂ : y₂ ∈ Iic y
hy : y₁ ≤ y₂
i : ι
x✝ : i ∈ Finset.univ
⊢ nndist (y₂ i) (y i) ≤ nndist (y₁ i) (y i)

tactic: rw [Real.nndist_eq', Real.nnabs_of_nonneg (sub_nonneg_of_le (‹_ ≤ y› i : y₂ i ≤ y i)),
  Real.nndist_eq', Real.nnabs_of_nonneg (sub_nonneg_of_le (‹_ ≤ y› i : y₁ i ≤ y i))]
state_before: α : Type u_1
ι : Type u_2
inst✝ : Fintype ι
s t : Set (ι → ℝ)
a₁ a₂ b₁ b₂ x y : ι → ℝ
δ : ℝ
y₁ : ι → ℝ
hy₁ : y₁ ∈ Iic y
y₂ : ι → ℝ
hy₂ : y₂ ∈ Iic y
hy : y₁ ≤ y₂
i : ι
x✝ : i ∈ Finset.univ
⊢ nndist (y₂ i) (y i) ≤ nndist (y₁ i) (y i)
state_after: α : Type u_1
ι : Type u_2
inst✝ : Fintype ι
s t : Set (ι → ℝ)
a₁ a₂ b₁ b₂ x y : ι → ℝ
δ : ℝ
y₁ : ι → ℝ
hy₁ : y₁ ∈ Iic y
y₂ : ι → ℝ
hy₂ : y₂ ∈ Iic y
hy : y₁ ≤ y₂
i : ι
x✝ : i ∈ Finset.univ
⊢ (y i - y₂ i).toNNReal ≤ (y i - y₁ i).toNNReal

tactic: exact Real.toNNReal_mono (sub_le_sub_left (hy _) _)
state_before: α : Type u_1
ι : Type u_2
inst✝ : Fintype ι
s t : Set (ι → ℝ)
a₁ a₂ b₁ b₂ x y : ι → ℝ
δ : ℝ
y₁ : ι → ℝ
hy₁ : y₁ ∈ Iic y
y₂ : ι → ℝ
hy₂ : y₂ ∈ Iic y
hy : y₁ ≤ y₂
i : ι
x✝ : i ∈ Finset.univ
⊢ (y i - y₂ i).toNNReal ≤ (y i - y₁ i).toNNReal
state_after: no goals
Theorem: Convex.image_sub_le_mul_sub_of_deriv_le
File: Mathlib/Analysis/Calculus/MeanValue.lean

tactic: rw [deriv.neg, neg_le_neg_iff]
state_before: E : Type u_1
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type u_2
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
D : Set ℝ
hD : Convex ℝ D
f : ℝ → ℝ
hf : ContinuousOn f D
hf' : DifferentiableOn ℝ f (interior D)
C : ℝ
le_hf' : ∀ x ∈ interior D, deriv f x ≤ C
x✝ : ℝ
hx✝ : x✝ ∈ D
y : ℝ
hy : y ∈ D
hxy : x✝ ≤ y
x : ℝ
hx : x ∈ interior D
⊢ -C ≤ deriv (fun y => -f y) x
state_after: E : Type u_1
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type u_2
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
D : Set ℝ
hD : Convex ℝ D
f : ℝ → ℝ
hf : ContinuousOn f D
hf' : DifferentiableOn ℝ f (interior D)
C : ℝ
le_hf' : ∀ x ∈ interior D, deriv f x ≤ C
x✝ : ℝ
hx✝ : x✝ ∈ D
y : ℝ
hy : y ∈ D
hxy : x✝ ≤ y
x : ℝ
hx : x ∈ interior D
⊢ deriv f x ≤ C

tactic: exact le_hf' x hx
state_before: E : Type u_1
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type u_2
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
D : Set ℝ
hD : Convex ℝ D
f : ℝ → ℝ
hf : ContinuousOn f D
hf' : DifferentiableOn ℝ f (interior D)
C : ℝ
le_hf' : ∀ x ∈ interior D, deriv f x ≤ C
x✝ : ℝ
hx✝ : x✝ ∈ D
y : ℝ
hy : y ∈ D
hxy : x✝ ≤ y
x : ℝ
hx : x ∈ interior D
⊢ deriv f x ≤ C
state_after: no goals

tactic: linarith [hD.mul_sub_le_image_sub_of_le_deriv hf.neg hf'.neg hf'_ge x hx y hy hxy]
state_before: E : Type u_1
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type u_2
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
D : Set ℝ
hD : Convex ℝ D
f : ℝ → ℝ
hf : ContinuousOn f D
hf' : DifferentiableOn ℝ f (interior D)
C : ℝ
le_hf' : ∀ x ∈ interior D, deriv f x ≤ C
x : ℝ
hx : x ∈ D
y : ℝ
hy : y ∈ D
hxy : x ≤ y
hf'_ge : ∀ x ∈ interior D, -C ≤ deriv (fun y => -f y) x
⊢ f y - f x ≤ C * (y - x)
state_after: no goals
Theorem: PowerSeries.smul_eq_C_mul
File: Mathlib/RingTheory/PowerSeries/Basic.lean

tactic: ext
state_before: R : Type u_1
inst✝ : Semiring R
f : R⟦X⟧
a : R
⊢ a • f = (C R) a * f
state_after: case h
R : Type u_1
inst✝ : Semiring R
f : R⟦X⟧
a : R
n✝ : ℕ
⊢ (coeff R n✝) (a • f) = (coeff R n✝) ((C R) a * f)

tactic: simp
state_before: case h
R : Type u_1
inst✝ : Semiring R
f : R⟦X⟧
a : R
n✝ : ℕ
⊢ (coeff R n✝) (a • f) = (coeff R n✝) ((C R) a * f)
state_after: no goals
Theorem: quasiIsoAt_iff_isIso_homologyMap
File: Mathlib/Algebra/Homology/QuasiIso.lean

tactic: rw [quasiIsoAt_iff, ShortComplex.quasiIso_iff]
state_before: ι✝ : Type u_1
ι : Type u_2
C : Type u
inst✝³ : Category.{v, u} C
inst✝² : HasZeroMorphisms C
c : ComplexShape ι
K L M K' L' : HomologicalComplex C c
f : K ⟶ L
i : ι
inst✝¹ : K.HasHomology i
inst✝ : L.HasHomology i
⊢ QuasiIsoAt f i ↔ IsIso (homologyMap f i)
state_after: ι✝ : Type u_1
ι : Type u_2
C : Type u
inst✝³ : Category.{v, u} C
inst✝² : HasZeroMorphisms C
c : ComplexShape ι
K L M K' L' : HomologicalComplex C c
f : K ⟶ L
i : ι
inst✝¹ : K.HasHomology i
inst✝ : L.HasHomology i
⊢ IsIso (ShortComplex.homologyMap ((shortComplexFunctor C c i).map f)) ↔ IsIso (homologyMap f i)

tactic: rfl
state_before: ι✝ : Type u_1
ι : Type u_2
C : Type u
inst✝³ : Category.{v, u} C
inst✝² : HasZeroMorphisms C
c : ComplexShape ι
K L M K' L' : HomologicalComplex C c
f : K ⟶ L
i : ι
inst✝¹ : K.HasHomology i
inst✝ : L.HasHomology i
⊢ IsIso (ShortComplex.homologyMap ((shortComplexFunctor C c i).map f)) ↔ IsIso (homologyMap f i)
state_after: no goals
Theorem: SetTheory.PGame.quot_neg_mul_neg
File: Mathlib/SetTheory/Game/Basic.lean

tactic: simp
state_before: x y : PGame
⊢ ⟦-x * -y⟧ = ⟦x * y⟧
state_after: no goals
Theorem: PrimeSpectrum.vanishingIdeal_anti_mono_iff
File: Mathlib/AlgebraicGeometry/PrimeSpectrum/Basic.lean

tactic: rw [← ht.closure_subset_iff, ← ht.closure_eq]
state_before: R : Type u
S : Type v
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
s t : Set (PrimeSpectrum R)
ht : IsClosed t
h : vanishingIdeal t ≤ vanishingIdeal s
⊢ s ⊆ t
state_after: R : Type u
S : Type v
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
s t : Set (PrimeSpectrum R)
ht : IsClosed t
h : vanishingIdeal t ≤ vanishingIdeal s
⊢ closure s ⊆ closure t

tactic: convert ← zeroLocus_anti_mono_ideal h <;> apply zeroLocus_vanishingIdeal_eq_closure
state_before: R : Type u
S : Type v
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
s t : Set (PrimeSpectrum R)
ht : IsClosed t
h : vanishingIdeal t ≤ vanishingIdeal s
⊢ closure s ⊆ closure t
state_after: no goals
Theorem: Real.isPiSystem_Ici_rat
File: Mathlib/MeasureTheory/Constructions/BorelSpace/Real.lean

tactic: convert isPiSystem_image_Ici (((↑) : ℚ → ℝ) '' univ)
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort y
s t u : Set α
⊢ IsPiSystem (⋃ a, {Ici ↑a})
state_after: case h.e'_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort y
s t u : Set α
⊢ ⋃ a, {Ici ↑a} = Ici '' (Rat.cast '' univ)

tactic: ext x
state_before: case h.e'_2
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort y
s t u : Set α
⊢ ⋃ a, {Ici ↑a} = Ici '' (Rat.cast '' univ)
state_after: case h.e'_2.h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort y
s t u : Set α
x : Set ℝ
⊢ x ∈ ⋃ a, {Ici ↑a} ↔ x ∈ Ici '' (Rat.cast '' univ)

tactic: simp only [iUnion_singleton_eq_range, mem_range, image_univ, mem_image, exists_exists_eq_and]
state_before: case h.e'_2.h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort y
s t u : Set α
x : Set ℝ
⊢ x ∈ ⋃ a, {Ici ↑a} ↔ x ∈ Ici '' (Rat.cast '' univ)
state_after: no goals
Theorem: iSup_sUnion
File: Mathlib/Data/Set/Lattice.lean

tactic: rw [sUnion_eq_iUnion, iSup_iUnion, ← iSup_subtype'']
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
inst✝ : CompleteLattice β
S : Set (Set α)
f : α → β
⊢ ⨆ x ∈ ⋃₀ S, f x = ⨆ s ∈ S, ⨆ x ∈ s, f x
state_after: no goals
Theorem: List.tfae_not_iff
File: Mathlib/Data/List/TFAE.lean

tactic: classical
simp only [TFAE, mem_map, forall_exists_index, and_imp, forall_apply_eq_imp_iff₂,
  Decidable.not_iff_not]
state_before: l : List Prop
⊢ (map Not l).TFAE ↔ l.TFAE
state_after: no goals

tactic: simp only [TFAE, mem_map, forall_exists_index, and_imp, forall_apply_eq_imp_iff₂,
  Decidable.not_iff_not]
state_before: l : List Prop
⊢ (map Not l).TFAE ↔ l.TFAE
state_after: no goals
Theorem: SimpleGraph.left_nonuniformWitnesses_card
File: Mathlib/Combinatorics/SimpleGraph/Regularity/Uniform.lean

tactic: rw [nonuniformWitnesses, dif_pos h]
state_before: α : Type u_1
𝕜 : Type u_2
inst✝¹ : LinearOrderedField 𝕜
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : 𝕜
s t : Finset α
a b : α
h : ¬G.IsUniform ε s t
⊢ ↑s.card * ε ≤ ↑(G.nonuniformWitnesses ε s t).1.card
state_after: α : Type u_1
𝕜 : Type u_2
inst✝¹ : LinearOrderedField 𝕜
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : 𝕜
s t : Finset α
a b : α
h : ¬G.IsUniform ε s t
⊢ ↑s.card * ε ≤ ↑(⋯.choose, ⋯.choose).1.card

tactic: exact (not_isUniform_iff.1 h).choose_spec.2.choose_spec.2.1
state_before: α : Type u_1
𝕜 : Type u_2
inst✝¹ : LinearOrderedField 𝕜
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : 𝕜
s t : Finset α
a b : α
h : ¬G.IsUniform ε s t
⊢ ↑s.card * ε ≤ ↑(⋯.choose, ⋯.choose).1.card
state_after: no goals
Theorem: AList.lookupFinsupp_apply
File: Mathlib/Data/Finsupp/AList.lean

tactic: convert rfl
state_before: α : Type u_1
M : Type u_2
inst✝¹ : Zero M
inst✝ : DecidableEq α
l : AList fun _x => M
a : α
⊢ l.lookupFinsupp a = (lookup a l).getD 0
state_after: case h.e'_3
α : Type u_1
M : Type u_2
inst✝¹ : Zero M
inst✝ : DecidableEq α
l : AList fun _x => M
a : α
⊢ (lookup a l).getD 0 = l.lookupFinsupp a

tactic: congr
state_before: case h.e'_3
α : Type u_1
M : Type u_2
inst✝¹ : Zero M
inst✝ : DecidableEq α
l : AList fun _x => M
a : α
⊢ (lookup a l).getD 0 = l.lookupFinsupp a
state_after: no goals
Theorem: Fin.castLE_inj
File: Mathlib/Data/Fin/Basic.lean

tactic: simp [ext_iff]
state_before: n m : ℕ
hmn : m ≤ n
a b : Fin m
⊢ castLE hmn a = castLE hmn b ↔ a = b
state_after: no goals
Theorem: Equiv.swap_mul_swap_mul_swap
File: Mathlib/GroupTheory/Perm/Basic.lean

tactic: nth_rewrite 3 [← swap_inv]
state_before: α : Type u
β : Type v
inst✝ : DecidableEq α
x y z : α
hxy : x ≠ y
hxz : x ≠ z
⊢ swap y z * swap x y * swap y z = swap z x
state_after: α : Type u
β : Type v
inst✝ : DecidableEq α
x y z : α
hxy : x ≠ y
hxz : x ≠ z
⊢ swap y z * swap x y * (swap y z)⁻¹ = swap z x

tactic: rw [← swap_apply_apply, swap_apply_left, swap_apply_of_ne_of_ne hxy hxz, swap_comm]
state_before: α : Type u
β : Type v
inst✝ : DecidableEq α
x y z : α
hxy : x ≠ y
hxz : x ≠ z
⊢ swap y z * swap x y * (swap y z)⁻¹ = swap z x
state_after: no goals
Theorem: Ordnode.all_rotateL
File: Mathlib/Data/Ordmap/Ordset.lean

tactic: cases r <;> simp [rotateL, all_node']
state_before: α : Type u_1
P : α → Prop
l : Ordnode α
x : α
r : Ordnode α
⊢ All P (l.rotateL x r) ↔ All P l ∧ P x ∧ All P r
state_after: case node
α : Type u_1
P : α → Prop
l : Ordnode α
x : α
size✝ : ℕ
l✝ : Ordnode α
x✝ : α
r✝ : Ordnode α
⊢ All P (if l✝.size < ratio * r✝.size then l.node3L x l✝ x✝ r✝ else l.node4L x l✝ x✝ r✝) ↔
    All P l ∧ P x ∧ All P (node size✝ l✝ x✝ r✝)

tactic: split_ifs <;>
simp [all_node3L, all_node4L, All, and_assoc]
state_before: case node
α : Type u_1
P : α → Prop
l : Ordnode α
x : α
size✝ : ℕ
l✝ : Ordnode α
x✝ : α
r✝ : Ordnode α
⊢ All P (if l✝.size < ratio * r✝.size then l.node3L x l✝ x✝ r✝ else l.node4L x l✝ x✝ r✝) ↔
    All P l ∧ P x ∧ All P (node size✝ l✝ x✝ r✝)
state_after: no goals
Theorem: ContinuousMap.algHom_ext_map_X
File: Mathlib/Topology/ContinuousFunction/StoneWeierstrass.lean

tactic: suffices (⊤ : Subalgebra ℝ C(s, ℝ)) ≤ AlgHom.equalizer φ ψ from
  AlgHom.ext fun x => this (by trivial)
state_before: A : Type u_1
inst✝⁴ : Ring A
inst✝³ : Algebra ℝ A
inst✝² : TopologicalSpace A
inst✝¹ : T2Space A
s : Set ℝ
inst✝ : CompactSpace ↑s
φ ψ : C(↑s, ℝ) →ₐ[ℝ] A
hφ : Continuous ⇑φ
hψ : Continuous ⇑ψ
h : φ ((toContinuousMapOnAlgHom s) X) = ψ ((toContinuousMapOnAlgHom s) X)
⊢ φ = ψ
state_after: A : Type u_1
inst✝⁴ : Ring A
inst✝³ : Algebra ℝ A
inst✝² : TopologicalSpace A
inst✝¹ : T2Space A
s : Set ℝ
inst✝ : CompactSpace ↑s
φ ψ : C(↑s, ℝ) →ₐ[ℝ] A
hφ : Continuous ⇑φ
hψ : Continuous ⇑ψ
h : φ ((toContinuousMapOnAlgHom s) X) = ψ ((toContinuousMapOnAlgHom s) X)
⊢ ⊤ ≤ φ.equalizer ψ

tactic: rw [← polynomialFunctions.topologicalClosure s]
state_before: A : Type u_1
inst✝⁴ : Ring A
inst✝³ : Algebra ℝ A
inst✝² : TopologicalSpace A
inst✝¹ : T2Space A
s : Set ℝ
inst✝ : CompactSpace ↑s
φ ψ : C(↑s, ℝ) →ₐ[ℝ] A
hφ : Continuous ⇑φ
hψ : Continuous ⇑ψ
h : φ ((toContinuousMapOnAlgHom s) X) = ψ ((toContinuousMapOnAlgHom s) X)
⊢ ⊤ ≤ φ.equalizer ψ
state_after: A : Type u_1
inst✝⁴ : Ring A
inst✝³ : Algebra ℝ A
inst✝² : TopologicalSpace A
inst✝¹ : T2Space A
s : Set ℝ
inst✝ : CompactSpace ↑s
φ ψ : C(↑s, ℝ) →ₐ[ℝ] A
hφ : Continuous ⇑φ
hψ : Continuous ⇑ψ
h : φ ((toContinuousMapOnAlgHom s) X) = ψ ((toContinuousMapOnAlgHom s) X)
⊢ (polynomialFunctions s).topologicalClosure ≤ φ.equalizer ψ

tactic: exact Subalgebra.topologicalClosure_minimal (polynomialFunctions s)
  (polynomialFunctions.le_equalizer s φ ψ h) (isClosed_eq hφ hψ)
state_before: A : Type u_1
inst✝⁴ : Ring A
inst✝³ : Algebra ℝ A
inst✝² : TopologicalSpace A
inst✝¹ : T2Space A
s : Set ℝ
inst✝ : CompactSpace ↑s
φ ψ : C(↑s, ℝ) →ₐ[ℝ] A
hφ : Continuous ⇑φ
hψ : Continuous ⇑ψ
h : φ ((toContinuousMapOnAlgHom s) X) = ψ ((toContinuousMapOnAlgHom s) X)
⊢ (polynomialFunctions s).topologicalClosure ≤ φ.equalizer ψ
state_after: no goals

tactic: trivial
state_before: A : Type u_1
inst✝⁴ : Ring A
inst✝³ : Algebra ℝ A
inst✝² : TopologicalSpace A
inst✝¹ : T2Space A
s : Set ℝ
inst✝ : CompactSpace ↑s
φ ψ : C(↑s, ℝ) →ₐ[ℝ] A
hφ : Continuous ⇑φ
hψ : Continuous ⇑ψ
h : φ ((toContinuousMapOnAlgHom s) X) = ψ ((toContinuousMapOnAlgHom s) X)
this : ⊤ ≤ φ.equalizer ψ
x : C(↑s, ℝ)
⊢ x ∈ ⊤
state_after: no goals
Theorem: Real.diam_Ico
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 (Ico a b) = b - a
state_after: no goals
Theorem: Relation.ReflTransGen.lift'
File: Mathlib/Logic/Relation.lean

tactic: simpa [reflTransGen_idem] using hab.lift f h
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ε : Type u_5
ζ : Type u_6
r : α → α → Prop
a✝ b✝ c d : α
p : β → β → Prop
a b : α
f : α → β
h : ∀ (a b : α), r a b → ReflTransGen p (f a) (f b)
hab : ReflTransGen r a b
⊢ ReflTransGen p (f a) (f b)
state_after: no goals
Theorem: Set.prod_univ_range_eq
File: Mathlib/Data/Set/Prod.lean

tactic: simp [range]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
s s₁ s₂ : Set α
t t₁ t₂ : Set β
a : α
b : β
m₂ : β → δ
⊢ ∀ (x : α × δ), x ∈ univ ×ˢ range m₂ ↔ x ∈ range fun p => (p.1, m₂ p.2)
state_after: no goals
Theorem: smul_pos_iff_of_pos_right
File: Mathlib/Algebra/Order/Module/Defs.lean

tactic: simpa only [zero_smul] using smul_lt_smul_iff_of_pos_right hb (a₁ := 0) (a₂ := a)
state_before: α : Type u_1
β : Type u_2
a a₁ a₂ : α
b b₁ b₂ : β
inst✝⁶ : Zero α
inst✝⁵ : Zero β
inst✝⁴ : SMulWithZero α β
inst✝³ : Preorder α
inst✝² : Preorder β
inst✝¹ : SMulPosStrictMono α β
inst✝ : SMulPosReflectLT α β
hb : 0 < b
⊢ 0 < a • b ↔ 0 < a
state_after: no goals
Theorem: LinearIndependent.finset_card_le_finrank
File: Mathlib/LinearAlgebra/Dimension/Finite.lean

tactic: rw [← Fintype.card_coe]
state_before: R : Type u
M M₁ : Type v
M' : Type v'
ι : Type w
inst✝⁸ : Ring R
inst✝⁷ : AddCommGroup M
inst✝⁶ : AddCommGroup M'
inst✝⁵ : AddCommGroup M₁
inst✝⁴ : Module R M
inst✝³ : Module R M'
inst✝² : Module R M₁
inst✝¹ : StrongRankCondition R
inst✝ : Module.Finite R M
b : Finset M
h : LinearIndependent R fun x => ↑x
⊢ b.card ≤ finrank R M
state_after: R : Type u
M M₁ : Type v
M' : Type v'
ι : Type w
inst✝⁸ : Ring R
inst✝⁷ : AddCommGroup M
inst✝⁶ : AddCommGroup M'
inst✝⁵ : AddCommGroup M₁
inst✝⁴ : Module R M
inst✝³ : Module R M'
inst✝² : Module R M₁
inst✝¹ : StrongRankCondition R
inst✝ : Module.Finite R M
b : Finset M
h : LinearIndependent R fun x => ↑x
⊢ Fintype.card { x // x ∈ b } ≤ finrank R M

tactic: exact h.fintype_card_le_finrank
state_before: R : Type u
M M₁ : Type v
M' : Type v'
ι : Type w
inst✝⁸ : Ring R
inst✝⁷ : AddCommGroup M
inst✝⁶ : AddCommGroup M'
inst✝⁵ : AddCommGroup M₁
inst✝⁴ : Module R M
inst✝³ : Module R M'
inst✝² : Module R M₁
inst✝¹ : StrongRankCondition R
inst✝ : Module.Finite R M
b : Finset M
h : LinearIndependent R fun x => ↑x
⊢ Fintype.card { x // x ∈ b } ≤ finrank R M
state_after: no goals
Theorem: Ideal.associatesEquivIsPrincipal_map_zero
File: Mathlib/RingTheory/Ideal/IsPrincipal.lean

tactic: rw [← Associates.mk_zero, ← Associates.quotient_mk_eq_mk, associatesEquivIsPrincipal_apply,
  Set.singleton_zero, span_zero, zero_eq_bot]
state_before: R : Type u_1
inst✝¹ : CommRing R
inst✝ : IsDomain R
⊢ ↑((associatesEquivIsPrincipal R) 0) = 0
state_after: no goals
Theorem: MeasurableSpace.measurableSet_countableGeneratingSet
File: Mathlib/MeasureTheory/MeasurableSpace/CountablyGenerated.lean

tactic: exact measurableSet_generateFrom hs
state_before: α : Type u_1
β : Type u_2
inst✝¹ : MeasurableSpace α
inst✝ : CountablyGenerated α
s : Set α
hs : s ∈ countableGeneratingSet α
⊢ MeasurableSet s
state_after: no goals
Theorem: Fin.mul_zero'
File: Mathlib/Data/Fin/Basic.lean

tactic: simp [ext_iff, mul_def]
state_before: n m : ℕ
inst✝ : NeZero n
k : Fin n
⊢ k * 0 = 0
state_after: no goals
Theorem: DFinsupp.mapRange_zero
File: Mathlib/Data/DFinsupp/Basic.lean

tactic: ext
state_before: ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝² : (i : ι) → Zero (β i)
inst✝¹ : (i : ι) → Zero (β₁ i)
inst✝ : (i : ι) → Zero (β₂ i)
f : (i : ι) → β₁ i → β₂ i
hf : ∀ (i : ι), f i 0 = 0
⊢ mapRange f hf 0 = 0
state_after: case h
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝² : (i : ι) → Zero (β i)
inst✝¹ : (i : ι) → Zero (β₁ i)
inst✝ : (i : ι) → Zero (β₂ i)
f : (i : ι) → β₁ i → β₂ i
hf : ∀ (i : ι), f i 0 = 0
i✝ : ι
⊢ (mapRange f hf 0) i✝ = 0 i✝

tactic: simp only [mapRange_apply, coe_zero, Pi.zero_apply, hf]
state_before: case h
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝² : (i : ι) → Zero (β i)
inst✝¹ : (i : ι) → Zero (β₁ i)
inst✝ : (i : ι) → Zero (β₂ i)
f : (i : ι) → β₁ i → β₂ i
hf : ∀ (i : ι), f i 0 = 0
i✝ : ι
⊢ (mapRange f hf 0) i✝ = 0 i✝
state_after: no goals
Theorem: MeasureTheory.aeStronglyMeasurable'_of_aeStronglyMeasurable'_trim
File: Mathlib/MeasureTheory/Function/ConditionalExpectation/AEMeasurable.lean

tactic: obtain ⟨g, hg_meas, hfg⟩ := hf
state_before: α : Type u_1
β : Type u_2
m m0 m0' : MeasurableSpace α
inst✝ : TopologicalSpace β
hm0 : m0 ≤ m0'
μ : Measure α
f : α → β
hf : AEStronglyMeasurable' m f (μ.trim hm0)
⊢ AEStronglyMeasurable' m f μ
state_after: case intro.intro
α : Type u_1
β : Type u_2
m m0 m0' : MeasurableSpace α
inst✝ : TopologicalSpace β
hm0 : m0 ≤ m0'
μ : Measure α
f g : α → β
hg_meas : StronglyMeasurable g
hfg : f =ᶠ[ae (μ.trim hm0)] g
⊢ AEStronglyMeasurable' m f μ

tactic: exact ⟨g, hg_meas, ae_eq_of_ae_eq_trim hfg⟩
state_before: case intro.intro
α : Type u_1
β : Type u_2
m m0 m0' : MeasurableSpace α
inst✝ : TopologicalSpace β
hm0 : m0 ≤ m0'
μ : Measure α
f g : α → β
hg_meas : StronglyMeasurable g
hfg : f =ᶠ[ae (μ.trim hm0)] g
⊢ AEStronglyMeasurable' m f μ
state_after: no goals
Theorem: List.nodup_bind
File: Mathlib/Data/List/Nodup.lean

tactic: simp only [List.bind, nodup_join, pairwise_map, and_comm, and_left_comm, mem_map, exists_imp,
    and_imp]
state_before: α : Type u
β : Type v
l l₁✝ l₂ : List α
r : α → α → Prop
a b : α
l₁ : List α
f : α → List β
⊢ (l₁.bind f).Nodup ↔ (∀ x ∈ l₁, (f x).Nodup) ∧ Pairwise (fun a b => (f a).Disjoint (f b)) l₁
state_after: α : Type u
β : Type v
l l₁✝ l₂ : List α
r : α → α → Prop
a b : α
l₁ : List α
f : α → List β
⊢ (Pairwise (fun a b => (f a).Disjoint (f b)) l₁ ∧ ∀ (l : List β) (x : α), f x = l → x ∈ l₁ → l.Nodup) ↔
    Pairwise (fun a b => (f a).Disjoint (f b)) l₁ ∧ ∀ x ∈ l₁, (f x).Nodup

tactic: rw [show (∀ (l : List β) (x : α), f x = l → x ∈ l₁ → Nodup l) ↔ ∀ x : α, x ∈ l₁ → Nodup (f x)
    from forall_swap.trans <| forall_congr' fun _ => forall_eq']
state_before: α : Type u
β : Type v
l l₁✝ l₂ : List α
r : α → α → Prop
a b : α
l₁ : List α
f : α → List β
⊢ (Pairwise (fun a b => (f a).Disjoint (f b)) l₁ ∧ ∀ (l : List β) (x : α), f x = l → x ∈ l₁ → l.Nodup) ↔
    Pairwise (fun a b => (f a).Disjoint (f b)) l₁ ∧ ∀ x ∈ l₁, (f x).Nodup
state_after: no goals