1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: MeasureTheory.ae_restrict_biUnion_finset_iff
File: Mathlib/MeasureTheory/Measure/Restrict.lean

tactic: simp_rw [Filter.Eventually, ae_restrict_biUnion_finset_eq s, mem_iSup]
state_before: R : Type u_1
α : Type u_2
β : Type u_3
δ : Type u_4
γ : Type u_5
ι : Type u_6
m0 : MeasurableSpace α
inst✝¹ : MeasurableSpace β
inst✝ : MeasurableSpace γ
μ μ₁ μ₂ μ₃ ν ν' ν₁ ν₂ : Measure α
s✝ s' t✝ : Set α
s : ι → Set α
t : Finset ι
p : α → Prop
⊢ (∀ᵐ (x : α) ∂μ.restrict (⋃ i ∈ t, s i), p x) ↔ ∀ i ∈ t, ∀ᵐ (x : α) ∂μ.restrict (s i), p x
state_after: no goals
Theorem: Int.zpow_pred_clog_lt_self
File: Mathlib/Data/Int/Log.lean

tactic: rw [← neg_log_inv_eq_clog, ← neg_add', zpow_neg, inv_lt _ hr]
state_before: R : Type u_1
inst✝¹ : LinearOrderedSemifield R
inst✝ : FloorSemiring R
b : ℕ
r : R
hb : 1 < b
hr : 0 < r
⊢ ↑b ^ (clog b r - 1) < r
state_after: R : Type u_1
inst✝¹ : LinearOrderedSemifield R
inst✝ : FloorSemiring R
b : ℕ
r : R
hb : 1 < b
hr : 0 < r
⊢ r⁻¹ < ↑b ^ (log b r⁻¹ + 1)

R : Type u_1
inst✝¹ : LinearOrderedSemifield R
inst✝ : FloorSemiring R
b : ℕ
r : R
hb : 1 < b
hr : 0 < r
⊢ 0 < ↑b ^ (log b r⁻¹ + 1)

tactic: exact lt_zpow_succ_log_self hb _
state_before: R : Type u_1
inst✝¹ : LinearOrderedSemifield R
inst✝ : FloorSemiring R
b : ℕ
r : R
hb : 1 < b
hr : 0 < r
⊢ r⁻¹ < ↑b ^ (log b r⁻¹ + 1)
state_after: no goals

tactic: exact zpow_pos_of_pos (Nat.cast_pos.mpr <| zero_le_one.trans_lt hb) _
state_before: R : Type u_1
inst✝¹ : LinearOrderedSemifield R
inst✝ : FloorSemiring R
b : ℕ
r : R
hb : 1 < b
hr : 0 < r
⊢ 0 < ↑b ^ (log b r⁻¹ + 1)
state_after: no goals
Theorem: Turing.TM2to1.trStmts₁_run
File: Mathlib/Computability/TuringMachine.lean

tactic: cases s <;> simp only [trStmts₁]
state_before: K : Type u_1
inst✝² : DecidableEq K
Γ : K → Type u_2
Λ : Type u_3
inst✝¹ : Inhabited Λ
σ : Type u_4
inst✝ : Inhabited σ
k : K
s : StAct k
q : Stmt₂
⊢ trStmts₁ (stRun s q) = {go k s q, ret q} ∪ trStmts₁ q
state_after: no goals
Theorem: IsCompact.everywherePosSubset
File: Mathlib/MeasureTheory/Measure/EverywherePos.lean

tactic: rcases exists_isOpen_everywherePosSubset_eq_diff μ s with ⟨u, u_open, hu⟩
state_before: α : Type u_1
inst✝¹ : TopologicalSpace α
inst✝ : MeasurableSpace α
μ ν : Measure α
s k : Set α
hs : IsCompact s
⊢ IsCompact (μ.everywherePosSubset s)
state_after: case intro.intro
α : Type u_1
inst✝¹ : TopologicalSpace α
inst✝ : MeasurableSpace α
μ ν : Measure α
s k : Set α
hs : IsCompact s
u : Set α
u_open : IsOpen u
hu : μ.everywherePosSubset s = s \ u
⊢ IsCompact (μ.everywherePosSubset s)

tactic: rw [hu]
state_before: case intro.intro
α : Type u_1
inst✝¹ : TopologicalSpace α
inst✝ : MeasurableSpace α
μ ν : Measure α
s k : Set α
hs : IsCompact s
u : Set α
u_open : IsOpen u
hu : μ.everywherePosSubset s = s \ u
⊢ IsCompact (μ.everywherePosSubset s)
state_after: case intro.intro
α : Type u_1
inst✝¹ : TopologicalSpace α
inst✝ : MeasurableSpace α
μ ν : Measure α
s k : Set α
hs : IsCompact s
u : Set α
u_open : IsOpen u
hu : μ.everywherePosSubset s = s \ u
⊢ IsCompact (s \ u)

tactic: exact hs.diff u_open
state_before: case intro.intro
α : Type u_1
inst✝¹ : TopologicalSpace α
inst✝ : MeasurableSpace α
μ ν : Measure α
s k : Set α
hs : IsCompact s
u : Set α
u_open : IsOpen u
hu : μ.everywherePosSubset s = s \ u
⊢ IsCompact (s \ u)
state_after: no goals
Theorem: CochainComplex.HomComplex.Cochain.leftShift_units_smul
File: Mathlib/Algebra/Homology/HomotopyCategory/HomComplexShift.lean

tactic: apply leftShift_smul
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
R : Type u_1
inst✝¹ : Ring R
inst✝ : Linear R C
K L M : CochainComplex C ℤ
n : ℤ
γ γ₁ γ₂ : Cochain K L n
a n' : ℤ
hn' : n + a = n'
x : Rˣ
⊢ (x • γ).leftShift a n' hn' = x • γ.leftShift a n' hn'
state_after: no goals
Theorem: Real.le_sSup_iff
File: Mathlib/Data/Real/Archimedean.lean

tactic: rw [le_iff_forall_pos_lt_add]
state_before: s : Set ℝ
h : BddAbove s
h' : s.Nonempty
a : ℝ
⊢ a ≤ sSup s ↔ ∀ ε < 0, ∃ x ∈ s, a + ε < x
state_after: s : Set ℝ
h : BddAbove s
h' : s.Nonempty
a : ℝ
⊢ (∀ (ε : ℝ), 0 < ε → a < sSup s + ε) ↔ ∀ ε < 0, ∃ x ∈ s, a + ε < x

tactic: refine ⟨fun H ε ε_neg => ?_, fun H ε ε_pos => ?_⟩
state_before: s : Set ℝ
h : BddAbove s
h' : s.Nonempty
a : ℝ
⊢ (∀ (ε : ℝ), 0 < ε → a < sSup s + ε) ↔ ∀ ε < 0, ∃ x ∈ s, a + ε < x
state_after: case refine_1
s : Set ℝ
h : BddAbove s
h' : s.Nonempty
a : ℝ
H : ∀ (ε : ℝ), 0 < ε → a < sSup s + ε
ε : ℝ
ε_neg : ε < 0
⊢ ∃ x ∈ s, a + ε < x

case refine_2
s : Set ℝ
h : BddAbove s
h' : s.Nonempty
a : ℝ
H : ∀ ε < 0, ∃ x ∈ s, a + ε < x
ε : ℝ
ε_pos : 0 < ε
⊢ a < sSup s + ε

tactic: exact exists_lt_of_lt_csSup h' (lt_sub_iff_add_lt.mp (H _ (neg_pos.mpr ε_neg)))
state_before: case refine_1
s : Set ℝ
h : BddAbove s
h' : s.Nonempty
a : ℝ
H : ∀ (ε : ℝ), 0 < ε → a < sSup s + ε
ε : ℝ
ε_neg : ε < 0
⊢ ∃ x ∈ s, a + ε < x
state_after: no goals

tactic: rcases H _ (neg_lt_zero.mpr ε_pos) with ⟨x, x_in, hx⟩
state_before: case refine_2
s : Set ℝ
h : BddAbove s
h' : s.Nonempty
a : ℝ
H : ∀ ε < 0, ∃ x ∈ s, a + ε < x
ε : ℝ
ε_pos : 0 < ε
⊢ a < sSup s + ε
state_after: case refine_2.intro.intro
s : Set ℝ
h : BddAbove s
h' : s.Nonempty
a : ℝ
H : ∀ ε < 0, ∃ x ∈ s, a + ε < x
ε : ℝ
ε_pos : 0 < ε
x : ℝ
x_in : x ∈ s
hx : a + -ε < x
⊢ a < sSup s + ε

tactic: exact sub_lt_iff_lt_add.mp (lt_csSup_of_lt h x_in hx)
state_before: case refine_2.intro.intro
s : Set ℝ
h : BddAbove s
h' : s.Nonempty
a : ℝ
H : ∀ ε < 0, ∃ x ∈ s, a + ε < x
ε : ℝ
ε_pos : 0 < ε
x : ℝ
x_in : x ∈ s
hx : a + -ε < x
⊢ a < sSup s + ε
state_after: no goals
Theorem: Filter.rtendsto_iff_le_rcomap
File: Mathlib/Order/Filter/Partial.lean

tactic: rw [rtendsto_def]
state_before: α : Type u
β : Type v
γ : Type w
r : Rel α β
l₁ : Filter α
l₂ : Filter β
⊢ RTendsto r l₁ l₂ ↔ l₁ ≤ rcomap r l₂
state_after: α : Type u
β : Type v
γ : Type w
r : Rel α β
l₁ : Filter α
l₂ : Filter β
⊢ (∀ s ∈ l₂, r.core s ∈ l₁) ↔ l₁ ≤ rcomap r l₂

tactic: simp_rw [← l₂.mem_sets]
state_before: α : Type u
β : Type v
γ : Type w
r : Rel α β
l₁ : Filter α
l₂ : Filter β
⊢ (∀ s ∈ l₂, r.core s ∈ l₁) ↔ l₁ ≤ rcomap r l₂
state_after: α : Type u
β : Type v
γ : Type w
r : Rel α β
l₁ : Filter α
l₂ : Filter β
⊢ (∀ s ∈ l₂.sets, r.core s ∈ l₁) ↔ l₁ ≤ rcomap r l₂

tactic: simp [Filter.le_def, rcomap, Rel.mem_image]
state_before: α : Type u
β : Type v
γ : Type w
r : Rel α β
l₁ : Filter α
l₂ : Filter β
⊢ (∀ s ∈ l₂.sets, r.core s ∈ l₁) ↔ l₁ ≤ rcomap r l₂
state_after: α : Type u
β : Type v
γ : Type w
r : Rel α β
l₁ : Filter α
l₂ : Filter β
⊢ (∀ s ∈ l₂, r.core s ∈ l₁) ↔ ∀ (x : Set α), ∀ x_1 ∈ l₂, r.core x_1 ⊆ x → x ∈ l₁

tactic: constructor
state_before: α : Type u
β : Type v
γ : Type w
r : Rel α β
l₁ : Filter α
l₂ : Filter β
⊢ (∀ s ∈ l₂, r.core s ∈ l₁) ↔ ∀ (x : Set α), ∀ x_1 ∈ l₂, r.core x_1 ⊆ x → x ∈ l₁
state_after: case mp
α : Type u
β : Type v
γ : Type w
r : Rel α β
l₁ : Filter α
l₂ : Filter β
⊢ (∀ s ∈ l₂, r.core s ∈ l₁) → ∀ (x : Set α), ∀ x_1 ∈ l₂, r.core x_1 ⊆ x → x ∈ l₁

case mpr
α : Type u
β : Type v
γ : Type w
r : Rel α β
l₁ : Filter α
l₂ : Filter β
⊢ (∀ (x : Set α), ∀ x_1 ∈ l₂, r.core x_1 ⊆ x → x ∈ l₁) → ∀ s ∈ l₂, r.core s ∈ l₁

tactic: exact fun h s t tl₂ => mem_of_superset (h t tl₂)
state_before: case mp
α : Type u
β : Type v
γ : Type w
r : Rel α β
l₁ : Filter α
l₂ : Filter β
⊢ (∀ s ∈ l₂, r.core s ∈ l₁) → ∀ (x : Set α), ∀ x_1 ∈ l₂, r.core x_1 ⊆ x → x ∈ l₁
state_after: no goals

tactic: exact fun h t tl₂ => h _ t tl₂ Set.Subset.rfl
state_before: case mpr
α : Type u
β : Type v
γ : Type w
r : Rel α β
l₁ : Filter α
l₂ : Filter β
⊢ (∀ (x : Set α), ∀ x_1 ∈ l₂, r.core x_1 ⊆ x → x ∈ l₁) → ∀ s ∈ l₂, r.core s ∈ l₁
state_after: no goals
Theorem: quotient_norm_mk_eq
File: Mathlib/Analysis/Normed/Group/Quotient.lean

tactic: rw [mk'_apply, norm_mk, sInf_image', ← infDist_image isometry_neg, image_neg,
  neg_coe_set (H := S), infDist_eq_iInf]
state_before: M : Type u_1
N : Type u_2
inst✝¹ : SeminormedAddCommGroup M
inst✝ : SeminormedAddCommGroup N
S : AddSubgroup M
m : M
⊢ ‖(mk' S) m‖ = sInf ((fun x => ‖m + x‖) '' ↑S)
state_after: M : Type u_1
N : Type u_2
inst✝¹ : SeminormedAddCommGroup M
inst✝ : SeminormedAddCommGroup N
S : AddSubgroup M
m : M
⊢ ⨅ y, dist (-m) ↑y = ⨅ a, ‖m + ↑a‖

tactic: simp only [dist_eq_norm', sub_neg_eq_add, add_comm]
state_before: M : Type u_1
N : Type u_2
inst✝¹ : SeminormedAddCommGroup M
inst✝ : SeminormedAddCommGroup N
S : AddSubgroup M
m : M
⊢ ⨅ y, dist (-m) ↑y = ⨅ a, ‖m + ↑a‖
state_after: no goals
Theorem: WeierstrassCurve.ΨSq_one
File: Mathlib/AlgebraicGeometry/EllipticCurve/DivisionPolynomial/Basic.lean

tactic: erw [ΨSq_ofNat, preΨ'_one, one_pow, mul_one]
state_before: R : Type r
S : Type s
inst✝¹ : CommRing R
inst✝ : CommRing S
W : WeierstrassCurve R
⊢ W.ΨSq 1 = 1
state_after: no goals
Theorem: NumberField.InfinitePlace.eq_iff_eq
File: Mathlib/NumberTheory/NumberField/Embeddings.lean

tactic: rintro hφ ⟨w, ⟨φ, rfl⟩⟩
state_before: k : Type u_1
inst✝² : Field k
K : Type u_2
inst✝¹ : Field K
F : Type u_3
inst✝ : Field F
x : K
r : ℝ
⊢ (∀ (φ : K →+* ℂ), ‖φ x‖ = r) → ∀ (w : InfinitePlace K), w x = r
state_after: case mk.intro
k : Type u_1
inst✝² : Field k
K : Type u_2
inst✝¹ : Field K
F : Type u_3
inst✝ : Field F
x : K
r : ℝ
hφ : ∀ (φ : K →+* ℂ), ‖φ x‖ = r
φ : K →+* ℂ
⊢ ⟨place φ, ⋯⟩ x = r

tactic: exact hφ φ
state_before: case mk.intro
k : Type u_1
inst✝² : Field k
K : Type u_2
inst✝¹ : Field K
F : Type u_3
inst✝ : Field F
x : K
r : ℝ
hφ : ∀ (φ : K →+* ℂ), ‖φ x‖ = r
φ : K →+* ℂ
⊢ ⟨place φ, ⋯⟩ x = r
state_after: no goals
Theorem: PartialEquiv.source_inter_preimage_inv_preimage
File: Mathlib/Logic/Equiv/PartialEquiv.lean

tactic: simp only [mem_preimage, e.left_inv hx]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
e : PartialEquiv α β
e' : PartialEquiv β γ
s : Set α
x : α
hx : x ∈ e.source
⊢ x ∈ ↑e ⁻¹' (↑e.symm ⁻¹' s) ↔ x ∈ s
state_after: no goals
Theorem: List.Sublist.eraseP
File: .lake/packages/batteries/Batteries/Data/List/Lemmas.lean

tactic: by_cases h : p a <;> simp [h]
state_before: α✝ : Type u_1
l₁✝ l₂ : List α✝
p : α✝ → Bool
l₁ l₂✝ : List α✝
a : α✝
s : l₁ <+ l₂✝
⊢ eraseP p l₁ <+ eraseP p (a :: l₂✝)
state_after: case pos
α✝ : Type u_1
l₁✝ l₂ : List α✝
p : α✝ → Bool
l₁ l₂✝ : List α✝
a : α✝
s : l₁ <+ l₂✝
h : p a = true
⊢ eraseP p l₁ <+ l₂✝

case neg
α✝ : Type u_1
l₁✝ l₂ : List α✝
p : α✝ → Bool
l₁ l₂✝ : List α✝
a : α✝
s : l₁ <+ l₂✝
h : ¬p a = true
⊢ eraseP p l₁ <+ a :: eraseP p l₂✝

tactic: exacts [s.eraseP.trans (eraseP_sublist _), s.eraseP.cons _]
state_before: case pos
α✝ : Type u_1
l₁✝ l₂ : List α✝
p : α✝ → Bool
l₁ l₂✝ : List α✝
a : α✝
s : l₁ <+ l₂✝
h : p a = true
⊢ eraseP p l₁ <+ l₂✝

case neg
α✝ : Type u_1
l₁✝ l₂ : List α✝
p : α✝ → Bool
l₁ l₂✝ : List α✝
a : α✝
s : l₁ <+ l₂✝
h : ¬p a = true
⊢ eraseP p l₁ <+ a :: eraseP p l₂✝
state_after: no goals

tactic: by_cases h : p a <;> simp [h]
state_before: α✝ : Type u_1
l₁ l₂ : List α✝
p : α✝ → Bool
l₁✝ l₂✝ : List α✝
a : α✝
s : l₁✝ <+ l₂✝
⊢ eraseP p (a :: l₁✝) <+ eraseP p (a :: l₂✝)
state_after: case pos
α✝ : Type u_1
l₁ l₂ : List α✝
p : α✝ → Bool
l₁✝ l₂✝ : List α✝
a : α✝
s : l₁✝ <+ l₂✝
h : p a = true
⊢ l₁✝ <+ l₂✝

case neg
α✝ : Type u_1
l₁ l₂ : List α✝
p : α✝ → Bool
l₁✝ l₂✝ : List α✝
a : α✝
s : l₁✝ <+ l₂✝
h : ¬p a = true
⊢ eraseP p l₁✝ <+ eraseP p l₂✝

tactic: exacts [s, s.eraseP]
state_before: case pos
α✝ : Type u_1
l₁ l₂ : List α✝
p : α✝ → Bool
l₁✝ l₂✝ : List α✝
a : α✝
s : l₁✝ <+ l₂✝
h : p a = true
⊢ l₁✝ <+ l₂✝

case neg
α✝ : Type u_1
l₁ l₂ : List α✝
p : α✝ → Bool
l₁✝ l₂✝ : List α✝
a : α✝
s : l₁✝ <+ l₂✝
h : ¬p a = true
⊢ eraseP p l₁✝ <+ eraseP p l₂✝
state_after: no goals
Theorem: AddCommGroup.natCast_modEq_natCast
File: Mathlib/Algebra/ModEq.lean

tactic: simp_rw [← Int.natCast_modEq_iff, ← modEq_iff_int_modEq, ← @intCast_modEq_intCast α,
  Int.cast_natCast]
state_before: α : Type u_1
inst✝¹ : AddCommGroupWithOne α
inst✝ : CharZero α
a b n : ℕ
⊢ ↑a ≡ ↑b [PMOD ↑n] ↔ a ≡ b [MOD n]
state_after: no goals
Theorem: Multiset.disjoint_toFinset
File: Mathlib/Data/Finset/Basic.lean

tactic: rw [Finset.disjoint_iff_ne]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
m1 m2 : Multiset α
⊢ _root_.Disjoint m1.toFinset m2.toFinset ↔ m1.Disjoint m2
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
m1 m2 : Multiset α
⊢ (∀ a ∈ m1.toFinset, ∀ b ∈ m2.toFinset, a ≠ b) ↔ m1.Disjoint m2

tactic: refine ⟨fun h a ha1 ha2 => ?_, ?_⟩
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
m1 m2 : Multiset α
⊢ (∀ a ∈ m1.toFinset, ∀ b ∈ m2.toFinset, a ≠ b) ↔ m1.Disjoint m2
state_after: case refine_1
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
m1 m2 : Multiset α
h : ∀ a ∈ m1.toFinset, ∀ b ∈ m2.toFinset, a ≠ b
a : α
ha1 : a ∈ m1
ha2 : a ∈ m2
⊢ False

case refine_2
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
m1 m2 : Multiset α
⊢ m1.Disjoint m2 → ∀ a ∈ m1.toFinset, ∀ b ∈ m2.toFinset, a ≠ b

tactic: rw [← Multiset.mem_toFinset] at ha1 ha2
state_before: case refine_1
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
m1 m2 : Multiset α
h : ∀ a ∈ m1.toFinset, ∀ b ∈ m2.toFinset, a ≠ b
a : α
ha1 : a ∈ m1
ha2 : a ∈ m2
⊢ False
state_after: case refine_1
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
m1 m2 : Multiset α
h : ∀ a ∈ m1.toFinset, ∀ b ∈ m2.toFinset, a ≠ b
a : α
ha1 : a ∈ m1.toFinset
ha2 : a ∈ m2.toFinset
⊢ False

tactic: exact h _ ha1 _ ha2 rfl
state_before: case refine_1
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
m1 m2 : Multiset α
h : ∀ a ∈ m1.toFinset, ∀ b ∈ m2.toFinset, a ≠ b
a : α
ha1 : a ∈ m1.toFinset
ha2 : a ∈ m2.toFinset
⊢ False
state_after: no goals

tactic: rintro h a ha b hb rfl
state_before: case refine_2
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
m1 m2 : Multiset α
⊢ m1.Disjoint m2 → ∀ a ∈ m1.toFinset, ∀ b ∈ m2.toFinset, a ≠ b
state_after: case refine_2
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
m1 m2 : Multiset α
h : m1.Disjoint m2
a : α
ha : a ∈ m1.toFinset
hb : a ∈ m2.toFinset
⊢ False

tactic: rw [Multiset.mem_toFinset] at ha hb
state_before: case refine_2
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
m1 m2 : Multiset α
h : m1.Disjoint m2
a : α
ha : a ∈ m1.toFinset
hb : a ∈ m2.toFinset
⊢ False
state_after: case refine_2
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
m1 m2 : Multiset α
h : m1.Disjoint m2
a : α
ha : a ∈ m1
hb : a ∈ m2
⊢ False

tactic: exact h ha hb
state_before: case refine_2
α : Type u_1
β : Type u_2
γ : Type u_3
inst✝ : DecidableEq α
m1 m2 : Multiset α
h : m1.Disjoint m2
a : α
ha : a ∈ m1
hb : a ∈ m2
⊢ False
state_after: no goals
Theorem: PrimeSpectrum.zeroLocus_subset_zeroLocus_singleton_iff
File: Mathlib/AlgebraicGeometry/PrimeSpectrum/Basic.lean

tactic: rw [← zeroLocus_span {f}, ← zeroLocus_span {g}, zeroLocus_subset_zeroLocus_iff, Ideal.span_le,
  Set.singleton_subset_iff, SetLike.mem_coe]
state_before: R : Type u
S : Type v
inst✝¹ : CommSemiring R
inst✝ : CommSemiring S
f g : R
⊢ zeroLocus {f} ⊆ zeroLocus {g} ↔ g ∈ (Ideal.span {f}).radical
state_after: no goals
Theorem: Set.Icc.abs_sub_addNSMul_le
File: Mathlib/Topology/UnitInterval.lean

tactic: exact ht.2
state_before: α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
a b c d : α
h : a ≤ b
δ : α
hδ : 0 ≤ δ
t : ↑(Icc a b)
n : ℕ
ht : t ∈ Icc (addNSMul h δ n) (addNSMul h δ (n + 1))
⊢ (fun a_1 => ↑a_1) t ≤ ↑(projIcc a b h ?m.52983)
state_after: no goals

tactic: rw [add_sub_add_comm, sub_self, zero_add, succ_nsmul', add_sub_cancel_right]
state_before: α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
a b c d : α
h : a ≤ b
δ : α
hδ : 0 ≤ δ
t : ↑(Icc a b)
n : ℕ
ht : t ∈ Icc (addNSMul h δ n) (addNSMul h δ (n + 1))
⊢ |a + (n + 1) • δ - (a + n • δ)| ≤ δ
state_after: α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
a b c d : α
h : a ≤ b
δ : α
hδ : 0 ≤ δ
t : ↑(Icc a b)
n : ℕ
ht : t ∈ Icc (addNSMul h δ n) (addNSMul h δ (n + 1))
⊢ |δ| ≤ δ

tactic: exact (abs_eq_self.mpr hδ).le
state_before: α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
a b c d : α
h : a ≤ b
δ : α
hδ : 0 ≤ δ
t : ↑(Icc a b)
n : ℕ
ht : t ∈ Icc (addNSMul h δ n) (addNSMul h δ (n + 1))
⊢ |δ| ≤ δ
state_after: no goals
Theorem: Nat.add_factorial_lt_factorial_add
File: Mathlib/Data/Nat/Factorial/Basic.lean

tactic: cases hn
state_before: m n✝ i n : ℕ
hi : 2 ≤ i
hn : 1 ≤ n
⊢ i + n ! < (i + n)!
state_after: case refl
m n i : ℕ
hi : 2 ≤ i
⊢ i + 1! < (i + 1)!

case step
m n i : ℕ
hi : 2 ≤ i
m✝ : ℕ
a✝ : Nat.le 1 m✝
⊢ i + m✝.succ ! < (i + m✝.succ)!

tactic: exact add_factorial_succ_lt_factorial_add_succ _ hi
state_before: case step
m n i : ℕ
hi : 2 ≤ i
m✝ : ℕ
a✝ : Nat.le 1 m✝
⊢ i + m✝.succ ! < (i + m✝.succ)!
state_after: no goals

tactic: rw [factorial_one]
state_before: case refl
m n i : ℕ
hi : 2 ≤ i
⊢ i + 1! < (i + 1)!
state_after: case refl
m n i : ℕ
hi : 2 ≤ i
⊢ i + 1 < (i + 1)!

tactic: exact lt_factorial_self (succ_le_succ hi)
state_before: case refl
m n i : ℕ
hi : 2 ≤ i
⊢ i + 1 < (i + 1)!
state_after: no goals
Theorem: LieHom.isIdealMorphism_of_surjective
File: Mathlib/Algebra/Lie/Submodule.lean

tactic: rw [isIdealMorphism_def, f.idealRange_eq_top_of_surjective h, f.range_eq_top.mpr h,
  LieIdeal.top_coe_lieSubalgebra]
state_before: R : Type u
L : Type v
L' : Type w₂
M : Type w
M' : Type w₁
inst✝¹² : CommRing R
inst✝¹¹ : LieRing L
inst✝¹⁰ : LieAlgebra R L
inst✝⁹ : LieRing L'
inst✝⁸ : LieAlgebra R L'
inst✝⁷ : AddCommGroup M
inst✝⁶ : Module R M
inst✝⁵ : LieRingModule L M
inst✝⁴ : LieModule R L M
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
inst✝¹ : LieRingModule L M'
inst✝ : LieModule R L M'
f : L →ₗ⁅R⁆ L'
I : LieIdeal R L
J : LieIdeal R L'
h : Function.Surjective ⇑f
⊢ f.IsIdealMorphism
state_after: no goals
Theorem: Fin.le_pred_iff
File: Mathlib/Data/Fin/Basic.lean

tactic: rw [← succ_le_succ_iff, succ_pred]
state_before: n m : ℕ
j : Fin n
i : Fin (n + 1)
hi : i ≠ 0
⊢ j ≤ i.pred hi ↔ j.succ ≤ i
state_after: no goals
Theorem: UniqueFactorizationMonoid.normalizedFactors_pow
File: Mathlib/RingTheory/UniqueFactorizationDomain.lean

tactic: induction' n with n ih
state_before: α : Type u_1
inst✝² : CancelCommMonoidWithZero α
inst✝¹ : NormalizationMonoid α
inst✝ : UniqueFactorizationMonoid α
x : α
n : ℕ
⊢ normalizedFactors (x ^ n) = n • normalizedFactors x
state_after: case zero
α : Type u_1
inst✝² : CancelCommMonoidWithZero α
inst✝¹ : NormalizationMonoid α
inst✝ : UniqueFactorizationMonoid α
x : α
⊢ normalizedFactors (x ^ 0) = 0 • normalizedFactors x

case succ
α : Type u_1
inst✝² : CancelCommMonoidWithZero α
inst✝¹ : NormalizationMonoid α
inst✝ : UniqueFactorizationMonoid α
x : α
n : ℕ
ih : normalizedFactors (x ^ n) = n • normalizedFactors x
⊢ normalizedFactors (x ^ (n + 1)) = (n + 1) • normalizedFactors x

tactic: by_cases h0 : x = 0
state_before: case succ
α : Type u_1
inst✝² : CancelCommMonoidWithZero α
inst✝¹ : NormalizationMonoid α
inst✝ : UniqueFactorizationMonoid α
x : α
n : ℕ
ih : normalizedFactors (x ^ n) = n • normalizedFactors x
⊢ normalizedFactors (x ^ (n + 1)) = (n + 1) • normalizedFactors x
state_after: case pos
α : Type u_1
inst✝² : CancelCommMonoidWithZero α
inst✝¹ : NormalizationMonoid α
inst✝ : UniqueFactorizationMonoid α
x : α
n : ℕ
ih : normalizedFactors (x ^ n) = n • normalizedFactors x
h0 : x = 0
⊢ normalizedFactors (x ^ (n + 1)) = (n + 1) • normalizedFactors x

case neg
α : Type u_1
inst✝² : CancelCommMonoidWithZero α
inst✝¹ : NormalizationMonoid α
inst✝ : UniqueFactorizationMonoid α
x : α
n : ℕ
ih : normalizedFactors (x ^ n) = n • normalizedFactors x
h0 : ¬x = 0
⊢ normalizedFactors (x ^ (n + 1)) = (n + 1) • normalizedFactors x

tactic: rw [pow_succ', succ_nsmul', normalizedFactors_mul h0 (pow_ne_zero _ h0), ih]
state_before: case neg
α : Type u_1
inst✝² : CancelCommMonoidWithZero α
inst✝¹ : NormalizationMonoid α
inst✝ : UniqueFactorizationMonoid α
x : α
n : ℕ
ih : normalizedFactors (x ^ n) = n • normalizedFactors x
h0 : ¬x = 0
⊢ normalizedFactors (x ^ (n + 1)) = (n + 1) • normalizedFactors x
state_after: no goals

tactic: simp
state_before: case zero
α : Type u_1
inst✝² : CancelCommMonoidWithZero α
inst✝¹ : NormalizationMonoid α
inst✝ : UniqueFactorizationMonoid α
x : α
⊢ normalizedFactors (x ^ 0) = 0 • normalizedFactors x
state_after: no goals

tactic: simp [h0, zero_pow n.succ_ne_zero, smul_zero]
state_before: case pos
α : Type u_1
inst✝² : CancelCommMonoidWithZero α
inst✝¹ : NormalizationMonoid α
inst✝ : UniqueFactorizationMonoid α
x : α
n : ℕ
ih : normalizedFactors (x ^ n) = n • normalizedFactors x
h0 : x = 0
⊢ normalizedFactors (x ^ (n + 1)) = (n + 1) • normalizedFactors x
state_after: no goals
Theorem: Nat.multichoose_zero_right
File: Mathlib/Data/Nat/Choose/Basic.lean

tactic: cases n <;> simp [multichoose]
state_before: n : ℕ
⊢ n.multichoose 0 = 1
state_after: no goals
Theorem: Finset.Nat.antidiagonal_eq_map'
File: Mathlib/Data/Finset/NatAntidiagonal.lean

tactic: rw [← map_swap_antidiagonal, antidiagonal_eq_map, map_map]
state_before: n : ℕ
⊢ antidiagonal n = map { toFun := fun i => (n - i, i), inj' := ⋯ } (range (n + 1))
state_after: n : ℕ
⊢ map ({ toFun := fun i => (i, n - i), inj' := ⋯ }.trans { toFun := Prod.swap, inj' := ⋯ }) (range (n + 1)) =
    map { toFun := fun i => (n - i, i), inj' := ⋯ } (range (n + 1))

tactic: rfl
state_before: n : ℕ
⊢ map ({ toFun := fun i => (i, n - i), inj' := ⋯ }.trans { toFun := Prod.swap, inj' := ⋯ }) (range (n + 1)) =
    map { toFun := fun i => (n - i, i), inj' := ⋯ } (range (n + 1))
state_after: no goals
Theorem: IsCoprime.vecMulSL
File: Mathlib/LinearAlgebra/Matrix/SpecialLinearGroup.lean

tactic: obtain ⟨g, hg⟩ := hab.exists_SL2_row 0
state_before: R : Type u_1
inst✝ : CommRing R
v : Fin 2 → R
hab : IsCoprime (v 0) (v 1)
A : SL(2, R)
⊢ IsCoprime ((v ᵥ* ↑A) 0) ((v ᵥ* ↑A) 1)
state_after: case intro
R : Type u_1
inst✝ : CommRing R
v : Fin 2 → R
hab : IsCoprime (v 0) (v 1)
A g : SL(2, R)
hg : ↑g 0 0 = v 0 ∧ ↑g 0 1 = v 1
⊢ IsCoprime ((v ᵥ* ↑A) 0) ((v ᵥ* ↑A) 1)

tactic: have : v = g 0 := funext fun t ↦ by { fin_cases t <;> tauto }
state_before: case intro
R : Type u_1
inst✝ : CommRing R
v : Fin 2 → R
hab : IsCoprime (v 0) (v 1)
A g : SL(2, R)
hg : ↑g 0 0 = v 0 ∧ ↑g 0 1 = v 1
⊢ IsCoprime ((v ᵥ* ↑A) 0) ((v ᵥ* ↑A) 1)
state_after: case intro
R : Type u_1
inst✝ : CommRing R
v : Fin 2 → R
hab : IsCoprime (v 0) (v 1)
A g : SL(2, R)
hg : ↑g 0 0 = v 0 ∧ ↑g 0 1 = v 1
this : v = ↑g 0
⊢ IsCoprime ((v ᵥ* ↑A) 0) ((v ᵥ* ↑A) 1)

tactic: simpa only [this] using isCoprime_row (g * A) 0
state_before: case intro
R : Type u_1
inst✝ : CommRing R
v : Fin 2 → R
hab : IsCoprime (v 0) (v 1)
A g : SL(2, R)
hg : ↑g 0 0 = v 0 ∧ ↑g 0 1 = v 1
this : v = ↑g 0
⊢ IsCoprime ((v ᵥ* ↑A) 0) ((v ᵥ* ↑A) 1)
state_after: no goals

tactic: fin_cases t <;> tauto
state_before: R : Type u_1
inst✝ : CommRing R
v : Fin 2 → R
hab : IsCoprime (v 0) (v 1)
A g : SL(2, R)
hg : ↑g 0 0 = v 0 ∧ ↑g 0 1 = v 1
t : Fin 2
⊢ v t = ↑g 0 t
state_after: no goals
Theorem: exists_maximal_of_chains_bounded
File: Mathlib/Order/Zorn.lean

tactic: rw [maxChain_spec.right this (subset_insert _ _)]
state_before: α : Type u_1
β : Type u_2
r : α → α → Prop
c : Set α
h : ∀ (c : Set α), IsChain r c → ∃ ub, ∀ a ∈ c, r a ub
trans : ∀ {a b c : α}, r a b → r b c → r a c
this✝ : ∃ ub, ∀ a ∈ maxChain r, r a ub
ub : α
hub : ∀ a ∈ maxChain r, r a ub
a : α
ha : r ub a
this : IsChain r (insert a (maxChain r))
⊢ a ∈ maxChain r
state_after: α : Type u_1
β : Type u_2
r : α → α → Prop
c : Set α
h : ∀ (c : Set α), IsChain r c → ∃ ub, ∀ a ∈ c, r a ub
trans : ∀ {a b c : α}, r a b → r b c → r a c
this✝ : ∃ ub, ∀ a ∈ maxChain r, r a ub
ub : α
hub : ∀ a ∈ maxChain r, r a ub
a : α
ha : r ub a
this : IsChain r (insert a (maxChain r))
⊢ a ∈ insert a (maxChain r)

tactic: exact mem_insert _ _
state_before: α : Type u_1
β : Type u_2
r : α → α → Prop
c : Set α
h : ∀ (c : Set α), IsChain r c → ∃ ub, ∀ a ∈ c, r a ub
trans : ∀ {a b c : α}, r a b → r b c → r a c
this✝ : ∃ ub, ∀ a ∈ maxChain r, r a ub
ub : α
hub : ∀ a ∈ maxChain r, r a ub
a : α
ha : r ub a
this : IsChain r (insert a (maxChain r))
⊢ a ∈ insert a (maxChain r)
state_after: no goals
Theorem: Set.insert_inter_of_mem
File: Mathlib/Data/Set/Basic.lean

tactic: rw [insert_inter_distrib, insert_eq_of_mem h]
state_before: α : Type u
β : Type v
γ : Type w
ι : Sort x
a b : α
s s₁ s₂ t t₁ t₂ u : Set α
h : a ∈ t
⊢ insert a s ∩ t = insert a (s ∩ t)
state_after: no goals
Theorem: Polynomial.Chebyshev.T_neg_one
File: Mathlib/RingTheory/Polynomial/Chebyshev.lean

tactic: ring
state_before: R : Type u_1
S : Type u_2
inst✝¹ : CommRing R
inst✝ : CommRing S
⊢ 2 * X * 1 - X = X
state_after: no goals