tasksource/leandojo huggingface dataset:
Theorem: LocalHomeomorph.continuousOn_iff_continuousOn_comp_right
File: Mathlib/Topology/LocalHomeomorph.lean

tactic: simp only [← e.symm_image_eq_source_inter_preimage h, ContinuousOn, ball_image_iff]
state_before: α : Type u_2
β : Type u_1
γ : Type u_3
δ : Type ?u.99648
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
e : LocalHomeomorph α β
e' : LocalHomeomorph β γ
f : β → γ
s : Set β
h : s ⊆ e.target
⊢ ContinuousOn f s ↔ ContinuousOn (f ∘ ↑e) (e.source ∩ ↑e ⁻¹' s)

tactic: refine' forall₂_congr fun x hx => _
state_before: α : Type u_2
β : Type u_1
γ : Type u_3
δ : Type ?u.99648
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
e : LocalHomeomorph α β
e' : LocalHomeomorph β γ
f : β → γ
s : Set β
h : s ⊆ e.target
⊢ (∀ (x : β), x ∈ s → ContinuousWithinAt f s x) ↔
    ∀ (x : β), x ∈ s → ContinuousWithinAt (f ∘ ↑e) (↑(LocalHomeomorph.symm e) '' s) (↑(LocalHomeomorph.symm e) x)

tactic: rw [e.continuousWithinAt_iff_continuousWithinAt_comp_right (h hx),
  e.symm_image_eq_source_inter_preimage h, inter_comm, continuousWithinAt_inter]
state_before: α : Type u_2
β : Type u_1
γ : Type u_3
δ : Type ?u.99648
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
e : LocalHomeomorph α β
e' : LocalHomeomorph β γ
f : β → γ
s : Set β
h : s ⊆ e.target
x : β
hx : x ∈ s
⊢ ContinuousWithinAt f s x ↔ ContinuousWithinAt (f ∘ ↑e) (↑(LocalHomeomorph.symm e) '' s) (↑(LocalHomeomorph.symm e) x)

tactic: exact IsOpen.mem_nhds e.open_source (e.map_target (h hx))
state_before: α : Type u_2
β : Type u_1
γ : Type u_3
δ : Type ?u.99648
inst✝³ : TopologicalSpace α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
e : LocalHomeomorph α β
e' : LocalHomeomorph β γ
f : β → γ
s : Set β
h : s ⊆ e.target
x : β
hx : x ∈ s
⊢ e.source ∈ 𝓝 (↑(LocalHomeomorph.symm e) x)
Theorem: Units.isOpen
File: Mathlib/Analysis/NormedSpace/Units.lean

tactic: nontriviality R
state_before: R : Type u_1
inst✝¹ : NormedRing R
inst✝ : CompleteSpace R
⊢ IsOpen {x | IsUnit x}

tactic: apply Metric.isOpen_iff.mpr
state_before: R : Type u_1
inst✝¹ : NormedRing R
inst✝ : CompleteSpace R
✝ : Nontrivial R
⊢ IsOpen {x | IsUnit x}

tactic: rintro _ ⟨x, rfl⟩
state_before: R : Type u_1
inst✝¹ : NormedRing R
inst✝ : CompleteSpace R
✝ : Nontrivial R
⊢ ∀ (x : R), x ∈ {x | IsUnit x} → ∃ ε, ε > 0 ∧ Metric.ball x ε ⊆ {x | IsUnit x}

tactic: refine' ⟨‖(↑x⁻¹ : R)‖⁻¹, _root_.inv_pos.mpr (Units.norm_pos x⁻¹), fun y hy ↦ _⟩
state_before: case intro
R : Type u_1
inst✝¹ : NormedRing R
inst✝ : CompleteSpace R
✝ : Nontrivial R
x : Rˣ
⊢ ∃ ε, ε > 0 ∧ Metric.ball (↑x) ε ⊆ {x | IsUnit x}

tactic: rw [mem_ball_iff_norm] at hy
state_before: case intro
R : Type u_1
inst✝¹ : NormedRing R
inst✝ : CompleteSpace R
✝ : Nontrivial R
x : Rˣ
y : R
hy : y ∈ Metric.ball ↑x ‖↑x⁻¹‖⁻¹
⊢ y ∈ {x | IsUnit x}

tactic: exact (x.ofNearby y hy).isUnit
state_before: case intro
R : Type u_1
inst✝¹ : NormedRing R
inst✝ : CompleteSpace R
✝ : Nontrivial R
x : Rˣ
y : R
hy : ‖y - ↑x‖ < ‖↑x⁻¹‖⁻¹
⊢ y ∈ {x | IsUnit x}
Theorem: Multiset.count_replicate_self
File: Mathlib/Data/Multiset/Basic.lean

tactic: convert List.count_replicate_self a n
state_before: α : Type u_1
β : Type ?u.362314
γ : Type ?u.362317
inst✝ : DecidableEq α
a : α
n : ℕ
⊢ count a (replicate n a) = n

tactic: rw [←coe_count, coe_replicate]
state_before: case h.e'_2
α : Type u_1
β : Type ?u.362314
γ : Type ?u.362317
inst✝ : DecidableEq α
a : α
n : ℕ
⊢ count a (replicate n a) = List.count a (List.replicate n a)
Theorem: PowerBasis.natDegree_minpoly
File: Mathlib/RingTheory/PowerBasis.lean

tactic: rw [← minpolyGen_eq, natDegree_minpolyGen]
state_before: R : Type ?u.143265
S : Type u_2
T : Type ?u.143271
inst✝⁹ : CommRing R
inst✝⁸ : Ring S
inst✝⁷ : Algebra R S
A : Type u_1
B : Type ?u.143577
inst✝⁶ : CommRing A
inst✝⁵ : CommRing B
inst✝⁴ : IsDomain B
inst✝³ : Algebra A B
K : Type ?u.143999
inst✝² : Field K
inst✝¹ : Algebra A S
inst✝ : Nontrivial A
pb : PowerBasis A S
⊢ natDegree (minpoly A pb.gen) = pb.dim
Theorem: tsum_comm'
File: Mathlib/Topology/Algebra/InfiniteSum/Basic.lean

tactic: erw [← tsum_prod' h h₁, ← tsum_prod' h.prod_symm h₂, ← (Equiv.prodComm γ β).tsum_eq (uncurry f)]
state_before: α : Type ?u.360325
β : Type u_3
γ : Type u_2
δ : Type u_1
inst✝⁷ : AddCommMonoid α
inst✝⁶ : TopologicalSpace α
inst✝⁵ : T2Space α
f✝ g : β → α
a a₁ a₂ : α
inst✝⁴ : ContinuousAdd α
inst✝³ : AddCommMonoid δ
inst✝² : TopologicalSpace δ
inst✝¹ : T3Space δ
inst✝ : ContinuousAdd δ
f : β → γ → δ
h : Summable (uncurry f)
h₁ : ∀ (b : β), Summable (f b)
h₂ : ∀ (c : γ), Summable fun b => f b c
⊢ (∑' (c : γ) (b : β), f b c) = ∑' (b : β) (c : γ), f b c

tactic: rfl
state_before: α : Type ?u.360325
β : Type u_3
γ : Type u_2
δ : Type u_1
inst✝⁷ : AddCommMonoid α
inst✝⁶ : TopologicalSpace α
inst✝⁵ : T2Space α
f✝ g : β → α
a a₁ a₂ : α
inst✝⁴ : ContinuousAdd α
inst✝³ : AddCommMonoid δ
inst✝² : TopologicalSpace δ
inst✝¹ : T3Space δ
inst✝ : ContinuousAdd δ
f : β → γ → δ
h : Summable (uncurry f)
h₁ : ∀ (b : β), Summable (f b)
h₂ : ∀ (c : γ), Summable fun b => f b c
⊢ (∑' (p : γ × β), uncurry f (Prod.swap p)) = ∑' (c : γ × β), uncurry f (↑(Equiv.prodComm γ β) c)
Theorem: Matrix.transpose_tsum
File: Mathlib/Topology/Instances/Matrix.lean

tactic: by_cases hf : Summable f
state_before: X : Type u_4
α : Type ?u.51831
l : Type ?u.51834
m : Type u_2
n : Type u_3
p : Type ?u.51843
S : Type ?u.51846
R : Type u_1
m' : l → Type ?u.51854
n' : l → Type ?u.51859
inst✝⁴ : Semiring α
inst✝³ : AddCommMonoid R
inst✝² : TopologicalSpace R
inst✝¹ : Module α R
inst✝ : T2Space R
f : X → Matrix m n R
⊢ (∑' (x : X), f x)ᵀ = ∑' (x : X), (f x)ᵀ

tactic: exact hf.hasSum.matrix_transpose.tsum_eq.symm
state_before: case pos
X : Type u_4
α : Type ?u.51831
l : Type ?u.51834
m : Type u_2
n : Type u_3
p : Type ?u.51843
S : Type ?u.51846
R : Type u_1
m' : l → Type ?u.51854
n' : l → Type ?u.51859
inst✝⁴ : Semiring α
inst✝³ : AddCommMonoid R
inst✝² : TopologicalSpace R
inst✝¹ : Module α R
inst✝ : T2Space R
f : X → Matrix m n R
hf : Summable f
⊢ (∑' (x : X), f x)ᵀ = ∑' (x : X), (f x)ᵀ

tactic: have hft := summable_matrix_transpose.not.mpr hf
state_before: case neg
X : Type u_4
α : Type ?u.51831
l : Type ?u.51834
m : Type u_2
n : Type u_3
p : Type ?u.51843
S : Type ?u.51846
R : Type u_1
m' : l → Type ?u.51854
n' : l → Type ?u.51859
inst✝⁴ : Semiring α
inst✝³ : AddCommMonoid R
inst✝² : TopologicalSpace R
inst✝¹ : Module α R
inst✝ : T2Space R
f : X → Matrix m n R
hf : ¬Summable f
⊢ (∑' (x : X), f x)ᵀ = ∑' (x : X), (f x)ᵀ

tactic: rw [tsum_eq_zero_of_not_summable hf, tsum_eq_zero_of_not_summable hft, transpose_zero]
state_before: case neg
X : Type u_4
α : Type ?u.51831
l : Type ?u.51834
m : Type u_2
n : Type u_3
p : Type ?u.51843
S : Type ?u.51846
R : Type u_1
m' : l → Type ?u.51854
n' : l → Type ?u.51859
inst✝⁴ : Semiring α
inst✝³ : AddCommMonoid R
inst✝² : TopologicalSpace R
inst✝¹ : Module α R
inst✝ : T2Space R
f : X → Matrix m n R
hf : ¬Summable f
hft : ¬Summable fun x => (f x)ᵀ
⊢ (∑' (x : X), f x)ᵀ = ∑' (x : X), (f x)ᵀ
Theorem: QuadraticForm.isSymm_toMatrix'
File: Mathlib/LinearAlgebra/QuadraticForm/Basic.lean

tactic: ext (i j)
state_before: S : Type ?u.554283
R : Type ?u.554286
R₁ : Type u_1
M : Type ?u.554292
n : Type w
inst✝⁵ : Fintype n
inst✝⁴ : DecidableEq n
inst✝³ : CommRing R₁
inst✝² : AddCommMonoid M
inst✝¹ : Module R₁ M
inst✝ : Invertible 2
Q : QuadraticForm R₁ (n → R₁)
⊢ Matrix.IsSymm (toMatrix' Q)

tactic: rw [toMatrix', Matrix.transpose_apply, BilinForm.toMatrix'_apply, BilinForm.toMatrix'_apply,
  associated_isSymm]
state_before: case a.h
S : Type ?u.554283
R : Type ?u.554286
R₁ : Type u_1
M : Type ?u.554292
n : Type w
inst✝⁵ : Fintype n
inst✝⁴ : DecidableEq n
inst✝³ : CommRing R₁
inst✝² : AddCommMonoid M
inst✝¹ : Module R₁ M
inst✝ : Invertible 2
Q : QuadraticForm R₁ (n → R₁)
i j : n
⊢ Matrix.transpose (toMatrix' Q) i j = toMatrix' Q i j
Theorem: orthogonalProjection_eq_self_iff
File: Mathlib/Analysis/InnerProductSpace/Projection.lean

tactic: refine' ⟨fun h => _, fun h => eq_orthogonalProjection_of_mem_of_inner_eq_zero h _⟩
state_before: 𝕜 : Type u_2
E : Type u_1
F : Type ?u.516714
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : CompleteSpace { x // x ∈ K }
v : E
⊢ ↑(↑(orthogonalProjection K) v) = v ↔ v ∈ K

tactic: rw [← h]
state_before: case refine'_1
𝕜 : Type u_2
E : Type u_1
F : Type ?u.516714
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : CompleteSpace { x // x ∈ K }
v : E
h : ↑(↑(orthogonalProjection K) v) = v
⊢ v ∈ K

tactic: simp
state_before: case refine'_1
𝕜 : Type u_2
E : Type u_1
F : Type ?u.516714
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : CompleteSpace { x // x ∈ K }
v : E
h : ↑(↑(orthogonalProjection K) v) = v
⊢ ↑(↑(orthogonalProjection K) v) ∈ K

tactic: simp
state_before: case refine'_2
𝕜 : Type u_2
E : Type u_1
F : Type ?u.516714
inst✝⁵ : IsROrC 𝕜
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedAddCommGroup F
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : InnerProductSpace ℝ F
K : Submodule 𝕜 E
inst✝ : CompleteSpace { x // x ∈ K }
v : E
h : v ∈ K
⊢ ∀ (w : E), w ∈ K → inner (v - v) w = 0
Theorem: CategoryTheory.MonoidalOfChosenFiniteProducts.symmetry
File: Mathlib/CategoryTheory/Monoidal/OfChosenFiniteProducts/Symmetric.lean

tactic: dsimp [tensorHom, Limits.BinaryFan.braiding]
state_before: C : Type u
inst✝ : Category C
X✝ Y✝ : C
𝒯 : LimitCone (Functor.empty C)
ℬ : (X Y : C) → LimitCone (pair X Y)
X Y : C
⊢ (BinaryFan.braiding (ℬ X Y).isLimit (ℬ Y X).isLimit).hom ≫ (BinaryFan.braiding (ℬ Y X).isLimit (ℬ X Y).isLimit).hom =
    𝟙 (tensorObj ℬ X Y)

tactic: apply (ℬ _ _).isLimit.hom_ext
state_before: C : Type u
inst✝ : Category C
X✝ Y✝ : C
𝒯 : LimitCone (Functor.empty C)
ℬ : (X Y : C) → LimitCone (pair X Y)
X Y : C
⊢ (IsLimit.conePointUniqueUpToIso (ℬ X Y).isLimit (IsLimit.swapBinaryFan (ℬ Y X).isLimit)).hom ≫
      (IsLimit.conePointUniqueUpToIso (ℬ Y X).isLimit (IsLimit.swapBinaryFan (ℬ X Y).isLimit)).hom =
    𝟙 (tensorObj ℬ X Y)

tactic: dsimp [Limits.IsLimit.conePointUniqueUpToIso]
state_before: case mk.right
C : Type u
inst✝ : Category C
X✝ Y✝ : C
𝒯 : LimitCone (Functor.empty C)
ℬ : (X Y : C) → LimitCone (pair X Y)
X Y : C
⊢ ((IsLimit.conePointUniqueUpToIso (ℬ X Y).isLimit (IsLimit.swapBinaryFan (ℬ Y X).isLimit)).hom ≫
        (IsLimit.conePointUniqueUpToIso (ℬ Y X).isLimit (IsLimit.swapBinaryFan (ℬ X Y).isLimit)).hom) ≫
      (ℬ X Y).cone.π.app { as := WalkingPair.right } =
    𝟙 (tensorObj ℬ X Y) ≫ (ℬ X Y).cone.π.app { as := WalkingPair.right }

tactic: simp
state_before: case mk.right
C : Type u
inst✝ : Category C
X✝ Y✝ : C
𝒯 : LimitCone (Functor.empty C)
ℬ : (X Y : C) → LimitCone (pair X Y)
X Y : C
⊢ (IsLimit.lift (ℬ Y X).isLimit (BinaryFan.swap (ℬ X Y).cone) ≫
        IsLimit.lift (ℬ X Y).isLimit (BinaryFan.swap (ℬ Y X).cone)) ≫
      BinaryFan.snd (ℬ X Y).cone =
    𝟙 (tensorObj ℬ X Y) ≫ BinaryFan.snd (ℬ X Y).cone
Theorem: CategoryTheory.MorphismProperty.RespectsIso.isomorphisms
File: Mathlib/CategoryTheory/MorphismProperty.lean

tactic: intro X Y Z e f
state_before: case right
C : Type u
inst✝¹ : Category C
D : Type ?u.61837
inst✝ : Category D
⊢ ∀ {X Y Z : C} (e : Y ≅ Z) (f : X ⟶ Y), MorphismProperty.isomorphisms C f → MorphismProperty.isomorphisms C (f ≫ e.hom)

tactic: simp only [isomorphisms.iff]
state_before: case right
C : Type u
inst✝¹ : Category C
D : Type ?u.61837
inst✝ : Category D
X Y Z : C
e : Y ≅ Z
f : X ⟶ Y
⊢ MorphismProperty.isomorphisms C f → MorphismProperty.isomorphisms C (f ≫ e.hom)

tactic: intro
state_before: case right
C : Type u
inst✝¹ : Category C
D : Type ?u.61837
inst✝ : Category D
X Y Z : C
e : Y ≅ Z
f : X ⟶ Y
⊢ IsIso f → IsIso (f ≫ e.hom)

tactic: infer_instance
state_before: case right
C : Type u
inst✝¹ : Category C
D : Type ?u.61837
inst✝ : Category D
X Y Z : C
e : Y ≅ Z
f : X ⟶ Y
a✝ : IsIso f
⊢ IsIso (f ≫ e.hom)
Theorem: ENNReal.exists_pos_tsum_mul_lt_of_countable
File: Mathlib/Analysis/SpecificLimits/Basic.lean

tactic: lift w to ι → ℝ≥0 using hw
state_before: α : Type ?u.479540
β : Type ?u.479543
ι✝ : Type ?u.479546
ε : ℝ≥0∞
hε : ε ≠ 0
ι : Type u_1
inst✝ : Countable ι
w : ι → ℝ≥0∞
hw : ∀ (i : ι), w i ≠ ⊤
⊢ ∃ δ, (∀ (i : ι), 0 < δ i) ∧ (∑' (i : ι), w i * ↑(δ i)) < ε

tactic: rcases exists_pos_sum_of_countable hε ι with ⟨δ', Hpos, Hsum⟩
state_before: case intro
α : Type ?u.479540
β : Type ?u.479543
ι✝ : Type ?u.479546
ε : ℝ≥0∞
hε : ε ≠ 0
ι : Type u_1
inst✝ : Countable ι
w : ι → ℝ≥0
⊢ ∃ δ, (∀ (i : ι), 0 < δ i) ∧ (∑' (i : ι), (fun i => ↑(w i)) i * ↑(δ i)) < ε

tactic: have : ∀ i, 0 < max 1 (w i) := fun i => zero_lt_one.trans_le (le_max_left _ _)
state_before: case intro.intro.intro
α : Type ?u.479540
β : Type ?u.479543
ι✝ : Type ?u.479546
ε : ℝ≥0∞
hε : ε ≠ 0
ι : Type u_1
inst✝ : Countable ι
w δ' : ι → ℝ≥0
Hpos : ∀ (i : ι), 0 < δ' i
Hsum : (∑' (i : ι), ↑(δ' i)) < ε
⊢ ∃ δ, (∀ (i : ι), 0 < δ i) ∧ (∑' (i : ι), (fun i => ↑(w i)) i * ↑(δ i)) < ε

tactic: refine' ⟨fun i => δ' i / max 1 (w i), fun i => div_pos (Hpos _) (this i), _⟩
state_before: case intro.intro.intro
α : Type ?u.479540
β : Type ?u.479543
ι✝ : Type ?u.479546
ε : ℝ≥0∞
hε : ε ≠ 0
ι : Type u_1
inst✝ : Countable ι
w δ' : ι → ℝ≥0
Hpos : ∀ (i : ι), 0 < δ' i
Hsum : (∑' (i : ι), ↑(δ' i)) < ε
this : ∀ (i : ι), 0 < max 1 (w i)
⊢ ∃ δ, (∀ (i : ι), 0 < δ i) ∧ (∑' (i : ι), (fun i => ↑(w i)) i * ↑(δ i)) < ε

tactic: refine' lt_of_le_of_lt (ENNReal.tsum_le_tsum fun i => _) Hsum
state_before: case intro.intro.intro
α : Type ?u.479540
β : Type ?u.479543
ι✝ : Type ?u.479546
ε : ℝ≥0∞
hε : ε ≠ 0
ι : Type u_1
inst✝ : Countable ι
w δ' : ι → ℝ≥0
Hpos : ∀ (i : ι), 0 < δ' i
Hsum : (∑' (i : ι), ↑(δ' i)) < ε
this : ∀ (i : ι), 0 < max 1 (w i)
⊢ (∑' (i : ι), (fun i => ↑(w i)) i * ↑((fun i => δ' i / max 1 (w i)) i)) < ε

tactic: rw [coe_div (this i).ne']
state_before: case intro.intro.intro
α : Type ?u.479540
β : Type ?u.479543
ι✝ : Type ?u.479546
ε : ℝ≥0∞
hε : ε ≠ 0
ι : Type u_1
inst✝ : Countable ι
w δ' : ι → ℝ≥0
Hpos : ∀ (i : ι), 0 < δ' i
Hsum : (∑' (i : ι), ↑(δ' i)) < ε
this : ∀ (i : ι), 0 < max 1 (w i)
i : ι
⊢ (fun i => ↑(w i)) i * ↑((fun i => δ' i / max 1 (w i)) i) ≤ ↑(δ' i)

tactic: refine' mul_le_of_le_div' (mul_le_mul_left' (ENNReal.inv_le_inv.2 _) _)
state_before: case intro.intro.intro
α : Type ?u.479540
β : Type ?u.479543
ι✝ : Type ?u.479546
ε : ℝ≥0∞
hε : ε ≠ 0
ι : Type u_1
inst✝ : Countable ι
w δ' : ι → ℝ≥0
Hpos : ∀ (i : ι), 0 < δ' i
Hsum : (∑' (i : ι), ↑(δ' i)) < ε
this : ∀ (i : ι), 0 < max 1 (w i)
i : ι
⊢ (fun i => ↑(w i)) i * (↑(δ' i) / ↑(max 1 (w i))) ≤ ↑(δ' i)

tactic: exact coe_le_coe.2 (le_max_right _ _)
state_before: case intro.intro.intro
α : Type ?u.479540
β : Type ?u.479543
ι✝ : Type ?u.479546
ε : ℝ≥0∞
hε : ε ≠ 0
ι : Type u_1
inst✝ : Countable ι
w δ' : ι → ℝ≥0
Hpos : ∀ (i : ι), 0 < δ' i
Hsum : (∑' (i : ι), ↑(δ' i)) < ε
this : ∀ (i : ι), 0 < max 1 (w i)
i : ι
⊢ (fun i => ↑(w i)) i ≤ ↑(max 1 (w i))
Theorem: Turing.PointedMap.headI_map
File: Mathlib/Computability/TuringMachine.lean

tactic: cases l <;> [exact (PointedMap.map_pt f).symm; rfl]
state_before: Γ : Type u_1
Γ' : Type u_2
inst✝¹ : Inhabited Γ
inst✝ : Inhabited Γ'
f : PointedMap Γ Γ'
l : List Γ
⊢ List.headI (List.map f.f l) = Turing.PointedMap.f f (List.headI l)
Theorem: Finset.mem_shadow_iff_insert_mem
File: Mathlib/Combinatorics/SetFamily/Shadow.lean

tactic: refine' mem_shadow_iff.trans ⟨_, _⟩
state_before: α : Type u_1
inst✝ : DecidableEq α
𝒜 : Finset (Finset α)
s t : Finset α
a : α
k r : ℕ
⊢ s ∈ (∂ ) 𝒜 ↔ ∃ a x, insert a s ∈ 𝒜

tactic: rintro ⟨s, hs, a, ha, rfl⟩
state_before: case refine'_1
α : Type u_1
inst✝ : DecidableEq α
𝒜 : Finset (Finset α)
s t : Finset α
a : α
k r : ℕ
⊢ (∃ t, t ∈ 𝒜 ∧ ∃ a, a ∈ t ∧ erase t a = s) → ∃ a x, insert a s ∈ 𝒜

tactic: refine' ⟨a, not_mem_erase a s, _⟩
state_before: case refine'_1.intro.intro.intro.intro
α : Type u_1
inst✝ : DecidableEq α
𝒜 : Finset (Finset α)
t : Finset α
a✝ : α
k r : ℕ
s : Finset α
hs : s ∈ 𝒜
a : α
ha : a ∈ s
⊢ ∃ a_1 x, insert a_1 (erase s a) ∈ 𝒜

tactic: rwa [insert_erase ha]
state_before: case refine'_1.intro.intro.intro.intro
α : Type u_1
inst✝ : DecidableEq α
𝒜 : Finset (Finset α)
t : Finset α
a✝ : α
k r : ℕ
s : Finset α
hs : s ∈ 𝒜
a : α
ha : a ∈ s
⊢ insert a (erase s a) ∈ 𝒜

tactic: rintro ⟨a, ha, hs⟩
state_before: case refine'_2
α : Type u_1
inst✝ : DecidableEq α
𝒜 : Finset (Finset α)
s t : Finset α
a : α
k r : ℕ
⊢ (∃ a x, insert a s ∈ 𝒜) → ∃ t, t ∈ 𝒜 ∧ ∃ a, a ∈ t ∧ erase t a = s

tactic: exact ⟨insert a s, hs, a, mem_insert_self _ _, erase_insert ha⟩
state_before: case refine'_2.intro.intro
α : Type u_1
inst✝ : DecidableEq α
𝒜 : Finset (Finset α)
s t : Finset α
a✝ : α
k r : ℕ
a : α
ha : ¬a ∈ s
hs : insert a s ∈ 𝒜
⊢ ∃ t, t ∈ 𝒜 ∧ ∃ a, a ∈ t ∧ erase t a = s
Theorem: Polynomial.eq_of_infinite_eval_eq
File: Mathlib/Data/Polynomial/RingDivision.lean

tactic: rw [← sub_eq_zero]
state_before: R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝¹ : CommRing R
inst✝ : IsDomain R
p✝ q✝ p q : R[X]
h : Set.Infinite {x | eval x p = eval x q}
⊢ p = q

tactic: apply eq_zero_of_infinite_isRoot
state_before: R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝¹ : CommRing R
inst✝ : IsDomain R
p✝ q✝ p q : R[X]
h : Set.Infinite {x | eval x p = eval x q}
⊢ p - q = 0

tactic: simpa only [IsRoot, eval_sub, sub_eq_zero]
state_before: case h
R : Type u
S : Type v
T : Type w
a b : R
n : ℕ
inst✝¹ : CommRing R
inst✝ : IsDomain R
p✝ q✝ p q : R[X]
h : Set.Infinite {x | eval x p = eval x q}
⊢ Set.Infinite {x | IsRoot (p - q) x}
Theorem: Ideal.isPrimary_of_isMaximal_radical
File: Mathlib/RingTheory/JacobsonIdeal.lean

tactic: rw [← mul_one x, ← sub_sub_cancel (z * y) 1, mul_sub, mul_left_comm]
state_before: R : Type u
S : Type v
inst✝ : CommRing R
I : Ideal R
hi : IsMaximal (radical I)
this : radical I = jacobson I
x y : R
hxy : x * y ∈ I
x✝ : ∃ y_1, y_1 * y - 1 ∈ I
z : R
hz : z * y - 1 ∈ I
⊢ x ∈ I

tactic: exact I.sub_mem (I.mul_mem_left _ hxy) (I.mul_mem_left _ hz)
state_before: R : Type u
S : Type v
inst✝ : CommRing R
I : Ideal R
hi : IsMaximal (radical I)
this : radical I = jacobson I
x y : R
hxy : x * y ∈ I
x✝ : ∃ y_1, y_1 * y - 1 ∈ I
z : R
hz : z * y - 1 ∈ I
⊢ z * (x * y) - x * (z * y - 1) ∈ I
Theorem: ContDiffAt.neg
File: Mathlib/Analysis/Calculus/ContDiff.lean

tactic: rw [← contDiffWithinAt_univ] at *
state_before: 𝕜 : Type u_1
inst✝¹⁰ : NontriviallyNormedField 𝕜
D : Type uD
inst✝⁹ : NormedAddCommGroup D
inst✝⁸ : NormedSpace 𝕜 D
E : Type uE
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type uF
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type uG
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
X : Type ?u.1792460
inst✝¹ : NormedAddCommGroup X
inst✝ : NormedSpace 𝕜 X
s s₁ t u : Set E
f✝ f₁ : E → F
g : F → G
x x₀ : E
c : F
b : E × F → G
m n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
f : E → F
hf : ContDiffAt 𝕜 n f x
⊢ ContDiffAt 𝕜 n (fun x => -f x) x

tactic: exact hf.neg
state_before: 𝕜 : Type u_1
inst✝¹⁰ : NontriviallyNormedField 𝕜
D : Type uD
inst✝⁹ : NormedAddCommGroup D
inst✝⁸ : NormedSpace 𝕜 D
E : Type uE
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type uF
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type uG
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
X : Type ?u.1792460
inst✝¹ : NormedAddCommGroup X
inst✝ : NormedSpace 𝕜 X
s s₁ t u : Set E
f✝ f₁ : E → F
g : F → G
x x₀ : E
c : F
b : E × F → G
m n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
f : E → F
hf : ContDiffWithinAt 𝕜 n f univ x
⊢ ContDiffWithinAt 𝕜 n (fun x => -f x) univ x
Theorem: Basis.repr_total
File: Mathlib/LinearAlgebra/Basis.lean

tactic: rw [← b.coe_repr_symm]
state_before: ι : Type u_1
ι' : Type ?u.48934
R : Type u_2
R₂ : Type ?u.48940
K : Type ?u.48943
M : Type u_3
M' : Type ?u.48949
M'' : Type ?u.48952
V : Type u
V' : Type ?u.48957
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
b b₁ : Basis ι R M
i : ι
c : R
x : M
v : ι →₀ R
⊢ ↑b.repr (↑(Finsupp.total ι M R ↑b) v) = v

tactic: exact b.repr.apply_symm_apply v
state_before: ι : Type u_1
ι' : Type ?u.48934
R : Type u_2
R₂ : Type ?u.48940
K : Type ?u.48943
M : Type u_3
M' : Type ?u.48949
M'' : Type ?u.48952
V : Type u
V' : Type ?u.48957
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M
inst✝² : Module R M
inst✝¹ : AddCommMonoid M'
inst✝ : Module R M'
b b₁ : Basis ι R M
i : ι
c : R
x : M
v : ι →₀ R
⊢ ↑b.repr (↑↑(LinearEquiv.symm b.repr) v) = v
Theorem: Real.Angle.sin_ne_zero_iff
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Angle.lean

tactic: rw [← not_or, ← sin_eq_zero_iff]
state_before: θ : Angle
⊢ sin θ ≠ 0 ↔ θ ≠ 0 ∧ θ ≠ ↑π
Theorem: Nat.multiset_Ico_map_mod
File: Mathlib/Data/Nat/Interval.lean

tactic: convert congr_arg Finset.val (image_Ico_mod n a)
state_before: a✝ b c n a : ℕ
⊢ Multiset.map (fun x => x % a) (Multiset.Ico n (n + a)) = Multiset.range a

tactic: refine' ((nodup_map_iff_inj_on (Finset.Ico _ _).nodup).2 <| _).dedup.symm
state_before: case h.e'_2
a✝ b c n a : ℕ
⊢ Multiset.map (fun x => x % a) (Multiset.Ico n (n + a)) = (image (fun x => x % a) (Finset.Ico n (n + a))).val

tactic: exact mod_injOn_Ico _ _
state_before: case h.e'_2
a✝ b c n a : ℕ
⊢ ∀ (x : ℕ), x ∈ (Finset.Ico n (n + a)).val → ∀ (y : ℕ), y ∈ (Finset.Ico n (n + a)).val → x % a = y % a → x = y
Theorem: Subgroup.isComplement'_of_disjoint_and_mul_eq_univ
File: Mathlib/GroupTheory/Complement.lean

tactic: refine' ⟨mul_injective_of_disjoint h1, fun g => _⟩
state_before: G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
h1 : Disjoint H K
h2 : ↑H * ↑K = Set.univ
⊢ IsComplement' H K

tactic: obtain ⟨h, k, hh, hk, hg⟩ := Set.eq_univ_iff_forall.mp h2 g
state_before: G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
h1 : Disjoint H K
h2 : ↑H * ↑K = Set.univ
g : G
⊢ ∃ a, (fun x => ↑x.fst * ↑x.snd) a = g

tactic: exact ⟨(⟨h, hh⟩, ⟨k, hk⟩), hg⟩
state_before: case intro.intro.intro.intro
G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
h1 : Disjoint H K
h2 : ↑H * ↑K = Set.univ
g h k : G
hh : h ∈ ↑H
hk : k ∈ ↑K
hg : (fun x x_1 => x * x_1) h k = g
⊢ ∃ a, (fun x => ↑x.fst * ↑x.snd) a = g
Theorem: distrib_three_right
File: Mathlib/Algebra/Ring/Defs.lean

tactic: simp [right_distrib]
state_before: α : Type u
β : Type v
γ : Type w
R : Type x
inst✝² : Mul R
inst✝¹ : Add R
inst✝ : RightDistribClass R
a b c d : R
⊢ (a + b + c) * d = a * d + b * d + c * d
Theorem: Mathlib.Tactic.Ring.sub_pf
File: Mathlib/Tactic/Ring/Basic.lean

tactic: subst_vars
state_before: u : Lean.Level
R✝ : Type ?u.219701
α : Q(Type u)
sα : Q(CommSemiring «$α»)
inst✝¹ : CommSemiring R✝
R : Type u_1
inst✝ : Ring R
a b c d : R
x✝¹ : -b = c
x✝ : a + c = d
⊢ a - b = d

tactic: simp [sub_eq_add_neg]
state_before: u : Lean.Level
R✝ : Type ?u.219701
α : Q(Type u)
sα : Q(CommSemiring «$α»)
inst✝¹ : CommSemiring R✝
R : Type u_1
inst✝ : Ring R
a b : R
⊢ a - b = a + -b
Theorem: Set.singleton_unop
File: Mathlib/Data/Set/Opposite.lean

tactic: ext
state_before: α : Type u_1
x : αᵒᵖ
⊢ Set.unop {x} = {x.unop}

tactic: constructor
state_before: case h
α : Type u_1
x : αᵒᵖ
x✝ : α
⊢ x✝ ∈ Set.unop {x} ↔ x✝ ∈ {x.unop}

tactic: . apply op_injective
state_before: case h.mp
α : Type u_1
x : αᵒᵖ
x✝ : α
⊢ x✝ ∈ Set.unop {x} → x✝ ∈ {x.unop}

case h.mpr
α : Type u_1
x : αᵒᵖ
x✝ : α
⊢ x✝ ∈ {x.unop} → x✝ ∈ Set.unop {x}

tactic: . apply unop_injective
state_before: case h.mpr
α : Type u_1
x : αᵒᵖ
x✝ : α
⊢ x✝ ∈ {x.unop} → x✝ ∈ Set.unop {x}

tactic: apply op_injective
state_before: case h.mp
α : Type u_1
x : αᵒᵖ
x✝ : α
⊢ x✝ ∈ Set.unop {x} → x✝ ∈ {x.unop}

tactic: apply unop_injective
state_before: case h.mpr
α : Type u_1
x : αᵒᵖ
x✝ : α
⊢ x✝ ∈ {x.unop} → x✝ ∈ Set.unop {x}