ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: Polynomial.taylor_zero'
File: Mathlib/Algebra/Polynomial/Taylor.lean

Proof steps:
state_before: R : Type u_1
inst✝ : Semiring R
r : R
f : R[X]
⊢ taylor 0 = LinearMap.id
state_after: case h.h.a
R : Type u_1
inst✝ : Semiring R
r : R
f : R[X]
n✝¹ n✝ : ℕ
⊢ ((taylor 0 ∘ₗ monomial n✝¹) 1).coeff n✝ = ((LinearMap.id ∘ₗ monomial n✝¹) 1).coeff n✝
tactic: ext
state_before: case h.h.a
R : Type u_1
inst✝ : Semiring R
r : R
f : R[X]
n✝¹ n✝ : ℕ
⊢ ((taylor 0 ∘ₗ monomial n✝¹) 1).coeff n✝ = ((LinearMap.id ∘ₗ monomial n✝¹) 1).coeff n✝
state_after: no goals
tactic: simp only [taylor_apply, add_zero, comp_X, _root_.map_zero, LinearMap.id_comp,
    Function.comp_apply, LinearMap.coe_comp]
Theorem: Set.not_equitableOn
File: Mathlib/Data/Set/Equitable.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝² : LinearOrder β
inst✝¹ : Add β
inst✝ : One β
s : Set α
f : α → β
⊢ ¬s.EquitableOn f ↔ ∃ a ∈ s, ∃ b ∈ s, f b + 1 < f a
state_after: no goals
tactic: simp [EquitableOn]
Theorem: codisjoint_hnot_hnot_left_iff
File: Mathlib/Order/Heyting/Basic.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : CoheytingAlgebra α
a b c : α
⊢ Codisjoint (￢￢a) b ↔ Codisjoint a b
state_after: no goals
tactic: simp_rw [← hnot_le_iff_codisjoint_right, hnot_hnot_hnot]
Theorem: PowerSeries.derivative_X
File: Mathlib/RingTheory/PowerSeries/Derivative.lean

Proof steps:
state_before: R : Type u_1
inst✝ : CommSemiring R
⊢ (d⁄dX R) X = 1
state_after: case h
R : Type u_1
inst✝ : CommSemiring R
n✝ : ℕ
⊢ (coeff R n✝) ((d⁄dX R) X) = (coeff R n✝) 1
tactic: ext
state_before: case h
R : Type u_1
inst✝ : CommSemiring R
n✝ : ℕ
⊢ (coeff R n✝) ((d⁄dX R) X) = (coeff R n✝) 1
state_after: case h
R : Type u_1
inst✝ : CommSemiring R
n✝ : ℕ
⊢ (if n✝ + 1 = 1 then ↑n✝ + 1 else 0) = if n✝ = 0 then 1 else 0
tactic: rw [coeff_derivative, coeff_one, coeff_X, boole_mul]
state_before: case h
R : Type u_1
inst✝ : CommSemiring R
n✝ : ℕ
⊢ (if n✝ + 1 = 1 then ↑n✝ + 1 else 0) = if n✝ = 0 then 1 else 0
state_after: case h
R : Type u_1
inst✝ : CommSemiring R
n✝ : ℕ
⊢ (if n✝ = 0 then ↑n✝ + 1 else 0) = if n✝ = 0 then 1 else 0
tactic: simp_rw [add_left_eq_self]
state_before: case h
R : Type u_1
inst✝ : CommSemiring R
n✝ : ℕ
⊢ (if n✝ = 0 then ↑n✝ + 1 else 0) = if n✝ = 0 then 1 else 0
state_after: case pos
R : Type u_1
inst✝ : CommSemiring R
n✝ : ℕ
h : n✝ = 0
⊢ ↑n✝ + 1 = 1

case neg
R : Type u_1
inst✝ : CommSemiring R
n✝ : ℕ
h : ¬n✝ = 0
⊢ 0 = 0
tactic: split_ifs with h
Theorem: Ring.inverse_mul_cancel
File: Mathlib/Algebra/GroupWithZero/Units/Basic.lean

Proof steps:
state_before: α : Type u_1
M₀ : Type u_2
G₀ : Type u_3
M₀' : Type u_4
G₀' : Type u_5
F : Type u_6
F' : Type u_7
inst✝ : MonoidWithZero M₀
x : M₀
h : IsUnit x
⊢ inverse x * x = 1
state_after: case intro
α : Type u_1
M₀ : Type u_2
G₀ : Type u_3
M₀' : Type u_4
G₀' : Type u_5
F : Type u_6
F' : Type u_7
inst✝ : MonoidWithZero M₀
u : M₀ˣ
⊢ inverse ↑u * ↑u = 1
tactic: rcases h with ⟨u, rfl⟩
state_before: case intro
α : Type u_1
M₀ : Type u_2
G₀ : Type u_3
M₀' : Type u_4
G₀' : Type u_5
F : Type u_6
F' : Type u_7
inst✝ : MonoidWithZero M₀
u : M₀ˣ
⊢ inverse ↑u * ↑u = 1
state_after: no goals
tactic: rw [inverse_unit, Units.inv_mul]
Theorem: Fin.univ_castSuccEmb
File: Mathlib/Data/Fintype/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
n : ℕ
⊢ last n ∉ map castSuccEmb univ
state_after: no goals
tactic: simp [map_eq_image]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
n : ℕ
⊢ univ = Finset.cons (last n) (map castSuccEmb univ) ⋯
state_after: no goals
tactic: simp [map_eq_image]
Theorem: _private.Mathlib.Analysis.InnerProductSpace.OfNorm.0.InnerProductSpaceable.add_left_aux1
File: Mathlib/Analysis/InnerProductSpace/OfNorm.lean

Proof steps:
state_before: 𝕜 : Type u_1
inst✝³ : RCLike 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : InnerProductSpaceable E
x y z : E
⊢ ‖x + y + z‖ * ‖x + y + z‖ = (‖2 • x + y‖ * ‖2 • x + y‖ + ‖2 • z + y‖ * ‖2 • z + y‖) / 2 - ‖x - z‖ * ‖x - z‖
state_after: 𝕜 : Type u_1
inst✝³ : RCLike 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
inst✝ : InnerProductSpaceable E
x y z : E
⊢ ‖2 • x + y‖ * ‖2 • x + y‖ + ‖2 • z + y‖ * ‖2 • z + y‖ = 2 * (‖x + y + z‖ * ‖x + y + z‖ + ‖x - z‖ * ‖x - z‖)
tactic: rw [eq_sub_iff_add_eq, eq_div_iff (two_ne_zero' ℝ), mul_comm _ (2 : ℝ), eq_comm]
Theorem: MeasureTheory.integral_add_right_eq_self
File: Mathlib/MeasureTheory/Group/Integral.lean

Proof steps:
state_before: 𝕜 : Type u_1
M : Type u_2
α : Type u_3
G : Type u_4
E : Type u_5
F : Type u_6
inst✝⁷ : MeasurableSpace G
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℝ E
inst✝⁴ : CompleteSpace E
inst✝³ : NormedAddCommGroup F
μ : Measure G
f✝ : G → E
g✝ : G
inst✝² : Group G
inst✝¹ : MeasurableMul G
inst✝ : μ.IsMulRightInvariant
f : G → E
g : G
⊢ ∫ (x : G), f (x * g) ∂μ = ∫ (x : G), f x ∂μ
state_after: 𝕜 : Type u_1
M : Type u_2
α : Type u_3
G : Type u_4
E : Type u_5
F : Type u_6
inst✝⁷ : MeasurableSpace G
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℝ E
inst✝⁴ : CompleteSpace E
inst✝³ : NormedAddCommGroup F
μ : Measure G
f✝ : G → E
g✝ : G
inst✝² : Group G
inst✝¹ : MeasurableMul G
inst✝ : μ.IsMulRightInvariant
f : G → E
g : G
h_mul : MeasurableEmbedding fun x => x * g
⊢ ∫ (x : G), f (x * g) ∂μ = ∫ (x : G), f x ∂μ
tactic: have h_mul : MeasurableEmbedding fun x => x * g :=
    (MeasurableEquiv.mulRight g).measurableEmbedding
state_before: 𝕜 : Type u_1
M : Type u_2
α : Type u_3
G : Type u_4
E : Type u_5
F : Type u_6
inst✝⁷ : MeasurableSpace G
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℝ E
inst✝⁴ : CompleteSpace E
inst✝³ : NormedAddCommGroup F
μ : Measure G
f✝ : G → E
g✝ : G
inst✝² : Group G
inst✝¹ : MeasurableMul G
inst✝ : μ.IsMulRightInvariant
f : G → E
g : G
h_mul : MeasurableEmbedding fun x => x * g
⊢ ∫ (x : G), f (x * g) ∂μ = ∫ (x : G), f x ∂μ
state_after: no goals
tactic: rw [← h_mul.integral_map, map_mul_right_eq_self]
Theorem: Matrix.vecMul_self_mul_conjTranspose_eq_zero
File: Mathlib/LinearAlgebra/Matrix/DotProduct.lean

Proof steps:
state_before: m : Type u_1
n : Type u_2
p : Type u_3
R : Type u_4
inst✝⁷ : Fintype m
inst✝⁶ : Fintype n
inst✝⁵ : Fintype p
inst✝⁴ : PartialOrder R
inst✝³ : NonUnitalRing R
inst✝² : StarRing R
inst✝¹ : StarOrderedRing R
inst✝ : NoZeroDivisors R
A : Matrix m n R
v : m → R
⊢ v ᵥ* (A * Aᴴ) = 0 ↔ v ᵥ* A = 0
state_after: no goals
tactic: simpa only [conjTranspose_conjTranspose] using vecMul_conjTranspose_mul_self_eq_zero Aᴴ _
Theorem: Set.toFinset_inter
File: Mathlib/Data/Fintype/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
s t : Set α
inst✝³ : DecidableEq α
inst✝² : Fintype ↑s
inst✝¹ : Fintype ↑t
inst✝ : Fintype ↑(s ∩ t)
⊢ (s ∩ t).toFinset = s.toFinset ∩ t.toFinset
state_after: case a
α : Type u_1
β : Type u_2
γ : Type u_3
s t : Set α
inst✝³ : DecidableEq α
inst✝² : Fintype ↑s
inst✝¹ : Fintype ↑t
inst✝ : Fintype ↑(s ∩ t)
a✝ : α
⊢ a✝ ∈ (s ∩ t).toFinset ↔ a✝ ∈ s.toFinset ∩ t.toFinset
tactic: ext
state_before: case a
α : Type u_1
β : Type u_2
γ : Type u_3
s t : Set α
inst✝³ : DecidableEq α
inst✝² : Fintype ↑s
inst✝¹ : Fintype ↑t
inst✝ : Fintype ↑(s ∩ t)
a✝ : α
⊢ a✝ ∈ (s ∩ t).toFinset ↔ a✝ ∈ s.toFinset ∩ t.toFinset
state_after: no goals
tactic: simp
Theorem: IsRelPrime.mul_left
File: Mathlib/Algebra/Divisibility/Units.lean

Proof steps:
state_before: α : Type u_1
inst✝¹ : CommMonoid α
x y z : α
inst✝ : DecompositionMonoid α
H1 : IsRelPrime x z
H2 : IsRelPrime y z
x✝ : α
h : x✝ ∣ x * y
hz : x✝ ∣ z
⊢ IsUnit x✝
state_after: case intro.intro.intro.intro
α : Type u_1
inst✝¹ : CommMonoid α
x y z : α
inst✝ : DecompositionMonoid α
H1 : IsRelPrime x z
H2 : IsRelPrime y z
a b : α
ha : a ∣ x
hb : b ∣ y
h : a * b ∣ x * y
hz : a * b ∣ z
⊢ IsUnit (a * b)
tactic: obtain ⟨a, b, ha, hb, rfl⟩ := exists_dvd_and_dvd_of_dvd_mul h
state_before: case intro.intro.intro.intro
α : Type u_1
inst✝¹ : CommMonoid α
x y z : α
inst✝ : DecompositionMonoid α
H1 : IsRelPrime x z
H2 : IsRelPrime y z
a b : α
ha : a ∣ x
hb : b ∣ y
h : a * b ∣ x * y
hz : a * b ∣ z
⊢ IsUnit (a * b)
state_after: no goals
tactic: exact (H1 ha <| (dvd_mul_right a b).trans hz).mul (H2 hb <| (dvd_mul_left b a).trans hz)
Theorem: ProbabilityTheory.Kernel.setLIntegral_deterministic'
File: Mathlib/Probability/Kernel/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
κ : Kernel α β
f : β → ℝ≥0∞
g : α → β
a : α
hg : Measurable g
hf : Measurable f
s : Set β
hs : MeasurableSet s
inst✝ : Decidable (g a ∈ s)
⊢ ∫⁻ (x : β) in s, f x ∂(deterministic g hg) a = if g a ∈ s then f (g a) else 0
state_after: no goals
tactic: rw [deterministic_apply, setLIntegral_dirac' hf hs]
Theorem: Real.rpow_logb_eq_abs
File: Mathlib/Analysis/SpecialFunctions/Log/Base.lean

Proof steps:
state_before: b x y : ℝ
b_pos : 0 < b
b_ne_one : b ≠ 1
hx : x ≠ 0
⊢ b ^ logb b x = |x|
state_after: case a
b x y : ℝ
b_pos : 0 < b
b_ne_one : b ≠ 1
hx : x ≠ 0
⊢ b ^ logb b x ∈ Ioi 0

case a
b x y : ℝ
b_pos : 0 < b
b_ne_one : b ≠ 1
hx : x ≠ 0
⊢ |x| ∈ Ioi 0

case a
b x y : ℝ
b_pos : 0 < b
b_ne_one : b ≠ 1
hx : x ≠ 0
⊢ log (b ^ logb b x) = log |x|
tactic: apply log_injOn_pos
state_before: case a
b x y : ℝ
b_pos : 0 < b
b_ne_one : b ≠ 1
hx : x ≠ 0
⊢ log (b ^ logb b x) = log |x|
state_after: case a
b x y : ℝ
b_pos : 0 < b
b_ne_one : b ≠ 1
hx : x ≠ 0
⊢ log x / log b * log b = log x
tactic: rw [log_rpow b_pos, logb, log_abs]
state_before: case a
b x y : ℝ
b_pos : 0 < b
b_ne_one : b ≠ 1
hx : x ≠ 0
⊢ log x / log b * log b = log x
state_after: no goals
tactic: field_simp [log_b_ne_zero b_pos b_ne_one]
Theorem: Polynomial.rootSet_C
File: Mathlib/Algebra/Polynomial/Roots.lean

Proof steps:
state_before: R : Type u
S : Type v
T : Type w
a✝ b : R
n : ℕ
inst✝⁵ : CommRing R
inst✝⁴ : IsDomain R
p q : R[X]
inst✝³ : CommRing T
inst✝² : CommRing S
inst✝¹ : IsDomain S
inst✝ : Algebra T S
a : T
⊢ (C a).rootSet S = ∅
state_after: no goals
tactic: classical
  rw [rootSet_def, aroots_C, Multiset.toFinset_zero, Finset.coe_empty]
Theorem: Polynomial.iterate_derivative_natCast_mul
File: Mathlib/Algebra/Polynomial/Derivative.lean

Proof steps:
state_before: R : Type u
S : Type v
T : Type w
ι : Type y
A : Type z
a b : R
n✝ : ℕ
inst✝ : Semiring R
n k : ℕ
f : R[X]
⊢ (⇑derivative)^[k] (↑n * f) = ↑n * (⇑derivative)^[k] f
state_after: no goals
tactic: induction' k with k ih generalizing f <;> simp [*]
Theorem: SimpleGraph.cliqueSet_map
File: Mathlib/Combinatorics/SimpleGraph/Clique.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
G✝ H : SimpleGraph α
n : ℕ
a b c : α
s : Finset α
hn : n ≠ 1
G : SimpleGraph α
f : α ↪ β
⊢ (SimpleGraph.map f G).cliqueSet n = map f '' G.cliqueSet n
state_after: case h
α : Type u_1
β : Type u_2
G✝ H : SimpleGraph α
n : ℕ
a b c : α
s✝ : Finset α
hn : n ≠ 1
G : SimpleGraph α
f : α ↪ β
s : Finset β
⊢ s ∈ (SimpleGraph.map f G).cliqueSet n ↔ s ∈ map f '' G.cliqueSet n
tactic: ext s
state_before: case h
α : Type u_1
β : Type u_2
G✝ H : SimpleGraph α
n : ℕ
a b c : α
s✝ : Finset α
hn : n ≠ 1
G : SimpleGraph α
f : α ↪ β
s : Finset β
⊢ s ∈ (SimpleGraph.map f G).cliqueSet n ↔ s ∈ map f '' G.cliqueSet n
state_after: case h.mp
α : Type u_1
β : Type u_2
G✝ H : SimpleGraph α
n : ℕ
a b c : α
s✝ : Finset α
hn : n ≠ 1
G : SimpleGraph α
f : α ↪ β
s : Finset β
⊢ s ∈ (SimpleGraph.map f G).cliqueSet n → s ∈ map f '' G.cliqueSet n

case h.mpr
α : Type u_1
β : Type u_2
G✝ H : SimpleGraph α
n : ℕ
a b c : α
s✝ : Finset α
hn : n ≠ 1
G : SimpleGraph α
f : α ↪ β
s : Finset β
⊢ s ∈ map f '' G.cliqueSet n → s ∈ (SimpleGraph.map f G).cliqueSet n
tactic: constructor
Theorem: dite_dite_distrib_right
File: Mathlib/Logic/Lemmas.lean

Proof steps:
state_before: α : Sort u_1
p q r : Prop
inst✝¹ : Decidable p
inst✝ : Decidable q
a✝ b✝ c✝ : α
a : p → q → α
b : p → ¬q → α
c : ¬p → α
⊢ dite p (fun hp => dite q (a hp) (b hp)) c =
    if hq : q then dite p (fun hp => a hp hq) c else dite p (fun hp => b hp hq) c
state_after: no goals
tactic: split_ifs <;> rfl
Theorem: Projectivization.Subspace.span_eq_sInf
File: Mathlib/LinearAlgebra/Projectivization/Subspace.lean

Proof steps:
state_before: K : Type u_1
V : Type u_2
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
S : Set (ℙ K V)
⊢ span S = sInf {W | S ⊆ ↑W}
state_after: case carrier.h
K : Type u_1
V : Type u_2
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
S : Set (ℙ K V)
x : ℙ K V
⊢ x ∈ (span S).carrier ↔ x ∈ (sInf {W | S ⊆ ↑W}).carrier
tactic: ext x
state_before: case carrier.h
K : Type u_1
V : Type u_2
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
S : Set (ℙ K V)
x : ℙ K V
⊢ x ∈ (span S).carrier ↔ x ∈ (sInf {W | S ⊆ ↑W}).carrier
state_after: case carrier.h
K : Type u_1
V : Type u_2
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
S : Set (ℙ K V)
x : ℙ K V
⊢ (∀ (W : Subspace K V), S ⊆ ↑W → x ∈ W) ↔ x ∈ sInf {W | S ⊆ ↑W}
tactic: simp_rw [mem_carrier_iff, mem_span x]
state_before: case carrier.h
K : Type u_1
V : Type u_2
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
S : Set (ℙ K V)
x : ℙ K V
⊢ (∀ (W : Subspace K V), S ⊆ ↑W → x ∈ W) ↔ x ∈ sInf {W | S ⊆ ↑W}
state_after: case carrier.h.refine_1
K : Type u_1
V : Type u_2
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
S : Set (ℙ K V)
x : ℙ K V
hx : ∀ (W : Subspace K V), S ⊆ ↑W → x ∈ W
⊢ x ∈ sInf {W | S ⊆ ↑W}

case carrier.h.refine_2
K : Type u_1
V : Type u_2
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
S : Set (ℙ K V)
x : ℙ K V
hx : x ∈ sInf {W | S ⊆ ↑W}
W : Subspace K V
hW : S ⊆ ↑W
⊢ x ∈ W
tactic: refine ⟨fun hx => ?_, fun hx W hW => ?_⟩
Theorem: ContDiffAt.rpow_const_of_le
File: Mathlib/Analysis/SpecialFunctions/Pow/Deriv.lean

Proof steps:
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f g : E → ℝ
f' g' : E →L[ℝ] ℝ
x : E
s : Set E
c p : ℝ
n : ℕ∞
m : ℕ
hf : ContDiffAt ℝ (↑m) f x
h : ↑m ≤ p
⊢ ContDiffAt ℝ (↑m) (fun x => f x ^ p) x
state_after: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f g : E → ℝ
f' g' : E →L[ℝ] ℝ
x : E
s : Set E
c p : ℝ
n : ℕ∞
m : ℕ
hf : ContDiffWithinAt ℝ (↑m) f Set.univ x
h : ↑m ≤ p
⊢ ContDiffWithinAt ℝ (↑m) (fun x => f x ^ p) Set.univ x
tactic: rw [← contDiffWithinAt_univ] at *
state_before: E : Type u_1
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℝ E
f g : E → ℝ
f' g' : E →L[ℝ] ℝ
x : E
s : Set E
c p : ℝ
n : ℕ∞
m : ℕ
hf : ContDiffWithinAt ℝ (↑m) f Set.univ x
h : ↑m ≤ p
⊢ ContDiffWithinAt ℝ (↑m) (fun x => f x ^ p) Set.univ x
state_after: no goals
tactic: exact hf.rpow_const_of_le h
Theorem: Real.tan_pi_div_six
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Basic.lean

Proof steps:
state_before: ⊢ tan (π / 6) = 1 / √3
state_after: ⊢ 1 / 2 / (√3 / 2) = 1 / √3
tactic: rw [tan_eq_sin_div_cos, sin_pi_div_six, cos_pi_div_six]
state_before: ⊢ 1 / 2 / (√3 / 2) = 1 / √3
state_after: no goals
tactic: ring
Theorem: Multiset.powerset_aux'_perm
File: Mathlib/Data/Multiset/Powerset.lean

Proof steps:
state_before: α : Type u_1
l₁ l₂ : List α
p : l₁ ~ l₂
⊢ powersetAux' l₁ ~ powersetAux' l₂
state_after: case nil
α : Type u_1
l₁ l₂ : List α
⊢ powersetAux' [] ~ powersetAux' []

case cons
α : Type u_1
l₁✝ l₂✝ : List α
a : α
l₁ l₂ : List α
p : l₁ ~ l₂
IH : powersetAux' l₁ ~ powersetAux' l₂
⊢ powersetAux' (a :: l₁) ~ powersetAux' (a :: l₂)

case swap
α : Type u_1
l₁ l₂ : List α
a b : α
l : List α
⊢ powersetAux' (b :: a :: l) ~ powersetAux' (a :: b :: l)

case trans
α : Type u_1
l₁✝ l₂✝ l₁ l₂ l₃ : List α
a✝¹ : l₁ ~ l₂
a✝ : l₂ ~ l₃
IH₁ : powersetAux' l₁ ~ powersetAux' l₂
IH₂ : powersetAux' l₂ ~ powersetAux' l₃
⊢ powersetAux' l₁ ~ powersetAux' l₃
tactic: induction' p with a l₁ l₂ p IH a b l l₁ l₂ l₃ _ _ IH₁ IH₂
Theorem: Set.one_lt_ncard
File: Mathlib/Data/Set/Card.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
s t : Set α
f : α → β
hs : autoParam s.Finite _auto✝
⊢ 1 < s.ncard ↔ ∃ a ∈ s, ∃ b ∈ s, a ≠ b
state_after: no goals
tactic: simp_rw [ncard_eq_toFinset_card _ hs, Finset.one_lt_card, Finite.mem_toFinset]
Theorem: map_mem_maximals
File: Mathlib/Order/Minimal.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
r✝ r₁ r₂ : α → α → Prop
s✝ t : Set α
a✝ b x✝² : α
f : α → β
r : α → α → Prop
s : β → β → Prop
x : Set α
hf : ∀ ⦃a a' : α⦄, a ∈ x → a' ∈ x → (r a a' ↔ s (f a) (f a'))
a : α
ha : a ∈ maximals r x
x✝¹ x✝ : α
h₁ : x✝¹ ∈ x
h₂ : x✝ ∈ x
⊢ r x✝ x✝¹ ↔ s (f x✝) (f x✝¹)
state_after: no goals
tactic: exact hf h₂ h₁
Theorem: MeasureTheory.AEStronglyMeasurable'.aeStronglyMeasurable'_of_measurableSpace_le_on
File: Mathlib/MeasureTheory/Function/ConditionalExpectation/AEMeasurable.lean

Proof steps:
state_before: α : Type u_1
E : Type u_2
m m₂ m0 : MeasurableSpace α
μ : Measure α
inst✝¹ : TopologicalSpace E
inst✝ : Zero E
hm : m ≤ m0
s : Set α
f : α → E
hs_m : MeasurableSet s
hs : ∀ (t : Set α), MeasurableSet (s ∩ t) → MeasurableSet (s ∩ t)
hf : AEStronglyMeasurable' m f μ
hf_zero : f =ᶠ[ae (μ.restrict sᶜ)] 0
h_ind_eq : s.indicator (mk f hf) =ᶠ[ae μ] f
⊢ AEStronglyMeasurable' m₂ f μ
state_after: α : Type u_1
E : Type u_2
m m₂ m0 : MeasurableSpace α
μ : Measure α
inst✝¹ : TopologicalSpace E
inst✝ : Zero E
hm : m ≤ m0
s : Set α
f : α → E
hs_m : MeasurableSet s
hs : ∀ (t : Set α), MeasurableSet (s ∩ t) → MeasurableSet (s ∩ t)
hf : AEStronglyMeasurable' m f μ
hf_zero : f =ᶠ[ae (μ.restrict sᶜ)] 0
h_ind_eq : s.indicator (mk f hf) =ᶠ[ae μ] f
⊢ StronglyMeasurable (s.indicator (mk f hf))
tactic: suffices StronglyMeasurable[m₂] (s.indicator (hf.mk f)) from
    AEStronglyMeasurable'.congr this.aeStronglyMeasurable' h_ind_eq
state_before: α : Type u_1
E : Type u_2
m m₂ m0 : MeasurableSpace α
μ : Measure α
inst✝¹ : TopologicalSpace E
inst✝ : Zero E
hm : m ≤ m0
s : Set α
f : α → E
hs_m : MeasurableSet s
hs : ∀ (t : Set α), MeasurableSet (s ∩ t) → MeasurableSet (s ∩ t)
hf : AEStronglyMeasurable' m f μ
hf_zero : f =ᶠ[ae (μ.restrict sᶜ)] 0
h_ind_eq : s.indicator (mk f hf) =ᶠ[ae μ] f
⊢ StronglyMeasurable (s.indicator (mk f hf))
state_after: α : Type u_1
E : Type u_2
m m₂ m0 : MeasurableSpace α
μ : Measure α
inst✝¹ : TopologicalSpace E
inst✝ : Zero E
hm : m ≤ m0
s : Set α
f : α → E
hs_m : MeasurableSet s
hs : ∀ (t : Set α), MeasurableSet (s ∩ t) → MeasurableSet (s ∩ t)
hf : AEStronglyMeasurable' m f μ
hf_zero : f =ᶠ[ae (μ.restrict sᶜ)] 0
h_ind_eq : s.indicator (mk f hf) =ᶠ[ae μ] f
hf_ind : StronglyMeasurable (s.indicator (mk f hf))
⊢ StronglyMeasurable (s.indicator (mk f hf))
tactic: have hf_ind : StronglyMeasurable[m] (s.indicator (hf.mk f)) :=
    hf.stronglyMeasurable_mk.indicator hs_m
state_before: α : Type u_1
E : Type u_2
m m₂ m0 : MeasurableSpace α
μ : Measure α
inst✝¹ : TopologicalSpace E
inst✝ : Zero E
hm : m ≤ m0
s : Set α
f : α → E
hs_m : MeasurableSet s
hs : ∀ (t : Set α), MeasurableSet (s ∩ t) → MeasurableSet (s ∩ t)
hf : AEStronglyMeasurable' m f μ
hf_zero : f =ᶠ[ae (μ.restrict sᶜ)] 0
h_ind_eq : s.indicator (mk f hf) =ᶠ[ae μ] f
hf_ind : StronglyMeasurable (s.indicator (mk f hf))
⊢ StronglyMeasurable (s.indicator (mk f hf))
state_after: no goals
tactic: exact
    hf_ind.stronglyMeasurable_of_measurableSpace_le_on hs_m hs fun x hxs =>
      Set.indicator_of_not_mem hxs _
Theorem: Real.sin_pi_div_thirty_two
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Basic.lean

Proof steps:
state_before: x : ℝ
⊢ sin (π / 32) = √(2 - √(2 + √(2 + √2))) / 2
state_after: x : ℝ
⊢ sin (π / 32) = sin (π / 2 ^ 5)

x : ℝ
⊢ sin (π / 2 ^ 5) = √(2 - √(2 + √(2 + √2))) / 2
tactic: trans sin (π / 2 ^ 5)
Theorem: Localization.algEquiv_mk
File: Mathlib/RingTheory/Localization/Basic.lean

Proof steps:
state_before: R : Type u_1
inst✝⁴ : CommSemiring R
M : Submonoid R
S : Type u_2
inst✝³ : CommSemiring S
inst✝² : Algebra R S
P : Type u_3
inst✝¹ : CommSemiring P
inst✝ : IsLocalization M S
x : R
y : ↥M
⊢ (algEquiv M S) (mk x y) = mk' S x y
state_after: no goals
tactic: rw [mk_eq_mk', algEquiv_mk']
Theorem: Finset.toDual_min'
File: Mathlib/Data/Finset/Lattice.lean

Proof steps:
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : LinearOrder α
s✝ : Finset α
H : s✝.Nonempty
x : α
s : Finset α
hs : s.Nonempty
⊢ toDual (s.min' hs) = (image (⇑toDual) s).max' ⋯
state_after: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : LinearOrder α
s✝ : Finset α
H : s✝.Nonempty
x : α
s : Finset α
hs : s.Nonempty
⊢ ↑(toDual (s.min' hs)) = ↑((image (⇑toDual) s).max' ⋯)
tactic: rw [← WithBot.coe_eq_coe]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : LinearOrder α
s✝ : Finset α
H : s✝.Nonempty
x : α
s : Finset α
hs : s.Nonempty
⊢ ↑(toDual (s.min' hs)) = ↑((image (⇑toDual) s).max' ⋯)
state_after: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : LinearOrder α
s✝ : Finset α
H : s✝.Nonempty
x : α
s : Finset α
hs : s.Nonempty
⊢ s.sup (WithBot.some ∘ fun x => toDual x) = s.sup ((WithBot.some ∘ fun x => x) ∘ ⇑toDual)
tactic: simp only [min'_eq_inf', id_eq, toDual_inf', Function.comp_apply, coe_sup', max'_eq_sup',
    sup_image]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : LinearOrder α
s✝ : Finset α
H : s✝.Nonempty
x : α
s : Finset α
hs : s.Nonempty
⊢ s.sup (WithBot.some ∘ fun x => toDual x) = s.sup ((WithBot.some ∘ fun x => x) ∘ ⇑toDual)
state_after: no goals
tactic: rfl
Theorem: WithLp.prod_norm_eq_card
File: Mathlib/Analysis/Normed/Lp/ProdLp.lean

Proof steps:
state_before: p : ℝ≥0∞
𝕜 : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : Norm α
inst✝ : Norm β
f : WithLp 0 (α × β)
⊢ ‖f‖ = (if ‖f.1‖ = 0 then 0 else 1) + if ‖f.2‖ = 0 then 0 else 1
state_after: no goals
tactic: convert if_pos rfl
Theorem: MulAction.aestabilizer_empty
File: Mathlib/MeasureTheory/Group/AEStabilizer.lean

Proof steps:
state_before: G : Type u_1
α : Type u_2
inst✝² : Group G
inst✝¹ : MulAction G α
x✝² : MeasurableSpace α
μ : Measure α
inst✝ : SMulInvariantMeasure G α μ
g : G
s t : Set α
x✝¹ : G
x✝ : x✝¹ ∈ ⊤
⊢ x✝¹ ∈ aestabilizer G μ ∅
state_after: no goals
tactic: simp
Theorem: Orientation.oangle_eq_pi_iff_oangle_rev_eq_pi
File: Mathlib/Geometry/Euclidean/Angle/Oriented/Basic.lean

Proof steps:
state_before: V : Type u_1
V' : Type u_2
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : NormedAddCommGroup V'
inst✝³ : InnerProductSpace ℝ V
inst✝² : InnerProductSpace ℝ V'
inst✝¹ : Fact (finrank ℝ V = 2)
inst✝ : Fact (finrank ℝ V' = 2)
o : Orientation ℝ V (Fin 2)
x y : V
⊢ o.oangle x y = ↑π ↔ o.oangle y x = ↑π
state_after: no goals
tactic: rw [oangle_rev, neg_eq_iff_eq_neg, Real.Angle.neg_coe_pi]
Theorem: Multiset.mem_Ioc
File: Mathlib/Order/Interval/Multiset.lean

Proof steps:
state_before: α : Type u_1
inst✝¹ : Preorder α
inst✝ : LocallyFiniteOrder α
a b x : α
⊢ x ∈ Ioc a b ↔ a < x ∧ x ≤ b
state_after: no goals
tactic: rw [Ioc, ← Finset.mem_def, Finset.mem_Ioc]
Theorem: RingHom.FiniteType.of_surjective
File: Mathlib/RingTheory/FiniteType.lean

Proof steps:
state_before: A : Type u_1
B : Type u_2
C : Type u_3
inst✝² : CommRing A
inst✝¹ : CommRing B
inst✝ : CommRing C
f : A →+* B
hf : Surjective ⇑f
⊢ f.FiniteType
state_after: A : Type u_1
B : Type u_2
C : Type u_3
inst✝² : CommRing A
inst✝¹ : CommRing B
inst✝ : CommRing C
f : A →+* B
hf : Surjective ⇑f
⊢ (f.comp (RingHom.id A)).FiniteType
tactic: rw [← f.comp_id]
state_before: A : Type u_1
B : Type u_2
C : Type u_3
inst✝² : CommRing A
inst✝¹ : CommRing B
inst✝ : CommRing C
f : A →+* B
hf : Surjective ⇑f
⊢ (f.comp (RingHom.id A)).FiniteType
state_after: no goals
tactic: exact (id A).comp_surjective hf
Theorem: Nat.count_zero
File: Mathlib/Data/Nat/Count.lean

Proof steps:
state_before: p : ℕ → Prop
inst✝ : DecidablePred p
⊢ count p 0 = 0
state_after: no goals
tactic: rw [count, List.range_zero, List.countP, List.countP.go]
Theorem: DiscreteValuationRing.addVal_uniformizer
File: Mathlib/RingTheory/DiscreteValuationRing/Basic.lean

Proof steps:
state_before: R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : DiscreteValuationRing R
ϖ : R
hϖ : Irreducible ϖ
⊢ (addVal R) ϖ = 1
state_after: no goals
tactic: simpa only [one_mul, eq_self_iff_true, Units.val_one, pow_one, forall_true_left, Nat.cast_one]
    using addVal_def ϖ 1 hϖ 1