tasksource/leandojo huggingface dataset:
Theorem: LieSubmodule.coe_lieSpan_submodule_eq_iff
File: Mathlib/Algebra/Lie/Submodule.lean

tactic: rw [p.exists_lieSubmodule_coe_eq_iff L]
state_before: R : Type u
L : Type v
M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : LieRing L
inst✝⁴ : LieAlgebra R L
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : LieRingModule L M
inst✝ : LieModule R L M
N N' : LieSubmodule R L M
I J : LieIdeal R L
s : Set M
p : Submodule R M
⊢ ↑(lieSpan R L ↑p) = p ↔ ∃ N, ↑N = p

tactic: constructor <;> intro h
state_before: R : Type u
L : Type v
M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : LieRing L
inst✝⁴ : LieAlgebra R L
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : LieRingModule L M
inst✝ : LieModule R L M
N N' : LieSubmodule R L M
I J : LieIdeal R L
s : Set M
p : Submodule R M
⊢ ↑(lieSpan R L ↑p) = p ↔ ∀ (x : L) (m : M), m ∈ p → ⁅x, m⁆ ∈ p

tactic: intro x m hm
state_before: case mp
R : Type u
L : Type v
M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : LieRing L
inst✝⁴ : LieAlgebra R L
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : LieRingModule L M
inst✝ : LieModule R L M
N N' : LieSubmodule R L M
I J : LieIdeal R L
s : Set M
p : Submodule R M
h : ↑(lieSpan R L ↑p) = p
⊢ ∀ (x : L) (m : M), m ∈ p → ⁅x, m⁆ ∈ p

tactic: rw [← h, mem_coeSubmodule]
state_before: case mp
R : Type u
L : Type v
M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : LieRing L
inst✝⁴ : LieAlgebra R L
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : LieRingModule L M
inst✝ : LieModule R L M
N N' : LieSubmodule R L M
I J : LieIdeal R L
s : Set M
p : Submodule R M
h : ↑(lieSpan R L ↑p) = p
x : L
m : M
hm : m ∈ p
⊢ ⁅x, m⁆ ∈ p

tactic: exact lie_mem _ (subset_lieSpan hm)
state_before: case mp
R : Type u
L : Type v
M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : LieRing L
inst✝⁴ : LieAlgebra R L
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : LieRingModule L M
inst✝ : LieModule R L M
N N' : LieSubmodule R L M
I J : LieIdeal R L
s : Set M
p : Submodule R M
h : ↑(lieSpan R L ↑p) = p
x : L
m : M
hm : m ∈ p
⊢ ⁅x, m⁆ ∈ lieSpan R L ↑p

tactic: rw [← coe_toSubmodule_mk p @h, coe_toSubmodule, coe_toSubmodule_eq_iff, lieSpan_eq]
state_before: case mpr
R : Type u
L : Type v
M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : LieRing L
inst✝⁴ : LieAlgebra R L
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : LieRingModule L M
inst✝ : LieModule R L M
N N' : LieSubmodule R L M
I J : LieIdeal R L
s : Set M
p : Submodule R M
h : ∀ (x : L) (m : M), m ∈ p → ⁅x, m⁆ ∈ p
⊢ ↑(lieSpan R L ↑p) = p
Theorem: Subsemiring.mem_map
File: Mathlib/RingTheory/Subsemiring/Basic.lean

tactic: convert Set.mem_image_iff_bex (f := f) (s := s.carrier) (y := y) using 1
state_before: R : Type u
S : Type v
T : Type w
inst✝² : NonAssocSemiring R
M : Submonoid R
inst✝¹ : NonAssocSemiring S
inst✝ : NonAssocSemiring T
s✝ : Subsemiring R
f : R →+* S
s : Subsemiring R
y : S
⊢ y ∈ map f s ↔ ∃ x, x ∈ s ∧ ↑f x = y

tactic: simp
state_before: case h.e'_2.a
R : Type u
S : Type v
T : Type w
inst✝² : NonAssocSemiring R
M : Submonoid R
inst✝¹ : NonAssocSemiring S
inst✝ : NonAssocSemiring T
s✝ : Subsemiring R
f : R →+* S
s : Subsemiring R
y : S
⊢ (∃ x, x ∈ s ∧ ↑f x = y) ↔ ∃ x x_1, ↑f x = y
Theorem: List.prod_le_prod'
File: Mathlib/Data/List/BigOperators/Basic.lean

tactic: simpa
state_before: ι : Type u_2
α : Type ?u.82437
M : Type u_1
N : Type ?u.82443
P : Type ?u.82446
M₀ : Type ?u.82449
G : Type ?u.82452
R : Type ?u.82455
inst✝⁵ : Monoid M
inst✝⁴ : Monoid N
inst✝³ : Monoid P
l✝ l₁ l₂ : List M
a : M
inst✝² : Preorder M
inst✝¹ : CovariantClass M M (Function.swap fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
inst✝ : CovariantClass M M (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
l : List ι
f g : ι → M
h : ∀ (i : ι), i ∈ l → f i ≤ g i
⊢ Forall₂ (fun x x_1 => x ≤ x_1) (map f l) (map g l)
Theorem: EqvGen.mono
File: Mathlib/Logic/Relation.lean

tactic: induction h with
| rel a b h => exact EqvGen.rel _ _ (hrp _ _ h)
| refl => exact EqvGen.refl _
| symm a b _ ih => exact EqvGen.symm _ _ ih
| trans a b c _ _ hab hbc => exact EqvGen.trans _ _ _ hab hbc
state_before: α : Type u_1
β : Type ?u.31015
γ : Type ?u.31018
δ : Type ?u.31021
r✝ : α → α → Prop
a b : α
r p : α → α → Prop
hrp : ∀ (a b : α), r a b → p a b
h : EqvGen r a b
⊢ EqvGen p a b

tactic: exact EqvGen.rel _ _ (hrp _ _ h)
state_before: case rel
α : Type u_1
β : Type ?u.31015
γ : Type ?u.31018
δ : Type ?u.31021
r✝ : α → α → Prop
a✝ b✝ : α
r p : α → α → Prop
hrp : ∀ (a b : α), r a b → p a b
a b : α
h : r a b
⊢ EqvGen p a b

tactic: exact EqvGen.refl _
state_before: case refl
α : Type u_1
β : Type ?u.31015
γ : Type ?u.31018
δ : Type ?u.31021
r✝ : α → α → Prop
a b : α
r p : α → α → Prop
hrp : ∀ (a b : α), r a b → p a b
x✝ : α
⊢ EqvGen p x✝ x✝

tactic: exact EqvGen.symm _ _ ih
state_before: case symm
α : Type u_1
β : Type ?u.31015
γ : Type ?u.31018
δ : Type ?u.31021
r✝ : α → α → Prop
a✝¹ b✝ : α
r p : α → α → Prop
hrp : ∀ (a b : α), r a b → p a b
a b : α
a✝ : EqvGen r a b
ih : EqvGen p a b
⊢ EqvGen p b a

tactic: exact EqvGen.trans _ _ _ hab hbc
state_before: case trans
α : Type u_1
β : Type ?u.31015
γ : Type ?u.31018
δ : Type ?u.31021
r✝ : α → α → Prop
a✝² b✝ : α
r p : α → α → Prop
hrp : ∀ (a b : α), r a b → p a b
a b c : α
a✝¹ : EqvGen r a b
a✝ : EqvGen r b c
hab : EqvGen p a b
hbc : EqvGen p b c
⊢ EqvGen p a c
Theorem: map_snd_nhdsWithin
File: Mathlib/Topology/Constructions.lean

tactic: refine' le_antisymm (continuousAt_snd.mono_left inf_le_left) fun s hs => _
state_before: α : Type u
β : Type v
γ : Type ?u.55434
δ : Type ?u.55437
ε : Type ?u.55440
ζ : Type ?u.55443
inst✝⁵ : TopologicalSpace α
inst✝⁴ : TopologicalSpace β
inst✝³ : TopologicalSpace γ
inst✝² : TopologicalSpace δ
inst✝¹ : TopologicalSpace ε
inst✝ : TopologicalSpace ζ
x : α × β
⊢ map Prod.snd (𝓝[Prod.fst ⁻¹' {x.fst}] x) = 𝓝 x.snd

tactic: rcases x with ⟨x, y⟩
state_before: α : Type u
β : Type v
γ : Type ?u.55434
δ : Type ?u.55437
ε : Type ?u.55440
ζ : Type ?u.55443
inst✝⁵ : TopologicalSpace α
inst✝⁴ : TopologicalSpace β
inst✝³ : TopologicalSpace γ
inst✝² : TopologicalSpace δ
inst✝¹ : TopologicalSpace ε
inst✝ : TopologicalSpace ζ
x : α × β
s : Set β
hs : s ∈ map Prod.snd (𝓝[Prod.fst ⁻¹' {x.fst}] x)
⊢ s ∈ 𝓝 x.snd

tactic: rw [mem_map, nhdsWithin, mem_inf_principal, mem_nhds_prod_iff] at hs
state_before: case mk
α : Type u
β : Type v
γ : Type ?u.55434
δ : Type ?u.55437
ε : Type ?u.55440
ζ : Type ?u.55443
inst✝⁵ : TopologicalSpace α
inst✝⁴ : TopologicalSpace β
inst✝³ : TopologicalSpace γ
inst✝² : TopologicalSpace δ
inst✝¹ : TopologicalSpace ε
inst✝ : TopologicalSpace ζ
s : Set β
x : α
y : β
hs : s ∈ map Prod.snd (𝓝[Prod.fst ⁻¹' {(x, y).fst}] (x, y))
⊢ s ∈ 𝓝 (x, y).snd

tactic: rcases hs with ⟨u, hu, v, hv, H⟩
state_before: case mk
α : Type u
β : Type v
γ : Type ?u.55434
δ : Type ?u.55437
ε : Type ?u.55440
ζ : Type ?u.55443
inst✝⁵ : TopologicalSpace α
inst✝⁴ : TopologicalSpace β
inst✝³ : TopologicalSpace γ
inst✝² : TopologicalSpace δ
inst✝¹ : TopologicalSpace ε
inst✝ : TopologicalSpace ζ
s : Set β
x : α
y : β
hs : ∃ u, u ∈ 𝓝 x ∧ ∃ v, v ∈ 𝓝 y ∧ u ×ˢ v ⊆ {x_1 | x_1 ∈ Prod.fst ⁻¹' {(x, y).fst} → x_1 ∈ Prod.snd ⁻¹' s}
⊢ s ∈ 𝓝 (x, y).snd

tactic: simp only [prod_subset_iff, mem_singleton_iff, mem_setOf_eq, mem_preimage] at H
state_before: case mk.intro.intro.intro.intro
α : Type u
β : Type v
γ : Type ?u.55434
δ : Type ?u.55437
ε : Type ?u.55440
ζ : Type ?u.55443
inst✝⁵ : TopologicalSpace α
inst✝⁴ : TopologicalSpace β
inst✝³ : TopologicalSpace γ
inst✝² : TopologicalSpace δ
inst✝¹ : TopologicalSpace ε
inst✝ : TopologicalSpace ζ
s : Set β
x : α
y : β
u : Set α
hu : u ∈ 𝓝 x
v : Set β
hv : v ∈ 𝓝 y
H : u ×ˢ v ⊆ {x_1 | x_1 ∈ Prod.fst ⁻¹' {(x, y).fst} → x_1 ∈ Prod.snd ⁻¹' s}
⊢ s ∈ 𝓝 (x, y).snd

tactic: exact mem_of_superset hv fun z hz => H _ (mem_of_mem_nhds hu) _ hz rfl
state_before: case mk.intro.intro.intro.intro
α : Type u
β : Type v
γ : Type ?u.55434
δ : Type ?u.55437
ε : Type ?u.55440
ζ : Type ?u.55443
inst✝⁵ : TopologicalSpace α
inst✝⁴ : TopologicalSpace β
inst✝³ : TopologicalSpace γ
inst✝² : TopologicalSpace δ
inst✝¹ : TopologicalSpace ε
inst✝ : TopologicalSpace ζ
s : Set β
x : α
y : β
u : Set α
hu : u ∈ 𝓝 x
v : Set β
hv : v ∈ 𝓝 y
H : ∀ (x_1 : α), x_1 ∈ u → ∀ (y : β), y ∈ v → x_1 = x → y ∈ s
⊢ s ∈ 𝓝 (x, y).snd
Theorem: Cardinal.le_powerlt
File: Mathlib/SetTheory/Cardinal/Basic.lean

tactic: refine le_ciSup (f := fun y : Iio b => a^y) ?_ ⟨c, h⟩
state_before: α β : Type u
b c a : Cardinal
h : c < b
⊢ a ^ c ≤ a ^< b

tactic: rw [← image_eq_range]
state_before: α β : Type u
b c a : Cardinal
h : c < b
⊢ BddAbove (range fun y => a ^ ↑y)

tactic: exact bddAbove_image.{u, u} _ bddAbove_Iio
state_before: α β : Type u
b c a : Cardinal
h : c < b
⊢ BddAbove (HPow.hPow a '' Iio b)
Theorem: PowerSeries.coeff_X
File: Mathlib/RingTheory/PowerSeries/Basic.lean

tactic: rw [X_eq, coeff_monomial]
state_before: R : Type u_1
inst✝ : Semiring R
n : ℕ
⊢ ↑(coeff R n) X = if n = 1 then 1 else 0
Theorem: NNRat.toNNRat_coe_nat
File: Mathlib/Data/Rat/NNRat.lean

tactic: simp only [Nat.cast_nonneg, Rat.coe_toNNRat]
state_before: α : Type ?u.32926
p q : ℚ≥0
n : ℕ
⊢ ↑(toNNRat ↑n) = ↑↑n

tactic: rfl
state_before: α : Type ?u.32926
p q : ℚ≥0
n : ℕ
⊢ ↑n = ↑↑n
Theorem: Lagrange.degree_interpolate_le
File: Mathlib/LinearAlgebra/Lagrange.lean

tactic: refine' (degree_sum_le _ _).trans _
state_before: F : Type u_2
inst✝¹ : Field F
ι : Type u_1
inst✝ : DecidableEq ι
s t : Finset ι
i j : ι
v r r' : ι → F
hvs : Set.InjOn v ↑s
⊢ degree (↑(interpolate s v) r) ≤ ↑(card s - 1)

tactic: rw [Finset.sup_le_iff]
state_before: F : Type u_2
inst✝¹ : Field F
ι : Type u_1
inst✝ : DecidableEq ι
s t : Finset ι
i j : ι
v r r' : ι → F
hvs : Set.InjOn v ↑s
⊢ (sup s fun b => degree (↑C (r b) * Lagrange.basis s v b)) ≤ ↑(card s - 1)

tactic: intro i hi
state_before: F : Type u_2
inst✝¹ : Field F
ι : Type u_1
inst✝ : DecidableEq ι
s t : Finset ι
i j : ι
v r r' : ι → F
hvs : Set.InjOn v ↑s
⊢ ∀ (b : ι), b ∈ s → degree (↑C (r b) * Lagrange.basis s v b) ≤ ↑(card s - 1)

tactic: rw [degree_mul, degree_basis hvs hi]
state_before: F : Type u_2
inst✝¹ : Field F
ι : Type u_1
inst✝ : DecidableEq ι
s t : Finset ι
i✝ j : ι
v r r' : ι → F
hvs : Set.InjOn v ↑s
i : ι
hi : i ∈ s
⊢ degree (↑C (r i) * Lagrange.basis s v i) ≤ ↑(card s - 1)

tactic: by_cases hr : r i = 0
state_before: F : Type u_2
inst✝¹ : Field F
ι : Type u_1
inst✝ : DecidableEq ι
s t : Finset ι
i✝ j : ι
v r r' : ι → F
hvs : Set.InjOn v ↑s
i : ι
hi : i ∈ s
⊢ degree (↑C (r i)) + ↑(card s - 1) ≤ ↑(card s - 1)

tactic: simpa only [hr, map_zero, degree_zero, WithBot.bot_add] using bot_le
state_before: case pos
F : Type u_2
inst✝¹ : Field F
ι : Type u_1
inst✝ : DecidableEq ι
s t : Finset ι
i✝ j : ι
v r r' : ι → F
hvs : Set.InjOn v ↑s
i : ι
hi : i ∈ s
hr : r i = 0
⊢ degree (↑C (r i)) + ↑(card s - 1) ≤ ↑(card s - 1)

tactic: rw [degree_C hr, zero_add]
state_before: case neg
F : Type u_2
inst✝¹ : Field F
ι : Type u_1
inst✝ : DecidableEq ι
s t : Finset ι
i✝ j : ι
v r r' : ι → F
hvs : Set.InjOn v ↑s
i : ι
hi : i ∈ s
hr : ¬r i = 0
⊢ degree (↑C (r i)) + ↑(card s - 1) ≤ ↑(card s - 1)
Theorem: LinearMap.separatingRight_iff_linear_flip_nontrivial
File: Mathlib/LinearAlgebra/SesquilinearForm.lean

tactic: rw [← flip_separatingLeft, separatingLeft_iff_linear_nontrivial]
state_before: R : Type u_2
R₁ : Type u_1
R₂ : Type u_5
R₃ : Type ?u.557199
M : Type ?u.557202
M₁ : Type u_3
M₂ : Type u_4
Mₗ₁ : Type ?u.557211
Mₗ₁' : Type ?u.557214
Mₗ₂ : Type ?u.557217
Mₗ₂' : Type ?u.557220
K : Type ?u.557223
K₁ : Type ?u.557226
K₂ : Type ?u.557229
V : Type ?u.557232
V₁ : Type ?u.557235
V₂ : Type ?u.557238
n : Type ?u.557241
inst✝⁶ : CommSemiring R
inst✝⁵ : CommSemiring R₁
inst✝⁴ : AddCommMonoid M₁
inst✝³ : Module R₁ M₁
inst✝² : CommSemiring R₂
inst✝¹ : AddCommMonoid M₂
inst✝ : Module R₂ M₂
I₁ : R₁ →+* R
I₂ : R₂ →+* R
I₁' : R₁ →+* R
B : M₁ →ₛₗ[I₁] M₂ →ₛₗ[I₂] R
⊢ SeparatingRight B ↔ ∀ (y : M₂), ↑(flip B) y = 0 → y = 0
Theorem: isPathConnected_iff_eq
File: Mathlib/Topology/PathConnected.lean

tactic: constructor <;> rintro ⟨x, x_in, h⟩ <;> use x, x_in
state_before: X : Type u_1
Y : Type ?u.641555
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
x y z : X
ι : Type ?u.641570
F : Set X
⊢ IsPathConnected F ↔ ∃ x, x ∈ F ∧ pathComponentIn x F = F

tactic: ext y
state_before: case mp.intro.intro
X : Type u_1
Y : Type ?u.641555
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
x✝ y z : X
ι : Type ?u.641570
F : Set X
x : X
x_in : x ∈ F
h : ∀ {y : X}, y ∈ F → JoinedIn F x y
⊢ pathComponentIn x F = F

tactic: exact ⟨fun hy => hy.mem.2, h⟩
state_before: case mp.intro.intro.h
X : Type u_1
Y : Type ?u.641555
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
x✝ y✝ z : X
ι : Type ?u.641570
F : Set X
x : X
x_in : x ∈ F
h : ∀ {y : X}, y ∈ F → JoinedIn F x y
y : X
⊢ y ∈ pathComponentIn x F ↔ y ∈ F

tactic: intro y y_in
state_before: case mpr.intro.intro
X : Type u_1
Y : Type ?u.641555
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
x✝ y z : X
ι : Type ?u.641570
F : Set X
x : X
x_in : x ∈ F
h : pathComponentIn x F = F
⊢ ∀ {y : X}, y ∈ F → JoinedIn F x y

tactic: rwa [← h] at y_in
state_before: case mpr.intro.intro
X : Type u_1
Y : Type ?u.641555
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
x✝ y✝ z : X
ι : Type ?u.641570
F : Set X
x : X
x_in : x ∈ F
h : pathComponentIn x F = F
y : X
y_in : y ∈ F
⊢ JoinedIn F x y
Theorem: Equiv.Perm.IsThreeCycle.inv_iff
File: Mathlib/GroupTheory/Perm/Cycle/Type.lean

tactic: rw [← inv_inv f]
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
σ f : Perm α
⊢ IsThreeCycle f⁻¹ → IsThreeCycle f

tactic: apply inv
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
σ f : Perm α
⊢ IsThreeCycle f⁻¹⁻¹⁻¹ → IsThreeCycle f⁻¹⁻¹
Theorem: MvPowerSeries.zero_mul
File: Mathlib/RingTheory/PowerSeries/Basic.lean

tactic: simp [coeff_mul]
state_before: σ : Type u_1
R : Type u_2
inst✝ : Semiring R
m n✝ : σ →₀ ℕ
φ ψ : MvPowerSeries σ R
n : σ →₀ ℕ
⊢ ↑(coeff R n) (0 * φ) = ↑(coeff R n) 0
Theorem: Nat.minFac_dvd
File: Mathlib/Data/Nat/Prime.lean

tactic: simp [n1]
state_before: n : ℕ
n1 : n = 1
⊢ minFac n ∣ n
Theorem: List.map_replicate
File: Mathlib/Data/List/Basic.lean

tactic: induction n <;> [rfl; simp only [*, replicate, map]]
state_before: ι : Type ?u.18676
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ : List α
f : α → β
n : ℕ
a : α
⊢ map f (replicate n a) = replicate n (f a)
Theorem: Rel.card_interedges_finpartition
File: Mathlib/Combinatorics/SimpleGraph/Density.lean

tactic: rw [card_interedges_finpartition_left _ P, sum_product]
state_before: 𝕜 : Type ?u.26491
ι : Type ?u.26494
κ : Type ?u.26497
α : Type u_1
β : Type u_2
inst✝³ : LinearOrderedField 𝕜
r : α → β → Prop
inst✝² : (a : α) → DecidablePred (r a)
s s₁ s₂ : Finset α
t t₁ t₂ : Finset β
a : α
b : β
δ : 𝕜
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
P : Finpartition s
Q : Finpartition t
⊢ card (interedges r s t) = ∑ ab in P.parts ×ˢ Q.parts, card (interedges r ab.fst ab.snd)

tactic: congr
state_before: 𝕜 : Type ?u.26491
ι : Type ?u.26494
κ : Type ?u.26497
α : Type u_1
β : Type u_2
inst✝³ : LinearOrderedField 𝕜
r : α → β → Prop
inst✝² : (a : α) → DecidablePred (r a)
s s₁ s₂ : Finset α
t t₁ t₂ : Finset β
a : α
b : β
δ : 𝕜
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
P : Finpartition s
Q : Finpartition t
⊢ ∑ a in P.parts, card (interedges r a t) = ∑ x in P.parts, ∑ y in Q.parts, card (interedges r (x, y).fst (x, y).snd)

tactic: ext
state_before: case e_f
𝕜 : Type ?u.26491
ι : Type ?u.26494
κ : Type ?u.26497
α : Type u_1
β : Type u_2
inst✝³ : LinearOrderedField 𝕜
r : α → β → Prop
inst✝² : (a : α) → DecidablePred (r a)
s s₁ s₂ : Finset α
t t₁ t₂ : Finset β
a : α
b : β
δ : 𝕜
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
P : Finpartition s
Q : Finpartition t
⊢ (fun a => card (interedges r a t)) = fun x => ∑ y in Q.parts, card (interedges r (x, y).fst (x, y).snd)

tactic: rw [card_interedges_finpartition_right]
state_before: case e_f.h
𝕜 : Type ?u.26491
ι : Type ?u.26494
κ : Type ?u.26497
α : Type u_1
β : Type u_2
inst✝³ : LinearOrderedField 𝕜
r : α → β → Prop
inst✝² : (a : α) → DecidablePred (r a)
s s₁ s₂ : Finset α
t t₁ t₂ : Finset β
a : α
b : β
δ : 𝕜
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
P : Finpartition s
Q : Finpartition t
x✝ : Finset α
⊢ card (interedges r x✝ t) = ∑ y in Q.parts, card (interedges r (x✝, y).fst (x✝, y).snd)
Theorem: tendsto_list_prod
File: Mathlib/Topology/Algebra/Monoid.lean

tactic: simp [tendsto_const_nhds]
state_before: ι : Type u_2
α : Type u_1
X : Type ?u.169976
M : Type u_3
N : Type ?u.169982
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace M
inst✝¹ : Monoid M
inst✝ : ContinuousMul M
f : ι → α → M
x : Filter α
a : ι → M
x✝ : ∀ (i : ι), i ∈ [] → Tendsto (f i) x (𝓝 (a i))
⊢ Tendsto (fun b => List.prod (List.map (fun c => f c b) [])) x (𝓝 (List.prod (List.map a [])))

tactic: simp only [List.map_cons, List.prod_cons]
state_before: ι : Type u_2
α : Type u_1
X : Type ?u.169976
M : Type u_3
N : Type ?u.169982
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace M
inst✝¹ : Monoid M
inst✝ : ContinuousMul M
f✝ : ι → α → M
x : Filter α
a : ι → M
f : ι
l : List ι
h : ∀ (i : ι), i ∈ f :: l → Tendsto (f✝ i) x (𝓝 (a i))
⊢ Tendsto (fun b => List.prod (List.map (fun c => f✝ c b) (f :: l))) x (𝓝 (List.prod (List.map a (f :: l))))

tactic: exact
  (h f (List.mem_cons_self _ _)).mul
    (tendsto_list_prod l fun c hc => h c (List.mem_cons_of_mem _ hc))
state_before: ι : Type u_2
α : Type u_1
X : Type ?u.169976
M : Type u_3
N : Type ?u.169982
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace M
inst✝¹ : Monoid M
inst✝ : ContinuousMul M
f✝ : ι → α → M
x : Filter α
a : ι → M
f : ι
l : List ι
h : ∀ (i : ι), i ∈ f :: l → Tendsto (f✝ i) x (𝓝 (a i))
⊢ Tendsto (fun b => f✝ f b * List.prod (List.map (fun c => f✝ c b) l)) x (𝓝 (a f * List.prod (List.map a l)))
Theorem: Nat.minSqFac_le_of_dvd
File: Mathlib/Data/Nat/Squarefree.lean

tactic: have := minSqFac_has_prop n
state_before: n d : ℕ
h : minSqFac n = some d
m : ℕ
m2 : 2 ≤ m
md : m * m ∣ n
⊢ d ≤ m

tactic: rw [h] at this
state_before: n d : ℕ
h : minSqFac n = some d
m : ℕ
m2 : 2 ≤ m
md : m * m ∣ n
this : MinSqFacProp n (minSqFac n)
⊢ d ≤ m

tactic: have fd := minFac_dvd m
state_before: n d : ℕ
h : minSqFac n = some d
m : ℕ
m2 : 2 ≤ m
md : m * m ∣ n
this : MinSqFacProp n (some d)
⊢ d ≤ m

tactic: exact
  le_trans (this.2.2 _ (minFac_prime <| ne_of_gt m2) (dvd_trans (mul_dvd_mul fd fd) md))
    (minFac_le <| lt_of_lt_of_le (by decide) m2)
state_before: n d : ℕ
h : minSqFac n = some d
m : ℕ
m2 : 2 ≤ m
md : m * m ∣ n
this : MinSqFacProp n (some d)
fd : minFac m ∣ m
⊢ d ≤ m

tactic: decide
state_before: n d : ℕ
h : minSqFac n = some d
m : ℕ
m2 : 2 ≤ m
md : m * m ∣ n
this : MinSqFacProp n (some d)
fd : minFac m ∣ m
⊢ 0 < 2
Theorem: Mathlib.Tactic.Ring.natCast_mul
File: Mathlib/Tactic/Ring/Basic.lean

tactic: subst_vars
state_before: u : Lean.Level
R : Type u_1
α : Q(Type u)
sα : Q(CommSemiring «$α»)
inst✝ : CommSemiring R
a₁ : ℕ
b₁ : R
a₃ : ℕ
b₃ : R
a₂ : ℕ
x✝¹ : ↑a₁ = b₁
x✝ : ↑a₃ = b₃
⊢ ↑(a₁ ^ a₂ * a₃) = b₁ ^ a₂ * b₃

tactic: simp
state_before: u : Lean.Level
R : Type u_1
α : Q(Type u)
sα : Q(CommSemiring «$α»)
inst✝ : CommSemiring R
a₁ a₃ a₂ : ℕ
⊢ ↑(a₁ ^ a₂ * a₃) = ↑a₁ ^ a₂ * ↑a₃
Theorem: Set.preimage_sub_const_Icc
File: Mathlib/Data/Set/Pointwise/Interval.lean

tactic: simp [sub_eq_add_neg]
state_before: α : Type u_1
inst✝ : OrderedAddCommGroup α
a b c : α
⊢ (fun x => x - a) ⁻¹' Icc b c = Icc (b + a) (c + a)
Theorem: Computation.parallel_congr_left
File: Mathlib/Data/Seq/Parallel.lean

tactic: have aa := parallel_promises h1 h
state_before: α : Type u
β : Type v
S T : WSeq (Computation α)
a : α
h1 : ∀ (s : Computation α), s ∈ S → s ~> a
H : WSeq.LiftRel Equiv S T
h2 : ∀ (t : Computation α), t ∈ T → t ~> a := Iff.mp (parallel_congr_lem H) h1
a' : α
h : a' ∈ parallel S
⊢ a' ∈ parallel T

tactic: rw [← aa]
state_before: α : Type u
β : Type v
S T : WSeq (Computation α)
a : α
h1 : ∀ (s : Computation α), s ∈ S → s ~> a
H : WSeq.LiftRel Equiv S T
h2 : ∀ (t : Computation α), t ∈ T → t ~> a := Iff.mp (parallel_congr_lem H) h1
a' : α
h : a' ∈ parallel S
aa : a = a'
⊢ a' ∈ parallel T

tactic: rw [← aa] at h
state_before: α : Type u
β : Type v
S T : WSeq (Computation α)
a : α
h1 : ∀ (s : Computation α), s ∈ S → s ~> a
H : WSeq.LiftRel Equiv S T
h2 : ∀ (t : Computation α), t ∈ T → t ~> a := Iff.mp (parallel_congr_lem H) h1
a' : α
h : a' ∈ parallel S
aa : a = a'
⊢ a ∈ parallel T

tactic: exact
  let ⟨s, sS, as⟩ := exists_of_mem_parallel h
  let ⟨t, tT, st⟩ := WSeq.exists_of_liftRel_left H sS
  let aT := (st _).1 as
  mem_parallel h2 tT aT
state_before: α : Type u
β : Type v
S T : WSeq (Computation α)
a : α
h1 : ∀ (s : Computation α), s ∈ S → s ~> a
H : WSeq.LiftRel Equiv S T
h2 : ∀ (t : Computation α), t ∈ T → t ~> a := Iff.mp (parallel_congr_lem H) h1
a' : α
h : a ∈ parallel S
aa : a = a'
⊢ a ∈ parallel T

tactic: have aa := parallel_promises h2 h
state_before: α : Type u
β : Type v
S T : WSeq (Computation α)
a : α
h1 : ∀ (s : Computation α), s ∈ S → s ~> a
H : WSeq.LiftRel Equiv S T
h2 : ∀ (t : Computation α), t ∈ T → t ~> a := Iff.mp (parallel_congr_lem H) h1
a' : α
h : a' ∈ parallel T
⊢ a' ∈ parallel S

tactic: rw [← aa]
state_before: α : Type u
β : Type v
S T : WSeq (Computation α)
a : α
h1 : ∀ (s : Computation α), s ∈ S → s ~> a
H : WSeq.LiftRel Equiv S T
h2 : ∀ (t : Computation α), t ∈ T → t ~> a := Iff.mp (parallel_congr_lem H) h1
a' : α
h : a' ∈ parallel T
aa : a = a'
⊢ a' ∈ parallel S

tactic: rw [← aa] at h
state_before: α : Type u
β : Type v
S T : WSeq (Computation α)
a : α
h1 : ∀ (s : Computation α), s ∈ S → s ~> a
H : WSeq.LiftRel Equiv S T
h2 : ∀ (t : Computation α), t ∈ T → t ~> a := Iff.mp (parallel_congr_lem H) h1
a' : α
h : a' ∈ parallel T
aa : a = a'
⊢ a ∈ parallel S

tactic: exact
  let ⟨s, sS, as⟩ := exists_of_mem_parallel h
  let ⟨t, tT, st⟩ := WSeq.exists_of_liftRel_right H sS
  let aT := (st _).2 as
  mem_parallel h1 tT aT
state_before: α : Type u
β : Type v
S T : WSeq (Computation α)
a : α
h1 : ∀ (s : Computation α), s ∈ S → s ~> a
H : WSeq.LiftRel Equiv S T
h2 : ∀ (t : Computation α), t ∈ T → t ~> a := Iff.mp (parallel_congr_lem H) h1
a' : α
h : a ∈ parallel T
aa : a = a'
⊢ a ∈ parallel S
Theorem: HasStrictDerivAt.clog
File: Mathlib/Analysis/SpecialFunctions/Complex/LogDeriv.lean

tactic: rw [div_eq_inv_mul]
state_before: α : Type ?u.25238
inst✝² : TopologicalSpace α
E : Type ?u.25244
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℂ E
f : ℂ → ℂ
f' x : ℂ
h₁ : HasStrictDerivAt f f' x
h₂ : 0 < (f x).re ∨ (f x).im ≠ 0
⊢ HasStrictDerivAt (fun t => log (f t)) (f' / f x) x

tactic: exact (hasStrictDerivAt_log h₂).comp x h₁
state_before: α : Type ?u.25238
inst✝² : TopologicalSpace α
E : Type ?u.25244
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace ℂ E
f : ℂ → ℂ
f' x : ℂ
h₁ : HasStrictDerivAt f f' x
h₂ : 0 < (f x).re ∨ (f x).im ≠ 0
⊢ HasStrictDerivAt (fun t => log (f t)) ((f x)⁻¹ * f') x
Theorem: neg_smul_neg
File: Mathlib/Algebra/Module/Basic.lean

tactic: rw [neg_smul, smul_neg, neg_neg]
state_before: α : Type ?u.102675
R : Type u_2
k : Type ?u.102681
S : Type ?u.102684
M : Type u_1
M₂ : Type ?u.102690
M₃ : Type ?u.102693
ι : Type ?u.102696
inst✝² : Ring R
inst✝¹ : AddCommGroup M
inst✝ : Module R M
r s : R
x y : M
⊢ -r • -x = r • x
Theorem: ProjectiveSpectrum.union_zeroLocus
File: Mathlib/AlgebraicGeometry/ProjectiveSpectrum/Topology.lean

tactic: rw [zeroLocus_inf]
state_before: R : Type u_2
A : Type u_1
inst✝³ : CommSemiring R
inst✝² : CommRing A
inst✝¹ : Algebra R A
𝒜 : ℕ → Submodule R A
inst✝ : GradedAlgebra 𝒜
s s' : Set A
⊢ zeroLocus 𝒜 s ∪ zeroLocus 𝒜 s' = zeroLocus 𝒜 ↑(Ideal.span s ⊓ Ideal.span s')

tactic: simp
state_before: R : Type u_2
A : Type u_1
inst✝³ : CommSemiring R
inst✝² : CommRing A
inst✝¹ : Algebra R A
𝒜 : ℕ → Submodule R A
inst✝ : GradedAlgebra 𝒜
s s' : Set A
⊢ zeroLocus 𝒜 s ∪ zeroLocus 𝒜 s' = zeroLocus 𝒜 ↑(Ideal.span s) ∪ zeroLocus 𝒜 ↑(Ideal.span s')
Theorem: Submonoid.mem_iInf
File: Mathlib/GroupTheory/Submonoid/Basic.lean

tactic: simp only [iInf, mem_sInf, Set.forall_range_iff]
state_before: M : Type u_2
N : Type ?u.15367
A : Type ?u.15370
inst✝¹ : MulOneClass M
s : Set M
inst✝ : AddZeroClass A
t : Set A
S✝ : Submonoid M
ι : Sort u_1
S : ι → Submonoid M
x : M
⊢ (x ∈ ⨅ (i : ι), S i) ↔ ∀ (i : ι), x ∈ S i