1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: mem_selfAdjointMatricesSubmodule
File: Mathlib/LinearAlgebra/Matrix/SesquilinearForm.lean

tactic: erw [mem_pairSelfAdjointMatricesSubmodule]
state_before: R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
M : Type u_4
M₁ : Type u_5
M₂ : Type u_6
M₁' : Type u_7
M₂' : Type u_8
n : Type u_9
m : Type u_10
n' : Type u_11
m' : Type u_12
ι : Type u_13
inst✝⁸ : CommRing R
inst✝⁷ : AddCommMonoid M₁
inst✝⁶ : Module R M₁
inst✝⁵ : AddCommMonoid M₂
inst✝⁴ : Module R M₂
inst✝³ : Fintype n
inst✝² : Fintype n'
b₁ : Basis n R M₁
b₂ : Basis n' R M₂
J J₂ : Matrix n n R
J' : Matrix n' n' R
A : Matrix n' n R
A' : Matrix n n' R
A₁ A₂ : Matrix n n R
inst✝¹ : DecidableEq n
inst✝ : DecidableEq n'
⊢ A₁ ∈ selfAdjointMatricesSubmodule J ↔ J.IsSelfAdjoint A₁
state_after: R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
M : Type u_4
M₁ : Type u_5
M₂ : Type u_6
M₁' : Type u_7
M₂' : Type u_8
n : Type u_9
m : Type u_10
n' : Type u_11
m' : Type u_12
ι : Type u_13
inst✝⁸ : CommRing R
inst✝⁷ : AddCommMonoid M₁
inst✝⁶ : Module R M₁
inst✝⁵ : AddCommMonoid M₂
inst✝⁴ : Module R M₂
inst✝³ : Fintype n
inst✝² : Fintype n'
b₁ : Basis n R M₁
b₂ : Basis n' R M₂
J J₂ : Matrix n n R
J' : Matrix n' n' R
A : Matrix n' n R
A' : Matrix n n' R
A₁ A₂ : Matrix n n R
inst✝¹ : DecidableEq n
inst✝ : DecidableEq n'
⊢ J.IsAdjointPair J A₁ A₁ ↔ J.IsSelfAdjoint A₁

tactic: rfl
state_before: R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
M : Type u_4
M₁ : Type u_5
M₂ : Type u_6
M₁' : Type u_7
M₂' : Type u_8
n : Type u_9
m : Type u_10
n' : Type u_11
m' : Type u_12
ι : Type u_13
inst✝⁸ : CommRing R
inst✝⁷ : AddCommMonoid M₁
inst✝⁶ : Module R M₁
inst✝⁵ : AddCommMonoid M₂
inst✝⁴ : Module R M₂
inst✝³ : Fintype n
inst✝² : Fintype n'
b₁ : Basis n R M₁
b₂ : Basis n' R M₂
J J₂ : Matrix n n R
J' : Matrix n' n' R
A : Matrix n' n R
A' : Matrix n n' R
A₁ A₂ : Matrix n n R
inst✝¹ : DecidableEq n
inst✝ : DecidableEq n'
⊢ J.IsAdjointPair J A₁ A₁ ↔ J.IsSelfAdjoint A₁
state_after: no goals
Theorem: StructureGroupoid.LocalInvariantProp.liftPropOn_indep_chart
File: Mathlib/Geometry/Manifold/LocalInvariantProperties.lean

tactic: convert ((hG.liftPropWithinAt_indep_chart he (e.symm_mapsTo hy.1) hf hy.2.2).1 (h _ hy.2.1)).2
state_before: H : Type u_1
M : Type u_2
H' : Type u_3
M' : Type u_4
X : Type u_5
inst✝⁸ : TopologicalSpace H
inst✝⁷ : TopologicalSpace M
inst✝⁶ : ChartedSpace H M
inst✝⁵ : TopologicalSpace H'
inst✝⁴ : TopologicalSpace M'
inst✝³ : ChartedSpace H' M'
inst✝² : TopologicalSpace X
G : StructureGroupoid H
G' : StructureGroupoid H'
e e' : PartialHomeomorph M H
f f' : PartialHomeomorph M' H'
P : (H → H') → Set H → H → Prop
g g' : M → M'
s t : Set M
x : M
Q : (H → H) → Set H → H → Prop
hG : G.LocalInvariantProp G' P
inst✝¹ : HasGroupoid M G
inst✝ : HasGroupoid M' G'
he : e ∈ maximalAtlas M G
hf : f ∈ maximalAtlas M' G'
h : LiftPropOn P g s
y : H
hy : y ∈ e.target ∩ ↑e.symm ⁻¹' (s ∩ g ⁻¹' f.source)
⊢ P (↑f ∘ g ∘ ↑e.symm) (↑e.symm ⁻¹' s) y
state_after: case h.e'_3
H : Type u_1
M : Type u_2
H' : Type u_3
M' : Type u_4
X : Type u_5
inst✝⁸ : TopologicalSpace H
inst✝⁷ : TopologicalSpace M
inst✝⁶ : ChartedSpace H M
inst✝⁵ : TopologicalSpace H'
inst✝⁴ : TopologicalSpace M'
inst✝³ : ChartedSpace H' M'
inst✝² : TopologicalSpace X
G : StructureGroupoid H
G' : StructureGroupoid H'
e e' : PartialHomeomorph M H
f f' : PartialHomeomorph M' H'
P : (H → H') → Set H → H → Prop
g g' : M → M'
s t : Set M
x : M
Q : (H → H) → Set H → H → Prop
hG : G.LocalInvariantProp G' P
inst✝¹ : HasGroupoid M G
inst✝ : HasGroupoid M' G'
he : e ∈ maximalAtlas M G
hf : f ∈ maximalAtlas M' G'
h : LiftPropOn P g s
y : H
hy : y ∈ e.target ∩ ↑e.symm ⁻¹' (s ∩ g ⁻¹' f.source)
⊢ y = ↑e (↑e.symm y)

tactic: rw [e.right_inv hy.1]
state_before: case h.e'_3
H : Type u_1
M : Type u_2
H' : Type u_3
M' : Type u_4
X : Type u_5
inst✝⁸ : TopologicalSpace H
inst✝⁷ : TopologicalSpace M
inst✝⁶ : ChartedSpace H M
inst✝⁵ : TopologicalSpace H'
inst✝⁴ : TopologicalSpace M'
inst✝³ : ChartedSpace H' M'
inst✝² : TopologicalSpace X
G : StructureGroupoid H
G' : StructureGroupoid H'
e e' : PartialHomeomorph M H
f f' : PartialHomeomorph M' H'
P : (H → H') → Set H → H → Prop
g g' : M → M'
s t : Set M
x : M
Q : (H → H) → Set H → H → Prop
hG : G.LocalInvariantProp G' P
inst✝¹ : HasGroupoid M G
inst✝ : HasGroupoid M' G'
he : e ∈ maximalAtlas M G
hf : f ∈ maximalAtlas M' G'
h : LiftPropOn P g s
y : H
hy : y ∈ e.target ∩ ↑e.symm ⁻¹' (s ∩ g ⁻¹' f.source)
⊢ y = ↑e (↑e.symm y)
state_after: no goals
Theorem: FreeCommRing.of_cons
File: Mathlib/RingTheory/FreeCommRing.lean

tactic: rw [← Multiset.singleton_add, ofAdd_add,
  of, FreeAbelianGroup.of_mul_of]
state_before: α : Type u
a : α
m : Multiset α
⊢ FreeAbelianGroup.of (Multiplicative.ofAdd (a ::ₘ m)) = of a * FreeAbelianGroup.of (Multiplicative.ofAdd m)
state_after: no goals
Theorem: Units.topology_eq_inf
File: Mathlib/Topology/Algebra/Constructions.lean

tactic: simp only [inducing_embedProduct.1, instTopologicalSpaceProd, induced_inf,
  instTopologicalSpaceMulOpposite, induced_compose]
state_before: M : Type u_1
X : Type u_2
inst✝² : TopologicalSpace M
inst✝¹ : Monoid M
inst✝ : TopologicalSpace X
⊢ instTopologicalSpaceUnits = TopologicalSpace.induced val inst✝² ⊓ TopologicalSpace.induced (fun u => ↑u⁻¹) inst✝²
state_after: M : Type u_1
X : Type u_2
inst✝² : TopologicalSpace M
inst✝¹ : Monoid M
inst✝ : TopologicalSpace X
⊢ TopologicalSpace.induced (Prod.fst ∘ ⇑(embedProduct M)) inst✝² ⊓
      TopologicalSpace.induced ((unop ∘ Prod.snd) ∘ ⇑(embedProduct M)) inst✝² =
    TopologicalSpace.induced val inst✝² ⊓ TopologicalSpace.induced (fun u => ↑u⁻¹) inst✝²

tactic: rfl
state_before: M : Type u_1
X : Type u_2
inst✝² : TopologicalSpace M
inst✝¹ : Monoid M
inst✝ : TopologicalSpace X
⊢ TopologicalSpace.induced (Prod.fst ∘ ⇑(embedProduct M)) inst✝² ⊓
      TopologicalSpace.induced ((unop ∘ Prod.snd) ∘ ⇑(embedProduct M)) inst✝² =
    TopologicalSpace.induced val inst✝² ⊓ TopologicalSpace.induced (fun u => ↑u⁻¹) inst✝²
state_after: no goals
Theorem: EReal.antitone_div_right_of_nonpos
File: Mathlib/Data/Real/EReal.lean

tactic: intro a a' h'
state_before: b : EReal
h : b ≤ 0
⊢ Antitone fun a => a / b
state_after: b : EReal
h : b ≤ 0
a a' : EReal
h' : a ≤ a'
⊢ (fun a => a / b) a' ≤ (fun a => a / b) a

tactic: change a' * b⁻¹ ≤ a * b⁻¹
state_before: b : EReal
h : b ≤ 0
a a' : EReal
h' : a ≤ a'
⊢ (fun a => a / b) a' ≤ (fun a => a / b) a
state_after: b : EReal
h : b ≤ 0
a a' : EReal
h' : a ≤ a'
⊢ a' * b⁻¹ ≤ a * b⁻¹

tactic: rw [← neg_neg (a * b⁻¹), ← neg_neg (a' * b⁻¹), neg_le_neg_iff, mul_comm a b⁻¹, mul_comm a' b⁻¹,
  ← neg_mul b⁻¹ a, ← neg_mul b⁻¹ a', mul_comm (-b⁻¹) a, mul_comm (-b⁻¹) a', ← inv_neg b]
state_before: b : EReal
h : b ≤ 0
a a' : EReal
h' : a ≤ a'
⊢ a' * b⁻¹ ≤ a * b⁻¹
state_after: b : EReal
h : b ≤ 0
a a' : EReal
h' : a ≤ a'
⊢ a * (-b)⁻¹ ≤ a' * (-b)⁻¹

tactic: have : 0 ≤ -b := by apply le_neg_of_le_neg; simp [h]
state_before: b : EReal
h : b ≤ 0
a a' : EReal
h' : a ≤ a'
⊢ a * (-b)⁻¹ ≤ a' * (-b)⁻¹
state_after: b : EReal
h : b ≤ 0
a a' : EReal
h' : a ≤ a'
this : 0 ≤ -b
⊢ a * (-b)⁻¹ ≤ a' * (-b)⁻¹

tactic: exact div_le_div_right_of_nonneg this h'
state_before: b : EReal
h : b ≤ 0
a a' : EReal
h' : a ≤ a'
this : 0 ≤ -b
⊢ a * (-b)⁻¹ ≤ a' * (-b)⁻¹
state_after: no goals

tactic: apply le_neg_of_le_neg
state_before: b : EReal
h : b ≤ 0
a a' : EReal
h' : a ≤ a'
⊢ 0 ≤ -b
state_after: case h
b : EReal
h : b ≤ 0
a a' : EReal
h' : a ≤ a'
⊢ b ≤ -0

tactic: simp [h]
state_before: case h
b : EReal
h : b ≤ 0
a a' : EReal
h' : a ≤ a'
⊢ b ≤ -0
state_after: no goals
Theorem: Finmap.disjoint_union_left
File: Mathlib/Data/Finmap.lean

tactic: simp [Disjoint, Finmap.mem_union, or_imp, forall_and]
state_before: α : Type u
β : α → Type v
inst✝ : DecidableEq α
x y z : Finmap β
⊢ (x ∪ y).Disjoint z ↔ x.Disjoint z ∧ y.Disjoint z
state_after: no goals
Theorem: Finset.prod_ite_mem
File: Mathlib/Algebra/BigOperators/Group/Finset.lean

tactic: rw [← Finset.prod_filter, Finset.filter_mem_eq_inter]
state_before: ι : Type u_1
κ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝¹ : CommMonoid β
inst✝ : DecidableEq α
s t : Finset α
f : α → β
⊢ (∏ i ∈ s, if i ∈ t then f i else 1) = ∏ i ∈ s ∩ t, f i
state_after: no goals
Theorem: Filter.mem_seq_iff
File: Mathlib/Order/Filter/Basic.lean

tactic: simp only [mem_seq_def, seq_subset, exists_prop, iff_self_iff]
state_before: α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
l : Filter α
f : Filter (α → β)
g : Filter α
s : Set β
⊢ s ∈ f.seq g ↔ ∃ u ∈ f, ∃ t ∈ g, u.seq t ⊆ s
state_after: no goals
Theorem: Int.odd_sub
File: Mathlib/Algebra/Ring/Int.lean

tactic: rw [odd_iff_not_even, even_sub, not_iff, odd_iff_not_even]
state_before: m n : ℤ
⊢ Odd (m - n) ↔ (Odd m ↔ Even n)
state_after: no goals
Theorem: NeZero.of_map
File: Mathlib/Algebra/GroupWithZero/Hom.lean

tactic: rw [h]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝³ : Zero α
inst✝² : Zero β
inst✝¹ : FunLike F α β
inst✝ : ZeroHomClass F α β
a : α
f : F
neZero : NeZero (f a)
h : a = 0
⊢ f a = 0
state_after: F : Type u_1
α : Type u_2
β : Type u_3
inst✝³ : Zero α
inst✝² : Zero β
inst✝¹ : FunLike F α β
inst✝ : ZeroHomClass F α β
a : α
f : F
neZero : NeZero (f a)
h : a = 0
⊢ f 0 = 0

tactic: exact ZeroHomClass.map_zero f
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝³ : Zero α
inst✝² : Zero β
inst✝¹ : FunLike F α β
inst✝ : ZeroHomClass F α β
a : α
f : F
neZero : NeZero (f a)
h : a = 0
⊢ f 0 = 0
state_after: no goals
Theorem: Mathlib.Meta.NormNum.LegendreSym.to_jacobiSym
File: Mathlib/Tactic/NormNum/LegendreSymbol.lean

tactic: rwa [@jacobiSym.legendreSym.to_jacobiSym p pp a]
state_before: p : ℕ
pp : Fact (Nat.Prime p)
a r : ℤ
hr : IsInt (jacobiSym a p) r
⊢ IsInt (legendreSym p a) r
state_after: no goals
Theorem: discreteTopology_iff_orderTopology_of_pred_succ'
File: Mathlib/Topology/Instances/Discrete.lean

tactic: refine ⟨fun h => ⟨?_⟩, fun h => ⟨?_⟩⟩
state_before: α : Type u_1
inst✝⁵ : TopologicalSpace α
inst✝⁴ : PartialOrder α
inst✝³ : PredOrder α
inst✝² : SuccOrder α
inst✝¹ : NoMinOrder α
inst✝ : NoMaxOrder α
⊢ DiscreteTopology α ↔ OrderTopology α
state_after: case refine_1
α : Type u_1
inst✝⁵ : TopologicalSpace α
inst✝⁴ : PartialOrder α
inst✝³ : PredOrder α
inst✝² : SuccOrder α
inst✝¹ : NoMinOrder α
inst✝ : NoMaxOrder α
h : DiscreteTopology α
⊢ inst✝⁵ = generateFrom {s | ∃ a, s = Ioi a ∨ s = Iio a}

case refine_2
α : Type u_1
inst✝⁵ : TopologicalSpace α
inst✝⁴ : PartialOrder α
inst✝³ : PredOrder α
inst✝² : SuccOrder α
inst✝¹ : NoMinOrder α
inst✝ : NoMaxOrder α
h : OrderTopology α
⊢ inst✝⁵ = ⊥

tactic: rw [h.eq_bot]
state_before: case refine_1
α : Type u_1
inst✝⁵ : TopologicalSpace α
inst✝⁴ : PartialOrder α
inst✝³ : PredOrder α
inst✝² : SuccOrder α
inst✝¹ : NoMinOrder α
inst✝ : NoMaxOrder α
h : DiscreteTopology α
⊢ inst✝⁵ = generateFrom {s | ∃ a, s = Ioi a ∨ s = Iio a}
state_after: case refine_1
α : Type u_1
inst✝⁵ : TopologicalSpace α
inst✝⁴ : PartialOrder α
inst✝³ : PredOrder α
inst✝² : SuccOrder α
inst✝¹ : NoMinOrder α
inst✝ : NoMaxOrder α
h : DiscreteTopology α
⊢ ⊥ = generateFrom {s | ∃ a, s = Ioi a ∨ s = Iio a}

tactic: exact bot_topologicalSpace_eq_generateFrom_of_pred_succOrder
state_before: case refine_1
α : Type u_1
inst✝⁵ : TopologicalSpace α
inst✝⁴ : PartialOrder α
inst✝³ : PredOrder α
inst✝² : SuccOrder α
inst✝¹ : NoMinOrder α
inst✝ : NoMaxOrder α
h : DiscreteTopology α
⊢ ⊥ = generateFrom {s | ∃ a, s = Ioi a ∨ s = Iio a}
state_after: no goals

tactic: rw [h.topology_eq_generate_intervals]
state_before: case refine_2
α : Type u_1
inst✝⁵ : TopologicalSpace α
inst✝⁴ : PartialOrder α
inst✝³ : PredOrder α
inst✝² : SuccOrder α
inst✝¹ : NoMinOrder α
inst✝ : NoMaxOrder α
h : OrderTopology α
⊢ inst✝⁵ = ⊥
state_after: case refine_2
α : Type u_1
inst✝⁵ : TopologicalSpace α
inst✝⁴ : PartialOrder α
inst✝³ : PredOrder α
inst✝² : SuccOrder α
inst✝¹ : NoMinOrder α
inst✝ : NoMaxOrder α
h : OrderTopology α
⊢ generateFrom {s | ∃ a, s = Ioi a ∨ s = Iio a} = ⊥

tactic: exact bot_topologicalSpace_eq_generateFrom_of_pred_succOrder.symm
state_before: case refine_2
α : Type u_1
inst✝⁵ : TopologicalSpace α
inst✝⁴ : PartialOrder α
inst✝³ : PredOrder α
inst✝² : SuccOrder α
inst✝¹ : NoMinOrder α
inst✝ : NoMaxOrder α
h : OrderTopology α
⊢ generateFrom {s | ∃ a, s = Ioi a ∨ s = Iio a} = ⊥
state_after: no goals
Theorem: ContDiffBump.support_eq
File: Mathlib/Analysis/Calculus/BumpFunction/Basic.lean

tactic: simp only [toFun, support_comp_eq_preimage, ContDiffBumpBase.support _ _ f.one_lt_rOut_div_rIn]
state_before: E : Type u_1
X : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : NormedAddCommGroup X
inst✝¹ : NormedSpace ℝ X
inst✝ : HasContDiffBump E
c : E
f : ContDiffBump c
x : E
n : ℕ∞
⊢ support ↑f = ball c f.rOut
state_after: E : Type u_1
X : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : NormedAddCommGroup X
inst✝¹ : NormedSpace ℝ X
inst✝ : HasContDiffBump E
c : E
f : ContDiffBump c
x : E
n : ℕ∞
⊢ (fun x => f.rIn⁻¹ • (x - c)) ⁻¹' ball 0 (f.rOut / f.rIn) = ball c f.rOut

tactic: ext x
state_before: E : Type u_1
X : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : NormedAddCommGroup X
inst✝¹ : NormedSpace ℝ X
inst✝ : HasContDiffBump E
c : E
f : ContDiffBump c
x : E
n : ℕ∞
⊢ (fun x => f.rIn⁻¹ • (x - c)) ⁻¹' ball 0 (f.rOut / f.rIn) = ball c f.rOut
state_after: case h
E : Type u_1
X : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : NormedAddCommGroup X
inst✝¹ : NormedSpace ℝ X
inst✝ : HasContDiffBump E
c : E
f : ContDiffBump c
x✝ : E
n : ℕ∞
x : E
⊢ x ∈ (fun x => f.rIn⁻¹ • (x - c)) ⁻¹' ball 0 (f.rOut / f.rIn) ↔ x ∈ ball c f.rOut

tactic: simp only [mem_ball_iff_norm, sub_zero, norm_smul, mem_preimage, Real.norm_eq_abs, abs_inv,
  abs_of_pos f.rIn_pos, ← div_eq_inv_mul, div_lt_div_right f.rIn_pos]
state_before: case h
E : Type u_1
X : Type u_2
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℝ E
inst✝² : NormedAddCommGroup X
inst✝¹ : NormedSpace ℝ X
inst✝ : HasContDiffBump E
c : E
f : ContDiffBump c
x✝ : E
n : ℕ∞
x : E
⊢ x ∈ (fun x => f.rIn⁻¹ • (x - c)) ⁻¹' ball 0 (f.rOut / f.rIn) ↔ x ∈ ball c f.rOut
state_after: no goals
Theorem: SimpleGraph.triangleRemovalBound_nonpos
File: Mathlib/Combinatorics/SimpleGraph/Triangle/Removal.lean

tactic: rw [triangleRemovalBound, ceil_eq_zero.2 (div_nonpos_of_nonneg_of_nonpos _ hε)] <;> simp
state_before: α : Type u_1
inst✝² : DecidableEq α
inst✝¹ : Fintype α
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
s t : Finset α
P : Finpartition univ
ε : ℝ
hε : ε ≤ 0
⊢ triangleRemovalBound ε ≤ 0
state_after: no goals
Theorem: FreeMonoid.toList_prod
File: Mathlib/Algebra/FreeMonoid/Basic.lean

tactic: induction xs <;> simp [*, List.join]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
M : Type u_4
inst✝¹ : Monoid M
N : Type u_5
inst✝ : Monoid N
xs : List (FreeMonoid α)
⊢ toList xs.prod = (List.map (⇑toList) xs).join
state_after: no goals
Theorem: Real.sq_cos_pi_div_six
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Basic.lean

tactic: rw [cos_pi_div_six, div_pow, sq_sqrt] <;> norm_num
state_before: x : ℝ
⊢ cos (π / 6) ^ 2 = 3 / 4
state_after: no goals
Theorem: SimpleGraph.le_card_nonuniformWitness
File: Mathlib/Combinatorics/SimpleGraph/Regularity/Uniform.lean

tactic: unfold nonuniformWitness
state_before: α : Type u_1
𝕜 : Type u_2
inst✝¹ : LinearOrderedField 𝕜
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : 𝕜
s t : Finset α
a b : α
h : ¬G.IsUniform ε s t
⊢ ↑s.card * ε ≤ ↑(G.nonuniformWitness ε s t).card
state_after: α : Type u_1
𝕜 : Type u_2
inst✝¹ : LinearOrderedField 𝕜
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : 𝕜
s t : Finset α
a b : α
h : ¬G.IsUniform ε s t
⊢ ↑s.card * ε ≤ ↑(if WellOrderingRel s t then (G.nonuniformWitnesses ε s t).1 else (G.nonuniformWitnesses ε t s).2).card

tactic: split_ifs
state_before: α : Type u_1
𝕜 : Type u_2
inst✝¹ : LinearOrderedField 𝕜
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : 𝕜
s t : Finset α
a b : α
h : ¬G.IsUniform ε s t
⊢ ↑s.card * ε ≤ ↑(if WellOrderingRel s t then (G.nonuniformWitnesses ε s t).1 else (G.nonuniformWitnesses ε t s).2).card
state_after: case pos
α : Type u_1
𝕜 : Type u_2
inst✝¹ : LinearOrderedField 𝕜
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : 𝕜
s t : Finset α
a b : α
h : ¬G.IsUniform ε s t
h✝ : WellOrderingRel s t
⊢ ↑s.card * ε ≤ ↑(G.nonuniformWitnesses ε s t).1.card

case neg
α : Type u_1
𝕜 : Type u_2
inst✝¹ : LinearOrderedField 𝕜
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : 𝕜
s t : Finset α
a b : α
h : ¬G.IsUniform ε s t
h✝ : ¬WellOrderingRel s t
⊢ ↑s.card * ε ≤ ↑(G.nonuniformWitnesses ε t s).2.card

tactic: exact G.left_nonuniformWitnesses_card h
state_before: case pos
α : Type u_1
𝕜 : Type u_2
inst✝¹ : LinearOrderedField 𝕜
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : 𝕜
s t : Finset α
a b : α
h : ¬G.IsUniform ε s t
h✝ : WellOrderingRel s t
⊢ ↑s.card * ε ≤ ↑(G.nonuniformWitnesses ε s t).1.card
state_after: no goals

tactic: exact G.right_nonuniformWitnesses_card fun i => h i.symm
state_before: case neg
α : Type u_1
𝕜 : Type u_2
inst✝¹ : LinearOrderedField 𝕜
G : SimpleGraph α
inst✝ : DecidableRel G.Adj
ε : 𝕜
s t : Finset α
a b : α
h : ¬G.IsUniform ε s t
h✝ : ¬WellOrderingRel s t
⊢ ↑s.card * ε ≤ ↑(G.nonuniformWitnesses ε t s).2.card
state_after: no goals
Theorem: AkraBazziRecurrence.tendsto_atTop_r
File: Mathlib/Computability/AkraBazzi/AkraBazzi.lean

tactic: rw [tendsto_atTop]
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : Nonempty α
T : ℕ → ℝ
g : ℝ → ℝ
a b : α → ℝ
r : α → ℕ → ℕ
R : AkraBazziRecurrence T g a b r
i : α
⊢ Tendsto (r i) atTop atTop
state_after: α : Type u_1
inst✝¹ : Fintype α
inst✝ : Nonempty α
T : ℕ → ℝ
g : ℝ → ℝ
a b : α → ℝ
r : α → ℕ → ℕ
R : AkraBazziRecurrence T g a b r
i : α
⊢ ∀ (b : ℕ), ∀ᶠ (a : ℕ) in atTop, b ≤ r i a

tactic: intro b
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : Nonempty α
T : ℕ → ℝ
g : ℝ → ℝ
a b : α → ℝ
r : α → ℕ → ℕ
R : AkraBazziRecurrence T g a b r
i : α
⊢ ∀ (b : ℕ), ∀ᶠ (a : ℕ) in atTop, b ≤ r i a
state_after: α : Type u_1
inst✝¹ : Fintype α
inst✝ : Nonempty α
T : ℕ → ℝ
g : ℝ → ℝ
a b✝ : α → ℝ
r : α → ℕ → ℕ
R : AkraBazziRecurrence T g a b✝ r
i : α
b : ℕ
⊢ ∀ᶠ (a : ℕ) in atTop, b ≤ r i a

tactic: have := R.eventually_r_ge b
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : Nonempty α
T : ℕ → ℝ
g : ℝ → ℝ
a b✝ : α → ℝ
r : α → ℕ → ℕ
R : AkraBazziRecurrence T g a b✝ r
i : α
b : ℕ
⊢ ∀ᶠ (a : ℕ) in atTop, b ≤ r i a
state_after: α : Type u_1
inst✝¹ : Fintype α
inst✝ : Nonempty α
T : ℕ → ℝ
g : ℝ → ℝ
a b✝ : α → ℝ
r : α → ℕ → ℕ
R : AkraBazziRecurrence T g a b✝ r
i : α
b : ℕ
this : ∀ᶠ (n : ℕ) in atTop, ∀ (i : α), ↑b ≤ ↑(r i n)
⊢ ∀ᶠ (a : ℕ) in atTop, b ≤ r i a

tactic: rw [Filter.eventually_all] at this
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : Nonempty α
T : ℕ → ℝ
g : ℝ → ℝ
a b✝ : α → ℝ
r : α → ℕ → ℕ
R : AkraBazziRecurrence T g a b✝ r
i : α
b : ℕ
this : ∀ᶠ (n : ℕ) in atTop, ∀ (i : α), ↑b ≤ ↑(r i n)
⊢ ∀ᶠ (a : ℕ) in atTop, b ≤ r i a
state_after: α : Type u_1
inst✝¹ : Fintype α
inst✝ : Nonempty α
T : ℕ → ℝ
g : ℝ → ℝ
a b✝ : α → ℝ
r : α → ℕ → ℕ
R : AkraBazziRecurrence T g a b✝ r
i : α
b : ℕ
this : ∀ (i : α), ∀ᶠ (x : ℕ) in atTop, ↑b ≤ ↑(r i x)
⊢ ∀ᶠ (a : ℕ) in atTop, b ≤ r i a

tactic: exact_mod_cast this i
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : Nonempty α
T : ℕ → ℝ
g : ℝ → ℝ
a b✝ : α → ℝ
r : α → ℕ → ℕ
R : AkraBazziRecurrence T g a b✝ r
i : α
b : ℕ
this : ∀ (i : α), ∀ᶠ (x : ℕ) in atTop, ↑b ≤ ↑(r i x)
⊢ ∀ᶠ (a : ℕ) in atTop, b ≤ r i a
state_after: no goals
Theorem: EReal.eq_bot_iff_forall_lt
File: Mathlib/Data/Real/EReal.lean

tactic: constructor
state_before: x : EReal
⊢ x = ⊥ ↔ ∀ (y : ℝ), x < ↑y
state_after: case mp
x : EReal
⊢ x = ⊥ → ∀ (y : ℝ), x < ↑y

case mpr
x : EReal
⊢ (∀ (y : ℝ), x < ↑y) → x = ⊥

tactic: rintro rfl
state_before: case mp
x : EReal
⊢ x = ⊥ → ∀ (y : ℝ), x < ↑y
state_after: case mp

⊢ ∀ (y : ℝ), ⊥ < ↑y

tactic: exact bot_lt_coe
state_before: case mp

⊢ ∀ (y : ℝ), ⊥ < ↑y
state_after: no goals

tactic: contrapose!
state_before: case mpr
x : EReal
⊢ (∀ (y : ℝ), x < ↑y) → x = ⊥
state_after: case mpr
x : EReal
⊢ x ≠ ⊥ → ∃ y, ↑y ≤ x

tactic: intro h
state_before: case mpr
x : EReal
⊢ x ≠ ⊥ → ∃ y, ↑y ≤ x
state_after: case mpr
x : EReal
h : x ≠ ⊥
⊢ ∃ y, ↑y ≤ x

tactic: exact ⟨x.toReal, coe_toReal_le h⟩
state_before: case mpr
x : EReal
h : x ≠ ⊥
⊢ ∃ y, ↑y ≤ x
state_after: no goals
Theorem: Polynomial.degree_map_le
File: Mathlib/Algebra/Polynomial/Eval.lean

tactic: refine (degree_le_iff_coeff_zero _ _).2 fun m hm => ?_
state_before: R : Type u
S : Type v
T : Type w
ι : Type y
a b : R
m n : ℕ
inst✝¹ : Semiring R
p✝ q r : R[X]
inst✝ : Semiring S
f : R →+* S
p : R[X]
⊢ (map f p).degree ≤ p.degree
state_after: R : Type u
S : Type v
T : Type w
ι : Type y
a b : R
m✝ n : ℕ
inst✝¹ : Semiring R
p✝ q r : R[X]
inst✝ : Semiring S
f : R →+* S
p : R[X]
m : ℕ
hm : p.degree < ↑m
⊢ (map f p).coeff m = 0

tactic: rw [degree_lt_iff_coeff_zero] at hm
state_before: R : Type u
S : Type v
T : Type w
ι : Type y
a b : R
m✝ n : ℕ
inst✝¹ : Semiring R
p✝ q r : R[X]
inst✝ : Semiring S
f : R →+* S
p : R[X]
m : ℕ
hm : p.degree < ↑m
⊢ (map f p).coeff m = 0
state_after: R : Type u
S : Type v
T : Type w
ι : Type y
a b : R
m✝ n : ℕ
inst✝¹ : Semiring R
p✝ q r : R[X]
inst✝ : Semiring S
f : R →+* S
p : R[X]
m : ℕ
hm : ∀ (m_1 : ℕ), m ≤ m_1 → p.coeff m_1 = 0
⊢ (map f p).coeff m = 0

tactic: simp [hm m le_rfl]
state_before: R : Type u
S : Type v
T : Type w
ι : Type y
a b : R
m✝ n : ℕ
inst✝¹ : Semiring R
p✝ q r : R[X]
inst✝ : Semiring S
f : R →+* S
p : R[X]
m : ℕ
hm : ∀ (m_1 : ℕ), m ≤ m_1 → p.coeff m_1 = 0
⊢ (map f p).coeff m = 0
state_after: no goals
Theorem: NonUnitalSubalgebra.toNonUnitalSubsemiring_injective
File: Mathlib/Algebra/Algebra/NonUnitalSubalgebra.lean

tactic: rw [← mem_toNonUnitalSubsemiring, ← mem_toNonUnitalSubsemiring, h]
state_before: F : Type v'
R' : Type u'
R : Type u
A : Type v
B : Type w
C : Type w'
inst✝⁶ : CommSemiring R
inst✝⁵ : NonUnitalNonAssocSemiring A
inst✝⁴ : NonUnitalNonAssocSemiring B
inst✝³ : NonUnitalNonAssocSemiring C
inst✝² : Module R A
inst✝¹ : Module R B
inst✝ : Module R C
S T : NonUnitalSubalgebra R A
h : S.toNonUnitalSubsemiring = T.toNonUnitalSubsemiring
x : A
⊢ x ∈ S ↔ x ∈ T
state_after: no goals
Theorem: subsingleton_iff
File: Mathlib/Logic/Nontrivial/Defs.lean

tactic: intro h
state_before: α : Type u_1
β : Type u_2
⊢ Subsingleton α → ∀ (x y : α), x = y
state_after: α : Type u_1
β : Type u_2
h : Subsingleton α
⊢ ∀ (x y : α), x = y

tactic: exact Subsingleton.elim
state_before: α : Type u_1
β : Type u_2
h : Subsingleton α
⊢ ∀ (x y : α), x = y
state_after: no goals
Theorem: Int.closedBall_eq_Icc
File: Mathlib/Topology/Instances/Int.lean

tactic: rw [← preimage_closedBall, Real.closedBall_eq_Icc, preimage_Icc]
state_before: x : ℤ
r : ℝ
⊢ closedBall x r = Icc ⌈↑x - r⌉ ⌊↑x + r⌋
state_after: no goals
Theorem: Multiset.lcm_union
File: Mathlib/Algebra/GCDMonoid/Multiset.lean

tactic: rw [← lcm_dedup, dedup_ext.2, lcm_dedup, lcm_add]
state_before: α : Type u_1
inst✝² : CancelCommMonoidWithZero α
inst✝¹ : NormalizedGCDMonoid α
inst✝ : DecidableEq α
s₁ s₂ : Multiset α
⊢ (s₁ ∪ s₂).lcm = GCDMonoid.lcm s₁.lcm s₂.lcm
state_after: α : Type u_1
inst✝² : CancelCommMonoidWithZero α
inst✝¹ : NormalizedGCDMonoid α
inst✝ : DecidableEq α
s₁ s₂ : Multiset α
⊢ ∀ (a : α), a ∈ s₁ ∪ s₂ ↔ a ∈ s₁ + s₂

tactic: simp
state_before: α : Type u_1
inst✝² : CancelCommMonoidWithZero α
inst✝¹ : NormalizedGCDMonoid α
inst✝ : DecidableEq α
s₁ s₂ : Multiset α
⊢ ∀ (a : α), a ∈ s₁ ∪ s₂ ↔ a ∈ s₁ + s₂
state_after: no goals
Theorem: SatisfiesM_StateRefT_eq
File: .lake/packages/batteries/Batteries/Classes/SatisfiesM.lean

tactic: simp
state_before: m : Type → Type
ω σ α✝ : Type
p : α✝ → Prop
x : StateRefT' ω σ m α✝
inst✝ : Monad m
⊢ SatisfiesM p x ↔ ∀ (s : ST.Ref ω σ), SatisfiesM p (x s)
state_after: no goals
Theorem: CategoryTheory.shiftFunctor_of_induced
File: Mathlib/CategoryTheory/Shift/Induced.lean

tactic: rfl
state_before: C : Type u_4
D : Type u_1
inst✝⁵ : Category.{u_5, u_4} C
inst✝⁴ : Category.{u_2, u_1} D
F : C ⥤ D
A : Type u_3
inst✝³ : AddMonoid A
inst✝² : HasShift C A
s : A → D ⥤ D
i : (a : A) → F ⋙ s a ≅ shiftFunctor C a ⋙ F
inst✝¹ : ((whiskeringLeft C D D).obj F).Full
inst✝ : ((whiskeringLeft C D D).obj F).Faithful
a : A
⊢ shiftFunctor D a = s a
state_after: no goals