1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: CategoryTheory.TwoSquare.guitartExact_iff_initial
File: Mathlib/CategoryTheory/GuitartExact/Basic.lean

tactic: rw [guitartExact_iff_isConnected_downwards]
state_before: C₁ : Type u₁
C₂ : Type u₂
C₃ : Type u₃
C₄ : Type u₄
inst✝³ : Category.{v₁, u₁} C₁
inst✝² : Category.{v₂, u₂} C₂
inst✝¹ : Category.{v₃, u₃} C₃
inst✝ : Category.{v₄, u₄} C₄
T : C₁ ⥤ C₂
L : C₁ ⥤ C₃
R : C₂ ⥤ C₄
B : C₃ ⥤ C₄
w : TwoSquare T L R B
⊢ (∀ (X₂ : C₂), (w.structuredArrowDownwards X₂).Initial) → w.GuitartExact
state_after: C₁ : Type u₁
C₂ : Type u₂
C₃ : Type u₃
C₄ : Type u₄
inst✝³ : Category.{v₁, u₁} C₁
inst✝² : Category.{v₂, u₂} C₂
inst✝¹ : Category.{v₃, u₃} C₃
inst✝ : Category.{v₄, u₄} C₄
T : C₁ ⥤ C₂
L : C₁ ⥤ C₃
R : C₂ ⥤ C₄
B : C₃ ⥤ C₄
w : TwoSquare T L R B
⊢ (∀ (X₂ : C₂), (w.structuredArrowDownwards X₂).Initial) →
    ∀ {X₂ : C₂} {X₃ : C₃} (g : R.obj X₂ ⟶ B.obj X₃), IsConnected (w.CostructuredArrowDownwards g)

tactic: intros
state_before: C₁ : Type u₁
C₂ : Type u₂
C₃ : Type u₃
C₄ : Type u₄
inst✝³ : Category.{v₁, u₁} C₁
inst✝² : Category.{v₂, u₂} C₂
inst✝¹ : Category.{v₃, u₃} C₃
inst✝ : Category.{v₄, u₄} C₄
T : C₁ ⥤ C₂
L : C₁ ⥤ C₃
R : C₂ ⥤ C₄
B : C₃ ⥤ C₄
w : TwoSquare T L R B
⊢ (∀ (X₂ : C₂), (w.structuredArrowDownwards X₂).Initial) →
    ∀ {X₂ : C₂} {X₃ : C₃} (g : R.obj X₂ ⟶ B.obj X₃), IsConnected (w.CostructuredArrowDownwards g)
state_after: C₁ : Type u₁
C₂ : Type u₂
C₃ : Type u₃
C₄ : Type u₄
inst✝³ : Category.{v₁, u₁} C₁
inst✝² : Category.{v₂, u₂} C₂
inst✝¹ : Category.{v₃, u₃} C₃
inst✝ : Category.{v₄, u₄} C₄
T : C₁ ⥤ C₂
L : C₁ ⥤ C₃
R : C₂ ⥤ C₄
B : C₃ ⥤ C₄
w : TwoSquare T L R B
a✝ : ∀ (X₂ : C₂), (w.structuredArrowDownwards X₂).Initial
X₂✝ : C₂
X₃✝ : C₃
g✝ : R.obj X₂✝ ⟶ B.obj X₃✝
⊢ IsConnected (w.CostructuredArrowDownwards g✝)

tactic: infer_instance
state_before: C₁ : Type u₁
C₂ : Type u₂
C₃ : Type u₃
C₄ : Type u₄
inst✝³ : Category.{v₁, u₁} C₁
inst✝² : Category.{v₂, u₂} C₂
inst✝¹ : Category.{v₃, u₃} C₃
inst✝ : Category.{v₄, u₄} C₄
T : C₁ ⥤ C₂
L : C₁ ⥤ C₃
R : C₂ ⥤ C₄
B : C₃ ⥤ C₄
w : TwoSquare T L R B
a✝ : ∀ (X₂ : C₂), (w.structuredArrowDownwards X₂).Initial
X₂✝ : C₂
X₃✝ : C₃
g✝ : R.obj X₂✝ ⟶ B.obj X₃✝
⊢ IsConnected (w.CostructuredArrowDownwards g✝)
state_after: no goals
Theorem: Real.sinh_le_self_iff
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Deriv.lean

tactic: simp
state_before: x y z : ℝ
⊢ sinh x ≤ x ↔ sinh x - x ≤ sinh 0 - 0
state_after: no goals
Theorem: Num.add_toZNum
File: Mathlib/Data/Num/Lemmas.lean

tactic: cases m <;> cases n <;> rfl
state_before: α : Type u_1
m n : Num
⊢ (m + n).toZNum = m.toZNum + n.toZNum
state_after: no goals
Theorem: NonUnitalStarAlgHom.realContinuousMapZeroOfNNReal_injective
File: Mathlib/Topology/ContinuousFunction/UniqueCFC.lean

tactic: intro φ ψ h
state_before: X : Type u_1
inst✝⁸ : TopologicalSpace X
inst✝⁷ : Zero X
A : Type u_2
inst✝⁶ : TopologicalSpace A
inst✝⁵ : NonUnitalRing A
inst✝⁴ : StarRing A
inst✝³ : Module ℝ A
inst✝² : IsScalarTower ℝ A A
inst✝¹ : SMulCommClass ℝ A A
inst✝ : TopologicalRing A
⊢ Function.Injective realContinuousMapZeroOfNNReal
state_after: X : Type u_1
inst✝⁸ : TopologicalSpace X
inst✝⁷ : Zero X
A : Type u_2
inst✝⁶ : TopologicalSpace A
inst✝⁵ : NonUnitalRing A
inst✝⁴ : StarRing A
inst✝³ : Module ℝ A
inst✝² : IsScalarTower ℝ A A
inst✝¹ : SMulCommClass ℝ A A
inst✝ : TopologicalRing A
φ ψ : C(X, ℝ≥0)₀ →⋆ₙₐ[ℝ≥0] A
h : φ.realContinuousMapZeroOfNNReal = ψ.realContinuousMapZeroOfNNReal
⊢ φ = ψ

tactic: ext f
state_before: X : Type u_1
inst✝⁸ : TopologicalSpace X
inst✝⁷ : Zero X
A : Type u_2
inst✝⁶ : TopologicalSpace A
inst✝⁵ : NonUnitalRing A
inst✝⁴ : StarRing A
inst✝³ : Module ℝ A
inst✝² : IsScalarTower ℝ A A
inst✝¹ : SMulCommClass ℝ A A
inst✝ : TopologicalRing A
φ ψ : C(X, ℝ≥0)₀ →⋆ₙₐ[ℝ≥0] A
h : φ.realContinuousMapZeroOfNNReal = ψ.realContinuousMapZeroOfNNReal
⊢ φ = ψ
state_after: case h
X : Type u_1
inst✝⁸ : TopologicalSpace X
inst✝⁷ : Zero X
A : Type u_2
inst✝⁶ : TopologicalSpace A
inst✝⁵ : NonUnitalRing A
inst✝⁴ : StarRing A
inst✝³ : Module ℝ A
inst✝² : IsScalarTower ℝ A A
inst✝¹ : SMulCommClass ℝ A A
inst✝ : TopologicalRing A
φ ψ : C(X, ℝ≥0)₀ →⋆ₙₐ[ℝ≥0] A
h : φ.realContinuousMapZeroOfNNReal = ψ.realContinuousMapZeroOfNNReal
f : C(X, ℝ≥0)₀
⊢ φ f = ψ f

tactic: simpa using congr($(h) ((ContinuousMapZero.mk ⟨toReal, continuous_coe⟩ rfl).comp f))
state_before: case h
X : Type u_1
inst✝⁸ : TopologicalSpace X
inst✝⁷ : Zero X
A : Type u_2
inst✝⁶ : TopologicalSpace A
inst✝⁵ : NonUnitalRing A
inst✝⁴ : StarRing A
inst✝³ : Module ℝ A
inst✝² : IsScalarTower ℝ A A
inst✝¹ : SMulCommClass ℝ A A
inst✝ : TopologicalRing A
φ ψ : C(X, ℝ≥0)₀ →⋆ₙₐ[ℝ≥0] A
h : φ.realContinuousMapZeroOfNNReal = ψ.realContinuousMapZeroOfNNReal
f : C(X, ℝ≥0)₀
⊢ φ f = ψ f
state_after: no goals
Theorem: SlashInvariantForm.T_zpow_width_invariant
File: Mathlib/NumberTheory/ModularForms/Identities.lean

tactic: rw [modular_T_zpow_smul z (N * n)]
state_before: N : ℕ
k n : ℤ
f : SlashInvariantForm (Gamma N) k
z : ℍ
⊢ f (ModularGroup.T ^ (↑N * n) • z) = f z
state_after: N : ℕ
k n : ℤ
f : SlashInvariantForm (Gamma N) k
z : ℍ
⊢ f (↑(↑N * n) +ᵥ z) = f z

tactic: simpa only [Int.cast_mul, Int.cast_natCast] using vAdd_width_periodic N k n f z
state_before: N : ℕ
k n : ℤ
f : SlashInvariantForm (Gamma N) k
z : ℍ
⊢ f (↑(↑N * n) +ᵥ z) = f z
state_after: no goals
Theorem: DFinsupp.single_eq_of_ne
File: Mathlib/Data/DFinsupp/Basic.lean

tactic: simp only [single_apply, dif_neg h]
state_before: ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝¹ : DecidableEq ι
inst✝ : (i : ι) → Zero (β i)
s : Finset ι
x : (i : ↑↑s) → β ↑i
i✝ i i' : ι
b : β i
h : i ≠ i'
⊢ (single i b) i' = 0
state_after: no goals
Theorem: cmpLE_eq_cmp
File: Mathlib/Order/Compare.lean

tactic: by_cases xy:x ≤ y <;> by_cases yx:y ≤ x <;> simp [cmpLE, lt_iff_le_not_le, *, cmp, cmpUsing]
state_before: α✝ : Type u_1
β : Type u_2
α : Type u_3
inst✝³ : Preorder α
inst✝² : IsTotal α fun x x_1 => x ≤ x_1
inst✝¹ : DecidableRel fun x x_1 => x ≤ x_1
inst✝ : DecidableRel fun x x_1 => x < x_1
x y : α
⊢ cmpLE x y = cmp x y
state_after: case neg
α✝ : Type u_1
β : Type u_2
α : Type u_3
inst✝³ : Preorder α
inst✝² : IsTotal α fun x x_1 => x ≤ x_1
inst✝¹ : DecidableRel fun x x_1 => x ≤ x_1
inst✝ : DecidableRel fun x x_1 => x < x_1
x y : α
xy : ¬x ≤ y
yx : ¬y ≤ x
⊢ False

tactic: cases not_or_of_not xy yx (total_of _ _ _)
state_before: case neg
α✝ : Type u_1
β : Type u_2
α : Type u_3
inst✝³ : Preorder α
inst✝² : IsTotal α fun x x_1 => x ≤ x_1
inst✝¹ : DecidableRel fun x x_1 => x ≤ x_1
inst✝ : DecidableRel fun x x_1 => x < x_1
x y : α
xy : ¬x ≤ y
yx : ¬y ≤ x
⊢ False
state_after: no goals
Theorem: List.cyclicPermutations_of_ne_nil
File: Mathlib/Data/List/Rotate.lean

tactic: obtain ⟨hd, tl, rfl⟩ := exists_cons_of_ne_nil h
state_before: α : Type u
l✝ l' l : List α
h : l ≠ []
⊢ l.cyclicPermutations = (zipWith (fun x x_1 => x ++ x_1) l.tails l.inits).dropLast
state_after: case intro.intro
α : Type u
l l' : List α
hd : α
tl : List α
h : hd :: tl ≠ []
⊢ (hd :: tl).cyclicPermutations = (zipWith (fun x x_1 => x ++ x_1) (hd :: tl).tails (hd :: tl).inits).dropLast

tactic: exact cyclicPermutations_cons _ _
state_before: case intro.intro
α : Type u
l l' : List α
hd : α
tl : List α
h : hd :: tl ≠ []
⊢ (hd :: tl).cyclicPermutations = (zipWith (fun x x_1 => x ++ x_1) (hd :: tl).tails (hd :: tl).inits).dropLast
state_after: no goals
Theorem: Set.image_neg_Ici
File: Mathlib/Data/Set/Pointwise/Interval.lean

tactic: simp
state_before: α : Type u_1
inst✝ : OrderedAddCommGroup α
a b c : α
⊢ Neg.neg '' Ici a = Iic (-a)
state_after: no goals
Theorem: PFunctor.fst_map
File: Mathlib/Data/PFunctor/Univariate/Basic.lean

tactic: cases x
state_before: P : PFunctor.{u}
α : Type v₁
β : Type v₂
γ : Type v₃
x : ↑P α
f : α → β
⊢ (P.map f x).fst = x.fst
state_after: case mk
P : PFunctor.{u}
α : Type v₁
β : Type v₂
γ : Type v₃
f : α → β
fst✝ : P.A
snd✝ : P.B fst✝ → α
⊢ (P.map f ⟨fst✝, snd✝⟩).fst = ⟨fst✝, snd✝⟩.fst

tactic: rfl
state_before: case mk
P : PFunctor.{u}
α : Type v₁
β : Type v₂
γ : Type v₃
f : α → β
fst✝ : P.A
snd✝ : P.B fst✝ → α
⊢ (P.map f ⟨fst✝, snd✝⟩).fst = ⟨fst✝, snd✝⟩.fst
state_after: no goals
Theorem: Rat.inv_intCast_den
File: Mathlib/Data/Rat/Lemmas.lean

tactic: rw [← Int.ofNat_inj]
state_before: a : ℤ
⊢ (↑a)⁻¹.den = if a = 0 then 1 else a.natAbs
state_after: a : ℤ
⊢ ↑(↑a)⁻¹.den = ↑(if a = 0 then 1 else a.natAbs)

tactic: rcases lt_trichotomy a 0 with lt | rfl | gt
state_before: a : ℤ
⊢ ↑(↑a)⁻¹.den = ↑(if a = 0 then 1 else a.natAbs)
state_after: case inl
a : ℤ
lt : a < 0
⊢ ↑(↑a)⁻¹.den = ↑(if a = 0 then 1 else a.natAbs)

case inr.inl

⊢ ↑(↑0)⁻¹.den = ↑(if 0 = 0 then 1 else Int.natAbs 0)

case inr.inr
a : ℤ
gt : 0 < a
⊢ ↑(↑a)⁻¹.den = ↑(if a = 0 then 1 else a.natAbs)

tactic: obtain ⟨a, rfl⟩ : ∃ b, -b = a := ⟨-a, a.neg_neg⟩
state_before: case inl
a : ℤ
lt : a < 0
⊢ ↑(↑a)⁻¹.den = ↑(if a = 0 then 1 else a.natAbs)
state_after: case inl.intro
a : ℤ
lt : -a < 0
⊢ ↑(↑(-a))⁻¹.den = ↑(if -a = 0 then 1 else (-a).natAbs)

tactic: simp at lt
state_before: case inl.intro
a : ℤ
lt : -a < 0
⊢ ↑(↑(-a))⁻¹.den = ↑(if -a = 0 then 1 else (-a).natAbs)
state_after: case inl.intro
a : ℤ
lt : 0 < a
⊢ ↑(↑(-a))⁻¹.den = ↑(if -a = 0 then 1 else (-a).natAbs)

tactic: rw [if_neg (by omega)]
state_before: case inl.intro
a : ℤ
lt : 0 < a
⊢ ↑(↑(-a))⁻¹.den = ↑(if -a = 0 then 1 else (-a).natAbs)
state_after: case inl.intro
a : ℤ
lt : 0 < a
⊢ ↑(↑(-a))⁻¹.den = ↑(-a).natAbs

tactic: simp [Rat.inv_neg, inv_intCast_den_of_pos lt, abs_of_pos lt]
state_before: case inl.intro
a : ℤ
lt : 0 < a
⊢ ↑(↑(-a))⁻¹.den = ↑(-a).natAbs
state_after: no goals

tactic: omega
state_before: a : ℤ
lt : 0 < a
⊢ ¬-a = 0
state_after: no goals

tactic: rfl
state_before: case inr.inl

⊢ ↑(↑0)⁻¹.den = ↑(if 0 = 0 then 1 else Int.natAbs 0)
state_after: no goals

tactic: rw [if_neg (by omega)]
state_before: case inr.inr
a : ℤ
gt : 0 < a
⊢ ↑(↑a)⁻¹.den = ↑(if a = 0 then 1 else a.natAbs)
state_after: case inr.inr
a : ℤ
gt : 0 < a
⊢ ↑(↑a)⁻¹.den = ↑a.natAbs

tactic: simp [inv_intCast_den_of_pos gt, abs_of_pos gt]
state_before: case inr.inr
a : ℤ
gt : 0 < a
⊢ ↑(↑a)⁻¹.den = ↑a.natAbs
state_after: no goals

tactic: omega
state_before: a : ℤ
gt : 0 < a
⊢ ¬a = 0
state_after: no goals
Theorem: Filter.prod_inj
File: Mathlib/Order/Filter/Prod.lean

tactic: refine ⟨fun h => ?_, fun h => h.1 ▸ h.2 ▸ rfl⟩
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort u_5
s : Set α
t : Set β
f : Filter α
g : Filter β
f₁ f₂ : Filter α
g₁ g₂ : Filter β
inst✝¹ : f₁.NeBot
inst✝ : g₁.NeBot
⊢ f₁ ×ˢ g₁ = f₂ ×ˢ g₂ ↔ f₁ = f₂ ∧ g₁ = g₂
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort u_5
s : Set α
t : Set β
f : Filter α
g : Filter β
f₁ f₂ : Filter α
g₁ g₂ : Filter β
inst✝¹ : f₁.NeBot
inst✝ : g₁.NeBot
h : f₁ ×ˢ g₁ = f₂ ×ˢ g₂
⊢ f₁ = f₂ ∧ g₁ = g₂

tactic: have hle : f₁ ≤ f₂ ∧ g₁ ≤ g₂ := prod_le_prod.1 h.le
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort u_5
s : Set α
t : Set β
f : Filter α
g : Filter β
f₁ f₂ : Filter α
g₁ g₂ : Filter β
inst✝¹ : f₁.NeBot
inst✝ : g₁.NeBot
h : f₁ ×ˢ g₁ = f₂ ×ˢ g₂
⊢ f₁ = f₂ ∧ g₁ = g₂
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort u_5
s : Set α
t : Set β
f : Filter α
g : Filter β
f₁ f₂ : Filter α
g₁ g₂ : Filter β
inst✝¹ : f₁.NeBot
inst✝ : g₁.NeBot
h : f₁ ×ˢ g₁ = f₂ ×ˢ g₂
hle : f₁ ≤ f₂ ∧ g₁ ≤ g₂
⊢ f₁ = f₂ ∧ g₁ = g₂

tactic: haveI := neBot_of_le hle.1
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort u_5
s : Set α
t : Set β
f : Filter α
g : Filter β
f₁ f₂ : Filter α
g₁ g₂ : Filter β
inst✝¹ : f₁.NeBot
inst✝ : g₁.NeBot
h : f₁ ×ˢ g₁ = f₂ ×ˢ g₂
hle : f₁ ≤ f₂ ∧ g₁ ≤ g₂
⊢ f₁ = f₂ ∧ g₁ = g₂
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort u_5
s : Set α
t : Set β
f : Filter α
g : Filter β
f₁ f₂ : Filter α
g₁ g₂ : Filter β
inst✝¹ : f₁.NeBot
inst✝ : g₁.NeBot
h : f₁ ×ˢ g₁ = f₂ ×ˢ g₂
hle : f₁ ≤ f₂ ∧ g₁ ≤ g₂
this : f₂.NeBot
⊢ f₁ = f₂ ∧ g₁ = g₂

tactic: haveI := neBot_of_le hle.2
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort u_5
s : Set α
t : Set β
f : Filter α
g : Filter β
f₁ f₂ : Filter α
g₁ g₂ : Filter β
inst✝¹ : f₁.NeBot
inst✝ : g₁.NeBot
h : f₁ ×ˢ g₁ = f₂ ×ˢ g₂
hle : f₁ ≤ f₂ ∧ g₁ ≤ g₂
this : f₂.NeBot
⊢ f₁ = f₂ ∧ g₁ = g₂
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort u_5
s : Set α
t : Set β
f : Filter α
g : Filter β
f₁ f₂ : Filter α
g₁ g₂ : Filter β
inst✝¹ : f₁.NeBot
inst✝ : g₁.NeBot
h : f₁ ×ˢ g₁ = f₂ ×ˢ g₂
hle : f₁ ≤ f₂ ∧ g₁ ≤ g₂
this✝ : f₂.NeBot
this : g₂.NeBot
⊢ f₁ = f₂ ∧ g₁ = g₂

tactic: exact ⟨hle.1.antisymm <| (prod_le_prod.1 h.ge).1, hle.2.antisymm <| (prod_le_prod.1 h.ge).2⟩
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort u_5
s : Set α
t : Set β
f : Filter α
g : Filter β
f₁ f₂ : Filter α
g₁ g₂ : Filter β
inst✝¹ : f₁.NeBot
inst✝ : g₁.NeBot
h : f₁ ×ˢ g₁ = f₂ ×ˢ g₂
hle : f₁ ≤ f₂ ∧ g₁ ≤ g₂
this✝ : f₂.NeBot
this : g₂.NeBot
⊢ f₁ = f₂ ∧ g₁ = g₂
state_after: no goals
Theorem: Finset.tprod_subtype
File: Mathlib/Topology/Algebra/InfiniteSum/Basic.lean

tactic: rw [← prod_attach]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝¹ : CommMonoid α
inst✝ : TopologicalSpace α
f✝ g : β → α
a a₁ a₂ : α
s : Finset β
f : β → α
⊢ ∏' (x : { x // x ∈ s }), f ↑x = ∏ x ∈ s, f x
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝¹ : CommMonoid α
inst✝ : TopologicalSpace α
f✝ g : β → α
a a₁ a₂ : α
s : Finset β
f : β → α
⊢ ∏' (x : { x // x ∈ s }), f ↑x = ∏ x ∈ s.attach, f ↑x

tactic: exact tprod_fintype _
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝¹ : CommMonoid α
inst✝ : TopologicalSpace α
f✝ g : β → α
a a₁ a₂ : α
s : Finset β
f : β → α
⊢ ∏' (x : { x // x ∈ s }), f ↑x = ∏ x ∈ s.attach, f ↑x
state_after: no goals
Theorem: Irreducible.prime_of_isPrimal
File: Mathlib/Algebra/Associated.lean

tactic: obtain ⟨d₁, d₂, h₁, h₂, rfl⟩ := primal dvd
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : CommMonoidWithZero α
a✝ : α
irr : Irreducible a✝
primal : IsPrimal a✝
a b : α
dvd : a✝ ∣ a * b
⊢ a✝ ∣ a ∨ a✝ ∣ b
state_after: case intro.intro.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : CommMonoidWithZero α
a b d₁ d₂ : α
h₁ : d₁ ∣ a
h₂ : d₂ ∣ b
irr : Irreducible (d₁ * d₂)
primal : IsPrimal (d₁ * d₂)
dvd : d₁ * d₂ ∣ a * b
⊢ d₁ * d₂ ∣ a ∨ d₁ * d₂ ∣ b
Theorem: midpoint_eq_smul_add
File: Mathlib/LinearAlgebra/AffineSpace/Midpoint.lean

tactic: rw [midpoint_eq_iff, pointReflection_apply, vsub_eq_sub, vadd_eq_add, sub_add_eq_add_sub, ←
  two_smul R, smul_smul, mul_invOf_self, one_smul, add_sub_cancel_left]
state_before: R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁷ : Ring R
inst✝⁶ : Invertible 2
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x✝ y✝ z : P
x y : V
⊢ midpoint R x y = ⅟2 • (x + y)
state_after: no goals
Theorem: Real.tanh_eq_sinh_div_cosh
File: Mathlib/Data/Complex/Exponential.lean

tactic: simp [tanh_eq_sinh_div_cosh]
state_before: x y : ℝ
⊢ ↑(tanh x) = ↑(sinh x / cosh x)
state_after: no goals
Theorem: Real.fourierIntegralInv_eq
File: Mathlib/Analysis/Fourier/FourierTransform.lean

tactic: simp [fourierIntegralInv, VectorFourier.fourierIntegral]
state_before: E : Type u_1
inst✝¹¹ : NormedAddCommGroup E
inst✝¹⁰ : NormedSpace ℂ E
V : Type u_2
inst✝⁹ : NormedAddCommGroup V
inst✝⁸ : InnerProductSpace ℝ V
inst✝⁷ : MeasurableSpace V
inst✝⁶ : BorelSpace V
inst✝⁵ : FiniteDimensional ℝ V
W : Type u_3
inst✝⁴ : NormedAddCommGroup W
inst✝³ : InnerProductSpace ℝ W
inst✝² : MeasurableSpace W
inst✝¹ : BorelSpace W
inst✝ : FiniteDimensional ℝ W
f : V → E
w : V
⊢ 𝓕⁻ f w = ∫ (v : V), 𝐞 ⟪v, w⟫_ℝ • f v
state_after: no goals
Theorem: IsGδ.singleton
File: Mathlib/Topology/Separation.lean

tactic: rcases (nhds_basis_opens x).exists_antitone_subbasis with ⟨U, hU, h_basis⟩
state_before: X : Type u_1
Y : Type u_2
inst✝² : TopologicalSpace X
inst✝¹ : FirstCountableTopology X
inst✝ : T1Space X
x : X
⊢ IsGδ {x}
state_after: case intro.intro
X : Type u_1
Y : Type u_2
inst✝² : TopologicalSpace X
inst✝¹ : FirstCountableTopology X
inst✝ : T1Space X
x : X
U : ℕ → Set X
hU : ∀ (i : ℕ), x ∈ U i ∧ IsOpen (U i)
h_basis : (𝓝 x).HasAntitoneBasis fun i => U i
⊢ IsGδ {x}

tactic: rw [← biInter_basis_nhds h_basis.toHasBasis]
state_before: case intro.intro
X : Type u_1
Y : Type u_2
inst✝² : TopologicalSpace X
inst✝¹ : FirstCountableTopology X
inst✝ : T1Space X
x : X
U : ℕ → Set X
hU : ∀ (i : ℕ), x ∈ U i ∧ IsOpen (U i)
h_basis : (𝓝 x).HasAntitoneBasis fun i => U i
⊢ IsGδ {x}
state_after: case intro.intro
X : Type u_1
Y : Type u_2
inst✝² : TopologicalSpace X
inst✝¹ : FirstCountableTopology X
inst✝ : T1Space X
x : X
U : ℕ → Set X
hU : ∀ (i : ℕ), x ∈ U i ∧ IsOpen (U i)
h_basis : (𝓝 x).HasAntitoneBasis fun i => U i
⊢ IsGδ (⋂ i, ⋂ (_ : True), U i)

tactic: exact .biInter (to_countable _) fun n _ => (hU n).2.isGδ
state_before: case intro.intro
X : Type u_1
Y : Type u_2
inst✝² : TopologicalSpace X
inst✝¹ : FirstCountableTopology X
inst✝ : T1Space X
x : X
U : ℕ → Set X
hU : ∀ (i : ℕ), x ∈ U i ∧ IsOpen (U i)
h_basis : (𝓝 x).HasAntitoneBasis fun i => U i
⊢ IsGδ (⋂ i, ⋂ (_ : True), U i)
state_after: no goals
Theorem: SimpleGraph.Subgraph.induce_self_verts
File: Mathlib/Combinatorics/SimpleGraph/Subgraph.lean

tactic: ext
state_before: ι : Sort u_1
V : Type u
W : Type v
G : SimpleGraph V
G' G'' : G.Subgraph
s s' : Set V
⊢ G'.induce G'.verts = G'
state_after: case verts.h
ι : Sort u_1
V : Type u
W : Type v
G : SimpleGraph V
G' G'' : G.Subgraph
s s' : Set V
x✝ : V
⊢ x✝ ∈ (G'.induce G'.verts).verts ↔ x✝ ∈ G'.verts

case Adj.h.h.a
ι : Sort u_1
V : Type u
W : Type v
G : SimpleGraph V
G' G'' : G.Subgraph
s s' : Set V
x✝¹ x✝ : V
⊢ (G'.induce G'.verts).Adj x✝¹ x✝ ↔ G'.Adj x✝¹ x✝

tactic: simp
state_before: case verts.h
ι : Sort u_1
V : Type u
W : Type v
G : SimpleGraph V
G' G'' : G.Subgraph
s s' : Set V
x✝ : V
⊢ x✝ ∈ (G'.induce G'.verts).verts ↔ x✝ ∈ G'.verts
state_after: no goals

tactic: constructor <;>
  simp (config := { contextual := true }) only [induce_adj, imp_true_iff, and_true_iff]
state_before: case Adj.h.h.a
ι : Sort u_1
V : Type u
W : Type v
G : SimpleGraph V
G' G'' : G.Subgraph
s s' : Set V
x✝¹ x✝ : V
⊢ (G'.induce G'.verts).Adj x✝¹ x✝ ↔ G'.Adj x✝¹ x✝
state_after: case Adj.h.h.a.mpr
ι : Sort u_1
V : Type u
W : Type v
G : SimpleGraph V
G' G'' : G.Subgraph
s s' : Set V
x✝¹ x✝ : V
⊢ G'.Adj x✝¹ x✝ → x✝¹ ∈ G'.verts ∧ x✝ ∈ G'.verts

tactic: exact fun ha ↦ ⟨G'.edge_vert ha, G'.edge_vert ha.symm⟩
state_before: case Adj.h.h.a.mpr
ι : Sort u_1
V : Type u
W : Type v
G : SimpleGraph V
G' G'' : G.Subgraph
s s' : Set V
x✝¹ x✝ : V
⊢ G'.Adj x✝¹ x✝ → x✝¹ ∈ G'.verts ∧ x✝ ∈ G'.verts
state_after: no goals
Theorem: mem_affineSpan_iff_eq_affineCombination
File: Mathlib/LinearAlgebra/AffineSpace/Combination.lean

tactic: constructor
state_before: ι : Type u_1
k : Type u_2
V : Type u_3
P : Type u_4
inst✝⁴ : Ring k
inst✝³ : AddCommGroup V
inst✝² : Module k V
inst✝¹ : AffineSpace V P
inst✝ : Nontrivial k
p1 : P
p : ι → P
⊢ p1 ∈ affineSpan k (Set.range p) ↔ ∃ s w, ∑ i ∈ s, w i = 1 ∧ p1 = (Finset.affineCombination k s p) w
state_after: case mp
ι : Type u_1
k : Type u_2
V : Type u_3
P : Type u_4
inst✝⁴ : Ring k
inst✝³ : AddCommGroup V
inst✝² : Module k V
inst✝¹ : AffineSpace V P
inst✝ : Nontrivial k
p1 : P
p : ι → P
⊢ p1 ∈ affineSpan k (Set.range p) → ∃ s w, ∑ i ∈ s, w i = 1 ∧ p1 = (Finset.affineCombination k s p) w

case mpr
ι : Type u_1
k : Type u_2
V : Type u_3
P : Type u_4
inst✝⁴ : Ring k
inst✝³ : AddCommGroup V
inst✝² : Module k V
inst✝¹ : AffineSpace V P
inst✝ : Nontrivial k
p1 : P
p : ι → P
⊢ (∃ s w, ∑ i ∈ s, w i = 1 ∧ p1 = (Finset.affineCombination k s p) w) → p1 ∈ affineSpan k (Set.range p)

tactic: exact eq_affineCombination_of_mem_affineSpan
state_before: case mp
ι : Type u_1
k : Type u_2
V : Type u_3
P : Type u_4
inst✝⁴ : Ring k
inst✝³ : AddCommGroup V
inst✝² : Module k V
inst✝¹ : AffineSpace V P
inst✝ : Nontrivial k
p1 : P
p : ι → P
⊢ p1 ∈ affineSpan k (Set.range p) → ∃ s w, ∑ i ∈ s, w i = 1 ∧ p1 = (Finset.affineCombination k s p) w
state_after: no goals

tactic: rintro ⟨s, w, hw, rfl⟩
state_before: case mpr
ι : Type u_1
k : Type u_2
V : Type u_3
P : Type u_4
inst✝⁴ : Ring k
inst✝³ : AddCommGroup V
inst✝² : Module k V
inst✝¹ : AffineSpace V P
inst✝ : Nontrivial k
p1 : P
p : ι → P
⊢ (∃ s w, ∑ i ∈ s, w i = 1 ∧ p1 = (Finset.affineCombination k s p) w) → p1 ∈ affineSpan k (Set.range p)
state_after: case mpr.intro.intro.intro
ι : Type u_1
k : Type u_2
V : Type u_3
P : Type u_4
inst✝⁴ : Ring k
inst✝³ : AddCommGroup V
inst✝² : Module k V
inst✝¹ : AffineSpace V P
inst✝ : Nontrivial k
p : ι → P
s : Finset ι
w : ι → k
hw : ∑ i ∈ s, w i = 1
⊢ (Finset.affineCombination k s p) w ∈ affineSpan k (Set.range p)

tactic: exact affineCombination_mem_affineSpan hw p
state_before: case mpr.intro.intro.intro
ι : Type u_1
k : Type u_2
V : Type u_3
P : Type u_4
inst✝⁴ : Ring k
inst✝³ : AddCommGroup V
inst✝² : Module k V
inst✝¹ : AffineSpace V P
inst✝ : Nontrivial k
p : ι → P
s : Finset ι
w : ι → k
hw : ∑ i ∈ s, w i = 1
⊢ (Finset.affineCombination k s p) w ∈ affineSpan k (Set.range p)
state_after: no goals
Theorem: ENNReal.tsum_biUnion_le_tsum
File: Mathlib/Topology/Instances/ENNReal.lean

tactic: simp
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
a b c d : ℝ≥0∞
r p q : ℝ≥0
x y z ε ε₁ ε₂ : ℝ≥0∞
s✝ : Set ℝ≥0∞
f✝ g : α → ℝ≥0∞
ι : Type u_4
f : α → ℝ≥0∞
s : Set ι
t : ι → Set α
⊢ ⋃ i ∈ s, t i = ⋃ i, t ↑i
state_after: no goals
Theorem: Int.bodd_mul
File: Mathlib/Data/Int/Bitwise.lean

tactic: cases' m with m m <;> cases' n with n n <;>
simp only [ofNat_eq_coe, ofNat_mul_negSucc, negSucc_mul_ofNat, ofNat_mul_ofNat,
           negSucc_mul_negSucc] <;>
simp only [negSucc_coe, bodd_neg, bodd_coe, ← Nat.bodd_mul]
state_before: m n : ℤ
⊢ (m * n).bodd = (m.bodd && n.bodd)
state_after: no goals
Theorem: DFinsupp.single_eq_of_sigma_eq
File: Mathlib/Data/DFinsupp/Basic.lean

tactic: cases h
state_before: ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝¹ : DecidableEq ι
inst✝ : (i : ι) → Zero (β i)
s : Finset ι
x : (i : ↑↑s) → β ↑i
i✝ i j : ι
xi : β i
xj : β j
h : ⟨i, xi⟩ = ⟨j, xj⟩
⊢ single i xi = single j xj
state_after: case refl
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝¹ : DecidableEq ι
inst✝ : (i : ι) → Zero (β i)
s : Finset ι
x : (i : ↑↑s) → β ↑i
i✝ i : ι
xi : β i
⊢ single i xi = single i xi

tactic: rfl
state_before: case refl
ι : Type u
γ : Type w
β : ι → Type v
β₁ : ι → Type v₁
β₂ : ι → Type v₂
inst✝¹ : DecidableEq ι
inst✝ : (i : ι) → Zero (β i)
s : Finset ι
x : (i : ↑↑s) → β ↑i
i✝ i : ι
xi : β i
⊢ single i xi = single i xi
state_after: no goals
Theorem: IsOfFinOrder.pow
File: Mathlib/GroupTheory/OrderOfElement.lean

tactic: simp_rw [isOfFinOrder_iff_pow_eq_one]
state_before: G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝ : Monoid G
a b x y : G
n✝ m n : ℕ
⊢ IsOfFinOrder a → IsOfFinOrder (a ^ n)
state_after: G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝ : Monoid G
a b x y : G
n✝ m n : ℕ
⊢ (∃ n, 0 < n ∧ a ^ n = 1) → ∃ n_1, 0 < n_1 ∧ (a ^ n) ^ n_1 = 1

tactic: rintro ⟨m, hm, ha⟩
state_before: G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝ : Monoid G
a b x y : G
n✝ m n : ℕ
⊢ (∃ n, 0 < n ∧ a ^ n = 1) → ∃ n_1, 0 < n_1 ∧ (a ^ n) ^ n_1 = 1
state_after: case intro.intro
G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝ : Monoid G
a b x y : G
n✝ m✝ n m : ℕ
hm : 0 < m
ha : a ^ m = 1
⊢ ∃ n_1, 0 < n_1 ∧ (a ^ n) ^ n_1 = 1

tactic: exact ⟨m, hm, by simp [pow_right_comm _ n, ha]⟩
state_before: case intro.intro
G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝ : Monoid G
a b x y : G
n✝ m✝ n m : ℕ
hm : 0 < m
ha : a ^ m = 1
⊢ ∃ n_1, 0 < n_1 ∧ (a ^ n) ^ n_1 = 1
state_after: no goals

tactic: simp [pow_right_comm _ n, ha]
state_before: G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝ : Monoid G
a b x y : G
n✝ m✝ n m : ℕ
hm : 0 < m
ha : a ^ m = 1
⊢ (a ^ n) ^ m = 1
state_after: no goals