1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: ENNReal.lt_iff_exists_add_pos_lt
File: Mathlib/Data/ENNReal/Basic.lean

tactic: refine ⟨fun hab => ?_, fun ⟨r, _, hr⟩ => lt_of_le_of_lt le_self_add hr⟩
state_before: α : Type u_1
a b c d : ℝ≥0∞
r p q : ℝ≥0
⊢ a < b ↔ ∃ r, 0 < r ∧ a + ↑r < b
state_after: α : Type u_1
a b c d : ℝ≥0∞
r p q : ℝ≥0
hab : a < b
⊢ ∃ r, 0 < r ∧ a + ↑r < b

tactic: rcases lt_iff_exists_nnreal_btwn.1 hab with ⟨c, ac, cb⟩
state_before: α : Type u_1
a b c d : ℝ≥0∞
r p q : ℝ≥0
hab : a < b
⊢ ∃ r, 0 < r ∧ a + ↑r < b
state_after: case intro.intro
α : Type u_1
a b c✝ d : ℝ≥0∞
r p q : ℝ≥0
hab : a < b
c : ℝ≥0
ac : a < ↑c
cb : ↑c < b
⊢ ∃ r, 0 < r ∧ a + ↑r < b

tactic: lift a to ℝ≥0 using ac.ne_top
state_before: case intro.intro
α : Type u_1
a b c✝ d : ℝ≥0∞
r p q : ℝ≥0
hab : a < b
c : ℝ≥0
ac : a < ↑c
cb : ↑c < b
⊢ ∃ r, 0 < r ∧ a + ↑r < b
state_after: case intro.intro.intro
α : Type u_1
b c✝ d : ℝ≥0∞
r p q c : ℝ≥0
cb : ↑c < b
a : ℝ≥0
hab : ↑a < b
ac : ↑a < ↑c
⊢ ∃ r, 0 < r ∧ ↑a + ↑r < b

tactic: rw [coe_lt_coe] at ac
state_before: case intro.intro.intro
α : Type u_1
b c✝ d : ℝ≥0∞
r p q c : ℝ≥0
cb : ↑c < b
a : ℝ≥0
hab : ↑a < b
ac : ↑a < ↑c
⊢ ∃ r, 0 < r ∧ ↑a + ↑r < b
state_after: case intro.intro.intro
α : Type u_1
b c✝ d : ℝ≥0∞
r p q c : ℝ≥0
cb : ↑c < b
a : ℝ≥0
hab : ↑a < b
ac : a < c
⊢ ∃ r, 0 < r ∧ ↑a + ↑r < b

tactic: refine ⟨c - a, tsub_pos_iff_lt.2 ac, ?_⟩
state_before: case intro.intro.intro
α : Type u_1
b c✝ d : ℝ≥0∞
r p q c : ℝ≥0
cb : ↑c < b
a : ℝ≥0
hab : ↑a < b
ac : a < c
⊢ ∃ r, 0 < r ∧ ↑a + ↑r < b
state_after: case intro.intro.intro
α : Type u_1
b c✝ d : ℝ≥0∞
r p q c : ℝ≥0
cb : ↑c < b
a : ℝ≥0
hab : ↑a < b
ac : a < c
⊢ ↑a + ↑(c - a) < b

tactic: rwa [← coe_add, add_tsub_cancel_of_le ac.le]
state_before: case intro.intro.intro
α : Type u_1
b c✝ d : ℝ≥0∞
r p q c : ℝ≥0
cb : ↑c < b
a : ℝ≥0
hab : ↑a < b
ac : a < c
⊢ ↑a + ↑(c - a) < b
state_after: no goals
Theorem: AffineMap.decomp
File: Mathlib/LinearAlgebra/AffineSpace/AffineMap.lean

tactic: ext x
state_before: k : Type u_1
V1 : Type u_2
P1 : Type u_3
V2 : Type u_4
P2 : Type u_5
V3 : Type u_6
P3 : Type u_7
V4 : Type u_8
P4 : Type u_9
inst✝¹² : Ring k
inst✝¹¹ : AddCommGroup V1
inst✝¹⁰ : Module k V1
inst✝⁹ : AffineSpace V1 P1
inst✝⁸ : AddCommGroup V2
inst✝⁷ : Module k V2
inst✝⁶ : AffineSpace V2 P2
inst✝⁵ : AddCommGroup V3
inst✝⁴ : Module k V3
inst✝³ : AffineSpace V3 P3
inst✝² : AddCommGroup V4
inst✝¹ : Module k V4
inst✝ : AffineSpace V4 P4
f : V1 →ᵃ[k] V2
⊢ ⇑f = ⇑f.linear + fun x => f 0
state_after: case h
k : Type u_1
V1 : Type u_2
P1 : Type u_3
V2 : Type u_4
P2 : Type u_5
V3 : Type u_6
P3 : Type u_7
V4 : Type u_8
P4 : Type u_9
inst✝¹² : Ring k
inst✝¹¹ : AddCommGroup V1
inst✝¹⁰ : Module k V1
inst✝⁹ : AffineSpace V1 P1
inst✝⁸ : AddCommGroup V2
inst✝⁷ : Module k V2
inst✝⁶ : AffineSpace V2 P2
inst✝⁵ : AddCommGroup V3
inst✝⁴ : Module k V3
inst✝³ : AffineSpace V3 P3
inst✝² : AddCommGroup V4
inst✝¹ : Module k V4
inst✝ : AffineSpace V4 P4
f : V1 →ᵃ[k] V2
x : V1
⊢ f x = (⇑f.linear + fun x => f 0) x

tactic: calc
  f x = f.linear x +ᵥ f 0 := by rw [← f.map_vadd, vadd_eq_add, add_zero]
  _ = (f.linear + fun _ : V1 => f 0) x := rfl
state_before: case h
k : Type u_1
V1 : Type u_2
P1 : Type u_3
V2 : Type u_4
P2 : Type u_5
V3 : Type u_6
P3 : Type u_7
V4 : Type u_8
P4 : Type u_9
inst✝¹² : Ring k
inst✝¹¹ : AddCommGroup V1
inst✝¹⁰ : Module k V1
inst✝⁹ : AffineSpace V1 P1
inst✝⁸ : AddCommGroup V2
inst✝⁷ : Module k V2
inst✝⁶ : AffineSpace V2 P2
inst✝⁵ : AddCommGroup V3
inst✝⁴ : Module k V3
inst✝³ : AffineSpace V3 P3
inst✝² : AddCommGroup V4
inst✝¹ : Module k V4
inst✝ : AffineSpace V4 P4
f : V1 →ᵃ[k] V2
x : V1
⊢ f x = (⇑f.linear + fun x => f 0) x
state_after: no goals

tactic: rw [← f.map_vadd, vadd_eq_add, add_zero]
state_before: k : Type u_1
V1 : Type u_2
P1 : Type u_3
V2 : Type u_4
P2 : Type u_5
V3 : Type u_6
P3 : Type u_7
V4 : Type u_8
P4 : Type u_9
inst✝¹² : Ring k
inst✝¹¹ : AddCommGroup V1
inst✝¹⁰ : Module k V1
inst✝⁹ : AffineSpace V1 P1
inst✝⁸ : AddCommGroup V2
inst✝⁷ : Module k V2
inst✝⁶ : AffineSpace V2 P2
inst✝⁵ : AddCommGroup V3
inst✝⁴ : Module k V3
inst✝³ : AffineSpace V3 P3
inst✝² : AddCommGroup V4
inst✝¹ : Module k V4
inst✝ : AffineSpace V4 P4
f : V1 →ᵃ[k] V2
x : V1
⊢ f x = f.linear x +ᵥ f 0
state_after: no goals
Theorem: LowerSet.coe_iInf
File: Mathlib/Order/UpperLower/Basic.lean

tactic: simp_rw [iInf, coe_sInf, mem_range, iInter_exists, iInter_iInter_eq']
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
κ : ι → Sort u_5
inst✝ : LE α
S : Set (LowerSet α)
s t : LowerSet α
a : α
f : ι → LowerSet α
⊢ ↑(⨅ i, f i) = ⋂ i, ↑(f i)
state_after: no goals
Theorem: Set.mem_iInter₂
File: Mathlib/Data/Set/Lattice.lean

tactic: simp_rw [mem_iInter]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
x : γ
s : (i : ι) → κ i → Set γ
⊢ x ∈ ⋂ i, ⋂ j, s i j ↔ ∀ (i : ι) (j : κ i), x ∈ s i j
state_after: no goals
Theorem: List.permutationsAux2_comp_append
File: Mathlib/Data/List/Permutation.lean

tactic: induction' ys with ys_hd _ ys_ih generalizing f
state_before: α : Type u_1
β : Type u_2
t : α
ts ys : List α
r : List β
f : List α → β
⊢ (permutationsAux2 t [] r ys fun x => f (x ++ ts)).2 = (permutationsAux2 t ts r ys f).2
state_after: case nil
α : Type u_1
β : Type u_2
t : α
ts : List α
r : List β
f : List α → β
⊢ (permutationsAux2 t [] r [] fun x => f (x ++ ts)).2 = (permutationsAux2 t ts r [] f).2

case cons
α : Type u_1
β : Type u_2
t : α
ts : List α
r : List β
ys_hd : α
tail✝ : List α
ys_ih : ∀ (f : List α → β), (permutationsAux2 t [] r tail✝ fun x => f (x ++ ts)).2 = (permutationsAux2 t ts r tail✝ f).2
f : List α → β
⊢ (permutationsAux2 t [] r (ys_hd :: tail✝) fun x => f (x ++ ts)).2 = (permutationsAux2 t ts r (ys_hd :: tail✝) f).2

tactic: simp
state_before: case nil
α : Type u_1
β : Type u_2
t : α
ts : List α
r : List β
f : List α → β
⊢ (permutationsAux2 t [] r [] fun x => f (x ++ ts)).2 = (permutationsAux2 t ts r [] f).2
state_after: no goals

tactic: simp [ys_ih fun xs => f (ys_hd :: xs)]
state_before: case cons
α : Type u_1
β : Type u_2
t : α
ts : List α
r : List β
ys_hd : α
tail✝ : List α
ys_ih : ∀ (f : List α → β), (permutationsAux2 t [] r tail✝ fun x => f (x ++ ts)).2 = (permutationsAux2 t ts r tail✝ f).2
f : List α → β
⊢ (permutationsAux2 t [] r (ys_hd :: tail✝) fun x => f (x ++ ts)).2 = (permutationsAux2 t ts r (ys_hd :: tail✝) f).2
state_after: no goals
Theorem: Complex.tan_int_mul_pi_div_two
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Complex.lean

tactic: use n
state_before: n : ℤ
⊢ ∃ k, ↑k * ↑π / 2 = ↑n * ↑π / 2
state_after: no goals
Theorem: CategoryTheory.Limits.Types.Pushout.inl_rel'_inl_iff
File: Mathlib/CategoryTheory/Limits/Shapes/Types.lean

tactic: constructor
state_before: S X₁ X₂ : Type u
f : S ⟶ X₁
g : S ⟶ X₂
x₁ y₁ : X₁
⊢ Rel' f g (Sum.inl x₁) (Sum.inl y₁) ↔ x₁ = y₁ ∨ ∃ x₀ y₀, ∃ (_ : g x₀ = g y₀), x₁ = f x₀ ∧ y₁ = f y₀
state_after: case mp
S X₁ X₂ : Type u
f : S ⟶ X₁
g : S ⟶ X₂
x₁ y₁ : X₁
⊢ Rel' f g (Sum.inl x₁) (Sum.inl y₁) → x₁ = y₁ ∨ ∃ x₀ y₀, ∃ (_ : g x₀ = g y₀), x₁ = f x₀ ∧ y₁ = f y₀

case mpr
S X₁ X₂ : Type u
f : S ⟶ X₁
g : S ⟶ X₂
x₁ y₁ : X₁
⊢ (x₁ = y₁ ∨ ∃ x₀ y₀, ∃ (_ : g x₀ = g y₀), x₁ = f x₀ ∧ y₁ = f y₀) → Rel' f g (Sum.inl x₁) (Sum.inl y₁)

tactic: rintro (_|⟨_, _, h⟩)
state_before: case mp
S X₁ X₂ : Type u
f : S ⟶ X₁
g : S ⟶ X₂
x₁ y₁ : X₁
⊢ Rel' f g (Sum.inl x₁) (Sum.inl y₁) → x₁ = y₁ ∨ ∃ x₀ y₀, ∃ (_ : g x₀ = g y₀), x₁ = f x₀ ∧ y₁ = f y₀
state_after: case mp.refl
S X₁ X₂ : Type u
f : S ⟶ X₁
g : S ⟶ X₂
x₁ : X₁
⊢ x₁ = x₁ ∨ ∃ x₀ y₀, ∃ (_ : g x₀ = g y₀), x₁ = f x₀ ∧ x₁ = f y₀

case mp.inl_inl
S X₁ X₂ : Type u
f : S ⟶ X₁
g : S ⟶ X₂
x₀✝ y₀✝ : S
h : g x₀✝ = g y₀✝
⊢ f x₀✝ = f y₀✝ ∨ ∃ x₀ y₀, ∃ (_ : g x₀ = g y₀), f x₀✝ = f x₀ ∧ f y₀✝ = f y₀

tactic: exact Or.inl rfl
state_before: case mp.refl
S X₁ X₂ : Type u
f : S ⟶ X₁
g : S ⟶ X₂
x₁ : X₁
⊢ x₁ = x₁ ∨ ∃ x₀ y₀, ∃ (_ : g x₀ = g y₀), x₁ = f x₀ ∧ x₁ = f y₀
state_after: no goals

tactic: exact Or.inr ⟨_, _, h, rfl, rfl⟩
state_before: case mp.inl_inl
S X₁ X₂ : Type u
f : S ⟶ X₁
g : S ⟶ X₂
x₀✝ y₀✝ : S
h : g x₀✝ = g y₀✝
⊢ f x₀✝ = f y₀✝ ∨ ∃ x₀ y₀, ∃ (_ : g x₀ = g y₀), f x₀✝ = f x₀ ∧ f y₀✝ = f y₀
state_after: no goals

tactic: rintro (rfl | ⟨_,_ , h, rfl, rfl⟩)
state_before: case mpr
S X₁ X₂ : Type u
f : S ⟶ X₁
g : S ⟶ X₂
x₁ y₁ : X₁
⊢ (x₁ = y₁ ∨ ∃ x₀ y₀, ∃ (_ : g x₀ = g y₀), x₁ = f x₀ ∧ y₁ = f y₀) → Rel' f g (Sum.inl x₁) (Sum.inl y₁)
state_after: case mpr.inl
S X₁ X₂ : Type u
f : S ⟶ X₁
g : S ⟶ X₂
x₁ : X₁
⊢ Rel' f g (Sum.inl x₁) (Sum.inl x₁)

case mpr.inr.intro.intro.intro.intro
S X₁ X₂ : Type u
f : S ⟶ X₁
g : S ⟶ X₂
w✝¹ w✝ : S
h : g w✝¹ = g w✝
⊢ Rel' f g (Sum.inl (f w✝¹)) (Sum.inl (f w✝))

tactic: apply Rel'.refl
state_before: case mpr.inl
S X₁ X₂ : Type u
f : S ⟶ X₁
g : S ⟶ X₂
x₁ : X₁
⊢ Rel' f g (Sum.inl x₁) (Sum.inl x₁)
state_after: no goals

tactic: exact Rel'.inl_inl _ _ h
state_before: case mpr.inr.intro.intro.intro.intro
S X₁ X₂ : Type u
f : S ⟶ X₁
g : S ⟶ X₂
w✝¹ w✝ : S
h : g w✝¹ = g w✝
⊢ Rel' f g (Sum.inl (f w✝¹)) (Sum.inl (f w✝))
state_after: no goals
Theorem: Finset.map_infs
File: Mathlib/Data/Finset/Sups.lean

tactic: simpa [map_eq_image] using image_infs f s t
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝⁵ : DecidableEq α
inst✝⁴ : DecidableEq β
inst✝³ : SemilatticeInf α
inst✝² : SemilatticeInf β
inst✝¹ : FunLike F α β
inst✝ : InfHomClass F α β
s✝ s₁ s₂ t✝ t₁ t₂ u v : Finset α
a b c : α
f : F
hf : Injective ⇑f
s t : Finset α
⊢ map { toFun := ⇑f, inj' := hf } (s ⊼ t) = map { toFun := ⇑f, inj' := hf } s ⊼ map { toFun := ⇑f, inj' := hf } t
state_after: no goals
Theorem: intervalIntegral.integral_zero
File: Mathlib/MeasureTheory/Integral/IntervalIntegral.lean

tactic: simp [intervalIntegral]
state_before: ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A : Type u_5
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
a b : ℝ
f g : ℝ → E
μ : Measure ℝ
⊢ ∫ (x : ℝ) in a..b, 0 ∂μ = 0
state_after: no goals
Theorem: Pretrivialization.symm_trans_source_eq
File: Mathlib/Topology/FiberBundle/Trivialization.lean

tactic: rw [PartialEquiv.trans_source, e'.source_eq, PartialEquiv.symm_source, e.target_eq, inter_comm,
  e.preimage_symm_proj_inter, inter_comm]
state_before: ι : Type u_1
B : Type u_2
F : Type u_3
E : B → Type u_4
Z : Type u_5
inst✝¹ : TopologicalSpace B
inst✝ : TopologicalSpace F
proj : Z → B
e✝ : Pretrivialization F proj
x : Z
e e' : Pretrivialization F proj
⊢ (e.symm.trans e'.toPartialEquiv).source = (e.baseSet ∩ e'.baseSet) ×ˢ univ
state_after: no goals
Theorem: Real.rpow_sub_one
File: Mathlib/Analysis/SpecialFunctions/Pow/Real.lean

tactic: simpa using rpow_sub_nat hx y 1
state_before: x✝ y✝ z : ℝ
n : ℕ
x : ℝ
hx : x ≠ 0
y : ℝ
⊢ x ^ (y - 1) = x ^ y / x
state_after: no goals
Theorem: Matrix.conjTranspose_inv_intCast_smul
File: Mathlib/Data/Matrix/Basic.lean

tactic: simp
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝³ : DivisionRing R
inst✝² : AddCommGroup α
inst✝¹ : StarAddMonoid α
inst✝ : Module R α
c : ℤ
M : Matrix m n α
⊢ ∀ (i : n) (j : m), ((↑c)⁻¹ • M)ᴴ i j = ((↑c)⁻¹ • Mᴴ) i j
state_after: no goals
Theorem: Metric.mem_thickening_iff
File: Mathlib/Topology/MetricSpace/Thickening.lean

tactic: have key_iff : ∀ z : X, edist x z < ENNReal.ofReal δ ↔ dist x z < δ := fun z ↦ by
  rw [dist_edist, lt_ofReal_iff_toReal_lt (edist_ne_top _ _)]
state_before: ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
δ : ℝ
s : Set α
x✝ : α
X : Type u
inst✝ : PseudoMetricSpace X
E : Set X
x : X
⊢ x ∈ thickening δ E ↔ ∃ z ∈ E, dist x z < δ
state_after: ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
δ : ℝ
s : Set α
x✝ : α
X : Type u
inst✝ : PseudoMetricSpace X
E : Set X
x : X
key_iff : ∀ (z : X), edist x z < ENNReal.ofReal δ ↔ dist x z < δ
⊢ x ∈ thickening δ E ↔ ∃ z ∈ E, dist x z < δ

tactic: simp_rw [mem_thickening_iff_exists_edist_lt, key_iff]
state_before: ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
δ : ℝ
s : Set α
x✝ : α
X : Type u
inst✝ : PseudoMetricSpace X
E : Set X
x : X
key_iff : ∀ (z : X), edist x z < ENNReal.ofReal δ ↔ dist x z < δ
⊢ x ∈ thickening δ E ↔ ∃ z ∈ E, dist x z < δ
state_after: no goals

tactic: rw [dist_edist, lt_ofReal_iff_toReal_lt (edist_ne_top _ _)]
state_before: ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α
δ : ℝ
s : Set α
x✝ : α
X : Type u
inst✝ : PseudoMetricSpace X
E : Set X
x z : X
⊢ edist x z < ENNReal.ofReal δ ↔ dist x z < δ
state_after: no goals
Theorem: Complex.continuous_sinh
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Basic.lean

tactic: change Continuous fun z => (exp z - exp (-z)) / 2
state_before: ⊢ Continuous sinh
state_after: ⊢ Continuous fun z => (cexp z - cexp (-z)) / 2

tactic: continuity
state_before: ⊢ Continuous fun z => (cexp z - cexp (-z)) / 2
state_after: no goals
Theorem: BoundedContinuousFunction.isometry_extend
File: Mathlib/Topology/ContinuousFunction/Bounded.lean

tactic: simp [dist_nonneg]
state_before: F : Type u_1
α : Type u
β : Type v
γ : Type w
inst✝⁴ : TopologicalSpace α
inst✝³ : PseudoMetricSpace β
inst✝² : PseudoMetricSpace γ
f✝ g : α →ᵇ β
x : α
C : ℝ
δ : Type u_2
inst✝¹ : TopologicalSpace δ
inst✝ : DiscreteTopology δ
f : α ↪ δ
h : δ →ᵇ β
g₁ g₂ : α →ᵇ β
⊢ dist (extend f g₁ h) (extend f g₂ h) = dist g₁ g₂
state_after: no goals
Theorem: NormedAddGroupHom.norm_id
File: Mathlib/Analysis/Normed/Group/Hom.lean

tactic: refine norm_id_of_nontrivial_seminorm V ?_
state_before: V✝ : Type u_1
V₁ : Type u_2
V₂ : Type u_3
V₃ : Type u_4
inst✝⁵ : SeminormedAddCommGroup V✝
inst✝⁴ : SeminormedAddCommGroup V₁
inst✝³ : SeminormedAddCommGroup V₂
inst✝² : SeminormedAddCommGroup V₃
f g : NormedAddGroupHom V₁ V₂
V : Type u_5
inst✝¹ : NormedAddCommGroup V
inst✝ : Nontrivial V
⊢ ‖id V‖ = 1
state_after: V✝ : Type u_1
V₁ : Type u_2
V₂ : Type u_3
V₃ : Type u_4
inst✝⁵ : SeminormedAddCommGroup V✝
inst✝⁴ : SeminormedAddCommGroup V₁
inst✝³ : SeminormedAddCommGroup V₂
inst✝² : SeminormedAddCommGroup V₃
f g : NormedAddGroupHom V₁ V₂
V : Type u_5
inst✝¹ : NormedAddCommGroup V
inst✝ : Nontrivial V
⊢ ∃ x, ‖x‖ ≠ 0

tactic: obtain ⟨x, hx⟩ := exists_ne (0 : V)
state_before: V✝ : Type u_1
V₁ : Type u_2
V₂ : Type u_3
V₃ : Type u_4
inst✝⁵ : SeminormedAddCommGroup V✝
inst✝⁴ : SeminormedAddCommGroup V₁
inst✝³ : SeminormedAddCommGroup V₂
inst✝² : SeminormedAddCommGroup V₃
f g : NormedAddGroupHom V₁ V₂
V : Type u_5
inst✝¹ : NormedAddCommGroup V
inst✝ : Nontrivial V
⊢ ∃ x, ‖x‖ ≠ 0
state_after: case intro
V✝ : Type u_1
V₁ : Type u_2
V₂ : Type u_3
V₃ : Type u_4
inst✝⁵ : SeminormedAddCommGroup V✝
inst✝⁴ : SeminormedAddCommGroup V₁
inst✝³ : SeminormedAddCommGroup V₂
inst✝² : SeminormedAddCommGroup V₃
f g : NormedAddGroupHom V₁ V₂
V : Type u_5
inst✝¹ : NormedAddCommGroup V
inst✝ : Nontrivial V
x : V
hx : x ≠ 0
⊢ ∃ x, ‖x‖ ≠ 0

tactic: exact ⟨x, ne_of_gt (norm_pos_iff.2 hx)⟩
state_before: case intro
V✝ : Type u_1
V₁ : Type u_2
V₂ : Type u_3
V₃ : Type u_4
inst✝⁵ : SeminormedAddCommGroup V✝
inst✝⁴ : SeminormedAddCommGroup V₁
inst✝³ : SeminormedAddCommGroup V₂
inst✝² : SeminormedAddCommGroup V₃
f g : NormedAddGroupHom V₁ V₂
V : Type u_5
inst✝¹ : NormedAddCommGroup V
inst✝ : Nontrivial V
x : V
hx : x ≠ 0
⊢ ∃ x, ‖x‖ ≠ 0
state_after: no goals
Theorem: Real.rpow_inv_rpow
File: Mathlib/Analysis/SpecialFunctions/Pow/Real.lean

tactic: rw [← rpow_mul hx, inv_mul_cancel hy, rpow_one]
state_before: x y z : ℝ
n : ℕ
hx : 0 ≤ x
hy : y ≠ 0
⊢ (x ^ y⁻¹) ^ y = x
state_after: no goals
Theorem: Polynomial.multiplicity_le_one_of_separable
File: Mathlib/FieldTheory/Separable.lean

tactic: contrapose! hq
state_before: R : Type u
inst✝¹ : CommSemiring R
S : Type v
inst✝ : CommSemiring S
p✝ q✝ : ℕ
p q : R[X]
hq : ¬IsUnit q
hsep : p.Separable
⊢ multiplicity q p ≤ 1
state_after: R : Type u
inst✝¹ : CommSemiring R
S : Type v
inst✝ : CommSemiring S
p✝ q✝ : ℕ
p q : R[X]
hsep : p.Separable
hq : 1 < multiplicity q p
⊢ IsUnit q

tactic: apply isUnit_of_self_mul_dvd_separable hsep
state_before: R : Type u
inst✝¹ : CommSemiring R
S : Type v
inst✝ : CommSemiring S
p✝ q✝ : ℕ
p q : R[X]
hsep : p.Separable
hq : 1 < multiplicity q p
⊢ IsUnit q
state_after: R : Type u
inst✝¹ : CommSemiring R
S : Type v
inst✝ : CommSemiring S
p✝ q✝ : ℕ
p q : R[X]
hsep : p.Separable
hq : 1 < multiplicity q p
⊢ q * q ∣ p

tactic: rw [← sq]
state_before: R : Type u
inst✝¹ : CommSemiring R
S : Type v
inst✝ : CommSemiring S
p✝ q✝ : ℕ
p q : R[X]
hsep : p.Separable
hq : 1 < multiplicity q p
⊢ q * q ∣ p
state_after: R : Type u
inst✝¹ : CommSemiring R
S : Type v
inst✝ : CommSemiring S
p✝ q✝ : ℕ
p q : R[X]
hsep : p.Separable
hq : 1 < multiplicity q p
⊢ q ^ 2 ∣ p

tactic: apply multiplicity.pow_dvd_of_le_multiplicity
state_before: R : Type u
inst✝¹ : CommSemiring R
S : Type v
inst✝ : CommSemiring S
p✝ q✝ : ℕ
p q : R[X]
hsep : p.Separable
hq : 1 < multiplicity q p
⊢ q ^ 2 ∣ p
state_after: case a
R : Type u
inst✝¹ : CommSemiring R
S : Type v
inst✝ : CommSemiring S
p✝ q✝ : ℕ
p q : R[X]
hsep : p.Separable
hq : 1 < multiplicity q p
⊢ ↑2 ≤ multiplicity q p

tactic: have h : ⟨Part.Dom 1 ∧ Part.Dom 1, fun _ ↦ 2⟩ ≤ multiplicity q p := PartENat.add_one_le_of_lt hq
state_before: case a
R : Type u
inst✝¹ : CommSemiring R
S : Type v
inst✝ : CommSemiring S
p✝ q✝ : ℕ
p q : R[X]
hsep : p.Separable
hq : 1 < multiplicity q p
⊢ ↑2 ≤ multiplicity q p
state_after: case a
R : Type u
inst✝¹ : CommSemiring R
S : Type v
inst✝ : CommSemiring S
p✝ q✝ : ℕ
p q : R[X]
hsep : p.Separable
hq : 1 < multiplicity q p
h : { Dom := Part.Dom 1 ∧ Part.Dom 1, get := fun x => 2 } ≤ multiplicity q p
⊢ ↑2 ≤ multiplicity q p

tactic: rw [and_self] at h
state_before: case a
R : Type u
inst✝¹ : CommSemiring R
S : Type v
inst✝ : CommSemiring S
p✝ q✝ : ℕ
p q : R[X]
hsep : p.Separable
hq : 1 < multiplicity q p
h : { Dom := Part.Dom 1 ∧ Part.Dom 1, get := fun x => 2 } ≤ multiplicity q p
⊢ ↑2 ≤ multiplicity q p
state_after: case a
R : Type u
inst✝¹ : CommSemiring R
S : Type v
inst✝ : CommSemiring S
p✝ q✝ : ℕ
p q : R[X]
hsep : p.Separable
hq : 1 < multiplicity q p
h : { Dom := Part.Dom 1, get := fun x => 2 } ≤ multiplicity q p
⊢ ↑2 ≤ multiplicity q p

tactic: exact h
state_before: case a
R : Type u
inst✝¹ : CommSemiring R
S : Type v
inst✝ : CommSemiring S
p✝ q✝ : ℕ
p q : R[X]
hsep : p.Separable
hq : 1 < multiplicity q p
h : { Dom := Part.Dom 1, get := fun x => 2 } ≤ multiplicity q p
⊢ ↑2 ≤ multiplicity q p
state_after: no goals
Theorem: Nat.fib_add_two_strictMono
File: Mathlib/Data/Nat/Fib/Basic.lean

tactic: refine strictMono_nat_of_lt_succ fun n => ?_
state_before: ⊢ StrictMono fun n => fib (n + 2)
state_after: n : ℕ
⊢ fib (n + 2) < fib (n + 1 + 2)

tactic: rw [add_right_comm]
state_before: n : ℕ
⊢ fib (n + 2) < fib (n + 1 + 2)
state_after: n : ℕ
⊢ fib (n + 2) < fib (n + 2 + 1)

tactic: exact fib_lt_fib_succ (self_le_add_left _ _)
state_before: n : ℕ
⊢ fib (n + 2) < fib (n + 2 + 1)
state_after: no goals
Theorem: WeierstrassCurve.Jacobian.addZ_of_X_eq
File: Mathlib/AlgebraicGeometry/EllipticCurve/Jacobian.lean

tactic: rw [addZ, hx, sub_self]
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
hx : P x * Q z ^ 2 = Q x * P z ^ 2
⊢ addZ P Q = 0
state_after: no goals
Theorem: IsAdjoinRoot.mem_ker_map
File: Mathlib/RingTheory/IsAdjoinRoot.lean

tactic: rw [h.ker_map, Ideal.mem_span_singleton]
state_before: R : Type u
S : Type v
inst✝² : CommRing R
inst✝¹ : Ring S
f : R[X]
inst✝ : Algebra R S
h : IsAdjoinRoot S f
p : R[X]
⊢ p ∈ RingHom.ker h.map ↔ f ∣ p
state_after: no goals
Theorem: IntermediateField.normalClosure_of_normal
File: Mathlib/FieldTheory/NormalClosure.lean

tactic: simp only [normalClosure_def, AlgHom.fieldRange_of_normal, iSup_const]
state_before: F : Type u_1
K✝ : Type u_2
L : Type u_3
inst✝⁵ : Field F
inst✝⁴ : Field K✝
inst✝³ : Field L
inst✝² : Algebra F K✝
inst✝¹ : Algebra F L
K K' : IntermediateField F L
inst✝ : Normal F ↥K
⊢ normalClosure F (↥K) L = K
state_after: no goals
Theorem: List.exists_erase_eq
File: .lake/packages/batteries/Batteries/Data/List/Lemmas.lean

tactic: let ⟨_, l₁, l₂, h₁, e, h₂, h₃⟩ := exists_of_eraseP h (beq_self_eq_true _)
state_before: α : Type u_1
inst✝¹ : BEq α
inst✝ : LawfulBEq α
a : α
l : List α
h : a ∈ l
⊢ ∃ l₁ l₂, ¬a ∈ l₁ ∧ l = l₁ ++ a :: l₂ ∧ l.erase a = l₁ ++ l₂
state_after: α : Type u_1
inst✝¹ : BEq α
inst✝ : LawfulBEq α
a : α
l : List α
h : a ∈ l
w✝ : α
l₁ l₂ : List α
h₁ : ∀ (b : α), b ∈ l₁ → ¬(a == b) = true
e : (a == w✝) = true
h₂ : l = l₁ ++ w✝ :: l₂
h₃ : eraseP (BEq.beq a) l = l₁ ++ l₂
⊢ ∃ l₁ l₂, ¬a ∈ l₁ ∧ l = l₁ ++ a :: l₂ ∧ l.erase a = l₁ ++ l₂

tactic: rw [erase_eq_eraseP]
state_before: α : Type u_1
inst✝¹ : BEq α
inst✝ : LawfulBEq α
a : α
l : List α
h : a ∈ l
w✝ : α
l₁ l₂ : List α
h₁ : ∀ (b : α), b ∈ l₁ → ¬(a == b) = true
e : (a == w✝) = true
h₂ : l = l₁ ++ w✝ :: l₂
h₃ : eraseP (BEq.beq a) l = l₁ ++ l₂
⊢ ∃ l₁ l₂, ¬a ∈ l₁ ∧ l = l₁ ++ a :: l₂ ∧ l.erase a = l₁ ++ l₂
state_after: α : Type u_1
inst✝¹ : BEq α
inst✝ : LawfulBEq α
a : α
l : List α
h : a ∈ l
w✝ : α
l₁ l₂ : List α
h₁ : ∀ (b : α), b ∈ l₁ → ¬(a == b) = true
e : (a == w✝) = true
h₂ : l = l₁ ++ w✝ :: l₂
h₃ : eraseP (BEq.beq a) l = l₁ ++ l₂
⊢ ∃ l₁ l₂, ¬a ∈ l₁ ∧ l = l₁ ++ a :: l₂ ∧ eraseP (fun x => a == x) l = l₁ ++ l₂

tactic: exact ⟨l₁, l₂, fun h => h₁ _ h (beq_self_eq_true _), eq_of_beq e ▸ h₂, h₃⟩
state_before: α : Type u_1
inst✝¹ : BEq α
inst✝ : LawfulBEq α
a : α
l : List α
h : a ∈ l
w✝ : α
l₁ l₂ : List α
h₁ : ∀ (b : α), b ∈ l₁ → ¬(a == b) = true
e : (a == w✝) = true
h₂ : l = l₁ ++ w✝ :: l₂
h₃ : eraseP (BEq.beq a) l = l₁ ++ l₂
⊢ ∃ l₁ l₂, ¬a ∈ l₁ ∧ l = l₁ ++ a :: l₂ ∧ eraseP (fun x => a == x) l = l₁ ++ l₂
state_after: no goals
Theorem: Finset.sum_smul_const_vsub_eq_vsub_affineCombination
File: Mathlib/LinearAlgebra/AffineSpace/Combination.lean

tactic: rw [sum_smul_vsub_eq_affineCombination_vsub, affineCombination_apply_const _ _ _ h]
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝² : Ring k
inst✝¹ : AddCommGroup V
inst✝ : Module k V
S : AffineSpace V P
ι : Type u_4
s : Finset ι
ι₂ : Type u_5
s₂ : Finset ι₂
w : ι → k
p₂ : ι → P
p₁ : P
h : ∑ i ∈ s, w i = 1
⊢ ∑ i ∈ s, w i • (p₁ -ᵥ p₂ i) = p₁ -ᵥ (affineCombination k s p₂) w
state_after: no goals