1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Set.prod_self_eq_iUnion_perm
File: Mathlib/GroupTheory/Perm/Cycle/Basic.lean

tactic: ext ⟨a, b⟩
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
f : Perm α
s : Set α
hf : f.IsCycleOn s
⊢ s ×ˢ s = ⋃ n, (fun a => (a, (f ^ n) a)) '' s
state_after: case h.mk
ι : Type u_1
α : Type u_2
β : Type u_3
f : Perm α
s : Set α
hf : f.IsCycleOn s
a b : α
⊢ (a, b) ∈ s ×ˢ s ↔ (a, b) ∈ ⋃ n, (fun a => (a, (f ^ n) a)) '' s

tactic: simp only [Set.mem_prod, Set.mem_iUnion, Set.mem_image]
state_before: case h.mk
ι : Type u_1
α : Type u_2
β : Type u_3
f : Perm α
s : Set α
hf : f.IsCycleOn s
a b : α
⊢ (a, b) ∈ s ×ˢ s ↔ (a, b) ∈ ⋃ n, (fun a => (a, (f ^ n) a)) '' s
state_after: case h.mk
ι : Type u_1
α : Type u_2
β : Type u_3
f : Perm α
s : Set α
hf : f.IsCycleOn s
a b : α
⊢ a ∈ s ∧ b ∈ s ↔ ∃ i, ∃ x ∈ s, (x, (f ^ i) x) = (a, b)

tactic: refine ⟨fun hx => ?_, ?_⟩
state_before: case h.mk
ι : Type u_1
α : Type u_2
β : Type u_3
f : Perm α
s : Set α
hf : f.IsCycleOn s
a b : α
⊢ a ∈ s ∧ b ∈ s ↔ ∃ i, ∃ x ∈ s, (x, (f ^ i) x) = (a, b)
state_after: case h.mk.refine_1
ι : Type u_1
α : Type u_2
β : Type u_3
f : Perm α
s : Set α
hf : f.IsCycleOn s
a b : α
hx : a ∈ s ∧ b ∈ s
⊢ ∃ i, ∃ x ∈ s, (x, (f ^ i) x) = (a, b)

case h.mk.refine_2
ι : Type u_1
α : Type u_2
β : Type u_3
f : Perm α
s : Set α
hf : f.IsCycleOn s
a b : α
⊢ (∃ i, ∃ x ∈ s, (x, (f ^ i) x) = (a, b)) → a ∈ s ∧ b ∈ s

tactic: obtain ⟨n, rfl⟩ := hf.2 hx.1 hx.2
state_before: case h.mk.refine_1
ι : Type u_1
α : Type u_2
β : Type u_3
f : Perm α
s : Set α
hf : f.IsCycleOn s
a b : α
hx : a ∈ s ∧ b ∈ s
⊢ ∃ i, ∃ x ∈ s, (x, (f ^ i) x) = (a, b)
state_after: case h.mk.refine_1.intro
ι : Type u_1
α : Type u_2
β : Type u_3
f : Perm α
s : Set α
hf : f.IsCycleOn s
a : α
n : ℤ
hx : a ∈ s ∧ (f ^ n) a ∈ s
⊢ ∃ i, ∃ x ∈ s, (x, (f ^ i) x) = (a, (f ^ n) a)

tactic: exact ⟨_, _, hx.1, rfl⟩
state_before: case h.mk.refine_1.intro
ι : Type u_1
α : Type u_2
β : Type u_3
f : Perm α
s : Set α
hf : f.IsCycleOn s
a : α
n : ℤ
hx : a ∈ s ∧ (f ^ n) a ∈ s
⊢ ∃ i, ∃ x ∈ s, (x, (f ^ i) x) = (a, (f ^ n) a)
state_after: no goals

tactic: rintro ⟨n, a, ha, ⟨⟩⟩
state_before: case h.mk.refine_2
ι : Type u_1
α : Type u_2
β : Type u_3
f : Perm α
s : Set α
hf : f.IsCycleOn s
a b : α
⊢ (∃ i, ∃ x ∈ s, (x, (f ^ i) x) = (a, b)) → a ∈ s ∧ b ∈ s
state_after: case h.mk.refine_2.intro.intro.intro.refl
ι : Type u_1
α : Type u_2
β : Type u_3
f : Perm α
s : Set α
hf : f.IsCycleOn s
a : α
n : ℤ
ha : a ∈ s
⊢ a ∈ s ∧ (f ^ n) a ∈ s

tactic: exact ⟨ha, (hf.1.perm_zpow _).mapsTo ha⟩
state_before: case h.mk.refine_2.intro.intro.intro.refl
ι : Type u_1
α : Type u_2
β : Type u_3
f : Perm α
s : Set α
hf : f.IsCycleOn s
a : α
n : ℤ
ha : a ∈ s
⊢ a ∈ s ∧ (f ^ n) a ∈ s
state_after: no goals
Theorem: TopCat.prodIsoProd_inv_fst
File: Mathlib/Topology/Category/TopCat/Limits/Products.lean

tactic: simp [Iso.inv_comp_eq]
state_before: J : Type v
inst✝ : SmallCategory J
X Y : TopCat
⊢ (X.prodIsoProd Y).inv ≫ prod.fst = prodFst
state_after: no goals
Theorem: mul_pow_sub_one
File: Mathlib/Algebra/Group/Basic.lean

tactic: rw [← pow_succ', Nat.sub_add_cancel $ Nat.one_le_iff_ne_zero.2 hn]
state_before: α : Type u_1
β : Type u_2
G : Type u_3
M : Type u_4
inst✝ : Monoid M
a✝ b c : M
m n : ℕ
hn : n ≠ 0
a : M
⊢ a * a ^ (n - 1) = a ^ n
state_after: no goals
Theorem: Cardinal.isRegular_aleph'_succ
File: Mathlib/SetTheory/Cardinal/Cofinality.lean

tactic: rw [aleph'_succ]
state_before: α : Type u_1
r : α → α → Prop
o : Ordinal.{u_2}
h : ω ≤ o
⊢ (aleph' (succ o)).IsRegular
state_after: α : Type u_1
r : α → α → Prop
o : Ordinal.{u_2}
h : ω ≤ o
⊢ (succ (aleph' o)).IsRegular

tactic: exact isRegular_succ (aleph0_le_aleph'.2 h)
state_before: α : Type u_1
r : α → α → Prop
o : Ordinal.{u_2}
h : ω ≤ o
⊢ (succ (aleph' o)).IsRegular
state_after: no goals
Theorem: AffineSubspace.mem_perpBisector_iff_inner_pointReflection_vsub_eq_zero
File: Mathlib/Geometry/Euclidean/PerpBisector.lean

tactic: rw [mem_perpBisector_iff_inner_eq_zero, Equiv.pointReflection_apply,
  vsub_midpoint, invOf_eq_inv, ← smul_add, real_inner_smul_left, vadd_vsub_assoc]
state_before: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
c c₁ c₂ p₁ p₂ : P
⊢ c ∈ perpBisector p₁ p₂ ↔ ⟪(Equiv.pointReflection c) p₁ -ᵥ p₂, p₂ -ᵥ p₁⟫_ℝ = 0
state_after: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
c c₁ c₂ p₁ p₂ : P
⊢ 2⁻¹ * ⟪c -ᵥ p₁ + (c -ᵥ p₂), p₂ -ᵥ p₁⟫_ℝ = 0 ↔ ⟪c -ᵥ p₁ + (c -ᵥ p₂), p₂ -ᵥ p₁⟫_ℝ = 0

tactic: simp
state_before: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
c c₁ c₂ p₁ p₂ : P
⊢ 2⁻¹ * ⟪c -ᵥ p₁ + (c -ᵥ p₂), p₂ -ᵥ p₁⟫_ℝ = 0 ↔ ⟪c -ᵥ p₁ + (c -ᵥ p₂), p₂ -ᵥ p₁⟫_ℝ = 0
state_after: no goals
Theorem: Multiset.prod_map_zpow
File: Mathlib/Algebra/BigOperators/Group/Multiset.lean

tactic: convert (m.map f).prod_hom (zpowGroupHom n : α →* α)
state_before: F : Type u_1
ι : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝ : DivisionCommMonoid α
m : Multiset ι
f g : ι → α
n : ℤ
⊢ (map (fun i => f i ^ n) m).prod = (map f m).prod ^ n
state_after: case h.e'_2.h.e'_3
F : Type u_1
ι : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝ : DivisionCommMonoid α
m : Multiset ι
f g : ι → α
n : ℤ
⊢ map (fun i => f i ^ n) m = map (⇑(zpowGroupHom n)) (map f m)

tactic: simp only [map_map, Function.comp_apply, zpowGroupHom_apply]
state_before: case h.e'_2.h.e'_3
F : Type u_1
ι : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝ : DivisionCommMonoid α
m : Multiset ι
f g : ι → α
n : ℤ
⊢ map (fun i => f i ^ n) m = map (⇑(zpowGroupHom n)) (map f m)
state_after: no goals
Theorem: set_smul_mem_nhds_smul_iff
File: Mathlib/Topology/Algebra/ConstMulAction.lean

tactic: refine ⟨fun h => ?_, fun h => set_smul_mem_nhds_smul h hc⟩
state_before: M : Type u_1
α : Type u_2
β : Type u_3
Γ : Type u_4
inst✝⁶ : Group Γ
T : Type u_5
inst✝⁵ : TopologicalSpace T
inst✝⁴ : MulAction Γ T
G₀ : Type u_6
inst✝³ : GroupWithZero G₀
inst✝² : MulAction G₀ α
inst✝¹ : TopologicalSpace α
inst✝ : ContinuousConstSMul G₀ α
c : G₀
s : Set α
x : α
hc : c ≠ 0
⊢ c • s ∈ 𝓝 (c • x) ↔ s ∈ 𝓝 x
state_after: M : Type u_1
α : Type u_2
β : Type u_3
Γ : Type u_4
inst✝⁶ : Group Γ
T : Type u_5
inst✝⁵ : TopologicalSpace T
inst✝⁴ : MulAction Γ T
G₀ : Type u_6
inst✝³ : GroupWithZero G₀
inst✝² : MulAction G₀ α
inst✝¹ : TopologicalSpace α
inst✝ : ContinuousConstSMul G₀ α
c : G₀
s : Set α
x : α
hc : c ≠ 0
h : c • s ∈ 𝓝 (c • x)
⊢ s ∈ 𝓝 x

tactic: rw [← inv_smul_smul₀ hc x, ← inv_smul_smul₀ hc s]
state_before: M : Type u_1
α : Type u_2
β : Type u_3
Γ : Type u_4
inst✝⁶ : Group Γ
T : Type u_5
inst✝⁵ : TopologicalSpace T
inst✝⁴ : MulAction Γ T
G₀ : Type u_6
inst✝³ : GroupWithZero G₀
inst✝² : MulAction G₀ α
inst✝¹ : TopologicalSpace α
inst✝ : ContinuousConstSMul G₀ α
c : G₀
s : Set α
x : α
hc : c ≠ 0
h : c • s ∈ 𝓝 (c • x)
⊢ s ∈ 𝓝 x
state_after: M : Type u_1
α : Type u_2
β : Type u_3
Γ : Type u_4
inst✝⁶ : Group Γ
T : Type u_5
inst✝⁵ : TopologicalSpace T
inst✝⁴ : MulAction Γ T
G₀ : Type u_6
inst✝³ : GroupWithZero G₀
inst✝² : MulAction G₀ α
inst✝¹ : TopologicalSpace α
inst✝ : ContinuousConstSMul G₀ α
c : G₀
s : Set α
x : α
hc : c ≠ 0
h : c • s ∈ 𝓝 (c • x)
⊢ c⁻¹ • c • s ∈ 𝓝 (c⁻¹ • c • x)

tactic: exact set_smul_mem_nhds_smul h (inv_ne_zero hc)
state_before: M : Type u_1
α : Type u_2
β : Type u_3
Γ : Type u_4
inst✝⁶ : Group Γ
T : Type u_5
inst✝⁵ : TopologicalSpace T
inst✝⁴ : MulAction Γ T
G₀ : Type u_6
inst✝³ : GroupWithZero G₀
inst✝² : MulAction G₀ α
inst✝¹ : TopologicalSpace α
inst✝ : ContinuousConstSMul G₀ α
c : G₀
s : Set α
x : α
hc : c ≠ 0
h : c • s ∈ 𝓝 (c • x)
⊢ c⁻¹ • c • s ∈ 𝓝 (c⁻¹ • c • x)
state_after: no goals
Theorem: NumberField.Embeddings.range_eval_eq_rootSet_minpoly
File: Mathlib/NumberTheory/NumberField/Embeddings.lean

tactic: convert (NumberField.isAlgebraic K).range_eval_eq_rootSet_minpoly A x using 1
state_before: K : Type u_1
A : Type u_2
inst✝⁴ : Field K
inst✝³ : NumberField K
inst✝² : Field A
inst✝¹ : Algebra ℚ A
inst✝ : IsAlgClosed A
x : K
⊢ (range fun φ => φ x) = (minpoly ℚ x).rootSet A
state_after: case h.e'_2
K : Type u_1
A : Type u_2
inst✝⁴ : Field K
inst✝³ : NumberField K
inst✝² : Field A
inst✝¹ : Algebra ℚ A
inst✝ : IsAlgClosed A
x : K
⊢ (range fun φ => φ x) = range fun ψ => ψ x

tactic: ext a
state_before: case h.e'_2
K : Type u_1
A : Type u_2
inst✝⁴ : Field K
inst✝³ : NumberField K
inst✝² : Field A
inst✝¹ : Algebra ℚ A
inst✝ : IsAlgClosed A
x : K
⊢ (range fun φ => φ x) = range fun ψ => ψ x
state_after: case h.e'_2.h
K : Type u_1
A : Type u_2
inst✝⁴ : Field K
inst✝³ : NumberField K
inst✝² : Field A
inst✝¹ : Algebra ℚ A
inst✝ : IsAlgClosed A
x : K
a : A
⊢ (a ∈ range fun φ => φ x) ↔ a ∈ range fun ψ => ψ x

tactic: exact ⟨fun ⟨φ, hφ⟩ => ⟨φ.toRatAlgHom, hφ⟩, fun ⟨φ, hφ⟩ => ⟨φ.toRingHom, hφ⟩⟩
state_before: case h.e'_2.h
K : Type u_1
A : Type u_2
inst✝⁴ : Field K
inst✝³ : NumberField K
inst✝² : Field A
inst✝¹ : Algebra ℚ A
inst✝ : IsAlgClosed A
x : K
a : A
⊢ (a ∈ range fun φ => φ x) ↔ a ∈ range fun ψ => ψ x
state_after: no goals
Theorem: FreeGroupBasis.repr_apply_coe
File: Mathlib/GroupTheory/FreeGroup/IsFreeGroup.lean

tactic: change b.repr (b.repr.symm (FreeGroup.of i)) = FreeGroup.of i
state_before: ι : Type u_1
ι' : Type u_2
G : Type u_3
H : Type u_4
inst✝¹ : Group G
inst✝ : Group H
b : FreeGroupBasis ι G
i : ι
⊢ b.repr (b i) = FreeGroup.of i
state_after: ι : Type u_1
ι' : Type u_2
G : Type u_3
H : Type u_4
inst✝¹ : Group G
inst✝ : Group H
b : FreeGroupBasis ι G
i : ι
⊢ b.repr (b.repr.symm (FreeGroup.of i)) = FreeGroup.of i

tactic: simp
state_before: ι : Type u_1
ι' : Type u_2
G : Type u_3
H : Type u_4
inst✝¹ : Group G
inst✝ : Group H
b : FreeGroupBasis ι G
i : ι
⊢ b.repr (b.repr.symm (FreeGroup.of i)) = FreeGroup.of i
state_after: no goals
Theorem: Vector3.insert_fz
File: Mathlib/Data/Vector3.lean

tactic: refine funext fun j => j.cases' ?_ ?_ <;> intros <;> rfl
state_before: α : Type u_1
m n : ℕ
a : α
v : Vector3 α n
⊢ insert a v fz = a :: v
state_after: no goals
Theorem: MeasureTheory.L1.integral_neg
File: Mathlib/MeasureTheory/Integral/Bochner.lean

tactic: simp only [integral]
state_before: α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedAddCommGroup F
m : MeasurableSpace α
μ : Measure α
inst✝⁵ : NormedSpace ℝ E
inst✝⁴ : NontriviallyNormedField 𝕜
inst✝³ : NormedSpace 𝕜 E
inst✝² : SMulCommClass ℝ 𝕜 E
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace E
f : ↥(Lp E 1 μ)
⊢ integral (-f) = -integral f
state_after: α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedAddCommGroup F
m : MeasurableSpace α
μ : Measure α
inst✝⁵ : NormedSpace ℝ E
inst✝⁴ : NontriviallyNormedField 𝕜
inst✝³ : NormedSpace 𝕜 E
inst✝² : SMulCommClass ℝ 𝕜 E
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace E
f : ↥(Lp E 1 μ)
⊢ integralCLM (-f) = -integralCLM f

tactic: exact map_neg integralCLM f
state_before: α : Type u_1
E : Type u_2
F : Type u_3
𝕜 : Type u_4
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedAddCommGroup F
m : MeasurableSpace α
μ : Measure α
inst✝⁵ : NormedSpace ℝ E
inst✝⁴ : NontriviallyNormedField 𝕜
inst✝³ : NormedSpace 𝕜 E
inst✝² : SMulCommClass ℝ 𝕜 E
inst✝¹ : NormedSpace ℝ F
inst✝ : CompleteSpace E
f : ↥(Lp E 1 μ)
⊢ integralCLM (-f) = -integralCLM f
state_after: no goals
Theorem: Finset.Ico_filter_lt
File: Mathlib/Order/Interval/Finset/Basic.lean

tactic: cases le_total b c with
| inl h => rw [Ico_filter_lt_of_right_le h, min_eq_left h]
| inr h => rw [Ico_filter_lt_of_le_right h, min_eq_right h]
state_before: ι : Type u_1
α : Type u_2
inst✝¹ : LinearOrder α
inst✝ : LocallyFiniteOrder α
a✝ b✝ a b c : α
⊢ filter (fun x => x < c) (Ico a b) = Ico a (min b c)
state_after: no goals

tactic: rw [Ico_filter_lt_of_right_le h, min_eq_left h]
state_before: case inl
ι : Type u_1
α : Type u_2
inst✝¹ : LinearOrder α
inst✝ : LocallyFiniteOrder α
a✝ b✝ a b c : α
h : b ≤ c
⊢ filter (fun x => x < c) (Ico a b) = Ico a (min b c)
state_after: no goals

tactic: rw [Ico_filter_lt_of_le_right h, min_eq_right h]
state_before: case inr
ι : Type u_1
α : Type u_2
inst✝¹ : LinearOrder α
inst✝ : LocallyFiniteOrder α
a✝ b✝ a b c : α
h : c ≤ b
⊢ filter (fun x => x < c) (Ico a b) = Ico a (min b c)
state_after: no goals
Theorem: Int.card_box
File: Mathlib/Order/Interval/Finset/Box.lean

tactic: simp_rw [Prod.card_box_succ, card_Icc, sub_neg_eq_add]
state_before: n✝ : ℕ
x : ℤ × ℤ
n : ℕ
x✝ : n + 1 ≠ 0
⊢ (box (n + 1)).card = 8 * (n + 1)
state_after: n✝ : ℕ
x : ℤ × ℤ
n : ℕ
x✝ : n + 1 ≠ 0
⊢ (↑n.succ + 1 + ↑n.succ).toNat * (↑n.succ + 1 + ↑n.succ).toNat - (↑n + 1 + ↑n).toNat * (↑n + 1 + ↑n).toNat =
    8 * (n + 1)

tactic: norm_cast
state_before: n✝ : ℕ
x : ℤ × ℤ
n : ℕ
x✝ : n + 1 ≠ 0
⊢ (↑n.succ + 1 + ↑n.succ).toNat * (↑n.succ + 1 + ↑n.succ).toNat - (↑n + 1 + ↑n).toNat * (↑n + 1 + ↑n).toNat =
    8 * (n + 1)
state_after: n✝ : ℕ
x : ℤ × ℤ
n : ℕ
x✝ : n + 1 ≠ 0
⊢ (n.succ + 1 + n.succ) * (n.succ + 1 + n.succ) - (n + 1 + n) * (n + 1 + n) = 8 * (n + 1)

tactic: refine tsub_eq_of_eq_add ?_
state_before: n✝ : ℕ
x : ℤ × ℤ
n : ℕ
x✝ : n + 1 ≠ 0
⊢ (n.succ + 1 + n.succ) * (n.succ + 1 + n.succ) - (n + 1 + n) * (n + 1 + n) = 8 * (n + 1)
state_after: n✝ : ℕ
x : ℤ × ℤ
n : ℕ
x✝ : n + 1 ≠ 0
⊢ (n.succ + 1 + n.succ) * (n.succ + 1 + n.succ) = 8 * (n + 1) + (n + 1 + n) * (n + 1 + n)

tactic: zify
state_before: n✝ : ℕ
x : ℤ × ℤ
n : ℕ
x✝ : n + 1 ≠ 0
⊢ (n.succ + 1 + n.succ) * (n.succ + 1 + n.succ) = 8 * (n + 1) + (n + 1 + n) * (n + 1 + n)
state_after: n✝ : ℕ
x : ℤ × ℤ
n : ℕ
x✝ : n + 1 ≠ 0
⊢ (↑n + 1 + 1 + (↑n + 1)) * (↑n + 1 + 1 + (↑n + 1)) = 8 * (↑n + 1) + (↑n + 1 + ↑n) * (↑n + 1 + ↑n)

tactic: ring
state_before: n✝ : ℕ
x : ℤ × ℤ
n : ℕ
x✝ : n + 1 ≠ 0
⊢ (↑n + 1 + 1 + (↑n + 1)) * (↑n + 1 + 1 + (↑n + 1)) = 8 * (↑n + 1) + (↑n + 1 + ↑n) * (↑n + 1 + ↑n)
state_after: no goals
Theorem: ENNReal.le_of_top_imp_top_of_toNNReal_le
File: Mathlib/Data/ENNReal/Basic.lean

tactic: by_contra! hlt
state_before: α : Type u_1
a✝ b✝ c d : ℝ≥0∞
r p q : ℝ≥0
a b : ℝ≥0∞
h : a = ⊤ → b = ⊤
h_nnreal : a ≠ ⊤ → b ≠ ⊤ → a.toNNReal ≤ b.toNNReal
⊢ a ≤ b
state_after: α : Type u_1
a✝ b✝ c d : ℝ≥0∞
r p q : ℝ≥0
a b : ℝ≥0∞
h : a = ⊤ → b = ⊤
h_nnreal : a ≠ ⊤ → b ≠ ⊤ → a.toNNReal ≤ b.toNNReal
hlt : b < a
⊢ False

tactic: lift b to ℝ≥0 using hlt.ne_top
state_before: α : Type u_1
a✝ b✝ c d : ℝ≥0∞
r p q : ℝ≥0
a b : ℝ≥0∞
h : a = ⊤ → b = ⊤
h_nnreal : a ≠ ⊤ → b ≠ ⊤ → a.toNNReal ≤ b.toNNReal
hlt : b < a
⊢ False
state_after: case intro
α : Type u_1
a✝ b✝ c d : ℝ≥0∞
r p q : ℝ≥0
a : ℝ≥0∞
b : ℝ≥0
h : a = ⊤ → ↑b = ⊤
h_nnreal : a ≠ ⊤ → ↑b ≠ ⊤ → a.toNNReal ≤ (↑b).toNNReal
hlt : ↑b < a
⊢ False

tactic: lift a to ℝ≥0 using mt h coe_ne_top
state_before: case intro
α : Type u_1
a✝ b✝ c d : ℝ≥0∞
r p q : ℝ≥0
a : ℝ≥0∞
b : ℝ≥0
h : a = ⊤ → ↑b = ⊤
h_nnreal : a ≠ ⊤ → ↑b ≠ ⊤ → a.toNNReal ≤ (↑b).toNNReal
hlt : ↑b < a
⊢ False
state_after: case intro.intro
α : Type u_1
a✝ b✝ c d : ℝ≥0∞
r p q b a : ℝ≥0
h : ↑a = ⊤ → ↑b = ⊤
h_nnreal : ↑a ≠ ⊤ → ↑b ≠ ⊤ → (↑a).toNNReal ≤ (↑b).toNNReal
hlt : ↑b < ↑a
⊢ False

tactic: refine hlt.not_le ?_
state_before: case intro.intro
α : Type u_1
a✝ b✝ c d : ℝ≥0∞
r p q b a : ℝ≥0
h : ↑a = ⊤ → ↑b = ⊤
h_nnreal : ↑a ≠ ⊤ → ↑b ≠ ⊤ → (↑a).toNNReal ≤ (↑b).toNNReal
hlt : ↑b < ↑a
⊢ False
state_after: case intro.intro
α : Type u_1
a✝ b✝ c d : ℝ≥0∞
r p q b a : ℝ≥0
h : ↑a = ⊤ → ↑b = ⊤
h_nnreal : ↑a ≠ ⊤ → ↑b ≠ ⊤ → (↑a).toNNReal ≤ (↑b).toNNReal
hlt : ↑b < ↑a
⊢ ↑a ≤ ↑b

tactic: simpa using h_nnreal
state_before: case intro.intro
α : Type u_1
a✝ b✝ c d : ℝ≥0∞
r p q b a : ℝ≥0
h : ↑a = ⊤ → ↑b = ⊤
h_nnreal : ↑a ≠ ⊤ → ↑b ≠ ⊤ → (↑a).toNNReal ≤ (↑b).toNNReal
hlt : ↑b < ↑a
⊢ ↑a ≤ ↑b
state_after: no goals
Theorem: CliffordAlgebra.evenToNeg_comp_evenToNeg
File: Mathlib/LinearAlgebra/CliffordAlgebra/EvenEquiv.lean

tactic: ext m₁ m₂ : 4
state_before: R : Type u_1
M : Type u_2
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
Q Q' : QuadraticForm R M
h : Q' = -Q
h' : Q = -Q'
⊢ (evenToNeg Q' Q h').comp (evenToNeg Q Q' h) = AlgHom.id R ↥(even Q)
state_after: case h.bilin.h.h
R : Type u_1
M : Type u_2
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
Q Q' : QuadraticForm R M
h : Q' = -Q
h' : Q = -Q'
m₁ m₂ : M
⊢ (((even.ι Q).compr₂ ((evenToNeg Q' Q h').comp (evenToNeg Q Q' h))).bilin m₁) m₂ =
    (((even.ι Q).compr₂ (AlgHom.id R ↥(even Q))).bilin m₁) m₂

tactic: dsimp only [EvenHom.compr₂_bilin, LinearMap.compr₂_apply, AlgHom.toLinearMap_apply,
  AlgHom.comp_apply, AlgHom.id_apply]
state_before: case h.bilin.h.h
R : Type u_1
M : Type u_2
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
Q Q' : QuadraticForm R M
h : Q' = -Q
h' : Q = -Q'
m₁ m₂ : M
⊢ (((even.ι Q).compr₂ ((evenToNeg Q' Q h').comp (evenToNeg Q Q' h))).bilin m₁) m₂ =
    (((even.ι Q).compr₂ (AlgHom.id R ↥(even Q))).bilin m₁) m₂
state_after: case h.bilin.h.h
R : Type u_1
M : Type u_2
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
Q Q' : QuadraticForm R M
h : Q' = -Q
h' : Q = -Q'
m₁ m₂ : M
⊢ (evenToNeg Q' Q h') ((evenToNeg Q Q' h) (((even.ι Q).bilin m₁) m₂)) = ((even.ι Q).bilin m₁) m₂

tactic: rw [evenToNeg_ι]
state_before: case h.bilin.h.h
R : Type u_1
M : Type u_2
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
Q Q' : QuadraticForm R M
h : Q' = -Q
h' : Q = -Q'
m₁ m₂ : M
⊢ (evenToNeg Q' Q h') ((evenToNeg Q Q' h) (((even.ι Q).bilin m₁) m₂)) = ((even.ι Q).bilin m₁) m₂
state_after: case h.bilin.h.h
R : Type u_1
M : Type u_2
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
Q Q' : QuadraticForm R M
h : Q' = -Q
h' : Q = -Q'
m₁ m₂ : M
⊢ (evenToNeg Q' Q h') (-((even.ι Q').bilin m₁) m₂) = ((even.ι Q).bilin m₁) m₂

tactic: erw [RingHom.map_neg, evenToNeg_ι, neg_neg]
state_before: case h.bilin.h.h
R : Type u_1
M : Type u_2
inst✝² : CommRing R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
Q Q' : QuadraticForm R M
h : Q' = -Q
h' : Q = -Q'
m₁ m₂ : M
⊢ (evenToNeg Q' Q h') (-((even.ι Q').bilin m₁) m₂) = ((even.ι Q).bilin m₁) m₂
state_after: no goals
Theorem: WeierstrassCurve.Jacobian.neg_equiv
File: Mathlib/AlgebraicGeometry/EllipticCurve/Jacobian.lean

tactic: rcases h with ⟨u, rfl⟩
state_before: R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P Q : Fin 3 → R
h : P ≈ Q
⊢ W'.neg P ≈ W'.neg Q
state_after: case intro
R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
Q : Fin 3 → R
u : Rˣ
⊢ W'.neg ((fun m => m • Q) u) ≈ W'.neg Q

tactic: exact neg_smul_equiv Q u.isUnit
state_before: case intro
R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
Q : Fin 3 → R
u : Rˣ
⊢ W'.neg ((fun m => m • Q) u) ≈ W'.neg Q
state_after: no goals
Theorem: Real.rpow_eq_zero
File: Mathlib/Analysis/SpecialFunctions/Pow/Real.lean

tactic: simp [rpow_eq_zero_iff_of_nonneg, *]
state_before: x y z : ℝ
hx : 0 ≤ x
hy : y ≠ 0
⊢ x ^ y = 0 ↔ x = 0
state_after: no goals
Theorem: Option.map₂_right_identity
File: Mathlib/Data/Option/NAry.lean

tactic: simp [h, map₂]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
f✝ : α → β → γ
a : Option α
b✝ : Option β
c : Option γ
α' : Type u_5
β' : Type u_6
δ' : Type u_7
ε : Type u_8
ε' : Type u_9
f : α → β → α
b : β
h : ∀ (a : α), f a b = a
o : Option α
⊢ map₂ f o (some b) = o
state_after: no goals
Theorem: Finset.neg_smul_finset
File: Mathlib/Data/Finset/Pointwise.lean

tactic: simp only [← image_smul, ← image_neg, image_image, neg_smul, Function.comp]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝³ : Ring α
inst✝² : AddCommGroup β
inst✝¹ : Module α β
inst✝ : DecidableEq β
s : Finset α
t : Finset β
a : α
⊢ -a • t = -(a • t)
state_after: no goals
Theorem: ContinuousLinearEquiv.comp_differentiableOn_iff
File: Mathlib/Analysis/Calculus/FDeriv/Equiv.lean

tactic: rw [DifferentiableOn, DifferentiableOn]
state_before: 𝕜 : Type u_1
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type u_3
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type u_4
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type u_5
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f✝ f₀ f₁ g : E → F
f' f₀' f₁' g' e : E →L[𝕜] F
x : E
s✝ t : Set E
L L₁ L₂ : Filter E
iso : E ≃L[𝕜] F
f : G → E
s : Set G
⊢ DifferentiableOn 𝕜 (⇑iso ∘ f) s ↔ DifferentiableOn 𝕜 f s
state_after: 𝕜 : Type u_1
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type u_3
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type u_4
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type u_5
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f✝ f₀ f₁ g : E → F
f' f₀' f₁' g' e : E →L[𝕜] F
x : E
s✝ t : Set E
L L₁ L₂ : Filter E
iso : E ≃L[𝕜] F
f : G → E
s : Set G
⊢ (∀ x ∈ s, DifferentiableWithinAt 𝕜 (⇑iso ∘ f) s x) ↔ ∀ x ∈ s, DifferentiableWithinAt 𝕜 f s x

tactic: simp only [iso.comp_differentiableWithinAt_iff]
state_before: 𝕜 : Type u_1
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type u_3
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type u_4
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type u_5
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f✝ f₀ f₁ g : E → F
f' f₀' f₁' g' e : E →L[𝕜] F
x : E
s✝ t : Set E
L L₁ L₂ : Filter E
iso : E ≃L[𝕜] F
f : G → E
s : Set G
⊢ (∀ x ∈ s, DifferentiableWithinAt 𝕜 (⇑iso ∘ f) s x) ↔ ∀ x ∈ s, DifferentiableWithinAt 𝕜 f s x
state_after: no goals
Theorem: SetTheory.PGame.Domineering.moveLeft_smaller
File: Mathlib/SetTheory/Game/Domineering.lean

tactic: simp [← moveLeft_card h, lt_add_one]
state_before: b : Board
m : ℤ × ℤ
h : m ∈ left b
⊢ Finset.card (moveLeft b m) / 2 < Finset.card b / 2
state_after: no goals
Theorem: mul_add_mul_le_mul_add_mul
File: Mathlib/Algebra/Order/Ring/Defs.lean

tactic: obtain ⟨b, rfl⟩ := exists_add_of_le hab
state_before: α : Type u
β : Type u_1
inst✝¹ : StrictOrderedSemiring α
a b c d : α
inst✝ : ExistsAddOfLE α
hab : a ≤ b
hcd : c ≤ d
⊢ a * d + b * c ≤ a * c + b * d
state_after: case intro
α : Type u
β : Type u_1
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: obtain ⟨d, rfl⟩ := exists_add_of_le hcd
state_before: case intro
α : Type u
β : Type u_1
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
state_after: case intro.intro
α : Type u
β : Type u_1
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: rw [mul_add, add_right_comm, mul_add, ← add_assoc]
state_before: case intro.intro
α : Type u
β : Type u_1
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)
state_after: case intro.intro
α : Type u
β : Type u_1
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

tactic: exact add_le_add_left (mul_le_mul_of_nonneg_right hab <| (le_add_iff_nonneg_right _).1 hcd) _
state_before: case intro.intro
α : Type u
β : Type u_1
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
state_after: no goals
Theorem: Submonoid.LocalizationMap.mk'_self'
File: Mathlib/GroupTheory/MonoidLocalization.lean

tactic: rw [mul_inv_left, mul_one]
state_before: M : Type u_1
inst✝² : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝¹ : CommMonoid N
P : Type u_3
inst✝ : CommMonoid P
f : S.LocalizationMap N
y : ↥S
⊢ f.toMap ↑y * ↑((IsUnit.liftRight (f.toMap.restrict S) ⋯) y)⁻¹ = 1
state_after: no goals
Theorem: Function.const_lt_const
File: Mathlib/Order/Basic.lean

tactic: simpa [Pi.lt_def] using le_of_lt
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
π : ι → Type u_4
inst✝¹ : Preorder α
inst✝ : Nonempty β
a b : α
⊢ const β a < const β b ↔ a < b
state_after: no goals