ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: SimpleGraph.dart_card_eq_sum_degrees
File: Mathlib/Combinatorics/SimpleGraph/DegreeSum.lean

Proof steps:
state_before: V : Type u
G : SimpleGraph V
inst✝² : Fintype V
inst✝¹ : DecidableRel G.Adj
inst✝ : Fintype (Sym2 V)
⊢ Fintype.card G.Dart = ∑ v : V, G.degree v
state_after: V : Type u
G : SimpleGraph V
inst✝² : Fintype V
inst✝¹ : DecidableRel G.Adj
inst✝ : Fintype (Sym2 V)
this : DecidableEq V
⊢ Fintype.card G.Dart = ∑ v : V, G.degree v
tactic: haveI := Classical.decEq V
state_before: V : Type u
G : SimpleGraph V
inst✝² : Fintype V
inst✝¹ : DecidableRel G.Adj
inst✝ : Fintype (Sym2 V)
this : DecidableEq V
⊢ Fintype.card G.Dart = ∑ v : V, G.degree v
state_after: V : Type u
G : SimpleGraph V
inst✝² : Fintype V
inst✝¹ : DecidableRel G.Adj
inst✝ : Fintype (Sym2 V)
this : DecidableEq V
⊢ univ.card = ∑ x : V, (filter (fun d => d.toProd.1 = x) univ).card
tactic: simp only [← card_univ, ← dart_fst_fiber_card_eq_degree]
state_before: V : Type u
G : SimpleGraph V
inst✝² : Fintype V
inst✝¹ : DecidableRel G.Adj
inst✝ : Fintype (Sym2 V)
this : DecidableEq V
⊢ univ.card = ∑ x : V, (filter (fun d => d.toProd.1 = x) univ).card
state_after: no goals
tactic: exact card_eq_sum_card_fiberwise (by simp)
Theorem: Sum.elim_update_left
File: Mathlib/Data/Sum/Basic.lean

Proof steps:
state_before: α : Type u
α' : Type w
β : Type v
β' : Type x
γ : Type u_1
δ : Type u_2
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
f : α → γ
g : β → γ
i : α
c : γ
⊢ Sum.elim (update f i c) g = update (Sum.elim f g) (inl i) c
state_after: case h
α : Type u
α' : Type w
β : Type v
β' : Type x
γ : Type u_1
δ : Type u_2
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
f : α → γ
g : β → γ
i : α
c : γ
x : α ⊕ β
⊢ Sum.elim (update f i c) g x = update (Sum.elim f g) (inl i) c x
tactic: ext x
state_before: case h
α : Type u
α' : Type w
β : Type v
β' : Type x
γ : Type u_1
δ : Type u_2
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
f : α → γ
g : β → γ
i : α
c : γ
x : α ⊕ β
⊢ Sum.elim (update f i c) g x = update (Sum.elim f g) (inl i) c x
state_after: case h.inl
α : Type u
α' : Type w
β : Type v
β' : Type x
γ : Type u_1
δ : Type u_2
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
f : α → γ
g : β → γ
i : α
c : γ
x : α
⊢ Sum.elim (update f i c) g (inl x) = update (Sum.elim f g) (inl i) c (inl x)

case h.inr
α : Type u
α' : Type w
β : Type v
β' : Type x
γ : Type u_1
δ : Type u_2
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
f : α → γ
g : β → γ
i : α
c : γ
x : β
⊢ Sum.elim (update f i c) g (inr x) = update (Sum.elim f g) (inl i) c (inr x)
tactic: rcases x with x | x
Theorem: Finset.gcd_congr
File: Mathlib/Algebra/GCDMonoid/Finset.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : NormalizedGCDMonoid α
s s₁ s₂ : Finset β
f✝ f g : β → α
hs : s₁ = s₂
hfg : ∀ a ∈ s₂, f a = g a
⊢ s₁.gcd f = s₂.gcd g
state_after: ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : NormalizedGCDMonoid α
s s₁ : Finset β
f✝ f g : β → α
hfg : ∀ a ∈ s₁, f a = g a
⊢ s₁.gcd f = s₁.gcd g
tactic: subst hs
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : NormalizedGCDMonoid α
s s₁ : Finset β
f✝ f g : β → α
hfg : ∀ a ∈ s₁, f a = g a
⊢ s₁.gcd f = s₁.gcd g
state_after: no goals
tactic: exact Finset.fold_congr hfg
Theorem: Nat.factors_eq
File: Mathlib/RingTheory/UniqueFactorizationDomain.lean

Proof steps:
state_before: α : Type u_1
⊢ normalizedFactors 0 = ↑(primeFactorsList 0)
state_after: no goals
tactic: simp
state_before: α : Type u_1
n : ℕ
⊢ normalizedFactors (n + 1) = ↑(n + 1).primeFactorsList
state_after: α : Type u_1
n : ℕ
⊢ Multiset.Rel (fun x x_1 => x ~ᵤ x_1) (normalizedFactors (n + 1)) ↑(n + 1).primeFactorsList
tactic: rw [← Multiset.rel_eq, ← associated_eq_eq]
state_before: α : Type u_1
n : ℕ
⊢ Multiset.Rel (fun x x_1 => x ~ᵤ x_1) (normalizedFactors (n + 1)) ↑(n + 1).primeFactorsList
state_after: α : Type u_1
n : ℕ
⊢ (normalizedFactors (n + 1)).prod ~ᵤ (↑(n + 1).primeFactorsList).prod

α : Type u_1
n : ℕ
⊢ ∀ x ∈ ↑(n + 1).primeFactorsList, Irreducible x
tactic: apply UniqueFactorizationMonoid.factors_unique irreducible_of_normalized_factor _
Theorem: IsUnit.exists_right_inv
File: Mathlib/Algebra/Group/Units.lean

Proof steps:
state_before: α : Type u
M : Type u_1
N : Type u_2
inst✝ : Monoid M
a b : M
h : IsUnit a
⊢ ∃ b, a * b = 1
state_after: case intro.mk
α : Type u
M : Type u_1
N : Type u_2
inst✝ : Monoid M
b✝ a b : M
hab : a * b = 1
inv_val✝ : b * a = 1
⊢ ∃ b_1, ↑{ val := a, inv := b, val_inv := hab, inv_val := inv_val✝ } * b_1 = 1
tactic: rcases h with ⟨⟨a, b, hab, _⟩, rfl⟩
state_before: case intro.mk
α : Type u
M : Type u_1
N : Type u_2
inst✝ : Monoid M
b✝ a b : M
hab : a * b = 1
inv_val✝ : b * a = 1
⊢ ∃ b_1, ↑{ val := a, inv := b, val_inv := hab, inv_val := inv_val✝ } * b_1 = 1
state_after: no goals
tactic: exact ⟨b, hab⟩
Theorem: HasDerivAtFilter.hasGradientAtFilter
File: Mathlib/Analysis/Calculus/Gradient/Basic.lean

Proof steps:
state_before: 𝕜 : Type u_1
F : Type u_2
inst✝³ : RCLike 𝕜
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 F
inst✝ : CompleteSpace F
f : F → 𝕜
f' x : F
s : Set F
L : Filter F
g : 𝕜 → 𝕜
g' u : 𝕜
L' : Filter 𝕜
h : HasDerivAtFilter g g' u L'
⊢ HasGradientAtFilter g ((starRingEnd 𝕜) g') u L'
state_after: 𝕜 : Type u_1
F : Type u_2
inst✝³ : RCLike 𝕜
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 F
inst✝ : CompleteSpace F
f : F → 𝕜
f' x : F
s : Set F
L : Filter F
g : 𝕜 → 𝕜
g' u : 𝕜
L' : Filter 𝕜
h : HasDerivAtFilter g g' u L'
this : ContinuousLinearMap.smulRight 1 g' = (toDual 𝕜 𝕜) ((starRingEnd 𝕜) g')
⊢ HasGradientAtFilter g ((starRingEnd 𝕜) g') u L'
tactic: have : ContinuousLinearMap.smulRight (1 : 𝕜 →L[𝕜] 𝕜) g' = (toDual 𝕜 𝕜) (starRingEnd 𝕜 g') := by
    ext; simp
state_before: 𝕜 : Type u_1
F : Type u_2
inst✝³ : RCLike 𝕜
inst✝² : NormedAddCommGroup F
inst✝¹ : InnerProductSpace 𝕜 F
inst✝ : CompleteSpace F
f : F → 𝕜
f' x : F
s : Set F
L : Filter F
g : 𝕜 → 𝕜
g' u : 𝕜
L' : Filter 𝕜
h : HasDerivAtFilter g g' u L'
this : ContinuousLinearMap.smulRight 1 g' = (toDual 𝕜 𝕜) ((starRingEnd 𝕜) g')
⊢ HasGradientAtFilter g ((starRingEnd 𝕜) g') u L'
state_after: no goals
tactic: rwa [HasGradientAtFilter, ← this]
Theorem: Filter.mem_iInf_of_directed
File: Mathlib/Order/Filter/Basic.lean

Proof steps:
state_before: α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
f✝ g : Filter α
s✝ t : Set α
f : ι → Filter α
h : Directed (fun x x_1 => x ≥ x_1) f
inst✝ : Nonempty ι
s : Set α
⊢ s ∈ iInf f ↔ ∃ i, s ∈ f i
state_after: no goals
tactic: simp only [← Filter.mem_sets, iInf_sets_eq h, mem_iUnion]
Theorem: LinearMap.liftBaseChange_comp
File: Mathlib/RingTheory/TensorProduct/Basic.lean

Proof steps:
state_before: R : Type u_3
M : Type u_4
N : Type u_5
A : Type u_2
inst✝¹² : CommSemiring R
inst✝¹¹ : CommSemiring A
inst✝¹⁰ : Algebra R A
inst✝⁹ : AddCommMonoid M
inst✝⁸ : AddCommMonoid N
inst✝⁷ : Module R M
inst✝⁶ : Module R N
inst✝⁵ : Module A N
inst✝⁴ : IsScalarTower R A N
P : Type u_1
inst✝³ : AddCommMonoid P
inst✝² : Module A P
inst✝¹ : Module R P
inst✝ : IsScalarTower R A P
l : M →ₗ[R] N
l' : N →ₗ[A] P
⊢ l' ∘ₗ liftBaseChange A l = liftBaseChange A (↑R l' ∘ₗ l)
state_after: case a.h.h
R : Type u_3
M : Type u_4
N : Type u_5
A : Type u_2
inst✝¹² : CommSemiring R
inst✝¹¹ : CommSemiring A
inst✝¹⁰ : Algebra R A
inst✝⁹ : AddCommMonoid M
inst✝⁸ : AddCommMonoid N
inst✝⁷ : Module R M
inst✝⁶ : Module R N
inst✝⁵ : Module A N
inst✝⁴ : IsScalarTower R A N
P : Type u_1
inst✝³ : AddCommMonoid P
inst✝² : Module A P
inst✝¹ : Module R P
inst✝ : IsScalarTower R A P
l : M →ₗ[R] N
l' : N →ₗ[A] P
x✝ : M
⊢ ((AlgebraTensorModule.curry (l' ∘ₗ liftBaseChange A l)) 1) x✝ =
    ((AlgebraTensorModule.curry (liftBaseChange A (↑R l' ∘ₗ l))) 1) x✝
tactic: ext
state_before: case a.h.h
R : Type u_3
M : Type u_4
N : Type u_5
A : Type u_2
inst✝¹² : CommSemiring R
inst✝¹¹ : CommSemiring A
inst✝¹⁰ : Algebra R A
inst✝⁹ : AddCommMonoid M
inst✝⁸ : AddCommMonoid N
inst✝⁷ : Module R M
inst✝⁶ : Module R N
inst✝⁵ : Module A N
inst✝⁴ : IsScalarTower R A N
P : Type u_1
inst✝³ : AddCommMonoid P
inst✝² : Module A P
inst✝¹ : Module R P
inst✝ : IsScalarTower R A P
l : M →ₗ[R] N
l' : N →ₗ[A] P
x✝ : M
⊢ ((AlgebraTensorModule.curry (l' ∘ₗ liftBaseChange A l)) 1) x✝ =
    ((AlgebraTensorModule.curry (liftBaseChange A (↑R l' ∘ₗ l))) 1) x✝
state_after: no goals
tactic: simp
Theorem: AddSubmonoid.mul_bot
File: Mathlib/Algebra/Group/Submonoid/Pointwise.lean

Proof steps:
state_before: α : Type u_1
G : Type u_2
M : Type u_3
R : Type u_4
A : Type u_5
inst✝² : Monoid M
inst✝¹ : AddMonoid A
inst✝ : NonUnitalNonAssocSemiring R
S : AddSubmonoid R
m : R
x✝ : m ∈ S
n : R
hn : n ∈ ⊥
⊢ m * n ∈ ⊥
state_after: α : Type u_1
G : Type u_2
M : Type u_3
R : Type u_4
A : Type u_5
inst✝² : Monoid M
inst✝¹ : AddMonoid A
inst✝ : NonUnitalNonAssocSemiring R
S : AddSubmonoid R
m : R
x✝ : m ∈ S
n : R
hn : n = 0
⊢ m * n = 0
tactic: rw [AddSubmonoid.mem_bot] at hn ⊢
state_before: α : Type u_1
G : Type u_2
M : Type u_3
R : Type u_4
A : Type u_5
inst✝² : Monoid M
inst✝¹ : AddMonoid A
inst✝ : NonUnitalNonAssocSemiring R
S : AddSubmonoid R
m : R
x✝ : m ∈ S
n : R
hn : n = 0
⊢ m * n = 0
state_after: no goals
tactic: rw [hn, mul_zero]
Theorem: RCLike.ofReal_pos
File: Mathlib/Analysis/RCLike/Basic.lean

Proof steps:
state_before: K : Type u_1
E : Type u_2
inst✝ : RCLike K
z w : K
x : ℝ
⊢ 0 < ↑x ↔ 0 < x
state_after: no goals
tactic: rw [← ofReal_zero, ofReal_lt_ofReal]
Theorem: Set.MapsTo.perm_pow
File: Mathlib/GroupTheory/Perm/Basic.lean

Proof steps:
state_before: α : Type u_1
f : Perm α
s : Set α
⊢ MapsTo (⇑f) s s → ∀ (n : ℕ), MapsTo (⇑(f ^ n)) s s
state_after: α : Type u_1
f : Perm α
s : Set α
⊢ MapsTo (⇑f) s s → ∀ (n : ℕ), MapsTo (⇑f)^[n] s s
tactic: simp_rw [Equiv.Perm.coe_pow]
state_before: α : Type u_1
f : Perm α
s : Set α
⊢ MapsTo (⇑f) s s → ∀ (n : ℕ), MapsTo (⇑f)^[n] s s
state_after: no goals
tactic: exact MapsTo.iterate
Theorem: LieModule.Weight.ext
File: Mathlib/Algebra/Lie/Weights/Basic.lean

Proof steps:
state_before: K : Type u_1
R : Type u_2
L : Type u_3
M : Type u_4
inst✝⁷ : CommRing R
inst✝⁶ : LieRing L
inst✝⁵ : LieAlgebra R L
inst✝⁴ : LieAlgebra.IsNilpotent R L
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : LieRingModule L M
inst✝ : LieModule R L M
χ₁ χ₂ : Weight R L M
h : ∀ (x : L), χ₁ x = χ₂ x
⊢ χ₁ = χ₂
state_after: case mk
K : Type u_1
R : Type u_2
L : Type u_3
M : Type u_4
inst✝⁷ : CommRing R
inst✝⁶ : LieRing L
inst✝⁵ : LieAlgebra R L
inst✝⁴ : LieAlgebra.IsNilpotent R L
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : LieRingModule L M
inst✝ : LieModule R L M
χ₂ : Weight R L M
f₁ : L → R
weightSpace_ne_bot'✝ : weightSpace M f₁ ≠ ⊥
h : ∀ (x : L), { toFun := f₁, weightSpace_ne_bot' := weightSpace_ne_bot'✝ } x = χ₂ x
⊢ { toFun := f₁, weightSpace_ne_bot' := weightSpace_ne_bot'✝ } = χ₂
tactic: cases' χ₁ with f₁ _
state_before: case mk
K : Type u_1
R : Type u_2
L : Type u_3
M : Type u_4
inst✝⁷ : CommRing R
inst✝⁶ : LieRing L
inst✝⁵ : LieAlgebra R L
inst✝⁴ : LieAlgebra.IsNilpotent R L
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : LieRingModule L M
inst✝ : LieModule R L M
χ₂ : Weight R L M
f₁ : L → R
weightSpace_ne_bot'✝ : weightSpace M f₁ ≠ ⊥
h : ∀ (x : L), { toFun := f₁, weightSpace_ne_bot' := weightSpace_ne_bot'✝ } x = χ₂ x
⊢ { toFun := f₁, weightSpace_ne_bot' := weightSpace_ne_bot'✝ } = χ₂
state_after: case mk.mk
K : Type u_1
R : Type u_2
L : Type u_3
M : Type u_4
inst✝⁷ : CommRing R
inst✝⁶ : LieRing L
inst✝⁵ : LieAlgebra R L
inst✝⁴ : LieAlgebra.IsNilpotent R L
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : LieRingModule L M
inst✝ : LieModule R L M
f₁ : L → R
weightSpace_ne_bot'✝¹ : weightSpace M f₁ ≠ ⊥
f₂ : L → R
weightSpace_ne_bot'✝ : weightSpace M f₂ ≠ ⊥
h :
  ∀ (x : L),
    { toFun := f₁, weightSpace_ne_bot' := weightSpace_ne_bot'✝¹ } x =
      { toFun := f₂, weightSpace_ne_bot' := weightSpace_ne_bot'✝ } x
⊢ { toFun := f₁, weightSpace_ne_bot' := weightSpace_ne_bot'✝¹ } =
    { toFun := f₂, weightSpace_ne_bot' := weightSpace_ne_bot'✝ }
tactic: cases' χ₂ with f₂ _
state_before: case mk.mk
K : Type u_1
R : Type u_2
L : Type u_3
M : Type u_4
inst✝⁷ : CommRing R
inst✝⁶ : LieRing L
inst✝⁵ : LieAlgebra R L
inst✝⁴ : LieAlgebra.IsNilpotent R L
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : LieRingModule L M
inst✝ : LieModule R L M
f₁ : L → R
weightSpace_ne_bot'✝¹ : weightSpace M f₁ ≠ ⊥
f₂ : L → R
weightSpace_ne_bot'✝ : weightSpace M f₂ ≠ ⊥
h :
  ∀ (x : L),
    { toFun := f₁, weightSpace_ne_bot' := weightSpace_ne_bot'✝¹ } x =
      { toFun := f₂, weightSpace_ne_bot' := weightSpace_ne_bot'✝ } x
⊢ { toFun := f₁, weightSpace_ne_bot' := weightSpace_ne_bot'✝¹ } =
    { toFun := f₂, weightSpace_ne_bot' := weightSpace_ne_bot'✝ }
state_after: no goals
tactic: aesop
Theorem: EulerSine.integral_cos_mul_cos_pow_even
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/EulerSineProd.lean

Proof steps:
state_before: z : ℂ
n✝ n : ℕ
hz : z ≠ 0
⊢ (1 - z ^ 2 / (↑n + 1) ^ 2) * ∫ (x : ℝ) in 0 ..π / 2, Complex.cos (2 * z * ↑x) * ↑(cos x) ^ (2 * n + 2) =
    (2 * ↑n + 1) / (2 * ↑n + 2) * ∫ (x : ℝ) in 0 ..π / 2, Complex.cos (2 * z * ↑x) * ↑(cos x) ^ (2 * n)
state_after: case h.e'_2.h.e'_5.h.e'_6
z : ℂ
n✝ n : ℕ
hz : z ≠ 0
⊢ z ^ 2 / (↑n + 1) ^ 2 = 4 * z ^ 2 / ↑(2 * n + 2) ^ 2

case h.e'_3.h.e'_5.h.e'_5
z : ℂ
n✝ n : ℕ
hz : z ≠ 0
⊢ 2 * ↑n + 1 = ↑(2 * n + 2) - 1

case h.e'_3.h.e'_5.h.e'_6
z : ℂ
n✝ n : ℕ
hz : z ≠ 0
⊢ 2 * ↑n + 2 = ↑(2 * n + 2)
tactic: convert integral_cos_mul_cos_pow (by omega : 2 ≤ 2 * n + 2) hz using 3
Theorem: ZMod.isSquare_neg_one_iff
File: Mathlib/NumberTheory/SumTwoSquares.lean

Proof steps:
state_before: n : ℕ
hn : Squarefree n
⊢ IsSquare (-1) ↔ ∀ {q : ℕ}, Nat.Prime q → q ∣ n → q % 4 ≠ 3
state_after: n : ℕ
hn : Squarefree n
H : ∀ {q : ℕ}, Nat.Prime q → q ∣ n → q % 4 ≠ 3
⊢ IsSquare (-1)
tactic: refine ⟨fun H q hqp hqd => hqp.mod_four_ne_three_of_dvd_isSquare_neg_one hqd H, fun H => ?_⟩
state_before: n : ℕ
hn : Squarefree n
H : ∀ {q : ℕ}, Nat.Prime q → q ∣ n → q % 4 ≠ 3
⊢ IsSquare (-1)
state_after: case h₀
hn : Squarefree 0
H : ∀ {q : ℕ}, Nat.Prime q → q ∣ 0 → q % 4 ≠ 3
⊢ IsSquare (-1)

case h₁
hn : Squarefree 1
H : ∀ {q : ℕ}, Nat.Prime q → q ∣ 1 → q % 4 ≠ 3
⊢ IsSquare (-1)

case h
p n : ℕ
hpp : Nat.Prime p
ih : Squarefree n → (∀ {q : ℕ}, Nat.Prime q → q ∣ n → q % 4 ≠ 3) → IsSquare (-1)
hn : Squarefree (p * n)
H : ∀ {q : ℕ}, Nat.Prime q → q ∣ p * n → q % 4 ≠ 3
⊢ IsSquare (-1)
tactic: induction' n using induction_on_primes with p n hpp ih
Theorem: RCLike.complexLinearIsometryEquiv_toFun
File: Mathlib/Analysis/Complex/Basic.lean

Proof steps:
state_before: z : ℂ
E : Type u_1
inst✝² : SeminormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
𝕜 : Type u_2
inst✝ : RCLike 𝕜
h : RCLike.im RCLike.I = 1
x✝¹ : ℝ
x✝ : 𝕜
⊢ { toFun := __spread✝⁻⁰.toFun, map_add' := ⋯ }.toFun (x✝¹ • x✝) =
    (RingHom.id ℝ) x✝¹ • { toFun := __spread✝⁻⁰.toFun, map_add' := ⋯ }.toFun x✝
state_after: z : ℂ
E : Type u_1
inst✝² : SeminormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
𝕜 : Type u_2
inst✝ : RCLike 𝕜
h : RCLike.im RCLike.I = 1
x✝¹ : ℝ
x✝ : 𝕜
⊢ ↑x✝¹ * ↑(RCLike.im x✝) * I = ↑x✝¹ * (↑(RCLike.im x✝) * I)
tactic: simp [RCLike.smul_re, RCLike.smul_im, ofReal_mul]
state_before: z : ℂ
E : Type u_1
inst✝² : SeminormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
𝕜 : Type u_2
inst✝ : RCLike 𝕜
h : RCLike.im RCLike.I = 1
x✝¹ : ℝ
x✝ : 𝕜
⊢ ↑x✝¹ * ↑(RCLike.im x✝) * I = ↑x✝¹ * (↑(RCLike.im x✝) * I)
state_after: no goals
tactic: ring
state_before: z : ℂ
E : Type u_1
inst✝² : SeminormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
𝕜 : Type u_2
inst✝ : RCLike 𝕜
h : RCLike.im RCLike.I = 1
x✝ : 𝕜
⊢ ‖{ toFun := __spread✝⁻⁰.toFun, map_add' := ⋯, map_smul' := ⋯, invFun := __spread✝⁻⁰.invFun, left_inv := ⋯,
          right_inv := ⋯ }
        x✝‖ =
    ‖x✝‖
state_after: z : ℂ
E : Type u_1
inst✝² : SeminormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
𝕜 : Type u_2
inst✝ : RCLike 𝕜
h : RCLike.im RCLike.I = 1
x✝ : 𝕜
⊢ normSq
      ({ toFun := __spread✝⁻⁰.toFun, map_add' := ⋯, map_smul' := ⋯, invFun := __spread✝⁻⁰.invFun, left_inv := ⋯,
          right_inv := ⋯ }
        x✝) =
    RCLike.re x✝ * RCLike.re x✝ + RCLike.im x✝ * RCLike.im x✝
tactic: rw [← sq_eq_sq (by positivity) (by positivity), ← normSq_eq_norm_sq, ← RCLike.normSq_eq_def',
      RCLike.normSq_apply]
state_before: z : ℂ
E : Type u_1
inst✝² : SeminormedAddCommGroup E
inst✝¹ : NormedSpace ℂ E
𝕜 : Type u_2
inst✝ : RCLike 𝕜
h : RCLike.im RCLike.I = 1
x✝ : 𝕜
⊢ normSq
      ({ toFun := __spread✝⁻⁰.toFun, map_add' := ⋯, map_smul' := ⋯, invFun := __spread✝⁻⁰.invFun, left_inv := ⋯,
          right_inv := ⋯ }
        x✝) =
    RCLike.re x✝ * RCLike.re x✝ + RCLike.im x✝ * RCLike.im x✝
state_after: no goals
tactic: simp [normSq_add]
Theorem: Equiv.Perm.IsCycleOn.zpow_apply_eq
File: Mathlib/GroupTheory/Perm/Cycle/Basic.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
f g : Perm α
s✝ t : Set α
a b x y : α
s : Finset α
hf : f.IsCycleOn ↑s
ha : a ∈ s
n : ℕ
⊢ (f ^ Int.negSucc n) a = a ↔ ↑s.card ∣ Int.negSucc n
state_after: ι : Type u_1
α : Type u_2
β : Type u_3
f g : Perm α
s✝ t : Set α
a b x y : α
s : Finset α
hf : f.IsCycleOn ↑s
ha : a ∈ s
n : ℕ
⊢ (f⁻¹ ^ (n + 1)) a = a ↔ ↑s.card ∣ Int.negSucc n
tactic: rw [zpow_negSucc, ← inv_pow]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
f g : Perm α
s✝ t : Set α
a b x y : α
s : Finset α
hf : f.IsCycleOn ↑s
ha : a ∈ s
n : ℕ
⊢ (f⁻¹ ^ (n + 1)) a = a ↔ ↑s.card ∣ Int.negSucc n
state_after: no goals
tactic: exact (hf.inv.pow_apply_eq ha).trans (dvd_neg.trans Int.natCast_dvd_natCast).symm
Theorem: Finset.memberSubfamily_image_erase
File: Mathlib/Combinatorics/SetFamily/Compression/Down.lean

Proof steps:
state_before: α : Type u_1
inst✝ : DecidableEq α
𝒜 ℬ : Finset (Finset α)
s : Finset α
a : α
⊢ memberSubfamily a (image (fun x => x.erase a) 𝒜) = ∅
state_after: no goals
tactic: simp [eq_empty_iff_forall_not_mem,
    (ne_of_mem_of_not_mem' (mem_insert_self _ _) (not_mem_erase _ _)).symm]
Theorem: Topology.lawsonClosed_iff_scottClosed_of_isLowerSet
File: Mathlib/Topology/Order/LawsonTopology.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝² : Preorder α
L S : TopologicalSpace α
inst✝¹ : IsLawson α
inst✝ : IsScott α
s : Set α
h : IsLowerSet s
⊢ IsClosed s ↔ IsClosed s
state_after: no goals
tactic: rw [← @isOpen_compl_iff, ← isOpen_compl_iff,
    (lawsonOpen_iff_scottOpen_of_isUpperSet' L S _ (isUpperSet_compl.mpr h))]
Theorem: trans_trichotomous_left
File: Mathlib/Order/RelClasses.lean

Proof steps:
state_before: α : Type u
β : Type v
r : α → α → Prop
s : β → β → Prop
inst✝¹ : IsTrans α r
inst✝ : IsTrichotomous α r
a b c : α
⊢ ¬r b a → r b c → r a c
state_after: α : Type u
β : Type v
r : α → α → Prop
s : β → β → Prop
inst✝¹ : IsTrans α r
inst✝ : IsTrichotomous α r
a b c : α
h₁ : ¬r b a
h₂ : r b c
⊢ r a c
tactic: intro h₁ h₂
state_before: α : Type u
β : Type v
r : α → α → Prop
s : β → β → Prop
inst✝¹ : IsTrans α r
inst✝ : IsTrichotomous α r
a b c : α
h₁ : ¬r b a
h₂ : r b c
⊢ r a c
state_after: case inl
α : Type u
β : Type v
r : α → α → Prop
s : β → β → Prop
inst✝¹ : IsTrans α r
inst✝ : IsTrichotomous α r
a b c : α
h₁ : ¬r b a
h₂ : r b c
h₃ : r a b
⊢ r a c

case inr.inl
α : Type u
β : Type v
r : α → α → Prop
s : β → β → Prop
inst✝¹ : IsTrans α r
inst✝ : IsTrichotomous α r
a c : α
h₁ : ¬r a a
h₂ : r a c
⊢ r a c

case inr.inr
α : Type u
β : Type v
r : α → α → Prop
s : β → β → Prop
inst✝¹ : IsTrans α r
inst✝ : IsTrichotomous α r
a b c : α
h₁ : ¬r b a
h₂ : r b c
h₃ : r b a
⊢ r a c
tactic: rcases trichotomous_of r a b with (h₃ | rfl | h₃)
state_before: case inl
α : Type u
β : Type v
r : α → α → Prop
s : β → β → Prop
inst✝¹ : IsTrans α r
inst✝ : IsTrichotomous α r
a b c : α
h₁ : ¬r b a
h₂ : r b c
h₃ : r a b
⊢ r a c

case inr.inl
α : Type u
β : Type v
r : α → α → Prop
s : β → β → Prop
inst✝¹ : IsTrans α r
inst✝ : IsTrichotomous α r
a c : α
h₁ : ¬r a a
h₂ : r a c
⊢ r a c

case inr.inr
α : Type u
β : Type v
r : α → α → Prop
s : β → β → Prop
inst✝¹ : IsTrans α r
inst✝ : IsTrichotomous α r
a b c : α
h₁ : ¬r b a
h₂ : r b c
h₃ : r b a
⊢ r a c
state_after: no goals
tactic: exacts [_root_.trans h₃ h₂, h₂, absurd h₃ h₁]
Theorem: BoxIntegral.HasIntegral.sub
File: Mathlib/Analysis/BoxIntegral/Basic.lean

Proof steps:
state_before: ι : Type u
E : Type v
F : Type w
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedSpace ℝ F
I J : Box ι
π : TaggedPrepartition I
inst✝ : Fintype ι
l : IntegrationParams
f g : (ι → ℝ) → E
vol : ι →ᵇᵃ[⊤] E →L[ℝ] F
y y' : F
h : HasIntegral I l f vol y
h' : HasIntegral I l g vol y'
⊢ HasIntegral I l (f - g) vol (y - y')
state_after: no goals
tactic: simpa only [sub_eq_add_neg] using h.add h'.neg
Theorem: Mathlib.Vector.zipWith_tail
File: Mathlib/Data/Vector/Zip.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
n : ℕ
f : α → β → γ
x : Vector α n
y : Vector β n
⊢ (zipWith f x y).tail = zipWith f x.tail y.tail
state_after: case x
α : Type u_1
β : Type u_2
γ : Type u_3
n : ℕ
f : α → β → γ
x : Vector α n
y : Vector β n
m✝ : Fin (n - 1)
⊢ (zipWith f x y).tail.get m✝ = (zipWith f x.tail y.tail).get m✝
tactic: ext
state_before: case x
α : Type u_1
β : Type u_2
γ : Type u_3
n : ℕ
f : α → β → γ
x : Vector α n
y : Vector β n
m✝ : Fin (n - 1)
⊢ (zipWith f x y).tail.get m✝ = (zipWith f x.tail y.tail).get m✝
state_after: no goals
tactic: simp [get_tail]
Theorem: tsum_bool
File: Mathlib/Topology/Algebra/InfiniteSum/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝¹ : CommMonoid α
inst✝ : TopologicalSpace α
f✝ g : β → α
a a₁ a₂ : α
f : Bool → α
⊢ ∏' (i : Bool), f i = f false * f true
state_after: no goals
tactic: rw [tprod_fintype, Fintype.prod_bool, mul_comm]
Theorem: Orientation.rightAngleRotation_neg_orientation
File: Mathlib/Analysis/InnerProductSpace/TwoDim.lean

Proof steps:
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
x : E
⊢ (-o).rightAngleRotation x = -o.rightAngleRotation x
state_after: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
x : E
⊢ ∀ (v : E), ⟪(-o).rightAngleRotation x, v⟫_ℝ = ⟪-o.rightAngleRotation x, v⟫_ℝ
tactic: apply ext_inner_right ℝ
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
x : E
⊢ ∀ (v : E), ⟪(-o).rightAngleRotation x, v⟫_ℝ = ⟪-o.rightAngleRotation x, v⟫_ℝ
state_after: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
x y : E
⊢ ⟪(-o).rightAngleRotation x, y⟫_ℝ = ⟪-o.rightAngleRotation x, y⟫_ℝ
tactic: intro y
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
x y : E
⊢ ⟪(-o).rightAngleRotation x, y⟫_ℝ = ⟪-o.rightAngleRotation x, y⟫_ℝ
state_after: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
x y : E
⊢ ((-o).areaForm x) y = ⟪-o.rightAngleRotation x, y⟫_ℝ
tactic: rw [inner_rightAngleRotation_left]
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
x y : E
⊢ ((-o).areaForm x) y = ⟪-o.rightAngleRotation x, y⟫_ℝ
state_after: no goals
tactic: simp