1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: SetTheory.PGame.isOption_neg
File: Mathlib/SetTheory/Game/PGame.lean

tactic: rw [isOption_iff, isOption_iff, or_comm]
state_before: xl xr : Type u
x y : PGame
⊢ x.IsOption (-y) ↔ (-x).IsOption y
state_after: xl xr : Type u
x y : PGame
⊢ ((∃ i, x = (-y).moveRight i) ∨ ∃ i, x = (-y).moveLeft i) ↔ (∃ i, -x = y.moveLeft i) ∨ ∃ i, -x = y.moveRight i

tactic: cases y
state_before: xl xr : Type u
x y : PGame
⊢ ((∃ i, x = (-y).moveRight i) ∨ ∃ i, x = (-y).moveLeft i) ↔ (∃ i, -x = y.moveLeft i) ∨ ∃ i, -x = y.moveRight i
state_after: case mk
xl xr : Type u
x : PGame
α✝ β✝ : Type u_1
a✝¹ : α✝ → PGame
a✝ : β✝ → PGame
⊢ ((∃ i, x = (-mk α✝ β✝ a✝¹ a✝).moveRight i) ∨ ∃ i, x = (-mk α✝ β✝ a✝¹ a✝).moveLeft i) ↔
    (∃ i, -x = (mk α✝ β✝ a✝¹ a✝).moveLeft i) ∨ ∃ i, -x = (mk α✝ β✝ a✝¹ a✝).moveRight i

tactic: apply exists_congr
state_before: case mk.h₂
xl xr : Type u
x : PGame
α✝ β✝ : Type u_1
a✝¹ : α✝ → PGame
a✝ : β✝ → PGame
⊢ (∃ i, x = (-mk α✝ β✝ a✝¹ a✝).moveLeft i) ↔ ∃ i, -x = (mk α✝ β✝ a✝¹ a✝).moveRight i
state_after: case mk.h₂.h
xl xr : Type u
x : PGame
α✝ β✝ : Type u_1
a✝¹ : α✝ → PGame
a✝ : β✝ → PGame
⊢ ∀ (a : (-mk α✝ β✝ a✝¹ a✝).LeftMoves), x = (-mk α✝ β✝ a✝¹ a✝).moveLeft a ↔ -x = (mk α✝ β✝ a✝¹ a✝).moveRight a

tactic: intro
state_before: case mk.h₂.h
xl xr : Type u
x : PGame
α✝ β✝ : Type u_1
a✝¹ : α✝ → PGame
a✝ : β✝ → PGame
⊢ ∀ (a : (-mk α✝ β✝ a✝¹ a✝).LeftMoves), x = (-mk α✝ β✝ a✝¹ a✝).moveLeft a ↔ -x = (mk α✝ β✝ a✝¹ a✝).moveRight a
state_after: case mk.h₂.h
xl xr : Type u
x : PGame
α✝ β✝ : Type u_1
a✝² : α✝ → PGame
a✝¹ : β✝ → PGame
a✝ : (-mk α✝ β✝ a✝² a✝¹).LeftMoves
⊢ x = (-mk α✝ β✝ a✝² a✝¹).moveLeft a✝ ↔ -x = (mk α✝ β✝ a✝² a✝¹).moveRight a✝

tactic: rw [neg_eq_iff_eq_neg]
state_before: case mk.h₂.h
xl xr : Type u
x : PGame
α✝ β✝ : Type u_1
a✝² : α✝ → PGame
a✝¹ : β✝ → PGame
a✝ : (-mk α✝ β✝ a✝² a✝¹).LeftMoves
⊢ x = (-mk α✝ β✝ a✝² a✝¹).moveLeft a✝ ↔ -x = (mk α✝ β✝ a✝² a✝¹).moveRight a✝
state_after: case mk.h₂.h
xl xr : Type u
x : PGame
α✝ β✝ : Type u_1
a✝² : α✝ → PGame
a✝¹ : β✝ → PGame
a✝ : (-mk α✝ β✝ a✝² a✝¹).LeftMoves
⊢ x = (-mk α✝ β✝ a✝² a✝¹).moveLeft a✝ ↔ x = -(mk α✝ β✝ a✝² a✝¹).moveRight a✝

tactic: rfl
state_before: case mk.h₂.h
xl xr : Type u
x : PGame
α✝ β✝ : Type u_1
a✝² : α✝ → PGame
a✝¹ : β✝ → PGame
a✝ : (-mk α✝ β✝ a✝² a✝¹).LeftMoves
⊢ x = (-mk α✝ β✝ a✝² a✝¹).moveLeft a✝ ↔ x = -(mk α✝ β✝ a✝² a✝¹).moveRight a✝
state_after: no goals
Theorem: IntermediateField.finiteDimensional_adjoin
File: Mathlib/FieldTheory/Adjoin.lean

tactic: rw [← biSup_adjoin_simple, ← iSup_subtype'']
state_before: F : Type u_1
inst✝⁷ : Field F
E : Type u_2
inst✝⁶ : Field E
inst✝⁵ : Algebra F E
α : E
K : Type u
inst✝⁴ : Field K
inst✝³ : Algebra F K
L : Type u_3
inst✝² : Field L
inst✝¹ : Algebra K L
S : Set L
inst✝ : Finite ↑S
hS : ∀ x ∈ S, IsIntegral K x
⊢ FiniteDimensional K ↥(adjoin K S)
state_after: F : Type u_1
inst✝⁷ : Field F
E : Type u_2
inst✝⁶ : Field E
inst✝⁵ : Algebra F E
α : E
K : Type u
inst✝⁴ : Field K
inst✝³ : Algebra F K
L : Type u_3
inst✝² : Field L
inst✝¹ : Algebra K L
S : Set L
inst✝ : Finite ↑S
hS : ∀ x ∈ S, IsIntegral K x
⊢ FiniteDimensional K ↥(⨆ i, K⟮↑i⟯)

tactic: haveI (x : S) := adjoin.finiteDimensional (hS x.1 x.2)
state_before: F : Type u_1
inst✝⁷ : Field F
E : Type u_2
inst✝⁶ : Field E
inst✝⁵ : Algebra F E
α : E
K : Type u
inst✝⁴ : Field K
inst✝³ : Algebra F K
L : Type u_3
inst✝² : Field L
inst✝¹ : Algebra K L
S : Set L
inst✝ : Finite ↑S
hS : ∀ x ∈ S, IsIntegral K x
⊢ FiniteDimensional K ↥(⨆ i, K⟮↑i⟯)
state_after: F : Type u_1
inst✝⁷ : Field F
E : Type u_2
inst✝⁶ : Field E
inst✝⁵ : Algebra F E
α : E
K : Type u
inst✝⁴ : Field K
inst✝³ : Algebra F K
L : Type u_3
inst✝² : Field L
inst✝¹ : Algebra K L
S : Set L
inst✝ : Finite ↑S
hS : ∀ x ∈ S, IsIntegral K x
this : ∀ (x : ↑S), FiniteDimensional K ↥K⟮↑x⟯
⊢ FiniteDimensional K ↥(⨆ i, K⟮↑i⟯)

tactic: exact finiteDimensional_iSup_of_finite
state_before: F : Type u_1
inst✝⁷ : Field F
E : Type u_2
inst✝⁶ : Field E
inst✝⁵ : Algebra F E
α : E
K : Type u
inst✝⁴ : Field K
inst✝³ : Algebra F K
L : Type u_3
inst✝² : Field L
inst✝¹ : Algebra K L
S : Set L
inst✝ : Finite ↑S
hS : ∀ x ∈ S, IsIntegral K x
this : ∀ (x : ↑S), FiniteDimensional K ↥K⟮↑x⟯
⊢ FiniteDimensional K ↥(⨆ i, K⟮↑i⟯)
state_after: no goals
Theorem: GaussianInt.toComplex_inj
File: Mathlib/NumberTheory/Zsqrtd/GaussianInt.lean

tactic: cases x
state_before: x y : ℤ[i]
⊢ toComplex x = toComplex y ↔ x = y
state_after: case mk
y : ℤ[i]
re✝ im✝ : ℤ
⊢ toComplex { re := re✝, im := im✝ } = toComplex y ↔ { re := re✝, im := im✝ } = y

tactic: cases y
state_before: case mk
y : ℤ[i]
re✝ im✝ : ℤ
⊢ toComplex { re := re✝, im := im✝ } = toComplex y ↔ { re := re✝, im := im✝ } = y
state_after: case mk.mk
re✝¹ im✝¹ re✝ im✝ : ℤ
⊢ toComplex { re := re✝¹, im := im✝¹ } = toComplex { re := re✝, im := im✝ } ↔
    { re := re✝¹, im := im✝¹ } = { re := re✝, im := im✝ }

tactic: simp [toComplex_def₂]
state_before: case mk.mk
re✝¹ im✝¹ re✝ im✝ : ℤ
⊢ toComplex { re := re✝¹, im := im✝¹ } = toComplex { re := re✝, im := im✝ } ↔
    { re := re✝¹, im := im✝¹ } = { re := re✝, im := im✝ }
state_after: no goals
Theorem: Disjoint.sup_sdiff_cancel_left
File: Mathlib/Order/Heyting/Basic.lean

tactic: rw [sup_sdiff, sdiff_self, bot_sup_eq, h.sdiff_eq_right]
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
inst✝ : GeneralizedCoheytingAlgebra α
a b c d : α
h : Disjoint a b
⊢ (a ⊔ b) \ a = b
state_after: no goals
Theorem: LiouvilleNumber.remainder_lt'
File: Mathlib/NumberTheory/Liouville/LiouvilleNumber.lean

tactic: simp only [pow_add, one_div, mul_inv, inv_pow]
state_before: n : ℕ
m : ℝ
m1 : 1 < m
m0 : 0 < m
mi : 1 / m < 1
⊢ ∑' (i : ℕ), 1 / m ^ (i + (n + 1)!) = ∑' (i : ℕ), (1 / m) ^ i * (1 / m ^ (n + 1)!)
state_after: no goals

tactic: rw [tsum_geometric_of_lt_one (by positivity) mi]
state_before: n : ℕ
m : ℝ
m1 : 1 < m
m0 : 0 < m
mi : 1 / m < 1
⊢ (∑' (i : ℕ), (1 / m) ^ i) * (1 / m ^ (n + 1)!) = (1 - 1 / m)⁻¹ * (1 / m ^ (n + 1)!)
state_after: no goals

tactic: positivity
state_before: n : ℕ
m : ℝ
m1 : 1 < m
m0 : 0 < m
mi : 1 / m < 1
⊢ 0 ≤ 1 / m
state_after: no goals
Theorem: Real.log_le_sub_one_of_pos
File: Mathlib/Analysis/SpecialFunctions/Log/Basic.lean

tactic: rw [le_sub_iff_add_le]
state_before: x✝ y x : ℝ
hx : 0 < x
⊢ log x ≤ x - 1
state_after: x✝ y x : ℝ
hx : 0 < x
⊢ log x + 1 ≤ x

tactic: convert add_one_le_exp (log x)
state_before: x✝ y x : ℝ
hx : 0 < x
⊢ log x + 1 ≤ x
state_after: case h.e'_4
x✝ y x : ℝ
hx : 0 < x
⊢ x = rexp (log x)

tactic: rw [exp_log hx]
state_before: case h.e'_4
x✝ y x : ℝ
hx : 0 < x
⊢ x = rexp (log x)
state_after: no goals
Theorem: IsLocalization.algebraMap_eq_map_map_submonoid
File: Mathlib/RingTheory/Localization/Basic.lean

tactic: rw [← IsScalarTower.algebraMap_apply R S Sₘ, ← IsScalarTower.algebraMap_apply R Rₘ Sₘ]
state_before: R : Type u_1
inst✝¹² : CommRing R
M : Submonoid R
S : Type u_2
inst✝¹¹ : CommRing S
inst✝¹⁰ : Algebra R S
P : Type u_3
inst✝⁹ : CommRing P
Rₘ : Type u_4
Sₘ : Type u_5
inst✝⁸ : CommRing Rₘ
inst✝⁷ : CommRing Sₘ
inst✝⁶ : Algebra R Rₘ
inst✝⁵ : IsLocalization M Rₘ
inst✝⁴ : Algebra S Sₘ
i : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝³ : Algebra Rₘ Sₘ
inst✝² : Algebra R Sₘ
inst✝¹ : IsScalarTower R Rₘ Sₘ
inst✝ : IsScalarTower R S Sₘ
x : R
⊢ (algebraMap Rₘ Sₘ) ((algebraMap R Rₘ) x) = (algebraMap S Sₘ) ((algebraMap R S) x)
state_after: no goals
Theorem: ContinuousAt.comp_lowerSemicontinuousAt
File: Mathlib/Topology/Semicontinuous.lean

tactic: simp only [← lowerSemicontinuousWithinAt_univ_iff] at hf ⊢
state_before: α : Type u_1
inst✝⁸ : TopologicalSpace α
β : Type u_2
inst✝⁷ : Preorder β
f✝ g✝ : α → β
x : α
s t : Set α
y z : β
γ : Type u_3
inst✝⁶ : LinearOrder γ
inst✝⁵ : TopologicalSpace γ
inst✝⁴ : OrderTopology γ
δ : Type u_4
inst✝³ : LinearOrder δ
inst✝² : TopologicalSpace δ
inst✝¹ : OrderTopology δ
ι : Type u_5
inst✝ : TopologicalSpace ι
g : γ → δ
f : α → γ
hg : ContinuousAt g (f x)
hf : LowerSemicontinuousAt f x
gmon : Monotone g
⊢ LowerSemicontinuousAt (g ∘ f) x
state_after: α : Type u_1
inst✝⁸ : TopologicalSpace α
β : Type u_2
inst✝⁷ : Preorder β
f✝ g✝ : α → β
x : α
s t : Set α
y z : β
γ : Type u_3
inst✝⁶ : LinearOrder γ
inst✝⁵ : TopologicalSpace γ
inst✝⁴ : OrderTopology γ
δ : Type u_4
inst✝³ : LinearOrder δ
inst✝² : TopologicalSpace δ
inst✝¹ : OrderTopology δ
ι : Type u_5
inst✝ : TopologicalSpace ι
g : γ → δ
f : α → γ
hg : ContinuousAt g (f x)
gmon : Monotone g
hf : LowerSemicontinuousWithinAt f univ x
⊢ LowerSemicontinuousWithinAt (g ∘ f) univ x

tactic: exact hg.comp_lowerSemicontinuousWithinAt hf gmon
state_before: α : Type u_1
inst✝⁸ : TopologicalSpace α
β : Type u_2
inst✝⁷ : Preorder β
f✝ g✝ : α → β
x : α
s t : Set α
y z : β
γ : Type u_3
inst✝⁶ : LinearOrder γ
inst✝⁵ : TopologicalSpace γ
inst✝⁴ : OrderTopology γ
δ : Type u_4
inst✝³ : LinearOrder δ
inst✝² : TopologicalSpace δ
inst✝¹ : OrderTopology δ
ι : Type u_5
inst✝ : TopologicalSpace ι
g : γ → δ
f : α → γ
hg : ContinuousAt g (f x)
gmon : Monotone g
hf : LowerSemicontinuousWithinAt f univ x
⊢ LowerSemicontinuousWithinAt (g ∘ f) univ x
state_after: no goals
Theorem: tsub_min
File: Mathlib/Algebra/Order/Sub/Canonical.lean

tactic: rcases le_total a b with h | h
state_before: α : Type u_1
inst✝² : CanonicallyLinearOrderedAddCommMonoid α
inst✝¹ : Sub α
inst✝ : OrderedSub α
a b c d : α
⊢ a - min a b = a - b
state_after: case inl
α : Type u_1
inst✝² : CanonicallyLinearOrderedAddCommMonoid α
inst✝¹ : Sub α
inst✝ : OrderedSub α
a b c d : α
h : a ≤ b
⊢ a - min a b = a - b

case inr
α : Type u_1
inst✝² : CanonicallyLinearOrderedAddCommMonoid α
inst✝¹ : Sub α
inst✝ : OrderedSub α
a b c d : α
h : b ≤ a
⊢ a - min a b = a - b

tactic: rw [min_eq_left h, tsub_self, tsub_eq_zero_of_le h]
state_before: case inl
α : Type u_1
inst✝² : CanonicallyLinearOrderedAddCommMonoid α
inst✝¹ : Sub α
inst✝ : OrderedSub α
a b c d : α
h : a ≤ b
⊢ a - min a b = a - b
state_after: no goals

tactic: rw [min_eq_right h]
state_before: case inr
α : Type u_1
inst✝² : CanonicallyLinearOrderedAddCommMonoid α
inst✝¹ : Sub α
inst✝ : OrderedSub α
a b c d : α
h : b ≤ a
⊢ a - min a b = a - b
state_after: no goals
Theorem: WithBot.add_bot
File: Mathlib/Algebra/Order/Monoid/WithTop.lean

tactic: cases a <;> rfl
state_before: α : Type u
β : Type v
inst✝ : Add α
a✝ b c d : WithBot α
x y : α
a : WithBot α
⊢ a + ⊥ = ⊥
state_after: no goals
Theorem: Finset.Ico_diff_Ico_right
File: Mathlib/Order/Interval/Finset/Basic.lean

tactic: cases le_total b c with
| inl h => rw [Ico_eq_empty_of_le h, sdiff_empty, min_eq_left h]
| inr h =>
  ext x
  rw [mem_sdiff, mem_Ico, mem_Ico, mem_Ico, min_eq_right h, and_assoc, not_and', not_le]
  exact and_congr_right' ⟨fun hx => hx.2 hx.1, fun hx => ⟨hx.trans_le h, fun _ => hx⟩⟩
state_before: ι : Type u_1
α : Type u_2
inst✝¹ : LinearOrder α
inst✝ : LocallyFiniteOrder α
a✝ b✝ a b c : α
⊢ Ico a b \ Ico c b = Ico a (min b c)
state_after: no goals

tactic: rw [Ico_eq_empty_of_le h, sdiff_empty, min_eq_left h]
state_before: case inl
ι : Type u_1
α : Type u_2
inst✝¹ : LinearOrder α
inst✝ : LocallyFiniteOrder α
a✝ b✝ a b c : α
h : b ≤ c
⊢ Ico a b \ Ico c b = Ico a (min b c)
state_after: no goals

tactic: ext x
state_before: case inr
ι : Type u_1
α : Type u_2
inst✝¹ : LinearOrder α
inst✝ : LocallyFiniteOrder α
a✝ b✝ a b c : α
h : c ≤ b
⊢ Ico a b \ Ico c b = Ico a (min b c)
state_after: case inr.a
ι : Type u_1
α : Type u_2
inst✝¹ : LinearOrder α
inst✝ : LocallyFiniteOrder α
a✝ b✝ a b c : α
h : c ≤ b
x : α
⊢ x ∈ Ico a b \ Ico c b ↔ x ∈ Ico a (min b c)

tactic: rw [mem_sdiff, mem_Ico, mem_Ico, mem_Ico, min_eq_right h, and_assoc, not_and', not_le]
state_before: case inr.a
ι : Type u_1
α : Type u_2
inst✝¹ : LinearOrder α
inst✝ : LocallyFiniteOrder α
a✝ b✝ a b c : α
h : c ≤ b
x : α
⊢ x ∈ Ico a b \ Ico c b ↔ x ∈ Ico a (min b c)
state_after: case inr.a
ι : Type u_1
α : Type u_2
inst✝¹ : LinearOrder α
inst✝ : LocallyFiniteOrder α
a✝ b✝ a b c : α
h : c ≤ b
x : α
⊢ a ≤ x ∧ x < b ∧ (x < b → x < c) ↔ a ≤ x ∧ x < c

tactic: exact and_congr_right' ⟨fun hx => hx.2 hx.1, fun hx => ⟨hx.trans_le h, fun _ => hx⟩⟩
state_before: case inr.a
ι : Type u_1
α : Type u_2
inst✝¹ : LinearOrder α
inst✝ : LocallyFiniteOrder α
a✝ b✝ a b c : α
h : c ≤ b
x : α
⊢ a ≤ x ∧ x < b ∧ (x < b → x < c) ↔ a ≤ x ∧ x < c
state_after: no goals
Theorem: Finset.image₂_left
File: Mathlib/Data/Finset/NAry.lean

tactic: push_cast
state_before: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
γ' : Type u_6
δ : Type u_7
δ' : Type u_8
ε : Type u_9
ε' : Type u_10
ζ : Type u_11
ζ' : Type u_12
ν : Type u_13
inst✝⁸ : DecidableEq α'
inst✝⁷ : DecidableEq β'
inst✝⁶ : DecidableEq γ
inst✝⁵ : DecidableEq γ'
inst✝⁴ : DecidableEq δ
inst✝³ : DecidableEq δ'
inst✝² : DecidableEq ε
inst✝¹ : DecidableEq ε'
f f' : α → β → γ
g g' : α → β → γ → δ
s s' : Finset α
t t' : Finset β
u u' : Finset γ
a a' : α
b b' : β
c : γ
inst✝ : DecidableEq α
h : t.Nonempty
⊢ ↑(image₂ (fun x x_1 => x) s t) = ↑s
state_after: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
γ' : Type u_6
δ : Type u_7
δ' : Type u_8
ε : Type u_9
ε' : Type u_10
ζ : Type u_11
ζ' : Type u_12
ν : Type u_13
inst✝⁸ : DecidableEq α'
inst✝⁷ : DecidableEq β'
inst✝⁶ : DecidableEq γ
inst✝⁵ : DecidableEq γ'
inst✝⁴ : DecidableEq δ
inst✝³ : DecidableEq δ'
inst✝² : DecidableEq ε
inst✝¹ : DecidableEq ε'
f f' : α → β → γ
g g' : α → β → γ → δ
s s' : Finset α
t t' : Finset β
u u' : Finset γ
a a' : α
b b' : β
c : γ
inst✝ : DecidableEq α
h : t.Nonempty
⊢ image2 (fun x x_1 => x) ↑s ↑t = ↑s

tactic: exact image2_left h
state_before: α : Type u_1
α' : Type u_2
β : Type u_3
β' : Type u_4
γ : Type u_5
γ' : Type u_6
δ : Type u_7
δ' : Type u_8
ε : Type u_9
ε' : Type u_10
ζ : Type u_11
ζ' : Type u_12
ν : Type u_13
inst✝⁸ : DecidableEq α'
inst✝⁷ : DecidableEq β'
inst✝⁶ : DecidableEq γ
inst✝⁵ : DecidableEq γ'
inst✝⁴ : DecidableEq δ
inst✝³ : DecidableEq δ'
inst✝² : DecidableEq ε
inst✝¹ : DecidableEq ε'
f f' : α → β → γ
g g' : α → β → γ → δ
s s' : Finset α
t t' : Finset β
u u' : Finset γ
a a' : α
b b' : β
c : γ
inst✝ : DecidableEq α
h : t.Nonempty
⊢ image2 (fun x x_1 => x) ↑s ↑t = ↑s
state_after: no goals
Theorem: Set.uIcc_injective_left
File: Mathlib/Order/Interval/Set/UnorderedInterval.lean

tactic: simpa only [uIcc_comm] using uIcc_injective_right a
state_before: α : Type u_1
β : Type u_2
inst✝ : DistribLattice α
a✝ a₁ a₂ b b₁ b₂ c x a : α
⊢ Injective (uIcc a)
state_after: no goals
Theorem: WeierstrassCurve.Jacobian.dblZ_of_Y_eq
File: Mathlib/AlgebraicGeometry/EllipticCurve/Jacobian.lean

tactic: rw [dblZ, Y_eq_negY_of_Y_eq hQz hx hy hy', sub_self, mul_zero]
state_before: R : Type u
inst✝² : CommRing R
W' : Jacobian R
F : Type v
inst✝¹ : Field F
W : Jacobian F
inst✝ : NoZeroDivisors R
P Q : Fin 3 → R
hQz : Q z ≠ 0
hx : P x * Q z ^ 2 = Q x * P z ^ 2
hy : P y * Q z ^ 3 = Q y * P z ^ 3
hy' : P y * Q z ^ 3 = W'.negY Q * P z ^ 3
⊢ W'.dblZ P = 0
state_after: no goals
Theorem: SetTheory.PGame.birthday_moveLeft_lt
File: Mathlib/SetTheory/Game/Birthday.lean

tactic: cases x
state_before: x : PGame
i : x.LeftMoves
⊢ (x.moveLeft i).birthday < x.birthday
state_after: case mk
α✝ β✝ : Type u_1
a✝¹ : α✝ → PGame
a✝ : β✝ → PGame
i : (mk α✝ β✝ a✝¹ a✝).LeftMoves
⊢ ((mk α✝ β✝ a✝¹ a✝).moveLeft i).birthday < (mk α✝ β✝ a✝¹ a✝).birthday

tactic: rw [birthday]
state_before: case mk
α✝ β✝ : Type u_1
a✝¹ : α✝ → PGame
a✝ : β✝ → PGame
i : (mk α✝ β✝ a✝¹ a✝).LeftMoves
⊢ ((mk α✝ β✝ a✝¹ a✝).moveLeft i).birthday < (mk α✝ β✝ a✝¹ a✝).birthday
state_after: case mk
α✝ β✝ : Type u_1
a✝¹ : α✝ → PGame
a✝ : β✝ → PGame
i : (mk α✝ β✝ a✝¹ a✝).LeftMoves
⊢ ((mk α✝ β✝ a✝¹ a✝).moveLeft i).birthday < max (lsub fun i => (a✝¹ i).birthday) (lsub fun i => (a✝ i).birthday)

tactic: exact lt_max_of_lt_left (lt_lsub _ i)
state_before: case mk
α✝ β✝ : Type u_1
a✝¹ : α✝ → PGame
a✝ : β✝ → PGame
i : (mk α✝ β✝ a✝¹ a✝).LeftMoves
⊢ ((mk α✝ β✝ a✝¹ a✝).moveLeft i).birthday < max (lsub fun i => (a✝¹ i).birthday) (lsub fun i => (a✝ i).birthday)
state_after: no goals
Theorem: Filter.HasBasis.liminf_eq_sSup_iUnion_iInter
File: Mathlib/Order/LiminfLimsup.lean

tactic: simp_rw [liminf_eq, hv.eventually_iff]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι✝ : Type u_4
ι'✝ : Type u_5
inst✝ : ConditionallyCompleteLattice α
ι : Type u_6
ι' : Type u_7
f : ι → α
v : Filter ι
p : ι' → Prop
s : ι' → Set ι
hv : v.HasBasis p s
⊢ liminf f v = sSup (⋃ j, ⋂ i, Iic (f ↑i))
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
ι✝ : Type u_4
ι'✝ : Type u_5
inst✝ : ConditionallyCompleteLattice α
ι : Type u_6
ι' : Type u_7
f : ι → α
v : Filter ι
p : ι' → Prop
s : ι' → Set ι
hv : v.HasBasis p s
⊢ sSup {a | ∃ i, p i ∧ ∀ ⦃x : ι⦄, x ∈ s i → a ≤ f x} = sSup (⋃ j, ⋂ i, Iic (f ↑i))

tactic: congr
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι✝ : Type u_4
ι'✝ : Type u_5
inst✝ : ConditionallyCompleteLattice α
ι : Type u_6
ι' : Type u_7
f : ι → α
v : Filter ι
p : ι' → Prop
s : ι' → Set ι
hv : v.HasBasis p s
⊢ sSup {a | ∃ i, p i ∧ ∀ ⦃x : ι⦄, x ∈ s i → a ≤ f x} = sSup (⋃ j, ⋂ i, Iic (f ↑i))
state_after: case e_a
α : Type u_1
β : Type u_2
γ : Type u_3
ι✝ : Type u_4
ι'✝ : Type u_5
inst✝ : ConditionallyCompleteLattice α
ι : Type u_6
ι' : Type u_7
f : ι → α
v : Filter ι
p : ι' → Prop
s : ι' → Set ι
hv : v.HasBasis p s
⊢ {a | ∃ i, p i ∧ ∀ ⦃x : ι⦄, x ∈ s i → a ≤ f x} = ⋃ j, ⋂ i, Iic (f ↑i)

tactic: ext x
state_before: case e_a
α : Type u_1
β : Type u_2
γ : Type u_3
ι✝ : Type u_4
ι'✝ : Type u_5
inst✝ : ConditionallyCompleteLattice α
ι : Type u_6
ι' : Type u_7
f : ι → α
v : Filter ι
p : ι' → Prop
s : ι' → Set ι
hv : v.HasBasis p s
⊢ {a | ∃ i, p i ∧ ∀ ⦃x : ι⦄, x ∈ s i → a ≤ f x} = ⋃ j, ⋂ i, Iic (f ↑i)
state_after: case e_a.h
α : Type u_1
β : Type u_2
γ : Type u_3
ι✝ : Type u_4
ι'✝ : Type u_5
inst✝ : ConditionallyCompleteLattice α
ι : Type u_6
ι' : Type u_7
f : ι → α
v : Filter ι
p : ι' → Prop
s : ι' → Set ι
hv : v.HasBasis p s
x : α
⊢ x ∈ {a | ∃ i, p i ∧ ∀ ⦃x : ι⦄, x ∈ s i → a ≤ f x} ↔ x ∈ ⋃ j, ⋂ i, Iic (f ↑i)

tactic: simp only [mem_setOf_eq, iInter_coe_set, mem_iUnion, mem_iInter, mem_Iic, Subtype.exists,
  exists_prop]
state_before: case e_a.h
α : Type u_1
β : Type u_2
γ : Type u_3
ι✝ : Type u_4
ι'✝ : Type u_5
inst✝ : ConditionallyCompleteLattice α
ι : Type u_6
ι' : Type u_7
f : ι → α
v : Filter ι
p : ι' → Prop
s : ι' → Set ι
hv : v.HasBasis p s
x : α
⊢ x ∈ {a | ∃ i, p i ∧ ∀ ⦃x : ι⦄, x ∈ s i → a ≤ f x} ↔ x ∈ ⋃ j, ⋂ i, Iic (f ↑i)
state_after: no goals
Theorem: EReal.preimage_coe_Ico
File: Mathlib/Data/Real/EReal.lean

tactic: simp_rw [← Ici_inter_Iio]
state_before: x y : ℝ
⊢ Real.toEReal ⁻¹' Ico ↑x ↑y = Ico x y
state_after: x y : ℝ
⊢ Real.toEReal ⁻¹' (Ici ↑x ∩ Iio ↑y) = Ici x ∩ Iio y

tactic: simp
state_before: x y : ℝ
⊢ Real.toEReal ⁻¹' (Ici ↑x ∩ Iio ↑y) = Ici x ∩ Iio y
state_after: no goals
Theorem: LinearMap.trace_comp_cycle'
File: Mathlib/LinearAlgebra/Trace.lean

tactic: rw [trace_comp_comm', ← comp_assoc]
state_before: R : Type u_1
inst✝¹² : CommRing R
M : Type u_2
inst✝¹¹ : AddCommGroup M
inst✝¹⁰ : Module R M
N : Type u_3
P : Type u_4
inst✝⁹ : AddCommGroup N
inst✝⁸ : Module R N
inst✝⁷ : AddCommGroup P
inst✝⁶ : Module R P
ι : Type u_5
inst✝⁵ : Module.Free R M
inst✝⁴ : Module.Finite R M
inst✝³ : Module.Free R N
inst✝² : Module.Finite R N
inst✝¹ : Module.Free R P
inst✝ : Module.Finite R P
f : M →ₗ[R] N
g : N →ₗ[R] P
h : P →ₗ[R] M
⊢ (trace R P) ((g ∘ₗ f) ∘ₗ h) = (trace R M) ((h ∘ₗ g) ∘ₗ f)
state_after: no goals
Theorem: PartENat.coe_le_iff
File: Mathlib/Data/Nat/PartENat.lean

tactic: simp only [le_def, exists_prop_of_true, dom_some, forall_true_iff]
state_before: n : ℕ
x : PartENat
⊢ ↑n ≤ x ↔ ∀ (h : x.Dom), n ≤ x.get h
state_after: n : ℕ
x : PartENat
⊢ (∀ (hy : x.Dom), (↑n).get ⋯ ≤ x.get hy) ↔ ∀ (h : x.Dom), n ≤ x.get h

tactic: rfl
state_before: n : ℕ
x : PartENat
⊢ (∀ (hy : x.Dom), (↑n).get ⋯ ≤ x.get hy) ↔ ∀ (h : x.Dom), n ≤ x.get h
state_after: no goals
Theorem: Nat.zero_descFactorial_succ
File: Mathlib/Data/Nat/Factorial/Basic.lean

tactic: rw [descFactorial_succ, Nat.zero_sub, Nat.zero_mul]
state_before: k : ℕ
⊢ descFactorial 0 (k + 1) = 0
state_after: no goals
Theorem: BoxIntegral.integralSum_smul
File: Mathlib/Analysis/BoxIntegral/Basic.lean

tactic: simp only [integralSum, Finset.smul_sum, Pi.smul_apply, ContinuousLinearMap.map_smul]
state_before: ι : Type u
E : Type v
F : Type w
inst✝³ : NormedAddCommGroup E
inst✝² : NormedSpace ℝ E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace ℝ F
I J : Box ι
π✝ : TaggedPrepartition I
c : ℝ
f : (ι → ℝ) → E
vol : ι →ᵇᵃ[⊤] E →L[ℝ] F
π : TaggedPrepartition I
⊢ integralSum (c • f) vol π = c • integralSum f vol π
state_after: no goals
Theorem: Matroid.ground_not_base
File: Mathlib/Data/Matroid/Dual.lean

tactic: rwa [rkPos_iff_empty_not_base, dual_base_iff, diff_empty] at h
state_before: α : Type u_1
M✝ : Matroid α
I B X : Set α
M : Matroid α
h : M✶.RkPos
⊢ ¬M.Base M.E
state_after: no goals
Theorem: Polynomial.dvd_content_iff_C_dvd
File: Mathlib/RingTheory/Polynomial/Content.lean

tactic: rw [C_dvd_iff_dvd_coeff]
state_before: R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : NormalizedGCDMonoid R
p : R[X]
r : R
⊢ r ∣ p.content ↔ C r ∣ p
state_after: R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : NormalizedGCDMonoid R
p : R[X]
r : R
⊢ r ∣ p.content ↔ ∀ (i : ℕ), r ∣ p.coeff i

tactic: constructor
state_before: R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : NormalizedGCDMonoid R
p : R[X]
r : R
⊢ r ∣ p.content ↔ ∀ (i : ℕ), r ∣ p.coeff i
state_after: case mp
R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : NormalizedGCDMonoid R
p : R[X]
r : R
⊢ r ∣ p.content → ∀ (i : ℕ), r ∣ p.coeff i

case mpr
R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : NormalizedGCDMonoid R
p : R[X]
r : R
⊢ (∀ (i : ℕ), r ∣ p.coeff i) → r ∣ p.content

tactic: intro h i
state_before: case mp
R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : NormalizedGCDMonoid R
p : R[X]
r : R
⊢ r ∣ p.content → ∀ (i : ℕ), r ∣ p.coeff i
state_after: case mp
R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : NormalizedGCDMonoid R
p : R[X]
r : R
h : r ∣ p.content
i : ℕ
⊢ r ∣ p.coeff i

tactic: apply h.trans (content_dvd_coeff _)
state_before: case mp
R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : NormalizedGCDMonoid R
p : R[X]
r : R
h : r ∣ p.content
i : ℕ
⊢ r ∣ p.coeff i
state_after: no goals

tactic: intro h
state_before: case mpr
R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : NormalizedGCDMonoid R
p : R[X]
r : R
⊢ (∀ (i : ℕ), r ∣ p.coeff i) → r ∣ p.content
state_after: case mpr
R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : NormalizedGCDMonoid R
p : R[X]
r : R
h : ∀ (i : ℕ), r ∣ p.coeff i
⊢ r ∣ p.content

tactic: rw [content, Finset.dvd_gcd_iff]
state_before: case mpr
R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : NormalizedGCDMonoid R
p : R[X]
r : R
h : ∀ (i : ℕ), r ∣ p.coeff i
⊢ r ∣ p.content
state_after: case mpr
R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : NormalizedGCDMonoid R
p : R[X]
r : R
h : ∀ (i : ℕ), r ∣ p.coeff i
⊢ ∀ b ∈ p.support, r ∣ p.coeff b

tactic: intro i _
state_before: case mpr
R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : NormalizedGCDMonoid R
p : R[X]
r : R
h : ∀ (i : ℕ), r ∣ p.coeff i
⊢ ∀ b ∈ p.support, r ∣ p.coeff b
state_after: case mpr
R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : NormalizedGCDMonoid R
p : R[X]
r : R
h : ∀ (i : ℕ), r ∣ p.coeff i
i : ℕ
a✝ : i ∈ p.support
⊢ r ∣ p.coeff i

tactic: apply h i
state_before: case mpr
R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : NormalizedGCDMonoid R
p : R[X]
r : R
h : ∀ (i : ℕ), r ∣ p.coeff i
i : ℕ
a✝ : i ∈ p.support
⊢ r ∣ p.coeff i
state_after: no goals