1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Finset.sum_condensed_le'
File: Mathlib/Analysis/PSeries.lean

tactic: convert sum_schlomilch_le' hf (fun n => pow_pos zero_lt_two n)
  (fun m n hm => pow_le_pow_right one_le_two hm) n using 2
state_before: M : Type u_1
inst✝ : OrderedAddCommMonoid M
f : ℕ → M
u : ℕ → ℕ
hf : ∀ ⦃m n : ℕ⦄, 1 < m → m ≤ n → f n ≤ f m
n : ℕ
⊢ ∑ k ∈ range n, 2 ^ k • f (2 ^ (k + 1)) ≤ ∑ k ∈ Ico 2 (2 ^ n + 1), f k
state_after: case h.e'_3.a
M : Type u_1
inst✝ : OrderedAddCommMonoid M
f : ℕ → M
u : ℕ → ℕ
hf : ∀ ⦃m n : ℕ⦄, 1 < m → m ≤ n → f n ≤ f m
n x✝ : ℕ
a✝ : x✝ ∈ range n
⊢ 2 ^ x✝ • f (2 ^ (x✝ + 1)) = (2 ^ (x✝ + 1) - 2 ^ x✝) • f (2 ^ (x✝ + 1))

tactic: simp [pow_succ, mul_two, two_mul]
state_before: case h.e'_3.a
M : Type u_1
inst✝ : OrderedAddCommMonoid M
f : ℕ → M
u : ℕ → ℕ
hf : ∀ ⦃m n : ℕ⦄, 1 < m → m ≤ n → f n ≤ f m
n x✝ : ℕ
a✝ : x✝ ∈ range n
⊢ 2 ^ x✝ • f (2 ^ (x✝ + 1)) = (2 ^ (x✝ + 1) - 2 ^ x✝) • f (2 ^ (x✝ + 1))
state_after: no goals
Theorem: Subgroup.mem_rightTransversals_iff_existsUnique_quotient_mk''_eq
File: Mathlib/GroupTheory/Complement.lean

tactic: simp_rw [mem_rightTransversals_iff_existsUnique_mul_inv_mem, SetLike.mem_coe, ←
  QuotientGroup.rightRel_apply, ← Quotient.eq'']
state_before: G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
⊢ S ∈ rightTransversals ↑H ↔ ∀ (q : Quotient (QuotientGroup.rightRel H)), ∃! s, Quotient.mk'' ↑s = q
state_after: G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
⊢ (∀ (g : G), ∃! s, Quotient.mk'' ↑s = Quotient.mk'' g) ↔
    ∀ (q : Quotient (QuotientGroup.rightRel H)), ∃! s, Quotient.mk'' ↑s = q

tactic: exact ⟨fun h q => Quotient.inductionOn' q h, fun h g => h (Quotient.mk'' g)⟩
state_before: G : Type u_1
inst✝ : Group G
H K : Subgroup G
S T : Set G
⊢ (∀ (g : G), ∃! s, Quotient.mk'' ↑s = Quotient.mk'' g) ↔
    ∀ (q : Quotient (QuotientGroup.rightRel H)), ∃! s, Quotient.mk'' ↑s = q
state_after: no goals
Theorem: List.Nodup.rotate_congr
File: Mathlib/Data/List/Rotate.lean

tactic: rw [← rotate_mod l i, ← rotate_mod l j] at h
state_before: α : Type u
l : List α
hl : l.Nodup
hn : l ≠ []
i j : ℕ
h : l.rotate i = l.rotate j
⊢ i % l.length = j % l.length
state_after: α : Type u
l : List α
hl : l.Nodup
hn : l ≠ []
i j : ℕ
h : l.rotate (i % l.length) = l.rotate (j % l.length)
⊢ i % l.length = j % l.length

tactic: simpa only [head?_rotate, mod_lt, length_pos_of_ne_nil hn, getElem?_eq_getElem, Option.some_inj,
  hl.getElem_inj_iff, Fin.ext_iff] using congr_arg head? h
state_before: α : Type u
l : List α
hl : l.Nodup
hn : l ≠ []
i j : ℕ
h : l.rotate (i % l.length) = l.rotate (j % l.length)
⊢ i % l.length = j % l.length
state_after: no goals
Theorem: Real.sSup_nonneg
File: Mathlib/Data/Real/Archimedean.lean

tactic: rcases S.eq_empty_or_nonempty with (rfl | ⟨y, hy⟩)
state_before: S : Set ℝ
hS : ∀ x ∈ S, 0 ≤ x
⊢ 0 ≤ sSup S
state_after: case inl
hS : ∀ x ∈ ∅, 0 ≤ x
⊢ 0 ≤ sSup ∅

case inr.intro
S : Set ℝ
hS : ∀ x ∈ S, 0 ≤ x
y : ℝ
hy : y ∈ S
⊢ 0 ≤ sSup S

tactic: exact sSup_empty.ge
state_before: case inl
hS : ∀ x ∈ ∅, 0 ≤ x
⊢ 0 ≤ sSup ∅
state_after: no goals

tactic: apply dite _ (fun h => le_csSup_of_le h hy <| hS y hy) fun h => (sSup_of_not_bddAbove h).ge
state_before: case inr.intro
S : Set ℝ
hS : ∀ x ∈ S, 0 ≤ x
y : ℝ
hy : y ∈ S
⊢ 0 ≤ sSup S
state_after: no goals
Theorem: Filter.tendsto_Ici_atTop
File: Mathlib/Order/Filter/AtTopBot.lean

tactic: rw [atTop_Ici_eq, tendsto_comap_iff, Function.comp_def]
state_before: ι : Type u_1
ι' : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
inst✝ : SemilatticeSup α
a : α
f : β → ↑(Ici a)
l : Filter β
⊢ Tendsto f l atTop ↔ Tendsto (fun x => ↑(f x)) l atTop
state_after: no goals
Theorem: Fin.succAbove_rev_right
File: Mathlib/Data/Fin/Basic.lean

tactic: rw [succAbove_rev_left, rev_rev]
state_before: n m : ℕ
p✝ : Fin (n + 1)
i✝ j : Fin n
p : Fin (n + 1)
i : Fin n
⊢ p.succAbove i.rev = (p.rev.succAbove i).rev
state_after: no goals
Theorem: ProbabilityTheory.kernel.compProd_restrict_right
File: Mathlib/Probability/Kernel/Composition.lean

tactic: rw [← compProd_restrict]
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
γ : Type u_4
mγ : MeasurableSpace γ
s : Set (β × γ)
κ : ↥(kernel α β)
inst✝¹ : IsSFiniteKernel κ
η : ↥(kernel (α × β) γ)
inst✝ : IsSFiniteKernel η
a : α
t : Set γ
ht : MeasurableSet t
⊢ κ ⊗ₖ kernel.restrict η ht = kernel.restrict (κ ⊗ₖ η) ⋯
state_after: α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
γ : Type u_4
mγ : MeasurableSpace γ
s : Set (β × γ)
κ : ↥(kernel α β)
inst✝¹ : IsSFiniteKernel κ
η : ↥(kernel (α × β) γ)
inst✝ : IsSFiniteKernel η
a : α
t : Set γ
ht : MeasurableSet t
⊢ κ ⊗ₖ kernel.restrict η ht = kernel.restrict κ ?hs ⊗ₖ kernel.restrict η ?ht

case hs
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
γ : Type u_4
mγ : MeasurableSpace γ
s : Set (β × γ)
κ : ↥(kernel α β)
inst✝¹ : IsSFiniteKernel κ
η : ↥(kernel (α × β) γ)
inst✝ : IsSFiniteKernel η
a : α
t : Set γ
ht : MeasurableSet t
⊢ MeasurableSet Set.univ

case ht
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
γ : Type u_4
mγ : MeasurableSpace γ
s : Set (β × γ)
κ : ↥(kernel α β)
inst✝¹ : IsSFiniteKernel κ
η : ↥(kernel (α × β) γ)
inst✝ : IsSFiniteKernel η
a : α
t : Set γ
ht : MeasurableSet t
⊢ MeasurableSet t

tactic: congr
state_before: α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
γ : Type u_4
mγ : MeasurableSpace γ
s : Set (β × γ)
κ : ↥(kernel α β)
inst✝¹ : IsSFiniteKernel κ
η : ↥(kernel (α × β) γ)
inst✝ : IsSFiniteKernel η
a : α
t : Set γ
ht : MeasurableSet t
⊢ κ ⊗ₖ kernel.restrict η ht = kernel.restrict κ ?hs ⊗ₖ kernel.restrict η ?ht
state_after: case e_κ
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
γ : Type u_4
mγ : MeasurableSpace γ
s : Set (β × γ)
κ : ↥(kernel α β)
inst✝¹ : IsSFiniteKernel κ
η : ↥(kernel (α × β) γ)
inst✝ : IsSFiniteKernel η
a : α
t : Set γ
ht : MeasurableSet t
⊢ κ = kernel.restrict κ ?hs

tactic: exact kernel.restrict_univ.symm
state_before: case e_κ
α : Type u_1
β : Type u_2
ι : Type u_3
mα : MeasurableSpace α
mβ : MeasurableSpace β
γ : Type u_4
mγ : MeasurableSpace γ
s : Set (β × γ)
κ : ↥(kernel α β)
inst✝¹ : IsSFiniteKernel κ
η : ↥(kernel (α × β) γ)
inst✝ : IsSFiniteKernel η
a : α
t : Set γ
ht : MeasurableSet t
⊢ κ = kernel.restrict κ ?hs
state_after: no goals
Theorem: Cubic.monic_of_a_eq_one
File: Mathlib/Algebra/CubicDiscriminant.lean

tactic: nontriviality R
state_before: R : Type u_1
S : Type u_2
F : Type u_3
K : Type u_4
P Q : Cubic R
a b c d a' b' c' d' : R
inst✝ : Semiring R
ha : P.a = 1
⊢ P.toPoly.Monic
state_after: R : Type u_1
S : Type u_2
F : Type u_3
K : Type u_4
P Q : Cubic R
a b c d a' b' c' d' : R
inst✝ : Semiring R
ha : P.a = 1
a✝ : Nontrivial R
⊢ P.toPoly.Monic

tactic: rw [Monic, leadingCoeff_of_a_ne_zero (ha ▸ one_ne_zero), ha]
state_before: R : Type u_1
S : Type u_2
F : Type u_3
K : Type u_4
P Q : Cubic R
a b c d a' b' c' d' : R
inst✝ : Semiring R
ha : P.a = 1
a✝ : Nontrivial R
⊢ P.toPoly.Monic
state_after: no goals
Theorem: Matroid.finite_setOf_matroid'
File: Mathlib/Data/Matroid/Basic.lean

tactic: rintro rfl
state_before: α : Type u_1
M✝ : Matroid α
E : Set α
hE : E.Finite
M : Matroid α
⊢ M ∈ {M | M.E = E} → M ∈ {M | M.E ⊆ E}
state_after: α : Type u_1
M✝ M : Matroid α
hE : M.E.Finite
⊢ M ∈ {M_1 | M_1.E ⊆ M.E}

tactic: exact rfl.subset
state_before: α : Type u_1
M✝ M : Matroid α
hE : M.E.Finite
⊢ M ∈ {M_1 | M_1.E ⊆ M.E}
state_after: no goals
Theorem: ZMod.val_sub
File: Mathlib/Data/ZMod/Basic.lean

tactic: by_cases hb : b = 0
state_before: n : ℕ
inst✝ : NeZero n
a b : ZMod n
h : b.val ≤ a.val
⊢ (a - b).val = a.val - b.val
state_after: case pos
n : ℕ
inst✝ : NeZero n
a b : ZMod n
h : b.val ≤ a.val
hb : b = 0
⊢ (a - b).val = a.val - b.val

case neg
n : ℕ
inst✝ : NeZero n
a b : ZMod n
h : b.val ≤ a.val
hb : ¬b = 0
⊢ (a - b).val = a.val - b.val

tactic: cases hb
state_before: case pos
n : ℕ
inst✝ : NeZero n
a b : ZMod n
h : b.val ≤ a.val
hb : b = 0
⊢ (a - b).val = a.val - b.val
state_after: case pos.refl
n : ℕ
inst✝ : NeZero n
a : ZMod n
h : val 0 ≤ a.val
⊢ (a - 0).val = a.val - val 0

tactic: simp
state_before: case pos.refl
n : ℕ
inst✝ : NeZero n
a : ZMod n
h : val 0 ≤ a.val
⊢ (a - 0).val = a.val - val 0
state_after: no goals

tactic: have : NeZero b := ⟨hb⟩
state_before: case neg
n : ℕ
inst✝ : NeZero n
a b : ZMod n
h : b.val ≤ a.val
hb : ¬b = 0
⊢ (a - b).val = a.val - b.val
state_after: case neg
n : ℕ
inst✝ : NeZero n
a b : ZMod n
h : b.val ≤ a.val
hb : ¬b = 0
this : NeZero b
⊢ (a - b).val = a.val - b.val

tactic: rw [sub_eq_add_neg, val_add, val_neg_of_ne_zero, ← Nat.add_sub_assoc (le_of_lt (val_lt _)),
  add_comm, Nat.add_sub_assoc h, Nat.add_mod_left]
state_before: case neg
n : ℕ
inst✝ : NeZero n
a b : ZMod n
h : b.val ≤ a.val
hb : ¬b = 0
this : NeZero b
⊢ (a - b).val = a.val - b.val
state_after: case neg
n : ℕ
inst✝ : NeZero n
a b : ZMod n
h : b.val ≤ a.val
hb : ¬b = 0
this : NeZero b
⊢ (a.val - b.val) % n = a.val - b.val

tactic: apply Nat.mod_eq_of_lt (tsub_lt_of_lt (val_lt _))
state_before: case neg
n : ℕ
inst✝ : NeZero n
a b : ZMod n
h : b.val ≤ a.val
hb : ¬b = 0
this : NeZero b
⊢ (a.val - b.val) % n = a.val - b.val
state_after: no goals
Theorem: Matrix.vecMul_sub
File: Mathlib/Data/Matrix/Basic.lean

tactic: simp [sub_eq_add_neg, vecMul_add, vecMul_neg]
state_before: l : Type u_1
m : Type u_2
n : Type u_3
o : Type u_4
m' : o → Type u_5
n' : o → Type u_6
R : Type u_7
S : Type u_8
α : Type v
β : Type w
γ : Type u_9
inst✝¹ : NonUnitalNonAssocRing α
inst✝ : Fintype m
A B : Matrix m n α
x : m → α
⊢ x ᵥ* (A - B) = x ᵥ* A - x ᵥ* B
state_after: no goals
Theorem: MeasureTheory.memℒp_two_iff_integrable_sq_norm
File: Mathlib/MeasureTheory/Function/L2Space.lean

tactic: rw [← memℒp_one_iff_integrable]
state_before: α : Type u_1
F : Type u_2
m : MeasurableSpace α
μ : Measure α
inst✝ : NormedAddCommGroup F
f : α → F
hf : AEStronglyMeasurable f μ
⊢ Memℒp f 2 μ ↔ Integrable (fun x => ‖f x‖ ^ 2) μ
state_after: α : Type u_1
F : Type u_2
m : MeasurableSpace α
μ : Measure α
inst✝ : NormedAddCommGroup F
f : α → F
hf : AEStronglyMeasurable f μ
⊢ Memℒp f 2 μ ↔ Memℒp (fun x => ‖f x‖ ^ 2) 1 μ

tactic: convert (memℒp_norm_rpow_iff hf two_ne_zero ENNReal.two_ne_top).symm
state_before: α : Type u_1
F : Type u_2
m : MeasurableSpace α
μ : Measure α
inst✝ : NormedAddCommGroup F
f : α → F
hf : AEStronglyMeasurable f μ
⊢ Memℒp f 2 μ ↔ Memℒp (fun x => ‖f x‖ ^ 2) 1 μ
state_after: case h.e'_2.h.e'_5.h
α : Type u_1
F : Type u_2
m : MeasurableSpace α
μ : Measure α
inst✝ : NormedAddCommGroup F
f : α → F
hf : AEStronglyMeasurable f μ
x✝ : α
⊢ ‖f x✝‖ ^ 2 = ‖f x✝‖ ^ ENNReal.toReal 2

case h.e'_2.h.e'_6
α : Type u_1
F : Type u_2
m : MeasurableSpace α
μ : Measure α
inst✝ : NormedAddCommGroup F
f : α → F
hf : AEStronglyMeasurable f μ
⊢ 1 = 2 / 2

tactic: simp
state_before: case h.e'_2.h.e'_5.h
α : Type u_1
F : Type u_2
m : MeasurableSpace α
μ : Measure α
inst✝ : NormedAddCommGroup F
f : α → F
hf : AEStronglyMeasurable f μ
x✝ : α
⊢ ‖f x✝‖ ^ 2 = ‖f x✝‖ ^ ENNReal.toReal 2
state_after: no goals

tactic: rw [div_eq_mul_inv, ENNReal.mul_inv_cancel two_ne_zero ENNReal.two_ne_top]
state_before: case h.e'_2.h.e'_6
α : Type u_1
F : Type u_2
m : MeasurableSpace α
μ : Measure α
inst✝ : NormedAddCommGroup F
f : α → F
hf : AEStronglyMeasurable f μ
⊢ 1 = 2 / 2
state_after: no goals
Theorem: Polynomial.content_dvd_coeff
File: Mathlib/RingTheory/Polynomial/Content.lean

tactic: by_cases h : n ∈ p.support
state_before: R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : NormalizedGCDMonoid R
p : R[X]
n : ℕ
⊢ p.content ∣ p.coeff n
state_after: case pos
R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : NormalizedGCDMonoid R
p : R[X]
n : ℕ
h : n ∈ p.support
⊢ p.content ∣ p.coeff n

case neg
R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : NormalizedGCDMonoid R
p : R[X]
n : ℕ
h : n ∉ p.support
⊢ p.content ∣ p.coeff n

tactic: rw [mem_support_iff, Classical.not_not] at h
state_before: case neg
R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : NormalizedGCDMonoid R
p : R[X]
n : ℕ
h : n ∉ p.support
⊢ p.content ∣ p.coeff n
state_after: case neg
R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : NormalizedGCDMonoid R
p : R[X]
n : ℕ
h : p.coeff n = 0
⊢ p.content ∣ p.coeff n

tactic: rw [h]
state_before: case neg
R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : NormalizedGCDMonoid R
p : R[X]
n : ℕ
h : p.coeff n = 0
⊢ p.content ∣ p.coeff n
state_after: case neg
R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : NormalizedGCDMonoid R
p : R[X]
n : ℕ
h : p.coeff n = 0
⊢ p.content ∣ 0

tactic: apply dvd_zero
state_before: case neg
R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : NormalizedGCDMonoid R
p : R[X]
n : ℕ
h : p.coeff n = 0
⊢ p.content ∣ 0
state_after: no goals

tactic: apply Finset.gcd_dvd h
state_before: case pos
R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : NormalizedGCDMonoid R
p : R[X]
n : ℕ
h : n ∈ p.support
⊢ p.content ∣ p.coeff n
state_after: no goals
Theorem: round_add_int
File: Mathlib/Algebra/Order/Floor.lean

tactic: rw [round, round, Int.fract_add_int, Int.floor_add_int, Int.ceil_add_int, ← apply_ite₂, ite_self]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
inst✝¹ : LinearOrderedRing α
inst✝ : FloorRing α
x : α
y : ℤ
⊢ round (x + ↑y) = round x + y
state_after: no goals
Theorem: Set.iUnion_image_right
File: Mathlib/Data/Set/Lattice.lean

tactic: rw [image2_swap, iUnion_image_left]
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
f : α → β → γ
s : Set α
t : Set β
⊢ ⋃ b ∈ t, (fun x => f x b) '' s = image2 f s t
state_after: no goals
Theorem: OrderIso.bddAbove_preimage
File: Mathlib/Order/GaloisConnection.lean

tactic: rw [← e.bddAbove_image, e.image_preimage]
state_before: α : Type u
β : Type v
γ : Type w
ι : Sort x
κ : ι → Sort u_1
a a₁ a₂ : α
b b₁ b₂ : β
inst✝¹ : Preorder α
inst✝ : Preorder β
e : α ≃o β
s : Set β
⊢ BddAbove (⇑e ⁻¹' s) ↔ BddAbove s
state_after: no goals
Theorem: ModuleCat.isZero_of_subsingleton
File: Mathlib/Algebra/Category/ModuleCat/Basic.lean

tactic: ext x
state_before: R : Type u
inst✝¹ : Ring R
M : ModuleCat R
inst✝ : Subsingleton ↑M
X : ModuleCat R
f : M ⟶ X
⊢ f = default
state_after: case h
R : Type u
inst✝¹ : Ring R
M : ModuleCat R
inst✝ : Subsingleton ↑M
X : ModuleCat R
f : M ⟶ X
x : ↑M
⊢ f x = default x

tactic: rw [Subsingleton.elim x (0 : M)]
state_before: case h
R : Type u
inst✝¹ : Ring R
M : ModuleCat R
inst✝ : Subsingleton ↑M
X : ModuleCat R
f : M ⟶ X
x : ↑M
⊢ f x = default x
state_after: case h
R : Type u
inst✝¹ : Ring R
M : ModuleCat R
inst✝ : Subsingleton ↑M
X : ModuleCat R
f : M ⟶ X
x : ↑M
⊢ f 0 = default 0

tactic: dsimp
state_before: case h
R : Type u
inst✝¹ : Ring R
M : ModuleCat R
inst✝ : Subsingleton ↑M
X : ModuleCat R
f : M ⟶ X
x : ↑M
⊢ f 0 = default 0
state_after: case h
R : Type u
inst✝¹ : Ring R
M : ModuleCat R
inst✝ : Subsingleton ↑M
X : ModuleCat R
f : M ⟶ X
x : ↑M
⊢ f 0 = 0 0

tactic: simp
state_before: case h
R : Type u
inst✝¹ : Ring R
M : ModuleCat R
inst✝ : Subsingleton ↑M
X : ModuleCat R
f : M ⟶ X
x : ↑M
⊢ f 0 = 0 0
state_after: no goals

tactic: ext x
state_before: R : Type u
inst✝¹ : Ring R
M : ModuleCat R
inst✝ : Subsingleton ↑M
X : ModuleCat R
f : X ⟶ M
⊢ f = default
state_after: case h
R : Type u
inst✝¹ : Ring R
M : ModuleCat R
inst✝ : Subsingleton ↑M
X : ModuleCat R
f : X ⟶ M
x : ↑X
⊢ f x = default x

tactic: apply Subsingleton.elim
state_before: case h
R : Type u
inst✝¹ : Ring R
M : ModuleCat R
inst✝ : Subsingleton ↑M
X : ModuleCat R
f : X ⟶ M
x : ↑X
⊢ f x = default x
state_after: no goals
Theorem: AffineSubspace.sOppSide_iff_exists_left
File: Mathlib/Analysis/Convex/Side.lean

tactic: rw [SOppSide, and_comm, wOppSide_iff_exists_left h, and_assoc, and_congr_right_iff]
state_before: R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : LinearOrderedField R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
s : AffineSubspace R P
x y p₁ : P
h : p₁ ∈ s
⊢ s.SOppSide x y ↔ x ∉ s ∧ y ∉ s ∧ ∃ p₂ ∈ s, SameRay R (x -ᵥ p₁) (p₂ -ᵥ y)
state_after: R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : LinearOrderedField R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
s : AffineSubspace R P
x y p₁ : P
h : p₁ ∈ s
⊢ x ∉ s → (y ∉ s ∧ (x ∈ s ∨ ∃ p₂ ∈ s, SameRay R (x -ᵥ p₁) (p₂ -ᵥ y)) ↔ y ∉ s ∧ ∃ p₂ ∈ s, SameRay R (x -ᵥ p₁) (p₂ -ᵥ y))

tactic: intro hx
state_before: R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : LinearOrderedField R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
s : AffineSubspace R P
x y p₁ : P
h : p₁ ∈ s
⊢ x ∉ s → (y ∉ s ∧ (x ∈ s ∨ ∃ p₂ ∈ s, SameRay R (x -ᵥ p₁) (p₂ -ᵥ y)) ↔ y ∉ s ∧ ∃ p₂ ∈ s, SameRay R (x -ᵥ p₁) (p₂ -ᵥ y))
state_after: R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : LinearOrderedField R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
s : AffineSubspace R P
x y p₁ : P
h : p₁ ∈ s
hx : x ∉ s
⊢ y ∉ s ∧ (x ∈ s ∨ ∃ p₂ ∈ s, SameRay R (x -ᵥ p₁) (p₂ -ᵥ y)) ↔ y ∉ s ∧ ∃ p₂ ∈ s, SameRay R (x -ᵥ p₁) (p₂ -ᵥ y)

tactic: rw [or_iff_right hx]
state_before: R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : LinearOrderedField R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
s : AffineSubspace R P
x y p₁ : P
h : p₁ ∈ s
hx : x ∉ s
⊢ y ∉ s ∧ (x ∈ s ∨ ∃ p₂ ∈ s, SameRay R (x -ᵥ p₁) (p₂ -ᵥ y)) ↔ y ∉ s ∧ ∃ p₂ ∈ s, SameRay R (x -ᵥ p₁) (p₂ -ᵥ y)
state_after: no goals
Theorem: CategoryTheory.Exact.lift_comp
File: Mathlib/CategoryTheory/Preadditive/Projective.lean

tactic: simp only [Exact.lift]
state_before: C : Type u
inst✝⁴ : Category.{v, u} C
inst✝³ : HasZeroMorphisms C
inst✝² : HasEqualizers C
inst✝¹ : HasImages C
P Q R S : C
inst✝ : Projective P
h : P ⟶ R
f : Q ⟶ R
g : R ⟶ S
hfg : Exact f g
w : h ≫ g = 0
⊢ lift h f g hfg w ≫ f = h
state_after: C : Type u
inst✝⁴ : Category.{v, u} C
inst✝³ : HasZeroMorphisms C
inst✝² : HasEqualizers C
inst✝¹ : HasImages C
P Q R S : C
inst✝ : Projective P
h : P ⟶ R
f : Q ⟶ R
g : R ⟶ S
hfg : Exact f g
w : h ≫ g = 0
⊢ factorThru (factorThru (factorThruKernelSubobject g h w) (imageToKernel f g ⋯)) (factorThruImageSubobject f) ≫ f = h

tactic: conv_lhs =>
  congr
  rfl
  rw [← imageSubobject_arrow_comp f]
state_before: C : Type u
inst✝⁴ : Category.{v, u} C
inst✝³ : HasZeroMorphisms C
inst✝² : HasEqualizers C
inst✝¹ : HasImages C
P Q R S : C
inst✝ : Projective P
h : P ⟶ R
f : Q ⟶ R
g : R ⟶ S
hfg : Exact f g
w : h ≫ g = 0
⊢ factorThru (factorThru (factorThruKernelSubobject g h w) (imageToKernel f g ⋯)) (factorThruImageSubobject f) ≫ f = h
state_after: C : Type u
inst✝⁴ : Category.{v, u} C
inst✝³ : HasZeroMorphisms C
inst✝² : HasEqualizers C
inst✝¹ : HasImages C
P Q R S : C
inst✝ : Projective P
h : P ⟶ R
f : Q ⟶ R
g : R ⟶ S
hfg : Exact f g
w : h ≫ g = 0
⊢ factorThru (factorThru (factorThruKernelSubobject g h w) (imageToKernel f g ⋯)) (factorThruImageSubobject f) ≫
      factorThruImageSubobject f ≫ (imageSubobject f).arrow =
    h

tactic: haveI := hfg.epi
state_before: C : Type u
inst✝⁴ : Category.{v, u} C
inst✝³ : HasZeroMorphisms C
inst✝² : HasEqualizers C
inst✝¹ : HasImages C
P Q R S : C
inst✝ : Projective P
h : P ⟶ R
f : Q ⟶ R
g : R ⟶ S
hfg : Exact f g
w : h ≫ g = 0
⊢ factorThru (factorThru (factorThruKernelSubobject g h w) (imageToKernel f g ⋯)) (factorThruImageSubobject f) ≫
      factorThruImageSubobject f ≫ (imageSubobject f).arrow =
    h
state_after: C : Type u
inst✝⁴ : Category.{v, u} C
inst✝³ : HasZeroMorphisms C
inst✝² : HasEqualizers C
inst✝¹ : HasImages C
P Q R S : C
inst✝ : Projective P
h : P ⟶ R
f : Q ⟶ R
g : R ⟶ S
hfg : Exact f g
w : h ≫ g = 0
this : Epi (imageToKernel f g ⋯)
⊢ factorThru (factorThru (factorThruKernelSubobject g h w) (imageToKernel f g ⋯)) (factorThruImageSubobject f) ≫
      factorThruImageSubobject f ≫ (imageSubobject f).arrow =
    h

tactic: rw [← Category.assoc, factorThru_comp, ← imageToKernel_arrow f g, ← Category.assoc,
  CategoryTheory.Projective.factorThru_comp, factorThruKernelSubobject_comp_arrow]
state_before: C : Type u
inst✝⁴ : Category.{v, u} C
inst✝³ : HasZeroMorphisms C
inst✝² : HasEqualizers C
inst✝¹ : HasImages C
P Q R S : C
inst✝ : Projective P
h : P ⟶ R
f : Q ⟶ R
g : R ⟶ S
hfg : Exact f g
w : h ≫ g = 0
this : Epi (imageToKernel f g ⋯)
⊢ factorThru (factorThru (factorThruKernelSubobject g h w) (imageToKernel f g ⋯)) (factorThruImageSubobject f) ≫
      factorThruImageSubobject f ≫ (imageSubobject f).arrow =
    h
state_after: no goals
Theorem: WeierstrassCurve.Affine.CoordinateRing.exists_smul_basis_eq
File: Mathlib/AlgebraicGeometry/EllipticCurve/Group.lean

tactic: have h := (CoordinateRing.basis W).sum_equivFun x
state_before: R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
W : Affine R
f : R →+* S
x : W.CoordinateRing
⊢ ∃ p q, p • 1 + q • (mk W) Y = x
state_after: R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
W : Affine R
f : R →+* S
x : W.CoordinateRing
h : ∑ i : Fin 2, (CoordinateRing.basis W).equivFun x i • (CoordinateRing.basis W) i = x
⊢ ∃ p q, p • 1 + q • (mk W) Y = x

tactic: erw [Fin.sum_univ_succ, Fin.sum_univ_one, basis_zero, basis_one] at h
state_before: R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
W : Affine R
f : R →+* S
x : W.CoordinateRing
h : ∑ i : Fin 2, (CoordinateRing.basis W).equivFun x i • (CoordinateRing.basis W) i = x
⊢ ∃ p q, p • 1 + q • (mk W) Y = x
state_after: R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
W : Affine R
f : R →+* S
x : W.CoordinateRing
h : (CoordinateRing.basis W).equivFun x 0 • 1 + (CoordinateRing.basis W).equivFun x (Fin.succ 0) • (mk W) Y = x
⊢ ∃ p q, p • 1 + q • (mk W) Y = x

tactic: exact ⟨_, _, h⟩
state_before: R : Type u
S : Type v
inst✝¹ : CommRing R
inst✝ : CommRing S
W : Affine R
f : R →+* S
x : W.CoordinateRing
h : (CoordinateRing.basis W).equivFun x 0 • 1 + (CoordinateRing.basis W).equivFun x (Fin.succ 0) • (mk W) Y = x
⊢ ∃ p q, p • 1 + q • (mk W) Y = x
state_after: no goals
Theorem: toIcoMod_add_toIcoDiv_zsmul
File: Mathlib/Algebra/Order/ToIntervalMod.lean

tactic: rw [toIcoMod, sub_add_cancel]
state_before: α : Type u_1
inst✝ : LinearOrderedAddCommGroup α
hα : Archimedean α
p : α
hp : 0 < p
a✝ b✝ c : α
n : ℤ
a b : α
⊢ toIcoMod hp a b + toIcoDiv hp a b • p = b
state_after: no goals
Theorem: MeasureTheory.diff_ae_eq_self
File: Mathlib/MeasureTheory/OuterMeasure/AE.lean

tactic: simp [eventuallyLE_antisymm_iff, ae_le_set, diff_diff_right, diff_diff,
  diff_eq_empty.2 Set.subset_union_right]
state_before: α : Type u_1
β : Type u_2
F : Type u_3
inst✝¹ : FunLike F (Set α) ℝ≥0∞
inst✝ : OuterMeasureClass F α
μ : F
s t : Set α
⊢ s \ t =ᶠ[ae μ] s ↔ μ (s ∩ t) = 0
state_after: no goals
Theorem: MulHom.subsemigroupMap_surjective
File: Mathlib/Algebra/Group/Subsemigroup/Operations.lean

tactic: rintro ⟨_, x, hx, rfl⟩
state_before: M : Type u_1
N : Type u_2
P : Type u_3
σ : Type u_4
inst✝² : Mul M
inst✝¹ : Mul N
inst✝ : Mul P
S : Subsemigroup M
f : M →ₙ* N
M' : Subsemigroup M
⊢ Function.Surjective ⇑(f.subsemigroupMap M')
state_after: case mk.intro.intro
M : Type u_1
N : Type u_2
P : Type u_3
σ : Type u_4
inst✝² : Mul M
inst✝¹ : Mul N
inst✝ : Mul P
S : Subsemigroup M
f : M →ₙ* N
M' : Subsemigroup M
x : M
hx : x ∈ ↑M'
⊢ ∃ a, (f.subsemigroupMap M') a = ⟨f x, ⋯⟩

tactic: exact ⟨⟨x, hx⟩, rfl⟩
state_before: case mk.intro.intro
M : Type u_1
N : Type u_2
P : Type u_3
σ : Type u_4
inst✝² : Mul M
inst✝¹ : Mul N
inst✝ : Mul P
S : Subsemigroup M
f : M →ₙ* N
M' : Subsemigroup M
x : M
hx : x ∈ ↑M'
⊢ ∃ a, (f.subsemigroupMap M') a = ⟨f x, ⋯⟩
state_after: no goals
Theorem: Int.even_mul
File: Mathlib/Algebra/Group/Int.lean

tactic: cases' emod_two_eq_zero_or_one m with h₁ h₁ <;>
cases' emod_two_eq_zero_or_one n with h₂ h₂ <;>
simp [even_iff, h₁, h₂, Int.mul_emod]
state_before: u v m n : ℤ
⊢ Even (m * n) ↔ Even m ∨ Even n
state_after: no goals