1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: HasDerivAtFilter.sub_const
File: Mathlib/Analysis/Calculus/Deriv/Add.lean

tactic: simpa only [sub_eq_add_neg] using hf.add_const (-c)
state_before: 𝕜 : Type u
inst✝⁴ : NontriviallyNormedField 𝕜
F : Type v
inst✝³ : NormedAddCommGroup F
inst✝² : NormedSpace 𝕜 F
E : Type w
inst✝¹ : NormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
f f₀ f₁ g : 𝕜 → F
f' f₀' f₁' g' : F
x : 𝕜
s t : Set 𝕜
L : Filter 𝕜
hf : HasDerivAtFilter f f' x L
c : F
⊢ HasDerivAtFilter (fun x => f x - c) f' x L
state_after: no goals
Theorem: Filter.eventually_prod_iff
File: Mathlib/Order/Filter/Prod.lean

tactic: simpa only [Set.prod_subset_iff] using @mem_prod_iff α β p f g
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
ι : Sort u_5
s : Set α
t : Set β
f : Filter α
g : Filter β
p : α × β → Prop
⊢ (∀ᶠ (x : α × β) in f ×ˢ g, p x) ↔
    ∃ pa, (∀ᶠ (x : α) in f, pa x) ∧ ∃ pb, (∀ᶠ (y : β) in g, pb y) ∧ ∀ {x : α}, pa x → ∀ {y : β}, pb y → p (x, y)
state_after: no goals
Theorem: FiniteDimensional.lt_rank_of_lt_finrank
File: Mathlib/LinearAlgebra/Dimension/Finrank.lean

tactic: rwa [← Cardinal.toNat_lt_iff_lt_of_lt_aleph0, toNat_natCast]
state_before: R : Type u
M : Type v
N : Type w
inst✝⁴ : Ring R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup N
inst✝ : Module R N
n : ℕ
h : n < finrank R M
⊢ ↑n < Module.rank R M
state_after: case hc
R : Type u
M : Type v
N : Type w
inst✝⁴ : Ring R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup N
inst✝ : Module R N
n : ℕ
h : n < finrank R M
⊢ ↑n < ℵ₀

case hd
R : Type u
M : Type v
N : Type w
inst✝⁴ : Ring R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup N
inst✝ : Module R N
n : ℕ
h : n < finrank R M
⊢ Module.rank R M < ℵ₀

tactic: exact nat_lt_aleph0 n
state_before: case hc
R : Type u
M : Type v
N : Type w
inst✝⁴ : Ring R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup N
inst✝ : Module R N
n : ℕ
h : n < finrank R M
⊢ ↑n < ℵ₀
state_after: no goals

tactic: contrapose! h
state_before: case hd
R : Type u
M : Type v
N : Type w
inst✝⁴ : Ring R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup N
inst✝ : Module R N
n : ℕ
h : n < finrank R M
⊢ Module.rank R M < ℵ₀
state_after: case hd
R : Type u
M : Type v
N : Type w
inst✝⁴ : Ring R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup N
inst✝ : Module R N
n : ℕ
h : ℵ₀ ≤ Module.rank R M
⊢ finrank R M ≤ n

tactic: rw [finrank, Cardinal.toNat_apply_of_aleph0_le h]
state_before: case hd
R : Type u
M : Type v
N : Type w
inst✝⁴ : Ring R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup N
inst✝ : Module R N
n : ℕ
h : ℵ₀ ≤ Module.rank R M
⊢ finrank R M ≤ n
state_after: case hd
R : Type u
M : Type v
N : Type w
inst✝⁴ : Ring R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup N
inst✝ : Module R N
n : ℕ
h : ℵ₀ ≤ Module.rank R M
⊢ 0 ≤ n

tactic: exact n.zero_le
state_before: case hd
R : Type u
M : Type v
N : Type w
inst✝⁴ : Ring R
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : AddCommGroup N
inst✝ : Module R N
n : ℕ
h : ℵ₀ ≤ Module.rank R M
⊢ 0 ≤ n
state_after: no goals
Theorem: starConvex_sUnion
File: Mathlib/Analysis/Convex/Star.lean

tactic: rw [sUnion_eq_iUnion]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : SMul 𝕜 E
inst✝ : SMul 𝕜 F
x : E
s t : Set E
S : Set (Set E)
hS : ∀ s ∈ S, StarConvex 𝕜 x s
⊢ StarConvex 𝕜 x (⋃₀ S)
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : SMul 𝕜 E
inst✝ : SMul 𝕜 F
x : E
s t : Set E
S : Set (Set E)
hS : ∀ s ∈ S, StarConvex 𝕜 x s
⊢ StarConvex 𝕜 x (⋃ i, ↑i)

tactic: exact starConvex_iUnion fun s => hS _ s.2
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCommMonoid E
inst✝² : AddCommMonoid F
inst✝¹ : SMul 𝕜 E
inst✝ : SMul 𝕜 F
x : E
s t : Set E
S : Set (Set E)
hS : ∀ s ∈ S, StarConvex 𝕜 x s
⊢ StarConvex 𝕜 x (⋃ i, ↑i)
state_after: no goals
Theorem: unitary.spectrum.unitary_conjugate'
File: Mathlib/Algebra/Star/Unitary.lean

tactic: simpa using spectrum.unitary_conjugate (u := star u)
state_before: R✝ : Type u_1
R : Type u_2
A : Type u_3
inst✝³ : CommSemiring R
inst✝² : Ring A
inst✝¹ : Algebra R A
inst✝ : StarMul A
a : A
u : ↥(unitary A)
⊢ spectrum R (star ↑u * a * ↑u) = spectrum R a
state_after: no goals
Theorem: CategoryTheory.Functor.shiftIso_add'
File: Mathlib/CategoryTheory/Shift/ShiftSequence.lean

tactic: rw [← hnm, ← ha'', ← ha', add_assoc]
state_before: C : Type u_1
A : Type u_2
inst✝⁶ : Category.{?u.54529, u_1} C
inst✝⁵ : Category.{?u.54533, u_2} A
F : C ⥤ A
M : Type u_3
inst✝⁴ : AddMonoid M
inst✝³ : HasShift C M
G : Type u_4
inst✝² : AddGroup G
inst✝¹ : HasShift C G
inst✝ : F.ShiftSequence M
n m mn : M
hnm : m + n = mn
a a' a'' : M
ha' : n + a = a'
ha'' : m + a' = a''
⊢ mn + a = a''
state_after: no goals

tactic: subst hnm
state_before: C : Type u_1
A : Type u_2
inst✝⁶ : Category.{u_6, u_1} C
inst✝⁵ : Category.{u_5, u_2} A
F : C ⥤ A
M : Type u_3
inst✝⁴ : AddMonoid M
inst✝³ : HasShift C M
G : Type u_4
inst✝² : AddGroup G
inst✝¹ : HasShift C G
inst✝ : F.ShiftSequence M
n m mn : M
hnm : m + n = mn
a a' a'' : M
ha' : n + a = a'
ha'' : m + a' = a''
⊢ F.shiftIso mn a a'' ⋯ =
    isoWhiskerRight (shiftFunctorAdd' C m n mn hnm) (F.shift a) ≪≫
      (shiftFunctor C m).associator (shiftFunctor C n) (F.shift a) ≪≫
        isoWhiskerLeft (shiftFunctor C m) (F.shiftIso n a a' ha') ≪≫ F.shiftIso m a' a'' ha''
state_after: C : Type u_1
A : Type u_2
inst✝⁶ : Category.{u_6, u_1} C
inst✝⁵ : Category.{u_5, u_2} A
F : C ⥤ A
M : Type u_3
inst✝⁴ : AddMonoid M
inst✝³ : HasShift C M
G : Type u_4
inst✝² : AddGroup G
inst✝¹ : HasShift C G
inst✝ : F.ShiftSequence M
n m a a' a'' : M
ha' : n + a = a'
ha'' : m + a' = a''
⊢ F.shiftIso (m + n) a a'' ⋯ =
    isoWhiskerRight (shiftFunctorAdd' C m n (m + n) ⋯) (F.shift a) ≪≫
      (shiftFunctor C m).associator (shiftFunctor C n) (F.shift a) ≪≫
        isoWhiskerLeft (shiftFunctor C m) (F.shiftIso n a a' ha') ≪≫ F.shiftIso m a' a'' ha''

tactic: rw [shiftFunctorAdd'_eq_shiftFunctorAdd, shiftIso_add]
state_before: C : Type u_1
A : Type u_2
inst✝⁶ : Category.{u_6, u_1} C
inst✝⁵ : Category.{u_5, u_2} A
F : C ⥤ A
M : Type u_3
inst✝⁴ : AddMonoid M
inst✝³ : HasShift C M
G : Type u_4
inst✝² : AddGroup G
inst✝¹ : HasShift C G
inst✝ : F.ShiftSequence M
n m a a' a'' : M
ha' : n + a = a'
ha'' : m + a' = a''
⊢ F.shiftIso (m + n) a a'' ⋯ =
    isoWhiskerRight (shiftFunctorAdd' C m n (m + n) ⋯) (F.shift a) ≪≫
      (shiftFunctor C m).associator (shiftFunctor C n) (F.shift a) ≪≫
        isoWhiskerLeft (shiftFunctor C m) (F.shiftIso n a a' ha') ≪≫ F.shiftIso m a' a'' ha''
state_after: no goals
Theorem: InfIrred.ne_top
File: Mathlib/Order/Irreducible.lean

tactic: rintro rfl
state_before: ι : Type u_1
α : Type u_2
inst✝¹ : SemilatticeInf α
a b c : α
inst✝ : OrderTop α
s : Finset ι
f : ι → α
ha : InfIrred a
⊢ a ≠ ⊤
state_after: ι : Type u_1
α : Type u_2
inst✝¹ : SemilatticeInf α
b c : α
inst✝ : OrderTop α
s : Finset ι
f : ι → α
ha : InfIrred ⊤
⊢ False

tactic: exact not_infIrred_top ha
state_before: ι : Type u_1
α : Type u_2
inst✝¹ : SemilatticeInf α
b c : α
inst✝ : OrderTop α
s : Finset ι
f : ι → α
ha : InfIrred ⊤
⊢ False
state_after: no goals
Theorem: ContinuousMap.HomotopyRel.eq_snd
File: Mathlib/Topology/Homotopy/Basic.lean

tactic: rw [F.eq_fst t hx, ← F.eq_fst 1 hx, F.apply_one]
state_before: F✝ : Type u_1
X : Type u
Y : Type v
Z : Type w
Z' : Type x
ι : Type u_2
inst✝³ : TopologicalSpace X
inst✝² : TopologicalSpace Y
inst✝¹ : TopologicalSpace Z
inst✝ : TopologicalSpace Z'
f₀ f₁ : C(X, Y)
S : Set X
F : f₀.HomotopyRel f₁ S
t : ↑I
x : X
hx : x ∈ S
⊢ F (t, x) = f₁ x
state_after: no goals
Theorem: FirstOrder.Language.BoundedFormula.realize_relabel
File: Mathlib/ModelTheory/Semantics.lean

tactic: rw [relabel, realize_mapTermRel_add_castLe] <;> intros <;> simp
state_before: L : Language
L' : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝² : L.Structure M
inst✝¹ : L.Structure N
inst✝ : L.Structure P
α : Type u'
β : Type v'
γ : Type u_3
n✝ l : ℕ
φ✝ ψ : L.BoundedFormula α l
θ : L.BoundedFormula α l.succ
v✝ : α → M
xs✝ : Fin l → M
m n : ℕ
φ : L.BoundedFormula α n
g : α → β ⊕ Fin m
v : β → M
xs : Fin (m + n) → M
⊢ (relabel g φ).Realize v xs ↔ φ.Realize (Sum.elim v (xs ∘ castAdd n) ∘ g) (xs ∘ natAdd m)
state_after: no goals
Theorem: Down.erase_mem_compression
File: Mathlib/Combinatorics/SetFamily/Compression/Down.lean

tactic: simp_rw [mem_compression, erase_idem, and_self_iff]
state_before: α : Type u_1
inst✝ : DecidableEq α
𝒜 ℬ : Finset (Finset α)
s : Finset α
a : α
hs : s ∈ 𝒜
⊢ s.erase a ∈ 𝓓 a 𝒜
state_after: α : Type u_1
inst✝ : DecidableEq α
𝒜 ℬ : Finset (Finset α)
s : Finset α
a : α
hs : s ∈ 𝒜
⊢ s.erase a ∈ 𝒜 ∨ s.erase a ∉ 𝒜 ∧ insert a (s.erase a) ∈ 𝒜

tactic: refine (em _).imp_right fun h => ⟨h, ?_⟩
state_before: α : Type u_1
inst✝ : DecidableEq α
𝒜 ℬ : Finset (Finset α)
s : Finset α
a : α
hs : s ∈ 𝒜
⊢ s.erase a ∈ 𝒜 ∨ s.erase a ∉ 𝒜 ∧ insert a (s.erase a) ∈ 𝒜
state_after: α : Type u_1
inst✝ : DecidableEq α
𝒜 ℬ : Finset (Finset α)
s : Finset α
a : α
hs : s ∈ 𝒜
h : s.erase a ∉ 𝒜
⊢ insert a (s.erase a) ∈ 𝒜

tactic: rwa [insert_erase (erase_ne_self.1 (ne_of_mem_of_not_mem hs h).symm)]
state_before: α : Type u_1
inst✝ : DecidableEq α
𝒜 ℬ : Finset (Finset α)
s : Finset α
a : α
hs : s ∈ 𝒜
h : s.erase a ∉ 𝒜
⊢ insert a (s.erase a) ∈ 𝒜
state_after: no goals
Theorem: Nat.log_ne_padicValNat_succ
File: Mathlib/NumberTheory/Padics/PadicVal.lean

tactic: rw [Ne, log_eq_iff (by simp [hn])]
state_before: p n : ℕ
hn : n ≠ 0
⊢ log 2 n ≠ padicValNat 2 (n + 1)
state_after: p n : ℕ
hn : n ≠ 0
⊢ ¬(2 ^ padicValNat 2 (n + 1) ≤ n ∧ n < 2 ^ (padicValNat 2 (n + 1) + 1))

tactic: rintro ⟨h1, h2⟩
state_before: p n : ℕ
hn : n ≠ 0
⊢ ¬(2 ^ padicValNat 2 (n + 1) ≤ n ∧ n < 2 ^ (padicValNat 2 (n + 1) + 1))
state_after: case intro
p n : ℕ
hn : n ≠ 0
h1 : 2 ^ padicValNat 2 (n + 1) ≤ n
h2 : n < 2 ^ (padicValNat 2 (n + 1) + 1)
⊢ False

tactic: rw [← Nat.lt_add_one_iff, ← mul_one (2 ^ _)] at h1
state_before: case intro
p n : ℕ
hn : n ≠ 0
h1 : 2 ^ padicValNat 2 (n + 1) ≤ n
h2 : n < 2 ^ (padicValNat 2 (n + 1) + 1)
⊢ False
state_after: case intro
p n : ℕ
hn : n ≠ 0
h1 : 2 ^ padicValNat 2 (n + 1) * 1 < n + 1
h2 : n < 2 ^ (padicValNat 2 (n + 1) + 1)
⊢ False

tactic: rw [← add_one_le_iff, Nat.pow_succ] at h2
state_before: case intro
p n : ℕ
hn : n ≠ 0
h1 : 2 ^ padicValNat 2 (n + 1) * 1 < n + 1
h2 : n < 2 ^ (padicValNat 2 (n + 1) + 1)
⊢ False
state_after: case intro
p n : ℕ
hn : n ≠ 0
h1 : 2 ^ padicValNat 2 (n + 1) * 1 < n + 1
h2 : n + 1 ≤ 2 ^ padicValNat 2 (n + 1) * 2
⊢ False

tactic: refine not_dvd_of_between_consec_multiples h1 (lt_of_le_of_ne' h2 ?_) pow_padicValNat_dvd
state_before: case intro
p n : ℕ
hn : n ≠ 0
h1 : 2 ^ padicValNat 2 (n + 1) * 1 < n + 1
h2 : n + 1 ≤ 2 ^ padicValNat 2 (n + 1) * 2
⊢ False
state_after: case intro
p n : ℕ
hn : n ≠ 0
h1 : 2 ^ padicValNat 2 (n + 1) * 1 < n + 1
h2 : n + 1 ≤ 2 ^ padicValNat 2 (n + 1) * 2
⊢ 2 ^ padicValNat 2 (n + 1) * (1 + 1) ≠ n + 1

tactic: exact pow_succ_padicValNat_not_dvd (p := 2) n.succ_ne_zero ∘ dvd_of_eq
state_before: case intro
p n : ℕ
hn : n ≠ 0
h1 : 2 ^ padicValNat 2 (n + 1) * 1 < n + 1
h2 : n + 1 ≤ 2 ^ padicValNat 2 (n + 1) * 2
⊢ 2 ^ padicValNat 2 (n + 1) * (1 + 1) ≠ n + 1
state_after: no goals

tactic: simp [hn]
state_before: p n : ℕ
hn : n ≠ 0
⊢ padicValNat 2 (n + 1) ≠ 0 ∨ 1 < 2 ∧ n ≠ 0
state_after: no goals
Theorem: ConjClasses.map_surjective
File: Mathlib/Algebra/Group/Conj.lean

tactic: intro b
state_before: α : Type u
β : Type v
inst✝¹ : Monoid α
inst✝ : Monoid β
f : α →* β
hf : Function.Surjective ⇑f
⊢ Function.Surjective (map f)
state_after: α : Type u
β : Type v
inst✝¹ : Monoid α
inst✝ : Monoid β
f : α →* β
hf : Function.Surjective ⇑f
b : ConjClasses β
⊢ ∃ a, map f a = b

tactic: obtain ⟨b, rfl⟩ := ConjClasses.mk_surjective b
state_before: α : Type u
β : Type v
inst✝¹ : Monoid α
inst✝ : Monoid β
f : α →* β
hf : Function.Surjective ⇑f
b : ConjClasses β
⊢ ∃ a, map f a = b
state_after: case intro
α : Type u
β : Type v
inst✝¹ : Monoid α
inst✝ : Monoid β
f : α →* β
hf : Function.Surjective ⇑f
b : β
⊢ ∃ a, map f a = ConjClasses.mk b

tactic: obtain ⟨a, rfl⟩ := hf b
state_before: case intro
α : Type u
β : Type v
inst✝¹ : Monoid α
inst✝ : Monoid β
f : α →* β
hf : Function.Surjective ⇑f
b : β
⊢ ∃ a, map f a = ConjClasses.mk b
state_after: case intro.intro
α : Type u
β : Type v
inst✝¹ : Monoid α
inst✝ : Monoid β
f : α →* β
hf : Function.Surjective ⇑f
a : α
⊢ ∃ a_1, map f a_1 = ConjClasses.mk (f a)

tactic: exact ⟨ConjClasses.mk a, rfl⟩
state_before: case intro.intro
α : Type u
β : Type v
inst✝¹ : Monoid α
inst✝ : Monoid β
f : α →* β
hf : Function.Surjective ⇑f
a : α
⊢ ∃ a_1, map f a_1 = ConjClasses.mk (f a)
state_after: no goals
Theorem: CategoryTheory.ShortComplex.abelianImageToKernel_comp_kernel_ι_comp_cokernel_π
File: Mathlib/Algebra/Homology/ShortComplex/Abelian.lean

tactic: simp only [abelianImageToKernel_comp_kernel_ι_assoc, kernel.condition]
state_before: C : Type u
inst✝¹ : Category.{v, u} C
inst✝ : Abelian C
S : ShortComplex C
⊢ S.abelianImageToKernel ≫ kernel.ι S.g ≫ cokernel.π S.f = 0
state_after: no goals
Theorem: EckmannHilton.mul_comm
File: Mathlib/GroupTheory/EckmannHilton.lean

tactic: simpa [mul h₁ h₂ distrib, h₂.left_id, h₂.right_id] using distrib e₂ a b e₂
state_before: X : Type u
m₁ m₂ : X → X → X
e₁ e₂ : X
h₁ : IsUnital m₁ e₁
h₂ : IsUnital m₂ e₂
distrib : ∀ (a b c d : X), m₁ (m₂ a b) (m₂ c d) = m₂ (m₁ a c) (m₁ b d)
a b : X
⊢ m₂ a b = m₂ b a
state_after: no goals
Theorem: Finset.smul_univ₀'
File: Mathlib/Data/Finset/Pointwise.lean

tactic: push_cast
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝³ : DecidableEq β
inst✝² : GroupWithZero α
inst✝¹ : MulAction α β
s✝ t : Finset β
a : α
b : β
inst✝ : Fintype β
s : Finset α
hs : s.Nontrivial
⊢ ↑(s • univ) = ↑univ
state_after: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝³ : DecidableEq β
inst✝² : GroupWithZero α
inst✝¹ : MulAction α β
s✝ t : Finset β
a : α
b : β
inst✝ : Fintype β
s : Finset α
hs : s.Nontrivial
⊢ ↑s • Set.univ = Set.univ

tactic: exact Set.smul_univ₀' hs
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝³ : DecidableEq β
inst✝² : GroupWithZero α
inst✝¹ : MulAction α β
s✝ t : Finset β
a : α
b : β
inst✝ : Fintype β
s : Finset α
hs : s.Nontrivial
⊢ ↑s • Set.univ = Set.univ
state_after: no goals
Theorem: Real.deriv_arcsin
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/InverseDeriv.lean

tactic: funext x
state_before: ⊢ deriv arcsin = fun x => 1 / √(1 - x ^ 2)
state_after: case h
x : ℝ
⊢ deriv arcsin x = 1 / √(1 - x ^ 2)

tactic: by_cases h : x ≠ -1 ∧ x ≠ 1
state_before: case h
x : ℝ
⊢ deriv arcsin x = 1 / √(1 - x ^ 2)
state_after: case pos
x : ℝ
h : x ≠ -1 ∧ x ≠ 1
⊢ deriv arcsin x = 1 / √(1 - x ^ 2)

case neg
x : ℝ
h : ¬(x ≠ -1 ∧ x ≠ 1)
⊢ deriv arcsin x = 1 / √(1 - x ^ 2)

tactic: exact (hasDerivAt_arcsin h.1 h.2).deriv
state_before: case pos
x : ℝ
h : x ≠ -1 ∧ x ≠ 1
⊢ deriv arcsin x = 1 / √(1 - x ^ 2)
state_after: no goals

tactic: rw [deriv_zero_of_not_differentiableAt (mt differentiableAt_arcsin.1 h)]
state_before: case neg
x : ℝ
h : ¬(x ≠ -1 ∧ x ≠ 1)
⊢ deriv arcsin x = 1 / √(1 - x ^ 2)
state_after: case neg
x : ℝ
h : ¬(x ≠ -1 ∧ x ≠ 1)
⊢ 0 = 1 / √(1 - x ^ 2)

tactic: simp only [not_and_or, Ne, Classical.not_not] at h
state_before: case neg
x : ℝ
h : ¬(x ≠ -1 ∧ x ≠ 1)
⊢ 0 = 1 / √(1 - x ^ 2)
state_after: case neg
x : ℝ
h : x = -1 ∨ x = 1
⊢ 0 = 1 / √(1 - x ^ 2)

tactic: rcases h with (rfl | rfl) <;> simp
state_before: case neg
x : ℝ
h : x = -1 ∨ x = 1
⊢ 0 = 1 / √(1 - x ^ 2)
state_after: no goals
Theorem: smul_add_one_sub_smul
File: Mathlib/Algebra/Module/Defs.lean

tactic: rw [← add_smul, add_sub_cancel, one_smul]
state_before: α : Type u_1
R✝ : Type u_2
k : Type u_3
S : Type u_4
M : Type u_5
M₂ : Type u_6
M₃ : Type u_7
ι : Type u_8
inst✝⁴ : Semiring R✝
inst✝³ : AddCommMonoid M
inst✝² : Module R✝ M
r✝ s : R✝
x y : M
R : Type u_9
inst✝¹ : Ring R
inst✝ : Module R M
r : R
m : M
⊢ r • m + (1 - r) • m = m
state_after: no goals
Theorem: MeasureTheory.withDensity_inv_same₀
File: Mathlib/MeasureTheory/Measure/WithDensity.lean

tactic: rw [← withDensity_mul₀ hf hf.inv]
state_before: α : Type u_1
m0 : MeasurableSpace α
μ✝ μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f μ
hf_ne_zero : ∀ᵐ (x : α) ∂μ, f x ≠ 0
hf_ne_top : ∀ᵐ (x : α) ∂μ, f x ≠ ⊤
⊢ ((μ.withDensity f).withDensity fun x => (f x)⁻¹) = μ
state_after: α : Type u_1
m0 : MeasurableSpace α
μ✝ μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f μ
hf_ne_zero : ∀ᵐ (x : α) ∂μ, f x ≠ 0
hf_ne_top : ∀ᵐ (x : α) ∂μ, f x ≠ ⊤
⊢ μ.withDensity (f * fun x => (f x)⁻¹) = μ

tactic: suffices (f * fun x ↦ (f x)⁻¹) =ᵐ[μ] 1 by
  rw [withDensity_congr_ae this, withDensity_one]
state_before: α : Type u_1
m0 : MeasurableSpace α
μ✝ μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f μ
hf_ne_zero : ∀ᵐ (x : α) ∂μ, f x ≠ 0
hf_ne_top : ∀ᵐ (x : α) ∂μ, f x ≠ ⊤
⊢ μ.withDensity (f * fun x => (f x)⁻¹) = μ
state_after: α : Type u_1
m0 : MeasurableSpace α
μ✝ μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f μ
hf_ne_zero : ∀ᵐ (x : α) ∂μ, f x ≠ 0
hf_ne_top : ∀ᵐ (x : α) ∂μ, f x ≠ ⊤
⊢ (f * fun x => (f x)⁻¹) =ᶠ[ae μ] 1

tactic: filter_upwards [hf_ne_zero, hf_ne_top] with x hf_ne_zero hf_ne_top
state_before: α : Type u_1
m0 : MeasurableSpace α
μ✝ μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f μ
hf_ne_zero : ∀ᵐ (x : α) ∂μ, f x ≠ 0
hf_ne_top : ∀ᵐ (x : α) ∂μ, f x ≠ ⊤
⊢ (f * fun x => (f x)⁻¹) =ᶠ[ae μ] 1
state_after: case h
α : Type u_1
m0 : MeasurableSpace α
μ✝ μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f μ
hf_ne_zero✝ : ∀ᵐ (x : α) ∂μ, f x ≠ 0
hf_ne_top✝ : ∀ᵐ (x : α) ∂μ, f x ≠ ⊤
x : α
hf_ne_zero : f x ≠ 0
hf_ne_top : f x ≠ ⊤
⊢ (f * fun x => (f x)⁻¹) x = 1 x

tactic: simp only [Pi.mul_apply]
state_before: case h
α : Type u_1
m0 : MeasurableSpace α
μ✝ μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f μ
hf_ne_zero✝ : ∀ᵐ (x : α) ∂μ, f x ≠ 0
hf_ne_top✝ : ∀ᵐ (x : α) ∂μ, f x ≠ ⊤
x : α
hf_ne_zero : f x ≠ 0
hf_ne_top : f x ≠ ⊤
⊢ (f * fun x => (f x)⁻¹) x = 1 x
state_after: case h
α : Type u_1
m0 : MeasurableSpace α
μ✝ μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f μ
hf_ne_zero✝ : ∀ᵐ (x : α) ∂μ, f x ≠ 0
hf_ne_top✝ : ∀ᵐ (x : α) ∂μ, f x ≠ ⊤
x : α
hf_ne_zero : f x ≠ 0
hf_ne_top : f x ≠ ⊤
⊢ f x * (f x)⁻¹ = 1 x

tactic: rw [ENNReal.mul_inv_cancel hf_ne_zero hf_ne_top, Pi.one_apply]
state_before: case h
α : Type u_1
m0 : MeasurableSpace α
μ✝ μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f μ
hf_ne_zero✝ : ∀ᵐ (x : α) ∂μ, f x ≠ 0
hf_ne_top✝ : ∀ᵐ (x : α) ∂μ, f x ≠ ⊤
x : α
hf_ne_zero : f x ≠ 0
hf_ne_top : f x ≠ ⊤
⊢ f x * (f x)⁻¹ = 1 x
state_after: no goals

tactic: rw [withDensity_congr_ae this, withDensity_one]
state_before: α : Type u_1
m0 : MeasurableSpace α
μ✝ μ : Measure α
f : α → ℝ≥0∞
hf : AEMeasurable f μ
hf_ne_zero : ∀ᵐ (x : α) ∂μ, f x ≠ 0
hf_ne_top : ∀ᵐ (x : α) ∂μ, f x ≠ ⊤
this : (f * fun x => (f x)⁻¹) =ᶠ[ae μ] 1
⊢ μ.withDensity (f * fun x => (f x)⁻¹) = μ
state_after: no goals
Theorem: Matroid.ofMatroid_le_iff
File: Mathlib/Data/Matroid/Restrict.lean

tactic: simp
state_before: α : Type u_1
M✝ : Matroid α
R I J X Y : Set α
N M M' : Matroid α
⊢ { toMatroid := M } ≤ { toMatroid := M' } ↔ M ≤r M'
state_after: no goals
Theorem: Wbtw.mem_affineSpan
File: Mathlib/Analysis/Convex/Between.lean

tactic: rcases h with ⟨r, ⟨-, rfl⟩⟩
state_before: R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x y z : P
h : Wbtw R x y z
⊢ y ∈ affineSpan R {x, z}
state_after: case intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x z : P
r : R
⊢ (lineMap x z) r ∈ affineSpan R {x, z}

tactic: exact lineMap_mem_affineSpan_pair _ _ _
state_before: case intro.intro
R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x z : P
r : R
⊢ (lineMap x z) r ∈ affineSpan R {x, z}
state_after: no goals
Theorem: Subspace.finiteDimensional_quot_dualCoannihilator_iff
File: Mathlib/LinearAlgebra/Dual.lean

tactic: set_option maxSynthPendingDepth 2 in
exact FiniteDimensional.of_injective _ W.quotDualCoannihilatorToDual_injective
state_before: K✝ : Type uK
inst✝⁷ : Field K✝
V₁ : Type uV₁
V₂ : Type uV₂
inst✝⁶ : AddCommGroup V₁
inst✝⁵ : Module K✝ V₁
inst✝⁴ : AddCommGroup V₂
inst✝³ : Module K✝ V₂
K : Type u_1
V : Type u_2
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
W : Submodule K (Dual K V)
x✝ : FiniteDimensional K ↥W
⊢ FiniteDimensional K (V ⧸ W.dualCoannihilator)
state_after: no goals

tactic: exact FiniteDimensional.of_injective _ W.quotDualCoannihilatorToDual_injective
state_before: K✝ : Type uK
inst✝⁷ : Field K✝
V₁ : Type uV₁
V₂ : Type uV₂
inst✝⁶ : AddCommGroup V₁
inst✝⁵ : Module K✝ V₁
inst✝⁴ : AddCommGroup V₂
inst✝³ : Module K✝ V₂
K : Type u_1
V : Type u_2
inst✝² : Field K
inst✝¹ : AddCommGroup V
inst✝ : Module K V
W : Submodule K (Dual K V)
x✝ : FiniteDimensional K ↥W
⊢ FiniteDimensional K (V ⧸ W.dualCoannihilator)
state_after: no goals
Theorem: CategoryTheory.Pretriangulated.shiftFunctorZero_op_inv_app
File: Mathlib/CategoryTheory/Triangulated/Opposite.lean

tactic: rw [← cancel_epi ((shiftFunctorZero Cᵒᵖ ℤ).hom.app X), Iso.hom_inv_id_app,
  shiftFunctorZero_op_hom_app, assoc, ← op_comp_assoc, Iso.hom_inv_id_app, op_id,
  id_comp, Iso.hom_inv_id_app]
state_before: C : Type u_1
inst✝¹ : Category.{u_2, u_1} C
inst✝ : HasShift C ℤ
X : Cᵒᵖ
⊢ (shiftFunctorZero Cᵒᵖ ℤ).inv.app X =
    ((shiftFunctorZero C ℤ).hom.app X.unop).op ≫ (shiftFunctorOpIso C 0 0 ⋯).inv.app X
state_after: no goals
Theorem: Finsupp.erase_eq_sub_single
File: Mathlib/Data/Finsupp/Defs.lean

tactic: ext a'
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝ : AddGroup G
f : α →₀ G
a : α
⊢ erase a f = f - single a (f a)
state_after: case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝ : AddGroup G
f : α →₀ G
a a' : α
⊢ (erase a f) a' = (f - single a (f a)) a'

tactic: rcases eq_or_ne a a' with (rfl | h)
state_before: case h
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝ : AddGroup G
f : α →₀ G
a a' : α
⊢ (erase a f) a' = (f - single a (f a)) a'
state_after: case h.inl
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝ : AddGroup G
f : α →₀ G
a : α
⊢ (erase a f) a = (f - single a (f a)) a

case h.inr
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝ : AddGroup G
f : α →₀ G
a a' : α
h : a ≠ a'
⊢ (erase a f) a' = (f - single a (f a)) a'

tactic: simp
state_before: case h.inl
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝ : AddGroup G
f : α →₀ G
a : α
⊢ (erase a f) a = (f - single a (f a)) a
state_after: no goals

tactic: simp [erase_ne h.symm, single_eq_of_ne h]
state_before: case h.inr
α : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝ : AddGroup G
f : α →₀ G
a a' : α
h : a ≠ a'
⊢ (erase a f) a' = (f - single a (f a)) a'
state_after: no goals