tasksource/leandojo huggingface dataset:
Theorem: MvPolynomial.vars_sum_subset
File: Mathlib/Data/MvPolynomial/Variables.lean

tactic: classical
induction t using Finset.induction_on with
| empty => simp
| insert has hsum =>
  rw [Finset.biUnion_insert, Finset.sum_insert has]
  refine'
    Finset.Subset.trans (vars_add_subset _ _) (Finset.union_subset_union (Finset.Subset.refl _) _)
  assumption
state_before: R : Type u
S : Type v
σ : Type u_1
τ : Type ?u.192546
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝¹ : CommSemiring R
p q : MvPolynomial σ R
ι : Type u_2
t : Finset ι
φ : ι → MvPolynomial σ R
inst✝ : DecidableEq σ
⊢ vars (∑ i in t, φ i) ⊆ Finset.biUnion t fun i => vars (φ i)

tactic: induction t using Finset.induction_on with
| empty => simp
| insert has hsum =>
  rw [Finset.biUnion_insert, Finset.sum_insert has]
  refine'
    Finset.Subset.trans (vars_add_subset _ _) (Finset.union_subset_union (Finset.Subset.refl _) _)
  assumption
state_before: R : Type u
S : Type v
σ : Type u_1
τ : Type ?u.192546
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝¹ : CommSemiring R
p q : MvPolynomial σ R
ι : Type u_2
t : Finset ι
φ : ι → MvPolynomial σ R
inst✝ : DecidableEq σ
⊢ vars (∑ i in t, φ i) ⊆ Finset.biUnion t fun i => vars (φ i)

tactic: simp
state_before: case empty
R : Type u
S : Type v
σ : Type u_1
τ : Type ?u.192546
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝¹ : CommSemiring R
p q : MvPolynomial σ R
ι : Type u_2
t : Finset ι
φ : ι → MvPolynomial σ R
inst✝ : DecidableEq σ
⊢ vars (∑ i in ∅, φ i) ⊆ Finset.biUnion ∅ fun i => vars (φ i)

tactic: rw [Finset.biUnion_insert, Finset.sum_insert has]
state_before: case insert
R : Type u
S : Type v
σ : Type u_1
τ : Type ?u.192546
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝¹ : CommSemiring R
p q : MvPolynomial σ R
ι : Type u_2
t : Finset ι
φ : ι → MvPolynomial σ R
inst✝ : DecidableEq σ
a✝ : ι
s✝ : Finset ι
has : ¬a✝ ∈ s✝
hsum : vars (∑ i in s✝, φ i) ⊆ Finset.biUnion s✝ fun i => vars (φ i)
⊢ vars (∑ i in insert a✝ s✝, φ i) ⊆ Finset.biUnion (insert a✝ s✝) fun i => vars (φ i)

tactic: refine'
  Finset.Subset.trans (vars_add_subset _ _) (Finset.union_subset_union (Finset.Subset.refl _) _)
state_before: case insert
R : Type u
S : Type v
σ : Type u_1
τ : Type ?u.192546
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝¹ : CommSemiring R
p q : MvPolynomial σ R
ι : Type u_2
t : Finset ι
φ : ι → MvPolynomial σ R
inst✝ : DecidableEq σ
a✝ : ι
s✝ : Finset ι
has : ¬a✝ ∈ s✝
hsum : vars (∑ i in s✝, φ i) ⊆ Finset.biUnion s✝ fun i => vars (φ i)
⊢ vars (φ a✝ + ∑ x in s✝, φ x) ⊆ vars (φ a✝) ∪ Finset.biUnion s✝ fun i => vars (φ i)

tactic: assumption
state_before: case insert
R : Type u
S : Type v
σ : Type u_1
τ : Type ?u.192546
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝¹ : CommSemiring R
p q : MvPolynomial σ R
ι : Type u_2
t : Finset ι
φ : ι → MvPolynomial σ R
inst✝ : DecidableEq σ
a✝ : ι
s✝ : Finset ι
has : ¬a✝ ∈ s✝
hsum : vars (∑ i in s✝, φ i) ⊆ Finset.biUnion s✝ fun i => vars (φ i)
⊢ vars (∑ x in s✝, φ x) ⊆ Finset.biUnion s✝ fun i => vars (φ i)
Theorem: QuotientMap.image_connectedComponent
File: Mathlib/Topology/Connected.lean

tactic: rw [← hf.preimage_connectedComponent h_fibers, image_preimage_eq _ hf.surjective]
state_before: α : Type u
β : Type v
ι : Type ?u.111703
π : ι → Type ?u.111708
inst✝¹ : TopologicalSpace α
s t u v : Set α
inst✝ : TopologicalSpace β
f : α → β
hf : QuotientMap f
h_fibers : ∀ (y : β), IsConnected (f ⁻¹' {y})
a : α
⊢ f '' connectedComponent a = connectedComponent (f a)
Theorem: SimpleGraph.Subgraph.induce_self_verts
File: Mathlib/Combinatorics/SimpleGraph/Subgraph.lean

tactic: ext
state_before: ι : Sort ?u.260819
V : Type u
W : Type v
G : SimpleGraph V
G' G'' : Subgraph G
s s' : Set V
⊢ induce G' G'.verts = G'

tactic: simp
state_before: case verts.h
ι : Sort ?u.260819
V : Type u
W : Type v
G : SimpleGraph V
G' G'' : Subgraph G
s s' : Set V
x✝ : V
⊢ x✝ ∈ (induce G' G'.verts).verts ↔ x✝ ∈ G'.verts

tactic: constructor <;>
  simp (config := { contextual := true }) only [induce_Adj, imp_true_iff, and_true_iff]
state_before: case Adj.h.h.a
ι : Sort ?u.260819
V : Type u
W : Type v
G : SimpleGraph V
G' G'' : Subgraph G
s s' : Set V
x✝¹ x✝ : V
⊢ Adj (induce G' G'.verts) x✝¹ x✝ ↔ Adj G' x✝¹ x✝

tactic: exact fun ha ↦ ⟨G'.edge_vert ha, G'.edge_vert ha.symm⟩
state_before: case Adj.h.h.a.mpr
ι : Sort ?u.260819
V : Type u
W : Type v
G : SimpleGraph V
G' G'' : Subgraph G
s s' : Set V
x✝¹ x✝ : V
⊢ Adj G' x✝¹ x✝ → x✝¹ ∈ G'.verts ∧ x✝ ∈ G'.verts
Theorem: CategoryTheory.Limits.limit.id_pre
File: Mathlib/CategoryTheory/Limits/HasLimits.lean

tactic: aesop_cat
state_before: J : Type u₁
inst✝³ : Category J
K : Type u₂
inst✝² : Category K
C : Type u
inst✝¹ : Category C
F✝ : J ⥤ C
inst✝ : HasLimitsOfShape J C
G : J ⥤ C
α : F✝ ⟶ G
F : J ⥤ C
⊢ pre F (𝟭 J) = lim.map (leftUnitor F).inv
Theorem: OrthonormalBasis.coe_ofRepr
File: Mathlib/Analysis/InnerProductSpace/PiL2.lean

tactic: dsimp only [FunLike.coe]
state_before: ι : Type u_1
ι' : Type ?u.767988
𝕜 : Type u_2
inst✝¹⁰ : IsROrC 𝕜
E : Type u_3
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : InnerProductSpace 𝕜 E
E' : Type ?u.768017
inst✝⁷ : NormedAddCommGroup E'
inst✝⁶ : InnerProductSpace 𝕜 E'
F : Type ?u.768035
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : InnerProductSpace ℝ F
F' : Type ?u.768055
inst✝³ : NormedAddCommGroup F'
inst✝² : InnerProductSpace ℝ F'
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
e : E ≃ₗᵢ[𝕜] EuclideanSpace 𝕜 ι
⊢ ↑{ repr := e } = fun i => ↑(LinearIsometryEquiv.symm e) (EuclideanSpace.single i 1)

tactic: funext
state_before: ι : Type u_1
ι' : Type ?u.767988
𝕜 : Type u_2
inst✝¹⁰ : IsROrC 𝕜
E : Type u_3
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : InnerProductSpace 𝕜 E
E' : Type ?u.768017
inst✝⁷ : NormedAddCommGroup E'
inst✝⁶ : InnerProductSpace 𝕜 E'
F : Type ?u.768035
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : InnerProductSpace ℝ F
F' : Type ?u.768055
inst✝³ : NormedAddCommGroup F'
inst✝² : InnerProductSpace ℝ F'
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
e : E ≃ₗᵢ[𝕜] EuclideanSpace 𝕜 ι
⊢ (fun i => EquivLike.coe (LinearIsometryEquiv.symm e) (EuclideanSpace.single i 1)) = fun i =>
    EquivLike.coe (LinearIsometryEquiv.symm e) (EuclideanSpace.single i 1)

tactic: congr!
state_before: case h
ι : Type u_1
ι' : Type ?u.767988
𝕜 : Type u_2
inst✝¹⁰ : IsROrC 𝕜
E : Type u_3
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : InnerProductSpace 𝕜 E
E' : Type ?u.768017
inst✝⁷ : NormedAddCommGroup E'
inst✝⁶ : InnerProductSpace 𝕜 E'
F : Type ?u.768035
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : InnerProductSpace ℝ F
F' : Type ?u.768055
inst✝³ : NormedAddCommGroup F'
inst✝² : InnerProductSpace ℝ F'
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
e : E ≃ₗᵢ[𝕜] EuclideanSpace 𝕜 ι
x✝ : ι
⊢ EquivLike.coe (LinearIsometryEquiv.symm e) (EuclideanSpace.single x✝ 1) =
    EquivLike.coe (LinearIsometryEquiv.symm e) (EuclideanSpace.single x✝ 1)
Theorem: LeftOrdContinuous.lt_iff
File: Mathlib/Order/OrdContinuous.lean

tactic: simp only [lt_iff_le_not_le, hf.le_iff h]
state_before: α : Type u
β : Type v
γ : Type w
ι : Sort x
inst✝¹ : SemilatticeSup α
inst✝ : SemilatticeSup β
f : α → β
hf : LeftOrdContinuous f
h : Injective f
x y : α
⊢ f x < f y ↔ x < y
Theorem: LieSubmodule.trivial_lie_oper_zero
File: Mathlib/Algebra/Lie/Abelian.lean

tactic: suffices : ⁅I, N⁆ ≤ ⊥
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
inst✝ : LieModule.IsTrivial L M
⊢ ⁅I, N⁆ = ⊥

tactic: exact le_bot_iff.mp this
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
inst✝ : LieModule.IsTrivial L M
this : ⁅I, N⁆ ≤ ⊥
⊢ ⁅I, N⁆ = ⊥

case this
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
inst✝ : LieModule.IsTrivial L M
⊢ ⁅I, N⁆ ≤ ⊥

tactic: rw [lieIdeal_oper_eq_span, LieSubmodule.lieSpan_le]
state_before: case this
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
inst✝ : LieModule.IsTrivial L M
⊢ ⁅I, N⁆ ≤ ⊥

tactic: rintro m ⟨x, n, h⟩
state_before: case this
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
inst✝ : LieModule.IsTrivial L M
⊢ {m | ∃ x n, ⁅↑x, ↑n⁆ = m} ⊆ ↑⊥

tactic: rw [trivial_lie_zero] at h
state_before: case this.intro.intro
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
inst✝ : LieModule.IsTrivial L M
m : M
x : { x // x ∈ I }
n : { x // x ∈ N }
h : ⁅↑x, ↑n⁆ = m
⊢ m ∈ ↑⊥

tactic: simp [← h]
state_before: case this.intro.intro
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
inst✝ : LieModule.IsTrivial L M
m : M
x : { x // x ∈ I }
n : { x // x ∈ N }
h : 0 = m
⊢ m ∈ ↑⊥
Theorem: Polynomial.trinomial_middle_coeff
File: Mathlib/Data/Polynomial/UnitTrinomial.lean

tactic: rw [trinomial_def, coeff_add, coeff_add, coeff_C_mul_X_pow, coeff_C_mul_X_pow, coeff_C_mul_X_pow,
  if_neg hkm.ne', if_pos rfl, if_neg hmn.ne, zero_add, add_zero]
state_before: R : Type u_1
inst✝ : Semiring R
k m n : ℕ
u v w : R
hkm : k < m
hmn : m < n
⊢ coeff (trinomial k m n u v w) m = v
Theorem: List.contains_eq_any_beq
File: Std/Data/List/Lemmas.lean

tactic: induction l with simp | cons b l => cases a == b <;> simp [*]
state_before: α : Type u_1
inst✝ : BEq α
l : List α
a : α
⊢ contains l a = any l fun x => a == x

tactic: cases a == b <;> simp [*]
state_before: case cons
α : Type u_1
inst✝ : BEq α
a b : α
l : List α
tail_ih✝ : contains l a = any l fun x => a == x
⊢ (match a == b with
    | true => true
    | false => elem a l) =
    (a == b || any l fun x => a == x)
Theorem: edist_mul_mul_le
File: Mathlib/Analysis/Normed/Group/Basic.lean

tactic: simp only [edist_nndist]
state_before: 𝓕 : Type ?u.1099733
𝕜 : Type ?u.1099736
α : Type ?u.1099739
ι : Type ?u.1099742
κ : Type ?u.1099745
E : Type u_1
F : Type ?u.1099751
G : Type ?u.1099754
inst✝¹ : SeminormedCommGroup E
inst✝ : SeminormedCommGroup F
a a₁✝ a₂✝ b b₁✝ b₂✝ : E
r r₁ r₂ : ℝ
a₁ a₂ b₁ b₂ : E
⊢ edist (a₁ * a₂) (b₁ * b₂) ≤ edist a₁ b₁ + edist a₂ b₂

tactic: norm_cast
state_before: 𝓕 : Type ?u.1099733
𝕜 : Type ?u.1099736
α : Type ?u.1099739
ι : Type ?u.1099742
κ : Type ?u.1099745
E : Type u_1
F : Type ?u.1099751
G : Type ?u.1099754
inst✝¹ : SeminormedCommGroup E
inst✝ : SeminormedCommGroup F
a a₁✝ a₂✝ b b₁✝ b₂✝ : E
r r₁ r₂ : ℝ
a₁ a₂ b₁ b₂ : E
⊢ ↑(nndist (a₁ * a₂) (b₁ * b₂)) ≤ ↑(nndist a₁ b₁) + ↑(nndist a₂ b₂)

tactic: apply nndist_mul_mul_le
state_before: 𝓕 : Type ?u.1099733
𝕜 : Type ?u.1099736
α : Type ?u.1099739
ι : Type ?u.1099742
κ : Type ?u.1099745
E : Type u_1
F : Type ?u.1099751
G : Type ?u.1099754
inst✝¹ : SeminormedCommGroup E
inst✝ : SeminormedCommGroup F
a a₁✝ a₂✝ b b₁✝ b₂✝ : E
r r₁ r₂ : ℝ
a₁ a₂ b₁ b₂ : E
⊢ nndist (a₁ * a₂) (b₁ * b₂) ≤ nndist a₁ b₁ + nndist a₂ b₂
Theorem: Int.eq_one_or_neg_one_of_mul_eq_one'
File: Mathlib/Data/Int/Units.lean

tactic: have h' : w * z = 1 := mul_comm z w ▸ h
state_before: z w : ℤ
h : z * w = 1
⊢ z = 1 ∧ w = 1 ∨ z = -1 ∧ w = -1

tactic: rcases eq_one_or_neg_one_of_mul_eq_one h with (rfl | rfl) <;>
    rcases eq_one_or_neg_one_of_mul_eq_one h' with (rfl | rfl) <;> tauto
state_before: z w : ℤ
h : z * w = 1
h' : w * z = 1
⊢ z = 1 ∧ w = 1 ∨ z = -1 ∧ w = -1
Theorem: Bool.xor_not_right
File: Mathlib/Data/Bool/Basic.lean

tactic: decide
state_before: ⊢ ∀ (a : Bool), (xor a !a) = true
Theorem: Complex.frontier_setOf_lt_im
File: Mathlib/Analysis/Complex/ReImTopology.lean

tactic: simpa only [frontier_Ioi] using frontier_preimage_im (Ioi a)
state_before: a : ℝ
⊢ frontier {z | a < z.im} = {z | z.im = a}
Theorem: zpow_mul'
File: Mathlib/Algebra/GroupPower/Lemmas.lean

tactic: rw [mul_comm, zpow_mul]
state_before: α : Type u_1
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✝ : DivisionMonoid α
a : α
m n : ℤ
⊢ a ^ (m * n) = (a ^ n) ^ m
Theorem: MvPolynomial.vars_def
File: Mathlib/Data/MvPolynomial/Variables.lean

tactic: rw [vars]
state_before: R : Type u
S : Type v
σ : Type u_1
τ : Type ?u.125486
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝¹ : CommSemiring R
p✝ q : MvPolynomial σ R
inst✝ : DecidableEq σ
p : MvPolynomial σ R
⊢ vars p = Multiset.toFinset (degrees p)

tactic: convert rfl
state_before: R : Type u
S : Type v
σ : Type u_1
τ : Type ?u.125486
r : R
e : ℕ
n m : σ
s : σ →₀ ℕ
inst✝¹ : CommSemiring R
p✝ q : MvPolynomial σ R
inst✝ : DecidableEq σ
p : MvPolynomial σ R
⊢ Multiset.toFinset (degrees p) = Multiset.toFinset (degrees p)
Theorem: Submodule.torsionBy_isInternal
File: Mathlib/Algebra/Module/Torsion.lean

tactic: rw [← Module.isTorsionBySet_span_singleton_iff, Ideal.submodule_span_eq, ←
  Ideal.finset_inf_span_singleton _ _ hq, Finset.inf_eq_iInf] at hM
state_before: R : Type u_2
M : Type u_3
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
ι : Type u_1
inst✝ : DecidableEq ι
S : Finset ι
q : ι → R
hq : Set.Pairwise (↑S) (IsCoprime on q)
hM : Module.IsTorsionBy R M (∏ i in S, q i)
⊢ DirectSum.IsInternal fun i => torsionBy R M (q ↑i)

tactic: convert torsionBySet_isInternal
    (fun i hi j hj ij => (Ideal.sup_eq_top_iff_isCoprime (q i) _).mpr <| hq hi hj ij) hM
state_before: R : Type u_2
M : Type u_3
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
ι : Type u_1
inst✝ : DecidableEq ι
S : Finset ι
q : ι → R
hq : Set.Pairwise (↑S) (IsCoprime on q)
hM : Module.IsTorsionBySet R M ↑(⨅ (a : ι) (_ : a ∈ S), Ideal.span {q a})
⊢ DirectSum.IsInternal fun i => torsionBy R M (q ↑i)

tactic: exact (torsionBySet_span_singleton_eq _ (R := R) (M := M)).symm
state_before: case h.e'_8.h
R : Type u_2
M : Type u_3
inst✝³ : CommRing R
inst✝² : AddCommGroup M
inst✝¹ : Module R M
ι : Type u_1
inst✝ : DecidableEq ι
S : Finset ι
q : ι → R
hq : Set.Pairwise (↑S) (IsCoprime on q)
hM : Module.IsTorsionBySet R M ↑(⨅ (a : ι) (_ : a ∈ S), Ideal.span {q a})
x✝ : { x // x ∈ S }
⊢ torsionBy R M (q ↑x✝) = torsionBySet R M ↑(Ideal.span {q ↑x✝})
Theorem: Cardinal.cantorFunctionAux_true
File: Mathlib/Data/Real/Cardinality.lean

tactic: simp [cantorFunctionAux, h]
state_before: c : ℝ
f g : ℕ → Bool
n : ℕ
h : f n = true
⊢ cantorFunctionAux c f n = c ^ n
Theorem: PartENat.natCast_lt_top
File: Mathlib/Data/Nat/PartENat.lean

tactic: simp only [dom_natCast]
state_before: x : ℕ
h : ↑x = ⊤
⊢ ¬(↑x).Dom = ⊤.Dom

tactic: exact true_ne_false
state_before: x : ℕ
h : ↑x = ⊤
⊢ ¬True = ⊤.Dom
Theorem: ClosedEmbedding.locallyCompactSpace
File: Mathlib/Topology/SubsetProperties.lean

tactic: intro x
state_before: α : Type u
β : Type v
ι : Type ?u.149230
π : ι → Type ?u.149235
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : LocallyCompactSpace β
f : α → β
hf : ClosedEmbedding f
⊢ ∀ (x : α), HasBasis (𝓝 x) (fun s => s ∈ 𝓝 (f x) ∧ IsCompact s) fun s => f ⁻¹' s

tactic: rw [hf.toInducing.nhds_eq_comap]
state_before: α : Type u
β : Type v
ι : Type ?u.149230
π : ι → Type ?u.149235
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : LocallyCompactSpace β
f : α → β
hf : ClosedEmbedding f
x : α
⊢ HasBasis (𝓝 x) (fun s => s ∈ 𝓝 (f x) ∧ IsCompact s) fun s => f ⁻¹' s

tactic: exact (compact_basis_nhds _).comap _
state_before: α : Type u
β : Type v
ι : Type ?u.149230
π : ι → Type ?u.149235
inst✝² : TopologicalSpace α
inst✝¹ : TopologicalSpace β
s t : Set α
inst✝ : LocallyCompactSpace β
f : α → β
hf : ClosedEmbedding f
x : α
⊢ HasBasis (comap f (𝓝 (f x))) (fun s => s ∈ 𝓝 (f x) ∧ IsCompact s) fun s => f ⁻¹' s
Theorem: Fin.cases_succ
File: Mathlib/Data/Fin/Basic.lean

tactic: cases i
state_before: n✝ m n : ℕ
C : Fin (n + 1) → Sort u_1
H0 : C 0
Hs : (i : Fin n) → C (succ i)
i : Fin n
⊢ cases H0 Hs (succ i) = Hs i

tactic: rfl
state_before: case mk
n✝ m n : ℕ
C : Fin (n + 1) → Sort u_1
H0 : C 0
Hs : (i : Fin n) → C (succ i)
val✝ : ℕ
isLt✝ : val✝ < n
⊢ cases H0 Hs (succ { val := val✝, isLt := isLt✝ }) = Hs { val := val✝, isLt := isLt✝ }
Theorem: SimpleGraph.hasse_preconnected_of_pred
File: Mathlib/Combinatorics/SimpleGraph/Hasse.lean

tactic: rw [reachable_iff_reflTransGen, ← reflTransGen_swap]
state_before: α : Type u_1
β : Type ?u.6930
inst✝² : LinearOrder α
inst✝¹ : PredOrder α
inst✝ : IsPredArchimedean α
a b : α
⊢ Reachable (hasse α) a b

tactic: exact
  reflTransGen_of_pred _ (fun c hc => Or.inl <| pred_covby_of_not_isMin hc.1.not_isMin)
    fun c hc => Or.inr <| pred_covby_of_not_isMin hc.1.not_isMin
state_before: α : Type u_1
β : Type ?u.6930
inst✝² : LinearOrder α
inst✝¹ : PredOrder α
inst✝ : IsPredArchimedean α
a b : α
⊢ ReflTransGen (Function.swap (hasse α).Adj) b a
Theorem: EuclideanGeometry.angle_le_pi_div_two_of_angle_eq_pi_div_two
File: Mathlib/Geometry/Euclidean/Angle/Unoriented/RightAngle.lean

tactic: rw [angle, ← inner_eq_zero_iff_angle_eq_pi_div_two, real_inner_comm, ← neg_eq_zero, ←
  inner_neg_left, neg_vsub_eq_vsub_rev] at h
state_before: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
p₁ p₂ p₃ : P
h : ∠ p₁ p₂ p₃ = π / 2
⊢ ∠ p₂ p₃ p₁ ≤ π / 2

tactic: rw [angle, ← vsub_add_vsub_cancel p₁ p₂ p₃, add_comm]
state_before: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
p₁ p₂ p₃ : P
h : inner (p₂ -ᵥ p₃) (p₁ -ᵥ p₂) = 0
⊢ ∠ p₂ p₃ p₁ ≤ π / 2

tactic: exact angle_add_le_pi_div_two_of_inner_eq_zero h
state_before: V : Type u_1
P : Type u_2
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
p₁ p₂ p₃ : P
h : inner (p₂ -ᵥ p₃) (p₁ -ᵥ p₂) = 0
⊢ InnerProductGeometry.angle (p₂ -ᵥ p₃) (p₂ -ᵥ p₃ + (p₁ -ᵥ p₂)) ≤ π / 2
Theorem: untrop_prod
File: Mathlib/Algebra/Tropical/BigOperators.lean

tactic: convert Multiset.untrop_prod (s.val.map f)
state_before: R : Type u_1
S : Type u_2
inst✝ : AddCommMonoid R
s : Finset S
f : S → Tropical R
⊢ untrop (∏ i in s, f i) = ∑ i in s, untrop (f i)

tactic: simp only [Multiset.map_map, Function.comp_apply]
state_before: case h.e'_3
R : Type u_1
S : Type u_2
inst✝ : AddCommMonoid R
s : Finset S
f : S → Tropical R
⊢ ∑ i in s, untrop (f i) = Multiset.sum (Multiset.map untrop (Multiset.map f s.val))

tactic: rfl
state_before: case h.e'_3
R : Type u_1
S : Type u_2
inst✝ : AddCommMonoid R
s : Finset S
f : S → Tropical R
⊢ ∑ i in s, untrop (f i) = Multiset.sum (Multiset.map (fun i => untrop (f i)) s.val)
Theorem: contDiff_iff_contDiffAt
File: Mathlib/Analysis/Calculus/ContDiffDef.lean

tactic: simp [← contDiffOn_univ, ContDiffOn, ContDiffAt]
state_before: 𝕜 : Type u
inst✝⁸ : NontriviallyNormedField 𝕜
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 uX
inst✝¹ : NormedAddCommGroup X
inst✝ : NormedSpace 𝕜 X
s s₁ t u : Set E
f f₁ : E → F
g : F → G
x x₀ : E
c : F
m n : ℕ∞
p : E → FormalMultilinearSeries 𝕜 E F
⊢ ContDiff 𝕜 n f ↔ ∀ (x : E), ContDiffAt 𝕜 n f x
Theorem: DoubleCentralizer.coe_eq_algebraMap
File: Mathlib/Analysis/NormedSpace/Star/Multiplier.lean

tactic: ext <;>
simp only [coe_fst, mul_apply', mul_one, algebraMap_toProd, Prod.algebraMap_apply, coe_snd,
  flip_apply, one_mul] <;>
simp only [Algebra.algebraMap_eq_smul_one, smul_apply, one_apply, smul_eq_mul, mul_one]
state_before: 𝕜 : Type u_1
A : Type ?u.864686
inst✝⁴ : NontriviallyNormedField 𝕜
inst✝³ : NonUnitalNormedRing A
inst✝² : NormedSpace 𝕜 A
inst✝¹ : SMulCommClass 𝕜 A A
inst✝ : IsScalarTower 𝕜 A A
⊢ ↑𝕜 = ↑(algebraMap 𝕜 𝓜(𝕜, 𝕜))
Theorem: IsLUB.mul_right
File: Mathlib/Algebra/Order/Field/Basic.lean

tactic: simpa [mul_comm] using hs.mul_left ha
state_before: ι : Type ?u.191131
α : Type u_1
β : Type ?u.191137
inst✝ : LinearOrderedField α
a b c d : α
n : ℤ
s : Set α
ha : 0 ≤ a
hs : IsLUB s b
⊢ IsLUB ((fun b => b * a) '' s) (b * a)
Theorem: AlgebraicIndependent.algebraMap_injective
File: Mathlib/RingTheory/AlgebraicIndependent.lean

tactic: simpa [← MvPolynomial.algebraMap_eq, Function.comp] using
  (Injective.of_comp_iff (algebraicIndependent_iff_injective_aeval.1 hx) MvPolynomial.C).2
    (MvPolynomial.C_injective _ _)
state_before: ι : Type ?u.101051
ι' : Type ?u.101054
R : Type u_1
K : Type ?u.101060
A : Type u_2
A' : Type ?u.101066
A'' : Type ?u.101069
V : Type u
V' : Type ?u.101074
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
hx : AlgebraicIndependent R x
⊢ Injective ↑(algebraMap R A)
Theorem: nndist_inv_inv₀
File: Mathlib/Analysis/Normed/Field/Basic.lean

tactic: rw [← NNReal.coe_eq]
state_before: α : Type u_1
β : Type ?u.270994
γ : Type ?u.270997
ι : Type ?u.271000
inst✝ : NormedDivisionRing α
z w : α
hz : z ≠ 0
hw : w ≠ 0
⊢ nndist z⁻¹ w⁻¹ = nndist z w / (‖z‖₊ * ‖w‖₊)

tactic: simp [-NNReal.coe_eq, dist_inv_inv₀ hz hw]
state_before: α : Type u_1
β : Type ?u.270994
γ : Type ?u.270997
ι : Type ?u.271000
inst✝ : NormedDivisionRing α
z w : α
hz : z ≠ 0
hw : w ≠ 0
⊢ ↑(nndist z⁻¹ w⁻¹) = ↑(nndist z w / (‖z‖₊ * ‖w‖₊))
Theorem: Even.neg_pow
File: Mathlib/Algebra/Parity.lean

tactic: rintro ⟨c, rfl⟩ a
state_before: F : Type ?u.20712
α : Type u_1
β : Type ?u.20718
R : Type ?u.20721
inst✝¹ : Monoid α
n : ℕ
a : α
inst✝ : HasDistribNeg α
⊢ Even n → ∀ (a : α), (-a) ^ n = a ^ n

tactic: simp_rw [← two_mul, pow_mul, neg_sq]
state_before: case intro
F : Type ?u.20712
α : Type u_1
β : Type ?u.20718
R : Type ?u.20721
inst✝¹ : Monoid α
a✝ : α
inst✝ : HasDistribNeg α
c : ℕ
a : α
⊢ (-a) ^ (c + c) = a ^ (c + c)