ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: RelSeries.smash_toFun
File: Mathlib/Order/RelSeries.lean

Proof steps:
state_before: α : Type u_1
r : Rel α α
β : Type u_2
s : Rel β β
p q : RelSeries r
connect : p.last = q.head
i : Fin (p.length + q.length + 1)
H : ¬↑i < p.length
⊢ p.length ≤ ↑i
state_after: no goals
tactic: rwa [not_lt] at H
state_before: α : Type u_1
r : Rel α α
β : Type u_2
s : Rel β β
p q : RelSeries r
connect : p.last = q.head
i : Fin (p.length + q.length + 1)
H : ¬↑i < p.length
⊢ ↑i < p.length + (q.length + 1)
state_after: α : Type u_1
r : Rel α α
β : Type u_2
s : Rel β β
p q : RelSeries r
connect : p.last = q.head
i : Fin (p.length + q.length + 1)
H : ¬↑i < p.length
⊢ ↑i < p.length + q.length + 1
tactic: rw [← add_assoc]
state_before: α : Type u_1
r : Rel α α
β : Type u_2
s : Rel β β
p q : RelSeries r
connect : p.last = q.head
i : Fin (p.length + q.length + 1)
H : ¬↑i < p.length
⊢ ↑i < p.length + q.length + 1
state_after: no goals
tactic: exact i.2
state_before: α : Type u_1
r : Rel α α
β : Type u_2
s : Rel β β
p q : RelSeries r
connect : p.last = q.head
i : Fin (p.length + q.length)
⊢ r ((fun i => if H : ↑i < p.length then p.toFun ⟨↑i, ⋯⟩ else q.toFun ⟨↑i - p.length, ⋯⟩) i.castSucc)
    ((fun i => if H : ↑i < p.length then p.toFun ⟨↑i, ⋯⟩ else q.toFun ⟨↑i - p.length, ⋯⟩) i.succ)
state_after: α : Type u_1
r : Rel α α
β : Type u_2
s : Rel β β
p q : RelSeries r
connect : p.last = q.head
i : Fin (p.length + q.length)
⊢ r (if H : ↑i.castSucc < p.length then p.toFun ⟨↑i.castSucc, ⋯⟩ else q.toFun ⟨↑i.castSucc - p.length, ⋯⟩)
    (if H : ↑i.succ < p.length then p.toFun ⟨↑i.succ, ⋯⟩ else q.toFun ⟨↑i.succ - p.length, ⋯⟩)
tactic: dsimp only
state_before: α : Type u_1
r : Rel α α
β : Type u_2
s : Rel β β
p q : RelSeries r
connect : p.last = q.head
i : Fin (p.length + q.length)
⊢ r (if H : ↑i.castSucc < p.length then p.toFun ⟨↑i.castSucc, ⋯⟩ else q.toFun ⟨↑i.castSucc - p.length, ⋯⟩)
    (if H : ↑i.succ < p.length then p.toFun ⟨↑i.succ, ⋯⟩ else q.toFun ⟨↑i.succ - p.length, ⋯⟩)
state_after: case pos
α : Type u_1
r : Rel α α
β : Type u_2
s : Rel β β
p q : RelSeries r
connect : p.last = q.head
i : Fin (p.length + q.length)
h₂ : ↑i + 1 < p.length
⊢ r (if H : ↑i.castSucc < p.length then p.toFun ⟨↑i.castSucc, ⋯⟩ else q.toFun ⟨↑i.castSucc - p.length, ⋯⟩)
    (if H : ↑i.succ < p.length then p.toFun ⟨↑i.succ, ⋯⟩ else q.toFun ⟨↑i.succ - p.length, ⋯⟩)

case neg
α : Type u_1
r : Rel α α
β : Type u_2
s : Rel β β
p q : RelSeries r
connect : p.last = q.head
i : Fin (p.length + q.length)
h₂ : ¬↑i + 1 < p.length
⊢ r (if H : ↑i.castSucc < p.length then p.toFun ⟨↑i.castSucc, ⋯⟩ else q.toFun ⟨↑i.castSucc - p.length, ⋯⟩)
    (if H : ↑i.succ < p.length then p.toFun ⟨↑i.succ, ⋯⟩ else q.toFun ⟨↑i.succ - p.length, ⋯⟩)
tactic: by_cases h₂ : i.1 + 1 < p.length
Theorem: CategoryTheory.IsCofiltered.of_exists_of_isCofiltered_of_fullyFaithful
File: Mathlib/CategoryTheory/Filtered/Final.lean

Proof steps:
state_before: C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
D : Type u₂
inst✝³ : Category.{v₂, u₂} D
F : C ⥤ D
inst✝² : IsCofiltered D
inst✝¹ : F.Full
inst✝ : F.Faithful
h : ∀ (d : D), ∃ c, Nonempty (F.obj c ⟶ d)
⊢ Nonempty C
state_after: C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
D : Type u₂
inst✝³ : Category.{v₂, u₂} D
F : C ⥤ D
inst✝² : IsCofiltered D
inst✝¹ : F.Full
inst✝ : F.Faithful
h : ∀ (d : D), ∃ c, Nonempty (F.obj c ⟶ d)
this : Nonempty D
⊢ Nonempty C
tactic: have : Nonempty D := IsCofiltered.nonempty
state_before: C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
D : Type u₂
inst✝³ : Category.{v₂, u₂} D
F : C ⥤ D
inst✝² : IsCofiltered D
inst✝¹ : F.Full
inst✝ : F.Faithful
h : ∀ (d : D), ∃ c, Nonempty (F.obj c ⟶ d)
this : Nonempty D
⊢ Nonempty C
state_after: case intro
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
D : Type u₂
inst✝³ : Category.{v₂, u₂} D
F : C ⥤ D
inst✝² : IsCofiltered D
inst✝¹ : F.Full
inst✝ : F.Faithful
h : ∀ (d : D), ∃ c, Nonempty (F.obj c ⟶ d)
this : Nonempty D
c : C
⊢ Nonempty C
tactic: obtain ⟨c, -⟩ := h (Classical.arbitrary D)
state_before: case intro
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
D : Type u₂
inst✝³ : Category.{v₂, u₂} D
F : C ⥤ D
inst✝² : IsCofiltered D
inst✝¹ : F.Full
inst✝ : F.Faithful
h : ∀ (d : D), ∃ c, Nonempty (F.obj c ⟶ d)
this : Nonempty D
c : C
⊢ Nonempty C
state_after: no goals
tactic: exact ⟨c⟩
Theorem: CoxeterSystem.simple_mul_simple_pow
File: Mathlib/GroupTheory/Coxeter/Basic.lean

Proof steps:
state_before: B : Type u_1
B' : Type u_2
e : B ≃ B'
W : Type u_3
H : Type u_4
inst✝¹ : Group W
inst✝ : Group H
M : CoxeterMatrix B
cs : CoxeterSystem M W
i i' : B
⊢ (cs.simple i * cs.simple i') ^ M.M i i' = 1
state_after: B : Type u_1
B' : Type u_2
e : B ≃ B'
W : Type u_3
H : Type u_4
inst✝¹ : Group W
inst✝ : Group H
M : CoxeterMatrix B
cs : CoxeterSystem M W
i i' : B
this : (FreeGroup.of i * FreeGroup.of i') ^ M.M i i' ∈ M.relationsSet
⊢ (cs.simple i * cs.simple i') ^ M.M i i' = 1
tactic: have : (FreeGroup.of i * FreeGroup.of i') ^ M i i' ∈ M.relationsSet := ⟨(i, i'), rfl⟩
state_before: B : Type u_1
B' : Type u_2
e : B ≃ B'
W : Type u_3
H : Type u_4
inst✝¹ : Group W
inst✝ : Group H
M : CoxeterMatrix B
cs : CoxeterSystem M W
i i' : B
this : (FreeGroup.of i * FreeGroup.of i') ^ M.M i i' ∈ M.relationsSet
⊢ (cs.simple i * cs.simple i') ^ M.M i i' = 1
state_after: B : Type u_1
B' : Type u_2
e : B ≃ B'
W : Type u_3
H : Type u_4
inst✝¹ : Group W
inst✝ : Group H
M : CoxeterMatrix B
cs : CoxeterSystem M W
i i' : B
this✝ : (FreeGroup.of i * FreeGroup.of i') ^ M.M i i' ∈ M.relationsSet
this : ↑((FreeGroup.of i * FreeGroup.of i') ^ M.M i i') = 1
⊢ (cs.simple i * cs.simple i') ^ M.M i i' = 1
tactic: have : (QuotientGroup.mk ((FreeGroup.of i * FreeGroup.of i') ^ M i i') : M.Group) = 1 :=
    (QuotientGroup.eq_one_iff _).mpr (Subgroup.subset_normalClosure this)
state_before: B : Type u_1
B' : Type u_2
e : B ≃ B'
W : Type u_3
H : Type u_4
inst✝¹ : Group W
inst✝ : Group H
M : CoxeterMatrix B
cs : CoxeterSystem M W
i i' : B
this✝ : (FreeGroup.of i * FreeGroup.of i') ^ M.M i i' ∈ M.relationsSet
this : ↑((FreeGroup.of i * FreeGroup.of i') ^ M.M i i') = 1
⊢ (cs.simple i * cs.simple i') ^ M.M i i' = 1
state_after: B : Type u_1
B' : Type u_2
e : B ≃ B'
W : Type u_3
H : Type u_4
inst✝¹ : Group W
inst✝ : Group H
M : CoxeterMatrix B
cs : CoxeterSystem M W
i i' : B
this✝ : (FreeGroup.of i * FreeGroup.of i') ^ M.M i i' ∈ M.relationsSet
this : ↑((FreeGroup.of i * FreeGroup.of i') ^ M.M i i') = 1
⊢ (cs.mulEquiv.symm (PresentedGroup.of i) * cs.mulEquiv.symm (PresentedGroup.of i')) ^ M.M i i' = 1
tactic: unfold simple
state_before: B : Type u_1
B' : Type u_2
e : B ≃ B'
W : Type u_3
H : Type u_4
inst✝¹ : Group W
inst✝ : Group H
M : CoxeterMatrix B
cs : CoxeterSystem M W
i i' : B
this✝ : (FreeGroup.of i * FreeGroup.of i') ^ M.M i i' ∈ M.relationsSet
this : ↑((FreeGroup.of i * FreeGroup.of i') ^ M.M i i') = 1
⊢ (cs.mulEquiv.symm (PresentedGroup.of i) * cs.mulEquiv.symm (PresentedGroup.of i')) ^ M.M i i' = 1
state_after: no goals
tactic: rw [← map_mul, ← map_pow, PresentedGroup.of, PresentedGroup.of,
      ← QuotientGroup.mk_mul, ← QuotientGroup.mk_pow, this, map_one]
Theorem: FractionalIdeal.inv_le_dual
File: Mathlib/RingTheory/DedekindDomain/Different.lean

Proof steps:
state_before: A : Type u_1
K : Type u_2
L : Type u
B : Type u_3
inst✝¹⁸ : CommRing A
inst✝¹⁷ : Field K
inst✝¹⁶ : CommRing B
inst✝¹⁵ : Field L
inst✝¹⁴ : Algebra A K
inst✝¹³ : Algebra B L
inst✝¹² : Algebra A B
inst✝¹¹ : Algebra K L
inst✝¹⁰ : Algebra A L
inst✝⁹ : IsScalarTower A K L
inst✝⁸ : IsScalarTower A B L
inst✝⁷ : IsDomain A
inst✝⁶ : IsFractionRing A K
inst✝⁵ : IsIntegralClosure B A L
inst✝⁴ : IsFractionRing B L
inst✝³ : FiniteDimensional K L
inst✝² : Algebra.IsSeparable K L
inst✝¹ : IsIntegrallyClosed A
inst✝ : IsDedekindDomain B
I J : FractionalIdeal B⁰ L
hI✝ : I ≠ 0
hJ : J ≠ 0
hI : I = 0
⊢ I⁻¹ ≤ dual A K I
state_after: no goals
tactic: simp [hI]
Theorem: Set.iUnion_image_right
File: Mathlib/Data/Set/Lattice.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
f : α → β → γ
s : Set α
t : Set β
⊢ ⋃ b ∈ t, (fun x => f x b) '' s = image2 f s t
state_after: no goals
tactic: rw [image2_swap, iUnion_image_left]
Theorem: SetTheory.PGame.le_def
File: Mathlib/SetTheory/Game/PGame.lean

Proof steps:
state_before: xl xr : Type u
x y : PGame
⊢ x ≤ y ↔
    (∀ (i : x.LeftMoves), (∃ i', x.moveLeft i ≤ y.moveLeft i') ∨ ∃ j, (x.moveLeft i).moveRight j ≤ y) ∧
      ∀ (j : y.RightMoves), (∃ i, x ≤ (y.moveRight j).moveLeft i) ∨ ∃ j', x.moveRight j' ≤ y.moveRight j
state_after: xl xr : Type u
x y : PGame
⊢ ((∀ (i : x.LeftMoves), x.moveLeft i ⧏ y) ∧ ∀ (j : y.RightMoves), x ⧏ y.moveRight j) ↔
    (∀ (i : x.LeftMoves), (∃ i', x.moveLeft i ≤ y.moveLeft i') ∨ ∃ j, (x.moveLeft i).moveRight j ≤ y) ∧
      ∀ (j : y.RightMoves), (∃ i, x ≤ (y.moveRight j).moveLeft i) ∨ ∃ j', x.moveRight j' ≤ y.moveRight j
tactic: rw [le_iff_forall_lf]
state_before: xl xr : Type u
x y : PGame
⊢ ((∀ (i : x.LeftMoves), x.moveLeft i ⧏ y) ∧ ∀ (j : y.RightMoves), x ⧏ y.moveRight j) ↔
    (∀ (i : x.LeftMoves), (∃ i', x.moveLeft i ≤ y.moveLeft i') ∨ ∃ j, (x.moveLeft i).moveRight j ≤ y) ∧
      ∀ (j : y.RightMoves), (∃ i, x ≤ (y.moveRight j).moveLeft i) ∨ ∃ j', x.moveRight j' ≤ y.moveRight j
state_after: no goals
tactic: conv =>
    lhs
    simp only [lf_iff_exists_le]
Theorem: ediam_mul_le
File: Mathlib/Analysis/Normed/Group/Pointwise.lean

Proof steps:
state_before: E : Type u_1
inst✝ : SeminormedCommGroup E
ε δ : ℝ
s t : Set E
x✝ y✝ : E
x y : Set E
⊢ ↑1 * EMetric.diam x + ↑1 * EMetric.diam y = EMetric.diam x + EMetric.diam y
state_after: no goals
tactic: simp only [ENNReal.coe_one, one_mul]
Theorem: Action.rightUnitor_hom_hom
File: Mathlib/RepresentationTheory/Action/Monoidal.lean

Proof steps:
state_before: V : Type (u + 1)
inst✝¹ : LargeCategory V
G : MonCat
inst✝ : MonoidalCategory V
X : Action V G
⊢ (ρ_ X).hom.hom = (ρ_ X.V).hom
state_after: V : Type (u + 1)
inst✝¹ : LargeCategory V
G : MonCat
inst✝ : MonoidalCategory V
X : Action V G
⊢ ((𝟙 X.V ⊗ 𝟙 (𝟙_ V)) ≫ (ρ_ X.V).hom) ≫ 𝟙 X.V = (ρ_ X.V).hom
tactic: dsimp
state_before: V : Type (u + 1)
inst✝¹ : LargeCategory V
G : MonCat
inst✝ : MonoidalCategory V
X : Action V G
⊢ ((𝟙 X.V ⊗ 𝟙 (𝟙_ V)) ≫ (ρ_ X.V).hom) ≫ 𝟙 X.V = (ρ_ X.V).hom
state_after: no goals
tactic: simp
Theorem: Polynomial.base_mul_mem_lifts
File: Mathlib/Algebra/Polynomial/Lifts.lean

Proof steps:
state_before: R : Type u
inst✝¹ : Semiring R
S : Type v
inst✝ : Semiring S
f : R →+* S
p : S[X]
r : R
hp : p ∈ lifts f
⊢ C (f r) * p ∈ lifts f
state_after: R : Type u
inst✝¹ : Semiring R
S : Type v
inst✝ : Semiring S
f : R →+* S
p : S[X]
r : R
hp : ∃ x, (mapRingHom f) x = p
⊢ ∃ x, (mapRingHom f) x = C (f r) * p
tactic: simp only [lifts, RingHom.mem_rangeS] at hp ⊢
state_before: R : Type u
inst✝¹ : Semiring R
S : Type v
inst✝ : Semiring S
f : R →+* S
p : S[X]
r : R
hp : ∃ x, (mapRingHom f) x = p
⊢ ∃ x, (mapRingHom f) x = C (f r) * p
state_after: case intro
R : Type u
inst✝¹ : Semiring R
S : Type v
inst✝ : Semiring S
f : R →+* S
r : R
p₁ : R[X]
⊢ ∃ x, (mapRingHom f) x = C (f r) * (mapRingHom f) p₁
tactic: obtain ⟨p₁, rfl⟩ := hp
state_before: case intro
R : Type u
inst✝¹ : Semiring R
S : Type v
inst✝ : Semiring S
f : R →+* S
r : R
p₁ : R[X]
⊢ ∃ x, (mapRingHom f) x = C (f r) * (mapRingHom f) p₁
state_after: case h
R : Type u
inst✝¹ : Semiring R
S : Type v
inst✝ : Semiring S
f : R →+* S
r : R
p₁ : R[X]
⊢ (mapRingHom f) (C r * p₁) = C (f r) * (mapRingHom f) p₁
tactic: use C r * p₁
state_before: case h
R : Type u
inst✝¹ : Semiring R
S : Type v
inst✝ : Semiring S
f : R →+* S
r : R
p₁ : R[X]
⊢ (mapRingHom f) (C r * p₁) = C (f r) * (mapRingHom f) p₁
state_after: no goals
tactic: simp only [coe_mapRingHom, map_C, map_mul]
Theorem: eq_of_isNilpotent_sub_of_isIdempotentElem_of_commute
File: Mathlib/RingTheory/Idempotents.lean

Proof steps:
state_before: R : Type u_1
S : Type u_2
inst✝² : Ring R
inst✝¹ : Ring S
f : R →+* S
I : Type u_3
e : I → R
he✝ : OrthogonalIdempotents e
inst✝ : Fintype I
he : CompleteOrthogonalIdempotents e
e₁ e₂ : R
he₁ : IsIdempotentElem e₁
he₂ : IsIdempotentElem e₂
H : IsNilpotent (e₁ - e₂)
H' : Commute e₁ e₂
⊢ e₁ = e₂
state_after: R : Type u_1
S : Type u_2
inst✝² : Ring R
inst✝¹ : Ring S
f : R →+* S
I : Type u_3
e : I → R
he✝ : OrthogonalIdempotents e
inst✝ : Fintype I
he : CompleteOrthogonalIdempotents e
e₁ e₂ : R
he₁ : IsIdempotentElem e₁
he₂ : IsIdempotentElem e₂
H : IsNilpotent (e₁ - e₂)
H' : Commute e₁ e₂
this : (e₁ - e₂) ^ 3 = e₁ - e₂
⊢ e₁ = e₂
tactic: have : (e₁ - e₂) ^ 3 = (e₁ - e₂) := by
    simp only [pow_succ, pow_zero, mul_sub, one_mul, sub_mul, he₁.eq, he₂.eq,
      H'.eq, mul_assoc]
    simp only [← mul_assoc, he₁.eq, he₂.eq]
    abel
state_before: R : Type u_1
S : Type u_2
inst✝² : Ring R
inst✝¹ : Ring S
f : R →+* S
I : Type u_3
e : I → R
he✝ : OrthogonalIdempotents e
inst✝ : Fintype I
he : CompleteOrthogonalIdempotents e
e₁ e₂ : R
he₁ : IsIdempotentElem e₁
he₂ : IsIdempotentElem e₂
H : IsNilpotent (e₁ - e₂)
H' : Commute e₁ e₂
this : (e₁ - e₂) ^ 3 = e₁ - e₂
⊢ e₁ = e₂
state_after: case intro
R : Type u_1
S : Type u_2
inst✝² : Ring R
inst✝¹ : Ring S
f : R →+* S
I : Type u_3
e : I → R
he✝ : OrthogonalIdempotents e
inst✝ : Fintype I
he : CompleteOrthogonalIdempotents e
e₁ e₂ : R
he₁ : IsIdempotentElem e₁
he₂ : IsIdempotentElem e₂
H' : Commute e₁ e₂
this : (e₁ - e₂) ^ 3 = e₁ - e₂
n : ℕ
hn : (e₁ - e₂) ^ n = 0
⊢ e₁ = e₂
tactic: obtain ⟨n, hn⟩ := H
state_before: case intro
R : Type u_1
S : Type u_2
inst✝² : Ring R
inst✝¹ : Ring S
f : R →+* S
I : Type u_3
e : I → R
he✝ : OrthogonalIdempotents e
inst✝ : Fintype I
he : CompleteOrthogonalIdempotents e
e₁ e₂ : R
he₁ : IsIdempotentElem e₁
he₂ : IsIdempotentElem e₂
H' : Commute e₁ e₂
this : (e₁ - e₂) ^ 3 = e₁ - e₂
n : ℕ
hn : (e₁ - e₂) ^ n = 0
⊢ e₁ = e₂
state_after: case intro
R : Type u_1
S : Type u_2
inst✝² : Ring R
inst✝¹ : Ring S
f : R →+* S
I : Type u_3
e : I → R
he✝ : OrthogonalIdempotents e
inst✝ : Fintype I
he : CompleteOrthogonalIdempotents e
e₁ e₂ : R
he₁ : IsIdempotentElem e₁
he₂ : IsIdempotentElem e₂
H' : Commute e₁ e₂
this✝ : (e₁ - e₂) ^ 3 = e₁ - e₂
n : ℕ
hn : (e₁ - e₂) ^ n = 0
this : (e₁ - e₂) ^ (2 * n + 1) = e₁ - e₂
⊢ e₁ = e₂
tactic: have : (e₁ - e₂) ^ (2 * n + 1) = (e₁ - e₂) := by
    clear hn; induction n <;> simp [mul_add, add_assoc, pow_add _ (2 * _) 3, this, ← pow_succ, *]
state_before: case intro
R : Type u_1
S : Type u_2
inst✝² : Ring R
inst✝¹ : Ring S
f : R →+* S
I : Type u_3
e : I → R
he✝ : OrthogonalIdempotents e
inst✝ : Fintype I
he : CompleteOrthogonalIdempotents e
e₁ e₂ : R
he₁ : IsIdempotentElem e₁
he₂ : IsIdempotentElem e₂
H' : Commute e₁ e₂
this✝ : (e₁ - e₂) ^ 3 = e₁ - e₂
n : ℕ
hn : (e₁ - e₂) ^ n = 0
this : (e₁ - e₂) ^ (2 * n + 1) = e₁ - e₂
⊢ e₁ = e₂
state_after: no goals
tactic: rwa [pow_succ, two_mul, pow_add, hn, zero_mul, zero_mul, eq_comm, sub_eq_zero] at this
Theorem: Orientation.eq_zero_or_eq_zero_of_kahler_eq_zero
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 y : E
hx : (o.kahler x) y = 0
⊢ x = 0 ∨ y = 0
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
hx : (o.kahler x) y = 0
this : ‖x‖ * ‖y‖ = 0
⊢ x = 0 ∨ y = 0
tactic: have : ‖x‖ * ‖y‖ = 0 := by simpa [hx] using (o.norm_kahler x y).symm
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
hx : (o.kahler x) y = 0
this : ‖x‖ * ‖y‖ = 0
⊢ x = 0 ∨ y = 0
state_after: case inl
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
x y : E
hx : (o.kahler x) y = 0
this : ‖x‖ * ‖y‖ = 0
h : ‖x‖ = 0
⊢ x = 0 ∨ y = 0

case inr
E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
x y : E
hx : (o.kahler x) y = 0
this : ‖x‖ * ‖y‖ = 0
h : ‖y‖ = 0
⊢ x = 0 ∨ y = 0
tactic: cases' eq_zero_or_eq_zero_of_mul_eq_zero this with h h
Theorem: Ordinal.one_le_iff_ne_zero
File: Mathlib/SetTheory/Ordinal/Basic.lean

Proof steps:
state_before: α : Type u
β : Type u_1
γ : Type u_2
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
o : Ordinal.{u_3}
⊢ 1 ≤ o ↔ o ≠ 0
state_after: no goals
tactic: rw [one_le_iff_pos, Ordinal.pos_iff_ne_zero]
Theorem: MeasureTheory.Measure.InnerRegularWRT.smul
File: Mathlib/MeasureTheory/Measure/Regular.lean

Proof steps:
state_before: α : Type u_1
m : MeasurableSpace α
μ : Measure α
p q : Set α → Prop
U : Set α
ε : ℝ≥0∞
H : μ.InnerRegularWRT p q
c : ℝ≥0∞
⊢ (c • μ).InnerRegularWRT p q
state_after: α : Type u_1
m : MeasurableSpace α
μ : Measure α
p q : Set α → Prop
U✝ : Set α
ε : ℝ≥0∞
H : μ.InnerRegularWRT p q
c : ℝ≥0∞
U : Set α
hU : q U
r : ℝ≥0∞
hr : r < (c • μ) U
⊢ ∃ K ⊆ U, p K ∧ r < (c • μ) K
tactic: intro U hU r hr
state_before: α : Type u_1
m : MeasurableSpace α
μ : Measure α
p q : Set α → Prop
U✝ : Set α
ε : ℝ≥0∞
H : μ.InnerRegularWRT p q
c : ℝ≥0∞
U : Set α
hU : q U
r : ℝ≥0∞
hr : r < (c • μ) U
⊢ ∃ K ⊆ U, p K ∧ r < (c • μ) K
state_after: α : Type u_1
m : MeasurableSpace α
μ : Measure α
p q : Set α → Prop
U✝ : Set α
ε : ℝ≥0∞
H : μ.InnerRegularWRT p q
c : ℝ≥0∞
U : Set α
hU : q U
r : ℝ≥0∞
hr : r < c * ⨆ K, ⨆ (_ : K ⊆ U), ⨆ (_ : p K), μ K
⊢ ∃ K ⊆ U, p K ∧ r < (c • μ) K
tactic: rw [smul_apply, H.measure_eq_iSup hU, smul_eq_mul] at hr
state_before: α : Type u_1
m : MeasurableSpace α
μ : Measure α
p q : Set α → Prop
U✝ : Set α
ε : ℝ≥0∞
H : μ.InnerRegularWRT p q
c : ℝ≥0∞
U : Set α
hU : q U
r : ℝ≥0∞
hr : r < c * ⨆ K, ⨆ (_ : K ⊆ U), ⨆ (_ : p K), μ K
⊢ ∃ K ⊆ U, p K ∧ r < (c • μ) K
state_after: no goals
tactic: simpa only [ENNReal.mul_iSup, lt_iSup_iff, exists_prop] using hr
Theorem: MeasureTheory.hausdorffMeasure_segment
File: Mathlib/MeasureTheory/Measure/Hausdorff.lean

Proof steps:
state_before: ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝⁹ : EMetricSpace X
inst✝⁸ : EMetricSpace Y
inst✝⁷ : MeasurableSpace X
inst✝⁶ : BorelSpace X
inst✝⁵ : MeasurableSpace Y
inst✝⁴ : BorelSpace Y
𝕜 : Type u_4
E✝ : Type u_5
P : Type u_6
E : Type u_7
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : MeasurableSpace E
inst✝ : BorelSpace E
x y : E
⊢ μH[1] (segment ℝ x y) = edist x y
state_after: no goals
tactic: rw [← affineSegment_eq_segment, hausdorffMeasure_affineSegment]
Theorem: ContinuousLinearMap.map_sub
File: Mathlib/Topology/Algebra/Module/Basic.lean

Proof steps:
state_before: R : Type u_1
inst✝¹³ : Ring R
R₂ : Type u_2
inst✝¹² : Ring R₂
R₃ : Type u_3
inst✝¹¹ : Ring R₃
M : Type u_4
inst✝¹⁰ : TopologicalSpace M
inst✝⁹ : AddCommGroup M
M₂ : Type u_5
inst✝⁸ : TopologicalSpace M₂
inst✝⁷ : AddCommGroup M₂
M₃ : Type u_6
inst✝⁶ : TopologicalSpace M₃
inst✝⁵ : AddCommGroup M₃
M₄ : Type u_7
inst✝⁴ : TopologicalSpace M₄
inst✝³ : AddCommGroup M₄
inst✝² : Module R M
inst✝¹ : Module R₂ M₂
inst✝ : Module R₃ M₃
σ₁₂ : R →+* R₂
σ₂₃ : R₂ →+* R₃
σ₁₃ : R →+* R₃
f : M →SL[σ₁₂] M₂
x y : M
⊢ f (x - y) = f x - f y
state_after: no goals
tactic: exact map_sub f x y
Theorem: ModuleCat.smulNatTrans_apply_app
File: Mathlib/Algebra/Category/ModuleCat/Basic.lean

Proof steps:
state_before: R : Type u
inst✝ : Ring R
X₁ X₂ : Type v
M N : ModuleCat R
⊢ ((fun r => { app := fun M => M.smul r, naturality := ⋯ }) 1).app = NatTrans.app 1
state_after: no goals
tactic: aesop_cat
state_before: R : Type u
inst✝ : Ring R
X₁ X₂ : Type v
M N : ModuleCat R
⊢ ((↑{ toFun := fun r => { app := fun M => M.smul r, naturality := ⋯ }, map_one' := ⋯, map_mul' := ⋯ }).toFun 0).app =
    NatTrans.app 0
state_after: no goals
tactic: aesop_cat
state_before: R : Type u
inst✝ : Ring R
X₁ X₂ : Type v
M N : ModuleCat R
x✝¹ x✝ : R
⊢ ({ toFun := fun r => { app := fun M => M.smul r, naturality := ⋯ }, map_one' := ⋯ }.toFun (x✝¹ * x✝)).app =
    ({ toFun := fun r => { app := fun M => M.smul r, naturality := ⋯ }, map_one' := ⋯ }.toFun x✝¹ *
        { toFun := fun r => { app := fun M => M.smul r, naturality := ⋯ }, map_one' := ⋯ }.toFun x✝).app
state_after: no goals
tactic: aesop_cat
state_before: R : Type u
inst✝ : Ring R
X₁ X₂ : Type v
M N : ModuleCat R
x✝¹ x✝ : R
⊢ ((↑{ toFun := fun r => { app := fun M => M.smul r, naturality := ⋯ }, map_one' := ⋯, map_mul' := ⋯ }).toFun
        (x✝¹ + x✝)).app =
    ((↑{ toFun := fun r => { app := fun M => M.smul r, naturality := ⋯ }, map_one' := ⋯, map_mul' := ⋯ }).toFun x✝¹ +
        (↑{ toFun := fun r => { app := fun M => M.smul r, naturality := ⋯ }, map_one' := ⋯, map_mul' := ⋯ }).toFun
          x✝).app
state_after: no goals
tactic: aesop_cat
Theorem: NNReal.le_rpow_inv_iff
File: Mathlib/Analysis/SpecialFunctions/Pow/NNReal.lean

Proof steps:
state_before: w x✝ y✝ z✝ : ℝ
x y : ℝ≥0
z : ℝ
hz : 0 < z
⊢ x ≤ y ^ z⁻¹ ↔ x ^ z ≤ y
state_after: no goals
tactic: rw [← rpow_le_rpow_iff hz, ← one_div, rpow_self_rpow_inv hz.ne']
Theorem: RelEmbedding.image_minimals_eq
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
f : r ↪r s
x : Set α
⊢ ⇑f '' minimals r x = minimals s (⇑f '' x)
state_after: α : Type u_1
β : Type u_2
r✝ r₁ r₂ : α → α → Prop
s✝ t : Set α
a b x✝ : α
f✝ : α → β
r : α → α → Prop
s : β → β → Prop
f : r ↪r s
x : Set α
⊢ ∀ ⦃a a' : α⦄, a ∈ x → a' ∈ x → (r a a' ↔ s (f a) (f a'))
tactic: rw [image_minimals_of_rel_iff_rel]
state_before: α : Type u_1
β : Type u_2
r✝ r₁ r₂ : α → α → Prop
s✝ t : Set α
a b x✝ : α
f✝ : α → β
r : α → α → Prop
s : β → β → Prop
f : r ↪r s
x : Set α
⊢ ∀ ⦃a a' : α⦄, a ∈ x → a' ∈ x → (r a a' ↔ s (f a) (f a'))
state_after: no goals
tactic: simp [f.map_rel_iff]
Theorem: zsmul_mono_left
File: Mathlib/Algebra/Order/Group/Basic.lean

Proof steps:
state_before: α : Type u_1
M : Type u_2
R : Type u_3
inst✝ : OrderedCommGroup α
m✝ n✝ : ℤ
a b : α
ha : 1 ≤ a
m n : ℤ
h : m ≤ n
⊢ a ^ m * a ^ (n - m) = a ^ n
state_after: no goals
tactic: simp [← zpow_add, m.add_comm]
Theorem: map_wittPolynomial
File: Mathlib/RingTheory/WittVector/WittPolynomial.lean

Proof steps:
state_before: p : ℕ
R : Type u_1
inst✝² : CommRing R
inst✝¹ : DecidableEq R
S : Type u_2
inst✝ : CommRing S
f : R →+* S
n : ℕ
⊢ (map f) (W_ R n) = W_ S n
state_after: p : ℕ
R : Type u_1
inst✝² : CommRing R
inst✝¹ : DecidableEq R
S : Type u_2
inst✝ : CommRing S
f : R →+* S
n : ℕ
⊢ ∑ x ∈ range (n + 1), (map f) ((monomial (single x (p ^ (n - x)))) (↑p ^ x)) =
    ∑ i ∈ range (n + 1), (monomial (single i (p ^ (n - i)))) (↑p ^ i)
tactic: rw [wittPolynomial, map_sum, wittPolynomial]
state_before: p : ℕ
R : Type u_1
inst✝² : CommRing R
inst✝¹ : DecidableEq R
S : Type u_2
inst✝ : CommRing S
f : R →+* S
n : ℕ
⊢ ∑ x ∈ range (n + 1), (map f) ((monomial (single x (p ^ (n - x)))) (↑p ^ x)) =
    ∑ i ∈ range (n + 1), (monomial (single i (p ^ (n - i)))) (↑p ^ i)
state_after: p : ℕ
R : Type u_1
inst✝² : CommRing R
inst✝¹ : DecidableEq R
S : Type u_2
inst✝ : CommRing S
f : R →+* S
n i : ℕ
x✝ : i ∈ range (n + 1)
⊢ (map f) ((monomial (single i (p ^ (n - i)))) (↑p ^ i)) = (monomial (single i (p ^ (n - i)))) (↑p ^ i)
tactic: refine sum_congr rfl fun i _ => ?_
state_before: p : ℕ
R : Type u_1
inst✝² : CommRing R
inst✝¹ : DecidableEq R
S : Type u_2
inst✝ : CommRing S
f : R →+* S
n i : ℕ
x✝ : i ∈ range (n + 1)
⊢ (map f) ((monomial (single i (p ^ (n - i)))) (↑p ^ i)) = (monomial (single i (p ^ (n - i)))) (↑p ^ i)
state_after: no goals
tactic: rw [map_monomial, RingHom.map_pow, map_natCast]
Theorem: NonUnitalSubring.unitization_range
File: Mathlib/Algebra/Algebra/Subalgebra/Unitization.lean

Proof steps:
state_before: R : Type u_1
S : Type u_2
inst✝¹ : Ring R
inst✝ : SetLike S R
hSR : NonUnitalSubringClass S R
s : S
⊢ (unitization s).range = subalgebraOfSubring (Subring.closure ↑s)
state_after: R : Type u_1
S : Type u_2
inst✝¹ : Ring R
inst✝ : SetLike S R
hSR : NonUnitalSubringClass S R
s : S
this : SMulMemClass S ℤ R
⊢ (unitization s).range = subalgebraOfSubring (Subring.closure ↑s)
tactic: have := AddSubgroupClass.zsmulMemClass (S := S)
state_before: R : Type u_1
S : Type u_2
inst✝¹ : Ring R
inst✝ : SetLike S R
hSR : NonUnitalSubringClass S R
s : S
this : SMulMemClass S ℤ R
⊢ (unitization s).range = subalgebraOfSubring (Subring.closure ↑s)
state_after: no goals
tactic: rw [unitization, NonUnitalSubalgebra.unitization_range (hSRA := this), Algebra.adjoin_int]