ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: Finset.Ioo_subset_Ioc_self
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 : α
⊢ Ioo a b ⊆ Ioc a b
state_after: ι : Type u_1
α : Type u_2
inst✝¹ : Preorder α
inst✝ : LocallyFiniteOrder α
a a₁ a₂ b b₁ b₂ c x : α
⊢ Set.Ioo a b ⊆ Set.Ioc a b
tactic: rw [← coe_subset, coe_Ioo, coe_Ioc]
state_before: ι : Type u_1
α : Type u_2
inst✝¹ : Preorder α
inst✝ : LocallyFiniteOrder α
a a₁ a₂ b b₁ b₂ c x : α
⊢ Set.Ioo a b ⊆ Set.Ioc a b
state_after: no goals
tactic: exact Set.Ioo_subset_Ioc_self
Theorem: Real.Angle.neg_eq_self_iff
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Angle.lean

Proof steps:
state_before: θ : Angle
⊢ -θ = θ ↔ θ = 0 ∨ θ = ↑π
state_after: no goals
tactic: rw [eq_comm, eq_neg_self_iff]
Theorem: Cardinal.lift_eq_ofENat
File: Mathlib/SetTheory/Cardinal/ENat.lean

Proof steps:
state_before: x : Cardinal.{v}
m : ℕ∞
⊢ lift.{u, v} x = ↑m ↔ x = ↑m
state_after: no goals
tactic: rw [← lift_ofENat.{u, v}, lift_inj]
Theorem: Real.cos_arctan
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Arctan.lean

Proof steps:
state_before: x : ℝ
⊢ cos (arctan x) = 1 / √(1 + x ^ 2)
state_after: no goals
tactic: rw_mod_cast [one_div, ← inv_sqrt_one_add_tan_sq (cos_arctan_pos x), tan_arctan]
Theorem: one_div_mul_sub_mul_one_div_eq_one_div_add_one_div
File: Mathlib/Algebra/Field/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
K : Type u_3
inst✝ : DivisionRing K
a b c d : K
ha : a ≠ 0
hb : b ≠ 0
⊢ 1 / a * (b - a) * (1 / b) = 1 / a - 1 / b
state_after: no goals
tactic: simpa only [one_div] using (inv_sub_inv' ha hb).symm
Theorem: WeierstrassCurve.Projective.nonsingular_iff
File: Mathlib/AlgebraicGeometry/EllipticCurve/Projective.lean

Proof steps:
state_before: R : Type u
inst✝ : CommRing R
W : Projective R
P : Fin 3 → R
⊢ W.Nonsingular P ↔
    W.Equation P ∧
      (W.a₁ * P 1 * P 2 ≠ 3 * P 0 ^ 2 + 2 * W.a₂ * P 0 * P 2 + W.a₄ * P 2 ^ 2 ∨
        P 1 * P 2 ≠ -P 1 * P 2 - W.a₁ * P 0 * P 2 - W.a₃ * P 2 ^ 2 ∨
          P 1 ^ 2 + W.a₁ * P 0 * P 1 + 2 * W.a₃ * P 1 * P 2 ≠
            W.a₂ * P 0 ^ 2 + 2 * W.a₄ * P 0 * P 2 + 3 * W.a₆ * P 2 ^ 2)
state_after: R : Type u
inst✝ : CommRing R
W : Projective R
P : Fin 3 → R
⊢ W.Equation P ∧
      (W.a₁ * P 1 * P 2 ≠ 3 * P 0 ^ 2 + 2 * W.a₂ * P 0 * P 2 + W.a₄ * P 2 ^ 2 ∨
        2 * P 1 * P 2 + W.a₁ * P 0 * P 2 + W.a₃ * P 2 ^ 2 ≠ 0 ∨
          P 1 ^ 2 + W.a₁ * P 0 * P 1 + 2 * W.a₃ * P 1 * P 2 ≠
            W.a₂ * P 0 ^ 2 + 2 * W.a₄ * P 0 * P 2 + 3 * W.a₆ * P 2 ^ 2) ↔
    W.Equation P ∧
      (W.a₁ * P 1 * P 2 ≠ 3 * P 0 ^ 2 + 2 * W.a₂ * P 0 * P 2 + W.a₄ * P 2 ^ 2 ∨
        P 1 * P 2 - (-P 1 * P 2 - W.a₁ * P 0 * P 2 - W.a₃ * P 2 ^ 2) ≠ 0 ∨
          P 1 ^ 2 + W.a₁ * P 0 * P 1 + 2 * W.a₃ * P 1 * P 2 ≠
            W.a₂ * P 0 ^ 2 + 2 * W.a₄ * P 0 * P 2 + 3 * W.a₆ * P 2 ^ 2)
tactic: rw [Nonsingular, eval_polynomialX, eval_polynomialY, eval_polynomialZ, sub_ne_zero, sub_ne_zero,
    ← sub_ne_zero (a := P y * P z)]
state_before: R : Type u
inst✝ : CommRing R
W : Projective R
P : Fin 3 → R
⊢ W.Equation P ∧
      (W.a₁ * P 1 * P 2 ≠ 3 * P 0 ^ 2 + 2 * W.a₂ * P 0 * P 2 + W.a₄ * P 2 ^ 2 ∨
        2 * P 1 * P 2 + W.a₁ * P 0 * P 2 + W.a₃ * P 2 ^ 2 ≠ 0 ∨
          P 1 ^ 2 + W.a₁ * P 0 * P 1 + 2 * W.a₃ * P 1 * P 2 ≠
            W.a₂ * P 0 ^ 2 + 2 * W.a₄ * P 0 * P 2 + 3 * W.a₆ * P 2 ^ 2) ↔
    W.Equation P ∧
      (W.a₁ * P 1 * P 2 ≠ 3 * P 0 ^ 2 + 2 * W.a₂ * P 0 * P 2 + W.a₄ * P 2 ^ 2 ∨
        P 1 * P 2 - (-P 1 * P 2 - W.a₁ * P 0 * P 2 - W.a₃ * P 2 ^ 2) ≠ 0 ∨
          P 1 ^ 2 + W.a₁ * P 0 * P 1 + 2 * W.a₃ * P 1 * P 2 ≠
            W.a₂ * P 0 ^ 2 + 2 * W.a₄ * P 0 * P 2 + 3 * W.a₆ * P 2 ^ 2)
state_after: case a.h.e'_2.h.e'_2.h.e'_1.h.e'_2
R : Type u
inst✝ : CommRing R
W : Projective R
P : Fin 3 → R
⊢ 2 * P 1 * P 2 + W.a₁ * P 0 * P 2 + W.a₃ * P 2 ^ 2 = P 1 * P 2 - (-P 1 * P 2 - W.a₁ * P 0 * P 2 - W.a₃ * P 2 ^ 2)
tactic: congr! 4
state_before: case a.h.e'_2.h.e'_2.h.e'_1.h.e'_2
R : Type u
inst✝ : CommRing R
W : Projective R
P : Fin 3 → R
⊢ 2 * P 1 * P 2 + W.a₁ * P 0 * P 2 + W.a₃ * P 2 ^ 2 = P 1 * P 2 - (-P 1 * P 2 - W.a₁ * P 0 * P 2 - W.a₃ * P 2 ^ 2)
state_after: no goals
tactic: ring1
Theorem: Algebra.Generators.Hom.toAlgHom_monomial
File: Mathlib/RingTheory/Generators.lean

Proof steps:
state_before: R : Type u
S : Type v
inst✝²⁵ : CommRing R
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
P : Generators R S
R' : Type u_1
S' : Type u_2
inst✝²² : CommRing R'
inst✝²¹ : CommRing S'
inst✝²⁰ : Algebra R' S'
P' : Generators R' S'
inst✝¹⁹ : Algebra R R'
inst✝¹⁸ : Algebra S S'
inst✝¹⁷ : Algebra R S'
inst✝¹⁶ : IsScalarTower R R' S'
inst✝¹⁵ : IsScalarTower R S S'
R'' : Type ?u.236825
S'' : Type ?u.236828
inst✝¹⁴ : CommRing R''
inst✝¹³ : CommRing S''
inst✝¹² : Algebra R'' S''
P'' : Generators R'' S''
inst✝¹¹ : Algebra R R''
inst✝¹⁰ : Algebra S S''
inst✝⁹ : Algebra R S''
inst✝⁸ : IsScalarTower R R'' S''
inst✝⁷ : IsScalarTower R S S''
inst✝⁶ : Algebra R' R''
inst✝⁵ : Algebra S' S''
inst✝⁴ : Algebra R' S''
inst✝³ : IsScalarTower R' R'' S''
inst✝² : IsScalarTower R' S' S''
inst✝¹ : IsScalarTower R R' R''
inst✝ : IsScalarTower S S' S''
f : P.Hom P'
v : P.vars →₀ ℕ
r : R
⊢ f.toAlgHom ((monomial v) r) = r • v.prod fun x x_1 => f.val x ^ x_1
state_after: no goals
tactic: rw [toAlgHom, aeval_monomial, Algebra.smul_def]
Theorem: AddCommGroup.DirectLimit.lift_unique
File: Mathlib/Algebra/DirectLimit.lean

Proof steps:
state_before: R : Type u
inst✝⁵ : Ring R
ι : Type v
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : DecidableEq ι
inst✝² : (i : ι) → AddCommGroup (G i)
f : (i j : ι) → i ≤ j → G i →+ G j
P : Type u₁
inst✝¹ : AddCommGroup P
g : (i : ι) → G i →+ P
Hg : ∀ (i j : ι) (hij : i ≤ j) (x : G i), (g j) ((f i j hij) x) = (g i) x
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
F : DirectLimit G f →+ P
x✝ : DirectLimit G f
i j : ι
hij : i ≤ j
x : G i
⊢ ((fun i => F.comp (of G f i)) j) ((f i j hij) x) = ((fun i => F.comp (of G f i)) i) x
state_after: no goals
tactic: simp
state_before: R : Type u
inst✝⁵ : Ring R
ι : Type v
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : DecidableEq ι
inst✝² : (i : ι) → AddCommGroup (G i)
f : (i j : ι) → i ≤ j → G i →+ G j
P : Type u₁
inst✝¹ : AddCommGroup P
g : (i : ι) → G i →+ P
Hg : ∀ (i j : ι) (hij : i ≤ j) (x : G i), (g j) ((f i j hij) x) = (g i) x
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
F : DirectLimit G f →+ P
x : DirectLimit G f
⊢ F x = (lift G f P (fun i => F.comp (of G f i)) ⋯) x
state_after: case inl
R : Type u
inst✝⁵ : Ring R
ι : Type v
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : DecidableEq ι
inst✝² : (i : ι) → AddCommGroup (G i)
f : (i j : ι) → i ≤ j → G i →+ G j
P : Type u₁
inst✝¹ : AddCommGroup P
g : (i : ι) → G i →+ P
Hg : ∀ (i j : ι) (hij : i ≤ j) (x : G i), (g j) ((f i j hij) x) = (g i) x
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
F : DirectLimit G f →+ P
x : DirectLimit G f
h✝ : IsEmpty ι
⊢ F x = (lift G f P (fun i => F.comp (of G f i)) ⋯) x

case inr
R : Type u
inst✝⁵ : Ring R
ι : Type v
inst✝⁴ : Preorder ι
G : ι → Type w
inst✝³ : DecidableEq ι
inst✝² : (i : ι) → AddCommGroup (G i)
f : (i j : ι) → i ≤ j → G i →+ G j
P : Type u₁
inst✝¹ : AddCommGroup P
g : (i : ι) → G i →+ P
Hg : ∀ (i j : ι) (hij : i ≤ j) (x : G i), (g j) ((f i j hij) x) = (g i) x
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
F : DirectLimit G f →+ P
x : DirectLimit G f
h✝ : Nonempty ι
⊢ F x = (lift G f P (fun i => F.comp (of G f i)) ⋯) x
tactic: cases isEmpty_or_nonempty ι
Theorem: WeierstrassCurve.map_preΨ₄
File: Mathlib/AlgebraicGeometry/EllipticCurve/DivisionPolynomial/Basic.lean

Proof steps:
state_before: R : Type r
S : Type s
inst✝¹ : CommRing R
inst✝ : CommRing S
W : WeierstrassCurve R
f : R →+* S
⊢ (W.map f).preΨ₄ = Polynomial.map f W.preΨ₄
state_after: R : Type r
S : Type s
inst✝¹ : CommRing R
inst✝ : CommRing S
W : WeierstrassCurve R
f : R →+* S
⊢ 2 * X ^ 6 + C (f W.b₂) * X ^ 5 + 5 * C (f W.b₄) * X ^ 4 + 10 * C (f W.b₆) * X ^ 3 + 10 * C (f W.b₈) * X ^ 2 +
        C (f W.b₂ * f W.b₈ - f W.b₄ * f W.b₆) * X +
      C (f W.b₄ * f W.b₈ - f W.b₆ ^ 2) =
    Polynomial.map f
      (2 * X ^ 6 + C W.b₂ * X ^ 5 + 5 * C W.b₄ * X ^ 4 + 10 * C W.b₆ * X ^ 3 + 10 * C W.b₈ * X ^ 2 +
          C (W.b₂ * W.b₈ - W.b₄ * W.b₆) * X +
        C (W.b₄ * W.b₈ - W.b₆ ^ 2))
tactic: simp only [preΨ₄, map_b₂, map_b₄, map_b₆, map_b₈]
state_before: R : Type r
S : Type s
inst✝¹ : CommRing R
inst✝ : CommRing S
W : WeierstrassCurve R
f : R →+* S
⊢ 2 * X ^ 6 + C (f W.b₂) * X ^ 5 + 5 * C (f W.b₄) * X ^ 4 + 10 * C (f W.b₆) * X ^ 3 + 10 * C (f W.b₈) * X ^ 2 +
        C (f W.b₂ * f W.b₈ - f W.b₄ * f W.b₆) * X +
      C (f W.b₄ * f W.b₈ - f W.b₆ ^ 2) =
    Polynomial.map f
      (2 * X ^ 6 + C W.b₂ * X ^ 5 + 5 * C W.b₄ * X ^ 4 + 10 * C W.b₆ * X ^ 3 + 10 * C W.b₈ * X ^ 2 +
          C (W.b₂ * W.b₈ - W.b₄ * W.b₆) * X +
        C (W.b₄ * W.b₈ - W.b₆ ^ 2))
state_after: no goals
tactic: map_simp
Theorem: FractionalIdeal.isNoetherian
File: Mathlib/RingTheory/FractionalIdeal/Operations.lean

Proof steps:
state_before: R : Type u_1
inst✝⁷ : CommRing R
S : Submonoid R
P : Type u_2
inst✝⁶ : CommRing P
inst✝⁵ : Algebra R P
loc : IsLocalization S P
R₁ : Type u_3
inst✝⁴ : CommRing R₁
K : Type u_4
inst✝³ : Field K
inst✝² : Algebra R₁ K
frac : IsFractionRing R₁ K
inst✝¹ : IsDomain R₁
inst✝ : IsNoetherianRing R₁
I : FractionalIdeal R₁⁰ K
⊢ IsNoetherian R₁ ↥↑I
state_after: case intro.intro.intro
R : Type u_1
inst✝⁷ : CommRing R
S : Submonoid R
P : Type u_2
inst✝⁶ : CommRing P
inst✝⁵ : Algebra R P
loc : IsLocalization S P
R₁ : Type u_3
inst✝⁴ : CommRing R₁
K : Type u_4
inst✝³ : Field K
inst✝² : Algebra R₁ K
frac : IsFractionRing R₁ K
inst✝¹ : IsDomain R₁
inst✝ : IsNoetherianRing R₁
d : R₁
J : Ideal R₁
left✝ : d ≠ 0
⊢ IsNoetherian R₁ ↥↑(spanSingleton R₁⁰ ((algebraMap R₁ K) d)⁻¹ * ↑J)
tactic: obtain ⟨d, J, _, rfl⟩ := exists_eq_spanSingleton_mul I
state_before: case intro.intro.intro
R : Type u_1
inst✝⁷ : CommRing R
S : Submonoid R
P : Type u_2
inst✝⁶ : CommRing P
inst✝⁵ : Algebra R P
loc : IsLocalization S P
R₁ : Type u_3
inst✝⁴ : CommRing R₁
K : Type u_4
inst✝³ : Field K
inst✝² : Algebra R₁ K
frac : IsFractionRing R₁ K
inst✝¹ : IsDomain R₁
inst✝ : IsNoetherianRing R₁
d : R₁
J : Ideal R₁
left✝ : d ≠ 0
⊢ IsNoetherian R₁ ↥↑(spanSingleton R₁⁰ ((algebraMap R₁ K) d)⁻¹ * ↑J)
state_after: case intro.intro.intro.hI
R : Type u_1
inst✝⁷ : CommRing R
S : Submonoid R
P : Type u_2
inst✝⁶ : CommRing P
inst✝⁵ : Algebra R P
loc : IsLocalization S P
R₁ : Type u_3
inst✝⁴ : CommRing R₁
K : Type u_4
inst✝³ : Field K
inst✝² : Algebra R₁ K
frac : IsFractionRing R₁ K
inst✝¹ : IsDomain R₁
inst✝ : IsNoetherianRing R₁
d : R₁
J : Ideal R₁
left✝ : d ≠ 0
⊢ IsNoetherian R₁ ↥↑↑J
tactic: apply isNoetherian_spanSingleton_inv_to_map_mul
state_before: case intro.intro.intro.hI
R : Type u_1
inst✝⁷ : CommRing R
S : Submonoid R
P : Type u_2
inst✝⁶ : CommRing P
inst✝⁵ : Algebra R P
loc : IsLocalization S P
R₁ : Type u_3
inst✝⁴ : CommRing R₁
K : Type u_4
inst✝³ : Field K
inst✝² : Algebra R₁ K
frac : IsFractionRing R₁ K
inst✝¹ : IsDomain R₁
inst✝ : IsNoetherianRing R₁
d : R₁
J : Ideal R₁
left✝ : d ≠ 0
⊢ IsNoetherian R₁ ↥↑↑J
state_after: no goals
tactic: apply isNoetherian_coeIdeal
Theorem: MonoidWithZeroHom.cancel_left
File: Mathlib/Algebra/GroupWithZero/Hom.lean

Proof steps:
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
δ : Type u_5
M₀ : Type u_6
inst✝⁴ : MulZeroOneClass α
inst✝³ : MulZeroOneClass β
inst✝² : MulZeroOneClass γ
inst✝¹ : MulZeroOneClass δ
inst✝ : FunLike F α β
g : β →*₀ γ
f₁ f₂ : α →*₀ β
hg : Injective ⇑g
h : g.comp f₁ = g.comp f₂
x : α
⊢ g (f₁ x) = g (f₂ x)
state_after: no goals
tactic: rw [← comp_apply, h,
    comp_apply]
Theorem: Batteries.RBNode.All.append
File: .lake/packages/batteries/Batteries/Data/RBMap/WF.lean

Proof steps:
state_before: α✝ : Type u_1
l r : RBNode α✝
p : α✝ → Prop
hl : All p l
hr : All p r
⊢ All p (l.append r)
state_after: α✝ : Type u_1
l r : RBNode α✝
p : α✝ → Prop
hl : All p l
hr : All p r
⊢ All p
    (match l, r with
    | nil, x => x
    | x, nil => x
    | node red a x b, node red c y d =>
      match b.append c with
      | node red b' z c' => node red (node red a x b') z (node red c' y d)
      | bc => node red a x (node red bc y d)
    | node black a x b, node black c y d =>
      match b.append c with
      | node red b' z c' => node red (node black a x b') z (node black c' y d)
      | bc => a.balLeft x (node black bc y d)
    | a@h:(node black l v r), node red b x c => node red (a.append b) x c
    | node red a x b, c@h:(node black l v r) => node red a x (b.append c))
tactic: unfold append
state_before: α✝ : Type u_1
l r : RBNode α✝
p : α✝ → Prop
hl : All p l
hr : All p r
⊢ All p
    (match l, r with
    | nil, x => x
    | x, nil => x
    | node red a x b, node red c y d =>
      match b.append c with
      | node red b' z c' => node red (node red a x b') z (node red c' y d)
      | bc => node red a x (node red bc y d)
    | node black a x b, node black c y d =>
      match b.append c with
      | node red b' z c' => node red (node black a x b') z (node black c' y d)
      | bc => a.balLeft x (node black bc y d)
    | a@h:(node black l v r), node red b x c => node red (a.append b) x c
    | node red a x b, c@h:(node black l v r) => node red a x (b.append c))
state_after: case h_3
α✝ : Type u_1
p : α✝ → Prop
x✝² x✝¹ a✝ : RBNode α✝
x✝ : α✝
b✝ c✝ : RBNode α✝
y✝ : α✝
d✝ : RBNode α✝
hl : All p (node red a✝ x✝ b✝)
hr : All p (node red c✝ y✝ d✝)
⊢ All p
    (match b✝.append c✝ with
    | node red b' z c' => node red (node red a✝ x✝ b') z (node red c' y✝ d✝)
    | bc => node red a✝ x✝ (node red bc y✝ d✝))

case h_4
α✝ : Type u_1
p : α✝ → Prop
x✝² x✝¹ a✝ : RBNode α✝
x✝ : α✝
b✝ c✝ : RBNode α✝
y✝ : α✝
d✝ : RBNode α✝
hl : All p (node black a✝ x✝ b✝)
hr : All p (node black c✝ y✝ d✝)
⊢ All p
    (match b✝.append c✝ with
    | node red b' z c' => node red (node black a✝ x✝ b') z (node black c' y✝ d✝)
    | bc => a✝.balLeft x✝ (node black bc y✝ d✝))

case h_5
α✝ : Type u_1
p : α✝ → Prop
x✝² x✝¹ l✝ : RBNode α✝
v✝ : α✝
r✝ b✝ : RBNode α✝
x✝ : α✝
c✝ : RBNode α✝
hl : All p (node black l✝ v✝ r✝)
hr : All p (node red b✝ x✝ c✝)
⊢ p x✝ ∧ All p ((node black l✝ v✝ r✝).append b✝) ∧ All p c✝

case h_6
α✝ : Type u_1
p : α✝ → Prop
x✝² x✝¹ a✝ : RBNode α✝
x✝ : α✝
b✝ l✝ : RBNode α✝
v✝ : α✝
r✝ : RBNode α✝
hl : All p (node red a✝ x✝ b✝)
hr : All p (node black l✝ v✝ r✝)
⊢ p x✝ ∧ All p a✝ ∧ All p (b✝.append (node black l✝ v✝ r✝))
tactic: split <;> try simp [*]
Theorem: Set.Countable.ae_not_mem
File: Mathlib/MeasureTheory/Measure/Typeclasses.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
δ : Type u_3
ι : Type u_4
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
μ✝ ν ν₁ ν₂ : Measure α
s t : Set α
inst✝¹ : NoAtoms μ✝
h : s.Countable
μ : Measure α
inst✝ : NoAtoms μ
⊢ ∀ᵐ (x : α) ∂μ, x ∉ s
state_after: no goals
tactic: simpa only [ae_iff, Classical.not_not] using h.measure_zero μ
Theorem: Subgroup.smul_opposite_image_mul_preimage'
File: Mathlib/Algebra/Group/Subgroup/Pointwise.lean

Proof steps:
state_before: α : Type u_1
G : Type u_2
A : Type u_3
S : Type u_4
inst✝¹ : Group G
inst✝ : AddGroup A
s✝ : Set G
g : G
h : Gᵐᵒᵖ
s : Set G
⊢ (fun y => h • y) '' ((fun x => g * x) ⁻¹' s) = (fun x => g * x) ⁻¹' ((fun y => h • y) '' s)
state_after: no goals
tactic: simp [preimage_preimage, mul_assoc]
Theorem: Monoid.exponent_dvd_iff_forall_pow_eq_one
File: Mathlib/GroupTheory/Exponent.lean

Proof steps:
state_before: G : Type u
inst✝ : Monoid G
n : ℕ
⊢ exponent G ∣ n ↔ ∀ (g : G), g ^ n = 1
state_after: case inl
G : Type u
inst✝ : Monoid G
⊢ exponent G ∣ 0 ↔ ∀ (g : G), g ^ 0 = 1

case inr
G : Type u
inst✝ : Monoid G
n : ℕ
hpos : n > 0
⊢ exponent G ∣ n ↔ ∀ (g : G), g ^ n = 1
tactic: rcases n.eq_zero_or_pos with (rfl | hpos)
state_before: case inr
G : Type u
inst✝ : Monoid G
n : ℕ
hpos : n > 0
⊢ exponent G ∣ n ↔ ∀ (g : G), g ^ n = 1
state_after: case inr.mp
G : Type u
inst✝ : Monoid G
n : ℕ
hpos : n > 0
⊢ exponent G ∣ n → ∀ (g : G), g ^ n = 1

case inr.mpr
G : Type u
inst✝ : Monoid G
n : ℕ
hpos : n > 0
⊢ (∀ (g : G), g ^ n = 1) → exponent G ∣ n
tactic: constructor
Theorem: HahnSeries.addOppositeEquiv_symm_support
File: Mathlib/RingTheory/HahnSeries/Addition.lean

Proof steps:
state_before: Γ : Type u_1
R : Type u_2
inst✝¹ : PartialOrder Γ
inst✝ : AddMonoid R
x : (HahnSeries Γ R)ᵃᵒᵖ
⊢ (addOppositeEquiv.symm x).support = (AddOpposite.unop x).support
state_after: no goals
tactic: rw [← addOppositeEquiv_support, AddEquiv.apply_symm_apply]
Theorem: Int.zmultiples_one
File: Mathlib/Algebra/Group/Subgroup/ZPowers.lean

Proof steps:
state_before: G : Type u_1
inst✝² : Group G
A : Type u_2
inst✝¹ : AddGroup A
N : Type u_3
inst✝ : Group N
⊢ AddSubgroup.zmultiples 1 = ⊤
state_after: case h
G : Type u_1
inst✝² : Group G
A : Type u_2
inst✝¹ : AddGroup A
N : Type u_3
inst✝ : Group N
z : ℤ
⊢ z ∈ AddSubgroup.zmultiples 1 ↔ z ∈ ⊤
tactic: ext z
state_before: case h
G : Type u_1
inst✝² : Group G
A : Type u_2
inst✝¹ : AddGroup A
N : Type u_3
inst✝ : Group N
z : ℤ
⊢ z ∈ AddSubgroup.zmultiples 1 ↔ z ∈ ⊤
state_after: no goals
tactic: simpa only [AddSubgroup.mem_top, iff_true] using ⟨z, zsmul_int_one z⟩
Theorem: VAdd.comp.isScalarTower
File: Mathlib/Algebra/Group/Action/Defs.lean

Proof steps:
state_before: M : Type u_1
N : Type u_2
G : Type u_3
H : Type u_4
A : Type u_5
B : Type u_6
α : Type u_7
β : Type u_8
γ : Type u_9
δ : Type u_10
inst✝³ : SMul M α
inst✝² : SMul M β
inst✝¹ : SMul α β
inst✝ : IsScalarTower M α β
g : N → M
⊢ Sort ?u.9836
state_after: M : Type u_1
N : Type u_2
G : Type u_3
H : Type u_4
A : Type u_5
B : Type u_6
α : Type u_7
β : Type u_8
γ : Type u_9
δ : Type u_10
inst✝³ : SMul M α
inst✝² : SMul M β
inst✝¹ : SMul α β
inst✝ : IsScalarTower M α β
g : N → M
this : SMul N α
⊢ Sort ?u.9836
tactic: haveI := comp α g
state_before: M : Type u_1
N : Type u_2
G : Type u_3
H : Type u_4
A : Type u_5
B : Type u_6
α : Type u_7
β : Type u_8
γ : Type u_9
δ : Type u_10
inst✝³ : SMul M α
inst✝² : SMul M β
inst✝¹ : SMul α β
inst✝ : IsScalarTower M α β
g : N → M
this : SMul N α
⊢ Sort ?u.9836
state_after: M : Type u_1
N : Type u_2
G : Type u_3
H : Type u_4
A : Type u_5
B : Type u_6
α : Type u_7
β : Type u_8
γ : Type u_9
δ : Type u_10
inst✝³ : SMul M α
inst✝² : SMul M β
inst✝¹ : SMul α β
inst✝ : IsScalarTower M α β
g : N → M
this✝ : SMul N α
this : SMul N β
⊢ Sort ?u.9836
tactic: haveI := comp β g
state_before: M : Type u_1
N : Type u_2
G : Type u_3
H : Type u_4
A : Type u_5
B : Type u_6
α : Type u_7
β : Type u_8
γ : Type u_9
δ : Type u_10
inst✝³ : SMul M α
inst✝² : SMul M β
inst✝¹ : SMul α β
inst✝ : IsScalarTower M α β
g : N → M
this✝ : SMul N α
this : SMul N β
⊢ Sort ?u.9836
state_after: no goals
tactic: exact IsScalarTower N α β
Theorem: MeasurableSpace.iUnion_mem_generateMeasurableRec
File: Mathlib/MeasureTheory/MeasurableSpace/Card.lean

Proof steps:
state_before: α : Type u
s : Set (Set α)
i : (Quotient.out (aleph 1).ord).α
f : ℕ → Set α
hf : ∀ (n : ℕ), ∃ j < i, f n ∈ generateMeasurableRec s j
⊢ ⋃ n, f n ∈ generateMeasurableRec s i
state_after: α : Type u
s : Set (Set α)
i : (Quotient.out (aleph 1).ord).α
f : ℕ → Set α
hf : ∀ (n : ℕ), ∃ j < i, f n ∈ generateMeasurableRec s j
⊢ ⋃ n, f n ∈
    let i := i;
    let S := ⋃ j, generateMeasurableRec s ↑j;
    s ∪ {∅} ∪ compl '' S ∪ range fun f => ⋃ n, ↑(f n)
tactic: unfold generateMeasurableRec
state_before: α : Type u
s : Set (Set α)
i : (Quotient.out (aleph 1).ord).α
f : ℕ → Set α
hf : ∀ (n : ℕ), ∃ j < i, f n ∈ generateMeasurableRec s j
⊢ ⋃ n, f n ∈
    let i := i;
    let S := ⋃ j, generateMeasurableRec s ↑j;
    s ∪ {∅} ∪ compl '' S ∪ range fun f => ⋃ n, ↑(f n)
state_after: no goals
tactic: exact mem_union_right _ ⟨fun n => ⟨f n, let ⟨j, hj, hf⟩ := hf n; mem_iUnion.2 ⟨⟨j, hj⟩, hf⟩⟩, rfl⟩
Theorem: le_sup_of_mem_convexHull
File: Mathlib/Analysis/Convex/Jensen.lean

Proof steps:
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
β : Type u_4
ι : Type u_5
inst✝⁵ : LinearOrderedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : LinearOrderedAddCommGroup β
inst✝² : Module 𝕜 E
inst✝¹ : Module 𝕜 β
inst✝ : OrderedSMul 𝕜 β
s✝ : Set E
f : E → β
t : Finset ι
w : ι → 𝕜
p : ι → E
x y z : E
s : Finset E
hf : ConvexOn 𝕜 ((convexHull 𝕜) ↑s) f
hx : x ∈ (convexHull 𝕜) ↑s
⊢ f x ≤ s.sup' ⋯ f
state_after: case intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
β : Type u_4
ι : Type u_5
inst✝⁵ : LinearOrderedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : LinearOrderedAddCommGroup β
inst✝² : Module 𝕜 E
inst✝¹ : Module 𝕜 β
inst✝ : OrderedSMul 𝕜 β
s✝ : Set E
f : E → β
t : Finset ι
w✝ : ι → 𝕜
p : ι → E
y z : E
s : Finset E
hf : ConvexOn 𝕜 ((convexHull 𝕜) ↑s) f
w : E → 𝕜
hw₀ : ∀ y ∈ s, 0 ≤ w y
hw₁ : ∑ y ∈ s, w y = 1
hx : s.centerMass w _root_.id ∈ (convexHull 𝕜) ↑s
⊢ f (s.centerMass w _root_.id) ≤ s.sup' ⋯ f
tactic: obtain ⟨w, hw₀, hw₁, rfl⟩ := mem_convexHull.1 hx
state_before: case intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
β : Type u_4
ι : Type u_5
inst✝⁵ : LinearOrderedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : LinearOrderedAddCommGroup β
inst✝² : Module 𝕜 E
inst✝¹ : Module 𝕜 β
inst✝ : OrderedSMul 𝕜 β
s✝ : Set E
f : E → β
t : Finset ι
w✝ : ι → 𝕜
p : ι → E
y z : E
s : Finset E
hf : ConvexOn 𝕜 ((convexHull 𝕜) ↑s) f
w : E → 𝕜
hw₀ : ∀ y ∈ s, 0 ≤ w y
hw₁ : ∑ y ∈ s, w y = 1
hx : s.centerMass w _root_.id ∈ (convexHull 𝕜) ↑s
⊢ f (s.centerMass w _root_.id) ≤ s.sup' ⋯ f
state_after: no goals
tactic: exact (hf.map_centerMass_le hw₀ (by positivity) <| subset_convexHull _ _).trans
    (centerMass_le_sup hw₀ <| by positivity)
Theorem: ProbabilityTheory.isMeasurableRatCDF_toRatCDF
File: Mathlib/Probability/Kernel/Disintegration/MeasurableStieltjes.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
inst✝ : MeasurableSpace α
f : α → ℚ → ℝ
hf : Measurable f
a : α
⊢ IsRatStieltjesPoint (toRatCDF f) a
state_after: no goals
tactic: classical
    exact IsRatStieltjesPoint.ite (IsRatStieltjesPoint f) id
      (fun _ ↦ isRatStieltjesPoint_defaultRatCDF a)
Theorem: WeakDual.CharacterSpace.eq_set_map_one_map_mul
File: Mathlib/Topology/Algebra/Module/CharacterSpace.lean

Proof steps:
state_before: 𝕜 : Type u_1
A : Type u_2
inst✝⁸ : CommRing 𝕜
inst✝⁷ : NoZeroDivisors 𝕜
inst✝⁶ : TopologicalSpace 𝕜
inst✝⁵ : ContinuousAdd 𝕜
inst✝⁴ : ContinuousConstSMul 𝕜 𝕜
inst✝³ : TopologicalSpace A
inst✝² : Semiring A
inst✝¹ : Algebra 𝕜 A
inst✝ : Nontrivial 𝕜
⊢ characterSpace 𝕜 A = {φ | φ 1 = 1 ∧ ∀ (x y : A), φ (x * y) = φ x * φ y}
state_after: case h
𝕜 : Type u_1
A : Type u_2
inst✝⁸ : CommRing 𝕜
inst✝⁷ : NoZeroDivisors 𝕜
inst✝⁶ : TopologicalSpace 𝕜
inst✝⁵ : ContinuousAdd 𝕜
inst✝⁴ : ContinuousConstSMul 𝕜 𝕜
inst✝³ : TopologicalSpace A
inst✝² : Semiring A
inst✝¹ : Algebra 𝕜 A
inst✝ : Nontrivial 𝕜
φ : WeakDual 𝕜 A
⊢ φ ∈ characterSpace 𝕜 A ↔ φ ∈ {φ | φ 1 = 1 ∧ ∀ (x y : A), φ (x * y) = φ x * φ y}
tactic: ext φ
state_before: case h
𝕜 : Type u_1
A : Type u_2
inst✝⁸ : CommRing 𝕜
inst✝⁷ : NoZeroDivisors 𝕜
inst✝⁶ : TopologicalSpace 𝕜
inst✝⁵ : ContinuousAdd 𝕜
inst✝⁴ : ContinuousConstSMul 𝕜 𝕜
inst✝³ : TopologicalSpace A
inst✝² : Semiring A
inst✝¹ : Algebra 𝕜 A
inst✝ : Nontrivial 𝕜
φ : WeakDual 𝕜 A
⊢ φ ∈ characterSpace 𝕜 A ↔ φ ∈ {φ | φ 1 = 1 ∧ ∀ (x y : A), φ (x * y) = φ x * φ y}
state_after: case h.refine_1
𝕜 : Type u_1
A : Type u_2
inst✝⁸ : CommRing 𝕜
inst✝⁷ : NoZeroDivisors 𝕜
inst✝⁶ : TopologicalSpace 𝕜
inst✝⁵ : ContinuousAdd 𝕜
inst✝⁴ : ContinuousConstSMul 𝕜 𝕜
inst✝³ : TopologicalSpace A
inst✝² : Semiring A
inst✝¹ : Algebra 𝕜 A
inst✝ : Nontrivial 𝕜
φ : WeakDual 𝕜 A
⊢ φ ∈ characterSpace 𝕜 A → φ ∈ {φ | φ 1 = 1 ∧ ∀ (x y : A), φ (x * y) = φ x * φ y}

case h.refine_2
𝕜 : Type u_1
A : Type u_2
inst✝⁸ : CommRing 𝕜
inst✝⁷ : NoZeroDivisors 𝕜
inst✝⁶ : TopologicalSpace 𝕜
inst✝⁵ : ContinuousAdd 𝕜
inst✝⁴ : ContinuousConstSMul 𝕜 𝕜
inst✝³ : TopologicalSpace A
inst✝² : Semiring A
inst✝¹ : Algebra 𝕜 A
inst✝ : Nontrivial 𝕜
φ : WeakDual 𝕜 A
⊢ φ ∈ {φ | φ 1 = 1 ∧ ∀ (x y : A), φ (x * y) = φ x * φ y} → φ ∈ characterSpace 𝕜 A
tactic: refine ⟨?_, ?_⟩