tasksource/leandojo huggingface dataset:
Theorem: LocalHomeomorph.isOpen_extend_source
File: Mathlib/Geometry/Manifold/SmoothManifoldWithCorners.lean

tactic: rw [extend_source]
state_before: 𝕜 : Type u_3
E : Type u_2
M : Type u_1
H : Type u_4
E' : Type ?u.129280
M' : Type ?u.129283
H' : Type ?u.129286
inst✝⁸ : NontriviallyNormedField 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
inst✝⁵ : TopologicalSpace H
inst✝⁴ : TopologicalSpace M
f f' : LocalHomeomorph M H
I : ModelWithCorners 𝕜 E H
inst✝³ : NormedAddCommGroup E'
inst✝² : NormedSpace 𝕜 E'
inst✝¹ : TopologicalSpace H'
inst✝ : TopologicalSpace M'
I' : ModelWithCorners 𝕜 E' H'
x : M
s t : Set M
⊢ IsOpen (extend f I).source

tactic: exact f.open_source
state_before: 𝕜 : Type u_3
E : Type u_2
M : Type u_1
H : Type u_4
E' : Type ?u.129280
M' : Type ?u.129283
H' : Type ?u.129286
inst✝⁸ : NontriviallyNormedField 𝕜
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
inst✝⁵ : TopologicalSpace H
inst✝⁴ : TopologicalSpace M
f f' : LocalHomeomorph M H
I : ModelWithCorners 𝕜 E H
inst✝³ : NormedAddCommGroup E'
inst✝² : NormedSpace 𝕜 E'
inst✝¹ : TopologicalSpace H'
inst✝ : TopologicalSpace M'
I' : ModelWithCorners 𝕜 E' H'
x : M
s t : Set M
⊢ IsOpen f.source
Theorem: MeasureTheory.SimpleFunc.support_eq
File: Mathlib/MeasureTheory/Function/SimpleFunc.lean

tactic: simp only [mem_support, Set.mem_preimage, mem_filter, mem_range_self, true_and_iff, exists_prop,
  mem_iUnion, Set.mem_range, mem_singleton_iff, exists_eq_right']
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.903481
δ : Type ?u.903484
inst✝¹ : MeasurableSpace α
inst✝ : Zero β
f : α →ₛ β
x : α
⊢ x ∈ support ↑f ↔ x ∈ ⋃ (y : β) (_ : y ∈ filter (fun y => y ≠ 0) (SimpleFunc.range f)), ↑f ⁻¹' {y}
Theorem: EuclideanDomain.dvd_mod_iff
File: Mathlib/Algebra/EuclideanDomain/Basic.lean

tactic: rw [← dvd_add_right (h.mul_right _), div_add_mod]
state_before: R : Type u
inst✝ : EuclideanDomain R
a b c : R
h : c ∣ b
⊢ c ∣ a % b ↔ c ∣ a
Theorem: EuclideanSpace.single_apply
File: Mathlib/Analysis/InnerProductSpace/PiL2.lean

tactic: rw [EuclideanSpace.single, PiLp.equiv_symm_apply, ← Pi.single_apply i a j]
state_before: ι : Type u_1
ι' : Type ?u.584231
𝕜 : Type u_2
inst✝¹⁰ : IsROrC 𝕜
E : Type ?u.584240
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : InnerProductSpace 𝕜 E
E' : Type ?u.584260
inst✝⁷ : NormedAddCommGroup E'
inst✝⁶ : InnerProductSpace 𝕜 E'
F : Type ?u.584278
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : InnerProductSpace ℝ F
F' : Type ?u.584298
inst✝³ : NormedAddCommGroup F'
inst✝² : InnerProductSpace ℝ F'
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
i : ι
a : 𝕜
j : ι
⊢ single i a j = if j = i then a else 0
Theorem: PreconnectedSpace.trivial_of_discrete
File: Mathlib/Topology/Separation.lean

tactic: rw [← not_nontrivial_iff_subsingleton]
state_before: α : Type u
β : Type v
inst✝² : TopologicalSpace α
inst✝¹ : PreconnectedSpace α
inst✝ : DiscreteTopology α
⊢ Subsingleton α

tactic: rintro ⟨x, y, hxy⟩
state_before: α : Type u
β : Type v
inst✝² : TopologicalSpace α
inst✝¹ : PreconnectedSpace α
inst✝ : DiscreteTopology α
⊢ ¬Nontrivial α

tactic: rw [Ne.def, ← mem_singleton_iff, (isClopen_discrete _).eq_univ <| singleton_nonempty y] at hxy
state_before: case mk.intro.intro
α : Type u
β : Type v
inst✝² : TopologicalSpace α
inst✝¹ : PreconnectedSpace α
inst✝ : DiscreteTopology α
x y : α
hxy : x ≠ y
⊢ False

tactic: exact hxy (mem_univ x)
state_before: case mk.intro.intro
α : Type u
β : Type v
inst✝² : TopologicalSpace α
inst✝¹ : PreconnectedSpace α
inst✝ : DiscreteTopology α
x y : α
hxy : ¬x ∈ univ
⊢ False
Theorem: Primrec.option_bind
File: Mathlib/Computability/Primrec.lean

tactic: cases f a <;> rfl
state_before: α : Type u_3
β : Type u_1
γ : Type ?u.113880
δ : Type ?u.113883
σ : Type u_2
inst✝⁴ : Primcodable α
inst✝³ : Primcodable β
inst✝² : Primcodable γ
inst✝¹ : Primcodable δ
inst✝ : Primcodable σ
f : α → Option β
g : α → β → Option σ
hf : Primrec f
hg : Primrec₂ g
a : α
⊢ Option.casesOn (f a) none (g a) = Option.bind (f a) (g a)
Theorem: Nat.div_pos
File: Mathlib/Data/Nat/Basic.lean

tactic: simpa [h] using (mod_add_div a b).symm
state_before: m n k a b : ℕ
hba : b ≤ a
hb : 0 < b
h : a / b = 0
⊢ a = a % b
Theorem: coplanar_insert_iff_of_mem_affineSpan
File: Mathlib/LinearAlgebra/AffineSpace/FiniteDimensional.lean

tactic: rw [Coplanar, Coplanar, vectorSpan_insert_eq_vectorSpan h]
state_before: k : Type u_2
V : Type u_3
P : Type u_1
ι : Type ?u.356602
inst✝³ : DivisionRing k
inst✝² : AddCommGroup V
inst✝¹ : Module k V
inst✝ : AffineSpace V P
s : Set P
p : P
h : p ∈ affineSpan k s
⊢ Coplanar k (insert p s) ↔ Coplanar k s
Theorem: QuasilinearOn.monotoneOn_or_antitoneOn
File: Mathlib/Analysis/Convex/Quasiconvex.lean

tactic: simp_rw [monotoneOn_or_antitoneOn_iff_uIcc, ← segment_eq_uIcc]
state_before: 𝕜 : Type u_1
E : Type ?u.63373
F : Type ?u.63376
β : Type u_2
inst✝¹ : LinearOrderedField 𝕜
inst✝ : LinearOrderedAddCommMonoid β
s : Set 𝕜
f : 𝕜 → β
hf : QuasilinearOn 𝕜 s f
⊢ MonotoneOn f s ∨ AntitoneOn f s

tactic: rintro a ha b hb c _ h
state_before: 𝕜 : Type u_1
E : Type ?u.63373
F : Type ?u.63376
β : Type u_2
inst✝¹ : LinearOrderedField 𝕜
inst✝ : LinearOrderedAddCommMonoid β
s : Set 𝕜
f : 𝕜 → β
hf : QuasilinearOn 𝕜 s f
⊢ ∀ (a : 𝕜), a ∈ s → ∀ (b : 𝕜), b ∈ s → ∀ (c : 𝕜), c ∈ s → c ∈ segment 𝕜 a b → f c ∈ uIcc (f a) (f b)

tactic: refine' ⟨((hf.2 _).segment_subset _ _ h).2, ((hf.1 _).segment_subset _ _ h).2⟩ <;> simp [*]
state_before: 𝕜 : Type u_1
E : Type ?u.63373
F : Type ?u.63376
β : Type u_2
inst✝¹ : LinearOrderedField 𝕜
inst✝ : LinearOrderedAddCommMonoid β
s : Set 𝕜
f : 𝕜 → β
hf : QuasilinearOn 𝕜 s f
a : 𝕜
ha : a ∈ s
b : 𝕜
hb : b ∈ s
c : 𝕜
x✝ : c ∈ s
h : c ∈ segment 𝕜 a b
⊢ f c ∈ uIcc (f a) (f b)
Theorem: Polynomial.natDegree_smul_of_smul_regular
File: Mathlib/Data/Polynomial/Monic.lean

tactic: by_cases hp : p = 0
state_before: R : Type u
S✝ : Type v
a b : R
m n : ℕ
ι : Type y
inst✝² : Semiring R
p✝ : R[X]
S : Type u_1
inst✝¹ : Monoid S
inst✝ : DistribMulAction S R
k : S
p : R[X]
h : IsSMulRegular R k
⊢ natDegree (k • p) = natDegree p

tactic: rw [← WithBot.coe_eq_coe, ← Nat.cast_withBot, ←Nat.cast_withBot,
    ← degree_eq_natDegree hp, ← degree_eq_natDegree,
  degree_smul_of_smul_regular p h]
state_before: case neg
R : Type u
S✝ : Type v
a b : R
m n : ℕ
ι : Type y
inst✝² : Semiring R
p✝ : R[X]
S : Type u_1
inst✝¹ : Monoid S
inst✝ : DistribMulAction S R
k : S
p : R[X]
h : IsSMulRegular R k
hp : ¬p = 0
⊢ natDegree (k • p) = natDegree p

tactic: contrapose! hp
state_before: case neg
R : Type u
S✝ : Type v
a b : R
m n : ℕ
ι : Type y
inst✝² : Semiring R
p✝ : R[X]
S : Type u_1
inst✝¹ : Monoid S
inst✝ : DistribMulAction S R
k : S
p : R[X]
h : IsSMulRegular R k
hp : ¬p = 0
⊢ k • p ≠ 0

tactic: rw [← smul_zero k] at hp
state_before: case neg
R : Type u
S✝ : Type v
a b : R
m n : ℕ
ι : Type y
inst✝² : Semiring R
p✝ : R[X]
S : Type u_1
inst✝¹ : Monoid S
inst✝ : DistribMulAction S R
k : S
p : R[X]
h : IsSMulRegular R k
hp : k • p = 0
⊢ p = 0

tactic: exact h.polynomial hp
state_before: case neg
R : Type u
S✝ : Type v
a b : R
m n : ℕ
ι : Type y
inst✝² : Semiring R
p✝ : R[X]
S : Type u_1
inst✝¹ : Monoid S
inst✝ : DistribMulAction S R
k : S
p : R[X]
h : IsSMulRegular R k
hp✝ : k • p = 0
hp : k • p = k • 0
⊢ p = 0

tactic: simp [hp]
state_before: case pos
R : Type u
S✝ : Type v
a b : R
m n : ℕ
ι : Type y
inst✝² : Semiring R
p✝ : R[X]
S : Type u_1
inst✝¹ : Monoid S
inst✝ : DistribMulAction S R
k : S
p : R[X]
h : IsSMulRegular R k
hp : p = 0
⊢ natDegree (k • p) = natDegree p
Theorem: Ordinal.enum_inj
File: Mathlib/SetTheory/Ordinal/Basic.lean

tactic: by_contra hne
state_before: α : Type u_1
β : Type ?u.198351
γ : Type ?u.198354
r✝ : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
r : α → α → Prop
inst✝ : IsWellOrder α r
o₁ o₂ : Ordinal
h₁ : o₁ < type r
h₂ : o₂ < type r
h : enum r o₁ h₁ = enum r o₂ h₂
⊢ o₁ = o₂

tactic: haveI : IsIrrefl _ r := inferInstance
state_before: α : Type u_1
β : Type ?u.198351
γ : Type ?u.198354
r✝ : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
r : α → α → Prop
inst✝ : IsWellOrder α r
o₁ o₂ : Ordinal
h₁ : o₁ < type r
h₂ : o₂ < type r
h : enum r o₁ h₁ = enum r o₂ h₂
hne : ¬o₁ = o₂
⊢ False

tactic: cases' lt_or_gt_of_ne hne with hlt hlt <;> apply (this).1
state_before: α : Type u_1
β : Type ?u.198351
γ : Type ?u.198354
r✝ : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
r : α → α → Prop
inst✝ : IsWellOrder α r
o₁ o₂ : Ordinal
h₁ : o₁ < type r
h₂ : o₂ < type r
h : enum r o₁ h₁ = enum r o₂ h₂
hne : ¬o₁ = o₂
this : IsIrrefl α r
⊢ False

tactic: rwa [← @enum_lt_enum α r _ o₁ o₂ h₁ h₂, h] at hlt
state_before: case inl.a
α : Type u_1
β : Type ?u.198351
γ : Type ?u.198354
r✝ : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
r : α → α → Prop
inst✝ : IsWellOrder α r
o₁ o₂ : Ordinal
h₁ : o₁ < type r
h₂ : o₂ < type r
h : enum r o₁ h₁ = enum r o₂ h₂
hne : ¬o₁ = o₂
this : IsIrrefl α r
hlt : o₁ < o₂
⊢ r ?inl.a ?inl.a

tactic: rw [GT.gt] at hlt
state_before: case inr.a
α : Type u_1
β : Type ?u.198351
γ : Type ?u.198354
r✝ : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
r : α → α → Prop
inst✝ : IsWellOrder α r
o₁ o₂ : Ordinal
h₁ : o₁ < type r
h₂ : o₂ < type r
h : enum r o₁ h₁ = enum r o₂ h₂
hne : ¬o₁ = o₂
this : IsIrrefl α r
hlt : o₁ > o₂
⊢ r ?inr.a ?inr.a

tactic: rwa [← @enum_lt_enum α r _ o₂ o₁ h₂ h₁, h] at hlt
state_before: case inr.a
α : Type u_1
β : Type ?u.198351
γ : Type ?u.198354
r✝ : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
r : α → α → Prop
inst✝ : IsWellOrder α r
o₁ o₂ : Ordinal
h₁ : o₁ < type r
h₂ : o₂ < type r
h : enum r o₁ h₁ = enum r o₂ h₂
hne : ¬o₁ = o₂
this : IsIrrefl α r
hlt✝ : o₁ > o₂
hlt : o₂ < o₁
⊢ r ?inr.a ?inr.a

tactic: simp_rw [h]
state_before: α : Type u_1
β : Type ?u.198351
γ : Type ?u.198354
r✝ : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
r : α → α → Prop
inst✝ : IsWellOrder α r
o₁ o₂ : Ordinal
h₁ : o₁ < type r
h₂ : o₂ < type r
h : o₁ = o₂
⊢ enum r o₁ h₁ = enum r o₂ h₂
Theorem: Complex.I_pow_bit0
File: Mathlib/Data/Complex/Basic.lean

tactic: rw [pow_bit0', Complex.I_mul_I]
state_before: n : ℕ
⊢ I ^ bit0 n = (-1) ^ n
Theorem: Absorbs.inter
File: Mathlib/Analysis/LocallyConvex/Basic.lean

tactic: obtain ⟨a, ha, hs⟩ := hs
state_before: 𝕜 : Type u_1
𝕝 : Type ?u.125647
E : Type u_2
ι : Sort ?u.125653
κ : ι → Sort ?u.125658
inst✝⁶ : NormedField 𝕜
inst✝⁵ : NormedRing 𝕝
inst✝⁴ : NormedSpace 𝕜 𝕝
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
inst✝¹ : SMulWithZero 𝕝 E
inst✝ : IsScalarTower 𝕜 𝕝 E
s t u v A B : Set E
x : E
a b : 𝕜
hs : Absorbs 𝕜 s u
ht : Absorbs 𝕜 t u
⊢ Absorbs 𝕜 (s ∩ t) u

tactic: obtain ⟨b, _hb, ht⟩ := ht
state_before: case intro.intro
𝕜 : Type u_1
𝕝 : Type ?u.125647
E : Type u_2
ι : Sort ?u.125653
κ : ι → Sort ?u.125658
inst✝⁶ : NormedField 𝕜
inst✝⁵ : NormedRing 𝕝
inst✝⁴ : NormedSpace 𝕜 𝕝
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
inst✝¹ : SMulWithZero 𝕝 E
inst✝ : IsScalarTower 𝕜 𝕝 E
s t u v A B : Set E
x : E
a✝ b : 𝕜
ht : Absorbs 𝕜 t u
a : ℝ
ha : 0 < a
hs : ∀ (a_1 : 𝕜), a ≤ ‖a_1‖ → u ⊆ a_1 • s
⊢ Absorbs 𝕜 (s ∩ t) u

tactic: have h : 0 < max a b := lt_max_of_lt_left ha
state_before: case intro.intro.intro.intro
𝕜 : Type u_1
𝕝 : Type ?u.125647
E : Type u_2
ι : Sort ?u.125653
κ : ι → Sort ?u.125658
inst✝⁶ : NormedField 𝕜
inst✝⁵ : NormedRing 𝕝
inst✝⁴ : NormedSpace 𝕜 𝕝
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
inst✝¹ : SMulWithZero 𝕝 E
inst✝ : IsScalarTower 𝕜 𝕝 E
s t u v A B : Set E
x : E
a✝ b✝ : 𝕜
a : ℝ
ha : 0 < a
hs : ∀ (a_1 : 𝕜), a ≤ ‖a_1‖ → u ⊆ a_1 • s
b : ℝ
_hb : 0 < b
ht : ∀ (a : 𝕜), b ≤ ‖a‖ → u ⊆ a • t
⊢ Absorbs 𝕜 (s ∩ t) u

tactic: refine' ⟨max a b, lt_max_of_lt_left ha, fun c hc => _⟩
state_before: case intro.intro.intro.intro
𝕜 : Type u_1
𝕝 : Type ?u.125647
E : Type u_2
ι : Sort ?u.125653
κ : ι → Sort ?u.125658
inst✝⁶ : NormedField 𝕜
inst✝⁵ : NormedRing 𝕝
inst✝⁴ : NormedSpace 𝕜 𝕝
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
inst✝¹ : SMulWithZero 𝕝 E
inst✝ : IsScalarTower 𝕜 𝕝 E
s t u v A B : Set E
x : E
a✝ b✝ : 𝕜
a : ℝ
ha : 0 < a
hs : ∀ (a_1 : 𝕜), a ≤ ‖a_1‖ → u ⊆ a_1 • s
b : ℝ
_hb : 0 < b
ht : ∀ (a : 𝕜), b ≤ ‖a‖ → u ⊆ a • t
h : 0 < max a b
⊢ Absorbs 𝕜 (s ∩ t) u

tactic: rw [smul_set_inter₀ (norm_pos_iff.1 <| h.trans_le hc)]
state_before: case intro.intro.intro.intro
𝕜 : Type u_1
𝕝 : Type ?u.125647
E : Type u_2
ι : Sort ?u.125653
κ : ι → Sort ?u.125658
inst✝⁶ : NormedField 𝕜
inst✝⁵ : NormedRing 𝕝
inst✝⁴ : NormedSpace 𝕜 𝕝
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
inst✝¹ : SMulWithZero 𝕝 E
inst✝ : IsScalarTower 𝕜 𝕝 E
s t u v A B : Set E
x : E
a✝ b✝ : 𝕜
a : ℝ
ha : 0 < a
hs : ∀ (a_1 : 𝕜), a ≤ ‖a_1‖ → u ⊆ a_1 • s
b : ℝ
_hb : 0 < b
ht : ∀ (a : 𝕜), b ≤ ‖a‖ → u ⊆ a • t
h : 0 < max a b
c : 𝕜
hc : max a b ≤ ‖c‖
⊢ u ⊆ c • (s ∩ t)

tactic: exact subset_inter (hs _ <| le_of_max_le_left hc) (ht _ <| le_of_max_le_right hc)
state_before: case intro.intro.intro.intro
𝕜 : Type u_1
𝕝 : Type ?u.125647
E : Type u_2
ι : Sort ?u.125653
κ : ι → Sort ?u.125658
inst✝⁶ : NormedField 𝕜
inst✝⁵ : NormedRing 𝕝
inst✝⁴ : NormedSpace 𝕜 𝕝
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
inst✝¹ : SMulWithZero 𝕝 E
inst✝ : IsScalarTower 𝕜 𝕝 E
s t u v A B : Set E
x : E
a✝ b✝ : 𝕜
a : ℝ
ha : 0 < a
hs : ∀ (a_1 : 𝕜), a ≤ ‖a_1‖ → u ⊆ a_1 • s
b : ℝ
_hb : 0 < b
ht : ∀ (a : 𝕜), b ≤ ‖a‖ → u ⊆ a • t
h : 0 < max a b
c : 𝕜
hc : max a b ≤ ‖c‖
⊢ u ⊆ c • s ∩ c • t
Theorem: Nat.one_isPowerOfTwo
File: src/lean/Init/Data/Nat/Power2.lean

tactic: decide
state_before: ⊢ 1 = 2 ^ 0
Theorem: Finset.dvd_prod_of_mem
File: Mathlib/Algebra/BigOperators/Basic.lean

tactic: classical
  rw [Finset.prod_eq_mul_prod_diff_singleton ha]
  exact dvd_mul_right _ _
state_before: ι : Type ?u.786416
β : Type u
α : Type v
γ : Type w
s✝ s₁ s₂ : Finset α
a✝ : α
f✝ g : α → β
inst✝ : CommMonoid β
f : α → β
a : α
s : Finset α
ha : a ∈ s
⊢ f a ∣ ∏ i in s, f i

tactic: rw [Finset.prod_eq_mul_prod_diff_singleton ha]
state_before: ι : Type ?u.786416
β : Type u
α : Type v
γ : Type w
s✝ s₁ s₂ : Finset α
a✝ : α
f✝ g : α → β
inst✝ : CommMonoid β
f : α → β
a : α
s : Finset α
ha : a ∈ s
⊢ f a ∣ ∏ i in s, f i

tactic: exact dvd_mul_right _ _
state_before: ι : Type ?u.786416
β : Type u
α : Type v
γ : Type w
s✝ s₁ s₂ : Finset α
a✝ : α
f✝ g : α → β
inst✝ : CommMonoid β
f : α → β
a : α
s : Finset α
ha : a ∈ s
⊢ f a ∣ f a * ∏ x in s \ {a}, f x
Theorem: spectrum.zero_mem_resolventSet_of_unit
File: Mathlib/Algebra/Algebra/Spectrum.lean

tactic: simpa only [mem_resolventSet_iff, ← not_mem_iff, zero_not_mem_iff] using a.isUnit
state_before: R : Type u
A : Type v
inst✝² : CommSemiring R
inst✝¹ : Ring A
inst✝ : Algebra R A
a : Aˣ
⊢ 0 ∈ resolventSet R ↑a
Theorem: le_nhdsAdjoint_iff'
File: Mathlib/Topology/Order.lean

tactic: rw [le_iff_nhds]
state_before: α✝ : Type u
β : Type v
α : Type u_1
a : α
f : Filter α
t : TopologicalSpace α
⊢ t ≤ nhdsAdjoint a f ↔ 𝓝 a ≤ pure a ⊔ f ∧ ∀ (b : α), b ≠ a → 𝓝 b = pure b

tactic: constructor
state_before: α✝ : Type u
β : Type v
α : Type u_1
a : α
f : Filter α
t : TopologicalSpace α
⊢ (∀ (x : α), 𝓝 x ≤ 𝓝 x) ↔ 𝓝 a ≤ pure a ⊔ f ∧ ∀ (b : α), b ≠ a → 𝓝 b = pure b

tactic: intro h
state_before: case mp
α✝ : Type u
β : Type v
α : Type u_1
a : α
f : Filter α
t : TopologicalSpace α
⊢ (∀ (x : α), 𝓝 x ≤ 𝓝 x) → 𝓝 a ≤ pure a ⊔ f ∧ ∀ (b : α), b ≠ a → 𝓝 b = pure b

tactic: constructor
state_before: case mp
α✝ : Type u
β : Type v
α : Type u_1
a : α
f : Filter α
t : TopologicalSpace α
h : ∀ (x : α), 𝓝 x ≤ 𝓝 x
⊢ 𝓝 a ≤ pure a ⊔ f ∧ ∀ (b : α), b ≠ a → 𝓝 b = pure b

tactic: specialize h a
state_before: case mp.left
α✝ : Type u
β : Type v
α : Type u_1
a : α
f : Filter α
t : TopologicalSpace α
h : ∀ (x : α), 𝓝 x ≤ 𝓝 x
⊢ 𝓝 a ≤ pure a ⊔ f

tactic: rwa [nhdsAdjoint_nhds] at h
state_before: case mp.left
α✝ : Type u
β : Type v
α : Type u_1
a : α
f : Filter α
t : TopologicalSpace α
h : 𝓝 a ≤ 𝓝 a
⊢ 𝓝 a ≤ pure a ⊔ f

tactic: intro b hb
state_before: case mp.right
α✝ : Type u
β : Type v
α : Type u_1
a : α
f : Filter α
t : TopologicalSpace α
h : ∀ (x : α), 𝓝 x ≤ 𝓝 x
⊢ ∀ (b : α), b ≠ a → 𝓝 b = pure b

tactic: apply le_antisymm _ (pure_le_nhds b)
state_before: case mp.right
α✝ : Type u
β : Type v
α : Type u_1
a : α
f : Filter α
t : TopologicalSpace α
h : ∀ (x : α), 𝓝 x ≤ 𝓝 x
b : α
hb : b ≠ a
⊢ 𝓝 b = pure b

tactic: specialize h b
state_before: α✝ : Type u
β : Type v
α : Type u_1
a : α
f : Filter α
t : TopologicalSpace α
h : ∀ (x : α), 𝓝 x ≤ 𝓝 x
b : α
hb : b ≠ a
⊢ 𝓝 b ≤ pure b

tactic: rwa [nhdsAdjoint_nhds_of_ne a f hb] at h
state_before: α✝ : Type u
β : Type v
α : Type u_1
a : α
f : Filter α
t : TopologicalSpace α
b : α
hb : b ≠ a
h : 𝓝 b ≤ 𝓝 b
⊢ 𝓝 b ≤ pure b

tactic: rintro ⟨h, h'⟩ b
state_before: case mpr
α✝ : Type u
β : Type v
α : Type u_1
a : α
f : Filter α
t : TopologicalSpace α
⊢ (𝓝 a ≤ pure a ⊔ f ∧ ∀ (b : α), b ≠ a → 𝓝 b = pure b) → ∀ (x : α), 𝓝 x ≤ 𝓝 x

tactic: by_cases hb : b = a
state_before: case mpr.intro
α✝ : Type u
β : Type v
α : Type u_1
a : α
f : Filter α
t : TopologicalSpace α
h : 𝓝 a ≤ pure a ⊔ f
h' : ∀ (b : α), b ≠ a → 𝓝 b = pure b
b : α
⊢ 𝓝 b ≤ 𝓝 b

tactic: rwa [hb, nhdsAdjoint_nhds]
state_before: case pos
α✝ : Type u
β : Type v
α : Type u_1
a : α
f : Filter α
t : TopologicalSpace α
h : 𝓝 a ≤ pure a ⊔ f
h' : ∀ (b : α), b ≠ a → 𝓝 b = pure b
b : α
hb : b = a
⊢ 𝓝 b ≤ 𝓝 b

tactic: simp [nhdsAdjoint_nhds_of_ne a f hb, h' b hb]
state_before: case neg
α✝ : Type u
β : Type v
α : Type u_1
a : α
f : Filter α
t : TopologicalSpace α
h : 𝓝 a ≤ pure a ⊔ f
h' : ∀ (b : α), b ≠ a → 𝓝 b = pure b
b : α
hb : ¬b = a
⊢ 𝓝 b ≤ 𝓝 b
Theorem: RingHom.comap_ker
File: Mathlib/RingTheory/Ideal/Operations.lean

tactic: rw [RingHom.ker_eq_comap_bot, Ideal.comap_comap, RingHom.ker_eq_comap_bot]
state_before: R : Type u
S : Type v
T : Type w
F : Type ?u.1721293
G : Type ?u.1721296
inst✝² : Semiring R
inst✝¹ : Semiring S
inst✝ : Semiring T
rcf : RingHomClass F R S
rcg : RingHomClass G T S
f✝ : F
g✝ : G
f : S →+* R
g : T →+* S
⊢ Ideal.comap g (ker f) = ker (comp f g)
Theorem: Combinatorics.Line.horizontal_apply
File: Mathlib/Combinatorics/HalesJewett.lean

tactic: funext i
state_before: α : Type u_1
ι : Type u_2
ι' : Type u_3
l : Line α ι
v : ι' → α
x : α
⊢ (fun x i => Option.getD (idxFun (horizontal l v) i) x) x = Sum.elim ((fun x i => Option.getD (idxFun l i) x) x) v

tactic: cases i <;> rfl
state_before: case h
α : Type u_1
ι : Type u_2
ι' : Type u_3
l : Line α ι
v : ι' → α
x : α
i : ι ⊕ ι'
⊢ (fun x i => Option.getD (idxFun (horizontal l v) i) x) x i = Sum.elim ((fun x i => Option.getD (idxFun l i) x) x) v i
Theorem: Odd.pos
File: Mathlib/Algebra/Parity.lean

tactic: obtain ⟨k, rfl⟩ := hn
state_before: F : Type ?u.100603
α : Type u_1
β : Type ?u.100609
R : Type ?u.100612
inst✝¹ : CanonicallyOrderedCommSemiring α
inst✝ : Nontrivial α
n : α
hn : Odd n
⊢ 0 < n

tactic: rw [pos_iff_ne_zero, Ne.def, add_eq_zero_iff, not_and']
state_before: case intro
F : Type ?u.100603
α : Type u_1
β : Type ?u.100609
R : Type ?u.100612
inst✝¹ : CanonicallyOrderedCommSemiring α
inst✝ : Nontrivial α
k : α
⊢ 0 < 2 * k + 1

tactic: exact fun h => (one_ne_zero h).elim
state_before: case intro
F : Type ?u.100603
α : Type u_1
β : Type ?u.100609
R : Type ?u.100612
inst✝¹ : CanonicallyOrderedCommSemiring α
inst✝ : Nontrivial α
k : α
⊢ 1 = 0 → ¬2 * k = 0
Theorem: nhdsWithin_insert
File: Mathlib/Topology/ContinuousOn.lean

tactic: rw [← singleton_union, nhdsWithin_union, nhdsWithin_singleton]
state_before: α : Type u_1
β : Type ?u.19057
γ : Type ?u.19060
δ : Type ?u.19063
inst✝ : TopologicalSpace α
a : α
s : Set α
⊢ 𝓝[insert a s] a = pure a ⊔ 𝓝[s] a
Theorem: Nat.testBit_two_pow_of_ne
File: Mathlib/Data/Nat/Bitwise.lean

tactic: rw [testBit, shiftr_eq_div_pow]
state_before: n m : ℕ
hm : n ≠ m
⊢ testBit (2 ^ n) m = false

tactic: cases' hm.lt_or_lt with hm hm
state_before: n m : ℕ
hm : n ≠ m
⊢ bodd (2 ^ n / 2 ^ m) = false

tactic: rw [Nat.div_eq_zero, bodd_zero]
state_before: case inl
n m : ℕ
hm✝ : n ≠ m
hm : n < m
⊢ bodd (2 ^ n / 2 ^ m) = false

tactic: exact Nat.pow_lt_pow_of_lt_right one_lt_two hm
state_before: case inl
n m : ℕ
hm✝ : n ≠ m
hm : n < m
⊢ 2 ^ n < 2 ^ m

tactic: rw [pow_div hm.le zero_lt_two, ← tsub_add_cancel_of_le (succ_le_of_lt <| tsub_pos_of_lt hm)]
state_before: case inr
n m : ℕ
hm✝ : n ≠ m
hm : m < n
⊢ bodd (2 ^ n / 2 ^ m) = false

tactic: rw [(rfl : succ 0 = 1)]
state_before: case inr
n m : ℕ
hm✝ : n ≠ m
hm : m < n
⊢ bodd (2 ^ (n - m - succ 0 + succ 0)) = false

tactic: simp only [ge_iff_le, tsub_le_iff_right, pow_succ, bodd_mul,
  Bool.and_eq_false_eq_eq_false_or_eq_false, or_true]
state_before: case inr
n m : ℕ
hm✝ : n ≠ m
hm : m < n
⊢ bodd (2 ^ (n - m - succ 0 + succ 0)) = false
Theorem: t2_separation_compact_nhds
File: Mathlib/Topology/Separation.lean

tactic: simpa only [exists_prop, ← exists_and_left, and_comm, and_assoc, and_left_comm] using
  ((compact_basis_nhds x).disjoint_iff (compact_basis_nhds y)).1 (disjoint_nhds_nhds.2 h)
state_before: α : Type u
β : Type v
inst✝² : TopologicalSpace α
inst✝¹ : LocallyCompactSpace α
inst✝ : T2Space α
x y : α
h : x ≠ y
⊢ ∃ u v, u ∈ 𝓝 x ∧ v ∈ 𝓝 y ∧ IsCompact u ∧ IsCompact v ∧ Disjoint u v
Theorem: EuclideanGeometry.angle_left_midpoint_eq_pi_div_two_of_dist_eq
File: Mathlib/Geometry/Euclidean/Angle/Unoriented/Affine.lean

tactic: let m : P := midpoint ℝ p1 p2
state_before: V : Type u_2
P : Type u_1
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
p1 p2 p3 : P
h : dist p3 p1 = dist p3 p2
⊢ ∠ p3 (midpoint ℝ p1 p2) p1 = π / 2

tactic: have h1 : p3 -ᵥ p1 = p3 -ᵥ m - (p1 -ᵥ m) := (vsub_sub_vsub_cancel_right p3 p1 m).symm
state_before: V : Type u_2
P : Type u_1
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
p1 p2 p3 : P
h : dist p3 p1 = dist p3 p2
m : P := midpoint ℝ p1 p2
⊢ ∠ p3 (midpoint ℝ p1 p2) p1 = π / 2

tactic: have h2 : p3 -ᵥ p2 = p3 -ᵥ m + (p1 -ᵥ m) := by
  rw [left_vsub_midpoint, ← midpoint_vsub_right, vsub_add_vsub_cancel]
state_before: V : Type u_2
P : Type u_1
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
p1 p2 p3 : P
h : dist p3 p1 = dist p3 p2
m : P := midpoint ℝ p1 p2
h1 : p3 -ᵥ p1 = p3 -ᵥ m - (p1 -ᵥ m)
⊢ ∠ p3 (midpoint ℝ p1 p2) p1 = π / 2

tactic: rw [dist_eq_norm_vsub V p3 p1, dist_eq_norm_vsub V p3 p2, h1, h2] at h
state_before: V : Type u_2
P : Type u_1
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
p1 p2 p3 : P
h : dist p3 p1 = dist p3 p2
m : P := midpoint ℝ p1 p2
h1 : p3 -ᵥ p1 = p3 -ᵥ m - (p1 -ᵥ m)
h2 : p3 -ᵥ p2 = p3 -ᵥ m + (p1 -ᵥ m)
⊢ ∠ p3 (midpoint ℝ p1 p2) p1 = π / 2

tactic: exact (norm_add_eq_norm_sub_iff_angle_eq_pi_div_two (p3 -ᵥ m) (p1 -ᵥ m)).mp h.symm
state_before: V : Type u_2
P : Type u_1
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
p1 p2 p3 : P
m : P := midpoint ℝ p1 p2
h : ‖p3 -ᵥ m - (p1 -ᵥ m)‖ = ‖p3 -ᵥ m + (p1 -ᵥ m)‖
h1 : p3 -ᵥ p1 = p3 -ᵥ m - (p1 -ᵥ m)
h2 : p3 -ᵥ p2 = p3 -ᵥ m + (p1 -ᵥ m)
⊢ ∠ p3 (midpoint ℝ p1 p2) p1 = π / 2

tactic: rw [left_vsub_midpoint, ← midpoint_vsub_right, vsub_add_vsub_cancel]
state_before: V : Type u_2
P : Type u_1
inst✝³ : NormedAddCommGroup V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : MetricSpace P
inst✝ : NormedAddTorsor V P
p1 p2 p3 : P
h : dist p3 p1 = dist p3 p2
m : P := midpoint ℝ p1 p2
h1 : p3 -ᵥ p1 = p3 -ᵥ m - (p1 -ᵥ m)
⊢ p3 -ᵥ p2 = p3 -ᵥ m + (p1 -ᵥ m)
Theorem: MeasureTheory.integral_comp_mul_right_Ioi
File: Mathlib/MeasureTheory/Integral/IntegralEqImproper.lean

tactic: simpa only [mul_comm] using integral_comp_mul_left_Ioi g a hb
state_before: E : Type u_1
f : ℝ → E
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace ℝ E
inst✝ : CompleteSpace E
g : ℝ → E
a b : ℝ
hb : 0 < b
⊢ (∫ (x : ℝ) in Ioi a, g (x * b)) = abs b⁻¹ • ∫ (x : ℝ) in Ioi (a * b), g x
Theorem: TypeVec.splitFun_inj
File: Mathlib/Data/TypeVec.lean

tactic: rw [← dropFun_splitFun f g, H, ← lastFun_splitFun f g, H]
state_before: n : ℕ
α : TypeVec (n + 1)
α' : TypeVec (n + 1)
f f' : drop α ⟹ drop α'
g g' : last α → last α'
H : splitFun f g = splitFun f' g'
⊢ f = f' ∧ g = g'

tactic: simp
state_before: n : ℕ
α : TypeVec (n + 1)
α' : TypeVec (n + 1)
f f' : drop α ⟹ drop α'
g g' : last α → last α'
H : splitFun f g = splitFun f' g'
⊢ dropFun (splitFun f' g') = f' ∧ lastFun (splitFun f' g') = g'