1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: sub_inv_antitoneOn_Icc_right
File: Mathlib/Algebra/Order/Field/Basic.lean

tactic: by_cases hab : a ≤ b
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedField α
a b c d : α
n : ℤ
ha : c < a
⊢ AntitoneOn (fun x => (x - c)⁻¹) (Set.Icc a b)
state_after: case pos
ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedField α
a b c d : α
n : ℤ
ha : c < a
hab : a ≤ b
⊢ AntitoneOn (fun x => (x - c)⁻¹) (Set.Icc a b)

case neg
ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedField α
a b c d : α
n : ℤ
ha : c < a
hab : ¬a ≤ b
⊢ AntitoneOn (fun x => (x - c)⁻¹) (Set.Icc a b)

tactic: exact sub_inv_antitoneOn_Ioi.mono <| (Set.Icc_subset_Ioi_iff hab).mpr ha
state_before: case pos
ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedField α
a b c d : α
n : ℤ
ha : c < a
hab : a ≤ b
⊢ AntitoneOn (fun x => (x - c)⁻¹) (Set.Icc a b)
state_after: no goals

tactic: simp [hab, Set.Subsingleton.antitoneOn]
state_before: case neg
ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : LinearOrderedField α
a b c d : α
n : ℤ
ha : c < a
hab : ¬a ≤ b
⊢ AntitoneOn (fun x => (x - c)⁻¹) (Set.Icc a b)
state_after: no goals
Theorem: Matrix.toMvPolynomial_totalDegree_le
File: Mathlib/Algebra/Module/LinearMap/Polynomial.lean

tactic: apply (toMvPolynomial_isHomogeneous _ _).totalDegree_le
state_before: m : Type u_1
n : Type u_2
o : Type u_3
R : Type u_4
S : Type u_5
inst✝³ : Fintype n
inst✝² : Fintype o
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
M : Matrix m n R
i : m
⊢ (M.toMvPolynomial i).totalDegree ≤ 1
state_after: no goals
Theorem: Computation.think_bind
File: Mathlib/Data/Seq/Computation.lean

tactic: simp [bind, Bind.f]
state_before: α : Type u
β : Type v
γ : Type w
c : Computation α
f : α → Computation β
⊢ (c.think.bind f).destruct = Sum.inr (c.bind f)
state_after: no goals
Theorem: InnerProductSpace.Core.inner_self_eq_zero
File: Mathlib/Analysis/InnerProductSpace/Basic.lean

tactic: rintro rfl
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝² : _root_.RCLike 𝕜
inst✝¹ : AddCommGroup F
inst✝ : Module 𝕜 F
c : Core 𝕜 F
x : F
⊢ x = 0 → ⟪x, x⟫_𝕜 = 0
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝² : _root_.RCLike 𝕜
inst✝¹ : AddCommGroup F
inst✝ : Module 𝕜 F
c : Core 𝕜 F
⊢ ⟪0, 0⟫_𝕜 = 0

tactic: exact inner_zero_left _
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝² : _root_.RCLike 𝕜
inst✝¹ : AddCommGroup F
inst✝ : Module 𝕜 F
c : Core 𝕜 F
⊢ ⟪0, 0⟫_𝕜 = 0
state_after: no goals
Theorem: PSet.mem_sUnion
File: Mathlib/SetTheory/ZFC/Basic.lean

tactic: rwa [eta] at this
state_before: α : Type u
A : α → PSet
y : PSet
x✝ : y ∈ ⋃₀ mk α A
a : (mk α A).Type
c : ((mk α A).Func a).Type
e : y.Equiv ((A a).Func c)
this : (A a).Func c ∈ mk (A a).Type (A a).Func
⊢ (A a).Func c ∈ A (?m.17636 α A y x✝ a c e this)
state_after: no goals

tactic: rw [← eta (A a)] at e
state_before: α : Type u
A : α → PSet
y : PSet
x✝ : ∃ z ∈ mk α A, y ∈ z
β : Type u
B : β → PSet
a : (mk α A).Type
e : (mk β B).Equiv (A a)
b : (mk β B).Type
yb : y.Equiv ((mk β B).Func b)
⊢ y ∈ ⋃₀ mk α A
state_after: α : Type u
A : α → PSet
y : PSet
x✝ : ∃ z ∈ mk α A, y ∈ z
β : Type u
B : β → PSet
a : (mk α A).Type
e : (mk β B).Equiv (mk (A a).Type (A a).Func)
b : (mk β B).Type
yb : y.Equiv ((mk β B).Func b)
⊢ y ∈ ⋃₀ mk α A

tactic: exact
  let ⟨βt, _⟩ := e
  let ⟨c, bc⟩ := βt b
  ⟨⟨a, c⟩, yb.trans bc⟩
state_before: α : Type u
A : α → PSet
y : PSet
x✝ : ∃ z ∈ mk α A, y ∈ z
β : Type u
B : β → PSet
a : (mk α A).Type
e : (mk β B).Equiv (mk (A a).Type (A a).Func)
b : (mk β B).Type
yb : y.Equiv ((mk β B).Func b)
⊢ y ∈ ⋃₀ mk α A
state_after: no goals
Theorem: PrimeSpectrum.basicOpen_eq_bot_iff
File: Mathlib/AlgebraicGeometry/PrimeSpectrum/Basic.lean

tactic: rw [← TopologicalSpace.Opens.coe_inj, basicOpen_eq_zeroLocus_compl]
state_before: R : Type u
S : Type v
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
f : R
⊢ basicOpen f = ⊥ ↔ IsNilpotent f
state_after: R : Type u
S : Type v
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
f : R
⊢ (zeroLocus {f})ᶜ = ↑⊥ ↔ IsNilpotent f

tactic: simp only [Set.eq_univ_iff_forall, Set.singleton_subset_iff, TopologicalSpace.Opens.coe_bot,
  nilpotent_iff_mem_prime, Set.compl_empty_iff, mem_zeroLocus, SetLike.mem_coe]
state_before: R : Type u
S : Type v
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
f : R
⊢ (zeroLocus {f})ᶜ = ↑⊥ ↔ IsNilpotent f
state_after: R : Type u
S : Type v
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
f : R
⊢ (∀ (x : PrimeSpectrum R), f ∈ x.asIdeal) ↔ ∀ (J : Ideal R), J.IsPrime → f ∈ J

tactic: exact ⟨fun h I hI => h ⟨I, hI⟩, fun h ⟨I, hI⟩ => h I hI⟩
state_before: R : Type u
S : Type v
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
f : R
⊢ (∀ (x : PrimeSpectrum R), f ∈ x.asIdeal) ↔ ∀ (J : Ideal R), J.IsPrime → f ∈ J
state_after: no goals
Theorem: List.mem_eraseIdx_iff_get
File: .lake/packages/batteries/Batteries/Data/List/EraseIdx.lean

tactic: simp [mem_eraseIdx_iff_getElem]
state_before: α : Type u
β : Type v
x : α
l : List α
k : Nat
⊢ x ∈ l.eraseIdx k ↔ ∃ i, ↑i ≠ k ∧ l.get i = x
state_after: no goals
Theorem: CategoryTheory.Limits.imageSubobject_le_mk
File: Mathlib/CategoryTheory/Subobject/Limits.lean

tactic: simp [w]
state_before: C : Type u
inst✝³ : Category.{v, u} C
X✝ Y Z : C
f✝ : X✝ ⟶ Y
inst✝² : HasImage f✝
A B X : C
g : X ⟶ B
inst✝¹ : Mono g
f : A ⟶ B
inst✝ : HasImage f
h : A ⟶ X
w : h ≫ g = f
⊢ (h ≫ (underlyingIso g).inv) ≫ (Subobject.mk g).arrow = f
state_after: no goals
Theorem: div_lt_one'
File: Mathlib/Algebra/Order/Group/Defs.lean

tactic: rw [← mul_lt_mul_iff_right b, one_mul, div_eq_mul_inv, inv_mul_cancel_right]
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 d : α
⊢ a / b < 1 ↔ a < b
state_after: no goals
Theorem: Set.OrdConnected.convex_of_chain
File: Mathlib/Analysis/Convex/Basic.lean

tactic: refine convex_iff_segment_subset.mpr fun x hx y hy => ?_
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
β : Type u_4
inst✝³ : OrderedSemiring 𝕜
inst✝² : OrderedAddCommMonoid E
inst✝¹ : Module 𝕜 E
inst✝ : OrderedSMul 𝕜 E
s : Set E
hs : s.OrdConnected
h : IsChain (fun x x_1 => x ≤ x_1) s
⊢ Convex 𝕜 s
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
β : Type u_4
inst✝³ : OrderedSemiring 𝕜
inst✝² : OrderedAddCommMonoid E
inst✝¹ : Module 𝕜 E
inst✝ : OrderedSMul 𝕜 E
s : Set E
hs : s.OrdConnected
h : IsChain (fun x x_1 => x ≤ x_1) s
x : E
hx : x ∈ s
y : E
hy : y ∈ s
⊢ [x-[𝕜]y] ⊆ s

tactic: obtain hxy | hyx := h.total hx hy
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
β : Type u_4
inst✝³ : OrderedSemiring 𝕜
inst✝² : OrderedAddCommMonoid E
inst✝¹ : Module 𝕜 E
inst✝ : OrderedSMul 𝕜 E
s : Set E
hs : s.OrdConnected
h : IsChain (fun x x_1 => x ≤ x_1) s
x : E
hx : x ∈ s
y : E
hy : y ∈ s
⊢ [x-[𝕜]y] ⊆ s
state_after: case inl
𝕜 : Type u_1
E : Type u_2
F : Type u_3
β : Type u_4
inst✝³ : OrderedSemiring 𝕜
inst✝² : OrderedAddCommMonoid E
inst✝¹ : Module 𝕜 E
inst✝ : OrderedSMul 𝕜 E
s : Set E
hs : s.OrdConnected
h : IsChain (fun x x_1 => x ≤ x_1) s
x : E
hx : x ∈ s
y : E
hy : y ∈ s
hxy : x ≤ y
⊢ [x-[𝕜]y] ⊆ s

case inr
𝕜 : Type u_1
E : Type u_2
F : Type u_3
β : Type u_4
inst✝³ : OrderedSemiring 𝕜
inst✝² : OrderedAddCommMonoid E
inst✝¹ : Module 𝕜 E
inst✝ : OrderedSMul 𝕜 E
s : Set E
hs : s.OrdConnected
h : IsChain (fun x x_1 => x ≤ x_1) s
x : E
hx : x ∈ s
y : E
hy : y ∈ s
hyx : y ≤ x
⊢ [x-[𝕜]y] ⊆ s

tactic: exact (segment_subset_Icc hxy).trans (hs.out hx hy)
state_before: case inl
𝕜 : Type u_1
E : Type u_2
F : Type u_3
β : Type u_4
inst✝³ : OrderedSemiring 𝕜
inst✝² : OrderedAddCommMonoid E
inst✝¹ : Module 𝕜 E
inst✝ : OrderedSMul 𝕜 E
s : Set E
hs : s.OrdConnected
h : IsChain (fun x x_1 => x ≤ x_1) s
x : E
hx : x ∈ s
y : E
hy : y ∈ s
hxy : x ≤ y
⊢ [x-[𝕜]y] ⊆ s
state_after: no goals

tactic: rw [segment_symm]
state_before: case inr
𝕜 : Type u_1
E : Type u_2
F : Type u_3
β : Type u_4
inst✝³ : OrderedSemiring 𝕜
inst✝² : OrderedAddCommMonoid E
inst✝¹ : Module 𝕜 E
inst✝ : OrderedSMul 𝕜 E
s : Set E
hs : s.OrdConnected
h : IsChain (fun x x_1 => x ≤ x_1) s
x : E
hx : x ∈ s
y : E
hy : y ∈ s
hyx : y ≤ x
⊢ [x-[𝕜]y] ⊆ s
state_after: case inr
𝕜 : Type u_1
E : Type u_2
F : Type u_3
β : Type u_4
inst✝³ : OrderedSemiring 𝕜
inst✝² : OrderedAddCommMonoid E
inst✝¹ : Module 𝕜 E
inst✝ : OrderedSMul 𝕜 E
s : Set E
hs : s.OrdConnected
h : IsChain (fun x x_1 => x ≤ x_1) s
x : E
hx : x ∈ s
y : E
hy : y ∈ s
hyx : y ≤ x
⊢ [y-[𝕜]x] ⊆ s

tactic: exact (segment_subset_Icc hyx).trans (hs.out hy hx)
state_before: case inr
𝕜 : Type u_1
E : Type u_2
F : Type u_3
β : Type u_4
inst✝³ : OrderedSemiring 𝕜
inst✝² : OrderedAddCommMonoid E
inst✝¹ : Module 𝕜 E
inst✝ : OrderedSMul 𝕜 E
s : Set E
hs : s.OrdConnected
h : IsChain (fun x x_1 => x ≤ x_1) s
x : E
hx : x ∈ s
y : E
hy : y ∈ s
hyx : y ≤ x
⊢ [y-[𝕜]x] ⊆ s
state_after: no goals
Theorem: Polynomial.exists_eq_pow_rootMultiplicity_mul_and_not_dvd
File: Mathlib/Algebra/Polynomial/Div.lean

tactic: classical
rw [rootMultiplicity_eq_multiplicity, dif_neg hp]
apply multiplicity.exists_eq_pow_mul_and_not_dvd
state_before: R : Type u
S : Type v
T : Type w
A : Type z
a✝ b : R
n : ℕ
inst✝ : Ring R
p✝ q p : R[X]
hp : p ≠ 0
a : R
⊢ ∃ q, p = (X - C a) ^ rootMultiplicity a p * q ∧ ¬X - C a ∣ q
state_after: no goals

tactic: rw [rootMultiplicity_eq_multiplicity, dif_neg hp]
state_before: R : Type u
S : Type v
T : Type w
A : Type z
a✝ b : R
n : ℕ
inst✝ : Ring R
p✝ q p : R[X]
hp : p ≠ 0
a : R
⊢ ∃ q, p = (X - C a) ^ rootMultiplicity a p * q ∧ ¬X - C a ∣ q
state_after: R : Type u
S : Type v
T : Type w
A : Type z
a✝ b : R
n : ℕ
inst✝ : Ring R
p✝ q p : R[X]
hp : p ≠ 0
a : R
⊢ ∃ q, p = (X - C a) ^ (multiplicity (X - C a) p).get ⋯ * q ∧ ¬X - C a ∣ q

tactic: apply multiplicity.exists_eq_pow_mul_and_not_dvd
state_before: R : Type u
S : Type v
T : Type w
A : Type z
a✝ b : R
n : ℕ
inst✝ : Ring R
p✝ q p : R[X]
hp : p ≠ 0
a : R
⊢ ∃ q, p = (X - C a) ^ (multiplicity (X - C a) p).get ⋯ * q ∧ ¬X - C a ∣ q
state_after: no goals
Theorem: PosNum.cast_lt
File: Mathlib/Data/Num/Lemmas.lean

tactic: rw [← cast_to_nat m, ← cast_to_nat n, Nat.cast_lt (α := α), lt_to_nat]
state_before: α : Type u_1
inst✝ : LinearOrderedSemiring α
m n : PosNum
⊢ ↑m < ↑n ↔ m < n
state_after: no goals
Theorem: CategoryTheory.isCoseparator_prod_of_isCoseparator_left
File: Mathlib/CategoryTheory/Generator.lean

tactic: simp
state_before: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
D : Type u₂
inst✝² : Category.{v₂, u₂} D
inst✝¹ : HasZeroMorphisms C
G H : C
inst✝ : HasBinaryProduct G H
hG : IsCoseparator G
⊢ {G} ⊆ {G, H}
state_after: no goals
Theorem: Polynomial.nonempty_support_iff
File: Mathlib/Algebra/Polynomial/Degree/Definitions.lean

tactic: rw [Ne, nonempty_iff_ne_empty, Ne, ← support_eq_empty]
state_before: R : Type u
S : Type v
a b c d : R
n m : ℕ
inst✝ : Semiring R
p q r : R[X]
⊢ p.support.Nonempty ↔ p ≠ 0
state_after: no goals
Theorem: MvQPF.Fix.dest_mk
File: Mathlib/Data/QPF/Multivariate/Constructions/Fix.lean

tactic: unfold Fix.dest
state_before: n : ℕ
F : TypeVec.{u} (n + 1) → Type u
q : MvQPF F
α : TypeVec.{u} n
x : F (α ::: Fix F α)
⊢ (mk x).dest = x
state_after: n : ℕ
F : TypeVec.{u} (n + 1) → Type u
q : MvQPF F
α : TypeVec.{u} n
x : F (α ::: Fix F α)
⊢ rec (MvFunctor.map (TypeVec.id ::: mk)) (mk x) = x

tactic: rw [Fix.rec_eq, ← Fix.dest, ← comp_map]
state_before: n : ℕ
F : TypeVec.{u} (n + 1) → Type u
q : MvQPF F
α : TypeVec.{u} n
x : F (α ::: Fix F α)
⊢ rec (MvFunctor.map (TypeVec.id ::: mk)) (mk x) = x
state_after: n : ℕ
F : TypeVec.{u} (n + 1) → Type u
q : MvQPF F
α : TypeVec.{u} n
x : F (α ::: Fix F α)
⊢ ((TypeVec.id ::: mk) ⊚ (TypeVec.id ::: dest)) <$$> x = x

tactic: conv =>
  rhs
  rw [← MvFunctor.id_map x]
state_before: n : ℕ
F : TypeVec.{u} (n + 1) → Type u
q : MvQPF F
α : TypeVec.{u} n
x : F (α ::: Fix F α)
⊢ ((TypeVec.id ::: mk) ⊚ (TypeVec.id ::: dest)) <$$> x = x
state_after: n : ℕ
F : TypeVec.{u} (n + 1) → Type u
q : MvQPF F
α : TypeVec.{u} n
x : F (α ::: Fix F α)
⊢ ((TypeVec.id ::: mk) ⊚ (TypeVec.id ::: dest)) <$$> x = TypeVec.id <$$> x

tactic: rw [← appendFun_comp, id_comp]
state_before: n : ℕ
F : TypeVec.{u} (n + 1) → Type u
q : MvQPF F
α : TypeVec.{u} n
x : F (α ::: Fix F α)
⊢ ((TypeVec.id ::: mk) ⊚ (TypeVec.id ::: dest)) <$$> x = TypeVec.id <$$> x
state_after: n : ℕ
F : TypeVec.{u} (n + 1) → Type u
q : MvQPF F
α : TypeVec.{u} n
x : F (α ::: Fix F α)
⊢ (TypeVec.id ::: mk ∘ dest) <$$> x = TypeVec.id <$$> x

tactic: have : Fix.mk ∘ Fix.dest (F := F) (α := α) = _root_.id := by
  ext (x : Fix F α)
  apply Fix.mk_dest
state_before: n : ℕ
F : TypeVec.{u} (n + 1) → Type u
q : MvQPF F
α : TypeVec.{u} n
x : F (α ::: Fix F α)
⊢ (TypeVec.id ::: mk ∘ dest) <$$> x = TypeVec.id <$$> x
state_after: n : ℕ
F : TypeVec.{u} (n + 1) → Type u
q : MvQPF F
α : TypeVec.{u} n
x : F (α ::: Fix F α)
this : mk ∘ dest = _root_.id
⊢ (TypeVec.id ::: mk ∘ dest) <$$> x = TypeVec.id <$$> x

tactic: rw [this, appendFun_id_id]
state_before: n : ℕ
F : TypeVec.{u} (n + 1) → Type u
q : MvQPF F
α : TypeVec.{u} n
x : F (α ::: Fix F α)
this : mk ∘ dest = _root_.id
⊢ (TypeVec.id ::: mk ∘ dest) <$$> x = TypeVec.id <$$> x
state_after: no goals

tactic: ext (x : Fix F α)
state_before: n : ℕ
F : TypeVec.{u} (n + 1) → Type u
q : MvQPF F
α : TypeVec.{u} n
x : F (α ::: Fix F α)
⊢ mk ∘ dest = _root_.id
state_after: case h
n : ℕ
F : TypeVec.{u} (n + 1) → Type u
q : MvQPF F
α : TypeVec.{u} n
x✝ : F (α ::: Fix F α)
x : Fix F α
⊢ (mk ∘ dest) x = _root_.id x

tactic: apply Fix.mk_dest
state_before: case h
n : ℕ
F : TypeVec.{u} (n + 1) → Type u
q : MvQPF F
α : TypeVec.{u} n
x✝ : F (α ::: Fix F α)
x : Fix F α
⊢ (mk ∘ dest) x = _root_.id x
state_after: no goals
Theorem: IsIdempotentElem.one_sub
File: Mathlib/Algebra/Ring/Idempotents.lean

tactic: rw [IsIdempotentElem, mul_sub, mul_one, sub_mul, one_mul, h.eq, sub_self, sub_zero]
state_before: M : Type u_1
N : Type u_2
S : Type u_3
M₀ : Type u_4
M₁ : Type u_5
R : Type u_6
G : Type u_7
G₀ : Type u_8
inst✝⁷ : Mul M
inst✝⁶ : Monoid N
inst✝⁵ : Semigroup S
inst✝⁴ : MulZeroClass M₀
inst✝³ : MulOneClass M₁
inst✝² : NonAssocRing R
inst✝¹ : Group G
inst✝ : CancelMonoidWithZero G₀
p : R
h : IsIdempotentElem p
⊢ IsIdempotentElem (1 - p)
state_after: no goals
Theorem: WeierstrassCurve.Φ_three
File: Mathlib/AlgebraicGeometry/EllipticCurve/DivisionPolynomial/Basic.lean

tactic: erw [Φ_ofNat, preΨ'_three, mul_one, preΨ'_four, preΨ'_two, mul_one, if_pos even_two]
state_before: R : Type r
S : Type s
inst✝¹ : CommRing R
inst✝ : CommRing S
W : WeierstrassCurve R
⊢ W.Φ 3 = X * W.Ψ₃ ^ 2 - W.preΨ₄ * W.Ψ₂Sq
state_after: no goals
Theorem: AddCommGroup.ModEq.of_nsmul
File: Mathlib/Algebra/ModEq.lean

tactic: rwa [mul_smul, natCast_zsmul]
state_before: α : Type u_1
inst✝ : AddCommGroup α
p a a₁ a₂ b b₁ b₂ c : α
n : ℕ
z : ℤ
x✝ : a ≡ b [PMOD n • p]
m : ℤ
hm : b - a = m • n • p
⊢ b - a = (m * ↑n) • p
state_after: no goals
Theorem: LinearEquiv.fst_comp_prodComm
File: Mathlib/LinearAlgebra/Prod.lean

tactic: ext <;> simp
state_before: R : Type u
K : Type u'
M : Type v
V : Type v'
M₂ : Type w
V₂ : Type w'
M₃ : Type y
V₃ : Type y'
M₄ : Type z
ι : Type x
M₅ : Type u_1
M₆ : Type u_2
inst✝⁴ : Semiring R
inst✝³ : AddCommMonoid M
inst✝² : AddCommMonoid M₂
inst✝¹ : Module R M
inst✝ : Module R M₂
⊢ LinearMap.fst R M₂ M ∘ₗ ↑(prodComm R M M₂) = LinearMap.snd R M M₂
state_after: no goals
Theorem: Finset.strongInduction_eq
File: Mathlib/Data/Finset/Card.lean

tactic: rw [strongInduction]
state_before: α : Type u_1
β : Type u_2
R : Type u_3
s✝ t u : Finset α
f : α → β
n : ℕ
p : Finset α → Sort u_4
H : (s : Finset α) → ((t : Finset α) → t ⊂ s → p t) → p s
s : Finset α
⊢ strongInduction H s = H s fun t x => strongInduction H t
state_after: no goals
Theorem: Filter.Tendsto.rpow_const
File: Mathlib/Analysis/SpecialFunctions/Pow/Continuity.lean

tactic: simp [tendsto_const_nhds]
state_before: α : Type u_1
l : Filter α
f : α → ℝ
x p : ℝ
hf : Tendsto f l (𝓝 x)
h : x ≠ 0 ∨ 0 ≤ p
h0 : 0 = p
⊢ Tendsto (fun a => f a ^ 0) l (𝓝 (x ^ 0))
state_after: no goals
Theorem: SimpleGraph.Subgraph.verts_iInf
File: Mathlib/Combinatorics/SimpleGraph/Subgraph.lean

tactic: simp [iInf]
state_before: ι : Sort u_1
V : Type u
W : Type v
G : SimpleGraph V
G₁ G₂ : G.Subgraph
a b : V
f : ι → G.Subgraph
⊢ (⨅ i, f i).verts = ⋂ i, (f i).verts
state_after: no goals
Theorem: CategoryTheory.Limits.prod.map_id_id
File: Mathlib/CategoryTheory/Limits/Shapes/BinaryProducts.lean

tactic: ext <;> simp
state_before: C : Type u
inst✝¹ : Category.{v, u} C
X✝ Y✝ X Y : C
inst✝ : HasBinaryProduct X Y
⊢ map (𝟙 X) (𝟙 Y) = 𝟙 (X ⨯ Y)
state_after: no goals
Theorem: ProbabilityTheory.kernel.snd_swapRight
File: Mathlib/Probability/Kernel/Composition.lean

tactic: ext a s hs
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
δ : Type u_4
mδ : MeasurableSpace δ
γ : Type u_5
mγ : MeasurableSpace γ
f : β → γ
g : γ → α
κ : ↥(kernel α (β × γ))
⊢ snd (swapRight κ) = fst κ
state_after: case h.h
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
δ : Type u_4
mδ : MeasurableSpace δ
γ : Type u_5
mγ : MeasurableSpace γ
f : β → γ
g : γ → α
κ : ↥(kernel α (β × γ))
a : α
s : Set β
hs : MeasurableSet s
⊢ ((snd (swapRight κ)) a) s = ((fst κ) a) s

tactic: rw [snd_apply' _ _ hs, swapRight_apply', fst_apply' _ _ hs]
state_before: case h.h
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
δ : Type u_4
mδ : MeasurableSpace δ
γ : Type u_5
mγ : MeasurableSpace γ
f : β → γ
g : γ → α
κ : ↥(kernel α (β × γ))
a : α
s : Set β
hs : MeasurableSet s
⊢ ((snd (swapRight κ)) a) s = ((fst κ) a) s
state_after: case h.h
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
δ : Type u_4
mδ : MeasurableSpace δ
γ : Type u_5
mγ : MeasurableSpace γ
f : β → γ
g : γ → α
κ : ↥(kernel α (β × γ))
a : α
s : Set β
hs : MeasurableSet s
⊢ (κ a) {p | p.swap ∈ {p | p.2 ∈ s}} = (κ a) {p | p.1 ∈ s}

case h.h.hs
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
δ : Type u_4
mδ : MeasurableSpace δ
γ : Type u_5
mγ : MeasurableSpace γ
f : β → γ
g : γ → α
κ : ↥(kernel α (β × γ))
a : α
s : Set β
hs : MeasurableSet s
⊢ MeasurableSet {p | p.2 ∈ s}

tactic: rfl
state_before: case h.h
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
δ : Type u_4
mδ : MeasurableSpace δ
γ : Type u_5
mγ : MeasurableSpace γ
f : β → γ
g : γ → α
κ : ↥(kernel α (β × γ))
a : α
s : Set β
hs : MeasurableSet s
⊢ (κ a) {p | p.swap ∈ {p | p.2 ∈ s}} = (κ a) {p | p.1 ∈ s}
state_after: no goals

tactic: exact measurable_snd hs
state_before: case h.h.hs
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
δ : Type u_4
mδ : MeasurableSpace δ
γ : Type u_5
mγ : MeasurableSpace γ
f : β → γ
g : γ → α
κ : ↥(kernel α (β × γ))
a : α
s : Set β
hs : MeasurableSet s
⊢ MeasurableSet {p | p.2 ∈ s}
state_after: no goals
Theorem: BoundedContinuousFunction.norm_eq
File: Mathlib/Topology/ContinuousFunction/Bounded.lean

tactic: simp [norm_def, BoundedContinuousFunction.dist_eq]
state_before: F : Type u_1
α : Type u
β : Type v
γ : Type w
inst✝¹ : TopologicalSpace α
inst✝ : SeminormedAddCommGroup β
f✝ g : α →ᵇ β
x : α
C : ℝ
f : α →ᵇ β
⊢ ‖f‖ = sInf {C | 0 ≤ C ∧ ∀ (x : α), ‖f x‖ ≤ C}
state_after: no goals
Theorem: Diffeomorph.uniqueDiffOn_image
File: Mathlib/Geometry/Manifold/Diffeomorph.lean

tactic: simp only [← uniqueMDiffOn_iff_uniqueDiffOn, uniqueMDiffOn_image, hn]
state_before: 𝕜 : Type u_1
inst✝²⁰ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝¹⁹ : NormedAddCommGroup E
inst✝¹⁸ : NormedSpace 𝕜 E
E' : Type u_3
inst✝¹⁷ : NormedAddCommGroup E'
inst✝¹⁶ : NormedSpace 𝕜 E'
F : Type u_4
inst✝¹⁵ : NormedAddCommGroup F
inst✝¹⁴ : NormedSpace 𝕜 F
H : Type u_5
inst✝¹³ : TopologicalSpace H
H' : Type u_6
inst✝¹² : TopologicalSpace H'
G : Type u_7
inst✝¹¹ : TopologicalSpace G
G' : Type u_8
inst✝¹⁰ : TopologicalSpace G'
I : ModelWithCorners 𝕜 E H
I' : ModelWithCorners 𝕜 E' H'
J : ModelWithCorners 𝕜 F G
J' : ModelWithCorners 𝕜 F G'
M : Type u_9
inst✝⁹ : TopologicalSpace M
inst✝⁸ : ChartedSpace H M
M' : Type u_10
inst✝⁷ : TopologicalSpace M'
inst✝⁶ : ChartedSpace H' M'
N : Type u_11
inst✝⁵ : TopologicalSpace N
inst✝⁴ : ChartedSpace G N
N' : Type u_12
inst✝³ : TopologicalSpace N'
inst✝² : ChartedSpace G' N'
n : ℕ∞
inst✝¹ : SmoothManifoldWithCorners I M
inst✝ : SmoothManifoldWithCorners J N
h : E ≃ₘ^n⟮𝓘(𝕜, E), 𝓘(𝕜, F)⟯ F
hn : 1 ≤ n
s : Set E
⊢ UniqueDiffOn 𝕜 (⇑h '' s) ↔ UniqueDiffOn 𝕜 s
state_after: no goals
Theorem: krullDim_eq_zero_of_unique
File: Mathlib/Order/KrullDimension.lean

tactic: rw [krullDim_eq_length_of_finiteDimensionalOrder (α := α), Nat.cast_eq_zero]
state_before: α : Type u_1
β : Type u_2
inst✝² : Preorder α
inst✝¹ : Preorder β
inst✝ : Unique α
⊢ krullDim α = 0
state_after: α : Type u_1
β : Type u_2
inst✝² : Preorder α
inst✝¹ : Preorder β
inst✝ : Unique α
⊢ (LTSeries.longestOf α).length = 0

tactic: refine (LTSeries.longestOf_len_unique (default : LTSeries α) fun q ↦ show _ ≤ 0 from ?_).symm
state_before: α : Type u_1
β : Type u_2
inst✝² : Preorder α
inst✝¹ : Preorder β
inst✝ : Unique α
⊢ (LTSeries.longestOf α).length = 0
state_after: α : Type u_1
β : Type u_2
inst✝² : Preorder α
inst✝¹ : Preorder β
inst✝ : Unique α
q : LTSeries α
⊢ q.length ≤ 0

tactic: by_contra r
state_before: α : Type u_1
β : Type u_2
inst✝² : Preorder α
inst✝¹ : Preorder β
inst✝ : Unique α
q : LTSeries α
⊢ q.length ≤ 0
state_after: α : Type u_1
β : Type u_2
inst✝² : Preorder α
inst✝¹ : Preorder β
inst✝ : Unique α
q : LTSeries α
r : ¬q.length ≤ 0
⊢ False

tactic: exact ne_of_lt (q.step ⟨0, not_le.mp r⟩) <| Subsingleton.elim _ _
state_before: α : Type u_1
β : Type u_2
inst✝² : Preorder α
inst✝¹ : Preorder β
inst✝ : Unique α
q : LTSeries α
r : ¬q.length ≤ 0
⊢ False
state_after: no goals
Theorem: ONote.NF.below_of_lt
File: Mathlib/SetTheory/Ordinal/Notation.lean

tactic: (cases' h with _ _ _ _ eb _ h₁ h₂ h₃; exact NFBelow.oadd' h₁ h₂ H)
state_before: e : ONote
n : ℕ+
a : ONote
b : Ordinal.{0}
H : e.repr < b
b' : Ordinal.{0}
h : (e.oadd n a).NFBelow b'
⊢ (e.oadd n a).NFBelow b
state_after: no goals

tactic: cases' h with _ _ _ _ eb _ h₁ h₂ h₃
state_before: e : ONote
n : ℕ+
a : ONote
b : Ordinal.{0}
H : e.repr < b
b' : Ordinal.{0}
h : (e.oadd n a).NFBelow b'
⊢ (e.oadd n a).NFBelow b
state_after: case oadd'
e : ONote
n : ℕ+
a : ONote
b : Ordinal.{0}
H : e.repr < b
b' eb : Ordinal.{0}
h₁ : e.NFBelow eb
h₂ : a.NFBelow e.repr
h₃ : e.repr < b'
⊢ (e.oadd n a).NFBelow b

tactic: exact NFBelow.oadd' h₁ h₂ H
state_before: case oadd'
e : ONote
n : ℕ+
a : ONote
b : Ordinal.{0}
H : e.repr < b
b' eb : Ordinal.{0}
h₁ : e.NFBelow eb
h₂ : a.NFBelow e.repr
h₃ : e.repr < b'
⊢ (e.oadd n a).NFBelow b
state_after: no goals
Theorem: Polynomial.natDegree_toSubring
File: Mathlib/RingTheory/Polynomial/Basic.lean

tactic: simp [natDegree]
state_before: R : Type u
S : Type u_1
inst✝¹ : Ring R
inst✝ : Semiring S
f : R →+* S
x : S
p : R[X]
T : Subring R
hp : ↑p.coeffs ⊆ ↑T
⊢ (p.toSubring T hp).natDegree = p.natDegree
state_after: no goals
Theorem: ContinuousMap.mem_setOfIdeal
File: Mathlib/Topology/ContinuousFunction/Ideals.lean

tactic: simp_rw [setOfIdeal, Set.mem_compl_iff, Set.mem_setOf]
state_before: X : Type u_1
R : Type u_2
inst✝³ : TopologicalSpace X
inst✝² : Semiring R
inst✝¹ : TopologicalSpace R
inst✝ : TopologicalSemiring R
I : Ideal C(X, R)
x : X
⊢ x ∈ setOfIdeal I ↔ ∃ f ∈ I, f x ≠ 0
state_after: X : Type u_1
R : Type u_2
inst✝³ : TopologicalSpace X
inst✝² : Semiring R
inst✝¹ : TopologicalSpace R
inst✝ : TopologicalSemiring R
I : Ideal C(X, R)
x : X
⊢ (¬∀ f ∈ I, f x = 0) ↔ ∃ f ∈ I, f x ≠ 0

tactic: push_neg
state_before: X : Type u_1
R : Type u_2
inst✝³ : TopologicalSpace X
inst✝² : Semiring R
inst✝¹ : TopologicalSpace R
inst✝ : TopologicalSemiring R
I : Ideal C(X, R)
x : X
⊢ (¬∀ f ∈ I, f x = 0) ↔ ∃ f ∈ I, f x ≠ 0
state_after: X : Type u_1
R : Type u_2
inst✝³ : TopologicalSpace X
inst✝² : Semiring R
inst✝¹ : TopologicalSpace R
inst✝ : TopologicalSemiring R
I : Ideal C(X, R)
x : X
⊢ (∃ f ∈ I, f x ≠ 0) ↔ ∃ f ∈ I, f x ≠ 0

tactic: rfl
state_before: X : Type u_1
R : Type u_2
inst✝³ : TopologicalSpace X
inst✝² : Semiring R
inst✝¹ : TopologicalSpace R
inst✝ : TopologicalSemiring R
I : Ideal C(X, R)
x : X
⊢ (∃ f ∈ I, f x ≠ 0) ↔ ∃ f ∈ I, f x ≠ 0
state_after: no goals
Theorem: Int.eq_pow_of_mul_eq_pow_bit1_right
File: Mathlib/RingTheory/Int/Basic.lean

tactic: rwa [mul_comm] at h
state_before: a b c : ℤ
hab : IsCoprime a b
k : ℕ
h : a * b = c ^ bit1 k
⊢ b * a = ?m.13025 ^ bit1 k
state_after: no goals