1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: cardinal_mk_algHom_le_rank
File: Mathlib/LinearAlgebra/FreeModule/Finite/Matrix.lean

tactic: convert (linearIndependent_algHom_toLinearMap K M L).cardinal_lift_le_rank
state_before: R : Type u
S : Type u'
M✝ : Type v
N : Type w
K : Type u_1
M : Type u_2
L : Type v
inst✝⁷ : CommRing K
inst✝⁶ : Ring M
inst✝⁵ : Algebra K M
inst✝⁴ : Module.Free K M
inst✝³ : Module.Finite K M
inst✝² : CommRing L
inst✝¹ : IsDomain L
inst✝ : Algebra K L
⊢ #(M →ₐ[K] L) ≤ lift.{v, u_2} (Module.rank K M)
state_after: case h.e'_3
R : Type u
S : Type u'
M✝ : Type v
N : Type w
K : Type u_1
M : Type u_2
L : Type v
inst✝⁷ : CommRing K
inst✝⁶ : Ring M
inst✝⁵ : Algebra K M
inst✝⁴ : Module.Free K M
inst✝³ : Module.Finite K M
inst✝² : CommRing L
inst✝¹ : IsDomain L
inst✝ : Algebra K L
⊢ #(M →ₐ[K] L) = lift.{max u_2 v, max u_2 v} #(M →ₐ[K] L)

case h.e'_4
R : Type u
S : Type u'
M✝ : Type v
N : Type w
K : Type u_1
M : Type u_2
L : Type v
inst✝⁷ : CommRing K
inst✝⁶ : Ring M
inst✝⁵ : Algebra K M
inst✝⁴ : Module.Free K M
inst✝³ : Module.Finite K M
inst✝² : CommRing L
inst✝¹ : IsDomain L
inst✝ : Algebra K L
⊢ lift.{v, u_2} (Module.rank K M) = lift.{max u_2 v, max u_2 v} (Module.rank L (M →ₗ[K] L))

tactic: rw [lift_id]
state_before: case h.e'_3
R : Type u
S : Type u'
M✝ : Type v
N : Type w
K : Type u_1
M : Type u_2
L : Type v
inst✝⁷ : CommRing K
inst✝⁶ : Ring M
inst✝⁵ : Algebra K M
inst✝⁴ : Module.Free K M
inst✝³ : Module.Finite K M
inst✝² : CommRing L
inst✝¹ : IsDomain L
inst✝ : Algebra K L
⊢ #(M →ₐ[K] L) = lift.{max u_2 v, max u_2 v} #(M →ₐ[K] L)
state_after: no goals

tactic: have := Module.nontrivial K L
state_before: case h.e'_4
R : Type u
S : Type u'
M✝ : Type v
N : Type w
K : Type u_1
M : Type u_2
L : Type v
inst✝⁷ : CommRing K
inst✝⁶ : Ring M
inst✝⁵ : Algebra K M
inst✝⁴ : Module.Free K M
inst✝³ : Module.Finite K M
inst✝² : CommRing L
inst✝¹ : IsDomain L
inst✝ : Algebra K L
⊢ lift.{v, u_2} (Module.rank K M) = lift.{max u_2 v, max u_2 v} (Module.rank L (M →ₗ[K] L))
state_after: case h.e'_4
R : Type u
S : Type u'
M✝ : Type v
N : Type w
K : Type u_1
M : Type u_2
L : Type v
inst✝⁷ : CommRing K
inst✝⁶ : Ring M
inst✝⁵ : Algebra K M
inst✝⁴ : Module.Free K M
inst✝³ : Module.Finite K M
inst✝² : CommRing L
inst✝¹ : IsDomain L
inst✝ : Algebra K L
this : Nontrivial K
⊢ lift.{v, u_2} (Module.rank K M) = lift.{max u_2 v, max u_2 v} (Module.rank L (M →ₗ[K] L))

tactic: rw [lift_id, FiniteDimensional.rank_linearMap_self]
state_before: case h.e'_4
R : Type u
S : Type u'
M✝ : Type v
N : Type w
K : Type u_1
M : Type u_2
L : Type v
inst✝⁷ : CommRing K
inst✝⁶ : Ring M
inst✝⁵ : Algebra K M
inst✝⁴ : Module.Free K M
inst✝³ : Module.Finite K M
inst✝² : CommRing L
inst✝¹ : IsDomain L
inst✝ : Algebra K L
this : Nontrivial K
⊢ lift.{v, u_2} (Module.rank K M) = lift.{max u_2 v, max u_2 v} (Module.rank L (M →ₗ[K] L))
state_after: no goals
Theorem: SimplicialObject.Splitting.IndexSet.eqId_iff_mono
File: Mathlib/AlgebraicTopology/SplitSimplicialObject.lean

tactic: constructor
state_before: C : Type u_1
inst✝ : Category.{?u.4635, u_1} C
Δ : SimplexCategoryᵒᵖ
A : IndexSet Δ
⊢ A.EqId ↔ Mono A.e
state_after: case mp
C : Type u_1
inst✝ : Category.{?u.4635, u_1} C
Δ : SimplexCategoryᵒᵖ
A : IndexSet Δ
⊢ A.EqId → Mono A.e

case mpr
C : Type u_1
inst✝ : Category.{?u.4635, u_1} C
Δ : SimplexCategoryᵒᵖ
A : IndexSet Δ
⊢ Mono A.e → A.EqId

tactic: intro h
state_before: case mp
C : Type u_1
inst✝ : Category.{?u.4635, u_1} C
Δ : SimplexCategoryᵒᵖ
A : IndexSet Δ
⊢ A.EqId → Mono A.e
state_after: case mp
C : Type u_1
inst✝ : Category.{?u.4635, u_1} C
Δ : SimplexCategoryᵒᵖ
A : IndexSet Δ
h : A.EqId
⊢ Mono A.e

tactic: dsimp at h
state_before: case mp
C : Type u_1
inst✝ : Category.{?u.4635, u_1} C
Δ : SimplexCategoryᵒᵖ
A : IndexSet Δ
h : A.EqId
⊢ Mono A.e
state_after: case mp
C : Type u_1
inst✝ : Category.{?u.4635, u_1} C
Δ : SimplexCategoryᵒᵖ
A : IndexSet Δ
h : A = id Δ
⊢ Mono A.e

tactic: subst h
state_before: case mp
C : Type u_1
inst✝ : Category.{?u.4635, u_1} C
Δ : SimplexCategoryᵒᵖ
A : IndexSet Δ
h : A = id Δ
⊢ Mono A.e
state_after: case mp
C : Type u_1
inst✝ : Category.{?u.4635, u_1} C
Δ : SimplexCategoryᵒᵖ
⊢ Mono (id Δ).e

tactic: dsimp only [id, e]
state_before: case mp
C : Type u_1
inst✝ : Category.{?u.4635, u_1} C
Δ : SimplexCategoryᵒᵖ
⊢ Mono (id Δ).e
state_after: case mp
C : Type u_1
inst✝ : Category.{?u.4635, u_1} C
Δ : SimplexCategoryᵒᵖ
⊢ Mono (𝟙 Δ.unop)

tactic: infer_instance
state_before: case mp
C : Type u_1
inst✝ : Category.{?u.4635, u_1} C
Δ : SimplexCategoryᵒᵖ
⊢ Mono (𝟙 Δ.unop)
state_after: no goals

tactic: intro h
state_before: case mpr
C : Type u_1
inst✝ : Category.{?u.4635, u_1} C
Δ : SimplexCategoryᵒᵖ
A : IndexSet Δ
⊢ Mono A.e → A.EqId
state_after: case mpr
C : Type u_1
inst✝ : Category.{?u.4635, u_1} C
Δ : SimplexCategoryᵒᵖ
A : IndexSet Δ
h : Mono A.e
⊢ A.EqId

tactic: rw [eqId_iff_len_le]
state_before: case mpr
C : Type u_1
inst✝ : Category.{?u.4635, u_1} C
Δ : SimplexCategoryᵒᵖ
A : IndexSet Δ
h : Mono A.e
⊢ A.EqId
state_after: case mpr
C : Type u_1
inst✝ : Category.{?u.4635, u_1} C
Δ : SimplexCategoryᵒᵖ
A : IndexSet Δ
h : Mono A.e
⊢ Δ.unop.len ≤ A.fst.unop.len

tactic: exact len_le_of_mono h
state_before: case mpr
C : Type u_1
inst✝ : Category.{?u.4635, u_1} C
Δ : SimplexCategoryᵒᵖ
A : IndexSet Δ
h : Mono A.e
⊢ Δ.unop.len ≤ A.fst.unop.len
state_after: no goals
Theorem: hasBasis_nhdsSet_Iic_Iio
File: Mathlib/Topology/Order/NhdsSet.lean

tactic: refine ⟨fun s ↦ ⟨fun hs ↦ ?_, fun ⟨b, hab, hb⟩ ↦ mem_of_superset (Iio_mem_nhdsSet_Iic hab) hb⟩⟩
state_before: α : Type u_1
inst✝² : LinearOrder α
inst✝¹ : TopologicalSpace α
inst✝ : OrderTopology α
a : α
h : Nonempty ↑(Ioi a)
⊢ (𝓝ˢ (Iic a)).HasBasis (fun x => a < x) Iio
state_after: α : Type u_1
inst✝² : LinearOrder α
inst✝¹ : TopologicalSpace α
inst✝ : OrderTopology α
a : α
h : Nonempty ↑(Ioi a)
s : Set α
hs : s ∈ 𝓝ˢ (Iic a)
⊢ ∃ i, a < i ∧ Iio i ⊆ s

tactic: rw [nhdsSet_Iic, mem_sup, mem_principal] at hs
state_before: α : Type u_1
inst✝² : LinearOrder α
inst✝¹ : TopologicalSpace α
inst✝ : OrderTopology α
a : α
h : Nonempty ↑(Ioi a)
s : Set α
hs : s ∈ 𝓝ˢ (Iic a)
⊢ ∃ i, a < i ∧ Iio i ⊆ s
state_after: α : Type u_1
inst✝² : LinearOrder α
inst✝¹ : TopologicalSpace α
inst✝ : OrderTopology α
a : α
h : Nonempty ↑(Ioi a)
s : Set α
hs : s ∈ 𝓝 a ∧ Iio a ⊆ s
⊢ ∃ i, a < i ∧ Iio i ⊆ s

tactic: rcases exists_Ico_subset_of_mem_nhds hs.1 (Set.nonempty_coe_sort.1 h) with ⟨b, hab, hbs⟩
state_before: α : Type u_1
inst✝² : LinearOrder α
inst✝¹ : TopologicalSpace α
inst✝ : OrderTopology α
a : α
h : Nonempty ↑(Ioi a)
s : Set α
hs : s ∈ 𝓝 a ∧ Iio a ⊆ s
⊢ ∃ i, a < i ∧ Iio i ⊆ s
state_after: case intro.intro
α : Type u_1
inst✝² : LinearOrder α
inst✝¹ : TopologicalSpace α
inst✝ : OrderTopology α
a : α
h : Nonempty ↑(Ioi a)
s : Set α
hs : s ∈ 𝓝 a ∧ Iio a ⊆ s
b : α
hab : a < b
hbs : Ico a b ⊆ s
⊢ ∃ i, a < i ∧ Iio i ⊆ s

tactic: exact ⟨b, hab, Iio_subset_Iio_union_Ico.trans (union_subset hs.2 hbs)⟩
state_before: case intro.intro
α : Type u_1
inst✝² : LinearOrder α
inst✝¹ : TopologicalSpace α
inst✝ : OrderTopology α
a : α
h : Nonempty ↑(Ioi a)
s : Set α
hs : s ∈ 𝓝 a ∧ Iio a ⊆ s
b : α
hab : a < b
hbs : Ico a b ⊆ s
⊢ ∃ i, a < i ∧ Iio i ⊆ s
state_after: no goals
Theorem: Finmap.ext_lookup
File: Mathlib/Data/Finmap.lean

tactic: simp only [AList.lookup, lookup_toFinmap] at h
state_before: α : Type u
β : α → Type v
inst✝ : DecidableEq α
s₁✝ s₂✝ : Finmap β
s₁ s₂ : AList β
h : ∀ (x : α), lookup x ⟦s₁⟧ = lookup x ⟦s₂⟧
⊢ ⟦s₁⟧ = ⟦s₂⟧
state_after: α : Type u
β : α → Type v
inst✝ : DecidableEq α
s₁✝ s₂✝ : Finmap β
s₁ s₂ : AList β
h : ∀ (x : α), dlookup x s₁.entries = dlookup x s₂.entries
⊢ ⟦s₁⟧ = ⟦s₂⟧

tactic: rw [AList.toFinmap_eq]
state_before: α : Type u
β : α → Type v
inst✝ : DecidableEq α
s₁✝ s₂✝ : Finmap β
s₁ s₂ : AList β
h : ∀ (x : α), dlookup x s₁.entries = dlookup x s₂.entries
⊢ ⟦s₁⟧ = ⟦s₂⟧
state_after: α : Type u
β : α → Type v
inst✝ : DecidableEq α
s₁✝ s₂✝ : Finmap β
s₁ s₂ : AList β
h : ∀ (x : α), dlookup x s₁.entries = dlookup x s₂.entries
⊢ s₁.entries ~ s₂.entries

tactic: apply lookup_ext s₁.nodupKeys s₂.nodupKeys
state_before: α : Type u
β : α → Type v
inst✝ : DecidableEq α
s₁✝ s₂✝ : Finmap β
s₁ s₂ : AList β
h : ∀ (x : α), dlookup x s₁.entries = dlookup x s₂.entries
⊢ s₁.entries ~ s₂.entries
state_after: α : Type u
β : α → Type v
inst✝ : DecidableEq α
s₁✝ s₂✝ : Finmap β
s₁ s₂ : AList β
h : ∀ (x : α), dlookup x s₁.entries = dlookup x s₂.entries
⊢ ∀ (x : α) (y : β x), y ∈ dlookup x s₁.entries ↔ y ∈ dlookup x s₂.entries

tactic: intro x y
state_before: α : Type u
β : α → Type v
inst✝ : DecidableEq α
s₁✝ s₂✝ : Finmap β
s₁ s₂ : AList β
h : ∀ (x : α), dlookup x s₁.entries = dlookup x s₂.entries
⊢ ∀ (x : α) (y : β x), y ∈ dlookup x s₁.entries ↔ y ∈ dlookup x s₂.entries
state_after: α : Type u
β : α → Type v
inst✝ : DecidableEq α
s₁✝ s₂✝ : Finmap β
s₁ s₂ : AList β
h : ∀ (x : α), dlookup x s₁.entries = dlookup x s₂.entries
x : α
y : β x
⊢ y ∈ dlookup x s₁.entries ↔ y ∈ dlookup x s₂.entries

tactic: rw [h]
state_before: α : Type u
β : α → Type v
inst✝ : DecidableEq α
s₁✝ s₂✝ : Finmap β
s₁ s₂ : AList β
h : ∀ (x : α), dlookup x s₁.entries = dlookup x s₂.entries
x : α
y : β x
⊢ y ∈ dlookup x s₁.entries ↔ y ∈ dlookup x s₂.entries
state_after: no goals
Theorem: mem_balancedHull_iff
File: Mathlib/Analysis/LocallyConvex/BalancedCoreHull.lean

tactic: simp [balancedHull]
state_before: 𝕜 : Type u_1
E : Type u_2
ι : Type u_3
inst✝¹ : SeminormedRing 𝕜
inst✝ : SMul 𝕜 E
s t : Set E
x : E
⊢ x ∈ balancedHull 𝕜 s ↔ ∃ r, ‖r‖ ≤ 1 ∧ x ∈ r • s
state_after: no goals
Theorem: Nat.divisors_mul
File: Mathlib/Data/Finset/NatDivisors.lean

tactic: ext k
state_before: m n : ℕ
⊢ (m * n).divisors = m.divisors * n.divisors
state_after: case a
m n k : ℕ
⊢ k ∈ (m * n).divisors ↔ k ∈ m.divisors * n.divisors

tactic: simp_rw [mem_mul, mem_divisors, dvd_mul, mul_ne_zero_iff, ← exists_and_left, ← exists_and_right]
state_before: case a
m n k : ℕ
⊢ k ∈ (m * n).divisors ↔ k ∈ m.divisors * n.divisors
state_after: case a
m n k : ℕ
⊢ (∃ x x_1, (x ∣ m ∧ x_1 ∣ n ∧ x * x_1 = k) ∧ m ≠ 0 ∧ n ≠ 0) ↔ ∃ y x, (y ∣ m ∧ m ≠ 0) ∧ (x ∣ n ∧ n ≠ 0) ∧ y * x = k

tactic: simp only [and_assoc, and_comm, and_left_comm]
state_before: case a
m n k : ℕ
⊢ (∃ x x_1, (x ∣ m ∧ x_1 ∣ n ∧ x * x_1 = k) ∧ m ≠ 0 ∧ n ≠ 0) ↔ ∃ y x, (y ∣ m ∧ m ≠ 0) ∧ (x ∣ n ∧ n ≠ 0) ∧ y * x = k
state_after: no goals
Theorem: ediam_mul_le
File: Mathlib/Analysis/Normed/Group/Pointwise.lean

tactic: simp only [ENNReal.coe_one, one_mul]
state_before: E : Type u_1
inst✝ : SeminormedCommGroup E
ε δ : ℝ
s t : Set E
x✝ y✝ : E
x y : Set E
⊢ ↑1 * EMetric.diam x + ↑1 * EMetric.diam y = EMetric.diam x + EMetric.diam y
state_after: no goals
Theorem: PartialEquiv.EqOnSource.symm'
File: Mathlib/Logic/Equiv/PartialEquiv.lean

tactic: refine ⟨target_eq h, eqOn_of_leftInvOn_of_rightInvOn e.leftInvOn ?_ ?_⟩ <;>
  simp only [symm_source, target_eq h, source_eq h, e'.symm_mapsTo]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
e✝ : PartialEquiv α β
e'✝ : PartialEquiv β γ
e e' : PartialEquiv α β
h : e ≈ e'
⊢ e.symm ≈ e'.symm
state_after: case refine_1
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
e✝ : PartialEquiv α β
e'✝ : PartialEquiv β γ
e e' : PartialEquiv α β
h : e ≈ e'
⊢ RightInvOn (↑e'.symm) (↑e) e'.target

tactic: exact e'.rightInvOn.congr_right e'.symm_mapsTo (source_eq h ▸ h.eqOn.symm)
state_before: case refine_1
α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
e✝ : PartialEquiv α β
e'✝ : PartialEquiv β γ
e e' : PartialEquiv α β
h : e ≈ e'
⊢ RightInvOn (↑e'.symm) (↑e) e'.target
state_after: no goals
Theorem: strictMono_dual_iff
File: Mathlib/Order/Monotone/Basic.lean

tactic: rw [strictMono_toDual_comp_iff, strictAnti_comp_ofDual_iff]
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
δ : Type u_2
π : ι → Type u_3
r : α → α → Prop
inst✝¹ : Preorder α
inst✝ : Preorder β
f : α → β
s : Set α
⊢ StrictMono (⇑toDual ∘ f ∘ ⇑ofDual) ↔ StrictMono f
state_after: no goals
Theorem: norm_injOn_ray_right
File: Mathlib/Analysis/NormedSpace/Ray.lean

tactic: simpa only [SameRay.sameRay_comm] using norm_injOn_ray_left hy
state_before: E : Type u_1
inst✝³ : SeminormedAddCommGroup E
inst✝² : NormedSpace ℝ E
F : Type u_2
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
x y : F
hy : y ≠ 0
⊢ Set.InjOn Norm.norm {x | SameRay ℝ x y}
state_after: no goals
Theorem: TopologicalSpace.isTopologicalBasis_opens
File: Mathlib/Topology/Bases.lean

tactic: tauto
state_before: α : Type u
β : Type u_1
t : TopologicalSpace α
B : Set (Set α)
s : Set α
⊢ ∀ u ∈ {U | IsOpen U}, IsOpen u
state_after: no goals

tactic: tauto
state_before: α : Type u
β : Type u_1
t : TopologicalSpace α
B : Set (Set α)
s : Set α
⊢ ∀ (a : α) (u : Set α), a ∈ u → IsOpen u → ∃ v ∈ {U | IsOpen U}, a ∈ v ∧ v ⊆ u
state_after: no goals
Theorem: List.support_sum_subset
File: Mathlib/Data/Finsupp/BigOperators.lean

tactic: induction' l with hd tl IH
state_before: ι : Type u_1
M : Type u_2
inst✝¹ : DecidableEq ι
inst✝ : AddMonoid M
l : List (ι →₀ M)
⊢ l.sum.support ⊆ foldr (fun x x_1 => x.support ⊔ x_1) ∅ l
state_after: case nil
ι : Type u_1
M : Type u_2
inst✝¹ : DecidableEq ι
inst✝ : AddMonoid M
⊢ [].sum.support ⊆ foldr (fun x x_1 => x.support ⊔ x_1) ∅ []

case cons
ι : Type u_1
M : Type u_2
inst✝¹ : DecidableEq ι
inst✝ : AddMonoid M
hd : ι →₀ M
tl : List (ι →₀ M)
IH : tl.sum.support ⊆ foldr (fun x x_1 => x.support ⊔ x_1) ∅ tl
⊢ (hd :: tl).sum.support ⊆ foldr (fun x x_1 => x.support ⊔ x_1) ∅ (hd :: tl)

tactic: simp
state_before: case nil
ι : Type u_1
M : Type u_2
inst✝¹ : DecidableEq ι
inst✝ : AddMonoid M
⊢ [].sum.support ⊆ foldr (fun x x_1 => x.support ⊔ x_1) ∅ []
state_after: no goals

tactic: simp only [List.sum_cons, Finset.union_comm]
state_before: case cons
ι : Type u_1
M : Type u_2
inst✝¹ : DecidableEq ι
inst✝ : AddMonoid M
hd : ι →₀ M
tl : List (ι →₀ M)
IH : tl.sum.support ⊆ foldr (fun x x_1 => x.support ⊔ x_1) ∅ tl
⊢ (hd :: tl).sum.support ⊆ foldr (fun x x_1 => x.support ⊔ x_1) ∅ (hd :: tl)
state_after: case cons
ι : Type u_1
M : Type u_2
inst✝¹ : DecidableEq ι
inst✝ : AddMonoid M
hd : ι →₀ M
tl : List (ι →₀ M)
IH : tl.sum.support ⊆ foldr (fun x x_1 => x.support ⊔ x_1) ∅ tl
⊢ (hd + tl.sum).support ⊆ foldr (fun x x_1 => x.support ⊔ x_1) ∅ (hd :: tl)

tactic: refine Finsupp.support_add.trans (Finset.union_subset_union ?_ IH)
state_before: case cons
ι : Type u_1
M : Type u_2
inst✝¹ : DecidableEq ι
inst✝ : AddMonoid M
hd : ι →₀ M
tl : List (ι →₀ M)
IH : tl.sum.support ⊆ foldr (fun x x_1 => x.support ⊔ x_1) ∅ tl
⊢ (hd + tl.sum).support ⊆ foldr (fun x x_1 => x.support ⊔ x_1) ∅ (hd :: tl)
state_after: case cons
ι : Type u_1
M : Type u_2
inst✝¹ : DecidableEq ι
inst✝ : AddMonoid M
hd : ι →₀ M
tl : List (ι →₀ M)
IH : tl.sum.support ⊆ foldr (fun x x_1 => x.support ⊔ x_1) ∅ tl
⊢ hd.support ⊆ hd.support

tactic: rfl
state_before: case cons
ι : Type u_1
M : Type u_2
inst✝¹ : DecidableEq ι
inst✝ : AddMonoid M
hd : ι →₀ M
tl : List (ι →₀ M)
IH : tl.sum.support ⊆ foldr (fun x x_1 => x.support ⊔ x_1) ∅ tl
⊢ hd.support ⊆ hd.support
state_after: no goals
Theorem: HomologicalComplex.epi_homologyMap_of_epi_of_not_rel
File: Mathlib/Algebra/Homology/ShortComplex/HomologicalComplex.lean

tactic: tauto
state_before: C : Type u_1
inst✝⁴ : Category.{u_3, u_1} C
inst✝³ : HasZeroMorphisms C
ι : Type u_2
c : ComplexShape ι
K L : HomologicalComplex C c
i✝ j k : ι
φ : K ⟶ L
i : ι
inst✝² : K.HasHomology i
inst✝¹ : L.HasHomology i
inst✝ : Epi (φ.f i)
hi : ∀ (j : ι), ¬c.Rel i j
⊢ ¬c.Rel i (c.next i)
state_after: no goals
Theorem: NNReal.geom_mean_le_arith_mean2_weighted
File: Mathlib/Analysis/MeanInequalities.lean

tactic: simpa only [Fin.prod_univ_succ, Fin.sum_univ_succ, Finset.prod_empty, Finset.sum_empty,
  Finset.univ_eq_empty, Fin.cons_succ, Fin.cons_zero, add_zero, mul_one] using
  geom_mean_le_arith_mean_weighted univ ![w₁, w₂] ![p₁, p₂]
state_before: ι : Type u
s : Finset ι
w₁ w₂ p₁ p₂ : ℝ≥0
⊢ w₁ + w₂ = 1 → p₁ ^ ↑w₁ * p₂ ^ ↑w₂ ≤ w₁ * p₁ + w₂ * p₂
state_after: no goals
Theorem: Finset.zero_mem_box
File: Mathlib/Order/Interval/Finset/Box.lean

tactic: cases n <;> simp [box_succ_eq_sdiff]
state_before: α : Type u_1
inst✝² : OrderedRing α
inst✝¹ : LocallyFiniteOrder α
inst✝ : DecidableEq α
n : ℕ
⊢ 0 ∈ box n ↔ n = 0
state_after: no goals
Theorem: ModuleCat.epi_iff_surjective
File: Mathlib/Algebra/Category/ModuleCat/EpiMono.lean

tactic: rw [epi_iff_range_eq_top, LinearMap.range_eq_top]
state_before: R : Type u
inst✝² : Ring R
X Y : ModuleCat R
f : X ⟶ Y
M : Type v
inst✝¹ : AddCommGroup M
inst✝ : Module R M
⊢ Epi f ↔ Function.Surjective ⇑f
state_after: no goals
Theorem: Nat.swap_mem_divisorsAntidiagonal_aux
File: Mathlib/NumberTheory/Divisors.lean

tactic: rw [mem_divisorsAntidiagonal, mul_comm]
state_before: n : ℕ
x : ℕ × ℕ
⊢ x.2 * x.1 = n ∧ ¬n = 0 ↔ x ∈ n.divisorsAntidiagonal
state_after: no goals
Theorem: div_neg_self
File: Mathlib/Algebra/Field/Basic.lean

tactic: rw [div_neg_eq_neg_div, div_self h]
state_before: α : Type u_1
β : Type u_2
K : Type u_3
inst✝ : DivisionRing K
a✝ b c d a : K
h : a ≠ 0
⊢ a / -a = -1
state_after: no goals
Theorem: NumberField.mixedEmbedding.convexBodySum_mem
File: Mathlib/NumberTheory/NumberField/CanonicalEmbedding/ConvexBody.lean

tactic: simp_rw [Set.mem_setOf_eq, convexBodySumFun, normAtPlace_apply]
state_before: K : Type u_1
inst✝¹ : Field K
inst✝ : NumberField K
B : ℝ
x : K
⊢ (mixedEmbedding K) x ∈ convexBodySum K B ↔ ∑ w : InfinitePlace K, ↑w.mult * ↑w x ≤ B
state_after: K : Type u_1
inst✝¹ : Field K
inst✝ : NumberField K
B : ℝ
x : K
⊢ ∑ x_1 : InfinitePlace K, ↑x_1.mult * x_1 x ≤ B ↔ ∑ w : InfinitePlace K, ↑w.mult * ↑w x ≤ B

tactic: rfl
state_before: K : Type u_1
inst✝¹ : Field K
inst✝ : NumberField K
B : ℝ
x : K
⊢ ∑ x_1 : InfinitePlace K, ↑x_1.mult * x_1 x ≤ B ↔ ∑ w : InfinitePlace K, ↑w.mult * ↑w x ≤ B
state_after: no goals
Theorem: Finpartition.card_mod_card_parts_le
File: Mathlib/Order/Partition/Finpartition.lean

tactic: rcases P.parts.card.eq_zero_or_pos with h | h
state_before: α : Type u_1
inst✝ : DecidableEq α
s t u : Finset α
P : Finpartition s
a : α
⊢ s.card % P.parts.card ≤ P.parts.card
state_after: case inl
α : Type u_1
inst✝ : DecidableEq α
s t u : Finset α
P : Finpartition s
a : α
h : P.parts.card = 0
⊢ s.card % P.parts.card ≤ P.parts.card

case inr
α : Type u_1
inst✝ : DecidableEq α
s t u : Finset α
P : Finpartition s
a : α
h : P.parts.card > 0
⊢ s.card % P.parts.card ≤ P.parts.card

tactic: have h' := h
state_before: case inl
α : Type u_1
inst✝ : DecidableEq α
s t u : Finset α
P : Finpartition s
a : α
h : P.parts.card = 0
⊢ s.card % P.parts.card ≤ P.parts.card
state_after: case inl
α : Type u_1
inst✝ : DecidableEq α
s t u : Finset α
P : Finpartition s
a : α
h h' : P.parts.card = 0
⊢ s.card % P.parts.card ≤ P.parts.card

tactic: rw [Finset.card_eq_zero, parts_eq_empty_iff, bot_eq_empty, ← Finset.card_eq_zero] at h'
state_before: case inl
α : Type u_1
inst✝ : DecidableEq α
s t u : Finset α
P : Finpartition s
a : α
h h' : P.parts.card = 0
⊢ s.card % P.parts.card ≤ P.parts.card
state_after: case inl
α : Type u_1
inst✝ : DecidableEq α
s t u : Finset α
P : Finpartition s
a : α
h : P.parts.card = 0
h' : s.card = 0
⊢ s.card % P.parts.card ≤ P.parts.card

tactic: rw [h, h']
state_before: case inl
α : Type u_1
inst✝ : DecidableEq α
s t u : Finset α
P : Finpartition s
a : α
h : P.parts.card = 0
h' : s.card = 0
⊢ s.card % P.parts.card ≤ P.parts.card
state_after: no goals

tactic: exact (Nat.mod_lt _ h).le
state_before: case inr
α : Type u_1
inst✝ : DecidableEq α
s t u : Finset α
P : Finpartition s
a : α
h : P.parts.card > 0
⊢ s.card % P.parts.card ≤ P.parts.card
state_after: no goals
Theorem: WeierstrassCurve.VariableChange.comp_assoc
File: Mathlib/AlgebraicGeometry/EllipticCurve/Weierstrass.lean

tactic: ext <;> simp only [comp, Units.val_mul] <;> ring1
state_before: R : Type u
inst✝ : CommRing R
W : WeierstrassCurve R
C✝ C'✝ C''✝ C C' C'' : VariableChange R
⊢ (C.comp C').comp C'' = C.comp (C'.comp C'')
state_after: no goals
Theorem: AmpleSet.preimage
File: Mathlib/Analysis/Convex/AmpleSet.lean

tactic: rw [← L.image_symm_eq_preimage]
state_before: F : Type u_1
inst✝⁵ : AddCommGroup F
inst✝⁴ : Module ℝ F
inst✝³ : TopologicalSpace F
E : Type u_2
inst✝² : AddCommGroup E
inst✝¹ : Module ℝ E
inst✝ : TopologicalSpace E
s : Set F
h : AmpleSet s
L : E ≃ᵃL[ℝ] F
⊢ AmpleSet (⇑L ⁻¹' s)
state_after: F : Type u_1
inst✝⁵ : AddCommGroup F
inst✝⁴ : Module ℝ F
inst✝³ : TopologicalSpace F
E : Type u_2
inst✝² : AddCommGroup E
inst✝¹ : Module ℝ E
inst✝ : TopologicalSpace E
s : Set F
h : AmpleSet s
L : E ≃ᵃL[ℝ] F
⊢ AmpleSet (⇑L.symm '' s)

tactic: exact h.image L.symm
state_before: F : Type u_1
inst✝⁵ : AddCommGroup F
inst✝⁴ : Module ℝ F
inst✝³ : TopologicalSpace F
E : Type u_2
inst✝² : AddCommGroup E
inst✝¹ : Module ℝ E
inst✝ : TopologicalSpace E
s : Set F
h : AmpleSet s
L : E ≃ᵃL[ℝ] F
⊢ AmpleSet (⇑L.symm '' s)
state_after: no goals
Theorem: subset_sInf_of_not_bddBelow
File: Mathlib/Order/CompleteLatticeIntervals.lean

tactic: simp [sInf, ht]
state_before: ι : Sort u_1
α : Type u_2
s : Set α
inst✝² : Preorder α
inst✝¹ : InfSet α
inst✝ : Inhabited ↑s
t : Set ↑s
ht : ¬BddBelow t
⊢ sInf t = default
state_after: no goals
Theorem: pow_lt_pow_left
File: Mathlib/Algebra/Order/Ring/Basic.lean

tactic: contradiction
state_before: α : Type u_1
M : Type u_2
R : Type u_3
inst✝ : StrictOrderedSemiring R
a x y : R
n m : ℕ
h : x < y
hx : 0 ≤ x
hn : 0 ≠ 0
⊢ x ^ 0 < y ^ 0
state_after: no goals

tactic: simpa only [pow_succ] using
  mul_lt_mul_of_le_of_le' (pow_le_pow_left hx h.le _) h (pow_pos (hx.trans_lt h) _) hx
state_before: α : Type u_1
M : Type u_2
R : Type u_3
inst✝ : StrictOrderedSemiring R
a x y : R
n✝ m : ℕ
h : x < y
hx : 0 ≤ x
n : ℕ
x✝ : n + 1 ≠ 0
⊢ x ^ (n + 1) < y ^ (n + 1)
state_after: no goals
Theorem: Filter.tendsto_atTop_finset_of_monotone
File: Mathlib/Order/Filter/AtTopBot.lean

tactic: simp only [atTop_finset_eq_iInf, tendsto_iInf, tendsto_principal]
state_before: ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝ : Preorder β
f : β → Finset α
h : Monotone f
h' : ∀ (x : α), ∃ n, x ∈ f n
⊢ Tendsto f atTop atTop
state_after: ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝ : Preorder β
f : β → Finset α
h : Monotone f
h' : ∀ (x : α), ∃ n, x ∈ f n
⊢ ∀ (i : α), ∀ᶠ (a : β) in atTop, f a ∈ Ici {i}

tactic: intro a
state_before: ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝ : Preorder β
f : β → Finset α
h : Monotone f
h' : ∀ (x : α), ∃ n, x ∈ f n
⊢ ∀ (i : α), ∀ᶠ (a : β) in atTop, f a ∈ Ici {i}
state_after: ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝ : Preorder β
f : β → Finset α
h : Monotone f
h' : ∀ (x : α), ∃ n, x ∈ f n
a : α
⊢ ∀ᶠ (a_1 : β) in atTop, f a_1 ∈ Ici {a}

tactic: rcases h' a with ⟨b, hb⟩
state_before: ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝ : Preorder β
f : β → Finset α
h : Monotone f
h' : ∀ (x : α), ∃ n, x ∈ f n
a : α
⊢ ∀ᶠ (a_1 : β) in atTop, f a_1 ∈ Ici {a}
state_after: case intro
ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝ : Preorder β
f : β → Finset α
h : Monotone f
h' : ∀ (x : α), ∃ n, x ∈ f n
a : α
b : β
hb : a ∈ f b
⊢ ∀ᶠ (a_1 : β) in atTop, f a_1 ∈ Ici {a}

tactic: exact (eventually_ge_atTop b).mono fun b' hb' => (Finset.singleton_subset_iff.2 hb).trans (h hb')
state_before: case intro
ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝ : Preorder β
f : β → Finset α
h : Monotone f
h' : ∀ (x : α), ∃ n, x ∈ f n
a : α
b : β
hb : a ∈ f b
⊢ ∀ᶠ (a_1 : β) in atTop, f a_1 ∈ Ici {a}
state_after: no goals
Theorem: ProbabilityTheory.measure_eq_zero_or_one_of_indepSet_self
File: Mathlib/Probability/Independence/ZeroOne.lean

tactic: simpa only [ae_dirac_eq, Filter.eventually_pure]
  using kernel.measure_eq_zero_or_one_of_indepSet_self h_indep
state_before: α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
s : ι → MeasurableSpace Ω
m m0 : MeasurableSpace Ω
κ : ↥(kernel α Ω)
μα : Measure α
μ : Measure Ω
inst✝ : IsFiniteMeasure μ
t : Set Ω
h_indep : IndepSet t t μ
⊢ μ t = 0 ∨ μ t = 1
state_after: no goals
Theorem: ProjectiveSpectrum.basicOpen_mul
File: Mathlib/AlgebraicGeometry/ProjectiveSpectrum/Topology.lean

tactic: simp [zeroLocus_singleton_mul]
state_before: R : Type u_1
A : Type u_2
inst✝³ : CommSemiring R
inst✝² : CommRing A
inst✝¹ : Algebra R A
𝒜 : ℕ → Submodule R A
inst✝ : GradedAlgebra 𝒜
f g : A
⊢ ↑(basicOpen 𝒜 (f * g)) = ↑(basicOpen 𝒜 f ⊓ basicOpen 𝒜 g)
state_after: no goals