tasksource/leandojo huggingface dataset:
Theorem: norm_inner_le_norm
File: Mathlib/Analysis/InnerProductSpace/Basic.lean

tactic: rw [norm_eq_sqrt_inner (𝕜 := 𝕜) x, norm_eq_sqrt_inner (𝕜 := 𝕜) y]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.2478434
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
dec_E : DecidableEq E
x y : E
⊢ ‖inner x y‖ ≤ ‖x‖ * ‖y‖

tactic: letI : InnerProductSpace.Core 𝕜 E := InnerProductSpace.toCore
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.2478434
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
dec_E : DecidableEq E
x y : E
⊢ ‖inner x y‖ ≤ sqrt (↑re (inner x x)) * sqrt (↑re (inner y y))

tactic: exact InnerProductSpace.Core.norm_inner_le_norm x y
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.2478434
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
dec_E : DecidableEq E
x y : E
this : InnerProductSpace.Core 𝕜 E := InnerProductSpace.toCore
⊢ ‖inner x y‖ ≤ sqrt (↑re (inner x x)) * sqrt (↑re (inner y y))
Theorem: CategoryTheory.Limits.hasInitial_of_hasInitial_of_preservesColimit
File: Mathlib/CategoryTheory/Limits/Preserves/Shapes/Terminal.lean

tactic: haveI := HasColimit.mk ⟨_, isColimitOfHasInitialOfPreservesColimit G⟩
state_before: C : Type u₁
inst✝³ : Category C
D : Type u₂
inst✝² : Category D
G : C ⥤ D
X : C
inst✝¹ : HasInitial C
inst✝ : PreservesColimit (Functor.empty C) G
F : Discrete PEmpty ⥤ D
⊢ HasColimit F

tactic: apply hasColimitOfIso F.uniqueFromEmpty
state_before: C : Type u₁
inst✝³ : Category C
D : Type u₂
inst✝² : Category D
G : C ⥤ D
X : C
inst✝¹ : HasInitial C
inst✝ : PreservesColimit (Functor.empty C) G
F : Discrete PEmpty ⥤ D
this : HasColimit (Functor.empty D)
⊢ HasColimit F
Theorem: Submodule.subsingleton_quotient_iff_eq_top
File: Mathlib/LinearAlgebra/Quotient.lean

tactic: constructor
state_before: R : Type u_2
M : Type u_1
r : R
x y : M
inst✝² : Ring R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
p p' : Submodule R M
⊢ Subsingleton (M ⧸ p) ↔ p = ⊤

tactic: rintro h
state_before: case mp
R : Type u_2
M : Type u_1
r : R
x y : M
inst✝² : Ring R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
p p' : Submodule R M
⊢ Subsingleton (M ⧸ p) → p = ⊤

tactic: refine' eq_top_iff.mpr fun x _ => _
state_before: case mp
R : Type u_2
M : Type u_1
r : R
x y : M
inst✝² : Ring R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
p p' : Submodule R M
h : Subsingleton (M ⧸ p)
⊢ p = ⊤

tactic: have : x - 0 ∈ p := (Submodule.Quotient.eq p).mp (Subsingleton.elim _ _)
state_before: case mp
R : Type u_2
M : Type u_1
r : R
x✝¹ y : M
inst✝² : Ring R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
p p' : Submodule R M
h : Subsingleton (M ⧸ p)
x : M
x✝ : x ∈ ⊤
⊢ x ∈ p

tactic: rwa [sub_zero] at this
state_before: case mp
R : Type u_2
M : Type u_1
r : R
x✝¹ y : M
inst✝² : Ring R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
p p' : Submodule R M
h : Subsingleton (M ⧸ p)
x : M
x✝ : x ∈ ⊤
this : x - 0 ∈ p
⊢ x ∈ p

tactic: rintro rfl
state_before: case mpr
R : Type u_2
M : Type u_1
r : R
x y : M
inst✝² : Ring R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
p p' : Submodule R M
⊢ p = ⊤ → Subsingleton (M ⧸ p)

tactic: infer_instance
state_before: case mpr
R : Type u_2
M : Type u_1
r : R
x y : M
inst✝² : Ring R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
p' : Submodule R M
⊢ Subsingleton (M ⧸ ⊤)
Theorem: Fin.succAbove_castLT
File: Mathlib/Data/Fin/Basic.lean

tactic: rw [succAbove_below, castSucc_castLT]
state_before: n m : ℕ
x y : Fin (n + 1)
h : x < y
hx : optParam (↑x < n) (_ : ↑x < n)
⊢ ↑(succAbove y) (castLT x hx) = x

tactic: exact h
state_before: case h
n m : ℕ
x y : Fin (n + 1)
h : x < y
hx : optParam (↑x < n) (_ : ↑x < n)
⊢ ↑castSucc (castLT x hx) < y
Theorem: Basis.orientation_map
File: Mathlib/LinearAlgebra/Orientation.lean

tactic: simp_rw [Basis.orientation, Orientation.map_apply, Basis.det_map']
state_before: R : Type u_1
inst✝⁷ : StrictOrderedCommRing R
M : Type u_3
N : Type u_4
inst✝⁶ : AddCommGroup M
inst✝⁵ : AddCommGroup N
inst✝⁴ : Module R M
inst✝³ : Module R N
ι : Type u_2
inst✝² : Fintype ι
inst✝¹ : DecidableEq ι
inst✝ : Nontrivial R
e : Basis ι R M
f : M ≃ₗ[R] N
⊢ Basis.orientation (Basis.map e f) = ↑(Orientation.map ι f) (Basis.orientation e)
Theorem: div_nonneg_iff
File: Mathlib/Algebra/Order/Field/Basic.lean

tactic: simp [division_def, mul_nonneg_iff]
state_before: ι : Type ?u.136348
α : Type u_1
β : Type ?u.136354
inst✝ : LinearOrderedField α
a b c d : α
n : ℤ
⊢ 0 ≤ a / b ↔ 0 ≤ a ∧ 0 ≤ b ∨ a ≤ 0 ∧ b ≤ 0
Theorem: CategoryTheory.Limits.imageSubobject_arrow_comp_eq_zero
File: Mathlib/CategoryTheory/Subobject/Limits.lean

tactic: simp [h]
state_before: C : Type u
inst✝⁴ : Category C
X✝ Y✝ Z✝ : C
f✝ : X✝ ⟶ Y✝
inst✝³ : HasImage f✝
inst✝² : HasZeroMorphisms C
X Y Z : C
f : X ⟶ Y
g : Y ⟶ Z
inst✝¹ : HasImage f
inst✝ : Epi (factorThruImageSubobject f)
h : f ≫ g = 0
⊢ factorThruImageSubobject f ≫ arrow (imageSubobject f) ≫ g = 0
Theorem: Turing.TM2to1.stk_nth_val
File: Mathlib/Computability/TuringMachine.lean

tactic: rw [← proj_map_nth, hL, ← List.map_reverse, ListBlank.nth_mk, List.getI_eq_iget_get?,
  List.get?_map]
state_before: K : Type u_1
Γ : K → Type u_2
L : ListBlank ((k : K) → Option (Γ k))
k : K
S : List (Γ k)
n : ℕ
hL : ListBlank.map (proj k) L = ListBlank.mk (List.reverse (List.map some S))
⊢ ListBlank.nth L n k = List.get? (List.reverse S) n

tactic: cases S.reverse.get? n <;> rfl
state_before: K : Type u_1
Γ : K → Type u_2
L : ListBlank ((k : K) → Option (Γ k))
k : K
S : List (Γ k)
n : ℕ
hL : ListBlank.map (proj k) L = ListBlank.mk (List.reverse (List.map some S))
⊢ Option.iget (Option.map some (List.get? (List.reverse S) n)) = List.get? (List.reverse S) n
Theorem: gcd_eq_zero_iff
File: Mathlib/Algebra/GCDMonoid/Basic.lean

tactic: let ⟨ca, ha⟩ := gcd_dvd_left a b
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : GCDMonoid α
a b : α
h : gcd a b = 0
⊢ a = 0 ∧ b = 0

tactic: let ⟨cb, hb⟩ := gcd_dvd_right a b
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : GCDMonoid α
a b : α
h : gcd a b = 0
ca : α
ha : a = gcd a b * ca
⊢ a = 0 ∧ b = 0

tactic: rw [h, zero_mul] at ha hb
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : GCDMonoid α
a b : α
h : gcd a b = 0
ca : α
ha : a = gcd a b * ca
cb : α
hb : b = gcd a b * cb
⊢ a = 0 ∧ b = 0

tactic: exact ⟨ha, hb⟩
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : GCDMonoid α
a b : α
h : gcd a b = 0
ca : α
ha : a = 0
cb : α
hb : b = 0
⊢ a = 0 ∧ b = 0

tactic: rw [ha, hb, ← zero_dvd_iff]
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : GCDMonoid α
a b : α
x✝ : a = 0 ∧ b = 0
ha : a = 0
hb : b = 0
⊢ gcd a b = 0

tactic: apply dvd_gcd <;> rfl
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : GCDMonoid α
a b : α
x✝ : a = 0 ∧ b = 0
ha : a = 0
hb : b = 0
⊢ 0 ∣ gcd 0 0
Theorem: Even.tsub
File: Mathlib/Algebra/Parity.lean

tactic: obtain ⟨a, rfl⟩ := hm
state_before: F : Type ?u.56414
α : Type u_1
β : Type ?u.56420
R : Type ?u.56423
inst✝³ : CanonicallyLinearOrderedAddMonoid α
inst✝² : Sub α
inst✝¹ : OrderedSub α
inst✝ : ContravariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
m n : α
hm : Even m
hn : Even n
⊢ Even (m - n)

tactic: obtain ⟨b, rfl⟩ := hn
state_before: case intro
F : Type ?u.56414
α : Type u_1
β : Type ?u.56420
R : Type ?u.56423
inst✝³ : CanonicallyLinearOrderedAddMonoid α
inst✝² : Sub α
inst✝¹ : OrderedSub α
inst✝ : ContravariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
n : α
hn : Even n
a : α
⊢ Even (a + a - n)

tactic: refine' ⟨a - b, _⟩
state_before: case intro.intro
F : Type ?u.56414
α : Type u_1
β : Type ?u.56420
R : Type ?u.56423
inst✝³ : CanonicallyLinearOrderedAddMonoid α
inst✝² : Sub α
inst✝¹ : OrderedSub α
inst✝ : ContravariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
a b : α
⊢ Even (a + a - (b + b))

tactic: obtain h | h := le_total a b
state_before: case intro.intro
F : Type ?u.56414
α : Type u_1
β : Type ?u.56420
R : Type ?u.56423
inst✝³ : CanonicallyLinearOrderedAddMonoid α
inst✝² : Sub α
inst✝¹ : OrderedSub α
inst✝ : ContravariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
a b : α
⊢ a + a - (b + b) = a - b + (a - b)

tactic: rw [tsub_eq_zero_of_le h, tsub_eq_zero_of_le (add_le_add h h), add_zero]
state_before: case intro.intro.inl
F : Type ?u.56414
α : Type u_1
β : Type ?u.56420
R : Type ?u.56423
inst✝³ : CanonicallyLinearOrderedAddMonoid α
inst✝² : Sub α
inst✝¹ : OrderedSub α
inst✝ : ContravariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
a b : α
h : a ≤ b
⊢ a + a - (b + b) = a - b + (a - b)

tactic: exact (tsub_add_tsub_comm h h).symm
state_before: case intro.intro.inr
F : Type ?u.56414
α : Type u_1
β : Type ?u.56420
R : Type ?u.56423
inst✝³ : CanonicallyLinearOrderedAddMonoid α
inst✝² : Sub α
inst✝¹ : OrderedSub α
inst✝ : ContravariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
a b : α
h : b ≤ a
⊢ a + a - (b + b) = a - b + (a - b)
Theorem: OrthonormalBasis.sum_repr
File: Mathlib/Analysis/InnerProductSpace/PiL2.lean

tactic: simp_rw [← b.coe_toBasis_repr_apply, ← b.coe_toBasis]
state_before: ι : Type u_1
ι' : Type ?u.811955
𝕜 : Type u_2
inst✝⁹ : IsROrC 𝕜
E : Type u_3
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : InnerProductSpace 𝕜 E
E' : Type ?u.811984
inst✝⁶ : NormedAddCommGroup E'
inst✝⁵ : InnerProductSpace 𝕜 E'
F : Type ?u.812002
inst✝⁴ : NormedAddCommGroup F
inst✝³ : InnerProductSpace ℝ F
F' : Type ?u.812022
inst✝² : NormedAddCommGroup F'
inst✝¹ : InnerProductSpace ℝ F'
inst✝ : Fintype ι
b : OrthonormalBasis ι 𝕜 E
x : E
⊢ ∑ i : ι, ↑b.repr x i • ↑b i = x

tactic: exact b.toBasis.sum_repr x
state_before: ι : Type u_1
ι' : Type ?u.811955
𝕜 : Type u_2
inst✝⁹ : IsROrC 𝕜
E : Type u_3
inst✝⁸ : NormedAddCommGroup E
inst✝⁷ : InnerProductSpace 𝕜 E
E' : Type ?u.811984
inst✝⁶ : NormedAddCommGroup E'
inst✝⁵ : InnerProductSpace 𝕜 E'
F : Type ?u.812002
inst✝⁴ : NormedAddCommGroup F
inst✝³ : InnerProductSpace ℝ F
F' : Type ?u.812022
inst✝² : NormedAddCommGroup F'
inst✝¹ : InnerProductSpace ℝ F'
inst✝ : Fintype ι
b : OrthonormalBasis ι 𝕜 E
x : E
⊢ ∑ x_1 : ι, ↑(↑(OrthonormalBasis.toBasis b).repr x) x_1 • ↑(OrthonormalBasis.toBasis b) x_1 = x
Theorem: IsPrimePow.dvd
File: Mathlib/Algebra/IsPrimePow.lean

tactic: rw [isPrimePow_nat_iff] at hn⊢
state_before: R : Type ?u.83807
inst✝ : CommMonoidWithZero R
n✝ p : R
k n m : ℕ
hn : IsPrimePow n
hm : m ∣ n
hm₁ : m ≠ 1
⊢ IsPrimePow m

tactic: rcases hn with ⟨p, k, hp, _hk, rfl⟩
state_before: R : Type ?u.83807
inst✝ : CommMonoidWithZero R
n✝ p : R
k n m : ℕ
hn : ∃ p k, Nat.Prime p ∧ 0 < k ∧ p ^ k = n
hm : m ∣ n
hm₁ : m ≠ 1
⊢ ∃ p k, Nat.Prime p ∧ 0 < k ∧ p ^ k = m

tactic: obtain ⟨i, hik, rfl⟩ := (Nat.dvd_prime_pow hp).1 hm
state_before: case intro.intro.intro.intro
R : Type ?u.83807
inst✝ : CommMonoidWithZero R
n p✝ : R
k✝ m : ℕ
hm₁ : m ≠ 1
p k : ℕ
hp : Nat.Prime p
_hk : 0 < k
hm : m ∣ p ^ k
⊢ ∃ p k, Nat.Prime p ∧ 0 < k ∧ p ^ k = m

tactic: refine' ⟨p, i, hp, _, rfl⟩
state_before: case intro.intro.intro.intro.intro.intro
R : Type ?u.83807
inst✝ : CommMonoidWithZero R
n p✝ : R
k✝ p k : ℕ
hp : Nat.Prime p
_hk : 0 < k
i : ℕ
hik : i ≤ k
hm₁ : p ^ i ≠ 1
hm : p ^ i ∣ p ^ k
⊢ ∃ p_1 k, Nat.Prime p_1 ∧ 0 < k ∧ p_1 ^ k = p ^ i

tactic: apply Nat.pos_of_ne_zero
state_before: case intro.intro.intro.intro.intro.intro
R : Type ?u.83807
inst✝ : CommMonoidWithZero R
n p✝ : R
k✝ p k : ℕ
hp : Nat.Prime p
_hk : 0 < k
i : ℕ
hik : i ≤ k
hm₁ : p ^ i ≠ 1
hm : p ^ i ∣ p ^ k
⊢ 0 < i

tactic: rintro rfl
state_before: case intro.intro.intro.intro.intro.intro.a
R : Type ?u.83807
inst✝ : CommMonoidWithZero R
n p✝ : R
k✝ p k : ℕ
hp : Nat.Prime p
_hk : 0 < k
i : ℕ
hik : i ≤ k
hm₁ : p ^ i ≠ 1
hm : p ^ i ∣ p ^ k
⊢ i ≠ 0

tactic: simp only [pow_zero, ne_eq] at hm₁
state_before: case intro.intro.intro.intro.intro.intro.a
R : Type ?u.83807
inst✝ : CommMonoidWithZero R
n p✝ : R
k✝ p k : ℕ
hp : Nat.Prime p
_hk : 0 < k
hik : 0 ≤ k
hm₁ : p ^ 0 ≠ 1
hm : p ^ 0 ∣ p ^ k
⊢ False
Theorem: Int.ediv_dvd_of_dvd
File: Mathlib/Data/Int/Order/Basic.lean

tactic: rcases eq_or_ne s 0 with (rfl | hs)
state_before: a b : ℤ
n : ℕ
s t : ℤ
hst : s ∣ t
⊢ t / s ∣ t

tactic: rcases hst with ⟨c, hc⟩
state_before: case inr
a b : ℤ
n : ℕ
s t : ℤ
hst : s ∣ t
hs : s ≠ 0
⊢ t / s ∣ t

tactic: simp [hc, Int.mul_ediv_cancel_left _ hs]
state_before: case inr.intro
a b : ℤ
n : ℕ
s t : ℤ
hs : s ≠ 0
c : ℤ
hc : t = s * c
⊢ t / s ∣ t

tactic: simpa using hst
state_before: case inl
a b : ℤ
n : ℕ
t : ℤ
hst : 0 ∣ t
⊢ t / 0 ∣ t
Theorem: Finset.measurable_prod
File: Mathlib/MeasureTheory/Group/Arithmetic.lean

tactic: simpa only [← Finset.prod_apply] using s.measurable_prod' hf
state_before: M : Type u_3
ι : Type u_1
α : Type u_2
inst✝² : CommMonoid M
inst✝¹ : MeasurableSpace M
inst✝ : MeasurableMul₂ M
m : MeasurableSpace α
μ : MeasureTheory.Measure α
f : ι → α → M
s : Finset ι
hf : ∀ (i : ι), i ∈ s → Measurable (f i)
⊢ Measurable fun a => ∏ i in s, f i a
Theorem: Matrix.dotProduct_single
File: Mathlib/Data/Matrix/Basic.lean

tactic: have : ∀ (j) (_ : j ≠ i), v j * Pi.single (f := fun _ => α) i x j = 0 := fun j hij => by
  simp [Pi.single_eq_of_ne hij]
state_before: l : Type ?u.165555
m : Type u_1
n : Type ?u.165561
o : Type ?u.165564
m' : o → Type ?u.165569
n' : o → Type ?u.165574
R : Type ?u.165577
S : Type ?u.165580
α : Type v
β : Type w
γ : Type ?u.165587
inst✝³ : Fintype m
inst✝² : Fintype n
inst✝¹ : DecidableEq m
inst✝ : NonUnitalNonAssocSemiring α
u v w : m → α
x : α
i : m
⊢ v ⬝ᵥ Pi.single i x = v i * x

tactic: convert Finset.sum_eq_single i (fun j _ => this j) _ using 1 <;> simp
state_before: l : Type ?u.165555
m : Type u_1
n : Type ?u.165561
o : Type ?u.165564
m' : o → Type ?u.165569
n' : o → Type ?u.165574
R : Type ?u.165577
S : Type ?u.165580
α : Type v
β : Type w
γ : Type ?u.165587
inst✝³ : Fintype m
inst✝² : Fintype n
inst✝¹ : DecidableEq m
inst✝ : NonUnitalNonAssocSemiring α
u v w : m → α
x : α
i : m
this : ∀ (j : m), j ≠ i → v j * Pi.single i x j = 0
⊢ v ⬝ᵥ Pi.single i x = v i * x

tactic: simp [Pi.single_eq_of_ne hij]
state_before: l : Type ?u.165555
m : Type u_1
n : Type ?u.165561
o : Type ?u.165564
m' : o → Type ?u.165569
n' : o → Type ?u.165574
R : Type ?u.165577
S : Type ?u.165580
α : Type v
β : Type w
γ : Type ?u.165587
inst✝³ : Fintype m
inst✝² : Fintype n
inst✝¹ : DecidableEq m
inst✝ : NonUnitalNonAssocSemiring α
u v w : m → α
x : α
i j : m
hij : j ≠ i
⊢ v j * Pi.single i x j = 0
Theorem: vectorSpan_range_eq_span_range_vsub_right_ne
File: Mathlib/LinearAlgebra/AffineSpace/AffineSubspace.lean

tactic: rw [← Set.image_univ, vectorSpan_image_eq_span_vsub_set_right_ne k _ (Set.mem_univ i₀)]
state_before: k : Type u_2
V : Type u_1
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
ι : Type u_4
p : ι → P
i₀ : ι
⊢ vectorSpan k (range p) = Submodule.span k (range fun i => p ↑i -ᵥ p i₀)

tactic: congr with v
state_before: k : Type u_2
V : Type u_1
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
ι : Type u_4
p : ι → P
i₀ : ι
⊢ Submodule.span k ((fun x => x -ᵥ p i₀) '' (p '' (univ \ {i₀}))) = Submodule.span k (range fun i => p ↑i -ᵥ p i₀)

tactic: simp only [Set.mem_range, Set.mem_image, Set.mem_diff, Set.mem_singleton_iff, Subtype.exists,
  Subtype.coe_mk]
state_before: case e_s.h
k : Type u_2
V : Type u_1
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
ι : Type u_4
p : ι → P
i₀ : ι
v : V
⊢ v ∈ (fun x => x -ᵥ p i₀) '' (p '' (univ \ {i₀})) ↔ v ∈ range fun i => p ↑i -ᵥ p i₀

tactic: constructor
state_before: case e_s.h
k : Type u_2
V : Type u_1
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
ι : Type u_4
p : ι → P
i₀ : ι
v : V
⊢ (∃ x, (∃ x_1, (x_1 ∈ univ ∧ ¬x_1 = i₀) ∧ p x_1 = x) ∧ x -ᵥ p i₀ = v) ↔ ∃ a h, p a -ᵥ p i₀ = v

tactic: rintro ⟨x, ⟨i₁, ⟨⟨_, hi₁⟩, rfl⟩⟩, hv⟩
state_before: case e_s.h.mp
k : Type u_2
V : Type u_1
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
ι : Type u_4
p : ι → P
i₀ : ι
v : V
⊢ (∃ x, (∃ x_1, (x_1 ∈ univ ∧ ¬x_1 = i₀) ∧ p x_1 = x) ∧ x -ᵥ p i₀ = v) → ∃ a h, p a -ᵥ p i₀ = v

tactic: exact ⟨i₁, hi₁, hv⟩
state_before: case e_s.h.mp.intro.intro.intro.intro.intro
k : Type u_2
V : Type u_1
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
ι : Type u_4
p : ι → P
i₀ : ι
v : V
i₁ : ι
left✝ : i₁ ∈ univ
hi₁ : ¬i₁ = i₀
hv : p i₁ -ᵥ p i₀ = v
⊢ ∃ a h, p a -ᵥ p i₀ = v

tactic: exact fun ⟨i₁, hi₁, hv⟩ => ⟨p i₁, ⟨i₁, ⟨Set.mem_univ _, hi₁⟩, rfl⟩, hv⟩
state_before: case e_s.h.mpr
k : Type u_2
V : Type u_1
P : Type u_3
inst✝³ : Ring k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
ι : Type u_4
p : ι → P
i₀ : ι
v : V
⊢ (∃ a h, p a -ᵥ p i₀ = v) → ∃ x, (∃ x_1, (x_1 ∈ univ ∧ ¬x_1 = i₀) ∧ p x_1 = x) ∧ x -ᵥ p i₀ = v
Theorem: eq_div_of_mul_eq'
File: Mathlib/Algebra/Group/Basic.lean

tactic: simp [← h]
state_before: α : Type ?u.58698
β : Type ?u.58701
G : Type u_1
inst✝ : Group G
a b c d : G
h : a * c = b
⊢ a = b / c
Theorem: CategoryTheory.Subobject.ofMkLEMk_comp_ofMkLEMk
File: Mathlib/CategoryTheory/Subobject/Basic.lean

tactic: simp only [ofMkLE, ofLEMk, ofLE, ofMkLEMk, ← Functor.map_comp_assoc underlying, assoc,
  Iso.hom_inv_id_assoc]
state_before: C : Type u₁
inst✝⁴ : Category C
X Y Z : C
D : Type u₂
inst✝³ : Category D
B A₁ A₂ A₃ : C
f : A₁ ⟶ B
inst✝² : Mono f
g : A₂ ⟶ B
inst✝¹ : Mono g
h : A₃ ⟶ B
inst✝ : Mono h
h₁ : mk f ≤ mk g
h₂ : mk g ≤ mk h
⊢ ofMkLEMk f g h₁ ≫ ofMkLEMk g h h₂ = ofMkLEMk f h (_ : mk f ≤ mk h)

tactic: congr 1
state_before: C : Type u₁
inst✝⁴ : Category C
X Y Z : C
D : Type u₂
inst✝³ : Category D
B A₁ A₂ A₃ : C
f : A₁ ⟶ B
inst✝² : Mono f
g : A₂ ⟶ B
inst✝¹ : Mono g
h : A₃ ⟶ B
inst✝ : Mono h
h₁ : mk f ≤ mk g
h₂ : mk g ≤ mk h
⊢ (underlyingIso f).inv ≫ underlying.map (LE.le.hom h₁ ≫ LE.le.hom h₂) ≫ (underlyingIso h).hom =
    (underlyingIso f).inv ≫ underlying.map (LE.le.hom (_ : mk f ≤ mk h)) ≫ (underlyingIso h).hom
Theorem: CompleteLattice.independent_of_dfinsupp_sumAddHom_injective
File: Mathlib/LinearAlgebra/Dfinsupp.lean

tactic: rw [← independent_map_orderIso_iff (AddSubmonoid.toNatSubmodule : AddSubmonoid N ≃o _)]
state_before: ι : Type u_2
R : Type ?u.535889
S : Type ?u.535892
M : ι → Type ?u.535897
N : Type u_1
dec_ι : DecidableEq ι
inst✝² : Semiring R
inst✝¹ : AddCommMonoid N
inst✝ : Module R N
p : ι → AddSubmonoid N
h : Function.Injective ↑(sumAddHom fun i => AddSubmonoid.subtype (p i))
⊢ Independent p

tactic: exact independent_of_dfinsupp_lsum_injective _ h
state_before: ι : Type u_2
R : Type ?u.535889
S : Type ?u.535892
M : ι → Type ?u.535897
N : Type u_1
dec_ι : DecidableEq ι
inst✝² : Semiring R
inst✝¹ : AddCommMonoid N
inst✝ : Module R N
p : ι → AddSubmonoid N
h : Function.Injective ↑(sumAddHom fun i => AddSubmonoid.subtype (p i))
⊢ Independent (↑AddSubmonoid.toNatSubmodule ∘ p)
Theorem: IsROrC.im_eq_zero_of_le
File: Mathlib/Data/IsROrC/Basic.lean

tactic: simpa only [mul_self_norm a, normSq_apply, self_eq_add_right, mul_self_eq_zero]
  using congr_arg (fun z => z * z) ((re_le_norm a).antisymm h)
state_before: K : Type u_1
E : Type ?u.6777307
inst✝ : IsROrC K
a : K
h : ‖a‖ ≤ ↑re a
⊢ ↑im a = 0
Theorem: Complex.exp_int_mul
File: Mathlib/Data/Complex/Exponential.lean

tactic: cases n
state_before: x y z : ℂ
n : ℤ
⊢ exp (↑n * z) = exp z ^ n

tactic: . simp [exp_nat_mul]
state_before: case ofNat
x y z : ℂ
a✝ : ℕ
⊢ exp (↑(Int.ofNat a✝) * z) = exp z ^ Int.ofNat a✝

case negSucc
x y z : ℂ
a✝ : ℕ
⊢ exp (↑(Int.negSucc a✝) * z) = exp z ^ Int.negSucc a✝

tactic: . simp [exp_add, add_mul, pow_add, exp_neg, exp_nat_mul]
state_before: case negSucc
x y z : ℂ
a✝ : ℕ
⊢ exp (↑(Int.negSucc a✝) * z) = exp z ^ Int.negSucc a✝

tactic: simp [exp_nat_mul]
state_before: case ofNat
x y z : ℂ
a✝ : ℕ
⊢ exp (↑(Int.ofNat a✝) * z) = exp z ^ Int.ofNat a✝

tactic: simp [exp_add, add_mul, pow_add, exp_neg, exp_nat_mul]
state_before: case negSucc
x y z : ℂ
a✝ : ℕ
⊢ exp (↑(Int.negSucc a✝) * z) = exp z ^ Int.negSucc a✝
Theorem: LieHom.mem_idealRange_iff
File: Mathlib/Algebra/Lie/Submodule.lean

tactic: rw [f.isIdealMorphism_def] at h
state_before: R : Type u
L : Type v
L' : Type w₂
M : Type w
M' : Type w₁
inst✝¹² : CommRing R
inst✝¹¹ : LieRing L
inst✝¹⁰ : LieAlgebra R L
inst✝⁹ : LieRing L'
inst✝⁸ : LieAlgebra R L'
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
inst✝¹ : LieRingModule L M'
inst✝ : LieModule R L M'
f : L →ₗ⁅R⁆ L'
I : LieIdeal R L
J : LieIdeal R L'
h : IsIdealMorphism f
y : L'
⊢ y ∈ idealRange f ↔ ∃ x, ↑f x = y

tactic: rw [← LieSubmodule.mem_coe, ← LieIdeal.coe_toSubalgebra, h, f.range_coe, Set.mem_range]
state_before: R : Type u
L : Type v
L' : Type w₂
M : Type w
M' : Type w₁
inst✝¹² : CommRing R
inst✝¹¹ : LieRing L
inst✝¹⁰ : LieAlgebra R L
inst✝⁹ : LieRing L'
inst✝⁸ : LieAlgebra R L'
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
inst✝¹ : LieRingModule L M'
inst✝ : LieModule R L M'
f : L →ₗ⁅R⁆ L'
I : LieIdeal R L
J : LieIdeal R L'
h : ↑R L' (idealRange f) = range f
y : L'
⊢ y ∈ idealRange f ↔ ∃ x, ↑f x = y
Theorem: AddLECancellable.le_tsub_iff_right
File: Mathlib/Algebra/Order/Sub/Canonical.lean

tactic: rw [add_comm]
state_before: α : Type u_1
inst✝⁵ : AddCommSemigroup α
inst✝⁴ : PartialOrder α
inst✝³ : ExistsAddOfLE α
inst✝² : CovariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
inst✝¹ : Sub α
inst✝ : OrderedSub α
a b c d : α
ha : AddLECancellable a
h : a ≤ c
⊢ b ≤ c - a ↔ b + a ≤ c

tactic: exact ha.le_tsub_iff_left h
state_before: α : Type u_1
inst✝⁵ : AddCommSemigroup α
inst✝⁴ : PartialOrder α
inst✝³ : ExistsAddOfLE α
inst✝² : CovariantClass α α (fun x x_1 => x + x_1) fun x x_1 => x ≤ x_1
inst✝¹ : Sub α
inst✝ : OrderedSub α
a b c d : α
ha : AddLECancellable a
h : a ≤ c
⊢ b ≤ c - a ↔ a + b ≤ c
Theorem: LaurentPolynomial.degree_C_mul_T_ite
File: Mathlib/Data/Polynomial/Laurent.lean

tactic: split_ifs with h <;>
  simp only [h, map_zero, MulZeroClass.zero_mul, degree_zero, degree_C_mul_T, Ne.def,
    not_false_iff]
state_before: R : Type u_1
inst✝ : Semiring R
n : ℤ
a : R
⊢ degree (↑C a * T n) = if a = 0 then ⊥ else ↑n