1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: CategoryTheory.Adjunction.homEquiv_naturality_right
File: Mathlib/CategoryTheory/Adjunction/Basic.lean

tactic: rw [homEquiv_unit, G.map_comp, ← assoc, ← homEquiv_unit]
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
F : C ⥤ D
G : D ⥤ C
adj : F ⊣ G
X' X : C
Y Y' : D
f : F.obj X ⟶ Y
g : Y ⟶ Y'
⊢ (adj.homEquiv X Y') (f ≫ g) = (adj.homEquiv X Y) f ≫ G.map g
state_after: no goals
Theorem: CategoryTheory.ShortComplex.LeftHomologyData.cyclesIso_inv_comp_iCycles
File: Mathlib/Algebra/Homology/ShortComplex/LeftHomology.lean

tactic: simp only [← h.cyclesIso_hom_comp_i, Iso.inv_hom_id_assoc]
state_before: C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
h : S.LeftHomologyData
inst✝ : S.HasLeftHomology
⊢ h.cyclesIso.inv ≫ S.iCycles = h.i
state_after: no goals
Theorem: csInf_div
File: Mathlib/Algebra/Order/Pointwise.lean

tactic: rw [div_eq_mul_inv, csInf_mul hs₀ hs₁ ht₀.inv ht₁.inv, csInf_inv ht₀ ht₁, div_eq_mul_inv]
state_before: α : Type u_1
inst✝³ : ConditionallyCompleteLattice α
inst✝² : Group α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
s t : Set α
hs₀ : s.Nonempty
hs₁ : BddBelow s
ht₀ : t.Nonempty
ht₁ : BddAbove t
⊢ sInf (s / t) = sInf s / sSup t
state_after: no goals
Theorem: DFinsupp.mapRange.linearMap_comp
File: Mathlib/LinearAlgebra/DFinsupp.lean

tactic: simp
state_before: ι : Type u_1
R : Type u_2
S : Type u_3
M : ι → Type u_4
N : Type u_5
inst✝¹⁰ : Semiring R
inst✝⁹ : (i : ι) → AddCommMonoid (M i)
inst✝⁸ : (i : ι) → Module R (M i)
inst✝⁷ : AddCommMonoid N
inst✝⁶ : Module R N
β : ι → Type u_6
β₁ : ι → Type u_7
β₂ : ι → Type u_8
inst✝⁵ : (i : ι) → AddCommMonoid (β i)
inst✝⁴ : (i : ι) → AddCommMonoid (β₁ i)
inst✝³ : (i : ι) → AddCommMonoid (β₂ i)
inst✝² : (i : ι) → Module R (β i)
inst✝¹ : (i : ι) → Module R (β₁ i)
inst✝ : (i : ι) → Module R (β₂ i)
f : (i : ι) → β₁ i →ₗ[R] β₂ i
f₂ : (i : ι) → β i →ₗ[R] β₁ i
⊢ ∀ (i : ι), ((fun i x => (f i) x) i ∘ (fun i x => (f₂ i) x) i) 0 = 0
state_after: no goals
Theorem: Equiv.prodCongrRight_trans_prodComm
File: Mathlib/Logic/Equiv/Basic.lean

tactic: ext ⟨a, b⟩ : 1
state_before: α₁ : Type u_3
β₁ : Type u_2
β₂ : Type u_1
e : α₁ → β₁ ≃ β₂
⊢ (prodCongrRight e).trans (prodComm α₁ β₂) = (prodComm α₁ β₁).trans (prodCongrLeft e)
state_after: case H.mk
α₁ : Type u_3
β₁ : Type u_2
β₂ : Type u_1
e : α₁ → β₁ ≃ β₂
a : α₁
b : β₁
⊢ ((prodCongrRight e).trans (prodComm α₁ β₂)) (a, b) = ((prodComm α₁ β₁).trans (prodCongrLeft e)) (a, b)

tactic: simp
state_before: case H.mk
α₁ : Type u_3
β₁ : Type u_2
β₂ : Type u_1
e : α₁ → β₁ ≃ β₂
a : α₁
b : β₁
⊢ ((prodCongrRight e).trans (prodComm α₁ β₂)) (a, b) = ((prodComm α₁ β₁).trans (prodCongrLeft e)) (a, b)
state_after: no goals
Theorem: CategoryTheory.Limits.isIso_π_of_isTerminal
File: Mathlib/CategoryTheory/Limits/Shapes/Terminal.lean

tactic: ext
state_before: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
J : Type u
inst✝² : Category.{v, u} J
j : J
I : IsTerminal j
F : J ⥤ C
inst✝¹ : HasLimit F
inst✝ : ∀ (i j : J) (f : i ⟶ j), IsIso (F.map f)
⊢ limit.π F j ≫ limit.lift F (coneOfDiagramTerminal I F) = 𝟙 (limit F)
state_after: case w
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
J : Type u
inst✝² : Category.{v, u} J
j : J
I : IsTerminal j
F : J ⥤ C
inst✝¹ : HasLimit F
inst✝ : ∀ (i j : J) (f : i ⟶ j), IsIso (F.map f)
j✝ : J
⊢ (limit.π F j ≫ limit.lift F (coneOfDiagramTerminal I F)) ≫ limit.π F j✝ = 𝟙 (limit F) ≫ limit.π F j✝

tactic: simp
state_before: case w
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
J : Type u
inst✝² : Category.{v, u} J
j : J
I : IsTerminal j
F : J ⥤ C
inst✝¹ : HasLimit F
inst✝ : ∀ (i j : J) (f : i ⟶ j), IsIso (F.map f)
j✝ : J
⊢ (limit.π F j ≫ limit.lift F (coneOfDiagramTerminal I F)) ≫ limit.π F j✝ = 𝟙 (limit F) ≫ limit.π F j✝
state_after: no goals

tactic: simp
state_before: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
J : Type u
inst✝² : Category.{v, u} J
j : J
I : IsTerminal j
F : J ⥤ C
inst✝¹ : HasLimit F
inst✝ : ∀ (i j : J) (f : i ⟶ j), IsIso (F.map f)
⊢ limit.lift F (coneOfDiagramTerminal I F) ≫ limit.π F j = 𝟙 (F.obj j)
state_after: no goals
Theorem: schnirelmannDensity_setOf_prime
File: Mathlib/Combinatorics/Schnirelmann.lean

tactic: simp [Nat.not_prime_one]
state_before: ⊢ 1 ∉ setOf Nat.Prime
state_after: no goals
Theorem: CategoryTheory.NatTrans.leftDerived_comp
File: Mathlib/CategoryTheory/Abelian/LeftDerived.lean

tactic: simp [NatTrans.leftDerived]
state_before: C : Type u
inst✝⁷ : Category.{v, u} C
D : Type u_1
inst✝⁶ : Category.{u_2, u_1} D
inst✝⁵ : Abelian C
inst✝⁴ : HasProjectiveResolutions C
inst✝³ : Abelian D
F G H : C ⥤ D
inst✝² : F.Additive
inst✝¹ : G.Additive
inst✝ : H.Additive
α : F ⟶ G
β : G ⟶ H
n : ℕ
⊢ leftDerived (α ≫ β) n = leftDerived α n ≫ leftDerived β n
state_after: no goals
Theorem: Filter.mem_liminf_iff_eventually_mem
File: Mathlib/Order/LiminfLimsup.lean

tactic: simpa only [liminf_eq_iSup_iInf, iSup_eq_iUnion, iInf_eq_iInter, mem_iUnion, mem_iInter]
  using ⟨fun ⟨S, hS, hS'⟩ ↦ mem_of_superset hS (by tauto), fun h ↦ ⟨{i | a ∈ s i}, h, by tauto⟩⟩
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
p : ι → Prop
s : ι → Set α
𝓕 : Filter ι
a : α
⊢ a ∈ liminf s 𝓕 ↔ ∀ᶠ (i : ι) in 𝓕, a ∈ s i
state_after: no goals

tactic: tauto
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
p : ι → Prop
s : ι → Set α
𝓕 : Filter ι
a : α
x✝ : ∃ i, ∃ (_ : i ∈ 𝓕), ∀ i_1 ∈ i, a ∈ s i_1
S : Set ι
hS : S ∈ 𝓕
hS' : ∀ i ∈ S, a ∈ s i
⊢ S ⊆ {x | (fun i => a ∈ s i) x}
state_after: no goals

tactic: tauto
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
p : ι → Prop
s : ι → Set α
𝓕 : Filter ι
a : α
h : ∀ᶠ (i : ι) in 𝓕, a ∈ s i
⊢ ∀ i ∈ {i | a ∈ s i}, a ∈ s i
state_after: no goals
Theorem: Finset.coe_univ
File: Mathlib/Data/Fintype/Basic.lean

tactic: ext
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : Fintype α
s t : Finset α
⊢ ↑univ = Set.univ
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : Fintype α
s t : Finset α
x✝ : α
⊢ x✝ ∈ ↑univ ↔ x✝ ∈ Set.univ

tactic: simp
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : Fintype α
s t : Finset α
x✝ : α
⊢ x✝ ∈ ↑univ ↔ x✝ ∈ Set.univ
state_after: no goals
Theorem: CategoryTheory.Presheaf.isLocallyInjective_of_isLocallyInjective_of_isLocallySurjective_fac
File: Mathlib/CategoryTheory/Sites/LocallySurjective.lean

tactic: subst fac
state_before: C : Type u
inst✝⁴ : Category.{v, u} C
J : GrothendieckTopology C
A : Type u'
inst✝³ : Category.{v', u'} A
inst✝² : ConcreteCategory A
F₁ F₂ F₃ : Cᵒᵖ ⥤ A
f₁ : F₁ ⟶ F₂
f₂ : F₂ ⟶ F₃
f₃ : F₁ ⟶ F₃
fac : f₁ ≫ f₂ = f₃
inst✝¹ : IsLocallyInjective J f₃
inst✝ : IsLocallySurjective J f₁
⊢ IsLocallyInjective J f₂
state_after: C : Type u
inst✝⁴ : Category.{v, u} C
J : GrothendieckTopology C
A : Type u'
inst✝³ : Category.{v', u'} A
inst✝² : ConcreteCategory A
F₁ F₂ F₃ : Cᵒᵖ ⥤ A
f₁ : F₁ ⟶ F₂
f₂ : F₂ ⟶ F₃
inst✝¹ : IsLocallySurjective J f₁
inst✝ : IsLocallyInjective J (f₁ ≫ f₂)
⊢ IsLocallyInjective J f₂

tactic: exact isLocallyInjective_of_isLocallyInjective_of_isLocallySurjective J f₁ f₂
state_before: C : Type u
inst✝⁴ : Category.{v, u} C
J : GrothendieckTopology C
A : Type u'
inst✝³ : Category.{v', u'} A
inst✝² : ConcreteCategory A
F₁ F₂ F₃ : Cᵒᵖ ⥤ A
f₁ : F₁ ⟶ F₂
f₂ : F₂ ⟶ F₃
inst✝¹ : IsLocallySurjective J f₁
inst✝ : IsLocallyInjective J (f₁ ≫ f₂)
⊢ IsLocallyInjective J f₂
state_after: no goals
Theorem: AffineBasis.coord_apply_centroid
File: Mathlib/LinearAlgebra/AffineSpace/Basis.lean

tactic: rw [Finset.centroid,
  b.coord_apply_combination_of_mem hi (s.sum_centroidWeights_eq_one_of_nonempty _ ⟨i, hi⟩),
  Finset.centroidWeights, Function.const_apply]
state_before: ι : Type u_1
ι' : Type u_2
k : Type u_3
V : Type u_4
P : Type u_5
inst✝⁴ : AddCommGroup V
inst✝³ : AffineSpace V P
inst✝² : DivisionRing k
inst✝¹ : Module k V
inst✝ : CharZero k
b : AffineBasis ι k P
s : Finset ι
i : ι
hi : i ∈ s
⊢ (b.coord i) (Finset.centroid k s ⇑b) = (↑s.card)⁻¹
state_after: no goals
Theorem: CategoryTheory.Limits.pullback.diagonal_comp
File: Mathlib/CategoryTheory/Limits/Shapes/Diagonal.lean

tactic: ext <;> simp
state_before: C : Type u_1
inst✝⁸ : Category.{u_2, u_1} C
X Y Z : C
inst✝⁷ : HasPullbacks C
S T : C
f✝ : X ⟶ T
g✝ : Y ⟶ T
i : T ⟶ S
inst✝⁶ : HasPullback i i
inst✝⁵ : HasPullback f✝ g✝
inst✝⁴ : HasPullback (f✝ ≫ i) (g✝ ≫ i)
inst✝³ : HasPullback (diagonal i) (map (f✝ ≫ i) (g✝ ≫ i) i i f✝ g✝ (𝟙 S) ⋯ ⋯)
f : X ⟶ Y
g : Y ⟶ Z
inst✝² : HasPullback f f
inst✝¹ : HasPullback g g
inst✝ : HasPullback (f ≫ g) (f ≫ g)
⊢ diagonal (f ≫ g) = diagonal f ≫ (pullbackDiagonalMapIdIso f f g).inv ≫ snd
state_after: no goals
Theorem: HomologicalComplex.extend.d_eq
File: Mathlib/Algebra/Homology/Embedding/Extend.lean

tactic: subst hi hj
state_before: ι : Type u_1
ι' : Type u_2
c : ComplexShape ι
c' : ComplexShape ι'
C : Type u_3
inst✝² : Category.{u_4, u_3} C
inst✝¹ : HasZeroObject C
inst✝ : HasZeroMorphisms C
K : HomologicalComplex C c
e : c.Embedding c'
i j : Option ι
a b : ι
hi : i = some a
hj : j = some b
⊢ d K i j = (XIso K hi).hom ≫ K.d a b ≫ (XIso K hj).inv
state_after: ι : Type u_1
ι' : Type u_2
c : ComplexShape ι
c' : ComplexShape ι'
C : Type u_3
inst✝² : Category.{u_4, u_3} C
inst✝¹ : HasZeroObject C
inst✝ : HasZeroMorphisms C
K : HomologicalComplex C c
e : c.Embedding c'
a b : ι
⊢ d K (some a) (some b) = (XIso K ⋯).hom ≫ K.d a b ≫ (XIso K ⋯).inv

tactic: dsimp [XIso, d]
state_before: ι : Type u_1
ι' : Type u_2
c : ComplexShape ι
c' : ComplexShape ι'
C : Type u_3
inst✝² : Category.{u_4, u_3} C
inst✝¹ : HasZeroObject C
inst✝ : HasZeroMorphisms C
K : HomologicalComplex C c
e : c.Embedding c'
a b : ι
⊢ d K (some a) (some b) = (XIso K ⋯).hom ≫ K.d a b ≫ (XIso K ⋯).inv
state_after: ι : Type u_1
ι' : Type u_2
c : ComplexShape ι
c' : ComplexShape ι'
C : Type u_3
inst✝² : Category.{u_4, u_3} C
inst✝¹ : HasZeroObject C
inst✝ : HasZeroMorphisms C
K : HomologicalComplex C c
e : c.Embedding c'
a b : ι
⊢ K.d a b = 𝟙 (X K (some a)) ≫ K.d a b ≫ 𝟙 (X K (some b))

tactic: erw [id_comp, comp_id]
state_before: ι : Type u_1
ι' : Type u_2
c : ComplexShape ι
c' : ComplexShape ι'
C : Type u_3
inst✝² : Category.{u_4, u_3} C
inst✝¹ : HasZeroObject C
inst✝ : HasZeroMorphisms C
K : HomologicalComplex C c
e : c.Embedding c'
a b : ι
⊢ K.d a b = 𝟙 (X K (some a)) ≫ K.d a b ≫ 𝟙 (X K (some b))
state_after: no goals
Theorem: TypeVec.dropFun_diag
File: Mathlib/Data/TypeVec.lean

tactic: ext i : 2
state_before: n : ℕ
α : TypeVec.{u_1} (n + 1)
⊢ dropFun prod.diag = prod.diag
state_after: case a.h
n : ℕ
α : TypeVec.{u_1} (n + 1)
i : Fin2 n
x✝ : α.drop i
⊢ dropFun prod.diag i x✝ = prod.diag i x✝

tactic: induction i <;> simp [dropFun, *] <;> rfl
state_before: case a.h
n : ℕ
α : TypeVec.{u_1} (n + 1)
i : Fin2 n
x✝ : α.drop i
⊢ dropFun prod.diag i x✝ = prod.diag i x✝
state_after: no goals
Theorem: CategoryTheory.Limits.spanExt_inv_app_right
File: Mathlib/CategoryTheory/Limits/Shapes/Pullbacks.lean

tactic: dsimp [spanExt]
state_before: C : Type u
inst✝¹ : Category.{v, u} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
X Y Z X' Y' Z' : C
iX : X ≅ X'
iY : Y ≅ Y'
iZ : Z ≅ Z'
f : X ⟶ Y
g : X ⟶ Z
f' : X' ⟶ Y'
g' : X' ⟶ Z'
wf : iX.hom ≫ f' = f ≫ iY.hom
wg : iX.hom ≫ g' = g ≫ iZ.hom
⊢ (spanExt iX iY iZ wf wg).inv.app WalkingSpan.right = iZ.inv
state_after: no goals
Theorem: Filter.limsup_piecewise
File: Mathlib/Order/LiminfLimsup.lean

tactic: refine congr_arg₂ _ (blimsup_congr ?_) (blimsup_congr ?_) <;>
  filter_upwards with _ h using by simp [h]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
inst✝¹ : CompleteDistribLattice α
f : Filter β
p q : β → Prop
u : β → α
s : Set β
inst✝ : DecidablePred fun x => x ∈ s
v : β → α
⊢ ((blimsup (s.piecewise u v) f fun x => x ∈ s) ⊔ blimsup (s.piecewise u v) f fun x => x ∉ s) =
    (blimsup u f fun x => x ∈ s) ⊔ blimsup v f fun x => x ∉ s
state_after: no goals

tactic: simp [h]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
ι' : Type u_5
inst✝¹ : CompleteDistribLattice α
f : Filter β
p q : β → Prop
u : β → α
s : Set β
inst✝ : DecidablePred fun x => x ∈ s
v : β → α
a✝ : β
h : a✝ ∉ s
⊢ s.piecewise u v a✝ = v a✝
state_after: no goals
Theorem: frontier_Icc
File: Mathlib/Topology/Order/DenselyOrdered.lean

tactic: simp [frontier, h, Icc_diff_Ioo_same]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝⁵ : TopologicalSpace α
inst✝⁴ : LinearOrder α
inst✝³ : OrderTopology α
inst✝² : DenselyOrdered α
a✝ b✝ : α
s : Set α
inst✝¹ : NoMinOrder α
inst✝ : NoMaxOrder α
a b : α
h : a ≤ b
⊢ frontier (Icc a b) = {a, b}
state_after: no goals
Theorem: Polynomial.mem_iff_annIdealGenerator_dvd
File: Mathlib/LinearAlgebra/AnnihilatingPolynomial.lean

tactic: rw [← Ideal.mem_span_singleton, span_singleton_annIdealGenerator]
state_before: 𝕜 : Type u_1
A : Type u_2
inst✝² : Field 𝕜
inst✝¹ : Ring A
inst✝ : Algebra 𝕜 A
p : 𝕜[X]
a : A
⊢ p ∈ annIdeal 𝕜 a ↔ annIdealGenerator 𝕜 a ∣ p
state_after: no goals
Theorem: Real.mk_one
File: Mathlib/Data/Real/Basic.lean

tactic: rw [← ofCauchy_one]
state_before: x y : ℝ
⊢ mk 1 = 1
state_after: x y : ℝ
⊢ mk 1 = { cauchy := 1 }

tactic: rfl
state_before: x y : ℝ
⊢ mk 1 = { cauchy := 1 }
state_after: no goals
Theorem: Set.Iic_union_Icc'
File: Mathlib/Order/Interval/Set/Basic.lean

tactic: ext1 x
state_before: α : Type u_1
β : Type u_2
inst✝ : LinearOrder α
a a₁ a₂ b b₁ b₂ c d : α
h₁ : c ≤ b
⊢ Iic b ∪ Icc c d = Iic (max b d)
state_after: case h
α : Type u_1
β : Type u_2
inst✝ : LinearOrder α
a a₁ a₂ b b₁ b₂ c d : α
h₁ : c ≤ b
x : α
⊢ x ∈ Iic b ∪ Icc c d ↔ x ∈ Iic (max b d)

tactic: simp_rw [mem_union, mem_Iic, mem_Icc, le_max_iff]
state_before: case h
α : Type u_1
β : Type u_2
inst✝ : LinearOrder α
a a₁ a₂ b b₁ b₂ c d : α
h₁ : c ≤ b
x : α
⊢ x ∈ Iic b ∪ Icc c d ↔ x ∈ Iic (max b d)
state_after: case h
α : Type u_1
β : Type u_2
inst✝ : LinearOrder α
a a₁ a₂ b b₁ b₂ c d : α
h₁ : c ≤ b
x : α
⊢ x ≤ b ∨ c ≤ x ∧ x ≤ d ↔ x ≤ b ∨ x ≤ d

tactic: by_cases hc : c ≤ x
state_before: case h
α : Type u_1
β : Type u_2
inst✝ : LinearOrder α
a a₁ a₂ b b₁ b₂ c d : α
h₁ : c ≤ b
x : α
⊢ x ≤ b ∨ c ≤ x ∧ x ≤ d ↔ x ≤ b ∨ x ≤ d
state_after: case pos
α : Type u_1
β : Type u_2
inst✝ : LinearOrder α
a a₁ a₂ b b₁ b₂ c d : α
h₁ : c ≤ b
x : α
hc : c ≤ x
⊢ x ≤ b ∨ c ≤ x ∧ x ≤ d ↔ x ≤ b ∨ x ≤ d

case neg
α : Type u_1
β : Type u_2
inst✝ : LinearOrder α
a a₁ a₂ b b₁ b₂ c d : α
h₁ : c ≤ b
x : α
hc : ¬c ≤ x
⊢ x ≤ b ∨ c ≤ x ∧ x ≤ d ↔ x ≤ b ∨ x ≤ d

tactic: simp only [hc, true_and]
state_before: case pos
α : Type u_1
β : Type u_2
inst✝ : LinearOrder α
a a₁ a₂ b b₁ b₂ c d : α
h₁ : c ≤ b
x : α
hc : c ≤ x
⊢ x ≤ b ∨ c ≤ x ∧ x ≤ d ↔ x ≤ b ∨ x ≤ d
state_after: no goals

tactic: have hxb : x ≤ b := (le_of_not_ge hc).trans h₁
state_before: case neg
α : Type u_1
β : Type u_2
inst✝ : LinearOrder α
a a₁ a₂ b b₁ b₂ c d : α
h₁ : c ≤ b
x : α
hc : ¬c ≤ x
⊢ x ≤ b ∨ c ≤ x ∧ x ≤ d ↔ x ≤ b ∨ x ≤ d
state_after: case neg
α : Type u_1
β : Type u_2
inst✝ : LinearOrder α
a a₁ a₂ b b₁ b₂ c d : α
h₁ : c ≤ b
x : α
hc : ¬c ≤ x
hxb : x ≤ b
⊢ x ≤ b ∨ c ≤ x ∧ x ≤ d ↔ x ≤ b ∨ x ≤ d

tactic: simp only [hxb, true_or]
state_before: case neg
α : Type u_1
β : Type u_2
inst✝ : LinearOrder α
a a₁ a₂ b b₁ b₂ c d : α
h₁ : c ≤ b
x : α
hc : ¬c ≤ x
hxb : x ≤ b
⊢ x ≤ b ∨ c ≤ x ∧ x ≤ d ↔ x ≤ b ∨ x ≤ d
state_after: no goals
Theorem: MeasureTheory.Measure.finiteAtBot
File: Mathlib/MeasureTheory/Measure/Typeclasses.lean

tactic: simp only [measure_empty, zero_lt_top]
state_before: α : Type u_1
β : Type u_2
δ : Type u_3
ι : Type u_4
m0✝ : MeasurableSpace α
inst✝ : MeasurableSpace β
μ✝ ν ν₁ ν₂ : Measure α
s t : Set α
m0 : MeasurableSpace α
μ : Measure α
⊢ μ ∅ < ⊤
state_after: no goals
Theorem: EReal.top_add_iff_ne_bot
File: Mathlib/Data/Real/EReal.lean

tactic: constructor <;> intro h
state_before: x : EReal
⊢ ⊤ + x = ⊤ ↔ x ≠ ⊥
state_after: case mp
x : EReal
h : ⊤ + x = ⊤
⊢ x ≠ ⊥

case mpr
x : EReal
h : x ≠ ⊥
⊢ ⊤ + x = ⊤

tactic: rintro rfl
state_before: case mp
x : EReal
h : ⊤ + x = ⊤
⊢ x ≠ ⊥
state_after: case mp
h : ⊤ + ⊥ = ⊤
⊢ False

tactic: rw [add_bot] at h
state_before: case mp
h : ⊤ + ⊥ = ⊤
⊢ False
state_after: case mp
h : ⊥ = ⊤
⊢ False

tactic: exact bot_ne_top h
state_before: case mp
h : ⊥ = ⊤
⊢ False
state_after: no goals

tactic: cases x with
| h_bot => contradiction
| h_top => rfl
| h_real r => exact top_add_of_ne_bot h
state_before: case mpr
x : EReal
h : x ≠ ⊥
⊢ ⊤ + x = ⊤
state_after: no goals

tactic: contradiction
state_before: case mpr.h_bot
h : ⊥ ≠ ⊥
⊢ ⊤ + ⊥ = ⊤
state_after: no goals

tactic: rfl
state_before: case mpr.h_top
h : ⊤ ≠ ⊥
⊢ ⊤ + ⊤ = ⊤
state_after: no goals

tactic: exact top_add_of_ne_bot h
state_before: case mpr.h_real
r : ℝ
h : ↑r ≠ ⊥
⊢ ⊤ + ↑r = ⊤
state_after: no goals
Theorem: inseparable_iff_forall_closed
File: Mathlib/Topology/Inseparable.lean

tactic: simp only [inseparable_iff_specializes_and, specializes_iff_forall_closed, ← forall_and, ←
  iff_def]
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
α : Type u_4
ι : Type u_5
π : ι → Type u_6
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : (i : ι) → TopologicalSpace (π i)
x y z : X
s : Set X
f g : X → Y
⊢ (x ~ᵢ y) ↔ ∀ (s : Set X), IsClosed s → (x ∈ s ↔ y ∈ s)
state_after: no goals
Theorem: algebraMap_isometry
File: Mathlib/Analysis/NormedSpace/Basic.lean

tactic: refine Isometry.of_dist_eq fun x y => ?_
state_before: 𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
F : Type u_4
α : Type u_5
inst✝³ : NormedField 𝕜
inst✝² : SeminormedRing 𝕜'
inst✝¹ : NormedAlgebra 𝕜 𝕜'
inst✝ : NormOneClass 𝕜'
⊢ Isometry ⇑(algebraMap 𝕜 𝕜')
state_after: 𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
F : Type u_4
α : Type u_5
inst✝³ : NormedField 𝕜
inst✝² : SeminormedRing 𝕜'
inst✝¹ : NormedAlgebra 𝕜 𝕜'
inst✝ : NormOneClass 𝕜'
x y : 𝕜
⊢ dist ((algebraMap 𝕜 𝕜') x) ((algebraMap 𝕜 𝕜') y) = dist x y

tactic: rw [dist_eq_norm, dist_eq_norm, ← RingHom.map_sub, norm_algebraMap']
state_before: 𝕜 : Type u_1
𝕜' : Type u_2
E : Type u_3
F : Type u_4
α : Type u_5
inst✝³ : NormedField 𝕜
inst✝² : SeminormedRing 𝕜'
inst✝¹ : NormedAlgebra 𝕜 𝕜'
inst✝ : NormOneClass 𝕜'
x y : 𝕜
⊢ dist ((algebraMap 𝕜 𝕜') x) ((algebraMap 𝕜 𝕜') y) = dist x y
state_after: no goals
Theorem: LinearMap.mulRight_eq_zero_iff
File: Mathlib/Algebra/Algebra/Bilinear.lean

tactic: constructor <;> intro h
state_before: R : Type u_1
A : Type u_2
B : Type u_3
inst✝⁴ : CommSemiring R
inst✝³ : Semiring A
inst✝² : Semiring B
inst✝¹ : Algebra R A
inst✝ : Algebra R B
a : A
⊢ mulRight R a = 0 ↔ a = 0
state_after: case mp
R : Type u_1
A : Type u_2
B : Type u_3
inst✝⁴ : CommSemiring R
inst✝³ : Semiring A
inst✝² : Semiring B
inst✝¹ : Algebra R A
inst✝ : Algebra R B
a : A
h : mulRight R a = 0
⊢ a = 0

case mpr
R : Type u_1
A : Type u_2
B : Type u_3
inst✝⁴ : CommSemiring R
inst✝³ : Semiring A
inst✝² : Semiring B
inst✝¹ : Algebra R A
inst✝ : Algebra R B
a : A
h : a = 0
⊢ mulRight R a = 0

tactic: rw [← one_mul a, ← @mulRight_apply R _ _ _ _ _ _ a 1, h, LinearMap.zero_apply]
state_before: case mp
R : Type u_1
A : Type u_2
B : Type u_3
inst✝⁴ : CommSemiring R
inst✝³ : Semiring A
inst✝² : Semiring B
inst✝¹ : Algebra R A
inst✝ : Algebra R B
a : A
h : mulRight R a = 0
⊢ a = 0
state_after: no goals

tactic: rw [h]
state_before: case mpr
R : Type u_1
A : Type u_2
B : Type u_3
inst✝⁴ : CommSemiring R
inst✝³ : Semiring A
inst✝² : Semiring B
inst✝¹ : Algebra R A
inst✝ : Algebra R B
a : A
h : a = 0
⊢ mulRight R a = 0
state_after: case mpr
R : Type u_1
A : Type u_2
B : Type u_3
inst✝⁴ : CommSemiring R
inst✝³ : Semiring A
inst✝² : Semiring B
inst✝¹ : Algebra R A
inst✝ : Algebra R B
a : A
h : a = 0
⊢ mulRight R 0 = 0

tactic: exact mulRight_zero_eq_zero
state_before: case mpr
R : Type u_1
A : Type u_2
B : Type u_3
inst✝⁴ : CommSemiring R
inst✝³ : Semiring A
inst✝² : Semiring B
inst✝¹ : Algebra R A
inst✝ : Algebra R B
a : A
h : a = 0
⊢ mulRight R 0 = 0
state_after: no goals
Theorem: Polynomial.card_support_trinomial
File: Mathlib/Algebra/Polynomial/Coeff.lean

tactic: rw [support_trinomial hkm hmn hx hy hz,
  card_insert_of_not_mem
    (mt mem_insert.mp (not_or_of_not hkm.ne (mt mem_singleton.mp (hkm.trans hmn).ne))),
  card_insert_of_not_mem (mt mem_singleton.mp hmn.ne), card_singleton]
state_before: R : Type u
S : Type v
a b : R
n✝ m✝ : ℕ
inst✝ : Semiring R
p q r : R[X]
k m n : ℕ
hkm : k < m
hmn : m < n
x y z : R
hx : x ≠ 0
hy : y ≠ 0
hz : z ≠ 0
⊢ (C x * X ^ k + C y * X ^ m + C z * X ^ n).support.card = 3
state_after: no goals
Theorem: inner_smul_real_right
File: Mathlib/Analysis/InnerProductSpace/Basic.lean

tactic: rw [inner_smul_right, Algebra.smul_def]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : _root_.RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
x y : E
r : ℝ
⊢ ⟪x, ↑r • y⟫_𝕜 = r • ⟪x, y⟫_𝕜
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : _root_.RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
x y : E
r : ℝ
⊢ ↑r * ⟪x, y⟫_𝕜 = (algebraMap ℝ 𝕜) r * ⟪x, y⟫_𝕜

tactic: rfl
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : _root_.RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
x y : E
r : ℝ
⊢ ↑r * ⟪x, y⟫_𝕜 = (algebraMap ℝ 𝕜) r * ⟪x, y⟫_𝕜
state_after: no goals
Theorem: List.le_count_iff_replicate_sublist
File: .lake/packages/batteries/Batteries/Data/List/Count.lean

tactic: refine ⟨fun h => ?_, fun h => ?_⟩
state_before: α : Type u_1
inst✝ : DecidableEq α
n : Nat
a : α
l : List α
⊢ n ≤ count a l ↔ replicate n a <+ l
state_after: case refine_1
α : Type u_1
inst✝ : DecidableEq α
n : Nat
a : α
l : List α
h : n ≤ count a l
⊢ replicate n a <+ l

case refine_2
α : Type u_1
inst✝ : DecidableEq α
n : Nat
a : α
l : List α
h : replicate n a <+ l
⊢ n ≤ count a l

tactic: exact ((replicate_sublist_replicate a).2 h).trans <| filter_eq l a ▸ filter_sublist _
state_before: case refine_1
α : Type u_1
inst✝ : DecidableEq α
n : Nat
a : α
l : List α
h : n ≤ count a l
⊢ replicate n a <+ l
state_after: no goals

tactic: simpa only [count_replicate_self] using h.count_le a
state_before: case refine_2
α : Type u_1
inst✝ : DecidableEq α
n : Nat
a : α
l : List α
h : replicate n a <+ l
⊢ n ≤ count a l
state_after: no goals
Theorem: ExteriorAlgebra.GradedAlgebra.ι_sq_zero
File: Mathlib/LinearAlgebra/ExteriorAlgebra/Grading.lean

tactic: rw [GradedAlgebra.ι_apply, DirectSum.of_mul_of]
state_before: R : Type u_1
M : Type u_2
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
m : M
⊢ (GradedAlgebra.ι R M) m * (GradedAlgebra.ι R M) m = 0
state_after: R : Type u_1
M : Type u_2
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
m : M
⊢ (DirectSum.of (fun i => ↥(⋀[R]^i M)) (1 + 1)) (GradedMonoid.GMul.mul ⟨(ι R) m, ⋯⟩ ⟨(ι R) m, ⋯⟩) = 0

tactic: exact DFinsupp.single_eq_zero.mpr (Subtype.ext <| ExteriorAlgebra.ι_sq_zero _)
state_before: R : Type u_1
M : Type u_2
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
m : M
⊢ (DirectSum.of (fun i => ↥(⋀[R]^i M)) (1 + 1)) (GradedMonoid.GMul.mul ⟨(ι R) m, ⋯⟩ ⟨(ι R) m, ⋯⟩) = 0
state_after: no goals