1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Valuation.Integers.isUnit_of_one
File: Mathlib/RingTheory/Valuation/Integers.lean

tactic: rw [← one_mul (v _), ← hvx, ← v.map_mul, ← hu, u.mul_inv, hu, hvx, v.map_one]
state_before: R : Type u
Γ₀ : Type v
inst✝⁵ : CommRing R
inst✝⁴ : LinearOrderedCommGroupWithZero Γ₀
v : Valuation R Γ₀
O : Type w
inst✝³ : CommRing O
inst✝² : Algebra O R
inst✝¹ : CommRing O
inst✝ : Algebra O R
hv : v.Integers O
x : O
hx : IsUnit ((algebraMap O R) x)
hvx : v ((algebraMap O R) x) = 1
u : Rˣ
hu : ↑u = (algebraMap O R) x
h1 : v ↑u ≤ 1
⊢ v ↑u⁻¹ ≤ 1
state_after: no goals

tactic: rw [RingHom.map_mul, RingHom.map_one, hr1, hr2, Units.mul_inv]
state_before: R : Type u
Γ₀ : Type v
inst✝⁵ : CommRing R
inst✝⁴ : LinearOrderedCommGroupWithZero Γ₀
v : Valuation R Γ₀
O : Type w
inst✝³ : CommRing O
inst✝² : Algebra O R
inst✝¹ : CommRing O
inst✝ : Algebra O R
hv : v.Integers O
x : O
hx : IsUnit ((algebraMap O R) x)
hvx : v ((algebraMap O R) x) = 1
u : Rˣ
hu : ↑u = (algebraMap O R) x
h1 : v ↑u ≤ 1
h2 : v ↑u⁻¹ ≤ 1
r1 : O
hr1 : (algebraMap O R) r1 = ↑u
r2 : O
hr2 : (algebraMap O R) r2 = ↑u⁻¹
⊢ (algebraMap O R) (r1 * r2) = (algebraMap O R) 1
state_after: no goals

tactic: rw [RingHom.map_mul, RingHom.map_one, hr1, hr2, Units.inv_mul]
state_before: R : Type u
Γ₀ : Type v
inst✝⁵ : CommRing R
inst✝⁴ : LinearOrderedCommGroupWithZero Γ₀
v : Valuation R Γ₀
O : Type w
inst✝³ : CommRing O
inst✝² : Algebra O R
inst✝¹ : CommRing O
inst✝ : Algebra O R
hv : v.Integers O
x : O
hx : IsUnit ((algebraMap O R) x)
hvx : v ((algebraMap O R) x) = 1
u : Rˣ
hu : ↑u = (algebraMap O R) x
h1 : v ↑u ≤ 1
h2 : v ↑u⁻¹ ≤ 1
r1 : O
hr1 : (algebraMap O R) r1 = ↑u
r2 : O
hr2 : (algebraMap O R) r2 = ↑u⁻¹
⊢ (algebraMap O R) (r2 * r1) = (algebraMap O R) 1
state_after: no goals
Theorem: finprod_eq_prod_plift_of_mulSupport_toFinset_subset
File: Mathlib/Algebra/BigOperators/Finprod.lean

tactic: rw [finprod, dif_pos]
state_before: G : Type u_1
M : Type u_2
N : Type u_3
α : Sort u_4
β : Sort u_5
ι : Sort u_6
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f : α → M
hf : (mulSupport (f ∘ PLift.down)).Finite
s : Finset (PLift α)
hs : hf.toFinset ⊆ s
⊢ ∏ᶠ (i : α), f i = ∏ i ∈ s, f i.down
state_after: G : Type u_1
M : Type u_2
N : Type u_3
α : Sort u_4
β : Sort u_5
ι : Sort u_6
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f : α → M
hf : (mulSupport (f ∘ PLift.down)).Finite
s : Finset (PLift α)
hs : hf.toFinset ⊆ s
⊢ ∏ i ∈ ?hc.toFinset, f i.down = ∏ i ∈ s, f i.down

case hc
G : Type u_1
M : Type u_2
N : Type u_3
α : Sort u_4
β : Sort u_5
ι : Sort u_6
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f : α → M
hf : (mulSupport (f ∘ PLift.down)).Finite
s : Finset (PLift α)
hs : hf.toFinset ⊆ s
⊢ (mulSupport ((fun i => f i) ∘ PLift.down)).Finite

tactic: refine Finset.prod_subset hs fun x _ hxf => ?_
state_before: G : Type u_1
M : Type u_2
N : Type u_3
α : Sort u_4
β : Sort u_5
ι : Sort u_6
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f : α → M
hf : (mulSupport (f ∘ PLift.down)).Finite
s : Finset (PLift α)
hs : hf.toFinset ⊆ s
⊢ ∏ i ∈ ?hc.toFinset, f i.down = ∏ i ∈ s, f i.down

case hc
G : Type u_1
M : Type u_2
N : Type u_3
α : Sort u_4
β : Sort u_5
ι : Sort u_6
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f : α → M
hf : (mulSupport (f ∘ PLift.down)).Finite
s : Finset (PLift α)
hs : hf.toFinset ⊆ s
⊢ (mulSupport ((fun i => f i) ∘ PLift.down)).Finite
state_after: G : Type u_1
M : Type u_2
N : Type u_3
α : Sort u_4
β : Sort u_5
ι : Sort u_6
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f : α → M
hf : (mulSupport (f ∘ PLift.down)).Finite
s : Finset (PLift α)
hs : hf.toFinset ⊆ s
x : PLift α
x✝ : x ∈ s
hxf : x ∉ hf.toFinset
⊢ f x.down = 1

tactic: rwa [hf.mem_toFinset, nmem_mulSupport] at hxf
state_before: G : Type u_1
M : Type u_2
N : Type u_3
α : Sort u_4
β : Sort u_5
ι : Sort u_6
inst✝¹ : CommMonoid M
inst✝ : CommMonoid N
f : α → M
hf : (mulSupport (f ∘ PLift.down)).Finite
s : Finset (PLift α)
hs : hf.toFinset ⊆ s
x : PLift α
x✝ : x ∈ s
hxf : x ∉ hf.toFinset
⊢ f x.down = 1
state_after: no goals
Theorem: Multiset.count_filter
File: Mathlib/Data/Multiset/Basic.lean

tactic: split_ifs with h
state_before: α : Type u_1
β : Type v
γ : Type u_2
inst✝¹ : DecidableEq α
s✝ : Multiset α
p : α → Prop
inst✝ : DecidablePred p
a : α
s : Multiset α
⊢ count a (filter p s) = if p a then count a s else 0
state_after: case pos
α : Type u_1
β : Type v
γ : Type u_2
inst✝¹ : DecidableEq α
s✝ : Multiset α
p : α → Prop
inst✝ : DecidablePred p
a : α
s : Multiset α
h : p a
⊢ count a (filter p s) = count a s

case neg
α : Type u_1
β : Type v
γ : Type u_2
inst✝¹ : DecidableEq α
s✝ : Multiset α
p : α → Prop
inst✝ : DecidablePred p
a : α
s : Multiset α
h : ¬p a
⊢ count a (filter p s) = 0

tactic: exact count_filter_of_pos h
state_before: case pos
α : Type u_1
β : Type v
γ : Type u_2
inst✝¹ : DecidableEq α
s✝ : Multiset α
p : α → Prop
inst✝ : DecidablePred p
a : α
s : Multiset α
h : p a
⊢ count a (filter p s) = count a s
state_after: no goals

tactic: exact count_filter_of_neg h
state_before: case neg
α : Type u_1
β : Type v
γ : Type u_2
inst✝¹ : DecidableEq α
s✝ : Multiset α
p : α → Prop
inst✝ : DecidablePred p
a : α
s : Multiset α
h : ¬p a
⊢ count a (filter p s) = 0
state_after: no goals
Theorem: Polynomial.leadingCoeff_sub_of_degree_lt
File: Mathlib/Algebra/Polynomial/Degree/Definitions.lean

tactic: rw [← q.degree_neg] at h
state_before: R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝ : Ring R
p q : R[X]
h : q.degree < p.degree
⊢ (p - q).leadingCoeff = p.leadingCoeff
state_after: R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝ : Ring R
p q : R[X]
h : (-q).degree < p.degree
⊢ (p - q).leadingCoeff = p.leadingCoeff

tactic: rw [sub_eq_add_neg, leadingCoeff_add_of_degree_lt' h]
state_before: R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝ : Ring R
p q : R[X]
h : (-q).degree < p.degree
⊢ (p - q).leadingCoeff = p.leadingCoeff
state_after: no goals
Theorem: Ordinal.exists_of_lt_bmex
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

tactic: cases' exists_of_lt_mex ha with i hi
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
o : Ordinal.{u_4}
f : (a : Ordinal.{u_4}) → a < o → Ordinal.{max u_4 u_5}
a : Ordinal.{max u_5 u_4}
ha : a < o.bmex f
⊢ ∃ i, ∃ (hi : i < o), f i hi = a
state_after: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
o : Ordinal.{u_4}
f : (a : Ordinal.{u_4}) → a < o → Ordinal.{max u_4 u_5}
a : Ordinal.{max u_5 u_4}
ha : a < o.bmex f
i : (Quotient.out o).α
hi : o.familyOfBFamily f i = a
⊢ ∃ i, ∃ (hi : i < o), f i hi = a

tactic: exact ⟨_, typein_lt_self i, hi⟩
state_before: case intro
α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
o : Ordinal.{u_4}
f : (a : Ordinal.{u_4}) → a < o → Ordinal.{max u_4 u_5}
a : Ordinal.{max u_5 u_4}
ha : a < o.bmex f
i : (Quotient.out o).α
hi : o.familyOfBFamily f i = a
⊢ ∃ i, ∃ (hi : i < o), f i hi = a
state_after: no goals
Theorem: ContinuousMap.Homotopy.start_path
File: Mathlib/AlgebraicTopology/FundamentalGroupoid/InducedMaps.lean

tactic: convert hfg 0 <;> simp only [Path.source]
state_before: X₁ X₂ Y : TopCat
f : C(↑X₁, ↑Y)
g : C(↑X₂, ↑Y)
x₀ x₁ : ↑X₁
x₂ x₃ : ↑X₂
p : Path x₀ x₁
q : Path x₂ x₃
hfg : ∀ (t : ↑I), f (p t) = g (q t)
⊢ f x₀ = g x₂
state_after: no goals
Theorem: measurable_derivWithin_Ioi
File: Mathlib/Analysis/Calculus/FDeriv/Measurable.lean

tactic: simpa [derivWithin_Ioi_eq_Ici] using measurable_derivWithin_Ici f
state_before: F : Type u_1
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
f : ℝ → F
K : Set F
inst✝² : CompleteSpace F
inst✝¹ : MeasurableSpace F
inst✝ : BorelSpace F
⊢ Measurable fun x => derivWithin f (Ioi x) x
state_after: no goals
Theorem: Encodable.iSup_decode₂
File: Mathlib/Logic/Encodable/Lattice.lean

tactic: rw [iSup_comm]
state_before: α : Type u_1
β : Type u_2
inst✝¹ : Encodable β
inst✝ : CompleteLattice α
f : β → α
⊢ ⨆ i, ⨆ b ∈ decode₂ β i, f b = ⨆ b, f b
state_after: α : Type u_1
β : Type u_2
inst✝¹ : Encodable β
inst✝ : CompleteLattice α
f : β → α
⊢ ⨆ j, ⨆ i, ⨆ (_ : j ∈ decode₂ β i), f j = ⨆ b, f b

tactic: simp only [mem_decode₂, iSup_iSup_eq_right]
state_before: α : Type u_1
β : Type u_2
inst✝¹ : Encodable β
inst✝ : CompleteLattice α
f : β → α
⊢ ⨆ j, ⨆ i, ⨆ (_ : j ∈ decode₂ β i), f j = ⨆ b, f b
state_after: no goals
Theorem: LieModule.chainTop_isNonZero'
File: Mathlib/Algebra/Lie/Weights/Chain.lean

tactic: by_contra e
state_before: R : Type u_1
L : Type u_2
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
M : Type u_3
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : LieAlgebra.IsNilpotent R L
inst✝² : NoZeroSMulDivisors ℤ R
inst✝¹ : NoZeroSMulDivisors R M
inst✝ : IsNoetherian R M
α : L → R
β : Weight R L M
hα : α ≠ 0
hα' : weightSpace M α ≠ ⊥
⊢ (chainTop α β).IsNonZero
state_after: R : Type u_1
L : Type u_2
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
M : Type u_3
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : LieAlgebra.IsNilpotent R L
inst✝² : NoZeroSMulDivisors ℤ R
inst✝¹ : NoZeroSMulDivisors R M
inst✝ : IsNoetherian R M
α : L → R
β : Weight R L M
hα : α ≠ 0
hα' : weightSpace M α ≠ ⊥
e : (chainTop α β).IsZero
⊢ False

tactic: apply hα'
state_before: R : Type u_1
L : Type u_2
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
M : Type u_3
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : LieAlgebra.IsNilpotent R L
inst✝² : NoZeroSMulDivisors ℤ R
inst✝¹ : NoZeroSMulDivisors R M
inst✝ : IsNoetherian R M
α : L → R
β : Weight R L M
hα : α ≠ 0
hα' : weightSpace M α ≠ ⊥
e : (chainTop α β).IsZero
⊢ False
state_after: R : Type u_1
L : Type u_2
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
M : Type u_3
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : LieAlgebra.IsNilpotent R L
inst✝² : NoZeroSMulDivisors ℤ R
inst✝¹ : NoZeroSMulDivisors R M
inst✝ : IsNoetherian R M
α : L → R
β : Weight R L M
hα : α ≠ 0
hα' : weightSpace M α ≠ ⊥
e : (chainTop α β).IsZero
⊢ weightSpace M α = ⊥

tactic: rw [← add_zero (α : L → R), ← e, weightSpace_add_chainTop _ _ hα]
state_before: R : Type u_1
L : Type u_2
inst✝¹⁰ : CommRing R
inst✝⁹ : LieRing L
inst✝⁸ : LieAlgebra R L
M : Type u_3
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : LieAlgebra.IsNilpotent R L
inst✝² : NoZeroSMulDivisors ℤ R
inst✝¹ : NoZeroSMulDivisors R M
inst✝ : IsNoetherian R M
α : L → R
β : Weight R L M
hα : α ≠ 0
hα' : weightSpace M α ≠ ⊥
e : (chainTop α β).IsZero
⊢ weightSpace M α = ⊥
state_after: no goals
Theorem: Filter.Tendsto.atBot_mul_atBot
File: Mathlib/Order/Filter/AtTopBot.lean

tactic: have : Tendsto (fun x => -f x * -g x) l atTop :=
  (tendsto_neg_atBot_atTop.comp hf).atTop_mul_atTop (tendsto_neg_atBot_atTop.comp hg)
state_before: ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝ : OrderedRing α
l : Filter β
f g : β → α
hf : Tendsto f l atBot
hg : Tendsto g l atBot
⊢ Tendsto (fun x => f x * g x) l atTop
state_after: ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝ : OrderedRing α
l : Filter β
f g : β → α
hf : Tendsto f l atBot
hg : Tendsto g l atBot
this : Tendsto (fun x => -f x * -g x) l atTop
⊢ Tendsto (fun x => f x * g x) l atTop

tactic: simpa only [neg_mul_neg] using this
state_before: ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝ : OrderedRing α
l : Filter β
f g : β → α
hf : Tendsto f l atBot
hg : Tendsto g l atBot
this : Tendsto (fun x => -f x * -g x) l atTop
⊢ Tendsto (fun x => f x * g x) l atTop
state_after: no goals
Theorem: Set.sUnion_eq_iUnion
File: Mathlib/Data/Set/Lattice.lean

tactic: simp only [← sUnion_range, Subtype.range_coe]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
s : Set (Set α)
⊢ ⋃₀ s = ⋃ i, ↑i
state_after: no goals
Theorem: Ordinal.limitRecOn_zero
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

tactic: rw [limitRecOn, SuccOrder.limitRecOn_limit _ _ isSuccLimit_zero, dif_pos rfl]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s : β → β → Prop
t : γ → γ → Prop
C : Ordinal.{u_4} → Sort u_5
H₁ : C 0
H₂ : (o : Ordinal.{u_4}) → C o → C (succ o)
H₃ : (o : Ordinal.{u_4}) → o.IsLimit → ((o' : Ordinal.{u_4}) → o' < o → C o') → C o
⊢ limitRecOn 0 H₁ H₂ H₃ = H₁
state_after: no goals
Theorem: Finset.exists_card_eq
File: Mathlib/Data/Set/Finite.lean

tactic: classical
obtain ⟨s, rfl⟩ := exists_card_eq n
obtain ⟨a, ha⟩ := s.exists_not_mem
exact ⟨insert a s, card_insert_of_not_mem ha⟩
state_before: α : Type u
β : Type v
ι : Sort w
γ : Type x
inst✝ : Infinite α
n : ℕ
⊢ ∃ s, s.card = n + 1
state_after: no goals

tactic: obtain ⟨s, rfl⟩ := exists_card_eq n
state_before: α : Type u
β : Type v
ι : Sort w
γ : Type x
inst✝ : Infinite α
n : ℕ
⊢ ∃ s, s.card = n + 1
state_after: case intro
α : Type u
β : Type v
ι : Sort w
γ : Type x
inst✝ : Infinite α
s : Finset α
⊢ ∃ s_1, s_1.card = s.card + 1

tactic: obtain ⟨a, ha⟩ := s.exists_not_mem
state_before: case intro
α : Type u
β : Type v
ι : Sort w
γ : Type x
inst✝ : Infinite α
s : Finset α
⊢ ∃ s_1, s_1.card = s.card + 1
state_after: case intro.intro
α : Type u
β : Type v
ι : Sort w
γ : Type x
inst✝ : Infinite α
s : Finset α
a : α
ha : a ∉ s
⊢ ∃ s_1, s_1.card = s.card + 1

tactic: exact ⟨insert a s, card_insert_of_not_mem ha⟩
state_before: case intro.intro
α : Type u
β : Type v
ι : Sort w
γ : Type x
inst✝ : Infinite α
s : Finset α
a : α
ha : a ∉ s
⊢ ∃ s_1, s_1.card = s.card + 1
state_after: no goals
Theorem: Int.Ioc_filter_dvd_card
File: Mathlib/Data/Int/CardIntervalMod.lean

tactic: rw [Ioc_filter_dvd_eq _ _ hr, card_map, card_Ioc, toNat_eq_max]
state_before: a b r : ℤ
hr : 0 < r
⊢ ↑(filter (fun x => r ∣ x) (Ioc a b)).card = max (⌊↑b / ↑r⌋ - ⌊↑a / ↑r⌋) 0
state_after: no goals
Theorem: Stream'.inits_eq
File: Mathlib/Data/Stream/Init.lean

tactic: apply Stream'.ext
state_before: α : Type u
β : Type v
δ : Type w
s : Stream' α
⊢ s.inits = [s.head] :: map (List.cons s.head) s.tail.inits
state_after: case a
α : Type u
β : Type v
δ : Type w
s : Stream' α
⊢ ∀ (n : ℕ), s.inits.get n = ([s.head] :: map (List.cons s.head) s.tail.inits).get n

tactic: intro n
state_before: case a
α : Type u
β : Type v
δ : Type w
s : Stream' α
⊢ ∀ (n : ℕ), s.inits.get n = ([s.head] :: map (List.cons s.head) s.tail.inits).get n
state_after: case a
α : Type u
β : Type v
δ : Type w
s : Stream' α
n : ℕ
⊢ s.inits.get n = ([s.head] :: map (List.cons s.head) s.tail.inits).get n

tactic: cases n
state_before: case a
α : Type u
β : Type v
δ : Type w
s : Stream' α
n : ℕ
⊢ s.inits.get n = ([s.head] :: map (List.cons s.head) s.tail.inits).get n
state_after: case a.zero
α : Type u
β : Type v
δ : Type w
s : Stream' α
⊢ s.inits.get 0 = ([s.head] :: map (List.cons s.head) s.tail.inits).get 0

case a.succ
α : Type u
β : Type v
δ : Type w
s : Stream' α
n✝ : ℕ
⊢ s.inits.get (n✝ + 1) = ([s.head] :: map (List.cons s.head) s.tail.inits).get (n✝ + 1)

tactic: rfl
state_before: case a.zero
α : Type u
β : Type v
δ : Type w
s : Stream' α
⊢ s.inits.get 0 = ([s.head] :: map (List.cons s.head) s.tail.inits).get 0
state_after: no goals

tactic: rw [get_inits, get_succ, tail_cons, get_map, get_inits]
state_before: case a.succ
α : Type u
β : Type v
δ : Type w
s : Stream' α
n✝ : ℕ
⊢ s.inits.get (n✝ + 1) = ([s.head] :: map (List.cons s.head) s.tail.inits).get (n✝ + 1)
state_after: case a.succ
α : Type u
β : Type v
δ : Type w
s : Stream' α
n✝ : ℕ
⊢ take (n✝ + 1).succ s = s.head :: take n✝.succ s.tail

tactic: rfl
state_before: case a.succ
α : Type u
β : Type v
δ : Type w
s : Stream' α
n✝ : ℕ
⊢ take (n✝ + 1).succ s = s.head :: take n✝.succ s.tail
state_after: no goals
Theorem: thickenedIndicator_zero
File: Mathlib/Topology/MetricSpace/ThickenedIndicator.lean

tactic: rw [thickenedIndicator_apply, thickenedIndicatorAux_zero δ_pos E x_out, zero_toNNReal]
state_before: α : Type u_1
inst✝ : PseudoEMetricSpace α
δ : ℝ
δ_pos : 0 < δ
E : Set α
x : α
x_out : x ∉ thickening δ E
⊢ (thickenedIndicator δ_pos E) x = 0
state_after: no goals
Theorem: ZFSet.sUnion_empty
File: Mathlib/SetTheory/ZFC/Basic.lean

tactic: ext
state_before: ⊢ ⋃₀ ∅ = ∅
state_after: case a
z✝ : ZFSet
⊢ z✝ ∈ ⋃₀ ∅ ↔ z✝ ∈ ∅

tactic: simp
state_before: case a
z✝ : ZFSet
⊢ z✝ ∈ ⋃₀ ∅ ↔ z✝ ∈ ∅
state_after: no goals
Theorem: Real.ofReal_le_ennnorm
File: Mathlib/Analysis/Normed/Group/Basic.lean

tactic: obtain hr | hr := le_total 0 r
state_before: 𝓕 : Type u_1
𝕜 : Type u_2
α : Type u_3
ι : Type u_4
κ : Type u_5
E : Type u_6
F : Type u_7
G : Type u_8
inst✝¹ : SeminormedCommGroup E
inst✝ : SeminormedCommGroup F
a a₁ a₂ b b₁ b₂ : E
r✝ r₁ r₂ r : ℝ
⊢ ENNReal.ofReal r ≤ ↑‖r‖₊
state_after: case inl
𝓕 : Type u_1
𝕜 : Type u_2
α : Type u_3
ι : Type u_4
κ : Type u_5
E : Type u_6
F : Type u_7
G : Type u_8
inst✝¹ : SeminormedCommGroup E
inst✝ : SeminormedCommGroup F
a a₁ a₂ b b₁ b₂ : E
r✝ r₁ r₂ r : ℝ
hr : 0 ≤ r
⊢ ENNReal.ofReal r ≤ ↑‖r‖₊

case inr
𝓕 : Type u_1
𝕜 : Type u_2
α : Type u_3
ι : Type u_4
κ : Type u_5
E : Type u_6
F : Type u_7
G : Type u_8
inst✝¹ : SeminormedCommGroup E
inst✝ : SeminormedCommGroup F
a a₁ a₂ b b₁ b₂ : E
r✝ r₁ r₂ r : ℝ
hr : r ≤ 0
⊢ ENNReal.ofReal r ≤ ↑‖r‖₊

tactic: exact (Real.ennnorm_eq_ofReal hr).ge
state_before: case inl
𝓕 : Type u_1
𝕜 : Type u_2
α : Type u_3
ι : Type u_4
κ : Type u_5
E : Type u_6
F : Type u_7
G : Type u_8
inst✝¹ : SeminormedCommGroup E
inst✝ : SeminormedCommGroup F
a a₁ a₂ b b₁ b₂ : E
r✝ r₁ r₂ r : ℝ
hr : 0 ≤ r
⊢ ENNReal.ofReal r ≤ ↑‖r‖₊
state_after: no goals

tactic: rw [ENNReal.ofReal_eq_zero.2 hr]
state_before: case inr
𝓕 : Type u_1
𝕜 : Type u_2
α : Type u_3
ι : Type u_4
κ : Type u_5
E : Type u_6
F : Type u_7
G : Type u_8
inst✝¹ : SeminormedCommGroup E
inst✝ : SeminormedCommGroup F
a a₁ a₂ b b₁ b₂ : E
r✝ r₁ r₂ r : ℝ
hr : r ≤ 0
⊢ ENNReal.ofReal r ≤ ↑‖r‖₊
state_after: case inr
𝓕 : Type u_1
𝕜 : Type u_2
α : Type u_3
ι : Type u_4
κ : Type u_5
E : Type u_6
F : Type u_7
G : Type u_8
inst✝¹ : SeminormedCommGroup E
inst✝ : SeminormedCommGroup F
a a₁ a₂ b b₁ b₂ : E
r✝ r₁ r₂ r : ℝ
hr : r ≤ 0
⊢ 0 ≤ ↑‖r‖₊

tactic: exact bot_le
state_before: case inr
𝓕 : Type u_1
𝕜 : Type u_2
α : Type u_3
ι : Type u_4
κ : Type u_5
E : Type u_6
F : Type u_7
G : Type u_8
inst✝¹ : SeminormedCommGroup E
inst✝ : SeminormedCommGroup F
a a₁ a₂ b b₁ b₂ : E
r✝ r₁ r₂ r : ℝ
hr : r ≤ 0
⊢ 0 ≤ ↑‖r‖₊
state_after: no goals
Theorem: PartialEquiv.trans_transEquiv
File: Mathlib/Logic/Equiv/PartialEquiv.lean

tactic: simp only [transEquiv_eq_trans, trans_assoc, Equiv.trans_toPartialEquiv]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
e : PartialEquiv α β
e' : PartialEquiv β γ
f'' : γ ≃ δ
⊢ (e.trans e').transEquiv f'' = e.trans (e'.transEquiv f'')
state_after: no goals
Theorem: CategoryTheory.ShortComplex.exact_iff_kernel_ι_comp_cokernel_π_zero
File: Mathlib/Algebra/Homology/ShortComplex/Exact.lean

tactic: haveI := HasLeftHomology.hasCokernel S
state_before: C : Type u_1
D : Type u_2
inst✝⁶ : Category.{u_3, u_1} C
inst✝⁵ : Category.{?u.16778, u_2} D
inst✝⁴ : HasZeroMorphisms C
inst✝³ : HasZeroMorphisms D
S S₁ S₂ : ShortComplex C
inst✝² : S.HasHomology
inst✝¹ : HasKernel S.g
inst✝ : HasCokernel S.f
⊢ S.Exact ↔ kernel.ι S.g ≫ cokernel.π S.f = 0
state_after: C : Type u_1
D : Type u_2
inst✝⁶ : Category.{u_3, u_1} C
inst✝⁵ : Category.{?u.16778, u_2} D
inst✝⁴ : HasZeroMorphisms C
inst✝³ : HasZeroMorphisms D
S S₁ S₂ : ShortComplex C
inst✝² : S.HasHomology
inst✝¹ : HasKernel S.g
inst✝ : HasCokernel S.f
this : HasCokernel (kernel.lift S.g S.f ⋯)
⊢ S.Exact ↔ kernel.ι S.g ≫ cokernel.π S.f = 0

tactic: haveI := HasRightHomology.hasKernel S
state_before: C : Type u_1
D : Type u_2
inst✝⁶ : Category.{u_3, u_1} C
inst✝⁵ : Category.{?u.16778, u_2} D
inst✝⁴ : HasZeroMorphisms C
inst✝³ : HasZeroMorphisms D
S S₁ S₂ : ShortComplex C
inst✝² : S.HasHomology
inst✝¹ : HasKernel S.g
inst✝ : HasCokernel S.f
this : HasCokernel (kernel.lift S.g S.f ⋯)
⊢ S.Exact ↔ kernel.ι S.g ≫ cokernel.π S.f = 0
state_after: C : Type u_1
D : Type u_2
inst✝⁶ : Category.{u_3, u_1} C
inst✝⁵ : Category.{?u.16778, u_2} D
inst✝⁴ : HasZeroMorphisms C
inst✝³ : HasZeroMorphisms D
S S₁ S₂ : ShortComplex C
inst✝² : S.HasHomology
inst✝¹ : HasKernel S.g
inst✝ : HasCokernel S.f
this✝ : HasCokernel (kernel.lift S.g S.f ⋯)
this : HasKernel (cokernel.desc S.f S.g ⋯)
⊢ S.Exact ↔ kernel.ι S.g ≫ cokernel.π S.f = 0

tactic: exact S.exact_iff_i_p_zero (LeftHomologyData.ofHasKernelOfHasCokernel S)
  (RightHomologyData.ofHasCokernelOfHasKernel S)
state_before: C : Type u_1
D : Type u_2
inst✝⁶ : Category.{u_3, u_1} C
inst✝⁵ : Category.{?u.16778, u_2} D
inst✝⁴ : HasZeroMorphisms C
inst✝³ : HasZeroMorphisms D
S S₁ S₂ : ShortComplex C
inst✝² : S.HasHomology
inst✝¹ : HasKernel S.g
inst✝ : HasCokernel S.f
this✝ : HasCokernel (kernel.lift S.g S.f ⋯)
this : HasKernel (cokernel.desc S.f S.g ⋯)
⊢ S.Exact ↔ kernel.ι S.g ≫ cokernel.π S.f = 0
state_after: no goals
Theorem: Real.le_rpow_inv_iff_of_neg
File: Mathlib/Analysis/SpecialFunctions/Pow/Real.lean

tactic: rw [← rpow_le_rpow_iff_of_neg _ hx hz, rpow_inv_rpow _ hz.ne] <;> positivity
state_before: x y z : ℝ
n : ℕ
hx : 0 < x
hy : 0 < y
hz : z < 0
⊢ x ≤ y ^ z⁻¹ ↔ y ≤ x ^ z
state_after: no goals
Theorem: SetTheory.PGame.neg_fuzzy_zero_iff
File: Mathlib/SetTheory/Game/PGame.lean

tactic: rw [neg_fuzzy_iff, neg_zero]
state_before: xl xr : Type u
x : PGame
⊢ -x ‖ 0 ↔ x ‖ 0
state_after: no goals
Theorem: Bornology.IsBounded.exists_pos_norm_lt'
File: Mathlib/Analysis/Normed/Group/Bounded.lean

tactic: positivity
state_before: α : Type u_1
ι : Type u_2
E : Type u_3
F : Type u_4
G : Type u_5
inst✝² : SeminormedGroup E
inst✝¹ : SeminormedGroup F
inst✝ : SeminormedGroup G
s : Set E
a a₁ a₂ b b₁ b₂ : E
r r₁ r₂ : ℝ
hs : IsBounded s
R : ℝ
hR₀ : R > 0
hR : ∀ x ∈ s, ‖x‖ ≤ R
⊢ R + 1 > 0
state_after: no goals
Theorem: Real.log_neg_of_lt_zero
File: Mathlib/Analysis/SpecialFunctions/Log/Basic.lean

tactic: rw [← neg_neg x, log_neg_eq_log]
state_before: x y : ℝ
h0 : x < 0
h1 : -1 < x
⊢ log x < 0
state_after: x y : ℝ
h0 : x < 0
h1 : -1 < x
⊢ log (-x) < 0

tactic: have h0' : 0 < -x := by linarith
state_before: x y : ℝ
h0 : x < 0
h1 : -1 < x
⊢ log (-x) < 0
state_after: x y : ℝ
h0 : x < 0
h1 : -1 < x
h0' : 0 < -x
⊢ log (-x) < 0

tactic: have h1' : -x < 1 := by linarith
state_before: x y : ℝ
h0 : x < 0
h1 : -1 < x
h0' : 0 < -x
⊢ log (-x) < 0
state_after: x y : ℝ
h0 : x < 0
h1 : -1 < x
h0' : 0 < -x
h1' : -x < 1
⊢ log (-x) < 0

tactic: exact log_neg h0' h1'
state_before: x y : ℝ
h0 : x < 0
h1 : -1 < x
h0' : 0 < -x
h1' : -x < 1
⊢ log (-x) < 0
state_after: no goals

tactic: linarith
state_before: x y : ℝ
h0 : x < 0
h1 : -1 < x
⊢ 0 < -x
state_after: no goals

tactic: linarith
state_before: x y : ℝ
h0 : x < 0
h1 : -1 < x
h0' : 0 < -x
⊢ -x < 1
state_after: no goals
Theorem: Vector.mapAccumr₂_unused_input_right
File: Mathlib/Data/Vector/MapLemmas.lean

tactic: induction xs, ys using Vector.revInductionOn₂ generalizing s with
| nil => rfl
| snoc xs ys x y ih => simp [h x y s, ih]
state_before: α : Type
n : ℕ
β : Type
xs : Vector α n
ys : Vector β n
σ γ : Type
s : σ
inst✝ : Inhabited β
f : α → β → σ → σ × γ
h : ∀ (a : α) (b : β) (s : σ), f a default s = f a b s
⊢ mapAccumr₂ f xs ys s = mapAccumr (fun a s => f a default s) xs s
state_after: no goals

tactic: rfl
state_before: case nil
α : Type
n : ℕ
β : Type
xs : Vector α n
ys : Vector β n
σ γ : Type
inst✝ : Inhabited β
f : α → β → σ → σ × γ
h : ∀ (a : α) (b : β) (s : σ), f a default s = f a b s
s : σ
⊢ mapAccumr₂ f nil nil s = mapAccumr (fun a s => f a default s) nil s
state_after: no goals

tactic: simp [h x y s, ih]
state_before: case snoc
α : Type
n : ℕ
β : Type
xs✝ : Vector α n
ys✝ : Vector β n
σ γ : Type
inst✝ : Inhabited β
f : α → β → σ → σ × γ
h : ∀ (a : α) (b : β) (s : σ), f a default s = f a b s
n✝ : ℕ
xs : Vector α n✝
ys : Vector β n✝
x : α
y : β
ih : ∀ {s : σ}, mapAccumr₂ f xs ys s = mapAccumr (fun a s => f a default s) xs s
s : σ
⊢ mapAccumr₂ f (xs.snoc x) (ys.snoc y) s = mapAccumr (fun a s => f a default s) (xs.snoc x) s
state_after: no goals