1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: gaugeRescale_gaugeRescale
File: Mathlib/Analysis/Convex/GaugeRescale.lean

tactic: rcases eq_or_ne x 0 with rfl | hx
state_before: E : Type u_1
inst✝³ : AddCommGroup E
inst✝² : Module ℝ E
inst✝¹ : TopologicalSpace E
inst✝ : T1Space E
s t u : Set E
hta : Absorbent ℝ t
htb : IsVonNBounded ℝ t
x : E
⊢ gaugeRescale t u (gaugeRescale s t x) = gaugeRescale s u x
state_after: case inl
E : Type u_1
inst✝³ : AddCommGroup E
inst✝² : Module ℝ E
inst✝¹ : TopologicalSpace E
inst✝ : T1Space E
s t u : Set E
hta : Absorbent ℝ t
htb : IsVonNBounded ℝ t
⊢ gaugeRescale t u (gaugeRescale s t 0) = gaugeRescale s u 0

case inr
E : Type u_1
inst✝³ : AddCommGroup E
inst✝² : Module ℝ E
inst✝¹ : TopologicalSpace E
inst✝ : T1Space E
s t u : Set E
hta : Absorbent ℝ t
htb : IsVonNBounded ℝ t
x : E
hx : x ≠ 0
⊢ gaugeRescale t u (gaugeRescale s t x) = gaugeRescale s u x

tactic: rw [gaugeRescale_def s t x, gaugeRescale_smul, gaugeRescale, gaugeRescale, smul_smul,
  div_mul_div_cancel]
state_before: case inr
E : Type u_1
inst✝³ : AddCommGroup E
inst✝² : Module ℝ E
inst✝¹ : TopologicalSpace E
inst✝ : T1Space E
s t u : Set E
hta : Absorbent ℝ t
htb : IsVonNBounded ℝ t
x : E
hx : x ≠ 0
⊢ gaugeRescale t u (gaugeRescale s t x) = gaugeRescale s u x
state_after: case inr.hc
E : Type u_1
inst✝³ : AddCommGroup E
inst✝² : Module ℝ E
inst✝¹ : TopologicalSpace E
inst✝ : T1Space E
s t u : Set E
hta : Absorbent ℝ t
htb : IsVonNBounded ℝ t
x : E
hx : x ≠ 0
⊢ gauge t x ≠ 0

case inr.hc
E : Type u_1
inst✝³ : AddCommGroup E
inst✝² : Module ℝ E
inst✝¹ : TopologicalSpace E
inst✝ : T1Space E
s t u : Set E
hta : Absorbent ℝ t
htb : IsVonNBounded ℝ t
x : E
hx : x ≠ 0
⊢ 0 ≤ gauge s x / gauge t x

tactic: exacts [((gauge_pos hta htb).2 hx).ne', div_nonneg (gauge_nonneg _) (gauge_nonneg _)]
state_before: case inr.hc
E : Type u_1
inst✝³ : AddCommGroup E
inst✝² : Module ℝ E
inst✝¹ : TopologicalSpace E
inst✝ : T1Space E
s t u : Set E
hta : Absorbent ℝ t
htb : IsVonNBounded ℝ t
x : E
hx : x ≠ 0
⊢ gauge t x ≠ 0

case inr.hc
E : Type u_1
inst✝³ : AddCommGroup E
inst✝² : Module ℝ E
inst✝¹ : TopologicalSpace E
inst✝ : T1Space E
s t u : Set E
hta : Absorbent ℝ t
htb : IsVonNBounded ℝ t
x : E
hx : x ≠ 0
⊢ 0 ≤ gauge s x / gauge t x
state_after: no goals

tactic: simp
state_before: case inl
E : Type u_1
inst✝³ : AddCommGroup E
inst✝² : Module ℝ E
inst✝¹ : TopologicalSpace E
inst✝ : T1Space E
s t u : Set E
hta : Absorbent ℝ t
htb : IsVonNBounded ℝ t
⊢ gaugeRescale t u (gaugeRescale s t 0) = gaugeRescale s u 0
state_after: no goals
Theorem: CategoryTheory.Triangulated.Subcategory.W_of_isIso
File: Mathlib/CategoryTheory/Triangulated/Subcategory.lean

tactic: refine (S.respectsIso_W.arrow_mk_iso_iff ?_).1 (MorphismProperty.id_mem _ X)
state_before: C : Type u_1
inst✝⁶ : Category.{u_2, u_1} C
inst✝⁵ : HasZeroObject C
inst✝⁴ : HasShift C ℤ
inst✝³ : Preadditive C
inst✝² : ∀ (n : ℤ), (shiftFunctor C n).Additive
inst✝¹ : Pretriangulated C
S : Subcategory C
X Y : C
f : X ⟶ Y
inst✝ : IsIso f
⊢ S.W f
state_after: C : Type u_1
inst✝⁶ : Category.{u_2, u_1} C
inst✝⁵ : HasZeroObject C
inst✝⁴ : HasShift C ℤ
inst✝³ : Preadditive C
inst✝² : ∀ (n : ℤ), (shiftFunctor C n).Additive
inst✝¹ : Pretriangulated C
S : Subcategory C
X Y : C
f : X ⟶ Y
inst✝ : IsIso f
⊢ Arrow.mk (𝟙 X) ≅ Arrow.mk f

tactic: exact Arrow.isoMk (Iso.refl _) (asIso f)
state_before: C : Type u_1
inst✝⁶ : Category.{u_2, u_1} C
inst✝⁵ : HasZeroObject C
inst✝⁴ : HasShift C ℤ
inst✝³ : Preadditive C
inst✝² : ∀ (n : ℤ), (shiftFunctor C n).Additive
inst✝¹ : Pretriangulated C
S : Subcategory C
X Y : C
f : X ⟶ Y
inst✝ : IsIso f
⊢ Arrow.mk (𝟙 X) ≅ Arrow.mk f
state_after: no goals
Theorem: Nat.eq_div_of_mul_eq_right
File: Mathlib/Data/Nat/Defs.lean

tactic: rw [← h, Nat.mul_div_cancel_left _ (Nat.pos_iff_ne_zero.2 hc)]
state_before: a b c d m n k : ℕ
p q : ℕ → Prop
hc : c ≠ 0
h : c * a = b
⊢ a = b / c
state_after: no goals
Theorem: Polynomial.degree_divByMonic_lt
File: Mathlib/Algebra/Polynomial/Div.lean

tactic: haveI := Nontrivial.of_polynomial_ne hp0
state_before: R : Type u
S : Type v
T : Type w
A : Type z
a b : R
n : ℕ
inst✝ : Ring R
p✝ q✝ p q : R[X]
hq : q.Monic
hp0 : p ≠ 0
h0q : 0 < q.degree
hpq : p.degree < q.degree
⊢ (p /ₘ q).degree < p.degree
state_after: R : Type u
S : Type v
T : Type w
A : Type z
a b : R
n : ℕ
inst✝ : Ring R
p✝ q✝ p q : R[X]
hq : q.Monic
hp0 : p ≠ 0
h0q : 0 < q.degree
hpq : p.degree < q.degree
this : Nontrivial R
⊢ (p /ₘ q).degree < p.degree

tactic: rw [(divByMonic_eq_zero_iff hq).2 hpq, degree_eq_natDegree hp0]
state_before: R : Type u
S : Type v
T : Type w
A : Type z
a b : R
n : ℕ
inst✝ : Ring R
p✝ q✝ p q : R[X]
hq : q.Monic
hp0 : p ≠ 0
h0q : 0 < q.degree
hpq : p.degree < q.degree
this : Nontrivial R
⊢ (p /ₘ q).degree < p.degree
state_after: R : Type u
S : Type v
T : Type w
A : Type z
a b : R
n : ℕ
inst✝ : Ring R
p✝ q✝ p q : R[X]
hq : q.Monic
hp0 : p ≠ 0
h0q : 0 < q.degree
hpq : p.degree < q.degree
this : Nontrivial R
⊢ degree 0 < ↑p.natDegree

tactic: exact WithBot.bot_lt_coe _
state_before: R : Type u
S : Type v
T : Type w
A : Type z
a b : R
n : ℕ
inst✝ : Ring R
p✝ q✝ p q : R[X]
hq : q.Monic
hp0 : p ≠ 0
h0q : 0 < q.degree
hpq : p.degree < q.degree
this : Nontrivial R
⊢ degree 0 < ↑p.natDegree
state_after: no goals

tactic: haveI := Nontrivial.of_polynomial_ne hp0
state_before: R : Type u
S : Type v
T : Type w
A : Type z
a b : R
n : ℕ
inst✝ : Ring R
p✝ q✝ p q : R[X]
hq : q.Monic
hp0 : p ≠ 0
h0q : 0 < q.degree
hpq : ¬p.degree < q.degree
⊢ (p /ₘ q).degree < p.degree
state_after: R : Type u
S : Type v
T : Type w
A : Type z
a b : R
n : ℕ
inst✝ : Ring R
p✝ q✝ p q : R[X]
hq : q.Monic
hp0 : p ≠ 0
h0q : 0 < q.degree
hpq : ¬p.degree < q.degree
this : Nontrivial R
⊢ (p /ₘ q).degree < p.degree

tactic: rw [← degree_add_divByMonic hq (not_lt.1 hpq), degree_eq_natDegree hq.ne_zero,
  degree_eq_natDegree (mt (divByMonic_eq_zero_iff hq).1 hpq)]
state_before: R : Type u
S : Type v
T : Type w
A : Type z
a b : R
n : ℕ
inst✝ : Ring R
p✝ q✝ p q : R[X]
hq : q.Monic
hp0 : p ≠ 0
h0q : 0 < q.degree
hpq : ¬p.degree < q.degree
this : Nontrivial R
⊢ (p /ₘ q).degree < p.degree
state_after: R : Type u
S : Type v
T : Type w
A : Type z
a b : R
n : ℕ
inst✝ : Ring R
p✝ q✝ p q : R[X]
hq : q.Monic
hp0 : p ≠ 0
h0q : 0 < q.degree
hpq : ¬p.degree < q.degree
this : Nontrivial R
⊢ ↑(p /ₘ q).natDegree < ↑q.natDegree + ↑(p /ₘ q).natDegree

tactic: exact
  Nat.cast_lt.2
    (Nat.lt_add_of_pos_left (Nat.cast_lt.1 <|
      by simpa [degree_eq_natDegree hq.ne_zero] using h0q))
state_before: R : Type u
S : Type v
T : Type w
A : Type z
a b : R
n : ℕ
inst✝ : Ring R
p✝ q✝ p q : R[X]
hq : q.Monic
hp0 : p ≠ 0
h0q : 0 < q.degree
hpq : ¬p.degree < q.degree
this : Nontrivial R
⊢ ↑(p /ₘ q).natDegree < ↑q.natDegree + ↑(p /ₘ q).natDegree
state_after: no goals

tactic: simpa [degree_eq_natDegree hq.ne_zero] using h0q
state_before: R : Type u
S : Type v
T : Type w
A : Type z
a b : R
n : ℕ
inst✝ : Ring R
p✝ q✝ p q : R[X]
hq : q.Monic
hp0 : p ≠ 0
h0q : 0 < q.degree
hpq : ¬p.degree < q.degree
this : Nontrivial R
⊢ ↑0 < ↑↑q.natDegree
state_after: no goals
Theorem: Submonoid.LocalizationMap.lift_mk'
File: Mathlib/GroupTheory/MonoidLocalization.lean

tactic: simp_rw [f.toMap.map_mul, sec_spec', mul_assoc, f.mk'_spec, mul_comm]
state_before: M : Type u_1
inst✝² : CommMonoid M
S : Submonoid M
N : Type u_2
inst✝¹ : CommMonoid N
P : Type u_3
inst✝ : CommMonoid P
f : S.LocalizationMap N
g : M →* P
hg : ∀ (y : ↥S), IsUnit (g ↑y)
x : M
y : ↥S
⊢ f.toMap ((f.sec (f.mk' x y)).1 * ↑y) = f.toMap (x * ↑(f.sec (f.mk' x y)).2)
state_after: no goals
Theorem: Polynomial.mapAlg_eq_map
File: Mathlib/Algebra/Polynomial/Lifts.lean

tactic: simp only [mapAlg, aeval_def, eval₂_eq_sum, map, algebraMap_apply, RingHom.coe_comp]
state_before: R : Type u
inst✝² : CommSemiring R
S : Type v
inst✝¹ : Semiring S
inst✝ : Algebra R S
p : R[X]
⊢ (mapAlg R S) p = map (algebraMap R S) p
state_after: R : Type u
inst✝² : CommSemiring R
S : Type v
inst✝¹ : Semiring S
inst✝ : Algebra R S
p : R[X]
⊢ (p.sum fun e a => C ((algebraMap R S) a) * X ^ e) = p.sum fun e a => (⇑C ∘ ⇑(algebraMap R S)) a * X ^ e

tactic: ext
state_before: R : Type u
inst✝² : CommSemiring R
S : Type v
inst✝¹ : Semiring S
inst✝ : Algebra R S
p : R[X]
⊢ (p.sum fun e a => C ((algebraMap R S) a) * X ^ e) = p.sum fun e a => (⇑C ∘ ⇑(algebraMap R S)) a * X ^ e
state_after: case a
R : Type u
inst✝² : CommSemiring R
S : Type v
inst✝¹ : Semiring S
inst✝ : Algebra R S
p : R[X]
n✝ : ℕ
⊢ (p.sum fun e a => C ((algebraMap R S) a) * X ^ e).coeff n✝ =
    (p.sum fun e a => (⇑C ∘ ⇑(algebraMap R S)) a * X ^ e).coeff n✝

tactic: congr
state_before: case a
R : Type u
inst✝² : CommSemiring R
S : Type v
inst✝¹ : Semiring S
inst✝ : Algebra R S
p : R[X]
n✝ : ℕ
⊢ (p.sum fun e a => C ((algebraMap R S) a) * X ^ e).coeff n✝ =
    (p.sum fun e a => (⇑C ∘ ⇑(algebraMap R S)) a * X ^ e).coeff n✝
state_after: no goals
Theorem: SameRay.nonneg_smul_right
File: Mathlib/LinearAlgebra/Ray.lean

tactic: rw [hy, smul_zero]
state_before: R : Type u_1
inst✝¹⁰ : StrictOrderedCommSemiring R
M : Type u_2
inst✝⁹ : AddCommMonoid M
inst✝⁸ : Module R M
N : Type u_3
inst✝⁷ : AddCommMonoid N
inst✝⁶ : Module R N
ι : Type u_4
inst✝⁵ : DecidableEq ι
x y z : M
S : Type u_5
inst✝⁴ : OrderedCommSemiring S
inst✝³ : Algebra S R
inst✝² : Module S M
inst✝¹ : SMulPosMono S R
inst✝ : IsScalarTower S R M
a : S
h : SameRay R x y
ha : 0 ≤ a
hy : y = 0
⊢ a • y = 0
state_after: no goals
Theorem: exists_zpow_eq_one
File: Mathlib/GroupTheory/OrderOfElement.lean

tactic: obtain ⟨w, hw1, hw2⟩ := isOfFinOrder_of_finite x
state_before: G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝¹ : Group G
inst✝ : Finite G
x✝ y x : G
⊢ ∃ i, ∃ (_ : i ≠ 0), x ^ i = 1
state_after: case intro.intro
G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝¹ : Group G
inst✝ : Finite G
x✝ y x : G
w : ℕ
hw1 : w > 0
hw2 : IsPeriodicPt (fun x_1 => x * x_1) w 1
⊢ ∃ i, ∃ (_ : i ≠ 0), x ^ i = 1

tactic: refine ⟨w, Int.natCast_ne_zero.mpr (_root_.ne_of_gt hw1), ?_⟩
state_before: case intro.intro
G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝¹ : Group G
inst✝ : Finite G
x✝ y x : G
w : ℕ
hw1 : w > 0
hw2 : IsPeriodicPt (fun x_1 => x * x_1) w 1
⊢ ∃ i, ∃ (_ : i ≠ 0), x ^ i = 1
state_after: case intro.intro
G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝¹ : Group G
inst✝ : Finite G
x✝ y x : G
w : ℕ
hw1 : w > 0
hw2 : IsPeriodicPt (fun x_1 => x * x_1) w 1
⊢ x ^ ↑w = 1

tactic: rw [zpow_natCast]
state_before: case intro.intro
G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝¹ : Group G
inst✝ : Finite G
x✝ y x : G
w : ℕ
hw1 : w > 0
hw2 : IsPeriodicPt (fun x_1 => x * x_1) w 1
⊢ x ^ ↑w = 1
state_after: case intro.intro
G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝¹ : Group G
inst✝ : Finite G
x✝ y x : G
w : ℕ
hw1 : w > 0
hw2 : IsPeriodicPt (fun x_1 => x * x_1) w 1
⊢ x ^ w = 1

tactic: exact (isPeriodicPt_mul_iff_pow_eq_one _).mp hw2
state_before: case intro.intro
G : Type u_1
H : Type u_2
A : Type u_3
α : Type u_4
β : Type u_5
inst✝¹ : Group G
inst✝ : Finite G
x✝ y x : G
w : ℕ
hw1 : w > 0
hw2 : IsPeriodicPt (fun x_1 => x * x_1) w 1
⊢ x ^ w = 1
state_after: no goals
Theorem: ZMod.prod_Ico_one_prime
File: Mathlib/NumberTheory/Wilson.lean

tactic: conv =>
  congr
  congr
  rw [← Nat.add_one_sub_one p, succ_sub (Fact.out (p := p.Prime)).pos]
state_before: p : ℕ
inst✝ : Fact (Nat.Prime p)
⊢ ∏ x ∈ Ico 1 p, ↑x = -1
state_after: p : ℕ
inst✝ : Fact (Nat.Prime p)
⊢ ∏ x ∈ Ico 1 (p - succ 0).succ, ↑x = -1

tactic: rw [← prod_natCast, Finset.prod_Ico_id_eq_factorial, wilsons_lemma]
state_before: p : ℕ
inst✝ : Fact (Nat.Prime p)
⊢ ∏ x ∈ Ico 1 (p - succ 0).succ, ↑x = -1
state_after: no goals
Theorem: Ordinal.mul_eq_right_iff_opow_omega_dvd
File: Mathlib/SetTheory/Ordinal/FixedPoint.lean

tactic: rcases eq_zero_or_pos a with ha | ha
state_before: a b : Ordinal.{u_1}
⊢ a * b = b ↔ a ^ ω ∣ b
state_after: case inl
a b : Ordinal.{u_1}
ha : a = 0
⊢ a * b = b ↔ a ^ ω ∣ b

case inr
a b : Ordinal.{u_1}
ha : 0 < a
⊢ a * b = b ↔ a ^ ω ∣ b

tactic: refine ⟨fun hab => ?_, fun h => ?_⟩
state_before: case inr
a b : Ordinal.{u_1}
ha : 0 < a
⊢ a * b = b ↔ a ^ ω ∣ b
state_after: case inr.refine_1
a b : Ordinal.{u_1}
ha : 0 < a
hab : a * b = b
⊢ a ^ ω ∣ b

case inr.refine_2
a b : Ordinal.{u_1}
ha : 0 < a
h : a ^ ω ∣ b
⊢ a * b = b

tactic: cases' h with c hc
state_before: case inr.refine_2
a b : Ordinal.{u_1}
ha : 0 < a
h : a ^ ω ∣ b
⊢ a * b = b
state_after: case inr.refine_2.intro
a b : Ordinal.{u_1}
ha : 0 < a
c : Ordinal.{u_1}
hc : b = a ^ ω * c
⊢ a * b = b

tactic: rw [hc, ← mul_assoc, ← opow_one_add, one_add_omega]
state_before: case inr.refine_2.intro
a b : Ordinal.{u_1}
ha : 0 < a
c : Ordinal.{u_1}
hc : b = a ^ ω * c
⊢ a * b = b
state_after: no goals

tactic: rw [ha, zero_mul, zero_opow omega_ne_zero, zero_dvd_iff]
state_before: case inl
a b : Ordinal.{u_1}
ha : a = 0
⊢ a * b = b ↔ a ^ ω ∣ b
state_after: case inl
a b : Ordinal.{u_1}
ha : a = 0
⊢ 0 = b ↔ b = 0

tactic: exact eq_comm
state_before: case inl
a b : Ordinal.{u_1}
ha : a = 0
⊢ 0 = b ↔ b = 0
state_after: no goals

tactic: rw [dvd_iff_mod_eq_zero]
state_before: case inr.refine_1
a b : Ordinal.{u_1}
ha : 0 < a
hab : a * b = b
⊢ a ^ ω ∣ b
state_after: case inr.refine_1
a b : Ordinal.{u_1}
ha : 0 < a
hab : a * b = b
⊢ b % a ^ ω = 0

tactic: rw [← div_add_mod b (a^omega), mul_add, ← mul_assoc, ← opow_one_add, one_add_omega,
  add_left_cancel] at hab
state_before: case inr.refine_1
a b : Ordinal.{u_1}
ha : 0 < a
hab : a * b = b
⊢ b % a ^ ω = 0
state_after: case inr.refine_1
a b : Ordinal.{u_1}
ha : 0 < a
hab : a * (b % a ^ ω) = b % a ^ ω
⊢ b % a ^ ω = 0

tactic: cases' eq_zero_or_opow_omega_le_of_mul_eq_right hab with hab hab
state_before: case inr.refine_1
a b : Ordinal.{u_1}
ha : 0 < a
hab : a * (b % a ^ ω) = b % a ^ ω
⊢ b % a ^ ω = 0
state_after: case inr.refine_1.inl
a b : Ordinal.{u_1}
ha : 0 < a
hab✝ : a * (b % a ^ ω) = b % a ^ ω
hab : b % a ^ ω = 0
⊢ b % a ^ ω = 0

case inr.refine_1.inr
a b : Ordinal.{u_1}
ha : 0 < a
hab✝ : a * (b % a ^ ω) = b % a ^ ω
hab : a ^ ω ≤ b % a ^ ω
⊢ b % a ^ ω = 0

tactic: refine (not_lt_of_le hab (mod_lt b (opow_ne_zero omega ?_))).elim
state_before: case inr.refine_1.inr
a b : Ordinal.{u_1}
ha : 0 < a
hab✝ : a * (b % a ^ ω) = b % a ^ ω
hab : a ^ ω ≤ b % a ^ ω
⊢ b % a ^ ω = 0
state_after: case inr.refine_1.inr
a b : Ordinal.{u_1}
ha : 0 < a
hab✝ : a * (b % a ^ ω) = b % a ^ ω
hab : a ^ ω ≤ b % a ^ ω
⊢ a ≠ 0

tactic: rwa [← Ordinal.pos_iff_ne_zero]
state_before: case inr.refine_1.inr
a b : Ordinal.{u_1}
ha : 0 < a
hab✝ : a * (b % a ^ ω) = b % a ^ ω
hab : a ^ ω ≤ b % a ^ ω
⊢ a ≠ 0
state_after: no goals

tactic: exact hab
state_before: case inr.refine_1.inl
a b : Ordinal.{u_1}
ha : 0 < a
hab✝ : a * (b % a ^ ω) = b % a ^ ω
hab : b % a ^ ω = 0
⊢ b % a ^ ω = 0
state_after: no goals
Theorem: IsAntichain.image
File: Mathlib/Order/Antichain.lean

tactic: rintro _ ⟨b, hb, rfl⟩ _ ⟨c, hc, rfl⟩ hbc hr
state_before: α : Type u_1
β : Type u_2
r r₁ r₂ : α → α → Prop
r' : β → β → Prop
s t : Set α
a b : α
hs : IsAntichain r s
f : α → β
h : ∀ ⦃a b : α⦄, r' (f a) (f b) → r a b
⊢ IsAntichain r' (f '' s)
state_after: case intro.intro.intro.intro
α : Type u_1
β : Type u_2
r r₁ r₂ : α → α → Prop
r' : β → β → Prop
s t : Set α
a b✝ : α
hs : IsAntichain r s
f : α → β
h : ∀ ⦃a b : α⦄, r' (f a) (f b) → r a b
b : α
hb : b ∈ s
c : α
hc : c ∈ s
hbc : f b ≠ f c
hr : r' (f b) (f c)
⊢ False

tactic: exact hs hb hc (ne_of_apply_ne _ hbc) (h hr)
state_before: case intro.intro.intro.intro
α : Type u_1
β : Type u_2
r r₁ r₂ : α → α → Prop
r' : β → β → Prop
s t : Set α
a b✝ : α
hs : IsAntichain r s
f : α → β
h : ∀ ⦃a b : α⦄, r' (f a) (f b) → r a b
b : α
hb : b ∈ s
c : α
hc : c ∈ s
hbc : f b ≠ f c
hr : r' (f b) (f c)
⊢ False
state_after: no goals
Theorem: Nat.primesBelow_zero
File: Mathlib/NumberTheory/SmoothNumbers.lean

tactic: rw [primesBelow, Finset.range_zero, Finset.filter_empty]
state_before: ⊢ primesBelow 0 = ∅
state_after: no goals
Theorem: CategoryTheory.ShortComplex.rightHomologyι_descOpcycles_π_eq_zero_of_boundary
File: Mathlib/Algebra/Homology/ShortComplex/RightHomology.lean

tactic: rw [hx, S.zero_assoc, zero_comp]
state_before: C : Type u_1
inst✝² : Category.{?u.218948, u_1} C
inst✝¹ : HasZeroMorphisms C
S S₁ S₂ S₃ : ShortComplex C
h : S.RightHomologyData
A : C
k : S.X₂ ⟶ A
hk : S.f ≫ k = 0
inst✝ : S.HasRightHomology
x : S.X₃ ⟶ A
hx : k = S.g ≫ x
⊢ S.f ≫ k = 0
state_after: no goals
Theorem: ENNReal.ofReal_pow
File: Mathlib/Data/ENNReal/Real.lean

tactic: rw [ofReal_eq_coe_nnreal hp, ← coe_pow, ← ofReal_coe_nnreal, NNReal.coe_pow, NNReal.coe_mk]
state_before: a b c d : ℝ≥0∞
r p✝ q : ℝ≥0
p : ℝ
hp : 0 ≤ p
n : ℕ
⊢ ENNReal.ofReal (p ^ n) = ENNReal.ofReal p ^ n
state_after: no goals
Theorem: Multiset.Ico_self
File: Mathlib/Order/Interval/Multiset.lean

tactic: rw [Ico, Finset.Ico_self, Finset.empty_val]
state_before: α : Type u_1
inst✝¹ : Preorder α
inst✝ : LocallyFiniteOrder α
a b c : α
⊢ Ico a a = 0
state_after: no goals
Theorem: Set.Iio_mul_Iic_subset'
File: Mathlib/Data/Set/Pointwise/Interval.lean

tactic: haveI := covariantClass_le_of_lt
state_before: α : Type u_1
inst✝³ : Mul α
inst✝² : PartialOrder α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x < x_1
inst✝ : CovariantClass α α (Function.swap HMul.hMul) LT.lt
a b : α
⊢ Iio a * Iic b ⊆ Iio (a * b)
state_after: α : Type u_1
inst✝³ : Mul α
inst✝² : PartialOrder α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x < x_1
inst✝ : CovariantClass α α (Function.swap HMul.hMul) LT.lt
a b : α
this :
  ∀ (M : Type ?u.10568) (N : Type ?u.10567) (μ : M → N → N) [inst : PartialOrder N]
    [inst_1 : CovariantClass M N μ fun x x_1 => x < x_1], CovariantClass M N μ fun x x_1 => x ≤ x_1
⊢ Iio a * Iic b ⊆ Iio (a * b)

tactic: rintro x ⟨y, hya, z, hzb, rfl⟩
state_before: α : Type u_1
inst✝³ : Mul α
inst✝² : PartialOrder α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x < x_1
inst✝ : CovariantClass α α (Function.swap HMul.hMul) LT.lt
a b : α
this :
  ∀ (M : Type ?u.10568) (N : Type ?u.10567) (μ : M → N → N) [inst : PartialOrder N]
    [inst_1 : CovariantClass M N μ fun x x_1 => x < x_1], CovariantClass M N μ fun x x_1 => x ≤ x_1
⊢ Iio a * Iic b ⊆ Iio (a * b)
state_after: case intro.intro.intro.intro
α : Type u_1
inst✝³ : Mul α
inst✝² : PartialOrder α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x < x_1
inst✝ : CovariantClass α α (Function.swap HMul.hMul) LT.lt
a b : α
this :
  ∀ (M : Type ?u.10568) (N : Type ?u.10567) (μ : M → N → N) [inst : PartialOrder N]
    [inst_1 : CovariantClass M N μ fun x x_1 => x < x_1], CovariantClass M N μ fun x x_1 => x ≤ x_1
y : α
hya : y ∈ Iio a
z : α
hzb : z ∈ Iic b
⊢ (fun x x_1 => x * x_1) y z ∈ Iio (a * b)

tactic: exact mul_lt_mul_of_lt_of_le hya hzb
state_before: case intro.intro.intro.intro
α : Type u_1
inst✝³ : Mul α
inst✝² : PartialOrder α
inst✝¹ : CovariantClass α α (fun x x_1 => x * x_1) fun x x_1 => x < x_1
inst✝ : CovariantClass α α (Function.swap HMul.hMul) LT.lt
a b : α
this :
  ∀ (M : Type ?u.10568) (N : Type ?u.10567) (μ : M → N → N) [inst : PartialOrder N]
    [inst_1 : CovariantClass M N μ fun x x_1 => x < x_1], CovariantClass M N μ fun x x_1 => x ≤ x_1
y : α
hya : y ∈ Iio a
z : α
hzb : z ∈ Iic b
⊢ (fun x x_1 => x * x_1) y z ∈ Iio (a * b)
state_after: no goals
Theorem: MeasurableSpace.generateFrom_iUnion_memPartition_le
File: Mathlib/MeasureTheory/MeasurableSpace/CountablyGenerated.lean

tactic: refine (generateFrom_iUnion_memPartition t).trans_le (generateFrom_le ?_)
state_before: α : Type u_1
β : Type u_2
m : MeasurableSpace α
t : ℕ → Set α
ht : ∀ (n : ℕ), MeasurableSet (t n)
⊢ generateFrom (⋃ n, memPartition t n) ≤ m
state_after: α : Type u_1
β : Type u_2
m : MeasurableSpace α
t : ℕ → Set α
ht : ∀ (n : ℕ), MeasurableSet (t n)
⊢ ∀ t_1 ∈ range t, MeasurableSet t_1

tactic: rintro s ⟨i, rfl⟩
state_before: α : Type u_1
β : Type u_2
m : MeasurableSpace α
t : ℕ → Set α
ht : ∀ (n : ℕ), MeasurableSet (t n)
⊢ ∀ t_1 ∈ range t, MeasurableSet t_1
state_after: case intro
α : Type u_1
β : Type u_2
m : MeasurableSpace α
t : ℕ → Set α
ht : ∀ (n : ℕ), MeasurableSet (t n)
i : ℕ
⊢ MeasurableSet (t i)

tactic: exact ht i
state_before: case intro
α : Type u_1
β : Type u_2
m : MeasurableSpace α
t : ℕ → Set α
ht : ∀ (n : ℕ), MeasurableSet (t n)
i : ℕ
⊢ MeasurableSet (t i)
state_after: no goals
Theorem: frontier_Iic'
File: Mathlib/Topology/Order/DenselyOrdered.lean

tactic: simp [frontier, ha]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝³ : TopologicalSpace α
inst✝² : LinearOrder α
inst✝¹ : OrderTopology α
inst✝ : DenselyOrdered α
a✝ b : α
s : Set α
a : α
ha : (Ioi a).Nonempty
⊢ frontier (Iic a) = {a}
state_after: no goals
Theorem: Matrix.add_mul
File: Mathlib/Data/Matrix/Basic.lean

tactic: ext
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✝¹ : NonUnitalNonAssocSemiring α
inst✝ : Fintype m
L M : Matrix l m α
N : Matrix m n α
⊢ (L + M) * N = L * N + M * N
state_after: case a
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✝¹ : NonUnitalNonAssocSemiring α
inst✝ : Fintype m
L M : Matrix l m α
N : Matrix m n α
i✝ : l
j✝ : n
⊢ ((L + M) * N) i✝ j✝ = (L * N + M * N) i✝ j✝

tactic: apply add_dotProduct
state_before: case a
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✝¹ : NonUnitalNonAssocSemiring α
inst✝ : Fintype m
L M : Matrix l m α
N : Matrix m n α
i✝ : l
j✝ : n
⊢ ((L + M) * N) i✝ j✝ = (L * N + M * N) i✝ j✝
state_after: no goals
Theorem: Stream'.const_eq
File: Mathlib/Data/Stream/Init.lean

tactic: apply Stream'.ext
state_before: α : Type u
β : Type v
δ : Type w
a : α
⊢ const a = a :: const a
state_after: case a
α : Type u
β : Type v
δ : Type w
a : α
⊢ ∀ (n : ℕ), (const a).get n = (a :: const a).get n

tactic: intro n
state_before: case a
α : Type u
β : Type v
δ : Type w
a : α
⊢ ∀ (n : ℕ), (const a).get n = (a :: const a).get n
state_after: case a
α : Type u
β : Type v
δ : Type w
a : α
n : ℕ
⊢ (const a).get n = (a :: const a).get n

tactic: cases n <;> rfl
state_before: case a
α : Type u
β : Type v
δ : Type w
a : α
n : ℕ
⊢ (const a).get n = (a :: const a).get n
state_after: no goals
Theorem: inv_mul_cancel_comm_assoc
File: Mathlib/Algebra/Group/Defs.lean

tactic: rw [mul_comm, mul_inv_cancel_right]
state_before: G : Type u_1
inst✝ : CommGroup G
a b : G
⊢ a⁻¹ * (b * a) = b
state_after: no goals
Theorem: Wbtw.map
File: Mathlib/Analysis/Convex/Between.lean

tactic: rw [Wbtw, ← affineSegment_image]
state_before: R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x y z : P
h : Wbtw R x y z
f : P →ᵃ[R] P'
⊢ Wbtw R (f x) (f y) (f z)
state_after: R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x y z : P
h : Wbtw R x y z
f : P →ᵃ[R] P'
⊢ f y ∈ ⇑f '' affineSegment R x z

tactic: exact Set.mem_image_of_mem _ h
state_before: R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : OrderedRing R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
x y z : P
h : Wbtw R x y z
f : P →ᵃ[R] P'
⊢ f y ∈ ⇑f '' affineSegment R x z
state_after: no goals