ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
Theorem: SzemerediRegularity.a_add_one_le_four_pow_parts_card
File: Mathlib/Combinatorics/SimpleGraph/Regularity/Bound.lean

Proof steps:
state_before: α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
P : Finpartition univ
u : Finset α
ε : ℝ
⊢ a + 1 ≤ 4 ^ P.parts.card
state_after: α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
P : Finpartition univ
u : Finset α
ε : ℝ
h : 1 ≤ 4 ^ P.parts.card
⊢ a + 1 ≤ 4 ^ P.parts.card
tactic: have h : 1 ≤ 4 ^ P.parts.card := one_le_pow_of_one_le (by norm_num) _
state_before: α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
P : Finpartition univ
u : Finset α
ε : ℝ
h : 1 ≤ 4 ^ P.parts.card
⊢ a + 1 ≤ 4 ^ P.parts.card
state_after: α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
P : Finpartition univ
u : Finset α
ε : ℝ
h : 1 ≤ 4 ^ P.parts.card
⊢ Fintype.card α / P.parts.card - Fintype.card α / P.parts.card / 4 ^ P.parts.card * 4 ^ P.parts.card + 1 ≤
    4 ^ P.parts.card
tactic: rw [stepBound, ← Nat.div_div_eq_div_mul]
state_before: α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
P : Finpartition univ
u : Finset α
ε : ℝ
h : 1 ≤ 4 ^ P.parts.card
⊢ Fintype.card α / P.parts.card - Fintype.card α / P.parts.card / 4 ^ P.parts.card * 4 ^ P.parts.card + 1 ≤
    4 ^ P.parts.card
state_after: α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
P : Finpartition univ
u : Finset α
ε : ℝ
h : 1 ≤ 4 ^ P.parts.card
⊢ Fintype.card α / P.parts.card - Fintype.card α / P.parts.card / 4 ^ P.parts.card * 4 ^ P.parts.card + 1 ≤
    4 ^ P.parts.card - 1 + 1
tactic: conv_rhs => rw [← Nat.sub_add_cancel h]
state_before: α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
P : Finpartition univ
u : Finset α
ε : ℝ
h : 1 ≤ 4 ^ P.parts.card
⊢ Fintype.card α / P.parts.card - Fintype.card α / P.parts.card / 4 ^ P.parts.card * 4 ^ P.parts.card + 1 ≤
    4 ^ P.parts.card - 1 + 1
state_after: α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
P : Finpartition univ
u : Finset α
ε : ℝ
h : 1 ≤ 4 ^ P.parts.card
⊢ Fintype.card α / P.parts.card ≤
    Fintype.card α / P.parts.card / 4 ^ P.parts.card * 4 ^ P.parts.card + 4 ^ P.parts.card - 1
tactic: rw [add_le_add_iff_right, tsub_le_iff_left, ← Nat.add_sub_assoc h]
state_before: α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
P : Finpartition univ
u : Finset α
ε : ℝ
h : 1 ≤ 4 ^ P.parts.card
⊢ Fintype.card α / P.parts.card ≤
    Fintype.card α / P.parts.card / 4 ^ P.parts.card * 4 ^ P.parts.card + 4 ^ P.parts.card - 1
state_after: no goals
tactic: exact Nat.le_sub_one_of_lt (Nat.lt_div_mul_add h)
Theorem: AkraBazziRecurrence.asympBound_pos
File: Mathlib/Computability/AkraBazzi/AkraBazzi.lean

Proof steps:
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : Nonempty α
T : ℕ → ℝ
g : ℝ → ℝ
a b : α → ℝ
r : α → ℕ → ℕ
R : AkraBazziRecurrence T g a b r
n : ℕ
hn : 0 < n
⊢ 0 < asympBound g a b n
state_after: no goals
tactic: calc 0 < (n : ℝ) ^ p a b * (1 + 0) := by aesop (add safe Real.rpow_pos_of_pos)
       _ ≤ asympBound g a b n := by
                    simp only [asympBound_def']
                    gcongr n^p a b * (1 + ?_)
                    have := R.g_nonneg
                    aesop (add safe Real.rpow_nonneg,
                               safe div_nonneg,
                               safe Finset.sum_nonneg)
Theorem: ENNReal.one_sub_inv_two
File: Mathlib/Data/ENNReal/Inv.lean

Proof steps:
state_before: a b c d : ℝ≥0∞
r p q : ℝ≥0
⊢ 1 - 2⁻¹ = 2⁻¹
state_after: no goals
tactic: simpa only [div_eq_mul_inv, one_mul] using sub_half one_ne_top
Theorem: SimpleGraph.Walk.support_dropUntil_subset
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✝ w✝ x✝ y : V
inst✝ : DecidableEq V
u v w : V
p : G.Walk v w
h : u ∈ p.support
x : V
hx : x ∈ (p.dropUntil u h).support
⊢ x ∈ p.support
state_after: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u✝ v✝ w✝ x✝ y : V
inst✝ : DecidableEq V
u v w : V
p : G.Walk v w
h : u ∈ p.support
x : V
hx : x ∈ (p.dropUntil u h).support
⊢ x ∈ (p.takeUntil u h).support ∨ x ∈ (p.dropUntil u h).support
tactic: rw [← take_spec p h, mem_support_append_iff]
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u✝ v✝ w✝ x✝ y : V
inst✝ : DecidableEq V
u v w : V
p : G.Walk v w
h : u ∈ p.support
x : V
hx : x ∈ (p.dropUntil u h).support
⊢ x ∈ (p.takeUntil u h).support ∨ x ∈ (p.dropUntil u h).support
state_after: no goals
tactic: exact Or.inr hx
Theorem: pow_mod_card
File: Mathlib/GroupTheory/OrderOfElement.lean

Proof steps:
state_before: G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝¹ : Group G
inst✝ : Fintype G
x : G
n✝ : ℕ
a : G
n : ℕ
⊢ a ^ (n % card G) = a ^ n
state_after: no goals
tactic: rw [eq_comm, ← pow_mod_orderOf, ← Nat.mod_mod_of_dvd n orderOf_dvd_card, pow_mod_orderOf]
Theorem: Set.image_add_const_uIcc
File: Mathlib/Data/Set/Pointwise/Interval.lean

Proof steps:
state_before: α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
a b c d : α
⊢ (fun x => x + a) '' [[b, c]] = [[b + a, c + a]]
state_after: no goals
tactic: simp
Theorem: nonpos_of_add_le_left
File: Mathlib/Algebra/Order/Monoid/Unbundled/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
inst✝² : MulOneClass α
inst✝¹ : LE α
inst✝ : ContravariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a b : α
h : a * b ≤ b
⊢ a * b ≤ 1 * b
state_after: no goals
tactic: simpa only [one_mul]
Theorem: Multiset.product_cons
File: Mathlib/Data/Multiset/Bind.lean

Proof steps:
state_before: α : Type u_1
β : Type v
γ : Type u_2
δ : Type u_3
a : α
b : β
s : Multiset α
t : Multiset β
⊢ s ×ˢ (b ::ₘ t) = map (fun a => (a, b)) s + s ×ˢ t
state_after: no goals
tactic: simp [SProd.sprod, product]
Theorem: Equiv.ringEquiv_symm_apply
File: Mathlib/Logic/Equiv/TransferInstance.lean

Proof steps:
state_before: α : Type u
β : Type v
e✝ e : α ≃ β
inst✝¹ : Add β
inst✝ : Mul β
b : β
⊢ Sort ?u.15608
state_after: α : Type u
β : Type v
e✝ e : α ≃ β
inst✝¹ : Add β
inst✝ : Mul β
b : β
this : Add α := e.add
⊢ Sort ?u.15608
tactic: letI := Equiv.add e
state_before: α : Type u
β : Type v
e✝ e : α ≃ β
inst✝¹ : Add β
inst✝ : Mul β
b : β
this : Add α := e.add
⊢ Sort ?u.15608
state_after: α : Type u
β : Type v
e✝ e : α ≃ β
inst✝¹ : Add β
inst✝ : Mul β
b : β
this✝ : Add α := e.add
this : Mul α := e.mul
⊢ Sort ?u.15608
tactic: letI := Equiv.mul e
state_before: α : Type u
β : Type v
e✝ e : α ≃ β
inst✝¹ : Add β
inst✝ : Mul β
b : β
this✝ : Add α := e.add
this : Mul α := e.mul
⊢ Sort ?u.15608
state_after: no goals
tactic: exact (ringEquiv e).symm b = e.symm b
Theorem: LinearMap.trace_comp_cycle'
File: Mathlib/LinearAlgebra/Trace.lean

Proof steps:
state_before: R : Type u_1
inst✝¹² : CommRing R
M : Type u_2
inst✝¹¹ : AddCommGroup M
inst✝¹⁰ : Module R M
N : Type u_3
P : Type u_4
inst✝⁹ : AddCommGroup N
inst✝⁸ : Module R N
inst✝⁷ : AddCommGroup P
inst✝⁶ : Module R P
ι : Type u_5
inst✝⁵ : Module.Free R M
inst✝⁴ : Module.Finite R M
inst✝³ : Module.Free R N
inst✝² : Module.Finite R N
inst✝¹ : Module.Free R P
inst✝ : Module.Finite R P
f : M →ₗ[R] N
g : N →ₗ[R] P
h : P →ₗ[R] M
⊢ (trace R P) ((g ∘ₗ f) ∘ₗ h) = (trace R M) ((h ∘ₗ g) ∘ₗ f)
state_after: no goals
tactic: rw [trace_comp_comm', ← comp_assoc]
Theorem: Basis.flag_strictMono
File: Mathlib/LinearAlgebra/Basis/Flag.lean

Proof steps:
state_before: R : Type u_1
M : Type u_2
inst✝³ : Semiring R
inst✝² : AddCommMonoid M
inst✝¹ : Module R M
n : ℕ
inst✝ : Nontrivial R
b : Basis (Fin n) R M
x✝ : Fin n
⊢ b.flag x✝.castSucc < b.flag x✝.succ
state_after: no goals
tactic: simp [flag_succ]
Theorem: Fin.card_Ioc
File: Mathlib/Order/Interval/Finset/Fin.lean

Proof steps:
state_before: n : ℕ
a b : Fin n
⊢ (Ioc a b).card = ↑b - ↑a
state_after: no goals
tactic: rw [← Nat.card_Ioc, ← map_valEmbedding_Ioc, card_map]
Theorem: Fin.card_fintypeIcc
File: Mathlib/Order/Interval/Finset/Fin.lean

Proof steps:
state_before: n : ℕ
a b : Fin n
⊢ Fintype.card ↑(Set.Icc a b) = ↑b + 1 - ↑a
state_after: no goals
tactic: rw [← card_Icc, Fintype.card_ofFinset]
Theorem: IsCompact.closedBall_mul
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
hs : IsCompact s
hδ : 0 ≤ δ
x : E
⊢ closedBall x δ * s = x • cthickening δ s
state_after: no goals
tactic: rw [mul_comm, hs.mul_closedBall hδ]
Theorem: MeasureTheory.Measure.haar.chaar_nonneg
File: Mathlib/MeasureTheory/Measure/Haar/Basic.lean

Proof steps:
state_before: G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K₀ : PositiveCompacts G
K : Compacts G
⊢ 0 ≤ chaar K₀ K
state_after: G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K₀ : PositiveCompacts G
K : Compacts G
this : chaar K₀ K ∈ (fun K => Icc 0 ↑(index ↑K ↑K₀)) K
⊢ 0 ≤ chaar K₀ K
tactic: have := chaar_mem_haarProduct K₀ K (mem_univ _)
state_before: G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K₀ : PositiveCompacts G
K : Compacts G
this : chaar K₀ K ∈ (fun K => Icc 0 ↑(index ↑K ↑K₀)) K
⊢ 0 ≤ chaar K₀ K
state_after: G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K₀ : PositiveCompacts G
K : Compacts G
this : 0 ≤ chaar K₀ K ∧ chaar K₀ K ≤ ↑(index ↑K ↑K₀)
⊢ 0 ≤ chaar K₀ K
tactic: rw [mem_Icc] at this
state_before: G : Type u_1
inst✝² : Group G
inst✝¹ : TopologicalSpace G
inst✝ : TopologicalGroup G
K₀ : PositiveCompacts G
K : Compacts G
this : 0 ≤ chaar K₀ K ∧ chaar K₀ K ≤ ↑(index ↑K ↑K₀)
⊢ 0 ≤ chaar K₀ K
state_after: no goals
tactic: exact this.1
Theorem: Equiv.Perm.sameCycle_pow_right
File: Mathlib/GroupTheory/Perm/Cycle/Basic.lean

Proof steps:
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
f g : Perm α
p : α → Prop
x y z : α
n : ℕ
⊢ f.SameCycle x ((f ^ n) y) ↔ f.SameCycle x y
state_after: no goals
tactic: rw [← zpow_natCast, sameCycle_zpow_right]
Theorem: Set.isAddUnit_iff
File: Mathlib/Data/Set/Pointwise/Basic.lean

Proof steps:
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝ : DivisionMonoid α
s t : Set α
⊢ IsUnit s ↔ ∃ a, s = {a} ∧ IsUnit a
state_after: case mp
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝ : DivisionMonoid α
s t : Set α
⊢ IsUnit s → ∃ a, s = {a} ∧ IsUnit a

case mpr
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝ : DivisionMonoid α
s t : Set α
⊢ (∃ a, s = {a} ∧ IsUnit a) → IsUnit s
tactic: constructor
Theorem: LinearAlgebra.FreeProduct.lift_comp_ι
File: Mathlib/LinearAlgebra/FreeProduct/Basic.lean

Proof steps:
state_before: I : Type u
inst✝⁵ : DecidableEq I
i : I
R : Type v
inst✝⁴ : CommSemiring R
A : I → Type w
inst✝³ : (i : I) → Semiring (A i)
inst✝² : (i : I) → Algebra R (A i)
B : Type w'
inst✝¹ : Semiring B
inst✝ : Algebra R B
maps : {i : I} → A i →ₐ[R] B
⊢ ((lift R A) fun {i} => maps) ∘ₐ ι R A i = maps
state_after: case H
I : Type u
inst✝⁵ : DecidableEq I
i : I
R : Type v
inst✝⁴ : CommSemiring R
A : I → Type w
inst✝³ : (i : I) → Semiring (A i)
inst✝² : (i : I) → Algebra R (A i)
B : Type w'
inst✝¹ : Semiring B
inst✝ : Algebra R B
maps : {i : I} → A i →ₐ[R] B
a : A i
⊢ (((lift R A) fun {i} => maps) ∘ₐ ι R A i) a = maps a
tactic: ext a
state_before: case H
I : Type u
inst✝⁵ : DecidableEq I
i : I
R : Type v
inst✝⁴ : CommSemiring R
A : I → Type w
inst✝³ : (i : I) → Semiring (A i)
inst✝² : (i : I) → Algebra R (A i)
B : Type w'
inst✝¹ : Semiring B
inst✝ : Algebra R B
maps : {i : I} → A i →ₐ[R] B
a : A i
⊢ (((lift R A) fun {i} => maps) ∘ₐ ι R A i) a = maps a
state_after: no goals
tactic: simp [lift_apply, ι]
Theorem: Option.map_pmap
File: Mathlib/Data/Option/Basic.lean

Proof steps:
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
p : α → Prop
f✝ : (a : α) → p a → β
x✝ : Option α
g : β → γ
f : (a : α) → p a → β
x : Option α
H : ∀ (a : α), a ∈ x → p a
⊢ Option.map g (pmap f x H) = pmap (fun a h => g (f a h)) x H
state_after: no goals
tactic: cases x <;> simp only [map_none', map_some', pmap]
Theorem: Nat.factorization_prime_le_iff_dvd
File: Mathlib/Data/Nat/Factorization/Basic.lean

Proof steps:
state_before: a b m n✝ p d n : ℕ
hd : d ≠ 0
hn : n ≠ 0
⊢ (∀ (p : ℕ), Prime p → d.factorization p ≤ n.factorization p) ↔ d ∣ n
state_after: a b m n✝ p d n : ℕ
hd : d ≠ 0
hn : n ≠ 0
⊢ (∀ (p : ℕ), Prime p → d.factorization p ≤ n.factorization p) ↔ d.factorization ≤ n.factorization
tactic: rw [← factorization_le_iff_dvd hd hn]
state_before: a b m n✝ p d n : ℕ
hd : d ≠ 0
hn : n ≠ 0
⊢ (∀ (p : ℕ), Prime p → d.factorization p ≤ n.factorization p) ↔ d.factorization ≤ n.factorization
state_after: a b m n✝ p✝ d n : ℕ
hd : d ≠ 0
hn : n ≠ 0
h : ∀ (p : ℕ), Prime p → d.factorization p ≤ n.factorization p
p : ℕ
hp : ¬Prime p
⊢ d.factorization p ≤ n.factorization p
tactic: refine ⟨fun h p => (em p.Prime).elim (h p) fun hp => ?_, fun h p _ => h p⟩
state_before: a b m n✝ p✝ d n : ℕ
hd : d ≠ 0
hn : n ≠ 0
h : ∀ (p : ℕ), Prime p → d.factorization p ≤ n.factorization p
p : ℕ
hp : ¬Prime p
⊢ d.factorization p ≤ n.factorization p
state_after: a b m n✝ p✝ d n : ℕ
hd : d ≠ 0
hn : n ≠ 0
h : ∀ (p : ℕ), Prime p → d.factorization p ≤ n.factorization p
p : ℕ
hp : ¬Prime p
⊢ 0 ≤ 0
tactic: simp_rw [factorization_eq_zero_of_non_prime _ hp]
state_before: a b m n✝ p✝ d n : ℕ
hd : d ≠ 0
hn : n ≠ 0
h : ∀ (p : ℕ), Prime p → d.factorization p ≤ n.factorization p
p : ℕ
hp : ¬Prime p
⊢ 0 ≤ 0
state_after: no goals
tactic: rfl
Theorem: Tropical.add_pow
File: Mathlib/Algebra/Tropical/Basic.lean

Proof steps:
state_before: R : Type u
inst✝³ : LinearOrder R
inst✝² : AddMonoid R
inst✝¹ : CovariantClass R R (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
inst✝ : CovariantClass R R (Function.swap fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
x y : Tropical R
n : ℕ
⊢ (x + y) ^ n = x ^ n + y ^ n
state_after: case inl
R : Type u
inst✝³ : LinearOrder R
inst✝² : AddMonoid R
inst✝¹ : CovariantClass R R (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
inst✝ : CovariantClass R R (Function.swap fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
x y : Tropical R
n : ℕ
h : x ≤ y
⊢ (x + y) ^ n = x ^ n + y ^ n

case inr
R : Type u
inst✝³ : LinearOrder R
inst✝² : AddMonoid R
inst✝¹ : CovariantClass R R (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
inst✝ : CovariantClass R R (Function.swap fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
x y : Tropical R
n : ℕ
h : y ≤ x
⊢ (x + y) ^ n = x ^ n + y ^ n
tactic: rcases le_total x y with h | h
Theorem: Polynomial.eval₂_one_cyclotomic_prime
File: Mathlib/RingTheory/Polynomial/Cyclotomic/Eval.lean

Proof steps:
state_before: R : Type u_1
S : Type u_2
inst✝² : CommRing R
inst✝¹ : Semiring S
f : R →+* S
p : ℕ
inst✝ : Fact (Nat.Prime p)
⊢ eval₂ f 1 (cyclotomic p R) = ↑p
state_after: no goals
tactic: simp
Theorem: Complex.rank_rat_complex
File: Mathlib/Data/Complex/FiniteDimensional.lean

Proof steps:
state_before: ⊢ Module.rank ℚ ℂ = 𝔠
state_after: ⊢ Cardinal.lift.{0, 0} #ℚ < Cardinal.lift.{0, 0} #ℂ
tactic: refine (Free.rank_eq_mk_of_infinite_lt ℚ ℂ ?_).trans mk_complex
state_before: ⊢ Cardinal.lift.{0, 0} #ℚ < Cardinal.lift.{0, 0} #ℂ
state_after: no goals
tactic: simpa using aleph0_lt_continuum
Theorem: Quiver.starEquivCostar_apply_fst
File: Mathlib/Combinatorics/Quiver/Covering.lean

Proof steps:
state_before: U : Type ?u.16921
inst✝⁴ : Quiver U
V : Type ?u.16927
inst✝³ : Quiver V
φ : U ⥤q V
W : Type ?u.16949
inst✝² : Quiver W
ψ : V ⥤q W
inst✝¹ : HasInvolutiveReverse U
inst✝ : HasInvolutiveReverse V
u : U
e : Star u
⊢ (fun e => ⟨e.fst, reverse e.snd⟩) ((fun e => ⟨e.fst, reverse e.snd⟩) e) = e
state_after: no goals
tactic: simp [Sigma.ext_iff]
state_before: U : Type ?u.16921
inst✝⁴ : Quiver U
V : Type ?u.16927
inst✝³ : Quiver V
φ : U ⥤q V
W : Type ?u.16949
inst✝² : Quiver W
ψ : V ⥤q W
inst✝¹ : HasInvolutiveReverse U
inst✝ : HasInvolutiveReverse V
u : U
e : Costar u
⊢ (fun e => ⟨e.fst, reverse e.snd⟩) ((fun e => ⟨e.fst, reverse e.snd⟩) e) = e
state_after: no goals
tactic: simp [Sigma.ext_iff]
Theorem: AddConstMapClass.map_add_int
File: Mathlib/Algebra/AddConstMap/Basic.lean

Proof steps:
state_before: F : Type u_1
G : Type u_2
H : Type u_3
inst✝³ : FunLike F G H
a : G
b : H
inst✝² : AddGroupWithOne G
inst✝¹ : AddGroupWithOne H
inst✝ : AddConstMapClass F G H 1 1
f : F
x : G
n : ℤ
⊢ f (x + ↑n) = f x + ↑n
state_after: no goals
tactic: simp
Theorem: IsLocalizedModule.mk'_cancel_left
File: Mathlib/Algebra/Module/LocalizedModule.lean

Proof steps:
state_before: R : Type u_1
inst✝¹² : CommSemiring R
S : Submonoid R
M : Type u_2
M' : Type u_3
M'' : Type u_4
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : AddCommMonoid M'
inst✝⁹ : AddCommMonoid M''
A : Type u_5
inst✝⁸ : CommSemiring A
inst✝⁷ : Algebra R A
inst✝⁶ : Module A M'
inst✝⁵ : IsLocalization S A
inst✝⁴ : Module R M
inst✝³ : Module R M'
inst✝² : Module R M''
inst✝¹ : IsScalarTower R A M'
f : M →ₗ[R] M'
g : M →ₗ[R] M''
inst✝ : IsLocalizedModule S f
m : M
s₁ s₂ : ↥S
⊢ mk' f (s₁ • m) (s₁ * s₂) = mk' f m s₂
state_after: R : Type u_1
inst✝¹² : CommSemiring R
S : Submonoid R
M : Type u_2
M' : Type u_3
M'' : Type u_4
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : AddCommMonoid M'
inst✝⁹ : AddCommMonoid M''
A : Type u_5
inst✝⁸ : CommSemiring A
inst✝⁷ : Algebra R A
inst✝⁶ : Module A M'
inst✝⁵ : IsLocalization S A
inst✝⁴ : Module R M
inst✝³ : Module R M'
inst✝² : Module R M''
inst✝¹ : IsScalarTower R A M'
f : M →ₗ[R] M'
g : M →ₗ[R] M''
inst✝ : IsLocalizedModule S f
m : M
s₁ s₂ : ↥S
⊢ (fromLocalizedModule S f) (LocalizedModule.mk (s₁ • m) (s₁ * s₂)) =
    (fromLocalizedModule S f) (LocalizedModule.mk m s₂)
tactic: delta mk'
state_before: R : Type u_1
inst✝¹² : CommSemiring R
S : Submonoid R
M : Type u_2
M' : Type u_3
M'' : Type u_4
inst✝¹¹ : AddCommMonoid M
inst✝¹⁰ : AddCommMonoid M'
inst✝⁹ : AddCommMonoid M''
A : Type u_5
inst✝⁸ : CommSemiring A
inst✝⁷ : Algebra R A
inst✝⁶ : Module A M'
inst✝⁵ : IsLocalization S A
inst✝⁴ : Module R M
inst✝³ : Module R M'
inst✝² : Module R M''
inst✝¹ : IsScalarTower R A M'
f : M →ₗ[R] M'
g : M →ₗ[R] M''
inst✝ : IsLocalizedModule S f
m : M
s₁ s₂ : ↥S
⊢ (fromLocalizedModule S f) (LocalizedModule.mk (s₁ • m) (s₁ * s₂)) =
    (fromLocalizedModule S f) (LocalizedModule.mk m s₂)
state_after: no goals
tactic: rw [LocalizedModule.mk_cancel_common_left]
Theorem: Set.LeftInvOn.image_inter
File: Mathlib/Data/Set/Function.lean

Proof steps:
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 : β
hf : LeftInvOn f' f s
⊢ f '' (s₁ ∩ s) = f' ⁻¹' (s₁ ∩ s) ∩ f '' s
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 : β
hf : LeftInvOn f' f s
⊢ f' ⁻¹' s₁ ∩ f '' s = f' ⁻¹' (s₁ ∩ s) ∩ f '' s
tactic: rw [hf.image_inter']
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 : β
hf : LeftInvOn f' f s
⊢ f' ⁻¹' s₁ ∩ f '' s = f' ⁻¹' (s₁ ∩ s) ∩ f '' s
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 : β
hf : LeftInvOn f' f s
⊢ f' ⁻¹' s₁ ∩ f '' s ⊆ f' ⁻¹' (s₁ ∩ s) ∩ f '' s
tactic: refine Subset.antisymm ?_ (inter_subset_inter_left _ (preimage_mono inter_subset_left))
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 : β
hf : LeftInvOn f' f s
⊢ f' ⁻¹' s₁ ∩ f '' s ⊆ f' ⁻¹' (s₁ ∩ s) ∩ f '' s
state_after: case intro.intro.intro
α : 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 : β
hf : LeftInvOn f' f s
x : α
hx : x ∈ s
h₁ : f x ∈ f' ⁻¹' s₁
⊢ f x ∈ f' ⁻¹' (s₁ ∩ s) ∩ f '' s
tactic: rintro _ ⟨h₁, x, hx, rfl⟩
state_before: case intro.intro.intro
α : 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 : β
hf : LeftInvOn f' f s
x : α
hx : x ∈ s
h₁ : f x ∈ f' ⁻¹' s₁
⊢ f x ∈ f' ⁻¹' (s₁ ∩ s) ∩ f '' s
state_after: no goals
tactic: exact ⟨⟨h₁, by rwa [hf hx]⟩, mem_image_of_mem _ hx⟩
Theorem: Complex.cosh_ofReal_im
File: Mathlib/Data/Complex/Exponential.lean

Proof steps:
state_before: x✝ y : ℂ
x : ℝ
⊢ (cosh ↑x).im = 0
state_after: no goals
tactic: rw [← ofReal_cosh_ofReal_re, ofReal_im]
Theorem: SupClosed.image
File: Mathlib/Order/SupClosed.lean

Proof steps:
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝³ : SemilatticeSup α
inst✝² : SemilatticeSup β
ι : Sort u_4
S : Set (Set α)
f✝ : ι → Set α
s t : Set α
a : α
inst✝¹ : FunLike F α β
inst✝ : SupHomClass F α β
hs : SupClosed s
f : F
⊢ SupClosed (⇑f '' s)
state_after: case intro.intro.intro.intro
F : Type u_1
α : Type u_2
β : Type u_3
inst✝³ : SemilatticeSup α
inst✝² : SemilatticeSup β
ι : Sort u_4
S : Set (Set α)
f✝ : ι → Set α
s t : Set α
a✝ : α
inst✝¹ : FunLike F α β
inst✝ : SupHomClass F α β
hs : SupClosed s
f : F
a : α
ha : a ∈ s
b : α
hb : b ∈ s
⊢ f a ⊔ f b ∈ ⇑f '' s
tactic: rintro _ ⟨a, ha, rfl⟩ _ ⟨b, hb, rfl⟩
state_before: case intro.intro.intro.intro
F : Type u_1
α : Type u_2
β : Type u_3
inst✝³ : SemilatticeSup α
inst✝² : SemilatticeSup β
ι : Sort u_4
S : Set (Set α)
f✝ : ι → Set α
s t : Set α
a✝ : α
inst✝¹ : FunLike F α β
inst✝ : SupHomClass F α β
hs : SupClosed s
f : F
a : α
ha : a ∈ s
b : α
hb : b ∈ s
⊢ f a ⊔ f b ∈ ⇑f '' s
state_after: case intro.intro.intro.intro
F : Type u_1
α : Type u_2
β : Type u_3
inst✝³ : SemilatticeSup α
inst✝² : SemilatticeSup β
ι : Sort u_4
S : Set (Set α)
f✝ : ι → Set α
s t : Set α
a✝ : α
inst✝¹ : FunLike F α β
inst✝ : SupHomClass F α β
hs : SupClosed s
f : F
a : α
ha : a ∈ s
b : α
hb : b ∈ s
⊢ f (a ⊔ b) ∈ ⇑f '' s
tactic: rw [← map_sup]
state_before: case intro.intro.intro.intro
F : Type u_1
α : Type u_2
β : Type u_3
inst✝³ : SemilatticeSup α
inst✝² : SemilatticeSup β
ι : Sort u_4
S : Set (Set α)
f✝ : ι → Set α
s t : Set α
a✝ : α
inst✝¹ : FunLike F α β
inst✝ : SupHomClass F α β
hs : SupClosed s
f : F
a : α
ha : a ∈ s
b : α
hb : b ∈ s
⊢ f (a ⊔ b) ∈ ⇑f '' s
state_after: no goals
tactic: exact Set.mem_image_of_mem _ <| hs ha hb
Theorem: Matroid.Base.compl_base_dual
File: Mathlib/Data/Matroid/Dual.lean

Proof steps:
state_before: α : Type u_1
M : Matroid α
I B X : Set α
h : M.Base B
⊢ M✶.Base (M.E \ B)
state_after: no goals
tactic: rwa [dual_base_iff, diff_diff_cancel_left h.subset_ground]
Theorem: Ideal.span_singleton_mul_le_span_singleton_mul
File: Mathlib/RingTheory/Ideal/Operations.lean

Proof steps:
state_before: R : Type u
ι : Type u_1
inst✝ : CommSemiring R
I✝ J✝ K L : Ideal R
x y : R
I J : Ideal R
⊢ span {x} * I ≤ span {y} * J ↔ ∀ zI ∈ I, ∃ zJ ∈ J, x * zI = y * zJ
state_after: no goals
tactic: simp only [span_singleton_mul_le_iff, mem_span_singleton_mul, eq_comm]
Theorem: Matrix.toMvPolynomial_eval_eq_apply
File: Mathlib/Algebra/Module/LinearMap/Polynomial.lean

Proof steps:
state_before: m : Type u_1
n : Type u_2
o : Type u_3
R : Type u_4
S : Type u_5
inst✝³ : Fintype n
inst✝² : Fintype o
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
M : Matrix m n R
i : m
c : n → R
⊢ (eval c) (M.toMvPolynomial i) = (M *ᵥ c) i
state_after: no goals
tactic: simp only [toMvPolynomial, map_sum, eval_monomial, pow_zero, Finsupp.prod_single_index, pow_one,
    mulVec, dotProduct]
Theorem: CategoryTheory.NatTrans.rightDerived_comp
File: Mathlib/CategoryTheory/Abelian/RightDerived.lean

Proof steps:
state_before: C : Type u
inst✝⁷ : Category.{v, u} C
D : Type u_1
inst✝⁶ : Category.{u_2, u_1} D
inst✝⁵ : Abelian C
inst✝⁴ : HasInjectiveResolutions C
inst✝³ : Abelian D
F G H : C ⥤ D
inst✝² : F.Additive
inst✝¹ : G.Additive
inst✝ : H.Additive
α : F ⟶ G
β : G ⟶ H
n : ℕ
⊢ rightDerived (α ≫ β) n = rightDerived α n ≫ rightDerived β n
state_after: no goals
tactic: simp [NatTrans.rightDerived]
Theorem: half_sub
File: Mathlib/Algebra/CharZero/Lemmas.lean

Proof steps:
state_before: R : Type u_1
inst✝¹ : DivisionRing R
inst✝ : CharZero R
a : R
⊢ a / 2 - a = -(a / 2)
state_after: no goals
tactic: rw [← neg_sub, sub_half]