tasksource/leandojo huggingface dataset:
Theorem: StructureGroupoid.LocalInvariantProp.liftPropOn_of_mem_maximalAtlas
File: Mathlib/Geometry/Manifold/LocalInvariantProperties.lean

tactic: intro x hx
state_before: H : Type u_1
M : Type u_2
H' : Type ?u.55234
M' : Type ?u.55237
X : Type ?u.55240
inst✝⁷ : TopologicalSpace H
inst✝⁶ : TopologicalSpace M
inst✝⁵ : ChartedSpace H M
inst✝⁴ : TopologicalSpace H'
inst✝³ : TopologicalSpace M'
inst✝² : ChartedSpace H' M'
inst✝¹ : TopologicalSpace X
G : StructureGroupoid H
G' : StructureGroupoid H'
e e' : LocalHomeomorph M H
f f' : LocalHomeomorph M' H'
P : (H → H') → Set H → H → Prop
g g' : M → M'
s t : Set M
x : M
Q : (H → H) → Set H → H → Prop
hG✝ : LocalInvariantProp G G' P
inst✝ : HasGroupoid M G
hG : LocalInvariantProp G G Q
hQ : ∀ (y : H), Q id univ y
he : e ∈ maximalAtlas M G
⊢ LiftPropOn Q (↑e) e.source

tactic: apply hG.liftPropWithinAt_of_liftPropAt_of_mem_nhds (hG.liftPropAt_of_mem_maximalAtlas hQ he hx)
state_before: H : Type u_1
M : Type u_2
H' : Type ?u.55234
M' : Type ?u.55237
X : Type ?u.55240
inst✝⁷ : TopologicalSpace H
inst✝⁶ : TopologicalSpace M
inst✝⁵ : ChartedSpace H M
inst✝⁴ : TopologicalSpace H'
inst✝³ : TopologicalSpace M'
inst✝² : ChartedSpace H' M'
inst✝¹ : TopologicalSpace X
G : StructureGroupoid H
G' : StructureGroupoid H'
e e' : LocalHomeomorph M H
f f' : LocalHomeomorph M' H'
P : (H → H') → Set H → H → Prop
g g' : M → M'
s t : Set M
x✝ : M
Q : (H → H) → Set H → H → Prop
hG✝ : LocalInvariantProp G G' P
inst✝ : HasGroupoid M G
hG : LocalInvariantProp G G Q
hQ : ∀ (y : H), Q id univ y
he : e ∈ maximalAtlas M G
x : M
hx : x ∈ e.source
⊢ LiftPropWithinAt Q (↑e) e.source x

tactic: exact IsOpen.mem_nhds e.open_source hx
state_before: H : Type u_1
M : Type u_2
H' : Type ?u.55234
M' : Type ?u.55237
X : Type ?u.55240
inst✝⁷ : TopologicalSpace H
inst✝⁶ : TopologicalSpace M
inst✝⁵ : ChartedSpace H M
inst✝⁴ : TopologicalSpace H'
inst✝³ : TopologicalSpace M'
inst✝² : ChartedSpace H' M'
inst✝¹ : TopologicalSpace X
G : StructureGroupoid H
G' : StructureGroupoid H'
e e' : LocalHomeomorph M H
f f' : LocalHomeomorph M' H'
P : (H → H') → Set H → H → Prop
g g' : M → M'
s t : Set M
x✝ : M
Q : (H → H) → Set H → H → Prop
hG✝ : LocalInvariantProp G G' P
inst✝ : HasGroupoid M G
hG : LocalInvariantProp G G Q
hQ : ∀ (y : H), Q id univ y
he : e ∈ maximalAtlas M G
x : M
hx : x ∈ e.source
⊢ e.source ∈ 𝓝 x
Theorem: Finset.affineCombination_congr
File: Mathlib/LinearAlgebra/AffineSpace/Combination.lean

tactic: simp_rw [affineCombination_apply, s.weightedVSubOfPoint_congr hw hp]
state_before: k : Type u_2
V : Type u_4
P : Type u_3
inst✝² : Ring k
inst✝¹ : AddCommGroup V
inst✝ : Module k V
S : AffineSpace V P
ι : Type u_1
s : Finset ι
ι₂ : Type ?u.251934
s₂ : Finset ι₂
w₁ w₂ : ι → k
hw : ∀ (i : ι), i ∈ s → w₁ i = w₂ i
p₁ p₂ : ι → P
hp : ∀ (i : ι), i ∈ s → p₁ i = p₂ i
⊢ ↑(affineCombination k s p₁) w₁ = ↑(affineCombination k s p₂) w₂
Theorem: SemilinearMapClass.bound_of_shell_semi_normed
File: Mathlib/Analysis/NormedSpace/OperatorNorm.lean

tactic: rcases rescale_to_shell_semi_normed hc ε_pos hx with ⟨δ, hδ, δxle, leδx, _⟩
state_before: 𝕜 : Type u_2
𝕜₂ : Type u_3
𝕜₃ : Type ?u.95729
E : Type u_4
Eₗ : Type ?u.95735
F : Type u_5
Fₗ : Type ?u.95741
G : Type ?u.95744
Gₗ : Type ?u.95747
𝓕 : Type u_1
inst✝¹⁸ : SeminormedAddCommGroup E
inst✝¹⁷ : SeminormedAddCommGroup Eₗ
inst✝¹⁶ : SeminormedAddCommGroup F
inst✝¹⁵ : SeminormedAddCommGroup Fₗ
inst✝¹⁴ : SeminormedAddCommGroup G
inst✝¹³ : SeminormedAddCommGroup Gₗ
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : NontriviallyNormedField 𝕜₂
inst✝¹⁰ : NontriviallyNormedField 𝕜₃
inst✝⁹ : NormedSpace 𝕜 E
inst✝⁸ : NormedSpace 𝕜 Eₗ
inst✝⁷ : NormedSpace 𝕜₂ F
inst✝⁶ : NormedSpace 𝕜 Fₗ
inst✝⁵ : NormedSpace 𝕜₃ G
inst✝⁴ : NormedSpace 𝕜 Gₗ
σ₁₂ : 𝕜 →+* 𝕜₂
σ₂₃ : 𝕜₂ →+* 𝕜₃
σ₁₃ : 𝕜 →+* 𝕜₃
inst✝³ : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
inst✝² : RingHomIsometric σ₁₂
inst✝¹ : RingHomIsometric σ₂₃
inst✝ : SemilinearMapClass 𝓕 σ₁₂ E F
f : 𝓕
ε C : ℝ
ε_pos : 0 < ε
c : 𝕜
hc : 1 < ‖c‖
hf : ∀ (x : E), ε / ‖c‖ ≤ ‖x‖ → ‖x‖ < ε → ‖↑f x‖ ≤ C * ‖x‖
x : E
hx : ‖x‖ ≠ 0
⊢ ‖↑f x‖ ≤ C * ‖x‖

tactic: simpa only [map_smulₛₗ, norm_smul, mul_left_comm C, mul_le_mul_left (norm_pos_iff.2 hδ),
  RingHomIsometric.is_iso] using hf (δ • x) leδx δxle
state_before: case intro.intro.intro.intro
𝕜 : Type u_2
𝕜₂ : Type u_3
𝕜₃ : Type ?u.95729
E : Type u_4
Eₗ : Type ?u.95735
F : Type u_5
Fₗ : Type ?u.95741
G : Type ?u.95744
Gₗ : Type ?u.95747
𝓕 : Type u_1
inst✝¹⁸ : SeminormedAddCommGroup E
inst✝¹⁷ : SeminormedAddCommGroup Eₗ
inst✝¹⁶ : SeminormedAddCommGroup F
inst✝¹⁵ : SeminormedAddCommGroup Fₗ
inst✝¹⁴ : SeminormedAddCommGroup G
inst✝¹³ : SeminormedAddCommGroup Gₗ
inst✝¹² : NontriviallyNormedField 𝕜
inst✝¹¹ : NontriviallyNormedField 𝕜₂
inst✝¹⁰ : NontriviallyNormedField 𝕜₃
inst✝⁹ : NormedSpace 𝕜 E
inst✝⁸ : NormedSpace 𝕜 Eₗ
inst✝⁷ : NormedSpace 𝕜₂ F
inst✝⁶ : NormedSpace 𝕜 Fₗ
inst✝⁵ : NormedSpace 𝕜₃ G
inst✝⁴ : NormedSpace 𝕜 Gₗ
σ₁₂ : 𝕜 →+* 𝕜₂
σ₂₃ : 𝕜₂ →+* 𝕜₃
σ₁₃ : 𝕜 →+* 𝕜₃
inst✝³ : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
inst✝² : RingHomIsometric σ₁₂
inst✝¹ : RingHomIsometric σ₂₃
inst✝ : SemilinearMapClass 𝓕 σ₁₂ E F
f : 𝓕
ε C : ℝ
ε_pos : 0 < ε
c : 𝕜
hc : 1 < ‖c‖
hf : ∀ (x : E), ε / ‖c‖ ≤ ‖x‖ → ‖x‖ < ε → ‖↑f x‖ ≤ C * ‖x‖
x : E
hx : ‖x‖ ≠ 0
δ : 𝕜
hδ : δ ≠ 0
δxle : ‖δ • x‖ < ε
leδx : ε / ‖c‖ ≤ ‖δ • x‖
right✝ : ‖δ‖⁻¹ ≤ ε⁻¹ * ‖c‖ * ‖x‖
⊢ ‖↑f x‖ ≤ C * ‖x‖
Theorem: Filter.cofinite.blimsup_set_eq
File: Mathlib/Order/LiminfLimsup.lean

tactic: simp only [blimsup_eq, le_eq_subset, eventually_cofinite, not_forall, sInf_eq_sInter, exists_prop]
state_before: α : Type u_1
β : Type ?u.177596
γ : Type ?u.177599
ι : Type u_2
p : ι → Prop
s : ι → Set α
⊢ blimsup s cofinite p = {x | Set.Infinite {n | p n ∧ x ∈ s n}}

tactic: ext x
state_before: α : Type u_1
β : Type ?u.177596
γ : Type ?u.177599
ι : Type u_2
p : ι → Prop
s : ι → Set α
⊢ ⋂₀ {a | Set.Finite {x | p x ∧ ¬s x ⊆ a}} = {x | Set.Infinite {n | p n ∧ x ∈ s n}}

tactic: refine' ⟨fun h => _, fun hx t h => _⟩ <;> contrapose! h
state_before: case h
α : Type u_1
β : Type ?u.177596
γ : Type ?u.177599
ι : Type u_2
p : ι → Prop
s : ι → Set α
x : α
⊢ x ∈ ⋂₀ {a | Set.Finite {x | p x ∧ ¬s x ⊆ a}} ↔ x ∈ {x | Set.Infinite {n | p n ∧ x ∈ s n}}

tactic: simp only [mem_sInter, mem_setOf_eq, not_forall, exists_prop]
state_before: case h.refine'_1
α : Type u_1
β : Type ?u.177596
γ : Type ?u.177599
ι : Type u_2
p : ι → Prop
s : ι → Set α
x : α
h : ¬x ∈ {x | Set.Infinite {n | p n ∧ x ∈ s n}}
⊢ ¬x ∈ ⋂₀ {a | Set.Finite {x | p x ∧ ¬s x ⊆ a}}

tactic: exact ⟨{x}ᶜ, by simpa using h, by simp⟩
state_before: case h.refine'_1
α : Type u_1
β : Type ?u.177596
γ : Type ?u.177599
ι : Type u_2
p : ι → Prop
s : ι → Set α
x : α
h : ¬x ∈ {x | Set.Infinite {n | p n ∧ x ∈ s n}}
⊢ ∃ x_1, Set.Finite {x | p x ∧ ¬s x ⊆ x_1} ∧ ¬x ∈ x_1

tactic: simpa using h
state_before: α : Type u_1
β : Type ?u.177596
γ : Type ?u.177599
ι : Type u_2
p : ι → Prop
s : ι → Set α
x : α
h : ¬x ∈ {x | Set.Infinite {n | p n ∧ x ∈ s n}}
⊢ Set.Finite {x_1 | p x_1 ∧ ¬s x_1 ⊆ {x}ᶜ}

tactic: simp
state_before: α : Type u_1
β : Type ?u.177596
γ : Type ?u.177599
ι : Type u_2
p : ι → Prop
s : ι → Set α
x : α
h : ¬x ∈ {x | Set.Infinite {n | p n ∧ x ∈ s n}}
⊢ ¬x ∈ {x}ᶜ

tactic: exact hx.mono fun i hi => ⟨hi.1, fun hit => h (hit hi.2)⟩
state_before: case h.refine'_2
α : Type u_1
β : Type ?u.177596
γ : Type ?u.177599
ι : Type u_2
p : ι → Prop
s : ι → Set α
x : α
hx : x ∈ {x | Set.Infinite {n | p n ∧ x ∈ s n}}
t : Set α
h : ¬x ∈ t
⊢ ¬t ∈ {a | Set.Finite {x | p x ∧ ¬s x ⊆ a}}
Theorem: ofAdd_list_prod
File: Mathlib/Algebra/BigOperators/Basic.lean

tactic: simp [ofAdd]
state_before: ι : Type ?u.992457
β : Type u
α : Type v
γ : Type w
s✝ s₁ s₂ : Finset α
a : α
f g : α → β
inst✝ : AddMonoid α
s : List α
⊢ ↑ofAdd (List.sum s) = List.prod (List.map (↑ofAdd) s)

tactic: rfl
state_before: ι : Type ?u.992457
β : Type u
α : Type v
γ : Type w
s✝ s₁ s₂ : Finset α
a : α
f g : α → β
inst✝ : AddMonoid α
s : List α
⊢ List.sum s = List.prod s
Theorem: eq_star_of_eq_star
File: Mathlib/Algebra/Star/Basic.lean

tactic: simp [h]
state_before: R : Type u
inst✝ : InvolutiveStar R
r s : R
h : r = star s
⊢ s = star r
Theorem: EMetric.preimage_smul_closedBall
File: Mathlib/Topology/MetricSpace/IsometricSMul.lean

tactic: rw [preimage_smul, smul_closedBall]
state_before: M : Type u
G : Type v
X : Type w
inst✝³ : PseudoEMetricSpace X
inst✝² : Group G
inst✝¹ : MulAction G X
inst✝ : IsometricSMul G X
c : G
x : X
r : ℝ≥0∞
⊢ (fun x x_1 => x • x_1) c ⁻¹' closedBall x r = closedBall (c⁻¹ • x) r
Theorem: AlgebraicIndependent.image
File: Mathlib/RingTheory/AlgebraicIndependent.lean

tactic: convert AlgebraicIndependent.image_of_comp s f id hs
state_before: ι✝ : Type ?u.751654
ι' : Type ?u.751657
R : Type u_2
K : Type ?u.751663
A : Type u_3
A' : Type ?u.751669
A'' : Type ?u.751672
V : Type u
V' : Type ?u.751677
x : ι✝ → A
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : CommRing A'
inst✝³ : CommRing A''
inst✝² : Algebra R A
inst✝¹ : Algebra R A'
inst✝ : Algebra R A''
a b : R
ι : Type u_1
s : Set ι
f : ι → A
hs : AlgebraicIndependent R fun x => f ↑x
⊢ AlgebraicIndependent R fun x => ↑x
Theorem: Matrix.circulant_mul
File: Mathlib/LinearAlgebra/Matrix/Circulant.lean

tactic: ext (i j)
state_before: α : Type u_1
β : Type ?u.17976
m : Type ?u.17979
n : Type u_2
R : Type ?u.17985
inst✝² : Semiring α
inst✝¹ : Fintype n
inst✝ : AddGroup n
v w : n → α
⊢ circulant v ⬝ circulant w = circulant (mulVec (circulant v) w)

tactic: simp only [mul_apply, mulVec, circulant_apply, dotProduct]
state_before: case a.h
α : Type u_1
β : Type ?u.17976
m : Type ?u.17979
n : Type u_2
R : Type ?u.17985
inst✝² : Semiring α
inst✝¹ : Fintype n
inst✝ : AddGroup n
v w : n → α
i j : n
⊢ (circulant v ⬝ circulant w) i j = circulant (mulVec (circulant v) w) i j

tactic: refine' Fintype.sum_equiv (Equiv.subRight j) _ _ _
state_before: case a.h
α : Type u_1
β : Type ?u.17976
m : Type ?u.17979
n : Type u_2
R : Type ?u.17985
inst✝² : Semiring α
inst✝¹ : Fintype n
inst✝ : AddGroup n
v w : n → α
i j : n
⊢ ∑ x : n, v (i - x) * w (x - j) = ∑ x : n, v (i - j - x) * w x

tactic: intro x
state_before: case a.h
α : Type u_1
β : Type ?u.17976
m : Type ?u.17979
n : Type u_2
R : Type ?u.17985
inst✝² : Semiring α
inst✝¹ : Fintype n
inst✝ : AddGroup n
v w : n → α
i j : n
⊢ ∀ (x : n), v (i - x) * w (x - j) = v (i - j - ↑(Equiv.subRight j) x) * w (↑(Equiv.subRight j) x)

tactic: simp only [Equiv.subRight_apply, sub_sub_sub_cancel_right]
state_before: case a.h
α : Type u_1
β : Type ?u.17976
m : Type ?u.17979
n : Type u_2
R : Type ?u.17985
inst✝² : Semiring α
inst✝¹ : Fintype n
inst✝ : AddGroup n
v w : n → α
i j x : n
⊢ v (i - x) * w (x - j) = v (i - j - ↑(Equiv.subRight j) x) * w (↑(Equiv.subRight j) x)
Theorem: List.mem_attach
File: Mathlib/Data/List/Basic.lean

tactic: have := mem_map.1 (by rw [attach_map_val] <;> exact h)
state_before: ι : Type ?u.328587
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ l : List α
a : α
h : a ∈ l
⊢ { val := a, property := h } ∈ attach l

tactic: rw [attach_map_val] <;> exact h
state_before: ι : Type ?u.328587
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ l : List α
a : α
h : a ∈ l
⊢ ?m.328751 ∈ map ?m.328752 ?m.328753

tactic: rcases this with ⟨⟨_, _⟩, m, rfl⟩
state_before: ι : Type ?u.328587
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ l : List α
a : α
h : a ∈ l
this : ∃ a_1, a_1 ∈ attach l ∧ ↑a_1 = a
⊢ { val := a, property := h } ∈ attach l

tactic: exact m
state_before: case intro.mk.intro
ι : Type ?u.328587
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ l : List α
val✝ : α
property✝ : val✝ ∈ l
m : { val := val✝, property := property✝ } ∈ attach l
h : ↑{ val := val✝, property := property✝ } ∈ l
⊢ { val := ↑{ val := val✝, property := property✝ }, property := h } ∈ attach l
Theorem: Multiset.rel_flip_eq
File: Mathlib/Data/Multiset/Basic.lean

tactic: rw [rel_flip, rel_eq, eq_comm]
state_before: α : Type u_1
β : Type ?u.440899
γ : Type ?u.440902
δ : Type ?u.440905
r : α → β → Prop
p : γ → δ → Prop
s t : Multiset α
⊢ Rel (flip fun x x_1 => x = x_1) s t ↔ s = t
Theorem: Std.HashMap.Imp.Bucket.WF.mk'
File: Std/Data/HashMap/WF.lean

tactic: refine ⟨fun _ h => ?_, fun i h => ?_⟩
state_before: α : Type u_1
β : Type u_2
n : Nat
inst✝¹ : BEq α
inst✝ : Hashable α
h : 0 < n
⊢ WF (Bucket.mk n)

tactic: simp [Bucket.mk, empty', mkArray, List.mem_replicate] at h
state_before: case refine_1
α : Type u_1
β : Type u_2
n : Nat
inst✝³ : BEq α
inst✝² : Hashable α
h✝ : 0 < n
inst✝¹ : LawfulHashable α
inst✝ : PartialEquivBEq α
x✝ : AssocList α β
h : x✝ ∈ (Bucket.mk n).val.data
⊢ List.Pairwise (fun a b => ¬(a.fst == b.fst) = true) (AssocList.toList x✝)

tactic: simp [h, List.Pairwise.nil]
state_before: case refine_1
α : Type u_1
β : Type u_2
n : Nat
inst✝³ : BEq α
inst✝² : Hashable α
h✝ : 0 < n
inst✝¹ : LawfulHashable α
inst✝ : PartialEquivBEq α
x✝ : AssocList α β
h : ¬n = 0 ∧ x✝ = AssocList.nil
⊢ List.Pairwise (fun a b => ¬(a.fst == b.fst) = true) (AssocList.toList x✝)

tactic: simp [Bucket.mk, empty', mkArray, Array.getElem_eq_data_get, AssocList.All]
state_before: case refine_2
α : Type u_1
β : Type u_2
n : Nat
inst✝¹ : BEq α
inst✝ : Hashable α
h✝ : 0 < n
i : Nat
h : i < Array.size (Bucket.mk n).val
⊢ AssocList.All (fun k x => USize.toNat (UInt64.toUSize (hash k) % Array.size (Bucket.mk n).val) = i)
    (Bucket.mk n).val[i]
Theorem: Set.inclusion_right
File: Mathlib/Data/Set/Basic.lean

tactic: cases x
state_before: α : Type u_1
s t u : Set α
h : s ⊆ t
x : ↑t
m : ↑x ∈ s
⊢ inclusion h { val := ↑x, property := m } = x

tactic: rfl
state_before: case mk
α : Type u_1
s t u : Set α
h : s ⊆ t
val✝ : α
property✝ : val✝ ∈ t
m : ↑{ val := val✝, property := property✝ } ∈ s
⊢ inclusion h { val := ↑{ val := val✝, property := property✝ }, property := m } = { val := val✝, property := property✝ }
Theorem: QuadraticForm.polar_self
File: Mathlib/LinearAlgebra/QuadraticForm/Basic.lean

tactic: rw [polar, map_add_self, sub_sub, sub_eq_iff_eq_add, ← two_mul, ← two_mul, ← mul_assoc]
state_before: S : Type ?u.174526
R : Type u_1
R₁ : Type ?u.174532
M : Type u_2
inst✝³ : Ring R
inst✝² : CommRing R₁
inst✝¹ : AddCommGroup M
inst✝ : Module R M
Q : QuadraticForm R M
x : M
⊢ polar (↑Q) x x = 2 * ↑Q x

tactic: norm_num
state_before: S : Type ?u.174526
R : Type u_1
R₁ : Type ?u.174532
M : Type u_2
inst✝³ : Ring R
inst✝² : CommRing R₁
inst✝¹ : AddCommGroup M
inst✝ : Module R M
Q : QuadraticForm R M
x : M
⊢ 4 * ↑Q x = 2 * 2 * ↑Q x
Theorem: Real.cos_nat_mul_two_pi_sub_pi
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Basic.lean

tactic: simpa only [cos_zero] using (cos_periodic.nat_mul n).sub_antiperiod_eq cos_antiperiodic
state_before: n : ℕ
⊢ cos (↑n * (2 * π) - π) = -1
Theorem: ContinuousAffineMap.to_affineMap_injective
File: Mathlib/Topology/Algebra/ContinuousAffineMap.lean

tactic: cases f
state_before: R : Type u_1
V : Type u_2
W : Type u_3
P : Type u_4
Q : Type u_5
inst✝⁸ : Ring R
inst✝⁷ : AddCommGroup V
inst✝⁶ : Module R V
inst✝⁵ : TopologicalSpace P
inst✝⁴ : AddTorsor V P
inst✝³ : AddCommGroup W
inst✝² : Module R W
inst✝¹ : TopologicalSpace Q
inst✝ : AddTorsor W Q
f g : P →A[R] Q
h : f.toAffineMap = g.toAffineMap
⊢ f = g

tactic: cases g
state_before: case mk
R : Type u_1
V : Type u_2
W : Type u_3
P : Type u_4
Q : Type u_5
inst✝⁸ : Ring R
inst✝⁷ : AddCommGroup V
inst✝⁶ : Module R V
inst✝⁵ : TopologicalSpace P
inst✝⁴ : AddTorsor V P
inst✝³ : AddCommGroup W
inst✝² : Module R W
inst✝¹ : TopologicalSpace Q
inst✝ : AddTorsor W Q
g : P →A[R] Q
toAffineMap✝ : P →ᵃ[R] Q
cont✝ : Continuous toAffineMap✝.toFun
h : { toAffineMap := toAffineMap✝, cont := cont✝ }.toAffineMap = g.toAffineMap
⊢ { toAffineMap := toAffineMap✝, cont := cont✝ } = g

tactic: congr
state_before: case mk.mk
R : Type u_1
V : Type u_2
W : Type u_3
P : Type u_4
Q : Type u_5
inst✝⁸ : Ring R
inst✝⁷ : AddCommGroup V
inst✝⁶ : Module R V
inst✝⁵ : TopologicalSpace P
inst✝⁴ : AddTorsor V P
inst✝³ : AddCommGroup W
inst✝² : Module R W
inst✝¹ : TopologicalSpace Q
inst✝ : AddTorsor W Q
toAffineMap✝¹ : P →ᵃ[R] Q
cont✝¹ : Continuous toAffineMap✝¹.toFun
toAffineMap✝ : P →ᵃ[R] Q
cont✝ : Continuous toAffineMap✝.toFun
h :
  { toAffineMap := toAffineMap✝¹, cont := cont✝¹ }.toAffineMap =
    { toAffineMap := toAffineMap✝, cont := cont✝ }.toAffineMap
⊢ { toAffineMap := toAffineMap✝¹, cont := cont✝¹ } = { toAffineMap := toAffineMap✝, cont := cont✝ }
Theorem: Finset.image₂_distrib_subset_left
File: Mathlib/Data/Finset/NAry.lean

tactic: push_cast
state_before: α : Type u_3
α' : Type ?u.86581
β : Type u_5
β' : Type u_6
γ✝ : Type ?u.86590
γ' : Type u_7
δ : Type u_4
δ' : Type ?u.86599
ε : Type u_2
ε' : Type ?u.86605
ζ : Type ?u.86608
ζ' : Type ?u.86611
ν : Type ?u.86614
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 : γ✝
γ : Type u_1
u : Finset γ
f : α → δ → ε
g : β → γ → δ
f₁ : α → β → β'
f₂ : α → γ → γ'
g' : β' → γ' → ε
h_distrib : ∀ (a : α) (b : β) (c : γ), f a (g b c) = g' (f₁ a b) (f₂ a c)
⊢ ↑(image₂ f s (image₂ g t u)) ⊆ ↑(image₂ g' (image₂ f₁ s t) (image₂ f₂ s u))

tactic: exact Set.image2_distrib_subset_left h_distrib
state_before: α : Type u_3
α' : Type ?u.86581
β : Type u_5
β' : Type u_6
γ✝ : Type ?u.86590
γ' : Type u_7
δ : Type u_4
δ' : Type ?u.86599
ε : Type u_2
ε' : Type ?u.86605
ζ : Type ?u.86608
ζ' : Type ?u.86611
ν : Type ?u.86614
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 : γ✝
γ : Type u_1
u : Finset γ
f : α → δ → ε
g : β → γ → δ
f₁ : α → β → β'
f₂ : α → γ → γ'
g' : β' → γ' → ε
h_distrib : ∀ (a : α) (b : β) (c : γ), f a (g b c) = g' (f₁ a b) (f₂ a c)
⊢ image2 f (↑s) (image2 g ↑t ↑u) ⊆ image2 g' (image2 f₁ ↑s ↑t) (image2 f₂ ↑s ↑u)
Theorem: Order.le_succ_iterate
File: Mathlib/Order/SuccPred/Basic.lean

tactic: conv_lhs => rw [(by simp only [Function.iterate_id, id.def] : x = (id^[k]) x)]
state_before: α : Type u_1
inst✝¹ : Preorder α
inst✝ : SuccOrder α
a b : α
k : ℕ
x : α
⊢ x ≤ (succ^[k]) x

tactic: exact Monotone.le_iterate_of_le succ_mono le_succ k x
state_before: α : Type u_1
inst✝¹ : Preorder α
inst✝ : SuccOrder α
a b : α
k : ℕ
x : α
⊢ (id^[k]) x ≤ (succ^[k]) x

tactic: simp only [Function.iterate_id, id.def]
state_before: α : Type u_1
inst✝¹ : Preorder α
inst✝ : SuccOrder α
a b : α
k : ℕ
x : α
⊢ x = (id^[k]) x
Theorem: differentiableOn_euclidean
File: Mathlib/Analysis/InnerProductSpace/Calculus.lean

tactic: rw [← (EuclideanSpace.equiv ι 𝕜).comp_differentiableOn_iff, differentiableOn_pi]
state_before: 𝕜 : Type u_1
ι : Type u_3
H : Type u_2
inst✝³ : IsROrC 𝕜
inst✝² : NormedAddCommGroup H
inst✝¹ : NormedSpace 𝕜 H
inst✝ : Fintype ι
f : H → EuclideanSpace 𝕜 ι
f' : H →L[𝕜] EuclideanSpace 𝕜 ι
t : Set H
y : H
⊢ DifferentiableOn 𝕜 f t ↔ ∀ (i : ι), DifferentiableOn 𝕜 (fun x => f x i) t

tactic: rfl
state_before: 𝕜 : Type u_1
ι : Type u_3
H : Type u_2
inst✝³ : IsROrC 𝕜
inst✝² : NormedAddCommGroup H
inst✝¹ : NormedSpace 𝕜 H
inst✝ : Fintype ι
f : H → EuclideanSpace 𝕜 ι
f' : H →L[𝕜] EuclideanSpace 𝕜 ι
t : Set H
y : H
⊢ (∀ (i : ι), DifferentiableOn 𝕜 (fun x => (↑(EuclideanSpace.equiv ι 𝕜) ∘ f) x i) t) ↔
    ∀ (i : ι), DifferentiableOn 𝕜 (fun x => f x i) t
Theorem: Filter.lift_top
File: Mathlib/Order/Filter/Lift.lean

tactic: simp [Filter.lift]
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.696
ι : Sort ?u.699
f f₁ f₂ : Filter α
g✝ g₁ g₂ g : Set α → Filter β
⊢ Filter.lift ⊤ g = g univ
Theorem: IsSubmonoid.multiset_prod_mem
File: Mathlib/Deprecated/Submonoid.lean

tactic: refine' Quotient.inductionOn m fun l hl => _
state_before: M✝ : Type ?u.55549
inst✝² : Monoid M✝
s✝ : Set M✝
A : Type ?u.55558
inst✝¹ : AddMonoid A
t : Set A
M : Type u_1
inst✝ : CommMonoid M
s : Set M
hs : IsSubmonoid s
m : Multiset M
⊢ (∀ (a : M), a ∈ m → a ∈ s) → Multiset.prod m ∈ s

tactic: rw [Multiset.quot_mk_to_coe, Multiset.coe_prod]
state_before: M✝ : Type ?u.55549
inst✝² : Monoid M✝
s✝ : Set M✝
A : Type ?u.55558
inst✝¹ : AddMonoid A
t : Set A
M : Type u_1
inst✝ : CommMonoid M
s : Set M
hs : IsSubmonoid s
m : Multiset M
l : List M
hl : ∀ (a : M), a ∈ Quotient.mk (List.isSetoid M) l → a ∈ s
⊢ Multiset.prod (Quotient.mk (List.isSetoid M) l) ∈ s

tactic: exact list_prod_mem hs hl
state_before: M✝ : Type ?u.55549
inst✝² : Monoid M✝
s✝ : Set M✝
A : Type ?u.55558
inst✝¹ : AddMonoid A
t : Set A
M : Type u_1
inst✝ : CommMonoid M
s : Set M
hs : IsSubmonoid s
m : Multiset M
l : List M
hl : ∀ (a : M), a ∈ Quotient.mk (List.isSetoid M) l → a ∈ s
⊢ List.prod l ∈ s
Theorem: Int.cast_pow
File: Mathlib/Algebra/GroupPower/Lemmas.lean

tactic: induction' m with m ih
state_before: α : Type ?u.285909
M : Type u
N : Type v
G : Type w
H : Type x
A : Type y
B : Type z
R : Type u₁
S : Type u₂
inst✝ : Ring R
n : ℤ
m : ℕ
⊢ ↑(n ^ m) = ↑n ^ m

tactic: rw [pow_zero, pow_zero, Int.cast_one]
state_before: case zero
α : Type ?u.285909
M : Type u
N : Type v
G : Type w
H : Type x
A : Type y
B : Type z
R : Type u₁
S : Type u₂
inst✝ : Ring R
n : ℤ
⊢ ↑(n ^ Nat.zero) = ↑n ^ Nat.zero

tactic: rw [pow_succ, pow_succ, Int.cast_mul, ih]
state_before: case succ
α : Type ?u.285909
M : Type u
N : Type v
G : Type w
H : Type x
A : Type y
B : Type z
R : Type u₁
S : Type u₂
inst✝ : Ring R
n : ℤ
m : ℕ
ih : ↑(n ^ m) = ↑n ^ m
⊢ ↑(n ^ Nat.succ m) = ↑n ^ Nat.succ m
Theorem: Option.choice_isSome_iff_nonempty
File: Std/Data/Option/Lemmas.lean

tactic: simp only [choice, dif_pos h, isSome_some]
state_before: α : Type u_1
h : Nonempty α
⊢ isSome (choice α) = true
Theorem: mul_lowerClosure
File: Mathlib/Algebra/Order/UpperLower.lean

tactic: simp_rw [← smul_eq_mul, ← Set.iUnion_smul_set, lowerClosure_iUnion, lowerClosure_smul,
  LowerSet.coe_iSup₂]
state_before: α : Type u_1
inst✝ : OrderedCommGroup α
s t : Set α
a : α
⊢ s * ↑(lowerClosure t) = ↑(lowerClosure (s * t))

tactic: rfl
state_before: α : Type u_1
inst✝ : OrderedCommGroup α
s t : Set α
a : α
⊢ (⋃ (a : α) (_ : a ∈ s), a • ↑(lowerClosure t)) = ⋃ (i : α) (_ : i ∈ s), ↑(i • lowerClosure t)