1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: MeasureTheory.Measure.sum_add_sum_compl
File: Mathlib/MeasureTheory/Measure/MeasureSpace.lean

tactic: ext1 t ht
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 : α → β
s : Set ι
μ : ι → Measure α
⊢ ((sum fun i => μ ↑i) + sum fun i => μ ↑i) = sum μ
state_after: case h
α : 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 : α → β
s : Set ι
μ : ι → Measure α
t : Set α
ht : MeasurableSet t
⊢ ((sum fun i => μ ↑i) + sum fun i => μ ↑i) t = (sum μ) t

tactic: simp only [add_apply, sum_apply _ ht]
state_before: case h
α : 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 : α → β
s : Set ι
μ : ι → Measure α
t : Set α
ht : MeasurableSet t
⊢ ((sum fun i => μ ↑i) + sum fun i => μ ↑i) t = (sum μ) t
state_after: case h
α : 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 : α → β
s : Set ι
μ : ι → Measure α
t : Set α
ht : MeasurableSet t
⊢ ∑' (i : ↑s), (μ ↑i) t + ∑' (i : ↑sᶜ), (μ ↑i) t = ∑' (i : ι), (μ i) t

tactic: exact tsum_add_tsum_compl (f := fun i => μ i t) ENNReal.summable ENNReal.summable
state_before: case h
α : 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 : α → β
s : Set ι
μ : ι → Measure α
t : Set α
ht : MeasurableSet t
⊢ ∑' (i : ↑s), (μ ↑i) t + ∑' (i : ↑sᶜ), (μ ↑i) t = ∑' (i : ι), (μ i) t
state_after: no goals
Theorem: SetTheory.PGame.birthday_moveRight_lt
File: Mathlib/SetTheory/Game/Birthday.lean

tactic: cases x
state_before: x : PGame
i : x.RightMoves
⊢ (x.moveRight i).birthday < x.birthday
state_after: case mk
α✝ β✝ : Type u_1
a✝¹ : α✝ → PGame
a✝ : β✝ → PGame
i : (mk α✝ β✝ a✝¹ a✝).RightMoves
⊢ ((mk α✝ β✝ a✝¹ a✝).moveRight i).birthday < (mk α✝ β✝ a✝¹ a✝).birthday

tactic: rw [birthday]
state_before: case mk
α✝ β✝ : Type u_1
a✝¹ : α✝ → PGame
a✝ : β✝ → PGame
i : (mk α✝ β✝ a✝¹ a✝).RightMoves
⊢ ((mk α✝ β✝ a✝¹ a✝).moveRight i).birthday < (mk α✝ β✝ a✝¹ a✝).birthday
state_after: case mk
α✝ β✝ : Type u_1
a✝¹ : α✝ → PGame
a✝ : β✝ → PGame
i : (mk α✝ β✝ a✝¹ a✝).RightMoves
⊢ ((mk α✝ β✝ a✝¹ a✝).moveRight i).birthday < max (lsub fun i => (a✝¹ i).birthday) (lsub fun i => (a✝ i).birthday)

tactic: exact lt_max_of_lt_right (lt_lsub _ i)
state_before: case mk
α✝ β✝ : Type u_1
a✝¹ : α✝ → PGame
a✝ : β✝ → PGame
i : (mk α✝ β✝ a✝¹ a✝).RightMoves
⊢ ((mk α✝ β✝ a✝¹ a✝).moveRight i).birthday < max (lsub fun i => (a✝¹ i).birthday) (lsub fun i => (a✝ i).birthday)
state_after: no goals
Theorem: Cardinal.sum_le_iSup
File: Mathlib/SetTheory/Cardinal/Basic.lean

tactic: rw [← lift_id #ι]
state_before: α β ι : Type u
f : ι → Cardinal.{u}
⊢ sum f ≤ #ι * iSup f
state_after: α β ι : Type u
f : ι → Cardinal.{u}
⊢ sum f ≤ lift.{u, u} #ι * iSup f

tactic: exact sum_le_iSup_lift f
state_before: α β ι : Type u
f : ι → Cardinal.{u}
⊢ sum f ≤ lift.{u, u} #ι * iSup f
state_after: no goals
Theorem: HasDerivWithinAt.clog
File: Mathlib/Analysis/SpecialFunctions/Complex/LogDeriv.lean

tactic: rw [div_eq_inv_mul]
state_before: α : Type u_1
inst✝² : TopologicalSpace α
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℂ E
f : ℂ → ℂ
f' x : ℂ
s : Set ℂ
h₁ : HasDerivWithinAt f f' s x
h₂ : f x ∈ slitPlane
⊢ HasDerivWithinAt (fun t => log (f t)) (f' / f x) s x
state_after: α : Type u_1
inst✝² : TopologicalSpace α
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℂ E
f : ℂ → ℂ
f' x : ℂ
s : Set ℂ
h₁ : HasDerivWithinAt f f' s x
h₂ : f x ∈ slitPlane
⊢ HasDerivWithinAt (fun t => log (f t)) ((f x)⁻¹ * f') s x

tactic: exact (hasStrictDerivAt_log h₂).hasDerivAt.comp_hasDerivWithinAt x h₁
state_before: α : Type u_1
inst✝² : TopologicalSpace α
E : Type u_2
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℂ E
f : ℂ → ℂ
f' x : ℂ
s : Set ℂ
h₁ : HasDerivWithinAt f f' s x
h₂ : f x ∈ slitPlane
⊢ HasDerivWithinAt (fun t => log (f t)) ((f x)⁻¹ * f') s x
state_after: no goals
Theorem: CategoryTheory.MonoidalCategory.triangle_assoc_comp_right_inv
File: Mathlib/CategoryTheory/Monoidal/Category.lean

tactic: simp [← cancel_mono (X ◁ (λ_ Y).hom)]
state_before: C✝ : Type u
𝒞 : Category.{v, u} C✝
inst✝² : MonoidalCategory C✝
C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : MonoidalCategory C
U V W X✝ Y✝ Z X Y : C
⊢ (ρ_ X).inv ▷ Y ≫ (α_ X (𝟙_ C) Y).hom = X ◁ (λ_ Y).inv
state_after: no goals
Theorem: MeasureTheory.setToFun_smul_left
File: Mathlib/MeasureTheory/Integral/SetToL1.lean

tactic: by_cases hf : Integrable f μ
state_before: α : Type u_1
E : Type u_2
F : Type u_3
F' : Type u_4
G : Type u_5
𝕜 : Type u_6
p : ℝ≥0∞
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace ℝ F
inst✝³ : NormedAddCommGroup F'
inst✝² : NormedSpace ℝ F'
inst✝¹ : NormedAddCommGroup G
m : MeasurableSpace α
μ : Measure α
inst✝ : CompleteSpace F
T T' T'' : Set α → E →L[ℝ] F
C C' C'' : ℝ
f✝ g : α → E
hT : DominatedFinMeasAdditive μ T C
c : ℝ
f : α → E
⊢ setToFun μ (fun s => c • T s) ⋯ f = c • setToFun μ T hT f
state_after: case pos
α : Type u_1
E : Type u_2
F : Type u_3
F' : Type u_4
G : Type u_5
𝕜 : Type u_6
p : ℝ≥0∞
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace ℝ F
inst✝³ : NormedAddCommGroup F'
inst✝² : NormedSpace ℝ F'
inst✝¹ : NormedAddCommGroup G
m : MeasurableSpace α
μ : Measure α
inst✝ : CompleteSpace F
T T' T'' : Set α → E →L[ℝ] F
C C' C'' : ℝ
f✝ g : α → E
hT : DominatedFinMeasAdditive μ T C
c : ℝ
f : α → E
hf : Integrable f μ
⊢ setToFun μ (fun s => c • T s) ⋯ f = c • setToFun μ T hT f

case neg
α : Type u_1
E : Type u_2
F : Type u_3
F' : Type u_4
G : Type u_5
𝕜 : Type u_6
p : ℝ≥0∞
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace ℝ F
inst✝³ : NormedAddCommGroup F'
inst✝² : NormedSpace ℝ F'
inst✝¹ : NormedAddCommGroup G
m : MeasurableSpace α
μ : Measure α
inst✝ : CompleteSpace F
T T' T'' : Set α → E →L[ℝ] F
C C' C'' : ℝ
f✝ g : α → E
hT : DominatedFinMeasAdditive μ T C
c : ℝ
f : α → E
hf : ¬Integrable f μ
⊢ setToFun μ (fun s => c • T s) ⋯ f = c • setToFun μ T hT f

tactic: simp_rw [setToFun_eq _ hf, L1.setToL1_smul_left hT c]
state_before: case pos
α : Type u_1
E : Type u_2
F : Type u_3
F' : Type u_4
G : Type u_5
𝕜 : Type u_6
p : ℝ≥0∞
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace ℝ F
inst✝³ : NormedAddCommGroup F'
inst✝² : NormedSpace ℝ F'
inst✝¹ : NormedAddCommGroup G
m : MeasurableSpace α
μ : Measure α
inst✝ : CompleteSpace F
T T' T'' : Set α → E →L[ℝ] F
C C' C'' : ℝ
f✝ g : α → E
hT : DominatedFinMeasAdditive μ T C
c : ℝ
f : α → E
hf : Integrable f μ
⊢ setToFun μ (fun s => c • T s) ⋯ f = c • setToFun μ T hT f
state_after: no goals

tactic: simp_rw [setToFun_undef _ hf, smul_zero]
state_before: case neg
α : Type u_1
E : Type u_2
F : Type u_3
F' : Type u_4
G : Type u_5
𝕜 : Type u_6
p : ℝ≥0∞
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℝ E
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace ℝ F
inst✝³ : NormedAddCommGroup F'
inst✝² : NormedSpace ℝ F'
inst✝¹ : NormedAddCommGroup G
m : MeasurableSpace α
μ : Measure α
inst✝ : CompleteSpace F
T T' T'' : Set α → E →L[ℝ] F
C C' C'' : ℝ
f✝ g : α → E
hT : DominatedFinMeasAdditive μ T C
c : ℝ
f : α → E
hf : ¬Integrable f μ
⊢ setToFun μ (fun s => c • T s) ⋯ f = c • setToFun μ T hT f
state_after: no goals
Theorem: Metric.hausdorffDist_empty
File: Mathlib/Topology/MetricSpace/HausdorffDistance.lean

tactic: rcases s.eq_empty_or_nonempty with h | h
state_before: ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
s t u : Set α
x y : α
Φ : α → β
⊢ hausdorffDist s ∅ = 0
state_after: case inl
ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
s t u : Set α
x y : α
Φ : α → β
h : s = ∅
⊢ hausdorffDist s ∅ = 0

case inr
ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
s t u : Set α
x y : α
Φ : α → β
h : s.Nonempty
⊢ hausdorffDist s ∅ = 0

tactic: simp [h]
state_before: case inl
ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
s t u : Set α
x y : α
Φ : α → β
h : s = ∅
⊢ hausdorffDist s ∅ = 0
state_after: no goals

tactic: simp [hausdorffDist, hausdorffEdist_empty h]
state_before: case inr
ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
s t u : Set α
x y : α
Φ : α → β
h : s.Nonempty
⊢ hausdorffDist s ∅ = 0
state_after: no goals
Theorem: pow_mod_card
File: Mathlib/GroupTheory/OrderOfElement.lean

tactic: rw [eq_comm, ← pow_mod_orderOf, ← Nat.mod_mod_of_dvd n orderOf_dvd_card, pow_mod_orderOf]
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
Theorem: div_le_div_of_nonneg_right
File: Mathlib/Algebra/Order/Field/Basic.lean

tactic: rw [div_eq_mul_one_div a c, div_eq_mul_one_div b c]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedSemifield α
a b c d e : α
m n : ℤ
hab : a ≤ b
hc : 0 ≤ c
⊢ a / c ≤ b / c
state_after: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedSemifield α
a b c d e : α
m n : ℤ
hab : a ≤ b
hc : 0 ≤ c
⊢ a * (1 / c) ≤ b * (1 / c)

tactic: exact mul_le_mul_of_nonneg_right hab (one_div_nonneg.2 hc)
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedSemifield α
a b c d e : α
m n : ℤ
hab : a ≤ b
hc : 0 ≤ c
⊢ a * (1 / c) ≤ b * (1 / c)
state_after: no goals
Theorem: log_add_one_le_harmonic
File: Mathlib/NumberTheory/Harmonic/Bounds.lean

tactic: calc _ = ∫ x in (1:ℕ)..↑(n+1), x⁻¹ := ?_
     _ ≤ ∑ d ∈ Finset.Icc 1 n, (d:ℝ)⁻¹ := ?_
     _ = harmonic n := ?_
state_before: n : ℕ
⊢ Real.log ↑(n + 1) ≤ ↑(harmonic n)
state_after: case calc_1
n : ℕ
⊢ Real.log ↑(n + 1) = ∫ (x : ℝ) in ↑1 ..↑(n + 1), x⁻¹

case calc_2
n : ℕ
⊢ ∫ (x : ℝ) in ↑1 ..↑(n + 1), x⁻¹ ≤ ∑ d ∈ Finset.Icc 1 n, (↑d)⁻¹

case calc_3
n : ℕ
⊢ ∑ d ∈ Finset.Icc 1 n, (↑d)⁻¹ = ↑(harmonic n)

tactic: rw [Nat.cast_one, integral_inv (by simp [(show ¬ (1 : ℝ) ≤ 0 by norm_num)]), div_one]
state_before: case calc_1
n : ℕ
⊢ Real.log ↑(n + 1) = ∫ (x : ℝ) in ↑1 ..↑(n + 1), x⁻¹
state_after: no goals

tactic: simp [(show ¬ (1 : ℝ) ≤ 0 by norm_num)]
state_before: n : ℕ
⊢ 0 ∉ Set.uIcc 1 ↑(n + 1)
state_after: no goals

tactic: norm_num
state_before: n : ℕ
⊢ ¬1 ≤ 0
state_after: no goals

tactic: exact (inv_antitoneOn_Icc_right <| by norm_num).integral_le_sum_Ico (Nat.le_add_left 1 n)
state_before: case calc_2
n : ℕ
⊢ ∫ (x : ℝ) in ↑1 ..↑(n + 1), x⁻¹ ≤ ∑ d ∈ Finset.Icc 1 n, (↑d)⁻¹
state_after: no goals

tactic: norm_num
state_before: n : ℕ
⊢ 0 < ↑1
state_after: no goals

tactic: simp only [harmonic_eq_sum_Icc, Rat.cast_sum, Rat.cast_inv, Rat.cast_natCast]
state_before: case calc_3
n : ℕ
⊢ ∑ d ∈ Finset.Icc 1 n, (↑d)⁻¹ = ↑(harmonic n)
state_after: no goals
Theorem: Complex.log_neg_I
File: Mathlib/Analysis/SpecialFunctions/Complex/Log.lean

tactic: simp [log]
state_before: ⊢ log (-I) = -(↑π / 2) * I
state_after: no goals
Theorem: DFinsupp.addHom_ext
File: Mathlib/Data/DFinsupp/Basic.lean

tactic: refine AddMonoidHom.eq_of_eqOn_denseM add_closure_iUnion_range_single fun f hf => ?_
state_before: ι : Type u
γ✝ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝² : DecidableEq ι
inst✝¹ : (i : ι) → AddZeroClass (β i)
γ : Type w
inst✝ : AddZeroClass γ
f g : (Π₀ (i : ι), β i) →+ γ
H : ∀ (i : ι) (y : β i), f (single i y) = g (single i y)
⊢ f = g
state_after: ι : Type u
γ✝ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝² : DecidableEq ι
inst✝¹ : (i : ι) → AddZeroClass (β i)
γ : Type w
inst✝ : AddZeroClass γ
f✝ g : (Π₀ (i : ι), β i) →+ γ
H : ∀ (i : ι) (y : β i), f✝ (single i y) = g (single i y)
f : Π₀ (i : ι), β i
hf : f ∈ ⋃ i, Set.range (single i)
⊢ f✝ f = g f

tactic: simp only [Set.mem_iUnion, Set.mem_range] at hf
state_before: ι : Type u
γ✝ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝² : DecidableEq ι
inst✝¹ : (i : ι) → AddZeroClass (β i)
γ : Type w
inst✝ : AddZeroClass γ
f✝ g : (Π₀ (i : ι), β i) →+ γ
H : ∀ (i : ι) (y : β i), f✝ (single i y) = g (single i y)
f : Π₀ (i : ι), β i
hf : f ∈ ⋃ i, Set.range (single i)
⊢ f✝ f = g f
state_after: ι : Type u
γ✝ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝² : DecidableEq ι
inst✝¹ : (i : ι) → AddZeroClass (β i)
γ : Type w
inst✝ : AddZeroClass γ
f✝ g : (Π₀ (i : ι), β i) →+ γ
H : ∀ (i : ι) (y : β i), f✝ (single i y) = g (single i y)
f : Π₀ (i : ι), β i
hf : ∃ i y, single i y = f
⊢ f✝ f = g f

tactic: rcases hf with ⟨x, y, rfl⟩
state_before: ι : Type u
γ✝ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝² : DecidableEq ι
inst✝¹ : (i : ι) → AddZeroClass (β i)
γ : Type w
inst✝ : AddZeroClass γ
f✝ g : (Π₀ (i : ι), β i) →+ γ
H : ∀ (i : ι) (y : β i), f✝ (single i y) = g (single i y)
f : Π₀ (i : ι), β i
hf : ∃ i y, single i y = f
⊢ f✝ f = g f
state_after: case intro.intro
ι : Type u
γ✝ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝² : DecidableEq ι
inst✝¹ : (i : ι) → AddZeroClass (β i)
γ : Type w
inst✝ : AddZeroClass γ
f g : (Π₀ (i : ι), β i) →+ γ
H : ∀ (i : ι) (y : β i), f (single i y) = g (single i y)
x : ι
y : β x
⊢ f (single x y) = g (single x y)

tactic: apply H
state_before: case intro.intro
ι : Type u
γ✝ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝² : DecidableEq ι
inst✝¹ : (i : ι) → AddZeroClass (β i)
γ : Type w
inst✝ : AddZeroClass γ
f g : (Π₀ (i : ι), β i) →+ γ
H : ∀ (i : ι) (y : β i), f (single i y) = g (single i y)
x : ι
y : β x
⊢ f (single x y) = g (single x y)
state_after: no goals
Theorem: Cardinal.mk_eq_two_iff'
File: Mathlib/SetTheory/Cardinal/Basic.lean

tactic: rw [mk_eq_two_iff]
state_before: α β : Type u
c : Cardinal.{?u.237473}
x : α
⊢ #α = 2 ↔ ∃! y, y ≠ x
state_after: α β : Type u
c : Cardinal.{?u.237473}
x : α
⊢ (∃ x y, x ≠ y ∧ {x, y} = univ) ↔ ∃! y, y ≠ x

tactic: constructor
state_before: α β : Type u
c : Cardinal.{?u.237473}
x : α
⊢ (∃ x y, x ≠ y ∧ {x, y} = univ) ↔ ∃! y, y ≠ x
state_after: case mp
α β : Type u
c : Cardinal.{?u.237473}
x : α
⊢ (∃ x y, x ≠ y ∧ {x, y} = univ) → ∃! y, y ≠ x

case mpr
α β : Type u
c : Cardinal.{?u.237473}
x : α
⊢ (∃! y, y ≠ x) → ∃ x y, x ≠ y ∧ {x, y} = univ

tactic: rintro ⟨a, b, hne, h⟩
state_before: case mp
α β : Type u
c : Cardinal.{?u.237473}
x : α
⊢ (∃ x y, x ≠ y ∧ {x, y} = univ) → ∃! y, y ≠ x
state_after: case mp.intro.intro.intro
α β : Type u
c : Cardinal.{?u.237473}
x a b : α
hne : a ≠ b
h : {a, b} = univ
⊢ ∃! y, y ≠ x

tactic: simp only [eq_univ_iff_forall, mem_insert_iff, mem_singleton_iff] at h
state_before: case mp.intro.intro.intro
α β : Type u
c : Cardinal.{?u.237473}
x a b : α
hne : a ≠ b
h : {a, b} = univ
⊢ ∃! y, y ≠ x
state_after: case mp.intro.intro.intro
α β : Type u
c : Cardinal.{?u.237473}
x a b : α
hne : a ≠ b
h : ∀ (x : α), x = a ∨ x = b
⊢ ∃! y, y ≠ x

tactic: rcases h x with (rfl | rfl)
state_before: case mp.intro.intro.intro
α β : Type u
c : Cardinal.{?u.237473}
x a b : α
hne : a ≠ b
h : ∀ (x : α), x = a ∨ x = b
⊢ ∃! y, y ≠ x
state_after: case mp.intro.intro.intro.inl
α β : Type u
c : Cardinal.{?u.237473}
x b : α
hne : x ≠ b
h : ∀ (x_1 : α), x_1 = x ∨ x_1 = b
⊢ ∃! y, y ≠ x

case mp.intro.intro.intro.inr
α β : Type u
c : Cardinal.{?u.237473}
x a : α
hne : a ≠ x
h : ∀ (x_1 : α), x_1 = a ∨ x_1 = x
⊢ ∃! y, y ≠ x

tactic: exacts [⟨b, hne.symm, fun z => (h z).resolve_left⟩, ⟨a, hne, fun z => (h z).resolve_right⟩]
state_before: case mp.intro.intro.intro.inl
α β : Type u
c : Cardinal.{?u.237473}
x b : α
hne : x ≠ b
h : ∀ (x_1 : α), x_1 = x ∨ x_1 = b
⊢ ∃! y, y ≠ x

case mp.intro.intro.intro.inr
α β : Type u
c : Cardinal.{?u.237473}
x a : α
hne : a ≠ x
h : ∀ (x_1 : α), x_1 = a ∨ x_1 = x
⊢ ∃! y, y ≠ x
state_after: no goals

tactic: rintro ⟨y, hne, hy⟩
state_before: case mpr
α β : Type u
c : Cardinal.{?u.237473}
x : α
⊢ (∃! y, y ≠ x) → ∃ x y, x ≠ y ∧ {x, y} = univ
state_after: case mpr.intro.intro
α β : Type u
c : Cardinal.{?u.237473}
x y : α
hne : y ≠ x
hy : ∀ (y_1 : α), (fun y => y ≠ x) y_1 → y_1 = y
⊢ ∃ x y, x ≠ y ∧ {x, y} = univ

tactic: exact ⟨x, y, hne.symm, eq_univ_of_forall fun z => or_iff_not_imp_left.2 (hy z)⟩
state_before: case mpr.intro.intro
α β : Type u
c : Cardinal.{?u.237473}
x y : α
hne : y ≠ x
hy : ∀ (y_1 : α), (fun y => y ≠ x) y_1 → y_1 = y
⊢ ∃ x y, x ≠ y ∧ {x, y} = univ
state_after: no goals
Theorem: NonUnitalRing.ext_iff
File: Mathlib/Algebra/Ring/Ext.lean

tactic: rintro rfl
state_before: R : Type u
inst₁ inst₂ : NonUnitalRing R
⊢ inst₁ = inst₂ → HAdd.hAdd = HAdd.hAdd ∧ HMul.hMul = HMul.hMul
state_after: R : Type u
inst₁ : NonUnitalRing R
⊢ HAdd.hAdd = HAdd.hAdd ∧ HMul.hMul = HMul.hMul

tactic: constructor <;> rfl
state_before: R : Type u
inst₁ : NonUnitalRing R
⊢ HAdd.hAdd = HAdd.hAdd ∧ HMul.hMul = HMul.hMul
state_after: no goals
Theorem: Corners.noAccidental
File: Mathlib/Combinatorics/Additive/Corner/Roth.lean

tactic: simp only [mk_mem_triangleIndices] at ha hb hc
state_before: G : Type u_1
inst✝¹ : AddCommGroup G
inst✝ : Fintype G
A B : Finset (G × G)
a✝ b✝ c✝ d x y : G
n : ℕ
ε : ℝ
hs : IsCornerFree ↑A
a a' b b' c c' : G
ha : (a', b, c) ∈ Corners.triangleIndices A
hb : (a, b', c) ∈ Corners.triangleIndices A
hc : (a, b, c') ∈ Corners.triangleIndices A
⊢ a = a' ∨ b = b' ∨ c = c'
state_after: G : Type u_1
inst✝¹ : AddCommGroup G
inst✝ : Fintype G
A B : Finset (G × G)
a✝ b✝ c✝ d x y : G
n : ℕ
ε : ℝ
hs : IsCornerFree ↑A
a a' b b' c c' : G
ha : (a', b) ∈ A ∧ c = a' + b
hb : (a, b') ∈ A ∧ c = a + b'
hc : (a, b) ∈ A ∧ c' = a + b
⊢ a = a' ∨ b = b' ∨ c = c'

tactic: exact .inl $ hs ⟨hc.1, hb.1, ha.1, hb.2.symm.trans ha.2⟩
state_before: G : Type u_1
inst✝¹ : AddCommGroup G
inst✝ : Fintype G
A B : Finset (G × G)
a✝ b✝ c✝ d x y : G
n : ℕ
ε : ℝ
hs : IsCornerFree ↑A
a a' b b' c c' : G
ha : (a', b) ∈ A ∧ c = a' + b
hb : (a, b') ∈ A ∧ c = a + b'
hc : (a, b) ∈ A ∧ c' = a + b
⊢ a = a' ∨ b = b' ∨ c = c'
state_after: no goals
Theorem: Polynomial.isLocalRingHom_expand
File: Mathlib/Algebra/Polynomial/Expand.lean

tactic: refine ⟨fun f hf1 => ?_⟩
state_before: R : Type u
inst✝¹ : CommRing R
inst✝ : IsDomain R
p : ℕ
hp : 0 < p
⊢ IsLocalRingHom ↑(expand R p)
state_after: R : Type u
inst✝¹ : CommRing R
inst✝ : IsDomain R
p : ℕ
hp : 0 < p
f : R[X]
hf1 : IsUnit (↑(expand R p) f)
⊢ IsUnit f

tactic: norm_cast at hf1
state_before: R : Type u
inst✝¹ : CommRing R
inst✝ : IsDomain R
p : ℕ
hp : 0 < p
f : R[X]
hf1 : IsUnit (↑(expand R p) f)
⊢ IsUnit f
state_after: R : Type u
inst✝¹ : CommRing R
inst✝ : IsDomain R
p : ℕ
hp : 0 < p
f : R[X]
hf1 : IsUnit ((expand R p) f)
⊢ IsUnit f

tactic: have hf2 := eq_C_of_degree_eq_zero (degree_eq_zero_of_isUnit hf1)
state_before: R : Type u
inst✝¹ : CommRing R
inst✝ : IsDomain R
p : ℕ
hp : 0 < p
f : R[X]
hf1 : IsUnit ((expand R p) f)
⊢ IsUnit f
state_after: R : Type u
inst✝¹ : CommRing R
inst✝ : IsDomain R
p : ℕ
hp : 0 < p
f : R[X]
hf1 : IsUnit ((expand R p) f)
hf2 : (expand R p) f = C (((expand R p) f).coeff 0)
⊢ IsUnit f

tactic: rw [coeff_expand hp, if_pos (dvd_zero _), p.zero_div] at hf2
state_before: R : Type u
inst✝¹ : CommRing R
inst✝ : IsDomain R
p : ℕ
hp : 0 < p
f : R[X]
hf1 : IsUnit ((expand R p) f)
hf2 : (expand R p) f = C (((expand R p) f).coeff 0)
⊢ IsUnit f
state_after: R : Type u
inst✝¹ : CommRing R
inst✝ : IsDomain R
p : ℕ
hp : 0 < p
f : R[X]
hf1 : IsUnit ((expand R p) f)
hf2 : (expand R p) f = C (f.coeff 0)
⊢ IsUnit f

tactic: rw [hf2, isUnit_C] at hf1
state_before: R : Type u
inst✝¹ : CommRing R
inst✝ : IsDomain R
p : ℕ
hp : 0 < p
f : R[X]
hf1 : IsUnit ((expand R p) f)
hf2 : (expand R p) f = C (f.coeff 0)
⊢ IsUnit f
state_after: R : Type u
inst✝¹ : CommRing R
inst✝ : IsDomain R
p : ℕ
hp : 0 < p
f : R[X]
hf1 : IsUnit (f.coeff 0)
hf2 : (expand R p) f = C (f.coeff 0)
⊢ IsUnit f

tactic: rw [expand_eq_C hp] at hf2
state_before: R : Type u
inst✝¹ : CommRing R
inst✝ : IsDomain R
p : ℕ
hp : 0 < p
f : R[X]
hf1 : IsUnit (f.coeff 0)
hf2 : (expand R p) f = C (f.coeff 0)
⊢ IsUnit f
state_after: R : Type u
inst✝¹ : CommRing R
inst✝ : IsDomain R
p : ℕ
hp : 0 < p
f : R[X]
hf1 : IsUnit (f.coeff 0)
hf2 : f = C (f.coeff 0)
⊢ IsUnit f

tactic: rwa [hf2, isUnit_C]
state_before: R : Type u
inst✝¹ : CommRing R
inst✝ : IsDomain R
p : ℕ
hp : 0 < p
f : R[X]
hf1 : IsUnit (f.coeff 0)
hf2 : f = C (f.coeff 0)
⊢ IsUnit f
state_after: no goals
Theorem: CategoryTheory.Subgroupoid.isNormal_comap
File: Mathlib/CategoryTheory/Groupoid/Subgroupoid.lean

tactic: rw [comap, mem_setOf, Functor.map_id]
state_before: C : Type u
inst✝¹ : Groupoid C
S✝ : Subgroupoid C
D : Type u_1
inst✝ : Groupoid D
φ : C ⥤ D
S : Subgroupoid D
Sn : S.IsNormal
c : C
⊢ 𝟙 c ∈ (comap φ S).arrows c c
state_after: C : Type u
inst✝¹ : Groupoid C
S✝ : Subgroupoid C
D : Type u_1
inst✝ : Groupoid D
φ : C ⥤ D
S : Subgroupoid D
Sn : S.IsNormal
c : C
⊢ 𝟙 (φ.obj c) ∈ S.arrows (φ.obj c) (φ.obj c)

tactic: apply Sn.wide
state_before: C : Type u
inst✝¹ : Groupoid C
S✝ : Subgroupoid C
D : Type u_1
inst✝ : Groupoid D
φ : C ⥤ D
S : Subgroupoid D
Sn : S.IsNormal
c : C
⊢ 𝟙 (φ.obj c) ∈ S.arrows (φ.obj c) (φ.obj c)
state_after: no goals

tactic: simp_rw [inv_eq_inv f, comap, mem_setOf, Functor.map_comp, Functor.map_inv, ← inv_eq_inv]
state_before: C : Type u
inst✝¹ : Groupoid C
S✝ : Subgroupoid C
D : Type u_1
inst✝ : Groupoid D
φ : C ⥤ D
S : Subgroupoid D
Sn : S.IsNormal
c✝ d✝ : C
f : c✝ ⟶ d✝
γ : c✝ ⟶ c✝
hγ : γ ∈ (comap φ S).arrows c✝ c✝
⊢ Groupoid.inv f ≫ γ ≫ f ∈ (comap φ S).arrows d✝ d✝
state_after: C : Type u
inst✝¹ : Groupoid C
S✝ : Subgroupoid C
D : Type u_1
inst✝ : Groupoid D
φ : C ⥤ D
S : Subgroupoid D
Sn : S.IsNormal
c✝ d✝ : C
f : c✝ ⟶ d✝
γ : c✝ ⟶ c✝
hγ : γ ∈ (comap φ S).arrows c✝ c✝
⊢ Groupoid.inv (φ.map f) ≫ φ.map γ ≫ φ.map f ∈ S.arrows (φ.obj d✝) (φ.obj d✝)

tactic: exact Sn.conj _ hγ
state_before: C : Type u
inst✝¹ : Groupoid C
S✝ : Subgroupoid C
D : Type u_1
inst✝ : Groupoid D
φ : C ⥤ D
S : Subgroupoid D
Sn : S.IsNormal
c✝ d✝ : C
f : c✝ ⟶ d✝
γ : c✝ ⟶ c✝
hγ : γ ∈ (comap φ S).arrows c✝ c✝
⊢ Groupoid.inv (φ.map f) ≫ φ.map γ ≫ φ.map f ∈ S.arrows (φ.obj d✝) (φ.obj d✝)
state_after: no goals
Theorem: Order.succ_eq_iff_covBy
File: Mathlib/Order/SuccPred/Basic.lean

tactic: rintro rfl
state_before: α : Type u_1
β : Type u_2
inst✝² : PartialOrder α
inst✝¹ : SuccOrder α
a b : α
inst✝ : NoMaxOrder α
⊢ succ a = b → a ⋖ b
state_after: α : Type u_1
β : Type u_2
inst✝² : PartialOrder α
inst✝¹ : SuccOrder α
a : α
inst✝ : NoMaxOrder α
⊢ a ⋖ succ a

tactic: exact covBy_succ _
state_before: α : Type u_1
β : Type u_2
inst✝² : PartialOrder α
inst✝¹ : SuccOrder α
a : α
inst✝ : NoMaxOrder α
⊢ a ⋖ succ a
state_after: no goals