1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: CoxeterSystem.length_simple_mul_ne
File: Mathlib/GroupTheory/Coxeter/Length.lean

tactic: convert cs.length_mul_simple_ne w⁻¹ i using 1
state_before: B : Type u_1
W : Type u_2
inst✝ : Group W
M : CoxeterMatrix B
cs : CoxeterSystem M W
w : W
i : B
⊢ cs.length (cs.simple i * w) ≠ cs.length w
state_after: case h.e'_2
B : Type u_1
W : Type u_2
inst✝ : Group W
M : CoxeterMatrix B
cs : CoxeterSystem M W
w : W
i : B
⊢ cs.length (cs.simple i * w) = cs.length (w⁻¹ * cs.simple i)

case h.e'_3
B : Type u_1
W : Type u_2
inst✝ : Group W
M : CoxeterMatrix B
cs : CoxeterSystem M W
w : W
i : B
⊢ cs.length w = cs.length w⁻¹

tactic: convert cs.length_inv ?_ using 2
state_before: case h.e'_2
B : Type u_1
W : Type u_2
inst✝ : Group W
M : CoxeterMatrix B
cs : CoxeterSystem M W
w : W
i : B
⊢ cs.length (cs.simple i * w) = cs.length (w⁻¹ * cs.simple i)
state_after: case h.e'_2.h.e'_6
B : Type u_1
W : Type u_2
inst✝ : Group W
M : CoxeterMatrix B
cs : CoxeterSystem M W
w : W
i : B
⊢ cs.simple i * w = (w⁻¹ * cs.simple i)⁻¹

tactic: simp
state_before: case h.e'_2.h.e'_6
B : Type u_1
W : Type u_2
inst✝ : Group W
M : CoxeterMatrix B
cs : CoxeterSystem M W
w : W
i : B
⊢ cs.simple i * w = (w⁻¹ * cs.simple i)⁻¹
state_after: no goals

tactic: simp
state_before: case h.e'_3
B : Type u_1
W : Type u_2
inst✝ : Group W
M : CoxeterMatrix B
cs : CoxeterSystem M W
w : W
i : B
⊢ cs.length w = cs.length w⁻¹
state_after: no goals
Theorem: Set.Ico_insert_right
File: Mathlib/Order/Interval/Set/Basic.lean

tactic: rw [insert_eq, union_comm, Ico_union_right h]
state_before: α : Type u_1
β : Type u_2
inst✝ : PartialOrder α
a b c : α
h : a ≤ b
⊢ insert b (Ico a b) = Icc a b
state_after: no goals
Theorem: FiniteDimensional.finrank_eq_of_rank_eq
File: Mathlib/LinearAlgebra/Dimension/Finrank.lean

tactic: apply_fun toNat at h
state_before: R : Type u
M : Type v
N : Type w
inst✝⁴ : Ring R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup N
inst✝ : Module R N
n : ℕ
h : Module.rank R M = ↑n
⊢ finrank R M = n
state_after: R : Type u
M : Type v
N : Type w
inst✝⁴ : Ring R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup N
inst✝ : Module R N
n : ℕ
h : toNat (Module.rank R M) = toNat ↑n
⊢ finrank R M = n

tactic: rw [toNat_natCast] at h
state_before: R : Type u
M : Type v
N : Type w
inst✝⁴ : Ring R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup N
inst✝ : Module R N
n : ℕ
h : toNat (Module.rank R M) = toNat ↑n
⊢ finrank R M = n
state_after: R : Type u
M : Type v
N : Type w
inst✝⁴ : Ring R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup N
inst✝ : Module R N
n : ℕ
h : toNat (Module.rank R M) = n
⊢ finrank R M = n

tactic: exact mod_cast h
state_before: R : Type u
M : Type v
N : Type w
inst✝⁴ : Ring R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup N
inst✝ : Module R N
n : ℕ
h : toNat (Module.rank R M) = n
⊢ finrank R M = n
state_after: no goals
Theorem: Real.tan_pi
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Basic.lean

tactic: rw [tan_periodic.eq, tan_zero]
state_before: ⊢ tan π = 0
state_after: no goals
Theorem: SimpleGraph.Colorable.of_embedding
File: Mathlib/Combinatorics/SimpleGraph/Coloring.lean

tactic: simp
state_before: V : Type u
G : SimpleGraph V
n✝ : ℕ
α : Type u_1
β : Type u_2
C : G.Coloring α
V' : Type u_3
G' : SimpleGraph V'
f : G ↪g G'
n : ℕ
h : G'.Colorable n
⊢ n ≤ card (Fin n)
state_after: no goals
Theorem: MvPolynomial.degreeOf_add_le
File: Mathlib/Algebra/MvPolynomial/Degrees.lean

tactic: simp_rw [degreeOf_eq_sup]
state_before: R : Type u
S : Type v
σ : Type u_1
τ : Type u_2
r : R
e : ℕ
n✝ m : σ
s : σ →₀ ℕ
inst✝ : CommSemiring R
p q : MvPolynomial σ R
n : σ
f g : MvPolynomial σ R
⊢ degreeOf n (f + g) ≤ max (degreeOf n f) (degreeOf n g)
state_after: R : Type u
S : Type v
σ : Type u_1
τ : Type u_2
r : R
e : ℕ
n✝ m : σ
s : σ →₀ ℕ
inst✝ : CommSemiring R
p q : MvPolynomial σ R
n : σ
f g : MvPolynomial σ R
⊢ ((f + g).support.sup fun m => m n) ≤ max (f.support.sup fun m => m n) (g.support.sup fun m => m n)

tactic: exact supDegree_add_le
state_before: R : Type u
S : Type v
σ : Type u_1
τ : Type u_2
r : R
e : ℕ
n✝ m : σ
s : σ →₀ ℕ
inst✝ : CommSemiring R
p q : MvPolynomial σ R
n : σ
f g : MvPolynomial σ R
⊢ ((f + g).support.sup fun m => m n) ≤ max (f.support.sup fun m => m n) (g.support.sup fun m => m n)
state_after: no goals
Theorem: Ordnode.Balanced.dual
File: Mathlib/Data/Ordmap/Ordset.lean

tactic: rw [size_dual, size_dual]
state_before: α : Type u_1
size✝ : ℕ
l : Ordnode α
x✝ : α
r : Ordnode α
b : BalancedSz l.size r.size
bl : l.Balanced
br : r.Balanced
⊢ BalancedSz r.dual.size l.dual.size
state_after: α : Type u_1
size✝ : ℕ
l : Ordnode α
x✝ : α
r : Ordnode α
b : BalancedSz l.size r.size
bl : l.Balanced
br : r.Balanced
⊢ BalancedSz r.size l.size

tactic: exact b.symm
state_before: α : Type u_1
size✝ : ℕ
l : Ordnode α
x✝ : α
r : Ordnode α
b : BalancedSz l.size r.size
bl : l.Balanced
br : r.Balanced
⊢ BalancedSz r.size l.size
state_after: no goals
Theorem: PFun.core_restrict
File: Mathlib/Data/PFun.lean

tactic: ext x
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ε : Type u_5
ι : Type u_6
f✝ : α →. β
f : α → β
s : Set β
⊢ (↑f).core s = f ⁻¹' s
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ε : Type u_5
ι : Type u_6
f✝ : α →. β
f : α → β
s : Set β
x : α
⊢ x ∈ (↑f).core s ↔ x ∈ f ⁻¹' s

tactic: simp [core_def]
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ε : Type u_5
ι : Type u_6
f✝ : α →. β
f : α → β
s : Set β
x : α
⊢ x ∈ (↑f).core s ↔ x ∈ f ⁻¹' s
state_after: no goals
Theorem: MeasureTheory.AEEqFun.toGerm_eq
File: Mathlib/MeasureTheory/Function/AEEqFun.lean

tactic: rw [← mk_toGerm, mk_coeFn]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝³ : MeasurableSpace α
μ ν : Measure α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
f : α →ₘ[μ] β
⊢ f.toGerm = ↑↑f
state_after: no goals
Theorem: iSup₂_eq_bot
File: Mathlib/Order/CompleteLattice.lean

tactic: simp
state_before: α : Type u_1
β : Type u_2
β₂ : Type u_3
γ : Type u_4
ι : Sort u_5
ι' : Sort u_6
κ : ι → Sort u_7
κ' : ι' → Sort u_8
inst✝ : CompleteLattice α
f✝ g s t : ι → α
a b : α
f : (i : ι) → κ i → α
⊢ ⨆ i, ⨆ j, f i j = ⊥ ↔ ∀ (i : ι) (j : κ i), f i j = ⊥
state_after: no goals
Theorem: Nat.coprime_fintype_prod_left_iff
File: Mathlib/Data/Nat/GCD/BigOperators.lean

tactic: simp [coprime_prod_left_iff]
state_before: ι : Type u_1
inst✝ : Fintype ι
s : ι → ℕ
x : ℕ
⊢ (∏ i : ι, s i).Coprime x ↔ ∀ (i : ι), (s i).Coprime x
state_after: no goals
Theorem: CategoryTheory.isDetector_def
File: Mathlib/CategoryTheory/Generator.lean

tactic: obtain rfl := Set.mem_singleton_iff.1 hH
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
G : C
hG : IsDetector G
X Y : C
f : X ⟶ Y
hf : ∀ (h : G ⟶ Y), ∃! h', h' ≫ f = h
H : C
hH : H ∈ {G}
h : H ⟶ Y
⊢ ∃! h', h' ≫ f = h
state_after: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
X Y : C
f : X ⟶ Y
H : C
h : H ⟶ Y
hG : IsDetector H
hf : ∀ (h : H ⟶ Y), ∃! h', h' ≫ f = h
hH : H ∈ {H}
⊢ ∃! h', h' ≫ f = h

tactic: exact hf h
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₂
inst✝ : Category.{v₂, u₂} D
X Y : C
f : X ⟶ Y
H : C
h : H ⟶ Y
hG : IsDetector H
hf : ∀ (h : H ⟶ Y), ∃! h', h' ≫ f = h
hH : H ∈ {H}
⊢ ∃! h', h' ≫ f = h
state_after: no goals
Theorem: InnerProductSpace.Core.inner_self_eq_norm_mul_norm
File: Mathlib/Analysis/InnerProductSpace/Basic.lean

tactic: rw [norm_eq_sqrt_inner, ← sqrt_mul inner_self_nonneg (re ⟪x, x⟫), sqrt_mul_self inner_self_nonneg]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝² : _root_.RCLike 𝕜
inst✝¹ : AddCommGroup F
inst✝ : Module 𝕜 F
c : Core 𝕜 F
x : F
⊢ re ⟪x, x⟫_𝕜 = ‖x‖ * ‖x‖
state_after: no goals
Theorem: Cardinal.mul_lt_aleph0_iff_of_ne_zero
File: Mathlib/SetTheory/Cardinal/Basic.lean

tactic: simp [mul_lt_aleph0_iff, ha, hb]
state_before: α β : Type u
a b : Cardinal.{u_1}
ha : a ≠ 0
hb : b ≠ 0
⊢ a * b < ℵ₀ ↔ a < ℵ₀ ∧ b < ℵ₀
state_after: no goals
Theorem: Metric.infDist_empty
File: Mathlib/Topology/MetricSpace/HausdorffDistance.lean

tactic: simp [infDist]
state_before: ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
s t u : Set α
x y : α
Φ : α → β
⊢ infDist x ∅ = 0
state_after: no goals
Theorem: toIcoMod_neg
File: Mathlib/Algebra/Order/ToIntervalMod.lean

tactic: simp_rw [toIcoMod, toIocMod, toIcoDiv_neg, neg_smul, add_smul]
state_before: α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
hα : Archimedean α
p : α
hp : 0 < p
a✝ b✝ c : α
n : ℤ
a b : α
⊢ toIcoMod hp a (-b) = p - toIocMod hp (-a) b
state_after: α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
hα : Archimedean α
p : α
hp : 0 < p
a✝ b✝ c : α
n : ℤ
a b : α
⊢ -b - -(toIocDiv hp (-a) b • p + 1 • p) = p - (b - toIocDiv hp (-a) b • p)

tactic: abel
state_before: α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
hα : Archimedean α
p : α
hp : 0 < p
a✝ b✝ c : α
n : ℤ
a b : α
⊢ -b - -(toIocDiv hp (-a) b • p + 1 • p) = p - (b - toIocDiv hp (-a) b • p)
state_after: no goals
Theorem: Multiset.card_powersetCard
File: Mathlib/Data/Multiset/Powerset.lean

tactic: simp [powersetCard_coe]
state_before: α : Type u_1
n : ℕ
s : Multiset α
⊢ ∀ (a : List α), card (powersetCard n ⟦a⟧) = (card ⟦a⟧).choose n
state_after: no goals
Theorem: Module.Baer.injective
File: Mathlib/Algebra/Module/Injective.lean

tactic: obtain ⟨h, H⟩ := Module.Baer.extension_property h i hi f
state_before: R : Type u
inst✝⁷ : Ring R
Q : Type v
inst✝⁶ : AddCommGroup Q
inst✝⁵ : Module R Q
M : Type u_1
N : Type u_2
inst✝⁴ : AddCommGroup M
inst✝³ : AddCommGroup N
inst✝² : Module R M
inst✝¹ : Module R N
i✝ : M →ₗ[R] N
f✝ : M →ₗ[R] Q
inst✝ : Fact (Function.Injective ⇑i✝)
h : Baer R Q
X Y : Type v
x✝³ : AddCommGroup X
x✝² : AddCommGroup Y
x✝¹ : Module R X
x✝ : Module R Y
i : X →ₗ[R] Y
hi : Function.Injective ⇑i
f : X →ₗ[R] Q
⊢ ∃ h, ∀ (x : X), h (i x) = f x
state_after: case intro
R : Type u
inst✝⁷ : Ring R
Q : Type v
inst✝⁶ : AddCommGroup Q
inst✝⁵ : Module R Q
M : Type u_1
N : Type u_2
inst✝⁴ : AddCommGroup M
inst✝³ : AddCommGroup N
inst✝² : Module R M
inst✝¹ : Module R N
i✝ : M →ₗ[R] N
f✝ : M →ₗ[R] Q
inst✝ : Fact (Function.Injective ⇑i✝)
h✝ : Baer R Q
X Y : Type v
x✝³ : AddCommGroup X
x✝² : AddCommGroup Y
x✝¹ : Module R X
x✝ : Module R Y
i : X →ₗ[R] Y
hi : Function.Injective ⇑i
f : X →ₗ[R] Q
h : Y →ₗ[R] Q
H : h ∘ₗ i = f
⊢ ∃ h, ∀ (x : X), h (i x) = f x

tactic: exact ⟨h, DFunLike.congr_fun H⟩
state_before: case intro
R : Type u
inst✝⁷ : Ring R
Q : Type v
inst✝⁶ : AddCommGroup Q
inst✝⁵ : Module R Q
M : Type u_1
N : Type u_2
inst✝⁴ : AddCommGroup M
inst✝³ : AddCommGroup N
inst✝² : Module R M
inst✝¹ : Module R N
i✝ : M →ₗ[R] N
f✝ : M →ₗ[R] Q
inst✝ : Fact (Function.Injective ⇑i✝)
h✝ : Baer R Q
X Y : Type v
x✝³ : AddCommGroup X
x✝² : AddCommGroup Y
x✝¹ : Module R X
x✝ : Module R Y
i : X →ₗ[R] Y
hi : Function.Injective ⇑i
f : X →ₗ[R] Q
h : Y →ₗ[R] Q
H : h ∘ₗ i = f
⊢ ∃ h, ∀ (x : X), h (i x) = f x
state_after: no goals
Theorem: Matrix.SpecialLinearGroup.SL2_inv_expl_det
File: Mathlib/LinearAlgebra/Matrix/SpecialLinearGroup.lean

tactic: rw [Matrix.det_fin_two, mul_comm]
state_before: n : Type u
inst✝³ : DecidableEq n
inst✝² : Fintype n
R : Type v
inst✝¹ : CommRing R
S : Type u_1
inst✝ : CommRing S
A : SL(2, R)
⊢ det ![![↑A 1 1, -↑A 0 1], ![-↑A 1 0, ↑A 0 0]] = 1
state_after: n : Type u
inst✝³ : DecidableEq n
inst✝² : Fintype n
R : Type v
inst✝¹ : CommRing R
S : Type u_1
inst✝ : CommRing S
A : SL(2, R)
⊢ ![![↑A 1 1, -↑A 0 1], ![-↑A 1 0, ↑A 0 0]] 1 1 * ![![↑A 1 1, -↑A 0 1], ![-↑A 1 0, ↑A 0 0]] 0 0 -
      ![![↑A 1 1, -↑A 0 1], ![-↑A 1 0, ↑A 0 0]] 0 1 * ![![↑A 1 1, -↑A 0 1], ![-↑A 1 0, ↑A 0 0]] 1 0 =
    1

tactic: simp only [cons_val_zero, cons_val_one, head_cons, mul_neg, neg_mul, neg_neg]
state_before: n : Type u
inst✝³ : DecidableEq n
inst✝² : Fintype n
R : Type v
inst✝¹ : CommRing R
S : Type u_1
inst✝ : CommRing S
A : SL(2, R)
⊢ ![![↑A 1 1, -↑A 0 1], ![-↑A 1 0, ↑A 0 0]] 1 1 * ![![↑A 1 1, -↑A 0 1], ![-↑A 1 0, ↑A 0 0]] 0 0 -
      ![![↑A 1 1, -↑A 0 1], ![-↑A 1 0, ↑A 0 0]] 0 1 * ![![↑A 1 1, -↑A 0 1], ![-↑A 1 0, ↑A 0 0]] 1 0 =
    1
state_after: n : Type u
inst✝³ : DecidableEq n
inst✝² : Fintype n
R : Type v
inst✝¹ : CommRing R
S : Type u_1
inst✝ : CommRing S
A : SL(2, R)
⊢ ↑A 0 0 * ↑A 1 1 - ↑A 0 1 * ↑A 1 0 = 1

tactic: have := A.2
state_before: n : Type u
inst✝³ : DecidableEq n
inst✝² : Fintype n
R : Type v
inst✝¹ : CommRing R
S : Type u_1
inst✝ : CommRing S
A : SL(2, R)
⊢ ↑A 0 0 * ↑A 1 1 - ↑A 0 1 * ↑A 1 0 = 1
state_after: n : Type u
inst✝³ : DecidableEq n
inst✝² : Fintype n
R : Type v
inst✝¹ : CommRing R
S : Type u_1
inst✝ : CommRing S
A : SL(2, R)
this : (↑A).det = 1
⊢ ↑A 0 0 * ↑A 1 1 - ↑A 0 1 * ↑A 1 0 = 1

tactic: rw [Matrix.det_fin_two] at this
state_before: n : Type u
inst✝³ : DecidableEq n
inst✝² : Fintype n
R : Type v
inst✝¹ : CommRing R
S : Type u_1
inst✝ : CommRing S
A : SL(2, R)
this : (↑A).det = 1
⊢ ↑A 0 0 * ↑A 1 1 - ↑A 0 1 * ↑A 1 0 = 1
state_after: n : Type u
inst✝³ : DecidableEq n
inst✝² : Fintype n
R : Type v
inst✝¹ : CommRing R
S : Type u_1
inst✝ : CommRing S
A : SL(2, R)
this : ↑A 0 0 * ↑A 1 1 - ↑A 0 1 * ↑A 1 0 = 1
⊢ ↑A 0 0 * ↑A 1 1 - ↑A 0 1 * ↑A 1 0 = 1

tactic: convert this
state_before: n : Type u
inst✝³ : DecidableEq n
inst✝² : Fintype n
R : Type v
inst✝¹ : CommRing R
S : Type u_1
inst✝ : CommRing S
A : SL(2, R)
this : ↑A 0 0 * ↑A 1 1 - ↑A 0 1 * ↑A 1 0 = 1
⊢ ↑A 0 0 * ↑A 1 1 - ↑A 0 1 * ↑A 1 0 = 1
state_after: no goals
Theorem: CauSeq.sup_equiv_sup
File: Mathlib/Algebra/Order/CauSeq/Basic.lean

tactic: intro ε ε0
state_before: α : Type u_1
β : Type u_2
inst✝ : LinearOrderedField α
a₁ b₁ a₂ b₂ : CauSeq α abs
ha : a₁ ≈ a₂
hb : b₁ ≈ b₂
⊢ a₁ ⊔ b₁ ≈ a₂ ⊔ b₂
state_after: α : Type u_1
β : Type u_2
inst✝ : LinearOrderedField α
a₁ b₁ a₂ b₂ : CauSeq α abs
ha : a₁ ≈ a₂
hb : b₁ ≈ b₂
ε : α
ε0 : ε > 0
⊢ ∃ i, ∀ j ≥ i, |↑(a₁ ⊔ b₁ - a₂ ⊔ b₂) j| < ε

tactic: obtain ⟨ai, hai⟩ := ha ε ε0
state_before: α : Type u_1
β : Type u_2
inst✝ : LinearOrderedField α
a₁ b₁ a₂ b₂ : CauSeq α abs
ha : a₁ ≈ a₂
hb : b₁ ≈ b₂
ε : α
ε0 : ε > 0
⊢ ∃ i, ∀ j ≥ i, |↑(a₁ ⊔ b₁ - a₂ ⊔ b₂) j| < ε
state_after: case intro
α : Type u_1
β : Type u_2
inst✝ : LinearOrderedField α
a₁ b₁ a₂ b₂ : CauSeq α abs
ha : a₁ ≈ a₂
hb : b₁ ≈ b₂
ε : α
ε0 : ε > 0
ai : ℕ
hai : ∀ j ≥ ai, |↑(a₁ - a₂) j| < ε
⊢ ∃ i, ∀ j ≥ i, |↑(a₁ ⊔ b₁ - a₂ ⊔ b₂) j| < ε

tactic: obtain ⟨bi, hbi⟩ := hb ε ε0
state_before: case intro
α : Type u_1
β : Type u_2
inst✝ : LinearOrderedField α
a₁ b₁ a₂ b₂ : CauSeq α abs
ha : a₁ ≈ a₂
hb : b₁ ≈ b₂
ε : α
ε0 : ε > 0
ai : ℕ
hai : ∀ j ≥ ai, |↑(a₁ - a₂) j| < ε
⊢ ∃ i, ∀ j ≥ i, |↑(a₁ ⊔ b₁ - a₂ ⊔ b₂) j| < ε
state_after: case intro.intro
α : Type u_1
β : Type u_2
inst✝ : LinearOrderedField α
a₁ b₁ a₂ b₂ : CauSeq α abs
ha : a₁ ≈ a₂
hb : b₁ ≈ b₂
ε : α
ε0 : ε > 0
ai : ℕ
hai : ∀ j ≥ ai, |↑(a₁ - a₂) j| < ε
bi : ℕ
hbi : ∀ j ≥ bi, |↑(b₁ - b₂) j| < ε
⊢ ∃ i, ∀ j ≥ i, |↑(a₁ ⊔ b₁ - a₂ ⊔ b₂) j| < ε

tactic: exact
  ⟨ai ⊔ bi, fun i hi =>
    (abs_max_sub_max_le_max (a₁ i) (b₁ i) (a₂ i) (b₂ i)).trans_lt
      (max_lt (hai i (sup_le_iff.mp hi).1) (hbi i (sup_le_iff.mp hi).2))⟩
state_before: case intro.intro
α : Type u_1
β : Type u_2
inst✝ : LinearOrderedField α
a₁ b₁ a₂ b₂ : CauSeq α abs
ha : a₁ ≈ a₂
hb : b₁ ≈ b₂
ε : α
ε0 : ε > 0
ai : ℕ
hai : ∀ j ≥ ai, |↑(a₁ - a₂) j| < ε
bi : ℕ
hbi : ∀ j ≥ bi, |↑(b₁ - b₂) j| < ε
⊢ ∃ i, ∀ j ≥ i, |↑(a₁ ⊔ b₁ - a₂ ⊔ b₂) j| < ε
state_after: no goals
Theorem: Set.Finite.isClosed_biUnion
File: Mathlib/Topology/Basic.lean

tactic: simp only [← isOpen_compl_iff, compl_iUnion] at *
state_before: X : Type u
Y : Type v
ι : Sort w
α : Type u_1
β : Type u_2
x : X
s✝ s₁ s₂ t : Set X
p p₁ p₂ : X → Prop
inst✝ : TopologicalSpace X
s : Set α
f : α → Set X
hs : s.Finite
h : ∀ i ∈ s, IsClosed (f i)
⊢ IsClosed (⋃ i ∈ s, f i)
state_after: X : Type u
Y : Type v
ι : Sort w
α : Type u_1
β : Type u_2
x : X
s✝ s₁ s₂ t : Set X
p p₁ p₂ : X → Prop
inst✝ : TopologicalSpace X
s : Set α
f : α → Set X
hs : s.Finite
h : ∀ i ∈ s, IsOpen (f i)ᶜ
⊢ IsOpen (⋂ i ∈ s, (f i)ᶜ)

tactic: exact hs.isOpen_biInter h
state_before: X : Type u
Y : Type v
ι : Sort w
α : Type u_1
β : Type u_2
x : X
s✝ s₁ s₂ t : Set X
p p₁ p₂ : X → Prop
inst✝ : TopologicalSpace X
s : Set α
f : α → Set X
hs : s.Finite
h : ∀ i ∈ s, IsOpen (f i)ᶜ
⊢ IsOpen (⋂ i ∈ s, (f i)ᶜ)
state_after: no goals
Theorem: Pell.isPell_mul
File: Mathlib/NumberTheory/PellMatiyasevic.lean

tactic: simp [mul_comm, mul_left_comm c, mul_assoc,
star_mul, isPell_norm.1 hb, isPell_norm.1 hc]
state_before: d : ℤ
b c : ℤ√d
hb : IsPell b
hc : IsPell c
⊢ b * c * star (b * c) = 1
state_after: no goals
Theorem: Real.rpow_sum_le_const_mul_sum_rpow
File: Mathlib/Analysis/MeanInequalities.lean

tactic: have :=
  NNReal.coe_le_coe.2
    (NNReal.rpow_sum_le_const_mul_sum_rpow s (fun i => ⟨_, abs_nonneg (f i)⟩) hp)
state_before: ι : Type u
s : Finset ι
f g : ι → ℝ
p q : ℝ
hp : 1 ≤ p
⊢ (∑ i ∈ s, |f i|) ^ p ≤ ↑s.card ^ (p - 1) * ∑ i ∈ s, |f i| ^ p
state_after: ι : Type u
s : Finset ι
f g : ι → ℝ
p q : ℝ
hp : 1 ≤ p
this : ↑((∑ i ∈ s, (fun i => ⟨|f i|, ⋯⟩) i) ^ p) ≤ ↑(↑s.card ^ (p - 1) * ∑ i ∈ s, (fun i => ⟨|f i|, ⋯⟩) i ^ p)
⊢ (∑ i ∈ s, |f i|) ^ p ≤ ↑s.card ^ (p - 1) * ∑ i ∈ s, |f i| ^ p

tactic: push_cast at this
state_before: ι : Type u
s : Finset ι
f g : ι → ℝ
p q : ℝ
hp : 1 ≤ p
this : ↑((∑ i ∈ s, (fun i => ⟨|f i|, ⋯⟩) i) ^ p) ≤ ↑(↑s.card ^ (p - 1) * ∑ i ∈ s, (fun i => ⟨|f i|, ⋯⟩) i ^ p)
⊢ (∑ i ∈ s, |f i|) ^ p ≤ ↑s.card ^ (p - 1) * ∑ i ∈ s, |f i| ^ p
state_after: ι : Type u
s : Finset ι
f g : ι → ℝ
p q : ℝ
hp : 1 ≤ p
this : (∑ x ∈ s, |f x|) ^ p ≤ ↑s.card ^ (p - 1) * ∑ x ∈ s, |f x| ^ p
⊢ (∑ i ∈ s, |f i|) ^ p ≤ ↑s.card ^ (p - 1) * ∑ i ∈ s, |f i| ^ p

tactic: exact this
state_before: ι : Type u
s : Finset ι
f g : ι → ℝ
p q : ℝ
hp : 1 ≤ p
this : (∑ x ∈ s, |f x|) ^ p ≤ ↑s.card ^ (p - 1) * ∑ x ∈ s, |f x| ^ p
⊢ (∑ i ∈ s, |f i|) ^ p ≤ ↑s.card ^ (p - 1) * ∑ i ∈ s, |f i| ^ p
state_after: no goals
Theorem: SSet.Quasicategory.hornFilling
File: Mathlib/AlgebraicTopology/Quasicategory.lean

tactic: cases n using Nat.casesAuxOn with
| zero => simp [Fin.lt_iff_val_lt_val] at hn
| succ n =>
cases n using Nat.casesAuxOn with
| zero =>
  simp only [Fin.lt_iff_val_lt_val, Fin.val_zero, Fin.val_last, zero_add, Nat.lt_one_iff] at h0 hn
  simp [hn] at h0
| succ n => exact Quasicategory.hornFilling' σ₀ h0 hn
state_before: S : SSet
inst✝ : S.Quasicategory
n : ℕ
i : Fin (n + 1)
h0 : 0 < i
hn : i < Fin.last n
σ₀ : Λ[n, i] ⟶ S
⊢ ∃ σ, σ₀ = hornInclusion n i ≫ σ
state_after: no goals

tactic: simp [Fin.lt_iff_val_lt_val] at hn
state_before: case zero
S : SSet
inst✝ : S.Quasicategory
i : Fin (0 + 1)
h0 : 0 < i
hn : i < Fin.last 0
σ₀ : Λ[0, i] ⟶ S
⊢ ∃ σ, σ₀ = hornInclusion 0 i ≫ σ
state_after: no goals

tactic: cases n using Nat.casesAuxOn with
| zero =>
  simp only [Fin.lt_iff_val_lt_val, Fin.val_zero, Fin.val_last, zero_add, Nat.lt_one_iff] at h0 hn
  simp [hn] at h0
| succ n => exact Quasicategory.hornFilling' σ₀ h0 hn
state_before: case succ
S : SSet
inst✝ : S.Quasicategory
n : ℕ
i : Fin (n + 1 + 1)
h0 : 0 < i
hn : i < Fin.last (n + 1)
σ₀ : Λ[n + 1, i] ⟶ S
⊢ ∃ σ, σ₀ = hornInclusion (n + 1) i ≫ σ
state_after: no goals

tactic: simp only [Fin.lt_iff_val_lt_val, Fin.val_zero, Fin.val_last, zero_add, Nat.lt_one_iff] at h0 hn
state_before: case succ.zero
S : SSet
inst✝ : S.Quasicategory
i : Fin (0 + 1 + 1)
h0 : 0 < i
hn : i < Fin.last (0 + 1)
σ₀ : Λ[0 + 1, i] ⟶ S
⊢ ∃ σ, σ₀ = hornInclusion (0 + 1) i ≫ σ
state_after: case succ.zero
S : SSet
inst✝ : S.Quasicategory
i : Fin (0 + 1 + 1)
σ₀ : Λ[0 + 1, i] ⟶ S
h0 : 0 < ↑i
hn : ↑i = 0
⊢ ∃ σ, σ₀ = hornInclusion (0 + 1) i ≫ σ

tactic: simp [hn] at h0
state_before: case succ.zero
S : SSet
inst✝ : S.Quasicategory
i : Fin (0 + 1 + 1)
σ₀ : Λ[0 + 1, i] ⟶ S
h0 : 0 < ↑i
hn : ↑i = 0
⊢ ∃ σ, σ₀ = hornInclusion (0 + 1) i ≫ σ
state_after: no goals

tactic: exact Quasicategory.hornFilling' σ₀ h0 hn
state_before: case succ.succ
S : SSet
inst✝ : S.Quasicategory
n : ℕ
i : Fin (n + 1 + 1 + 1)
h0 : 0 < i
hn : i < Fin.last (n + 1 + 1)
σ₀ : Λ[n + 1 + 1, i] ⟶ S
⊢ ∃ σ, σ₀ = hornInclusion (n + 1 + 1) i ≫ σ
state_after: no goals
Theorem: ValuationSubring.mapOfLE_comp_valuation
File: Mathlib/RingTheory/Valuation/ValuationSubring.lean

tactic: ext
state_before: K : Type u
inst✝ : Field K
A R S : ValuationSubring K
h : R ≤ S
⊢ ⇑(R.mapOfLE S h) ∘ ⇑R.valuation = ⇑S.valuation
state_after: case h
K : Type u
inst✝ : Field K
A R S : ValuationSubring K
h : R ≤ S
x✝ : K
⊢ (⇑(R.mapOfLE S h) ∘ ⇑R.valuation) x✝ = S.valuation x✝

tactic: rfl
state_before: case h
K : Type u
inst✝ : Field K
A R S : ValuationSubring K
h : R ≤ S
x✝ : K
⊢ (⇑(R.mapOfLE S h) ∘ ⇑R.valuation) x✝ = S.valuation x✝
state_after: no goals
Theorem: LipschitzWith.eval
File: Mathlib/Topology/EMetricSpace/Lipschitz.lean

tactic: convert edist_le_pi_edist f g i
state_before: α✝ : Type u
β : Type v
γ : Type w
ι : Type x
inst✝⁴ : PseudoEMetricSpace α✝
inst✝³ : PseudoEMetricSpace β
inst✝² : PseudoEMetricSpace γ
K : ℝ≥0
f✝ : α✝ → β
x y : α✝
r : ℝ≥0∞
α : ι → Type u
inst✝¹ : (i : ι) → PseudoEMetricSpace (α i)
inst✝ : Fintype ι
i : ι
f g : (x : ι) → α x
⊢ edist (eval i f) (eval i g) ≤ edist f g
state_after: no goals
Theorem: Finset.pairwiseDisjoint_range_singleton
File: Mathlib/Data/Finset/Pairwise.lean

tactic: rintro _ ⟨a, rfl⟩ _ ⟨b, rfl⟩ h
state_before: α : Type u_1
ι : Type u_2
ι' : Type u_3
⊢ (Set.range singleton).PairwiseDisjoint id
state_after: case intro.intro
α : Type u_1
ι : Type u_2
ι' : Type u_3
a b : α
h : {a} ≠ {b}
⊢ (Disjoint on id) {a} {b}

tactic: exact disjoint_singleton.2 (ne_of_apply_ne _ h)
state_before: case intro.intro
α : Type u_1
ι : Type u_2
ι' : Type u_3
a b : α
h : {a} ≠ {b}
⊢ (Disjoint on id) {a} {b}
state_after: no goals
Theorem: MulAction.set_mem_fixedBy_iff
File: Mathlib/GroupTheory/GroupAction/FixedPoints.lean

tactic: simp_rw [mem_fixedBy, ← eq_inv_smul_iff, Set.ext_iff, Set.mem_inv_smul_set_iff, Iff.comm]
state_before: α : Type u_1
G : Type u_2
inst✝³ : Group G
inst✝² : MulAction G α
M : Type u_3
inst✝¹ : Monoid M
inst✝ : MulAction M α
s : Set α
g : G
⊢ s ∈ fixedBy (Set α) g ↔ ∀ (x : α), g • x ∈ s ↔ x ∈ s
state_after: no goals
Theorem: Monotone.map_csSup_of_continuousAt
File: Mathlib/Topology/Order/Monotone.lean

tactic: refine ((isLUB_csSup (ne.image f) (Mf.map_bddAbove H)).unique ?_).symm
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝⁶ : ConditionallyCompleteLinearOrder α
inst✝⁵ : TopologicalSpace α
inst✝⁴ : OrderTopology α
inst✝³ : ConditionallyCompleteLinearOrder β
inst✝² : TopologicalSpace β
inst✝¹ : OrderClosedTopology β
inst✝ : Nonempty γ
f : α → β
s : Set α
Cf : ContinuousAt f (sSup s)
Mf : Monotone f
ne : s.Nonempty
H : BddAbove s
⊢ f (sSup s) = sSup (f '' s)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝⁶ : ConditionallyCompleteLinearOrder α
inst✝⁵ : TopologicalSpace α
inst✝⁴ : OrderTopology α
inst✝³ : ConditionallyCompleteLinearOrder β
inst✝² : TopologicalSpace β
inst✝¹ : OrderClosedTopology β
inst✝ : Nonempty γ
f : α → β
s : Set α
Cf : ContinuousAt f (sSup s)
Mf : Monotone f
ne : s.Nonempty
H : BddAbove s
⊢ IsLUB (f '' s) (f (sSup s))

tactic: refine (isLUB_csSup ne H).isLUB_of_tendsto (fun x _ y _ xy => Mf xy) ne ?_
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝⁶ : ConditionallyCompleteLinearOrder α
inst✝⁵ : TopologicalSpace α
inst✝⁴ : OrderTopology α
inst✝³ : ConditionallyCompleteLinearOrder β
inst✝² : TopologicalSpace β
inst✝¹ : OrderClosedTopology β
inst✝ : Nonempty γ
f : α → β
s : Set α
Cf : ContinuousAt f (sSup s)
Mf : Monotone f
ne : s.Nonempty
H : BddAbove s
⊢ IsLUB (f '' s) (f (sSup s))
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝⁶ : ConditionallyCompleteLinearOrder α
inst✝⁵ : TopologicalSpace α
inst✝⁴ : OrderTopology α
inst✝³ : ConditionallyCompleteLinearOrder β
inst✝² : TopologicalSpace β
inst✝¹ : OrderClosedTopology β
inst✝ : Nonempty γ
f : α → β
s : Set α
Cf : ContinuousAt f (sSup s)
Mf : Monotone f
ne : s.Nonempty
H : BddAbove s
⊢ Tendsto f (𝓝[s] sSup s) (𝓝 (f (sSup s)))

tactic: exact Cf.mono_left inf_le_left
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝⁶ : ConditionallyCompleteLinearOrder α
inst✝⁵ : TopologicalSpace α
inst✝⁴ : OrderTopology α
inst✝³ : ConditionallyCompleteLinearOrder β
inst✝² : TopologicalSpace β
inst✝¹ : OrderClosedTopology β
inst✝ : Nonempty γ
f : α → β
s : Set α
Cf : ContinuousAt f (sSup s)
Mf : Monotone f
ne : s.Nonempty
H : BddAbove s
⊢ Tendsto f (𝓝[s] sSup s) (𝓝 (f (sSup s)))
state_after: no goals