1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: WeierstrassCurve.Jacobian.addX_self
File: Mathlib/AlgebraicGeometry/EllipticCurve/Jacobian.lean

tactic: linear_combination (norm := (rw [addX]; ring1)) -2 * P z ^ 2 * (equation_iff _).mp hP
state_before: R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P : Fin 3 → R
hP : W'.Equation P
⊢ W'.addX P P = 0
state_after: no goals

tactic: rw [addX]
state_before: case a
R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P : Fin 3 → R
hP : W'.Equation P
⊢ W'.addX P P - 0 -
      (-2 * P z ^ 2 *
          (P y ^ 2 + W'.a₁ * P x * P y * P z + W'.a₃ * P y * P z ^ 3 -
            (P x ^ 3 + W'.a₂ * P x ^ 2 * P z ^ 2 + W'.a₄ * P x * P z ^ 4 + W'.a₆ * P z ^ 6)) -
        -2 * P z ^ 2 * 0) =
    0
state_after: case a
R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P : Fin 3 → R
hP : W'.Equation P
⊢ P x * P x ^ 2 * P z ^ 2 - 2 * P y * P y * P z * P z + P x ^ 2 * P x * P z ^ 2 - W'.a₁ * P x * P y * P z ^ 2 * P z -
                      W'.a₁ * P y * P x * P z * P z ^ 2 +
                    2 * W'.a₂ * P x * P x * P z ^ 2 * P z ^ 2 -
                  W'.a₃ * P y * P z ^ 4 * P z -
                W'.a₃ * P y * P z * P z ^ 4 +
              W'.a₄ * P x * P z ^ 4 * P z ^ 2 +
            W'.a₄ * P x * P z ^ 2 * P z ^ 4 +
          2 * W'.a₆ * P z ^ 4 * P z ^ 4 -
        0 -
      (-2 * P z ^ 2 *
          (P y ^ 2 + W'.a₁ * P x * P y * P z + W'.a₃ * P y * P z ^ 3 -
            (P x ^ 3 + W'.a₂ * P x ^ 2 * P z ^ 2 + W'.a₄ * P x * P z ^ 4 + W'.a₆ * P z ^ 6)) -
        -2 * P z ^ 2 * 0) =
    0

tactic: ring1
state_before: case a
R : Type u
inst✝¹ : CommRing R
W' : Jacobian R
F : Type v
inst✝ : Field F
W : Jacobian F
P : Fin 3 → R
hP : W'.Equation P
⊢ P x * P x ^ 2 * P z ^ 2 - 2 * P y * P y * P z * P z + P x ^ 2 * P x * P z ^ 2 - W'.a₁ * P x * P y * P z ^ 2 * P z -
                      W'.a₁ * P y * P x * P z * P z ^ 2 +
                    2 * W'.a₂ * P x * P x * P z ^ 2 * P z ^ 2 -
                  W'.a₃ * P y * P z ^ 4 * P z -
                W'.a₃ * P y * P z * P z ^ 4 +
              W'.a₄ * P x * P z ^ 4 * P z ^ 2 +
            W'.a₄ * P x * P z ^ 2 * P z ^ 4 +
          2 * W'.a₆ * P z ^ 4 * P z ^ 4 -
        0 -
      (-2 * P z ^ 2 *
          (P y ^ 2 + W'.a₁ * P x * P y * P z + W'.a₃ * P y * P z ^ 3 -
            (P x ^ 3 + W'.a₂ * P x ^ 2 * P z ^ 2 + W'.a₄ * P x * P z ^ 4 + W'.a₆ * P z ^ 6)) -
        -2 * P z ^ 2 * 0) =
    0
state_after: no goals
Theorem: CochainComplex.HomComplex.Cochain.rightUnshift_add
File: Mathlib/Algebra/Homology/HomotopyCategory/HomComplexShift.lean

tactic: change (rightShiftAddEquiv K L n a n' hn).symm (γ₁ + γ₂) = _
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
R : Type u_1
inst✝¹ : Ring R
inst✝ : Linear R C
K L M : CochainComplex C ℤ
n✝ : ℤ
γ γ₁✝ γ₂✝ : Cochain K L n✝
n' a : ℤ
γ₁ γ₂ : Cochain K ((CategoryTheory.shiftFunctor (CochainComplex C ℤ) a).obj L) n'
n : ℤ
hn : n' + a = n
⊢ (γ₁ + γ₂).rightUnshift n hn = γ₁.rightUnshift n hn + γ₂.rightUnshift n hn
state_after: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
R : Type u_1
inst✝¹ : Ring R
inst✝ : Linear R C
K L M : CochainComplex C ℤ
n✝ : ℤ
γ γ₁✝ γ₂✝ : Cochain K L n✝
n' a : ℤ
γ₁ γ₂ : Cochain K ((CategoryTheory.shiftFunctor (CochainComplex C ℤ) a).obj L) n'
n : ℤ
hn : n' + a = n
⊢ (rightShiftAddEquiv K L n a n' hn).symm (γ₁ + γ₂) = γ₁.rightUnshift n hn + γ₂.rightUnshift n hn

tactic: apply _root_.map_add
state_before: C : Type u
inst✝³ : Category.{v, u} C
inst✝² : Preadditive C
R : Type u_1
inst✝¹ : Ring R
inst✝ : Linear R C
K L M : CochainComplex C ℤ
n✝ : ℤ
γ γ₁✝ γ₂✝ : Cochain K L n✝
n' a : ℤ
γ₁ γ₂ : Cochain K ((CategoryTheory.shiftFunctor (CochainComplex C ℤ) a).obj L) n'
n : ℤ
hn : n' + a = n
⊢ (rightShiftAddEquiv K L n a n' hn).symm (γ₁ + γ₂) = γ₁.rightUnshift n hn + γ₂.rightUnshift n hn
state_after: no goals
Theorem: Polynomial.Chebyshev.aeval_T
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Chebyshev.lean

tactic: rw [aeval_def, eval₂_eq_eval_map, map_T]
state_before: R : Type u_1
A : Type u_2
inst✝² : CommRing R
inst✝¹ : CommRing A
inst✝ : Algebra R A
x : A
n : ℤ
⊢ (aeval x) (T R n) = eval x (T A n)
state_after: no goals
Theorem: Nat.bit_eq_zero
File: Mathlib/Data/Nat/Bitwise.lean

tactic: cases b <;> simp [Nat.bit0_eq_zero, Nat.bit1_ne_zero]
state_before: n : ℕ
b : Bool
⊢ bit b n = 0 ↔ n = 0 ∧ b = false
state_after: no goals
Theorem: CategoryTheory.ShortComplex.SnakeInput.exact_C₃_down
File: Mathlib/Algebra/Homology/ShortComplex/SnakeLemma.lean

tactic: rw [← comp_τ₃, S.w₁₃, zero_τ₃]
state_before: C : Type u_1
inst✝¹ : Category.{?u.41290, u_1} C
inst✝ : Abelian C
S : SnakeInput C
⊢ S.v₁₂.τ₃ ≫ S.v₂₃.τ₃ = 0
state_after: no goals
Theorem: not_linearIndependent_iff
File: Mathlib/LinearAlgebra/LinearIndependent.lean

tactic: rw [linearIndependent_iff']
state_before: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M
inst✝⁶ : Semiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid M'
inst✝³ : AddCommMonoid M''
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M''
a b : R
x y : M
⊢ ¬LinearIndependent R v ↔ ∃ s g, ∑ i ∈ s, g i • v i = 0 ∧ ∃ i ∈ s, g i ≠ 0
state_after: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M
inst✝⁶ : Semiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid M'
inst✝³ : AddCommMonoid M''
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M''
a b : R
x y : M
⊢ (¬∀ (s : Finset ι) (g : ι → R), ∑ i ∈ s, g i • v i = 0 → ∀ i ∈ s, g i = 0) ↔
    ∃ s g, ∑ i ∈ s, g i • v i = 0 ∧ ∃ i ∈ s, g i ≠ 0

tactic: simp only [exists_prop, not_forall]
state_before: ι : Type u'
ι' : Type u_1
R : Type u_2
K : Type u_3
M : Type u_4
M' : Type u_5
M'' : Type u_6
V : Type u
V' : Type u_7
v : ι → M
inst✝⁶ : Semiring R
inst✝⁵ : AddCommMonoid M
inst✝⁴ : AddCommMonoid M'
inst✝³ : AddCommMonoid M''
inst✝² : Module R M
inst✝¹ : Module R M'
inst✝ : Module R M''
a b : R
x y : M
⊢ (¬∀ (s : Finset ι) (g : ι → R), ∑ i ∈ s, g i • v i = 0 → ∀ i ∈ s, g i = 0) ↔
    ∃ s g, ∑ i ∈ s, g i • v i = 0 ∧ ∃ i ∈ s, g i ≠ 0
state_after: no goals
Theorem: Urysohns.CU.approx_le_approx_of_U_sub_C
File: Mathlib/Topology/UrysohnsLemma.lean

tactic: by_cases hx : x ∈ c₁.U
state_before: X : Type u_1
inst✝ : TopologicalSpace X
P : Set X → Prop
c₁ c₂ : CU P
h : c₁.U ⊆ c₂.C
n₁ n₂ : ℕ
x : X
⊢ approx n₂ c₂ x ≤ approx n₁ c₁ x
state_after: case pos
X : Type u_1
inst✝ : TopologicalSpace X
P : Set X → Prop
c₁ c₂ : CU P
h : c₁.U ⊆ c₂.C
n₁ n₂ : ℕ
x : X
hx : x ∈ c₁.U
⊢ approx n₂ c₂ x ≤ approx n₁ c₁ x

case neg
X : Type u_1
inst✝ : TopologicalSpace X
P : Set X → Prop
c₁ c₂ : CU P
h : c₁.U ⊆ c₂.C
n₁ n₂ : ℕ
x : X
hx : x ∉ c₁.U
⊢ approx n₂ c₂ x ≤ approx n₁ c₁ x

tactic: calc
  approx n₂ c₂ x = 0 := approx_of_mem_C _ _ (h hx)
  _ ≤ approx n₁ c₁ x := approx_nonneg _ _ _
state_before: case pos
X : Type u_1
inst✝ : TopologicalSpace X
P : Set X → Prop
c₁ c₂ : CU P
h : c₁.U ⊆ c₂.C
n₁ n₂ : ℕ
x : X
hx : x ∈ c₁.U
⊢ approx n₂ c₂ x ≤ approx n₁ c₁ x
state_after: no goals

tactic: calc
  approx n₂ c₂ x ≤ 1 := approx_le_one _ _ _
  _ = approx n₁ c₁ x := (approx_of_nmem_U _ _ hx).symm
state_before: case neg
X : Type u_1
inst✝ : TopologicalSpace X
P : Set X → Prop
c₁ c₂ : CU P
h : c₁.U ⊆ c₂.C
n₁ n₂ : ℕ
x : X
hx : x ∉ c₁.U
⊢ approx n₂ c₂ x ≤ approx n₁ c₁ x
state_after: no goals
Theorem: IsCoprime.of_mul_add_left_left
File: Mathlib/RingTheory/Coprime/Basic.lean

tactic: rw [add_comm] at h
state_before: R : Type u
inst✝ : CommSemiring R
x y z : R
h : IsCoprime (y * z + x) y
⊢ IsCoprime x y
state_after: R : Type u
inst✝ : CommSemiring R
x y z : R
h : IsCoprime (x + y * z) y
⊢ IsCoprime x y

tactic: exact h.of_add_mul_left_left
state_before: R : Type u
inst✝ : CommSemiring R
x y z : R
h : IsCoprime (x + y * z) y
⊢ IsCoprime x y
state_after: no goals
Theorem: finrank_vectorSpan_range_le
File: Mathlib/LinearAlgebra/AffineSpace/FiniteDimensional.lean

tactic: classical
rw [← Set.image_univ, ← Finset.coe_univ, ← Finset.coe_image]
rw [← Finset.card_univ] at hc
exact finrank_vectorSpan_image_finset_le _ _ _ hc
state_before: k : Type u_1
V : Type u_2
P : Type u_3
ι : Type u_4
inst✝⁴ : DivisionRing k
inst✝³ : AddCommGroup V
inst✝² : Module k V
inst✝¹ : AffineSpace V P
inst✝ : Fintype ι
p : ι → P
n : ℕ
hc : Fintype.card ι = n + 1
⊢ finrank k ↥(vectorSpan k (Set.range p)) ≤ n
state_after: no goals

tactic: rw [← Set.image_univ, ← Finset.coe_univ, ← Finset.coe_image]
state_before: k : Type u_1
V : Type u_2
P : Type u_3
ι : Type u_4
inst✝⁴ : DivisionRing k
inst✝³ : AddCommGroup V
inst✝² : Module k V
inst✝¹ : AffineSpace V P
inst✝ : Fintype ι
p : ι → P
n : ℕ
hc : Fintype.card ι = n + 1
⊢ finrank k ↥(vectorSpan k (Set.range p)) ≤ n
state_after: k : Type u_1
V : Type u_2
P : Type u_3
ι : Type u_4
inst✝⁴ : DivisionRing k
inst✝³ : AddCommGroup V
inst✝² : Module k V
inst✝¹ : AffineSpace V P
inst✝ : Fintype ι
p : ι → P
n : ℕ
hc : Fintype.card ι = n + 1
⊢ finrank k ↥(vectorSpan k ↑(Finset.image p Finset.univ)) ≤ n

tactic: rw [← Finset.card_univ] at hc
state_before: k : Type u_1
V : Type u_2
P : Type u_3
ι : Type u_4
inst✝⁴ : DivisionRing k
inst✝³ : AddCommGroup V
inst✝² : Module k V
inst✝¹ : AffineSpace V P
inst✝ : Fintype ι
p : ι → P
n : ℕ
hc : Fintype.card ι = n + 1
⊢ finrank k ↥(vectorSpan k ↑(Finset.image p Finset.univ)) ≤ n
state_after: k : Type u_1
V : Type u_2
P : Type u_3
ι : Type u_4
inst✝⁴ : DivisionRing k
inst✝³ : AddCommGroup V
inst✝² : Module k V
inst✝¹ : AffineSpace V P
inst✝ : Fintype ι
p : ι → P
n : ℕ
hc : Finset.univ.card = n + 1
⊢ finrank k ↥(vectorSpan k ↑(Finset.image p Finset.univ)) ≤ n

tactic: exact finrank_vectorSpan_image_finset_le _ _ _ hc
state_before: k : Type u_1
V : Type u_2
P : Type u_3
ι : Type u_4
inst✝⁴ : DivisionRing k
inst✝³ : AddCommGroup V
inst✝² : Module k V
inst✝¹ : AffineSpace V P
inst✝ : Fintype ι
p : ι → P
n : ℕ
hc : Finset.univ.card = n + 1
⊢ finrank k ↥(vectorSpan k ↑(Finset.image p Finset.univ)) ≤ n
state_after: no goals
Theorem: CategoryTheory.MorphismProperty.RightFraction.op_map
File: Mathlib/CategoryTheory/Localization/CalculusOfFractions.lean

tactic: dsimp [map, LeftFraction.map]
state_before: C : Type u_1
D : Type u_2
inst✝² : Category.{u_3, u_1} C
inst✝¹ : Category.{u_4, u_2} D
L✝ : C ⥤ D
W : MorphismProperty C
inst✝ : L✝.IsLocalization W
X Y : C
φ : W.RightFraction X Y
L : C ⥤ D
hL : W.IsInvertedBy L
⊢ (φ.map L hL).op = φ.op.map L.op ⋯
state_after: C : Type u_1
D : Type u_2
inst✝² : Category.{u_3, u_1} C
inst✝¹ : Category.{u_4, u_2} D
L✝ : C ⥤ D
W : MorphismProperty C
inst✝ : L✝.IsLocalization W
X Y : C
φ : W.RightFraction X Y
L : C ⥤ D
hL : W.IsInvertedBy L
⊢ (L.map φ.f).op ≫ (inv (L.map φ.s)).op = (L.map φ.f).op ≫ inv (L.map φ.s).op

tactic: rw [op_inv]
state_before: C : Type u_1
D : Type u_2
inst✝² : Category.{u_3, u_1} C
inst✝¹ : Category.{u_4, u_2} D
L✝ : C ⥤ D
W : MorphismProperty C
inst✝ : L✝.IsLocalization W
X Y : C
φ : W.RightFraction X Y
L : C ⥤ D
hL : W.IsInvertedBy L
⊢ (L.map φ.f).op ≫ (inv (L.map φ.s)).op = (L.map φ.f).op ≫ inv (L.map φ.s).op
state_after: no goals
Theorem: CategoryTheory.Abelian.Exact.unop_iff
File: Mathlib/CategoryTheory/Abelian/Exact.lean

tactic: rwa [← f.op_unop, ← g.op_unop, ← Exact.op_iff] at e
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : Abelian C
X✝ Y✝ Z✝ : C
f✝ : X✝ ⟶ Y✝
g✝ : Y✝ ⟶ Z✝
X Y Z : Cᵒᵖ
g : X ⟶ Y
f : Y ⟶ Z
e : Exact f.unop g.unop
⊢ Exact g f
state_after: no goals

tactic: rw [← Exact.op_iff]
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : Abelian C
X✝ Y✝ Z✝ : C
f✝ : X✝ ⟶ Y✝
g✝ : Y✝ ⟶ Z✝
X Y Z : Cᵒᵖ
g : X ⟶ Y
f : Y ⟶ Z
e : Exact g f
⊢ Exact f.unop g.unop
state_after: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : Abelian C
X✝ Y✝ Z✝ : C
f✝ : X✝ ⟶ Y✝
g✝ : Y✝ ⟶ Z✝
X Y Z : Cᵒᵖ
g : X ⟶ Y
f : Y ⟶ Z
e : Exact g f
⊢ Exact g.unop.op f.unop.op

tactic: exact e
state_before: C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : Abelian C
X✝ Y✝ Z✝ : C
f✝ : X✝ ⟶ Y✝
g✝ : Y✝ ⟶ Z✝
X Y Z : Cᵒᵖ
g : X ⟶ Y
f : Y ⟶ Z
e : Exact g f
⊢ Exact g.unop.op f.unop.op
state_after: no goals
Theorem: Filter.OrderTop.atTop_eq
File: Mathlib/Order/Filter/AtTopBot.lean

tactic: rw [isTop_top.atTop_eq, Ici_top, principal_singleton]
state_before: ι : Type u_1
ι' : Type u_2
α✝ : Type u_3
β : Type u_4
γ : Type u_5
α : Type u_6
inst✝¹ : PartialOrder α
inst✝ : OrderTop α
⊢ atTop = pure ⊤
state_after: no goals
Theorem: Polynomial.degree_eq_iff_natDegree_eq
File: Mathlib/Algebra/Polynomial/Degree/Definitions.lean

tactic: rw [degree_eq_natDegree hp]
state_before: R : Type u
S : Type v
a b c d : R
n✝ m : ℕ
inst✝ : Semiring R
p✝ q r p : R[X]
n : ℕ
hp : p ≠ 0
⊢ p.degree = ↑n ↔ p.natDegree = n
state_after: R : Type u
S : Type v
a b c d : R
n✝ m : ℕ
inst✝ : Semiring R
p✝ q r p : R[X]
n : ℕ
hp : p ≠ 0
⊢ ↑p.natDegree = ↑n ↔ p.natDegree = n

tactic: exact WithBot.coe_eq_coe
state_before: R : Type u
S : Type v
a b c d : R
n✝ m : ℕ
inst✝ : Semiring R
p✝ q r p : R[X]
n : ℕ
hp : p ≠ 0
⊢ ↑p.natDegree = ↑n ↔ p.natDegree = n
state_after: no goals
Theorem: SimpleGraph.Walk.support_tail
File: Mathlib/Combinatorics/SimpleGraph/Connectivity.lean

tactic: rw [← cons_support_tail p hp, List.tail_cons]
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v w x y : V
p : G.Walk v v
hp : ¬p.Nil
⊢ (p.tail hp).support = p.support.tail
state_after: no goals
Theorem: Filter.comap_lift_eq
File: Mathlib/Order/Filter/Lift.lean

tactic: simp only [Filter.lift, comap_iInf]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
f f₁ f₂ : Filter α
g g₁ g₂ : Set α → Filter β
m : γ → β
⊢ comap m (f.lift g) = f.lift (comap m ∘ g)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
f f₁ f₂ : Filter α
g g₁ g₂ : Set α → Filter β
m : γ → β
⊢ ⨅ i ∈ f, comap m (g i) = ⨅ s ∈ f, (comap m ∘ g) s

tactic: rfl
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
f f₁ f₂ : Filter α
g g₁ g₂ : Set α → Filter β
m : γ → β
⊢ ⨅ i ∈ f, comap m (g i) = ⨅ s ∈ f, (comap m ∘ g) s
state_after: no goals
Theorem: Finset.sup'_cons
File: Mathlib/Data/Finset/Lattice.lean

tactic: rw [← WithBot.coe_eq_coe]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : SemilatticeSup α
s : Finset β
H : s.Nonempty
f : β → α
b : β
hb : b ∉ s
⊢ (cons b s hb).sup' ⋯ f = f b ⊔ s.sup' H f
state_after: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : SemilatticeSup α
s : Finset β
H : s.Nonempty
f : β → α
b : β
hb : b ∉ s
⊢ ↑((cons b s hb).sup' ⋯ f) = ↑(f b ⊔ s.sup' H f)

tactic: simp [WithBot.coe_sup]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : SemilatticeSup α
s : Finset β
H : s.Nonempty
f : β → α
b : β
hb : b ∉ s
⊢ ↑((cons b s hb).sup' ⋯ f) = ↑(f b ⊔ s.sup' H f)
state_after: no goals
Theorem: SetTheory.PGame.rightMoves_add_cases
File: Mathlib/SetTheory/Game/PGame.lean

tactic: rw [← toRightMovesAdd.apply_symm_apply k]
state_before: xl xr : Type u
x y : PGame
k : (x + y).RightMoves
P : (x + y).RightMoves → Prop
hl : ∀ (j : x.RightMoves), P (toRightMovesAdd (Sum.inl j))
hr : ∀ (j : y.RightMoves), P (toRightMovesAdd (Sum.inr j))
⊢ P k
state_after: xl xr : Type u
x y : PGame
k : (x + y).RightMoves
P : (x + y).RightMoves → Prop
hl : ∀ (j : x.RightMoves), P (toRightMovesAdd (Sum.inl j))
hr : ∀ (j : y.RightMoves), P (toRightMovesAdd (Sum.inr j))
⊢ P (toRightMovesAdd (toRightMovesAdd.symm k))

tactic: cases' toRightMovesAdd.symm k with i i
state_before: xl xr : Type u
x y : PGame
k : (x + y).RightMoves
P : (x + y).RightMoves → Prop
hl : ∀ (j : x.RightMoves), P (toRightMovesAdd (Sum.inl j))
hr : ∀ (j : y.RightMoves), P (toRightMovesAdd (Sum.inr j))
⊢ P (toRightMovesAdd (toRightMovesAdd.symm k))
state_after: case inl
xl xr : Type u
x y : PGame
k : (x + y).RightMoves
P : (x + y).RightMoves → Prop
hl : ∀ (j : x.RightMoves), P (toRightMovesAdd (Sum.inl j))
hr : ∀ (j : y.RightMoves), P (toRightMovesAdd (Sum.inr j))
i : x.RightMoves
⊢ P (toRightMovesAdd (Sum.inl i))

case inr
xl xr : Type u
x y : PGame
k : (x + y).RightMoves
P : (x + y).RightMoves → Prop
hl : ∀ (j : x.RightMoves), P (toRightMovesAdd (Sum.inl j))
hr : ∀ (j : y.RightMoves), P (toRightMovesAdd (Sum.inr j))
i : y.RightMoves
⊢ P (toRightMovesAdd (Sum.inr i))

tactic: exact hl i
state_before: case inl
xl xr : Type u
x y : PGame
k : (x + y).RightMoves
P : (x + y).RightMoves → Prop
hl : ∀ (j : x.RightMoves), P (toRightMovesAdd (Sum.inl j))
hr : ∀ (j : y.RightMoves), P (toRightMovesAdd (Sum.inr j))
i : x.RightMoves
⊢ P (toRightMovesAdd (Sum.inl i))
state_after: no goals

tactic: exact hr i
state_before: case inr
xl xr : Type u
x y : PGame
k : (x + y).RightMoves
P : (x + y).RightMoves → Prop
hl : ∀ (j : x.RightMoves), P (toRightMovesAdd (Sum.inl j))
hr : ∀ (j : y.RightMoves), P (toRightMovesAdd (Sum.inr j))
i : y.RightMoves
⊢ P (toRightMovesAdd (Sum.inr i))
state_after: no goals
Theorem: Nat.dvd_left_iff_eq
File: Mathlib/Data/Nat/Defs.lean

tactic: rw [h]
state_before: a b c d m n✝ k : ℕ
p q : ℕ → Prop
h : m = n✝
n : ℕ
⊢ n ∣ m ↔ n ∣ n✝
state_after: no goals
Theorem: OnePoint.comap_coe_nhds_infty
File: Mathlib/Topology/Compactification/OnePoint.lean

tactic: simp [nhds_infty_eq, comap_sup, comap_map coe_injective]
state_before: X : Type u_1
inst✝ : TopologicalSpace X
s : Set (OnePoint X)
t : Set X
⊢ comap some (𝓝 ∞) = coclosedCompact X
state_after: no goals
Theorem: Nat.clog_mono_right
File: Mathlib/Data/Nat/Log.lean

tactic: rcases le_or_lt b 1 with hb | hb
state_before: b n m : ℕ
h : n ≤ m
⊢ clog b n ≤ clog b m
state_after: case inl
b n m : ℕ
h : n ≤ m
hb : b ≤ 1
⊢ clog b n ≤ clog b m

case inr
b n m : ℕ
h : n ≤ m
hb : 1 < b
⊢ clog b n ≤ clog b m

tactic: rw [clog_of_left_le_one hb]
state_before: case inl
b n m : ℕ
h : n ≤ m
hb : b ≤ 1
⊢ clog b n ≤ clog b m
state_after: case inl
b n m : ℕ
h : n ≤ m
hb : b ≤ 1
⊢ 0 ≤ clog b m

tactic: exact zero_le _
state_before: case inl
b n m : ℕ
h : n ≤ m
hb : b ≤ 1
⊢ 0 ≤ clog b m
state_after: no goals

tactic: rw [← le_pow_iff_clog_le hb]
state_before: case inr
b n m : ℕ
h : n ≤ m
hb : 1 < b
⊢ clog b n ≤ clog b m
state_after: case inr
b n m : ℕ
h : n ≤ m
hb : 1 < b
⊢ n ≤ b ^ clog b m

tactic: exact h.trans (le_pow_clog hb _)
state_before: case inr
b n m : ℕ
h : n ≤ m
hb : 1 < b
⊢ n ≤ b ^ clog b m
state_after: no goals
Theorem: Diffeomorph.range_comp
File: Mathlib/Geometry/Manifold/Diffeomorph.lean

tactic: rw [range_comp, image_eq_preimage]
state_before: 𝕜 : Type u_1
inst✝¹⁸ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝¹⁷ : NormedAddCommGroup E
inst✝¹⁶ : NormedSpace 𝕜 E
E' : Type u_3
inst✝¹⁵ : NormedAddCommGroup E'
inst✝¹⁴ : NormedSpace 𝕜 E'
F : Type u_4
inst✝¹³ : NormedAddCommGroup F
inst✝¹² : NormedSpace 𝕜 F
H : Type u_5
inst✝¹¹ : TopologicalSpace H
H' : Type u_6
inst✝¹⁰ : TopologicalSpace H'
G : Type u_7
inst✝⁹ : TopologicalSpace G
G' : Type u_8
inst✝⁸ : TopologicalSpace G'
I : ModelWithCorners 𝕜 E H
I' : ModelWithCorners 𝕜 E' H'
J : ModelWithCorners 𝕜 F G
J' : ModelWithCorners 𝕜 F G'
M : Type u_9
inst✝⁷ : TopologicalSpace M
inst✝⁶ : ChartedSpace H M
M' : Type u_10
inst✝⁵ : TopologicalSpace M'
inst✝⁴ : ChartedSpace H' M'
N : Type u_11
inst✝³ : TopologicalSpace N
inst✝² : ChartedSpace G N
N' : Type u_12
inst✝¹ : TopologicalSpace N'
inst✝ : ChartedSpace G' N'
n : ℕ∞
α : Sort u_13
h : M ≃ₘ^n⟮I, J⟯ N
f : α → M
⊢ range (⇑h ∘ f) = ⇑h.symm ⁻¹' range f
state_after: no goals
Theorem: Topology.IsScott.closure_singleton
File: Mathlib/Topology/Order/ScottTopology.lean

tactic: rw [singleton_subset_iff, mem_Iic]
state_before: α : Type u_1
β : Type u_2
inst✝² : Preorder α
inst✝¹ : TopologicalSpace α
inst✝ : IsScott α
s : Set α
a : α
⊢ {a} ⊆ Iic a
state_after: no goals

tactic: rw [← LowerSet.coe_Iic, ← lowerClosure_singleton]
state_before: α : Type u_1
β : Type u_2
inst✝² : Preorder α
inst✝¹ : TopologicalSpace α
inst✝ : IsScott α
s : Set α
a : α
⊢ Iic a ≤ closure {a}
state_after: α : Type u_1
β : Type u_2
inst✝² : Preorder α
inst✝¹ : TopologicalSpace α
inst✝ : IsScott α
s : Set α
a : α
⊢ ↑(lowerClosure {a}) ≤ closure {a}

tactic: apply lowerClosure_subset_closure
state_before: α : Type u_1
β : Type u_2
inst✝² : Preorder α
inst✝¹ : TopologicalSpace α
inst✝ : IsScott α
s : Set α
a : α
⊢ ↑(lowerClosure {a}) ≤ closure {a}
state_after: no goals
Theorem: starConvex_zero_iff
File: Mathlib/Analysis/Convex/Star.lean

tactic: refine
  forall_congr' fun x => forall_congr' fun _ => ⟨fun h a ha₀ ha₁ => ?_, fun h a b ha hb hab => ?_⟩
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝² : OrderedRing 𝕜
inst✝¹ : AddCommMonoid E
inst✝ : SMulWithZero 𝕜 E
s : Set E
⊢ StarConvex 𝕜 0 s ↔ ∀ ⦃x : E⦄, x ∈ s → ∀ ⦃a : 𝕜⦄, 0 ≤ a → a ≤ 1 → a • x ∈ s
state_after: case refine_1
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝² : OrderedRing 𝕜
inst✝¹ : AddCommMonoid E
inst✝ : SMulWithZero 𝕜 E
s : Set E
x : E
x✝ : x ∈ s
h : ∀ ⦃a b : 𝕜⦄, 0 ≤ a → 0 ≤ b → a + b = 1 → a • 0 + b • x ∈ s
a : 𝕜
ha₀ : 0 ≤ a
ha₁ : a ≤ 1
⊢ a • x ∈ s

case refine_2
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝² : OrderedRing 𝕜
inst✝¹ : AddCommMonoid E
inst✝ : SMulWithZero 𝕜 E
s : Set E
x : E
x✝ : x ∈ s
h : ∀ ⦃a : 𝕜⦄, 0 ≤ a → a ≤ 1 → a • x ∈ s
a b : 𝕜
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
⊢ a • 0 + b • x ∈ s

tactic: simpa only [sub_add_cancel, eq_self_iff_true, forall_true_left, zero_add, smul_zero] using
  h (sub_nonneg_of_le ha₁) ha₀
state_before: case refine_1
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝² : OrderedRing 𝕜
inst✝¹ : AddCommMonoid E
inst✝ : SMulWithZero 𝕜 E
s : Set E
x : E
x✝ : x ∈ s
h : ∀ ⦃a b : 𝕜⦄, 0 ≤ a → 0 ≤ b → a + b = 1 → a • 0 + b • x ∈ s
a : 𝕜
ha₀ : 0 ≤ a
ha₁ : a ≤ 1
⊢ a • x ∈ s
state_after: no goals

tactic: rw [smul_zero, zero_add]
state_before: case refine_2
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝² : OrderedRing 𝕜
inst✝¹ : AddCommMonoid E
inst✝ : SMulWithZero 𝕜 E
s : Set E
x : E
x✝ : x ∈ s
h : ∀ ⦃a : 𝕜⦄, 0 ≤ a → a ≤ 1 → a • x ∈ s
a b : 𝕜
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
⊢ a • 0 + b • x ∈ s
state_after: case refine_2
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝² : OrderedRing 𝕜
inst✝¹ : AddCommMonoid E
inst✝ : SMulWithZero 𝕜 E
s : Set E
x : E
x✝ : x ∈ s
h : ∀ ⦃a : 𝕜⦄, 0 ≤ a → a ≤ 1 → a • x ∈ s
a b : 𝕜
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
⊢ b • x ∈ s

tactic: exact h hb (by rw [← hab]; exact le_add_of_nonneg_left ha)
state_before: case refine_2
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝² : OrderedRing 𝕜
inst✝¹ : AddCommMonoid E
inst✝ : SMulWithZero 𝕜 E
s : Set E
x : E
x✝ : x ∈ s
h : ∀ ⦃a : 𝕜⦄, 0 ≤ a → a ≤ 1 → a • x ∈ s
a b : 𝕜
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
⊢ b • x ∈ s
state_after: no goals

tactic: rw [← hab]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝² : OrderedRing 𝕜
inst✝¹ : AddCommMonoid E
inst✝ : SMulWithZero 𝕜 E
s : Set E
x : E
x✝ : x ∈ s
h : ∀ ⦃a : 𝕜⦄, 0 ≤ a → a ≤ 1 → a • x ∈ s
a b : 𝕜
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
⊢ b ≤ 1
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝² : OrderedRing 𝕜
inst✝¹ : AddCommMonoid E
inst✝ : SMulWithZero 𝕜 E
s : Set E
x : E
x✝ : x ∈ s
h : ∀ ⦃a : 𝕜⦄, 0 ≤ a → a ≤ 1 → a • x ∈ s
a b : 𝕜
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
⊢ b ≤ a + b

tactic: exact le_add_of_nonneg_left ha
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝² : OrderedRing 𝕜
inst✝¹ : AddCommMonoid E
inst✝ : SMulWithZero 𝕜 E
s : Set E
x : E
x✝ : x ∈ s
h : ∀ ⦃a : 𝕜⦄, 0 ≤ a → a ≤ 1 → a • x ∈ s
a b : 𝕜
ha : 0 ≤ a
hb : 0 ≤ b
hab : a + b = 1
⊢ b ≤ a + b
state_after: no goals