tasksource/leandojo huggingface dataset:
Theorem: irreducible_pow_sup_of_ge
File: Mathlib/RingTheory/DedekindDomain/Ideal.lean

tactic: rw [irreducible_pow_sup hI hJ, min_eq_left]
state_before: R : Type ?u.924933
A : Type ?u.924936
K : Type ?u.924939
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : Field K
inst✝³ : IsDomain A
T : Type u_1
inst✝² : CommRing T
inst✝¹ : IsDomain T
inst✝ : IsDedekindDomain T
I J : Ideal T
hI : I ≠ ⊥
hJ : Irreducible J
n : ℕ
hn : multiplicity J I ≤ ↑n
⊢ J ^ n ⊔ I = J ^ Part.get (multiplicity J I) (_ : (multiplicity J I).Dom)

tactic: congr
state_before: R : Type ?u.924933
A : Type ?u.924936
K : Type ?u.924939
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : Field K
inst✝³ : IsDomain A
T : Type u_1
inst✝² : CommRing T
inst✝¹ : IsDomain T
inst✝ : IsDedekindDomain T
I J : Ideal T
hI : I ≠ ⊥
hJ : Irreducible J
n : ℕ
hn : multiplicity J I ≤ ↑n
⊢ J ^ count J (normalizedFactors I) = J ^ Part.get (multiplicity J I) (_ : (multiplicity J I).Dom)

R : Type ?u.924933
A : Type ?u.924936
K : Type ?u.924939
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : Field K
inst✝³ : IsDomain A
T : Type u_1
inst✝² : CommRing T
inst✝¹ : IsDomain T
inst✝ : IsDedekindDomain T
I J : Ideal T
hI : I ≠ ⊥
hJ : Irreducible J
n : ℕ
hn : multiplicity J I ≤ ↑n
⊢ count J (normalizedFactors I) ≤ n

tactic: rw [← PartENat.natCast_inj, PartENat.natCast_get,
  multiplicity_eq_count_normalizedFactors hJ hI, normalize_eq J]
state_before: case e_a
R : Type ?u.924933
A : Type ?u.924936
K : Type ?u.924939
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : Field K
inst✝³ : IsDomain A
T : Type u_1
inst✝² : CommRing T
inst✝¹ : IsDomain T
inst✝ : IsDedekindDomain T
I J : Ideal T
hI : I ≠ ⊥
hJ : Irreducible J
n : ℕ
hn : multiplicity J I ≤ ↑n
⊢ count J (normalizedFactors I) = Part.get (multiplicity J I) (_ : (multiplicity J I).Dom)

tactic: rwa [multiplicity_eq_count_normalizedFactors hJ hI, PartENat.coe_le_coe, normalize_eq J] at hn
state_before: R : Type ?u.924933
A : Type ?u.924936
K : Type ?u.924939
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : Field K
inst✝³ : IsDomain A
T : Type u_1
inst✝² : CommRing T
inst✝¹ : IsDomain T
inst✝ : IsDedekindDomain T
I J : Ideal T
hI : I ≠ ⊥
hJ : Irreducible J
n : ℕ
hn : multiplicity J I ≤ ↑n
⊢ count J (normalizedFactors I) ≤ n
Theorem: Submodule.span_singleton_smul_eq
File: Mathlib/LinearAlgebra/Span.lean

tactic: lift r to Rˣ using hr
state_before: R : Type u_1
R₂ : Type ?u.149702
K : Type ?u.149705
M : Type u_2
M₂ : Type ?u.149711
V : Type ?u.149714
S : Type ?u.149717
inst✝⁵ : Semiring R
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
x✝ : M
p p' : Submodule R M
inst✝² : Semiring R₂
σ₁₂ : R →+* R₂
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R₂ M₂
s t : Set M
r : R
hr : IsUnit r
x : M
⊢ span R {r • x} = span R {x}

tactic: rw [← Units.smul_def]
state_before: case intro
R : Type u_1
R₂ : Type ?u.149702
K : Type ?u.149705
M : Type u_2
M₂ : Type ?u.149711
V : Type ?u.149714
S : Type ?u.149717
inst✝⁵ : Semiring R
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
x✝ : M
p p' : Submodule R M
inst✝² : Semiring R₂
σ₁₂ : R →+* R₂
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R₂ M₂
s t : Set M
x : M
r : Rˣ
⊢ span R {↑r • x} = span R {x}

tactic: exact span_singleton_group_smul_eq R r x
state_before: case intro
R : Type u_1
R₂ : Type ?u.149702
K : Type ?u.149705
M : Type u_2
M₂ : Type ?u.149711
V : Type ?u.149714
S : Type ?u.149717
inst✝⁵ : Semiring R
inst✝⁴ : AddCommMonoid M
inst✝³ : Module R M
x✝ : M
p p' : Submodule R M
inst✝² : Semiring R₂
σ₁₂ : R →+* R₂
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R₂ M₂
s t : Set M
x : M
r : Rˣ
⊢ span R {r • x} = span R {x}
Theorem: Metric.closedBall_diff_sphere
File: Mathlib/Topology/MetricSpace/Basic.lean

tactic: rw [← ball_union_sphere, Set.union_diff_cancel_right sphere_disjoint_ball.symm.le_bot]
state_before: α : Type u
β : Type v
X : Type ?u.37806
ι : Type ?u.37809
inst✝ : PseudoMetricSpace α
x y z : α
δ ε ε₁ ε₂ : ℝ
s : Set α
⊢ closedBall x ε \ sphere x ε = ball x ε
Theorem: CategoryTheory.IsPullback.inr_fst'
File: Mathlib/CategoryTheory/Limits/Shapes/CommSq.lean

tactic: apply flip
state_before: C : Type u₁
inst✝² : Category C
P X Y Z : C
fst : P ⟶ X
snd : P ⟶ Y
f : X ⟶ Z
g : Y ⟶ Z
inst✝¹ : HasZeroObject C
inst✝ : HasZeroMorphisms C
b : BinaryBicone X Y
h : BinaryBicone.IsBilimit b
⊢ IsPullback b.inr 0 b.fst 0

tactic: refine' of_bot _ (by simp) (of_isBilimit h)
state_before: case h
C : Type u₁
inst✝² : Category C
P X Y Z : C
fst : P ⟶ X
snd : P ⟶ Y
f : X ⟶ Z
g : Y ⟶ Z
inst✝¹ : HasZeroObject C
inst✝ : HasZeroMorphisms C
b : BinaryBicone X Y
h : BinaryBicone.IsBilimit b
⊢ IsPullback 0 b.inr 0 b.fst

tactic: simp
state_before: case h
C : Type u₁
inst✝² : Category C
P X Y Z : C
fst : P ⟶ X
snd : P ⟶ Y
f : X ⟶ Z
g : Y ⟶ Z
inst✝¹ : HasZeroObject C
inst✝ : HasZeroMorphisms C
b : BinaryBicone X Y
h : BinaryBicone.IsBilimit b
⊢ IsPullback 0 (b.inr ≫ b.snd) (0 ≫ 0) 0

tactic: simp
state_before: C : Type u₁
inst✝² : Category C
P X Y Z : C
fst : P ⟶ X
snd : P ⟶ Y
f : X ⟶ Z
g : Y ⟶ Z
inst✝¹ : HasZeroObject C
inst✝ : HasZeroMorphisms C
b : BinaryBicone X Y
h : BinaryBicone.IsBilimit b
⊢ 0 ≫ 0 = b.inr ≫ b.fst
Theorem: Antitone.map_sSup_le
File: Mathlib/Order/CompleteLattice.lean

tactic: rw [sSup_eq_iSup]
state_before: α : Type u_2
β : Type u_1
β₂ : Type ?u.85499
γ : Type ?u.85502
ι : Sort ?u.85505
ι' : Sort ?u.85508
κ : ι → Sort ?u.85513
κ' : ι' → Sort ?u.85518
inst✝¹ : CompleteLattice α
f✝ g s✝ t : ι → α
a b : α
inst✝ : CompleteLattice β
s : Set α
f : α → β
hf : Antitone f
⊢ f (sSup s) ≤ ⨅ (a : α) (_ : a ∈ s), f a

tactic: exact hf.map_iSup₂_le _
state_before: α : Type u_2
β : Type u_1
β₂ : Type ?u.85499
γ : Type ?u.85502
ι : Sort ?u.85505
ι' : Sort ?u.85508
κ : ι → Sort ?u.85513
κ' : ι' → Sort ?u.85518
inst✝¹ : CompleteLattice α
f✝ g s✝ t : ι → α
a b : α
inst✝ : CompleteLattice β
s : Set α
f : α → β
hf : Antitone f
⊢ f (⨆ (a : α) (_ : a ∈ s), a) ≤ ⨅ (a : α) (_ : a ∈ s), f a
Theorem: LocalEquiv.trans_refl_restr'
File: Mathlib/Logic/Equiv/LocalEquiv.lean

tactic: simp [trans_source]
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.48613
δ : Type ?u.48616
e : LocalEquiv α β
e' : LocalEquiv β γ
s : Set β
⊢ (LocalEquiv.trans e (LocalEquiv.restr (LocalEquiv.refl β) s)).source =
    (LocalEquiv.restr e (e.source ∩ ↑e ⁻¹' s)).source

tactic: rw [← inter_assoc, inter_self]
state_before: α : Type u_2
β : Type u_1
γ : Type ?u.48613
δ : Type ?u.48616
e : LocalEquiv α β
e' : LocalEquiv β γ
s : Set β
⊢ e.source ∩ ↑e ⁻¹' s = e.source ∩ (e.source ∩ ↑e ⁻¹' s)
Theorem: existsUnique_zsmul_near_of_pos'
File: Mathlib/Algebra/Order/Archimedean.lean

tactic: simpa only [sub_nonneg, add_zsmul, one_zsmul, sub_lt_iff_lt_add'] using
  existsUnique_zsmul_near_of_pos ha g
state_before: α : Type u_1
inst✝¹ : LinearOrderedAddCommGroup α
inst✝ : Archimedean α
a : α
ha : 0 < a
g : α
⊢ ∃! k, 0 ≤ g - k • a ∧ g - k • a < a
Theorem: Finset.mem_uIcc'
File: Mathlib/Data/Finset/LocallyFinite.lean

tactic: simp [uIcc_eq_union]
state_before: ι : Type ?u.200961
α : Type u_1
inst✝¹ : LinearOrder α
inst✝ : LocallyFiniteOrder α
a a₁ a₂ b b₁ b₂ c x : α
⊢ a ∈ [[b, c]] ↔ b ≤ a ∧ a ≤ c ∨ c ≤ a ∧ a ≤ b
Theorem: MeasureTheory.Measure.InnerRegular.of_pseudoEMetricSpace
File: Mathlib/MeasureTheory/Measure/Regular.lean

tactic: intro U hU r hr
state_before: α : Type ?u.57133
β : Type ?u.57136
inst✝³ : MeasurableSpace α
inst✝² : TopologicalSpace α
μ✝ : Measure α
p q : Set α → Prop
U s : Set α
ε r : ℝ≥0∞
X : Type u_1
inst✝¹ : PseudoEMetricSpace X
inst✝ : MeasurableSpace X
μ : Measure X
⊢ InnerRegular μ IsClosed IsOpen

tactic: rcases hU.exists_iUnion_isClosed with ⟨F, F_closed, -, rfl, F_mono⟩
state_before: α : Type ?u.57133
β : Type ?u.57136
inst✝³ : MeasurableSpace α
inst✝² : TopologicalSpace α
μ✝ : Measure α
p q : Set α → Prop
U✝ s : Set α
ε r✝ : ℝ≥0∞
X : Type u_1
inst✝¹ : PseudoEMetricSpace X
inst✝ : MeasurableSpace X
μ : Measure X
U : Set X
hU : IsOpen U
r : ℝ≥0∞
hr : r < ↑↑μ U
⊢ ∃ K, K ⊆ U ∧ IsClosed K ∧ r < ↑↑μ K

tactic: rw [measure_iUnion_eq_iSup F_mono.directed_le] at hr
state_before: case intro.intro.intro.intro
α : Type ?u.57133
β : Type ?u.57136
inst✝³ : MeasurableSpace α
inst✝² : TopologicalSpace α
μ✝ : Measure α
p q : Set α → Prop
U s : Set α
ε r✝ : ℝ≥0∞
X : Type u_1
inst✝¹ : PseudoEMetricSpace X
inst✝ : MeasurableSpace X
μ : Measure X
r : ℝ≥0∞
F : ℕ → Set X
F_closed : ∀ (n : ℕ), IsClosed (F n)
F_mono : Monotone F
hU : IsOpen (⋃ (n : ℕ), F n)
hr : r < ↑↑μ (⋃ (n : ℕ), F n)
⊢ ∃ K, (K ⊆ ⋃ (n : ℕ), F n) ∧ IsClosed K ∧ r < ↑↑μ K

tactic: rcases lt_iSup_iff.1 hr with ⟨n, hn⟩
state_before: case intro.intro.intro.intro
α : Type ?u.57133
β : Type ?u.57136
inst✝³ : MeasurableSpace α
inst✝² : TopologicalSpace α
μ✝ : Measure α
p q : Set α → Prop
U s : Set α
ε r✝ : ℝ≥0∞
X : Type u_1
inst✝¹ : PseudoEMetricSpace X
inst✝ : MeasurableSpace X
μ : Measure X
r : ℝ≥0∞
F : ℕ → Set X
F_closed : ∀ (n : ℕ), IsClosed (F n)
F_mono : Monotone F
hU : IsOpen (⋃ (n : ℕ), F n)
hr : r < ⨆ (i : ℕ), ↑↑μ (F i)
⊢ ∃ K, (K ⊆ ⋃ (n : ℕ), F n) ∧ IsClosed K ∧ r < ↑↑μ K

tactic: exact ⟨F n, subset_iUnion _ _, F_closed n, hn⟩
state_before: case intro.intro.intro.intro.intro
α : Type ?u.57133
β : Type ?u.57136
inst✝³ : MeasurableSpace α
inst✝² : TopologicalSpace α
μ✝ : Measure α
p q : Set α → Prop
U s : Set α
ε r✝ : ℝ≥0∞
X : Type u_1
inst✝¹ : PseudoEMetricSpace X
inst✝ : MeasurableSpace X
μ : Measure X
r : ℝ≥0∞
F : ℕ → Set X
F_closed : ∀ (n : ℕ), IsClosed (F n)
F_mono : Monotone F
hU : IsOpen (⋃ (n : ℕ), F n)
hr : r < ⨆ (i : ℕ), ↑↑μ (F i)
n : ℕ
hn : r < ↑↑μ (F n)
⊢ ∃ K, (K ⊆ ⋃ (n : ℕ), F n) ∧ IsClosed K ∧ r < ↑↑μ K
Theorem: Submonoid.disjoint_def
File: Mathlib/GroupTheory/Submonoid/Basic.lean

tactic: simp_rw [disjoint_iff_inf_le, SetLike.le_def, mem_inf, and_imp, mem_bot]
state_before: M : Type u_1
N : Type ?u.30416
A : Type ?u.30419
inst✝¹ : MulOneClass M
s : Set M
inst✝ : AddZeroClass A
t : Set A
S p₁ p₂ : Submonoid M
⊢ Disjoint p₁ p₂ ↔ ∀ {x : M}, x ∈ p₁ → x ∈ p₂ → x = 1
Theorem: abs_lt
File: Mathlib/Algebra/Order/Group/Abs.lean

tactic: rw [neg_lt]
state_before: α : Type u_1
inst✝³ : AddGroup α
inst✝² : LinearOrder α
inst✝¹ : CovariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
a b c : α
inst✝ : CovariantClass α α (swap fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
⊢ -a < b ∧ a < b ↔ -b < a ∧ a < b
Theorem: Int.add_neg_cancel_right
File: Std/Data/Int/Lemmas.lean

tactic: rw [Int.add_assoc, Int.add_right_neg, Int.add_zero]
state_before: a b : Int
⊢ a + b + -b = a
Theorem: tendstoLocallyUniformlyOn_iff_tendstoLocallyUniformly_comp_coe
File: Mathlib/Topology/UniformSpace/UniformConvergence.lean

tactic: simp only [tendstoLocallyUniformly_iff_forall_tendsto, Subtype.forall', tendsto_map'_iff,
  tendstoLocallyUniformlyOn_iff_forall_tendsto, ← map_nhds_subtype_val, prod_map_right]
state_before: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝¹ : UniformSpace β
F : ι → α → β
f : α → β
s s' : Set α
x : α
p : Filter ι
p' : Filter α
g : ι → α
inst✝ : TopologicalSpace α
⊢ TendstoLocallyUniformlyOn F f p s ↔ TendstoLocallyUniformly (fun i x => F i ↑x) (f ∘ Subtype.val) p

tactic: rfl
state_before: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝¹ : UniformSpace β
F : ι → α → β
f : α → β
s s' : Set α
x : α
p : Filter ι
p' : Filter α
g : ι → α
inst✝ : TopologicalSpace α
⊢ (∀ (x : { a // a ∈ s }), Tendsto ((fun y => (f y.snd, F y.fst y.snd)) ∘ Prod.map id Subtype.val) (p ×ˢ 𝓝 x) (𝓤 β)) ↔
    ∀ (x : ↑s), Tendsto (fun y => ((f ∘ Subtype.val) y.snd, F y.fst ↑y.snd)) (p ×ˢ 𝓝 x) (𝓤 β)
Theorem: List.rtakeWhile_concat
File: Mathlib/Data/List/Rdrop.lean

tactic: simp only [rtakeWhile, takeWhile, reverse_append, reverse_singleton, singleton_append]
state_before: α : Type u_1
p : α → Bool
l : List α
n : ℕ
x : α
⊢ rtakeWhile p (l ++ [x]) = if p x = true then rtakeWhile p l ++ [x] else []

tactic: split_ifs with h <;> simp [h]
state_before: α : Type u_1
p : α → Bool
l : List α
n : ℕ
x : α
⊢ reverse
      (match p x with
      | true => x :: takeWhile p (reverse l)
      | false => []) =
    if p x = true then reverse (takeWhile p (reverse l)) ++ [x] else []
Theorem: Matrix.vec2_eq
File: Mathlib/Data/Matrix/Notation.lean

tactic: subst_vars
state_before: α : Type u
o n m : ℕ
m' : Type uₘ
n' : Type uₙ
o' : Type uₒ
a b : ℕ
a₀ a₁ b₀ b₁ : α
h₀ : a₀ = b₀
h₁ : a₁ = b₁
⊢ ![a₀, a₁] = ![b₀, b₁]

tactic: rfl
state_before: α : Type u
o n m : ℕ
m' : Type uₘ
n' : Type uₙ
o' : Type uₒ
a b : ℕ
b₀ b₁ : α
⊢ ![b₀, b₁] = ![b₀, b₁]
Theorem: SimpleGraph.isEmpty_of_colorable_zero
File: Mathlib/Combinatorics/SimpleGraph/Coloring.lean

tactic: constructor
state_before: V : Type u
G : SimpleGraph V
α : Type v
C : Coloring G α
h : Colorable G 0
⊢ IsEmpty V

tactic: intro v
state_before: case false
V : Type u
G : SimpleGraph V
α : Type v
C : Coloring G α
h : Colorable G 0
⊢ V → False

tactic: obtain ⟨i, hi⟩ := h.some v
state_before: case false
V : Type u
G : SimpleGraph V
α : Type v
C : Coloring G α
h : Colorable G 0
v : V
⊢ False

tactic: exact Nat.not_lt_zero _ hi
state_before: case false.mk
V : Type u
G : SimpleGraph V
α : Type v
C : Coloring G α
h : Colorable G 0
v : V
i : ℕ
hi : i < 0
⊢ False
Theorem: multiplicity.is_greatest'
File: Mathlib/RingTheory/Multiplicity.lean

tactic: rwa [← PartENat.coe_lt_coe, PartENat.natCast_get] at hm
state_before: α : Type u_1
inst✝¹ : Monoid α
inst✝ : DecidableRel fun x x_1 => x ∣ x_1
a b : α
m : ℕ
h : Finite a b
hm : Part.get (multiplicity a b) h < m
⊢ multiplicity a b < ↑m
Theorem: ConcaveOn.average_mem_hypograph
File: Mathlib/Analysis/Convex/Integral.lean

tactic: simpa only [mem_setOf_eq, Pi.neg_apply, average_neg, neg_le_neg_iff] using
  hg.neg.average_mem_epigraph hgc.neg hsc hμ hfs hfi hgi.neg
state_before: α : Type u_1
E : Type u_2
F : Type ?u.731861
m0 : MeasurableSpace α
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℝ E
inst✝⁴ : CompleteSpace E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace ℝ F
inst✝¹ : CompleteSpace F
μ : MeasureTheory.Measure α
s : Set E
t : Set α
f : α → E
g : E → ℝ
C : ℝ
inst✝ : IsFiniteMeasure μ
hg : ConcaveOn ℝ s g
hgc : ContinuousOn g s
hsc : IsClosed s
hμ : μ ≠ 0
hfs : ∀ᵐ (x : α) ∂μ, f x ∈ s
hfi : Integrable f
hgi : Integrable (g ∘ f)
⊢ (⨍ (x : α), f x ∂μ, ⨍ (x : α), g (f x) ∂μ) ∈ {p | p.fst ∈ s ∧ p.snd ≤ g p.fst}
Theorem: Int.eq_natAbs_of_zero_le
File: Std/Data/Int/Lemmas.lean

tactic: let ⟨n, e⟩ := eq_ofNat_of_zero_le h
state_before: a : Int
h : 0 ≤ a
⊢ a = ↑(natAbs a)

tactic: rw [e]
state_before: a : Int
h : 0 ≤ a
n : Nat
e : a = ↑n
⊢ a = ↑(natAbs a)

tactic: rfl
state_before: a : Int
h : 0 ≤ a
n : Nat
e : a = ↑n
⊢ ↑n = ↑(natAbs ↑n)
Theorem: Pi.summable
File: Mathlib/Topology/Algebra/InfiniteSum/Basic.lean

tactic: simp only [Summable, Pi.hasSum, skolem]
state_before: α : Type u_1
β : Type ?u.799420
γ : Type ?u.799423
δ : Type ?u.799426
ι : Type u_3
π : α → Type u_2
inst✝¹ : (x : α) → AddCommMonoid (π x)
inst✝ : (x : α) → TopologicalSpace (π x)
f : ι → (x : α) → π x
⊢ Summable f ↔ ∀ (x : α), Summable fun i => f i x
Theorem: LocalEquiv.source_inter_preimage_inv_preimage
File: Mathlib/Logic/Equiv/LocalEquiv.lean

tactic: simp only [mem_preimage, e.left_inv hx]
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.33320
δ : Type ?u.33323
e : LocalEquiv α β
e' : LocalEquiv β γ
s : Set α
x : α
hx : x ∈ e.source
⊢ x ∈ ↑e ⁻¹' (↑(LocalEquiv.symm e) ⁻¹' s) ↔ x ∈ s
Theorem: Unitization.inl_star
File: Mathlib/Algebra/Algebra/Unitization.lean

tactic: simp only [snd_star, star_zero, snd_inl]
state_before: R : Type u_1
A : Type u_2
inst✝² : Star R
inst✝¹ : AddMonoid A
inst✝ : StarAddMonoid A
r : R
⊢ snd (inl (star r)) = snd (star (inl r))
Theorem: CategoryTheory.Quotient.CompClosure.of
File: Mathlib/CategoryTheory/Quotient.lean

tactic: simpa using CompClosure.intro (𝟙 _) m₁ m₂ (𝟙 _) h
state_before: C : Type u_2
inst✝ : Category C
r : HomRel C
a b : C
m₁ m₂ : a ⟶ b
h : r m₁ m₂
⊢ CompClosure r m₁ m₂
Theorem: mul_add_mul_lt_mul_add_mul
File: Mathlib/Algebra/Order/Ring/Canonical.lean

tactic: obtain ⟨b, rfl⟩ := exists_add_of_le hab.le
state_before: α : Type u
β : Type ?u.10176
inst✝¹ : StrictOrderedSemiring α
a b c d : α
inst✝ : ExistsAddOfLE α
hab : a < b
hcd : c < d
⊢ a * d + b * c < a * c + b * d

tactic: obtain ⟨d, rfl⟩ := exists_add_of_le hcd.le
state_before: case intro
α : Type u
β : Type ?u.10176
inst✝¹ : StrictOrderedSemiring α
a c d : α
inst✝ : ExistsAddOfLE α
hcd : c < d
b : α
hab : a < a + b
⊢ a * d + (a + b) * c < a * c + (a + b) * d

tactic: rw [mul_add, add_right_comm, mul_add, ← add_assoc]
state_before: case intro.intro
α : Type u
β : Type ?u.10176
inst✝¹ : StrictOrderedSemiring α
a c : α
inst✝ : ExistsAddOfLE α
b : α
hab : a < a + b
d : α
hcd : c < c + d
⊢ a * (c + d) + (a + b) * c < a * c + (a + b) * (c + d)

tactic: exact add_lt_add_left (mul_lt_mul_of_pos_right hab <| (lt_add_iff_pos_right _).1 hcd) _
state_before: case intro.intro
α : Type u
β : Type ?u.10176
inst✝¹ : StrictOrderedSemiring α
a c : α
inst✝ : ExistsAddOfLE α
b : α
hab : a < a + b
d : α
hcd : c < c + d
⊢ a * c + (a + b) * c + a * d < a * c + (a + b) * c + (a + b) * d
Theorem: Matrix.isUnit_submatrix_equiv
File: Mathlib/LinearAlgebra/Matrix/NonsingularInverse.lean

tactic: simp only [← nonempty_invertible_iff_isUnit,
  (submatrixEquivInvertibleEquivInvertible A _ _).nonempty_congr]
state_before: l : Type ?u.398160
m : Type u
n : Type u'
α : Type v
inst✝⁴ : Fintype n
inst✝³ : DecidableEq n
inst✝² : CommRing α
A✝ B : Matrix n n α
inst✝¹ : Fintype m
inst✝ : DecidableEq m
A : Matrix m m α
e₁ e₂ : n ≃ m
⊢ IsUnit (submatrix A ↑e₁ ↑e₂) ↔ IsUnit A
Theorem: Ordinal.lsub_typein
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

tactic: by_contra' h
state_before: α : Type ?u.341106
β : Type ?u.341109
γ : Type ?u.341112
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
o : Ordinal
⊢ o ≤ lsub fun i => typein (fun x x_1 => x < x_1) i

tactic: conv_rhs at h => rw [← type_lt o]
state_before: α : Type ?u.341106
β : Type ?u.341109
γ : Type ?u.341112
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
o : Ordinal
h : (lsub fun i => typein (fun x x_1 => x < x_1) i) < o
⊢ False
Theorem: vadd_right_cancel
File: Mathlib/Algebra/AddTorsor.lean

tactic: rw [← vadd_vsub g1 p, h, vadd_vsub]
state_before: G : Type u_2
P : Type u_1
inst✝ : AddGroup G
T : AddTorsor G P
g1 g2 : G
p : P
h : g1 +ᵥ p = g2 +ᵥ p
⊢ g1 = g2
Theorem: one_lt_pow
File: Mathlib/Algebra/GroupPower/Order.lean

tactic: rw [pow_succ]
state_before: β : Type ?u.223542
A : Type ?u.223545
G : Type ?u.223548
M : Type ?u.223551
R : Type u_1
inst✝ : OrderedSemiring R
a x y : R
n✝ m : ℕ
ha : 1 < a
n : ℕ
x✝ : n + 1 ≠ 0
⊢ 1 < a ^ (n + 1)

tactic: exact one_lt_mul_of_lt_of_le ha (one_le_pow_of_one_le ha.le _)
state_before: β : Type ?u.223542
A : Type ?u.223545
G : Type ?u.223548
M : Type ?u.223551
R : Type u_1
inst✝ : OrderedSemiring R
a x y : R
n✝ m : ℕ
ha : 1 < a
n : ℕ
x✝ : n + 1 ≠ 0
⊢ 1 < a * a ^ n
Theorem: Option.join_eq_none
File: Std/Data/Option/Lemmas.lean

tactic: simp
state_before: α✝ : Type u_1
o : Option (Option α✝)
val✝ : α✝
⊢ join (some (some val✝)) = none ↔ some (some val✝) = none ∨ some (some val✝) = some none
Theorem: tendsto_prod_top_iff
File: Mathlib/Topology/UniformSpace/UniformConvergence.lean

tactic: rw [tendstoUniformly_iff_tendstoUniformlyOnFilter]
state_before: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝ : UniformSpace β
F : ι → α → β
f : α → β
s s' : Set α
x : α
p : Filter ι
p' : Filter α
g : ι → α
c : β
⊢ Tendsto (↿F) (p ×ˢ ⊤) (𝓝 c) ↔ TendstoUniformly F (fun x => c) p

tactic: exact tendsto_prod_filter_iff
state_before: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝ : UniformSpace β
F : ι → α → β
f : α → β
s s' : Set α
x : α
p : Filter ι
p' : Filter α
g : ι → α
c : β
⊢ Tendsto (↿F) (p ×ˢ ⊤) (𝓝 c) ↔ TendstoUniformlyOnFilter F (fun x => c) p ⊤
Theorem: Multiset.mem_sections
File: Mathlib/Data/Multiset/Sections.lean

tactic: induction s using Multiset.induction_on
state_before: α : Type u_1
s : Multiset (Multiset α)
⊢ ∀ {a : Multiset α}, a ∈ Sections s ↔ Rel (fun s a => a ∈ s) s a

tactic: case empty => simp
state_before: case empty
α : Type u_1
⊢ ∀ {a : Multiset α}, a ∈ Sections 0 ↔ Rel (fun s a => a ∈ s) 0 a

case cons
α : Type u_1
a✝¹ : Multiset α
s✝ : Multiset (Multiset α)
a✝ : ∀ {a : Multiset α}, a ∈ Sections s✝ ↔ Rel (fun s a => a ∈ s) s✝ a
⊢ ∀ {a : Multiset α}, a ∈ Sections (a✝¹ ::ₘ s✝) ↔ Rel (fun s a => a ∈ s) (a✝¹ ::ₘ s✝) a

tactic: case cons a a' ih => simp [ih, rel_cons_left, eq_comm]
state_before: case cons
α : Type u_1
a✝¹ : Multiset α
s✝ : Multiset (Multiset α)
a✝ : ∀ {a : Multiset α}, a ∈ Sections s✝ ↔ Rel (fun s a => a ∈ s) s✝ a
⊢ ∀ {a : Multiset α}, a ∈ Sections (a✝¹ ::ₘ s✝) ↔ Rel (fun s a => a ∈ s) (a✝¹ ::ₘ s✝) a

tactic: simp
state_before: α : Type u_1
⊢ ∀ {a : Multiset α}, a ∈ Sections 0 ↔ Rel (fun s a => a ∈ s) 0 a

tactic: simp [ih, rel_cons_left, eq_comm]
state_before: α : Type u_1
a : Multiset α
a' : Multiset (Multiset α)
ih : ∀ {a : Multiset α}, a ∈ Sections a' ↔ Rel (fun s a => a ∈ s) a' a
⊢ ∀ {a_1 : Multiset α}, a_1 ∈ Sections (a ::ₘ a') ↔ Rel (fun s a => a ∈ s) (a ::ₘ a') a_1
Theorem: Nat.lt_base_pow_length_digits'
File: Mathlib/Data/Nat/Digits.lean

tactic: convert @ofDigits_lt_base_pow_length' b (digits (b + 2) m) fun _ => digits_lt_base'
state_before: n b m : ℕ
⊢ m < (b + 2) ^ List.length (digits (b + 2) m)

tactic: rw [ofDigits_digits (b + 2) m]
state_before: case h.e'_3
n b m : ℕ
⊢ m = ofDigits (b + 2) (digits (b + 2) m)
Theorem: CategoryTheory.IsConnected.of_constant_of_preserves_morphisms
File: Mathlib/CategoryTheory/IsConnected.lean

tactic: ext
state_before: J : Type u₁
inst✝² : Category J
K : Type u₂
inst✝¹ : Category K
inst✝ : Nonempty J
h : ∀ {α : Type u₁} (F : J → α), (∀ {j₁ j₂ : J}, (j₁ ⟶ j₂) → F j₁ = F j₂) → ∀ (j j' : J), F j = F j'
x✝ : Type u₁
F : J ⥤ Discrete x✝
j₁✝ j₂✝ : J
f : j₁✝ ⟶ j₂✝
⊢ F.obj j₁✝ = F.obj j₂✝

tactic: exact Discrete.eq_of_hom (F.map f)
state_before: case as
J : Type u₁
inst✝² : Category J
K : Type u₂
inst✝¹ : Category K
inst✝ : Nonempty J
h : ∀ {α : Type u₁} (F : J → α), (∀ {j₁ j₂ : J}, (j₁ ⟶ j₂) → F j₁ = F j₂) → ∀ (j j' : J), F j = F j'
x✝ : Type u₁
F : J ⥤ Discrete x✝
j₁✝ j₂✝ : J
f : j₁✝ ⟶ j₂✝
⊢ (F.obj j₁✝).as = (F.obj j₂✝).as
Theorem: CategoryTheory.Subobject.isIso_arrow_iff_eq_top
File: Mathlib/CategoryTheory/Subobject/Lattice.lean

tactic: rw [isIso_iff_mk_eq_top, mk_arrow]
state_before: C : Type u₁
inst✝¹ : Category C
X Y✝ Z : C
D : Type u₂
inst✝ : Category D
Y : C
P : Subobject Y
⊢ IsIso (arrow P) ↔ P = ⊤