tasksource/leandojo huggingface dataset:
Theorem: Fin.map_valEmbedding_Ico
File: Mathlib/Data/Fin/Interval.lean

tactic: simp [Ico_eq_finset_subtype, Finset.fin, Finset.map_map]
state_before: n : ℕ
a b : Fin n
⊢ map valEmbedding (Ico a b) = Ico ↑a ↑b
Theorem: integral_Ioi_rpow_of_lt
File: Mathlib/Analysis/SpecialFunctions/ImproperIntegrals.lean

tactic: have hd : ∀ (x : ℝ) (_ : x ∈ Ici c), HasDerivAt (fun t => t ^ (a + 1) / (a + 1)) (x ^ a) x := by
  intro x hx
  convert (hasDerivAt_rpow_const (p := a + 1) (Or.inl (hc.trans_le hx).ne')).div_const _ using 1
  field_simp [show a + 1 ≠ 0 from ne_of_lt (by linarith), mul_comm]
state_before: a : ℝ
ha : a < -1
c : ℝ
hc : 0 < c
⊢ (∫ (t : ℝ) in Ioi c, t ^ a) = -c ^ (a + 1) / (a + 1)

tactic: have ht : Tendsto (fun t => t ^ (a + 1) / (a + 1)) atTop (𝓝 (0 / (a + 1))) := by
  apply Tendsto.div_const
  simpa only [neg_neg] using tendsto_rpow_neg_atTop (by linarith : 0 < -(a + 1))
state_before: a : ℝ
ha : a < -1
c : ℝ
hc : 0 < c
hd : ∀ (x : ℝ), x ∈ Ici c → HasDerivAt (fun t => t ^ (a + 1) / (a + 1)) (x ^ a) x
⊢ (∫ (t : ℝ) in Ioi c, t ^ a) = -c ^ (a + 1) / (a + 1)

tactic: convert integral_Ioi_of_hasDerivAt_of_tendsto' hd (integrableOn_Ioi_rpow_of_lt ha hc) ht using 1
state_before: a : ℝ
ha : a < -1
c : ℝ
hc : 0 < c
hd : ∀ (x : ℝ), x ∈ Ici c → HasDerivAt (fun t => t ^ (a + 1) / (a + 1)) (x ^ a) x
ht : Tendsto (fun t => t ^ (a + 1) / (a + 1)) atTop (𝓝 (0 / (a + 1)))
⊢ (∫ (t : ℝ) in Ioi c, t ^ a) = -c ^ (a + 1) / (a + 1)

tactic: simp only [neg_div, zero_div, zero_sub]
state_before: case h.e'_3
a : ℝ
ha : a < -1
c : ℝ
hc : 0 < c
hd : ∀ (x : ℝ), x ∈ Ici c → HasDerivAt (fun t => t ^ (a + 1) / (a + 1)) (x ^ a) x
ht : Tendsto (fun t => t ^ (a + 1) / (a + 1)) atTop (𝓝 (0 / (a + 1)))
⊢ -c ^ (a + 1) / (a + 1) = 0 / (a + 1) - c ^ (a + 1) / (a + 1)

tactic: intro x hx
state_before: a : ℝ
ha : a < -1
c : ℝ
hc : 0 < c
⊢ ∀ (x : ℝ), x ∈ Ici c → HasDerivAt (fun t => t ^ (a + 1) / (a + 1)) (x ^ a) x

tactic: convert (hasDerivAt_rpow_const (p := a + 1) (Or.inl (hc.trans_le hx).ne')).div_const _ using 1
state_before: a : ℝ
ha : a < -1
c : ℝ
hc : 0 < c
x : ℝ
hx : x ∈ Ici c
⊢ HasDerivAt (fun t => t ^ (a + 1) / (a + 1)) (x ^ a) x

tactic: field_simp [show a + 1 ≠ 0 from ne_of_lt (by linarith), mul_comm]
state_before: case h.e'_7
a : ℝ
ha : a < -1
c : ℝ
hc : 0 < c
x : ℝ
hx : x ∈ Ici c
⊢ x ^ a = (a + 1) * x ^ (a + 1 - 1) / (a + 1)

tactic: linarith
state_before: a : ℝ
ha : a < -1
c : ℝ
hc : 0 < c
x : ℝ
hx : x ∈ Ici c
⊢ a + 1 < 0

tactic: apply Tendsto.div_const
state_before: a : ℝ
ha : a < -1
c : ℝ
hc : 0 < c
hd : ∀ (x : ℝ), x ∈ Ici c → HasDerivAt (fun t => t ^ (a + 1) / (a + 1)) (x ^ a) x
⊢ Tendsto (fun t => t ^ (a + 1) / (a + 1)) atTop (𝓝 (0 / (a + 1)))

tactic: simpa only [neg_neg] using tendsto_rpow_neg_atTop (by linarith : 0 < -(a + 1))
state_before: case hf
a : ℝ
ha : a < -1
c : ℝ
hc : 0 < c
hd : ∀ (x : ℝ), x ∈ Ici c → HasDerivAt (fun t => t ^ (a + 1) / (a + 1)) (x ^ a) x
⊢ Tendsto (fun a_1 => a_1 ^ (a + 1)) atTop (𝓝 0)

tactic: linarith
state_before: a : ℝ
ha : a < -1
c : ℝ
hc : 0 < c
hd : ∀ (x : ℝ), x ∈ Ici c → HasDerivAt (fun t => t ^ (a + 1) / (a + 1)) (x ^ a) x
⊢ 0 < -(a + 1)
Theorem: WittVector.poly_eq_of_wittPolynomial_bind_eq'
File: Mathlib/RingTheory/WittVector/IsPoly.lean

tactic: ext1 n
state_before: p : ℕ
R S : Type u
σ : Type ?u.9710
idx : Type u_1
inst✝² : CommRing R
inst✝¹ : CommRing S
inst✝ : Fact (Nat.Prime p)
f g : ℕ → MvPolynomial (idx × ℕ) ℤ
h : ∀ (n : ℕ), ↑(bind₁ f) (wittPolynomial p ℤ n) = ↑(bind₁ g) (wittPolynomial p ℤ n)
⊢ f = g

tactic: apply MvPolynomial.map_injective (Int.castRingHom ℚ) Int.cast_injective
state_before: case h
p : ℕ
R S : Type u
σ : Type ?u.9710
idx : Type u_1
inst✝² : CommRing R
inst✝¹ : CommRing S
inst✝ : Fact (Nat.Prime p)
f g : ℕ → MvPolynomial (idx × ℕ) ℤ
h : ∀ (n : ℕ), ↑(bind₁ f) (wittPolynomial p ℤ n) = ↑(bind₁ g) (wittPolynomial p ℤ n)
n : ℕ
⊢ f n = g n

tactic: rw [← Function.funext_iff] at h
state_before: case h.a
p : ℕ
R S : Type u
σ : Type ?u.9710
idx : Type u_1
inst✝² : CommRing R
inst✝¹ : CommRing S
inst✝ : Fact (Nat.Prime p)
f g : ℕ → MvPolynomial (idx × ℕ) ℤ
h : ∀ (n : ℕ), ↑(bind₁ f) (wittPolynomial p ℤ n) = ↑(bind₁ g) (wittPolynomial p ℤ n)
n : ℕ
⊢ ↑(MvPolynomial.map (Int.castRingHom ℚ)) (f n) = ↑(MvPolynomial.map (Int.castRingHom ℚ)) (g n)

tactic: replace h :=
  congr_arg (fun fam => bind₁ (MvPolynomial.map (Int.castRingHom ℚ) ∘ fam) (xInTermsOfW p ℚ n)) h
state_before: case h.a
p : ℕ
R S : Type u
σ : Type ?u.9710
idx : Type u_1
inst✝² : CommRing R
inst✝¹ : CommRing S
inst✝ : Fact (Nat.Prime p)
f g : ℕ → MvPolynomial (idx × ℕ) ℤ
h : (fun n => ↑(bind₁ f) (wittPolynomial p ℤ n)) = fun n => ↑(bind₁ g) (wittPolynomial p ℤ n)
n : ℕ
⊢ ↑(MvPolynomial.map (Int.castRingHom ℚ)) (f n) = ↑(MvPolynomial.map (Int.castRingHom ℚ)) (g n)

tactic: simpa only [Function.comp, map_bind₁, map_wittPolynomial, ← bind₁_bind₁,
  bind₁_wittPolynomial_xInTermsOfW, bind₁_X_right] using h
state_before: case h.a
p : ℕ
R S : Type u
σ : Type ?u.9710
idx : Type u_1
inst✝² : CommRing R
inst✝¹ : CommRing S
inst✝ : Fact (Nat.Prime p)
f g : ℕ → MvPolynomial (idx × ℕ) ℤ
n : ℕ
h :
  ((fun fam => ↑(bind₁ (↑(MvPolynomial.map (Int.castRingHom ℚ)) ∘ fam)) (xInTermsOfW p ℚ n)) fun n =>
      ↑(bind₁ f) (wittPolynomial p ℤ n)) =
    (fun fam => ↑(bind₁ (↑(MvPolynomial.map (Int.castRingHom ℚ)) ∘ fam)) (xInTermsOfW p ℚ n)) fun n =>
      ↑(bind₁ g) (wittPolynomial p ℤ n)
⊢ ↑(MvPolynomial.map (Int.castRingHom ℚ)) (f n) = ↑(MvPolynomial.map (Int.castRingHom ℚ)) (g n)
Theorem: Filter.HasBasis.hasBasis_self_subset
File: Mathlib/Order/Filter/Bases.lean

tactic: simpa only [and_assoc] using h.restrict_subset hV
state_before: α : Type u_1
β : Type ?u.24375
γ : Type ?u.24378
ι : Sort ?u.24381
ι' : Sort ?u.24384
l l' : Filter α
p✝ : ι → Prop
s : ι → Set α
t : Set α
i : ι
p' : ι' → Prop
s' : ι' → Set α
i' : ι'
p : Set α → Prop
h : HasBasis l (fun s => s ∈ l ∧ p s) id
V : Set α
hV : V ∈ l
⊢ HasBasis l (fun s => s ∈ l ∧ p s ∧ s ⊆ V) id
Theorem: mem_pairSelfAdjointMatricesSubmodule'
File: Mathlib/LinearAlgebra/Matrix/BilinearForm.lean

tactic: simp only [mem_pairSelfAdjointMatricesSubmodule]
state_before: R : Type ?u.2690088
M : Type ?u.2690091
inst✝¹⁶ : Semiring R
inst✝¹⁵ : AddCommMonoid M
inst✝¹⁴ : Module R M
R₁ : Type ?u.2690127
M₁ : Type ?u.2690130
inst✝¹³ : Ring R₁
inst✝¹² : AddCommGroup M₁
inst✝¹¹ : Module R₁ M₁
R₂ : Type ?u.2690739
M₂ : Type ?u.2690742
inst✝¹⁰ : CommSemiring R₂
inst✝⁹ : AddCommMonoid M₂
inst✝⁸ : Module R₂ M₂
R₃ : Type u_1
M₃ : Type ?u.2690932
inst✝⁷ : CommRing R₃
inst✝⁶ : AddCommGroup M₃
inst✝⁵ : Module R₃ M₃
V : Type ?u.2691520
K : Type ?u.2691523
inst✝⁴ : Field K
inst✝³ : AddCommGroup V
inst✝² : Module K V
B : BilinForm R M
B₁ : BilinForm R₁ M₁
B₂ : BilinForm R₂ M₂
n : Type u_2
inst✝¹ : Fintype n
b : Basis n R₃ M₃
J J₃ A A' : Matrix n n R₃
inst✝ : DecidableEq n
⊢ A ∈ pairSelfAdjointMatricesSubmodule J J₃ ↔ IsAdjointPair J J₃ A A
Theorem: MeasureTheory.Measure.measure_toMeasurable_inter_of_sigmaFinite
File: Mathlib/MeasureTheory/Measure/MeasureSpace.lean

tactic: have : t ⊆ ⋃ n, spanningSets μ n := by
  rw [iUnion_spanningSets]
  exact subset_univ _
state_before: α : Type u_1
β : Type ?u.754890
γ : Type ?u.754893
δ : Type ?u.754896
ι : Type ?u.754899
R : Type ?u.754902
R' : Type ?u.754905
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s✝ s' t✝ : Set α
inst✝ : SigmaFinite μ
s : Set α
hs : MeasurableSet s
t : Set α
⊢ ↑↑μ (toMeasurable μ t ∩ s) = ↑↑μ (t ∩ s)

tactic: refine measure_toMeasurable_inter_of_cover hs this fun n => ne_of_lt ?_
state_before: α : Type u_1
β : Type ?u.754890
γ : Type ?u.754893
δ : Type ?u.754896
ι : Type ?u.754899
R : Type ?u.754902
R' : Type ?u.754905
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s✝ s' t✝ : Set α
inst✝ : SigmaFinite μ
s : Set α
hs : MeasurableSet s
t : Set α
this : t ⊆ ⋃ (n : ℕ), spanningSets μ n
⊢ ↑↑μ (toMeasurable μ t ∩ s) = ↑↑μ (t ∩ s)

tactic: calc
  μ (t ∩ spanningSets μ n) ≤ μ (spanningSets μ n) := measure_mono (inter_subset_right _ _)
  _ < ∞ := measure_spanningSets_lt_top μ n
state_before: α : Type u_1
β : Type ?u.754890
γ : Type ?u.754893
δ : Type ?u.754896
ι : Type ?u.754899
R : Type ?u.754902
R' : Type ?u.754905
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s✝ s' t✝ : Set α
inst✝ : SigmaFinite μ
s : Set α
hs : MeasurableSet s
t : Set α
this : t ⊆ ⋃ (n : ℕ), spanningSets μ n
n : ℕ
⊢ ↑↑μ (t ∩ spanningSets μ n) < ⊤

tactic: rw [iUnion_spanningSets]
state_before: α : Type u_1
β : Type ?u.754890
γ : Type ?u.754893
δ : Type ?u.754896
ι : Type ?u.754899
R : Type ?u.754902
R' : Type ?u.754905
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s✝ s' t✝ : Set α
inst✝ : SigmaFinite μ
s : Set α
hs : MeasurableSet s
t : Set α
⊢ t ⊆ ⋃ (n : ℕ), spanningSets μ n

tactic: exact subset_univ _
state_before: α : Type u_1
β : Type ?u.754890
γ : Type ?u.754893
δ : Type ?u.754896
ι : Type ?u.754899
R : Type ?u.754902
R' : Type ?u.754905
m0 : MeasurableSpace α
inst✝² : MeasurableSpace β
inst✝¹ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s✝ s' t✝ : Set α
inst✝ : SigmaFinite μ
s : Set α
hs : MeasurableSet s
t : Set α
⊢ t ⊆ univ
Theorem: LinearEquiv.map_eq_comap
File: Mathlib/LinearAlgebra/Basic.lean

tactic: simp [e.image_eq_preimage]
state_before: R : Type u_1
R₁ : Type ?u.1656611
R₂ : Type u_4
R₃ : Type ?u.1656617
R₄ : Type ?u.1656620
S : Type ?u.1656623
K : Type ?u.1656626
K₂ : Type ?u.1656629
M : Type u_2
M' : Type ?u.1656635
M₁ : Type ?u.1656638
M₂ : Type u_3
M₃ : Type ?u.1656644
M₄ : Type ?u.1656647
N : Type ?u.1656650
N₂ : Type ?u.1656653
ι : Type ?u.1656656
V : Type ?u.1656659
V₂ : Type ?u.1656662
inst✝⁷ : Semiring R
inst✝⁶ : Semiring R₂
inst✝⁵ : Semiring R₃
inst✝⁴ : Semiring R₄
inst✝³ : AddCommMonoid M
inst✝² : AddCommMonoid M₂
inst✝¹ : AddCommMonoid M₃
inst✝ : AddCommMonoid M₄
module_M : Module R M
module_M₂ : Module R₂ M₂
σ₁₂ : R →+* R₂
σ₂₁ : R₂ →+* R
re₁₂ : RingHomInvPair σ₁₂ σ₂₁
re₂₁ : RingHomInvPair σ₂₁ σ₁₂
e e' : M ≃ₛₗ[σ₁₂] M₂
p : Submodule R M
⊢ ↑(Submodule.map (↑e) p) = ↑(Submodule.comap (↑(symm e)) p)
Theorem: MeasureTheory.Measure.ext_of_generateFrom_of_iUnion
File: Mathlib/MeasureTheory/Measure/MeasureSpace.lean

tactic: refine' ext_of_generateFrom_of_cover_subset hA hC _ (countable_range B) h1B _ h_eq
state_before: α : Type u_1
β : Type ?u.323239
γ : Type ?u.323242
δ : Type ?u.323245
ι : Type ?u.323248
R : Type ?u.323251
R' : Type ?u.323254
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s s' t : Set α
C : Set (Set α)
B : ℕ → Set α
hA : m0 = generateFrom C
hC : IsPiSystem C
h1B : (⋃ (i : ℕ), B i) = univ
h2B : ∀ (i : ℕ), B i ∈ C
hμB : ∀ (i : ℕ), ↑↑μ (B i) ≠ ⊤
h_eq : ∀ (s : Set α), s ∈ C → ↑↑μ s = ↑↑ν s
⊢ μ = ν

tactic: rintro _ ⟨i, rfl⟩
state_before: case refine'_1
α : Type u_1
β : Type ?u.323239
γ : Type ?u.323242
δ : Type ?u.323245
ι : Type ?u.323248
R : Type ?u.323251
R' : Type ?u.323254
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s s' t : Set α
C : Set (Set α)
B : ℕ → Set α
hA : m0 = generateFrom C
hC : IsPiSystem C
h1B : (⋃ (i : ℕ), B i) = univ
h2B : ∀ (i : ℕ), B i ∈ C
hμB : ∀ (i : ℕ), ↑↑μ (B i) ≠ ⊤
h_eq : ∀ (s : Set α), s ∈ C → ↑↑μ s = ↑↑ν s
⊢ range B ⊆ C

tactic: apply h2B
state_before: case refine'_1.intro
α : Type u_1
β : Type ?u.323239
γ : Type ?u.323242
δ : Type ?u.323245
ι : Type ?u.323248
R : Type ?u.323251
R' : Type ?u.323254
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s s' t : Set α
C : Set (Set α)
B : ℕ → Set α
hA : m0 = generateFrom C
hC : IsPiSystem C
h1B : (⋃ (i : ℕ), B i) = univ
h2B : ∀ (i : ℕ), B i ∈ C
hμB : ∀ (i : ℕ), ↑↑μ (B i) ≠ ⊤
h_eq : ∀ (s : Set α), s ∈ C → ↑↑μ s = ↑↑ν s
i : ℕ
⊢ B i ∈ C

tactic: rintro _ ⟨i, rfl⟩
state_before: case refine'_2
α : Type u_1
β : Type ?u.323239
γ : Type ?u.323242
δ : Type ?u.323245
ι : Type ?u.323248
R : Type ?u.323251
R' : Type ?u.323254
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s s' t : Set α
C : Set (Set α)
B : ℕ → Set α
hA : m0 = generateFrom C
hC : IsPiSystem C
h1B : (⋃ (i : ℕ), B i) = univ
h2B : ∀ (i : ℕ), B i ∈ C
hμB : ∀ (i : ℕ), ↑↑μ (B i) ≠ ⊤
h_eq : ∀ (s : Set α), s ∈ C → ↑↑μ s = ↑↑ν s
⊢ ∀ (s : Set α), s ∈ range B → ↑↑μ s ≠ ⊤

tactic: apply hμB
state_before: case refine'_2.intro
α : Type u_1
β : Type ?u.323239
γ : Type ?u.323242
δ : Type ?u.323245
ι : Type ?u.323248
R : Type ?u.323251
R' : Type ?u.323254
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s s' t : Set α
C : Set (Set α)
B : ℕ → Set α
hA : m0 = generateFrom C
hC : IsPiSystem C
h1B : (⋃ (i : ℕ), B i) = univ
h2B : ∀ (i : ℕ), B i ∈ C
hμB : ∀ (i : ℕ), ↑↑μ (B i) ≠ ⊤
h_eq : ∀ (s : Set α), s ∈ C → ↑↑μ s = ↑↑ν s
i : ℕ
⊢ ↑↑μ (B i) ≠ ⊤
Theorem: CategoryTheory.Limits.PreservesPullback.iso_inv_fst
File: Mathlib/CategoryTheory/Limits/Preserves/Shapes/Pullbacks.lean

tactic: simp [PreservesPullback.iso, Iso.inv_comp_eq]
state_before: C : Type u₁
inst✝⁴ : Category C
D : Type u₂
inst✝³ : Category D
G : C ⥤ D
W X Y Z : C
f : X ⟶ Z
g : Y ⟶ Z
h : W ⟶ X
k : W ⟶ Y
comm : h ≫ f = k ≫ g
inst✝² : PreservesLimit (cospan f g) G
inst✝¹ : HasPullback f g
inst✝ : HasPullback (G.map f) (G.map g)
⊢ (iso G f g).inv ≫ G.map pullback.fst = pullback.fst
Theorem: Subgroup.mul_self_mem_of_index_two
File: Mathlib/GroupTheory/Index.lean

tactic: rw [mul_mem_iff_of_index_two h]
state_before: G : Type u_1
inst✝ : Group G
H K L : Subgroup G
h : index H = 2
a : G
⊢ a * a ∈ H
Theorem: Interval.mul_eq_one_iff
File: Mathlib/Algebra/Order/Interval.lean

tactic: cases s
state_before: ι : Type ?u.351009
α : Type u_1
inst✝ : OrderedCommGroup α
s t : Interval α
⊢ s * t = 1 ↔ ∃ a b, s = pure a ∧ t = pure b ∧ a * b = 1

tactic: cases t
state_before: case some
ι : Type ?u.351009
α : Type u_1
inst✝ : OrderedCommGroup α
t : Interval α
val✝ : NonemptyInterval α
⊢ some val✝ * t = 1 ↔ ∃ a b, some val✝ = pure a ∧ t = pure b ∧ a * b = 1

tactic: simp [WithBot.none_eq_bot]
state_before: case none
ι : Type ?u.351009
α : Type u_1
inst✝ : OrderedCommGroup α
t : Interval α
⊢ none * t = 1 ↔ ∃ a b, none = pure a ∧ t = pure b ∧ a * b = 1

tactic: simp [WithBot.none_eq_bot]
state_before: case some.none
ι : Type ?u.351009
α : Type u_1
inst✝ : OrderedCommGroup α
val✝ : NonemptyInterval α
⊢ some val✝ * none = 1 ↔ ∃ a b, some val✝ = pure a ∧ none = pure b ∧ a * b = 1

tactic: simp_rw [WithBot.some_eq_coe, ← NonemptyInterval.coe_mul_interval,
  ← NonemptyInterval.coe_one_interval, WithBot.coe_inj, NonemptyInterval.coe_eq_pure]
state_before: case some.some
ι : Type ?u.351009
α : Type u_1
inst✝ : OrderedCommGroup α
val✝¹ val✝ : NonemptyInterval α
⊢ some val✝¹ * some val✝ = 1 ↔ ∃ a b, some val✝¹ = pure a ∧ some val✝ = pure b ∧ a * b = 1

tactic: exact NonemptyInterval.mul_eq_one_iff
state_before: case some.some
ι : Type ?u.351009
α : Type u_1
inst✝ : OrderedCommGroup α
val✝¹ val✝ : NonemptyInterval α
⊢ val✝¹ * val✝ = 1 ↔ ∃ a b, val✝¹ = NonemptyInterval.pure a ∧ val✝ = NonemptyInterval.pure b ∧ a * b = 1
Theorem: bit1_mul
File: Mathlib/Algebra/GroupPower/Lemmas.lean

tactic: dsimp [bit1]
state_before: α : Type ?u.270117
M : Type u
N : Type v
G : Type w
H : Type x
A : Type y
B : Type z
R : Type u₁
S : Type u₂
inst✝ : NonAssocRing R
n r : R
⊢ bit1 n * r = 2 • (n * r) + r

tactic: rw [add_mul, bit0_mul, one_mul]
state_before: α : Type ?u.270117
M : Type u
N : Type v
G : Type w
H : Type x
A : Type y
B : Type z
R : Type u₁
S : Type u₂
inst✝ : NonAssocRing R
n r : R
⊢ (bit0 n + 1) * r = 2 • (n * r) + r
Theorem: Ordinal.sup_eq_zero_iff
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

tactic: refine'
  ⟨fun h i => _, fun h =>
    le_antisymm (sup_le fun i => Ordinal.le_zero.2 (h i)) (Ordinal.zero_le _)⟩
state_before: α : Type ?u.284060
β : Type ?u.284063
γ : Type ?u.284066
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
ι : Type u
f : ι → Ordinal
⊢ sup f = 0 ↔ ∀ (i : ι), f i = 0

tactic: rw [← Ordinal.le_zero, ← h]
state_before: α : Type ?u.284060
β : Type ?u.284063
γ : Type ?u.284066
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
ι : Type u
f : ι → Ordinal
h : sup f = 0
i : ι
⊢ f i = 0

tactic: exact le_sup f i
state_before: α : Type ?u.284060
β : Type ?u.284063
γ : Type ?u.284066
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
ι : Type u
f : ι → Ordinal
h : sup f = 0
i : ι
⊢ f i ≤ sup f
Theorem: Set.image_subset_image_iff
File: Mathlib/Data/Set/Image.lean

tactic: refine' Iff.symm <| (Iff.intro (image_subset f)) fun h => _
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.55016
ι : Sort ?u.55019
ι' : Sort ?u.55022
f✝ : α → β
s t : Set α
f : α → β
hf : Injective f
⊢ f '' s ⊆ f '' t ↔ s ⊆ t

tactic: rw [← preimage_image_eq s hf, ← preimage_image_eq t hf]
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.55016
ι : Sort ?u.55019
ι' : Sort ?u.55022
f✝ : α → β
s t : Set α
f : α → β
hf : Injective f
h : f '' s ⊆ f '' t
⊢ s ⊆ t

tactic: exact preimage_mono h
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.55016
ι : Sort ?u.55019
ι' : Sort ?u.55022
f✝ : α → β
s t : Set α
f : α → β
hf : Injective f
h : f '' s ⊆ f '' t
⊢ f ⁻¹' (f '' s) ⊆ f ⁻¹' (f '' t)
Theorem: LinearOrder.ext
File: Mathlib/Order/Basic.lean

tactic: ext x y
state_before: ι : Type ?u.20121
α✝ : Type u
β : Type v
γ : Type w
π : ι → Type ?u.20132
r : α✝ → α✝ → Prop
α : Type u_1
A B : LinearOrder α
H : ∀ (x y : α), x ≤ y ↔ x ≤ y
⊢ A = B

tactic: exact H x y
state_before: case a.a.a.le.h.h.a
ι : Type ?u.20121
α✝ : Type u
β : Type v
γ : Type w
π : ι → Type ?u.20132
r : α✝ → α✝ → Prop
α : Type u_1
A B : LinearOrder α
H : ∀ (x y : α), x ≤ y ↔ x ≤ y
x y : α
⊢ x ≤ y ↔ x ≤ y
Theorem: Polynomial.unique_int_coeff_of_cycl
File: Mathlib/RingTheory/Polynomial/Cyclotomic/Basic.lean

tactic: obtain ⟨P, hP⟩ := int_coeff_of_cyclotomic' h
state_before: K✝ : Type ?u.290364
inst✝³ : Field K✝
K : Type u_1
inst✝² : CommRing K
inst✝¹ : IsDomain K
inst✝ : CharZero K
ζ : K
n : ℕ+
h : IsPrimitiveRoot ζ ↑n
⊢ ∃! P, map (Int.castRingHom K) P = cyclotomic' (↑n) K

tactic: refine' ⟨P, hP.1, fun Q hQ => _⟩
state_before: case intro
K✝ : Type ?u.290364
inst✝³ : Field K✝
K : Type u_1
inst✝² : CommRing K
inst✝¹ : IsDomain K
inst✝ : CharZero K
ζ : K
n : ℕ+
h : IsPrimitiveRoot ζ ↑n
P : ℤ[X]
hP : map (Int.castRingHom K) P = cyclotomic' (↑n) K ∧ degree P = degree (cyclotomic' (↑n) K) ∧ Monic P
⊢ ∃! P, map (Int.castRingHom K) P = cyclotomic' (↑n) K

tactic: apply map_injective (Int.castRingHom K) Int.cast_injective
state_before: case intro
K✝ : Type ?u.290364
inst✝³ : Field K✝
K : Type u_1
inst✝² : CommRing K
inst✝¹ : IsDomain K
inst✝ : CharZero K
ζ : K
n : ℕ+
h : IsPrimitiveRoot ζ ↑n
P : ℤ[X]
hP : map (Int.castRingHom K) P = cyclotomic' (↑n) K ∧ degree P = degree (cyclotomic' (↑n) K) ∧ Monic P
Q : ℤ[X]
hQ : (fun P => map (Int.castRingHom K) P = cyclotomic' (↑n) K) Q
⊢ Q = P

tactic: rw [hP.1, hQ]
state_before: case intro.a
K✝ : Type ?u.290364
inst✝³ : Field K✝
K : Type u_1
inst✝² : CommRing K
inst✝¹ : IsDomain K
inst✝ : CharZero K
ζ : K
n : ℕ+
h : IsPrimitiveRoot ζ ↑n
P : ℤ[X]
hP : map (Int.castRingHom K) P = cyclotomic' (↑n) K ∧ degree P = degree (cyclotomic' (↑n) K) ∧ Monic P
Q : ℤ[X]
hQ : (fun P => map (Int.castRingHom K) P = cyclotomic' (↑n) K) Q
⊢ map (Int.castRingHom K) Q = map (Int.castRingHom K) P
Theorem: Set.disjoint_pi_univ_Ioc_update_left_right
File: Mathlib/Data/Set/Intervals/Pi.lean

tactic: rw [disjoint_left]
state_before: ι : Type u_2
α : ι → Type u_1
inst✝¹ : (i : ι) → Preorder (α i)
x✝ y✝ : (i : ι) → α i
inst✝ : DecidableEq ι
x y : (i : ι) → α i
i₀ : ι
m : α i₀
⊢ Disjoint (pi univ fun i => Ioc (x i) (update y i₀ m i)) (pi univ fun i => Ioc (update x i₀ m i) (y i))

tactic: rintro z h₁ h₂
state_before: ι : Type u_2
α : ι → Type u_1
inst✝¹ : (i : ι) → Preorder (α i)
x✝ y✝ : (i : ι) → α i
inst✝ : DecidableEq ι
x y : (i : ι) → α i
i₀ : ι
m : α i₀
⊢ ∀ ⦃a : (i : ι) → α i⦄,
    (a ∈ pi univ fun i => Ioc (x i) (update y i₀ m i)) → ¬a ∈ pi univ fun i => Ioc (update x i₀ m i) (y i)

tactic: refine' (h₁ i₀ (mem_univ _)).2.not_lt _
state_before: ι : Type u_2
α : ι → Type u_1
inst✝¹ : (i : ι) → Preorder (α i)
x✝ y✝ : (i : ι) → α i
inst✝ : DecidableEq ι
x y : (i : ι) → α i
i₀ : ι
m : α i₀
z : (i : ι) → α i
h₁ : z ∈ pi univ fun i => Ioc (x i) (update y i₀ m i)
h₂ : z ∈ pi univ fun i => Ioc (update x i₀ m i) (y i)
⊢ False

tactic: simpa only [Function.update_same] using (h₂ i₀ (mem_univ _)).1
state_before: ι : Type u_2
α : ι → Type u_1
inst✝¹ : (i : ι) → Preorder (α i)
x✝ y✝ : (i : ι) → α i
inst✝ : DecidableEq ι
x y : (i : ι) → α i
i₀ : ι
m : α i₀
z : (i : ι) → α i
h₁ : z ∈ pi univ fun i => Ioc (x i) (update y i₀ m i)
h₂ : z ∈ pi univ fun i => Ioc (update x i₀ m i) (y i)
⊢ update y i₀ m i₀ < z i₀
Theorem: Metric.tendsto_nhdsWithin_nhdsWithin
File: Mathlib/Topology/MetricSpace/Basic.lean

tactic: simp only [inter_comm _ s, inter_comm _ t, mem_inter_iff, and_imp]
state_before: α : Type u
β : Type v
X : Type ?u.98106
ι : Type ?u.98109
inst✝¹ : PseudoMetricSpace α
x y z : α
δ ε ε₁ ε₂ : ℝ
s : Set α
inst✝ : PseudoMetricSpace β
t : Set β
f : α → β
a : α
b : β
⊢ (∀ (ib : ℝ), 0 < ib → ∃ ia, 0 < ia ∧ ∀ (x : α), x ∈ ball a ia ∩ s → f x ∈ ball b ib ∩ t) ↔
    ∀ (ε : ℝ), ε > 0 → ∃ δ, δ > 0 ∧ ∀ {x : α}, x ∈ s → dist x a < δ → f x ∈ t ∧ dist (f x) b < ε

tactic: rfl
state_before: α : Type u
β : Type v
X : Type ?u.98106
ι : Type ?u.98109
inst✝¹ : PseudoMetricSpace α
x y z : α
δ ε ε₁ ε₂ : ℝ
s : Set α
inst✝ : PseudoMetricSpace β
t : Set β
f : α → β
a : α
b : β
⊢ (∀ (ib : ℝ), 0 < ib → ∃ ia, 0 < ia ∧ ∀ (x : α), x ∈ s → x ∈ ball a ia → f x ∈ t ∧ f x ∈ ball b ib) ↔
    ∀ (ε : ℝ), ε > 0 → ∃ δ, δ > 0 ∧ ∀ {x : α}, x ∈ s → dist x a < δ → f x ∈ t ∧ dist (f x) b < ε
Theorem: dvd_iff_dvd_of_dvd_sub
File: Mathlib/Algebra/Ring/Divisibility.lean

tactic: rw [← sub_add_cancel b c, dvd_add_right h]
state_before: α : Type u_1
β : Type ?u.11507
inst✝ : NonUnitalRing α
a b c : α
h : a ∣ b - c
⊢ a ∣ b ↔ a ∣ c
Theorem: Multiset.mem_Ioc
File: Mathlib/Order/LocallyFinite.lean

tactic: rw [Ioc, ← Finset.mem_def, Finset.mem_Ioc]
state_before: α : Type u_1
β : Type ?u.32714
inst✝¹ : Preorder α
inst✝ : LocallyFiniteOrder α
a b x : α
⊢ x ∈ Ioc a b ↔ a < x ∧ x ≤ b
Theorem: AffineSubspace.Parallel.symm
File: Mathlib/LinearAlgebra/AffineSpace/AffineSubspace.lean

tactic: rcases h with ⟨v, rfl⟩
state_before: k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
s₁ s₂ : AffineSubspace k P
h : s₁ ∥ s₂
⊢ s₂ ∥ s₁

tactic: refine' ⟨-v, _⟩
state_before: case intro
k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
s₁ : AffineSubspace k P
v : V
⊢ map (↑(constVAdd k P v)) s₁ ∥ s₁

tactic: rw [map_map, ← coe_trans_to_affineMap, ← constVAdd_add, neg_add_self, constVAdd_zero,
  coe_refl_to_affineMap, map_id]
state_before: case intro
k : Type u_1
V : Type u_2
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
s₁ : AffineSubspace k P
v : V
⊢ s₁ = map (↑(constVAdd k P (-v))) (map (↑(constVAdd k P v)) s₁)
Theorem: CategoryTheory.NonPreadditiveAbelian.neg_add_self
File: Mathlib/CategoryTheory/Abelian/NonPreadditive.lean

tactic: rw [add_comm, add_neg_self]
state_before: C : Type u
inst✝¹ : Category C
inst✝ : NonPreadditiveAbelian C
X Y : C
a : X ⟶ Y
⊢ -a + a = 0