1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: RelSeries.smash_natAdd
File: Mathlib/Order/RelSeries.lean

tactic: rw [smash_toFun, dif_neg (by simp)]
state_before: α : Type u_1
r : Rel α α
β : Type u_2
s : Rel β β
p q : RelSeries r
h : p.last = q.head
i : Fin q.length
⊢ (p.smash q h).toFun (Fin.natAdd p.length i).castSucc = q.toFun i.castSucc
state_after: α : Type u_1
r : Rel α α
β : Type u_2
s : Rel β β
p q : RelSeries r
h : p.last = q.head
i : Fin q.length
⊢ q.toFun ⟨↑(Fin.natAdd p.length i).castSucc - p.length, ⋯⟩ = q.toFun i.castSucc

tactic: congr
state_before: α : Type u_1
r : Rel α α
β : Type u_2
s : Rel β β
p q : RelSeries r
h : p.last = q.head
i : Fin q.length
⊢ q.toFun ⟨↑(Fin.natAdd p.length i).castSucc - p.length, ⋯⟩ = q.toFun i.castSucc
state_after: case e_a.e_val
α : Type u_1
r : Rel α α
β : Type u_2
s : Rel β β
p q : RelSeries r
h : p.last = q.head
i : Fin q.length
⊢ ↑(Fin.natAdd p.length i).castSucc - p.length = ↑i

tactic: exact Nat.add_sub_self_left _ _
state_before: case e_a.e_val
α : Type u_1
r : Rel α α
β : Type u_2
s : Rel β β
p q : RelSeries r
h : p.last = q.head
i : Fin q.length
⊢ ↑(Fin.natAdd p.length i).castSucc - p.length = ↑i
state_after: no goals

tactic: simp
state_before: α : Type u_1
r : Rel α α
β : Type u_2
s : Rel β β
p q : RelSeries r
h : p.last = q.head
i : Fin q.length
⊢ ¬↑(Fin.natAdd p.length i).castSucc < p.length
state_after: no goals
Theorem: Complex.sin_zero
File: Mathlib/Data/Complex/Exponential.lean

tactic: simp [sin]
state_before: x y : ℂ
⊢ sin 0 = 0
state_after: no goals
Theorem: String.Iterator.Valid.setCurr
File: .lake/packages/batteries/Batteries/Data/String/Lemmas.lean

tactic: let ⟨l, r, h⟩ := h.validFor
state_before: c : Char
it : Iterator
h : it.Valid
⊢ (it.setCurr c).Valid
state_after: c : Char
it : Iterator
h✝ : it.Valid
l r : List Char
h : ValidFor l r it
⊢ (it.setCurr c).Valid

tactic: exact h.setCurr'.valid
state_before: c : Char
it : Iterator
h✝ : it.Valid
l r : List Char
h : ValidFor l r it
⊢ (it.setCurr c).Valid
state_after: no goals
Theorem: MeasureTheory.OuterMeasure.restrict_iInf_restrict
File: Mathlib/MeasureTheory/OuterMeasure/OfFunction.lean

tactic: rw [Subtype.range_coe]
state_before: α : Type u_1
ι : Sort u_2
s : Set α
m : ι → OuterMeasure α
⊢ (restrict s) (⨅ i, (restrict s) (m i)) = (restrict (range Subtype.val)) (⨅ i, (restrict s) (m i))
state_after: no goals
Theorem: Pell.yz_sub
File: Mathlib/NumberTheory/PellMatiyasevic.lean

tactic: rw [sub_eq_add_neg, ← mul_neg, mul_comm, add_comm]
state_before: a : ℕ
a1 : 1 < a
m n : ℕ
h : n ≤ m
⊢ yz a1 (m - n) = xz a1 n * yz a1 m - xz a1 m * yz a1 n
state_after: a : ℕ
a1 : 1 < a
m n : ℕ
h : n ≤ m
⊢ yz a1 (m - n) = xz a1 m * -yz a1 n + yz a1 m * xz a1 n

tactic: exact congr_arg Zsqrtd.im (pellZd_sub a1 h)
state_before: a : ℕ
a1 : 1 < a
m n : ℕ
h : n ≤ m
⊢ yz a1 (m - n) = xz a1 m * -yz a1 n + yz a1 m * xz a1 n
state_after: no goals
Theorem: spectrum.zero_eq
File: Mathlib/Algebra/Algebra/Spectrum.lean

tactic: refine Set.Subset.antisymm ?_ (by simp [Algebra.algebraMap_eq_smul_one, mem_iff])
state_before: 𝕜 : Type u
A : Type v
inst✝³ : Field 𝕜
inst✝² : Ring A
inst✝¹ : Algebra 𝕜 A
inst✝ : Nontrivial A
⊢ σ 0 = {0}
state_after: 𝕜 : Type u
A : Type v
inst✝³ : Field 𝕜
inst✝² : Ring A
inst✝¹ : Algebra 𝕜 A
inst✝ : Nontrivial A
⊢ σ 0 ⊆ {0}

tactic: rw [spectrum, Set.compl_subset_comm]
state_before: 𝕜 : Type u
A : Type v
inst✝³ : Field 𝕜
inst✝² : Ring A
inst✝¹ : Algebra 𝕜 A
inst✝ : Nontrivial A
⊢ σ 0 ⊆ {0}
state_after: 𝕜 : Type u
A : Type v
inst✝³ : Field 𝕜
inst✝² : Ring A
inst✝¹ : Algebra 𝕜 A
inst✝ : Nontrivial A
⊢ {0}ᶜ ⊆ resolventSet 𝕜 0

tactic: intro k hk
state_before: 𝕜 : Type u
A : Type v
inst✝³ : Field 𝕜
inst✝² : Ring A
inst✝¹ : Algebra 𝕜 A
inst✝ : Nontrivial A
⊢ {0}ᶜ ⊆ resolventSet 𝕜 0
state_after: 𝕜 : Type u
A : Type v
inst✝³ : Field 𝕜
inst✝² : Ring A
inst✝¹ : Algebra 𝕜 A
inst✝ : Nontrivial A
k : 𝕜
hk : k ∈ {0}ᶜ
⊢ k ∈ resolventSet 𝕜 0

tactic: rw [Set.mem_compl_singleton_iff] at hk
state_before: 𝕜 : Type u
A : Type v
inst✝³ : Field 𝕜
inst✝² : Ring A
inst✝¹ : Algebra 𝕜 A
inst✝ : Nontrivial A
k : 𝕜
hk : k ∈ {0}ᶜ
⊢ k ∈ resolventSet 𝕜 0
state_after: 𝕜 : Type u
A : Type v
inst✝³ : Field 𝕜
inst✝² : Ring A
inst✝¹ : Algebra 𝕜 A
inst✝ : Nontrivial A
k : 𝕜
hk : k ≠ 0
⊢ k ∈ resolventSet 𝕜 0

tactic: have : IsUnit (Units.mk0 k hk • (1 : A)) := IsUnit.smul (Units.mk0 k hk) isUnit_one
state_before: 𝕜 : Type u
A : Type v
inst✝³ : Field 𝕜
inst✝² : Ring A
inst✝¹ : Algebra 𝕜 A
inst✝ : Nontrivial A
k : 𝕜
hk : k ≠ 0
⊢ k ∈ resolventSet 𝕜 0
state_after: 𝕜 : Type u
A : Type v
inst✝³ : Field 𝕜
inst✝² : Ring A
inst✝¹ : Algebra 𝕜 A
inst✝ : Nontrivial A
k : 𝕜
hk : k ≠ 0
this : IsUnit (Units.mk0 k hk • 1)
⊢ k ∈ resolventSet 𝕜 0

tactic: simpa [mem_resolventSet_iff, Algebra.algebraMap_eq_smul_one]
state_before: 𝕜 : Type u
A : Type v
inst✝³ : Field 𝕜
inst✝² : Ring A
inst✝¹ : Algebra 𝕜 A
inst✝ : Nontrivial A
k : 𝕜
hk : k ≠ 0
this : IsUnit (Units.mk0 k hk • 1)
⊢ k ∈ resolventSet 𝕜 0
state_after: no goals

tactic: simp [Algebra.algebraMap_eq_smul_one, mem_iff]
state_before: 𝕜 : Type u
A : Type v
inst✝³ : Field 𝕜
inst✝² : Ring A
inst✝¹ : Algebra 𝕜 A
inst✝ : Nontrivial A
⊢ {0} ⊆ σ 0
state_after: no goals
Theorem: Finset.pairwiseDisjoint_fibers
File: Mathlib/Data/Finset/Union.lean

tactic: simp_rw [disjoint_left, mem_filter]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
s✝ s₁ s₂ : Finset α
t✝ t₁ t₂ : α → Finset β
inst✝ : DecidableEq β
s : Finset α
t : Finset β
f : α → β
x' : β
hx : x' ∈ ↑t
y' : β
hy : y' ∈ ↑t
hne : x' ≠ y'
⊢ (Disjoint on fun a => filter (fun x => f x = a) s) x' y'
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
s✝ s₁ s₂ : Finset α
t✝ t₁ t₂ : α → Finset β
inst✝ : DecidableEq β
s : Finset α
t : Finset β
f : α → β
x' : β
hx : x' ∈ ↑t
y' : β
hy : y' ∈ ↑t
hne : x' ≠ y'
⊢ ∀ ⦃a : α⦄, a ∈ s ∧ f a = x' → ¬(a ∈ s ∧ f a = y')

tactic: rintro i ⟨_, rfl⟩ ⟨_, rfl⟩
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
s✝ s₁ s₂ : Finset α
t✝ t₁ t₂ : α → Finset β
inst✝ : DecidableEq β
s : Finset α
t : Finset β
f : α → β
x' : β
hx : x' ∈ ↑t
y' : β
hy : y' ∈ ↑t
hne : x' ≠ y'
⊢ ∀ ⦃a : α⦄, a ∈ s ∧ f a = x' → ¬(a ∈ s ∧ f a = y')
state_after: case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
s✝ s₁ s₂ : Finset α
t✝ t₁ t₂ : α → Finset β
inst✝ : DecidableEq β
s : Finset α
t : Finset β
f : α → β
i : α
left✝¹ : i ∈ s
hx : f i ∈ ↑t
left✝ : i ∈ s
hy : f i ∈ ↑t
hne : f i ≠ f i
⊢ False

tactic: exact hne rfl
state_before: case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
s✝ s₁ s₂ : Finset α
t✝ t₁ t₂ : α → Finset β
inst✝ : DecidableEq β
s : Finset α
t : Finset β
f : α → β
i : α
left✝¹ : i ∈ s
hx : f i ∈ ↑t
left✝ : i ∈ s
hy : f i ∈ ↑t
hne : f i ≠ f i
⊢ False
state_after: no goals
Theorem: Multiset.prod_lt_prod_of_nonempty'
File: Mathlib/Algebra/Order/BigOperators/Group/Multiset.lean

tactic: obtain ⟨i, hi⟩ := exists_mem_of_ne_zero hs
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : OrderedCancelCommMonoid α
s : Multiset ι
f g : ι → α
hs : s ≠ ∅
hfg : ∀ i ∈ s, f i < g i
⊢ (map f s).prod < (map g s).prod
state_after: case intro
ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : OrderedCancelCommMonoid α
s : Multiset ι
f g : ι → α
hs : s ≠ ∅
hfg : ∀ i ∈ s, f i < g i
i : ι
hi : i ∈ s
⊢ (map f s).prod < (map g s).prod

tactic: exact prod_lt_prod' (fun i hi => le_of_lt (hfg i hi)) ⟨i, hi, hfg i hi⟩
state_before: case intro
ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : OrderedCancelCommMonoid α
s : Multiset ι
f g : ι → α
hs : s ≠ ∅
hfg : ∀ i ∈ s, f i < g i
i : ι
hi : i ∈ s
⊢ (map f s).prod < (map g s).prod
state_after: no goals
Theorem: Function.one_le_extend
File: Mathlib/Algebra/Order/Pi.lean

tactic: classical exact one_le_dite (fun _ ↦ hg _) (fun _ ↦ he _)
state_before: ι : Type u_1
I : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
f✝ : I → Type u_6
x y : (i : I) → f✝ i
i : I
inst✝¹ : One γ
inst✝ : LE γ
f : α → β
g : α → γ
e : β → γ
hg : 1 ≤ g
he : 1 ≤ e
_b : β
⊢ 1 _b ≤ extend f g e _b
state_after: no goals

tactic: exact one_le_dite (fun _ ↦ hg _) (fun _ ↦ he _)
state_before: ι : Type u_1
I : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
f✝ : I → Type u_6
x y : (i : I) → f✝ i
i : I
inst✝¹ : One γ
inst✝ : LE γ
f : α → β
g : α → γ
e : β → γ
hg : 1 ≤ g
he : 1 ≤ e
_b : β
⊢ 1 _b ≤ extend f g e _b
state_after: no goals
Theorem: balanced_empty
File: Mathlib/Analysis/LocallyConvex/Basic.lean

tactic: rw [smul_set_empty]
state_before: 𝕜 : Type u_1
𝕝 : Type u_2
E : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝¹ : SeminormedRing 𝕜
inst✝ : SMul 𝕜 E
s t u v A B : Set E
x✝¹ : 𝕜
x✝ : ‖x✝¹‖ ≤ 1
⊢ x✝¹ • ∅ ⊆ ∅
state_after: no goals
Theorem: multiplicity.multiplicity_lt_iff_not_dvd
File: Mathlib/RingTheory/Multiplicity.lean

tactic: rw [pow_dvd_iff_le_multiplicity, not_le]
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 : α
k : ℕ
⊢ multiplicity a b < ↑k ↔ ¬a ^ k ∣ b
state_after: no goals
Theorem: YoungDiagram.rowLen_eq_card
File: Mathlib/Combinatorics/Young/YoungDiagram.lean

tactic: simp [row_eq_prod]
state_before: μ : YoungDiagram
i : ℕ
⊢ μ.rowLen i = (μ.row i).card
state_after: no goals
Theorem: Algebra.mem_sInf
File: Mathlib/Algebra/Algebra/Subalgebra/Basic.lean

tactic: simp only [← SetLike.mem_coe, coe_sInf, Set.mem_iInter₂]
state_before: R : Type u
A : Type v
B : Type w
inst✝⁴ : CommSemiring R
inst✝³ : Semiring A
inst✝² : Algebra R A
inst✝¹ : Semiring B
inst✝ : Algebra R B
S : Set (Subalgebra R A)
x : A
⊢ x ∈ sInf S ↔ ∀ p ∈ S, x ∈ p
state_after: no goals
Theorem: codisjoint_hnot_hnot_right_iff
File: Mathlib/Order/Heyting/Basic.lean

tactic: simp_rw [← hnot_le_iff_codisjoint_left, hnot_hnot_hnot]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : CoheytingAlgebra α
a b c : α
⊢ Codisjoint a (￢￢b) ↔ Codisjoint a b
state_after: no goals
Theorem: EMetric.ball_prod_same
File: Mathlib/Topology/EMetricSpace/Basic.lean

tactic: simp [Prod.edist_eq]
state_before: α : Type u
β : Type v
X : Type u_1
inst✝¹ : PseudoEMetricSpace α
x✝ y✝ z✝ : α
ε ε₁ ε₂ : ℝ≥0∞
s t : Set α
inst✝ : PseudoEMetricSpace β
x : α
y : β
r : ℝ≥0∞
z : α × β
⊢ z ∈ ball x r ×ˢ ball y r ↔ z ∈ ball (x, y) r
state_after: no goals
Theorem: ack_add_one_sq_lt_ack_add_four
File: Mathlib/Computability/Ackermann.lean

tactic: omega
state_before: m n : ℕ
⊢ m ≤ m + 2
state_after: no goals
Theorem: IsometryEquiv.hausdorffMeasure_preimage
File: Mathlib/MeasureTheory/Measure/Hausdorff.lean

tactic: rw [← e.image_symm, e.symm.hausdorffMeasure_image]
state_before: ι : Type u_1
X : Type u_2
Y : Type u_3
inst✝⁵ : EMetricSpace X
inst✝⁴ : EMetricSpace Y
inst✝³ : MeasurableSpace X
inst✝² : BorelSpace X
inst✝¹ : MeasurableSpace Y
inst✝ : BorelSpace Y
e : X ≃ᵢ Y
d : ℝ
s : Set Y
⊢ μH[d] (⇑e ⁻¹' s) = μH[d] s
state_after: no goals
Theorem: Real.hasStrictFDerivAt_rpow_of_pos
File: Mathlib/Analysis/SpecialFunctions/Pow/Deriv.lean

tactic: have : (fun x : ℝ × ℝ => x.1 ^ x.2) =ᶠ[𝓝 p] fun x => exp (log x.1 * x.2) :=
  (continuousAt_fst.eventually (lt_mem_nhds hp)).mono fun p hp => rpow_def_of_pos hp _
state_before: x y z : ℝ
p : ℝ × ℝ
hp : 0 < p.1
⊢ HasStrictFDerivAt (fun x => x.1 ^ x.2)
    ((p.2 * p.1 ^ (p.2 - 1)) • ContinuousLinearMap.fst ℝ ℝ ℝ + (p.1 ^ p.2 * log p.1) • ContinuousLinearMap.snd ℝ ℝ ℝ) p
state_after: x y z : ℝ
p : ℝ × ℝ
hp : 0 < p.1
this : (fun x => x.1 ^ x.2) =ᶠ[𝓝 p] fun x => rexp (log x.1 * x.2)
⊢ HasStrictFDerivAt (fun x => x.1 ^ x.2)
    ((p.2 * p.1 ^ (p.2 - 1)) • ContinuousLinearMap.fst ℝ ℝ ℝ + (p.1 ^ p.2 * log p.1) • ContinuousLinearMap.snd ℝ ℝ ℝ) p

tactic: refine HasStrictFDerivAt.congr_of_eventuallyEq ?_ this.symm
state_before: x y z : ℝ
p : ℝ × ℝ
hp : 0 < p.1
this : (fun x => x.1 ^ x.2) =ᶠ[𝓝 p] fun x => rexp (log x.1 * x.2)
⊢ HasStrictFDerivAt (fun x => x.1 ^ x.2)
    ((p.2 * p.1 ^ (p.2 - 1)) • ContinuousLinearMap.fst ℝ ℝ ℝ + (p.1 ^ p.2 * log p.1) • ContinuousLinearMap.snd ℝ ℝ ℝ) p
state_after: x y z : ℝ
p : ℝ × ℝ
hp : 0 < p.1
this : (fun x => x.1 ^ x.2) =ᶠ[𝓝 p] fun x => rexp (log x.1 * x.2)
⊢ HasStrictFDerivAt (fun x => rexp (log x.1 * x.2))
    ((p.2 * p.1 ^ (p.2 - 1)) • ContinuousLinearMap.fst ℝ ℝ ℝ + (p.1 ^ p.2 * log p.1) • ContinuousLinearMap.snd ℝ ℝ ℝ) p

tactic: convert ((hasStrictFDerivAt_fst.log hp.ne').mul hasStrictFDerivAt_snd).exp using 1
state_before: x y z : ℝ
p : ℝ × ℝ
hp : 0 < p.1
this : (fun x => x.1 ^ x.2) =ᶠ[𝓝 p] fun x => rexp (log x.1 * x.2)
⊢ HasStrictFDerivAt (fun x => rexp (log x.1 * x.2))
    ((p.2 * p.1 ^ (p.2 - 1)) • ContinuousLinearMap.fst ℝ ℝ ℝ + (p.1 ^ p.2 * log p.1) • ContinuousLinearMap.snd ℝ ℝ ℝ) p
state_after: case h.e'_10
x y z : ℝ
p : ℝ × ℝ
hp : 0 < p.1
this : (fun x => x.1 ^ x.2) =ᶠ[𝓝 p] fun x => rexp (log x.1 * x.2)
⊢ (p.2 * p.1 ^ (p.2 - 1)) • ContinuousLinearMap.fst ℝ ℝ ℝ + (p.1 ^ p.2 * log p.1) • ContinuousLinearMap.snd ℝ ℝ ℝ =
    rexp (log p.1 * p.2) • (log p.1 • ContinuousLinearMap.snd ℝ ℝ ℝ + p.2 • p.1⁻¹ • ContinuousLinearMap.fst ℝ ℝ ℝ)

tactic: rw [rpow_sub_one hp.ne', ← rpow_def_of_pos hp, smul_add, smul_smul, mul_div_left_comm,
  div_eq_mul_inv, smul_smul, smul_smul, mul_assoc, add_comm]
state_before: case h.e'_10
x y z : ℝ
p : ℝ × ℝ
hp : 0 < p.1
this : (fun x => x.1 ^ x.2) =ᶠ[𝓝 p] fun x => rexp (log x.1 * x.2)
⊢ (p.2 * p.1 ^ (p.2 - 1)) • ContinuousLinearMap.fst ℝ ℝ ℝ + (p.1 ^ p.2 * log p.1) • ContinuousLinearMap.snd ℝ ℝ ℝ =
    rexp (log p.1 * p.2) • (log p.1 • ContinuousLinearMap.snd ℝ ℝ ℝ + p.2 • p.1⁻¹ • ContinuousLinearMap.fst ℝ ℝ ℝ)
state_after: no goals
Theorem: CauSeq.mul_limZero_right
File: Mathlib/Algebra/Order/CauSeq/Basic.lean

tactic: have := mul_lt_mul' (le_of_lt <| hF j) (H _ ij) (abv_nonneg abv _) F0
state_before: α : Type u_1
β : Type u_2
inst✝² : LinearOrderedField α
inst✝¹ : Ring β
abv : β → α
inst✝ : IsAbsoluteValue abv
f g : CauSeq β abv
hg : g.LimZero
ε : α
ε0 : ε > 0
F : α
F0 : F > 0
hF : ∀ (i : ℕ), abv (↑f i) < F
i : ℕ
H : ∀ j ≥ i, abv (↑g j) < ε / F
j : ℕ
ij : j ≥ i
⊢ abv (↑(f * g) j) < ε
state_after: α : Type u_1
β : Type u_2
inst✝² : LinearOrderedField α
inst✝¹ : Ring β
abv : β → α
inst✝ : IsAbsoluteValue abv
f g : CauSeq β abv
hg : g.LimZero
ε : α
ε0 : ε > 0
F : α
F0 : F > 0
hF : ∀ (i : ℕ), abv (↑f i) < F
i : ℕ
H : ∀ j ≥ i, abv (↑g j) < ε / F
j : ℕ
ij : j ≥ i
this : abv (↑f j) * abv (↑g j) < F * (ε / F)
⊢ abv (↑(f * g) j) < ε

tactic: rwa [mul_comm F, div_mul_cancel₀ _ (ne_of_gt F0), ← abv_mul] at this
state_before: α : Type u_1
β : Type u_2
inst✝² : LinearOrderedField α
inst✝¹ : Ring β
abv : β → α
inst✝ : IsAbsoluteValue abv
f g : CauSeq β abv
hg : g.LimZero
ε : α
ε0 : ε > 0
F : α
F0 : F > 0
hF : ∀ (i : ℕ), abv (↑f i) < F
i : ℕ
H : ∀ j ≥ i, abv (↑g j) < ε / F
j : ℕ
ij : j ≥ i
this : abv (↑f j) * abv (↑g j) < F * (ε / F)
⊢ abv (↑(f * g) j) < ε
state_after: no goals
Theorem: CategoryTheory.Functor.IsLocalization.of_equivalences
File: Mathlib/CategoryTheory/Localization/Equivalence.lean

tactic: haveI : (E.functor ⋙ L₂).IsLocalization W₁ :=
  of_equivalence_target L₁ W₁ _ E' ((CatCommSq.iso _ _ _ _).symm)
state_before: C₁ : Type u_1
C₂ : Type u_2
D : Type u_3
D₁ : Type u_4
D₂ : Type u_5
inst✝⁶ : Category.{u_6, u_1} C₁
inst✝⁵ : Category.{u_8, u_2} C₂
inst✝⁴ : Category.{?u.22844, u_3} D
inst✝³ : Category.{u_7, u_4} D₁
inst✝² : Category.{u_9, u_5} D₂
L₁ : C₁ ⥤ D₁
W₁ : MorphismProperty C₁
inst✝¹ : L₁.IsLocalization W₁
L₂ : C₂ ⥤ D₂
W₂ : MorphismProperty C₂
E : C₁ ≌ C₂
E' : D₁ ≌ D₂
inst✝ : CatCommSq E.functor L₁ L₂ E'.functor
hW₁ : W₁ ≤ W₂.isoClosure.inverseImage E.functor
hW₂ : W₂.IsInvertedBy L₂
⊢ L₂.IsLocalization W₂
state_after: C₁ : Type u_1
C₂ : Type u_2
D : Type u_3
D₁ : Type u_4
D₂ : Type u_5
inst✝⁶ : Category.{u_6, u_1} C₁
inst✝⁵ : Category.{u_8, u_2} C₂
inst✝⁴ : Category.{?u.22844, u_3} D
inst✝³ : Category.{u_7, u_4} D₁
inst✝² : Category.{u_9, u_5} D₂
L₁ : C₁ ⥤ D₁
W₁ : MorphismProperty C₁
inst✝¹ : L₁.IsLocalization W₁
L₂ : C₂ ⥤ D₂
W₂ : MorphismProperty C₂
E : C₁ ≌ C₂
E' : D₁ ≌ D₂
inst✝ : CatCommSq E.functor L₁ L₂ E'.functor
hW₁ : W₁ ≤ W₂.isoClosure.inverseImage E.functor
hW₂ : W₂.IsInvertedBy L₂
this : (E.functor ⋙ L₂).IsLocalization W₁
⊢ L₂.IsLocalization W₂

tactic: exact of_equivalence_source (E.functor ⋙ L₂) W₁ L₂ W₂ E hW₁ hW₂ (Iso.refl _)
state_before: C₁ : Type u_1
C₂ : Type u_2
D : Type u_3
D₁ : Type u_4
D₂ : Type u_5
inst✝⁶ : Category.{u_6, u_1} C₁
inst✝⁵ : Category.{u_8, u_2} C₂
inst✝⁴ : Category.{?u.22844, u_3} D
inst✝³ : Category.{u_7, u_4} D₁
inst✝² : Category.{u_9, u_5} D₂
L₁ : C₁ ⥤ D₁
W₁ : MorphismProperty C₁
inst✝¹ : L₁.IsLocalization W₁
L₂ : C₂ ⥤ D₂
W₂ : MorphismProperty C₂
E : C₁ ≌ C₂
E' : D₁ ≌ D₂
inst✝ : CatCommSq E.functor L₁ L₂ E'.functor
hW₁ : W₁ ≤ W₂.isoClosure.inverseImage E.functor
hW₂ : W₂.IsInvertedBy L₂
this : (E.functor ⋙ L₂).IsLocalization W₁
⊢ L₂.IsLocalization W₂
state_after: no goals
Theorem: IsLocalization.map_units_map_submonoid
File: Mathlib/RingTheory/Localization/Basic.lean

tactic: rw [IsScalarTower.algebraMap_apply _ S]
state_before: R : Type u_1
inst✝¹² : CommRing R
M : Submonoid R
S : Type u_2
inst✝¹¹ : CommRing S
inst✝¹⁰ : Algebra R S
P : Type u_3
inst✝⁹ : CommRing P
Rₘ : Type u_4
Sₘ : Type u_5
inst✝⁸ : CommRing Rₘ
inst✝⁷ : CommRing Sₘ
inst✝⁶ : Algebra R Rₘ
inst✝⁵ : IsLocalization M Rₘ
inst✝⁴ : Algebra S Sₘ
i : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝³ : Algebra Rₘ Sₘ
inst✝² : Algebra R Sₘ
inst✝¹ : IsScalarTower R Rₘ Sₘ
inst✝ : IsScalarTower R S Sₘ
y : ↥M
⊢ IsUnit ((algebraMap R Sₘ) ↑y)
state_after: R : Type u_1
inst✝¹² : CommRing R
M : Submonoid R
S : Type u_2
inst✝¹¹ : CommRing S
inst✝¹⁰ : Algebra R S
P : Type u_3
inst✝⁹ : CommRing P
Rₘ : Type u_4
Sₘ : Type u_5
inst✝⁸ : CommRing Rₘ
inst✝⁷ : CommRing Sₘ
inst✝⁶ : Algebra R Rₘ
inst✝⁵ : IsLocalization M Rₘ
inst✝⁴ : Algebra S Sₘ
i : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝³ : Algebra Rₘ Sₘ
inst✝² : Algebra R Sₘ
inst✝¹ : IsScalarTower R Rₘ Sₘ
inst✝ : IsScalarTower R S Sₘ
y : ↥M
⊢ IsUnit ((algebraMap S Sₘ) ((algebraMap R S) ↑y))

tactic: exact IsLocalization.map_units Sₘ ⟨algebraMap R S y, Algebra.mem_algebraMapSubmonoid_of_mem y⟩
state_before: R : Type u_1
inst✝¹² : CommRing R
M : Submonoid R
S : Type u_2
inst✝¹¹ : CommRing S
inst✝¹⁰ : Algebra R S
P : Type u_3
inst✝⁹ : CommRing P
Rₘ : Type u_4
Sₘ : Type u_5
inst✝⁸ : CommRing Rₘ
inst✝⁷ : CommRing Sₘ
inst✝⁶ : Algebra R Rₘ
inst✝⁵ : IsLocalization M Rₘ
inst✝⁴ : Algebra S Sₘ
i : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝³ : Algebra Rₘ Sₘ
inst✝² : Algebra R Sₘ
inst✝¹ : IsScalarTower R Rₘ Sₘ
inst✝ : IsScalarTower R S Sₘ
y : ↥M
⊢ IsUnit ((algebraMap S Sₘ) ((algebraMap R S) ↑y))
state_after: no goals
Theorem: AlgebraicTopology.DoldKan.map_Q
File: Mathlib/AlgebraicTopology/DoldKan/Projections.lean

tactic: rw [← add_right_inj (G.map ((P q : K[X] ⟶ _).f n)), ← G.map_add, map_P G X q n, P_add_Q_f,
  P_add_Q_f]
state_before: C : Type u_1
inst✝⁴ : Category.{u_4, u_1} C
inst✝³ : Preadditive C
X✝ : SimplicialObject C
D : Type u_2
inst✝² : Category.{u_3, u_2} D
inst✝¹ : Preadditive D
G : C ⥤ D
inst✝ : G.Additive
X : SimplicialObject C
q n : ℕ
⊢ G.map ((Q q).f n) = (Q q).f n
state_after: C : Type u_1
inst✝⁴ : Category.{u_4, u_1} C
inst✝³ : Preadditive C
X✝ : SimplicialObject C
D : Type u_2
inst✝² : Category.{u_3, u_2} D
inst✝¹ : Preadditive D
G : C ⥤ D
inst✝ : G.Additive
X : SimplicialObject C
q n : ℕ
⊢ G.map (𝟙 (X _[n])) = 𝟙 (((whiskering C D).obj G).obj X _[n])

tactic: apply G.map_id
state_before: C : Type u_1
inst✝⁴ : Category.{u_4, u_1} C
inst✝³ : Preadditive C
X✝ : SimplicialObject C
D : Type u_2
inst✝² : Category.{u_3, u_2} D
inst✝¹ : Preadditive D
G : C ⥤ D
inst✝ : G.Additive
X : SimplicialObject C
q n : ℕ
⊢ G.map (𝟙 (X _[n])) = 𝟙 (((whiskering C D).obj G).obj X _[n])
state_after: no goals
Theorem: Submodule.closure_induction'
File: Mathlib/LinearAlgebra/Span.lean

tactic: refine Exists.elim ?_ fun (hx : x ∈ span R s) (hc : p x hx) ↦ hc
state_before: R : Type u_1
R₂ : Type u_2
K : Type u_3
M : Type u_4
M₂ : Type u_5
V : Type u_6
S : Type u_7
inst✝⁷ : Semiring R
inst✝⁶ : AddCommMonoid M
inst✝⁵ : Module R M
x✝ : M
p✝ p' : Submodule R M
inst✝⁴ : Semiring R₂
σ₁₂ : R →+* R₂
inst✝³ : AddCommMonoid M₂
inst✝² : Module R₂ M₂
F : Type u_8
inst✝¹ : FunLike F M M₂
inst✝ : SemilinearMapClass F σ₁₂ M M₂
s t : Set M
p : (x : M) → x ∈ span R s → Prop
zero : p 0 ⋯
add : ∀ (x : M) (hx : x ∈ span R s) (y : M) (hy : y ∈ span R s), p x hx → p y hy → p (x + y) ⋯
smul_mem : ∀ (r : R) (x : M) (h : x ∈ s), p (r • x) ⋯
x : M
hx : x ∈ span R s
⊢ p x hx
state_after: R : Type u_1
R₂ : Type u_2
K : Type u_3
M : Type u_4
M₂ : Type u_5
V : Type u_6
S : Type u_7
inst✝⁷ : Semiring R
inst✝⁶ : AddCommMonoid M
inst✝⁵ : Module R M
x✝ : M
p✝ p' : Submodule R M
inst✝⁴ : Semiring R₂
σ₁₂ : R →+* R₂
inst✝³ : AddCommMonoid M₂
inst✝² : Module R₂ M₂
F : Type u_8
inst✝¹ : FunLike F M M₂
inst✝ : SemilinearMapClass F σ₁₂ M M₂
s t : Set M
p : (x : M) → x ∈ span R s → Prop
zero : p 0 ⋯
add : ∀ (x : M) (hx : x ∈ span R s) (y : M) (hy : y ∈ span R s), p x hx → p y hy → p (x + y) ⋯
smul_mem : ∀ (r : R) (x : M) (h : x ∈ s), p (r • x) ⋯
x : M
hx : x ∈ span R s
⊢ ∃ (x_1 : x ∈ span R s), p x x_1

tactic: refine closure_induction hx ⟨zero_mem _, zero⟩
  (fun x y hx hy ↦ Exists.elim hx fun hx' hx ↦
    Exists.elim hy fun hy' hy ↦ ⟨add_mem hx' hy', add _ _ _ _ hx hy⟩)
  fun r x hx ↦ ⟨Submodule.smul_mem _ _ (subset_span hx), smul_mem r x hx⟩
state_before: R : Type u_1
R₂ : Type u_2
K : Type u_3
M : Type u_4
M₂ : Type u_5
V : Type u_6
S : Type u_7
inst✝⁷ : Semiring R
inst✝⁶ : AddCommMonoid M
inst✝⁵ : Module R M
x✝ : M
p✝ p' : Submodule R M
inst✝⁴ : Semiring R₂
σ₁₂ : R →+* R₂
inst✝³ : AddCommMonoid M₂
inst✝² : Module R₂ M₂
F : Type u_8
inst✝¹ : FunLike F M M₂
inst✝ : SemilinearMapClass F σ₁₂ M M₂
s t : Set M
p : (x : M) → x ∈ span R s → Prop
zero : p 0 ⋯
add : ∀ (x : M) (hx : x ∈ span R s) (y : M) (hy : y ∈ span R s), p x hx → p y hy → p (x + y) ⋯
smul_mem : ∀ (r : R) (x : M) (h : x ∈ s), p (r • x) ⋯
x : M
hx : x ∈ span R s
⊢ ∃ (x_1 : x ∈ span R s), p x x_1
state_after: no goals
Theorem: IsUpperSet.not_bddAbove
File: Mathlib/Order/UpperLower/Basic.lean

tactic: rintro ⟨a, ha⟩ ⟨b, hb⟩
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝² : Preorder α
inst✝¹ : Preorder β
s : Set α
p : α → Prop
a : α
inst✝ : NoMaxOrder α
hs : IsUpperSet s
⊢ s.Nonempty → ¬BddAbove s
state_after: case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝² : Preorder α
inst✝¹ : Preorder β
s : Set α
p : α → Prop
a✝ : α
inst✝ : NoMaxOrder α
hs : IsUpperSet s
a : α
ha : a ∈ s
b : α
hb : b ∈ upperBounds s
⊢ False

tactic: obtain ⟨c, hc⟩ := exists_gt b
state_before: case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝² : Preorder α
inst✝¹ : Preorder β
s : Set α
p : α → Prop
a✝ : α
inst✝ : NoMaxOrder α
hs : IsUpperSet s
a : α
ha : a ∈ s
b : α
hb : b ∈ upperBounds s
⊢ False
state_after: case intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝² : Preorder α
inst✝¹ : Preorder β
s : Set α
p : α → Prop
a✝ : α
inst✝ : NoMaxOrder α
hs : IsUpperSet s
a : α
ha : a ∈ s
b : α
hb : b ∈ upperBounds s
c : α
hc : b < c
⊢ False

tactic: exact hc.not_le (hb <| hs ((hb ha).trans hc.le) ha)
state_before: case intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝² : Preorder α
inst✝¹ : Preorder β
s : Set α
p : α → Prop
a✝ : α
inst✝ : NoMaxOrder α
hs : IsUpperSet s
a : α
ha : a ∈ s
b : α
hb : b ∈ upperBounds s
c : α
hc : b < c
⊢ False
state_after: no goals
Theorem: Int.even_or_odd'
File: Mathlib/Algebra/Ring/Int.lean

tactic: simpa only [two_mul, exists_or, Odd, Even] using even_or_odd n
state_before: m n✝ n : ℤ
⊢ ∃ k, n = 2 * k ∨ n = 2 * k + 1
state_after: no goals
Theorem: CategoryTheory.Functor.map_inv_hom
File: Mathlib/CategoryTheory/Iso.lean

tactic: simp
state_before: C : Type u
inst✝² : Category.{v, u} C
X✝ Y✝ Z : C
D : Type u₂
inst✝¹ : Category.{v₂, u₂} D
F : C ⥤ D
X Y : C
f : X ⟶ Y
inst✝ : IsIso f
⊢ F.map (inv f) ≫ F.map f = 𝟙 (F.obj Y)
state_after: no goals
Theorem: Cubic.of_d_eq_zero
File: Mathlib/Algebra/CubicDiscriminant.lean

tactic: rw [of_c_eq_zero ha hb hc, hd, C_0]
state_before: R : Type u_1
S : Type u_2
F : Type u_3
K : Type u_4
P Q : Cubic R
a b c d a' b' c' d' : R
inst✝ : Semiring R
ha : P.a = 0
hb : P.b = 0
hc : P.c = 0
hd : P.d = 0
⊢ P.toPoly = 0
state_after: no goals