tasksource/leandojo huggingface dataset:
Theorem: LinearIsometryEquiv.range_eq_univ
File: Mathlib/Analysis/NormedSpace/LinearIsometry.lean

tactic: rw [← coe_toIsometryEquiv]
state_before: R : Type u_1
R₂ : Type u_2
R₃ : Type ?u.1303609
R₄ : Type ?u.1303612
E : Type u_3
E₂ : Type u_4
E₃ : Type ?u.1303621
E₄ : Type ?u.1303624
F : Type ?u.1303627
𝓕 : Type ?u.1303630
inst✝³³ : Semiring R
inst✝³² : Semiring R₂
inst✝³¹ : Semiring R₃
inst✝³⁰ : Semiring R₄
σ₁₂ : R →+* R₂
σ₂₁ : R₂ →+* R
σ₁₃ : R →+* R₃
σ₃₁ : R₃ →+* R
σ₁₄ : R →+* R₄
σ₄₁ : R₄ →+* R
σ₂₃ : R₂ →+* R₃
σ₃₂ : R₃ →+* R₂
σ₂₄ : R₂ →+* R₄
σ₄₂ : R₄ →+* R₂
σ₃₄ : R₃ →+* R₄
σ₄₃ : R₄ →+* R₃
inst✝²⁹ : RingHomInvPair σ₁₂ σ₂₁
inst✝²⁸ : RingHomInvPair σ₂₁ σ₁₂
inst✝²⁷ : RingHomInvPair σ₁₃ σ₃₁
inst✝²⁶ : RingHomInvPair σ₃₁ σ₁₃
inst✝²⁵ : RingHomInvPair σ₂₃ σ₃₂
inst✝²⁴ : RingHomInvPair σ₃₂ σ₂₃
inst✝²³ : RingHomInvPair σ₁₄ σ₄₁
inst✝²² : RingHomInvPair σ₄₁ σ₁₄
inst✝²¹ : RingHomInvPair σ₂₄ σ₄₂
inst✝²⁰ : RingHomInvPair σ₄₂ σ₂₄
inst✝¹⁹ : RingHomInvPair σ₃₄ σ₄₃
inst✝¹⁸ : RingHomInvPair σ₄₃ σ₃₄
inst✝¹⁷ : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
inst✝¹⁶ : RingHomCompTriple σ₁₂ σ₂₄ σ₁₄
inst✝¹⁵ : RingHomCompTriple σ₂₃ σ₃₄ σ₂₄
inst✝¹⁴ : RingHomCompTriple σ₁₃ σ₃₄ σ₁₄
inst✝¹³ : RingHomCompTriple σ₃₂ σ₂₁ σ₃₁
inst✝¹² : RingHomCompTriple σ₄₂ σ₂₁ σ₄₁
inst✝¹¹ : RingHomCompTriple σ₄₃ σ₃₂ σ₄₂
inst✝¹⁰ : RingHomCompTriple σ₄₃ σ₃₁ σ₄₁
inst✝⁹ : SeminormedAddCommGroup E
inst✝⁸ : SeminormedAddCommGroup E₂
inst✝⁷ : SeminormedAddCommGroup E₃
inst✝⁶ : SeminormedAddCommGroup E₄
inst✝⁵ : Module R E
inst✝⁴ : Module R₂ E₂
inst✝³ : Module R₃ E₃
inst✝² : Module R₄ E₄
inst✝¹ : NormedAddCommGroup F
inst✝ : Module R F
e✝ e : E ≃ₛₗᵢ[σ₁₂] E₂
⊢ range ↑e = univ

tactic: exact IsometryEquiv.range_eq_univ _
state_before: R : Type u_1
R₂ : Type u_2
R₃ : Type ?u.1303609
R₄ : Type ?u.1303612
E : Type u_3
E₂ : Type u_4
E₃ : Type ?u.1303621
E₄ : Type ?u.1303624
F : Type ?u.1303627
𝓕 : Type ?u.1303630
inst✝³³ : Semiring R
inst✝³² : Semiring R₂
inst✝³¹ : Semiring R₃
inst✝³⁰ : Semiring R₄
σ₁₂ : R →+* R₂
σ₂₁ : R₂ →+* R
σ₁₃ : R →+* R₃
σ₃₁ : R₃ →+* R
σ₁₄ : R →+* R₄
σ₄₁ : R₄ →+* R
σ₂₃ : R₂ →+* R₃
σ₃₂ : R₃ →+* R₂
σ₂₄ : R₂ →+* R₄
σ₄₂ : R₄ →+* R₂
σ₃₄ : R₃ →+* R₄
σ₄₃ : R₄ →+* R₃
inst✝²⁹ : RingHomInvPair σ₁₂ σ₂₁
inst✝²⁸ : RingHomInvPair σ₂₁ σ₁₂
inst✝²⁷ : RingHomInvPair σ₁₃ σ₃₁
inst✝²⁶ : RingHomInvPair σ₃₁ σ₁₃
inst✝²⁵ : RingHomInvPair σ₂₃ σ₃₂
inst✝²⁴ : RingHomInvPair σ₃₂ σ₂₃
inst✝²³ : RingHomInvPair σ₁₄ σ₄₁
inst✝²² : RingHomInvPair σ₄₁ σ₁₄
inst✝²¹ : RingHomInvPair σ₂₄ σ₄₂
inst✝²⁰ : RingHomInvPair σ₄₂ σ₂₄
inst✝¹⁹ : RingHomInvPair σ₃₄ σ₄₃
inst✝¹⁸ : RingHomInvPair σ₄₃ σ₃₄
inst✝¹⁷ : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
inst✝¹⁶ : RingHomCompTriple σ₁₂ σ₂₄ σ₁₄
inst✝¹⁵ : RingHomCompTriple σ₂₃ σ₃₄ σ₂₄
inst✝¹⁴ : RingHomCompTriple σ₁₃ σ₃₄ σ₁₄
inst✝¹³ : RingHomCompTriple σ₃₂ σ₂₁ σ₃₁
inst✝¹² : RingHomCompTriple σ₄₂ σ₂₁ σ₄₁
inst✝¹¹ : RingHomCompTriple σ₄₃ σ₃₂ σ₄₂
inst✝¹⁰ : RingHomCompTriple σ₄₃ σ₃₁ σ₄₁
inst✝⁹ : SeminormedAddCommGroup E
inst✝⁸ : SeminormedAddCommGroup E₂
inst✝⁷ : SeminormedAddCommGroup E₃
inst✝⁶ : SeminormedAddCommGroup E₄
inst✝⁵ : Module R E
inst✝⁴ : Module R₂ E₂
inst✝³ : Module R₃ E₃
inst✝² : Module R₄ E₄
inst✝¹ : NormedAddCommGroup F
inst✝ : Module R F
e✝ e : E ≃ₛₗᵢ[σ₁₂] E₂
⊢ range ↑(toIsometryEquiv e) = univ
Theorem: SimpleGraph.maxDegree_le_of_forall_degree_le
File: Mathlib/Combinatorics/SimpleGraph/Basic.lean

tactic: by_cases hV : (univ : Finset V).Nonempty
state_before: ι : Sort ?u.294725
𝕜 : Type ?u.294728
V : Type u
W : Type v
X : Type w
G : SimpleGraph V
G' : SimpleGraph W
a b c u v w : V
e : Sym2 V
inst✝¹ : Fintype V
inst✝ : DecidableRel G.Adj
k : ℕ
h : ∀ (v : V), degree G v ≤ k
⊢ maxDegree G ≤ k

tactic: haveI : Nonempty V := univ_nonempty_iff.mp hV
state_before: case pos
ι : Sort ?u.294725
𝕜 : Type ?u.294728
V : Type u
W : Type v
X : Type w
G : SimpleGraph V
G' : SimpleGraph W
a b c u v w : V
e : Sym2 V
inst✝¹ : Fintype V
inst✝ : DecidableRel G.Adj
k : ℕ
h : ∀ (v : V), degree G v ≤ k
hV : Finset.Nonempty univ
⊢ maxDegree G ≤ k

tactic: obtain ⟨v, hv⟩ := G.exists_maximal_degree_vertex
state_before: case pos
ι : Sort ?u.294725
𝕜 : Type ?u.294728
V : Type u
W : Type v
X : Type w
G : SimpleGraph V
G' : SimpleGraph W
a b c u v w : V
e : Sym2 V
inst✝¹ : Fintype V
inst✝ : DecidableRel G.Adj
k : ℕ
h : ∀ (v : V), degree G v ≤ k
hV : Finset.Nonempty univ
this : Nonempty V
⊢ maxDegree G ≤ k

tactic: rw [hv]
state_before: case pos.intro
ι : Sort ?u.294725
𝕜 : Type ?u.294728
V : Type u
W : Type v
X : Type w
G : SimpleGraph V
G' : SimpleGraph W
a b c u v✝ w : V
e : Sym2 V
inst✝¹ : Fintype V
inst✝ : DecidableRel G.Adj
k : ℕ
h : ∀ (v : V), degree G v ≤ k
hV : Finset.Nonempty univ
this : Nonempty V
v : V
hv : maxDegree G = degree G v
⊢ maxDegree G ≤ k

tactic: apply h
state_before: case pos.intro
ι : Sort ?u.294725
𝕜 : Type ?u.294728
V : Type u
W : Type v
X : Type w
G : SimpleGraph V
G' : SimpleGraph W
a b c u v✝ w : V
e : Sym2 V
inst✝¹ : Fintype V
inst✝ : DecidableRel G.Adj
k : ℕ
h : ∀ (v : V), degree G v ≤ k
hV : Finset.Nonempty univ
this : Nonempty V
v : V
hv : maxDegree G = degree G v
⊢ degree G v ≤ k

tactic: rw [not_nonempty_iff_eq_empty] at hV
state_before: case neg
ι : Sort ?u.294725
𝕜 : Type ?u.294728
V : Type u
W : Type v
X : Type w
G : SimpleGraph V
G' : SimpleGraph W
a b c u v w : V
e : Sym2 V
inst✝¹ : Fintype V
inst✝ : DecidableRel G.Adj
k : ℕ
h : ∀ (v : V), degree G v ≤ k
hV : ¬Finset.Nonempty univ
⊢ maxDegree G ≤ k

tactic: rw [maxDegree, hV, image_empty]
state_before: case neg
ι : Sort ?u.294725
𝕜 : Type ?u.294728
V : Type u
W : Type v
X : Type w
G : SimpleGraph V
G' : SimpleGraph W
a b c u v w : V
e : Sym2 V
inst✝¹ : Fintype V
inst✝ : DecidableRel G.Adj
k : ℕ
h : ∀ (v : V), degree G v ≤ k
hV : univ = ∅
⊢ maxDegree G ≤ k

tactic: exact zero_le k
state_before: case neg
ι : Sort ?u.294725
𝕜 : Type ?u.294728
V : Type u
W : Type v
X : Type w
G : SimpleGraph V
G' : SimpleGraph W
a b c u v w : V
e : Sym2 V
inst✝¹ : Fintype V
inst✝ : DecidableRel G.Adj
k : ℕ
h : ∀ (v : V), degree G v ≤ k
hV : univ = ∅
⊢ Option.getD (Finset.max ∅) 0 ≤ k
Theorem: Subgroup.pow_index_mem
File: Mathlib/GroupTheory/OrderOfElement.lean

tactic: rw [← eq_one_iff, QuotientGroup.mk_pow H, index, pow_card_eq_one']
state_before: G✝ : Type u
A : Type v
x y : G✝
a b : A
n m : ℕ
inst✝⁴ : Group G✝
inst✝³ : AddGroup A
inst✝² : Fintype G✝
G : Type u_1
inst✝¹ : Group G
H : Subgroup G
inst✝ : Normal H
g : G
⊢ g ^ index H ∈ H
Theorem: Rat.cast_coe_int
File: Mathlib/Data/Rat/Cast.lean

tactic: rw [Nat.cast_one, div_one]
state_before: F : Type ?u.29
ι : Type ?u.32
α : Type u_1
β : Type ?u.38
inst✝ : DivisionRing α
n : ℤ
⊢ ↑n / ↑1 = ↑n
Theorem: CategoryTheory.NatTrans.congr_app
File: Mathlib/CategoryTheory/Functor/Category.lean

tactic: rw [h]
state_before: C : Type u₁
inst✝² : Category C
D : Type u₂
inst✝¹ : Category D
E : Type u₃
inst✝ : Category E
F G H I : C ⥤ D
α β : F ⟶ G
h : α = β
X : C
⊢ α.app X = β.app X
Theorem: Finset.image₂_mk_eq_product
File: Mathlib/Data/Finset/NAry.lean

tactic: ext
state_before: α : Type u_1
α' : Type ?u.62414
β : Type u_2
β' : Type ?u.62420
γ : Type ?u.62423
γ' : Type ?u.62426
δ : Type ?u.62429
δ' : Type ?u.62432
ε : Type ?u.62435
ε' : Type ?u.62438
ζ : Type ?u.62441
ζ' : Type ?u.62444
ν : Type ?u.62447
inst✝⁹ : DecidableEq α'
inst✝⁸ : DecidableEq β'
inst✝⁷ : DecidableEq γ
inst✝⁶ : DecidableEq γ'
inst✝⁵ : DecidableEq δ
inst✝⁴ : DecidableEq δ'
inst✝³ : DecidableEq ε
inst✝² : DecidableEq ε'
f f' : α → β → γ
g g' : α → β → γ → δ
s✝ s' : Finset α
t✝ t' : Finset β
u u' : Finset γ
a a' : α
b b' : β
c : γ
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
s : Finset α
t : Finset β
⊢ image₂ Prod.mk s t = s ×ˢ t

tactic: simp [Prod.ext_iff]
state_before: case a
α : Type u_1
α' : Type ?u.62414
β : Type u_2
β' : Type ?u.62420
γ : Type ?u.62423
γ' : Type ?u.62426
δ : Type ?u.62429
δ' : Type ?u.62432
ε : Type ?u.62435
ε' : Type ?u.62438
ζ : Type ?u.62441
ζ' : Type ?u.62444
ν : Type ?u.62447
inst✝⁹ : DecidableEq α'
inst✝⁸ : DecidableEq β'
inst✝⁷ : DecidableEq γ
inst✝⁶ : DecidableEq γ'
inst✝⁵ : DecidableEq δ
inst✝⁴ : DecidableEq δ'
inst✝³ : DecidableEq ε
inst✝² : DecidableEq ε'
f f' : α → β → γ
g g' : α → β → γ → δ
s✝ s' : Finset α
t✝ t' : Finset β
u u' : Finset γ
a a' : α
b b' : β
c : γ
inst✝¹ : DecidableEq α
inst✝ : DecidableEq β
s : Finset α
t : Finset β
a✝ : α × β
⊢ a✝ ∈ image₂ Prod.mk s t ↔ a✝ ∈ s ×ˢ t
Theorem: Polynomial.dickson_two
File: Mathlib/RingTheory/Polynomial/Dickson.lean

tactic: simp only [dickson, sq]
state_before: R : Type u_1
S : Type ?u.23113
inst✝¹ : CommRing R
inst✝ : CommRing S
k : ℕ
a : R
⊢ dickson k a 2 = X ^ 2 - ↑C a * (3 - ↑k)
Theorem: finprod_one
File: Mathlib/Algebra/BigOperators/Finprod.lean

tactic: have : (mulSupport fun x : PLift α => (fun _ => 1 : α → M) x.down) ⊆ (∅ : Finset (PLift α)) :=
  fun x h => by simp at h
state_before: G : Type ?u.30331
M : Type u_1
N : Type ?u.30337
α : Sort u_2
β : Sort ?u.30343
ι : Sort ?u.30346
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
⊢ (∏ᶠ (x : α), 1) = 1

tactic: rw [finprod_eq_prod_pLift_of_mulSupport_subset this, Finset.prod_empty]
state_before: G : Type ?u.30331
M : Type u_1
N : Type ?u.30337
α : Sort u_2
β : Sort ?u.30343
ι : Sort ?u.30346
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
this : (mulSupport fun x => (fun x => 1) x.down) ⊆ ↑∅
⊢ (∏ᶠ (x : α), 1) = 1

tactic: simp at h
state_before: G : Type ?u.30331
M : Type u_1
N : Type ?u.30337
α : Sort u_2
β : Sort ?u.30343
ι : Sort ?u.30346
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
x : PLift α
h : x ∈ mulSupport fun x => (fun x => 1) x.down
⊢ x ∈ ↑∅
Theorem: Finset.image_toFinset
File: Mathlib/Data/Finset/Image.lean

tactic: simp only [mem_image, Multiset.mem_toFinset, exists_prop, Multiset.mem_map]
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.75968
inst✝¹ : DecidableEq β
f g : α → β
s✝ : Finset α
t : Finset β
a : α
b c : β
inst✝ : DecidableEq α
s : Multiset α
x✝ : β
⊢ x✝ ∈ image f (toFinset s) ↔ x✝ ∈ toFinset (Multiset.map f s)
Theorem: LinearMap.compl₂_id
File: Mathlib/LinearAlgebra/BilinearMap.lean

tactic: ext
state_before: R : Type u_4
inst✝²³ : CommSemiring R
R₂ : Type u_6
inst✝²² : CommSemiring R₂
R₃ : Type u_5
inst✝²¹ : CommSemiring R₃
R₄ : Type ?u.460205
inst✝²⁰ : CommSemiring R₄
M : Type u_1
N : Type u_2
P : Type u_3
Q : Type ?u.460220
Mₗ : Type ?u.460223
Nₗ : Type ?u.460226
Pₗ : Type ?u.460229
Qₗ : Type ?u.460232
Qₗ' : Type ?u.460235
inst✝¹⁹ : AddCommMonoid M
inst✝¹⁸ : AddCommMonoid N
inst✝¹⁷ : AddCommMonoid P
inst✝¹⁶ : AddCommMonoid Q
inst✝¹⁵ : AddCommMonoid Mₗ
inst✝¹⁴ : AddCommMonoid Nₗ
inst✝¹³ : AddCommMonoid Pₗ
inst✝¹² : AddCommMonoid Qₗ
inst✝¹¹ : AddCommMonoid Qₗ'
inst✝¹⁰ : Module R M
inst✝⁹ : Module R₂ N
inst✝⁸ : Module R₃ P
inst✝⁷ : Module R₄ Q
inst✝⁶ : Module R Mₗ
inst✝⁵ : Module R Nₗ
inst✝⁴ : Module R Pₗ
inst✝³ : Module R Qₗ
inst✝² : Module R Qₗ'
σ₁₂ : R →+* R₂
σ₂₃ : R₂ →+* R₃
σ₁₃ : R →+* R₃
σ₄₂ : R₄ →+* R₂
σ₄₃ : R₄ →+* R₃
inst✝¹ : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
inst✝ : RingHomCompTriple σ₄₂ σ₂₃ σ₄₃
f : M →ₛₗ[σ₁₃] N →ₛₗ[σ₂₃] P
⊢ compl₂ f id = f

tactic: rw [compl₂_apply, id_coe, id.def]
state_before: case h.h
R : Type u_4
inst✝²³ : CommSemiring R
R₂ : Type u_6
inst✝²² : CommSemiring R₂
R₃ : Type u_5
inst✝²¹ : CommSemiring R₃
R₄ : Type ?u.460205
inst✝²⁰ : CommSemiring R₄
M : Type u_1
N : Type u_2
P : Type u_3
Q : Type ?u.460220
Mₗ : Type ?u.460223
Nₗ : Type ?u.460226
Pₗ : Type ?u.460229
Qₗ : Type ?u.460232
Qₗ' : Type ?u.460235
inst✝¹⁹ : AddCommMonoid M
inst✝¹⁸ : AddCommMonoid N
inst✝¹⁷ : AddCommMonoid P
inst✝¹⁶ : AddCommMonoid Q
inst✝¹⁵ : AddCommMonoid Mₗ
inst✝¹⁴ : AddCommMonoid Nₗ
inst✝¹³ : AddCommMonoid Pₗ
inst✝¹² : AddCommMonoid Qₗ
inst✝¹¹ : AddCommMonoid Qₗ'
inst✝¹⁰ : Module R M
inst✝⁹ : Module R₂ N
inst✝⁸ : Module R₃ P
inst✝⁷ : Module R₄ Q
inst✝⁶ : Module R Mₗ
inst✝⁵ : Module R Nₗ
inst✝⁴ : Module R Pₗ
inst✝³ : Module R Qₗ
inst✝² : Module R Qₗ'
σ₁₂ : R →+* R₂
σ₂₃ : R₂ →+* R₃
σ₁₃ : R →+* R₃
σ₄₂ : R₄ →+* R₂
σ₄₃ : R₄ →+* R₃
inst✝¹ : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
inst✝ : RingHomCompTriple σ₄₂ σ₂₃ σ₄₃
f : M →ₛₗ[σ₁₃] N →ₛₗ[σ₂₃] P
x✝¹ : M
x✝ : N
⊢ ↑(↑(compl₂ f id) x✝¹) x✝ = ↑(↑f x✝¹) x✝
Theorem: Set.ite_inter_of_inter_eq
File: Mathlib/Data/Set/Basic.lean

tactic: rw [← ite_inter, ← h, ite_same]
state_before: α : Type u
β : Type v
γ : Type w
ι : Sort x
a b : α
s✝ s₁✝ s₂✝ t✝ t₁ t₂ u t s₁ s₂ s : Set α
h : s₁ ∩ s = s₂ ∩ s
⊢ Set.ite t s₁ s₂ ∩ s = s₁ ∩ s
Theorem: selfAdjointPart_comp_subtype_skewAdjoint
File: Mathlib/Algebra/Star/Module.lean

tactic: simp [hx]
state_before: R : Type u_2
A : Type u_1
inst✝⁷ : Semiring R
inst✝⁶ : StarSemigroup R
inst✝⁵ : TrivialStar R
inst✝⁴ : AddCommGroup A
inst✝³ : Module R A
inst✝² : StarAddMonoid A
inst✝¹ : StarModule R A
inst✝ : Invertible 2
x✝ : { x // x ∈ skewAdjoint.submodule R A }
x : A
hx : star x = -x
⊢ ↑(↑(LinearMap.comp (selfAdjointPart R) (Submodule.subtype (skewAdjoint.submodule R A)))
        { val := x, property := hx }) =
    ↑(↑0 { val := x, property := hx })
Theorem: IsROrC.abs_re_le_norm
File: Mathlib/Data/IsROrC/Basic.lean

tactic: rw [mul_self_le_mul_self_iff (abs_nonneg _) (norm_nonneg _), abs_mul_abs_self, mul_self_norm]
state_before: K : Type u_1
E : Type ?u.6600797
inst✝ : IsROrC K
z : K
⊢ abs (↑re z) ≤ ‖z‖

tactic: apply re_sq_le_normSq
state_before: K : Type u_1
E : Type ?u.6600797
inst✝ : IsROrC K
z : K
⊢ ↑re z * ↑re z ≤ ↑normSq z
Theorem: Function.IsPeriodicPt.left_of_comp
File: Mathlib/Dynamics/PeriodicPts.lean

tactic: rw [IsPeriodicPt, hco.comp_iterate] at hfg
state_before: α : Type u_1
β : Type ?u.3348
f fa : α → α
fb : β → β
x y : α
m n : ℕ
g : α → α
hco : Commute f g
hfg : IsPeriodicPt (f ∘ g) n x
hg : IsPeriodicPt g n x
⊢ IsPeriodicPt f n x

tactic: exact hfg.left_of_comp hg
state_before: α : Type u_1
β : Type ?u.3348
f fa : α → α
fb : β → β
x y : α
m n : ℕ
g : α → α
hco : Commute f g
hfg : IsFixedPt (f^[n] ∘ g^[n]) x
hg : IsPeriodicPt g n x
⊢ IsPeriodicPt f n x
Theorem: Ordinal.card_eq_nat
File: Mathlib/SetTheory/Ordinal/Basic.lean

tactic: simp only [le_antisymm_iff, card_le_nat, nat_le_card]
state_before: α : Type ?u.239463
β : Type ?u.239466
γ : Type ?u.239469
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
o : Ordinal
n : ℕ
⊢ card o = ↑n ↔ o = ↑n
Theorem: Sigma.isPreconnected_iff
File: Mathlib/Topology/Connected.lean

tactic: refine' ⟨fun hs => _, _⟩
state_before: α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
s✝ t u v : Set α
hι : Nonempty ι
inst✝ : (i : ι) → TopologicalSpace (π i)
s : Set ((i : ι) × π i)
⊢ IsPreconnected s ↔ ∃ i t, IsPreconnected t ∧ s = mk i '' t

tactic: obtain rfl | h := s.eq_empty_or_nonempty
state_before: case refine'_1
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
s✝ t u v : Set α
hι : Nonempty ι
inst✝ : (i : ι) → TopologicalSpace (π i)
s : Set ((i : ι) × π i)
hs : IsPreconnected s
⊢ ∃ i t, IsPreconnected t ∧ s = mk i '' t

tactic: exact ⟨Classical.choice hι, ∅, isPreconnected_empty, (Set.image_empty _).symm⟩
state_before: case refine'_1.inl
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
s t u v : Set α
hι : Nonempty ι
inst✝ : (i : ι) → TopologicalSpace (π i)
hs : IsPreconnected ∅
⊢ ∃ i t, IsPreconnected t ∧ ∅ = mk i '' t

tactic: obtain ⟨a, t, ht, rfl⟩ := Sigma.isConnected_iff.1 ⟨h, hs⟩
state_before: case refine'_1.inr
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
s✝ t u v : Set α
hι : Nonempty ι
inst✝ : (i : ι) → TopologicalSpace (π i)
s : Set ((i : ι) × π i)
hs : IsPreconnected s
h : Set.Nonempty s
⊢ ∃ i t, IsPreconnected t ∧ s = mk i '' t

tactic: refine' ⟨a, t, ht.isPreconnected, rfl⟩
state_before: case refine'_1.inr.intro.intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
s t✝ u v : Set α
hι : Nonempty ι
inst✝ : (i : ι) → TopologicalSpace (π i)
a : ι
t : Set (π a)
ht : IsConnected t
hs : IsPreconnected (mk a '' t)
h : Set.Nonempty (mk a '' t)
⊢ ∃ i t_1, IsPreconnected t_1 ∧ mk a '' t = mk i '' t_1

tactic: rintro ⟨a, t, ht, rfl⟩
state_before: case refine'_2
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
s✝ t u v : Set α
hι : Nonempty ι
inst✝ : (i : ι) → TopologicalSpace (π i)
s : Set ((i : ι) × π i)
⊢ (∃ i t, IsPreconnected t ∧ s = mk i '' t) → IsPreconnected s

tactic: exact ht.image _ continuous_sigmaMk.continuousOn
state_before: case refine'_2.intro.intro.intro
α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝¹ : TopologicalSpace α
s t✝ u v : Set α
hι : Nonempty ι
inst✝ : (i : ι) → TopologicalSpace (π i)
a : ι
t : Set (π a)
ht : IsPreconnected t
⊢ IsPreconnected (mk a '' t)
Theorem: support_subset_support_matPolyEquiv
File: Mathlib/RingTheory/PolynomialAlgebra.lean

tactic: intro k
state_before: R : Type u_1
A : Type ?u.640013
inst✝⁴ : CommSemiring R
inst✝³ : Semiring A
inst✝² : Algebra R A
n : Type w
inst✝¹ : DecidableEq n
inst✝ : Fintype n
m : Matrix n n R[X]
i j : n
⊢ support (m i j) ⊆ support (↑matPolyEquiv m)

tactic: contrapose
state_before: R : Type u_1
A : Type ?u.640013
inst✝⁴ : CommSemiring R
inst✝³ : Semiring A
inst✝² : Algebra R A
n : Type w
inst✝¹ : DecidableEq n
inst✝ : Fintype n
m : Matrix n n R[X]
i j : n
k : ℕ
⊢ k ∈ support (m i j) → k ∈ support (↑matPolyEquiv m)

tactic: simp only [not_mem_support_iff]
state_before: R : Type u_1
A : Type ?u.640013
inst✝⁴ : CommSemiring R
inst✝³ : Semiring A
inst✝² : Algebra R A
n : Type w
inst✝¹ : DecidableEq n
inst✝ : Fintype n
m : Matrix n n R[X]
i j : n
k : ℕ
⊢ ¬k ∈ support (↑matPolyEquiv m) → ¬k ∈ support (m i j)

tactic: intro hk
state_before: R : Type u_1
A : Type ?u.640013
inst✝⁴ : CommSemiring R
inst✝³ : Semiring A
inst✝² : Algebra R A
n : Type w
inst✝¹ : DecidableEq n
inst✝ : Fintype n
m : Matrix n n R[X]
i j : n
k : ℕ
⊢ coeff (↑matPolyEquiv m) k = 0 → coeff (m i j) k = 0

tactic: rw [← matPolyEquiv_coeff_apply, hk]
state_before: R : Type u_1
A : Type ?u.640013
inst✝⁴ : CommSemiring R
inst✝³ : Semiring A
inst✝² : Algebra R A
n : Type w
inst✝¹ : DecidableEq n
inst✝ : Fintype n
m : Matrix n n R[X]
i j : n
k : ℕ
hk : coeff (↑matPolyEquiv m) k = 0
⊢ coeff (m i j) k = 0

tactic: rfl
state_before: R : Type u_1
A : Type ?u.640013
inst✝⁴ : CommSemiring R
inst✝³ : Semiring A
inst✝² : Algebra R A
n : Type w
inst✝¹ : DecidableEq n
inst✝ : Fintype n
m : Matrix n n R[X]
i j : n
k : ℕ
hk : coeff (↑matPolyEquiv m) k = 0
⊢ OfNat.ofNat 0 i j = 0
Theorem: Polynomial.eq_of_degrees_lt_of_eval_finset_eq
File: Mathlib/LinearAlgebra/Lagrange.lean

tactic: rw [← mem_degreeLT] at degree_f_lt degree_g_lt
state_before: R : Type u_1
inst✝¹ : CommRing R
inst✝ : IsDomain R
f g : R[X]
s : Finset R
degree_f_lt : degree f < ↑(Finset.card s)
degree_g_lt : degree g < ↑(Finset.card s)
eval_fg : ∀ (x : R), x ∈ s → eval x f = eval x g
⊢ f = g

tactic: refine' eq_of_degree_sub_lt_of_eval_finset_eq _ _ eval_fg
state_before: R : Type u_1
inst✝¹ : CommRing R
inst✝ : IsDomain R
f g : R[X]
s : Finset R
degree_f_lt : f ∈ degreeLT R (Finset.card s)
degree_g_lt : g ∈ degreeLT R (Finset.card s)
eval_fg : ∀ (x : R), x ∈ s → eval x f = eval x g
⊢ f = g

tactic: rw [← mem_degreeLT]
state_before: R : Type u_1
inst✝¹ : CommRing R
inst✝ : IsDomain R
f g : R[X]
s : Finset R
degree_f_lt : f ∈ degreeLT R (Finset.card s)
degree_g_lt : g ∈ degreeLT R (Finset.card s)
eval_fg : ∀ (x : R), x ∈ s → eval x f = eval x g
⊢ degree (f - g) < ↑(Finset.card s)

tactic: exact Submodule.sub_mem _ degree_f_lt degree_g_lt
state_before: R : Type u_1
inst✝¹ : CommRing R
inst✝ : IsDomain R
f g : R[X]
s : Finset R
degree_f_lt : f ∈ degreeLT R (Finset.card s)
degree_g_lt : g ∈ degreeLT R (Finset.card s)
eval_fg : ∀ (x : R), x ∈ s → eval x f = eval x g
⊢ f - g ∈ degreeLT R (Finset.card s)
Theorem: CategoryTheory.sum_tensor
File: Mathlib/CategoryTheory/Monoidal/Preadditive.lean

tactic: rw [← tensor_id_comp_id_tensor]
state_before: C : Type u_3
inst✝³ : Category C
inst✝² : Preadditive C
inst✝¹ : MonoidalCategory C
inst✝ : MonoidalPreadditive C
P Q R S : C
J : Type u_1
s : Finset J
f : P ⟶ Q
g : J → (R ⟶ S)
⊢ (∑ j in s, g j) ⊗ f = ∑ j in s, g j ⊗ f

tactic: let tQ := (((tensoringRight C).obj P).mapAddHom : (R ⟶ S) →+ _)
state_before: C : Type u_3
inst✝³ : Category C
inst✝² : Preadditive C
inst✝¹ : MonoidalCategory C
inst✝ : MonoidalPreadditive C
P Q R S : C
J : Type u_1
s : Finset J
f : P ⟶ Q
g : J → (R ⟶ S)
⊢ ((∑ j in s, g j) ⊗ 𝟙 P) ≫ (𝟙 S ⊗ f) = ∑ j in s, g j ⊗ f

tactic: change tQ _ ≫ _ = _
state_before: C : Type u_3
inst✝³ : Category C
inst✝² : Preadditive C
inst✝¹ : MonoidalCategory C
inst✝ : MonoidalPreadditive C
P Q R S : C
J : Type u_1
s : Finset J
f : P ⟶ Q
g : J → (R ⟶ S)
tQ : (R ⟶ S) →+ (((tensoringRight C).obj P).obj R ⟶ ((tensoringRight C).obj P).obj S) :=
  Functor.mapAddHom ((tensoringRight C).obj P)
⊢ ((∑ j in s, g j) ⊗ 𝟙 P) ≫ (𝟙 S ⊗ f) = ∑ j in s, g j ⊗ f

tactic: rw [tQ.map_sum, Preadditive.sum_comp]
state_before: C : Type u_3
inst✝³ : Category C
inst✝² : Preadditive C
inst✝¹ : MonoidalCategory C
inst✝ : MonoidalPreadditive C
P Q R S : C
J : Type u_1
s : Finset J
f : P ⟶ Q
g : J → (R ⟶ S)
tQ : (R ⟶ S) →+ (((tensoringRight C).obj P).obj R ⟶ ((tensoringRight C).obj P).obj S) :=
  Functor.mapAddHom ((tensoringRight C).obj P)
⊢ ↑tQ (∑ j in s, g j) ≫ (𝟙 S ⊗ f) = ∑ j in s, g j ⊗ f

tactic: dsimp [Functor.mapAddHom]
state_before: C : Type u_3
inst✝³ : Category C
inst✝² : Preadditive C
inst✝¹ : MonoidalCategory C
inst✝ : MonoidalPreadditive C
P Q R S : C
J : Type u_1
s : Finset J
f : P ⟶ Q
g : J → (R ⟶ S)
tQ : (R ⟶ S) →+ (((tensoringRight C).obj P).obj R ⟶ ((tensoringRight C).obj P).obj S) :=
  Functor.mapAddHom ((tensoringRight C).obj P)
⊢ ∑ j in s, ↑tQ (g j) ≫ (𝟙 S ⊗ f) = ∑ j in s, g j ⊗ f

tactic: simp only [tensor_id_comp_id_tensor]
state_before: C : Type u_3
inst✝³ : Category C
inst✝² : Preadditive C
inst✝¹ : MonoidalCategory C
inst✝ : MonoidalPreadditive C
P Q R S : C
J : Type u_1
s : Finset J
f : P ⟶ Q
g : J → (R ⟶ S)
tQ : (R ⟶ S) →+ (((tensoringRight C).obj P).obj R ⟶ ((tensoringRight C).obj P).obj S) :=
  Functor.mapAddHom ((tensoringRight C).obj P)
⊢ ∑ j in s, (g j ⊗ 𝟙 P) ≫ (𝟙 S ⊗ f) = ∑ j in s, g j ⊗ f
Theorem: Composition.blocksFun_congr
File: Mathlib/Combinatorics/Composition.lean

tactic: cases hn
state_before: n : ℕ
c : Composition n
n₁ n₂ : ℕ
c₁ : Composition n₁
c₂ : Composition n₂
i₁ : Fin (length c₁)
i₂ : Fin (length c₂)
hn : n₁ = n₂
hc : c₁.blocks = c₂.blocks
hi : ↑i₁ = ↑i₂
⊢ blocksFun c₁ i₁ = blocksFun c₂ i₂

tactic: rw [← Composition.ext_iff] at hc
state_before: case refl
n : ℕ
c : Composition n
n₁ : ℕ
c₁ : Composition n₁
i₁ : Fin (length c₁)
c₂ : Composition n₁
i₂ : Fin (length c₂)
hc : c₁.blocks = c₂.blocks
hi : ↑i₁ = ↑i₂
⊢ blocksFun c₁ i₁ = blocksFun c₂ i₂

tactic: cases hc
state_before: case refl
n : ℕ
c : Composition n
n₁ : ℕ
c₁ : Composition n₁
i₁ : Fin (length c₁)
c₂ : Composition n₁
i₂ : Fin (length c₂)
hc : c₁ = c₂
hi : ↑i₁ = ↑i₂
⊢ blocksFun c₁ i₁ = blocksFun c₂ i₂

tactic: congr
state_before: case refl.refl
n : ℕ
c : Composition n
n₁ : ℕ
c₁ : Composition n₁
i₁ i₂ : Fin (length c₁)
hi : ↑i₁ = ↑i₂
⊢ blocksFun c₁ i₁ = blocksFun c₁ i₂

tactic: rwa [Fin.ext_iff]
state_before: case refl.refl.e_a
n : ℕ
c : Composition n
n₁ : ℕ
c₁ : Composition n₁
i₁ i₂ : Fin (length c₁)
hi : ↑i₁ = ↑i₂
⊢ i₁ = i₂
Theorem: RingQuot.zero_quot
File: Mathlib/Algebra/RingQuot.lean

tactic: rw [zero_def]
state_before: R : Type u₁
inst✝³ : Semiring R
S : Type u₂
inst✝² : CommSemiring S
A : Type u₃
inst✝¹ : Semiring A
inst✝ : Algebra S A
r : R → R → Prop
⊢ { toQuot := Quot.mk (Rel r) 0 } = RingQuot.zero r
Theorem: NonUnitalRingHom.srange_eq_map
File: Mathlib/RingTheory/NonUnitalSubsemiring/Basic.lean

tactic: ext
state_before: R : Type u
S : Type v
T : Type w
inst✝⁴ : NonUnitalNonAssocSemiring R
M : Subsemigroup R
inst✝³ : NonUnitalNonAssocSemiring S
inst✝² : NonUnitalNonAssocSemiring T
F : Type u_1
G : Type ?u.178504
inst✝¹ : NonUnitalRingHomClass F R S
inst✝ : NonUnitalRingHomClass G S T
f : F
g : G
⊢ srange f = map f ⊤

tactic: simp
state_before: case h
R : Type u
S : Type v
T : Type w
inst✝⁴ : NonUnitalNonAssocSemiring R
M : Subsemigroup R
inst✝³ : NonUnitalNonAssocSemiring S
inst✝² : NonUnitalNonAssocSemiring T
F : Type u_1
G : Type ?u.178504
inst✝¹ : NonUnitalRingHomClass F R S
inst✝ : NonUnitalRingHomClass G S T
f : F
g : G
x✝ : S
⊢ x✝ ∈ srange f ↔ x✝ ∈ map f ⊤
Theorem: Real.inv_sqrt_one_add_tan_sq
File: Mathlib/Data/Complex/Exponential.lean

tactic: rw [← sqrt_sq hx.le, ← sqrt_inv, inv_one_add_tan_sq hx.ne']
state_before: x✝ y x : ℝ
hx : 0 < cos x
⊢ (sqrt (1 + tan x ^ 2))⁻¹ = cos x