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

tactic: apply IsIso.inv_eq_of_hom_inv_id
state_before: B : Type u
inst✝¹ : Bicategory B
a b c d e : B
f : a ⟶ b
g h : b ⟶ c
η : g ⟶ h
inst✝ : IsIso η
⊢ inv (f ◁ η) = f ◁ inv η
state_after: case hom_inv_id
B : Type u
inst✝¹ : Bicategory B
a b c d e : B
f : a ⟶ b
g h : b ⟶ c
η : g ⟶ h
inst✝ : IsIso η
⊢ f ◁ η ≫ f ◁ inv η = 𝟙 (f ≫ g)

tactic: simp only [← whiskerLeft_comp, whiskerLeft_id, IsIso.hom_inv_id]
state_before: case hom_inv_id
B : Type u
inst✝¹ : Bicategory B
a b c d e : B
f : a ⟶ b
g h : b ⟶ c
η : g ⟶ h
inst✝ : IsIso η
⊢ f ◁ η ≫ f ◁ inv η = 𝟙 (f ≫ g)
state_after: no goals
Theorem: Multiset.Nodup.sigma
File: Mathlib/Data/Multiset/Bind.lean

tactic: choose f hf using fun a => Quotient.exists_rep (t a)
state_before: α : Type u_1
β : Type v
γ : Type u_2
δ : Type u_3
σ✝ : α → Type u_4
a : α
s : Multiset α
t✝ : (a : α) → Multiset (σ✝ a)
σ : α → Type u_5
t : (a : α) → Multiset (σ a)
l₁ : List α
⊢ Nodup (Quot.mk Setoid.r l₁) → (∀ (a : α), (t a).Nodup) → (Multiset.sigma (Quot.mk Setoid.r l₁) t).Nodup
state_after: α : Type u_1
β : Type v
γ : Type u_2
δ : Type u_3
σ✝ : α → Type u_4
a : α
s : Multiset α
t✝ : (a : α) → Multiset (σ✝ a)
σ : α → Type u_5
t : (a : α) → Multiset (σ a)
l₁ : List α
f : (a : α) → List (σ a)
hf : ∀ (a : α), ⟦f a⟧ = t a
⊢ Nodup (Quot.mk Setoid.r l₁) → (∀ (a : α), (t a).Nodup) → (Multiset.sigma (Quot.mk Setoid.r l₁) t).Nodup

tactic: simpa [← funext hf] using List.Nodup.sigma
state_before: α : Type u_1
β : Type v
γ : Type u_2
δ : Type u_3
σ✝ : α → Type u_4
a : α
s : Multiset α
t✝ : (a : α) → Multiset (σ✝ a)
σ : α → Type u_5
t : (a : α) → Multiset (σ a)
l₁ : List α
f : (a : α) → List (σ a)
hf : ∀ (a : α), ⟦f a⟧ = t a
⊢ Nodup (Quot.mk Setoid.r l₁) → (∀ (a : α), (t a).Nodup) → (Multiset.sigma (Quot.mk Setoid.r l₁) t).Nodup
state_after: no goals
Theorem: Cycle.toMultiset_eq_nil
File: Mathlib/Data/List/Cycle.lean

tactic: simp
state_before: α : Type u_1
s : Cycle α
⊢ ∀ (a : List α), toMultiset (Quotient.mk'' a) = 0 ↔ Quotient.mk'' a = nil
state_after: no goals
Theorem: CategoryTheory.Limits.imageSubobjectCompIso_inv_arrow
File: Mathlib/CategoryTheory/Subobject/Limits.lean

tactic: simp [imageSubobjectCompIso]
state_before: C : Type u
inst✝⁴ : Category.{v, u} C
X Y Z : C
f✝ : X ⟶ Y
inst✝³ : HasImage f✝
inst✝² : HasEqualizers C
f : X ⟶ Y
inst✝¹ : HasImage f
Y' : C
h : Y ⟶ Y'
inst✝ : IsIso h
⊢ (imageSubobjectCompIso f h).inv ≫ (imageSubobject (f ≫ h)).arrow = (imageSubobject f).arrow ≫ h
state_after: no goals
Theorem: ProbabilityTheory.kernel.prod_apply
File: Mathlib/Probability/Kernel/Composition.lean

tactic: ext s hs
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
γ : Type u_4
mγ : MeasurableSpace γ
κ : ↥(kernel α β)
inst✝¹ : IsSFiniteKernel κ
η : ↥(kernel α γ)
inst✝ : IsSFiniteKernel η
a : α
⊢ (κ ×ₖ η) a = (κ a).prod (η a)
state_after: case h
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
γ : Type u_4
mγ : MeasurableSpace γ
κ : ↥(kernel α β)
inst✝¹ : IsSFiniteKernel κ
η : ↥(kernel α γ)
inst✝ : IsSFiniteKernel η
a : α
s : Set (β × γ)
hs : MeasurableSet s
⊢ ((κ ×ₖ η) a) s = ((κ a).prod (η a)) s

tactic: rw [prod_apply' _ _ _ hs, Measure.prod_apply hs]
state_before: case h
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
γ : Type u_4
mγ : MeasurableSpace γ
κ : ↥(kernel α β)
inst✝¹ : IsSFiniteKernel κ
η : ↥(kernel α γ)
inst✝ : IsSFiniteKernel η
a : α
s : Set (β × γ)
hs : MeasurableSet s
⊢ ((κ ×ₖ η) a) s = ((κ a).prod (η a)) s
state_after: case h
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
γ : Type u_4
mγ : MeasurableSpace γ
κ : ↥(kernel α β)
inst✝¹ : IsSFiniteKernel κ
η : ↥(kernel α γ)
inst✝ : IsSFiniteKernel η
a : α
s : Set (β × γ)
hs : MeasurableSet s
⊢ ∫⁻ (b : β), (η a) {c | (b, c) ∈ s} ∂κ a = ∫⁻ (x : β), (η a) (Prod.mk x ⁻¹' s) ∂κ a

tactic: rfl
state_before: case h
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
γ : Type u_4
mγ : MeasurableSpace γ
κ : ↥(kernel α β)
inst✝¹ : IsSFiniteKernel κ
η : ↥(kernel α γ)
inst✝ : IsSFiniteKernel η
a : α
s : Set (β × γ)
hs : MeasurableSet s
⊢ ∫⁻ (b : β), (η a) {c | (b, c) ∈ s} ∂κ a = ∫⁻ (x : β), (η a) (Prod.mk x ⁻¹' s) ∂κ a
state_after: no goals
Theorem: Nat.eq_one_iff_not_exists_prime_dvd
File: Mathlib/Data/Nat/Prime.lean

tactic: simpa using not_iff_not.mpr ne_one_iff_exists_prime_dvd
state_before: n✝ n : ℕ
⊢ n = 1 ↔ ∀ (p : ℕ), Prime p → ¬p ∣ n
state_after: no goals
Theorem: maximals_union
File: Mathlib/Order/Minimal.lean

tactic: intro a ha
state_before: α : Type u_1
β : Type u_2
r r₁ r₂ : α → α → Prop
s t : Set α
a b : α
⊢ maximals r (s ∪ t) ⊆ maximals r s ∪ maximals r t
state_after: α : Type u_1
β : Type u_2
r r₁ r₂ : α → α → Prop
s t : Set α
a✝ b a : α
ha : a ∈ maximals r (s ∪ t)
⊢ a ∈ maximals r s ∪ maximals r t

tactic: obtain h | h := ha.1
state_before: α : Type u_1
β : Type u_2
r r₁ r₂ : α → α → Prop
s t : Set α
a✝ b a : α
ha : a ∈ maximals r (s ∪ t)
⊢ a ∈ maximals r s ∪ maximals r t
state_after: case inl
α : Type u_1
β : Type u_2
r r₁ r₂ : α → α → Prop
s t : Set α
a✝ b a : α
ha : a ∈ maximals r (s ∪ t)
h : a ∈ s
⊢ a ∈ maximals r s ∪ maximals r t

case inr
α : Type u_1
β : Type u_2
r r₁ r₂ : α → α → Prop
s t : Set α
a✝ b a : α
ha : a ∈ maximals r (s ∪ t)
h : a ∈ t
⊢ a ∈ maximals r s ∪ maximals r t

tactic: exact Or.inl ⟨h, fun b hb => ha.2 <| Or.inl hb⟩
state_before: case inl
α : Type u_1
β : Type u_2
r r₁ r₂ : α → α → Prop
s t : Set α
a✝ b a : α
ha : a ∈ maximals r (s ∪ t)
h : a ∈ s
⊢ a ∈ maximals r s ∪ maximals r t
state_after: no goals

tactic: exact Or.inr ⟨h, fun b hb => ha.2 <| Or.inr hb⟩
state_before: case inr
α : Type u_1
β : Type u_2
r r₁ r₂ : α → α → Prop
s t : Set α
a✝ b a : α
ha : a ∈ maximals r (s ∪ t)
h : a ∈ t
⊢ a ∈ maximals r s ∪ maximals r t
state_after: no goals
Theorem: AlgebraicTopology.DoldKan.P_f_0_eq
File: Mathlib/AlgebraicTopology/DoldKan/Projections.lean

tactic: induction' q with q hq
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
q : ℕ
⊢ (P q).f 0 = 𝟙 (K[X].X 0)
state_after: case zero
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
⊢ (P 0).f 0 = 𝟙 (K[X].X 0)

case succ
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
q : ℕ
hq : (P q).f 0 = 𝟙 (K[X].X 0)
⊢ (P (q + 1)).f 0 = 𝟙 (K[X].X 0)

tactic: rfl
state_before: case zero
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
⊢ (P 0).f 0 = 𝟙 (K[X].X 0)
state_after: no goals

tactic: simp only [P_succ, HomologicalComplex.add_f_apply, HomologicalComplex.comp_f,
  HomologicalComplex.id_f, id_comp, hq, Hσ_eq_zero, add_zero]
state_before: case succ
C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
q : ℕ
hq : (P q).f 0 = 𝟙 (K[X].X 0)
⊢ (P (q + 1)).f 0 = 𝟙 (K[X].X 0)
state_after: no goals
Theorem: HurwitzZeta.completedCosZeta_one_sub
File: Mathlib/NumberTheory/LSeries/HurwitzZetaEven.lean

tactic: rw [← completedHurwitzZetaEven_one_sub, sub_sub_cancel]
state_before: a : UnitAddCircle
s : ℂ
⊢ completedCosZeta a (1 - s) = completedHurwitzZetaEven a s
state_after: no goals
Theorem: Subtype.coind_injective
File: Mathlib/Data/Subtype.lean

tactic: apply congr_arg Subtype.val hxy
state_before: α✝ : Sort u_1
β✝ : Sort u_2
γ : Sort u_3
p✝ q : α✝ → Prop
α : Sort u_4
β : Sort u_5
f : α → β
p : β → Prop
h : ∀ (a : α), p (f a)
hf : Injective f
x y : α
hxy : coind f h x = coind f h y
⊢ f x = f y
state_after: no goals
Theorem: continuous_of_cover_nhds
File: Mathlib/Topology/ContinuousOn.lean

tactic: rw [ContinuousAt, ← nhdsWithin_eq_nhds.2 hi]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝⁴ : TopologicalSpace α
ι✝ : Type u_5
π : ι✝ → Type u_6
inst✝³ : (i : ι✝) → TopologicalSpace (π i)
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
ι : Sort u_7
f : α → β
s : ι → Set α
hs : ∀ (x : α), ∃ i, s i ∈ 𝓝 x
hf : ∀ (i : ι), ContinuousOn f (s i)
x : α
i : ι
hi : s i ∈ 𝓝 x
⊢ ContinuousAt f x
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝⁴ : TopologicalSpace α
ι✝ : Type u_5
π : ι✝ → Type u_6
inst✝³ : (i : ι✝) → TopologicalSpace (π i)
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
ι : Sort u_7
f : α → β
s : ι → Set α
hs : ∀ (x : α), ∃ i, s i ∈ 𝓝 x
hf : ∀ (i : ι), ContinuousOn f (s i)
x : α
i : ι
hi : s i ∈ 𝓝 x
⊢ Tendsto f (𝓝[s i] x) (𝓝 (f x))

tactic: exact hf _ _ (mem_of_mem_nhds hi)
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝⁴ : TopologicalSpace α
ι✝ : Type u_5
π : ι✝ → Type u_6
inst✝³ : (i : ι✝) → TopologicalSpace (π i)
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
ι : Sort u_7
f : α → β
s : ι → Set α
hs : ∀ (x : α), ∃ i, s i ∈ 𝓝 x
hf : ∀ (i : ι), ContinuousOn f (s i)
x : α
i : ι
hi : s i ∈ 𝓝 x
⊢ Tendsto f (𝓝[s i] x) (𝓝 (f x))
state_after: no goals
Theorem: Disjoint.exists_cthickenings
File: Mathlib/Topology/MetricSpace/Thickening.lean

tactic: obtain ⟨δ, hδ, h⟩ := hst.exists_thickenings hs ht
state_before: ι : Sort u_1
α : Type u
β : Type v
inst✝ : PseudoEMetricSpace α
δ ε : ℝ
s t : Set α
x : α
hst : Disjoint s t
hs : IsCompact s
ht : IsClosed t
⊢ ∃ δ, 0 < δ ∧ Disjoint (cthickening δ s) (cthickening δ t)
state_after: case intro.intro
ι : Sort u_1
α : Type u
β : Type v
inst✝ : PseudoEMetricSpace α
δ✝ ε : ℝ
s t : Set α
x : α
hst : Disjoint s t
hs : IsCompact s
ht : IsClosed t
δ : ℝ
hδ : 0 < δ
h : Disjoint (thickening δ s) (thickening δ t)
⊢ ∃ δ, 0 < δ ∧ Disjoint (cthickening δ s) (cthickening δ t)

tactic: refine ⟨δ / 2, half_pos hδ, h.mono ?_ ?_⟩ <;>
  exact cthickening_subset_thickening' hδ (half_lt_self hδ) _
state_before: case intro.intro
ι : Sort u_1
α : Type u
β : Type v
inst✝ : PseudoEMetricSpace α
δ✝ ε : ℝ
s t : Set α
x : α
hst : Disjoint s t
hs : IsCompact s
ht : IsClosed t
δ : ℝ
hδ : 0 < δ
h : Disjoint (thickening δ s) (thickening δ t)
⊢ ∃ δ, 0 < δ ∧ Disjoint (cthickening δ s) (cthickening δ t)
state_after: no goals
Theorem: RingHom.isIntegral_stableUnderComposition
File: Mathlib/RingTheory/RingHom/Integral.lean

tactic: introv R hf hg
state_before: ⊢ StableUnderComposition fun {R S} [CommRing R] [CommRing S] f => f.IsIntegral
state_after: R S T : Type u_1
inst✝² : CommRing R
inst✝¹ : CommRing S
inst✝ : CommRing T
f : R →+* S
g : S →+* T
hf : f.IsIntegral
hg : g.IsIntegral
⊢ (g.comp f).IsIntegral

tactic: exact hf.trans _ _ hg
state_before: R S T : Type u_1
inst✝² : CommRing R
inst✝¹ : CommRing S
inst✝ : CommRing T
f : R →+* S
g : S →+* T
hf : f.IsIntegral
hg : g.IsIntegral
⊢ (g.comp f).IsIntegral
state_after: no goals
Theorem: Finset.insert_sdiff_of_mem
File: Mathlib/Data/Finset/Basic.lean

tactic: rw [← coe_inj, coe_sdiff, coe_sdiff, coe_insert]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
s✝ t u v : Finset α
a b : α
s : Finset α
x : α
h : x ∈ t
⊢ insert x s \ t = s \ t
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
s✝ t u v : Finset α
a b : α
s : Finset α
x : α
h : x ∈ t
⊢ insert x ↑s \ ↑t = ↑s \ ↑t

tactic: exact Set.insert_diff_of_mem _ h
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
s✝ t u v : Finset α
a b : α
s : Finset α
x : α
h : x ∈ t
⊢ insert x ↑s \ ↑t = ↑s \ ↑t
state_after: no goals
Theorem: Finset.zero_smul_subset
File: Mathlib/Data/Finset/Pointwise.lean

tactic: simp [subset_iff, mem_smul]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝³ : Zero α
inst✝² : Zero β
inst✝¹ : SMulWithZero α β
inst✝ : DecidableEq β
s : Finset α
t✝ t : Finset β
⊢ 0 • t ⊆ 0
state_after: no goals
Theorem: Int.floor_nonpos
File: Mathlib/Algebra/Order/Floor.lean

tactic: rw [← @cast_le α, Int.cast_zero]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : LinearOrderedRing α
inst✝ : FloorRing α
z : ℤ
a : α
ha : a ≤ 0
⊢ ⌊a⌋ ≤ 0
state_after: F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : LinearOrderedRing α
inst✝ : FloorRing α
z : ℤ
a : α
ha : a ≤ 0
⊢ ↑⌊a⌋ ≤ 0

tactic: exact (floor_le a).trans ha
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : LinearOrderedRing α
inst✝ : FloorRing α
z : ℤ
a : α
ha : a ≤ 0
⊢ ↑⌊a⌋ ≤ 0
state_after: no goals
Theorem: CategoryTheory.ShortComplex.cycles_ext
File: Mathlib/Algebra/Homology/ShortComplex/LeftHomology.lean

tactic: simpa only [cycles_ext_iff] using h
state_before: C : Type u_1
inst✝² : Category.{u_2, u_1} C
inst✝¹ : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
inst✝ : S.HasLeftHomology
A : C
f₁ f₂ : A ⟶ S.cycles
h : f₁ ≫ S.iCycles = f₂ ≫ S.iCycles
⊢ f₁ = f₂
state_after: no goals
Theorem: CliffordAlgebra.map_mul_map_eq_neg_of_isOrtho_of_mem_evenOdd_one
File: Mathlib/LinearAlgebra/CliffordAlgebra/Prod.lean

tactic: simp [map_mul_map_of_isOrtho_of_mem_evenOdd _ _ hf _ _ hm₁ hm₂]
state_before: R : Type u_1
M₁ : Type u_2
M₂ : Type u_3
N : Type u_4
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M₁
inst✝⁴ : AddCommGroup M₂
inst✝³ : AddCommGroup N
inst✝² : Module R M₁
inst✝¹ : Module R M₂
inst✝ : Module R N
Q₁ : QuadraticForm R M₁
Q₂ : QuadraticForm R M₂
Qₙ : QuadraticForm R N
f₁ : Q₁ →qᵢ Qₙ
f₂ : Q₂ →qᵢ Qₙ
hf : ∀ (x : M₁) (y : M₂), Qₙ.IsOrtho (f₁ x) (f₂ y)
m₁ : CliffordAlgebra Q₁
m₂ : CliffordAlgebra Q₂
hm₁ : m₁ ∈ evenOdd Q₁ 1
hm₂ : m₂ ∈ evenOdd Q₂ 1
⊢ (map f₁) m₁ * (map f₂) m₂ = -(map f₂) m₂ * (map f₁) m₁
state_after: no goals
Theorem: RCLike.conj_neg_I
File: Mathlib/Analysis/RCLike/Basic.lean

tactic: rw [map_neg, conj_I, neg_neg]
state_before: K : Type u_1
E : Type u_2
inst✝ : RCLike K
⊢ (starRingEnd K) (-I) = I
state_after: no goals
Theorem: Polynomial.X_ne_zero
File: Mathlib/Algebra/Polynomial/Basic.lean

tactic: simp
state_before: R : Type u
a b : R
m n : ℕ
inst✝¹ : Semiring R
inst✝ : Nontrivial R
⊢ ¬X.coeff 1 = coeff 0 1
state_after: no goals
Theorem: compl_le_of_compl_le
File: Mathlib/Order/BooleanAlgebra.lean

tactic: simpa only [compl_compl] using compl_le_compl h
state_before: α : Type u
β : Type u_1
w x y z : α
inst✝ : BooleanAlgebra α
h : yᶜ ≤ x
⊢ xᶜ ≤ y
state_after: no goals
Theorem: Derivation.map_natCast
File: Mathlib/RingTheory/Derivation/Basic.lean

tactic: rw [← nsmul_one, D.map_smul_of_tower n, map_one_eq_zero, smul_zero]
state_before: R : Type u_1
A : Type u_2
B : Type u_3
M : Type u_4
inst✝⁸ : CommSemiring R
inst✝⁷ : CommSemiring A
inst✝⁶ : CommSemiring B
inst✝⁵ : AddCommMonoid M
inst✝⁴ : Algebra R A
inst✝³ : Algebra R B
inst✝² : Module A M
inst✝¹ : Module B M
inst✝ : Module R M
D D1 D2 : Derivation R A M
r : R
a b : A
n : ℕ
⊢ D ↑n = 0
state_after: no goals
Theorem: StrictMono.div_const
File: Mathlib/Algebra/Order/Field/Basic.lean

tactic: simpa only [div_eq_mul_inv] using hf.mul_const (inv_pos.2 hc)
state_before: ι : Type u_1
α : Type u_2
β✝ : Type u_3
inst✝¹ : LinearOrderedSemifield α
a b c✝ d e : α
m n : ℤ
β : Type u_4
inst✝ : Preorder β
f : β → α
hf : StrictMono f
c : α
hc : 0 < c
⊢ StrictMono fun x => f x / c
state_after: no goals
Theorem: Matrix.nnnorm_row
File: Mathlib/Analysis/Matrix.lean

tactic: simp [nnnorm_def, Pi.nnnorm_def]
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 β
v : n → α
⊢ ‖row ι v‖₊ = ‖v‖₊
state_after: no goals
Theorem: le_or_le_of_mul_le_mul
File: Mathlib/Algebra/Order/Monoid/Unbundled/MinMax.lean

tactic: contrapose!
state_before: α : Type u_1
β : Type u_2
inst✝³ : LinearOrder α
inst✝² : Mul α
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
a₁ a₂ b₁ b₂ : α
⊢ a₁ * b₁ ≤ a₂ * b₂ → a₁ ≤ a₂ ∨ b₁ ≤ b₂
state_after: α : Type u_1
β : Type u_2
inst✝³ : LinearOrder α
inst✝² : Mul α
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
a₁ a₂ b₁ b₂ : α
⊢ a₂ < a₁ ∧ b₂ < b₁ → a₂ * b₂ < a₁ * b₁

tactic: exact fun h => mul_lt_mul_of_lt_of_lt h.1 h.2
state_before: α : Type u_1
β : Type u_2
inst✝³ : LinearOrder α
inst✝² : Mul α
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
a₁ a₂ b₁ b₂ : α
⊢ a₂ < a₁ ∧ b₂ < b₁ → a₂ * b₂ < a₁ * b₁
state_after: no goals
Theorem: sdiff_symmDiff_right
File: Mathlib/Order/SymmDiff.lean

tactic: rw [symmDiff_comm, inf_comm, sdiff_symmDiff_left]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
π : ι → Type u_4
inst✝ : GeneralizedBooleanAlgebra α
a b c d : α
⊢ b \ a ∆ b = a ⊓ b
state_after: no goals
Theorem: OreLocalization.nonempty_oreSet_iff_of_noZeroDivisors
File: Mathlib/RingTheory/OreLocalization/OreSet.lean

tactic: constructor
state_before: R : Type u_1
inst✝¹ : Ring R
inst✝ : NoZeroDivisors R
S : Submonoid R
⊢ Nonempty (OreSet S) ↔ ∀ (r : R) (s : ↥S), ∃ r' s', ↑s' * r = r' * ↑s
state_after: case mp
R : Type u_1
inst✝¹ : Ring R
inst✝ : NoZeroDivisors R
S : Submonoid R
⊢ Nonempty (OreSet S) → ∀ (r : R) (s : ↥S), ∃ r' s', ↑s' * r = r' * ↑s

case mpr
R : Type u_1
inst✝¹ : Ring R
inst✝ : NoZeroDivisors R
S : Submonoid R
⊢ (∀ (r : R) (s : ↥S), ∃ r' s', ↑s' * r = r' * ↑s) → Nonempty (OreSet S)

tactic: exact fun ⟨_⟩ ↦ fun r s ↦ ⟨oreNum r s, oreDenom r s, ore_eq r s⟩
state_before: case mp
R : Type u_1
inst✝¹ : Ring R
inst✝ : NoZeroDivisors R
S : Submonoid R
⊢ Nonempty (OreSet S) → ∀ (r : R) (s : ↥S), ∃ r' s', ↑s' * r = r' * ↑s
state_after: no goals

tactic: intro H
state_before: case mpr
R : Type u_1
inst✝¹ : Ring R
inst✝ : NoZeroDivisors R
S : Submonoid R
⊢ (∀ (r : R) (s : ↥S), ∃ r' s', ↑s' * r = r' * ↑s) → Nonempty (OreSet S)
state_after: case mpr
R : Type u_1
inst✝¹ : Ring R
inst✝ : NoZeroDivisors R
S : Submonoid R
H : ∀ (r : R) (s : ↥S), ∃ r' s', ↑s' * r = r' * ↑s
⊢ Nonempty (OreSet S)

tactic: choose r' s' h using H
state_before: case mpr
R : Type u_1
inst✝¹ : Ring R
inst✝ : NoZeroDivisors R
S : Submonoid R
H : ∀ (r : R) (s : ↥S), ∃ r' s', ↑s' * r = r' * ↑s
⊢ Nonempty (OreSet S)
state_after: case mpr
R : Type u_1
inst✝¹ : Ring R
inst✝ : NoZeroDivisors R
S : Submonoid R
r' : R → ↥S → R
s' : R → ↥S → ↥S
h : ∀ (r : R) (s : ↥S), ↑(s' r s) * r = r' r s * ↑s
⊢ Nonempty (OreSet S)

tactic: exact ⟨oreSetOfNoZeroDivisors r' s' h⟩
state_before: case mpr
R : Type u_1
inst✝¹ : Ring R
inst✝ : NoZeroDivisors R
S : Submonoid R
r' : R → ↥S → R
s' : R → ↥S → ↥S
h : ∀ (r : R) (s : ↥S), ↑(s' r s) * r = r' r s * ↑s
⊢ Nonempty (OreSet S)
state_after: no goals
Theorem: intervalIntegral.integral_comp_sub_right
File: Mathlib/MeasureTheory/Integral/IntervalIntegral.lean

tactic: simpa only [sub_eq_add_neg] using integral_comp_add_right f (-d)
state_before: ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A : Type u_5
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
a b c d✝ : ℝ
f : ℝ → E
d : ℝ
⊢ ∫ (x : ℝ) in a..b, f (x - d) = ∫ (x : ℝ) in a - d..b - d, f x
state_after: no goals
Theorem: List.erase_orderedInsert
File: Mathlib/Data/List/Sort.lean

tactic: rw [orderedInsert_eq_take_drop, erase_append_right, List.erase_cons_head,
  takeWhile_append_dropWhile]
state_before: α : Type u
r : α → α → Prop
inst✝² : DecidableRel r
inst✝¹ : DecidableEq α
inst✝ : IsRefl α r
x : α
xs : List α
⊢ (orderedInsert r x xs).erase x = xs
state_after: case h
α : Type u
r : α → α → Prop
inst✝² : DecidableRel r
inst✝¹ : DecidableEq α
inst✝ : IsRefl α r
x : α
xs : List α
⊢ x ∉ takeWhile (fun b => decide ¬r x b) xs

tactic: intro h
state_before: case h
α : Type u
r : α → α → Prop
inst✝² : DecidableRel r
inst✝¹ : DecidableEq α
inst✝ : IsRefl α r
x : α
xs : List α
⊢ x ∉ takeWhile (fun b => decide ¬r x b) xs
state_after: case h
α : Type u
r : α → α → Prop
inst✝² : DecidableRel r
inst✝¹ : DecidableEq α
inst✝ : IsRefl α r
x : α
xs : List α
h : x ∈ takeWhile (fun b => decide ¬r x b) xs
⊢ False

tactic: replace h := mem_takeWhile_imp h
state_before: case h
α : Type u
r : α → α → Prop
inst✝² : DecidableRel r
inst✝¹ : DecidableEq α
inst✝ : IsRefl α r
x : α
xs : List α
h : x ∈ takeWhile (fun b => decide ¬r x b) xs
⊢ False
state_after: case h
α : Type u
r : α → α → Prop
inst✝² : DecidableRel r
inst✝¹ : DecidableEq α
inst✝ : IsRefl α r
x : α
xs : List α
h : (decide ¬r x x) = true
⊢ False

tactic: simp [refl x] at h
state_before: case h
α : Type u
r : α → α → Prop
inst✝² : DecidableRel r
inst✝¹ : DecidableEq α
inst✝ : IsRefl α r
x : α
xs : List α
h : (decide ¬r x x) = true
⊢ False
state_after: no goals
Theorem: Finsupp.neLocus_neg
File: Mathlib/Data/Finsupp/NeLocus.lean

tactic: rw [← neLocus_neg_neg, neg_neg]
state_before: α : Type u_1
M : Type u_2
N : Type u_3
P : Type u_4
inst✝² : DecidableEq α
inst✝¹ : DecidableEq N
inst✝ : AddGroup N
f f₁ f₂ g g₁ g₂ : α →₀ N
⊢ (-f).neLocus g = f.neLocus (-g)
state_after: no goals
Theorem: AddCommGroup.DirectLimit.congr_symm_apply_of
File: Mathlib/Algebra/DirectLimit.lean

tactic: simp only [congr, AddMonoidHom.toAddEquiv_symm_apply, map_apply_of, AddMonoidHom.coe_coe]
state_before: R : Type u
inst✝⁷ : Ring R
ι : Type v
inst✝⁶ : Preorder ι
G : ι → Type w
inst✝⁵ : DecidableEq ι
inst✝⁴ : (i : ι) → AddCommGroup (G i)
f : (i j : ι) → i ≤ j → G i →+ G j
P : Type u₁
inst✝³ : AddCommGroup P
g✝ : (i : ι) → G i →+ P
Hg : ∀ (i j : ι) (hij : i ≤ j) (x : G i), (g✝ j) ((f i j hij) x) = (g✝ i) x
G' : ι → Type v'
inst✝² : (i : ι) → AddCommGroup (G' i)
f' : (i j : ι) → i ≤ j → G' i →+ G' j
G'' : ι → Type v''
inst✝¹ : (i : ι) → AddCommGroup (G'' i)
f'' : (i j : ι) → i ≤ j → G'' i →+ G'' j
inst✝ : IsDirected ι fun x x_1 => x ≤ x_1
e : (i : ι) → G i ≃+ G' i
he : ∀ (i j : ι) (h : i ≤ j), (e j).toAddMonoidHom.comp (f i j h) = (f' i j h).comp ↑(e i)
i : ι
g : G' i
⊢ (congr e he).symm ((of G' f' i) g) = (of G f i) ((e i).symm g)
state_after: no goals
Theorem: AlgebraicTopology.DoldKan.hσ'_eq_zero
File: Mathlib/AlgebraicTopology/DoldKan/Homotopies.lean

tactic: simp only [hσ', hσ]
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
q n m : ℕ
hnq : n < q
hnm : c.Rel m n
⊢ hσ' q n m hnm = 0
state_after: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
q n m : ℕ
hnq : n < q
hnm : c.Rel m n
⊢ (if n < q then 0 else (-1) ^ (n - q) • X.σ ⟨n - q, ⋯⟩) ≫ eqToHom ⋯ = 0

tactic: split_ifs
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
q n m : ℕ
hnq : n < q
hnm : c.Rel m n
⊢ (if n < q then 0 else (-1) ^ (n - q) • X.σ ⟨n - q, ⋯⟩) ≫ eqToHom ⋯ = 0
state_after: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
q n m : ℕ
hnq : n < q
hnm : c.Rel m n
⊢ 0 ≫ eqToHom ⋯ = 0

tactic: exact zero_comp
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : Preadditive C
X : SimplicialObject C
q n m : ℕ
hnq : n < q
hnm : c.Rel m n
⊢ 0 ≫ eqToHom ⋯ = 0
state_after: no goals
Theorem: HurwitzZeta.LSeriesHasSum_sin
File: Mathlib/NumberTheory/LSeries/HurwitzZetaOdd.lean

tactic: refine (hasSum_nat_sinZeta a hs).congr_fun (fun n ↦ ?_)
state_before: a : ℝ
s : ℂ
hs : 1 < s.re
⊢ LSeriesHasSum (fun x => ↑(Real.sin (2 * π * a * ↑x))) s (sinZeta (↑a) s)
state_after: a : ℝ
s : ℂ
hs : 1 < s.re
n : ℕ
⊢ LSeries.term (fun x => ↑(Real.sin (2 * π * a * ↑x))) s n = ↑(Real.sin (2 * π * a * ↑n)) / ↑n ^ s

tactic: rcases eq_or_ne n 0 with rfl | hn
state_before: a : ℝ
s : ℂ
hs : 1 < s.re
n : ℕ
⊢ LSeries.term (fun x => ↑(Real.sin (2 * π * a * ↑x))) s n = ↑(Real.sin (2 * π * a * ↑n)) / ↑n ^ s
state_after: case inl
a : ℝ
s : ℂ
hs : 1 < s.re
⊢ LSeries.term (fun x => ↑(Real.sin (2 * π * a * ↑x))) s 0 = ↑(Real.sin (2 * π * a * ↑0)) / ↑0 ^ s

case inr
a : ℝ
s : ℂ
hs : 1 < s.re
n : ℕ
hn : n ≠ 0
⊢ LSeries.term (fun x => ↑(Real.sin (2 * π * a * ↑x))) s n = ↑(Real.sin (2 * π * a * ↑n)) / ↑n ^ s

tactic: rw [LSeries.term_zero, Nat.cast_zero, mul_zero, Real.sin_zero, ofReal_zero, zero_div]
state_before: case inl
a : ℝ
s : ℂ
hs : 1 < s.re
⊢ LSeries.term (fun x => ↑(Real.sin (2 * π * a * ↑x))) s 0 = ↑(Real.sin (2 * π * a * ↑0)) / ↑0 ^ s
state_after: no goals

tactic: apply LSeries.term_of_ne_zero hn
state_before: case inr
a : ℝ
s : ℂ
hs : 1 < s.re
n : ℕ
hn : n ≠ 0
⊢ LSeries.term (fun x => ↑(Real.sin (2 * π * a * ↑x))) s n = ↑(Real.sin (2 * π * a * ↑n)) / ↑n ^ s
state_after: no goals