1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: List.kreplace_of_forall_not
File: Mathlib/Data/List/Sigma.lean

tactic: rintro ⟨a', b'⟩ h
state_before: α : Type u
β : α → Type v
l✝ l₁ l₂ : List (Sigma β)
inst✝ : DecidableEq α
a : α
b : β a
l : List (Sigma β)
H : ∀ (b : β a), ⟨a, b⟩ ∉ l
⊢ ∀ a_1 ∈ l, (if a = a_1.fst then some ⟨a, b⟩ else none) = none
state_after: case mk
α : Type u
β : α → Type v
l✝ l₁ l₂ : List (Sigma β)
inst✝ : DecidableEq α
a : α
b : β a
l : List (Sigma β)
H : ∀ (b : β a), ⟨a, b⟩ ∉ l
a' : α
b' : β a'
h : ⟨a', b'⟩ ∈ l
⊢ (if a = ⟨a', b'⟩.fst then some ⟨a, b⟩ else none) = none

tactic: dsimp
state_before: case mk
α : Type u
β : α → Type v
l✝ l₁ l₂ : List (Sigma β)
inst✝ : DecidableEq α
a : α
b : β a
l : List (Sigma β)
H : ∀ (b : β a), ⟨a, b⟩ ∉ l
a' : α
b' : β a'
h : ⟨a', b'⟩ ∈ l
⊢ (if a = ⟨a', b'⟩.fst then some ⟨a, b⟩ else none) = none
state_after: case mk
α : Type u
β : α → Type v
l✝ l₁ l₂ : List (Sigma β)
inst✝ : DecidableEq α
a : α
b : β a
l : List (Sigma β)
H : ∀ (b : β a), ⟨a, b⟩ ∉ l
a' : α
b' : β a'
h : ⟨a', b'⟩ ∈ l
⊢ (if a = a' then some ⟨a, b⟩ else none) = none

tactic: split_ifs
state_before: case mk
α : Type u
β : α → Type v
l✝ l₁ l₂ : List (Sigma β)
inst✝ : DecidableEq α
a : α
b : β a
l : List (Sigma β)
H : ∀ (b : β a), ⟨a, b⟩ ∉ l
a' : α
b' : β a'
h : ⟨a', b'⟩ ∈ l
⊢ (if a = a' then some ⟨a, b⟩ else none) = none
state_after: case pos
α : Type u
β : α → Type v
l✝ l₁ l₂ : List (Sigma β)
inst✝ : DecidableEq α
a : α
b : β a
l : List (Sigma β)
H : ∀ (b : β a), ⟨a, b⟩ ∉ l
a' : α
b' : β a'
h : ⟨a', b'⟩ ∈ l
h✝ : a = a'
⊢ False

case neg
α : Type u
β : α → Type v
l✝ l₁ l₂ : List (Sigma β)
inst✝ : DecidableEq α
a : α
b : β a
l : List (Sigma β)
H : ∀ (b : β a), ⟨a, b⟩ ∉ l
a' : α
b' : β a'
h : ⟨a', b'⟩ ∈ l
h✝ : ¬a = a'
⊢ none = none

tactic: subst a'
state_before: case pos
α : Type u
β : α → Type v
l✝ l₁ l₂ : List (Sigma β)
inst✝ : DecidableEq α
a : α
b : β a
l : List (Sigma β)
H : ∀ (b : β a), ⟨a, b⟩ ∉ l
a' : α
b' : β a'
h : ⟨a', b'⟩ ∈ l
h✝ : a = a'
⊢ False
state_after: case pos
α : Type u
β : α → Type v
l✝ l₁ l₂ : List (Sigma β)
inst✝ : DecidableEq α
a : α
b : β a
l : List (Sigma β)
H : ∀ (b : β a), ⟨a, b⟩ ∉ l
b' : β a
h : ⟨a, b'⟩ ∈ l
⊢ False

tactic: exact H _ h
state_before: case pos
α : Type u
β : α → Type v
l✝ l₁ l₂ : List (Sigma β)
inst✝ : DecidableEq α
a : α
b : β a
l : List (Sigma β)
H : ∀ (b : β a), ⟨a, b⟩ ∉ l
b' : β a
h : ⟨a, b'⟩ ∈ l
⊢ False
state_after: no goals

tactic: rfl
state_before: case neg
α : Type u
β : α → Type v
l✝ l₁ l₂ : List (Sigma β)
inst✝ : DecidableEq α
a : α
b : β a
l : List (Sigma β)
H : ∀ (b : β a), ⟨a, b⟩ ∉ l
a' : α
b' : β a'
h : ⟨a', b'⟩ ∈ l
h✝ : ¬a = a'
⊢ none = none
state_after: no goals
Theorem: Equiv.injective_pointReflection_left_of_injective_bit0
File: Mathlib/Algebra/AddTorsor.lean

tactic: rwa [pointReflection_apply, pointReflection_apply, vadd_eq_vadd_iff_sub_eq_vsub,
  vsub_sub_vsub_cancel_right, ← neg_vsub_eq_vsub_rev, neg_eq_iff_add_eq_zero, ← bit0, ← bit0_zero,
  h.eq_iff, vsub_eq_zero_iff_eq] at hy
state_before: G✝ : Type u_1
P✝ : Type u_2
inst✝³ : AddGroup G✝
inst✝² : AddTorsor G✝ P✝
G : Type u_3
P : Type u_4
inst✝¹ : AddCommGroup G
inst✝ : AddTorsor G P
h : Injective bit0
y x₁ x₂ : P
hy : (pointReflection x₁) y = (pointReflection x₂) y
⊢ x₁ = x₂
state_after: no goals
Theorem: CategoryTheory.braiding_inv_tensorUnit_left
File: Mathlib/CategoryTheory/Monoidal/Braided/Basic.lean

tactic: rw [Iso.inv_ext]
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
inst✝ : BraidedCategory C
X : C
⊢ (β_ (𝟙_ C) X).inv = (ρ_ X).hom ≫ (λ_ X).inv
state_after: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
inst✝ : BraidedCategory C
X : C
⊢ (β_ (𝟙_ C) X).hom ≫ (ρ_ X).hom ≫ (λ_ X).inv = 𝟙 (𝟙_ C ⊗ X)

tactic: rw [braiding_tensorUnit_left]
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
inst✝ : BraidedCategory C
X : C
⊢ (β_ (𝟙_ C) X).hom ≫ (ρ_ X).hom ≫ (λ_ X).inv = 𝟙 (𝟙_ C ⊗ X)
state_after: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
inst✝ : BraidedCategory C
X : C
⊢ ((λ_ X).hom ≫ (ρ_ X).inv) ≫ (ρ_ X).hom ≫ (λ_ X).inv = 𝟙 (𝟙_ C ⊗ X)

tactic: coherence
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
inst✝ : BraidedCategory C
X : C
⊢ ((λ_ X).hom ≫ (ρ_ X).inv) ≫ (ρ_ X).hom ≫ (λ_ X).inv = 𝟙 (𝟙_ C ⊗ X)
state_after: no goals
Theorem: MonoidHom.FixedPointFree.commute_all_of_involutive
File: Mathlib/GroupTheory/FixedPointFree.lean

tactic: have key := map_mul φ g h
state_before: G : Type u_1
inst✝¹ : Group G
φ : G →* G
hφ : FixedPointFree ⇑φ
inst✝ : Finite G
h2 : Function.Involutive ⇑φ
g h : G
⊢ Commute g h
state_after: G : Type u_1
inst✝¹ : Group G
φ : G →* G
hφ : FixedPointFree ⇑φ
inst✝ : Finite G
h2 : Function.Involutive ⇑φ
g h : G
key : φ (g * h) = φ g * φ h
⊢ Commute g h

tactic: rwa [hφ.coe_eq_inv_of_involutive h2, inv_eq_iff_eq_inv, mul_inv_rev, inv_inv, inv_inv] at key
state_before: G : Type u_1
inst✝¹ : Group G
φ : G →* G
hφ : FixedPointFree ⇑φ
inst✝ : Finite G
h2 : Function.Involutive ⇑φ
g h : G
key : φ (g * h) = φ g * φ h
⊢ Commute g h
state_after: no goals
Theorem: List.map_reverse_inits
File: Mathlib/Data/List/Infix.lean

tactic: rw [inits_eq_tails l]
state_before: α : Type u_1
β : Type u_2
l✝ l₁ l₂ l₃ : List α
a b : α
m n : ℕ
l : List α
⊢ map reverse l.inits = l.reverse.tails.reverse
state_after: α : Type u_1
β : Type u_2
l✝ l₁ l₂ l₃ : List α
a b : α
m n : ℕ
l : List α
⊢ map reverse (map reverse l.reverse.tails).reverse = l.reverse.tails.reverse

tactic: simp [reverse_involutive.comp_self, ← map_reverse]
state_before: α : Type u_1
β : Type u_2
l✝ l₁ l₂ l₃ : List α
a b : α
m n : ℕ
l : List α
⊢ map reverse (map reverse l.reverse.tails).reverse = l.reverse.tails.reverse
state_after: no goals
Theorem: conductor_subset_adjoin
File: Mathlib/NumberTheory/KummerDedekind.lean

tactic: simpa only [mul_one] using hy 1
state_before: R : Type u_1
S : Type u_2
inst✝² : CommRing R
inst✝¹ : CommRing S
inst✝ : Algebra R S
x y : S
hy : y ∈ ↑(conductor R x)
⊢ y ∈ ↑(adjoin R {x})
state_after: no goals
Theorem: CochainComplex.HomComplex.Cochain.shift_smul
File: Mathlib/Algebra/Homology/HomotopyCategory/HomComplexShift.lean

tactic: ext p q hpq
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
R : Type u_1
inst✝¹ : Ring R
inst✝ : Linear R C
K L M : CochainComplex C ℤ
n : ℤ
γ γ₁ γ₂ : Cochain K L n
a : ℤ
x : R
⊢ (x • γ).shift a = x • γ.shift a
state_after: case h
C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
R : Type u_1
inst✝¹ : Ring R
inst✝ : Linear R C
K L M : CochainComplex C ℤ
n : ℤ
γ γ₁ γ₂ : Cochain K L n
a : ℤ
x : R
p q : ℤ
hpq : p + n = q
⊢ ((x • γ).shift a).v p q hpq = (x • γ.shift a).v p q hpq

tactic: simp [shift_v']
state_before: case h
C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
R : Type u_1
inst✝¹ : Ring R
inst✝ : Linear R C
K L M : CochainComplex C ℤ
n : ℤ
γ γ₁ γ₂ : Cochain K L n
a : ℤ
x : R
p q : ℤ
hpq : p + n = q
⊢ ((x • γ).shift a).v p q hpq = (x • γ.shift a).v p q hpq
state_after: no goals
Theorem: UV.mem_compression
File: Mathlib/Combinatorics/SetFamily/Compression/UV.lean

tactic: simp_rw [compression, mem_union, mem_filter, mem_image, and_comm]
state_before: α : Type u_1
inst✝³ : GeneralizedBooleanAlgebra α
inst✝² : DecidableRel Disjoint
inst✝¹ : DecidableRel fun x x_1 => x ≤ x_1
s : Finset α
u v a b : α
inst✝ : DecidableEq α
⊢ a ∈ 𝓒 u v s ↔ a ∈ s ∧ compress u v a ∈ s ∨ a ∉ s ∧ ∃ b ∈ s, compress u v b = a
state_after: no goals
Theorem: mem_rightCoset_iff
File: Mathlib/GroupTheory/Coset.lean

tactic: simp [Eq.symm, hb]
state_before: α : Type u_1
inst✝ : Group α
s : Set α
x a : α
x✝ : x ∈ op a • s
b : α
hb : b ∈ s
Eq : (fun x => op a • x) b = x
⊢ x * a⁻¹ ∈ s
state_after: no goals

tactic: simp
state_before: α : Type u_1
inst✝ : Group α
s : Set α
x a : α
h : x * a⁻¹ ∈ s
⊢ (fun x => op a • x) (x * a⁻¹) = x
state_after: no goals
Theorem: Finset.le_card_iff_exists_subset_card
File: Mathlib/Data/Finset/Card.lean

tactic: refine ⟨fun h => ?_, fun ⟨t, hst, ht⟩ => ht ▸ card_le_card hst⟩
state_before: α : Type u_1
β : Type u_2
R : Type u_3
s t u : Finset α
f : α → β
n : ℕ
⊢ n ≤ s.card ↔ ∃ t ⊆ s, t.card = n
state_after: α : Type u_1
β : Type u_2
R : Type u_3
s t u : Finset α
f : α → β
n : ℕ
h : n ≤ s.card
⊢ ∃ t ⊆ s, t.card = n

tactic: exact exists_subset_card_eq h
state_before: α : Type u_1
β : Type u_2
R : Type u_3
s t u : Finset α
f : α → β
n : ℕ
h : n ≤ s.card
⊢ ∃ t ⊆ s, t.card = n
state_after: no goals
Theorem: MeasureTheory.Measure.setLIntegral_compProd
File: Mathlib/Probability/Kernel/MeasureCompProd.lean

tactic: rw [compProd, kernel.setLIntegral_compProd _ _ _ hf hs ht]
state_before: α : Type u_1
β : Type u_2
mα : MeasurableSpace α
mβ : MeasurableSpace β
μ : Measure α
κ η : ↥(kernel α β)
inst✝¹ : SFinite μ
inst✝ : IsSFiniteKernel κ
f : α × β → ℝ≥0∞
hf : Measurable f
s : Set α
hs : MeasurableSet s
t : Set β
ht : MeasurableSet t
⊢ ∫⁻ (x : α × β) in s ×ˢ t, f x ∂μ ⊗ₘ κ = ∫⁻ (a : α) in s, ∫⁻ (b : β) in t, f (a, b) ∂κ a ∂μ
state_after: α : Type u_1
β : Type u_2
mα : MeasurableSpace α
mβ : MeasurableSpace β
μ : Measure α
κ η : ↥(kernel α β)
inst✝¹ : SFinite μ
inst✝ : IsSFiniteKernel κ
f : α × β → ℝ≥0∞
hf : Measurable f
s : Set α
hs : MeasurableSet s
t : Set β
ht : MeasurableSet t
⊢ ∫⁻ (x : α) in s, ∫⁻ (y : β) in t, f (x, y) ∂(kernel.prodMkLeft Unit κ) ((), x) ∂(kernel.const Unit μ) () =
    ∫⁻ (a : α) in s, ∫⁻ (b : β) in t, f (a, b) ∂κ a ∂μ

tactic: simp
state_before: α : Type u_1
β : Type u_2
mα : MeasurableSpace α
mβ : MeasurableSpace β
μ : Measure α
κ η : ↥(kernel α β)
inst✝¹ : SFinite μ
inst✝ : IsSFiniteKernel κ
f : α × β → ℝ≥0∞
hf : Measurable f
s : Set α
hs : MeasurableSet s
t : Set β
ht : MeasurableSet t
⊢ ∫⁻ (x : α) in s, ∫⁻ (y : β) in t, f (x, y) ∂(kernel.prodMkLeft Unit κ) ((), x) ∂(kernel.const Unit μ) () =
    ∫⁻ (a : α) in s, ∫⁻ (b : β) in t, f (a, b) ∂κ a ∂μ
state_after: no goals
Theorem: Matrix.IsDiag.diagonal_diag
File: Mathlib/LinearAlgebra/Matrix/IsDiag.lean

tactic: obtain rfl | hij := Decidable.eq_or_ne i j
state_before: α : Type u_1
β : Type u_2
R : Type u_3
n : Type u_4
m : Type u_5
inst✝¹ : Zero α
inst✝ : DecidableEq n
A : Matrix n n α
h : A.IsDiag
i j : n
⊢ diagonal A.diag i j = A i j
state_after: case inl
α : Type u_1
β : Type u_2
R : Type u_3
n : Type u_4
m : Type u_5
inst✝¹ : Zero α
inst✝ : DecidableEq n
A : Matrix n n α
h : A.IsDiag
i : n
⊢ diagonal A.diag i i = A i i

case inr
α : Type u_1
β : Type u_2
R : Type u_3
n : Type u_4
m : Type u_5
inst✝¹ : Zero α
inst✝ : DecidableEq n
A : Matrix n n α
h : A.IsDiag
i j : n
hij : i ≠ j
⊢ diagonal A.diag i j = A i j

tactic: rw [diagonal_apply_eq, diag]
state_before: case inl
α : Type u_1
β : Type u_2
R : Type u_3
n : Type u_4
m : Type u_5
inst✝¹ : Zero α
inst✝ : DecidableEq n
A : Matrix n n α
h : A.IsDiag
i : n
⊢ diagonal A.diag i i = A i i
state_after: no goals

tactic: rw [diagonal_apply_ne _ hij, h hij]
state_before: case inr
α : Type u_1
β : Type u_2
R : Type u_3
n : Type u_4
m : Type u_5
inst✝¹ : Zero α
inst✝ : DecidableEq n
A : Matrix n n α
h : A.IsDiag
i j : n
hij : i ≠ j
⊢ diagonal A.diag i j = A i j
state_after: no goals
Theorem: ZMod.inv_mul_of_unit
File: Mathlib/Data/ZMod/Basic.lean

tactic: rw [mul_comm, mul_inv_of_unit a h]
state_before: n : ℕ
a : ZMod n
h : IsUnit a
⊢ a⁻¹ * a = 1
state_after: no goals
Theorem: Matrix.nnnorm_map_eq
File: Mathlib/Analysis/Matrix.lean

tactic: simp only [nnnorm_def, Pi.nnnorm_def, Matrix.map_apply, hf]
state_before: R : Type u_1
l : Type u_2
m : Type u_3
n : Type u_4
α : Type u_5
β : Type u_6
ι : Type u_7
inst✝⁵ : Fintype l
inst✝⁴ : Fintype m
inst✝³ : Fintype n
inst✝² : Unique ι
inst✝¹ : SeminormedAddCommGroup α
inst✝ : SeminormedAddCommGroup β
A : Matrix m n α
f : α → β
hf : ∀ (a : α), ‖f a‖₊ = ‖a‖₊
⊢ ‖A.map f‖₊ = ‖A‖₊
state_after: no goals
Theorem: CategoryTheory.Presheaf.isSheaf_coherent_of_projective_comp
File: Mathlib/CategoryTheory/Sites/Coherent/SheafComparison.lean

tactic: rw [isSheaf_iff_preservesFiniteProducts_of_projective] at hF ⊢
state_before: C : Type u_1
D : Type u_2
inst✝⁷ : Category.{u_3, u_1} C
inst✝⁶ : Category.{?u.63126, u_2} D
F✝ : C ⥤ D
A : Type u₃
inst✝⁵ : Category.{v₃, u₃} A
F : Cᵒᵖ ⥤ A
B : Type u₄
inst✝⁴ : Category.{v₄, u₄} B
s : A ⥤ B
inst✝³ : Preregular C
inst✝² : FinitaryExtensive C
inst✝¹ : ∀ (X : C), Projective X
inst✝ : PreservesFiniteProducts s
hF : IsSheaf (coherentTopology C) F
⊢ IsSheaf (coherentTopology C) (F ⋙ s)
state_after: C : Type u_1
D : Type u_2
inst✝⁷ : Category.{u_3, u_1} C
inst✝⁶ : Category.{?u.63126, u_2} D
F✝ : C ⥤ D
A : Type u₃
inst✝⁵ : Category.{v₃, u₃} A
F : Cᵒᵖ ⥤ A
B : Type u₄
inst✝⁴ : Category.{v₄, u₄} B
s : A ⥤ B
inst✝³ : Preregular C
inst✝² : FinitaryExtensive C
inst✝¹ : ∀ (X : C), Projective X
inst✝ : PreservesFiniteProducts s
hF : Nonempty (PreservesFiniteProducts F)
⊢ Nonempty (PreservesFiniteProducts (F ⋙ s))

tactic: have := hF.some
state_before: C : Type u_1
D : Type u_2
inst✝⁷ : Category.{u_3, u_1} C
inst✝⁶ : Category.{?u.63126, u_2} D
F✝ : C ⥤ D
A : Type u₃
inst✝⁵ : Category.{v₃, u₃} A
F : Cᵒᵖ ⥤ A
B : Type u₄
inst✝⁴ : Category.{v₄, u₄} B
s : A ⥤ B
inst✝³ : Preregular C
inst✝² : FinitaryExtensive C
inst✝¹ : ∀ (X : C), Projective X
inst✝ : PreservesFiniteProducts s
hF : Nonempty (PreservesFiniteProducts F)
⊢ Nonempty (PreservesFiniteProducts (F ⋙ s))
state_after: C : Type u_1
D : Type u_2
inst✝⁷ : Category.{u_3, u_1} C
inst✝⁶ : Category.{?u.63126, u_2} D
F✝ : C ⥤ D
A : Type u₃
inst✝⁵ : Category.{v₃, u₃} A
F : Cᵒᵖ ⥤ A
B : Type u₄
inst✝⁴ : Category.{v₄, u₄} B
s : A ⥤ B
inst✝³ : Preregular C
inst✝² : FinitaryExtensive C
inst✝¹ : ∀ (X : C), Projective X
inst✝ : PreservesFiniteProducts s
hF : Nonempty (PreservesFiniteProducts F)
this : PreservesFiniteProducts F
⊢ Nonempty (PreservesFiniteProducts (F ⋙ s))

tactic: exact ⟨inferInstance⟩
state_before: C : Type u_1
D : Type u_2
inst✝⁷ : Category.{u_3, u_1} C
inst✝⁶ : Category.{?u.63126, u_2} D
F✝ : C ⥤ D
A : Type u₃
inst✝⁵ : Category.{v₃, u₃} A
F : Cᵒᵖ ⥤ A
B : Type u₄
inst✝⁴ : Category.{v₄, u₄} B
s : A ⥤ B
inst✝³ : Preregular C
inst✝² : FinitaryExtensive C
inst✝¹ : ∀ (X : C), Projective X
inst✝ : PreservesFiniteProducts s
hF : Nonempty (PreservesFiniteProducts F)
this : PreservesFiniteProducts F
⊢ Nonempty (PreservesFiniteProducts (F ⋙ s))
state_after: no goals
Theorem: CochainComplex.shiftShortComplexFunctorIso_add'_hom_app
File: Mathlib/Algebra/Homology/HomotopyCategory/ShiftSequence.lean

tactic: rw [← ha'', ← ha', ← add_assoc, hmn]
state_before: C : Type u_1
inst✝¹ : Category.{?u.84666, u_1} C
inst✝ : Preadditive C
n m mn : ℤ
hmn : m + n = mn
a a' a'' : ℤ
ha' : n + a = a'
ha'' : m + a' = a''
K : CochainComplex C ℤ
⊢ mn + a = a''
state_after: no goals

tactic: ext <;> dsimp <;> simp only [← hmn, Int.negOnePow_add, shiftFunctorAdd'_hom_app_f',
  XIsoOfEq_shift, Linear.comp_units_smul, Linear.units_smul_comp,
  XIsoOfEq_hom_comp_XIsoOfEq_hom, smul_smul]
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
n m mn : ℤ
hmn : m + n = mn
a a' a'' : ℤ
ha' : n + a = a'
ha'' : m + a' = a''
K : CochainComplex C ℤ
⊢ (shiftShortComplexFunctorIso C mn a a'' ⋯).hom.app K =
    (shortComplexFunctor C (up ℤ) a).map ((CategoryTheory.shiftFunctorAdd' (CochainComplex C ℤ) m n mn hmn).hom.app K) ≫
      (shiftShortComplexFunctorIso C n a a' ha').hom.app ((CategoryTheory.shiftFunctor (CochainComplex C ℤ) m).obj K) ≫
        (shiftShortComplexFunctorIso C m a' a'' ha'').hom.app K
state_after: no goals
Theorem: Reflexive.rel_of_ne_imp
File: Mathlib/Logic/Relation.lean

tactic: by_cases hxy : x = y
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ε : Type u_5
ζ : Type u_6
r : α → α → Prop
h : Reflexive r
x y : α
hr : x ≠ y → r x y
⊢ r x y
state_after: case pos
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ε : Type u_5
ζ : Type u_6
r : α → α → Prop
h : Reflexive r
x y : α
hr : x ≠ y → r x y
hxy : x = y
⊢ r x y

case neg
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ε : Type u_5
ζ : Type u_6
r : α → α → Prop
h : Reflexive r
x y : α
hr : x ≠ y → r x y
hxy : ¬x = y
⊢ r x y

tactic: exact hxy ▸ h x
state_before: case pos
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ε : Type u_5
ζ : Type u_6
r : α → α → Prop
h : Reflexive r
x y : α
hr : x ≠ y → r x y
hxy : x = y
⊢ r x y
state_after: no goals

tactic: exact hr hxy
state_before: case neg
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ε : Type u_5
ζ : Type u_6
r : α → α → Prop
h : Reflexive r
x y : α
hr : x ≠ y → r x y
hxy : ¬x = y
⊢ r x y
state_after: no goals
Theorem: HomologicalComplex.homotopyCofiber.inlX_d'
File: Mathlib/Algebra/Homology/HomotopyCofiber.lean

tactic: apply ext_to_X' _ _ hj
state_before: C : Type u_1
inst✝³ : Category.{u_3, u_1} C
inst✝² : Preadditive C
ι : Type u_2
c : ComplexShape ι
F G K : HomologicalComplex C c
φ : F ⟶ G
inst✝¹ : HasHomotopyCofiber φ
inst✝ : DecidableRel c.Rel
i j : ι
hij : c.Rel i j
hj : ¬c.Rel j (c.next j)
⊢ inlX φ j i hij ≫ d φ i j = φ.f j ≫ inrX φ j
state_after: C : Type u_1
inst✝³ : Category.{u_3, u_1} C
inst✝² : Preadditive C
ι : Type u_2
c : ComplexShape ι
F G K : HomologicalComplex C c
φ : F ⟶ G
inst✝¹ : HasHomotopyCofiber φ
inst✝ : DecidableRel c.Rel
i j : ι
hij : c.Rel i j
hj : ¬c.Rel j (c.next j)
⊢ (inlX φ j i hij ≫ d φ i j) ≫ sndX φ j = (φ.f j ≫ inrX φ j) ≫ sndX φ j

tactic: simp [d_sndX φ i j hij]
state_before: C : Type u_1
inst✝³ : Category.{u_3, u_1} C
inst✝² : Preadditive C
ι : Type u_2
c : ComplexShape ι
F G K : HomologicalComplex C c
φ : F ⟶ G
inst✝¹ : HasHomotopyCofiber φ
inst✝ : DecidableRel c.Rel
i j : ι
hij : c.Rel i j
hj : ¬c.Rel j (c.next j)
⊢ (inlX φ j i hij ≫ d φ i j) ≫ sndX φ j = (φ.f j ≫ inrX φ j) ≫ sndX φ j
state_after: no goals
Theorem: Polynomial.roots_cyclotomic_nodup
File: Mathlib/RingTheory/Polynomial/Cyclotomic/Roots.lean

tactic: obtain h | ⟨ζ, hζ⟩ := (cyclotomic n R).roots.empty_or_exists_mem
state_before: R : Type u_1
inst✝² : CommRing R
n : ℕ
inst✝¹ : IsDomain R
inst✝ : NeZero ↑n
⊢ (cyclotomic n R).roots.Nodup
state_after: case inl
R : Type u_1
inst✝² : CommRing R
n : ℕ
inst✝¹ : IsDomain R
inst✝ : NeZero ↑n
h : (cyclotomic n R).roots = 0
⊢ (cyclotomic n R).roots.Nodup

case inr.intro
R : Type u_1
inst✝² : CommRing R
n : ℕ
inst✝¹ : IsDomain R
inst✝ : NeZero ↑n
ζ : R
hζ : ζ ∈ (cyclotomic n R).roots
⊢ (cyclotomic n R).roots.Nodup

tactic: rw [mem_roots <| cyclotomic_ne_zero n R, isRoot_cyclotomic_iff] at hζ
state_before: case inr.intro
R : Type u_1
inst✝² : CommRing R
n : ℕ
inst✝¹ : IsDomain R
inst✝ : NeZero ↑n
ζ : R
hζ : ζ ∈ (cyclotomic n R).roots
⊢ (cyclotomic n R).roots.Nodup
state_after: case inr.intro
R : Type u_1
inst✝² : CommRing R
n : ℕ
inst✝¹ : IsDomain R
inst✝ : NeZero ↑n
ζ : R
hζ : IsPrimitiveRoot ζ n
⊢ (cyclotomic n R).roots.Nodup

tactic: refine Multiset.nodup_of_le
  (roots.le_of_dvd (X_pow_sub_C_ne_zero (NeZero.pos_of_neZero_natCast R) 1) <|
    cyclotomic.dvd_X_pow_sub_one n R) hζ.nthRoots_one_nodup
state_before: case inr.intro
R : Type u_1
inst✝² : CommRing R
n : ℕ
inst✝¹ : IsDomain R
inst✝ : NeZero ↑n
ζ : R
hζ : IsPrimitiveRoot ζ n
⊢ (cyclotomic n R).roots.Nodup
state_after: no goals

tactic: exact h.symm ▸ Multiset.nodup_zero
state_before: case inl
R : Type u_1
inst✝² : CommRing R
n : ℕ
inst✝¹ : IsDomain R
inst✝ : NeZero ↑n
h : (cyclotomic n R).roots = 0
⊢ (cyclotomic n R).roots.Nodup
state_after: no goals
Theorem: Ordinal.unbounded_of_unbounded_sUnion
File: Mathlib/SetTheory/Cardinal/Cofinality.lean

tactic: by_contra! h
state_before: α : Type u_1
r✝ r : α → α → Prop
wo : IsWellOrder α r
s : Set (Set α)
h₁ : Unbounded r (⋃₀ s)
h₂ : #↑s < StrictOrder.cof r
⊢ ∃ x ∈ s, Unbounded r x
state_after: α : Type u_1
r✝ r : α → α → Prop
wo : IsWellOrder α r
s : Set (Set α)
h₁ : Unbounded r (⋃₀ s)
h₂ : #↑s < StrictOrder.cof r
h : ∀ x ∈ s, ¬Unbounded r x
⊢ False

tactic: simp_rw [not_unbounded_iff] at h
state_before: α : Type u_1
r✝ r : α → α → Prop
wo : IsWellOrder α r
s : Set (Set α)
h₁ : Unbounded r (⋃₀ s)
h₂ : #↑s < StrictOrder.cof r
h : ∀ x ∈ s, ¬Unbounded r x
⊢ False
state_after: α : Type u_1
r✝ r : α → α → Prop
wo : IsWellOrder α r
s : Set (Set α)
h₁ : Unbounded r (⋃₀ s)
h₂ : #↑s < StrictOrder.cof r
h : ∀ x ∈ s, Bounded r x
⊢ False

tactic: let f : s → α := fun x : s => wo.wf.sup x (h x.1 x.2)
state_before: α : Type u_1
r✝ r : α → α → Prop
wo : IsWellOrder α r
s : Set (Set α)
h₁ : Unbounded r (⋃₀ s)
h₂ : #↑s < StrictOrder.cof r
h : ∀ x ∈ s, Bounded r x
⊢ False
state_after: α : Type u_1
r✝ r : α → α → Prop
wo : IsWellOrder α r
s : Set (Set α)
h₁ : Unbounded r (⋃₀ s)
h₂ : #↑s < StrictOrder.cof r
h : ∀ x ∈ s, Bounded r x
f : ↑s → α := fun x => ⋯.sup ↑x ⋯
⊢ False

tactic: refine h₂.not_le (le_trans (csInf_le' ⟨range f, fun x => ?_, rfl⟩) mk_range_le)
state_before: α : Type u_1
r✝ r : α → α → Prop
wo : IsWellOrder α r
s : Set (Set α)
h₁ : Unbounded r (⋃₀ s)
h₂ : #↑s < StrictOrder.cof r
h : ∀ x ∈ s, Bounded r x
f : ↑s → α := fun x => ⋯.sup ↑x ⋯
⊢ False
state_after: α : Type u_1
r✝ r : α → α → Prop
wo : IsWellOrder α r
s : Set (Set α)
h₁ : Unbounded r (⋃₀ s)
h₂ : #↑s < StrictOrder.cof r
h : ∀ x ∈ s, Bounded r x
f : ↑s → α := fun x => ⋯.sup ↑x ⋯
x : α
⊢ ∃ b ∈ range f, swap rᶜ x b

tactic: rcases h₁ x with ⟨y, ⟨c, hc, hy⟩, hxy⟩
state_before: α : Type u_1
r✝ r : α → α → Prop
wo : IsWellOrder α r
s : Set (Set α)
h₁ : Unbounded r (⋃₀ s)
h₂ : #↑s < StrictOrder.cof r
h : ∀ x ∈ s, Bounded r x
f : ↑s → α := fun x => ⋯.sup ↑x ⋯
x : α
⊢ ∃ b ∈ range f, swap rᶜ x b
state_after: case intro.intro.intro.intro
α : Type u_1
r✝ r : α → α → Prop
wo : IsWellOrder α r
s : Set (Set α)
h₁ : Unbounded r (⋃₀ s)
h₂ : #↑s < StrictOrder.cof r
h : ∀ x ∈ s, Bounded r x
f : ↑s → α := fun x => ⋯.sup ↑x ⋯
x y : α
hxy : ¬r y x
c : Set α
hc : c ∈ s
hy : y ∈ c
⊢ ∃ b ∈ range f, swap rᶜ x b

tactic: exact ⟨f ⟨c, hc⟩, mem_range_self _, fun hxz => hxy (Trans.trans (wo.wf.lt_sup _ hy) hxz)⟩
state_before: case intro.intro.intro.intro
α : Type u_1
r✝ r : α → α → Prop
wo : IsWellOrder α r
s : Set (Set α)
h₁ : Unbounded r (⋃₀ s)
h₂ : #↑s < StrictOrder.cof r
h : ∀ x ∈ s, Bounded r x
f : ↑s → α := fun x => ⋯.sup ↑x ⋯
x y : α
hxy : ¬r y x
c : Set α
hc : c ∈ s
hy : y ∈ c
⊢ ∃ b ∈ range f, swap rᶜ x b
state_after: no goals
Theorem: Fin.snoc_last
File: Mathlib/Data/Fin/Tuple/Basic.lean

tactic: simp [snoc]
state_before: m n : ℕ
α : Fin (n + 1) → Type u
x : α (last n)
q : (i : Fin (n + 1)) → α i
p : (i : Fin n) → α i.castSucc
i : Fin n
y : α i.castSucc
z : α (last n)
⊢ snoc p x (last n) = x
state_after: no goals
Theorem: ENNReal.tsum_add_one_eq_top
File: Mathlib/Topology/Instances/ENNReal.lean

tactic: rw [tsum_eq_zero_add' ENNReal.summable, add_eq_top] at hf
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∞
f : ℕ → ℝ≥0∞
hf : ∑' (n : ℕ), f n = ⊤
hf0 : f 0 ≠ ⊤
⊢ ∑' (n : ℕ), f (n + 1) = ⊤
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∞
f : ℕ → ℝ≥0∞
hf : f 0 = ⊤ ∨ ∑' (b : ℕ), f (b + 1) = ⊤
hf0 : f 0 ≠ ⊤
⊢ ∑' (n : ℕ), f (n + 1) = ⊤

tactic: exact hf.resolve_left hf0
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∞
f : ℕ → ℝ≥0∞
hf : f 0 = ⊤ ∨ ∑' (b : ℕ), f (b + 1) = ⊤
hf0 : f 0 ≠ ⊤
⊢ ∑' (n : ℕ), f (n + 1) = ⊤
state_after: no goals