ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: Nat.odd_sub
File: Mathlib/Algebra/Ring/Parity.lean

Proof steps:
state_before: F : Type u_1
α : Type u_2
β : Type u_3
R : Type u_4
m n : ℕ
h : n ≤ m
⊢ Odd (m - n) ↔ (Odd m ↔ Even n)
state_after: no goals
tactic: rw [odd_iff_not_even, even_sub h, not_iff, odd_iff_not_even]
Theorem: Complex.image_exp_Ioc_eq_sphere
File: Mathlib/Analysis/SpecialFunctions/Complex/Arg.lean

Proof steps:
state_before: a x z : ℂ
⊢ (fun θ => cexp (↑θ * I)) '' Ioc (-π) π = sphere 0 1
state_after: case h
a x z x✝ : ℂ
⊢ x✝ ∈ (fun θ => cexp (↑θ * I)) '' Ioc (-π) π ↔ x✝ ∈ sphere 0 1
tactic: ext
state_before: case h
a x z x✝ : ℂ
⊢ x✝ ∈ (fun θ => cexp (↑θ * I)) '' Ioc (-π) π ↔ x✝ ∈ sphere 0 1
state_after: no goals
tactic: simpa using abs_eq_one_iff'.symm
Theorem: not_specializes_iff_exists_open
File: Mathlib/Topology/Inseparable.lean

Proof steps:
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
ι : Type u_5
π : ι → Type u_6
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : (i : ι) → TopologicalSpace (π i)
x y z : X
s : Set X
f g : X → Y
⊢ ¬x ⤳ y ↔ ∃ S, IsOpen S ∧ y ∈ S ∧ x ∉ S
state_after: X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
ι : Type u_5
π : ι → Type u_6
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : (i : ι) → TopologicalSpace (π i)
x y z : X
s : Set X
f g : X → Y
⊢ (¬∀ (s : Set X), IsOpen s → y ∈ s → x ∈ s) ↔ ∃ S, IsOpen S ∧ y ∈ S ∧ x ∉ S
tactic: rw [specializes_iff_forall_open]
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
ι : Type u_5
π : ι → Type u_6
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : (i : ι) → TopologicalSpace (π i)
x y z : X
s : Set X
f g : X → Y
⊢ (¬∀ (s : Set X), IsOpen s → y ∈ s → x ∈ s) ↔ ∃ S, IsOpen S ∧ y ∈ S ∧ x ∉ S
state_after: X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
ι : Type u_5
π : ι → Type u_6
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : (i : ι) → TopologicalSpace (π i)
x y z : X
s : Set X
f g : X → Y
⊢ (∃ s, IsOpen s ∧ y ∈ s ∧ x ∉ s) ↔ ∃ S, IsOpen S ∧ y ∈ S ∧ x ∉ S
tactic: push_neg
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
ι : Type u_5
π : ι → Type u_6
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : (i : ι) → TopologicalSpace (π i)
x y z : X
s : Set X
f g : X → Y
⊢ (∃ s, IsOpen s ∧ y ∈ s ∧ x ∉ s) ↔ ∃ S, IsOpen S ∧ y ∈ S ∧ x ∉ S
state_after: no goals
tactic: rfl
Theorem: MeasureTheory.withDensity_zero_left
File: Mathlib/MeasureTheory/Measure/WithDensity.lean

Proof steps:
state_before: α : Type u_1
m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
⊢ withDensity 0 f = 0
state_after: case h
α : Type u_1
m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
s : Set α
hs : MeasurableSet s
⊢ (withDensity 0 f) s = 0 s
tactic: ext s hs
state_before: case h
α : Type u_1
m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
s : Set α
hs : MeasurableSet s
⊢ (withDensity 0 f) s = 0 s
state_after: case h
α : Type u_1
m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
s : Set α
hs : MeasurableSet s
⊢ ∫⁻ (a : α) in s, f a ∂0 = 0 s
tactic: rw [withDensity_apply _ hs]
state_before: case h
α : Type u_1
m0 : MeasurableSpace α
μ : Measure α
f : α → ℝ≥0∞
s : Set α
hs : MeasurableSet s
⊢ ∫⁻ (a : α) in s, f a ∂0 = 0 s
state_after: no goals
tactic: simp
Theorem: Complex.norm_log_one_sub_inv_add_logTaylor_neg_le
File: Mathlib/Analysis/SpecialFunctions/Complex/LogBounds.lean

Proof steps:
state_before: n : ℕ
z : ℂ
hz : ‖z‖ < 1
⊢ ‖log (1 - z)⁻¹ + logTaylor (n + 1) (-z)‖ ≤ ‖z‖ ^ (n + 1) * (1 - ‖z‖)⁻¹ / (↑n + 1)
state_after: n : ℕ
z : ℂ
hz : ‖z‖ < 1
⊢ ‖log (1 + -z) - logTaylor (n + 1) (-z)‖ ≤ ‖z‖ ^ (n + 1) * (1 - ‖z‖)⁻¹ / (↑n + 1)
tactic: rw [sub_eq_add_neg,
    log_inv _ <| slitPlane_arg_ne_pi <| mem_slitPlane_of_norm_lt_one <| (norm_neg z).symm ▸ hz,
    ← sub_neg_eq_add, ← neg_sub', norm_neg]
state_before: n : ℕ
z : ℂ
hz : ‖z‖ < 1
⊢ ‖log (1 + -z) - logTaylor (n + 1) (-z)‖ ≤ ‖z‖ ^ (n + 1) * (1 - ‖z‖)⁻¹ / (↑n + 1)
state_after: no goals
tactic: convert norm_log_sub_logTaylor_le n <| (norm_neg z).symm ▸ hz using 4 <;> rw [norm_neg]
Theorem: Real.sin_sq_le_one
File: Mathlib/Data/Complex/Exponential.lean

Proof steps:
state_before: x y : ℝ
⊢ sin x ^ 2 ≤ 1
state_after: x y : ℝ
⊢ sin x ^ 2 ≤ sin x ^ 2 + cos x ^ 2
tactic: rw [← sin_sq_add_cos_sq x]
state_before: x y : ℝ
⊢ sin x ^ 2 ≤ sin x ^ 2 + cos x ^ 2
state_after: no goals
tactic: exact le_add_of_nonneg_right (sq_nonneg _)
Theorem: PiNat.res_length
File: Mathlib/Topology/MetricSpace/PiNat.lean

Proof steps:
state_before: E : ℕ → Type u_1
α : Type u_2
x : ℕ → α
n : ℕ
⊢ (res x n).length = n
state_after: no goals
tactic: induction n <;> simp [*]
Theorem: CategoryTheory.GrothendieckTopology.superset_covering
File: Mathlib/CategoryTheory/Sites/Grothendieck.lean

Proof steps:
state_before: C : Type u
inst✝ : Category.{v, u} C
X Y : C
S R : Sieve X
J : GrothendieckTopology C
Hss : S ≤ R
sjx : S ∈ J.sieves X
⊢ R ∈ J.sieves X
state_after: C : Type u
inst✝ : Category.{v, u} C
X Y : C
S R : Sieve X
J : GrothendieckTopology C
Hss : S ≤ R
sjx : S ∈ J.sieves X
⊢ ∀ (Y : C) (f : Y ⟶ X), S.arrows f → Sieve.pullback f R ∈ J.sieves Y
tactic: apply J.transitive sjx R fun Y f hf => _
state_before: C : Type u
inst✝ : Category.{v, u} C
X Y : C
S R : Sieve X
J : GrothendieckTopology C
Hss : S ≤ R
sjx : S ∈ J.sieves X
⊢ ∀ (Y : C) (f : Y ⟶ X), S.arrows f → Sieve.pullback f R ∈ J.sieves Y
state_after: C : Type u
inst✝ : Category.{v, u} C
X Y✝ : C
S R : Sieve X
J : GrothendieckTopology C
Hss : S ≤ R
sjx : S ∈ J.sieves X
Y : C
f : Y ⟶ X
hf : S.arrows f
⊢ Sieve.pullback f R ∈ J.sieves Y
tactic: intros Y f hf
state_before: C : Type u
inst✝ : Category.{v, u} C
X Y✝ : C
S R : Sieve X
J : GrothendieckTopology C
Hss : S ≤ R
sjx : S ∈ J.sieves X
Y : C
f : Y ⟶ X
hf : S.arrows f
⊢ Sieve.pullback f R ∈ J.sieves Y
state_after: case a
C : Type u
inst✝ : Category.{v, u} C
X Y✝ : C
S R : Sieve X
J : GrothendieckTopology C
Hss : S ≤ R
sjx : S ∈ J.sieves X
Y : C
f : Y ⟶ X
hf : S.arrows f
⊢ Sieve.pullback f R = ⊤
tactic: apply covering_of_eq_top
state_before: case a
C : Type u
inst✝ : Category.{v, u} C
X Y✝ : C
S R : Sieve X
J : GrothendieckTopology C
Hss : S ≤ R
sjx : S ∈ J.sieves X
Y : C
f : Y ⟶ X
hf : S.arrows f
⊢ Sieve.pullback f R = ⊤
state_after: case a
C : Type u
inst✝ : Category.{v, u} C
X Y✝ : C
S R : Sieve X
J : GrothendieckTopology C
Hss : S ≤ R
sjx : S ∈ J.sieves X
Y : C
f : Y ⟶ X
hf : S.arrows f
⊢ Sieve.pullback f S ≤ Sieve.pullback f R
tactic: rw [← top_le_iff, ← S.pullback_eq_top_of_mem hf]
state_before: case a
C : Type u
inst✝ : Category.{v, u} C
X Y✝ : C
S R : Sieve X
J : GrothendieckTopology C
Hss : S ≤ R
sjx : S ∈ J.sieves X
Y : C
f : Y ⟶ X
hf : S.arrows f
⊢ Sieve.pullback f S ≤ Sieve.pullback f R
state_after: no goals
tactic: apply Sieve.pullback_monotone _ Hss
Theorem: Filter.map₂_map_left
File: Mathlib/Order/Filter/NAry.lean

Proof steps:
state_before: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
γ' : Type u_6
δ : Type u_7
δ' : Type u_8
ε : Type u_9
ε' : Type u_10
m✝ : α → β → γ
f f₁ f₂ : Filter α
g g₁ g₂ : Filter β
h h₁ h₂ : Filter γ
s s₁ s₂ : Set α
t t₁ t₂ : Set β
u : Set γ
v : Set δ
a : α
b : β
c : γ
m : γ → β → δ
n : α → γ
⊢ map₂ m (map n f) g = map₂ (fun a b => m (n a) b) f g
state_after: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
γ' : Type u_6
δ : Type u_7
δ' : Type u_8
ε : Type u_9
ε' : Type u_10
m✝ : α → β → γ
f f₁ f₂ : Filter α
g g₁ g₂ : Filter β
h h₁ h₂ : Filter γ
s s₁ s₂ : Set α
t t₁ t₂ : Set β
u : Set γ
v : Set δ
a : α
b : β
c : γ
m : γ → β → δ
n : α → γ
⊢ map ((fun p => m p.1 p.2) ∘ fun p => (n p.1, id p.2)) (f ×ˢ g) = map (fun p => m (n p.1) p.2) (f ×ˢ g)
tactic: rw [← map_prod_eq_map₂, ← map_prod_eq_map₂, ← @map_id _ g, prod_map_map_eq, map_map, map_id]
state_before: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
γ' : Type u_6
δ : Type u_7
δ' : Type u_8
ε : Type u_9
ε' : Type u_10
m✝ : α → β → γ
f f₁ f₂ : Filter α
g g₁ g₂ : Filter β
h h₁ h₂ : Filter γ
s s₁ s₂ : Set α
t t₁ t₂ : Set β
u : Set γ
v : Set δ
a : α
b : β
c : γ
m : γ → β → δ
n : α → γ
⊢ map ((fun p => m p.1 p.2) ∘ fun p => (n p.1, id p.2)) (f ×ˢ g) = map (fun p => m (n p.1) p.2) (f ×ˢ g)
state_after: no goals
tactic: rfl
Theorem: Cardinal.mk_insert_le
File: Mathlib/SetTheory/Cardinal/Basic.lean

Proof steps:
state_before: α✝ β : Type u
c : Cardinal.{?u.215498}
α : Type u
s : Set α
a : α
⊢ #↑(insert a s) ≤ #↑s + 1
state_after: case pos
α✝ β : Type u
c : Cardinal.{?u.215498}
α : Type u
s : Set α
a : α
h : a ∈ s
⊢ #↑(insert a s) ≤ #↑s + 1

case neg
α✝ β : Type u
c : Cardinal.{?u.215498}
α : Type u
s : Set α
a : α
h : a ∉ s
⊢ #↑(insert a s) ≤ #↑s + 1
tactic: by_cases h : a ∈ s
Theorem: Polynomial.erase_same
File: Mathlib/Algebra/Polynomial/Basic.lean

Proof steps:
state_before: R : Type u
a b : R
m n✝ : ℕ
inst✝ : Semiring R
p✝ q p : R[X]
n : ℕ
⊢ (erase n p).coeff n = 0
state_after: no goals
tactic: simp [coeff_erase]
Theorem: SimpleGraph.isNClique_map_iff
File: Mathlib/Combinatorics/SimpleGraph/Clique.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
G H : SimpleGraph α
n : ℕ
s : Finset α
a b c : α
hn : 1 < n
t : Finset β
f : α ↪ β
⊢ (SimpleGraph.map f G).IsNClique n t ↔ ∃ s, G.IsNClique n s ∧ map f s = t
state_after: α : Type u_1
β : Type u_2
G H : SimpleGraph α
n : ℕ
s : Finset α
a b c : α
hn : 1 < n
t : Finset β
f : α ↪ β
⊢ (∃ s, G.IsClique ↑s ∧ map f s = t) ∧ t.card = n ↔ ∃ s, G.IsNClique n s ∧ map f s = t
tactic: rw [isNClique_iff, isClique_map_finset_iff, or_and_right,
    or_iff_right (by rintro ⟨h', rfl⟩; exact h'.not_lt hn)]
state_before: α : Type u_1
β : Type u_2
G H : SimpleGraph α
n : ℕ
s : Finset α
a b c : α
hn : 1 < n
t : Finset β
f : α ↪ β
⊢ (∃ s, G.IsClique ↑s ∧ map f s = t) ∧ t.card = n ↔ ∃ s, G.IsNClique n s ∧ map f s = t
state_after: case mp
α : Type u_1
β : Type u_2
G H : SimpleGraph α
n : ℕ
s : Finset α
a b c : α
hn : 1 < n
t : Finset β
f : α ↪ β
⊢ (∃ s, G.IsClique ↑s ∧ map f s = t) ∧ t.card = n → ∃ s, G.IsNClique n s ∧ map f s = t

case mpr
α : Type u_1
β : Type u_2
G H : SimpleGraph α
n : ℕ
s : Finset α
a b c : α
hn : 1 < n
t : Finset β
f : α ↪ β
⊢ (∃ s, G.IsNClique n s ∧ map f s = t) → (∃ s, G.IsClique ↑s ∧ map f s = t) ∧ t.card = n
tactic: constructor
state_before: case mpr
α : Type u_1
β : Type u_2
G H : SimpleGraph α
n : ℕ
s : Finset α
a b c : α
hn : 1 < n
t : Finset β
f : α ↪ β
⊢ (∃ s, G.IsNClique n s ∧ map f s = t) → (∃ s, G.IsClique ↑s ∧ map f s = t) ∧ t.card = n
state_after: case mpr.intro.intro
α : Type u_1
β : Type u_2
G H : SimpleGraph α
n : ℕ
s✝ : Finset α
a b c : α
hn : 1 < n
f : α ↪ β
s : Finset α
hs : G.IsNClique n s
⊢ (∃ s_1, G.IsClique ↑s_1 ∧ map f s_1 = map f s) ∧ (map f s).card = n
tactic: rintro ⟨s, hs, rfl⟩
state_before: case mpr.intro.intro
α : Type u_1
β : Type u_2
G H : SimpleGraph α
n : ℕ
s✝ : Finset α
a b c : α
hn : 1 < n
f : α ↪ β
s : Finset α
hs : G.IsNClique n s
⊢ (∃ s_1, G.IsClique ↑s_1 ∧ map f s_1 = map f s) ∧ (map f s).card = n
state_after: no goals
tactic: simp [hs.card_eq, hs.clique]
Theorem: CategoryTheory.ShortComplex.f'_cyclesMap'
File: Mathlib/Algebra/Homology/ShortComplex/LeftHomology.lean

Proof steps:
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
φ : S₁ ⟶ S₂
h₁ : S₁.LeftHomologyData
h₂ : S₂.LeftHomologyData
⊢ h₁.f' ≫ cyclesMap' φ h₁ h₂ = φ.τ₁ ≫ h₂.f'
state_after: no goals
tactic: simp only [← cancel_mono h₂.i, assoc, φ.comm₁₂, cyclesMap'_i,
    LeftHomologyData.f'_i_assoc, LeftHomologyData.f'_i]
Theorem: Finset.addDysonETransform.vadd_finset_snd_subset_fst
File: Mathlib/Combinatorics/Additive/ETransform.lean

Proof steps:
state_before: α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : CommGroup α
e : α
x : Finset α × Finset α
⊢ e • (mulDysonETransform e x).2 ⊆ (mulDysonETransform e x).1
state_after: α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : CommGroup α
e : α
x : Finset α × Finset α
⊢ e • (x.2 ∩ e⁻¹ • x.1) ⊆ x.1 ∪ e • x.2
tactic: dsimp
state_before: α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : CommGroup α
e : α
x : Finset α × Finset α
⊢ e • (x.2 ∩ e⁻¹ • x.1) ⊆ x.1 ∪ e • x.2
state_after: α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : CommGroup α
e : α
x : Finset α × Finset α
⊢ x.1 ∩ e • x.2 ⊆ x.1 ∪ e • x.2
tactic: rw [smul_finset_inter, smul_inv_smul, inter_comm]
state_before: α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : CommGroup α
e : α
x : Finset α × Finset α
⊢ x.1 ∩ e • x.2 ⊆ x.1 ∪ e • x.2
state_after: no goals
tactic: exact inter_subset_union
Theorem: NNReal.norm_eq
File: Mathlib/Analysis/Normed/Field/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
x : ℝ≥0
⊢ ‖↑x‖ = ↑x
state_after: no goals
tactic: rw [Real.norm_eq_abs, x.abs_eq]
Theorem: Fin.pos_iff_ne_zero'
File: Mathlib/Data/Fin/Basic.lean

Proof steps:
state_before: n m : ℕ
inst✝ : NeZero n
a : Fin n
⊢ 0 < a ↔ a ≠ 0
state_after: no goals
tactic: rw [← val_fin_lt, val_zero', Nat.pos_iff_ne_zero, Ne, Ne, Fin.ext_iff, val_zero']
Theorem: AlgebraicGeometry.disjointGlueData_V
File: Mathlib/AlgebraicGeometry/Limits.lean

Proof steps:
state_before: ι : Type u
f : ι → Scheme
i j : __spread✝⁻⁰.J
⊢ IsOpenImmersion (__spread✝⁻⁰.f i j)
state_after: ι : Type u
f : ι → Scheme
i j : __spread✝⁻⁰.J
⊢ IsOpenImmersion (if h : i = j then eqToHom ⋯ else eqToHom ⋯ ≫ (f i).emptyTo)
tactic: dsimp only [GlueData.ofGlueData', GlueData'.f', disjointGlueData']
state_before: ι : Type u
f : ι → Scheme
i j : __spread✝⁻⁰.J
⊢ IsOpenImmersion (if h : i = j then eqToHom ⋯ else eqToHom ⋯ ≫ (f i).emptyTo)
state_after: no goals
tactic: split <;> infer_instance
Theorem: CategoryTheory.Square.opFunctor_map_τ₂
File: Mathlib/CategoryTheory/Square.lean

Proof steps:
state_before: C : Type u
inst✝¹ : Category.{v, u} C
D : Type u'
inst✝ : Category.{v', u'} D
X✝ Y✝ : (Square C)ᵒᵖ
φ : X✝ ⟶ Y✝
⊢ (((fun sq => (Opposite.unop sq).op) X✝).f₁₂ ≫ φ.unop.τ₂.op).unop =
    (φ.unop.τ₄.op ≫ ((fun sq => (Opposite.unop sq).op) Y✝).f₁₂).unop
state_after: no goals
tactic: simp
state_before: C : Type u
inst✝¹ : Category.{v, u} C
D : Type u'
inst✝ : Category.{v', u'} D
X✝ Y✝ : (Square C)ᵒᵖ
φ : X✝ ⟶ Y✝
⊢ (((fun sq => (Opposite.unop sq).op) X✝).f₁₃ ≫ φ.unop.τ₃.op).unop =
    (φ.unop.τ₄.op ≫ ((fun sq => (Opposite.unop sq).op) Y✝).f₁₃).unop
state_after: no goals
tactic: simp
state_before: C : Type u
inst✝¹ : Category.{v, u} C
D : Type u'
inst✝ : Category.{v', u'} D
X✝ Y✝ : (Square C)ᵒᵖ
φ : X✝ ⟶ Y✝
⊢ (((fun sq => (Opposite.unop sq).op) X✝).f₂₄ ≫ φ.unop.τ₁.op).unop =
    (φ.unop.τ₂.op ≫ ((fun sq => (Opposite.unop sq).op) Y✝).f₂₄).unop
state_after: no goals
tactic: simp
state_before: C : Type u
inst✝¹ : Category.{v, u} C
D : Type u'
inst✝ : Category.{v', u'} D
X✝ Y✝ : (Square C)ᵒᵖ
φ : X✝ ⟶ Y✝
⊢ (((fun sq => (Opposite.unop sq).op) X✝).f₃₄ ≫ φ.unop.τ₁.op).unop =
    (φ.unop.τ₃.op ≫ ((fun sq => (Opposite.unop sq).op) Y✝).f₃₄).unop
state_after: no goals
tactic: simp
Theorem: forall_eq_apply_imp_iff'
File: Mathlib/Logic/Basic.lean

Proof steps:
state_before: α : Sort u_1
β : Sort u_2
p✝ q : α → Prop
f : α → β
p : β → Prop
⊢ (∀ (a : α) (b : β), b = f a → p b) ↔ ∀ (a : α), p (f a)
state_after: no goals
tactic: simp
Theorem: Pretrivialization.symm_trans_symm
File: Mathlib/Topology/FiberBundle/Trivialization.lean

Proof steps:
state_before: ι : Type u_1
B : Type u_2
F : Type u_3
E : B → Type u_4
Z : Type u_5
inst✝¹ : TopologicalSpace B
inst✝ : TopologicalSpace F
proj : Z → B
e✝ : Pretrivialization F proj
x : Z
e e' : Pretrivialization F proj
⊢ (e.symm.trans e'.toPartialEquiv).symm = e'.symm.trans e.toPartialEquiv
state_after: no goals
tactic: rw [PartialEquiv.trans_symm_eq_symm_trans_symm, PartialEquiv.symm_symm]
Theorem: infPrime_iff_not_isMax
File: Mathlib/Order/Irreducible.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
inst✝ : LinearOrder α
a : α
⊢ ∀ ⦃b c : α⦄, b ⊓ c ≤ a → b ≤ a ∨ c ≤ a
state_after: no goals
tactic: simp
Theorem: Finset.map_add_left_Icc
File: Mathlib/Algebra/Order/Interval/Finset.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
inst✝² : OrderedCancelAddCommMonoid α
inst✝¹ : ExistsAddOfLE α
inst✝ : LocallyFiniteOrder α
a b c : α
⊢ map (addLeftEmbedding c) (Icc a b) = Icc (c + a) (c + b)
state_after: ι : Type u_1
α : Type u_2
inst✝² : OrderedCancelAddCommMonoid α
inst✝¹ : ExistsAddOfLE α
inst✝ : LocallyFiniteOrder α
a b c : α
⊢ ⇑(addLeftEmbedding c) '' Set.Icc a b = Set.Icc (c + a) (c + b)
tactic: rw [← coe_inj, coe_map, coe_Icc, coe_Icc]
state_before: ι : Type u_1
α : Type u_2
inst✝² : OrderedCancelAddCommMonoid α
inst✝¹ : ExistsAddOfLE α
inst✝ : LocallyFiniteOrder α
a b c : α
⊢ ⇑(addLeftEmbedding c) '' Set.Icc a b = Set.Icc (c + a) (c + b)
state_after: no goals
tactic: exact Set.image_const_add_Icc _ _ _
Theorem: ENNReal.tsum_iUnion_le
File: Mathlib/Topology/Instances/ENNReal.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
a b c d : ℝ≥0∞
r p q : ℝ≥0
x y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
f✝ g : α → ℝ≥0∞
ι : Type u_4
inst✝ : Fintype ι
f : α → ℝ≥0∞
t : ι → Set α
⊢ ∑' (x : ↑(⋃ i, t i)), f ↑x ≤ ∑ i : ι, ∑' (x : ↑(t i)), f ↑x
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
a b c d : ℝ≥0∞
r p q : ℝ≥0
x y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
f✝ g : α → ℝ≥0∞
ι : Type u_4
inst✝ : Fintype ι
f : α → ℝ≥0∞
t : ι → Set α
⊢ ∑' (x : ↑(⋃ i, t i)), f ↑x ≤ ∑' (b : ι) (x : ↑(t b)), f ↑x
tactic: rw [← tsum_fintype]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
a b c d : ℝ≥0∞
r p q : ℝ≥0
x y z ε ε₁ ε₂ : ℝ≥0∞
s : Set ℝ≥0∞
f✝ g : α → ℝ≥0∞
ι : Type u_4
inst✝ : Fintype ι
f : α → ℝ≥0∞
t : ι → Set α
⊢ ∑' (x : ↑(⋃ i, t i)), f ↑x ≤ ∑' (b : ι) (x : ↑(t b)), f ↑x
state_after: no goals
tactic: exact tsum_iUnion_le_tsum f t
Theorem: Ordnode.Raised.add_left
File: Mathlib/Data/Ordmap/Ordset.lean

Proof steps:
state_before: α : Type u_1
k n m : ℕ
H : Raised n m
⊢ Raised (k + n) (k + m)
state_after: case inl
α : Type u_1
k m : ℕ
⊢ Raised (k + m) (k + m)

case inr
α : Type u_1
k n : ℕ
⊢ Raised (k + n) (k + (n + 1))
tactic: rcases H with (rfl | rfl)
Theorem: AddSubmonoid.pow_eq_closure_pow_set
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✝ : Semiring R
s : AddSubmonoid R
n : ℕ
⊢ s ^ n = closure (↑s ^ n)
state_after: no goals
tactic: rw [← closure_pow, closure_eq]
Theorem: Asymptotics.IsBigO.eq_zero_of_norm_pow_within
File: Mathlib/Analysis/Asymptotics/Asymptotics.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
E : Type u_3
F : Type u_4
G : Type u_5
E' : Type u_6
F' : Type u_7
G' : Type u_8
E'' : Type u_9
F'' : Type u_10
G'' : Type u_11
E''' : Type u_12
R : Type u_13
R' : Type u_14
𝕜 : Type u_15
𝕜' : Type u_16
inst✝¹³ : Norm E
inst✝¹² : Norm F
inst✝¹¹ : Norm G
inst✝¹⁰ : SeminormedAddCommGroup E'
inst✝⁹ : SeminormedAddCommGroup F'
inst✝⁸ : SeminormedAddCommGroup G'
inst✝⁷ : NormedAddCommGroup E''
inst✝⁶ : NormedAddCommGroup F''
inst✝⁵ : NormedAddCommGroup G''
inst✝⁴ : SeminormedRing R
inst✝³ : SeminormedAddGroup E'''
inst✝² : SeminormedRing R'
inst✝¹ : NormedDivisionRing 𝕜
inst✝ : NormedDivisionRing 𝕜'
c c' c₁ c₂ : ℝ
f✝ : α → E
g : α → F
k : α → G
f' : α → E'
g' : α → F'
k' : α → G'
f'' : α → E''
g'' : α → F''
k'' : α → G''
l l' : Filter α
f : E'' → F''
s : Set E''
x₀ : E''
n : ℕ
h : f =O[𝓝[s] x₀] fun x => ‖x - x₀‖ ^ n
hx₀ : x₀ ∈ s
hn : n ≠ 0
⊢ ‖x₀ - x₀‖ ^ n = 0
state_after: no goals
tactic: simp_rw [sub_self, norm_zero, zero_pow hn]
Theorem: CategoryTheory.Center.tensorHom_f
File: Mathlib/CategoryTheory/Monoidal/Center.lean

Proof steps:
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : MonoidalCategory C
X₁ Y₁ X₂ Y₂ : Center C
f : X₁ ⟶ Y₁
g : X₂ ⟶ Y₂
U : C
⊢ (f.f ⊗ g.f) ▷ U ≫ ((Y₁.tensorObj Y₂).snd.β U).hom = ((X₁.tensorObj X₂).snd.β U).hom ≫ U ◁ (f.f ⊗ g.f)
state_after: no goals
tactic: rw [tensorHom_def, comp_whiskerRight_assoc, whiskerLeft_comm, whiskerRight_comm_assoc,
      MonoidalCategory.whiskerLeft_comp]
Theorem: LinearEquiv.fst_comp_prodComm
File: Mathlib/LinearAlgebra/Prod.lean

Proof steps:
state_before: R : Type u
K : Type u'
M : Type v
V : Type v'
M₂ : Type w
V₂ : Type w'
M₃ : Type y
V₃ : Type y'
M₄ : Type z
ι : Type x
M₅ : Type u_1
M₆ : Type u_2
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M
inst✝² : AddCommMonoid M₂
inst✝¹ : Module R M
inst✝ : Module R M₂
⊢ LinearMap.fst R M₂ M ∘ₗ ↑(prodComm R M M₂) = LinearMap.snd R M M₂
state_after: no goals
tactic: ext <;> simp
Theorem: CliffordAlgebra.map_id
File: Mathlib/LinearAlgebra/CliffordAlgebra/Basic.lean

Proof steps:
state_before: R : Type u_1
inst✝¹⁰ : CommRing R
M : Type u_2
inst✝⁹ : AddCommGroup M
inst✝⁸ : Module R M
Q : QuadraticForm R M
n : ℕ
A : Type u_3
inst✝⁷ : Semiring A
inst✝⁶ : Algebra R A
M₁ : Type u_4
M₂ : Type u_5
M₃ : Type u_6
inst✝⁵ : AddCommGroup M₁
inst✝⁴ : AddCommGroup M₂
inst✝³ : AddCommGroup M₃
inst✝² : Module R M₁
inst✝¹ : Module R M₂
inst✝ : Module R M₃
Q₁ : QuadraticForm R M₁
Q₂ : QuadraticForm R M₂
Q₃ : QuadraticForm R M₃
⊢ map (QuadraticMap.Isometry.id Q₁) = AlgHom.id R (CliffordAlgebra Q₁)
state_after: case a.h
R : Type u_1
inst✝¹⁰ : CommRing R
M : Type u_2
inst✝⁹ : AddCommGroup M
inst✝⁸ : Module R M
Q : QuadraticForm R M
n : ℕ
A : Type u_3
inst✝⁷ : Semiring A
inst✝⁶ : Algebra R A
M₁ : Type u_4
M₂ : Type u_5
M₃ : Type u_6
inst✝⁵ : AddCommGroup M₁
inst✝⁴ : AddCommGroup M₂
inst✝³ : AddCommGroup M₃
inst✝² : Module R M₁
inst✝¹ : Module R M₂
inst✝ : Module R M₃
Q₁ : QuadraticForm R M₁
Q₂ : QuadraticForm R M₂
Q₃ : QuadraticForm R M₃
m : M₁
⊢ ((map (QuadraticMap.Isometry.id Q₁)).toLinearMap ∘ₗ ι Q₁) m =
    ((AlgHom.id R (CliffordAlgebra Q₁)).toLinearMap ∘ₗ ι Q₁) m
tactic: ext m
state_before: case a.h
R : Type u_1
inst✝¹⁰ : CommRing R
M : Type u_2
inst✝⁹ : AddCommGroup M
inst✝⁸ : Module R M
Q : QuadraticForm R M
n : ℕ
A : Type u_3
inst✝⁷ : Semiring A
inst✝⁶ : Algebra R A
M₁ : Type u_4
M₂ : Type u_5
M₃ : Type u_6
inst✝⁵ : AddCommGroup M₁
inst✝⁴ : AddCommGroup M₂
inst✝³ : AddCommGroup M₃
inst✝² : Module R M₁
inst✝¹ : Module R M₂
inst✝ : Module R M₃
Q₁ : QuadraticForm R M₁
Q₂ : QuadraticForm R M₂
Q₃ : QuadraticForm R M₃
m : M₁
⊢ ((map (QuadraticMap.Isometry.id Q₁)).toLinearMap ∘ₗ ι Q₁) m =
    ((AlgHom.id R (CliffordAlgebra Q₁)).toLinearMap ∘ₗ ι Q₁) m
state_after: no goals
tactic: exact map_apply_ι _ m
Theorem: Module.finite_of_finrank_eq_succ
File: Mathlib/LinearAlgebra/Dimension/Free.lean

Proof steps:
state_before: R : Type u
M M₁ : Type v
M' : Type v'
inst✝¹⁰ : Ring R
inst✝⁹ : StrongRankCondition R
inst✝⁸ : AddCommGroup M
inst✝⁷ : Module R M
inst✝⁶ : Free R M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : Module R M'
inst✝³ : Free R M'
inst✝² : AddCommGroup M₁
inst✝¹ : Module R M₁
inst✝ : Free R M₁
n : ℕ
hn : finrank R M = n.succ
⊢ 0 < finrank R M
state_after: R : Type u
M M₁ : Type v
M' : Type v'
inst✝¹⁰ : Ring R
inst✝⁹ : StrongRankCondition R
inst✝⁸ : AddCommGroup M
inst✝⁷ : Module R M
inst✝⁶ : Free R M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : Module R M'
inst✝³ : Free R M'
inst✝² : AddCommGroup M₁
inst✝¹ : Module R M₁
inst✝ : Free R M₁
n : ℕ
hn : finrank R M = n.succ
⊢ 0 < n.succ
tactic: rw [hn]
state_before: R : Type u
M M₁ : Type v
M' : Type v'
inst✝¹⁰ : Ring R
inst✝⁹ : StrongRankCondition R
inst✝⁸ : AddCommGroup M
inst✝⁷ : Module R M
inst✝⁶ : Free R M
inst✝⁵ : AddCommGroup M'
inst✝⁴ : Module R M'
inst✝³ : Free R M'
inst✝² : AddCommGroup M₁
inst✝¹ : Module R M₁
inst✝ : Free R M₁
n : ℕ
hn : finrank R M = n.succ
⊢ 0 < n.succ
state_after: no goals
tactic: exact n.succ_pos
Theorem: spectrum.of_subsingleton
File: Mathlib/Algebra/Algebra/Spectrum.lean

Proof steps:
state_before: R : Type u
A : Type v
inst✝³ : CommSemiring R
inst✝² : Ring A
inst✝¹ : Algebra R A
inst✝ : Subsingleton A
a : A
⊢ σ a = ∅
state_after: no goals
tactic: rw [spectrum, resolventSet_of_subsingleton, Set.compl_univ]
Theorem: CategoryTheory.Presieve.compatible_iff_sieveCompatible
File: Mathlib/CategoryTheory/Sites/IsSheafFor.lean

Proof steps:
state_before: C : Type u₁
inst✝ : Category.{v₁, u₁} C
P Q U : Cᵒᵖ ⥤ Type w
X Y : C
S : Sieve X
R : Presieve X
x : FamilyOfElements P S.arrows
⊢ x.Compatible ↔ x.SieveCompatible
state_after: case mp
C : Type u₁
inst✝ : Category.{v₁, u₁} C
P Q U : Cᵒᵖ ⥤ Type w
X Y : C
S : Sieve X
R : Presieve X
x : FamilyOfElements P S.arrows
⊢ x.Compatible → x.SieveCompatible

case mpr
C : Type u₁
inst✝ : Category.{v₁, u₁} C
P Q U : Cᵒᵖ ⥤ Type w
X Y : C
S : Sieve X
R : Presieve X
x : FamilyOfElements P S.arrows
⊢ x.SieveCompatible → x.Compatible
tactic: constructor