1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: ConvexOn.openSegment_subset_strict_epigraph
File: Mathlib/Analysis/Convex/Function.lean

tactic: rintro _ ⟨a, b, ha, hb, hab, rfl⟩
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
α : Type u_4
β : Type u_5
ι : Type u_6
inst✝⁶ : OrderedSemiring 𝕜
inst✝⁵ : AddCommMonoid E
inst✝⁴ : AddCommMonoid F
inst✝³ : OrderedCancelAddCommMonoid β
inst✝² : Module 𝕜 E
inst✝¹ : Module 𝕜 β
inst✝ : OrderedSMul 𝕜 β
s : Set E
f : E → β
hf : ConvexOn 𝕜 s f
p q : E × β
hp : p.1 ∈ s ∧ f p.1 < p.2
hq : q.1 ∈ s ∧ f q.1 ≤ q.2
⊢ openSegment 𝕜 p q ⊆ {p | p.1 ∈ s ∧ f p.1 < p.2}
state_after: case intro.intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
α : Type u_4
β : Type u_5
ι : Type u_6
inst✝⁶ : OrderedSemiring 𝕜
inst✝⁵ : AddCommMonoid E
inst✝⁴ : AddCommMonoid F
inst✝³ : OrderedCancelAddCommMonoid β
inst✝² : Module 𝕜 E
inst✝¹ : Module 𝕜 β
inst✝ : OrderedSMul 𝕜 β
s : Set E
f : E → β
hf : ConvexOn 𝕜 s f
p q : E × β
hp : p.1 ∈ s ∧ f p.1 < p.2
hq : q.1 ∈ s ∧ f q.1 ≤ q.2
a b : 𝕜
ha : 0 < a
hb : 0 < b
hab : a + b = 1
⊢ a • p + b • q ∈ {p | p.1 ∈ s ∧ f p.1 < p.2}

tactic: refine ⟨hf.1 hp.1 hq.1 ha.le hb.le hab, ?_⟩
state_before: case intro.intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
α : Type u_4
β : Type u_5
ι : Type u_6
inst✝⁶ : OrderedSemiring 𝕜
inst✝⁵ : AddCommMonoid E
inst✝⁴ : AddCommMonoid F
inst✝³ : OrderedCancelAddCommMonoid β
inst✝² : Module 𝕜 E
inst✝¹ : Module 𝕜 β
inst✝ : OrderedSMul 𝕜 β
s : Set E
f : E → β
hf : ConvexOn 𝕜 s f
p q : E × β
hp : p.1 ∈ s ∧ f p.1 < p.2
hq : q.1 ∈ s ∧ f q.1 ≤ q.2
a b : 𝕜
ha : 0 < a
hb : 0 < b
hab : a + b = 1
⊢ a • p + b • q ∈ {p | p.1 ∈ s ∧ f p.1 < p.2}
state_after: case intro.intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
α : Type u_4
β : Type u_5
ι : Type u_6
inst✝⁶ : OrderedSemiring 𝕜
inst✝⁵ : AddCommMonoid E
inst✝⁴ : AddCommMonoid F
inst✝³ : OrderedCancelAddCommMonoid β
inst✝² : Module 𝕜 E
inst✝¹ : Module 𝕜 β
inst✝ : OrderedSMul 𝕜 β
s : Set E
f : E → β
hf : ConvexOn 𝕜 s f
p q : E × β
hp : p.1 ∈ s ∧ f p.1 < p.2
hq : q.1 ∈ s ∧ f q.1 ≤ q.2
a b : 𝕜
ha : 0 < a
hb : 0 < b
hab : a + b = 1
⊢ f (a • p + b • q).1 < (a • p + b • q).2

tactic: calc
  f (a • p.1 + b • q.1) ≤ a • f p.1 + b • f q.1 := hf.2 hp.1 hq.1 ha.le hb.le hab
  _ < a • p.2 + b • q.2 := add_lt_add_of_lt_of_le
     (smul_lt_smul_of_pos_left hp.2 ha) (smul_le_smul_of_nonneg_left hq.2 hb.le)
state_before: case intro.intro.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
α : Type u_4
β : Type u_5
ι : Type u_6
inst✝⁶ : OrderedSemiring 𝕜
inst✝⁵ : AddCommMonoid E
inst✝⁴ : AddCommMonoid F
inst✝³ : OrderedCancelAddCommMonoid β
inst✝² : Module 𝕜 E
inst✝¹ : Module 𝕜 β
inst✝ : OrderedSMul 𝕜 β
s : Set E
f : E → β
hf : ConvexOn 𝕜 s f
p q : E × β
hp : p.1 ∈ s ∧ f p.1 < p.2
hq : q.1 ∈ s ∧ f q.1 ≤ q.2
a b : 𝕜
ha : 0 < a
hb : 0 < b
hab : a + b = 1
⊢ f (a • p + b • q).1 < (a • p + b • q).2
state_after: no goals
Theorem: le_mul_iff_one_le_left
File: Mathlib/Algebra/Order/GroupWithZero/Unbundled.lean

tactic: rw [one_mul]
state_before: α : Type u_1
a b c d : α
inst✝⁴ : MulOneClass α
inst✝³ : Zero α
inst✝² : Preorder α
inst✝¹ : MulPosMono α
inst✝ : MulPosReflectLE α
a0 : 0 < a
⊢ a ≤ b * a ↔ 1 * a ≤ b * a
state_after: no goals
Theorem: intervalIntegral.integral_non_aestronglyMeasurable_of_le
File: Mathlib/MeasureTheory/Integral/IntervalIntegral.lean

tactic: rwa [uIoc_of_le h]
state_before: ι : Type u_1
𝕜 : Type u_2
E : Type u_3
F : Type u_4
A : Type u_5
inst✝² : NormedAddCommGroup E
inst✝¹ : CompleteSpace E
inst✝ : NormedSpace ℝ E
a b : ℝ
f g : ℝ → E
μ : Measure ℝ
h : a ≤ b
hf : ¬AEStronglyMeasurable f (μ.restrict (Ioc a b))
⊢ ¬AEStronglyMeasurable f (μ.restrict (Ι a b))
state_after: no goals
Theorem: MatrixEquivTensor.invFun_smul
File: Mathlib/RingTheory/MatrixAlgebra.lean

tactic: simp [invFun, Finset.mul_sum]
state_before: R : Type u
inst✝⁴ : CommSemiring R
A : Type v
inst✝³ : Semiring A
inst✝² : Algebra R A
n : Type w
inst✝¹ : DecidableEq n
inst✝ : Fintype n
a : A
M : Matrix n n A
⊢ invFun R A n (a • M) = a ⊗ₜ[R] 1 * invFun R A n M
state_after: no goals
Theorem: IsWellOrderLimitElement.neq_succ
File: Mathlib/Order/IsWellOrderLimitElement.lean

tactic: simpa using IsWellOrderLimitElement.wellOrderSucc_lt ha
state_before: α : Type u_1
inst✝² : LinearOrder α
inst✝¹ : IsWellOrder α fun x x_1 => x < x_1
a✝ : α
ha✝ : IsWellOrderLimitElement a✝
a : α
ha : a < wellOrderSucc a
inst✝ : IsWellOrderLimitElement (wellOrderSucc a)
⊢ False
state_after: no goals
Theorem: FreeAbelianGroup.not_mem_support_iff
File: Mathlib/GroupTheory/FreeAbelianGroupFinsupp.lean

tactic: rw [support, Finsupp.not_mem_support_iff]
state_before: X : Type u_1
x : X
a : FreeAbelianGroup X
⊢ x ∉ a.support ↔ (coeff x) a = 0
state_after: X : Type u_1
x : X
a : FreeAbelianGroup X
⊢ (toFinsupp a) x = 0 ↔ (coeff x) a = 0

tactic: exact Iff.rfl
state_before: X : Type u_1
x : X
a : FreeAbelianGroup X
⊢ (toFinsupp a) x = 0 ↔ (coeff x) a = 0
state_after: no goals
Theorem: two_nsmul_lie_lmul_lmul_add_eq_lie_lmul_lmul_add
File: Mathlib/Algebra/Jordan/Basic.lean

tactic: suffices 2 • ⁅L a, L (a * b)⁆ + 2 • ⁅L b, L (b * a)⁆ + ⁅L b, L (a * a)⁆ + ⁅L a, L (b * b)⁆ = 0 by
  rwa [← sub_eq_zero, ← sub_sub, sub_eq_add_neg, sub_eq_add_neg, lie_skew, lie_skew, nsmul_add]
state_before: A : Type u_1
inst✝¹ : NonUnitalNonAssocCommRing A
inst✝ : IsCommJordan A
a b : A
⊢ 2 • (⁅L a, L (a * b)⁆ + ⁅L b, L (b * a)⁆) = ⁅L (a * a), L b⁆ + ⁅L (b * b), L a⁆
state_after: A : Type u_1
inst✝¹ : NonUnitalNonAssocCommRing A
inst✝ : IsCommJordan A
a b : A
⊢ 2 • ⁅L a, L (a * b)⁆ + 2 • ⁅L b, L (b * a)⁆ + ⁅L b, L (a * a)⁆ + ⁅L a, L (b * b)⁆ = 0

tactic: convert (commute_lmul_lmul_sq (a + b)).lie_eq using 1
state_before: A : Type u_1
inst✝¹ : NonUnitalNonAssocCommRing A
inst✝ : IsCommJordan A
a b : A
⊢ 2 • ⁅L a, L (a * b)⁆ + 2 • ⁅L b, L (b * a)⁆ + ⁅L b, L (a * a)⁆ + ⁅L a, L (b * b)⁆ = 0
state_after: case h.e'_2
A : Type u_1
inst✝¹ : NonUnitalNonAssocCommRing A
inst✝ : IsCommJordan A
a b : A
⊢ 2 • ⁅L a, L (a * b)⁆ + 2 • ⁅L b, L (b * a)⁆ + ⁅L b, L (a * a)⁆ + ⁅L a, L (b * b)⁆ = ⁅L (a + b), L ((a + b) * (a + b))⁆

tactic: simp only [add_mul, mul_add, map_add, lie_add, add_lie, mul_comm b a,
  (commute_lmul_lmul_sq a).lie_eq, (commute_lmul_lmul_sq b).lie_eq, zero_add, add_zero, two_smul]
state_before: case h.e'_2
A : Type u_1
inst✝¹ : NonUnitalNonAssocCommRing A
inst✝ : IsCommJordan A
a b : A
⊢ 2 • ⁅L a, L (a * b)⁆ + 2 • ⁅L b, L (b * a)⁆ + ⁅L b, L (a * a)⁆ + ⁅L a, L (b * b)⁆ = ⁅L (a + b), L ((a + b) * (a + b))⁆
state_after: case h.e'_2
A : Type u_1
inst✝¹ : NonUnitalNonAssocCommRing A
inst✝ : IsCommJordan A
a b : A
⊢ ⁅L a, L (a * b)⁆ + ⁅L a, L (a * b)⁆ + (⁅L b, L (a * b)⁆ + ⁅L b, L (a * b)⁆) + ⁅L b, L (a * a)⁆ + ⁅L a, L (b * b)⁆ =
    ⁅L b, L (a * a)⁆ + (⁅L a, L (a * b)⁆ + ⁅L b, L (a * b)⁆) + (⁅L a, L (a * b)⁆ + ⁅L b, L (a * b)⁆ + ⁅L a, L (b * b)⁆)

tactic: abel
state_before: case h.e'_2
A : Type u_1
inst✝¹ : NonUnitalNonAssocCommRing A
inst✝ : IsCommJordan A
a b : A
⊢ ⁅L a, L (a * b)⁆ + ⁅L a, L (a * b)⁆ + (⁅L b, L (a * b)⁆ + ⁅L b, L (a * b)⁆) + ⁅L b, L (a * a)⁆ + ⁅L a, L (b * b)⁆ =
    ⁅L b, L (a * a)⁆ + (⁅L a, L (a * b)⁆ + ⁅L b, L (a * b)⁆) + (⁅L a, L (a * b)⁆ + ⁅L b, L (a * b)⁆ + ⁅L a, L (b * b)⁆)
state_after: no goals

tactic: rwa [← sub_eq_zero, ← sub_sub, sub_eq_add_neg, sub_eq_add_neg, lie_skew, lie_skew, nsmul_add]
state_before: A : Type u_1
inst✝¹ : NonUnitalNonAssocCommRing A
inst✝ : IsCommJordan A
a b : A
this : 2 • ⁅L a, L (a * b)⁆ + 2 • ⁅L b, L (b * a)⁆ + ⁅L b, L (a * a)⁆ + ⁅L a, L (b * b)⁆ = 0
⊢ 2 • (⁅L a, L (a * b)⁆ + ⁅L b, L (b * a)⁆) = ⁅L (a * a), L b⁆ + ⁅L (b * b), L a⁆
state_after: no goals
Theorem: List.count_eq_count_filter_add
File: Mathlib/Data/List/Perm.lean

tactic: convert countP_eq_countP_filter_add l _ P
state_before: α : Type u_1
β : Type u_2
l✝ l₁ l₂ : List α
a✝ : α
inst✝¹ : DecidableEq α
P : α → Prop
inst✝ : DecidablePred P
l : List α
a : α
⊢ count a l = count a (filter (fun b => decide (P b)) l) + count a (filter (fun x => decide ¬P x) l)
state_after: case h.e'_3.h.e'_6.h.e'_1.h.e'_2.h
α : Type u_1
β : Type u_2
l✝ l₁ l₂ : List α
a✝ : α
inst✝¹ : DecidableEq α
P : α → Prop
inst✝ : DecidablePred P
l : List α
a x✝ : α
⊢ (decide ¬P x✝) = !decide (P x✝)

tactic: simp only [decide_not]
state_before: case h.e'_3.h.e'_6.h.e'_1.h.e'_2.h
α : Type u_1
β : Type u_2
l✝ l₁ l₂ : List α
a✝ : α
inst✝¹ : DecidableEq α
P : α → Prop
inst✝ : DecidablePred P
l : List α
a x✝ : α
⊢ (decide ¬P x✝) = !decide (P x✝)
state_after: no goals
Theorem: AlgebraicTopology.DoldKan.Γ₀.Obj.map_epi_on_summand_id
File: Mathlib/AlgebraicTopology/DoldKan/FunctorGamma.lean

tactic: simpa only [Γ₀.Obj.map_on_summand K (Splitting.IndexSet.id (op Δ)) e.op
    (rfl : e ≫ 𝟙 Δ = e ≫ 𝟙 Δ),
  Γ₀.Obj.Termwise.mapMono_id] using id_comp _
state_before: C : Type u_1
inst✝³ : Category.{u_2, u_1} C
inst✝² : Preadditive C
K K' : ChainComplex C ℕ
f : K ⟶ K'
Δ✝ Δ'✝ Δ'' : SimplexCategory
inst✝¹ : HasFiniteCoproducts C
Δ Δ' : SimplexCategory
e : Δ' ⟶ Δ
inst✝ : Epi e
⊢ ((splitting K).cofan { unop := Δ }).inj (Splitting.IndexSet.id { unop := Δ }) ≫ (obj K).map e.op =
    ((splitting K).cofan { unop := Δ' }).inj (Splitting.IndexSet.mk e)
state_after: no goals
Theorem: ArithmeticFunction.IsMultiplicative.natCast
File: Mathlib/NumberTheory/ArithmeticFunction.lean

tactic: simp [h]
state_before: R : Type u_1
f : ArithmeticFunction ℕ
inst✝ : Semiring R
h : f.IsMultiplicative
⊢ ↑f 1 = 1
state_after: no goals

tactic: simp [h.2 cop]
state_before: R : Type u_1
f : ArithmeticFunction ℕ
inst✝ : Semiring R
h : f.IsMultiplicative
m n : ℕ
cop : m.Coprime n
⊢ ↑f (m * n) = ↑f m * ↑f n
state_after: no goals
Theorem: Real.sub_le_dist
File: Mathlib/Topology/MetricSpace/Pseudo/Defs.lean

tactic: rw [Real.dist_eq, le_abs]
state_before: α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
x y : ℝ
⊢ x - y ≤ dist x y
state_after: α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
x y : ℝ
⊢ x - y ≤ x - y ∨ x - y ≤ -(x - y)

tactic: exact Or.inl (le_refl _)
state_before: α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
x y : ℝ
⊢ x - y ≤ x - y ∨ x - y ≤ -(x - y)
state_after: no goals
Theorem: ascPochhammer_nat_eq_ascFactorial
File: Mathlib/RingTheory/Polynomial/Pochhammer.lean

tactic: rw [ascPochhammer_zero, eval_one, Nat.ascFactorial_zero]
state_before: S : Type u
inst✝ : Semiring S
n : ℕ
⊢ eval n (ascPochhammer ℕ 0) = n.ascFactorial 0
state_after: no goals

tactic: rw [ascPochhammer_succ_right, eval_mul, ascPochhammer_nat_eq_ascFactorial n t, eval_add, eval_X,
  eval_natCast, Nat.cast_id, Nat.ascFactorial_succ, mul_comm]
state_before: S : Type u
inst✝ : Semiring S
n t : ℕ
⊢ eval n (ascPochhammer ℕ (t + 1)) = n.ascFactorial (t + 1)
state_after: no goals
Theorem: Commute.mul_self_sub_mul_self_eq
File: Mathlib/Algebra/Ring/Commute.lean

tactic: rw [add_mul, mul_sub, mul_sub, h.eq, sub_add_sub_cancel]
state_before: α : Type u
β : Type v
γ : Type w
R : Type x
inst✝ : NonUnitalNonAssocRing R
a b : R
h : Commute a b
⊢ a * a - b * b = (a + b) * (a - b)
state_after: no goals
Theorem: PartialHomeomorph.ball_subset_univBall_target
File: Mathlib/Analysis/NormedSpace/HomeomorphBall.lean

tactic: by_cases hr : 0 < r
state_before: E : Type u_1
inst✝³ : SeminormedAddCommGroup E
inst✝² : NormedSpace ℝ E
P : Type u_2
inst✝¹ : PseudoMetricSpace P
inst✝ : NormedAddTorsor E P
c : P
r : ℝ
⊢ ball c r ⊆ (univBall c r).target
state_after: case pos
E : Type u_1
inst✝³ : SeminormedAddCommGroup E
inst✝² : NormedSpace ℝ E
P : Type u_2
inst✝¹ : PseudoMetricSpace P
inst✝ : NormedAddTorsor E P
c : P
r : ℝ
hr : 0 < r
⊢ ball c r ⊆ (univBall c r).target

case neg
E : Type u_1
inst✝³ : SeminormedAddCommGroup E
inst✝² : NormedSpace ℝ E
P : Type u_2
inst✝¹ : PseudoMetricSpace P
inst✝ : NormedAddTorsor E P
c : P
r : ℝ
hr : ¬0 < r
⊢ ball c r ⊆ (univBall c r).target

tactic: rw [univBall_target c hr]
state_before: case pos
E : Type u_1
inst✝³ : SeminormedAddCommGroup E
inst✝² : NormedSpace ℝ E
P : Type u_2
inst✝¹ : PseudoMetricSpace P
inst✝ : NormedAddTorsor E P
c : P
r : ℝ
hr : 0 < r
⊢ ball c r ⊆ (univBall c r).target
state_after: no goals

tactic: rw [univBall, dif_neg hr]
state_before: case neg
E : Type u_1
inst✝³ : SeminormedAddCommGroup E
inst✝² : NormedSpace ℝ E
P : Type u_2
inst✝¹ : PseudoMetricSpace P
inst✝ : NormedAddTorsor E P
c : P
r : ℝ
hr : ¬0 < r
⊢ ball c r ⊆ (univBall c r).target
state_after: case neg
E : Type u_1
inst✝³ : SeminormedAddCommGroup E
inst✝² : NormedSpace ℝ E
P : Type u_2
inst✝¹ : PseudoMetricSpace P
inst✝ : NormedAddTorsor E P
c : P
r : ℝ
hr : ¬0 < r
⊢ ball c r ⊆ (IsometryEquiv.vaddConst c).toHomeomorph.toPartialHomeomorph.target

tactic: exact subset_univ _
state_before: case neg
E : Type u_1
inst✝³ : SeminormedAddCommGroup E
inst✝² : NormedSpace ℝ E
P : Type u_2
inst✝¹ : PseudoMetricSpace P
inst✝ : NormedAddTorsor E P
c : P
r : ℝ
hr : ¬0 < r
⊢ ball c r ⊆ (IsometryEquiv.vaddConst c).toHomeomorph.toPartialHomeomorph.target
state_after: no goals
Theorem: Nat.exists_lt_succ
File: Mathlib/Data/Nat/Defs.lean

tactic: rw [← not_iff_not]
state_before: a b c d m n k : ℕ
p q : ℕ → Prop
⊢ (∃ m, m < n + 1 ∧ p m) ↔ (∃ m, m < n ∧ p m) ∨ p n
state_after: a b c d m n k : ℕ
p q : ℕ → Prop
⊢ (¬∃ m, m < n + 1 ∧ p m) ↔ ¬((∃ m, m < n ∧ p m) ∨ p n)

tactic: push_neg
state_before: a b c d m n k : ℕ
p q : ℕ → Prop
⊢ (¬∃ m, m < n + 1 ∧ p m) ↔ ¬((∃ m, m < n ∧ p m) ∨ p n)
state_after: a b c d m n k : ℕ
p q : ℕ → Prop
⊢ (∀ (m : ℕ), m < n + 1 → ¬p m) ↔ (∀ (m : ℕ), m < n → ¬p m) ∧ ¬p n

tactic: exact forall_lt_succ
state_before: a b c d m n k : ℕ
p q : ℕ → Prop
⊢ (∀ (m : ℕ), m < n + 1 → ¬p m) ↔ (∀ (m : ℕ), m < n → ¬p m) ∧ ¬p n
state_after: no goals
Theorem: Set.nonempty_sUnion
File: Mathlib/Data/Set/Lattice.lean

tactic: simp [nonempty_iff_ne_empty]
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
S : Set (Set α)
⊢ (⋃₀ S).Nonempty ↔ ∃ s ∈ S, s.Nonempty
state_after: no goals
Theorem: le_tsub_mul
File: Mathlib/Algebra/Order/Sub/Basic.lean

tactic: simpa only [mul_comm _ c] using le_mul_tsub
state_before: α : Type u_1
β : Type u_2
inst✝⁸ : Preorder α
inst✝⁷ : Add α
inst✝⁶ : Sub α
inst✝⁵ : OrderedSub α
a✝ b✝ c✝ d : α
R : Type u_3
inst✝⁴ : CommSemiring R
inst✝³ : Preorder R
inst✝² : Sub R
inst✝¹ : OrderedSub R
inst✝ : CovariantClass R R (fun x x_1 => x * x_1) fun x x_1 => x ≤ x_1
a b c : R
⊢ a * c - b * c ≤ (a - b) * c
state_after: no goals
Theorem: Multiset.image_toEnumFinset_fst
File: Mathlib/Data/Multiset/Fintype.lean

tactic: rw [Finset.image, Multiset.map_toEnumFinset_fst]
state_before: α : Type u_1
inst✝ : DecidableEq α
m✝ m : Multiset α
⊢ Finset.image Prod.fst m.toEnumFinset = m.toFinset
state_after: no goals
Theorem: MeasureTheory.measure_eq_zero_or_top_of_subset_compl_sigmaFiniteSet
File: Mathlib/MeasureTheory/Measure/WithDensityFinite.lean

tactic: have : μ t = μ.restrict μ.sigmaFiniteSetᶜ t := by
  rw [Measure.restrict_apply' (measurableSet_sigmaFiniteSet μ).compl,
    Set.inter_eq_left.mpr ht_subset]
state_before: α : Type u_1
mα : MeasurableSpace α
μ : Measure α
s t : Set α
inst✝ : SFinite μ
ht_subset : t ⊆ μ.sigmaFiniteSetᶜ
⊢ μ t = 0 ∨ μ t = ⊤
state_after: α : Type u_1
mα : MeasurableSpace α
μ : Measure α
s t : Set α
inst✝ : SFinite μ
ht_subset : t ⊆ μ.sigmaFiniteSetᶜ
this : μ t = (μ.restrict μ.sigmaFiniteSetᶜ) t
⊢ μ t = 0 ∨ μ t = ⊤

tactic: rw [this]
state_before: α : Type u_1
mα : MeasurableSpace α
μ : Measure α
s t : Set α
inst✝ : SFinite μ
ht_subset : t ⊆ μ.sigmaFiniteSetᶜ
this : μ t = (μ.restrict μ.sigmaFiniteSetᶜ) t
⊢ μ t = 0 ∨ μ t = ⊤
state_after: α : Type u_1
mα : MeasurableSpace α
μ : Measure α
s t : Set α
inst✝ : SFinite μ
ht_subset : t ⊆ μ.sigmaFiniteSetᶜ
this : μ t = (μ.restrict μ.sigmaFiniteSetᶜ) t
⊢ (μ.restrict μ.sigmaFiniteSetᶜ) t = 0 ∨ (μ.restrict μ.sigmaFiniteSetᶜ) t = ⊤

tactic: exact restrict_compl_sigmaFiniteSet_eq_zero_or_top μ t
state_before: α : Type u_1
mα : MeasurableSpace α
μ : Measure α
s t : Set α
inst✝ : SFinite μ
ht_subset : t ⊆ μ.sigmaFiniteSetᶜ
this : μ t = (μ.restrict μ.sigmaFiniteSetᶜ) t
⊢ (μ.restrict μ.sigmaFiniteSetᶜ) t = 0 ∨ (μ.restrict μ.sigmaFiniteSetᶜ) t = ⊤
state_after: no goals

tactic: rw [Measure.restrict_apply' (measurableSet_sigmaFiniteSet μ).compl,
  Set.inter_eq_left.mpr ht_subset]
state_before: α : Type u_1
mα : MeasurableSpace α
μ : Measure α
s t : Set α
inst✝ : SFinite μ
ht_subset : t ⊆ μ.sigmaFiniteSetᶜ
⊢ μ t = (μ.restrict μ.sigmaFiniteSetᶜ) t
state_after: no goals
Theorem: Ideal.coeff_zero_mem_comap_of_root_mem_of_eval_mem
File: Mathlib/RingTheory/Ideal/Over.lean

tactic: rw [← p.divX_mul_X_add, eval₂_add, eval₂_C, eval₂_mul, eval₂_X] at hp
state_before: R : Type u_1
inst✝¹ : CommRing R
S : Type u_2
inst✝ : CommRing S
f : R →+* S
I J : Ideal S
r : S
hr : r ∈ I
p : R[X]
hp : eval₂ f r p ∈ I
⊢ p.coeff 0 ∈ comap f I
state_after: R : Type u_1
inst✝¹ : CommRing R
S : Type u_2
inst✝ : CommRing S
f : R →+* S
I J : Ideal S
r : S
hr : r ∈ I
p : R[X]
hp : eval₂ f r p.divX * r + f (p.coeff 0) ∈ I
⊢ p.coeff 0 ∈ comap f I

tactic: refine mem_comap.mpr ((I.add_mem_iff_right ?_).mp hp)
state_before: R : Type u_1
inst✝¹ : CommRing R
S : Type u_2
inst✝ : CommRing S
f : R →+* S
I J : Ideal S
r : S
hr : r ∈ I
p : R[X]
hp : eval₂ f r p.divX * r + f (p.coeff 0) ∈ I
⊢ p.coeff 0 ∈ comap f I
state_after: R : Type u_1
inst✝¹ : CommRing R
S : Type u_2
inst✝ : CommRing S
f : R →+* S
I J : Ideal S
r : S
hr : r ∈ I
p : R[X]
hp : eval₂ f r p.divX * r + f (p.coeff 0) ∈ I
⊢ eval₂ f r p.divX * r ∈ I

tactic: exact I.mul_mem_left _ hr
state_before: R : Type u_1
inst✝¹ : CommRing R
S : Type u_2
inst✝ : CommRing S
f : R →+* S
I J : Ideal S
r : S
hr : r ∈ I
p : R[X]
hp : eval₂ f r p.divX * r + f (p.coeff 0) ∈ I
⊢ eval₂ f r p.divX * r ∈ I
state_after: no goals
Theorem: Finset.eq_of_mem_uIcc_of_mem_uIcc'
File: Mathlib/Order/Interval/Finset/Basic.lean

tactic: simp_rw [mem_uIcc]
state_before: ι : Type u_1
α : Type u_2
inst✝¹ : DistribLattice α
inst✝ : LocallyFiniteOrder α
a a₁ a₂ b b₁ b₂ c x : α
⊢ b ∈ [[a, c]] → c ∈ [[a, b]] → b = c
state_after: ι : Type u_1
α : Type u_2
inst✝¹ : DistribLattice α
inst✝ : LocallyFiniteOrder α
a a₁ a₂ b b₁ b₂ c x : α
⊢ a ⊓ c ≤ b ∧ b ≤ a ⊔ c → a ⊓ b ≤ c ∧ c ≤ a ⊔ b → b = c

tactic: exact Set.eq_of_mem_uIcc_of_mem_uIcc'
state_before: ι : Type u_1
α : Type u_2
inst✝¹ : DistribLattice α
inst✝ : LocallyFiniteOrder α
a a₁ a₂ b b₁ b₂ c x : α
⊢ a ⊓ c ≤ b ∧ b ≤ a ⊔ c → a ⊓ b ≤ c ∧ c ≤ a ⊔ b → b = c
state_after: no goals
Theorem: CategoryTheory.hom_inr_inl_false
File: Mathlib/CategoryTheory/Sums/Basic.lean

tactic: cases f
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
D : Type u₁
inst✝ : Category.{v₁, u₁} D
X : C
Y : D
f : inr X ⟶ inl Y
⊢ False
state_after: no goals
Theorem: Orientation.kahler_ne_zero_iff
File: Mathlib/Analysis/InnerProductSpace/TwoDim.lean

tactic: refine ⟨?_, fun h => o.kahler_ne_zero h.1 h.2⟩
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
x y : E
⊢ (o.kahler x) y ≠ 0 ↔ x ≠ 0 ∧ y ≠ 0
state_after: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
x y : E
⊢ (o.kahler x) y ≠ 0 → x ≠ 0 ∧ y ≠ 0

tactic: contrapose
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
x y : E
⊢ (o.kahler x) y ≠ 0 → x ≠ 0 ∧ y ≠ 0
state_after: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
x y : E
⊢ ¬(x ≠ 0 ∧ y ≠ 0) → ¬(o.kahler x) y ≠ 0

tactic: simp only [not_and_or, Classical.not_not, kahler_apply_apply, Complex.real_smul]
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
x y : E
⊢ ¬(x ≠ 0 ∧ y ≠ 0) → ¬(o.kahler x) y ≠ 0
state_after: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
x y : E
⊢ x = 0 ∨ y = 0 → ↑⟪x, y⟫_ℝ + ↑((o.areaForm x) y) * Complex.I = 0

tactic: rintro (rfl | rfl) <;> simp
state_before: E : Type u_1
inst✝² : NormedAddCommGroup E
inst✝¹ : InnerProductSpace ℝ E
inst✝ : Fact (finrank ℝ E = 2)
o : Orientation ℝ E (Fin 2)
x y : E
⊢ x = 0 ∨ y = 0 → ↑⟪x, y⟫_ℝ + ↑((o.areaForm x) y) * Complex.I = 0
state_after: no goals
Theorem: Ordinal.nadd_zero
File: Mathlib/SetTheory/Ordinal/NaturalOps.lean

tactic: induction' a using Ordinal.induction with a IH
state_before: a b c : Ordinal.{u}
⊢ a ♯ 0 = a
state_after: case h
a✝ b c a : Ordinal.{u}
IH : ∀ k < a, k ♯ 0 = k
⊢ a ♯ 0 = a

tactic: rw [nadd_def, blsub_zero, max_zero_right]
state_before: case h
a✝ b c a : Ordinal.{u}
IH : ∀ k < a, k ♯ 0 = k
⊢ a ♯ 0 = a
state_after: case h
a✝ b c a : Ordinal.{u}
IH : ∀ k < a, k ♯ 0 = k
⊢ (a.blsub fun a' x => a' ♯ 0) = a

tactic: convert blsub_id a
state_before: case h
a✝ b c a : Ordinal.{u}
IH : ∀ k < a, k ♯ 0 = k
⊢ (a.blsub fun a' x => a' ♯ 0) = a
state_after: case h.e'_2.h.e'_2.h.h
a✝ b c a : Ordinal.{u}
IH : ∀ k < a, k ♯ 0 = k
x✝¹ : Ordinal.{u}
x✝ : x✝¹ < a
⊢ x✝¹ ♯ 0 = x✝¹

tactic: rename_i hb
state_before: case h.e'_2.h.e'_2.h.h
a✝ b c a : Ordinal.{u}
IH : ∀ k < a, k ♯ 0 = k
x✝¹ : Ordinal.{u}
x✝ : x✝¹ < a
⊢ x✝¹ ♯ 0 = x✝¹
state_after: case h.e'_2.h.e'_2.h.h
a✝ b c a : Ordinal.{u}
IH : ∀ k < a, k ♯ 0 = k
x✝ : Ordinal.{u}
hb : x✝ < a
⊢ x✝ ♯ 0 = x✝

tactic: exact IH _ hb
state_before: case h.e'_2.h.e'_2.h.h
a✝ b c a : Ordinal.{u}
IH : ∀ k < a, k ♯ 0 = k
x✝ : Ordinal.{u}
hb : x✝ < a
⊢ x✝ ♯ 0 = x✝
state_after: no goals
Theorem: CategoryTheory.ConcreteCategory.bijective_of_isIso
File: Mathlib/CategoryTheory/ConcreteCategory/EpiMono.lean

tactic: rw [← isIso_iff_bijective]
state_before: C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : ConcreteCategory C
X Y : C
f : X ⟶ Y
inst✝ : IsIso f
⊢ Function.Bijective ((forget C).map f)
state_after: C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : ConcreteCategory C
X Y : C
f : X ⟶ Y
inst✝ : IsIso f
⊢ IsIso ((forget C).map f)

tactic: infer_instance
state_before: C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : ConcreteCategory C
X Y : C
f : X ⟶ Y
inst✝ : IsIso f
⊢ IsIso ((forget C).map f)
state_after: no goals
Theorem: Batteries.RBNode.setBlack_idem
File: .lake/packages/batteries/Batteries/Data/RBMap/WF.lean

tactic: cases t <;> rfl
state_before: α : Type u_1
t : RBNode α
⊢ t.setBlack.setBlack = t.setBlack
state_after: no goals
Theorem: Nat.even_iff_not_odd
File: Mathlib/Algebra/Ring/Parity.lean

tactic: rw [not_odd_iff, even_iff]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
R : Type u_4
m n : ℕ
⊢ Even n ↔ ¬Odd n
state_after: no goals
Theorem: Path.extend_zero
File: Mathlib/Topology/Connected/PathConnected.lean

tactic: simp
state_before: X : Type u_1
Y : Type u_2
inst✝¹ : TopologicalSpace X
inst✝ : TopologicalSpace Y
x y z : X
ι : Type u_3
γ : Path x y
⊢ γ.extend 0 = x
state_after: no goals
Theorem: List.getElem?_range
File: .lake/packages/batteries/Batteries/Data/List/Lemmas.lean

tactic: simp [range_eq_range', getElem?_range' _ _ h]
state_before: m n : Nat
h : m < n
⊢ (range n)[m]? = some m
state_after: no goals
Theorem: CategoryTheory.Idempotents.isIdempotentComplete_iff_of_equivalence
File: Mathlib/CategoryTheory/Idempotents/Basic.lean

tactic: constructor
state_before: C : Type u_1
inst✝¹ : Category.{u_4, u_1} C
D : Type u_2
inst✝ : Category.{u_3, u_2} D
ε : C ≌ D
⊢ IsIdempotentComplete C ↔ IsIdempotentComplete D
state_after: case mp
C : Type u_1
inst✝¹ : Category.{u_4, u_1} C
D : Type u_2
inst✝ : Category.{u_3, u_2} D
ε : C ≌ D
⊢ IsIdempotentComplete C → IsIdempotentComplete D

case mpr
C : Type u_1
inst✝¹ : Category.{u_4, u_1} C
D : Type u_2
inst✝ : Category.{u_3, u_2} D
ε : C ≌ D
⊢ IsIdempotentComplete D → IsIdempotentComplete C

tactic: exact Equivalence.isIdempotentComplete ε
state_before: case mp
C : Type u_1
inst✝¹ : Category.{u_4, u_1} C
D : Type u_2
inst✝ : Category.{u_3, u_2} D
ε : C ≌ D
⊢ IsIdempotentComplete C → IsIdempotentComplete D
state_after: no goals

tactic: exact Equivalence.isIdempotentComplete ε.symm
state_before: case mpr
C : Type u_1
inst✝¹ : Category.{u_4, u_1} C
D : Type u_2
inst✝ : Category.{u_3, u_2} D
ε : C ≌ D
⊢ IsIdempotentComplete D → IsIdempotentComplete C
state_after: no goals