1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: fderivWithin_id
File: Mathlib/Analysis/Calculus/FDeriv/Basic.lean

tactic: rw [DifferentiableAt.fderivWithin differentiableAt_id hxs]
state_before: 𝕜 : Type u_1
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type u_3
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type u_4
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type u_5
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f f₀ f₁ g : E → F
f' f₀' f₁' g' e : E →L[𝕜] F
x : E
s t : Set E
L L₁ L₂ : Filter E
hxs : UniqueDiffWithinAt 𝕜 s x
⊢ fderivWithin 𝕜 _root_.id s x = ContinuousLinearMap.id 𝕜 E
state_after: 𝕜 : Type u_1
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type u_3
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type u_4
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type u_5
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f f₀ f₁ g : E → F
f' f₀' f₁' g' e : E →L[𝕜] F
x : E
s t : Set E
L L₁ L₂ : Filter E
hxs : UniqueDiffWithinAt 𝕜 s x
⊢ fderiv 𝕜 _root_.id x = ContinuousLinearMap.id 𝕜 E

tactic: exact fderiv_id
state_before: 𝕜 : Type u_1
inst✝⁸ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace 𝕜 E
F : Type u_3
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
G : Type u_4
inst✝³ : NormedAddCommGroup G
inst✝² : NormedSpace 𝕜 G
G' : Type u_5
inst✝¹ : NormedAddCommGroup G'
inst✝ : NormedSpace 𝕜 G'
f f₀ f₁ g : E → F
f' f₀' f₁' g' e : E →L[𝕜] F
x : E
s t : Set E
L L₁ L₂ : Filter E
hxs : UniqueDiffWithinAt 𝕜 s x
⊢ fderiv 𝕜 _root_.id x = ContinuousLinearMap.id 𝕜 E
state_after: no goals
Theorem: MeasureTheory.AEStronglyMeasurable.prod_swap
File: Mathlib/MeasureTheory/Constructions/Prod/Integral.lean

tactic: rw [← prod_swap] at hf
state_before: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ✝ : Type u_5
E : Type u_6
inst✝⁸ : MeasurableSpace α
inst✝⁷ : MeasurableSpace α'
inst✝⁶ : MeasurableSpace β
inst✝⁵ : MeasurableSpace β'
inst✝⁴ : MeasurableSpace γ✝
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ✝
inst✝³ : NormedAddCommGroup E
γ : Type u_7
inst✝² : TopologicalSpace γ
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
f : β × α → γ
hf : AEStronglyMeasurable f (ν.prod μ)
⊢ AEStronglyMeasurable (fun z => f z.swap) (μ.prod ν)
state_after: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ✝ : Type u_5
E : Type u_6
inst✝⁸ : MeasurableSpace α
inst✝⁷ : MeasurableSpace α'
inst✝⁶ : MeasurableSpace β
inst✝⁵ : MeasurableSpace β'
inst✝⁴ : MeasurableSpace γ✝
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ✝
inst✝³ : NormedAddCommGroup E
γ : Type u_7
inst✝² : TopologicalSpace γ
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
f : β × α → γ
hf : AEStronglyMeasurable f (map Prod.swap (μ.prod ν))
⊢ AEStronglyMeasurable (fun z => f z.swap) (μ.prod ν)

tactic: exact hf.comp_measurable measurable_swap
state_before: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ✝ : Type u_5
E : Type u_6
inst✝⁸ : MeasurableSpace α
inst✝⁷ : MeasurableSpace α'
inst✝⁶ : MeasurableSpace β
inst✝⁵ : MeasurableSpace β'
inst✝⁴ : MeasurableSpace γ✝
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ✝
inst✝³ : NormedAddCommGroup E
γ : Type u_7
inst✝² : TopologicalSpace γ
inst✝¹ : SigmaFinite μ
inst✝ : SigmaFinite ν
f : β × α → γ
hf : AEStronglyMeasurable f (map Prod.swap (μ.prod ν))
⊢ AEStronglyMeasurable (fun z => f z.swap) (μ.prod ν)
state_after: no goals
Theorem: Computability.decode_encodePosNum
File: Mathlib/Computability/Encoding.lean

tactic: intro n
state_before: ⊢ ∀ (n : PosNum), decodePosNum (encodePosNum n) = n
state_after: n : PosNum
⊢ decodePosNum (encodePosNum n) = n

tactic: induction' n with m hm m hm <;> unfold encodePosNum decodePosNum
state_before: n : PosNum
⊢ decodePosNum (encodePosNum n) = n
state_after: case one

⊢ (if [] = [] then PosNum.one else (decodePosNum []).bit1) = PosNum.one

case bit1
m : PosNum
hm : decodePosNum (encodePosNum m) = m
⊢ (if encodePosNum m = [] then PosNum.one else (decodePosNum (encodePosNum m)).bit1) = m.bit1

case bit0
m : PosNum
hm : decodePosNum (encodePosNum m) = m
⊢ (decodePosNum (encodePosNum m)).bit0 = m.bit0

tactic: rfl
state_before: case one

⊢ (if [] = [] then PosNum.one else (decodePosNum []).bit1) = PosNum.one
state_after: no goals

tactic: rw [hm]
state_before: case bit1
m : PosNum
hm : decodePosNum (encodePosNum m) = m
⊢ (if encodePosNum m = [] then PosNum.one else (decodePosNum (encodePosNum m)).bit1) = m.bit1
state_after: case bit1
m : PosNum
hm : decodePosNum (encodePosNum m) = m
⊢ (if encodePosNum m = [] then PosNum.one else m.bit1) = m.bit1

tactic: exact if_neg (encodePosNum_nonempty m)
state_before: case bit1
m : PosNum
hm : decodePosNum (encodePosNum m) = m
⊢ (if encodePosNum m = [] then PosNum.one else m.bit1) = m.bit1
state_after: no goals

tactic: exact congr_arg PosNum.bit0 hm
state_before: case bit0
m : PosNum
hm : decodePosNum (encodePosNum m) = m
⊢ (decodePosNum (encodePosNum m)).bit0 = m.bit0
state_after: no goals
Theorem: Equiv.Perm.sign_of_cycleType'
File: Mathlib/GroupTheory/Perm/Cycle/Type.lean

tactic: induction σ using cycle_induction_on with
| base_one => simp
| base_cycles σ hσ => simp [hσ.cycleType, hσ.sign]
| induction_disjoint σ τ hd _ hσ hτ => simp [hσ, hτ, hd.cycleType]
state_before: α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
σ : Perm α
⊢ sign σ = (Multiset.map (fun n => -(-1) ^ n) σ.cycleType).prod
state_after: no goals

tactic: simp
state_before: case base_one
α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
⊢ sign 1 = (Multiset.map (fun n => -(-1) ^ n) (cycleType 1)).prod
state_after: no goals

tactic: simp [hσ.cycleType, hσ.sign]
state_before: case base_cycles
α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
σ : Perm α
hσ : σ.IsCycle
⊢ sign σ = (Multiset.map (fun n => -(-1) ^ n) σ.cycleType).prod
state_after: no goals

tactic: simp [hσ, hτ, hd.cycleType]
state_before: case induction_disjoint
α : Type u_1
inst✝¹ : Fintype α
inst✝ : DecidableEq α
σ τ : Perm α
hd : σ.Disjoint τ
a✝ : σ.IsCycle
hσ : sign σ = (Multiset.map (fun n => -(-1) ^ n) σ.cycleType).prod
hτ : sign τ = (Multiset.map (fun n => -(-1) ^ n) τ.cycleType).prod
⊢ sign (σ * τ) = (Multiset.map (fun n => -(-1) ^ n) (σ * τ).cycleType).prod
state_after: no goals
Theorem: CategoryTheory.Subgroupoid.inclusion_inj_on_objects
File: Mathlib/CategoryTheory/Groupoid/Subgroupoid.lean

tactic: simpa only [inclusion, Subtype.mk_eq_mk] using id
state_before: C : Type u
inst✝ : Groupoid C
S✝ S T : Subgroupoid C
h : S ≤ T
x✝¹ x✝ : ↑S.objs
s : C
hs : s ∈ S.objs
t : C
ht : t ∈ S.objs
⊢ (inclusion h).obj ⟨s, hs⟩ = (inclusion h).obj ⟨t, ht⟩ → ⟨s, hs⟩ = ⟨t, ht⟩
state_after: no goals
Theorem: Equiv.existsUnique_congr_right
File: Mathlib/Logic/Equiv/Defs.lean

tactic: simpa using fun _ _ ↦ e.forall_congr (by simp)
state_before: α : Sort u
β : Sort v
γ : Sort w
p : α → Prop
q : β → Prop
e : α ≃ β
⊢ ∀ (a : α),
    ((fun a => q (e a)) a ∧ ∀ (y : α), (fun a => q (e a)) y → y = a) ↔
      (fun b => q b) (e a) ∧ ∀ (y : β), (fun b => q b) y → y = e a
state_after: no goals

tactic: simp
state_before: α : Sort u
β : Sort v
γ : Sort w
p : α → Prop
q : β → Prop
e : α ≃ β
x✝¹ : α
x✝ : q (e x✝¹)
⊢ ∀ (a : α), q (e a) → a = x✝¹ ↔ q (e a) → e a = e x✝¹
state_after: no goals
Theorem: FormalMultilinearSeries.nnnorm_changeOriginSeries_le_tsum
File: Mathlib/Analysis/Analytic/Basic.lean

tactic: simp_rw [tsum_fintype, nnnorm_changeOriginSeriesTerm (p := p) (k := k) (l := l)]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
inst✝⁶ : NontriviallyNormedField 𝕜
inst✝⁵ : NormedAddCommGroup E
inst✝⁴ : NormedSpace 𝕜 E
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
inst✝¹ : NormedAddCommGroup G
inst✝ : NormedSpace 𝕜 G
p : FormalMultilinearSeries 𝕜 E F
x y : E
r R : ℝ≥0
k l : ℕ
⊢ ∑ a : { s // s.card = l }, ‖p.changeOriginSeriesTerm k l ↑a ⋯‖₊ = ∑' (x : { s // s.card = l }), ‖p (k + l)‖₊
state_after: no goals
Theorem: NonUnitalAlgHom.to_distribMulActionHom_injective
File: Mathlib/Algebra/Algebra/NonUnitalHom.lean

tactic: ext a
state_before: R : Type u
S : Type u₁
T : Type u_1
inst✝⁸ : Monoid R
inst✝⁷ : Monoid S
inst✝⁶ : Monoid T
φ : R →* S
A : Type v
B : Type w
C : Type w₁
inst✝⁵ : NonUnitalNonAssocSemiring A
inst✝⁴ : DistribMulAction R A
inst✝³ : NonUnitalNonAssocSemiring B
inst✝² : DistribMulAction S B
inst✝¹ : NonUnitalNonAssocSemiring C
inst✝ : DistribMulAction T C
f g : A →ₛₙₐ[φ] B
h : ↑f = ↑g
⊢ f = g
state_after: case h
R : Type u
S : Type u₁
T : Type u_1
inst✝⁸ : Monoid R
inst✝⁷ : Monoid S
inst✝⁶ : Monoid T
φ : R →* S
A : Type v
B : Type w
C : Type w₁
inst✝⁵ : NonUnitalNonAssocSemiring A
inst✝⁴ : DistribMulAction R A
inst✝³ : NonUnitalNonAssocSemiring B
inst✝² : DistribMulAction S B
inst✝¹ : NonUnitalNonAssocSemiring C
inst✝ : DistribMulAction T C
f g : A →ₛₙₐ[φ] B
h : ↑f = ↑g
a : A
⊢ f a = g a

tactic: exact DistribMulActionHom.congr_fun h a
state_before: case h
R : Type u
S : Type u₁
T : Type u_1
inst✝⁸ : Monoid R
inst✝⁷ : Monoid S
inst✝⁶ : Monoid T
φ : R →* S
A : Type v
B : Type w
C : Type w₁
inst✝⁵ : NonUnitalNonAssocSemiring A
inst✝⁴ : DistribMulAction R A
inst✝³ : NonUnitalNonAssocSemiring B
inst✝² : DistribMulAction S B
inst✝¹ : NonUnitalNonAssocSemiring C
inst✝ : DistribMulAction T C
f g : A →ₛₙₐ[φ] B
h : ↑f = ↑g
a : A
⊢ f a = g a
state_after: no goals
Theorem: Matrix.tail_transpose
File: Mathlib/Data/Matrix/Notation.lean

tactic: ext i j
state_before: α : Type u
o n m : ℕ
m' : Type uₘ
n' : Type uₙ
o' : Type uₒ
a b : ℕ
A : Matrix m' (Fin n.succ) α
⊢ vecTail (of.symm Aᵀ) = (vecTail ∘ A)ᵀ
state_after: case h.h
α : Type u
o n m : ℕ
m' : Type uₘ
n' : Type uₙ
o' : Type uₒ
a b : ℕ
A : Matrix m' (Fin n.succ) α
i : Fin n
j : m'
⊢ vecTail (of.symm Aᵀ) i j = (vecTail ∘ A)ᵀ i j

tactic: rfl
state_before: case h.h
α : Type u
o n m : ℕ
m' : Type uₘ
n' : Type uₙ
o' : Type uₒ
a b : ℕ
A : Matrix m' (Fin n.succ) α
i : Fin n
j : m'
⊢ vecTail (of.symm Aᵀ) i j = (vecTail ∘ A)ᵀ i j
state_after: no goals
Theorem: PEquiv.refl_trans
File: Mathlib/Data/PEquiv.lean

tactic: ext
state_before: α : Type u
β : Type v
γ : Type w
δ : Type x
f : α ≃. β
⊢ (PEquiv.refl α).trans f = f
state_after: case h.a
α : Type u
β : Type v
γ : Type w
δ : Type x
f : α ≃. β
x✝ : α
a✝ : β
⊢ a✝ ∈ ((PEquiv.refl α).trans f) x✝ ↔ a✝ ∈ f x✝

tactic: dsimp [PEquiv.trans]
state_before: case h.a
α : Type u
β : Type v
γ : Type w
δ : Type x
f : α ≃. β
x✝ : α
a✝ : β
⊢ a✝ ∈ ((PEquiv.refl α).trans f) x✝ ↔ a✝ ∈ f x✝
state_after: case h.a
α : Type u
β : Type v
γ : Type w
δ : Type x
f : α ≃. β
x✝ : α
a✝ : β
⊢ a✝ ∈ f x✝ ↔ a✝ ∈ f x✝

tactic: rfl
state_before: case h.a
α : Type u
β : Type v
γ : Type w
δ : Type x
f : α ≃. β
x✝ : α
a✝ : β
⊢ a✝ ∈ f x✝ ↔ a✝ ∈ f x✝
state_after: no goals
Theorem: Int.gcd_mul_right
File: Mathlib/Data/Int/GCD.lean

tactic: rw [Int.gcd, Int.gcd, natAbs_mul, natAbs_mul]
state_before: i j k : ℤ
⊢ (i * j).gcd (k * j) = i.gcd k * j.natAbs
state_after: i j k : ℤ
⊢ (i.natAbs * j.natAbs).gcd (k.natAbs * j.natAbs) = i.natAbs.gcd k.natAbs * j.natAbs

tactic: apply Nat.gcd_mul_right
state_before: i j k : ℤ
⊢ (i.natAbs * j.natAbs).gcd (k.natAbs * j.natAbs) = i.natAbs.gcd k.natAbs * j.natAbs
state_after: no goals
Theorem: Subalgebra.range_algebraMap
File: Mathlib/Algebra/Algebra/Subalgebra/Basic.lean

tactic: rw [algebraMap_eq, Algebra.id.map_eq_id, RingHom.id_comp, ← toSubring_subtype,
  Subring.range_subtype]
state_before: R✝ : Type u
A✝ : Type v
B : Type w
inst✝⁷ : CommSemiring R✝
inst✝⁶ : Semiring A✝
inst✝⁵ : Algebra R✝ A✝
inst✝⁴ : Semiring B
inst✝³ : Algebra R✝ B
S✝ : Subalgebra R✝ A✝
α : Type u_1
β : Type u_2
R : Type u_3
A : Type u_4
inst✝² : CommRing R
inst✝¹ : CommRing A
inst✝ : Algebra R A
S : Subalgebra R A
⊢ (algebraMap (↥S) A).range = S.toSubring
state_after: no goals
Theorem: AddMonoidAlgebra.mem_grade_iff'
File: Mathlib/Algebra/MonoidAlgebra/Grading.lean

tactic: rw [mem_grade_iff, Finsupp.support_subset_singleton']
state_before: M : Type u_1
ι : Type u_2
R : Type u_3
inst✝ : CommSemiring R
m : M
a : R[M]
⊢ a ∈ grade R m ↔ a ∈ LinearMap.range (Finsupp.lsingle m)
state_after: M : Type u_1
ι : Type u_2
R : Type u_3
inst✝ : CommSemiring R
m : M
a : R[M]
⊢ (∃ b, a = Finsupp.single m b) ↔ a ∈ LinearMap.range (Finsupp.lsingle m)

tactic: apply exists_congr
state_before: M : Type u_1
ι : Type u_2
R : Type u_3
inst✝ : CommSemiring R
m : M
a : R[M]
⊢ (∃ b, a = Finsupp.single m b) ↔ a ∈ LinearMap.range (Finsupp.lsingle m)
state_after: case h
M : Type u_1
ι : Type u_2
R : Type u_3
inst✝ : CommSemiring R
m : M
a : R[M]
⊢ ∀ (a_1 : R), a = Finsupp.single m a_1 ↔ (Finsupp.lsingle m) a_1 = a

tactic: intro r
state_before: case h
M : Type u_1
ι : Type u_2
R : Type u_3
inst✝ : CommSemiring R
m : M
a : R[M]
⊢ ∀ (a_1 : R), a = Finsupp.single m a_1 ↔ (Finsupp.lsingle m) a_1 = a
state_after: case h
M : Type u_1
ι : Type u_2
R : Type u_3
inst✝ : CommSemiring R
m : M
a : R[M]
r : R
⊢ a = Finsupp.single m r ↔ (Finsupp.lsingle m) r = a

tactic: constructor <;> exact Eq.symm
state_before: case h
M : Type u_1
ι : Type u_2
R : Type u_3
inst✝ : CommSemiring R
m : M
a : R[M]
r : R
⊢ a = Finsupp.single m r ↔ (Finsupp.lsingle m) r = a
state_after: no goals
Theorem: Filter.hasBasis_iInf_of_directed
File: Mathlib/Order/Filter/Bases.lean

tactic: refine ⟨fun t => ?_⟩
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι✝ : Sort u_4
ι'✝ : Sort u_5
l✝ l' : Filter α
p✝ : ι✝ → Prop
s✝ : ι✝ → Set α
t : Set α
i : ι✝
p' : ι'✝ → Prop
s' : ι'✝ → Set α
i' : ι'✝
ι : Type u_6
ι' : Type u_7
inst✝ : Nonempty ι
l : ι → Filter α
s : ι → ι' → Set α
p : ι → ι' → Prop
hl : ∀ (i : ι), (l i).HasBasis (p i) (s i)
h : Directed (fun x x_1 => x ≥ x_1) l
⊢ (⨅ i, l i).HasBasis (fun ii' => p ii'.1 ii'.2) fun ii' => s ii'.1 ii'.2
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
ι✝ : Sort u_4
ι'✝ : Sort u_5
l✝ l' : Filter α
p✝ : ι✝ → Prop
s✝ : ι✝ → Set α
t✝ : Set α
i : ι✝
p' : ι'✝ → Prop
s' : ι'✝ → Set α
i' : ι'✝
ι : Type u_6
ι' : Type u_7
inst✝ : Nonempty ι
l : ι → Filter α
s : ι → ι' → Set α
p : ι → ι' → Prop
hl : ∀ (i : ι), (l i).HasBasis (p i) (s i)
h : Directed (fun x x_1 => x ≥ x_1) l
t : Set α
⊢ t ∈ ⨅ i, l i ↔ ∃ i, p i.1 i.2 ∧ s i.1 i.2 ⊆ t

tactic: rw [mem_iInf_of_directed h, Prod.exists]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι✝ : Sort u_4
ι'✝ : Sort u_5
l✝ l' : Filter α
p✝ : ι✝ → Prop
s✝ : ι✝ → Set α
t✝ : Set α
i : ι✝
p' : ι'✝ → Prop
s' : ι'✝ → Set α
i' : ι'✝
ι : Type u_6
ι' : Type u_7
inst✝ : Nonempty ι
l : ι → Filter α
s : ι → ι' → Set α
p : ι → ι' → Prop
hl : ∀ (i : ι), (l i).HasBasis (p i) (s i)
h : Directed (fun x x_1 => x ≥ x_1) l
t : Set α
⊢ t ∈ ⨅ i, l i ↔ ∃ i, p i.1 i.2 ∧ s i.1 i.2 ⊆ t
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
ι✝ : Sort u_4
ι'✝ : Sort u_5
l✝ l' : Filter α
p✝ : ι✝ → Prop
s✝ : ι✝ → Set α
t✝ : Set α
i : ι✝
p' : ι'✝ → Prop
s' : ι'✝ → Set α
i' : ι'✝
ι : Type u_6
ι' : Type u_7
inst✝ : Nonempty ι
l : ι → Filter α
s : ι → ι' → Set α
p : ι → ι' → Prop
hl : ∀ (i : ι), (l i).HasBasis (p i) (s i)
h : Directed (fun x x_1 => x ≥ x_1) l
t : Set α
⊢ (∃ i, t ∈ l i) ↔ ∃ a b, p (a, b).1 (a, b).2 ∧ s (a, b).1 (a, b).2 ⊆ t

tactic: exact exists_congr fun i => (hl i).mem_iff
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι✝ : Sort u_4
ι'✝ : Sort u_5
l✝ l' : Filter α
p✝ : ι✝ → Prop
s✝ : ι✝ → Set α
t✝ : Set α
i : ι✝
p' : ι'✝ → Prop
s' : ι'✝ → Set α
i' : ι'✝
ι : Type u_6
ι' : Type u_7
inst✝ : Nonempty ι
l : ι → Filter α
s : ι → ι' → Set α
p : ι → ι' → Prop
hl : ∀ (i : ι), (l i).HasBasis (p i) (s i)
h : Directed (fun x x_1 => x ≥ x_1) l
t : Set α
⊢ (∃ i, t ∈ l i) ↔ ∃ a b, p (a, b).1 (a, b).2 ∧ s (a, b).1 (a, b).2 ⊆ t
state_after: no goals
Theorem: PrimeSpectrum.vanishingIdeal_singleton
File: Mathlib/AlgebraicGeometry/PrimeSpectrum/Basic.lean

tactic: simp [vanishingIdeal]
state_before: R : Type u
S : Type v
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
x : PrimeSpectrum R
⊢ vanishingIdeal {x} = x.asIdeal
state_after: no goals
Theorem: EReal.mul_pos
File: Mathlib/Data/Real/EReal.lean

tactic: induction a
state_before: a b : EReal
ha : 0 < a
hb : 0 < b
⊢ 0 < a * b
state_after: case h_bot
b : EReal
hb : 0 < b
ha : 0 < ⊥
⊢ 0 < ⊥ * b

case h_real
b : EReal
hb : 0 < b
a✝ : ℝ
ha : 0 < ↑a✝
⊢ 0 < ↑a✝ * b

case h_top
b : EReal
hb : 0 < b
ha : 0 < ⊤
⊢ 0 < ⊤ * b

tactic: exfalso
state_before: case h_bot
b : EReal
hb : 0 < b
ha : 0 < ⊥
⊢ 0 < ⊥ * b
state_after: case h_bot
b : EReal
hb : 0 < b
ha : 0 < ⊥
⊢ False

tactic: exact not_lt_bot ha
state_before: case h_bot
b : EReal
hb : 0 < b
ha : 0 < ⊥
⊢ False
state_after: no goals

tactic: induction b
state_before: case h_real
b : EReal
hb : 0 < b
a✝ : ℝ
ha : 0 < ↑a✝
⊢ 0 < ↑a✝ * b
state_after: case h_real.h_bot
a✝ : ℝ
ha : 0 < ↑a✝
hb : 0 < ⊥
⊢ 0 < ↑a✝ * ⊥

case h_real.h_real
a✝¹ : ℝ
ha : 0 < ↑a✝¹
a✝ : ℝ
hb : 0 < ↑a✝
⊢ 0 < ↑a✝¹ * ↑a✝

case h_real.h_top
a✝ : ℝ
ha : 0 < ↑a✝
hb : 0 < ⊤
⊢ 0 < ↑a✝ * ⊤

tactic: exfalso
state_before: case h_real.h_bot
a✝ : ℝ
ha : 0 < ↑a✝
hb : 0 < ⊥
⊢ 0 < ↑a✝ * ⊥
state_after: case h_real.h_bot
a✝ : ℝ
ha : 0 < ↑a✝
hb : 0 < ⊥
⊢ False

tactic: exact not_lt_bot hb
state_before: case h_real.h_bot
a✝ : ℝ
ha : 0 < ↑a✝
hb : 0 < ⊥
⊢ False
state_after: no goals

tactic: norm_cast at *
state_before: case h_real.h_real
a✝¹ : ℝ
ha : 0 < ↑a✝¹
a✝ : ℝ
hb : 0 < ↑a✝
⊢ 0 < ↑a✝¹ * ↑a✝
state_after: case h_real.h_real
a✝¹ a✝ : ℝ
ha : 0 < a✝¹
hb : 0 < a✝
⊢ 0 < a✝¹ * a✝

tactic: exact Left.mul_pos ha hb
state_before: case h_real.h_real
a✝¹ a✝ : ℝ
ha : 0 < a✝¹
hb : 0 < a✝
⊢ 0 < a✝¹ * a✝
state_after: no goals

tactic: rw [EReal.mul_comm, top_mul_of_pos ha]
state_before: case h_real.h_top
a✝ : ℝ
ha : 0 < ↑a✝
hb : 0 < ⊤
⊢ 0 < ↑a✝ * ⊤
state_after: case h_real.h_top
a✝ : ℝ
ha : 0 < ↑a✝
hb : 0 < ⊤
⊢ 0 < ⊤

tactic: exact hb
state_before: case h_real.h_top
a✝ : ℝ
ha : 0 < ↑a✝
hb : 0 < ⊤
⊢ 0 < ⊤
state_after: no goals

tactic: rw [top_mul_of_pos hb]
state_before: case h_top
b : EReal
hb : 0 < b
ha : 0 < ⊤
⊢ 0 < ⊤ * b
state_after: case h_top
b : EReal
hb : 0 < b
ha : 0 < ⊤
⊢ 0 < ⊤

tactic: exact ha
state_before: case h_top
b : EReal
hb : 0 < b
ha : 0 < ⊤
⊢ 0 < ⊤
state_after: no goals
Theorem: ENNReal.toNNReal_eq_one_iff
File: Mathlib/Data/ENNReal/Basic.lean

tactic: simp
state_before: α : Type u_1
a b c d : ℝ≥0∞
r p q : ℝ≥0
x : ℝ≥0∞
⊢ x = ↑1 ∨ x = ⊤ ∧ 1 = 0 ↔ x = 1
state_after: no goals
Theorem: Metric.secondCountable_of_almost_dense_set
File: Mathlib/Topology/MetricSpace/Pseudo/Defs.lean

tactic: refine EMetric.secondCountable_of_almost_dense_set fun ε ε0 => ?_
state_before: α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
H : ∀ ε > 0, ∃ s, s.Countable ∧ ∀ (x : α), ∃ y ∈ s, dist x y ≤ ε
⊢ SecondCountableTopology α
state_after: α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
H : ∀ ε > 0, ∃ s, s.Countable ∧ ∀ (x : α), ∃ y ∈ s, dist x y ≤ ε
ε : ℝ≥0∞
ε0 : ε > 0
⊢ ∃ t, t.Countable ∧ ⋃ x ∈ t, EMetric.closedBall x ε = univ

tactic: rcases ENNReal.lt_iff_exists_nnreal_btwn.1 ε0 with ⟨ε', ε'0, ε'ε⟩
state_before: α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
H : ∀ ε > 0, ∃ s, s.Countable ∧ ∀ (x : α), ∃ y ∈ s, dist x y ≤ ε
ε : ℝ≥0∞
ε0 : ε > 0
⊢ ∃ t, t.Countable ∧ ⋃ x ∈ t, EMetric.closedBall x ε = univ
state_after: case intro.intro
α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
H : ∀ ε > 0, ∃ s, s.Countable ∧ ∀ (x : α), ∃ y ∈ s, dist x y ≤ ε
ε : ℝ≥0∞
ε0 : ε > 0
ε' : ℝ≥0
ε'0 : 0 < ↑ε'
ε'ε : ↑ε' < ε
⊢ ∃ t, t.Countable ∧ ⋃ x ∈ t, EMetric.closedBall x ε = univ

tactic: choose s hsc y hys hyx using H ε' (mod_cast ε'0)
state_before: case intro.intro
α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
H : ∀ ε > 0, ∃ s, s.Countable ∧ ∀ (x : α), ∃ y ∈ s, dist x y ≤ ε
ε : ℝ≥0∞
ε0 : ε > 0
ε' : ℝ≥0
ε'0 : 0 < ↑ε'
ε'ε : ↑ε' < ε
⊢ ∃ t, t.Countable ∧ ⋃ x ∈ t, EMetric.closedBall x ε = univ
state_after: case intro.intro
α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
H : ∀ ε > 0, ∃ s, s.Countable ∧ ∀ (x : α), ∃ y ∈ s, dist x y ≤ ε
ε : ℝ≥0∞
ε0 : ε > 0
ε' : ℝ≥0
ε'0 : 0 < ↑ε'
ε'ε : ↑ε' < ε
s : Set α
hsc : s.Countable
y : α → α
hys : ∀ (x : α), y x ∈ s
hyx : ∀ (x : α), dist x (y x) ≤ ↑ε'
⊢ ∃ t, t.Countable ∧ ⋃ x ∈ t, EMetric.closedBall x ε = univ

tactic: refine ⟨s, hsc, iUnion₂_eq_univ_iff.2 fun x => ⟨y x, hys _, le_trans ?_ ε'ε.le⟩⟩
state_before: case intro.intro
α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
H : ∀ ε > 0, ∃ s, s.Countable ∧ ∀ (x : α), ∃ y ∈ s, dist x y ≤ ε
ε : ℝ≥0∞
ε0 : ε > 0
ε' : ℝ≥0
ε'0 : 0 < ↑ε'
ε'ε : ↑ε' < ε
s : Set α
hsc : s.Countable
y : α → α
hys : ∀ (x : α), y x ∈ s
hyx : ∀ (x : α), dist x (y x) ≤ ↑ε'
⊢ ∃ t, t.Countable ∧ ⋃ x ∈ t, EMetric.closedBall x ε = univ
state_after: case intro.intro
α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
H : ∀ ε > 0, ∃ s, s.Countable ∧ ∀ (x : α), ∃ y ∈ s, dist x y ≤ ε
ε : ℝ≥0∞
ε0 : ε > 0
ε' : ℝ≥0
ε'0 : 0 < ↑ε'
ε'ε : ↑ε' < ε
s : Set α
hsc : s.Countable
y : α → α
hys : ∀ (x : α), y x ∈ s
hyx : ∀ (x : α), dist x (y x) ≤ ↑ε'
x : α
⊢ edist x (y x) ≤ ↑ε'

tactic: exact mod_cast hyx x
state_before: case intro.intro
α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
H : ∀ ε > 0, ∃ s, s.Countable ∧ ∀ (x : α), ∃ y ∈ s, dist x y ≤ ε
ε : ℝ≥0∞
ε0 : ε > 0
ε' : ℝ≥0
ε'0 : 0 < ↑ε'
ε'ε : ↑ε' < ε
s : Set α
hsc : s.Countable
y : α → α
hys : ∀ (x : α), y x ∈ s
hyx : ∀ (x : α), dist x (y x) ≤ ↑ε'
x : α
⊢ edist x (y x) ≤ ↑ε'
state_after: no goals
Theorem: linearIndependent_fin_succ
File: Mathlib/LinearAlgebra/LinearIndependent.lean

tactic: rw [← linearIndependent_fin_cons, Fin.cons_self_tail]
state_before: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
inst✝⁴ : DivisionRing K
inst✝³ : AddCommGroup V
inst✝² : AddCommGroup V'
inst✝¹ : Module K V
inst✝ : Module K V'
v✝ : ι → V
s t : Set V
x y z : V
n : ℕ
v : Fin (n + 1) → V
⊢ LinearIndependent K v ↔ LinearIndependent K (Fin.tail v) ∧ v 0 ∉ span K (range (Fin.tail v))
state_after: no goals
Theorem: StrictConvexOn.translate_left
File: Mathlib/Analysis/Convex/Function.lean

tactic: simpa only [add_comm] using hf.translate_right c
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
α : Type u_4
β : Type u_5
ι : Type u_6
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCancelCommMonoid E
inst✝² : OrderedAddCommMonoid β
inst✝¹ : Module 𝕜 E
inst✝ : SMul 𝕜 β
s : Set E
f : E → β
hf : StrictConvexOn 𝕜 s f
c : E
⊢ StrictConvexOn 𝕜 ((fun z => c + z) ⁻¹' s) (f ∘ fun z => z + c)
state_after: no goals
Theorem: inv_mul_lt_one_iff_lt
File: Mathlib/Algebra/Order/Group/Defs.lean

tactic: rw [← mul_lt_mul_iff_right b, inv_mul_cancel_right, one_mul]
state_before: α : Type u
inst✝² : Group α
inst✝¹ : LT α
inst✝ : CovariantClass α α (swap fun x x_1 => x * x_1) fun x x_1 => x < x_1
a b c : α
⊢ a * b⁻¹ < 1 ↔ a < b
state_after: no goals
Theorem: Composition.ne_ones_iff
File: Mathlib/Combinatorics/Enumerative/Composition.lean

tactic: refine (not_congr eq_ones_iff).trans ?_
state_before: n : ℕ
c✝ c : Composition n
⊢ c ≠ ones n ↔ ∃ i ∈ c.blocks, 1 < i
state_after: n : ℕ
c✝ c : Composition n
⊢ (¬∀ i ∈ c.blocks, i = 1) ↔ ∃ i ∈ c.blocks, 1 < i

tactic: have : ∀ j ∈ c.blocks, j = 1 ↔ j ≤ 1 := fun j hj => by simp [le_antisymm_iff, c.one_le_blocks hj]
state_before: n : ℕ
c✝ c : Composition n
⊢ (¬∀ i ∈ c.blocks, i = 1) ↔ ∃ i ∈ c.blocks, 1 < i
state_after: n : ℕ
c✝ c : Composition n
this : ∀ j ∈ c.blocks, j = 1 ↔ j ≤ 1
⊢ (¬∀ i ∈ c.blocks, i = 1) ↔ ∃ i ∈ c.blocks, 1 < i

tactic: simp (config := { contextual := true }) [this]
state_before: n : ℕ
c✝ c : Composition n
this : ∀ j ∈ c.blocks, j = 1 ↔ j ≤ 1
⊢ (¬∀ i ∈ c.blocks, i = 1) ↔ ∃ i ∈ c.blocks, 1 < i
state_after: no goals

tactic: simp [le_antisymm_iff, c.one_le_blocks hj]
state_before: n : ℕ
c✝ c : Composition n
j : ℕ
hj : j ∈ c.blocks
⊢ j = 1 ↔ j ≤ 1
state_after: no goals
Theorem: NNReal.sqrt_le_one
File: Mathlib/Data/Real/Sqrt.lean

tactic: rw [← sqrt_one, sqrt_le_sqrt, sqrt_one]
state_before: x y : ℝ≥0
⊢ sqrt x ≤ 1 ↔ x ≤ 1
state_after: no goals
Theorem: Multiset.mem_Ioi
File: Mathlib/Order/Interval/Multiset.lean

tactic: rw [Ioi, ← Finset.mem_def, Finset.mem_Ioi]
state_before: α : Type u_1
inst✝¹ : Preorder α
inst✝ : LocallyFiniteOrderTop α
a x : α
⊢ x ∈ Ioi a ↔ a < x
state_after: no goals