1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: SimpleGraph.Walk.dart_fst_mem_support_of_mem_darts
File: Mathlib/Combinatorics/SimpleGraph/Connectivity.lean

tactic: simp only [support_cons, darts_cons, List.mem_cons] at hd ⊢
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v v✝ : V
h : G.Adj u v✝
p' : G.Walk v✝ v
d : G.Dart
hd : d ∈ (cons h p').darts
⊢ d.toProd.1 ∈ (cons h p').support
state_after: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v v✝ : V
h : G.Adj u v✝
p' : G.Walk v✝ v
d : G.Dart
hd : d = { toProd := (u, v✝), adj := h } ∨ d ∈ p'.darts
⊢ d.toProd.1 = u ∨ d.toProd.1 ∈ p'.support

tactic: rcases hd with (rfl | hd)
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v v✝ : V
h : G.Adj u v✝
p' : G.Walk v✝ v
d : G.Dart
hd : d = { toProd := (u, v✝), adj := h } ∨ d ∈ p'.darts
⊢ d.toProd.1 = u ∨ d.toProd.1 ∈ p'.support
state_after: case inl
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v v✝ : V
h : G.Adj u v✝
p' : G.Walk v✝ v
⊢ { toProd := (u, v✝), adj := h }.toProd.1 = u ∨ { toProd := (u, v✝), adj := h }.toProd.1 ∈ p'.support

case inr
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v v✝ : V
h : G.Adj u v✝
p' : G.Walk v✝ v
d : G.Dart
hd : d ∈ p'.darts
⊢ d.toProd.1 = u ∨ d.toProd.1 ∈ p'.support

tactic: exact Or.inl rfl
state_before: case inl
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v v✝ : V
h : G.Adj u v✝
p' : G.Walk v✝ v
⊢ { toProd := (u, v✝), adj := h }.toProd.1 = u ∨ { toProd := (u, v✝), adj := h }.toProd.1 ∈ p'.support
state_after: no goals

tactic: exact Or.inr (dart_fst_mem_support_of_mem_darts _ hd)
state_before: case inr
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v v✝ : V
h : G.Adj u v✝
p' : G.Walk v✝ v
d : G.Dart
hd : d ∈ p'.darts
⊢ d.toProd.1 = u ∨ d.toProd.1 ∈ p'.support
state_after: no goals
Theorem: ContinuousLinearMap.coprod_inl_inr
File: Mathlib/Topology/Algebra/Module/Basic.lean

tactic: apply coe_injective
state_before: R₁ : Type u_1
R₂ : Type u_2
R₃ : Type u_3
inst✝¹⁹ : Semiring R₁
inst✝¹⁸ : Semiring R₂
inst✝¹⁷ : Semiring R₃
σ₁₂ : R₁ →+* R₂
σ₂₃ : R₂ →+* R₃
σ₁₃ : R₁ →+* R₃
M₁ : Type u_4
inst✝¹⁶ : TopologicalSpace M₁
inst✝¹⁵ : AddCommMonoid M₁
M'₁ : Type u_5
inst✝¹⁴ : TopologicalSpace M'₁
inst✝¹³ : AddCommMonoid M'₁
M₂ : Type u_6
inst✝¹² : TopologicalSpace M₂
inst✝¹¹ : AddCommMonoid M₂
M₃ : Type u_7
inst✝¹⁰ : TopologicalSpace M₃
inst✝⁹ : AddCommMonoid M₃
M₄ : Type u_8
inst✝⁸ : TopologicalSpace M₄
inst✝⁷ : AddCommMonoid M₄
inst✝⁶ : Module R₁ M₁
inst✝⁵ : Module R₁ M'₁
inst✝⁴ : Module R₂ M₂
inst✝³ : Module R₃ M₃
inst✝² : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
F : Type u_9
inst✝¹ : ContinuousAdd M₁
inst✝ : ContinuousAdd M'₁
⊢ (inl R₁ M₁ M'₁).coprod (inr R₁ M₁ M'₁) = id R₁ (M₁ × M'₁)
state_after: case a
R₁ : Type u_1
R₂ : Type u_2
R₃ : Type u_3
inst✝¹⁹ : Semiring R₁
inst✝¹⁸ : Semiring R₂
inst✝¹⁷ : Semiring R₃
σ₁₂ : R₁ →+* R₂
σ₂₃ : R₂ →+* R₃
σ₁₃ : R₁ →+* R₃
M₁ : Type u_4
inst✝¹⁶ : TopologicalSpace M₁
inst✝¹⁵ : AddCommMonoid M₁
M'₁ : Type u_5
inst✝¹⁴ : TopologicalSpace M'₁
inst✝¹³ : AddCommMonoid M'₁
M₂ : Type u_6
inst✝¹² : TopologicalSpace M₂
inst✝¹¹ : AddCommMonoid M₂
M₃ : Type u_7
inst✝¹⁰ : TopologicalSpace M₃
inst✝⁹ : AddCommMonoid M₃
M₄ : Type u_8
inst✝⁸ : TopologicalSpace M₄
inst✝⁷ : AddCommMonoid M₄
inst✝⁶ : Module R₁ M₁
inst✝⁵ : Module R₁ M'₁
inst✝⁴ : Module R₂ M₂
inst✝³ : Module R₃ M₃
inst✝² : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
F : Type u_9
inst✝¹ : ContinuousAdd M₁
inst✝ : ContinuousAdd M'₁
⊢ ↑((inl R₁ M₁ M'₁).coprod (inr R₁ M₁ M'₁)) = ↑(id R₁ (M₁ × M'₁))

tactic: apply LinearMap.coprod_inl_inr
state_before: case a
R₁ : Type u_1
R₂ : Type u_2
R₃ : Type u_3
inst✝¹⁹ : Semiring R₁
inst✝¹⁸ : Semiring R₂
inst✝¹⁷ : Semiring R₃
σ₁₂ : R₁ →+* R₂
σ₂₃ : R₂ →+* R₃
σ₁₃ : R₁ →+* R₃
M₁ : Type u_4
inst✝¹⁶ : TopologicalSpace M₁
inst✝¹⁵ : AddCommMonoid M₁
M'₁ : Type u_5
inst✝¹⁴ : TopologicalSpace M'₁
inst✝¹³ : AddCommMonoid M'₁
M₂ : Type u_6
inst✝¹² : TopologicalSpace M₂
inst✝¹¹ : AddCommMonoid M₂
M₃ : Type u_7
inst✝¹⁰ : TopologicalSpace M₃
inst✝⁹ : AddCommMonoid M₃
M₄ : Type u_8
inst✝⁸ : TopologicalSpace M₄
inst✝⁷ : AddCommMonoid M₄
inst✝⁶ : Module R₁ M₁
inst✝⁵ : Module R₁ M'₁
inst✝⁴ : Module R₂ M₂
inst✝³ : Module R₃ M₃
inst✝² : RingHomCompTriple σ₁₂ σ₂₃ σ₁₃
F : Type u_9
inst✝¹ : ContinuousAdd M₁
inst✝ : ContinuousAdd M'₁
⊢ ↑((inl R₁ M₁ M'₁).coprod (inr R₁ M₁ M'₁)) = ↑(id R₁ (M₁ × M'₁))
state_after: no goals
Theorem: Nat.Prime.mod_four_ne_three_of_dvd_isSquare_neg_one
File: Mathlib/NumberTheory/SumTwoSquares.lean

tactic: obtain ⟨y, h⟩ := ZMod.isSquare_neg_one_of_dvd hp hs
state_before: p n : ℕ
hpp : Prime p
hp : p ∣ n
hs : IsSquare (-1)
⊢ p % 4 ≠ 3
state_after: case intro
p n : ℕ
hpp : Prime p
hp : p ∣ n
hs : IsSquare (-1)
y : ZMod p
h : -1 = y * y
⊢ p % 4 ≠ 3

tactic: rw [← sq, eq_comm, show (-1 : ZMod p) = -1 ^ 2 by ring] at h
state_before: case intro
p n : ℕ
hpp : Prime p
hp : p ∣ n
hs : IsSquare (-1)
y : ZMod p
h : -1 = y * y
⊢ p % 4 ≠ 3
state_after: case intro
p n : ℕ
hpp : Prime p
hp : p ∣ n
hs : IsSquare (-1)
y : ZMod p
h : y ^ 2 = -1 ^ 2
⊢ p % 4 ≠ 3

tactic: haveI : Fact p.Prime := ⟨hpp⟩
state_before: case intro
p n : ℕ
hpp : Prime p
hp : p ∣ n
hs : IsSquare (-1)
y : ZMod p
h : y ^ 2 = -1 ^ 2
⊢ p % 4 ≠ 3
state_after: case intro
p n : ℕ
hpp : Prime p
hp : p ∣ n
hs : IsSquare (-1)
y : ZMod p
h : y ^ 2 = -1 ^ 2
this : Fact (Prime p)
⊢ p % 4 ≠ 3

tactic: exact ZMod.mod_four_ne_three_of_sq_eq_neg_sq' one_ne_zero h
state_before: case intro
p n : ℕ
hpp : Prime p
hp : p ∣ n
hs : IsSquare (-1)
y : ZMod p
h : y ^ 2 = -1 ^ 2
this : Fact (Prime p)
⊢ p % 4 ≠ 3
state_after: no goals

tactic: ring
state_before: p n : ℕ
hpp : Prime p
hp : p ∣ n
hs : IsSquare (-1)
y : ZMod p
h : y ^ 2 = -1
⊢ -1 = -1 ^ 2
state_after: no goals
Theorem: Finset.prod_mulIndicator_eq_prod_inter
File: Mathlib/Algebra/BigOperators/Group/Finset.lean

tactic: rw [← filter_mem_eq_inter, prod_mulIndicator_eq_prod_filter]
state_before: ι : Type u_1
κ✝ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝¹ : CommMonoid β
κ : Type u_6
inst✝ : DecidableEq ι
s t : Finset ι
f : ι → β
⊢ ∏ i ∈ s, (↑t).mulIndicator f i = ∏ i ∈ s ∩ t, f i
state_after: ι : Type u_1
κ✝ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝¹ : CommMonoid β
κ : Type u_6
inst✝ : DecidableEq ι
s t : Finset ι
f : ι → β
⊢ ∏ i ∈ filter (fun i => i ∈ ↑t) s, f i = ∏ i ∈ filter (fun i => i ∈ t) s, f i

tactic: rfl
state_before: ι : Type u_1
κ✝ : Type u_2
α : Type u_3
β : Type u_4
γ : Type u_5
s✝ s₁ s₂ : Finset α
a : α
f✝ g : α → β
inst✝¹ : CommMonoid β
κ : Type u_6
inst✝ : DecidableEq ι
s t : Finset ι
f : ι → β
⊢ ∏ i ∈ filter (fun i => i ∈ ↑t) s, f i = ∏ i ∈ filter (fun i => i ∈ t) s, f i
state_after: no goals
Theorem: Algebra.TensorProduct.productMap_range
File: Mathlib/RingTheory/TensorProduct/Basic.lean

tactic: rw [productMap_eq_comp_map, AlgHom.range_comp, map_range, map_sup, ← AlgHom.range_comp,
  ← AlgHom.range_comp,
  ← AlgHom.comp_assoc, ← AlgHom.comp_assoc, lmul'_comp_includeLeft, lmul'_comp_includeRight,
  AlgHom.id_comp, AlgHom.id_comp]
state_before: R : Type uR
S : Type uS
A : Type uA
B : Type uB
C : Type uC
D : Type uD
E : Type uE
F : Type uF
inst✝⁶ : CommSemiring R
inst✝⁵ : Semiring A
inst✝⁴ : Semiring B
inst✝³ : CommSemiring S
inst✝² : Algebra R A
inst✝¹ : Algebra R B
inst✝ : Algebra R S
f : A →ₐ[R] S
g : B →ₐ[R] S
⊢ (productMap f g).range = f.range ⊔ g.range
state_after: no goals
Theorem: List.append_join_map_append
File: Mathlib/Data/List/Join.lean

tactic: induction' L with _ _ ih
state_before: α : Type u_1
β : Type u_2
L : List (List α)
x : List α
⊢ x ++ (map (fun x_1 => x_1 ++ x) L).join = (map (fun x_1 => x ++ x_1) L).join ++ x
state_after: case nil
α : Type u_1
β : Type u_2
x : List α
⊢ x ++ (map (fun x_1 => x_1 ++ x) []).join = (map (fun x_1 => x ++ x_1) []).join ++ x

case cons
α : Type u_1
β : Type u_2
x head✝ : List α
tail✝ : List (List α)
ih : x ++ (map (fun x_1 => x_1 ++ x) tail✝).join = (map (fun x_1 => x ++ x_1) tail✝).join ++ x
⊢ x ++ (map (fun x_1 => x_1 ++ x) (head✝ :: tail✝)).join = (map (fun x_1 => x ++ x_1) (head✝ :: tail✝)).join ++ x

tactic: rw [map_nil, join, append_nil, map_nil, join, nil_append]
state_before: case nil
α : Type u_1
β : Type u_2
x : List α
⊢ x ++ (map (fun x_1 => x_1 ++ x) []).join = (map (fun x_1 => x ++ x_1) []).join ++ x
state_after: no goals

tactic: rw [map_cons, join, map_cons, join, append_assoc, ih, append_assoc, append_assoc]
state_before: case cons
α : Type u_1
β : Type u_2
x head✝ : List α
tail✝ : List (List α)
ih : x ++ (map (fun x_1 => x_1 ++ x) tail✝).join = (map (fun x_1 => x ++ x_1) tail✝).join ++ x
⊢ x ++ (map (fun x_1 => x_1 ++ x) (head✝ :: tail✝)).join = (map (fun x_1 => x ++ x_1) (head✝ :: tail✝)).join ++ x
state_after: no goals
Theorem: tendsto_uniformity_iff_dist_tendsto_zero
File: Mathlib/Topology/MetricSpace/Pseudo/Defs.lean

tactic: rw [Metric.uniformity_eq_comap_nhds_zero, tendsto_comap_iff, Function.comp_def]
state_before: α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
f : ι → α × α
p : Filter ι
⊢ Tendsto f p (𝓤 α) ↔ Tendsto (fun x => dist (f x).1 (f x).2) p (𝓝 0)
state_after: no goals
Theorem: Set.image_subtype_val_Ixx_Ixi
File: Mathlib/Order/Interval/Set/Image.lean

tactic: ext
state_before: α : Type u_1
β : Type u_2
f : α → β
inst✝ : Preorder α
p✝ : α → Prop
p q r : α → α → Prop
a b : α
c : { x // p a x ∧ q x b }
h : ∀ {x : α}, r (↑c) x → p a x
⊢ {x | p a x ∧ q x b} ∩ {y | r (↑c) y} = {y | r (↑c) y ∧ q y b}
state_after: case h
α : Type u_1
β : Type u_2
f : α → β
inst✝ : Preorder α
p✝ : α → Prop
p q r : α → α → Prop
a b : α
c : { x // p a x ∧ q x b }
h : ∀ {x : α}, r (↑c) x → p a x
x✝ : α
⊢ x✝ ∈ {x | p a x ∧ q x b} ∩ {y | r (↑c) y} ↔ x✝ ∈ {y | r (↑c) y ∧ q y b}

tactic: simp (config := { contextual := true }) [@and_comm (r _ _), h]
state_before: case h
α : Type u_1
β : Type u_2
f : α → β
inst✝ : Preorder α
p✝ : α → Prop
p q r : α → α → Prop
a b : α
c : { x // p a x ∧ q x b }
h : ∀ {x : α}, r (↑c) x → p a x
x✝ : α
⊢ x✝ ∈ {x | p a x ∧ q x b} ∩ {y | r (↑c) y} ↔ x✝ ∈ {y | r (↑c) y ∧ q y b}
state_after: no goals
Theorem: contDiffAt_euclidean
File: Mathlib/Analysis/InnerProductSpace/Calculus.lean

tactic: rw [← (EuclideanSpace.equiv ι 𝕜).comp_contDiffAt_iff, contDiffAt_pi]
state_before: 𝕜 : Type u_1
ι : Type u_2
H : Type u_3
inst✝³ : _root_.RCLike 𝕜
inst✝² : NormedAddCommGroup H
inst✝¹ : NormedSpace 𝕜 H
inst✝ : Fintype ι
f : H → EuclideanSpace 𝕜 ι
f' : H →L[𝕜] EuclideanSpace 𝕜 ι
t : Set H
y : H
n : ℕ∞
⊢ ContDiffAt 𝕜 n f y ↔ ∀ (i : ι), ContDiffAt 𝕜 n (fun x => f x i) y
state_after: 𝕜 : Type u_1
ι : Type u_2
H : Type u_3
inst✝³ : _root_.RCLike 𝕜
inst✝² : NormedAddCommGroup H
inst✝¹ : NormedSpace 𝕜 H
inst✝ : Fintype ι
f : H → EuclideanSpace 𝕜 ι
f' : H →L[𝕜] EuclideanSpace 𝕜 ι
t : Set H
y : H
n : ℕ∞
⊢ (∀ (i : ι), ContDiffAt 𝕜 n (fun x => (⇑(EuclideanSpace.equiv ι 𝕜) ∘ f) x i) y) ↔
    ∀ (i : ι), ContDiffAt 𝕜 n (fun x => f x i) y

tactic: rfl
state_before: 𝕜 : Type u_1
ι : Type u_2
H : Type u_3
inst✝³ : _root_.RCLike 𝕜
inst✝² : NormedAddCommGroup H
inst✝¹ : NormedSpace 𝕜 H
inst✝ : Fintype ι
f : H → EuclideanSpace 𝕜 ι
f' : H →L[𝕜] EuclideanSpace 𝕜 ι
t : Set H
y : H
n : ℕ∞
⊢ (∀ (i : ι), ContDiffAt 𝕜 n (fun x => (⇑(EuclideanSpace.equiv ι 𝕜) ∘ f) x i) y) ↔
    ∀ (i : ι), ContDiffAt 𝕜 n (fun x => f x i) y
state_after: no goals
Theorem: HomologicalComplex.XIsoOfEq_hom_naturality
File: Mathlib/Algebra/Homology/HomologicalComplex.lean

tactic: subst h
state_before: ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : HasZeroMorphisms V
c : ComplexShape ι
C K L : HomologicalComplex V c
φ : K ⟶ L
n n' : ι
h : n = n'
⊢ φ.f n ≫ (L.XIsoOfEq h).hom = (K.XIsoOfEq h).hom ≫ φ.f n'
state_after: ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : HasZeroMorphisms V
c : ComplexShape ι
C K L : HomologicalComplex V c
φ : K ⟶ L
n : ι
⊢ φ.f n ≫ (L.XIsoOfEq ⋯).hom = (K.XIsoOfEq ⋯).hom ≫ φ.f n

tactic: simp
state_before: ι : Type u_1
V : Type u
inst✝¹ : Category.{v, u} V
inst✝ : HasZeroMorphisms V
c : ComplexShape ι
C K L : HomologicalComplex V c
φ : K ⟶ L
n : ι
⊢ φ.f n ≫ (L.XIsoOfEq ⋯).hom = (K.XIsoOfEq ⋯).hom ≫ φ.f n
state_after: no goals
Theorem: ZMod.ringHom_eq_of_ker_eq
File: Mathlib/RingTheory/ZMod.lean

tactic: have := f.liftOfRightInverse_comp _ (ZMod.ringHom_rightInverse f) ⟨g, le_of_eq h⟩
state_before: n : ℕ
R : Type u_1
inst✝ : CommRing R
f g : R →+* ZMod n
h : RingHom.ker f = RingHom.ker g
⊢ f = g
state_after: n : ℕ
R : Type u_1
inst✝ : CommRing R
f g : R →+* ZMod n
h : RingHom.ker f = RingHom.ker g
this : ((f.liftOfRightInverse cast ⋯) ⟨g, ⋯⟩).comp f = ↑⟨g, ⋯⟩
⊢ f = g

tactic: rw [Subtype.coe_mk] at this
state_before: n : ℕ
R : Type u_1
inst✝ : CommRing R
f g : R →+* ZMod n
h : RingHom.ker f = RingHom.ker g
this : ((f.liftOfRightInverse cast ⋯) ⟨g, ⋯⟩).comp f = ↑⟨g, ⋯⟩
⊢ f = g
state_after: n : ℕ
R : Type u_1
inst✝ : CommRing R
f g : R →+* ZMod n
h : RingHom.ker f = RingHom.ker g
this : ((f.liftOfRightInverse cast ⋯) ⟨g, ⋯⟩).comp f = g
⊢ f = g

tactic: rw [← this, RingHom.ext_zmod (f.liftOfRightInverse _ _ ⟨g, _⟩) _, RingHom.id_comp]
state_before: n : ℕ
R : Type u_1
inst✝ : CommRing R
f g : R →+* ZMod n
h : RingHom.ker f = RingHom.ker g
this : ((f.liftOfRightInverse cast ⋯) ⟨g, ⋯⟩).comp f = g
⊢ f = g
state_after: no goals
Theorem: Finset.mem_maximals_iff_forall_insert
File: Mathlib/Data/Finset/Lattice.lean

tactic: simp only [mem_maximals_iff, and_congr_right_iff, Set.mem_setOf_eq]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : DecidableEq α
P : Finset α → Prop
s : Finset α
hP : ∀ ⦃s t : Finset α⦄, P t → s ⊆ t → P s
⊢ s ∈ maximals (fun x x_1 => x ⊆ x_1) {t | P t} ↔ P s ∧ ∀ x ∉ s, ¬P (insert x s)
state_after: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : DecidableEq α
P : Finset α → Prop
s : Finset α
hP : ∀ ⦃s t : Finset α⦄, P t → s ⊆ t → P s
⊢ P s → ((∀ ⦃y : Finset α⦄, P y → s ⊆ y → s = y) ↔ ∀ x ∉ s, ¬P (insert x s))

tactic: refine fun _ ↦ ⟨fun h x hx hxs ↦ hx ?_, fun h t ht hst ↦ hst.antisymm fun x hxt ↦ ?_⟩
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : DecidableEq α
P : Finset α → Prop
s : Finset α
hP : ∀ ⦃s t : Finset α⦄, P t → s ⊆ t → P s
⊢ P s → ((∀ ⦃y : Finset α⦄, P y → s ⊆ y → s = y) ↔ ∀ x ∉ s, ¬P (insert x s))
state_after: case refine_1
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : DecidableEq α
P : Finset α → Prop
s : Finset α
hP : ∀ ⦃s t : Finset α⦄, P t → s ⊆ t → P s
x✝ : P s
h : ∀ ⦃y : Finset α⦄, P y → s ⊆ y → s = y
x : α
hx : x ∉ s
hxs : P (insert x s)
⊢ x ∈ s

case refine_2
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : DecidableEq α
P : Finset α → Prop
s : Finset α
hP : ∀ ⦃s t : Finset α⦄, P t → s ⊆ t → P s
x✝ : P s
h : ∀ x ∉ s, ¬P (insert x s)
t : Finset α
ht : P t
hst : s ⊆ t
x : α
hxt : x ∈ t
⊢ x ∈ s

tactic: exact by_contra fun hxs ↦ h x hxs (hP ht (insert_subset hxt hst))
state_before: case refine_2
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : DecidableEq α
P : Finset α → Prop
s : Finset α
hP : ∀ ⦃s t : Finset α⦄, P t → s ⊆ t → P s
x✝ : P s
h : ∀ x ∉ s, ¬P (insert x s)
t : Finset α
ht : P t
hst : s ⊆ t
x : α
hxt : x ∈ t
⊢ x ∈ s
state_after: no goals

tactic: rw [h hxs (subset_insert _ _)]
state_before: case refine_1
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : DecidableEq α
P : Finset α → Prop
s : Finset α
hP : ∀ ⦃s t : Finset α⦄, P t → s ⊆ t → P s
x✝ : P s
h : ∀ ⦃y : Finset α⦄, P y → s ⊆ y → s = y
x : α
hx : x ∉ s
hxs : P (insert x s)
⊢ x ∈ s
state_after: case refine_1
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : DecidableEq α
P : Finset α → Prop
s : Finset α
hP : ∀ ⦃s t : Finset α⦄, P t → s ⊆ t → P s
x✝ : P s
h : ∀ ⦃y : Finset α⦄, P y → s ⊆ y → s = y
x : α
hx : x ∉ s
hxs : P (insert x s)
⊢ x ∈ insert x s

tactic: exact mem_insert_self x s
state_before: case refine_1
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : DecidableEq α
P : Finset α → Prop
s : Finset α
hP : ∀ ⦃s t : Finset α⦄, P t → s ⊆ t → P s
x✝ : P s
h : ∀ ⦃y : Finset α⦄, P y → s ⊆ y → s = y
x : α
hx : x ∉ s
hxs : P (insert x s)
⊢ x ∈ insert x s
state_after: no goals
Theorem: Computation.length_think
File: Mathlib/Data/Seq/Computation.lean

tactic: apply le_antisymm
state_before: α : Type u
β : Type v
γ : Type w
s : Computation α
h : s.Terminates
⊢ s.think.length = s.length + 1
state_after: case a
α : Type u
β : Type v
γ : Type w
s : Computation α
h : s.Terminates
⊢ s.think.length ≤ s.length + 1

case a
α : Type u
β : Type v
γ : Type w
s : Computation α
h : s.Terminates
⊢ s.length + 1 ≤ s.think.length

tactic: exact Nat.find_min' _ (Nat.find_spec ((terminates_def _).1 h))
state_before: case a
α : Type u
β : Type v
γ : Type w
s : Computation α
h : s.Terminates
⊢ s.think.length ≤ s.length + 1
state_after: no goals

tactic: have : (Option.isSome ((think s).val (length (think s))) : Prop) :=
  Nat.find_spec ((terminates_def _).1 s.think_terminates)
state_before: case a
α : Type u
β : Type v
γ : Type w
s : Computation α
h : s.Terminates
⊢ s.length + 1 ≤ s.think.length
state_after: case a
α : Type u
β : Type v
γ : Type w
s : Computation α
h : s.Terminates
this : (↑s.think s.think.length).isSome = true
⊢ s.length + 1 ≤ s.think.length

tactic: revert this
state_before: case a
α : Type u
β : Type v
γ : Type w
s : Computation α
h : s.Terminates
this : (↑s.think s.think.length).isSome = true
⊢ s.length + 1 ≤ s.think.length
state_after: case a
α : Type u
β : Type v
γ : Type w
s : Computation α
h : s.Terminates
⊢ (↑s.think s.think.length).isSome = true → s.length + 1 ≤ s.think.length

tactic: cases' length (think s) with n <;> intro this
state_before: case a
α : Type u
β : Type v
γ : Type w
s : Computation α
h : s.Terminates
⊢ (↑s.think s.think.length).isSome = true → s.length + 1 ≤ s.think.length
state_after: case a.zero
α : Type u
β : Type v
γ : Type w
s : Computation α
h : s.Terminates
this : (↑s.think 0).isSome = true
⊢ s.length + 1 ≤ 0

case a.succ
α : Type u
β : Type v
γ : Type w
s : Computation α
h : s.Terminates
n : ℕ
this : (↑s.think (n + 1)).isSome = true
⊢ s.length + 1 ≤ n + 1

tactic: simp [think, Stream'.cons] at this
state_before: case a.zero
α : Type u
β : Type v
γ : Type w
s : Computation α
h : s.Terminates
this : (↑s.think 0).isSome = true
⊢ s.length + 1 ≤ 0
state_after: no goals

tactic: apply Nat.succ_le_succ
state_before: case a.succ
α : Type u
β : Type v
γ : Type w
s : Computation α
h : s.Terminates
n : ℕ
this : (↑s.think (n + 1)).isSome = true
⊢ s.length + 1 ≤ n + 1
state_after: case a.succ.a
α : Type u
β : Type v
γ : Type w
s : Computation α
h : s.Terminates
n : ℕ
this : (↑s.think (n + 1)).isSome = true
⊢ s.length ≤ n

tactic: apply Nat.find_min'
state_before: case a.succ.a
α : Type u
β : Type v
γ : Type w
s : Computation α
h : s.Terminates
n : ℕ
this : (↑s.think (n + 1)).isSome = true
⊢ s.length ≤ n
state_after: case a.succ.a.h
α : Type u
β : Type v
γ : Type w
s : Computation α
h : s.Terminates
n : ℕ
this : (↑s.think (n + 1)).isSome = true
⊢ (↑s n).isSome = true

tactic: apply this
state_before: case a.succ.a.h
α : Type u
β : Type v
γ : Type w
s : Computation α
h : s.Terminates
n : ℕ
this : (↑s.think (n + 1)).isSome = true
⊢ (↑s n).isSome = true
state_after: no goals
Theorem: zero_lt_one_add_norm_sq'
File: Mathlib/Analysis/Normed/Group/Basic.lean

tactic: positivity
state_before: 𝓕 : Type u_1
𝕜 : Type u_2
α : Type u_3
ι : Type u_4
κ : Type u_5
E : Type u_6
F : Type u_7
G : Type u_8
inst✝² : SeminormedGroup E
inst✝¹ : SeminormedGroup F
inst✝ : SeminormedGroup G
s : Set E
a a₁ a₂ b b₁ b₂ : E
r r₁ r₂ : ℝ
x : E
⊢ 0 < 1 + ‖x‖ ^ 2
state_after: no goals
Theorem: MeasureTheory.ae_eq_empty
File: Mathlib/MeasureTheory/OuterMeasure/AE.lean

tactic: simp only [ae_iff, Classical.not_not, setOf_mem_eq]
state_before: α : Type u_1
β : Type u_2
F : Type u_3
inst✝¹ : FunLike F (Set α) ℝ≥0∞
inst✝ : OuterMeasureClass F α
μ : F
s t : Set α
⊢ (∀ᵐ (x : α) ∂μ, x ∉ s) ↔ μ s = 0
state_after: no goals
Theorem: Set.image_update_Ioo
File: Mathlib/Order/Interval/Set/Pi.lean

tactic: rw [← Ico_diff_left, ← Ico_diff_left, image_diff (update_injective _ _), image_singleton,
  image_update_Ico]
state_before: ι : Type u_1
α : ι → Type u_2
inst✝¹ : DecidableEq ι
inst✝ : (i : ι) → PartialOrder (α i)
f : (i : ι) → α i
i : ι
a b : α i
⊢ update f i '' Ioo a b = Ioo (update f i a) (update f i b)
state_after: no goals
Theorem: Metric.exists_dist_lt_of_hausdorffDist_lt'
File: Mathlib/Topology/MetricSpace/HausdorffDistance.lean

tactic: rw [hausdorffDist_comm] at H
state_before: ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
s t u : Set α
x y : α
Φ : α → β
r : ℝ
h : y ∈ t
H : hausdorffDist s t < r
fin : hausdorffEdist s t ≠ ⊤
⊢ ∃ x ∈ s, dist x y < r
state_after: ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
s t u : Set α
x y : α
Φ : α → β
r : ℝ
h : y ∈ t
H : hausdorffDist t s < r
fin : hausdorffEdist s t ≠ ⊤
⊢ ∃ x ∈ s, dist x y < r

tactic: rw [hausdorffEdist_comm] at fin
state_before: ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
s t u : Set α
x y : α
Φ : α → β
r : ℝ
h : y ∈ t
H : hausdorffDist t s < r
fin : hausdorffEdist s t ≠ ⊤
⊢ ∃ x ∈ s, dist x y < r
state_after: ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
s t u : Set α
x y : α
Φ : α → β
r : ℝ
h : y ∈ t
H : hausdorffDist t s < r
fin : hausdorffEdist t s ≠ ⊤
⊢ ∃ x ∈ s, dist x y < r

tactic: simpa [dist_comm] using exists_dist_lt_of_hausdorffDist_lt h H fin
state_before: ι : Sort u_1
α : Type u
β : Type v
inst✝¹ : PseudoMetricSpace α
inst✝ : PseudoMetricSpace β
s t u : Set α
x y : α
Φ : α → β
r : ℝ
h : y ∈ t
H : hausdorffDist t s < r
fin : hausdorffEdist t s ≠ ⊤
⊢ ∃ x ∈ s, dist x y < r
state_after: no goals
Theorem: Ordinal.CNFRec_zero
File: Mathlib/SetTheory/Ordinal/CantorNormalForm.lean

tactic: rw [CNFRec, dif_pos rfl]
state_before: C : Ordinal.{u_2} → Sort u_1
b : Ordinal.{u_2}
H0 : C 0
H : (o : Ordinal.{u_2}) → o ≠ 0 → C (o % b ^ log b o) → C o
⊢ b.CNFRec H0 H 0 = H0
state_after: C : Ordinal.{u_2} → Sort u_1
b : Ordinal.{u_2}
H0 : C 0
H : (o : Ordinal.{u_2}) → o ≠ 0 → C (o % b ^ log b o) → C o
⊢ ⋯.mpr H0 = H0

tactic: rfl
state_before: C : Ordinal.{u_2} → Sort u_1
b : Ordinal.{u_2}
H0 : C 0
H : (o : Ordinal.{u_2}) → o ≠ 0 → C (o % b ^ log b o) → C o
⊢ ⋯.mpr H0 = H0
state_after: no goals
Theorem: Nat.log_mul_base
File: Mathlib/Data/Nat/Log.lean

tactic: apply log_eq_of_pow_le_of_lt_pow <;> rw [pow_succ', Nat.mul_comm b]
state_before: b n : ℕ
hb : 1 < b
hn : n ≠ 0
⊢ log b (n * b) = log b n + 1
state_after: case h₁
b n : ℕ
hb : 1 < b
hn : n ≠ 0
⊢ b ^ log b n * b ≤ n * b

case h₂
b n : ℕ
hb : 1 < b
hn : n ≠ 0
⊢ n * b < b ^ (log b n + 1) * b

tactic: exacts [Nat.mul_le_mul_right _ (pow_log_le_self _ hn),
  (Nat.mul_lt_mul_right (Nat.zero_lt_one.trans hb)).2 (lt_pow_succ_log_self hb _)]
state_before: case h₁
b n : ℕ
hb : 1 < b
hn : n ≠ 0
⊢ b ^ log b n * b ≤ n * b

case h₂
b n : ℕ
hb : 1 < b
hn : n ≠ 0
⊢ n * b < b ^ (log b n + 1) * b
state_after: no goals
Theorem: AddCommGroup.ModEq.nsmul
File: Mathlib/Algebra/ModEq.lean

tactic: rw [← smul_sub, hm, smul_comm]
state_before: α : Type u_1
inst✝ : AddCommGroup α
p a a₁ a₂ b b₁ b₂ c : α
n : ℕ
z m : ℤ
hm : b - a = m • p
⊢ n • b - n • a = m • n • p
state_after: no goals