1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: le_egauge_smul_left
File: Mathlib/Analysis/Convex/EGauge.lean

tactic: simp_rw [le_egauge_iff, smul_smul]
state_before: 𝕜 : Type u_1
inst✝² : NormedDivisionRing 𝕜
α : Type u_2
E : Type u_3
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
c✝ : 𝕜
s✝ t : Set E
x✝ y : E
r : ℝ≥0∞
c : 𝕜
s : Set E
x : E
⊢ egauge 𝕜 s x / ↑‖c‖₊ ≤ egauge 𝕜 (c • s) x
state_after: 𝕜 : Type u_1
inst✝² : NormedDivisionRing 𝕜
α : Type u_2
E : Type u_3
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
c✝ : 𝕜
s✝ t : Set E
x✝ y : E
r : ℝ≥0∞
c : 𝕜
s : Set E
x : E
⊢ ∀ (c_1 : 𝕜), x ∈ (c_1 * c) • s → egauge 𝕜 s x / ↑‖c‖₊ ≤ ↑‖c_1‖₊

tactic: rintro a ⟨x, hx, rfl⟩
state_before: 𝕜 : Type u_1
inst✝² : NormedDivisionRing 𝕜
α : Type u_2
E : Type u_3
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
c✝ : 𝕜
s✝ t : Set E
x✝ y : E
r : ℝ≥0∞
c : 𝕜
s : Set E
x : E
⊢ ∀ (c_1 : 𝕜), x ∈ (c_1 * c) • s → egauge 𝕜 s x / ↑‖c‖₊ ≤ ↑‖c_1‖₊
state_after: case intro.intro
𝕜 : Type u_1
inst✝² : NormedDivisionRing 𝕜
α : Type u_2
E : Type u_3
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
c✝ : 𝕜
s✝ t : Set E
x✝ y : E
r : ℝ≥0∞
c : 𝕜
s : Set E
a : 𝕜
x : E
hx : x ∈ s
⊢ egauge 𝕜 s ((fun x => (a * c) • x) x) / ↑‖c‖₊ ≤ ↑‖a‖₊

tactic: apply ENNReal.div_le_of_le_mul
state_before: case intro.intro
𝕜 : Type u_1
inst✝² : NormedDivisionRing 𝕜
α : Type u_2
E : Type u_3
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
c✝ : 𝕜
s✝ t : Set E
x✝ y : E
r : ℝ≥0∞
c : 𝕜
s : Set E
a : 𝕜
x : E
hx : x ∈ s
⊢ egauge 𝕜 s ((fun x => (a * c) • x) x) / ↑‖c‖₊ ≤ ↑‖a‖₊
state_after: case intro.intro.h
𝕜 : Type u_1
inst✝² : NormedDivisionRing 𝕜
α : Type u_2
E : Type u_3
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
c✝ : 𝕜
s✝ t : Set E
x✝ y : E
r : ℝ≥0∞
c : 𝕜
s : Set E
a : 𝕜
x : E
hx : x ∈ s
⊢ egauge 𝕜 s ((fun x => (a * c) • x) x) ≤ ↑‖a‖₊ * ↑‖c‖₊

tactic: rw [← ENNReal.coe_mul, ← nnnorm_mul]
state_before: case intro.intro.h
𝕜 : Type u_1
inst✝² : NormedDivisionRing 𝕜
α : Type u_2
E : Type u_3
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
c✝ : 𝕜
s✝ t : Set E
x✝ y : E
r : ℝ≥0∞
c : 𝕜
s : Set E
a : 𝕜
x : E
hx : x ∈ s
⊢ egauge 𝕜 s ((fun x => (a * c) • x) x) ≤ ↑‖a‖₊ * ↑‖c‖₊
state_after: case intro.intro.h
𝕜 : Type u_1
inst✝² : NormedDivisionRing 𝕜
α : Type u_2
E : Type u_3
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
c✝ : 𝕜
s✝ t : Set E
x✝ y : E
r : ℝ≥0∞
c : 𝕜
s : Set E
a : 𝕜
x : E
hx : x ∈ s
⊢ egauge 𝕜 s ((fun x => (a * c) • x) x) ≤ ↑‖a * c‖₊

tactic: exact egauge_le_of_mem_smul <| smul_mem_smul_set hx
state_before: case intro.intro.h
𝕜 : Type u_1
inst✝² : NormedDivisionRing 𝕜
α : Type u_2
E : Type u_3
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
c✝ : 𝕜
s✝ t : Set E
x✝ y : E
r : ℝ≥0∞
c : 𝕜
s : Set E
a : 𝕜
x : E
hx : x ∈ s
⊢ egauge 𝕜 s ((fun x => (a * c) • x) x) ≤ ↑‖a * c‖₊
state_after: no goals
Theorem: EckmannHilton.mul
File: Mathlib/GroupTheory/EckmannHilton.lean

tactic: funext a b
state_before: X : Type u
m₁ m₂ : X → X → X
e₁ e₂ : X
h₁ : IsUnital m₁ e₁
h₂ : IsUnital m₂ e₂
distrib : ∀ (a b c d : X), m₁ (m₂ a b) (m₂ c d) = m₂ (m₁ a c) (m₁ b d)
⊢ m₁ = m₂
state_after: case h.h
X : Type u
m₁ m₂ : X → X → X
e₁ e₂ : X
h₁ : IsUnital m₁ e₁
h₂ : IsUnital m₂ e₂
distrib : ∀ (a b c d : X), m₁ (m₂ a b) (m₂ c d) = m₂ (m₁ a c) (m₁ b d)
a b : X
⊢ m₁ a b = m₂ a b

tactic: calc
  m₁ a b = m₁ (m₂ a e₁) (m₂ e₁ b) := by
    { simp only [one h₁ h₂ distrib, h₁.left_id, h₁.right_id, h₂.left_id, h₂.right_id] }
  _ = m₂ a b := by simp only [distrib, h₁.left_id, h₁.right_id, h₂.left_id, h₂.right_id]
state_before: case h.h
X : Type u
m₁ m₂ : X → X → X
e₁ e₂ : X
h₁ : IsUnital m₁ e₁
h₂ : IsUnital m₂ e₂
distrib : ∀ (a b c d : X), m₁ (m₂ a b) (m₂ c d) = m₂ (m₁ a c) (m₁ b d)
a b : X
⊢ m₁ a b = m₂ a b
state_after: no goals

tactic: simp only [one h₁ h₂ distrib, h₁.left_id, h₁.right_id, h₂.left_id, h₂.right_id]
state_before: X : Type u
m₁ m₂ : X → X → X
e₁ e₂ : X
h₁ : IsUnital m₁ e₁
h₂ : IsUnital m₂ e₂
distrib : ∀ (a b c d : X), m₁ (m₂ a b) (m₂ c d) = m₂ (m₁ a c) (m₁ b d)
a b : X
⊢ m₁ a b = m₁ (m₂ a e₁) (m₂ e₁ b)
state_after: no goals

tactic: simp only [distrib, h₁.left_id, h₁.right_id, h₂.left_id, h₂.right_id]
state_before: X : Type u
m₁ m₂ : X → X → X
e₁ e₂ : X
h₁ : IsUnital m₁ e₁
h₂ : IsUnital m₂ e₂
distrib : ∀ (a b c d : X), m₁ (m₂ a b) (m₂ c d) = m₂ (m₁ a c) (m₁ b d)
a b : X
⊢ m₁ (m₂ a e₁) (m₂ e₁ b) = m₂ a b
state_after: no goals
Theorem: IsNoetherian.injective_of_surjective_of_injective
File: Mathlib/RingTheory/Noetherian.lean

tactic: haveI := isNoetherian_of_injective i hi
state_before: R : Type u_1
M : Type u_2
P : Type u_3
N : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : Module R M
inst✝⁴ : AddCommGroup N
inst✝³ : Module R N
inst✝² : AddCommGroup P
inst✝¹ : Module R P
inst✝ : IsNoetherian R M
i f : N →ₗ[R] M
hi : Injective ⇑i
hf : Surjective ⇑f
⊢ Injective ⇑f
state_after: R : Type u_1
M : Type u_2
P : Type u_3
N : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : Module R M
inst✝⁴ : AddCommGroup N
inst✝³ : Module R N
inst✝² : AddCommGroup P
inst✝¹ : Module R P
inst✝ : IsNoetherian R M
i f : N →ₗ[R] M
hi : Injective ⇑i
hf : Surjective ⇑f
this : IsNoetherian R N
⊢ Injective ⇑f

tactic: obtain ⟨n, H⟩ := monotone_stabilizes_iff_noetherian.2 ‹_›
  ⟨_, monotone_nat_of_le_succ <| f.iterateMapComap_le_succ i ⊥ (by simp)⟩
state_before: R : Type u_1
M : Type u_2
P : Type u_3
N : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : Module R M
inst✝⁴ : AddCommGroup N
inst✝³ : Module R N
inst✝² : AddCommGroup P
inst✝¹ : Module R P
inst✝ : IsNoetherian R M
i f : N →ₗ[R] M
hi : Injective ⇑i
hf : Surjective ⇑f
this : IsNoetherian R N
⊢ Injective ⇑f
state_after: case intro
R : Type u_1
M : Type u_2
P : Type u_3
N : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : Module R M
inst✝⁴ : AddCommGroup N
inst✝³ : Module R N
inst✝² : AddCommGroup P
inst✝¹ : Module R P
inst✝ : IsNoetherian R M
i f : N →ₗ[R] M
hi : Injective ⇑i
hf : Surjective ⇑f
this : IsNoetherian R N
n : ℕ
H :
  ∀ (m : ℕ),
    n ≤ m →
      { toFun := fun n => f.iterateMapComap i n ⊥, monotone' := ⋯ } n =
        { toFun := fun n => f.iterateMapComap i n ⊥, monotone' := ⋯ } m
⊢ Injective ⇑f

tactic: exact LinearMap.ker_eq_bot.1 <| bot_unique <|
  f.ker_le_of_iterateMapComap_eq_succ i ⊥ n (H _ (Nat.le_succ _)) hf hi
state_before: case intro
R : Type u_1
M : Type u_2
P : Type u_3
N : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : Module R M
inst✝⁴ : AddCommGroup N
inst✝³ : Module R N
inst✝² : AddCommGroup P
inst✝¹ : Module R P
inst✝ : IsNoetherian R M
i f : N →ₗ[R] M
hi : Injective ⇑i
hf : Surjective ⇑f
this : IsNoetherian R N
n : ℕ
H :
  ∀ (m : ℕ),
    n ≤ m →
      { toFun := fun n => f.iterateMapComap i n ⊥, monotone' := ⋯ } n =
        { toFun := fun n => f.iterateMapComap i n ⊥, monotone' := ⋯ } m
⊢ Injective ⇑f
state_after: no goals

tactic: simp
state_before: R : Type u_1
M : Type u_2
P : Type u_3
N : Type w
inst✝⁷ : Ring R
inst✝⁶ : AddCommGroup M
inst✝⁵ : Module R M
inst✝⁴ : AddCommGroup N
inst✝³ : Module R N
inst✝² : AddCommGroup P
inst✝¹ : Module R P
inst✝ : IsNoetherian R M
i f : N →ₗ[R] M
hi : Injective ⇑i
hf : Surjective ⇑f
this : IsNoetherian R N
⊢ Submodule.map f ⊥ ≤ Submodule.map i ⊥
state_after: no goals
Theorem: Ordinal.fp_unbounded
File: Mathlib/SetTheory/Ordinal/FixedPoint.lean

tactic: convert fp_family_unbounded fun _ : Unit => H
state_before: f : Ordinal.{u} → Ordinal.{u}
H : IsNormal f
⊢ Set.Unbounded (fun x x_1 => x < x_1) (fixedPoints f)
state_after: case h.e'_3
f : Ordinal.{u} → Ordinal.{u}
H : IsNormal f
⊢ fixedPoints f = ⋂ i, fixedPoints f

tactic: exact (Set.iInter_const _).symm
state_before: case h.e'_3
f : Ordinal.{u} → Ordinal.{u}
H : IsNormal f
⊢ fixedPoints f = ⋂ i, fixedPoints f
state_after: no goals
Theorem: MulAction.fixedBy_mul
File: Mathlib/GroupTheory/GroupAction/FixedPoints.lean

tactic: intro a ⟨h₁, h₂⟩
state_before: α : Type u_1
G : Type u_2
inst✝³ : Group G
inst✝² : MulAction G α
M : Type u_3
inst✝¹ : Monoid M
inst✝ : MulAction M α
m₁ m₂ : M
⊢ fixedBy α m₁ ∩ fixedBy α m₂ ⊆ fixedBy α (m₁ * m₂)
state_after: α : Type u_1
G : Type u_2
inst✝³ : Group G
inst✝² : MulAction G α
M : Type u_3
inst✝¹ : Monoid M
inst✝ : MulAction M α
m₁ m₂ : M
a : α
h₁ : a ∈ fixedBy α m₁
h₂ : a ∈ fixedBy α m₂
⊢ a ∈ fixedBy α (m₁ * m₂)

tactic: rw [mem_fixedBy, mul_smul, h₂, h₁]
state_before: α : Type u_1
G : Type u_2
inst✝³ : Group G
inst✝² : MulAction G α
M : Type u_3
inst✝¹ : Monoid M
inst✝ : MulAction M α
m₁ m₂ : M
a : α
h₁ : a ∈ fixedBy α m₁
h₂ : a ∈ fixedBy α m₂
⊢ a ∈ fixedBy α (m₁ * m₂)
state_after: no goals
Theorem: IsCyclotomicExtension.splits_cyclotomic
File: Mathlib/NumberTheory/Cyclotomic/Basic.lean

tactic: refine splits_of_splits_of_dvd _ (X_pow_sub_C_ne_zero n.pos _) (splits_X_pow_sub_one K L hS) ?_
state_before: n : ℕ+
S T : Set ℕ+
A : Type u
B : Type v
K : Type w
L : Type z
inst✝⁶ : CommRing A
inst✝⁵ : CommRing B
inst✝⁴ : Algebra A B
inst✝³ : Field K
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : IsCyclotomicExtension S K L
hS : n ∈ S
⊢ Splits (algebraMap K L) (cyclotomic (↑n) K)
state_after: n : ℕ+
S T : Set ℕ+
A : Type u
B : Type v
K : Type w
L : Type z
inst✝⁶ : CommRing A
inst✝⁵ : CommRing B
inst✝⁴ : Algebra A B
inst✝³ : Field K
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : IsCyclotomicExtension S K L
hS : n ∈ S
⊢ cyclotomic (↑n) K ∣ X ^ ↑n - C 1

tactic: use ∏ i ∈ (n : ℕ).properDivisors, Polynomial.cyclotomic i K
state_before: n : ℕ+
S T : Set ℕ+
A : Type u
B : Type v
K : Type w
L : Type z
inst✝⁶ : CommRing A
inst✝⁵ : CommRing B
inst✝⁴ : Algebra A B
inst✝³ : Field K
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : IsCyclotomicExtension S K L
hS : n ∈ S
⊢ cyclotomic (↑n) K ∣ X ^ ↑n - C 1
state_after: case h
n : ℕ+
S T : Set ℕ+
A : Type u
B : Type v
K : Type w
L : Type z
inst✝⁶ : CommRing A
inst✝⁵ : CommRing B
inst✝⁴ : Algebra A B
inst✝³ : Field K
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : IsCyclotomicExtension S K L
hS : n ∈ S
⊢ X ^ ↑n - C 1 = cyclotomic (↑n) K * ∏ i ∈ (↑n).properDivisors, cyclotomic i K

tactic: rw [(eq_cyclotomic_iff n.pos _).1 rfl, RingHom.map_one]
state_before: case h
n : ℕ+
S T : Set ℕ+
A : Type u
B : Type v
K : Type w
L : Type z
inst✝⁶ : CommRing A
inst✝⁵ : CommRing B
inst✝⁴ : Algebra A B
inst✝³ : Field K
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : IsCyclotomicExtension S K L
hS : n ∈ S
⊢ X ^ ↑n - C 1 = cyclotomic (↑n) K * ∏ i ∈ (↑n).properDivisors, cyclotomic i K
state_after: no goals
Theorem: Set.sInter_eq_biInter
File: Mathlib/Data/Set/Lattice.lean

tactic: rw [← sInter_image, image_id']
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 (Set α)
⊢ ⋂₀ s = ⋂ i ∈ s, i
state_after: no goals
Theorem: WittVector.init_mul
File: Mathlib/RingTheory/WittVector/InitTail.lean

tactic: init_ring using wittMul_vars
state_before: p : ℕ
hp : Fact (Nat.Prime p)
n✝ : ℕ
R : Type u_1
inst✝ : CommRing R
x y : 𝕎 R
n : ℕ
⊢ init n (x * y) = init n (init n x * init n y)
state_after: no goals
Theorem: NonUnitalSubalgebra.unitization_injective
File: Mathlib/Algebra/Algebra/Subalgebra/Unitization.lean

tactic: simp
state_before: R : Type u_1
S : Type u_2
A : Type u_3
inst✝³ : Field R
inst✝² : Ring A
inst✝¹ : Algebra R A
inst✝ : SetLike S A
hSA : NonUnitalSubringClass S A
hSRA : SMulMemClass S R A
s : S
h1 : 1 ∉ s
x✝ : ↥s
⊢ (unitization s) ↑x✝ = ↑x✝
state_after: no goals
Theorem: HasStrictDerivAt.cpow
File: Mathlib/Analysis/SpecialFunctions/Pow/Deriv.lean

tactic: simpa using (hf.cpow hg h0).hasStrictDerivAt
state_before: f g : ℂ → ℂ
s : Set ℂ
f' g' x c : ℂ
hf : HasStrictDerivAt f f' x
hg : HasStrictDerivAt g g' x
h0 : f x ∈ slitPlane
⊢ HasStrictDerivAt (fun x => f x ^ g x) (g x * f x ^ (g x - 1) * f' + f x ^ g x * Complex.log (f x) * g') x
state_after: no goals
Theorem: exists_isOpen_mem_isCompact_closure
File: Mathlib/Topology/Separation.lean

tactic: simpa only [singleton_subset_iff]
  using exists_isOpen_superset_and_isCompact_closure isCompact_singleton
state_before: X : Type u_1
Y : Type u_2
inst✝³ : TopologicalSpace X
inst✝² : FirstCountableTopology X
inst✝¹ : R1Space X
x✝ y : X
inst✝ : WeaklyLocallyCompactSpace X
x : X
⊢ ∃ U, IsOpen U ∧ x ∈ U ∧ IsCompact (closure U)
state_after: no goals
Theorem: measurableSet_pi
File: Mathlib/MeasureTheory/MeasurableSpace/Basic.lean

tactic: rcases (pi s t).eq_empty_or_nonempty with h | h
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s✝ t✝ u : Set α
π : δ → Type u_6
inst✝² : MeasurableSpace α
inst✝¹ : (a : δ) → MeasurableSpace (π a)
inst✝ : MeasurableSpace γ
s : Set δ
t : (i : δ) → Set (π i)
hs : s.Countable
⊢ MeasurableSet (s.pi t) ↔ (∀ i ∈ s, MeasurableSet (t i)) ∨ s.pi t = ∅
state_after: case inl
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s✝ t✝ u : Set α
π : δ → Type u_6
inst✝² : MeasurableSpace α
inst✝¹ : (a : δ) → MeasurableSpace (π a)
inst✝ : MeasurableSpace γ
s : Set δ
t : (i : δ) → Set (π i)
hs : s.Countable
h : s.pi t = ∅
⊢ MeasurableSet (s.pi t) ↔ (∀ i ∈ s, MeasurableSet (t i)) ∨ s.pi t = ∅

case inr
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s✝ t✝ u : Set α
π : δ → Type u_6
inst✝² : MeasurableSpace α
inst✝¹ : (a : δ) → MeasurableSpace (π a)
inst✝ : MeasurableSpace γ
s : Set δ
t : (i : δ) → Set (π i)
hs : s.Countable
h : (s.pi t).Nonempty
⊢ MeasurableSet (s.pi t) ↔ (∀ i ∈ s, MeasurableSet (t i)) ∨ s.pi t = ∅

tactic: simp [h]
state_before: case inl
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s✝ t✝ u : Set α
π : δ → Type u_6
inst✝² : MeasurableSpace α
inst✝¹ : (a : δ) → MeasurableSpace (π a)
inst✝ : MeasurableSpace γ
s : Set δ
t : (i : δ) → Set (π i)
hs : s.Countable
h : s.pi t = ∅
⊢ MeasurableSet (s.pi t) ↔ (∀ i ∈ s, MeasurableSet (t i)) ∨ s.pi t = ∅
state_after: no goals

tactic: simp [measurableSet_pi_of_nonempty hs, h, ← not_nonempty_iff_eq_empty]
state_before: case inr
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s✝ t✝ u : Set α
π : δ → Type u_6
inst✝² : MeasurableSpace α
inst✝¹ : (a : δ) → MeasurableSpace (π a)
inst✝ : MeasurableSpace γ
s : Set δ
t : (i : δ) → Set (π i)
hs : s.Countable
h : (s.pi t).Nonempty
⊢ MeasurableSet (s.pi t) ↔ (∀ i ∈ s, MeasurableSet (t i)) ∨ s.pi t = ∅
state_after: no goals
Theorem: CliffordAlgebra.EquivEven.v_sq_scalar
File: Mathlib/LinearAlgebra/CliffordAlgebra/EvenEquiv.lean

tactic: simp
state_before: R : Type u_1
M : Type u_2
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
Q : QuadraticForm R M
m : M
⊢ (algebraMap R (CliffordAlgebra (Q' Q))) ((Q' Q) ((LinearMap.inl R M R) m)) =
    (algebraMap R (CliffordAlgebra (Q' Q))) (Q m)
state_after: no goals
Theorem: Cardinal.beth_normal
File: Mathlib/SetTheory/Cardinal/Ordinal.lean

tactic: rw [beth_limit ho, ord_le]
state_before: o : Ordinal.{u}
ho : o.IsLimit
a : Ordinal.{u}
ha : ∀ b < o, (beth b).ord ≤ a
⊢ (beth o).ord ≤ a
state_after: o : Ordinal.{u}
ho : o.IsLimit
a : Ordinal.{u}
ha : ∀ b < o, (beth b).ord ≤ a
⊢ ⨆ a, beth ↑a ≤ a.card

tactic: exact ciSup_le' fun b => ord_le.1 (ha _ b.2)
state_before: o : Ordinal.{u}
ho : o.IsLimit
a : Ordinal.{u}
ha : ∀ b < o, (beth b).ord ≤ a
⊢ ⨆ a, beth ↑a ≤ a.card
state_after: no goals
Theorem: Zspan.quotientEquiv.symm_apply
File: Mathlib/Algebra/Module/Zlattice/Basic.lean

tactic: rw [Equiv.symm_apply_eq, quotientEquiv_apply_mk b ↑x, Subtype.ext_iff, fractRestrict_apply]
state_before: E : Type u_1
ι : Type u_2
K : Type u_3
inst✝⁴ : NormedLinearOrderedField K
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace K E
b : Basis ι K E
inst✝¹ : FloorRing K
inst✝ : Fintype ι
x : ↑(fundamentalDomain b)
⊢ (quotientEquiv b).symm x = Submodule.Quotient.mk ↑x
state_after: E : Type u_1
ι : Type u_2
K : Type u_3
inst✝⁴ : NormedLinearOrderedField K
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace K E
b : Basis ι K E
inst✝¹ : FloorRing K
inst✝ : Fintype ι
x : ↑(fundamentalDomain b)
⊢ ↑x = fract b ↑x

tactic: exact (fract_eq_self.mpr x.prop).symm
state_before: E : Type u_1
ι : Type u_2
K : Type u_3
inst✝⁴ : NormedLinearOrderedField K
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace K E
b : Basis ι K E
inst✝¹ : FloorRing K
inst✝ : Fintype ι
x : ↑(fundamentalDomain b)
⊢ ↑x = fract b ↑x
state_after: no goals
Theorem: Left.mul_pos
File: Mathlib/Algebra/Order/GroupWithZero/Unbundled.lean

tactic: simpa only [mul_zero] using mul_lt_mul_of_pos_left hb ha
state_before: α : Type u_1
a b c d : α
inst✝² : MulZeroClass α
inst✝¹ : Preorder α
inst✝ : PosMulStrictMono α
ha : 0 < a
hb : 0 < b
⊢ 0 < a * b
state_after: no goals
Theorem: Finset.mem_minimals_iff_forall_erase
File: Mathlib/Data/Finset/Lattice.lean

tactic: simp only [mem_minimals_iff, Set.mem_setOf_eq, and_congr_right_iff]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : DecidableEq α
P : Finset α → Prop
s : Finset α
hP : ∀ ⦃s t : Finset α⦄, P s → s ⊆ t → P t
⊢ s ∈ minimals (fun x x_1 => x ⊆ x_1) {t | P t} ↔ P s ∧ ∀ x ∈ s, ¬P (s.erase x)
state_after: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : DecidableEq α
P : Finset α → Prop
s : Finset α
hP : ∀ ⦃s t : Finset α⦄, P s → s ⊆ t → P t
⊢ P s → ((∀ ⦃y : Finset α⦄, P y → y ⊆ s → s = y) ↔ ∀ x ∈ s, ¬P (s.erase x))

tactic: refine fun _ ↦ ⟨fun h x hx hxs ↦ ?_, fun h t ht hst ↦ Eq.symm <| hst.antisymm (fun x hxs ↦ ?_)⟩
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : DecidableEq α
P : Finset α → Prop
s : Finset α
hP : ∀ ⦃s t : Finset α⦄, P s → s ⊆ t → P t
⊢ P s → ((∀ ⦃y : Finset α⦄, P y → y ⊆ s → s = y) ↔ ∀ x ∈ s, ¬P (s.erase x))
state_after: case refine_1
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : DecidableEq α
P : Finset α → Prop
s : Finset α
hP : ∀ ⦃s t : Finset α⦄, P s → s ⊆ t → P t
x✝ : P s
h : ∀ ⦃y : Finset α⦄, P y → y ⊆ s → s = y
x : α
hx : x ∈ s
hxs : P (s.erase x)
⊢ False

case refine_2
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : DecidableEq α
P : Finset α → Prop
s : Finset α
hP : ∀ ⦃s t : Finset α⦄, P s → s ⊆ t → P t
x✝ : P s
h : ∀ x ∈ s, ¬P (s.erase x)
t : Finset α
ht : P t
hst : t ⊆ s
x : α
hxs : x ∈ s
⊢ x ∈ t

tactic: exact by_contra fun hxt ↦ h x hxs (hP ht <| subset_erase.2 ⟨hst, hxt⟩)
state_before: case refine_2
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : DecidableEq α
P : Finset α → Prop
s : Finset α
hP : ∀ ⦃s t : Finset α⦄, P s → s ⊆ t → P t
x✝ : P s
h : ∀ x ∈ s, ¬P (s.erase x)
t : Finset α
ht : P t
hst : t ⊆ s
x : α
hxs : x ∈ s
⊢ x ∈ t
state_after: no goals

tactic: rw [(h hxs (erase_subset x s))] at hx
state_before: case refine_1
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : DecidableEq α
P : Finset α → Prop
s : Finset α
hP : ∀ ⦃s t : Finset α⦄, P s → s ⊆ t → P t
x✝ : P s
h : ∀ ⦃y : Finset α⦄, P y → y ⊆ s → s = y
x : α
hx : x ∈ s
hxs : P (s.erase x)
⊢ False
state_after: case refine_1
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : DecidableEq α
P : Finset α → Prop
s : Finset α
hP : ∀ ⦃s t : Finset α⦄, P s → s ⊆ t → P t
x✝ : P s
h : ∀ ⦃y : Finset α⦄, P y → y ⊆ s → s = y
x : α
hx : x ∈ s.erase x
hxs : P (s.erase x)
⊢ False

tactic: simp at hx
state_before: case refine_1
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : DecidableEq α
P : Finset α → Prop
s : Finset α
hP : ∀ ⦃s t : Finset α⦄, P s → s ⊆ t → P t
x✝ : P s
h : ∀ ⦃y : Finset α⦄, P y → y ⊆ s → s = y
x : α
hx : x ∈ s.erase x
hxs : P (s.erase x)
⊢ False
state_after: no goals
Theorem: CategoryTheory.ShortComplex.Exact.exact_up_to_refinements
File: Mathlib/CategoryTheory/Abelian/Refinements.lean

tactic: rw [ShortComplex.exact_iff_exact_up_to_refinements] at hS
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Abelian C
X Y : C
S S₁ S₂ : ShortComplex C
hS : S.Exact
A : C
x₂ : A ⟶ S.X₂
hx₂ : x₂ ≫ S.g = 0
⊢ ∃ A' π, ∃ (_ : Epi π), ∃ x₁, π ≫ x₂ = x₁ ≫ S.f
state_after: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Abelian C
X Y : C
S S₁ S₂ : ShortComplex C
hS : ∀ ⦃A : C⦄ (x₂ : A ⟶ S.X₂), x₂ ≫ S.g = 0 → ∃ A' π, ∃ (_ : Epi π), ∃ x₁, π ≫ x₂ = x₁ ≫ S.f
A : C
x₂ : A ⟶ S.X₂
hx₂ : x₂ ≫ S.g = 0
⊢ ∃ A' π, ∃ (_ : Epi π), ∃ x₁, π ≫ x₂ = x₁ ≫ S.f

tactic: exact hS x₂ hx₂
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Abelian C
X Y : C
S S₁ S₂ : ShortComplex C
hS : ∀ ⦃A : C⦄ (x₂ : A ⟶ S.X₂), x₂ ≫ S.g = 0 → ∃ A' π, ∃ (_ : Epi π), ∃ x₁, π ≫ x₂ = x₁ ≫ S.f
A : C
x₂ : A ⟶ S.X₂
hx₂ : x₂ ≫ S.g = 0
⊢ ∃ A' π, ∃ (_ : Epi π), ∃ x₁, π ≫ x₂ = x₁ ≫ S.f
state_after: no goals
Theorem: AffineBasis.basisOf_apply
File: Mathlib/LinearAlgebra/AffineSpace/Basis.lean

tactic: simp [basisOf]
state_before: ι : Type u_1
ι' : Type u_2
k : Type u_3
V : Type u_4
P : Type u_5
inst✝³ : AddCommGroup V
inst✝² : AffineSpace V P
inst✝¹ : Ring k
inst✝ : Module k V
b : AffineBasis ι k P
s : Finset ι
i✝ j✝ : ι
e : ι ≃ ι'
i : ι
j : { j // j ≠ i }
⊢ (b.basisOf i) j = b ↑j -ᵥ b i
state_after: no goals
Theorem: Complex.range_exp_mul_I
File: Mathlib/Analysis/SpecialFunctions/Complex/Arg.lean

tactic: ext x
state_before: a x z : ℂ
⊢ (range fun x => cexp (↑x * I)) = sphere 0 1
state_after: case h
a x✝ z x : ℂ
⊢ (x ∈ range fun x => cexp (↑x * I)) ↔ x ∈ sphere 0 1

tactic: simp only [mem_sphere_zero_iff_norm, norm_eq_abs, abs_eq_one_iff, Set.mem_range]
state_before: case h
a x✝ z x : ℂ
⊢ (x ∈ range fun x => cexp (↑x * I)) ↔ x ∈ sphere 0 1
state_after: no goals
Theorem: map_comp_inv
File: Mathlib/Algebra/Group/Hom/Defs.lean

tactic: ext
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
G : Type u_7
H : Type u_8
F : Type u_9
inst✝⁶ : MulOneClass M
inst✝⁵ : MulOneClass N
inst✝⁴ : FunLike F M N
inst✝³ : FunLike F G H
inst✝² : Group G
inst✝¹ : DivisionMonoid H
inst✝ : MonoidHomClass F G H
f : F
g : ι → G
⊢ ⇑f ∘ g⁻¹ = (⇑f ∘ g)⁻¹
state_after: case h
ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
G : Type u_7
H : Type u_8
F : Type u_9
inst✝⁶ : MulOneClass M
inst✝⁵ : MulOneClass N
inst✝⁴ : FunLike F M N
inst✝³ : FunLike F G H
inst✝² : Group G
inst✝¹ : DivisionMonoid H
inst✝ : MonoidHomClass F G H
f : F
g : ι → G
x✝ : ι
⊢ (⇑f ∘ g⁻¹) x✝ = (⇑f ∘ g)⁻¹ x✝

tactic: simp
state_before: case h
ι : Type u_1
α : Type u_2
β : Type u_3
M : Type u_4
N : Type u_5
P : Type u_6
G : Type u_7
H : Type u_8
F : Type u_9
inst✝⁶ : MulOneClass M
inst✝⁵ : MulOneClass N
inst✝⁴ : FunLike F M N
inst✝³ : FunLike F G H
inst✝² : Group G
inst✝¹ : DivisionMonoid H
inst✝ : MonoidHomClass F G H
f : F
g : ι → G
x✝ : ι
⊢ (⇑f ∘ g⁻¹) x✝ = (⇑f ∘ g)⁻¹ x✝
state_after: no goals
Theorem: Polynomial.eval₂_one
File: Mathlib/Algebra/Polynomial/Eval.lean

tactic: rw [← C_1, eval₂_C, f.map_one]
state_before: R : Type u
S : Type v
T : Type w
ι : Type y
a b : R
m n : ℕ
inst✝¹ : Semiring R
p q r : R[X]
inst✝ : Semiring S
f : R →+* S
x : S
⊢ eval₂ f x 1 = 1
state_after: no goals
Theorem: MeasureTheory.SignedMeasure.singularPart_zero
File: Mathlib/MeasureTheory/Decomposition/SignedLebesgue.lean

tactic: refine (eq_singularPart 0 0 VectorMeasure.MutuallySingular.zero_left ?_).symm
state_before: α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s t : SignedMeasure α
μ : Measure α
⊢ singularPart 0 μ = 0
state_after: α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s t : SignedMeasure α
μ : Measure α
⊢ 0 = 0 + μ.withDensityᵥ 0

tactic: rw [zero_add, withDensityᵥ_zero]
state_before: α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ✝ ν : Measure α
s t : SignedMeasure α
μ : Measure α
⊢ 0 = 0 + μ.withDensityᵥ 0
state_after: no goals
Theorem: Polynomial.ofFinsupp_mul
File: Mathlib/Algebra/Polynomial/Basic.lean

tactic: rw [mul_def]
state_before: R : Type u
a✝ b✝ : R
m n : ℕ
inst✝ : Semiring R
p q : R[X]
a b : R[ℕ]
⊢ { toFinsupp := a * b } = Polynomial.mul { toFinsupp := a } { toFinsupp := b }
state_after: no goals
Theorem: WithTop.image_coe_Ioo
File: Mathlib/Order/Interval/Set/WithBotTop.lean

tactic: rw [← preimage_coe_Ioo, image_preimage_eq_inter_range, range_coe,
  inter_eq_self_of_subset_left (Subset.trans Ioo_subset_Iio_self <| Iio_subset_Iio le_top)]
state_before: α : Type u_1
inst✝ : Preorder α
a b : α
⊢ some '' Ioo a b = Ioo ↑a ↑b
state_after: no goals
Theorem: Part.bind_of_mem
File: Mathlib/Data/Part.lean

tactic: rw [eq_some_iff.2 h, bind_some]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
o : Part α
a : α
h : a ∈ o
f : α → Part β
⊢ o.bind f = f a
state_after: no goals