ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: isLittleO_pow_exp_pos_mul_atTop
File: Mathlib/Analysis/SpecialFunctions/Pow/Asymptotics.lean

Proof steps:
state_before: k : ℕ
b : ℝ
hb : 0 < b
⊢ (fun x => x ^ k) =o[atTop] fun x => rexp (b * x)
state_after: no goals
tactic: simpa using isLittleO_zpow_exp_pos_mul_atTop k hb
Theorem: Turing.proj_map_nth
File: Mathlib/Computability/TuringMachine.lean

Proof steps:
state_before: ι : Type u_1
Γ : ι → Type u_2
inst✝ : (i : ι) → Inhabited (Γ i)
i : ι
L : ListBlank ((i : ι) → Γ i)
n : ℕ
⊢ (ListBlank.map (proj i) L).nth n = L.nth n i
state_after: ι : Type u_1
Γ : ι → Type u_2
inst✝ : (i : ι) → Inhabited (Γ i)
i : ι
L : ListBlank ((i : ι) → Γ i)
n : ℕ
⊢ (proj i).f (L.nth n) = L.nth n i
tactic: rw [ListBlank.nth_map]
state_before: ι : Type u_1
Γ : ι → Type u_2
inst✝ : (i : ι) → Inhabited (Γ i)
i : ι
L : ListBlank ((i : ι) → Γ i)
n : ℕ
⊢ (proj i).f (L.nth n) = L.nth n i
state_after: no goals
tactic: rfl
Theorem: IsSepClosed.exists_eval₂_eq_zero
File: Mathlib/FieldTheory/IsSepClosed.lean

Proof steps:
state_before: k : Type u
inst✝² : Field k
K : Type v
inst✝¹ : Field K
inst✝ : IsSepClosed K
f : k →+* K
p : k[X]
hp : p.degree ≠ 0
hsep : p.Separable
⊢ (map f p).degree ≠ 0
state_after: no goals
tactic: rwa [degree_map_eq_of_injective f.injective]
state_before: k : Type u
inst✝² : Field k
K : Type v
inst✝¹ : Field K
inst✝ : IsSepClosed K
f : k →+* K
p : k[X]
hp : p.degree ≠ 0
hsep : p.Separable
x : K
hx : (map f p).IsRoot x
⊢ eval₂ f x p = 0
state_after: no goals
tactic: rwa [eval₂_eq_eval_map, ← IsRoot]
Theorem: List.dropLast_append_getLast
File: Mathlib/Data/List/Basic.lean

Proof steps:
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
a b : α
l : List α
h : a :: b :: l ≠ []
⊢ (a :: b :: l).dropLast ++ [(a :: b :: l).getLast h] = a :: b :: l
state_after: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
a b : α
l : List α
h : a :: b :: l ≠ []
⊢ a :: ((b :: l).dropLast ++ [(b :: l).getLast ⋯]) = a :: b :: l
tactic: rw [dropLast_cons₂, cons_append, getLast_cons (cons_ne_nil _ _)]
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
a b : α
l : List α
h : a :: b :: l ≠ []
⊢ a :: ((b :: l).dropLast ++ [(b :: l).getLast ⋯]) = a :: b :: l
state_after: case e_tail
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
a b : α
l : List α
h : a :: b :: l ≠ []
⊢ (b :: l).dropLast ++ [(b :: l).getLast ⋯] = b :: l
tactic: congr
state_before: case e_tail
ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
a b : α
l : List α
h : a :: b :: l ≠ []
⊢ (b :: l).dropLast ++ [(b :: l).getLast ⋯] = b :: l
state_after: no goals
tactic: exact dropLast_append_getLast (cons_ne_nil b l)
Theorem: NumberField.mixedEmbedding.normAtPlace_apply_isReal
File: Mathlib/NumberTheory/NumberField/CanonicalEmbedding/Basic.lean

Proof steps:
state_before: K : Type u_1
inst✝ : Field K
w : InfinitePlace K
hw : w.IsReal
x : ({ w // w.IsReal } → ℝ) × ({ w // w.IsComplex } → ℂ)
⊢ (normAtPlace w) x = ‖x.1 ⟨w, hw⟩‖
state_after: no goals
tactic: rw [normAtPlace, MonoidWithZeroHom.coe_mk, ZeroHom.coe_mk, dif_pos]
Theorem: Bool.not_ne_self
File: Mathlib/Data/Bool/Basic.lean

Proof steps:
state_before: ⊢ ∀ (b : Bool), (!b) ≠ b
state_after: no goals
tactic: decide
Theorem: SimpleGraph.Walk.end_mem_tail_support_of_ne
File: Mathlib/Combinatorics/SimpleGraph/Walk.lean

Proof steps:
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v : V
h : u ≠ v
p : G.Walk u v
⊢ v ∈ p.support.tail
state_after: case intro.intro.intro
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v : V
h : u ≠ v
w✝² : V
w✝¹ : G.Adj u w✝²
w✝ : G.Walk w✝² v
⊢ v ∈ (cons w✝¹ w✝).support.tail
tactic: obtain ⟨_, _, _, rfl⟩ := exists_eq_cons_of_ne h p
state_before: case intro.intro.intro
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v : V
h : u ≠ v
w✝² : V
w✝¹ : G.Adj u w✝²
w✝ : G.Walk w✝² v
⊢ v ∈ (cons w✝¹ w✝).support.tail
state_after: no goals
tactic: simp
Theorem: Set.image_div_const_uIcc
File: Mathlib/Data/Set/Pointwise/Interval.lean

Proof steps:
state_before: α : Type u_1
inst✝ : LinearOrderedField α
a✝ a b c : α
⊢ (fun x => x / a) '' [[b, c]] = [[b / a, c / a]]
state_after: no goals
tactic: simp only [div_eq_mul_inv, image_mul_const_uIcc]
Theorem: stdSimplexHomeomorphUnitInterval_apply_coe
File: Mathlib/Analysis/Convex/Topology.lean

Proof steps:
state_before: ι : Type u_1
𝕜 : Type u_2
E : Type u_3
inst✝ : Fintype ι
⊢ Continuous (stdSimplexEquivIcc ℝ).invFun
state_after: case h
ι : Type u_1
𝕜 : Type u_2
E : Type u_3
inst✝ : Fintype ι
⊢ Continuous fun x => ![↑x, 1 - ↑x]
tactic: apply Continuous.subtype_mk
state_before: case h
ι : Type u_1
𝕜 : Type u_2
E : Type u_3
inst✝ : Fintype ι
⊢ Continuous fun x => ![↑x, 1 - ↑x]
state_after: no goals
tactic: exact (continuous_pi <| Fin.forall_fin_two.2
      ⟨continuous_subtype_val, continuous_const.sub continuous_subtype_val⟩)
Theorem: CategoryTheory.MonoidalCategory.fullBraidedSubcategory.map_ε
File: Mathlib/CategoryTheory/Monoidal/Subcategory.lean

Proof steps:
state_before: C : Type u
inst✝⁴ : Category.{v, u} C
inst✝³ : MonoidalCategory C
P : C → Prop
inst✝² : MonoidalPredicate P
P' : C → Prop
inst✝¹ : MonoidalPredicate P'
inst✝ : BraidedCategory C
h : ∀ ⦃X : C⦄, P X → P' X
X Y : FullSubcategory P
⊢ (fullMonoidalSubcategory.map h).map (β_ X Y).hom =
    inv ((fullMonoidalSubcategory.map h).μ X Y) ≫
      (β_ ((fullMonoidalSubcategory.map h).obj X) ((fullMonoidalSubcategory.map h).obj Y)).hom ≫
        (fullMonoidalSubcategory.map h).μ Y X
state_after: C : Type u
inst✝⁴ : Category.{v, u} C
inst✝³ : MonoidalCategory C
P : C → Prop
inst✝² : MonoidalPredicate P
P' : C → Prop
inst✝¹ : MonoidalPredicate P'
inst✝ : BraidedCategory C
h : ∀ ⦃X : C⦄, P X → P' X
X Y : FullSubcategory P
⊢ (fullMonoidalSubcategory.map h).μ X Y ≫ (fullMonoidalSubcategory.map h).map (β_ X Y).hom =
    (β_ ((fullMonoidalSubcategory.map h).obj X) ((fullMonoidalSubcategory.map h).obj Y)).hom ≫
      (fullMonoidalSubcategory.map h).μ Y X
tactic: rw [IsIso.eq_inv_comp]
state_before: C : Type u
inst✝⁴ : Category.{v, u} C
inst✝³ : MonoidalCategory C
P : C → Prop
inst✝² : MonoidalPredicate P
P' : C → Prop
inst✝¹ : MonoidalPredicate P'
inst✝ : BraidedCategory C
h : ∀ ⦃X : C⦄, P X → P' X
X Y : FullSubcategory P
⊢ (fullMonoidalSubcategory.map h).μ X Y ≫ (fullMonoidalSubcategory.map h).map (β_ X Y).hom =
    (β_ ((fullMonoidalSubcategory.map h).obj X) ((fullMonoidalSubcategory.map h).obj Y)).hom ≫
      (fullMonoidalSubcategory.map h).μ Y X
state_after: no goals
tactic: aesop_cat
Theorem: SimpleGraph.Walk.length_reverse
File: Mathlib/Combinatorics/SimpleGraph/Walk.lean

Proof steps:
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v : V
p : G.Walk u v
⊢ p.reverse.length = p.length
state_after: no goals
tactic: simp [reverse]
Theorem: nsmul_add_sub_nsmul
File: Mathlib/Algebra/Group/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
G : Type u_3
M : Type u_4
inst✝ : Monoid M
a✝ b c : M
m n : ℕ
a : M
h : m ≤ n
⊢ a ^ m * a ^ (n - m) = a ^ n
state_after: no goals
tactic: rw [← pow_add, Nat.add_comm, Nat.sub_add_cancel h]
Theorem: abs_le
File: Mathlib/Algebra/Order/Group/Abs.lean

Proof steps:
state_before: α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
a b c d : α
⊢ |a| ≤ b ↔ -b ≤ a ∧ a ≤ b
state_after: no goals
tactic: rw [abs_le', and_comm, @neg_le α]
Theorem: Wbtw.trans_left
File: Mathlib/Analysis/Convex/Between.lean

Proof steps:
state_before: R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
w x y z : P
h₁ : Wbtw R w y z
h₂ : Wbtw R w x y
⊢ Wbtw R w x z
state_after: case intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
w x z : P
t₁ : R
ht₁ : t₁ ∈ Set.Icc 0 1
h₂ : Wbtw R w x ((lineMap w z) t₁)
⊢ Wbtw R w x z
tactic: rcases h₁ with ⟨t₁, ht₁, rfl⟩
state_before: case intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
w x z : P
t₁ : R
ht₁ : t₁ ∈ Set.Icc 0 1
h₂ : Wbtw R w x ((lineMap w z) t₁)
⊢ Wbtw R w x z
state_after: case intro.intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
w z : P
t₁ : R
ht₁ : t₁ ∈ Set.Icc 0 1
t₂ : R
ht₂ : t₂ ∈ Set.Icc 0 1
⊢ Wbtw R w ((lineMap w ((lineMap w z) t₁)) t₂) z
tactic: rcases h₂ with ⟨t₂, ht₂, rfl⟩
state_before: case intro.intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
w z : P
t₁ : R
ht₁ : t₁ ∈ Set.Icc 0 1
t₂ : R
ht₂ : t₂ ∈ Set.Icc 0 1
⊢ Wbtw R w ((lineMap w ((lineMap w z) t₁)) t₂) z
state_after: case intro.intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
w z : P
t₁ : R
ht₁ : t₁ ∈ Set.Icc 0 1
t₂ : R
ht₂ : t₂ ∈ Set.Icc 0 1
⊢ (lineMap w z) (t₂ * t₁) = (lineMap w ((lineMap w z) t₁)) t₂
tactic: refine ⟨t₂ * t₁, ⟨mul_nonneg ht₂.1 ht₁.1, mul_le_one ht₂.2 ht₁.1 ht₁.2⟩, ?_⟩
state_before: case intro.intro.intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
w z : P
t₁ : R
ht₁ : t₁ ∈ Set.Icc 0 1
t₂ : R
ht₂ : t₂ ∈ Set.Icc 0 1
⊢ (lineMap w z) (t₂ * t₁) = (lineMap w ((lineMap w z) t₁)) t₂
state_after: no goals
tactic: rw [lineMap_apply, lineMap_apply, lineMap_vsub_left, smul_smul]
Theorem: Polynomial.prime_of_degree_eq_one
File: Mathlib/Algebra/Polynomial/FieldDivision.lean

Proof steps:
state_before: R : Type u
S : Type v
k : Type y
A : Type z
a b : R
n : ℕ
inst✝ : Field R
p q : R[X]
hp1 : p.degree = 1
⊢ Prime p
state_after: no goals
tactic: classical
  have : Prime (normalize p) :=
    Monic.prime_of_degree_eq_one (hp1 ▸ degree_normalize)
      (monic_normalize fun hp0 => absurd hp1 (hp0.symm ▸ by simp [degree_zero]))
  exact (normalize_associated _).prime this
Theorem: isArtinian_of_fg_of_artinian
File: Mathlib/RingTheory/Artinian.lean

Proof steps:
state_before: R : Type u_1
M : Type u_2
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
N : Submodule R M
inst✝ : IsArtinianRing R
hN : N.FG
⊢ IsArtinian R ↥N
state_after: R : Type u_1
M : Type u_2
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
N : Submodule R M
inst✝ : IsArtinianRing R
hN : N.FG
s : Finset M
hs : span R ↑s = N
⊢ IsArtinian R ↥N
tactic: let ⟨s, hs⟩ := hN
state_before: R : Type u_1
M : Type u_2
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
N : Submodule R M
inst✝ : IsArtinianRing R
hN : N.FG
s : Finset M
hs : span R ↑s = N
⊢ IsArtinian R ↥N
state_after: R : Type u_1
M : Type u_2
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
N : Submodule R M
inst✝ : IsArtinianRing R
hN : N.FG
s : Finset M
hs : span R ↑s = N
this : DecidableEq M
⊢ IsArtinian R ↥N
tactic: haveI := Classical.decEq M
state_before: R : Type u_1
M : Type u_2
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
N : Submodule R M
inst✝ : IsArtinianRing R
hN : N.FG
s : Finset M
hs : span R ↑s = N
this : DecidableEq M
⊢ IsArtinian R ↥N
state_after: R : Type u_1
M : Type u_2
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
N : Submodule R M
inst✝ : IsArtinianRing R
hN : N.FG
s : Finset M
hs : span R ↑s = N
this✝ : DecidableEq M
this : DecidableEq R
⊢ IsArtinian R ↥N
tactic: haveI := Classical.decEq R
state_before: R : Type u_1
M : Type u_2
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
N : Submodule R M
inst✝ : IsArtinianRing R
hN : N.FG
s : Finset M
hs : span R ↑s = N
this✝ : DecidableEq M
this : DecidableEq R
⊢ IsArtinian R ↥N
state_after: R : Type u_1
M : Type u_2
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
N : Submodule R M
inst✝ : IsArtinianRing R
hN : N.FG
s : Finset M
hs : span R ↑s = N
this✝¹ : DecidableEq M
this✝ : DecidableEq R
this : ∀ x ∈ s, x ∈ N
⊢ IsArtinian R ↥N
tactic: have : ∀ x ∈ s, x ∈ N := fun x hx => hs ▸ Submodule.subset_span hx
state_before: R : Type u_1
M : Type u_2
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
N : Submodule R M
inst✝ : IsArtinianRing R
hN : N.FG
s : Finset M
hs : span R ↑s = N
this✝¹ : DecidableEq M
this✝ : DecidableEq R
this : ∀ x ∈ s, x ∈ N
⊢ IsArtinian R ↥N
state_after: case refine_1
R : Type u_1
M : Type u_2
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
N : Submodule R M
inst✝ : IsArtinianRing R
hN : N.FG
s : Finset M
hs : span R ↑s = N
this✝¹ : DecidableEq M
this✝ : DecidableEq R
this : ∀ x ∈ s, x ∈ N
⊢ (↑↑s →₀ R) →ₗ[R] ↥N

case refine_2
R : Type u_1
M : Type u_2
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
N : Submodule R M
inst✝ : IsArtinianRing R
hN : N.FG
s : Finset M
hs : span R ↑s = N
this✝¹ : DecidableEq M
this✝ : DecidableEq R
this : ∀ x ∈ s, x ∈ N
⊢ Surjective ⇑?refine_1
tactic: refine @isArtinian_of_surjective _ ((↑s : Set M) →₀ R) N _ _ _ _ _ ?_ ?_ isArtinian_finsupp
Theorem: div_div_self
File: Mathlib/Algebra/GroupWithZero/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✝ : GroupWithZero G₀
a✝ b c a : G₀
⊢ a / (a / a) = a
state_after: α : 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✝ : GroupWithZero G₀
a✝ b c a : G₀
⊢ a * a / a = a
tactic: rw [div_div_eq_mul_div]
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✝ : GroupWithZero G₀
a✝ b c a : G₀
⊢ a * a / a = a
state_after: no goals
tactic: exact mul_self_div_self a
Theorem: List.mem_diff_of_mem
File: .lake/packages/batteries/Batteries/Data/List/Lemmas.lean

Proof steps:
state_before: α : Type u_1
inst✝¹ : BEq α
inst✝ : LawfulBEq α
a : α
l₁ : List α
b : α
l₂ : List α
h₁ : a ∈ l₁
h₂ : ¬a ∈ b :: l₂
⊢ a ∈ l₁.diff (b :: l₂)
state_after: α : Type u_1
inst✝¹ : BEq α
inst✝ : LawfulBEq α
a : α
l₁ : List α
b : α
l₂ : List α
h₁ : a ∈ l₁
h₂ : ¬a ∈ b :: l₂
⊢ a ∈ (l₁.erase b).diff l₂
tactic: rw [diff_cons]
state_before: α : Type u_1
inst✝¹ : BEq α
inst✝ : LawfulBEq α
a : α
l₁ : List α
b : α
l₂ : List α
h₁ : a ∈ l₁
h₂ : ¬a ∈ b :: l₂
⊢ a ∈ (l₁.erase b).diff l₂
state_after: no goals
tactic: exact mem_diff_of_mem ((mem_erase_of_ne <| ne_of_not_mem_cons h₂).2 h₁) (mt (.tail _) h₂)
Theorem: CategoryTheory.Triangulated.Subcategory.W_iff'
File: Mathlib/CategoryTheory/Triangulated/Subcategory.lean

Proof steps:
state_before: C : Type u_1
inst✝⁵ : Category.{u_2, u_1} C
inst✝⁴ : HasZeroObject C
inst✝³ : HasShift C ℤ
inst✝² : Preadditive C
inst✝¹ : ∀ (n : ℤ), (shiftFunctor C n).Additive
inst✝ : Pretriangulated C
S : Subcategory C
Y Z : C
g : Y ⟶ Z
⊢ S.W g ↔ ∃ X f h, ∃ (_ : Triangle.mk f g h ∈ distinguishedTriangles), S.P X
state_after: C : Type u_1
inst✝⁵ : Category.{u_2, u_1} C
inst✝⁴ : HasZeroObject C
inst✝³ : HasShift C ℤ
inst✝² : Preadditive C
inst✝¹ : ∀ (n : ℤ), (shiftFunctor C n).Additive
inst✝ : Pretriangulated C
S : Subcategory C
Y Z : C
g : Y ⟶ Z
⊢ (∃ Z_1 g_1 h, ∃ (_ : Triangle.mk g g_1 h ∈ distinguishedTriangles), S.P Z_1) ↔
    ∃ X f h, ∃ (_ : Triangle.mk f g h ∈ distinguishedTriangles), S.P X
tactic: rw [S.W_iff]
state_before: C : Type u_1
inst✝⁵ : Category.{u_2, u_1} C
inst✝⁴ : HasZeroObject C
inst✝³ : HasShift C ℤ
inst✝² : Preadditive C
inst✝¹ : ∀ (n : ℤ), (shiftFunctor C n).Additive
inst✝ : Pretriangulated C
S : Subcategory C
Y Z : C
g : Y ⟶ Z
⊢ (∃ Z_1 g_1 h, ∃ (_ : Triangle.mk g g_1 h ∈ distinguishedTriangles), S.P Z_1) ↔
    ∃ X f h, ∃ (_ : Triangle.mk f g h ∈ distinguishedTriangles), S.P X
state_after: case mp
C : Type u_1
inst✝⁵ : Category.{u_2, u_1} C
inst✝⁴ : HasZeroObject C
inst✝³ : HasShift C ℤ
inst✝² : Preadditive C
inst✝¹ : ∀ (n : ℤ), (shiftFunctor C n).Additive
inst✝ : Pretriangulated C
S : Subcategory C
Y Z : C
g : Y ⟶ Z
⊢ (∃ Z_1 g_1 h, ∃ (_ : Triangle.mk g g_1 h ∈ distinguishedTriangles), S.P Z_1) →
    ∃ X f h, ∃ (_ : Triangle.mk f g h ∈ distinguishedTriangles), S.P X

case mpr
C : Type u_1
inst✝⁵ : Category.{u_2, u_1} C
inst✝⁴ : HasZeroObject C
inst✝³ : HasShift C ℤ
inst✝² : Preadditive C
inst✝¹ : ∀ (n : ℤ), (shiftFunctor C n).Additive
inst✝ : Pretriangulated C
S : Subcategory C
Y Z : C
g : Y ⟶ Z
⊢ (∃ X f h, ∃ (_ : Triangle.mk f g h ∈ distinguishedTriangles), S.P X) →
    ∃ Z_1 g_1 h, ∃ (_ : Triangle.mk g g_1 h ∈ distinguishedTriangles), S.P Z_1
tactic: constructor
Theorem: HurwitzZeta.completedSinZeta_one_sub
File: Mathlib/NumberTheory/LSeries/HurwitzZetaOdd.lean

Proof steps:
state_before: a : UnitAddCircle
s : ℂ
⊢ completedSinZeta a (1 - s) = completedHurwitzZetaOdd a s
state_after: no goals
tactic: rw [← completedHurwitzZetaOdd_one_sub, sub_sub_cancel]
Theorem: AffineIsometry.angle_map
File: Mathlib/Geometry/Euclidean/Angle/Unoriented/Affine.lean

Proof steps:
state_before: V : Type u_1
P : Type u_2
inst✝⁷ : NormedAddCommGroup V
inst✝⁶ : InnerProductSpace ℝ V
inst✝⁵ : MetricSpace P
inst✝⁴ : NormedAddTorsor V P
p p₀ p₁✝ p₂✝ : P
V₂ : Type u_3
P₂ : Type u_4
inst✝³ : NormedAddCommGroup V₂
inst✝² : InnerProductSpace ℝ V₂
inst✝¹ : MetricSpace P₂
inst✝ : NormedAddTorsor V₂ P₂
f : P →ᵃⁱ[ℝ] P₂
p₁ p₂ p₃ : P
⊢ ∠ (f p₁) (f p₂) (f p₃) = ∠ p₁ p₂ p₃
state_after: no goals
tactic: simp_rw [angle, ← AffineIsometry.map_vsub, LinearIsometry.angle_map]
Theorem: StructureGroupoid.LocalInvariantProp.liftPropAt_chart_symm
File: Mathlib/Geometry/Manifold/LocalInvariantProperties.lean

Proof steps:
state_before: H : Type u_1
M : Type u_2
H' : Type u_3
M' : Type u_4
X : Type u_5
inst✝⁷ : TopologicalSpace H
inst✝⁶ : TopologicalSpace M
inst✝⁵ : ChartedSpace H M
inst✝⁴ : TopologicalSpace H'
inst✝³ : TopologicalSpace M'
inst✝² : ChartedSpace H' M'
inst✝¹ : TopologicalSpace X
G : StructureGroupoid H
G' : StructureGroupoid H'
e e' : PartialHomeomorph M H
f f' : PartialHomeomorph M' H'
P : (H → H') → Set H → H → Prop
g g' : M → M'
s t : Set M
x : M
Q : (H → H) → Set H → H → Prop
hG✝ : G.LocalInvariantProp G' P
inst✝ : HasGroupoid M G
hG : G.LocalInvariantProp G Q
hQ : ∀ (y : H), Q id univ y
⊢ ↑(chartAt H x) x ∈ (chartAt H x).target
state_after: no goals
tactic: simp
Theorem: Subgroup.index_map_dvd
File: Mathlib/GroupTheory/Index.lean

Proof steps:
state_before: G : Type u_1
G' : Type u_2
inst✝¹ : Group G
inst✝ : Group G'
H K L : Subgroup G
f : G →* G'
hf : Function.Surjective ⇑f
⊢ (map f H).index ∣ H.index
state_after: G : Type u_1
G' : Type u_2
inst✝¹ : Group G
inst✝ : Group G'
H K L : Subgroup G
f : G →* G'
hf : Function.Surjective ⇑f
⊢ (H ⊔ f.ker).index ∣ H.index
tactic: rw [index_map, f.range_top_of_surjective hf, index_top, mul_one]
state_before: G : Type u_1
G' : Type u_2
inst✝¹ : Group G
inst✝ : Group G'
H K L : Subgroup G
f : G →* G'
hf : Function.Surjective ⇑f
⊢ (H ⊔ f.ker).index ∣ H.index
state_after: no goals
tactic: exact index_dvd_of_le le_sup_left
Theorem: Ideal.IsPrime.prod_mem_iff_exists_mem
File: Mathlib/RingTheory/Ideal/Operations.lean

Proof steps:
state_before: R : Type u
ι : Type u_1
inst✝ : CommSemiring R
I✝ J K L I : Ideal R
hI : I.IsPrime
s : Finset R
⊢ ∏ x ∈ s, x ∈ I ↔ ∃ p ∈ s, p ∈ I
state_after: R : Type u
ι : Type u_1
inst✝ : CommSemiring R
I✝ J K L I : Ideal R
hI : I.IsPrime
s : Finset R
⊢ s.val.prod ∈ I ↔ ∃ p ∈ s, p ∈ I
tactic: rw [Finset.prod_eq_multiset_prod, Multiset.map_id']
state_before: R : Type u
ι : Type u_1
inst✝ : CommSemiring R
I✝ J K L I : Ideal R
hI : I.IsPrime
s : Finset R
⊢ s.val.prod ∈ I ↔ ∃ p ∈ s, p ∈ I
state_after: no goals
tactic: exact hI.multiset_prod_mem_iff_exists_mem s.val
Theorem: multiplicity.is_greatest'
File: Mathlib/RingTheory/Multiplicity.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝³ : Monoid α
inst✝² : Monoid β
inst✝¹ : DecidableRel fun x x_1 => x ∣ x_1
inst✝ : DecidableRel fun x x_1 => x ∣ x_1
a b : α
m : ℕ
h : Finite a b
hm : (multiplicity a b).get h < m
⊢ multiplicity a b < ↑m
state_after: no goals
tactic: rwa [← PartENat.coe_lt_coe, PartENat.natCast_get] at hm
Theorem: MeasureTheory.ProbabilityMeasure.apply_le_one
File: Mathlib/MeasureTheory/Measure/ProbabilityMeasure.lean

Proof steps:
state_before: Ω : Type u_1
inst✝ : MeasurableSpace Ω
μ : ProbabilityMeasure Ω
s : Set Ω
⊢ μ s ≤ 1
state_after: no goals
tactic: simpa using apply_mono μ (subset_univ s)
Theorem: SimpleGraph.isClique_empty
File: Mathlib/Combinatorics/SimpleGraph/Clique.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
G H : SimpleGraph α
s t : Set α
a b : α
⊢ G.IsClique ∅
state_after: no goals
tactic: simp
Theorem: MeasureTheory.injective_dirac
File: Mathlib/MeasureTheory/Measure/Dirac.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
δ : Type u_3
inst✝² : MeasurableSpace α
inst✝¹ : MeasurableSpace β
s : Set α
a : α
inst✝ : MeasurableSpace.SeparatesPoints α
x y : α
x_ne_y : (fun x => dirac x) x = (fun x => dirac x) y
⊢ x = y
state_after: no goals
tactic: rwa [← dirac_eq_dirac_iff]
Theorem: Representation.mem_invariants
File: Mathlib/RepresentationTheory/Invariants.lean

Proof steps:
state_before: k : Type u_1
G : Type u_2
V : Type u_3
inst✝³ : CommSemiring k
inst✝² : Group G
inst✝¹ : AddCommMonoid V
inst✝ : Module k V
ρ : Representation k G V
v : V
⊢ v ∈ ρ.invariants ↔ ∀ (g : G), (ρ g) v = v
state_after: no goals
tactic: rfl
Theorem: Ordinal.left_le_opow
File: Mathlib/SetTheory/Ordinal/Exponential.lean

Proof steps:
state_before: a b : Ordinal.{u_1}
b1 : 0 < b
⊢ a ≤ a ^ b
state_after: a b : Ordinal.{u_1}
b1 : 0 < b
⊢ a ^ 1 ≤ a ^ b
tactic: nth_rw 1 [← opow_one a]
state_before: a b : Ordinal.{u_1}
b1 : 0 < b
⊢ a ^ 1 ≤ a ^ b
state_after: case inl
a b : Ordinal.{u_1}
b1 : 0 < b
a1 : a ≤ 1
⊢ a ^ 1 ≤ a ^ b

case inr
a b : Ordinal.{u_1}
b1 : 0 < b
a1 : a > 1
⊢ a ^ 1 ≤ a ^ b
tactic: cases' le_or_gt a 1 with a1 a1
state_before: case inr
a b : Ordinal.{u_1}
b1 : 0 < b
a1 : a > 1
⊢ a ^ 1 ≤ a ^ b
state_after: no goals
tactic: rwa [opow_le_opow_iff_right a1, one_le_iff_pos]
Theorem: Nat.zpow_pos_of_pos
File: Mathlib/Algebra/Order/Field/Power.lean

Proof steps:
state_before: α : Type u_1
inst✝ : LinearOrderedSemifield α
a✝ b c d e : α
m n✝ : ℤ
a : ℕ
h : 0 < a
n : ℤ
⊢ 0 < ↑a ^ n
state_after: case ha
α : Type u_1
inst✝ : LinearOrderedSemifield α
a✝ b c d e : α
m n✝ : ℤ
a : ℕ
h : 0 < a
n : ℤ
⊢ 0 < ↑a
tactic: apply zpow_pos_of_pos
state_before: case ha
α : Type u_1
inst✝ : LinearOrderedSemifield α
a✝ b c d e : α
m n✝ : ℤ
a : ℕ
h : 0 < a
n : ℤ
⊢ 0 < ↑a
state_after: no goals
tactic: exact mod_cast h
Theorem: Algebra.TensorProduct.map_restrictScalars_comp_includeRight
File: Mathlib/RingTheory/TensorProduct/Basic.lean

Proof steps:
state_before: R : Type uR
S : Type uS
A : Type uA
B : Type uB
C : Type uC
D : Type uD
E : Type uE
F : Type uF
inst✝²⁰ : CommSemiring R
inst✝¹⁹ : CommSemiring S
inst✝¹⁸ : Algebra R S
inst✝¹⁷ : Semiring A
inst✝¹⁶ : Algebra R A
inst✝¹⁵ : Algebra S A
inst✝¹⁴ : IsScalarTower R S A
inst✝¹³ : Semiring B
inst✝¹² : Algebra R B
inst✝¹¹ : Algebra S B
inst✝¹⁰ : IsScalarTower R S B
inst✝⁹ : Semiring C
inst✝⁸ : Algebra R C
inst✝⁷ : Algebra S C
inst✝⁶ : IsScalarTower R S C
inst✝⁵ : Semiring D
inst✝⁴ : Algebra R D
inst✝³ : Semiring E
inst✝² : Algebra R E
inst✝¹ : Semiring F
inst✝ : Algebra R F
f : A →ₐ[S] B
g : C →ₐ[R] D
⊢ ∀ (x : C), ((AlgHom.restrictScalars R (map f g)).comp includeRight) x = (includeRight.comp g) x
state_after: no goals
tactic: simp