ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: mul_zpow
File: Mathlib/Algebra/Group/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
G : Type u_3
M : Type u_4
inst✝ : DivisionCommMonoid α
a b c d : α
n : ℕ
⊢ (a * b) ^ ↑n = a ^ ↑n * b ^ ↑n
state_after: no goals
tactic: simp_rw [zpow_natCast, mul_pow]
state_before: α : Type u_1
β : Type u_2
G : Type u_3
M : Type u_4
inst✝ : DivisionCommMonoid α
a b c d : α
n : ℕ
⊢ (a * b) ^ Int.negSucc n = a ^ Int.negSucc n * b ^ Int.negSucc n
state_after: no goals
tactic: simp_rw [zpow_negSucc, ← inv_pow, mul_inv, mul_pow]
Theorem: MeasureTheory.measure_smul
File: Mathlib/MeasureTheory/Group/Action.lean

Proof steps:
state_before: G : Type u
M : Type v
α : Type w
s✝ : Set α
m : MeasurableSpace α
inst✝³ : MeasurableSpace G
inst✝² : Group G
inst✝¹ : MulAction G α
μ : Measure α
inst✝ : SMulInvariantMeasure G α μ
c : G
s : Set α
⊢ μ (c • s) = μ s
state_after: no goals
tactic: simpa only [preimage_smul_inv] using measure_preimage_smul μ c⁻¹ s
Theorem: MeasureTheory.Measure.haar.chaar_mem_clPrehaar
File: Mathlib/MeasureTheory/Measure/Haar/Basic.lean

Proof steps:
state_before: G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K₀ : PositiveCompacts G
V : OpenNhdsOf 1
⊢ chaar K₀ ∈ clPrehaar (↑K₀) V
state_after: G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K₀ : PositiveCompacts G
V : OpenNhdsOf 1
this : Classical.choose ⋯ ∈ ⋂ V, clPrehaar (↑K₀) V
⊢ chaar K₀ ∈ clPrehaar (↑K₀) V
tactic: have := (Classical.choose_spec (nonempty_iInter_clPrehaar K₀)).2
state_before: G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K₀ : PositiveCompacts G
V : OpenNhdsOf 1
this : Classical.choose ⋯ ∈ ⋂ V, clPrehaar (↑K₀) V
⊢ chaar K₀ ∈ clPrehaar (↑K₀) V
state_after: G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K₀ : PositiveCompacts G
V : OpenNhdsOf 1
this : ∀ (i : OpenNhdsOf 1), Classical.choose ⋯ ∈ clPrehaar (↑K₀) i
⊢ chaar K₀ ∈ clPrehaar (↑K₀) V
tactic: rw [mem_iInter] at this
state_before: G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K₀ : PositiveCompacts G
V : OpenNhdsOf 1
this : ∀ (i : OpenNhdsOf 1), Classical.choose ⋯ ∈ clPrehaar (↑K₀) i
⊢ chaar K₀ ∈ clPrehaar (↑K₀) V
state_after: no goals
tactic: exact this V
Theorem: cthickening_thickening
File: Mathlib/Analysis/NormedSpace/Pointwise.lean

Proof steps:
state_before: 𝕜 : Type u_1
E : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : SeminormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : NormedSpace ℝ E
x✝ y z : E
δ ε : ℝ
hε : 0 ≤ ε
hδ : 0 < δ
s : Set E
x : E
⊢ x ∈ cthickening (ε + δ) s → x ∈ cthickening ε (thickening δ s)
state_after: 𝕜 : Type u_1
E : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : SeminormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : NormedSpace ℝ E
x✝ y z : E
δ ε : ℝ
hε : 0 ≤ ε
hδ : 0 < δ
s : Set E
x : E
⊢ infEdist x s ≤ ENNReal.ofReal ε + ENNReal.ofReal δ → infEdist x s - ENNReal.ofReal δ ≤ ENNReal.ofReal ε
tactic: simp_rw [mem_cthickening_iff, ENNReal.ofReal_add hε hδ.le, infEdist_thickening hδ]
state_before: 𝕜 : Type u_1
E : Type u_2
inst✝³ : NormedField 𝕜
inst✝² : SeminormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : NormedSpace ℝ E
x✝ y z : E
δ ε : ℝ
hε : 0 ≤ ε
hδ : 0 < δ
s : Set E
x : E
⊢ infEdist x s ≤ ENNReal.ofReal ε + ENNReal.ofReal δ → infEdist x s - ENNReal.ofReal δ ≤ ENNReal.ofReal ε
state_after: no goals
tactic: exact tsub_le_iff_right.2
Theorem: MeasureTheory.eLpNorm'_const
File: Mathlib/MeasureTheory/Function/LpSeminorm/Basic.lean

Proof steps:
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
c : F
hq_pos : 0 < q
⊢ eLpNorm' (fun x => c) q μ = ↑‖c‖₊ * μ Set.univ ^ (1 / q)
state_after: α : 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
c : F
hq_pos : 0 < q
⊢ (↑‖c‖₊ ^ q) ^ (1 / q) * μ Set.univ ^ (1 / q) = ↑‖c‖₊ * μ Set.univ ^ (1 / q)
tactic: rw [eLpNorm', lintegral_const, ENNReal.mul_rpow_of_nonneg _ _ (by simp [hq_pos.le] : 0 ≤ 1 / q)]
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
c : F
hq_pos : 0 < q
⊢ (↑‖c‖₊ ^ q) ^ (1 / q) * μ Set.univ ^ (1 / q) = ↑‖c‖₊ * μ Set.univ ^ (1 / q)
state_after: case e_a
α : 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
c : F
hq_pos : 0 < q
⊢ (↑‖c‖₊ ^ q) ^ (1 / q) = ↑‖c‖₊
tactic: congr
state_before: case e_a
α : 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
c : F
hq_pos : 0 < q
⊢ (↑‖c‖₊ ^ q) ^ (1 / q) = ↑‖c‖₊
state_after: case e_a
α : 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
c : F
hq_pos : 0 < q
⊢ ↑‖c‖₊ ^ (q * (1 / q)) = ↑‖c‖₊
tactic: rw [← ENNReal.rpow_mul]
state_before: case e_a
α : 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
c : F
hq_pos : 0 < q
⊢ ↑‖c‖₊ ^ (q * (1 / q)) = ↑‖c‖₊
state_after: case e_a
α : 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
c : F
hq_pos : 0 < q
⊢ q * (1 / q) = 1
tactic: suffices hq_cancel : q * (1 / q) = 1 by rw [hq_cancel, ENNReal.rpow_one]
state_before: case e_a
α : 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
c : F
hq_pos : 0 < q
⊢ q * (1 / q) = 1
state_after: no goals
tactic: rw [one_div, mul_inv_cancel (ne_of_lt hq_pos).symm]
Theorem: CategoryTheory.Equivalence.cancel_counitInv_right_assoc
File: Mathlib/CategoryTheory/Equivalence.lean

Proof steps:
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
E : Type u₃
inst✝ : Category.{v₃, u₃} E
e : C ≌ D
W X X' Y : D
f : W ⟶ X
g : X ⟶ Y
f' : W ⟶ X'
g' : X' ⟶ Y
⊢ f ≫ g ≫ e.counitInv.app Y = f' ≫ g' ≫ e.counitInv.app Y ↔ f ≫ g = f' ≫ g'
state_after: no goals
tactic: simp only [← Category.assoc, cancel_mono]
Theorem: Finset.prod_fiberwise_of_maps_to
File: Mathlib/Algebra/BigOperators/Group/Finset.lean

Proof steps:
state_before: ι✝ : Type u_1
κ✝ : Type u_2
α✝ : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α✝
a : α✝
f✝¹ g✝¹ : α✝ → β
inst✝² : CommMonoid β
ι : Type u_6
κ : Type u_7
α : Type u_8
inst✝¹ : CommMonoid α
s : Finset ι
t : Finset κ
f✝ : ι → α
g✝ : κ → α
inst✝ : DecidableEq κ
g : ι → κ
h : ∀ i ∈ s, g i ∈ t
f : ι → α
⊢ ∏ j ∈ t, ∏ i ∈ filter (fun i => g i = j) s, f i = ∏ i ∈ s, f i
state_after: no goals
tactic: rw [← prod_disjiUnion, disjiUnion_filter_eq_of_maps_to h]
Theorem: IntermediateField.finrank_bot
File: Mathlib/FieldTheory/Adjoin.lean

Proof steps:
state_before: F : Type u_1
inst✝² : Field F
E : Type u_2
inst✝¹ : Field E
inst✝ : Algebra F E
α : E
S : Set E
K L : IntermediateField F E
⊢ finrank F ↥⊥ = 1
state_after: no goals
tactic: rw [finrank_eq_one_iff]
Theorem: Set.image_prod
File: Mathlib/Data/Set/NAry.lean

Proof steps:
state_before: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
γ' : Type u_6
δ : Type u_7
δ' : Type u_8
ε : Type u_9
ε' : Type u_10
ζ : Type u_11
ζ' : Type u_12
ν : Type u_13
f f' : α → β → γ
g g' : α → β → γ → δ
s s' : Set α
t t' : Set β
u u' : Set γ
v : Set δ
a a' : α
b b' : β
c c' : γ
d d' : δ
x✝ : γ
⊢ x✝ ∈ (fun x => f x.1 x.2) '' s ×ˢ t ↔ x✝ ∈ image2 f s t
state_after: no goals
tactic: simp [and_assoc]
Theorem: Set.nonempty_sInter
File: Mathlib/Data/Set/Lattice.lean

Proof steps:
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
c : Set (Set α)
⊢ (⋂₀ c).Nonempty ↔ ∃ a, ∀ b ∈ c, a ∈ b
state_after: no goals
tactic: simp [nonempty_iff_ne_empty, sInter_eq_empty_iff]
Theorem: Polynomial.eval₂_ofFinsupp
File: Mathlib/Algebra/Polynomial/Eval.lean

Proof steps:
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
inst✝ : Semiring T
f : R →+* S
x : S
p : R[ℕ]
⊢ eval₂ f x { toFinsupp := p } = (liftNC ↑f ⇑((powersHom S) x)) p
state_after: 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
inst✝ : Semiring T
f : R →+* S
x : S
p : R[ℕ]
⊢ ∑ x_1 ∈ p.support, f (p x_1) * x ^ x_1 = (liftNC ↑f ⇑((powersHom S) x)) p
tactic: simp only [eval₂_eq_sum, sum, toFinsupp_sum, support, coeff]
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
inst✝ : Semiring T
f : R →+* S
x : S
p : R[ℕ]
⊢ ∑ x_1 ∈ p.support, f (p x_1) * x ^ x_1 = (liftNC ↑f ⇑((powersHom S) x)) p
state_after: no goals
tactic: rfl
Theorem: Filter.bind_mono
File: Mathlib/Order/Filter/Basic.lean

Proof steps:
state_before: α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
l f₁ f₂ : Filter α
g₁ g₂ : α → Filter β
hf : f₁ ≤ f₂
hg : g₁ ≤ᶠ[f₁] g₂
⊢ f₁.bind g₁ ≤ f₂.bind g₂
state_after: α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
l f₁ f₂ : Filter α
g₁ g₂ : α → Filter β
hf : f₁ ≤ f₂
hg : g₁ ≤ᶠ[f₁] g₂
s : Set β
hs : s ∈ (map g₂ f₁).join
⊢ s ∈ f₁.bind g₁
tactic: refine le_trans (fun s hs => ?_) (join_mono <| map_mono hf)
state_before: α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
l f₁ f₂ : Filter α
g₁ g₂ : α → Filter β
hf : f₁ ≤ f₂
hg : g₁ ≤ᶠ[f₁] g₂
s : Set β
hs : s ∈ (map g₂ f₁).join
⊢ s ∈ f₁.bind g₁
state_after: α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
l f₁ f₂ : Filter α
g₁ g₂ : α → Filter β
hf : f₁ ≤ f₂
hg : g₁ ≤ᶠ[f₁] g₂
s : Set β
hs : g₂ ⁻¹' {t | s ∈ t} ∈ f₁
⊢ {a | s ∈ g₁ a} ∈ f₁
tactic: simp only [mem_join, mem_bind', mem_map] at hs ⊢
state_before: α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
l f₁ f₂ : Filter α
g₁ g₂ : α → Filter β
hf : f₁ ≤ f₂
hg : g₁ ≤ᶠ[f₁] g₂
s : Set β
hs : g₂ ⁻¹' {t | s ∈ t} ∈ f₁
⊢ {a | s ∈ g₁ a} ∈ f₁
state_after: no goals
tactic: filter_upwards [hg, hs] with _ hx hs using hx hs
Theorem: Real.dist_le_of_mem_Icc_01
File: Mathlib/Topology/MetricSpace/Pseudo/Lemmas.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
inst✝ : PseudoMetricSpace α
x y : ℝ
hx : x ∈ Icc 0 1
hy : y ∈ Icc 0 1
⊢ dist x y ≤ 1
state_after: no goals
tactic: simpa only [sub_zero] using Real.dist_le_of_mem_Icc hx hy
Theorem: lowerSemicontinuous_iff_isClosed_epigraph
File: Mathlib/Topology/Semicontinuous.lean

Proof steps:
state_before: α : Type u_1
inst✝⁵ : TopologicalSpace α
β : Type u_2
inst✝⁴ : Preorder β
f✝ g : α → β
x : α
s t : Set α
y z : β
γ : Type u_3
inst✝³ : CompleteLinearOrder γ
inst✝² : DenselyOrdered γ
inst✝¹ : TopologicalSpace γ
inst✝ : OrderTopology γ
f : α → γ
⊢ LowerSemicontinuous f ↔ IsClosed {p | f p.1 ≤ p.2}
state_after: case mp
α : Type u_1
inst✝⁵ : TopologicalSpace α
β : Type u_2
inst✝⁴ : Preorder β
f✝ g : α → β
x : α
s t : Set α
y z : β
γ : Type u_3
inst✝³ : CompleteLinearOrder γ
inst✝² : DenselyOrdered γ
inst✝¹ : TopologicalSpace γ
inst✝ : OrderTopology γ
f : α → γ
⊢ LowerSemicontinuous f → IsClosed {p | f p.1 ≤ p.2}

case mpr
α : Type u_1
inst✝⁵ : TopologicalSpace α
β : Type u_2
inst✝⁴ : Preorder β
f✝ g : α → β
x : α
s t : Set α
y z : β
γ : Type u_3
inst✝³ : CompleteLinearOrder γ
inst✝² : DenselyOrdered γ
inst✝¹ : TopologicalSpace γ
inst✝ : OrderTopology γ
f : α → γ
⊢ IsClosed {p | f p.1 ≤ p.2} → LowerSemicontinuous f
tactic: constructor
Theorem: Polynomial.isRoot_cyclotomic_iff
File: Mathlib/RingTheory/Polynomial/Cyclotomic/Roots.lean

Proof steps:
state_before: R : Type u_1
inst✝² : CommRing R
n : ℕ
inst✝¹ : IsDomain R
inst✝ : NeZero ↑n
μ : R
⊢ (cyclotomic n R).IsRoot μ ↔ IsPrimitiveRoot μ n
state_after: R : Type u_1
inst✝² : CommRing R
n : ℕ
inst✝¹ : IsDomain R
inst✝ : NeZero ↑n
μ : R
hf : Function.Injective ⇑(algebraMap R (FractionRing R))
⊢ (cyclotomic n R).IsRoot μ ↔ IsPrimitiveRoot μ n
tactic: have hf : Function.Injective _ := IsFractionRing.injective R (FractionRing R)
state_before: R : Type u_1
inst✝² : CommRing R
n : ℕ
inst✝¹ : IsDomain R
inst✝ : NeZero ↑n
μ : R
hf : Function.Injective ⇑(algebraMap R (FractionRing R))
⊢ (cyclotomic n R).IsRoot μ ↔ IsPrimitiveRoot μ n
state_after: R : Type u_1
inst✝² : CommRing R
n : ℕ
inst✝¹ : IsDomain R
inst✝ : NeZero ↑n
μ : R
hf : Function.Injective ⇑(algebraMap R (FractionRing R))
this : NeZero ↑n
⊢ (cyclotomic n R).IsRoot μ ↔ IsPrimitiveRoot μ n
tactic: haveI : NeZero (n : FractionRing R) := NeZero.nat_of_injective hf
state_before: R : Type u_1
inst✝² : CommRing R
n : ℕ
inst✝¹ : IsDomain R
inst✝ : NeZero ↑n
μ : R
hf : Function.Injective ⇑(algebraMap R (FractionRing R))
this : NeZero ↑n
⊢ (cyclotomic n R).IsRoot μ ↔ IsPrimitiveRoot μ n
state_after: no goals
tactic: rw [← isRoot_map_iff hf, ← IsPrimitiveRoot.map_iff_of_injective hf, map_cyclotomic, ←
    isRoot_cyclotomic_iff']
Theorem: FDRep.char_iso
File: Mathlib/RepresentationTheory/Character.lean

Proof steps:
state_before: k : Type u
inst✝¹ : Field k
G : Type u
inst✝ : Monoid G
V W : FDRep k G
i : V ≅ W
⊢ V.character = W.character
state_after: case h
k : Type u
inst✝¹ : Field k
G : Type u
inst✝ : Monoid G
V W : FDRep k G
i : V ≅ W
g : G
⊢ V.character g = W.character g
tactic: ext g
state_before: case h
k : Type u
inst✝¹ : Field k
G : Type u
inst✝ : Monoid G
V W : FDRep k G
i : V ≅ W
g : G
⊢ V.character g = W.character g
state_after: case h
k : Type u
inst✝¹ : Field k
G : Type u
inst✝ : Monoid G
V W : FDRep k G
i : V ≅ W
g : G
⊢ (trace k (CoeSort.coe V)) (V.ρ g) = (trace k (CoeSort.coe W)) ((isoToLinearEquiv i).conj (V.ρ g))
tactic: simp only [character, FDRep.Iso.conj_ρ i]
state_before: case h
k : Type u
inst✝¹ : Field k
G : Type u
inst✝ : Monoid G
V W : FDRep k G
i : V ≅ W
g : G
⊢ (trace k (CoeSort.coe V)) (V.ρ g) = (trace k (CoeSort.coe W)) ((isoToLinearEquiv i).conj (V.ρ g))
state_after: no goals
tactic: exact (trace_conj' (V.ρ g) _).symm
Theorem: Finset.centerMass_of_sum_add_sum_eq_zero
File: Mathlib/Analysis/Convex/Combination.lean

Proof steps:
state_before: R : Type u_1
R' : Type u_2
E : Type u_3
F : Type u_4
ι : Type u_5
ι' : Type u_6
α : Type u_7
inst✝⁸ : LinearOrderedField R
inst✝⁷ : LinearOrderedField R'
inst✝⁶ : AddCommGroup E
inst✝⁵ : AddCommGroup F
inst✝⁴ : LinearOrderedAddCommGroup α
inst✝³ : Module R E
inst✝² : Module R F
inst✝¹ : Module R α
inst✝ : OrderedSMul R α
s✝ : Set E
i j : ι
c : R
t✝ : Finset ι
w : ι → R
z : ι → E
s t : Finset ι
hw : ∑ i ∈ s, w i + ∑ i ∈ t, w i = 0
hz : ∑ i ∈ s, w i • z i + ∑ i ∈ t, w i • z i = 0
⊢ s.centerMass w z = t.centerMass w z
state_after: no goals
tactic: simp [centerMass, eq_neg_of_add_eq_zero_right hw, eq_neg_of_add_eq_zero_left hz, ← neg_inv]
Theorem: Int.log_zpow
File: Mathlib/Data/Int/Log.lean

Proof steps:
state_before: R : Type u_1
inst✝¹ : LinearOrderedSemifield R
inst✝ : FloorSemiring R
b : ℕ
hb : 1 < b
z : ℤ
⊢ log b (↑b ^ z) = z
state_after: case intro.inl
R : Type u_1
inst✝¹ : LinearOrderedSemifield R
inst✝ : FloorSemiring R
b : ℕ
hb : 1 < b
n : ℕ
⊢ log b (↑b ^ ↑n) = ↑n

case intro.inr
R : Type u_1
inst✝¹ : LinearOrderedSemifield R
inst✝ : FloorSemiring R
b : ℕ
hb : 1 < b
n : ℕ
⊢ log b (↑b ^ (-↑n)) = -↑n
tactic: obtain ⟨n, rfl | rfl⟩ := Int.eq_nat_or_neg z
Theorem: Finset.mulAntidiagonal_min_mul_min
File: Mathlib/Data/Finset/MulAntidiagonal.lean

Proof steps:
state_before: α✝ : Type u_1
inst✝¹ : OrderedCancelCommMonoid α✝
s✝ t✝ : Set α✝
hs✝ : s✝.IsPWO
ht✝ : t✝.IsPWO
a : α✝
u : Set α✝
hu : u.IsPWO
x : α✝ × α✝
α : Type u_2
inst✝ : LinearOrderedCancelCommMonoid α
s t : Set α
hs : s.IsWF
ht : t.IsWF
hns : s.Nonempty
hnt : t.Nonempty
⊢ mulAntidiagonal ⋯ ⋯ (hs.min hns * ht.min hnt) = {(hs.min hns, ht.min hnt)}
state_after: case a.mk
α✝ : Type u_1
inst✝¹ : OrderedCancelCommMonoid α✝
s✝ t✝ : Set α✝
hs✝ : s✝.IsPWO
ht✝ : t✝.IsPWO
a✝ : α✝
u : Set α✝
hu : u.IsPWO
x : α✝ × α✝
α : Type u_2
inst✝ : LinearOrderedCancelCommMonoid α
s t : Set α
hs : s.IsWF
ht : t.IsWF
hns : s.Nonempty
hnt : t.Nonempty
a b : α
⊢ (a, b) ∈ mulAntidiagonal ⋯ ⋯ (hs.min hns * ht.min hnt) ↔ (a, b) ∈ {(hs.min hns, ht.min hnt)}
tactic: ext ⟨a, b⟩
state_before: case a.mk
α✝ : Type u_1
inst✝¹ : OrderedCancelCommMonoid α✝
s✝ t✝ : Set α✝
hs✝ : s✝.IsPWO
ht✝ : t✝.IsPWO
a✝ : α✝
u : Set α✝
hu : u.IsPWO
x : α✝ × α✝
α : Type u_2
inst✝ : LinearOrderedCancelCommMonoid α
s t : Set α
hs : s.IsWF
ht : t.IsWF
hns : s.Nonempty
hnt : t.Nonempty
a b : α
⊢ (a, b) ∈ mulAntidiagonal ⋯ ⋯ (hs.min hns * ht.min hnt) ↔ (a, b) ∈ {(hs.min hns, ht.min hnt)}
state_after: case a.mk
α✝ : Type u_1
inst✝¹ : OrderedCancelCommMonoid α✝
s✝ t✝ : Set α✝
hs✝ : s✝.IsPWO
ht✝ : t✝.IsPWO
a✝ : α✝
u : Set α✝
hu : u.IsPWO
x : α✝ × α✝
α : Type u_2
inst✝ : LinearOrderedCancelCommMonoid α
s t : Set α
hs : s.IsWF
ht : t.IsWF
hns : s.Nonempty
hnt : t.Nonempty
a b : α
⊢ a ∈ s ∧ b ∈ t ∧ a * b = hs.min hns * ht.min hnt ↔ a = hs.min hns ∧ b = ht.min hnt
tactic: simp only [mem_mulAntidiagonal, mem_singleton, Prod.ext_iff]
state_before: case a.mk
α✝ : Type u_1
inst✝¹ : OrderedCancelCommMonoid α✝
s✝ t✝ : Set α✝
hs✝ : s✝.IsPWO
ht✝ : t✝.IsPWO
a✝ : α✝
u : Set α✝
hu : u.IsPWO
x : α✝ × α✝
α : Type u_2
inst✝ : LinearOrderedCancelCommMonoid α
s t : Set α
hs : s.IsWF
ht : t.IsWF
hns : s.Nonempty
hnt : t.Nonempty
a b : α
⊢ a ∈ s ∧ b ∈ t ∧ a * b = hs.min hns * ht.min hnt ↔ a = hs.min hns ∧ b = ht.min hnt
state_after: case a.mk.mp
α✝ : Type u_1
inst✝¹ : OrderedCancelCommMonoid α✝
s✝ t✝ : Set α✝
hs✝ : s✝.IsPWO
ht✝ : t✝.IsPWO
a✝ : α✝
u : Set α✝
hu : u.IsPWO
x : α✝ × α✝
α : Type u_2
inst✝ : LinearOrderedCancelCommMonoid α
s t : Set α
hs : s.IsWF
ht : t.IsWF
hns : s.Nonempty
hnt : t.Nonempty
a b : α
⊢ a ∈ s ∧ b ∈ t ∧ a * b = hs.min hns * ht.min hnt → a = hs.min hns ∧ b = ht.min hnt

case a.mk.mpr
α✝ : Type u_1
inst✝¹ : OrderedCancelCommMonoid α✝
s✝ t✝ : Set α✝
hs✝ : s✝.IsPWO
ht✝ : t✝.IsPWO
a✝ : α✝
u : Set α✝
hu : u.IsPWO
x : α✝ × α✝
α : Type u_2
inst✝ : LinearOrderedCancelCommMonoid α
s t : Set α
hs : s.IsWF
ht : t.IsWF
hns : s.Nonempty
hnt : t.Nonempty
a b : α
⊢ a = hs.min hns ∧ b = ht.min hnt → a ∈ s ∧ b ∈ t ∧ a * b = hs.min hns * ht.min hnt
tactic: constructor
Theorem: Coheyting.hnot_eq_top_iff_exists_boundary
File: Mathlib/Order/Heyting/Boundary.lean

Proof steps:
state_before: α : Type u_1
inst✝ : CoheytingAlgebra α
a b : α
h : ￢a = ⊤
⊢ ∂ a = a
state_after: no goals
tactic: rw [boundary, h, inf_top_eq]
state_before: α : Type u_1
inst✝ : CoheytingAlgebra α
a b : α
⊢ (∃ b, ∂ b = a) → ￢a = ⊤
state_after: case intro
α : Type u_1
inst✝ : CoheytingAlgebra α
b✝ b : α
⊢ ￢∂ b = ⊤
tactic: rintro ⟨b, rfl⟩
state_before: case intro
α : Type u_1
inst✝ : CoheytingAlgebra α
b✝ b : α
⊢ ￢∂ b = ⊤
state_after: no goals
tactic: exact hnot_boundary _
Theorem: DoubleCentralizer.ext
File: Mathlib/Analysis/CstarAlgebra/Multiplier.lean

Proof steps:
state_before: 𝕜 : Type u
A : Type v
inst✝⁴ : NontriviallyNormedField 𝕜
inst✝³ : NonUnitalNormedRing A
inst✝² : NormedSpace 𝕜 A
inst✝¹ : SMulCommClass 𝕜 A A
inst✝ : IsScalarTower 𝕜 A A
a b : 𝓜(𝕜, A)
h : a.toProd = b.toProd
⊢ a = b
state_after: case mk
𝕜 : Type u
A : Type v
inst✝⁴ : NontriviallyNormedField 𝕜
inst✝³ : NonUnitalNormedRing A
inst✝² : NormedSpace 𝕜 A
inst✝¹ : SMulCommClass 𝕜 A A
inst✝ : IsScalarTower 𝕜 A A
b : 𝓜(𝕜, A)
toProd✝ : (A →L[𝕜] A) × (A →L[𝕜] A)
central✝ : ∀ (x y : A), toProd✝.2 x * y = x * toProd✝.1 y
h : { toProd := toProd✝, central := central✝ }.toProd = b.toProd
⊢ { toProd := toProd✝, central := central✝ } = b
tactic: cases a
state_before: case mk
𝕜 : Type u
A : Type v
inst✝⁴ : NontriviallyNormedField 𝕜
inst✝³ : NonUnitalNormedRing A
inst✝² : NormedSpace 𝕜 A
inst✝¹ : SMulCommClass 𝕜 A A
inst✝ : IsScalarTower 𝕜 A A
b : 𝓜(𝕜, A)
toProd✝ : (A →L[𝕜] A) × (A →L[𝕜] A)
central✝ : ∀ (x y : A), toProd✝.2 x * y = x * toProd✝.1 y
h : { toProd := toProd✝, central := central✝ }.toProd = b.toProd
⊢ { toProd := toProd✝, central := central✝ } = b
state_after: case mk.mk
𝕜 : Type u
A : Type v
inst✝⁴ : NontriviallyNormedField 𝕜
inst✝³ : NonUnitalNormedRing A
inst✝² : NormedSpace 𝕜 A
inst✝¹ : SMulCommClass 𝕜 A A
inst✝ : IsScalarTower 𝕜 A A
toProd✝¹ : (A →L[𝕜] A) × (A →L[𝕜] A)
central✝¹ : ∀ (x y : A), toProd✝¹.2 x * y = x * toProd✝¹.1 y
toProd✝ : (A →L[𝕜] A) × (A →L[𝕜] A)
central✝ : ∀ (x y : A), toProd✝.2 x * y = x * toProd✝.1 y
h : { toProd := toProd✝¹, central := central✝¹ }.toProd = { toProd := toProd✝, central := central✝ }.toProd
⊢ { toProd := toProd✝¹, central := central✝¹ } = { toProd := toProd✝, central := central✝ }
tactic: cases b
state_before: case mk.mk
𝕜 : Type u
A : Type v
inst✝⁴ : NontriviallyNormedField 𝕜
inst✝³ : NonUnitalNormedRing A
inst✝² : NormedSpace 𝕜 A
inst✝¹ : SMulCommClass 𝕜 A A
inst✝ : IsScalarTower 𝕜 A A
toProd✝¹ : (A →L[𝕜] A) × (A →L[𝕜] A)
central✝¹ : ∀ (x y : A), toProd✝¹.2 x * y = x * toProd✝¹.1 y
toProd✝ : (A →L[𝕜] A) × (A →L[𝕜] A)
central✝ : ∀ (x y : A), toProd✝.2 x * y = x * toProd✝.1 y
h : { toProd := toProd✝¹, central := central✝¹ }.toProd = { toProd := toProd✝, central := central✝ }.toProd
⊢ { toProd := toProd✝¹, central := central✝¹ } = { toProd := toProd✝, central := central✝ }
state_after: no goals
tactic: simpa using h
Theorem: one_mem_posTangentConeAt_iff_mem_closure
File: Mathlib/Analysis/Calculus/LocalExtr/Basic.lean

Proof steps:
state_before: f : ℝ → ℝ
f' : ℝ
s : Set ℝ
a b : ℝ
⊢ 1 ∈ posTangentConeAt s a ↔ a ∈ closure (Ioi a ∩ s)
state_after: case mp
f : ℝ → ℝ
f' : ℝ
s : Set ℝ
a b : ℝ
⊢ 1 ∈ posTangentConeAt s a → a ∈ closure (Ioi a ∩ s)

case mpr
f : ℝ → ℝ
f' : ℝ
s : Set ℝ
a b : ℝ
⊢ a ∈ closure (Ioi a ∩ s) → 1 ∈ posTangentConeAt s a
tactic: constructor
Theorem: Equiv.Perm.SameCycle.exists_pow_eq
File: Mathlib/GroupTheory/Perm/Cycle/Factors.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
f✝ g : Perm α
x y : α
inst✝³ : DecidableRel f✝.SameCycle
inst✝² : DecidableRel g.SameCycle
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f : Perm α
h : f.SameCycle x y
⊢ ∃ i, 0 < i ∧ i ≤ (f.cycleOf x).support.card + 1 ∧ (f ^ i) x = y
state_after: case pos
ι : Type u_1
α : Type u_2
β : Type u_3
f✝ g : Perm α
x y : α
inst✝³ : DecidableRel f✝.SameCycle
inst✝² : DecidableRel g.SameCycle
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f : Perm α
h : f.SameCycle x y
hx : x ∈ f.support
⊢ ∃ i, 0 < i ∧ i ≤ (f.cycleOf x).support.card + 1 ∧ (f ^ i) x = y

case neg
ι : Type u_1
α : Type u_2
β : Type u_3
f✝ g : Perm α
x y : α
inst✝³ : DecidableRel f✝.SameCycle
inst✝² : DecidableRel g.SameCycle
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f : Perm α
h : f.SameCycle x y
hx : x ∉ f.support
⊢ ∃ i, 0 < i ∧ i ≤ (f.cycleOf x).support.card + 1 ∧ (f ^ i) x = y
tactic: by_cases hx : x ∈ f.support
Theorem: CategoryTheory.Adjunction.localization_counit_app
File: Mathlib/CategoryTheory/Localization/Adjunction.lean

Proof steps:
state_before: C₁ : Type u_1
C₂ : Type u_2
D₁ : Type u_3
D₂ : Type u_4
inst✝⁷ : Category.{u_8, u_1} C₁
inst✝⁶ : Category.{u_7, u_2} C₂
inst✝⁵ : Category.{u_6, u_3} D₁
inst✝⁴ : Category.{u_5, u_4} D₂
G : C₁ ⥤ C₂
F : C₂ ⥤ C₁
adj : G ⊣ F
L₁ : C₁ ⥤ D₁
W₁ : MorphismProperty C₁
inst✝³ : L₁.IsLocalization W₁
L₂ : C₂ ⥤ D₂
W₂ : MorphismProperty C₂
inst✝² : L₂.IsLocalization W₂
G' : D₁ ⥤ D₂
F' : D₂ ⥤ D₁
inst✝¹ : CatCommSq G L₁ L₂ G'
inst✝ : CatCommSq F L₂ L₁ F'
X₂ : C₂
⊢ (adj.localization L₁ W₁ L₂ W₂ G' F').counit.app (L₂.obj X₂) =
    G'.map ((CatCommSq.iso F L₂ L₁ F').inv.app X₂) ≫
      (CatCommSq.iso G L₁ L₂ G').inv.app (F.obj X₂) ≫ L₂.map (adj.counit.app X₂)
state_after: no goals
tactic: apply Localization.η_app