tasksource/leandojo huggingface dataset:
Theorem: Submodule.map₂_iSup_right
File: Mathlib/Algebra/Module/Submodule/Bilinear.lean

tactic: suffices map₂ f (span R s) (⨆ i, span R (t i : Set N)) = ⨆ i, map₂ f (span R s) (span R (t i)) by
  simpa only [span_eq] using this
state_before: ι : Sort uι
R : Type u_1
M : Type u_2
N : Type u_4
P : Type u_3
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid N
inst✝³ : AddCommMonoid P
inst✝² : Module R M
inst✝¹ : Module R N
inst✝ : Module R P
f : M →ₗ[R] N →ₗ[R] P
s : Submodule R M
t : ι → Submodule R N
⊢ map₂ f s (⨆ (i : ι), t i) = ⨆ (i : ι), map₂ f s (t i)

tactic: simp_rw [map₂_span_span, ← span_iUnion, map₂_span_span, Set.image2_iUnion_right]
state_before: ι : Sort uι
R : Type u_1
M : Type u_2
N : Type u_4
P : Type u_3
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid N
inst✝³ : AddCommMonoid P
inst✝² : Module R M
inst✝¹ : Module R N
inst✝ : Module R P
f : M →ₗ[R] N →ₗ[R] P
s : Submodule R M
t : ι → Submodule R N
⊢ map₂ f (span R ↑s) (⨆ (i : ι), span R ↑(t i)) = ⨆ (i : ι), map₂ f (span R ↑s) (span R ↑(t i))

tactic: simpa only [span_eq] using this
state_before: ι : Sort uι
R : Type u_1
M : Type u_2
N : Type u_4
P : Type u_3
inst✝⁶ : CommSemiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid N
inst✝³ : AddCommMonoid P
inst✝² : Module R M
inst✝¹ : Module R N
inst✝ : Module R P
f : M →ₗ[R] N →ₗ[R] P
s : Submodule R M
t : ι → Submodule R N
this : map₂ f (span R ↑s) (⨆ (i : ι), span R ↑(t i)) = ⨆ (i : ι), map₂ f (span R ↑s) (span R ↑(t i))
⊢ map₂ f s (⨆ (i : ι), t i) = ⨆ (i : ι), map₂ f s (t i)
Theorem: LinearMap.polar_weak_closed
File: Mathlib/Analysis/LocallyConvex/Polar.lean

tactic: rw [polar_eq_iInter]
state_before: 𝕜 : Type u_3
E : Type u_1
F : Type u_2
inst✝⁴ : NormedCommRing 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
s : Set E
⊢ IsClosed (polar B s)

tactic: refine' isClosed_iInter fun x => isClosed_iInter fun _ => _
state_before: 𝕜 : Type u_3
E : Type u_1
F : Type u_2
inst✝⁴ : NormedCommRing 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
s : Set E
⊢ IsClosed (⋂ (x : E) (_ : x ∈ s), {y | ‖↑(↑B x) y‖ ≤ 1})

tactic: exact isClosed_le (WeakBilin.eval_continuous B.flip x).norm continuous_const
state_before: 𝕜 : Type u_3
E : Type u_1
F : Type u_2
inst✝⁴ : NormedCommRing 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : Module 𝕜 E
inst✝ : Module 𝕜 F
B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
s : Set E
x : E
x✝ : x ∈ s
⊢ IsClosed {y | ‖↑(↑B x) y‖ ≤ 1}
Theorem: Nat.ceil_le_floor_add_one
File: Mathlib/Algebra/Order/Floor.lean

tactic: rw [ceil_le, Nat.cast_add, Nat.cast_one]
state_before: F : Type ?u.46418
α : Type u_1
β : Type ?u.46424
inst✝¹ : LinearOrderedSemiring α
inst✝ : FloorSemiring α
a✝ : α
n : ℕ
a : α
⊢ ⌈a⌉₊ ≤ ⌊a⌋₊ + 1

tactic: exact (lt_floor_add_one a).le
state_before: F : Type ?u.46418
α : Type u_1
β : Type ?u.46424
inst✝¹ : LinearOrderedSemiring α
inst✝ : FloorSemiring α
a✝ : α
n : ℕ
a : α
⊢ a ≤ ↑⌊a⌋₊ + 1
Theorem: CategoryTheory.Limits.WidePushout.arrow_ι
File: Mathlib/CategoryTheory/Limits/Shapes/WidePullbacks.lean

tactic: apply colimit.w (WidePushoutShape.wideSpan _ _ _) (WidePushoutShape.Hom.init j)
state_before: J : Type w
C : Type u
inst✝² : Category C
D : Type u_1
inst✝¹ : Category D
B : D
objs : J → D
arrows : (j : J) → B ⟶ objs j
inst✝ : HasWidePushout B objs arrows
j : J
⊢ arrows j ≫ ι arrows j = head arrows
Theorem: Fin.tail_init_eq_init_tail
File: Mathlib/Data/Fin/Tuple/Basic.lean

tactic: ext i
state_before: m n : ℕ
α : Fin (n + 1) → Type u
x : α (last n)
q✝ : (i : Fin (n + 1)) → α i
p : (i : Fin n) → α (↑castSucc i)
i : Fin n
y : α (↑castSucc i)
z : α (last n)
β : Type u_1
q : Fin (n + 2) → β
⊢ tail (init q) = init (tail q)

tactic: simp [tail, init, castSucc_fin_succ]
state_before: case h
m n : ℕ
α : Fin (n + 1) → Type u
x : α (last n)
q✝ : (i : Fin (n + 1)) → α i
p : (i : Fin n) → α (↑castSucc i)
i✝ : Fin n
y : α (↑castSucc i✝)
z : α (last n)
β : Type u_1
q : Fin (n + 2) → β
i : Fin n
⊢ tail (init q) i = init (tail q) i
Theorem: unitInterval.one_minus_nonneg
File: Mathlib/Topology/UnitInterval.lean

tactic: simpa using x.2.2
state_before: x : ↑I
⊢ 0 ≤ 1 - ↑x
Theorem: Polynomial.eval_eq_sum_degreeLTEquiv
File: Mathlib/RingTheory/Polynomial/Basic.lean

tactic: simp_rw [eval_eq_sum]
state_before: R : Type u
S : Type ?u.35049
inst✝ : Semiring R
n : ℕ
p : R[X]
hp : p ∈ degreeLT R n
x : R
⊢ eval x p = ∑ i : Fin n, ↑(degreeLTEquiv R n) { val := p, property := hp } i * x ^ ↑i

tactic: exact (sum_fin _ (by simp_rw [MulZeroClass.zero_mul, forall_const]) (mem_degreeLT.mp hp)).symm
state_before: R : Type u
S : Type ?u.35049
inst✝ : Semiring R
n : ℕ
p : R[X]
hp : p ∈ degreeLT R n
x : R
⊢ (sum p fun e a => a * x ^ e) = ∑ x_1 : Fin n, ↑(degreeLTEquiv R n) { val := p, property := hp } x_1 * x ^ ↑x_1

tactic: simp_rw [MulZeroClass.zero_mul, forall_const]
state_before: R : Type u
S : Type ?u.35049
inst✝ : Semiring R
n : ℕ
p : R[X]
hp : p ∈ degreeLT R n
x : R
⊢ ∀ (i : ℕ), 0 * x ^ i = 0
Theorem: Set.Ici_inter_Ici
File: Mathlib/Data/Set/Intervals/Basic.lean

tactic: ext x
state_before: α : Type u_1
β : Type ?u.180404
inst✝ : SemilatticeSup α
a b : α
⊢ Ici a ∩ Ici b = Ici (a ⊔ b)

tactic: simp [Ici]
state_before: case h
α : Type u_1
β : Type ?u.180404
inst✝ : SemilatticeSup α
a b x : α
⊢ x ∈ Ici a ∩ Ici b ↔ x ∈ Ici (a ⊔ b)
Theorem: WittVector.mapFun.sub
File: Mathlib/RingTheory/WittVector/Basic.lean

tactic: map_fun_tac
state_before: p : ℕ
R : Type u_2
S : Type u_1
T : Type ?u.158070
hp : Fact (Nat.Prime p)
inst✝² : CommRing R
inst✝¹ : CommRing S
inst✝ : CommRing T
α : Type ?u.158085
β : Type ?u.158088
f : R →+* S
x y : 𝕎 R
⊢ mapFun (↑f) (x - y) = mapFun (↑f) x - mapFun (↑f) y
Theorem: SimplexCategory.eq_id_of_mono
File: Mathlib/AlgebraicTopology/SimplexCategory.lean

tactic: suffices IsIso i by
  apply eq_id_of_isIso
state_before: x : SimplexCategory
i : x ⟶ x
inst✝ : Mono i
⊢ i = 𝟙 x

tactic: apply isIso_of_bijective
state_before: x : SimplexCategory
i : x ⟶ x
inst✝ : Mono i
⊢ IsIso i

tactic: dsimp
state_before: case hf
x : SimplexCategory
i : x ⟶ x
inst✝ : Mono i
⊢ Function.Bijective ↑(Hom.toOrderHom i)

tactic: rw [Fintype.bijective_iff_injective_and_card i.toOrderHom, ← mono_iff_injective,
  eq_self_iff_true, and_true_iff]
state_before: case hf
x : SimplexCategory
i : x ⟶ x
inst✝ : Mono i
⊢ Function.Bijective ↑(Hom.toOrderHom i)

tactic: infer_instance
state_before: case hf
x : SimplexCategory
i : x ⟶ x
inst✝ : Mono i
⊢ Mono i

tactic: apply eq_id_of_isIso
state_before: x : SimplexCategory
i : x ⟶ x
inst✝ : Mono i
this : IsIso i
⊢ i = 𝟙 x
Theorem: Int.preimage_fract
File: Mathlib/Algebra/Order/Floor.lean

tactic: ext x
state_before: F : Type ?u.178920
α : Type u_1
β : Type ?u.178926
inst✝¹ : LinearOrderedRing α
inst✝ : FloorRing α
z : ℤ
a : α
s : Set α
⊢ fract ⁻¹' s = ⋃ (m : ℤ), (fun x => x - ↑m) ⁻¹' (s ∩ Ico 0 1)

tactic: simp only [mem_preimage, mem_iUnion, mem_inter_iff]
state_before: case h
F : Type ?u.178920
α : Type u_1
β : Type ?u.178926
inst✝¹ : LinearOrderedRing α
inst✝ : FloorRing α
z : ℤ
a : α
s : Set α
x : α
⊢ x ∈ fract ⁻¹' s ↔ x ∈ ⋃ (m : ℤ), (fun x => x - ↑m) ⁻¹' (s ∩ Ico 0 1)

tactic: refine' ⟨fun h => ⟨⌊x⌋, h, fract_nonneg x, fract_lt_one x⟩, _⟩
state_before: case h
F : Type ?u.178920
α : Type u_1
β : Type ?u.178926
inst✝¹ : LinearOrderedRing α
inst✝ : FloorRing α
z : ℤ
a : α
s : Set α
x : α
⊢ fract x ∈ s ↔ ∃ i, x - ↑i ∈ s ∧ x - ↑i ∈ Ico 0 1

tactic: rintro ⟨m, hms, hm0, hm1⟩
state_before: case h
F : Type ?u.178920
α : Type u_1
β : Type ?u.178926
inst✝¹ : LinearOrderedRing α
inst✝ : FloorRing α
z : ℤ
a : α
s : Set α
x : α
⊢ (∃ i, x - ↑i ∈ s ∧ x - ↑i ∈ Ico 0 1) → fract x ∈ s

tactic: obtain rfl : ⌊x⌋ = m := floor_eq_iff.2 ⟨sub_nonneg.1 hm0, sub_lt_iff_lt_add'.1 hm1⟩
state_before: case h.intro.intro.intro
F : Type ?u.178920
α : Type u_1
β : Type ?u.178926
inst✝¹ : LinearOrderedRing α
inst✝ : FloorRing α
z : ℤ
a : α
s : Set α
x : α
m : ℤ
hms : x - ↑m ∈ s
hm0 : 0 ≤ x - ↑m
hm1 : x - ↑m < 1
⊢ fract x ∈ s

tactic: exact hms
state_before: case h.intro.intro.intro
F : Type ?u.178920
α : Type u_1
β : Type ?u.178926
inst✝¹ : LinearOrderedRing α
inst✝ : FloorRing α
z : ℤ
a : α
s : Set α
x : α
hms : x - ↑⌊x⌋ ∈ s
hm0 : 0 ≤ x - ↑⌊x⌋
hm1 : x - ↑⌊x⌋ < 1
⊢ fract x ∈ s
Theorem: Real.arccos_neg
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Inverse.lean

tactic: rw [← add_halves π, arccos, arcsin_neg, arccos, add_sub_assoc, sub_sub_self, sub_neg_eq_add]
state_before: x : ℝ
⊢ arccos (-x) = π - arccos x
Theorem: MeasureTheory.ae_restrict_eq
File: Mathlib/MeasureTheory/Measure/MeasureSpace.lean

tactic: ext t
state_before: α : Type u_1
β : Type ?u.587542
γ : Type ?u.587545
δ : Type ?u.587548
ι : Type ?u.587551
R : Type ?u.587554
R' : Type ?u.587557
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s s' t : Set α
hs : MeasurableSet s
⊢ ae (Measure.restrict μ s) = ae μ ⊓ 𝓟 s

tactic: simp only [mem_inf_principal, mem_ae_iff, restrict_apply_eq_zero' hs, compl_setOf, not_imp,
  fun a => and_comm (a := a ∈ s) (b := ¬a ∈ t)]
state_before: case a
α : Type u_1
β : Type ?u.587542
γ : Type ?u.587545
δ : Type ?u.587548
ι : Type ?u.587551
R : Type ?u.587554
R' : Type ?u.587557
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s s' t✝ : Set α
hs : MeasurableSet s
t : Set α
⊢ t ∈ ae (Measure.restrict μ s) ↔ t ∈ ae μ ⊓ 𝓟 s

tactic: rfl
state_before: case a
α : Type u_1
β : Type ?u.587542
γ : Type ?u.587545
δ : Type ?u.587548
ι : Type ?u.587551
R : Type ?u.587554
R' : Type ?u.587557
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s s' t✝ : Set α
hs : MeasurableSet s
t : Set α
⊢ ↑↑μ (tᶜ ∩ s) = 0 ↔ ↑↑μ {a | ¬a ∈ t ∧ a ∈ s} = 0
Theorem: Ideal.radical_eq_iff
File: Mathlib/RingTheory/Ideal/Operations.lean

tactic: rw [le_antisymm_iff, and_iff_left le_radical, IsRadical]
state_before: R : Type u
ι : Type ?u.315914
inst✝ : CommSemiring R
I J K L : Ideal R
⊢ radical I = I ↔ IsRadical I
Theorem: CancelDenoms.add_subst
File: Mathlib/Tactic/CancelDenoms.lean

tactic: simp [left_distrib, *]
state_before: α : Type u_1
inst✝ : Ring α
n e1 e2 t1 t2 : α
h1 : n * e1 = t1
h2 : n * e2 = t2
⊢ n * (e1 + e2) = t1 + t2
Theorem: Nat.factorization_lt
File: Mathlib/Data/Nat/Factorization/Basic.lean

tactic: by_cases pp : p.Prime
state_before: n p : ℕ
hn : n ≠ 0
⊢ ↑(factorization n) p < n

tactic: case neg =>
  simp [factorization_eq_zero_of_non_prime n pp]
  exact hn.bot_lt
state_before: case pos
n p : ℕ
hn : n ≠ 0
pp : Prime p
⊢ ↑(factorization n) p < n

case neg
n p : ℕ
hn : n ≠ 0
pp : ¬Prime p
⊢ ↑(factorization n) p < n

tactic: rw [← pow_lt_iff_lt_right pp.two_le]
state_before: case pos
n p : ℕ
hn : n ≠ 0
pp : Prime p
⊢ ↑(factorization n) p < n

tactic: apply lt_of_le_of_lt (ord_proj_le p hn)
state_before: case pos
n p : ℕ
hn : n ≠ 0
pp : Prime p
⊢ p ^ ↑(factorization n) p < p ^ n

tactic: exact lt_of_lt_of_le (lt_two_pow n) (pow_le_pow_of_le_left pp.two_le n)
state_before: case pos
n p : ℕ
hn : n ≠ 0
pp : Prime p
⊢ n < p ^ n

tactic: simp [factorization_eq_zero_of_non_prime n pp]
state_before: n p : ℕ
hn : n ≠ 0
pp : ¬Prime p
⊢ ↑(factorization n) p < n

tactic: exact hn.bot_lt
state_before: n p : ℕ
hn : n ≠ 0
pp : ¬Prime p
⊢ 0 < n
Theorem: Algebra.algebra_ext
File: Mathlib/Algebra/Algebra/Basic.lean

tactic: replace h : P.toRingHom = Q.toRingHom := FunLike.ext _ _ h
state_before: R✝ : Type u
S : Type v
A✝ : Type w
B : Type ?u.159950
inst✝⁷ : CommSemiring R✝
inst✝⁶ : CommSemiring S
inst✝⁵ : Semiring A✝
inst✝⁴ : Algebra R✝ A✝
inst✝³ : Semiring B
inst✝² : Algebra R✝ B
R : Type u_1
inst✝¹ : CommSemiring R
A : Type u_2
inst✝ : Semiring A
P Q : Algebra R A
h : ∀ (r : R), ↑(algebraMap R A) r = ↑(algebraMap R A) r
⊢ P = Q

tactic: rcases P with @⟨⟨P⟩⟩
state_before: R✝ : Type u
S : Type v
A✝ : Type w
B : Type ?u.159950
inst✝⁷ : CommSemiring R✝
inst✝⁶ : CommSemiring S
inst✝⁵ : Semiring A✝
inst✝⁴ : Algebra R✝ A✝
inst✝³ : Semiring B
inst✝² : Algebra R✝ B
R : Type u_1
inst✝¹ : CommSemiring R
A : Type u_2
inst✝ : Semiring A
P Q : Algebra R A
h : toRingHom = toRingHom
h' : (fun x x_1 => x • x_1) = fun x x_1 => x • x_1
⊢ P = Q

tactic: rcases Q with @⟨⟨Q⟩⟩
state_before: case mk.mk
R✝ : Type u
S : Type v
A✝ : Type w
B : Type ?u.159950
inst✝⁷ : CommSemiring R✝
inst✝⁶ : CommSemiring S
inst✝⁵ : Semiring A✝
inst✝⁴ : Algebra R✝ A✝
inst✝³ : Semiring B
inst✝² : Algebra R✝ B
R : Type u_1
inst✝¹ : CommSemiring R
A : Type u_2
inst✝ : Semiring A
Q : Algebra R A
toRingHom✝ : R →+* A
commutes'✝ : ∀ (r : R) (x : (fun x => A) r), ↑toRingHom✝ r * x = x * ↑toRingHom✝ r
P : R → A → A
smul_def'✝ : ∀ (r : R) (x : (fun x => A) r), r • x = ↑toRingHom✝ r * x
h : toRingHom = toRingHom
h' : (fun x x_1 => x • x_1) = fun x x_1 => x • x_1
⊢ mk toRingHom✝ commutes'✝ smul_def'✝ = Q

tactic: congr
state_before: case mk.mk.mk.mk
R✝ : Type u
S : Type v
A✝ : Type w
B : Type ?u.159950
inst✝⁷ : CommSemiring R✝
inst✝⁶ : CommSemiring S
inst✝⁵ : Semiring A✝
inst✝⁴ : Algebra R✝ A✝
inst✝³ : Semiring B
inst✝² : Algebra R✝ B
R : Type u_1
inst✝¹ : CommSemiring R
A : Type u_2
inst✝ : Semiring A
toRingHom✝¹ : R →+* A
commutes'✝¹ : ∀ (r : R) (x : (fun x => A) r), ↑toRingHom✝¹ r * x = x * ↑toRingHom✝¹ r
P : R → A → A
smul_def'✝¹ : ∀ (r : R) (x : (fun x => A) r), r • x = ↑toRingHom✝¹ r * x
toRingHom✝ : R →+* A
commutes'✝ : ∀ (r : R) (x : (fun x => A) r), ↑toRingHom✝ r * x = x * ↑toRingHom✝ r
Q : R → A → A
smul_def'✝ : ∀ (r : R) (x : (fun x => A) r), r • x = ↑toRingHom✝ r * x
h : toRingHom = toRingHom
h' : (fun x x_1 => x • x_1) = fun x x_1 => x • x_1
⊢ mk toRingHom✝¹ commutes'✝¹ smul_def'✝¹ = mk toRingHom✝ commutes'✝ smul_def'✝

tactic: funext r a
state_before: R✝ : Type u
S : Type v
A✝ : Type w
B : Type ?u.159950
inst✝⁷ : CommSemiring R✝
inst✝⁶ : CommSemiring S
inst✝⁵ : Semiring A✝
inst✝⁴ : Algebra R✝ A✝
inst✝³ : Semiring B
inst✝² : Algebra R✝ B
R : Type u_1
inst✝¹ : CommSemiring R
A : Type u_2
inst✝ : Semiring A
P Q : Algebra R A
h : toRingHom = toRingHom
⊢ (fun x x_1 => x • x_1) = fun x x_1 => x • x_1

tactic: rw [P.smul_def', Q.smul_def', h]
state_before: case h.h
R✝ : Type u
S : Type v
A✝ : Type w
B : Type ?u.159950
inst✝⁷ : CommSemiring R✝
inst✝⁶ : CommSemiring S
inst✝⁵ : Semiring A✝
inst✝⁴ : Algebra R✝ A✝
inst✝³ : Semiring B
inst✝² : Algebra R✝ B
R : Type u_1
inst✝¹ : CommSemiring R
A : Type u_2
inst✝ : Semiring A
P Q : Algebra R A
h : toRingHom = toRingHom
r : R
a : A
⊢ r • a = r • a
Theorem: smul_ball''
File: Mathlib/Analysis/Normed/Group/Basic.lean

tactic: ext
state_before: 𝓕 : Type ?u.1010449
𝕜 : Type ?u.1010452
α : Type ?u.1010455
ι : Type ?u.1010458
κ : Type ?u.1010461
E : Type u_1
F : Type ?u.1010467
G : Type ?u.1010470
inst✝¹ : SeminormedCommGroup E
inst✝ : SeminormedCommGroup F
a a₁ a₂ b b₁ b₂ : E
r r₁ r₂ : ℝ
⊢ a • ball b r = ball (a • b) r

tactic: simp [mem_ball, Set.mem_smul_set, dist_eq_norm_div, _root_.div_eq_inv_mul,
  ← eq_inv_mul_iff_mul_eq, mul_assoc]
state_before: case h
𝓕 : Type ?u.1010449
𝕜 : Type ?u.1010452
α : Type ?u.1010455
ι : Type ?u.1010458
κ : Type ?u.1010461
E : Type u_1
F : Type ?u.1010467
G : Type ?u.1010470
inst✝¹ : SeminormedCommGroup E
inst✝ : SeminormedCommGroup F
a a₁ a₂ b b₁ b₂ : E
r r₁ r₂ : ℝ
x✝ : E
⊢ x✝ ∈ a • ball b r ↔ x✝ ∈ ball (a • b) r
Theorem: Finset.disjoint_of_erase_left
File: Mathlib/Data/Finset/Basic.lean

tactic: rw [← erase_insert ha, ← disjoint_erase_comm, disjoint_insert_right]
state_before: α : Type u_1
β : Type ?u.250835
γ : Type ?u.250838
inst✝ : DecidableEq α
s t u v : Finset α
a b : α
ha : ¬a ∈ t
hst : _root_.Disjoint (erase s a) t
⊢ _root_.Disjoint s t

tactic: exact ⟨not_mem_erase _ _, hst⟩
state_before: α : Type u_1
β : Type ?u.250835
γ : Type ?u.250838
inst✝ : DecidableEq α
s t u v : Finset α
a b : α
ha : ¬a ∈ t
hst : _root_.Disjoint (erase s a) t
⊢ ¬a ∈ erase s a ∧ _root_.Disjoint (erase s a) t
Theorem: Module.End.hasEigenvalue_iff_mem_spectrum
File: Mathlib/LinearAlgebra/Eigenspace/Basic.lean

tactic: rwa [spectrum.mem_iff, IsUnit.sub_iff, LinearMap.isUnit_iff_ker_eq_bot] at h
state_before: K R : Type v
V M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
inst✝³ : Field K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
inst✝ : FiniteDimensional K V
f : End K V
μ : K
h : μ ∈ spectrum K f
⊢ HasEigenvalue f μ
Theorem: Monovary.sum_smul_comp_perm_eq_sum_smul_iff
File: Mathlib/Algebra/Order/Rearrangement.lean

tactic: simp [(hfg.monovaryOn _).sum_smul_comp_perm_eq_sum_smul_iff fun _ _ ↦ mem_univ _]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝⁴ : LinearOrderedRing α
inst✝³ : LinearOrderedAddCommGroup β
inst✝² : Module α β
inst✝¹ : OrderedSMul α β
s : Finset ι
σ : Perm ι
f : ι → α
g : ι → β
inst✝ : Fintype ι
hfg : Monovary f g
⊢ ∑ i : ι, f i • g (↑σ i) = ∑ i : ι, f i • g i ↔ Monovary f (g ∘ ↑σ)
Theorem: Basis.toDual_apply_left
File: Mathlib/LinearAlgebra/Dual.lean

tactic: rw [← b.toDual_total_left, b.total_repr]
state_before: R : Type u
M : Type v
K : Type u₁
V : Type u₂
ι : Type w
inst✝³ : CommSemiring R
inst✝² : AddCommMonoid M
inst✝¹ : Module R M
inst✝ : DecidableEq ι
b : Basis ι R M
m : M
i : ι
⊢ ↑(↑(toDual b) m) (↑b i) = ↑(↑b.repr m) i
Theorem: finrank_eq_one
File: Mathlib/LinearAlgebra/Finrank.lean

tactic: haveI := nontrivial_of_invariantBasisNumber K
state_before: K : Type u
V : Type v
inst✝⁴ : Ring K
inst✝³ : AddCommGroup V
inst✝² : Module K V
inst✝¹ : NoZeroSMulDivisors K V
inst✝ : StrongRankCondition K
v : V
n : v ≠ 0
h : ∀ (w : V), ∃ c, c • v = w
⊢ finrank K V = 1

tactic: obtain ⟨b⟩ := (Basis.basis_singleton_iff.{u} PUnit).mpr ⟨v, n, h⟩
state_before: K : Type u
V : Type v
inst✝⁴ : Ring K
inst✝³ : AddCommGroup V
inst✝² : Module K V
inst✝¹ : NoZeroSMulDivisors K V
inst✝ : StrongRankCondition K
v : V
n : v ≠ 0
h : ∀ (w : V), ∃ c, c • v = w
this : Nontrivial K
⊢ finrank K V = 1

tactic: rw [finrank_eq_card_basis b, Fintype.card_punit]
state_before: case intro
K : Type u
V : Type v
inst✝⁴ : Ring K
inst✝³ : AddCommGroup V
inst✝² : Module K V
inst✝¹ : NoZeroSMulDivisors K V
inst✝ : StrongRankCondition K
v : V
n : v ≠ 0
h : ∀ (w : V), ∃ c, c • v = w
this : Nontrivial K
b : Basis PUnit K V
⊢ finrank K V = 1
Theorem: Multiset.Rel.trans
File: Mathlib/Data/Multiset/Basic.lean

tactic: induction' t using Multiset.induction_on with x t ih generalizing s u
state_before: α : Type u_1
β : Type ?u.476292
γ : Type ?u.476295
δ : Type ?u.476298
r✝ : α → β → Prop
p : γ → δ → Prop
r : α → α → Prop
inst✝ : IsTrans α r
s t u : Multiset α
r1 : Rel r s t
r2 : Rel r t u
⊢ Rel r s u

tactic: rw [rel_zero_right.mp r1, rel_zero_left.mp r2, rel_zero_left]
state_before: case empty
α : Type u_1
β : Type ?u.476292
γ : Type ?u.476295
δ : Type ?u.476298
r✝ : α → β → Prop
p : γ → δ → Prop
r : α → α → Prop
inst✝ : IsTrans α r
s✝ t u✝ : Multiset α
r1✝ : Rel r s✝ t
r2✝ : Rel r t u✝
s u : Multiset α
r1 : Rel r s 0
r2 : Rel r 0 u
⊢ Rel r s u

tactic: obtain ⟨a, as, ha1, ha2, rfl⟩ := rel_cons_right.mp r1
state_before: case cons
α : Type u_1
β : Type ?u.476292
γ : Type ?u.476295
δ : Type ?u.476298
r✝ : α → β → Prop
p : γ → δ → Prop
r : α → α → Prop
inst✝ : IsTrans α r
s✝ t✝ u✝ : Multiset α
r1✝ : Rel r s✝ t✝
r2✝ : Rel r t✝ u✝
x : α
t : Multiset α
ih : ∀ {s u : Multiset α}, Rel r s t → Rel r t u → Rel r s u
s u : Multiset α
r1 : Rel r s (x ::ₘ t)
r2 : Rel r (x ::ₘ t) u
⊢ Rel r s u

tactic: obtain ⟨b, bs, hb1, hb2, rfl⟩ := rel_cons_left.mp r2
state_before: case cons.intro.intro.intro.intro
α : Type u_1
β : Type ?u.476292
γ : Type ?u.476295
δ : Type ?u.476298
r✝ : α → β → Prop
p : γ → δ → Prop
r : α → α → Prop
inst✝ : IsTrans α r
s t✝ u✝ : Multiset α
r1✝ : Rel r s t✝
r2✝ : Rel r t✝ u✝
x : α
t : Multiset α
ih : ∀ {s u : Multiset α}, Rel r s t → Rel r t u → Rel r s u
u : Multiset α
r2 : Rel r (x ::ₘ t) u
a : α
as : Multiset α
ha1 : r a x
ha2 : Rel r as t
r1 : Rel r (a ::ₘ as) (x ::ₘ t)
⊢ Rel r (a ::ₘ as) u

tactic: exact Multiset.Rel.cons (_root_.trans ha1 hb1) (ih ha2 hb2)
state_before: case cons.intro.intro.intro.intro.intro.intro.intro.intro
α : Type u_1
β : Type ?u.476292
γ : Type ?u.476295
δ : Type ?u.476298
r✝ : α → β → Prop
p : γ → δ → Prop
r : α → α → Prop
inst✝ : IsTrans α r
s t✝ u : Multiset α
r1✝ : Rel r s t✝
r2✝ : Rel r t✝ u
x : α
t : Multiset α
ih : ∀ {s u : Multiset α}, Rel r s t → Rel r t u → Rel r s u
a : α
as : Multiset α
ha1 : r a x
ha2 : Rel r as t
r1 : Rel r (a ::ₘ as) (x ::ₘ t)
b : α
bs : Multiset α
hb1 : r x b
hb2 : Rel r t bs
r2 : Rel r (x ::ₘ t) (b ::ₘ bs)
⊢ Rel r (a ::ₘ as) (b ::ₘ bs)
Theorem: lp.norm_single
File: Mathlib/Analysis/NormedSpace/lpSpace.lean

tactic: refine' Real.rpow_left_injOn hp.ne' (norm_nonneg' _) (norm_nonneg _) _
state_before: α : Type u_2
E : α → Type u_1
p q : ℝ≥0∞
inst✝⁴ : (i : α) → NormedAddCommGroup (E i)
𝕜 : Type ?u.912341
inst✝³ : NormedRing 𝕜
inst✝² : (i : α) → Module 𝕜 (E i)
inst✝¹ : ∀ (i : α), BoundedSMul 𝕜 (E i)
inst✝ : DecidableEq α
hp : 0 < ENNReal.toReal p
f : (i : α) → E i
i : α
⊢ ‖lp.single p i (f i)‖ = ‖f i‖

tactic: simpa using lp.norm_sum_single hp f {i}
state_before: α : Type u_2
E : α → Type u_1
p q : ℝ≥0∞
inst✝⁴ : (i : α) → NormedAddCommGroup (E i)
𝕜 : Type ?u.912341
inst✝³ : NormedRing 𝕜
inst✝² : (i : α) → Module 𝕜 (E i)
inst✝¹ : ∀ (i : α), BoundedSMul 𝕜 (E i)
inst✝ : DecidableEq α
hp : 0 < ENNReal.toReal p
f : (i : α) → E i
i : α
⊢ (fun y => y ^ ENNReal.toReal p) ‖lp.single p i (f i)‖ = (fun y => y ^ ENNReal.toReal p) ‖f i‖
Theorem: Fin.map_valEmbedding_univ
File: Mathlib/Data/Fintype/Fin.lean

tactic: ext
state_before: α : Type ?u.10
β : Type ?u.13
n : ℕ
⊢ map valEmbedding univ = Iio n

tactic: simp [orderIsoSubtype.symm.surjective.exists, OrderIso.symm]
state_before: case a
α : Type ?u.10
β : Type ?u.13
n a✝ : ℕ
⊢ a✝ ∈ map valEmbedding univ ↔ a✝ ∈ Iio n
Theorem: QuadraticForm.polar_add_left_iff
File: Mathlib/LinearAlgebra/QuadraticForm/Basic.lean

tactic: simp only [← add_assoc]
state_before: S : Type ?u.8733
R : Type u_1
R₁ : Type ?u.8739
M : Type u_2
inst✝² : Ring R
inst✝¹ : CommRing R₁
inst✝ : AddCommGroup M
f : M → R
x x' y : M
⊢ polar f (x + x') y = polar f x y + polar f x' y ↔
    f (x + x' + y) + (f x + f x' + f y) = f (x + x') + f (x' + y) + f (y + x)

tactic: simp only [polar, sub_eq_iff_eq_add, eq_sub_iff_add_eq, sub_add_eq_add_sub, add_sub]
state_before: S : Type ?u.8733
R : Type u_1
R₁ : Type ?u.8739
M : Type u_2
inst✝² : Ring R
inst✝¹ : CommRing R₁
inst✝ : AddCommGroup M
f : M → R
x x' y : M
⊢ polar f (x + x') y = polar f x y + polar f x' y ↔
    f (x + x' + y) + f x + f x' + f y = f (x + x') + f (x' + y) + f (y + x)

tactic: simp only [add_right_comm _ (f y) _, add_right_comm _ (f x') (f x)]
state_before: S : Type ?u.8733
R : Type u_1
R₁ : Type ?u.8739
M : Type u_2
inst✝² : Ring R
inst✝¹ : CommRing R₁
inst✝ : AddCommGroup M
f : M → R
x x' y : M
⊢ f (x + x' + y) + f y + f x' + f y + f x = f (x + y) + f (x' + y) + f y + f (x + x') ↔
    f (x + x' + y) + f x + f x' + f y = f (x + x') + f (x' + y) + f (y + x)

tactic: rw [add_comm y x, add_right_comm _ _ (f (x + y)), add_comm _ (f (x + y)),
  add_right_comm (f (x + y)), add_left_inj]
state_before: S : Type ?u.8733
R : Type u_1
R₁ : Type ?u.8739
M : Type u_2
inst✝² : Ring R
inst✝¹ : CommRing R₁
inst✝ : AddCommGroup M
f : M → R
x x' y : M
⊢ f (x + x' + y) + f x + f x' + f y + f y = f (x + y) + f (x' + y) + f (x + x') + f y ↔
    f (x + x' + y) + f x + f x' + f y = f (x + x') + f (x' + y) + f (y + x)
Theorem: Rel.comp_left_id
File: Mathlib/Data/Rel.lean

tactic: unfold comp
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.11645
r✝ r : Rel α β
⊢ Eq • r = r

tactic: ext x
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.11645
r✝ r : Rel α β
⊢ (fun x z => ∃ y, x = y ∧ r y z) = r

tactic: simp
state_before: case a.h.a
α : Type u_1
β : Type u_2
γ : Type ?u.11645
r✝ r : Rel α β
x : α
x✝ : β
⊢ (∃ y, x = y ∧ r y x✝) ↔ r x x✝
Theorem: Submodule.finrank_le_one_iff_isPrincipal
File: Mathlib/LinearAlgebra/FiniteDimensional.lean

tactic: rw [← W.rank_le_one_iff_isPrincipal, ← finrank_eq_rank, ← Cardinal.natCast_le, Nat.cast_one]
state_before: K : Type u
V : Type v
inst✝³ : DivisionRing K
inst✝² : AddCommGroup V
inst✝¹ : Module K V
W : Submodule K V
inst✝ : FiniteDimensional K { x // x ∈ W }
⊢ finrank K { x // x ∈ W } ≤ 1 ↔ IsPrincipal W