1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: AffineSubspace.wSameSide_iff_exists_right
File: Mathlib/Analysis/Convex/Side.lean

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

tactic: simp_rw [SameRay.sameRay_comm]
state_before: R : Type u_1
V : Type u_2
V' : Type u_3
P : Type u_4
P' : Type u_5
inst✝⁶ : LinearOrderedField R
inst✝⁵ : AddCommGroup V
inst✝⁴ : Module R V
inst✝³ : AddTorsor V P
inst✝² : AddCommGroup V'
inst✝¹ : Module R V'
inst✝ : AddTorsor V' P'
s : AffineSubspace R P
x y p₂ : P
h : p₂ ∈ s
⊢ (y ∈ s ∨ ∃ p₂_1 ∈ s, SameRay R (y -ᵥ p₂) (x -ᵥ p₂_1)) ↔ y ∈ s ∨ ∃ p₁ ∈ s, SameRay R (x -ᵥ p₁) (y -ᵥ p₂)
state_after: no goals
Theorem: Set.image_update_Ioc_left
File: Mathlib/Order/Interval/Set/Pi.lean

tactic: simpa using image_update_Ioc f i a (f i)
state_before: ι : Type u_1
α : ι → Type u_2
inst✝¹ : DecidableEq ι
inst✝ : (i : ι) → PartialOrder (α i)
f : (i : ι) → α i
i : ι
a : α i
⊢ update f i '' Ioc a (f i) = Ioc (update f i a) f
state_after: no goals
Theorem: ModelWithCorners.image_eq
File: Mathlib/Geometry/Manifold/SmoothManifoldWithCorners.lean

tactic: refine (I.toPartialEquiv.image_eq_target_inter_inv_preimage ?_).trans ?_
state_before: 𝕜 : Type u_1
inst✝³ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
H : Type u_3
inst✝ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
s : Set H
⊢ ↑I '' s = ↑I.symm ⁻¹' s ∩ range ↑I
state_after: case refine_1
𝕜 : Type u_1
inst✝³ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
H : Type u_3
inst✝ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
s : Set H
⊢ s ⊆ I.source

case refine_2
𝕜 : Type u_1
inst✝³ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
H : Type u_3
inst✝ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
s : Set H
⊢ I.target ∩ ↑I.symm ⁻¹' s = ↑I.symm ⁻¹' s ∩ range ↑I

tactic: rw [I.source_eq]
state_before: case refine_1
𝕜 : Type u_1
inst✝³ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
H : Type u_3
inst✝ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
s : Set H
⊢ s ⊆ I.source
state_after: case refine_1
𝕜 : Type u_1
inst✝³ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
H : Type u_3
inst✝ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
s : Set H
⊢ s ⊆ univ

tactic: exact subset_univ _
state_before: case refine_1
𝕜 : Type u_1
inst✝³ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
H : Type u_3
inst✝ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
s : Set H
⊢ s ⊆ univ
state_after: no goals

tactic: rw [inter_comm, I.target_eq, I.toPartialEquiv_coe_symm]
state_before: case refine_2
𝕜 : Type u_1
inst✝³ : NontriviallyNormedField 𝕜
E : Type u_2
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedSpace 𝕜 E
H : Type u_3
inst✝ : TopologicalSpace H
I : ModelWithCorners 𝕜 E H
s : Set H
⊢ I.target ∩ ↑I.symm ⁻¹' s = ↑I.symm ⁻¹' s ∩ range ↑I
state_after: no goals
Theorem: Pell.Solution₁.eq_zero_of_d_neg
File: Mathlib/NumberTheory/Pell.lean

tactic: have h := a.prop
state_before: d : ℤ
h₀ : d < 0
a : Solution₁ d
⊢ a.x = 0 ∨ a.y = 0
state_after: d : ℤ
h₀ : d < 0
a : Solution₁ d
h : a.x ^ 2 - d * a.y ^ 2 = 1
⊢ a.x = 0 ∨ a.y = 0

tactic: contrapose! h
state_before: d : ℤ
h₀ : d < 0
a : Solution₁ d
h : a.x ^ 2 - d * a.y ^ 2 = 1
⊢ a.x = 0 ∨ a.y = 0
state_after: d : ℤ
h₀ : d < 0
a : Solution₁ d
h : a.x ≠ 0 ∧ a.y ≠ 0
⊢ a.x ^ 2 - d * a.y ^ 2 ≠ 1

tactic: have h1 := sq_pos_of_ne_zero h.1
state_before: d : ℤ
h₀ : d < 0
a : Solution₁ d
h : a.x ≠ 0 ∧ a.y ≠ 0
⊢ a.x ^ 2 - d * a.y ^ 2 ≠ 1
state_after: d : ℤ
h₀ : d < 0
a : Solution₁ d
h : a.x ≠ 0 ∧ a.y ≠ 0
h1 : 0 < a.x ^ 2
⊢ a.x ^ 2 - d * a.y ^ 2 ≠ 1

tactic: have h2 := sq_pos_of_ne_zero h.2
state_before: d : ℤ
h₀ : d < 0
a : Solution₁ d
h : a.x ≠ 0 ∧ a.y ≠ 0
h1 : 0 < a.x ^ 2
⊢ a.x ^ 2 - d * a.y ^ 2 ≠ 1
state_after: d : ℤ
h₀ : d < 0
a : Solution₁ d
h : a.x ≠ 0 ∧ a.y ≠ 0
h1 : 0 < a.x ^ 2
h2 : 0 < a.y ^ 2
⊢ a.x ^ 2 - d * a.y ^ 2 ≠ 1

tactic: nlinarith
state_before: d : ℤ
h₀ : d < 0
a : Solution₁ d
h : a.x ≠ 0 ∧ a.y ≠ 0
h1 : 0 < a.x ^ 2
h2 : 0 < a.y ^ 2
⊢ a.x ^ 2 - d * a.y ^ 2 ≠ 1
state_after: no goals
Theorem: CharP.char_is_prime_of_two_le
File: Mathlib/Algebra/CharP/Defs.lean

tactic: omega
state_before: R : Type u_1
inst✝¹ : NonAssocSemiring R
inst✝ : NoZeroDivisors R
p : ℕ
hc : CharP R p
hp : 2 ≤ p
d : ℕ
hdvd : ∃ e, p = d * e
e : ℕ
hmul : p = d * e
this✝³ : ↑p = 0
this✝² : ↑d * ↑e = 0
he : ↑e = 0
this✝¹ : p ∣ e
this✝ : e ∣ p
this : e = p
⊢ 0 < p
state_after: no goals

tactic: rw [‹e = p›] at hmul
state_before: R : Type u_1
inst✝¹ : NonAssocSemiring R
inst✝ : NoZeroDivisors R
p : ℕ
hc : CharP R p
hp : 2 ≤ p
d : ℕ
hdvd : ∃ e, p = d * e
e : ℕ
hmul : p = d * e
this✝³ : ↑p = 0
this✝² : ↑d * ↑e = 0
he : ↑e = 0
this✝¹ : p ∣ e
this✝ : e ∣ p
this : e = p
h₀ : 0 < p
⊢ d * p = 1 * p
state_after: R : Type u_1
inst✝¹ : NonAssocSemiring R
inst✝ : NoZeroDivisors R
p : ℕ
hc : CharP R p
hp : 2 ≤ p
d : ℕ
hdvd : ∃ e, p = d * e
e : ℕ
hmul : p = d * p
this✝³ : ↑p = 0
this✝² : ↑d * ↑e = 0
he : ↑e = 0
this✝¹ : p ∣ e
this✝ : e ∣ p
this : e = p
h₀ : 0 < p
⊢ d * p = 1 * p

tactic: rw [one_mul]
state_before: R : Type u_1
inst✝¹ : NonAssocSemiring R
inst✝ : NoZeroDivisors R
p : ℕ
hc : CharP R p
hp : 2 ≤ p
d : ℕ
hdvd : ∃ e, p = d * e
e : ℕ
hmul : p = d * p
this✝³ : ↑p = 0
this✝² : ↑d * ↑e = 0
he : ↑e = 0
this✝¹ : p ∣ e
this✝ : e ∣ p
this : e = p
h₀ : 0 < p
⊢ d * p = 1 * p
state_after: R : Type u_1
inst✝¹ : NonAssocSemiring R
inst✝ : NoZeroDivisors R
p : ℕ
hc : CharP R p
hp : 2 ≤ p
d : ℕ
hdvd : ∃ e, p = d * e
e : ℕ
hmul : p = d * p
this✝³ : ↑p = 0
this✝² : ↑d * ↑e = 0
he : ↑e = 0
this✝¹ : p ∣ e
this✝ : e ∣ p
this : e = p
h₀ : 0 < p
⊢ d * p = p

tactic: exact Eq.symm hmul
state_before: R : Type u_1
inst✝¹ : NonAssocSemiring R
inst✝ : NoZeroDivisors R
p : ℕ
hc : CharP R p
hp : 2 ≤ p
d : ℕ
hdvd : ∃ e, p = d * e
e : ℕ
hmul : p = d * p
this✝³ : ↑p = 0
this✝² : ↑d * ↑e = 0
he : ↑e = 0
this✝¹ : p ∣ e
this✝ : e ∣ p
this : e = p
h₀ : 0 < p
⊢ d * p = p
state_after: no goals
Theorem: Int.not_isField
File: Mathlib/NumberTheory/NumberField/Basic.lean

tactic: rw [← two_mul]
state_before: h : IsField ℤ
a : ℤ
⊢ 2 * a = 1 → 1 = a + a
state_after: h : IsField ℤ
a : ℤ
⊢ 2 * a = 1 → 1 = 2 * a

tactic: exact Eq.symm
state_before: h : IsField ℤ
a : ℤ
⊢ 2 * a = 1 → 1 = 2 * a
state_after: no goals
Theorem: List.replicate_add
File: Mathlib/Data/List/Basic.lean

tactic: rw [append_replicate_replicate]
state_before: ι : Type u_1
α : Type u
β : Type v
γ : Type w
l₁ l₂ : List α
m n : ℕ
a : α
⊢ replicate (m + n) a = replicate m a ++ replicate n a
state_after: no goals
Theorem: List.mem_finRange
File: Mathlib/Data/List/Range.lean

tactic: cases a
state_before: α : Type u
n : ℕ
a : Fin n
⊢ ⟨↑a, ⋯⟩ = a
state_after: case mk
α : Type u
n val✝ : ℕ
isLt✝ : val✝ < n
⊢ ⟨↑⟨val✝, isLt✝⟩, ⋯⟩ = ⟨val✝, isLt✝⟩

tactic: rfl
state_before: case mk
α : Type u
n val✝ : ℕ
isLt✝ : val✝ < n
⊢ ⟨↑⟨val✝, isLt✝⟩, ⋯⟩ = ⟨val✝, isLt✝⟩
state_after: no goals
Theorem: MulChar.ringHomComp_eq_one_iff
File: Mathlib/NumberTheory/MulChar/Basic.lean

tactic: conv_lhs => rw [← (show  (1 : MulChar R R').ringHomComp f = 1 by ext; simp)]
state_before: R : Type u_1
inst✝² : CommMonoid R
R' : Type u_2
inst✝¹ : CommRing R'
R'' : Type u_3
inst✝ : CommRing R''
f : R' →+* R''
hf : Function.Injective ⇑f
χ : MulChar R R'
⊢ χ.ringHomComp f = 1 ↔ χ = 1
state_after: R : Type u_1
inst✝² : CommMonoid R
R' : Type u_2
inst✝¹ : CommRing R'
R'' : Type u_3
inst✝ : CommRing R''
f : R' →+* R''
hf : Function.Injective ⇑f
χ : MulChar R R'
⊢ χ.ringHomComp f = ringHomComp 1 f ↔ χ = 1

tactic: exact (injective_ringHomComp hf).eq_iff
state_before: R : Type u_1
inst✝² : CommMonoid R
R' : Type u_2
inst✝¹ : CommRing R'
R'' : Type u_3
inst✝ : CommRing R''
f : R' →+* R''
hf : Function.Injective ⇑f
χ : MulChar R R'
⊢ χ.ringHomComp f = ringHomComp 1 f ↔ χ = 1
state_after: no goals

tactic: ext
state_before: R : Type u_1
inst✝² : CommMonoid R
R' : Type u_2
inst✝¹ : CommRing R'
R'' : Type u_3
inst✝ : CommRing R''
f : R' →+* R''
hf : Function.Injective ⇑f
χ : MulChar R R'
⊢ ringHomComp 1 f = 1
state_after: case h
R : Type u_1
inst✝² : CommMonoid R
R' : Type u_2
inst✝¹ : CommRing R'
R'' : Type u_3
inst✝ : CommRing R''
f : R' →+* R''
hf : Function.Injective ⇑f
χ : MulChar R R'
a✝ : Rˣ
⊢ (ringHomComp 1 f) ↑a✝ = 1 ↑a✝

tactic: simp
state_before: case h
R : Type u_1
inst✝² : CommMonoid R
R' : Type u_2
inst✝¹ : CommRing R'
R'' : Type u_3
inst✝ : CommRing R''
f : R' →+* R''
hf : Function.Injective ⇑f
χ : MulChar R R'
a✝ : Rˣ
⊢ (ringHomComp 1 f) ↑a✝ = 1 ↑a✝
state_after: no goals
Theorem: SimpleGraph.Walk.coe_support_append'
File: Mathlib/Combinatorics/SimpleGraph/Connectivity.lean

tactic: rw [support_append, ← Multiset.coe_add]
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
inst✝ : DecidableEq V
u v w : V
p : G.Walk u v
p' : G.Walk v w
⊢ ↑(p.append p').support = ↑p.support + ↑p'.support - {v}
state_after: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
inst✝ : DecidableEq V
u v w : V
p : G.Walk u v
p' : G.Walk v w
⊢ ↑p.support + ↑p'.support.tail = ↑p.support + ↑p'.support - {v}

tactic: simp only [coe_support]
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
inst✝ : DecidableEq V
u v w : V
p : G.Walk u v
p' : G.Walk v w
⊢ ↑p.support + ↑p'.support.tail = ↑p.support + ↑p'.support - {v}
state_after: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
inst✝ : DecidableEq V
u v w : V
p : G.Walk u v
p' : G.Walk v w
⊢ {u} + ↑p.support.tail + ↑p'.support.tail = {u} + ↑p.support.tail + ({v} + ↑p'.support.tail) - {v}

tactic: rw [add_comm ({v} : Multiset V)]
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
inst✝ : DecidableEq V
u v w : V
p : G.Walk u v
p' : G.Walk v w
⊢ {u} + ↑p.support.tail + ↑p'.support.tail = {u} + ↑p.support.tail + ({v} + ↑p'.support.tail) - {v}
state_after: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
inst✝ : DecidableEq V
u v w : V
p : G.Walk u v
p' : G.Walk v w
⊢ {u} + ↑p.support.tail + ↑p'.support.tail = {u} + ↑p.support.tail + (↑p'.support.tail + {v}) - {v}

tactic: simp only [← add_assoc, add_tsub_cancel_right]
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
inst✝ : DecidableEq V
u v w : V
p : G.Walk u v
p' : G.Walk v w
⊢ {u} + ↑p.support.tail + ↑p'.support.tail = {u} + ↑p.support.tail + (↑p'.support.tail + {v}) - {v}
state_after: no goals
Theorem: Set.pred_ncard_le_ncard_diff_singleton
File: Mathlib/Data/Set/Card.lean

tactic: cases' s.finite_or_infinite with hs hs
state_before: α : Type u_1
β : Type u_2
s✝ t s : Set α
a : α
⊢ s.ncard - 1 ≤ (s \ {a}).ncard
state_after: case inl
α : Type u_1
β : Type u_2
s✝ t s : Set α
a : α
hs : s.Finite
⊢ s.ncard - 1 ≤ (s \ {a}).ncard

case inr
α : Type u_1
β : Type u_2
s✝ t s : Set α
a : α
hs : s.Infinite
⊢ s.ncard - 1 ≤ (s \ {a}).ncard

tactic: convert Nat.zero_le _
state_before: case inr
α : Type u_1
β : Type u_2
s✝ t s : Set α
a : α
hs : s.Infinite
⊢ s.ncard - 1 ≤ (s \ {a}).ncard
state_after: case h.e'_3
α : Type u_1
β : Type u_2
s✝ t s : Set α
a : α
hs : s.Infinite
⊢ s.ncard - 1 = 0

tactic: rw [hs.ncard]
state_before: case h.e'_3
α : Type u_1
β : Type u_2
s✝ t s : Set α
a : α
hs : s.Infinite
⊢ s.ncard - 1 = 0
state_after: no goals

tactic: by_cases h : a ∈ s
state_before: case inl
α : Type u_1
β : Type u_2
s✝ t s : Set α
a : α
hs : s.Finite
⊢ s.ncard - 1 ≤ (s \ {a}).ncard
state_after: case pos
α : Type u_1
β : Type u_2
s✝ t s : Set α
a : α
hs : s.Finite
h : a ∈ s
⊢ s.ncard - 1 ≤ (s \ {a}).ncard

case neg
α : Type u_1
β : Type u_2
s✝ t s : Set α
a : α
hs : s.Finite
h : a ∉ s
⊢ s.ncard - 1 ≤ (s \ {a}).ncard

tactic: rw [diff_singleton_eq_self h]
state_before: case neg
α : Type u_1
β : Type u_2
s✝ t s : Set α
a : α
hs : s.Finite
h : a ∉ s
⊢ s.ncard - 1 ≤ (s \ {a}).ncard
state_after: case neg
α : Type u_1
β : Type u_2
s✝ t s : Set α
a : α
hs : s.Finite
h : a ∉ s
⊢ s.ncard - 1 ≤ s.ncard

tactic: apply Nat.pred_le
state_before: case neg
α : Type u_1
β : Type u_2
s✝ t s : Set α
a : α
hs : s.Finite
h : a ∉ s
⊢ s.ncard - 1 ≤ s.ncard
state_after: no goals

tactic: rw [ncard_diff_singleton_of_mem h hs]
state_before: case pos
α : Type u_1
β : Type u_2
s✝ t s : Set α
a : α
hs : s.Finite
h : a ∈ s
⊢ s.ncard - 1 ≤ (s \ {a}).ncard
state_after: no goals
Theorem: WithTop.strictMono_map_iff
File: Mathlib/Order/WithBot.lean

tactic: simp [StrictMono, coe_lt_top]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝¹ : Preorder α
inst✝ : Preorder β
f : α → β
⊢ ((StrictMono fun a => map f ↑a) ∧ ∀ (x : α), map f ↑x < map f ⊤) ↔ StrictMono f
state_after: no goals
Theorem: Finsupp.sum_inner
File: Mathlib/Analysis/InnerProductSpace/Basic.lean

tactic: convert _root_.sum_inner (𝕜 := 𝕜) l.support (fun a => l a • v a) x
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : _root_.RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
ι : Type u_4
l : ι →₀ 𝕜
v : ι → E
x : E
⊢ ⟪l.sum fun i a => a • v i, x⟫_𝕜 = l.sum fun i a => (starRingEnd 𝕜) a • ⟪v i, x⟫_𝕜
state_after: case h.e'_3
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : _root_.RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
ι : Type u_4
l : ι →₀ 𝕜
v : ι → E
x : E
⊢ (l.sum fun i a => (starRingEnd 𝕜) a • ⟪v i, x⟫_𝕜) = ∑ i ∈ l.support, ⟪l i • v i, x⟫_𝕜

tactic: simp only [inner_smul_left, Finsupp.sum, smul_eq_mul]
state_before: case h.e'_3
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁴ : _root_.RCLike 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
ι : Type u_4
l : ι →₀ 𝕜
v : ι → E
x : E
⊢ (l.sum fun i a => (starRingEnd 𝕜) a • ⟪v i, x⟫_𝕜) = ∑ i ∈ l.support, ⟪l i • v i, x⟫_𝕜
state_after: no goals
Theorem: Set.inclusion_inclusion
File: Mathlib/Data/Set/Basic.lean

tactic: cases x
state_before: α : Type u_1
s t u : Set α
hst : s ⊆ t
htu : t ⊆ u
x : ↑s
⊢ inclusion htu (inclusion hst x) = inclusion ⋯ x
state_after: case mk
α : Type u_1
s t u : Set α
hst : s ⊆ t
htu : t ⊆ u
val✝ : α
property✝ : val✝ ∈ s
⊢ inclusion htu (inclusion hst ⟨val✝, property✝⟩) = inclusion ⋯ ⟨val✝, property✝⟩

tactic: rfl
state_before: case mk
α : Type u_1
s t u : Set α
hst : s ⊆ t
htu : t ⊆ u
val✝ : α
property✝ : val✝ ∈ s
⊢ inclusion htu (inclusion hst ⟨val✝, property✝⟩) = inclusion ⋯ ⟨val✝, property✝⟩
state_after: no goals
Theorem: CategoryTheory.SplitEpi.epi
File: Mathlib/CategoryTheory/EpiMono.lean

tactic: replace w := se.section_ ≫= w
state_before: C : Type u₁
inst✝ : Category.{v₁, u₁} C
X Y : C
f : X ⟶ Y
se : SplitEpi f
Z✝ : C
g h : Y ⟶ Z✝
w : f ≫ g = f ≫ h
⊢ g = h
state_after: C : Type u₁
inst✝ : Category.{v₁, u₁} C
X Y : C
f : X ⟶ Y
se : SplitEpi f
Z✝ : C
g h : Y ⟶ Z✝
w : se.section_ ≫ f ≫ g = se.section_ ≫ f ≫ h
⊢ g = h

tactic: simpa using w
state_before: C : Type u₁
inst✝ : Category.{v₁, u₁} C
X Y : C
f : X ⟶ Y
se : SplitEpi f
Z✝ : C
g h : Y ⟶ Z✝
w : se.section_ ≫ f ≫ g = se.section_ ≫ f ≫ h
⊢ g = h
state_after: no goals
Theorem: TensorAlgebra.algebraMap_leftInverse
File: Mathlib/LinearAlgebra/TensorAlgebra/Basic.lean

tactic: simp [algebraMapInv]
state_before: R : Type u_1
inst✝² : CommSemiring R
M : Type u_2
inst✝¹ : AddCommMonoid M
inst✝ : Module R M
x : R
⊢ algebraMapInv ((algebraMap R (TensorAlgebra R M)) x) = x
state_after: no goals
Theorem: primorial_add_dvd
File: Mathlib/NumberTheory/Primorial.lean

tactic: rw [mem_filter, mem_Ico] at hp
state_before: m n : ℕ
h : n ≤ m
p : ℕ
hp : p ∈ filter Nat.Prime (Ico (m + 1) (m + n + 1))
⊢ p ∣ (m + n).choose m
state_after: m n : ℕ
h : n ≤ m
p : ℕ
hp : (m + 1 ≤ p ∧ p < m + n + 1) ∧ Nat.Prime p
⊢ p ∣ (m + n).choose m

tactic: exact hp.2.dvd_choose_add hp.1.1 (h.trans_lt (m.lt_succ_self.trans_le hp.1.1))
    (Nat.lt_succ_iff.1 hp.1.2)
state_before: m n : ℕ
h : n ≤ m
p : ℕ
hp : (m + 1 ≤ p ∧ p < m + n + 1) ∧ Nat.Prime p
⊢ p ∣ (m + n).choose m
state_after: no goals
Theorem: StrictConvexOn.secant_strict_mono_aux2
File: Mathlib/Analysis/Convex/Slope.lean

tactic: have hxy' : 0 < y - x := by linarith
state_before: 𝕜 : Type u_1
inst✝ : LinearOrderedField 𝕜
s : Set 𝕜
f : 𝕜 → 𝕜
hf : StrictConvexOn 𝕜 s f
x y z : 𝕜
hx : x ∈ s
hz : z ∈ s
hxy : x < y
hyz : y < z
⊢ (f y - f x) / (y - x) < (f z - f x) / (z - x)
state_after: 𝕜 : Type u_1
inst✝ : LinearOrderedField 𝕜
s : Set 𝕜
f : 𝕜 → 𝕜
hf : StrictConvexOn 𝕜 s f
x y z : 𝕜
hx : x ∈ s
hz : z ∈ s
hxy : x < y
hyz : y < z
hxy' : 0 < y - x
⊢ (f y - f x) / (y - x) < (f z - f x) / (z - x)

tactic: have hxz' : 0 < z - x := by linarith
state_before: 𝕜 : Type u_1
inst✝ : LinearOrderedField 𝕜
s : Set 𝕜
f : 𝕜 → 𝕜
hf : StrictConvexOn 𝕜 s f
x y z : 𝕜
hx : x ∈ s
hz : z ∈ s
hxy : x < y
hyz : y < z
hxy' : 0 < y - x
⊢ (f y - f x) / (y - x) < (f z - f x) / (z - x)
state_after: 𝕜 : Type u_1
inst✝ : LinearOrderedField 𝕜
s : Set 𝕜
f : 𝕜 → 𝕜
hf : StrictConvexOn 𝕜 s f
x y z : 𝕜
hx : x ∈ s
hz : z ∈ s
hxy : x < y
hyz : y < z
hxy' : 0 < y - x
hxz' : 0 < z - x
⊢ (f y - f x) / (y - x) < (f z - f x) / (z - x)

tactic: rw [div_lt_div_iff hxy' hxz']
state_before: 𝕜 : Type u_1
inst✝ : LinearOrderedField 𝕜
s : Set 𝕜
f : 𝕜 → 𝕜
hf : StrictConvexOn 𝕜 s f
x y z : 𝕜
hx : x ∈ s
hz : z ∈ s
hxy : x < y
hyz : y < z
hxy' : 0 < y - x
hxz' : 0 < z - x
⊢ (f y - f x) / (y - x) < (f z - f x) / (z - x)
state_after: 𝕜 : Type u_1
inst✝ : LinearOrderedField 𝕜
s : Set 𝕜
f : 𝕜 → 𝕜
hf : StrictConvexOn 𝕜 s f
x y z : 𝕜
hx : x ∈ s
hz : z ∈ s
hxy : x < y
hyz : y < z
hxy' : 0 < y - x
hxz' : 0 < z - x
⊢ (f y - f x) * (z - x) < (f z - f x) * (y - x)

tactic: linarith only [hf.secant_strict_mono_aux1 hx hz hxy hyz]
state_before: 𝕜 : Type u_1
inst✝ : LinearOrderedField 𝕜
s : Set 𝕜
f : 𝕜 → 𝕜
hf : StrictConvexOn 𝕜 s f
x y z : 𝕜
hx : x ∈ s
hz : z ∈ s
hxy : x < y
hyz : y < z
hxy' : 0 < y - x
hxz' : 0 < z - x
⊢ (f y - f x) * (z - x) < (f z - f x) * (y - x)
state_after: no goals

tactic: linarith
state_before: 𝕜 : Type u_1
inst✝ : LinearOrderedField 𝕜
s : Set 𝕜
f : 𝕜 → 𝕜
hf : StrictConvexOn 𝕜 s f
x y z : 𝕜
hx : x ∈ s
hz : z ∈ s
hxy : x < y
hyz : y < z
⊢ 0 < y - x
state_after: no goals

tactic: linarith
state_before: 𝕜 : Type u_1
inst✝ : LinearOrderedField 𝕜
s : Set 𝕜
f : 𝕜 → 𝕜
hf : StrictConvexOn 𝕜 s f
x y z : 𝕜
hx : x ∈ s
hz : z ∈ s
hxy : x < y
hyz : y < z
hxy' : 0 < y - x
⊢ 0 < z - x
state_after: no goals
Theorem: Associates.prod_eq_one_iff
File: Mathlib/Algebra/BigOperators/Associated.lean

tactic: simp
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : CommMonoid α
p : Multiset (Associates α)
⊢ Multiset.prod 0 = 1 ↔ ∀ a ∈ 0, a = 1
state_after: no goals

tactic: simp (config := { contextual := true }) [mul_eq_one_iff, or_imp, forall_and]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
inst✝ : CommMonoid α
p : Multiset (Associates α)
⊢ ∀ (a : Associates α) (s : Multiset (Associates α)),
    (s.prod = 1 ↔ ∀ a ∈ s, a = 1) → ((a ::ₘ s).prod = 1 ↔ ∀ a_2 ∈ a ::ₘ s, a_2 = 1)
state_after: no goals
Theorem: Equiv.Perm.IsCycleOn.apply_mem_iff
File: Mathlib/GroupTheory/Perm/Cycle/Basic.lean

tactic: convert hf.1.perm_inv.1 hx
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
f g : Perm α
s t : Set α
a b x y : α
hf : f.IsCycleOn s
hx : f x ∈ s
⊢ x ∈ s
state_after: case h.e'_4
ι : Type u_1
α : Type u_2
β : Type u_3
f g : Perm α
s t : Set α
a b x y : α
hf : f.IsCycleOn s
hx : f x ∈ s
⊢ x = f⁻¹ (f x)

tactic: rw [inv_apply_self]
state_before: case h.e'_4
ι : Type u_1
α : Type u_2
β : Type u_3
f g : Perm α
s t : Set α
a b x y : α
hf : f.IsCycleOn s
hx : f x ∈ s
⊢ x = f⁻¹ (f x)
state_after: no goals
Theorem: totallyDisconnectedSpace_iff_connectedComponent_singleton
File: Mathlib/Topology/Connected/TotallyDisconnected.lean

tactic: rw [totallyDisconnectedSpace_iff_connectedComponent_subsingleton]
state_before: α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝ : TopologicalSpace α
s t u v : Set α
⊢ TotallyDisconnectedSpace α ↔ ∀ (x : α), connectedComponent x = {x}
state_after: α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝ : TopologicalSpace α
s t u v : Set α
⊢ (∀ (x : α), (connectedComponent x).Subsingleton) ↔ ∀ (x : α), connectedComponent x = {x}

tactic: refine forall_congr' fun x => ?_
state_before: α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝ : TopologicalSpace α
s t u v : Set α
⊢ (∀ (x : α), (connectedComponent x).Subsingleton) ↔ ∀ (x : α), connectedComponent x = {x}
state_after: α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝ : TopologicalSpace α
s t u v : Set α
x : α
⊢ (connectedComponent x).Subsingleton ↔ connectedComponent x = {x}

tactic: rw [subsingleton_iff_singleton]
state_before: α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝ : TopologicalSpace α
s t u v : Set α
x : α
⊢ (connectedComponent x).Subsingleton ↔ connectedComponent x = {x}
state_after: α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝ : TopologicalSpace α
s t u v : Set α
x : α
⊢ x ∈ connectedComponent x

tactic: exact mem_connectedComponent
state_before: α : Type u
β : Type v
ι : Type u_1
π : ι → Type u_2
inst✝ : TopologicalSpace α
s t u v : Set α
x : α
⊢ x ∈ connectedComponent x
state_after: no goals
Theorem: unitary.coe_zpow
File: Mathlib/Algebra/Star/Unitary.lean

tactic: induction z
state_before: R : Type u_1
inst✝¹ : GroupWithZero R
inst✝ : StarMul R
U : ↥(unitary R)
z : ℤ
⊢ ↑(U ^ z) = ↑U ^ z
state_after: case ofNat
R : Type u_1
inst✝¹ : GroupWithZero R
inst✝ : StarMul R
U : ↥(unitary R)
a✝ : ℕ
⊢ ↑(U ^ Int.ofNat a✝) = ↑U ^ Int.ofNat a✝

case negSucc
R : Type u_1
inst✝¹ : GroupWithZero R
inst✝ : StarMul R
U : ↥(unitary R)
a✝ : ℕ
⊢ ↑(U ^ Int.negSucc a✝) = ↑U ^ Int.negSucc a✝

tactic: simp [SubmonoidClass.coe_pow]
state_before: case ofNat
R : Type u_1
inst✝¹ : GroupWithZero R
inst✝ : StarMul R
U : ↥(unitary R)
a✝ : ℕ
⊢ ↑(U ^ Int.ofNat a✝) = ↑U ^ Int.ofNat a✝
state_after: no goals

tactic: simp [coe_inv]
state_before: case negSucc
R : Type u_1
inst✝¹ : GroupWithZero R
inst✝ : StarMul R
U : ↥(unitary R)
a✝ : ℕ
⊢ ↑(U ^ Int.negSucc a✝) = ↑U ^ Int.negSucc a✝
state_after: no goals
Theorem: SimpleGraph.Preconnected.set_univ_walk_nonempty
File: Mathlib/Combinatorics/SimpleGraph/Connectivity.lean

tactic: rw [← Set.nonempty_iff_univ_nonempty]
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
hconn : G.Preconnected
u v : V
⊢ Set.univ.Nonempty
state_after: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
hconn : G.Preconnected
u v : V
⊢ Nonempty (G.Walk u v)

tactic: exact hconn u v
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
hconn : G.Preconnected
u v : V
⊢ Nonempty (G.Walk u v)
state_after: no goals
Theorem: CategoryTheory.Iso.map_hom_inv_id
File: Mathlib/CategoryTheory/Iso.lean

tactic: rw [← F.map_comp, e.hom_inv_id, F.map_id]
state_before: C : Type u
inst✝² : Category.{v, u} C
X✝ Y✝ Z : C
D : Type u_1
E : Type u_2
inst✝¹ : Category.{u_3, u_1} D
inst✝ : Category.{?u.30186, u_2} E
X Y : C
e : X ≅ Y
F : C ⥤ D
⊢ F.map e.hom ≫ F.map e.inv = 𝟙 (F.obj X)
state_after: no goals