ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: Set.union_pi_inter
File: Mathlib/Data/Set/Prod.lean

Proof steps:
state_before: ι : Type u_1
α : ι → Type u_2
β : ι → Type u_3
s s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
i : ι
ht₁ : ∀ i ∉ s₁, t₁ i = univ
ht₂ : ∀ i ∉ s₂, t₂ i = univ
⊢ ((s₁ ∪ s₂).pi fun i => t₁ i ∩ t₂ i) = s₁.pi t₁ ∩ s₂.pi t₂
state_after: case h
ι : Type u_1
α : ι → Type u_2
β : ι → Type u_3
s s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
i : ι
ht₁ : ∀ i ∉ s₁, t₁ i = univ
ht₂ : ∀ i ∉ s₂, t₂ i = univ
x : (i : ι) → α i
⊢ (x ∈ (s₁ ∪ s₂).pi fun i => t₁ i ∩ t₂ i) ↔ x ∈ s₁.pi t₁ ∩ s₂.pi t₂
tactic: ext x
state_before: case h
ι : Type u_1
α : ι → Type u_2
β : ι → Type u_3
s s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
i : ι
ht₁ : ∀ i ∉ s₁, t₁ i = univ
ht₂ : ∀ i ∉ s₂, t₂ i = univ
x : (i : ι) → α i
⊢ (x ∈ (s₁ ∪ s₂).pi fun i => t₁ i ∩ t₂ i) ↔ x ∈ s₁.pi t₁ ∩ s₂.pi t₂
state_after: case h
ι : Type u_1
α : ι → Type u_2
β : ι → Type u_3
s s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
i : ι
ht₁ : ∀ i ∉ s₁, t₁ i = univ
ht₂ : ∀ i ∉ s₂, t₂ i = univ
x : (i : ι) → α i
⊢ (∀ (i : ι), i ∈ s₁ ∨ i ∈ s₂ → x i ∈ t₁ i ∧ x i ∈ t₂ i) ↔ (∀ i ∈ s₁, x i ∈ t₁ i) ∧ ∀ i ∈ s₂, x i ∈ t₂ i
tactic: simp only [mem_pi, mem_union, mem_inter_iff]
state_before: case h
ι : Type u_1
α : ι → Type u_2
β : ι → Type u_3
s s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
i : ι
ht₁ : ∀ i ∉ s₁, t₁ i = univ
ht₂ : ∀ i ∉ s₂, t₂ i = univ
x : (i : ι) → α i
⊢ (∀ (i : ι), i ∈ s₁ ∨ i ∈ s₂ → x i ∈ t₁ i ∧ x i ∈ t₂ i) ↔ (∀ i ∈ s₁, x i ∈ t₁ i) ∧ ∀ i ∈ s₂, x i ∈ t₂ i
state_after: case h
ι : Type u_1
α : ι → Type u_2
β : ι → Type u_3
s s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
i✝ : ι
ht₁ : ∀ i ∉ s₁, t₁ i = univ
ht₂ : ∀ i ∉ s₂, t₂ i = univ
x : (i : ι) → α i
h : (∀ i ∈ s₁, x i ∈ t₁ i) ∧ ∀ i ∈ s₂, x i ∈ t₂ i
i : ι
hi : i ∈ s₁ ∨ i ∈ s₂
⊢ x i ∈ t₁ i ∧ x i ∈ t₂ i
tactic: refine ⟨fun h ↦ ⟨fun i his₁ ↦ (h i (Or.inl his₁)).1, fun i his₂ ↦ (h i (Or.inr his₂)).2⟩,
    fun h i hi ↦ ?_⟩
state_before: case h
ι : Type u_1
α : ι → Type u_2
β : ι → Type u_3
s s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
i✝ : ι
ht₁ : ∀ i ∉ s₁, t₁ i = univ
ht₂ : ∀ i ∉ s₂, t₂ i = univ
x : (i : ι) → α i
h : (∀ i ∈ s₁, x i ∈ t₁ i) ∧ ∀ i ∈ s₂, x i ∈ t₂ i
i : ι
hi : i ∈ s₁ ∨ i ∈ s₂
⊢ x i ∈ t₁ i ∧ x i ∈ t₂ i
state_after: case h.inl
ι : Type u_1
α : ι → Type u_2
β : ι → Type u_3
s s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
i✝ : ι
ht₁ : ∀ i ∉ s₁, t₁ i = univ
ht₂ : ∀ i ∉ s₂, t₂ i = univ
x : (i : ι) → α i
h : (∀ i ∈ s₁, x i ∈ t₁ i) ∧ ∀ i ∈ s₂, x i ∈ t₂ i
i : ι
hi : i ∈ s₁
⊢ x i ∈ t₁ i ∧ x i ∈ t₂ i

case h.inr
ι : Type u_1
α : ι → Type u_2
β : ι → Type u_3
s s₁ s₂ : Set ι
t t₁ t₂ : (i : ι) → Set (α i)
i✝ : ι
ht₁ : ∀ i ∉ s₁, t₁ i = univ
ht₂ : ∀ i ∉ s₂, t₂ i = univ
x : (i : ι) → α i
h : (∀ i ∈ s₁, x i ∈ t₁ i) ∧ ∀ i ∈ s₂, x i ∈ t₂ i
i : ι
hi : i ∈ s₂
⊢ x i ∈ t₁ i ∧ x i ∈ t₂ i
tactic: cases' hi with hi hi
Theorem: Ordinal.cof_le_card
File: Mathlib/SetTheory/Cardinal/Cofinality.lean

Proof steps:
state_before: α : Type u_1
r : α → α → Prop
o : Ordinal.{u_2}
⊢ o.cof ≤ o.card
state_after: α : Type u_1
r : α → α → Prop
o : Ordinal.{u_2}
⊢ sInf {a | ∃ ι f, lsub f = o ∧ #ι = a} ≤ o.card
tactic: rw [cof_eq_sInf_lsub]
state_before: α : Type u_1
r : α → α → Prop
o : Ordinal.{u_2}
⊢ sInf {a | ∃ ι f, lsub f = o ∧ #ι = a} ≤ o.card
state_after: no goals
tactic: exact csInf_le' card_mem_cof
Theorem: Real.exp_approx_start
File: Mathlib/Data/Complex/Exponential.lean

Proof steps:
state_before: x a b : ℝ
h : |rexp x - expNear 0 x a| ≤ |x| ^ 0 / ↑(Nat.factorial 0) * b
⊢ |rexp x - a| ≤ b
state_after: no goals
tactic: simpa using h
Theorem: Module.End.IsNilpotent.mapQ
File: Mathlib/RingTheory/Nilpotent/Lemmas.lean

Proof steps:
state_before: R : Type u_1
S : Type u_2
x y : R
M : Type v
inst✝² : Ring R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
f : End R M
p : Submodule R M
hp : p ≤ Submodule.comap f p
hnp : IsNilpotent f
⊢ IsNilpotent (p.mapQ p f hp)
state_after: case intro
R : Type u_1
S : Type u_2
x y : R
M : Type v
inst✝² : Ring R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
f : End R M
p : Submodule R M
hp : p ≤ Submodule.comap f p
k : ℕ
hk : f ^ k = 0
⊢ IsNilpotent (p.mapQ p f hp)
tactic: obtain ⟨k, hk⟩ := hnp
state_before: case intro
R : Type u_1
S : Type u_2
x y : R
M : Type v
inst✝² : Ring R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
f : End R M
p : Submodule R M
hp : p ≤ Submodule.comap f p
k : ℕ
hk : f ^ k = 0
⊢ IsNilpotent (p.mapQ p f hp)
state_after: case h
R : Type u_1
S : Type u_2
x y : R
M : Type v
inst✝² : Ring R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
f : End R M
p : Submodule R M
hp : p ≤ Submodule.comap f p
k : ℕ
hk : f ^ k = 0
⊢ p.mapQ p f hp ^ k = 0
tactic: use k
state_before: case h
R : Type u_1
S : Type u_2
x y : R
M : Type v
inst✝² : Ring R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
f : End R M
p : Submodule R M
hp : p ≤ Submodule.comap f p
k : ℕ
hk : f ^ k = 0
⊢ p.mapQ p f hp ^ k = 0
state_after: no goals
tactic: simp [← p.mapQ_pow, hk]
Theorem: IsOpen.mul_closure
File: Mathlib/Topology/Algebra/Group/Basic.lean

Proof steps:
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: 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
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: 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 : ∀ (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: 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
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: obtain ⟨_, ⟨c, hc, d, rfl : d = _, rfl⟩, hcs⟩ := hb _ hs.inv.mul_right hbU
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
tactic: exact ⟨c⁻¹, hc, _, hcs, inv_mul_cancel_left _ _⟩
Theorem: MeasurableSpace.comap_const
File: Mathlib/MeasureTheory/MeasurableSpace/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s t u : Set α
m : MeasurableSpace β
b : β
⊢ MeasurableSpace.comap (fun _a => b) m ≤ ⊥
state_after: case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s✝ t u : Set α
m : MeasurableSpace β
b : β
s : Set β
⊢ MeasurableSet ((fun _a => b) ⁻¹' s)
tactic: rintro _ ⟨s, -, rfl⟩
state_before: case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s✝ t u : Set α
m : MeasurableSpace β
b : β
s : Set β
⊢ MeasurableSet ((fun _a => b) ⁻¹' s)
state_after: no goals
tactic: by_cases b ∈ s <;> simp [*]
Theorem: Mathlib.Tactic.Abel.zero_termg
File: Mathlib/Tactic/Abel.lean

Proof steps:
state_before: α : Type u_1
inst✝ : AddCommGroup α
x a : α
⊢ termg 0 x a = a
state_after: no goals
tactic: simp [termg, zero_zsmul]
Theorem: Set.projIcc_eq_right
File: Mathlib/Order/Interval/Set/ProjIcc.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝ : LinearOrder α
a b : α
h✝ : a ≤ b
x : α
h : a < b
⊢ projIcc a b ⋯ x = ⟨b, ⋯⟩ ↔ b ≤ x
state_after: no goals
tactic: simp [projIcc, Subtype.ext_iff, max_min_distrib_left, h.le, h.not_le]
Theorem: Associates.factors_one
File: Mathlib/RingTheory/UniqueFactorizationDomain.lean

Proof steps:
state_before: α : Type u_1
inst✝⁴ : CancelCommMonoidWithZero α
inst✝³ : UniqueFactorizationMonoid α
inst✝² : DecidableEq (Associates α)
inst✝¹ : (p : Associates α) → Decidable (Irreducible p)
inst✝ : Nontrivial α
⊢ factors 1 = 0
state_after: case h
α : Type u_1
inst✝⁴ : CancelCommMonoidWithZero α
inst✝³ : UniqueFactorizationMonoid α
inst✝² : DecidableEq (Associates α)
inst✝¹ : (p : Associates α) → Decidable (Irreducible p)
inst✝ : Nontrivial α
⊢ (factors 1).prod = FactorSet.prod 0
tactic: apply eq_of_prod_eq_prod
state_before: case h
α : Type u_1
inst✝⁴ : CancelCommMonoidWithZero α
inst✝³ : UniqueFactorizationMonoid α
inst✝² : DecidableEq (Associates α)
inst✝¹ : (p : Associates α) → Decidable (Irreducible p)
inst✝ : Nontrivial α
⊢ (factors 1).prod = FactorSet.prod 0
state_after: case h
α : Type u_1
inst✝⁴ : CancelCommMonoidWithZero α
inst✝³ : UniqueFactorizationMonoid α
inst✝² : DecidableEq (Associates α)
inst✝¹ : (p : Associates α) → Decidable (Irreducible p)
inst✝ : Nontrivial α
⊢ 1 = FactorSet.prod 0
tactic: rw [Associates.factors_prod]
state_before: case h
α : Type u_1
inst✝⁴ : CancelCommMonoidWithZero α
inst✝³ : UniqueFactorizationMonoid α
inst✝² : DecidableEq (Associates α)
inst✝¹ : (p : Associates α) → Decidable (Irreducible p)
inst✝ : Nontrivial α
⊢ 1 = FactorSet.prod 0
state_after: no goals
tactic: exact Multiset.prod_zero
Theorem: UniqueFactorizationMonoid.mem_normalizedFactors_eq_of_associated
File: Mathlib/RingTheory/UniqueFactorizationDomain.lean

Proof steps:
state_before: α : Type u_1
inst✝² : CancelCommMonoidWithZero α
inst✝¹ : NormalizationMonoid α
inst✝ : UniqueFactorizationMonoid α
a b c : α
ha : a ∈ normalizedFactors c
hb : b ∈ normalizedFactors c
h : a ~ᵤ b
⊢ a = b
state_after: α : Type u_1
inst✝² : CancelCommMonoidWithZero α
inst✝¹ : NormalizationMonoid α
inst✝ : UniqueFactorizationMonoid α
a b c : α
ha : a ∈ normalizedFactors c
hb : b ∈ normalizedFactors c
h : a ~ᵤ b
⊢ a ∣ b ∧ b ∣ a
tactic: rw [← normalize_normalized_factor a ha, ← normalize_normalized_factor b hb,
    normalize_eq_normalize_iff]
state_before: α : Type u_1
inst✝² : CancelCommMonoidWithZero α
inst✝¹ : NormalizationMonoid α
inst✝ : UniqueFactorizationMonoid α
a b c : α
ha : a ∈ normalizedFactors c
hb : b ∈ normalizedFactors c
h : a ~ᵤ b
⊢ a ∣ b ∧ b ∣ a
state_after: no goals
tactic: exact Associated.dvd_dvd h
Theorem: ContinuousMultilinearMap.le_opNorm_mul_pow_of_le
File: Mathlib/Analysis/NormedSpace/Multilinear/Basic.lean

Proof steps:
state_before: 𝕜 : Type u
ι : Type v
ι' : Type v'
E : ι → Type wE
E₁ : ι → Type wE₁
E' : ι' → Type wE'
G : Type wG
G' : Type wG'
inst✝¹⁴ : Fintype ι
inst✝¹³ : Fintype ι'
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : (i : ι) → SeminormedAddCommGroup (E i)
inst✝¹⁰ : (i : ι) → NormedSpace 𝕜 (E i)
inst✝⁹ : (i : ι) → SeminormedAddCommGroup (E₁ i)
inst✝⁸ : (i : ι) → NormedSpace 𝕜 (E₁ i)
inst✝⁷ : (i : ι') → SeminormedAddCommGroup (E' i)
inst✝⁶ : (i : ι') → NormedSpace 𝕜 (E' i)
inst✝⁵ : SeminormedAddCommGroup G
inst✝⁴ : NormedSpace 𝕜 G
inst✝³ : SeminormedAddCommGroup G'
inst✝² : NormedSpace 𝕜 G'
c : 𝕜
f✝ g : ContinuousMultilinearMap 𝕜 E G
m✝ : (i : ι) → E i
n : ℕ
Ei : Fin n → Type u_1
inst✝¹ : (i : Fin n) → SeminormedAddCommGroup (Ei i)
inst✝ : (i : Fin n) → NormedSpace 𝕜 (Ei i)
f : ContinuousMultilinearMap 𝕜 Ei G
m : (i : Fin n) → Ei i
b : ℝ
hm : ‖m‖ ≤ b
⊢ ‖f m‖ ≤ ‖f‖ * b ^ n
state_after: no goals
tactic: simpa only [Fintype.card_fin] using f.le_opNorm_mul_pow_card_of_le hm
Theorem: Complex.nhdsWithin_lt_le_nhdsWithin_stolzSet
File: Mathlib/Analysis/Complex/AbelLimit.lean

Proof steps:
state_before: M : ℝ
hM : 1 < M
⊢ Filter.map ofReal' (𝓝[<] 1) ≤ 𝓝[stolzSet M] 1
state_after: M : ℝ
hM : 1 < M
⊢ Tendsto id (Filter.map ofReal' (𝓝[<] 1)) (𝓝[stolzSet M] 1)
tactic: rw [← tendsto_id']
state_before: M : ℝ
hM : 1 < M
⊢ Tendsto id (Filter.map ofReal' (𝓝[<] 1)) (𝓝[stolzSet M] 1)
state_after: M : ℝ
hM : 1 < M
⊢ ∀ᶠ (x : ℝ) in 𝓝[<] 1, ↑x ∈ stolzSet M
tactic: refine tendsto_map' <| tendsto_nhdsWithin_of_tendsto_nhds_of_eventually_within ofReal'
    (tendsto_nhdsWithin_of_tendsto_nhds <| ofRealCLM.continuous.tendsto' 1 1 rfl) ?_
state_before: M : ℝ
hM : 1 < M
⊢ ∀ᶠ (x : ℝ) in 𝓝[<] 1, ↑x ∈ stolzSet M
state_after: M : ℝ
hM : 1 < M
⊢ ∃ u, IsOpen u ∧ 1 ∈ u ∧ u ∩ Set.Iio 1 ⊆ {x | ↑x ∈ stolzSet M}
tactic: simp only [eventually_iff, norm_eq_abs, abs_ofReal, abs_lt, mem_nhdsWithin]
state_before: M : ℝ
hM : 1 < M
⊢ ∃ u, IsOpen u ∧ 1 ∈ u ∧ u ∩ Set.Iio 1 ⊆ {x | ↑x ∈ stolzSet M}
state_after: M : ℝ
hM : 1 < M
x : ℝ
hx : x ∈ Set.Ioo 0 2 ∩ Set.Iio 1
⊢ x ∈ {x | ↑x ∈ stolzSet M}
tactic: refine ⟨Set.Ioo 0 2, isOpen_Ioo, by norm_num, fun x hx ↦ ?_⟩
state_before: M : ℝ
hM : 1 < M
x : ℝ
hx : x ∈ Set.Ioo 0 2 ∩ Set.Iio 1
⊢ x ∈ {x | ↑x ∈ stolzSet M}
state_after: M : ℝ
hM : 1 < M
x : ℝ
hx : (0 < x ∧ x < 2) ∧ x < 1
⊢ x ∈ {x | ↑x ∈ stolzSet M}
tactic: simp only [Set.mem_inter_iff, Set.mem_Ioo, Set.mem_Iio] at hx
state_before: M : ℝ
hM : 1 < M
x : ℝ
hx : (0 < x ∧ x < 2) ∧ x < 1
⊢ x ∈ {x | ↑x ∈ stolzSet M}
state_after: M : ℝ
hM : 1 < M
x : ℝ
hx : (0 < x ∧ x < 2) ∧ x < 1
⊢ x < 1 ∧ 1 - x < M * (1 - x)
tactic: simp only [Set.mem_setOf_eq, stolzSet, ← ofReal_one, ← ofReal_sub, norm_eq_abs, abs_ofReal,
    abs_of_pos hx.1.1, abs_of_pos <| sub_pos.mpr hx.2]
state_before: M : ℝ
hM : 1 < M
x : ℝ
hx : (0 < x ∧ x < 2) ∧ x < 1
⊢ x < 1 ∧ 1 - x < M * (1 - x)
state_after: no goals
tactic: exact ⟨hx.2, lt_mul_left (sub_pos.mpr hx.2) hM⟩
Theorem: Polynomial.le_natTrailingDegree_mul
File: Mathlib/Algebra/Polynomial/Degree/TrailingDegree.lean

Proof steps:
state_before: R : Type u
S : Type v
a b : R
n m : ℕ
inst✝ : Semiring R
p q r : R[X]
h : p * q ≠ 0
⊢ p.natTrailingDegree + q.natTrailingDegree ≤ (p * q).natTrailingDegree
state_after: R : Type u
S : Type v
a b : R
n m : ℕ
inst✝ : Semiring R
p q r : R[X]
h : p * q ≠ 0
hp : p ≠ 0
⊢ p.natTrailingDegree + q.natTrailingDegree ≤ (p * q).natTrailingDegree
tactic: have hp : p ≠ 0 := fun hp => h (by rw [hp, zero_mul])
state_before: R : Type u
S : Type v
a b : R
n m : ℕ
inst✝ : Semiring R
p q r : R[X]
h : p * q ≠ 0
hp : p ≠ 0
⊢ p.natTrailingDegree + q.natTrailingDegree ≤ (p * q).natTrailingDegree
state_after: R : Type u
S : Type v
a b : R
n m : ℕ
inst✝ : Semiring R
p q r : R[X]
h : p * q ≠ 0
hp : p ≠ 0
hq : q ≠ 0
⊢ p.natTrailingDegree + q.natTrailingDegree ≤ (p * q).natTrailingDegree
tactic: have hq : q ≠ 0 := fun hq => h (by rw [hq, mul_zero])
state_before: R : Type u
S : Type v
a b : R
n m : ℕ
inst✝ : Semiring R
p q r : R[X]
h : p * q ≠ 0
hp : p ≠ 0
hq : q ≠ 0
⊢ p.natTrailingDegree + q.natTrailingDegree ≤ (p * q).natTrailingDegree
state_after: R : Type u
S : Type v
a b : R
n m : ℕ
inst✝ : Semiring R
p q r : R[X]
h : p * q ≠ 0
hp : p ≠ 0
hq : q ≠ 0
this : ∀ (p : R[X]), ↑p.natTrailingDegree = ↑p.natTrailingDegree
⊢ p.natTrailingDegree + q.natTrailingDegree ≤ (p * q).natTrailingDegree
tactic: have : ∀ (p : R[X]), WithTop.some (natTrailingDegree p) = Nat.cast (natTrailingDegree p) :=
    fun p ↦ rfl
state_before: R : Type u
S : Type v
a b : R
n m : ℕ
inst✝ : Semiring R
p q r : R[X]
h : p * q ≠ 0
hp : p ≠ 0
hq : q ≠ 0
this : ∀ (p : R[X]), ↑p.natTrailingDegree = ↑p.natTrailingDegree
⊢ p.natTrailingDegree + q.natTrailingDegree ≤ (p * q).natTrailingDegree
state_after: R : Type u
S : Type v
a b : R
n m : ℕ
inst✝ : Semiring R
p q r : R[X]
h : p * q ≠ 0
hp : p ≠ 0
hq : q ≠ 0
this : ∀ (p : R[X]), ↑p.natTrailingDegree = ↑p.natTrailingDegree
⊢ p.trailingDegree + q.trailingDegree ≤ (p * q).trailingDegree
tactic: rw [← WithTop.coe_le_coe, WithTop.coe_add, this p, this q, this (p * q),
    ← trailingDegree_eq_natTrailingDegree hp, ← trailingDegree_eq_natTrailingDegree hq,
    ← trailingDegree_eq_natTrailingDegree h]
state_before: R : Type u
S : Type v
a b : R
n m : ℕ
inst✝ : Semiring R
p q r : R[X]
h : p * q ≠ 0
hp : p ≠ 0
hq : q ≠ 0
this : ∀ (p : R[X]), ↑p.natTrailingDegree = ↑p.natTrailingDegree
⊢ p.trailingDegree + q.trailingDegree ≤ (p * q).trailingDegree
state_after: no goals
tactic: exact le_trailingDegree_mul
Theorem: discreteTopology_of_isOpen_singleton_one
File: Mathlib/Topology/Algebra/Group/Basic.lean

Proof steps:
state_before: G : Type w
H : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : ContinuousMul G
h : IsOpen {1}
⊢ DiscreteTopology G
state_after: G : Type w
H : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : ContinuousMul G
h : IsOpen {1}
⊢ ∀ (a : G), IsOpen {a}
tactic: rw [← singletons_open_iff_discrete]
state_before: G : Type w
H : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : ContinuousMul G
h : IsOpen {1}
⊢ ∀ (a : G), IsOpen {a}
state_after: G : Type w
H : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : ContinuousMul G
h : IsOpen {1}
g : G
⊢ IsOpen {g}
tactic: intro g
state_before: G : Type w
H : Type x
α : Type u
β : Type v
inst✝² : TopologicalSpace G
inst✝¹ : Group G
inst✝ : ContinuousMul G
h : IsOpen {1}
g : G
⊢ {g} = (fun x => g⁻¹ * x) ⁻¹' {1}
state_after: no goals
tactic: simp only [mul_one, Set.preimage_mul_left_singleton, eq_self_iff_true, inv_inv,
    Set.singleton_eq_singleton_iff]
Theorem: EMetric.ball_zero
File: Mathlib/Topology/EMetricSpace/Basic.lean

Proof steps:
state_before: α : Type u
β : Type v
X : Type u_1
inst✝ : PseudoEMetricSpace α
x y z : α
ε ε₁ ε₂ : ℝ≥0∞
s t : Set α
⊢ ball x 0 = ∅
state_after: no goals
tactic: rw [EMetric.ball_eq_empty_iff]
Theorem: LieModule.weightSpace_add_chainTop
File: Mathlib/Algebra/Lie/Weights/Chain.lean

Proof steps:
state_before: R : Type u_1
L : Type u_2
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
M : Type u_3
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : LieAlgebra.IsNilpotent R L
inst✝² : NoZeroSMulDivisors ℤ R
inst✝¹ : NoZeroSMulDivisors R M
inst✝ : IsNoetherian R M
α : L → R
β : Weight R L M
hα : α ≠ 0
⊢ weightSpace M (α + ⇑(chainTop α β)) = ⊥
state_after: no goals
tactic: rw [coe_chainTop', ← add_assoc, ← succ_nsmul', weightSpace_chainTopCoeff_add_one_nsmul_add _ _ hα]
Theorem: UniqueMul.of_card_le_one
File: Mathlib/Algebra/Group/UniqueProds.lean

Proof steps:
state_before: G : Type u_1
H : Type u_2
inst✝¹ : Mul G
inst✝ : Mul H
A B : Finset G
a0 b0 : G
hA : A.Nonempty
hB : B.Nonempty
hA1 : A.card ≤ 1
hB1 : B.card ≤ 1
⊢ ∃ a ∈ A, ∃ b ∈ B, UniqueMul A B a b
state_after: G : Type u_1
H : Type u_2
inst✝¹ : Mul G
inst✝ : Mul H
A B : Finset G
a0 b0 : G
hA : A.Nonempty
hB : B.Nonempty
hA1 : ∀ {a b : G}, a ∈ A → b ∈ A → a = b
hB1 : ∀ {a b : G}, a ∈ B → b ∈ B → a = b
⊢ ∃ a ∈ A, ∃ b ∈ B, UniqueMul A B a b
tactic: rw [Finset.card_le_one_iff] at hA1 hB1
state_before: G : Type u_1
H : Type u_2
inst✝¹ : Mul G
inst✝ : Mul H
A B : Finset G
a0 b0 : G
hA : A.Nonempty
hB : B.Nonempty
hA1 : ∀ {a b : G}, a ∈ A → b ∈ A → a = b
hB1 : ∀ {a b : G}, a ∈ B → b ∈ B → a = b
⊢ ∃ a ∈ A, ∃ b ∈ B, UniqueMul A B a b
state_after: case intro
G : Type u_1
H : Type u_2
inst✝¹ : Mul G
inst✝ : Mul H
A B : Finset G
a0 b0 : G
hB : B.Nonempty
hA1 : ∀ {a b : G}, a ∈ A → b ∈ A → a = b
hB1 : ∀ {a b : G}, a ∈ B → b ∈ B → a = b
a : G
ha : a ∈ A
⊢ ∃ a ∈ A, ∃ b ∈ B, UniqueMul A B a b
tactic: obtain ⟨a, ha⟩ := hA
state_before: case intro
G : Type u_1
H : Type u_2
inst✝¹ : Mul G
inst✝ : Mul H
A B : Finset G
a0 b0 : G
hB : B.Nonempty
hA1 : ∀ {a b : G}, a ∈ A → b ∈ A → a = b
hB1 : ∀ {a b : G}, a ∈ B → b ∈ B → a = b
a : G
ha : a ∈ A
⊢ ∃ a ∈ A, ∃ b ∈ B, UniqueMul A B a b
state_after: case intro.intro
G : Type u_1
H : Type u_2
inst✝¹ : Mul G
inst✝ : Mul H
A B : Finset G
a0 b0 : G
hA1 : ∀ {a b : G}, a ∈ A → b ∈ A → a = b
hB1 : ∀ {a b : G}, a ∈ B → b ∈ B → a = b
a : G
ha : a ∈ A
b : G
hb : b ∈ B
⊢ ∃ a ∈ A, ∃ b ∈ B, UniqueMul A B a b
tactic: obtain ⟨b, hb⟩ := hB
state_before: case intro.intro
G : Type u_1
H : Type u_2
inst✝¹ : Mul G
inst✝ : Mul H
A B : Finset G
a0 b0 : G
hA1 : ∀ {a b : G}, a ∈ A → b ∈ A → a = b
hB1 : ∀ {a b : G}, a ∈ B → b ∈ B → a = b
a : G
ha : a ∈ A
b : G
hb : b ∈ B
⊢ ∃ a ∈ A, ∃ b ∈ B, UniqueMul A B a b
state_after: no goals
tactic: exact ⟨a, ha, b, hb, fun _ _ ha' hb' _ ↦ ⟨hA1 ha' ha, hB1 hb' hb⟩⟩
Theorem: CategoryTheory.ShortComplex.opMap_τ₃
File: Mathlib/Algebra/Homology/ShortComplex/Basic.lean

Proof steps:
state_before: C : Type u_1
D : Type u_2
inst✝³ : Category.{?u.59011, u_1} C
inst✝² : Category.{?u.59015, u_2} D
inst✝¹ : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
inst✝ : HasZeroMorphisms D
φ : S₁ ⟶ S₂
⊢ φ.τ₃.op ≫ S₁.op.f = S₂.op.f ≫ φ.τ₂.op
state_after: C : Type u_1
D : Type u_2
inst✝³ : Category.{?u.59011, u_1} C
inst✝² : Category.{?u.59015, u_2} D
inst✝¹ : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
inst✝ : HasZeroMorphisms D
φ : S₁ ⟶ S₂
⊢ φ.τ₃.op ≫ S₁.g.op = S₂.g.op ≫ φ.τ₂.op
tactic: dsimp
state_before: C : Type u_1
D : Type u_2
inst✝³ : Category.{?u.59011, u_1} C
inst✝² : Category.{?u.59015, u_2} D
inst✝¹ : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
inst✝ : HasZeroMorphisms D
φ : S₁ ⟶ S₂
⊢ φ.τ₃.op ≫ S₁.g.op = S₂.g.op ≫ φ.τ₂.op
state_after: no goals
tactic: simp only [← op_comp, φ.comm₂₃]
state_before: C : Type u_1
D : Type u_2
inst✝³ : Category.{?u.59011, u_1} C
inst✝² : Category.{?u.59015, u_2} D
inst✝¹ : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
inst✝ : HasZeroMorphisms D
φ : S₁ ⟶ S₂
⊢ φ.τ₂.op ≫ S₁.op.g = S₂.op.g ≫ φ.τ₁.op
state_after: C : Type u_1
D : Type u_2
inst✝³ : Category.{?u.59011, u_1} C
inst✝² : Category.{?u.59015, u_2} D
inst✝¹ : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
inst✝ : HasZeroMorphisms D
φ : S₁ ⟶ S₂
⊢ φ.τ₂.op ≫ S₁.f.op = S₂.f.op ≫ φ.τ₁.op
tactic: dsimp
state_before: C : Type u_1
D : Type u_2
inst✝³ : Category.{?u.59011, u_1} C
inst✝² : Category.{?u.59015, u_2} D
inst✝¹ : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
inst✝ : HasZeroMorphisms D
φ : S₁ ⟶ S₂
⊢ φ.τ₂.op ≫ S₁.f.op = S₂.f.op ≫ φ.τ₁.op
state_after: no goals
tactic: simp only [← op_comp, φ.comm₁₂]
Theorem: ModuleCat.smul_naturality
File: Mathlib/Algebra/Category/ModuleCat/Basic.lean

Proof steps:
state_before: R : Type u
inst✝ : Ring R
X₁ X₂ : Type v
M✝ N✝ M N : ModuleCat R
f : M ⟶ N
r : R
⊢ (forget₂ (ModuleCat R) AddCommGrp).map f ≫ N.smul r = M.smul r ≫ (forget₂ (ModuleCat R) AddCommGrp).map f
state_after: case w
R : Type u
inst✝ : Ring R
X₁ X₂ : Type v
M✝ N✝ M N : ModuleCat R
f : M ⟶ N
r : R
x : ↑((forget₂ (ModuleCat R) AddCommGrp).obj M)
⊢ ((forget₂ (ModuleCat R) AddCommGrp).map f ≫ N.smul r) x = (M.smul r ≫ (forget₂ (ModuleCat R) AddCommGrp).map f) x
tactic: ext x
state_before: case w
R : Type u
inst✝ : Ring R
X₁ X₂ : Type v
M✝ N✝ M N : ModuleCat R
f : M ⟶ N
r : R
x : ↑((forget₂ (ModuleCat R) AddCommGrp).obj M)
⊢ ((forget₂ (ModuleCat R) AddCommGrp).map f ≫ N.smul r) x = (M.smul r ≫ (forget₂ (ModuleCat R) AddCommGrp).map f) x
state_after: no goals
tactic: exact (f.map_smul r x).symm
Theorem: stdSimplexEquivIcc_symm_apply_coe
File: Mathlib/Analysis/Convex/Basic.lean

Proof steps:
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
β : Type u_4
inst✝ : OrderedRing 𝕜
f : ↑(stdSimplex 𝕜 (Fin 2))
⊢ 1 - ↑f 0 = ↑f 0 + ↑f 1 - ↑f 0
state_after: no goals
tactic: rw [← Fin.sum_univ_two f.1, f.2.2]