ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: CliffordAlgebra.ι_mul_ι_mul_ι
File: Mathlib/LinearAlgebra/CliffordAlgebra/Basic.lean

Proof steps:
state_before: R : Type u_1
inst✝⁴ : CommRing R
M : Type u_2
inst✝³ : AddCommGroup M
inst✝² : Module R M
Q : QuadraticForm R M
n : ℕ
A : Type u_3
inst✝¹ : Semiring A
inst✝ : Algebra R A
a b : M
⊢ (ι Q) a * (ι Q) b * (ι Q) a = (ι Q) (QuadraticMap.polar (⇑Q) a b • a - Q a • b)
state_after: no goals
tactic: rw [ι_mul_ι_comm, sub_mul, mul_assoc, ι_sq_scalar, ← Algebra.smul_def, ← Algebra.commutes, ←
    Algebra.smul_def, ← map_smul, ← map_smul, ← map_sub]
Theorem: leftCoset_mem_leftCoset
File: Mathlib/GroupTheory/Coset.lean

Proof steps:
state_before: α : Type u_1
inst✝ : Group α
s : Subgroup α
a : α
ha : a ∈ s
⊢ ∀ (x : α), x ∈ a • ↑s ↔ x ∈ ↑s
state_after: no goals
tactic: simp [mem_leftCoset_iff, mul_mem_cancel_left (s.inv_mem ha)]
Theorem: Finset.sum_eq_sum_diff_singleton_add
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 β
inst✝ : DecidableEq α
s : Finset α
i : α
h : i ∈ s
f : α → β
⊢ ∏ x ∈ s, f x = (∏ x ∈ s \ {i}, f x) * f i
state_after: no goals
tactic: rw [prod_eq_mul_prod_diff_singleton h, mul_comm]
Theorem: Polynomial.degree_eq_card_roots'
File: Mathlib/Algebra/Polynomial/Splits.lean

Proof steps:
state_before: R : Type u_1
F : Type u
K : Type v
L : Type w
inst✝² : CommRing K
inst✝¹ : Field L
inst✝ : Field F
i✝ : K →+* L
p : K[X]
i : K →+* L
p_ne_zero : map i p ≠ 0
hsplit : Splits i p
⊢ (map i p).degree = ↑(Multiset.card (map i p).roots)
state_after: no goals
tactic: simp [degree_eq_natDegree p_ne_zero, natDegree_eq_card_roots' hsplit]
Theorem: LieAlgebra.lieCharacter_apply_lie
File: Mathlib/Algebra/Lie/Character.lean

Proof steps:
state_before: R : Type u
L : Type v
inst✝² : CommRing R
inst✝¹ : LieRing L
inst✝ : LieAlgebra R L
χ : LieCharacter R L
x y : L
⊢ χ ⁅x, y⁆ = 0
state_after: no goals
tactic: rw [LieHom.map_lie, LieRing.of_associative_ring_bracket, mul_comm, sub_self]
Theorem: List.formPerm_pow_length_eq_one_of_nodup
File: Mathlib/GroupTheory/Perm/List.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
l : List α
x : α
hl : l.Nodup
⊢ l.formPerm ^ l.length = 1
state_after: case H
α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
l : List α
x✝ : α
hl : l.Nodup
x : α
⊢ (l.formPerm ^ l.length) x = 1 x
tactic: ext x
state_before: case H
α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
l : List α
x✝ : α
hl : l.Nodup
x : α
⊢ (l.formPerm ^ l.length) x = 1 x
state_after: case pos
α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
l : List α
x✝ : α
hl : l.Nodup
x : α
hx : x ∈ l
⊢ (l.formPerm ^ l.length) x = 1 x

case neg
α : Type u_1
β : Type u_2
inst✝ : DecidableEq α
l : List α
x✝ : α
hl : l.Nodup
x : α
hx : x ∉ l
⊢ (l.formPerm ^ l.length) x = 1 x
tactic: by_cases hx : x ∈ l
Theorem: DFinsupp.equivFunOnFintype_symm_single
File: Mathlib/Data/DFinsupp/Basic.lean

Proof steps:
state_before: ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝² : DecidableEq ι
inst✝¹ : (i : ι) → Zero (β i)
s : Finset ι
x : (i : ↑↑s) → β ↑i
i✝ : ι
inst✝ : Fintype ι
i : ι
m : β i
⊢ equivFunOnFintype.symm (Pi.single i m) = single i m
state_after: case h
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝² : DecidableEq ι
inst✝¹ : (i : ι) → Zero (β i)
s : Finset ι
x : (i : ↑↑s) → β ↑i
i✝ : ι
inst✝ : Fintype ι
i : ι
m : β i
i' : ι
⊢ (equivFunOnFintype.symm (Pi.single i m)) i' = (single i m) i'
tactic: ext i'
state_before: case h
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝² : DecidableEq ι
inst✝¹ : (i : ι) → Zero (β i)
s : Finset ι
x : (i : ↑↑s) → β ↑i
i✝ : ι
inst✝ : Fintype ι
i : ι
m : β i
i' : ι
⊢ (equivFunOnFintype.symm (Pi.single i m)) i' = (single i m) i'
state_after: no goals
tactic: simp only [← single_eq_pi_single, equivFunOnFintype_symm_coe]
Theorem: exists_seq_strictAnti_tendsto'
File: Mathlib/Topology/Order/IsLUB.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝⁷ : TopologicalSpace α
inst✝⁶ : TopologicalSpace β
inst✝⁵ : LinearOrder α
inst✝⁴ : LinearOrder β
inst✝³ : OrderTopology α
inst✝² : OrderTopology β
inst✝¹ : DenselyOrdered α
inst✝ : FirstCountableTopology α
x y : α
hy : x < y
⊢ ∃ u, StrictAnti u ∧ (∀ (n : ℕ), u n ∈ Ioo x y) ∧ Tendsto u atTop (𝓝 x)
state_after: no goals
tactic: simpa only [dual_Ioo]
    using exists_seq_strictMono_tendsto' (α := αᵒᵈ) (OrderDual.toDual_lt_toDual.2 hy)
Theorem: LinearIsometryEquiv.piLpCongrLeft_symm
File: Mathlib/Analysis/Normed/Lp/PiLp.lean

Proof steps:
state_before: p : ℝ≥0∞
𝕜 : Type u_1
ι : Type u_2
α : ι → Type u_3
β : ι → Type u_4
inst✝⁹ : Fact (1 ≤ p)
inst✝⁸ : Fintype ι
inst✝⁷ : Semiring 𝕜
inst✝⁶ : (i : ι) → SeminormedAddCommGroup (α i)
inst✝⁵ : (i : ι) → SeminormedAddCommGroup (β i)
inst✝⁴ : (i : ι) → Module 𝕜 (α i)
inst✝³ : (i : ι) → Module 𝕜 (β i)
c : 𝕜
ι' : Type u_5
inst✝² : Fintype ι'
E : Type u_6
inst✝¹ : SeminormedAddCommGroup E
inst✝ : Module 𝕜 E
e : ι ≃ ι'
z : PiLp p fun x => E
⊢ (LinearIsometryEquiv.piLpCongrLeft p 𝕜 E e).symm z = (LinearIsometryEquiv.piLpCongrLeft p 𝕜 E e.symm) z
state_after: p : ℝ≥0∞
𝕜 : Type u_1
ι : Type u_2
α : ι → Type u_3
β : ι → Type u_4
inst✝⁹ : Fact (1 ≤ p)
inst✝⁸ : Fintype ι
inst✝⁷ : Semiring 𝕜
inst✝⁶ : (i : ι) → SeminormedAddCommGroup (α i)
inst✝⁵ : (i : ι) → SeminormedAddCommGroup (β i)
inst✝⁴ : (i : ι) → Module 𝕜 (α i)
inst✝³ : (i : ι) → Module 𝕜 (β i)
c : 𝕜
ι' : Type u_5
inst✝² : Fintype ι'
E : Type u_6
inst✝¹ : SeminormedAddCommGroup E
inst✝ : Module 𝕜 E
e : ι ≃ ι'
z : PiLp p fun x => E
⊢ (LinearEquiv.piCongrLeft' 𝕜 (fun x => E) e).symm z = (LinearEquiv.piCongrLeft' 𝕜 (fun x => E) e.symm) z
tactic: simp only [LinearIsometryEquiv.piLpCongrLeft, LinearIsometryEquiv.symm,
      LinearIsometryEquiv.coe_mk]
state_before: p : ℝ≥0∞
𝕜 : Type u_1
ι : Type u_2
α : ι → Type u_3
β : ι → Type u_4
inst✝⁹ : Fact (1 ≤ p)
inst✝⁸ : Fintype ι
inst✝⁷ : Semiring 𝕜
inst✝⁶ : (i : ι) → SeminormedAddCommGroup (α i)
inst✝⁵ : (i : ι) → SeminormedAddCommGroup (β i)
inst✝⁴ : (i : ι) → Module 𝕜 (α i)
inst✝³ : (i : ι) → Module 𝕜 (β i)
c : 𝕜
ι' : Type u_5
inst✝² : Fintype ι'
E : Type u_6
inst✝¹ : SeminormedAddCommGroup E
inst✝ : Module 𝕜 E
e : ι ≃ ι'
z : PiLp p fun x => E
⊢ (LinearEquiv.piCongrLeft' 𝕜 (fun x => E) e).symm z = (LinearEquiv.piCongrLeft' 𝕜 (fun x => E) e.symm) z
state_after: case h
p : ℝ≥0∞
𝕜 : Type u_1
ι : Type u_2
α : ι → Type u_3
β : ι → Type u_4
inst✝⁹ : Fact (1 ≤ p)
inst✝⁸ : Fintype ι
inst✝⁷ : Semiring 𝕜
inst✝⁶ : (i : ι) → SeminormedAddCommGroup (α i)
inst✝⁵ : (i : ι) → SeminormedAddCommGroup (β i)
inst✝⁴ : (i : ι) → Module 𝕜 (α i)
inst✝³ : (i : ι) → Module 𝕜 (β i)
c : 𝕜
ι' : Type u_5
inst✝² : Fintype ι'
E : Type u_6
inst✝¹ : SeminormedAddCommGroup E
inst✝ : Module 𝕜 E
e : ι ≃ ι'
z : PiLp p fun x => E
x✝ : ι
⊢ (LinearEquiv.piCongrLeft' 𝕜 (fun x => E) e).symm z x✝ = (LinearEquiv.piCongrLeft' 𝕜 (fun x => E) e.symm) z x✝
tactic: ext
state_before: case h
p : ℝ≥0∞
𝕜 : Type u_1
ι : Type u_2
α : ι → Type u_3
β : ι → Type u_4
inst✝⁹ : Fact (1 ≤ p)
inst✝⁸ : Fintype ι
inst✝⁷ : Semiring 𝕜
inst✝⁶ : (i : ι) → SeminormedAddCommGroup (α i)
inst✝⁵ : (i : ι) → SeminormedAddCommGroup (β i)
inst✝⁴ : (i : ι) → Module 𝕜 (α i)
inst✝³ : (i : ι) → Module 𝕜 (β i)
c : 𝕜
ι' : Type u_5
inst✝² : Fintype ι'
E : Type u_6
inst✝¹ : SeminormedAddCommGroup E
inst✝ : Module 𝕜 E
e : ι ≃ ι'
z : PiLp p fun x => E
x✝ : ι
⊢ (LinearEquiv.piCongrLeft' 𝕜 (fun x => E) e).symm z x✝ = (LinearEquiv.piCongrLeft' 𝕜 (fun x => E) e.symm) z x✝
state_after: no goals
tactic: simp only [LinearEquiv.piCongrLeft'_symm_apply, eq_rec_constant,
      LinearEquiv.piCongrLeft'_apply, Equiv.symm_symm_apply]
Theorem: WittVector.iterate_verschiebung_mul_left
File: Mathlib/RingTheory/WittVector/Identities.lean

Proof steps:
state_before: p : ℕ
R : Type u_1
hp : Fact (Nat.Prime p)
inst✝ : CommRing R
x y : 𝕎 R
i : ℕ
⊢ (⇑verschiebung)^[i] x * y = (⇑verschiebung)^[i] (x * (⇑frobenius)^[i] y)
state_after: case zero
p : ℕ
R : Type u_1
hp : Fact (Nat.Prime p)
inst✝ : CommRing R
x y : 𝕎 R
⊢ (⇑verschiebung)^[0] x * y = (⇑verschiebung)^[0] (x * (⇑frobenius)^[0] y)

case succ
p : ℕ
R : Type u_1
hp : Fact (Nat.Prime p)
inst✝ : CommRing R
x : 𝕎 R
i : ℕ
ih : ∀ (y : 𝕎 R), (⇑verschiebung)^[i] x * y = (⇑verschiebung)^[i] (x * (⇑frobenius)^[i] y)
y : 𝕎 R
⊢ (⇑verschiebung)^[i + 1] x * y = (⇑verschiebung)^[i + 1] (x * (⇑frobenius)^[i + 1] y)
tactic: induction' i with i ih generalizing y
Theorem: AddChar.exists_divisor_of_not_isPrimitive
File: Mathlib/NumberTheory/LegendreSymbol/AddCharacter.lean

Proof steps:
state_before: R✝ : Type u
inst✝³ : CommRing R✝
R' : Type v
inst✝² : CommMonoid R'
N : ℕ
inst✝¹ : NeZero N
R : Type u_1
inst✝ : CommRing R
e : AddChar (ZMod N) R
he : ¬e.IsPrimitive
⊢ ∃ d, d ∣ N ∧ d < N ∧ e.mulShift ↑d = 1
state_after: R✝ : Type u
inst✝³ : CommRing R✝
R' : Type v
inst✝² : CommMonoid R'
N : ℕ
inst✝¹ : NeZero N
R : Type u_1
inst✝ : CommRing R
e : AddChar (ZMod N) R
he : ∃ x, ∃ (_ : x ≠ 0), e.mulShift x = 1
⊢ ∃ d, d ∣ N ∧ d < N ∧ e.mulShift ↑d = 1
tactic: simp_rw [IsPrimitive, not_forall, not_ne_iff] at he
state_before: R✝ : Type u
inst✝³ : CommRing R✝
R' : Type v
inst✝² : CommMonoid R'
N : ℕ
inst✝¹ : NeZero N
R : Type u_1
inst✝ : CommRing R
e : AddChar (ZMod N) R
he : ∃ x, ∃ (_ : x ≠ 0), e.mulShift x = 1
⊢ ∃ d, d ∣ N ∧ d < N ∧ e.mulShift ↑d = 1
state_after: case intro.intro
R✝ : Type u
inst✝³ : CommRing R✝
R' : Type v
inst✝² : CommMonoid R'
N : ℕ
inst✝¹ : NeZero N
R : Type u_1
inst✝ : CommRing R
e : AddChar (ZMod N) R
b : ZMod N
hb_ne : b ≠ 0
hb : e.mulShift b = 1
⊢ ∃ d, d ∣ N ∧ d < N ∧ e.mulShift ↑d = 1
tactic: rcases he with ⟨b, hb_ne, hb⟩
state_before: case intro.intro
R✝ : Type u
inst✝³ : CommRing R✝
R' : Type v
inst✝² : CommMonoid R'
N : ℕ
inst✝¹ : NeZero N
R : Type u_1
inst✝ : CommRing R
e : AddChar (ZMod N) R
b : ZMod N
hb_ne : b ≠ 0
hb : e.mulShift b = 1
⊢ ∃ d, d ∣ N ∧ d < N ∧ e.mulShift ↑d = 1
state_after: case intro.intro.intro.intro.intro.intro
R✝ : Type u
inst✝³ : CommRing R✝
R' : Type v
inst✝² : CommMonoid R'
N : ℕ
inst✝¹ : NeZero N
R : Type u_1
inst✝ : CommRing R
e : AddChar (ZMod N) R
d : ℕ
hd : d ∣ N
u : ZMod N
hu : IsUnit u
hb_ne : u * ↑d ≠ 0
hb : e.mulShift (u * ↑d) = 1
⊢ ∃ d, d ∣ N ∧ d < N ∧ e.mulShift ↑d = 1
tactic: obtain ⟨d, hd, u, hu, rfl⟩ := b.eq_unit_mul_divisor
state_before: case intro.intro.intro.intro.intro.intro
R✝ : Type u
inst✝³ : CommRing R✝
R' : Type v
inst✝² : CommMonoid R'
N : ℕ
inst✝¹ : NeZero N
R : Type u_1
inst✝ : CommRing R
e : AddChar (ZMod N) R
d : ℕ
hd : d ∣ N
u : ZMod N
hu : IsUnit u
hb_ne : u * ↑d ≠ 0
hb : e.mulShift (u * ↑d) = 1
⊢ ∃ d, d ∣ N ∧ d < N ∧ e.mulShift ↑d = 1
state_after: case intro.intro.intro.intro.intro.intro.refine_1
R✝ : Type u
inst✝³ : CommRing R✝
R' : Type v
inst✝² : CommMonoid R'
N : ℕ
inst✝¹ : NeZero N
R : Type u_1
inst✝ : CommRing R
e : AddChar (ZMod N) R
d : ℕ
hd : d ∣ N
u : ZMod N
hu : IsUnit u
hb_ne : u * ↑d ≠ 0
hb : e.mulShift (u * ↑d) = 1
⊢ d ≠ N

case intro.intro.intro.intro.intro.intro.refine_2
R✝ : Type u
inst✝³ : CommRing R✝
R' : Type v
inst✝² : CommMonoid R'
N : ℕ
inst✝¹ : NeZero N
R : Type u_1
inst✝ : CommRing R
e : AddChar (ZMod N) R
d : ℕ
hd : d ∣ N
u : ZMod N
hu : IsUnit u
hb_ne : u * ↑d ≠ 0
hb : e.mulShift (u * ↑d) = 1
⊢ e.mulShift ↑d = 1
tactic: refine ⟨d, hd, lt_of_le_of_ne (Nat.le_of_dvd (NeZero.pos _) hd) ?_, ?_⟩
Theorem: Rat.lt_def
File: Mathlib/Algebra/Order/Ring/Rat.lean

Proof steps:
state_before: a b c p q : ℚ
⊢ p < q ↔ p.num * ↑q.den < q.num * ↑p.den
state_after: a b c p q : ℚ
⊢ p.num * ↑q.den ≤ q.num * ↑p.den ∧ p ≠ q ↔ p.num * ↑q.den < q.num * ↑p.den
tactic: rw [lt_iff_le_and_ne, Rat.le_def]
state_before: a b c p q : ℚ
⊢ p ≠ q ↔ p.num * ↑q.den ≠ q.num * ↑p.den
state_after: no goals
tactic: exact not_iff_not.mpr eq_iff_mul_eq_mul
Theorem: Nat.fib_lt_fib_succ
File: Mathlib/Data/Nat/Fib/Basic.lean

Proof steps:
state_before: n : ℕ
hn : 2 ≤ n
⊢ fib n < fib (n + 1)
state_after: case intro
n : ℕ
hn : 2 ≤ 2 + n
⊢ fib (2 + n) < fib (2 + n + 1)
tactic: rcases exists_add_of_le hn with ⟨n, rfl⟩
state_before: case intro
n : ℕ
hn : 2 ≤ 2 + n
⊢ fib (2 + n) < fib (2 + n + 1)
state_after: case intro
n : ℕ
hn : 2 ≤ 2 + n
⊢ 0 < n + 1
tactic: rw [← tsub_pos_iff_lt, add_comm 2, add_right_comm, fib_add_two, add_tsub_cancel_right, fib_pos]
state_before: case intro
n : ℕ
hn : 2 ≤ 2 + n
⊢ 0 < n + 1
state_after: no goals
tactic: exact succ_pos n
Theorem: UniformOnFun.uniformContinuous_restrict_toFun
File: Mathlib/Topology/UniformSpace/UniformConvergenceTopology.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
s s' : Set α
x : α
p : Filter ι
g : ι → α
inst✝ : UniformSpace β
𝔖 : Set (Set α)
⊢ UniformContinuous ((⋃₀ 𝔖).restrict ∘ ⇑(toFun 𝔖))
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
s s' : Set α
x : α
p : Filter ι
g : ι → α
inst✝ : UniformSpace β
𝔖 : Set (Set α)
⊢ ∀ (i : ↑(⋃₀ 𝔖)), UniformContinuous fun x => ((⋃₀ 𝔖).restrict ∘ ⇑(toFun 𝔖)) x i
tactic: rw [uniformContinuous_pi]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
s s' : Set α
x : α
p : Filter ι
g : ι → α
inst✝ : UniformSpace β
𝔖 : Set (Set α)
⊢ ∀ (i : ↑(⋃₀ 𝔖)), UniformContinuous fun x => ((⋃₀ 𝔖).restrict ∘ ⇑(toFun 𝔖)) x i
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
s s' : Set α
x✝ : α
p : Filter ι
g : ι → α
inst✝ : UniformSpace β
𝔖 : Set (Set α)
x : α
hx : x ∈ ⋃₀ 𝔖
⊢ UniformContinuous fun x_1 => ((⋃₀ 𝔖).restrict ∘ ⇑(toFun 𝔖)) x_1 ⟨x, hx⟩
tactic: intro ⟨x, hx⟩
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
s s' : Set α
x✝ : α
p : Filter ι
g : ι → α
inst✝ : UniformSpace β
𝔖 : Set (Set α)
x : α
hx : x ∈ ⋃₀ 𝔖
⊢ UniformContinuous fun x_1 => ((⋃₀ 𝔖).restrict ∘ ⇑(toFun 𝔖)) x_1 ⟨x, hx⟩
state_after: case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
s✝ s' : Set α
x✝ : α
p : Filter ι
g : ι → α
inst✝ : UniformSpace β
𝔖 : Set (Set α)
x : α
hx : x ∈ ⋃₀ 𝔖
s : Set α
hs : s ∈ 𝔖
hxs : x ∈ s
⊢ UniformContinuous fun x_1 => ((⋃₀ 𝔖).restrict ∘ ⇑(toFun 𝔖)) x_1 ⟨x, hx⟩
tactic: obtain ⟨s : Set α, hs : s ∈ 𝔖, hxs : x ∈ s⟩ := mem_sUnion.mpr hx
state_before: case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
s✝ s' : Set α
x✝ : α
p : Filter ι
g : ι → α
inst✝ : UniformSpace β
𝔖 : Set (Set α)
x : α
hx : x ∈ ⋃₀ 𝔖
s : Set α
hs : s ∈ 𝔖
hxs : x ∈ s
⊢ UniformContinuous fun x_1 => ((⋃₀ 𝔖).restrict ∘ ⇑(toFun 𝔖)) x_1 ⟨x, hx⟩
state_after: no goals
tactic: exact uniformContinuous_eval_of_mem β 𝔖 hxs hs
Theorem: Set.smul_inter_ne_empty_iff
File: Mathlib/Data/Set/Pointwise/SMul.lean

Proof steps:
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝¹ : Group α
inst✝ : MulAction α β
s✝ t✝ A B : Set β
a : α
x✝ : β
s t : Set α
x : α
⊢ x • s ∩ t ≠ ∅ ↔ ∃ a b, (a ∈ t ∧ b ∈ s) ∧ a * b⁻¹ = x
state_after: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝¹ : Group α
inst✝ : MulAction α β
s✝ t✝ A B : Set β
a : α
x✝ : β
s t : Set α
x : α
⊢ (x • s ∩ t).Nonempty ↔ ∃ a b, (a ∈ t ∧ b ∈ s) ∧ a * b⁻¹ = x
tactic: rw [← nonempty_iff_ne_empty]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝¹ : Group α
inst✝ : MulAction α β
s✝ t✝ A B : Set β
a : α
x✝ : β
s t : Set α
x : α
⊢ (x • s ∩ t).Nonempty ↔ ∃ a b, (a ∈ t ∧ b ∈ s) ∧ a * b⁻¹ = x
state_after: case mp
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝¹ : Group α
inst✝ : MulAction α β
s✝ t✝ A B : Set β
a : α
x✝ : β
s t : Set α
x : α
⊢ (x • s ∩ t).Nonempty → ∃ a b, (a ∈ t ∧ b ∈ s) ∧ a * b⁻¹ = x

case mpr
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝¹ : Group α
inst✝ : MulAction α β
s✝ t✝ A B : Set β
a : α
x✝ : β
s t : Set α
x : α
⊢ (∃ a b, (a ∈ t ∧ b ∈ s) ∧ a * b⁻¹ = x) → (x • s ∩ t).Nonempty
tactic: constructor
Theorem: RingHom.surjective_stableUnderBaseChange
File: Mathlib/RingTheory/RingHom/Surjective.lean

Proof steps:
state_before: ⊢ StableUnderBaseChange fun {X Y} [CommRing X] [CommRing Y] f => Function.Surjective ⇑f
state_after: ⊢ ∀ ⦃R S T : Type u_1⦄ [inst : CommRing R] [inst_1 : CommRing S] [inst_2 : CommRing T] [inst_3 : Algebra R S]
    [inst_4 : Algebra R T], Function.Surjective ⇑(algebraMap R T) → Function.Surjective ⇑includeLeftRingHom
tactic: refine StableUnderBaseChange.mk _ surjective_respectsIso ?_
state_before: ⊢ ∀ ⦃R S T : Type u_1⦄ [inst : CommRing R] [inst_1 : CommRing S] [inst_2 : CommRing T] [inst_3 : Algebra R S]
    [inst_4 : Algebra R T], Function.Surjective ⇑(algebraMap R T) → Function.Surjective ⇑includeLeftRingHom
state_after: no goals
tactic: classical
  introv h x
  induction x with
  | zero => exact ⟨0, map_zero _⟩
  | tmul x y =>
    obtain ⟨y, rfl⟩ := h y; use y • x; dsimp
    rw [TensorProduct.smul_tmul, Algebra.algebraMap_eq_smul_one]
  | add x y ex ey => obtain ⟨⟨x, rfl⟩, ⟨y, rfl⟩⟩ := ex, ey; exact ⟨x + y, map_add _ x y⟩
Theorem: Multiset.card_Icc
File: Mathlib/Data/Multiset/Interval.lean

Proof steps:
state_before: α : Type u_1
inst✝ : DecidableEq α
s t : Multiset α
⊢ (Finset.Icc s t).card = ∏ i ∈ s.toFinset ∪ t.toFinset, (count i t + 1 - count i s)
state_after: no goals
tactic: simp_rw [Icc_eq, Finset.card_map, DFinsupp.card_Icc, Nat.card_Icc, Multiset.toDFinsupp_apply,
    toDFinsupp_support]
Theorem: AddSubmonoid.addOrderOf_le_card
File: Mathlib/GroupTheory/OrderOfElement.lean

Proof steps:
state_before: G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝¹ : Group G
inst✝ : Fintype G
x : G
n : ℕ
s : Submonoid G
hs : (↑s).Finite
hx : x ∈ s
⊢ orderOf x ≤ Nat.card ↥s
state_after: G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝¹ : Group G
inst✝ : Fintype G
x : G
n : ℕ
s : Submonoid G
hs : (↑s).Finite
hx : x ∈ s
⊢ Nat.card ↥(powers x) ≤ Nat.card ↥s
tactic: rw [← Nat.card_submonoidPowers]
state_before: G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝¹ : Group G
inst✝ : Fintype G
x : G
n : ℕ
s : Submonoid G
hs : (↑s).Finite
hx : x ∈ s
⊢ Nat.card ↥(powers x) ≤ Nat.card ↥s
state_after: no goals
tactic: exact Nat.card_mono hs <| powers_le.2 hx
Theorem: MonoidHom.fromMultiplicativeIntEquiv_apply
File: Mathlib/Algebra/Category/Grp/ForgetCorepresentable.lean

Proof steps:
state_before: α : Type u
inst✝ : Group α
φ : Multiplicative ℤ →* α
⊢ (fun x => (zpowersHom α) x) ((fun φ => φ (Multiplicative.ofAdd 1)) φ) = φ
state_after: case h1
α : Type u
inst✝ : Group α
φ : Multiplicative ℤ →* α
⊢ ((fun x => (zpowersHom α) x) ((fun φ => φ (Multiplicative.ofAdd 1)) φ)) (Multiplicative.ofAdd 1) =
    φ (Multiplicative.ofAdd 1)
tactic: ext
state_before: case h1
α : Type u
inst✝ : Group α
φ : Multiplicative ℤ →* α
⊢ ((fun x => (zpowersHom α) x) ((fun φ => φ (Multiplicative.ofAdd 1)) φ)) (Multiplicative.ofAdd 1) =
    φ (Multiplicative.ofAdd 1)
state_after: no goals
tactic: simp
state_before: α : Type u
inst✝ : Group α
x : α
⊢ (fun φ => φ (Multiplicative.ofAdd 1)) ((fun x => (zpowersHom α) x) x) = x
state_after: no goals
tactic: simp
Theorem: TopologicalSpace.isOpen_biUnion_countable
File: Mathlib/Topology/Bases.lean

Proof steps:
state_before: α : Type u
t : TopologicalSpace α
inst✝ : SecondCountableTopology α
ι : Type u_1
I : Set ι
s : ι → Set α
H : ∀ i ∈ I, IsOpen (s i)
⊢ ∃ T ⊆ I, T.Countable ∧ ⋃ i ∈ T, s i = ⋃ i ∈ I, s i
state_after: α : Type u
t : TopologicalSpace α
inst✝ : SecondCountableTopology α
ι : Type u_1
I : Set ι
s : ι → Set α
H : ∀ i ∈ I, IsOpen (s i)
⊢ ∃ s_1, (Subtype.val '' s_1).Countable ∧ ⋃ y ∈ s_1, s ↑y = ⋃ i ∈ I, s i
tactic: simp_rw [← Subtype.exists_set_subtype, biUnion_image]
state_before: α : Type u
t : TopologicalSpace α
inst✝ : SecondCountableTopology α
ι : Type u_1
I : Set ι
s : ι → Set α
H : ∀ i ∈ I, IsOpen (s i)
⊢ ∃ s_1, (Subtype.val '' s_1).Countable ∧ ⋃ y ∈ s_1, s ↑y = ⋃ i ∈ I, s i
state_after: case intro.intro
α : Type u
t : TopologicalSpace α
inst✝ : SecondCountableTopology α
ι : Type u_1
I : Set ι
s : ι → Set α
H : ∀ i ∈ I, IsOpen (s i)
T : Set ↑I
hTc : T.Countable
hU : ⋃ i ∈ T, s ↑i = ⋃ i, s ↑i
⊢ ∃ s_1, (Subtype.val '' s_1).Countable ∧ ⋃ y ∈ s_1, s ↑y = ⋃ i ∈ I, s i
tactic: rcases isOpen_iUnion_countable (fun i : I ↦ s i) fun i ↦ H i i.2 with ⟨T, hTc, hU⟩
state_before: case intro.intro
α : Type u
t : TopologicalSpace α
inst✝ : SecondCountableTopology α
ι : Type u_1
I : Set ι
s : ι → Set α
H : ∀ i ∈ I, IsOpen (s i)
T : Set ↑I
hTc : T.Countable
hU : ⋃ i ∈ T, s ↑i = ⋃ i, s ↑i
⊢ ∃ s_1, (Subtype.val '' s_1).Countable ∧ ⋃ y ∈ s_1, s ↑y = ⋃ i ∈ I, s i
state_after: no goals
tactic: exact ⟨T, hTc.image _, hU.trans <| iUnion_subtype ..⟩
Theorem: SeminormFamily.basisSets_neg
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✝² : NormedField 𝕜
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
p : SeminormFamily 𝕜 E ι
U : Set E
hU' : U ∈ p.basisSets
⊢ ∃ V ∈ p.basisSets, V ⊆ (fun x => -x) ⁻¹' U
state_after: case intro.intro.intro
𝕜 : 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✝² : NormedField 𝕜
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
p : SeminormFamily 𝕜 E ι
U : Set E
hU' : U ∈ p.basisSets
s : Finset ι
r : ℝ
left✝ : 0 < r
hU : U = (s.sup p).ball 0 r
⊢ ∃ V ∈ p.basisSets, V ⊆ (fun x => -x) ⁻¹' U
tactic: rcases p.basisSets_iff.mp hU' with ⟨s, r, _, hU⟩
state_before: case intro.intro.intro
𝕜 : 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✝² : NormedField 𝕜
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
p : SeminormFamily 𝕜 E ι
U : Set E
hU' : U ∈ p.basisSets
s : Finset ι
r : ℝ
left✝ : 0 < r
hU : U = (s.sup p).ball 0 r
⊢ ∃ V ∈ p.basisSets, V ⊆ (fun x => -x) ⁻¹' U
state_after: case intro.intro.intro
𝕜 : 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✝² : NormedField 𝕜
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
p : SeminormFamily 𝕜 E ι
U : Set E
hU' : U ∈ p.basisSets
s : Finset ι
r : ℝ
left✝ : 0 < r
hU : U = (s.sup p).ball 0 r
⊢ ∃ V ∈ p.basisSets, V ⊆ (s.sup p).ball 0 r
tactic: rw [hU, neg_preimage, neg_ball (s.sup p), neg_zero]
state_before: case intro.intro.intro
𝕜 : 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✝² : NormedField 𝕜
inst✝¹ : AddCommGroup E
inst✝ : Module 𝕜 E
p : SeminormFamily 𝕜 E ι
U : Set E
hU' : U ∈ p.basisSets
s : Finset ι
r : ℝ
left✝ : 0 < r
hU : U = (s.sup p).ball 0 r
⊢ ∃ V ∈ p.basisSets, V ⊆ (s.sup p).ball 0 r
state_after: no goals
tactic: exact ⟨U, hU', Eq.subset hU⟩