1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: CategoryTheory.Injective.of_iso
File: Mathlib/CategoryTheory/Preadditive/Injective.lean

tactic: obtain ⟨h, h_eq⟩ := @Injective.factors C _ P _ _ _ (g ≫ i.inv) f mono
state_before: C : Type u₁
inst✝ : Category.{v₁, u₁} C
P Q : C
i : P ≅ Q
hP : Injective P
X✝ Y✝ : C
g : X✝ ⟶ Q
f : X✝ ⟶ Y✝
mono : Mono f
⊢ ∃ h, f ≫ h = g
state_after: case intro
C : Type u₁
inst✝ : Category.{v₁, u₁} C
P Q : C
i : P ≅ Q
hP : Injective P
X✝ Y✝ : C
g : X✝ ⟶ Q
f : X✝ ⟶ Y✝
mono : Mono f
h : Y✝ ⟶ P
h_eq : f ≫ h = g ≫ i.inv
⊢ ∃ h, f ≫ h = g

tactic: refine ⟨h ≫ i.hom, ?_⟩
state_before: case intro
C : Type u₁
inst✝ : Category.{v₁, u₁} C
P Q : C
i : P ≅ Q
hP : Injective P
X✝ Y✝ : C
g : X✝ ⟶ Q
f : X✝ ⟶ Y✝
mono : Mono f
h : Y✝ ⟶ P
h_eq : f ≫ h = g ≫ i.inv
⊢ ∃ h, f ≫ h = g
state_after: case intro
C : Type u₁
inst✝ : Category.{v₁, u₁} C
P Q : C
i : P ≅ Q
hP : Injective P
X✝ Y✝ : C
g : X✝ ⟶ Q
f : X✝ ⟶ Y✝
mono : Mono f
h : Y✝ ⟶ P
h_eq : f ≫ h = g ≫ i.inv
⊢ f ≫ h ≫ i.hom = g

tactic: rw [← Category.assoc, h_eq, Category.assoc, Iso.inv_hom_id, Category.comp_id]
state_before: case intro
C : Type u₁
inst✝ : Category.{v₁, u₁} C
P Q : C
i : P ≅ Q
hP : Injective P
X✝ Y✝ : C
g : X✝ ⟶ Q
f : X✝ ⟶ Y✝
mono : Mono f
h : Y✝ ⟶ P
h_eq : f ≫ h = g ≫ i.inv
⊢ f ≫ h ≫ i.hom = g
state_after: no goals
Theorem: Set.injOn_pair
File: Mathlib/Data/Set/Function.lean

tactic: unfold InjOn
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
π : α → Type u_5
s s₁ s₂ : Set α
t t₁ t₂ : Set β
p : Set γ
f f₁ f₂ f₃ : α → β
g g₁ g₂ : β → γ
f' f₁' f₂' : β → α
g' : γ → β
a : α
b✝ : β
b : α
⊢ InjOn f {a, b} ↔ f a = f b → a = b
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
π : α → Type u_5
s s₁ s₂ : Set α
t t₁ t₂ : Set β
p : Set γ
f f₁ f₂ f₃ : α → β
g g₁ g₂ : β → γ
f' f₁' f₂' : β → α
g' : γ → β
a : α
b✝ : β
b : α
⊢ (∀ ⦃x₁ : α⦄, x₁ ∈ {a, b} → ∀ ⦃x₂ : α⦄, x₂ ∈ {a, b} → f x₁ = f x₂ → x₁ = x₂) ↔ f a = f b → a = b

tactic: aesop
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
π : α → Type u_5
s s₁ s₂ : Set α
t t₁ t₂ : Set β
p : Set γ
f f₁ f₂ f₃ : α → β
g g₁ g₂ : β → γ
f' f₁' f₂' : β → α
g' : γ → β
a : α
b✝ : β
b : α
⊢ (∀ ⦃x₁ : α⦄, x₁ ∈ {a, b} → ∀ ⦃x₂ : α⦄, x₂ ∈ {a, b} → f x₁ = f x₂ → x₁ = x₂) ↔ f a = f b → a = b
state_after: no goals
Theorem: LinearMap.BilinForm.sum_apply
File: Mathlib/LinearAlgebra/BilinearForm/Hom.lean

tactic: simp only [coeFn_sum, Finset.sum_apply]
state_before: R : Type u_1
M : Type u_2
inst✝⁸ : CommSemiring R
inst✝⁷ : AddCommMonoid M
inst✝⁶ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝⁵ : CommRing R₁
inst✝⁴ : AddCommGroup M₁
inst✝³ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
B✝ : BilinForm R M
B₁ : BilinForm R₁ M₁
w✝ : M
α : Type u_7
t : Finset α
B : α → BilinForm R M
v w : M
⊢ ((∑ i ∈ t, B i) v) w = ∑ i ∈ t, ((B i) v) w
state_after: no goals
Theorem: SimpleGraph.iSup_adj
File: Mathlib/Combinatorics/SimpleGraph/Basic.lean

tactic: simp [iSup]
state_before: ι : Sort u_1
V : Type u
G : SimpleGraph V
a b c u v w : V
e : Sym2 V
f : ι → SimpleGraph V
⊢ (⨆ i, f i).Adj a b ↔ ∃ i, (f i).Adj a b
state_after: no goals
Theorem: SimpleGraph.edgeSet_sup
File: Mathlib/Combinatorics/SimpleGraph/Basic.lean

tactic: ext ⟨x, y⟩
state_before: ι : Sort u_1
V : Type u
G : SimpleGraph V
a b c u v w : V
e : Sym2 V
G₁ G₂ : SimpleGraph V
⊢ (G₁ ⊔ G₂).edgeSet = G₁.edgeSet ∪ G₂.edgeSet
state_after: case h.mk.mk
ι : Sort u_1
V : Type u
G : SimpleGraph V
a b c u v w : V
e : Sym2 V
G₁ G₂ : SimpleGraph V
x✝ : Sym2 V
x y : V
⊢ Quot.mk (Sym2.Rel V) (x, y) ∈ (G₁ ⊔ G₂).edgeSet ↔ Quot.mk (Sym2.Rel V) (x, y) ∈ G₁.edgeSet ∪ G₂.edgeSet

tactic: rfl
state_before: case h.mk.mk
ι : Sort u_1
V : Type u
G : SimpleGraph V
a b c u v w : V
e : Sym2 V
G₁ G₂ : SimpleGraph V
x✝ : Sym2 V
x y : V
⊢ Quot.mk (Sym2.Rel V) (x, y) ∈ (G₁ ⊔ G₂).edgeSet ↔ Quot.mk (Sym2.Rel V) (x, y) ∈ G₁.edgeSet ∪ G₂.edgeSet
state_after: no goals
Theorem: Equiv.piCongrLeft'_symm
File: Mathlib/Logic/Equiv/Basic.lean

tactic: ext
state_before: α : Sort u_2
β : Sort u_3
P✝ : α → Sort w
e✝ : α ≃ β
P : Sort u_1
e : α ≃ β
⊢ (piCongrLeft' (fun x => P) e).symm = piCongrLeft' (fun a => P) e.symm
state_after: case H.h
α : Sort u_2
β : Sort u_3
P✝ : α → Sort w
e✝ : α ≃ β
P : Sort u_1
e : α ≃ β
x✝¹ : β → P
x✝ : α
⊢ (piCongrLeft' (fun x => P) e).symm x✝¹ x✝ = (piCongrLeft' (fun a => P) e.symm) x✝¹ x✝

tactic: simp [piCongrLeft']
state_before: case H.h
α : Sort u_2
β : Sort u_3
P✝ : α → Sort w
e✝ : α ≃ β
P : Sort u_1
e : α ≃ β
x✝¹ : β → P
x✝ : α
⊢ (piCongrLeft' (fun x => P) e).symm x✝¹ x✝ = (piCongrLeft' (fun a => P) e.symm) x✝¹ x✝
state_after: no goals
Theorem: OreLocalization.smul_div_one
File: Mathlib/RingTheory/OreLocalization/Basic.lean

tactic: simp [oreDiv_smul_char p r s 1 p 1 (by simp)]
state_before: R : Type u_1
inst✝² : Monoid R
S : Submonoid R
inst✝¹ : OreSet S
X : Type u_2
inst✝ : MulAction R X
p : R
r : X
s : ↥S
⊢ (p /ₒ s) • (r /ₒ 1) = p • r /ₒ s
state_after: no goals

tactic: simp
state_before: R : Type u_1
inst✝² : Monoid R
S : Submonoid R
inst✝¹ : OreSet S
X : Type u_2
inst✝ : MulAction R X
p : R
r : X
s : ↥S
⊢ ↑1 * p = p * ↑1
state_after: no goals
Theorem: Real.toNNReal_eq_toNNReal_iff
File: Mathlib/Data/NNReal/Basic.lean

tactic: simp [← coe_inj, coe_toNNReal, hr, hp]
state_before: r p : ℝ
hr : 0 ≤ r
hp : 0 ≤ p
⊢ r.toNNReal = p.toNNReal ↔ r = p
state_after: no goals
Theorem: MeasureTheory.tendsto_indicator_ge
File: Mathlib/MeasureTheory/Function/UniformIntegrable.lean

tactic: refine tendsto_atTop_of_eventually_const (i₀ := Nat.ceil (‖f x‖₊ : ℝ) + 1) fun n hn => ?_
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace α
μ : Measure α
inst✝ : NormedAddCommGroup β
f : α → β
x : α
⊢ Tendsto (fun M => {x | ↑M ≤ ↑‖f x‖₊}.indicator f x) atTop (𝓝 0)
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace α
μ : Measure α
inst✝ : NormedAddCommGroup β
f : α → β
x : α
n : ℕ
hn : n ≥ ⌈↑‖f x‖₊⌉₊ + 1
⊢ {x | ↑n ≤ ↑‖f x‖₊}.indicator f x = 0

tactic: rw [Set.indicator_of_not_mem]
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace α
μ : Measure α
inst✝ : NormedAddCommGroup β
f : α → β
x : α
n : ℕ
hn : n ≥ ⌈↑‖f x‖₊⌉₊ + 1
⊢ {x | ↑n ≤ ↑‖f x‖₊}.indicator f x = 0
state_after: case h
α : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace α
μ : Measure α
inst✝ : NormedAddCommGroup β
f : α → β
x : α
n : ℕ
hn : n ≥ ⌈↑‖f x‖₊⌉₊ + 1
⊢ x ∉ {x | ↑n ≤ ↑‖f x‖₊}

tactic: simp only [not_le, Set.mem_setOf_eq]
state_before: case h
α : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace α
μ : Measure α
inst✝ : NormedAddCommGroup β
f : α → β
x : α
n : ℕ
hn : n ≥ ⌈↑‖f x‖₊⌉₊ + 1
⊢ x ∉ {x | ↑n ≤ ↑‖f x‖₊}
state_after: case h
α : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace α
μ : Measure α
inst✝ : NormedAddCommGroup β
f : α → β
x : α
n : ℕ
hn : n ≥ ⌈↑‖f x‖₊⌉₊ + 1
⊢ ↑‖f x‖₊ < ↑n

tactic: refine lt_of_le_of_lt (Nat.le_ceil _) ?_
state_before: case h
α : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace α
μ : Measure α
inst✝ : NormedAddCommGroup β
f : α → β
x : α
n : ℕ
hn : n ≥ ⌈↑‖f x‖₊⌉₊ + 1
⊢ ↑‖f x‖₊ < ↑n
state_after: case h
α : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace α
μ : Measure α
inst✝ : NormedAddCommGroup β
f : α → β
x : α
n : ℕ
hn : n ≥ ⌈↑‖f x‖₊⌉₊ + 1
⊢ ↑⌈↑‖f x‖₊⌉₊ < ↑n

tactic: refine lt_of_lt_of_le (lt_add_one _) ?_
state_before: case h
α : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace α
μ : Measure α
inst✝ : NormedAddCommGroup β
f : α → β
x : α
n : ℕ
hn : n ≥ ⌈↑‖f x‖₊⌉₊ + 1
⊢ ↑⌈↑‖f x‖₊⌉₊ < ↑n
state_after: case h
α : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace α
μ : Measure α
inst✝ : NormedAddCommGroup β
f : α → β
x : α
n : ℕ
hn : n ≥ ⌈↑‖f x‖₊⌉₊ + 1
⊢ ↑⌈↑‖f x‖₊⌉₊ + 1 ≤ ↑n

tactic: norm_cast
state_before: case h
α : Type u_1
β : Type u_2
ι : Type u_3
m : MeasurableSpace α
μ : Measure α
inst✝ : NormedAddCommGroup β
f : α → β
x : α
n : ℕ
hn : n ≥ ⌈↑‖f x‖₊⌉₊ + 1
⊢ ↑⌈↑‖f x‖₊⌉₊ + 1 ≤ ↑n
state_after: no goals
Theorem: Function.Embedding.setValue_eq
File: Mathlib/Logic/Embedding/Basic.lean

tactic: simp [setValue]
state_before: α : Sort u_1
β : Sort u_2
f : α ↪ β
a : α
b : β
inst✝¹ : (a' : α) → Decidable (a' = a)
inst✝ : (a' : α) → Decidable (f a' = b)
⊢ (f.setValue a b) a = b
state_after: no goals
Theorem: CategoryTheory.GradedObject.congr_mapMap
File: Mathlib/CategoryTheory/GradedObject.lean

tactic: subst h
state_before: I : Type u_1
J : Type u_2
K : Type u_3
C : Type u_4
inst✝³ : Category.{u_5, u_4} C
X Y Z : GradedObject I C
φ : X ⟶ Y
e : X ≅ Y
ψ : Y ⟶ Z
p : I → J
j : J
inst✝² : X.HasMap p
inst✝¹ : Y.HasMap p
inst✝ : Z.HasMap p
φ₁ φ₂ : X ⟶ Y
h : φ₁ = φ₂
⊢ mapMap φ₁ p = mapMap φ₂ p
state_after: I : Type u_1
J : Type u_2
K : Type u_3
C : Type u_4
inst✝³ : Category.{u_5, u_4} C
X Y Z : GradedObject I C
φ : X ⟶ Y
e : X ≅ Y
ψ : Y ⟶ Z
p : I → J
j : J
inst✝² : X.HasMap p
inst✝¹ : Y.HasMap p
inst✝ : Z.HasMap p
φ₁ : X ⟶ Y
⊢ mapMap φ₁ p = mapMap φ₁ p

tactic: rfl
state_before: I : Type u_1
J : Type u_2
K : Type u_3
C : Type u_4
inst✝³ : Category.{u_5, u_4} C
X Y Z : GradedObject I C
φ : X ⟶ Y
e : X ≅ Y
ψ : Y ⟶ Z
p : I → J
j : J
inst✝² : X.HasMap p
inst✝¹ : Y.HasMap p
inst✝ : Z.HasMap p
φ₁ : X ⟶ Y
⊢ mapMap φ₁ p = mapMap φ₁ p
state_after: no goals
Theorem: Fin.pred_one'
File: Mathlib/Data/Fin/Basic.lean

tactic: simp_rw [Fin.ext_iff, coe_pred, val_one', val_zero', Nat.sub_eq_zero_iff_le, Nat.mod_le]
state_before: n m : ℕ
inst✝ : NeZero n
h : optParam (1 ≠ 0) ⋯
⊢ pred 1 h = 0
state_after: no goals
Theorem: himp_inf_self
File: Mathlib/Order/Heyting/Basic.lean

tactic: rw [inf_comm, inf_himp, inf_comm]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : GeneralizedHeytingAlgebra α
a✝ b✝ c d a b : α
⊢ (a ⇨ b) ⊓ a = b ⊓ a
state_after: no goals
Theorem: ContinuousMap.spectrum_eq_range
File: Mathlib/Topology/ContinuousFunction/Units.lean

tactic: rw [spectrum_eq_preimage_range, Algebra.id.map_eq_id]
state_before: X : Type u_1
M : Type u_2
R : Type u_3
𝕜 : Type u_4
inst✝⁵ : TopologicalSpace X
inst✝⁴ : NormedField 𝕜
inst✝³ : NormedDivisionRing R
inst✝² : Algebra 𝕜 R
inst✝¹ : CompleteSpace R
inst✝ : CompleteSpace 𝕜
f : C(X, 𝕜)
⊢ spectrum 𝕜 f = Set.range ⇑f
state_after: X : Type u_1
M : Type u_2
R : Type u_3
𝕜 : Type u_4
inst✝⁵ : TopologicalSpace X
inst✝⁴ : NormedField 𝕜
inst✝³ : NormedDivisionRing R
inst✝² : Algebra 𝕜 R
inst✝¹ : CompleteSpace R
inst✝ : CompleteSpace 𝕜
f : C(X, 𝕜)
⊢ ⇑(RingHom.id 𝕜) ⁻¹' Set.range ⇑f = Set.range ⇑f

tactic: exact Set.preimage_id
state_before: X : Type u_1
M : Type u_2
R : Type u_3
𝕜 : Type u_4
inst✝⁵ : TopologicalSpace X
inst✝⁴ : NormedField 𝕜
inst✝³ : NormedDivisionRing R
inst✝² : Algebra 𝕜 R
inst✝¹ : CompleteSpace R
inst✝ : CompleteSpace 𝕜
f : C(X, 𝕜)
⊢ ⇑(RingHom.id 𝕜) ⁻¹' Set.range ⇑f = Set.range ⇑f
state_after: no goals
Theorem: Matroid.Basis.basis_iUnion
File: Mathlib/Data/Matroid/Basic.lean

tactic: convert Basis.iUnion_basis_iUnion X (fun _ ↦ I) (fun i ↦ hI i) _ <;> rw [iUnion_const]
state_before: α : Type u_1
M : Matroid α
I : Set α
ι : Type u_2
inst✝ : Nonempty ι
X : ι → Set α
hI : ∀ (i : ι), M.Basis I (X i)
⊢ M.Basis I (⋃ i, X i)
state_after: α : Type u_1
M : Matroid α
I : Set α
ι : Type u_2
inst✝ : Nonempty ι
X : ι → Set α
hI : ∀ (i : ι), M.Basis I (X i)
⊢ M.Indep I

tactic: exact (hI (Classical.arbitrary ι)).indep
state_before: α : Type u_1
M : Matroid α
I : Set α
ι : Type u_2
inst✝ : Nonempty ι
X : ι → Set α
hI : ∀ (i : ι), M.Basis I (X i)
⊢ M.Indep I
state_after: no goals
Theorem: Cardinal.toNat_eq_one
File: Mathlib/SetTheory/Cardinal/ToNat.lean

tactic: rw [toNat_eq_iff one_ne_zero, Nat.cast_one]
state_before: α : Type u
c d : Cardinal.{u}
⊢ toNat c = 1 ↔ c = 1
state_after: no goals
Theorem: Nat.coprime_add_mul_left_right
File: Mathlib/Data/Nat/GCD/Basic.lean

tactic: rw [Coprime, Coprime, gcd_add_mul_left_right]
state_before: m n k : ℕ
⊢ m.Coprime (n + m * k) ↔ m.Coprime n
state_after: no goals
Theorem: NumberField.mixedEmbedding.convexBodySumFun_neg
File: Mathlib/NumberTheory/NumberField/CanonicalEmbedding/ConvexBody.lean

tactic: simp_rw [convexBodySumFun, normAtPlace_neg]
state_before: K : Type u_1
inst✝¹ : Field K
inst✝ : NumberField K
B : ℝ
x : ({ w // w.IsReal } → ℝ) × ({ w // w.IsComplex } → ℂ)
⊢ convexBodySumFun (-x) = convexBodySumFun x
state_after: no goals
Theorem: Nat.maxPowDiv.base_mul_eq_succ
File: Mathlib/Data/Nat/MaxPowDiv.lean

tactic: have : 0 < p := lt_trans (b := 1) (by simp) hp
state_before: p n : ℕ
hp : 1 < p
hn : 0 < n
⊢ p.maxPowDiv (p * n) = p.maxPowDiv n + 1
state_after: p n : ℕ
hp : 1 < p
hn : 0 < n
this : 0 < p
⊢ p.maxPowDiv (p * n) = p.maxPowDiv n + 1

tactic: dsimp [maxPowDiv]
state_before: p n : ℕ
hp : 1 < p
hn : 0 < n
this : 0 < p
⊢ p.maxPowDiv (p * n) = p.maxPowDiv n + 1
state_after: p n : ℕ
hp : 1 < p
hn : 0 < n
this : 0 < p
⊢ go 0 p (p * n) = go 0 p n + 1

tactic: rw [maxPowDiv.go, if_pos, mul_div_right _ this]
state_before: p n : ℕ
hp : 1 < p
hn : 0 < n
this : 0 < p
⊢ go 0 p (p * n) = go 0 p n + 1
state_after: p n : ℕ
hp : 1 < p
hn : 0 < n
this : 0 < p
⊢ go (0 + 1) p n = go 0 p n + 1

case hc
p n : ℕ
hp : 1 < p
hn : 0 < n
this : 0 < p
⊢ 1 < p ∧ 0 < p * n ∧ p * n % p = 0

tactic: simp
state_before: p n : ℕ
hp : 1 < p
hn : 0 < n
⊢ 0 < 1
state_after: no goals

tactic: apply go_succ
state_before: p n : ℕ
hp : 1 < p
hn : 0 < n
this : 0 < p
⊢ go (0 + 1) p n = go 0 p n + 1
state_after: no goals

tactic: refine ⟨hp, ?_, by simp⟩
state_before: case hc
p n : ℕ
hp : 1 < p
hn : 0 < n
this : 0 < p
⊢ 1 < p ∧ 0 < p * n ∧ p * n % p = 0
state_after: case hc
p n : ℕ
hp : 1 < p
hn : 0 < n
this : 0 < p
⊢ 0 < p * n

tactic: apply Nat.mul_pos this hn
state_before: case hc
p n : ℕ
hp : 1 < p
hn : 0 < n
this : 0 < p
⊢ 0 < p * n
state_after: no goals

tactic: simp
state_before: p n : ℕ
hp : 1 < p
hn : 0 < n
this : 0 < p
⊢ p * n % p = 0
state_after: no goals
Theorem: MeasureTheory.Measure.sum_bool
File: Mathlib/MeasureTheory/Measure/MeasureSpace.lean

tactic: rw [sum_fintype, Fintype.sum_bool]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Type u_5
R : Type u_6
R' : Type u_7
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s s' t : Set α
f✝ : α → β
f : Bool → Measure α
⊢ sum f = f true + f false
state_after: no goals
Theorem: CategoryTheory.Functor.Full.of_comp_faithful_iso
File: Mathlib/CategoryTheory/Functor/FullyFaithful.lean

tactic: have := Full.of_iso h.symm
state_before: C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
D : Type u₂
inst✝³ : Category.{v₂, u₂} D
E : Type u₃
inst✝² : Category.{v₃, u₃} E
F✝ F' : C ⥤ D
G✝ : D ⥤ E
F : C ⥤ D
G : D ⥤ E
H : C ⥤ E
inst✝¹ : H.Full
inst✝ : G.Faithful
h : F ⋙ G ≅ H
⊢ F.Full
state_after: C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
D : Type u₂
inst✝³ : Category.{v₂, u₂} D
E : Type u₃
inst✝² : Category.{v₃, u₃} E
F✝ F' : C ⥤ D
G✝ : D ⥤ E
F : C ⥤ D
G : D ⥤ E
H : C ⥤ E
inst✝¹ : H.Full
inst✝ : G.Faithful
h : F ⋙ G ≅ H
this : (F ⋙ G).Full
⊢ F.Full

tactic: exact Full.of_comp_faithful F G
state_before: C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
D : Type u₂
inst✝³ : Category.{v₂, u₂} D
E : Type u₃
inst✝² : Category.{v₃, u₃} E
F✝ F' : C ⥤ D
G✝ : D ⥤ E
F : C ⥤ D
G : D ⥤ E
H : C ⥤ E
inst✝¹ : H.Full
inst✝ : G.Faithful
h : F ⋙ G ≅ H
this : (F ⋙ G).Full
⊢ F.Full
state_after: no goals
Theorem: CategoryTheory.Limits.hasFiniteLimits_of_hasFiniteLimits_of_size
File: Mathlib/CategoryTheory/Limits/Shapes/FiniteLimits.lean

tactic: haveI := h (ULiftHom.{w} (ULift.{w} J)) <| @CategoryTheory.finCategoryUlift J hJ hhJ
state_before: C : Type u
inst✝ : Category.{v, u} C
h : ∀ (J : Type w) {𝒥 : SmallCategory J}, FinCategory J → HasLimitsOfShape J C
J : Type
hJ : SmallCategory J
hhJ : FinCategory J
⊢ HasLimitsOfShape J C
state_after: C : Type u
inst✝ : Category.{v, u} C
h : ∀ (J : Type w) {𝒥 : SmallCategory J}, FinCategory J → HasLimitsOfShape J C
J : Type
hJ : SmallCategory J
hhJ : FinCategory J
this : HasLimitsOfShape (ULiftHom (ULift.{w, 0} J)) C
⊢ HasLimitsOfShape J C

tactic: have l : @Equivalence J (ULiftHom (ULift J)) hJ
                      (@ULiftHom.category (ULift J) (@uliftCategory J hJ)) :=
  @ULiftHomULiftCategory.equiv J hJ
state_before: C : Type u
inst✝ : Category.{v, u} C
h : ∀ (J : Type w) {𝒥 : SmallCategory J}, FinCategory J → HasLimitsOfShape J C
J : Type
hJ : SmallCategory J
hhJ : FinCategory J
this : HasLimitsOfShape (ULiftHom (ULift.{w, 0} J)) C
⊢ HasLimitsOfShape J C
state_after: C : Type u
inst✝ : Category.{v, u} C
h : ∀ (J : Type w) {𝒥 : SmallCategory J}, FinCategory J → HasLimitsOfShape J C
J : Type
hJ : SmallCategory J
hhJ : FinCategory J
this : HasLimitsOfShape (ULiftHom (ULift.{w, 0} J)) C
l : J ≌ ULiftHom (ULift.{?u.1062, 0} J)
⊢ HasLimitsOfShape J C

tactic: apply @hasLimitsOfShape_of_equivalence (ULiftHom (ULift J))
  (@ULiftHom.category (ULift J) (@uliftCategory J hJ)) C _ J hJ
  (@Equivalence.symm J hJ (ULiftHom (ULift J))
  (@ULiftHom.category (ULift J) (@uliftCategory J hJ)) l) _
state_before: C : Type u
inst✝ : Category.{v, u} C
h : ∀ (J : Type w) {𝒥 : SmallCategory J}, FinCategory J → HasLimitsOfShape J C
J : Type
hJ : SmallCategory J
hhJ : FinCategory J
this : HasLimitsOfShape (ULiftHom (ULift.{w, 0} J)) C
l : J ≌ ULiftHom (ULift.{?u.1062, 0} J)
⊢ HasLimitsOfShape J C
state_after: no goals
Theorem: Complex.mul_I_re
File: Mathlib/Data/Complex/Basic.lean

tactic: simp
state_before: z : ℂ
⊢ (z * I).re = -z.im
state_after: no goals
Theorem: Real.summable_one_div_nat_rpow
File: Mathlib/Analysis/PSeries.lean

tactic: simp
state_before: p : ℝ
⊢ (Summable fun n => 1 / ↑n ^ p) ↔ 1 < p
state_after: no goals
Theorem: Real.isLittleO_exp_comp_exp_comp
File: Mathlib/Analysis/SpecialFunctions/Exp.lean

tactic: simp only [isLittleO_iff_tendsto, exp_ne_zero, ← exp_sub, ← tendsto_neg_atTop_iff, false_imp_iff,
  imp_true_iff, tendsto_exp_comp_nhds_zero, neg_sub]
state_before: α : Type u_1
x y z : ℝ
l : Filter α
f g : α → ℝ
⊢ ((fun x => rexp (f x)) =o[l] fun x => rexp (g x)) ↔ Tendsto (fun x => g x - f x) l atTop
state_after: no goals
Theorem: zpow_pow_orderOf
File: Mathlib/GroupTheory/OrderOfElement.lean

tactic: by_cases h : IsOfFinOrder x
state_before: G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝ : Group G
x y : G
i : ℤ
⊢ (x ^ i) ^ orderOf x = 1
state_after: case pos
G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝ : Group G
x y : G
i : ℤ
h : IsOfFinOrder x
⊢ (x ^ i) ^ orderOf x = 1

case neg
G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝ : Group G
x y : G
i : ℤ
h : ¬IsOfFinOrder x
⊢ (x ^ i) ^ orderOf x = 1

tactic: rw [← zpow_natCast, ← zpow_mul, mul_comm, zpow_mul, zpow_natCast, pow_orderOf_eq_one, one_zpow]
state_before: case pos
G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝ : Group G
x y : G
i : ℤ
h : IsOfFinOrder x
⊢ (x ^ i) ^ orderOf x = 1
state_after: no goals

tactic: rw [orderOf_eq_zero h, _root_.pow_zero]
state_before: case neg
G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝ : Group G
x y : G
i : ℤ
h : ¬IsOfFinOrder x
⊢ (x ^ i) ^ orderOf x = 1
state_after: no goals
Theorem: tprod_le_one
File: Mathlib/Topology/Algebra/InfiniteSum/Order.lean

tactic: by_cases hf : Multipliable f
state_before: ι : Type u_1
κ : Type u_2
α : Type u_3
inst✝² : OrderedCommMonoid α
inst✝¹ : TopologicalSpace α
inst✝ : OrderClosedTopology α
f g : ι → α
a a₁ a₂ : α
h : ∀ (i : ι), f i ≤ 1
⊢ ∏' (i : ι), f i ≤ 1
state_after: case pos
ι : Type u_1
κ : Type u_2
α : Type u_3
inst✝² : OrderedCommMonoid α
inst✝¹ : TopologicalSpace α
inst✝ : OrderClosedTopology α
f g : ι → α
a a₁ a₂ : α
h : ∀ (i : ι), f i ≤ 1
hf : Multipliable f
⊢ ∏' (i : ι), f i ≤ 1

case neg
ι : Type u_1
κ : Type u_2
α : Type u_3
inst✝² : OrderedCommMonoid α
inst✝¹ : TopologicalSpace α
inst✝ : OrderClosedTopology α
f g : ι → α
a a₁ a₂ : α
h : ∀ (i : ι), f i ≤ 1
hf : ¬Multipliable f
⊢ ∏' (i : ι), f i ≤ 1

tactic: exact hf.hasProd.le_one h
state_before: case pos
ι : Type u_1
κ : Type u_2
α : Type u_3
inst✝² : OrderedCommMonoid α
inst✝¹ : TopologicalSpace α
inst✝ : OrderClosedTopology α
f g : ι → α
a a₁ a₂ : α
h : ∀ (i : ι), f i ≤ 1
hf : Multipliable f
⊢ ∏' (i : ι), f i ≤ 1
state_after: no goals

tactic: rw [tprod_eq_one_of_not_multipliable hf]
state_before: case neg
ι : Type u_1
κ : Type u_2
α : Type u_3
inst✝² : OrderedCommMonoid α
inst✝¹ : TopologicalSpace α
inst✝ : OrderClosedTopology α
f g : ι → α
a a₁ a₂ : α
h : ∀ (i : ι), f i ≤ 1
hf : ¬Multipliable f
⊢ ∏' (i : ι), f i ≤ 1
state_after: no goals
Theorem: LieModule.traceForm_eq_zero_of_isNilpotent
File: Mathlib/Algebra/Lie/TraceForm.lean

tactic: ext x y
state_before: R : Type u_1
K : Type u_2
L : Type u_3
M : Type u_4
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : Module.Free R M
inst✝² : Module.Finite R M
inst✝¹ : IsReduced R
inst✝ : IsNilpotent R L M
⊢ traceForm R L M = 0
state_after: case H
R : Type u_1
K : Type u_2
L : Type u_3
M : Type u_4
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : Module.Free R M
inst✝² : Module.Finite R M
inst✝¹ : IsReduced R
inst✝ : IsNilpotent R L M
x y : L
⊢ ((traceForm R L M) x) y = (0 x) y

tactic: simp only [traceForm_apply_apply, LinearMap.zero_apply, ← isNilpotent_iff_eq_zero]
state_before: case H
R : Type u_1
K : Type u_2
L : Type u_3
M : Type u_4
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : Module.Free R M
inst✝² : Module.Finite R M
inst✝¹ : IsReduced R
inst✝ : IsNilpotent R L M
x y : L
⊢ ((traceForm R L M) x) y = (0 x) y
state_after: case H
R : Type u_1
K : Type u_2
L : Type u_3
M : Type u_4
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : Module.Free R M
inst✝² : Module.Finite R M
inst✝¹ : IsReduced R
inst✝ : IsNilpotent R L M
x y : L
⊢ _root_.IsNilpotent ((trace R M) (φ x ∘ₗ φ y))

tactic: apply LinearMap.isNilpotent_trace_of_isNilpotent
state_before: case H
R : Type u_1
K : Type u_2
L : Type u_3
M : Type u_4
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : Module.Free R M
inst✝² : Module.Finite R M
inst✝¹ : IsReduced R
inst✝ : IsNilpotent R L M
x y : L
⊢ _root_.IsNilpotent ((trace R M) (φ x ∘ₗ φ y))
state_after: case H.hf
R : Type u_1
K : Type u_2
L : Type u_3
M : Type u_4
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : Module.Free R M
inst✝² : Module.Finite R M
inst✝¹ : IsReduced R
inst✝ : IsNilpotent R L M
x y : L
⊢ _root_.IsNilpotent (φ x ∘ₗ φ y)

tactic: exact isNilpotent_toEnd_of_isNilpotent₂ R L M x y
state_before: case H.hf
R : Type u_1
K : Type u_2
L : Type u_3
M : Type u_4
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : Module.Free R M
inst✝² : Module.Finite R M
inst✝¹ : IsReduced R
inst✝ : IsNilpotent R L M
x y : L
⊢ _root_.IsNilpotent (φ x ∘ₗ φ y)
state_after: no goals
Theorem: Finset.empty_mem_ssubsets
File: Mathlib/Data/Finset/Powerset.lean

tactic: rw [mem_ssubsets, ssubset_iff_subset_ne]
state_before: α : Type u_1
s✝ t : Finset α
inst✝ : DecidableEq α
s : Finset α
h : s.Nonempty
⊢ ∅ ∈ s.ssubsets
state_after: α : Type u_1
s✝ t : Finset α
inst✝ : DecidableEq α
s : Finset α
h : s.Nonempty
⊢ ∅ ⊆ s ∧ ∅ ≠ s

tactic: exact ⟨empty_subset s, h.ne_empty.symm⟩
state_before: α : Type u_1
s✝ t : Finset α
inst✝ : DecidableEq α
s : Finset α
h : s.Nonempty
⊢ ∅ ⊆ s ∧ ∅ ≠ s
state_after: no goals