1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Multiset.Nodup.mem_erase_iff
File: Mathlib/Data/Multiset/Nodup.lean

tactic: rw [d.erase_eq_filter b, mem_filter, and_comm]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
r : α → α → Prop
s t : Multiset α
a✝ : α
inst✝ : DecidableEq α
a b : α
l : Multiset α
d : l.Nodup
⊢ a ∈ l.erase b ↔ a ≠ b ∧ a ∈ l
state_after: no goals
Theorem: Set.Ici_mul_Ici_subset'
File: Mathlib/Data/Set/Pointwise/Interval.lean

tactic: rintro x ⟨y, hya, z, hzb, rfl⟩
state_before: α : Type u_1
inst✝³ : Mul α
inst✝² : Preorder α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
inst✝ : CovariantClass α α (Function.swap HMul.hMul) LE.le
a b : α
⊢ Ici a * Ici b ⊆ Ici (a * b)
state_after: case intro.intro.intro.intro
α : Type u_1
inst✝³ : Mul α
inst✝² : Preorder α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
inst✝ : CovariantClass α α (Function.swap HMul.hMul) LE.le
a b y : α
hya : y ∈ Ici a
z : α
hzb : z ∈ Ici b
⊢ (fun x x_1 => x * x_1) y z ∈ Ici (a * b)

tactic: exact mul_le_mul' hya hzb
state_before: case intro.intro.intro.intro
α : Type u_1
inst✝³ : Mul α
inst✝² : Preorder α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
inst✝ : CovariantClass α α (Function.swap HMul.hMul) LE.le
a b y : α
hya : y ∈ Ici a
z : α
hzb : z ∈ Ici b
⊢ (fun x x_1 => x * x_1) y z ∈ Ici (a * b)
state_after: no goals
Theorem: Cardinal.aleph'_succ
File: Mathlib/SetTheory/Cardinal/Ordinal.lean

tactic: apply (succ_le_of_lt <| aleph'_lt.2 <| lt_succ o).antisymm' (Cardinal.alephIdx_le.1 <| _)
state_before: o : Ordinal.{u_1}
⊢ aleph' (succ o) = succ (aleph' o)
state_after: o : Ordinal.{u_1}
⊢ (aleph' (succ o)).alephIdx ≤ (succ (aleph' o)).alephIdx

tactic: rw [alephIdx_aleph', succ_le_iff, ← aleph'_lt, aleph'_alephIdx]
state_before: o : Ordinal.{u_1}
⊢ (aleph' (succ o)).alephIdx ≤ (succ (aleph' o)).alephIdx
state_after: o : Ordinal.{u_1}
⊢ aleph' o < succ (aleph' o)

tactic: apply lt_succ
state_before: o : Ordinal.{u_1}
⊢ aleph' o < succ (aleph' o)
state_after: no goals
Theorem: CauSeq.neg_equiv_neg
File: Mathlib/Algebra/Order/CauSeq/Basic.lean

tactic: simpa only [neg_sub'] using neg_limZero hf
state_before: α : Type u_1
β : Type u_2
inst✝² : LinearOrderedField α
inst✝¹ : Ring β
abv : β → α
inst✝ : IsAbsoluteValue abv
f g : CauSeq β abv
hf : f ≈ g
⊢ -f ≈ -g
state_after: no goals
Theorem: Set.mem_iUnion₂
File: Mathlib/Data/Set/Lattice.lean

tactic: simp_rw [mem_iUnion]
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
x : γ
s : (i : ι) → κ i → Set γ
⊢ x ∈ ⋃ i, ⋃ j, s i j ↔ ∃ i j, x ∈ s i j
state_after: no goals
Theorem: MeasureTheory.Lp.nnnorm_neg
File: Mathlib/MeasureTheory/Function/LpSpace.lean

tactic: rw [nnnorm_def, nnnorm_def, snorm_congr_ae (coeFn_neg _), snorm_neg]
state_before: α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
f : ↥(Lp E p μ)
⊢ ‖-f‖₊ = ‖f‖₊
state_after: no goals
Theorem: Cardinal.power_mul
File: Mathlib/SetTheory/Cardinal/Basic.lean

tactic: rw [mul_comm b c]
state_before: α β : Type u
a b c : Cardinal.{u_1}
⊢ a ^ (b * c) = (a ^ b) ^ c
state_after: α β : Type u
a b c : Cardinal.{u_1}
⊢ a ^ (c * b) = (a ^ b) ^ c

tactic: exact inductionOn₃ a b c fun α β γ => mk_congr <| Equiv.curry γ β α
state_before: α β : Type u
a b c : Cardinal.{u_1}
⊢ a ^ (c * b) = (a ^ b) ^ c
state_after: no goals
Theorem: CategoryTheory.Limits.IsColimit.hom_ext
File: Mathlib/CategoryTheory/Limits/IsLimit.lean

tactic: rw [h.hom_desc f, h.hom_desc f']
state_before: J : Type u₁
inst✝² : Category.{v₁, u₁} J
K : Type u₂
inst✝¹ : Category.{v₂, u₂} K
C : Type u₃
inst✝ : Category.{v₃, u₃} C
F : J ⥤ C
t : Cocone F
h : IsColimit t
W : C
f f' : t.pt ⟶ W
w : ∀ (j : J), t.ι.app j ≫ f = t.ι.app j ≫ f'
⊢ f = f'
state_after: J : Type u₁
inst✝² : Category.{v₁, u₁} J
K : Type u₂
inst✝¹ : Category.{v₂, u₂} K
C : Type u₃
inst✝ : Category.{v₃, u₃} C
F : J ⥤ C
t : Cocone F
h : IsColimit t
W : C
f f' : t.pt ⟶ W
w : ∀ (j : J), t.ι.app j ≫ f = t.ι.app j ≫ f'
⊢ h.desc { pt := W, ι := { app := fun b => t.ι.app b ≫ f, naturality := ⋯ } } =
    h.desc { pt := W, ι := { app := fun b => t.ι.app b ≫ f', naturality := ⋯ } }

tactic: congr
state_before: J : Type u₁
inst✝² : Category.{v₁, u₁} J
K : Type u₂
inst✝¹ : Category.{v₂, u₂} K
C : Type u₃
inst✝ : Category.{v₃, u₃} C
F : J ⥤ C
t : Cocone F
h : IsColimit t
W : C
f f' : t.pt ⟶ W
w : ∀ (j : J), t.ι.app j ≫ f = t.ι.app j ≫ f'
⊢ h.desc { pt := W, ι := { app := fun b => t.ι.app b ≫ f, naturality := ⋯ } } =
    h.desc { pt := W, ι := { app := fun b => t.ι.app b ≫ f', naturality := ⋯ } }
state_after: case h.e_8.h.e_ι.e_app
J : Type u₁
inst✝² : Category.{v₁, u₁} J
K : Type u₂
inst✝¹ : Category.{v₂, u₂} K
C : Type u₃
inst✝ : Category.{v₃, u₃} C
F : J ⥤ C
t : Cocone F
h : IsColimit t
W : C
f f' : t.pt ⟶ W
w : ∀ (j : J), t.ι.app j ≫ f = t.ι.app j ≫ f'
⊢ (fun b => t.ι.app b ≫ f) = fun b => t.ι.app b ≫ f'

tactic: exact funext w
state_before: case h.e_8.h.e_ι.e_app
J : Type u₁
inst✝² : Category.{v₁, u₁} J
K : Type u₂
inst✝¹ : Category.{v₂, u₂} K
C : Type u₃
inst✝ : Category.{v₃, u₃} C
F : J ⥤ C
t : Cocone F
h : IsColimit t
W : C
f f' : t.pt ⟶ W
w : ∀ (j : J), t.ι.app j ≫ f = t.ι.app j ≫ f'
⊢ (fun b => t.ι.app b ≫ f) = fun b => t.ι.app b ≫ f'
state_after: no goals
Theorem: Equiv.Perm.support_mul_le
File: Mathlib/GroupTheory/Perm/Support.lean

tactic: simp only [sup_eq_union]
state_before: α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ g✝ f g : Perm α
x : α
⊢ x ∈ (f * g).support → x ∈ f.support ⊔ g.support
state_after: α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ g✝ f g : Perm α
x : α
⊢ x ∈ (f * g).support → x ∈ f.support ∪ g.support

tactic: rw [mem_union, mem_support, mem_support, mem_support, mul_apply, ← not_and_or, not_imp_not]
state_before: α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ g✝ f g : Perm α
x : α
⊢ x ∈ (f * g).support → x ∈ f.support ∪ g.support
state_after: α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ g✝ f g : Perm α
x : α
⊢ f x = x ∧ g x = x → f (g x) = x

tactic: rintro ⟨hf, hg⟩
state_before: α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ g✝ f g : Perm α
x : α
⊢ f x = x ∧ g x = x → f (g x) = x
state_after: case intro
α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ g✝ f g : Perm α
x : α
hf : f x = x
hg : g x = x
⊢ f (g x) = x

tactic: rw [hg, hf]
state_before: case intro
α : Type u_1
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f✝ g✝ f g : Perm α
x : α
hf : f x = x
hg : g x = x
⊢ f (g x) = x
state_after: no goals
Theorem: Equiv.Perm.isCycleOn_one
File: Mathlib/GroupTheory/Perm/Cycle/Basic.lean

tactic: simp [IsCycleOn, Set.bijOn_id, Set.Subsingleton]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
f g : Perm α
s t : Set α
a b x y : α
⊢ IsCycleOn 1 s ↔ s.Subsingleton
state_after: no goals
Theorem: IsLocalization.AtPrime.not_isField
File: Mathlib/RingTheory/DedekindDomain/Dvr.lean

tactic: intro h
state_before: R : Type u_1
A : Type u_2
K : Type u_3
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : IsDomain A
inst✝³ : Field K
P : Ideal A
hP : P ≠ ⊥
pP : P.IsPrime
Aₘ : Type u_4
inst✝² : CommRing Aₘ
inst✝¹ : Algebra A Aₘ
inst✝ : IsLocalization.AtPrime Aₘ P
⊢ ¬IsField Aₘ
state_after: R : Type u_1
A : Type u_2
K : Type u_3
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : IsDomain A
inst✝³ : Field K
P : Ideal A
hP : P ≠ ⊥
pP : P.IsPrime
Aₘ : Type u_4
inst✝² : CommRing Aₘ
inst✝¹ : Algebra A Aₘ
inst✝ : IsLocalization.AtPrime Aₘ P
h : IsField Aₘ
⊢ False

tactic: letI := h.toField
state_before: R : Type u_1
A : Type u_2
K : Type u_3
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : IsDomain A
inst✝³ : Field K
P : Ideal A
hP : P ≠ ⊥
pP : P.IsPrime
Aₘ : Type u_4
inst✝² : CommRing Aₘ
inst✝¹ : Algebra A Aₘ
inst✝ : IsLocalization.AtPrime Aₘ P
h : IsField Aₘ
⊢ False
state_after: R : Type u_1
A : Type u_2
K : Type u_3
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : IsDomain A
inst✝³ : Field K
P : Ideal A
hP : P ≠ ⊥
pP : P.IsPrime
Aₘ : Type u_4
inst✝² : CommRing Aₘ
inst✝¹ : Algebra A Aₘ
inst✝ : IsLocalization.AtPrime Aₘ P
h : IsField Aₘ
this : Field Aₘ := h.toField
⊢ False

tactic: obtain ⟨x, x_mem, x_ne⟩ := P.ne_bot_iff.mp hP
state_before: R : Type u_1
A : Type u_2
K : Type u_3
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : IsDomain A
inst✝³ : Field K
P : Ideal A
hP : P ≠ ⊥
pP : P.IsPrime
Aₘ : Type u_4
inst✝² : CommRing Aₘ
inst✝¹ : Algebra A Aₘ
inst✝ : IsLocalization.AtPrime Aₘ P
h : IsField Aₘ
this : Field Aₘ := h.toField
⊢ False
state_after: case intro.intro
R : Type u_1
A : Type u_2
K : Type u_3
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : IsDomain A
inst✝³ : Field K
P : Ideal A
hP : P ≠ ⊥
pP : P.IsPrime
Aₘ : Type u_4
inst✝² : CommRing Aₘ
inst✝¹ : Algebra A Aₘ
inst✝ : IsLocalization.AtPrime Aₘ P
h : IsField Aₘ
this : Field Aₘ := h.toField
x : A
x_mem : x ∈ P
x_ne : x ≠ 0
⊢ False

tactic: exact
  (LocalRing.maximalIdeal.isMaximal _).ne_top
    (Ideal.eq_top_of_isUnit_mem _
      ((IsLocalization.AtPrime.to_map_mem_maximal_iff Aₘ P _).mpr x_mem)
      (isUnit_iff_ne_zero.mpr
        ((map_ne_zero_iff (algebraMap A Aₘ)
              (IsLocalization.injective Aₘ P.primeCompl_le_nonZeroDivisors)).mpr
          x_ne)))
state_before: case intro.intro
R : Type u_1
A : Type u_2
K : Type u_3
inst✝⁶ : CommRing R
inst✝⁵ : CommRing A
inst✝⁴ : IsDomain A
inst✝³ : Field K
P : Ideal A
hP : P ≠ ⊥
pP : P.IsPrime
Aₘ : Type u_4
inst✝² : CommRing Aₘ
inst✝¹ : Algebra A Aₘ
inst✝ : IsLocalization.AtPrime Aₘ P
h : IsField Aₘ
this : Field Aₘ := h.toField
x : A
x_mem : x ∈ P
x_ne : x ≠ 0
⊢ False
state_after: no goals
Theorem: ProbabilityTheory.kernel.withDensity_rnDeriv_mutuallySingularSetSlice
File: Mathlib/Probability/Kernel/RadonNikodym.lean

tactic: rw [kernel.withDensity_apply']
state_before: α : Type u_1
γ : Type u_2
mα : MeasurableSpace α
mγ : MeasurableSpace γ
κ✝ η✝ : ↥(kernel α γ)
hαγ : MeasurableSpace.CountableOrCountablyGenerated α γ
κ η : ↥(kernel α γ)
inst✝¹ : IsFiniteKernel κ
inst✝ : IsFiniteKernel η
a : α
⊢ ((withDensity η (rnDeriv κ η)) a) (mutuallySingularSetSlice κ η a) = 0
state_after: α : Type u_1
γ : Type u_2
mα : MeasurableSpace α
mγ : MeasurableSpace γ
κ✝ η✝ : ↥(kernel α γ)
hαγ : MeasurableSpace.CountableOrCountablyGenerated α γ
κ η : ↥(kernel α γ)
inst✝¹ : IsFiniteKernel κ
inst✝ : IsFiniteKernel η
a : α
⊢ ∫⁻ (b : γ) in mutuallySingularSetSlice κ η a, rnDeriv κ η a b ∂η a = 0

case hf
α : Type u_1
γ : Type u_2
mα : MeasurableSpace α
mγ : MeasurableSpace γ
κ✝ η✝ : ↥(kernel α γ)
hαγ : MeasurableSpace.CountableOrCountablyGenerated α γ
κ η : ↥(kernel α γ)
inst✝¹ : IsFiniteKernel κ
inst✝ : IsFiniteKernel η
a : α
⊢ Measurable (Function.uncurry (rnDeriv κ η))

tactic: exact setLIntegral_measure_zero _ _ (measure_mutuallySingularSetSlice κ η a)
state_before: α : Type u_1
γ : Type u_2
mα : MeasurableSpace α
mγ : MeasurableSpace γ
κ✝ η✝ : ↥(kernel α γ)
hαγ : MeasurableSpace.CountableOrCountablyGenerated α γ
κ η : ↥(kernel α γ)
inst✝¹ : IsFiniteKernel κ
inst✝ : IsFiniteKernel η
a : α
⊢ ∫⁻ (b : γ) in mutuallySingularSetSlice κ η a, rnDeriv κ η a b ∂η a = 0
state_after: no goals

tactic: exact measurable_rnDeriv κ η
state_before: case hf
α : Type u_1
γ : Type u_2
mα : MeasurableSpace α
mγ : MeasurableSpace γ
κ✝ η✝ : ↥(kernel α γ)
hαγ : MeasurableSpace.CountableOrCountablyGenerated α γ
κ η : ↥(kernel α γ)
inst✝¹ : IsFiniteKernel κ
inst✝ : IsFiniteKernel η
a : α
⊢ Measurable (Function.uncurry (rnDeriv κ η))
state_after: no goals
Theorem: SimpleGraph.Subgraph.isPerfectMatching_iff
File: Mathlib/Combinatorics/SimpleGraph/Matching.lean

tactic: refine ⟨?_, fun hm => ⟨fun v _ => hm v, fun v => ?_⟩⟩
state_before: V : Type u
G : SimpleGraph V
M : G.Subgraph
⊢ M.IsPerfectMatching ↔ ∀ (v : V), ∃! w, M.Adj v w
state_after: case refine_1
V : Type u
G : SimpleGraph V
M : G.Subgraph
⊢ M.IsPerfectMatching → ∀ (v : V), ∃! w, M.Adj v w

case refine_2
V : Type u
G : SimpleGraph V
M : G.Subgraph
hm : ∀ (v : V), ∃! w, M.Adj v w
v : V
⊢ v ∈ M.verts

tactic: rintro ⟨hm, hs⟩ v
state_before: case refine_1
V : Type u
G : SimpleGraph V
M : G.Subgraph
⊢ M.IsPerfectMatching → ∀ (v : V), ∃! w, M.Adj v w
state_after: case refine_1.intro
V : Type u
G : SimpleGraph V
M : G.Subgraph
hm : M.IsMatching
hs : M.IsSpanning
v : V
⊢ ∃! w, M.Adj v w

tactic: exact hm (hs v)
state_before: case refine_1.intro
V : Type u
G : SimpleGraph V
M : G.Subgraph
hm : M.IsMatching
hs : M.IsSpanning
v : V
⊢ ∃! w, M.Adj v w
state_after: no goals

tactic: obtain ⟨w, hw, -⟩ := hm v
state_before: case refine_2
V : Type u
G : SimpleGraph V
M : G.Subgraph
hm : ∀ (v : V), ∃! w, M.Adj v w
v : V
⊢ v ∈ M.verts
state_after: case refine_2.intro.intro
V : Type u
G : SimpleGraph V
M : G.Subgraph
hm : ∀ (v : V), ∃! w, M.Adj v w
v w : V
hw : M.Adj v w
⊢ v ∈ M.verts

tactic: exact M.edge_vert hw
state_before: case refine_2.intro.intro
V : Type u
G : SimpleGraph V
M : G.Subgraph
hm : ∀ (v : V), ∃! w, M.Adj v w
v w : V
hw : M.Adj v w
⊢ v ∈ M.verts
state_after: no goals
Theorem: Equivalence.quot_mk_eq_iff
File: Mathlib/Data/Quot.lean

tactic: constructor
state_before: α✝ : Sort u_1
β : Sort u_2
α : Type u_3
r : α → α → Prop
h : Equivalence r
x y : α
⊢ Quot.mk r x = Quot.mk r y ↔ r x y
state_after: case mp
α✝ : Sort u_1
β : Sort u_2
α : Type u_3
r : α → α → Prop
h : Equivalence r
x y : α
⊢ Quot.mk r x = Quot.mk r y → r x y

case mpr
α✝ : Sort u_1
β : Sort u_2
α : Type u_3
r : α → α → Prop
h : Equivalence r
x y : α
⊢ r x y → Quot.mk r x = Quot.mk r y

tactic: rw [Quot.eq]
state_before: case mp
α✝ : Sort u_1
β : Sort u_2
α : Type u_3
r : α → α → Prop
h : Equivalence r
x y : α
⊢ Quot.mk r x = Quot.mk r y → r x y
state_after: case mp
α✝ : Sort u_1
β : Sort u_2
α : Type u_3
r : α → α → Prop
h : Equivalence r
x y : α
⊢ EqvGen r x y → r x y

tactic: intro hxy
state_before: case mp
α✝ : Sort u_1
β : Sort u_2
α : Type u_3
r : α → α → Prop
h : Equivalence r
x y : α
⊢ EqvGen r x y → r x y
state_after: case mp
α✝ : Sort u_1
β : Sort u_2
α : Type u_3
r : α → α → Prop
h : Equivalence r
x y : α
hxy : EqvGen r x y
⊢ r x y

tactic: induction hxy with
| rel _ _ H => exact H
| refl _ => exact h.refl _
| symm _ _ _ H => exact h.symm H
| trans _ _ _ _ _ h₁₂ h₂₃ => exact h.trans h₁₂ h₂₃
state_before: case mp
α✝ : Sort u_1
β : Sort u_2
α : Type u_3
r : α → α → Prop
h : Equivalence r
x y : α
hxy : EqvGen r x y
⊢ r x y
state_after: no goals

tactic: exact H
state_before: case mp.rel
α✝ : Sort u_1
β : Sort u_2
α : Type u_3
r : α → α → Prop
h : Equivalence r
x y x✝ y✝ : α
H : r x✝ y✝
⊢ r x✝ y✝
state_after: no goals

tactic: exact h.refl _
state_before: case mp.refl
α✝ : Sort u_1
β : Sort u_2
α : Type u_3
r : α → α → Prop
h : Equivalence r
x y x✝ : α
⊢ r x✝ x✝
state_after: no goals

tactic: exact h.symm H
state_before: case mp.symm
α✝ : Sort u_1
β : Sort u_2
α : Type u_3
r : α → α → Prop
h : Equivalence r
x y x✝ y✝ : α
a✝ : EqvGen r x✝ y✝
H : r x✝ y✝
⊢ r y✝ x✝
state_after: no goals

tactic: exact h.trans h₁₂ h₂₃
state_before: case mp.trans
α✝ : Sort u_1
β : Sort u_2
α : Type u_3
r : α → α → Prop
h : Equivalence r
x y x✝ y✝ z✝ : α
a✝¹ : EqvGen r x✝ y✝
a✝ : EqvGen r y✝ z✝
h₁₂ : r x✝ y✝
h₂₃ : r y✝ z✝
⊢ r x✝ z✝
state_after: no goals

tactic: exact Quot.sound
state_before: case mpr
α✝ : Sort u_1
β : Sort u_2
α : Type u_3
r : α → α → Prop
h : Equivalence r
x y : α
⊢ r x y → Quot.mk r x = Quot.mk r y
state_after: no goals
Theorem: Finset.disjSups_subset_sups
File: Mathlib/Data/Finset/Sups.lean

tactic: simp_rw [subset_iff, mem_sups, mem_disjSups]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝⁴ : DecidableEq α
inst✝³ : DecidableEq β
inst✝² : SemilatticeSup α
inst✝¹ : OrderBot α
inst✝ : DecidableRel Disjoint
s s₁ s₂ t t₁ t₂ u : Finset α
a b c : α
⊢ s ○ t ⊆ s ⊻ t
state_after: F : Type u_1
α : Type u_2
β : Type u_3
inst✝⁴ : DecidableEq α
inst✝³ : DecidableEq β
inst✝² : SemilatticeSup α
inst✝¹ : OrderBot α
inst✝ : DecidableRel Disjoint
s s₁ s₂ t t₁ t₂ u : Finset α
a b c : α
⊢ ∀ ⦃x : α⦄, (∃ a ∈ s, ∃ b ∈ t, Disjoint a b ∧ a ⊔ b = x) → ∃ a ∈ s, ∃ b ∈ t, a ⊔ b = x

tactic: exact fun c ⟨a, b, ha, hb, _, hc⟩ => ⟨a, b, ha, hb, hc⟩
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝⁴ : DecidableEq α
inst✝³ : DecidableEq β
inst✝² : SemilatticeSup α
inst✝¹ : OrderBot α
inst✝ : DecidableRel Disjoint
s s₁ s₂ t t₁ t₂ u : Finset α
a b c : α
⊢ ∀ ⦃x : α⦄, (∃ a ∈ s, ∃ b ∈ t, Disjoint a b ∧ a ⊔ b = x) → ∃ a ∈ s, ∃ b ∈ t, a ⊔ b = x
state_after: no goals
Theorem: Finsupp.mapRange_neLocus_eq
File: Mathlib/Data/Finsupp/NeLocus.lean

tactic: ext
state_before: α : Type u_1
M : Type u_2
N : Type u_3
P : Type u_4
inst✝⁴ : DecidableEq α
inst✝³ : DecidableEq N
inst✝² : DecidableEq M
inst✝¹ : Zero M
inst✝ : Zero N
f g : α →₀ N
F : N → M
F0 : F 0 = 0
hF : Function.Injective F
⊢ (mapRange F F0 f).neLocus (mapRange F F0 g) = f.neLocus g
state_after: case a
α : Type u_1
M : Type u_2
N : Type u_3
P : Type u_4
inst✝⁴ : DecidableEq α
inst✝³ : DecidableEq N
inst✝² : DecidableEq M
inst✝¹ : Zero M
inst✝ : Zero N
f g : α →₀ N
F : N → M
F0 : F 0 = 0
hF : Function.Injective F
a✝ : α
⊢ a✝ ∈ (mapRange F F0 f).neLocus (mapRange F F0 g) ↔ a✝ ∈ f.neLocus g

tactic: simpa only [mem_neLocus] using hF.ne_iff
state_before: case a
α : Type u_1
M : Type u_2
N : Type u_3
P : Type u_4
inst✝⁴ : DecidableEq α
inst✝³ : DecidableEq N
inst✝² : DecidableEq M
inst✝¹ : Zero M
inst✝ : Zero N
f g : α →₀ N
F : N → M
F0 : F 0 = 0
hF : Function.Injective F
a✝ : α
⊢ a✝ ∈ (mapRange F F0 f).neLocus (mapRange F F0 g) ↔ a✝ ∈ f.neLocus g
state_after: no goals
Theorem: Sum.map_traverse
File: Mathlib/Control/Traversable/Instances.lean

tactic: cases x <;> simp [Sum.traverse, id_map, functor_norm] <;> congr
state_before: σ : Type u
F G : Type u → Type u
inst✝³ : Applicative F
inst✝² : Applicative G
inst✝¹ : LawfulApplicative F
inst✝ : LawfulApplicative G
α : Type u_1
β γ : Type u
g : α → G β
f : β → γ
x : σ ⊕ α
⊢ (fun x => f <$> x) <$> Sum.traverse g x = Sum.traverse (fun x => f <$> g x) x
state_after: no goals
Theorem: toZ_neg
File: Mathlib/Order/SuccPred/LinearLocallyFinite.lean

tactic: refine lt_of_le_of_ne ?_ ?_
state_before: ι : Type u_1
inst✝³ : LinearOrder ι
inst✝² : SuccOrder ι
inst✝¹ : IsSuccArchimedean ι
inst✝ : PredOrder ι
i0 i : ι
hi : i < i0
⊢ toZ i0 i < 0
state_after: case refine_1
ι : Type u_1
inst✝³ : LinearOrder ι
inst✝² : SuccOrder ι
inst✝¹ : IsSuccArchimedean ι
inst✝ : PredOrder ι
i0 i : ι
hi : i < i0
⊢ toZ i0 i ≤ 0

case refine_2
ι : Type u_1
inst✝³ : LinearOrder ι
inst✝² : SuccOrder ι
inst✝¹ : IsSuccArchimedean ι
inst✝ : PredOrder ι
i0 i : ι
hi : i < i0
⊢ toZ i0 i ≠ 0

tactic: rw [toZ_of_lt hi]
state_before: case refine_1
ι : Type u_1
inst✝³ : LinearOrder ι
inst✝² : SuccOrder ι
inst✝¹ : IsSuccArchimedean ι
inst✝ : PredOrder ι
i0 i : ι
hi : i < i0
⊢ toZ i0 i ≤ 0
state_after: case refine_1
ι : Type u_1
inst✝³ : LinearOrder ι
inst✝² : SuccOrder ι
inst✝¹ : IsSuccArchimedean ι
inst✝ : PredOrder ι
i0 i : ι
hi : i < i0
⊢ -↑(Nat.find ⋯) ≤ 0

tactic: omega
state_before: case refine_1
ι : Type u_1
inst✝³ : LinearOrder ι
inst✝² : SuccOrder ι
inst✝¹ : IsSuccArchimedean ι
inst✝ : PredOrder ι
i0 i : ι
hi : i < i0
⊢ -↑(Nat.find ⋯) ≤ 0
state_after: no goals

tactic: by_contra h
state_before: case refine_2
ι : Type u_1
inst✝³ : LinearOrder ι
inst✝² : SuccOrder ι
inst✝¹ : IsSuccArchimedean ι
inst✝ : PredOrder ι
i0 i : ι
hi : i < i0
⊢ toZ i0 i ≠ 0
state_after: case refine_2
ι : Type u_1
inst✝³ : LinearOrder ι
inst✝² : SuccOrder ι
inst✝¹ : IsSuccArchimedean ι
inst✝ : PredOrder ι
i0 i : ι
hi : i < i0
h : toZ i0 i = 0
⊢ False

tactic: have h_eq := iterate_pred_toZ i hi
state_before: case refine_2
ι : Type u_1
inst✝³ : LinearOrder ι
inst✝² : SuccOrder ι
inst✝¹ : IsSuccArchimedean ι
inst✝ : PredOrder ι
i0 i : ι
hi : i < i0
h : toZ i0 i = 0
⊢ False
state_after: case refine_2
ι : Type u_1
inst✝³ : LinearOrder ι
inst✝² : SuccOrder ι
inst✝¹ : IsSuccArchimedean ι
inst✝ : PredOrder ι
i0 i : ι
hi : i < i0
h : toZ i0 i = 0
h_eq : pred^[(-toZ i0 i).toNat] i0 = i
⊢ False

tactic: rw [← h_eq, h] at hi
state_before: case refine_2
ι : Type u_1
inst✝³ : LinearOrder ι
inst✝² : SuccOrder ι
inst✝¹ : IsSuccArchimedean ι
inst✝ : PredOrder ι
i0 i : ι
hi : i < i0
h : toZ i0 i = 0
h_eq : pred^[(-toZ i0 i).toNat] i0 = i
⊢ False
state_after: case refine_2
ι : Type u_1
inst✝³ : LinearOrder ι
inst✝² : SuccOrder ι
inst✝¹ : IsSuccArchimedean ι
inst✝ : PredOrder ι
i0 i : ι
hi : pred^[(-0).toNat] i0 < i0
h : toZ i0 i = 0
h_eq : pred^[(-toZ i0 i).toNat] i0 = i
⊢ False

tactic: simp only [neg_zero, Int.toNat_zero, Function.iterate_zero, id, lt_self_iff_false] at hi
state_before: case refine_2
ι : Type u_1
inst✝³ : LinearOrder ι
inst✝² : SuccOrder ι
inst✝¹ : IsSuccArchimedean ι
inst✝ : PredOrder ι
i0 i : ι
hi : pred^[(-0).toNat] i0 < i0
h : toZ i0 i = 0
h_eq : pred^[(-toZ i0 i).toNat] i0 = i
⊢ False
state_after: no goals
Theorem: Set.image_update_Ioc_right
File: Mathlib/Order/Interval/Set/Pi.lean

tactic: simpa using image_update_Ioc f i (f i) b
state_before: ι : Type u_1
α : ι → Type u_2
inst✝¹ : DecidableEq ι
inst✝ : (i : ι) → PartialOrder (α i)
f : (i : ι) → α i
i : ι
b : α i
⊢ update f i '' Ioc (f i) b = Ioc f (update f i b)
state_after: no goals
Theorem: Set.one_mem_div_iff
File: Mathlib/Data/Set/Pointwise/Basic.lean

tactic: simp [not_disjoint_iff_nonempty_inter, mem_div, div_eq_one, Set.Nonempty]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝ : Group α
s t : Set α
a b : α
⊢ 1 ∈ s / t ↔ ¬Disjoint s t
state_after: no goals
Theorem: iteratedDerivWithin_const_mul
File: Mathlib/Analysis/Calculus/IteratedDeriv/Lemmas.lean

tactic: simpa using iteratedDerivWithin_const_smul (F := 𝕜) hx h c hf
state_before: 𝕜 : Type u_1
inst✝⁶ : NontriviallyNormedField 𝕜
F : Type u_2
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : NormedSpace 𝕜 F
R : Type u_3
inst✝³ : Semiring R
inst✝² : Module R F
inst✝¹ : SMulCommClass 𝕜 R F
inst✝ : ContinuousConstSMul R F
n : ℕ
x : 𝕜
s : Set 𝕜
hx : x ∈ s
h : UniqueDiffOn 𝕜 s
f✝ g : 𝕜 → F
c : 𝕜
f : 𝕜 → 𝕜
hf : ContDiffOn 𝕜 (↑n) f s
⊢ iteratedDerivWithin n (fun z => c * f z) s x = c * iteratedDerivWithin n f s x
state_after: no goals
Theorem: Set.ncard_le_ncard_diff_add_ncard
File: Mathlib/Data/Set/Card.lean

tactic: cases' s.finite_or_infinite with hs hs
state_before: α : Type u_1
β : Type u_2
s✝ t✝ : Set α
f : α → β
s t : Set α
ht : autoParam t.Finite _auto✝
⊢ s.ncard ≤ (s \ t).ncard + t.ncard
state_after: case inl
α : Type u_1
β : Type u_2
s✝ t✝ : Set α
f : α → β
s t : Set α
ht : autoParam t.Finite _auto✝
hs : s.Finite
⊢ s.ncard ≤ (s \ t).ncard + t.ncard

case inr
α : Type u_1
β : Type u_2
s✝ t✝ : Set α
f : α → β
s t : Set α
ht : autoParam t.Finite _auto✝
hs : s.Infinite
⊢ s.ncard ≤ (s \ t).ncard + t.ncard

tactic: convert Nat.zero_le _
state_before: case inr
α : Type u_1
β : Type u_2
s✝ t✝ : Set α
f : α → β
s t : Set α
ht : autoParam t.Finite _auto✝
hs : s.Infinite
⊢ s.ncard ≤ (s \ t).ncard + t.ncard
state_after: case h.e'_3
α : Type u_1
β : Type u_2
s✝ t✝ : Set α
f : α → β
s t : Set α
ht : autoParam t.Finite _auto✝
hs : s.Infinite
⊢ s.ncard = 0

tactic: rw [hs.ncard]
state_before: case h.e'_3
α : Type u_1
β : Type u_2
s✝ t✝ : Set α
f : α → β
s t : Set α
ht : autoParam t.Finite _auto✝
hs : s.Infinite
⊢ s.ncard = 0
state_after: no goals

tactic: to_encard_tac
state_before: case inl
α : Type u_1
β : Type u_2
s✝ t✝ : Set α
f : α → β
s t : Set α
ht : autoParam t.Finite _auto✝
hs : s.Finite
⊢ s.ncard ≤ (s \ t).ncard + t.ncard
state_after: case inl
α : Type u_1
β : Type u_2
s✝ t✝ : Set α
f : α → β
s t : Set α
ht : autoParam t.Finite _auto✝
hs : s.Finite
⊢ ↑s.ncard ≤ ↑(s \ t).ncard + ↑t.ncard

tactic: rw [ht.cast_ncard_eq, hs.cast_ncard_eq, (hs.diff _).cast_ncard_eq]
state_before: case inl
α : Type u_1
β : Type u_2
s✝ t✝ : Set α
f : α → β
s t : Set α
ht : autoParam t.Finite _auto✝
hs : s.Finite
⊢ ↑s.ncard ≤ ↑(s \ t).ncard + ↑t.ncard
state_after: case inl
α : Type u_1
β : Type u_2
s✝ t✝ : Set α
f : α → β
s t : Set α
ht : autoParam t.Finite _auto✝
hs : s.Finite
⊢ s.encard ≤ (s \ t).encard + t.encard

tactic: apply encard_le_encard_diff_add_encard
state_before: case inl
α : Type u_1
β : Type u_2
s✝ t✝ : Set α
f : α → β
s t : Set α
ht : autoParam t.Finite _auto✝
hs : s.Finite
⊢ s.encard ≤ (s \ t).encard + t.encard
state_after: no goals