1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: SimpleGraph.TripartiteFromTriangles.Graph.in₂₁_iff'
File: Mathlib/Combinatorics/SimpleGraph/Triangle/Tripartite.lean

tactic: rintro ⟨⟩
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
𝕜 : Type u_4
inst✝ : LinearOrderedField 𝕜
t : Finset (α × β × γ)
a a' : α
b b' : β
c c' : γ
x : α × β × γ
ε : 𝕜
⊢ (graph t).Adj (in₂ c) (in₁ b) → ∃ x ∈ t, x.2.2 = c ∧ x.2.1 = b
state_after: case in₂₁
α : Type u_1
β : Type u_2
γ : Type u_3
𝕜 : Type u_4
inst✝ : LinearOrderedField 𝕜
t : Finset (α × β × γ)
a a' : α
b b' : β
c c' : γ
x : α × β × γ
ε : 𝕜
a✝¹ : α
a✝ : (a✝¹, b, c) ∈ t
⊢ ∃ x ∈ t, x.2.2 = c ∧ x.2.1 = b

tactic: exact ⟨_, ‹_›, by simp⟩
state_before: case in₂₁
α : Type u_1
β : Type u_2
γ : Type u_3
𝕜 : Type u_4
inst✝ : LinearOrderedField 𝕜
t : Finset (α × β × γ)
a a' : α
b b' : β
c c' : γ
x : α × β × γ
ε : 𝕜
a✝¹ : α
a✝ : (a✝¹, b, c) ∈ t
⊢ ∃ x ∈ t, x.2.2 = c ∧ x.2.1 = b
state_after: no goals

tactic: simp
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
𝕜 : Type u_4
inst✝ : LinearOrderedField 𝕜
t : Finset (α × β × γ)
a a' : α
b b' : β
c c' : γ
x : α × β × γ
ε : 𝕜
a✝¹ : α
a✝ : (a✝¹, b, c) ∈ t
⊢ (a✝¹, b, c).2.2 = c ∧ (a✝¹, b, c).2.1 = b
state_after: no goals

tactic: rintro ⟨⟨a, b, c⟩, h, rfl, rfl⟩
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
𝕜 : Type u_4
inst✝ : LinearOrderedField 𝕜
t : Finset (α × β × γ)
a a' : α
b b' : β
c c' : γ
x : α × β × γ
ε : 𝕜
⊢ (∃ x ∈ t, x.2.2 = c ∧ x.2.1 = b) → (graph t).Adj (in₂ c) (in₁ b)
state_after: case intro.mk.mk.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
𝕜 : Type u_4
inst✝ : LinearOrderedField 𝕜
t : Finset (α × β × γ)
a✝ a' : α
b' : β
c' : γ
x : α × β × γ
ε : 𝕜
a : α
b : β
c : γ
h : (a, b, c) ∈ t
⊢ (graph t).Adj (in₂ (a, b, c).2.2) (in₁ (a, b, c).2.1)

tactic: constructor
state_before: case intro.mk.mk.intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
𝕜 : Type u_4
inst✝ : LinearOrderedField 𝕜
t : Finset (α × β × γ)
a✝ a' : α
b' : β
c' : γ
x : α × β × γ
ε : 𝕜
a : α
b : β
c : γ
h : (a, b, c) ∈ t
⊢ (graph t).Adj (in₂ (a, b, c).2.2) (in₁ (a, b, c).2.1)
state_after: case intro.mk.mk.intro.intro.a
α : Type u_1
β : Type u_2
γ : Type u_3
𝕜 : Type u_4
inst✝ : LinearOrderedField 𝕜
t : Finset (α × β × γ)
a✝ a' : α
b' : β
c' : γ
x : α × β × γ
ε : 𝕜
a : α
b : β
c : γ
h : (a, b, c) ∈ t
⊢ (?intro.mk.mk.intro.intro.a, (a, b, c).2.1, (a, b, c).2.2) ∈ t

case intro.mk.mk.intro.intro.a
α : Type u_1
β : Type u_2
γ : Type u_3
𝕜 : Type u_4
inst✝ : LinearOrderedField 𝕜
t : Finset (α × β × γ)
a✝ a' : α
b' : β
c' : γ
x : α × β × γ
ε : 𝕜
a : α
b : β
c : γ
h : (a, b, c) ∈ t
⊢ α

tactic: assumption
state_before: case intro.mk.mk.intro.intro.a
α : Type u_1
β : Type u_2
γ : Type u_3
𝕜 : Type u_4
inst✝ : LinearOrderedField 𝕜
t : Finset (α × β × γ)
a✝ a' : α
b' : β
c' : γ
x : α × β × γ
ε : 𝕜
a : α
b : β
c : γ
h : (a, b, c) ∈ t
⊢ (?intro.mk.mk.intro.intro.a, (a, b, c).2.1, (a, b, c).2.2) ∈ t

case intro.mk.mk.intro.intro.a
α : Type u_1
β : Type u_2
γ : Type u_3
𝕜 : Type u_4
inst✝ : LinearOrderedField 𝕜
t : Finset (α × β × γ)
a✝ a' : α
b' : β
c' : γ
x : α × β × γ
ε : 𝕜
a : α
b : β
c : γ
h : (a, b, c) ∈ t
⊢ α
state_after: no goals
Theorem: NNReal.summable_rpow
File: Mathlib/Analysis/PSeries.lean

tactic: simp [← NNReal.summable_coe]
state_before: p : ℝ
⊢ (Summable fun n => ↑n ^ p) ↔ p < -1
state_after: no goals
Theorem: tsub_pos_iff_lt
File: Mathlib/Algebra/Order/Sub/Canonical.lean

tactic: rw [tsub_pos_iff_not_le, not_le]
state_before: α : Type u_1
inst✝² : CanonicallyLinearOrderedAddCommMonoid α
inst✝¹ : Sub α
inst✝ : OrderedSub α
a b c d : α
⊢ 0 < a - b ↔ b < a
state_after: no goals
Theorem: MeasureTheory.IsFundamentalDomain.setLIntegral_eq_tsum'
File: Mathlib/MeasureTheory/Group/FundamentalDomain.lean

tactic: simp only [smul_set_inter, inv_smul_smul]
state_before: G : Type u_1
H : Type u_2
α : Type u_3
β : Type u_4
E : Type u_5
inst✝¹⁰ : Group G
inst✝⁹ : Group H
inst✝⁸ : MulAction G α
inst✝⁷ : MeasurableSpace α
inst✝⁶ : MulAction H β
inst✝⁵ : MeasurableSpace β
inst✝⁴ : NormedAddCommGroup E
s t✝ : Set α
μ : Measure α
inst✝³ : MeasurableSpace G
inst✝² : MeasurableSMul G α
inst✝¹ : SMulInvariantMeasure G α μ
inst✝ : Countable G
ν : Measure α
h : IsFundamentalDomain G s μ
f : α → ℝ≥0∞
t : Set α
⊢ ∑' (g : G), ∫⁻ (x : α) in t ∩ g⁻¹ • s, f x ∂μ = ∑' (g : G), ∫⁻ (x : α) in g⁻¹ • (g • t ∩ s), f x ∂μ
state_after: no goals
Theorem: zero_mem_cantorSet
File: Mathlib/Topology/Instances/CantorSet.lean

tactic: simp [cantorSet, zero_mem_preCantorSet]
state_before: ⊢ 0 ∈ cantorSet
state_after: no goals
Theorem: CategoryTheory.Localization.Preadditive.add'_comm
File: Mathlib/CategoryTheory/Localization/CalculusOfFractions/Preadditive.lean

tactic: obtain ⟨α, h₁, h₂⟩ := exists_leftFraction₂ L W f₁ f₂
state_before: C : Type u_1
D : Type u_2
inst✝⁴ : Category.{u_4, u_1} C
inst✝³ : Category.{u_3, u_2} D
inst✝² : Preadditive C
L : C ⥤ D
W : MorphismProperty C
inst✝¹ : L.IsLocalization W
inst✝ : W.HasLeftCalculusOfFractions
X Y Z : C
f₁ f₂ : L.obj X ⟶ L.obj Y
⊢ add' W f₁ f₂ = add' W f₂ f₁
state_after: case intro.intro
C : Type u_1
D : Type u_2
inst✝⁴ : Category.{u_4, u_1} C
inst✝³ : Category.{u_3, u_2} D
inst✝² : Preadditive C
L : C ⥤ D
W : MorphismProperty C
inst✝¹ : L.IsLocalization W
inst✝ : W.HasLeftCalculusOfFractions
X Y Z : C
f₁ f₂ : L.obj X ⟶ L.obj Y
α : W.LeftFraction₂ X Y
h₁ : f₁ = α.fst.map L ⋯
h₂ : f₂ = α.snd.map L ⋯
⊢ add' W f₁ f₂ = add' W f₂ f₁

tactic: rw [add'_eq W f₁ f₂ α h₁ h₂, add'_eq W f₂ f₁ α.symm h₂ h₁, α.symm_add]
state_before: case intro.intro
C : Type u_1
D : Type u_2
inst✝⁴ : Category.{u_4, u_1} C
inst✝³ : Category.{u_3, u_2} D
inst✝² : Preadditive C
L : C ⥤ D
W : MorphismProperty C
inst✝¹ : L.IsLocalization W
inst✝ : W.HasLeftCalculusOfFractions
X Y Z : C
f₁ f₂ : L.obj X ⟶ L.obj Y
α : W.LeftFraction₂ X Y
h₁ : f₁ = α.fst.map L ⋯
h₂ : f₂ = α.snd.map L ⋯
⊢ add' W f₁ f₂ = add' W f₂ f₁
state_after: no goals
Theorem: FiniteDimensional.finrank_eq_card_finset_basis
File: Mathlib/LinearAlgebra/Dimension/StrongRankCondition.lean

tactic: rw [finrank_eq_card_basis h, Fintype.card_coe]
state_before: R : Type u
M : Type v
inst✝³ : Ring R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
ι✝ : Type w
ι' : Type w'
inst✝ : StrongRankCondition R
ι : Type w
b : Finset ι
h : Basis { x // x ∈ b } R M
⊢ finrank R M = b.card
state_after: no goals
Theorem: ENNReal.ofReal_toReal
File: Mathlib/Data/ENNReal/Basic.lean

tactic: simp [ENNReal.toReal, ENNReal.ofReal, h]
state_before: α : Type u_1
a✝ b c d : ℝ≥0∞
r p q : ℝ≥0
a : ℝ≥0∞
h : a ≠ ⊤
⊢ ENNReal.ofReal a.toReal = a
state_after: no goals
Theorem: Set.Ioo_union_left
File: Mathlib/Order/Interval/Set/Basic.lean

tactic: rw [← Ico_diff_left, diff_union_self,
  union_eq_self_of_subset_right (singleton_subset_iff.2 <| left_mem_Ico.2 hab)]
state_before: α : Type u_1
β : Type u_2
inst✝ : PartialOrder α
a b c : α
hab : a < b
⊢ Ioo a b ∪ {a} = Ico a b
state_after: no goals
Theorem: LinearMap.inr_map_mul
File: Mathlib/LinearAlgebra/Prod.lean

tactic: simp
state_before: R : Type u
K : Type u'
M : Type v
V : Type v'
M₂ : Type w
V₂ : Type w'
M₃ : Type y
V₃ : Type y'
M₄ : Type z
ι : Type x
M₅ : Type u_1
M₆ : Type u_2
S : Type u_3
inst✝¹⁷ : Semiring R
inst✝¹⁶ : Semiring S
inst✝¹⁵ : AddCommMonoid M
inst✝¹⁴ : AddCommMonoid M₂
inst✝¹³ : AddCommMonoid M₃
inst✝¹² : AddCommMonoid M₄
inst✝¹¹ : AddCommMonoid M₅
inst✝¹⁰ : AddCommMonoid M₆
inst✝⁹ : Module R M
inst✝⁸ : Module R M₂
inst✝⁷ : Module R M₃
inst✝⁶ : Module R M₄
inst✝⁵ : Module R M₅
inst✝⁴ : Module R M₆
f : M →ₗ[R] M₂
A : Type u_4
inst✝³ : NonUnitalNonAssocSemiring A
inst✝² : Module R A
B : Type u_5
inst✝¹ : NonUnitalNonAssocSemiring B
inst✝ : Module R B
b₁ b₂ : B
⊢ ((inr R A B) (b₁ * b₂)).1 = ((inr R A B) b₁ * (inr R A B) b₂).1
state_after: no goals
Theorem: Finset.weightedVSubOfPoint_eq_of_sum_eq_zero
File: Mathlib/LinearAlgebra/AffineSpace/Combination.lean

tactic: apply eq_of_sub_eq_zero
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝² : Ring k
inst✝¹ : AddCommGroup V
inst✝ : Module k V
S : AffineSpace V P
ι : Type u_4
s : Finset ι
ι₂ : Type u_5
s₂ : Finset ι₂
w : ι → k
p : ι → P
h : ∑ i ∈ s, w i = 0
b₁ b₂ : P
⊢ (s.weightedVSubOfPoint p b₁) w = (s.weightedVSubOfPoint p b₂) w
state_after: case h
k : Type u_1
V : Type u_2
P : Type u_3
inst✝² : Ring k
inst✝¹ : AddCommGroup V
inst✝ : Module k V
S : AffineSpace V P
ι : Type u_4
s : Finset ι
ι₂ : Type u_5
s₂ : Finset ι₂
w : ι → k
p : ι → P
h : ∑ i ∈ s, w i = 0
b₁ b₂ : P
⊢ (s.weightedVSubOfPoint p b₁) w - (s.weightedVSubOfPoint p b₂) w = 0

tactic: rw [weightedVSubOfPoint_apply, weightedVSubOfPoint_apply, ← sum_sub_distrib]
state_before: case h
k : Type u_1
V : Type u_2
P : Type u_3
inst✝² : Ring k
inst✝¹ : AddCommGroup V
inst✝ : Module k V
S : AffineSpace V P
ι : Type u_4
s : Finset ι
ι₂ : Type u_5
s₂ : Finset ι₂
w : ι → k
p : ι → P
h : ∑ i ∈ s, w i = 0
b₁ b₂ : P
⊢ (s.weightedVSubOfPoint p b₁) w - (s.weightedVSubOfPoint p b₂) w = 0
state_after: case h
k : Type u_1
V : Type u_2
P : Type u_3
inst✝² : Ring k
inst✝¹ : AddCommGroup V
inst✝ : Module k V
S : AffineSpace V P
ι : Type u_4
s : Finset ι
ι₂ : Type u_5
s₂ : Finset ι₂
w : ι → k
p : ι → P
h : ∑ i ∈ s, w i = 0
b₁ b₂ : P
⊢ ∑ x ∈ s, (w x • (p x -ᵥ b₁) - w x • (p x -ᵥ b₂)) = 0

tactic: rw [← sum_smul, h, zero_smul]
state_before: case h
k : Type u_1
V : Type u_2
P : Type u_3
inst✝² : Ring k
inst✝¹ : AddCommGroup V
inst✝ : Module k V
S : AffineSpace V P
ι : Type u_4
s : Finset ι
ι₂ : Type u_5
s₂ : Finset ι₂
w : ι → k
p : ι → P
h : ∑ i ∈ s, w i = 0
b₁ b₂ : P
⊢ ∑ x ∈ s, w x • (b₂ -ᵥ b₁) = 0
state_after: no goals
Theorem: Compactum.lim_eq_str
File: Mathlib/Topology/Category/Compactum.lean

tactic: rw [Ultrafilter.lim_eq_iff_le_nhds, le_nhds_iff]
state_before: X : Compactum
F : Ultrafilter X.A
⊢ F.lim = X.str F
state_after: X : Compactum
F : Ultrafilter X.A
⊢ ∀ (s : Set X.A), X.str F ∈ s → IsOpen s → s ∈ ↑F

tactic: tauto
state_before: X : Compactum
F : Ultrafilter X.A
⊢ ∀ (s : Set X.A), X.str F ∈ s → IsOpen s → s ∈ ↑F
state_after: no goals
Theorem: Finset.coe_cons
File: Mathlib/Data/Finset/Basic.lean

tactic: ext
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
s✝ t : Finset α
a✝ b a : α
s : Finset α
h : a ∉ s
⊢ ↑(cons a s h) = insert a ↑s
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
s✝ t : Finset α
a✝ b a : α
s : Finset α
h : a ∉ s
x✝ : α
⊢ x✝ ∈ ↑(cons a s h) ↔ x✝ ∈ insert a ↑s

tactic: simp
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
s✝ t : Finset α
a✝ b a : α
s : Finset α
h : a ∉ s
x✝ : α
⊢ x✝ ∈ ↑(cons a s h) ↔ x✝ ∈ insert a ↑s
state_after: no goals
Theorem: Polynomial.taylor_monomial
File: Mathlib/Algebra/Polynomial/Taylor.lean

tactic: simp [taylor_apply]
state_before: R : Type u_1
inst✝ : Semiring R
r : R
f : R[X]
i : ℕ
k : R
⊢ (taylor r) ((monomial i) k) = C k * (X + C r) ^ i
state_after: no goals
Theorem: HomologicalComplex.homotopyCofiber.inrX_desc_f
File: Mathlib/Algebra/Homology/HomotopyCofiber.lean

tactic: dsimp [desc]
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
α : G ⟶ K
hα : Homotopy (φ ≫ α) 0
i : ι
⊢ inrX φ i ≫ (desc φ α hα).f i = α.f i
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
α : G ⟶ K
hα : Homotopy (φ ≫ α) 0
i : ι
⊢ (inrX φ i ≫
      if hj : c.Rel i (c.next i) then fstX φ i (c.next i) hj ≫ hα.hom (c.next i) i + sndX φ i ≫ α.f i
      else sndX φ i ≫ α.f i) =
    α.f i

tactic: split_ifs <;> simp
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
α : G ⟶ K
hα : Homotopy (φ ≫ α) 0
i : ι
⊢ (inrX φ i ≫
      if hj : c.Rel i (c.next i) then fstX φ i (c.next i) hj ≫ hα.hom (c.next i) i + sndX φ i ≫ α.f i
      else sndX φ i ≫ α.f i) =
    α.f i
state_after: no goals
Theorem: midpoint_neg_self
File: Mathlib/LinearAlgebra/AffineSpace/Midpoint.lean

tactic: simpa using midpoint_self_neg R (-x)
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 : V
⊢ midpoint R (-x) x = 0
state_after: no goals
Theorem: Ordinal.blsub_le_iff
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

tactic: convert bsup_le_iff.{_, v} (f := fun a ha => succ (f a ha)) (a := a) using 2
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
o : Ordinal.{u}
f : (a : Ordinal.{u}) → a < o → Ordinal.{max u v}
a : Ordinal.{max u v}
⊢ o.blsub f ≤ a ↔ ∀ (i : Ordinal.{u}) (h : i < o), f i h < a
state_after: case h.e'_2.h.a
α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
o : Ordinal.{u}
f : (a : Ordinal.{u}) → a < o → Ordinal.{max u v}
a : Ordinal.{max u v}
a✝ : Ordinal.{u}
⊢ (∀ (h : a✝ < o), f a✝ h < a) ↔ ∀ (h : a✝ < o), succ (f a✝ h) ≤ a

tactic: simp_rw [succ_le_iff]
state_before: case h.e'_2.h.a
α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
o : Ordinal.{u}
f : (a : Ordinal.{u}) → a < o → Ordinal.{max u v}
a : Ordinal.{max u v}
a✝ : Ordinal.{u}
⊢ (∀ (h : a✝ < o), f a✝ h < a) ↔ ∀ (h : a✝ < o), succ (f a✝ h) ≤ a
state_after: no goals
Theorem: Finset.prod_eq_single
File: Mathlib/Algebra/BigOperators/Group/Finset.lean

tactic: rintro rfl
state_before: ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a✝ : α
f✝ g : α → β
inst✝ : CommMonoid β
s : Finset α
f : α → β
a : α
h₀ : ∀ b ∈ s, b ≠ a → f b = 1
h₁ : a ∉ s → f a = 1
this✝ : DecidableEq α
this : a ∉ s
b : α
hb : b ∈ s
⊢ b ≠ a
state_after: ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝ : CommMonoid β
s : Finset α
f : α → β
this✝ : DecidableEq α
b : α
hb : b ∈ s
h₀ : ∀ b_1 ∈ s, b_1 ≠ b → f b_1 = 1
h₁ : b ∉ s → f b = 1
this : b ∉ s
⊢ False

tactic: exact this hb
state_before: ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝ : CommMonoid β
s : Finset α
f : α → β
this✝ : DecidableEq α
b : α
hb : b ∈ s
h₀ : ∀ b_1 ∈ s, b_1 ≠ b → f b_1 = 1
h₁ : b ∉ s → f b = 1
this : b ∉ s
⊢ False
state_after: no goals
Theorem: CategoryTheory.Limits.Concrete.isColimit_exists_rep
File: Mathlib/CategoryTheory/Limits/ConcreteCategory.lean

tactic: obtain ⟨a, rfl⟩ := Concrete.from_union_surjective_of_isColimit F hD x
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : ConcreteCategory C
J : Type w
inst✝¹ : Category.{r, w} J
F : J ⥤ C
inst✝ : PreservesColimit F (forget C)
D : Cocone F
hD : IsColimit D
x : (forget C).obj D.pt
⊢ ∃ j y, (D.ι.app j) y = x
state_after: case intro
C : Type u
inst✝³ : Category.{v, u} C
inst✝² : ConcreteCategory C
J : Type w
inst✝¹ : Category.{r, w} J
F : J ⥤ C
inst✝ : PreservesColimit F (forget C)
D : Cocone F
hD : IsColimit D
a : (j : J) × (forget C).obj (F.obj j)
⊢ ∃ j y, (D.ι.app j) y = (fun a => (D.ι.app a.fst) a.snd) a

tactic: exact ⟨a.1, a.2, rfl⟩
state_before: case intro
C : Type u
inst✝³ : Category.{v, u} C
inst✝² : ConcreteCategory C
J : Type w
inst✝¹ : Category.{r, w} J
F : J ⥤ C
inst✝ : PreservesColimit F (forget C)
D : Cocone F
hD : IsColimit D
a : (j : J) × (forget C).obj (F.obj j)
⊢ ∃ j y, (D.ι.app j) y = (fun a => (D.ι.app a.fst) a.snd) a
state_after: no goals
Theorem: List.length_permutations'Aux
File: Mathlib/Data/List/Perm.lean

tactic: induction' s with y s IH
state_before: α : Type u_1
β : Type u_2
l l₁ l₂ : List α
a : α
s : List α
x : α
⊢ (permutations'Aux x s).length = s.length + 1
state_after: case nil
α : Type u_1
β : Type u_2
l l₁ l₂ : List α
a x : α
⊢ (permutations'Aux x []).length = [].length + 1

case cons
α : Type u_1
β : Type u_2
l l₁ l₂ : List α
a x y : α
s : List α
IH : (permutations'Aux x s).length = s.length + 1
⊢ (permutations'Aux x (y :: s)).length = (y :: s).length + 1

tactic: simp
state_before: case nil
α : Type u_1
β : Type u_2
l l₁ l₂ : List α
a x : α
⊢ (permutations'Aux x []).length = [].length + 1
state_after: no goals

tactic: simpa using IH
state_before: case cons
α : Type u_1
β : Type u_2
l l₁ l₂ : List α
a x y : α
s : List α
IH : (permutations'Aux x s).length = s.length + 1
⊢ (permutations'Aux x (y :: s)).length = (y :: s).length + 1
state_after: no goals
Theorem: csInf_Ioi
File: Mathlib/Order/ConditionallyCompleteLattice/Basic.lean

tactic: simpa using exists_between hw
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝² : ConditionallyCompleteLattice α
s t : Set α
a b : α
inst✝¹ : NoMaxOrder α
inst✝ : DenselyOrdered α
w : α
hw : a < w
⊢ ∃ a_1 ∈ Ioi a, a_1 < w
state_after: no goals
Theorem: Nat.Partrec.Code.eval_part
File: Mathlib/Computability/PartrecCode.lean

tactic: simp [eval_eq_rfindOpt]
state_before: a : Code × ℕ
⊢ (rfindOpt fun b =>
      evaln (((a, b).2, (a, b).1.1), (a, b).1.2).1.1 (((a, b).2, (a, b).1.1), (a, b).1.2).1.2
        (((a, b).2, (a, b).1.1), (a, b).1.2).2) =
    a.1.eval a.2
state_after: no goals
Theorem: QuadraticForm.discr_comp
File: Mathlib/LinearAlgebra/QuadraticForm/Basic.lean

tactic: simp only [Matrix.det_transpose, mul_left_comm, QuadraticForm.toMatrix'_comp, mul_comm,
  Matrix.det_mul, discr]
state_before: S : Type u_1
T : Type u_2
R : Type u_3
M : Type u_4
N : Type u_5
n : Type w
inst✝⁵ : Fintype n
inst✝⁴ : CommRing R
inst✝³ : DecidableEq n
inst✝² : Invertible 2
m : Type w
inst✝¹ : DecidableEq m
inst✝ : Fintype m
Q : QuadraticForm R (n → R)
f : (n → R) →ₗ[R] n → R
⊢ (Q.comp f).discr = (LinearMap.toMatrix' f).det * (LinearMap.toMatrix' f).det * Q.discr
state_after: no goals
Theorem: ContinuousMap.Homotopy.eq_path_of_eq_image
File: Mathlib/AlgebraicTopology/FundamentalGroupoid/InducedMaps.lean

tactic: rw [Functor.conj_eqToHom_iff_heq
  ((πₘ f).map ⟦p⟧) ((πₘ g).map ⟦q⟧)
  (FundamentalGroupoid.ext _ _ <| start_path hfg)
  (FundamentalGroupoid.ext _ _ <| end_path hfg)]
state_before: X₁ X₂ Y : TopCat
f : C(↑X₁, ↑Y)
g : C(↑X₂, ↑Y)
x₀ x₁ : ↑X₁
x₂ x₃ : ↑X₂
p : Path x₀ x₁
q : Path x₂ x₃
hfg : ∀ (t : ↑I), f (p t) = g (q t)
⊢ (π.map f).map ⟦p⟧ = hcast ⋯ ≫ (π.map g).map ⟦q⟧ ≫ hcast ⋯
state_after: X₁ X₂ Y : TopCat
f : C(↑X₁, ↑Y)
g : C(↑X₂, ↑Y)
x₀ x₁ : ↑X₁
x₂ x₃ : ↑X₂
p : Path x₀ x₁
q : Path x₂ x₃
hfg : ∀ (t : ↑I), f (p t) = g (q t)
⊢ HEq ((π.map f).map ⟦p⟧) ((π.map g).map ⟦q⟧)

tactic: exact heq_path_of_eq_image hfg
state_before: X₁ X₂ Y : TopCat
f : C(↑X₁, ↑Y)
g : C(↑X₂, ↑Y)
x₀ x₁ : ↑X₁
x₂ x₃ : ↑X₂
p : Path x₀ x₁
q : Path x₂ x₃
hfg : ∀ (t : ↑I), f (p t) = g (q t)
⊢ HEq ((π.map f).map ⟦p⟧) ((π.map g).map ⟦q⟧)
state_after: no goals
Theorem: HolorIndex.drop_take
File: Mathlib/Data/Holor.lean

tactic: simp [assocRight, take, drop, cast_type, List.drop_take]
state_before: ds₁ ds₂ ds₃ is : List ℕ
h : Forall₂ (fun x x_1 => x < x_1) is (ds₁ ++ ds₂ ++ ds₃)
⊢ ↑(assocRight ⟨is, h⟩).drop.take = ↑(take ⟨is, h⟩).drop
state_after: no goals
Theorem: Doset.eq
File: Mathlib/GroupTheory/DoubleCoset.lean

tactic: rw [Quotient.eq'']
state_before: G : Type u_1
inst✝¹ : Group G
α : Type u_2
inst✝ : Mul α
J : Subgroup G
g : G
H K : Subgroup G
a b : G
⊢ mk H K a = mk H K b ↔ ∃ h ∈ H, ∃ k ∈ K, b = h * a * k
state_after: G : Type u_1
inst✝¹ : Group G
α : Type u_2
inst✝ : Mul α
J : Subgroup G
g : G
H K : Subgroup G
a b : G
⊢ Setoid.r a b ↔ ∃ h ∈ H, ∃ k ∈ K, b = h * a * k

tactic: apply rel_iff
state_before: G : Type u_1
inst✝¹ : Group G
α : Type u_2
inst✝ : Mul α
J : Subgroup G
g : G
H K : Subgroup G
a b : G
⊢ Setoid.r a b ↔ ∃ h ∈ H, ∃ k ∈ K, b = h * a * k
state_after: no goals
Theorem: MeasureTheory.StronglyMeasurable.measurableSet_eq_fun
File: Mathlib/MeasureTheory/Function/StronglyMeasurable/Basic.lean

tactic: borelize (E × E)
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f✝ g✝ : α → β
m : MeasurableSpace α
E : Type u_5
inst✝¹ : TopologicalSpace E
inst✝ : MetrizableSpace E
f g : α → E
hf : StronglyMeasurable f
hg : StronglyMeasurable g
⊢ MeasurableSet {x | f x = g x}
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f✝ g✝ : α → β
m : MeasurableSpace α
E : Type u_5
inst✝¹ : TopologicalSpace E
inst✝ : MetrizableSpace E
f g : α → E
hf : StronglyMeasurable f
hg : StronglyMeasurable g
this✝¹ : MeasurableSpace (E × E) := borel (E × E)
this✝ : BorelSpace (E × E)
⊢ MeasurableSet {x | f x = g x}

tactic: exact (hf.prod_mk hg).measurable isClosed_diagonal.measurableSet
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
inst✝² : Countable ι
f✝ g✝ : α → β
m : MeasurableSpace α
E : Type u_5
inst✝¹ : TopologicalSpace E
inst✝ : MetrizableSpace E
f g : α → E
hf : StronglyMeasurable f
hg : StronglyMeasurable g
this✝¹ : MeasurableSpace (E × E) := borel (E × E)
this✝ : BorelSpace (E × E)
⊢ MeasurableSet {x | f x = g x}
state_after: no goals
Theorem: Primrec₂.curry
File: Mathlib/Computability/Primrec.lean

tactic: rw [← uncurry, Function.uncurry_curry]
state_before: α : Type u_1
β : Type u_2
σ : Type u_3
inst✝² : Primcodable α
inst✝¹ : Primcodable β
inst✝ : Primcodable σ
f : α × β → σ
⊢ Primrec₂ (Function.curry f) ↔ Primrec f
state_after: no goals
Theorem: Filter.atTop_eq_generate_of_not_bddAbove
File: Mathlib/Order/Filter/AtTopBot.lean

tactic: refine atTop_eq_generate_of_forall_exists_le fun x ↦ ?_
state_before: ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝ : LinearOrder α
s : Set α
hs : ¬BddAbove s
⊢ atTop = generate (Ici '' s)
state_after: ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝ : LinearOrder α
s : Set α
hs : ¬BddAbove s
x : α
⊢ ∃ y ∈ s, x ≤ y

tactic: obtain ⟨y, hy, hy'⟩ := not_bddAbove_iff.mp hs x
state_before: ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝ : LinearOrder α
s : Set α
hs : ¬BddAbove s
x : α
⊢ ∃ y ∈ s, x ≤ y
state_after: case intro.intro
ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝ : LinearOrder α
s : Set α
hs : ¬BddAbove s
x y : α
hy : y ∈ s
hy' : x < y
⊢ ∃ y ∈ s, x ≤ y

tactic: exact ⟨y, hy, hy'.le⟩
state_before: case intro.intro
ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝ : LinearOrder α
s : Set α
hs : ¬BddAbove s
x y : α
hy : y ∈ s
hy' : x < y
⊢ ∃ y ∈ s, x ≤ y
state_after: no goals
Theorem: Batteries.RBNode.Stream.foldr_eq_foldr_toList
File: .lake/packages/batteries/Batteries/Data/RBMap/Lemmas.lean

tactic: induction s <;> simp [*, RBNode.foldr_eq_foldr_toList]
state_before: α : Type u_1
α✝ : Type u_2
f : α → α✝ → α✝
init : α✝
s : RBNode.Stream α
⊢ foldr f s init = List.foldr f init s.toList
state_after: no goals
Theorem: measurable_from_prod_countable
File: Mathlib/MeasureTheory/MeasurableSpace/Basic.lean

tactic: simp (config := {contextual := true})
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
δ' : Type u_5
ι : Sort uι
s t u : Set α
m : MeasurableSpace α
mβ : MeasurableSpace β
mγ : MeasurableSpace γ
inst✝¹ : Countable β
inst✝ : MeasurableSingletonClass β
x✝ : MeasurableSpace γ
f : α × β → γ
hf : ∀ (y : β), Measurable fun x => f (x, y)
⊢ ∀ (y y' : β) (x : α), y' ∈ measurableAtom y → f (x, y') = f (x, y)
state_after: no goals
Theorem: CauchyFilter.uniformInducing_pureCauchy
File: Mathlib/Topology/UniformSpace/Completion.lean

tactic: simp [preimage, gen, pureCauchy, prod_principal_principal]
state_before: α : Type u
inst✝² : UniformSpace α
β : Type v
γ : Type w
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
s : Set (α × α)
x✝ : α × α
a₁ a₂ : α
⊢ (a₁, a₂) ∈ ((preimage fun x => (pureCauchy x.1, pureCauchy x.2)) ∘ gen) s ↔ (a₁, a₂) ∈ id s
state_after: no goals

tactic: simp [this]
state_before: α : Type u
inst✝² : UniformSpace α
β : Type v
γ : Type w
inst✝¹ : UniformSpace β
inst✝ : UniformSpace γ
this : (preimage fun x => (pureCauchy x.1, pureCauchy x.2)) ∘ gen = id
⊢ (𝓤 α).lift' ((preimage fun x => (pureCauchy x.1, pureCauchy x.2)) ∘ gen) = 𝓤 α
state_after: no goals