ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: stoneCechExtend_extends
File: Mathlib/Topology/StoneCech.lean

Proof steps:
state_before: α : Type u
inst✝³ : TopologicalSpace α
β : Type v
inst✝² : TopologicalSpace β
inst✝¹ : T2Space β
inst✝ : CompactSpace β
g : α → β
hg : Continuous g
⊢ stoneCechExtend hg ∘ stoneCechUnit = g
state_after: case h
α : Type u
inst✝³ : TopologicalSpace α
β : Type v
inst✝² : TopologicalSpace β
inst✝¹ : T2Space β
inst✝ : CompactSpace β
g : α → β
hg : Continuous g
x : α
⊢ (stoneCechExtend hg ∘ stoneCechUnit) x = g x
tactic: ext x
state_before: case h
α : Type u
inst✝³ : TopologicalSpace α
β : Type v
inst✝² : TopologicalSpace β
inst✝¹ : T2Space β
inst✝ : CompactSpace β
g : α → β
hg : Continuous g
x : α
⊢ (stoneCechExtend hg ∘ stoneCechUnit) x = g x
state_after: case h
α : Type u
inst✝³ : TopologicalSpace α
β : Type v
inst✝² : TopologicalSpace β
inst✝¹ : T2Space β
inst✝ : CompactSpace β
g : α → β
hg : Continuous g
x : α
⊢ preStoneCechExtend hg (preStoneCechUnit x) = g x
tactic: rw [stoneCechExtend, Function.comp_apply, stoneCechUnit, t2Quotient.lift_mk]
state_before: case h
α : Type u
inst✝³ : TopologicalSpace α
β : Type v
inst✝² : TopologicalSpace β
inst✝¹ : T2Space β
inst✝ : CompactSpace β
g : α → β
hg : Continuous g
x : α
⊢ preStoneCechExtend hg (preStoneCechUnit x) = g x
state_after: no goals
tactic: apply congrFun (preStoneCechExtend_extends hg)
Theorem: Algebra.smulTower_leftMulMatrix
File: Mathlib/LinearAlgebra/Matrix/ToLin.lean

Proof steps:
state_before: R : Type u_1
S : Type u_2
T : Type u_3
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
inst✝⁸ : Ring T
inst✝⁷ : Algebra R S
inst✝⁶ : Algebra S T
inst✝⁵ : Algebra R T
inst✝⁴ : IsScalarTower R S T
m : Type u_4
n : Type u_5
inst✝³ : Fintype m
inst✝² : Fintype n
inst✝¹ : DecidableEq m
inst✝ : DecidableEq n
b : Basis m R S
c : Basis n S T
x : T
ik jk : m × n
⊢ (leftMulMatrix (b.smulTower c)) x ik jk = (leftMulMatrix b) ((leftMulMatrix c) x ik.2 jk.2) ik.1 jk.1
state_after: no goals
tactic: simp only [leftMulMatrix_apply, LinearMap.toMatrix_apply, mul_comm, Basis.smulTower_apply,
    Basis.smulTower_repr, Finsupp.smul_apply, id.smul_eq_mul, LinearEquiv.map_smul, mul_smul_comm,
    coe_lmul_eq_mul, LinearMap.mul_apply']
Theorem: SetTheory.PGame.moveRight_nim_hEq
File: Mathlib/SetTheory/Game/Nim.lean

Proof steps:
state_before: o : Ordinal.{u_1}
⊢ let_fun this := ⋯;
  HEq (nim o).moveRight fun i => nim (typein (fun x x_1 => x < x_1) i)
state_after: o : Ordinal.{u_1}
⊢ let_fun this := ⋯;
  HEq
    (mk (Quotient.out o).α (Quotient.out o).α (fun o₂ => nim (typein (fun x x_1 => x < x_1) o₂)) fun o₂ =>
        nim (typein (fun x x_1 => x < x_1) o₂)).moveRight
    fun i => nim (typein (fun x x_1 => x < x_1) i)
tactic: rw [nim_def]
state_before: o : Ordinal.{u_1}
⊢ let_fun this := ⋯;
  HEq
    (mk (Quotient.out o).α (Quotient.out o).α (fun o₂ => nim (typein (fun x x_1 => x < x_1) o₂)) fun o₂ =>
        nim (typein (fun x x_1 => x < x_1) o₂)).moveRight
    fun i => nim (typein (fun x x_1 => x < x_1) i)
state_after: no goals
tactic: rfl
Theorem: Symmetric.forall_existsUnique_iff'
File: Mathlib/Logic/Function/Basic.lean

Proof steps:
state_before: α : Sort u_1
β : Sort u_2
r : α → α → Prop
hr : Symmetric r
⊢ (∀ (a : α), ∃! b, r a b) ↔ ∃ f, Involutive f ∧ r = fun x x_1 => f x = x_1
state_after: α : Sort u_1
β : Sort u_2
r : α → α → Prop
hr : Symmetric r
h : ∀ (a : α), ∃! b, r a b
⊢ ∃ f, Involutive f ∧ r = fun x x_1 => f x = x_1
tactic: refine ⟨fun h ↦ ?_, fun ⟨f, _, hf⟩ ↦ forall_existsUnique_iff'.2 ⟨f, hf⟩⟩
state_before: α : Sort u_1
β : Sort u_2
r : α → α → Prop
hr : Symmetric r
h : ∀ (a : α), ∃! b, r a b
⊢ ∃ f, Involutive f ∧ r = fun x x_1 => f x = x_1
state_after: case intro
α : Sort u_1
β : Sort u_2
f : α → α
hr : Symmetric fun x x_1 => f x = x_1
h : ∀ (a : α), ∃! b, (fun x x_1 => f x = x_1) a b
⊢ ∃ f_1, Involutive f_1 ∧ (fun x x_1 => f x = x_1) = fun x x_1 => f_1 x = x_1
tactic: rcases forall_existsUnique_iff'.1 h with ⟨f, rfl : r = _⟩
state_before: case intro
α : Sort u_1
β : Sort u_2
f : α → α
hr : Symmetric fun x x_1 => f x = x_1
h : ∀ (a : α), ∃! b, (fun x x_1 => f x = x_1) a b
⊢ ∃ f_1, Involutive f_1 ∧ (fun x x_1 => f x = x_1) = fun x x_1 => f_1 x = x_1
state_after: no goals
tactic: exact ⟨f, symmetric_apply_eq_iff.1 hr, rfl⟩
Theorem: map_invOf
File: Mathlib/Algebra/Group/Invertible/Basic.lean

Proof steps:
state_before: α : Type u
R : Type u_1
S : Type u_2
F : Type u_3
inst✝⁴ : MulOneClass R
inst✝³ : Monoid S
inst✝² : FunLike F R S
inst✝¹ : MonoidHomClass F R S
f : F
r : R
inst✝ : Invertible r
ifr : Invertible (f r)
h : ifr = Invertible.map f r
⊢ f ⅟r = ⅟(f r)
state_after: α : Type u
R : Type u_1
S : Type u_2
F : Type u_3
inst✝⁴ : MulOneClass R
inst✝³ : Monoid S
inst✝² : FunLike F R S
inst✝¹ : MonoidHomClass F R S
f : F
r : R
inst✝ : Invertible r
⊢ f ⅟r = ⅟(f r)
tactic: subst h
state_before: α : Type u
R : Type u_1
S : Type u_2
F : Type u_3
inst✝⁴ : MulOneClass R
inst✝³ : Monoid S
inst✝² : FunLike F R S
inst✝¹ : MonoidHomClass F R S
f : F
r : R
inst✝ : Invertible r
⊢ f ⅟r = ⅟(f r)
state_after: no goals
tactic: rfl
Theorem: Odd.neg_zpow
File: Mathlib/Algebra/Field/Power.lean

Proof steps:
state_before: α : Type u_1
inst✝ : DivisionRing α
n : ℤ
h : Odd n
a : α
⊢ (-a) ^ n = -a ^ n
state_after: α : Type u_1
inst✝ : DivisionRing α
n : ℤ
h : Odd n
a : α
hn : n ≠ 0
⊢ (-a) ^ n = -a ^ n
tactic: have hn : n ≠ 0 := by rintro rfl; exact Int.odd_iff_not_even.1 h even_zero
state_before: α : Type u_1
inst✝ : DivisionRing α
n : ℤ
h : Odd n
a : α
hn : n ≠ 0
⊢ (-a) ^ n = -a ^ n
state_after: case intro
α : Type u_1
inst✝ : DivisionRing α
a : α
k : ℤ
hn : 2 * k + 1 ≠ 0
⊢ (-a) ^ (2 * k + 1) = -a ^ (2 * k + 1)
tactic: obtain ⟨k, rfl⟩ := h
state_before: case intro
α : Type u_1
inst✝ : DivisionRing α
a : α
k : ℤ
hn : 2 * k + 1 ≠ 0
⊢ (-a) ^ (2 * k + 1) = -a ^ (2 * k + 1)
state_after: no goals
tactic: simp_rw [zpow_add' (.inr (.inl hn)), zpow_one, zpow_mul, zpow_two, neg_mul_neg,
    neg_mul_eq_mul_neg]
Theorem: Fin.succ_succAbove_one
File: Mathlib/Data/Fin/Basic.lean

Proof steps:
state_before: n✝ m : ℕ
p : Fin (n✝ + 1)
i✝ j : Fin n✝
n : ℕ
inst✝ : NeZero n
i : Fin (n + 1)
⊢ i.succ.succAbove 1 = (i.succAbove 0).succ
state_after: n✝ m : ℕ
p : Fin (n✝ + 1)
i✝ j : Fin n✝
n : ℕ
inst✝ : NeZero n
i : Fin (n + 1)
⊢ i.succ.succAbove (succ 0) = (i.succAbove 0).succ
tactic: rw [← succ_zero_eq_one']
state_before: n✝ m : ℕ
p : Fin (n✝ + 1)
i✝ j : Fin n✝
n : ℕ
inst✝ : NeZero n
i : Fin (n + 1)
⊢ i.succ.succAbove (succ 0) = (i.succAbove 0).succ
state_after: no goals
tactic: convert succ_succAbove_succ i 0
Theorem: _private.Mathlib.Data.List.Perm.0.List.DecEq_eq
File: Mathlib/Data/List/Perm.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
l l₁ l₂ : List α
a : α
inst✝ : DecidableEq α
⊢ List.beq = fun a b => decide (a = b)
state_after: case h.h
α : Type u_1
β : Type u_2
l l₁✝ l₂✝ : List α
a : α
inst✝ : DecidableEq α
l₁ l₂ : List α
⊢ l₁.beq l₂ = decide (l₁ = l₂)
tactic: funext l₁ l₂
state_before: case h.h
α : Type u_1
β : Type u_2
l l₁✝ l₂✝ : List α
a : α
inst✝ : DecidableEq α
l₁ l₂ : List α
⊢ l₁.beq l₂ = decide (l₁ = l₂)
state_after: case h.h
α : Type u_1
β : Type u_2
l l₁✝ l₂✝ : List α
a : α
inst✝ : DecidableEq α
l₁ l₂ : List α
⊢ (l₁ == l₂) = decide (l₁ = l₂)
tactic: show (l₁ == l₂) = _
state_before: case h.h
α : Type u_1
β : Type u_2
l l₁✝ l₂✝ : List α
a : α
inst✝ : DecidableEq α
l₁ l₂ : List α
⊢ (l₁ == l₂) = decide (l₁ = l₂)
state_after: no goals
tactic: rw [Bool.eq_iff_iff, @beq_iff_eq _ (_), decide_eq_true_iff]
Theorem: Matrix.toMvPolynomial_isHomogeneous
File: Mathlib/Algebra/Module/LinearMap/Polynomial.lean

Proof steps:
state_before: m : Type u_1
n : Type u_2
o : Type u_3
R : Type u_4
S : Type u_5
inst✝³ : Fintype n
inst✝² : Fintype o
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
M : Matrix m n R
i : m
⊢ (M.toMvPolynomial i).IsHomogeneous 1
state_after: case h
m : Type u_1
n : Type u_2
o : Type u_3
R : Type u_4
S : Type u_5
inst✝³ : Fintype n
inst✝² : Fintype o
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
M : Matrix m n R
i : m
⊢ ∀ i_1 ∈ Finset.univ, ((monomial (Finsupp.single i_1 1)) (M i i_1)).IsHomogeneous 1
tactic: apply MvPolynomial.IsHomogeneous.sum
state_before: case h
m : Type u_1
n : Type u_2
o : Type u_3
R : Type u_4
S : Type u_5
inst✝³ : Fintype n
inst✝² : Fintype o
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
M : Matrix m n R
i : m
⊢ ∀ i_1 ∈ Finset.univ, ((monomial (Finsupp.single i_1 1)) (M i i_1)).IsHomogeneous 1
state_after: case h
m : Type u_1
n : Type u_2
o : Type u_3
R : Type u_4
S : Type u_5
inst✝³ : Fintype n
inst✝² : Fintype o
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
M : Matrix m n R
i : m
j : n
⊢ ((monomial (Finsupp.single j 1)) (M i j)).IsHomogeneous 1
tactic: rintro j -
state_before: case h
m : Type u_1
n : Type u_2
o : Type u_3
R : Type u_4
S : Type u_5
inst✝³ : Fintype n
inst✝² : Fintype o
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
M : Matrix m n R
i : m
j : n
⊢ ((monomial (Finsupp.single j 1)) (M i j)).IsHomogeneous 1
state_after: m : Type u_1
n : Type u_2
o : Type u_3
R : Type u_4
S : Type u_5
inst✝³ : Fintype n
inst✝² : Fintype o
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
M : Matrix m n R
i : m
j : n
⊢ (Finsupp.single j 1).degree = 1
tactic: apply MvPolynomial.isHomogeneous_monomial _ _
state_before: m : Type u_1
n : Type u_2
o : Type u_3
R : Type u_4
S : Type u_5
inst✝³ : Fintype n
inst✝² : Fintype o
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
M : Matrix m n R
i : m
j : n
⊢ (Finsupp.single j 1).degree = 1
state_after: no goals
tactic: simp [Finsupp.degree, Finsupp.support_single_ne_zero _ one_ne_zero, Finset.sum_singleton,
    Finsupp.single_eq_same]
Theorem: AddCircle.liftIco_zero_coe_apply
File: Mathlib/Topology/Instances/AddCircle.lean

Proof steps:
state_before: 𝕜 : Type u_1
B : Type u_2
inst✝³ : LinearOrderedAddCommGroup 𝕜
inst✝² : TopologicalSpace 𝕜
inst✝¹ : OrderTopology 𝕜
p a : 𝕜
hp : Fact (0 < p)
inst✝ : Archimedean 𝕜
f : 𝕜 → B
x : 𝕜
hx : x ∈ Ico 0 p
⊢ x ∈ Ico 0 (0 + p)
state_after: no goals
tactic: rwa [zero_add]
Theorem: ENNReal.rpow_lt_one_of_one_lt_of_neg
File: Mathlib/Analysis/SpecialFunctions/Pow/NNReal.lean

Proof steps:
state_before: x : ℝ≥0∞
z : ℝ
hx : 1 < x
hz : z < 0
⊢ x ^ z < 1
state_after: case top
z : ℝ
hz : z < 0
hx : 1 < ⊤
⊢ ⊤ ^ z < 1

case coe
z : ℝ
hz : z < 0
x✝ : ℝ≥0
hx : 1 < ↑x✝
⊢ ↑x✝ ^ z < 1
tactic: cases x
Theorem: Nat.count_mono_left
File: Mathlib/Data/Nat/Count.lean

Proof steps:
state_before: p : ℕ → Prop
inst✝¹ : DecidablePred p
q : ℕ → Prop
inst✝ : DecidablePred q
n : ℕ
hpq : ∀ (k : ℕ), p k → q k
⊢ count p n ≤ count q n
state_after: p : ℕ → Prop
inst✝¹ : DecidablePred p
q : ℕ → Prop
inst✝ : DecidablePred q
n : ℕ
hpq : ∀ (k : ℕ), p k → q k
⊢ (filter p (range n)).card ≤ (filter q (range n)).card
tactic: simp only [count_eq_card_filter_range]
state_before: p : ℕ → Prop
inst✝¹ : DecidablePred p
q : ℕ → Prop
inst✝ : DecidablePred q
n : ℕ
hpq : ∀ (k : ℕ), p k → q k
⊢ (filter p (range n)).card ≤ (filter q (range n)).card
state_after: no goals
tactic: exact card_le_card ((range n).monotone_filter_right hpq)
Theorem: Complex.arg_neg_eq_arg_sub_pi_iff
File: Mathlib/Analysis/SpecialFunctions/Complex/Arg.lean

Proof steps:
state_before: a x✝ z x : ℂ
⊢ (-x).arg = x.arg - π ↔ 0 < x.im ∨ x.im = 0 ∧ x.re < 0
state_after: case inl
a x✝ z x : ℂ
hi : x.im < 0
⊢ (-x).arg = x.arg - π ↔ 0 < x.im ∨ x.im = 0 ∧ x.re < 0

case inr.inl
a x✝ z x : ℂ
hi : x.im = 0
⊢ (-x).arg = x.arg - π ↔ 0 < x.im ∨ x.im = 0 ∧ x.re < 0

case inr.inr
a x✝ z x : ℂ
hi : 0 < x.im
⊢ (-x).arg = x.arg - π ↔ 0 < x.im ∨ x.im = 0 ∧ x.re < 0
tactic: rcases lt_trichotomy x.im 0 with (hi | hi | hi)
Theorem: groupCohomology.map_one_of_isOneCocycle
File: Mathlib/RepresentationTheory/GroupCohomology/LowDegree.lean

Proof steps:
state_before: k G✝ : Type u
inst✝⁴ : CommRing k
inst✝³ : Group G✝
A✝ : Rep k G✝
G : Type u_1
A : Type u_2
inst✝² : Monoid G
inst✝¹ : AddCommGroup A
inst✝ : MulAction G A
f : G → A
hf : IsOneCocycle f
⊢ f 1 = 0
state_after: no goals
tactic: simpa only [mul_one, one_smul, self_eq_add_right] using hf 1 1
Theorem: Quaternion.summable_coe
File: Mathlib/Analysis/Quaternion.lean

Proof steps:
state_before: α : Type u_1
f : α → ℝ
⊢ (Summable fun a => ↑(f a)) ↔ Summable f
state_after: no goals
tactic: simpa only using
    Summable.map_iff_of_leftInverse (algebraMap ℝ ℍ) (show ℍ →ₗ[ℝ] ℝ from QuaternionAlgebra.reₗ _ _)
      (continuous_algebraMap _ _) continuous_re coe_re
Theorem: Topology.IsScottHausdorff.dirSupInacc_of_isOpen
File: Mathlib/Topology/Order/ScottTopology.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝² : Preorder α
s✝ : Set α
inst✝¹ : TopologicalSpace α
inst✝ : IsScottHausdorff α
s : Set α
h : IsOpen s
d : Set α
hd₁ : d.Nonempty
hd₂ : DirectedOn (fun x x_1 => x ≤ x_1) d
a : α
hda : IsLUB d a
hd₃ : a ∈ s
⊢ (d ∩ s).Nonempty
state_after: case intro.intro
α : Type u_1
β : Type u_2
inst✝² : Preorder α
s✝ : Set α
inst✝¹ : TopologicalSpace α
inst✝ : IsScottHausdorff α
s : Set α
h : IsOpen s
d : Set α
hd₁ : d.Nonempty
hd₂ : DirectedOn (fun x x_1 => x ≤ x_1) d
a : α
hda : IsLUB d a
hd₃ : a ∈ s
b : α
hbd : b ∈ d
hb : Ici b ∩ d ⊆ s
⊢ (d ∩ s).Nonempty
tactic: obtain ⟨b, hbd, hb⟩ := isOpen_iff.1 h hd₁ hd₂ hda hd₃
state_before: case intro.intro
α : Type u_1
β : Type u_2
inst✝² : Preorder α
s✝ : Set α
inst✝¹ : TopologicalSpace α
inst✝ : IsScottHausdorff α
s : Set α
h : IsOpen s
d : Set α
hd₁ : d.Nonempty
hd₂ : DirectedOn (fun x x_1 => x ≤ x_1) d
a : α
hda : IsLUB d a
hd₃ : a ∈ s
b : α
hbd : b ∈ d
hb : Ici b ∩ d ⊆ s
⊢ (d ∩ s).Nonempty
state_after: no goals
tactic: exact ⟨b, hbd, hb ⟨le_rfl, hbd⟩⟩
Theorem: Ordinal.nfp_mul_opow_omega_add
File: Mathlib/SetTheory/Ordinal/FixedPoint.lean

Proof steps:
state_before: a c b : Ordinal.{u}
ha : 0 < a
hc : 0 < c
hca : c ≤ a ^ ω
⊢ nfp (fun x => a * x) (a ^ ω * b + c) = a ^ ω * succ b
state_after: case a
a c b : Ordinal.{u}
ha : 0 < a
hc : 0 < c
hca : c ≤ a ^ ω
⊢ nfp (fun x => a * x) (a ^ ω * b + c) ≤ a ^ ω * succ b

case a
a c b : Ordinal.{u}
ha : 0 < a
hc : 0 < c
hca : c ≤ a ^ ω
⊢ a ^ ω * succ b ≤ nfp (fun x => a * x) (a ^ ω * b + c)
tactic: apply le_antisymm
Theorem: Finset.Ico_subset_Ico
File: Mathlib/Order/Interval/Finset/Basic.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
inst✝¹ : Preorder α
inst✝ : LocallyFiniteOrder α
a a₁ a₂ b b₁ b₂ c x : α
ha : a₂ ≤ a₁
hb : b₁ ≤ b₂
⊢ Ico a₁ b₁ ⊆ Ico a₂ b₂
state_after: no goals
tactic: simpa [← coe_subset] using Set.Ico_subset_Ico ha hb
Theorem: SimpleGraph.Walk.IsCycle.three_le_length
File: Mathlib/Combinatorics/SimpleGraph/Path.lean

Proof steps:
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v✝ w v : V
p : G.Walk v v
hp : p.IsCycle
⊢ 3 ≤ p.length
state_after: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v✝ w v : V
p : G.Walk v v
hp✝ : p.IsCycle
hp : p.IsTrail
hp' : p ≠ nil
support_nodup✝ : p.support.tail.Nodup
⊢ 3 ≤ p.length
tactic: have ⟨⟨hp, hp'⟩, _⟩ := hp
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v✝ w v : V
p : G.Walk v v
hp✝ : p.IsCycle
hp : p.IsTrail
hp' : p ≠ nil
support_nodup✝ : p.support.tail.Nodup
⊢ 3 ≤ p.length
state_after: no goals
tactic: match p with
  | .nil => simp at hp'
  | .cons h .nil => simp at h
  | .cons _ (.cons _ .nil) => simp at hp
  | .cons _ (.cons _ (.cons _ _)) => simp_rw [SimpleGraph.Walk.length_cons]; omega
Theorem: Polynomial.natDegree_X_pow_le
File: Mathlib/Algebra/Polynomial/Degree/Definitions.lean

Proof steps:
state_before: R✝ : Type u
S : Type v
a b c d : R✝
n✝¹ m : ℕ
inst✝² : Semiring R✝
inst✝¹ : Nontrivial R✝
p q : R✝[X]
n✝ : ℕ
R : Type u_1
inst✝ : Semiring R
n : ℕ
⊢ (X ^ n).natDegree ≤ n
state_after: R✝ : Type u
S : Type v
a b c d : R✝
n✝¹ m : ℕ
inst✝² : Semiring R✝
inst✝¹ : Nontrivial R✝
p q : R✝[X]
n✝ : ℕ
R : Type u_1
inst✝ : Semiring R
n : ℕ
a✝ : Nontrivial R
⊢ (X ^ n).natDegree ≤ n
tactic: nontriviality R
state_before: R✝ : Type u
S : Type v
a b c d : R✝
n✝¹ m : ℕ
inst✝² : Semiring R✝
inst✝¹ : Nontrivial R✝
p q : R✝[X]
n✝ : ℕ
R : Type u_1
inst✝ : Semiring R
n : ℕ
a✝ : Nontrivial R
⊢ (X ^ n).natDegree ≤ n
state_after: no goals
tactic: rw [Polynomial.natDegree_X_pow]
Theorem: AddAction.stabilizer_vadd_eq_right
File: Mathlib/GroupTheory/GroupAction/Basic.lean

Proof steps:
state_before: G : Type u_1
α : Type u_2
β : Type u_3
inst✝⁵ : Group G
inst✝⁴ : MulAction G α
inst✝³ : MulAction G β
inst✝² : Group α
inst✝¹ : MulAction α β
inst✝ : SMulCommClass G α β
a : α
b : β
⊢ stabilizer G (a⁻¹ • a • b) = stabilizer G b
state_after: no goals
tactic: rw [inv_smul_smul]
Theorem: finite_compl_fixedBy_closure_iff
File: Mathlib/GroupTheory/Perm/ClosureSwap.lean

Proof steps:
state_before: G : Type u_1
α : Type u_2
inst✝² : Group G
inst✝¹ : MulAction G α
inst✝ : DecidableEq α
S : Set G
h : ∀ g ∈ S, (fixedBy α g)ᶜ.Finite
g : G
hg : g ∈ closure S
⊢ (fixedBy α g)ᶜ.Finite
state_after: G : Type u_1
α : Type u_2
inst✝² : Group G
inst✝¹ : MulAction G α
inst✝ : DecidableEq α
S : Set G
h : ∀ g ∈ S, (fixedBy α g)ᶜ.Finite
g✝ : G
hg✝ : g✝ ∈ closure S
g g' : G
hg : (fixedBy α g)ᶜ.Finite
hg' : (fixedBy α g')ᶜ.Finite
⊢ (fixedBy α (g * g'))ᶜ ⊆ (fixedBy α g)ᶜ ∪ (fixedBy α g')ᶜ
tactic: refine closure_induction hg h (by simp) (fun g g' hg hg' ↦ (hg.union hg').subset ?_) (by simp)
state_before: G : Type u_1
α : Type u_2
inst✝² : Group G
inst✝¹ : MulAction G α
inst✝ : DecidableEq α
S : Set G
h : ∀ g ∈ S, (fixedBy α g)ᶜ.Finite
g✝ : G
hg✝ : g✝ ∈ closure S
g g' : G
hg : (fixedBy α g)ᶜ.Finite
hg' : (fixedBy α g')ᶜ.Finite
⊢ (fixedBy α (g * g'))ᶜ ⊆ (fixedBy α g)ᶜ ∪ (fixedBy α g')ᶜ
state_after: no goals
tactic: simp_rw [← compl_inter, compl_subset_compl, fixedBy_mul]
Theorem: Int.neg_emod_two
File: Mathlib/Data/Int/Defs.lean

Proof steps:
state_before: a b c d m n i : ℤ
⊢ -i % 2 = i % 2
state_after: a b c d m n i : ℤ
⊢ (-i - i) % 2 = 0
tactic: apply Int.emod_eq_emod_iff_emod_sub_eq_zero.mpr
state_before: a b c d m n i : ℤ
⊢ (-i - i) % 2 = 0
state_after: case h.e'_2.h.e'_5
a b c d m n i : ℤ
⊢ -i - i = 2 * -i
tactic: convert Int.mul_emod_right 2 (-i) using 2
state_before: case h.e'_2.h.e'_5
a b c d m n i : ℤ
⊢ -i - i = 2 * -i
state_after: no goals
tactic: rw [Int.two_mul, Int.sub_eq_add_neg]
Theorem: Filter.HasBasis.uniformity_of_nhds_zero_swapped
File: Mathlib/Topology/Algebra/UniformGroup.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝² : UniformSpace α
inst✝¹ : Group α
inst✝ : UniformGroup α
ι : Sort u_3
p : ι → Prop
U : ι → Set α
h : (𝓝 1).HasBasis p U
⊢ (𝓤 α).HasBasis p fun i => {x | x.1 / x.2 ∈ U i}
state_after: α : Type u_1
β : Type u_2
inst✝² : UniformSpace α
inst✝¹ : Group α
inst✝ : UniformGroup α
ι : Sort u_3
p : ι → Prop
U : ι → Set α
h : (𝓝 1).HasBasis p U
⊢ (Filter.comap (fun x => x.1 / x.2) (𝓝 1)).HasBasis p fun i => {x | x.1 / x.2 ∈ U i}
tactic: rw [uniformity_eq_comap_nhds_one_swapped]
state_before: α : Type u_1
β : Type u_2
inst✝² : UniformSpace α
inst✝¹ : Group α
inst✝ : UniformGroup α
ι : Sort u_3
p : ι → Prop
U : ι → Set α
h : (𝓝 1).HasBasis p U
⊢ (Filter.comap (fun x => x.1 / x.2) (𝓝 1)).HasBasis p fun i => {x | x.1 / x.2 ∈ U i}
state_after: no goals
tactic: exact h.comap _
Theorem: WithSeminorms.toLocallyConvexSpace
File: Mathlib/Analysis/LocallyConvex/WithSeminorms.lean

Proof steps:
state_before: 𝕜 : Type u_1
𝕜₂ : Type u_2
𝕝 : Type u_3
𝕝₂ : Type u_4
E : Type u_5
F : Type u_6
G : Type u_7
ι : Type u_8
ι' : Type u_9
inst✝⁷ : Nonempty ι
inst✝⁶ : NormedField 𝕜
inst✝⁵ : NormedSpace ℝ 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : Module ℝ E
inst✝¹ : IsScalarTower ℝ 𝕜 E
inst✝ : TopologicalSpace E
p : SeminormFamily 𝕜 E ι
hp : WithSeminorms p
⊢ LocallyConvexSpace ℝ E
state_after: 𝕜 : Type u_1
𝕜₂ : Type u_2
𝕝 : Type u_3
𝕝₂ : Type u_4
E : Type u_5
F : Type u_6
G : Type u_7
ι : Type u_8
ι' : Type u_9
inst✝⁷ : Nonempty ι
inst✝⁶ : NormedField 𝕜
inst✝⁵ : NormedSpace ℝ 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : Module ℝ E
inst✝¹ : IsScalarTower ℝ 𝕜 E
inst✝ : TopologicalSpace E
p : SeminormFamily 𝕜 E ι
hp : WithSeminorms p
this : TopologicalAddGroup E
⊢ LocallyConvexSpace ℝ E
tactic: have := hp.topologicalAddGroup
state_before: 𝕜 : Type u_1
𝕜₂ : Type u_2
𝕝 : Type u_3
𝕝₂ : Type u_4
E : Type u_5
F : Type u_6
G : Type u_7
ι : Type u_8
ι' : Type u_9
inst✝⁷ : Nonempty ι
inst✝⁶ : NormedField 𝕜
inst✝⁵ : NormedSpace ℝ 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : Module ℝ E
inst✝¹ : IsScalarTower ℝ 𝕜 E
inst✝ : TopologicalSpace E
p : SeminormFamily 𝕜 E ι
hp : WithSeminorms p
this : TopologicalAddGroup E
⊢ LocallyConvexSpace ℝ E
state_after: case hbasis
𝕜 : Type u_1
𝕜₂ : Type u_2
𝕝 : Type u_3
𝕝₂ : Type u_4
E : Type u_5
F : Type u_6
G : Type u_7
ι : Type u_8
ι' : Type u_9
inst✝⁷ : Nonempty ι
inst✝⁶ : NormedField 𝕜
inst✝⁵ : NormedSpace ℝ 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : Module ℝ E
inst✝¹ : IsScalarTower ℝ 𝕜 E
inst✝ : TopologicalSpace E
p : SeminormFamily 𝕜 E ι
hp : WithSeminorms p
this : TopologicalAddGroup E
⊢ (𝓝 0).HasBasis (fun s => s ∈ p.basisSets) id

case hconvex
𝕜 : Type u_1
𝕜₂ : Type u_2
𝕝 : Type u_3
𝕝₂ : Type u_4
E : Type u_5
F : Type u_6
G : Type u_7
ι : Type u_8
ι' : Type u_9
inst✝⁷ : Nonempty ι
inst✝⁶ : NormedField 𝕜
inst✝⁵ : NormedSpace ℝ 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : Module ℝ E
inst✝¹ : IsScalarTower ℝ 𝕜 E
inst✝ : TopologicalSpace E
p : SeminormFamily 𝕜 E ι
hp : WithSeminorms p
this : TopologicalAddGroup E
⊢ ∀ i ∈ p.basisSets, Convex ℝ (id i)
tactic: apply ofBasisZero ℝ E id fun s => s ∈ p.basisSets
Theorem: Ideal.natAbs_det_basis_change
File: Mathlib/RingTheory/Ideal/Norm.lean

Proof steps:
state_before: S : Type u_1
inst✝⁷ : CommRing S
inst✝⁶ : IsDomain S
inst✝⁵ : Nontrivial S
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Free ℤ S
inst✝² : Module.Finite ℤ S
ι : Type u_2
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
b : Basis ι ℤ S
I : Ideal S
bI : Basis ι ℤ ↥I
⊢ (b.det (Subtype.val ∘ ⇑bI)).natAbs = absNorm I
state_after: S : Type u_1
inst✝⁷ : CommRing S
inst✝⁶ : IsDomain S
inst✝⁵ : Nontrivial S
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Free ℤ S
inst✝² : Module.Finite ℤ S
ι : Type u_2
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
b : Basis ι ℤ S
I : Ideal S
bI : Basis ι ℤ ↥I
e : S ≃ₗ[ℤ] ↥I := b.equiv bI (Equiv.refl ι)
⊢ (b.det (Subtype.val ∘ ⇑bI)).natAbs = absNorm I
tactic: let e := b.equiv bI (Equiv.refl _)
state_before: S : Type u_1
inst✝⁷ : CommRing S
inst✝⁶ : IsDomain S
inst✝⁵ : Nontrivial S
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Free ℤ S
inst✝² : Module.Finite ℤ S
ι : Type u_2
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
b : Basis ι ℤ S
I : Ideal S
bI : Basis ι ℤ ↥I
e : S ≃ₗ[ℤ] ↥I := b.equiv bI (Equiv.refl ι)
⊢ (b.det (Subtype.val ∘ ⇑bI)).natAbs = absNorm I
state_after: no goals
tactic: calc
    (b.det ((Submodule.subtype I).restrictScalars ℤ ∘ bI)).natAbs =
        (LinearMap.det ((Submodule.subtype I).restrictScalars ℤ ∘ₗ (e : S →ₗ[ℤ] I))).natAbs := by
      rw [Basis.det_comp_basis]
    _ = _ := natAbs_det_equiv I e
Theorem: MeasureTheory.LipschitzWith.integrable_comp_iff_of_antilipschitz
File: Mathlib/MeasureTheory/Function/L1Space.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
inst✝² : MeasurableSpace δ
inst✝¹ : NormedAddCommGroup β
inst✝ : NormedAddCommGroup γ
K K' : ℝ≥0
f : α → β
g : β → γ
hg : LipschitzWith K g
hg' : AntilipschitzWith K' g
g0 : g 0 = 0
⊢ Integrable (g ∘ f) μ ↔ Integrable f μ
state_after: no goals
tactic: simp [← memℒp_one_iff_integrable, hg.memℒp_comp_iff_of_antilipschitz hg' g0]
Theorem: Sym2.sortEquiv_symm_apply
File: Mathlib/Data/Sym/Sym2/Order.lean

Proof steps:
state_before: α : Type ?u.2288
inst✝ : LinearOrder α
a b : α
⊢ ↑((fun s => ⟨(s.inf, s.sup), ⋯⟩) s(a, b)) = (a, b) ∨ ↑((fun s => ⟨(s.inf, s.sup), ⋯⟩) s(a, b)) = (a, b).swap
state_after: no goals
tactic: cases le_total a b with
    | inl h => simp [h]
    | inr h => simp [h]
state_before: α : Type ?u.2288
inst✝ : LinearOrder α
x y : α
hxy : (x, y).1 ≤ (x, y).2
⊢ (↑((fun s => ⟨(s.inf, s.sup), ⋯⟩) ((fun p => Sym2.mk ↑p) ⟨(x, y), hxy⟩))).1 = (↑⟨(x, y), hxy⟩).1
state_after: no goals
tactic: simp [hxy]
state_before: α : Type ?u.2288
inst✝ : LinearOrder α
x y : α
hxy : (x, y).1 ≤ (x, y).2
⊢ (↑((fun s => ⟨(s.inf, s.sup), ⋯⟩) ((fun p => Sym2.mk ↑p) ⟨(x, y), hxy⟩))).2 = (↑⟨(x, y), hxy⟩).2
state_after: no goals
tactic: simp [hxy]