tasksource/leandojo huggingface dataset:
Theorem: Metric.Bounded.cthickening
File: Mathlib/Topology/MetricSpace/HausdorffDistance.lean

tactic: have : Bounded (thickening (max (δ + 1) 1) E) := h.thickening
state_before: ι : Sort ?u.109564
α✝ : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α✝
δ✝ ε : ℝ
s t : Set α✝
x : α✝
α : Type u_1
inst✝ : PseudoMetricSpace α
δ : ℝ
E : Set α
h : Bounded E
⊢ Bounded (Metric.cthickening δ E)

tactic: apply Bounded.mono _ this
state_before: ι : Sort ?u.109564
α✝ : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α✝
δ✝ ε : ℝ
s t : Set α✝
x : α✝
α : Type u_1
inst✝ : PseudoMetricSpace α
δ : ℝ
E : Set α
h : Bounded E
this : Bounded (thickening (max (δ + 1) 1) E)
⊢ Bounded (Metric.cthickening δ E)

tactic: exact cthickening_subset_thickening' (zero_lt_one.trans_le (le_max_right _ _))
  ((lt_add_one _).trans_le (le_max_left _ _)) _
state_before: ι : Sort ?u.109564
α✝ : Type u
β : Type v
inst✝¹ : PseudoEMetricSpace α✝
δ✝ ε : ℝ
s t : Set α✝
x : α✝
α : Type u_1
inst✝ : PseudoMetricSpace α
δ : ℝ
E : Set α
h : Bounded E
this : Bounded (thickening (max (δ + 1) 1) E)
⊢ Metric.cthickening δ E ⊆ thickening (max (δ + 1) 1) E
Theorem: TendstoLocallyUniformly.comp
File: Mathlib/Topology/UniformSpace/UniformConvergence.lean

tactic: rw [← tendstoLocallyUniformlyOn_univ] at h⊢
state_before: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝² : UniformSpace β
F : ι → α → β
f : α → β
s s' : Set α
x : α
p : Filter ι
p' : Filter α
g✝ : ι → α
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace γ
h : TendstoLocallyUniformly F f p
g : γ → α
cg : Continuous g
⊢ TendstoLocallyUniformly (fun n => F n ∘ g) (f ∘ g) p

tactic: rw [continuous_iff_continuousOn_univ] at cg
state_before: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝² : UniformSpace β
F : ι → α → β
f : α → β
s s' : Set α
x : α
p : Filter ι
p' : Filter α
g✝ : ι → α
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace γ
h : TendstoLocallyUniformlyOn F f p univ
g : γ → α
cg : Continuous g
⊢ TendstoLocallyUniformlyOn (fun n => F n ∘ g) (f ∘ g) p univ

tactic: exact h.comp _ (mapsTo_univ _ _) cg
state_before: α : Type u
β : Type v
γ : Type w
ι : Type x
inst✝² : UniformSpace β
F : ι → α → β
f : α → β
s s' : Set α
x : α
p : Filter ι
p' : Filter α
g✝ : ι → α
inst✝¹ : TopologicalSpace α
inst✝ : TopologicalSpace γ
h : TendstoLocallyUniformlyOn F f p univ
g : γ → α
cg : ContinuousOn g univ
⊢ TendstoLocallyUniformlyOn (fun n => F n ∘ g) (f ∘ g) p univ
Theorem: Cubic.b_eq_three_roots
File: Mathlib/Algebra/CubicDiscriminant.lean

tactic: injection eq_sum_three_roots ha h3
state_before: R : Type ?u.1023752
S : Type ?u.1023755
F : Type u_1
K : Type u_2
P : Cubic F
inst✝¹ : Field F
inst✝ : Field K
φ : F →+* K
x y z : K
ha : P.a ≠ 0
h3 : roots (map φ P) = {x, y, z}
⊢ ↑φ P.b = ↑φ P.a * -(x + y + z)
Theorem: ext_inner_right
File: Mathlib/Analysis/InnerProductSpace/Basic.lean

tactic: rw [← sub_eq_zero, ← @inner_self_eq_zero 𝕜, inner_sub_left, sub_eq_zero, h (x - y)]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.1813291
inst✝⁴ : IsROrC 𝕜
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : InnerProductSpace ℝ F
dec_E : DecidableEq E
x y : E
h : ∀ (v : E), inner x v = inner y v
⊢ x = y
Theorem: Submodule.mul_one_div_le_one
File: Mathlib/Algebra/Algebra/Operations.lean

tactic: rw [Submodule.mul_le]
state_before: ι : Sort uι
R : Type u
inst✝² : CommSemiring R
A : Type v
inst✝¹ : CommSemiring A
inst✝ : Algebra R A
M N : Submodule R A
m n : A
I : Submodule R A
⊢ I * (1 / I) ≤ 1

tactic: intro m hm n hn
state_before: ι : Sort uι
R : Type u
inst✝² : CommSemiring R
A : Type v
inst✝¹ : CommSemiring A
inst✝ : Algebra R A
M N : Submodule R A
m n : A
I : Submodule R A
⊢ ∀ (m : A), m ∈ I → ∀ (n : A), n ∈ 1 / I → m * n ∈ 1

tactic: rw [Submodule.mem_div_iff_forall_mul_mem] at hn
state_before: ι : Sort uι
R : Type u
inst✝² : CommSemiring R
A : Type v
inst✝¹ : CommSemiring A
inst✝ : Algebra R A
M N : Submodule R A
m✝ n✝ : A
I : Submodule R A
m : A
hm : m ∈ I
n : A
hn : n ∈ 1 / I
⊢ m * n ∈ 1

tactic: rw [mul_comm]
state_before: ι : Sort uι
R : Type u
inst✝² : CommSemiring R
A : Type v
inst✝¹ : CommSemiring A
inst✝ : Algebra R A
M N : Submodule R A
m✝ n✝ : A
I : Submodule R A
m : A
hm : m ∈ I
n : A
hn : ∀ (y : A), y ∈ I → n * y ∈ 1
⊢ m * n ∈ 1

tactic: exact hn m hm
state_before: ι : Sort uι
R : Type u
inst✝² : CommSemiring R
A : Type v
inst✝¹ : CommSemiring A
inst✝ : Algebra R A
M N : Submodule R A
m✝ n✝ : A
I : Submodule R A
m : A
hm : m ∈ I
n : A
hn : ∀ (y : A), y ∈ I → n * y ∈ 1
⊢ n * m ∈ 1
Theorem: CategoryTheory.Limits.coprod.map_id_id
File: Mathlib/CategoryTheory/Limits/Shapes/BinaryProducts.lean

tactic: apply coprod.hom_ext
state_before: C : Type u
inst✝¹ : Category C
X✝ Y✝ X Y : C
inst✝ : HasBinaryCoproduct X Y
⊢ map (𝟙 X) (𝟙 Y) = 𝟙 (X ⨿ Y)

tactic: simp
state_before: case h₁
C : Type u
inst✝¹ : Category C
X✝ Y✝ X Y : C
inst✝ : HasBinaryCoproduct X Y
⊢ inl ≫ map (𝟙 X) (𝟙 Y) = inl ≫ 𝟙 (X ⨿ Y)

case h₂
C : Type u
inst✝¹ : Category C
X✝ Y✝ X Y : C
inst✝ : HasBinaryCoproduct X Y
⊢ inr ≫ map (𝟙 X) (𝟙 Y) = inr ≫ 𝟙 (X ⨿ Y)

tactic: simp
state_before: case h₂
C : Type u
inst✝¹ : Category C
X✝ Y✝ X Y : C
inst✝ : HasBinaryCoproduct X Y
⊢ inr ≫ map (𝟙 X) (𝟙 Y) = inr ≫ 𝟙 (X ⨿ Y)
Theorem: CauSeq.lt_trans
File: Mathlib/Data/Real/CauSeq.lean

tactic: convert add_pos fg gh using 1
state_before: α : Type u_1
inst✝ : LinearOrderedField α
f g h : CauSeq α abs
fg : f < g
gh : g < h
⊢ Pos (h - f)

tactic: simp
state_before: case h.e'_3
α : Type u_1
inst✝ : LinearOrderedField α
f g h : CauSeq α abs
fg : f < g
gh : g < h
⊢ h - f = g - f + (h - g)
Theorem: Real.sin_lt
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Bounds.lean

tactic: cases' lt_or_le 1 x with h' h'
state_before: x : ℝ
h : 0 < x
⊢ sin x < x

tactic: have hx : |x| = x := abs_of_nonneg h.le
state_before: case inr
x : ℝ
h : 0 < x
h' : x ≤ 1
⊢ sin x < x

tactic: have := le_of_abs_le (sin_bound <| show |x| ≤ 1 by rwa [hx])
state_before: case inr
x : ℝ
h : 0 < x
h' : x ≤ 1
hx : abs x = x
⊢ sin x < x

tactic: rw [sub_le_iff_le_add', hx] at this
state_before: case inr
x : ℝ
h : 0 < x
h' : x ≤ 1
hx : abs x = x
this : sin x - (x - x ^ 3 / 6) ≤ abs x ^ 4 * (5 / 96)
⊢ sin x < x

tactic: apply this.trans_lt
state_before: case inr
x : ℝ
h : 0 < x
h' : x ≤ 1
hx : abs x = x
this : sin x ≤ x - x ^ 3 / 6 + x ^ 4 * (5 / 96)
⊢ sin x < x

tactic: rw [sub_add, sub_lt_self_iff, sub_pos, div_eq_mul_inv (x ^ 3)]
state_before: case inr
x : ℝ
h : 0 < x
h' : x ≤ 1
hx : abs x = x
this : sin x ≤ x - x ^ 3 / 6 + x ^ 4 * (5 / 96)
⊢ x - x ^ 3 / 6 + x ^ 4 * (5 / 96) < x

tactic: refine' mul_lt_mul' _ (by norm_num) (by norm_num) (pow_pos h 3)
state_before: case inr
x : ℝ
h : 0 < x
h' : x ≤ 1
hx : abs x = x
this : sin x ≤ x - x ^ 3 / 6 + x ^ 4 * (5 / 96)
⊢ x ^ 4 * (5 / 96) < x ^ 3 * 6⁻¹

tactic: apply pow_le_pow_of_le_one h.le h'
state_before: case inr
x : ℝ
h : 0 < x
h' : x ≤ 1
hx : abs x = x
this : sin x ≤ x - x ^ 3 / 6 + x ^ 4 * (5 / 96)
⊢ x ^ 4 ≤ x ^ 3

tactic: norm_num
state_before: case inr
x : ℝ
h : 0 < x
h' : x ≤ 1
hx : abs x = x
this : sin x ≤ x - x ^ 3 / 6 + x ^ 4 * (5 / 96)
⊢ 3 ≤ 4

tactic: exact (sin_le_one x).trans_lt h'
state_before: case inl
x : ℝ
h : 0 < x
h' : 1 < x
⊢ sin x < x

tactic: rwa [hx]
state_before: x : ℝ
h : 0 < x
h' : x ≤ 1
hx : abs x = x
⊢ abs x ≤ 1

tactic: norm_num
state_before: x : ℝ
h : 0 < x
h' : x ≤ 1
hx : abs x = x
this : sin x ≤ x - x ^ 3 / 6 + x ^ 4 * (5 / 96)
⊢ 5 / 96 < 6⁻¹

tactic: norm_num
state_before: x : ℝ
h : 0 < x
h' : x ≤ 1
hx : abs x = x
this : sin x ≤ x - x ^ 3 / 6 + x ^ 4 * (5 / 96)
⊢ 0 ≤ 5 / 96
Theorem: SimpleGraph.edgeFinset_sup
File: Mathlib/Combinatorics/SimpleGraph/Basic.lean

tactic: simp [edgeFinset]
state_before: ι : Sort ?u.113297
𝕜 : Type ?u.113300
V : Type u
W : Type v
X : Type w
G : SimpleGraph V
G' : SimpleGraph W
a b c u v w : V
e : Sym2 V
G₁ G₂ : SimpleGraph V
inst✝³ : Fintype ↑(edgeSet G)
inst✝² : Fintype ↑(edgeSet G₁)
inst✝¹ : Fintype ↑(edgeSet G₂)
inst✝ : DecidableEq V
⊢ edgeFinset (G₁ ⊔ G₂) = edgeFinset G₁ ∪ edgeFinset G₂
Theorem: HomologicalComplex.kernel_eq_kernel
File: Mathlib/Algebra/Homology/HomologicalComplex.lean

tactic: rw [← d_comp_eqToHom C r r']
state_before: ι : Type u_1
V : Type u
inst✝² : Category V
inst✝¹ : HasZeroMorphisms V
c : ComplexShape ι
C : HomologicalComplex V c
inst✝ : HasKernels V
i j j' : ι
r : ComplexShape.Rel c i j
r' : ComplexShape.Rel c i j'
⊢ kernelSubobject (d C i j) = kernelSubobject (d C i j')

tactic: apply kernelSubobject_comp_mono
state_before: ι : Type u_1
V : Type u
inst✝² : Category V
inst✝¹ : HasZeroMorphisms V
c : ComplexShape ι
C : HomologicalComplex V c
inst✝ : HasKernels V
i j j' : ι
r : ComplexShape.Rel c i j
r' : ComplexShape.Rel c i j'
⊢ kernelSubobject (d C i j' ≫ eqToHom (_ : X C j' = X C j)) = kernelSubobject (d C i j')
Theorem: MeasureTheory.StronglyMeasurable.measurableSet_lt
File: Mathlib/MeasureTheory/Function/StronglyMeasurable/Basic.lean

tactic: borelize (β × β)
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.225359
ι : Type ?u.225362
inst✝⁴ : Countable ι
f✝ g✝ : α → β
m : MeasurableSpace α
inst✝³ : TopologicalSpace β
inst✝² : LinearOrder β
inst✝¹ : OrderClosedTopology β
inst✝ : PseudoMetrizableSpace β
f g : α → β
hf : StronglyMeasurable f
hg : StronglyMeasurable g
⊢ MeasurableSet {a | f a < g a}

tactic: exact (hf.prod_mk hg).measurable isOpen_lt_prod.measurableSet
state_before: α : Type u_1
β : Type u_2
γ : Type ?u.225359
ι : Type ?u.225362
inst✝⁴ : Countable ι
f✝ g✝ : α → β
m : MeasurableSpace α
inst✝³ : TopologicalSpace β
inst✝² : LinearOrder β
inst✝¹ : OrderClosedTopology β
inst✝ : PseudoMetrizableSpace β
f g : α → β
hf : StronglyMeasurable f
hg : StronglyMeasurable g
this✝¹ : MeasurableSpace (β × β) := borel (β × β)
this✝ : BorelSpace (β × β)
⊢ MeasurableSet {a | f a < g a}
Theorem: Turing.eval_maximal
File: Mathlib/Computability/TuringMachine.lean

tactic: cases b0.symm.trans h'
state_before: σ : Type u_1
f : σ → Option σ
a b : σ
h : b ∈ eval f a
c : σ
left✝ : Reaches f a b
b0 : f b = none
b' : σ
h' : b' ∈ f b
⊢ False
Theorem: Polynomial.sum_taylor_eq
File: Mathlib/Data/Polynomial/Taylor.lean

tactic: rw [← comp_eq_sum_left, sub_eq_add_neg, ← C_neg, ← taylor_apply, taylor_taylor, neg_add_self,
  taylor_zero]
state_before: R✝ : Type ?u.229785
inst✝¹ : Semiring R✝
r✝ : R✝
f✝ : R✝[X]
R : Type u_1
inst✝ : CommRing R
f : R[X]
r : R
⊢ (sum (↑(taylor r) f) fun i a => ↑C a * (X - ↑C r) ^ i) = f
Theorem: Polynomial.IsUnitTrinomial.ne_zero
File: Mathlib/Data/Polynomial/UnitTrinomial.lean

tactic: rintro rfl
state_before: p q : ℤ[X]
hp : IsUnitTrinomial p
⊢ p ≠ 0

tactic: exact Nat.zero_ne_bit1 1 hp.card_support_eq_three
state_before: q : ℤ[X]
hp : IsUnitTrinomial 0
⊢ False
Theorem: LieModule.lowerCentralSeriesLast_le_max_triv
File: Mathlib/Algebra/Lie/Nilpotent.lean

tactic: rw [lowerCentralSeriesLast]
state_before: R : Type u
L : Type v
M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : LieRing L
inst✝⁴ : LieAlgebra R L
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : LieRingModule L M
inst✝ : LieModule R L M
k : ℕ
N : LieSubmodule R L M
⊢ lowerCentralSeriesLast R L M ≤ maxTrivSubmodule R L M

tactic: cases' h : nilpotencyLength R L M with k
state_before: R : Type u
L : Type v
M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : LieRing L
inst✝⁴ : LieAlgebra R L
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : LieRingModule L M
inst✝ : LieModule R L M
k : ℕ
N : LieSubmodule R L M
⊢ (match nilpotencyLength R L M with
    | 0 => ⊥
    | Nat.succ k => lowerCentralSeries R L M k) ≤
    maxTrivSubmodule R L M

tactic: exact bot_le
state_before: case zero
R : Type u
L : Type v
M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : LieRing L
inst✝⁴ : LieAlgebra R L
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : LieRingModule L M
inst✝ : LieModule R L M
k : ℕ
N : LieSubmodule R L M
h : nilpotencyLength R L M = Nat.zero
⊢ (match Nat.zero with
    | 0 => ⊥
    | Nat.succ k => lowerCentralSeries R L M k) ≤
    maxTrivSubmodule R L M

tactic: rw [le_max_triv_iff_bracket_eq_bot]
state_before: case succ
R : Type u
L : Type v
M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : LieRing L
inst✝⁴ : LieAlgebra R L
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : LieRingModule L M
inst✝ : LieModule R L M
k✝ : ℕ
N : LieSubmodule R L M
k : ℕ
h : nilpotencyLength R L M = Nat.succ k
⊢ (match Nat.succ k with
    | 0 => ⊥
    | Nat.succ k => lowerCentralSeries R L M k) ≤
    maxTrivSubmodule R L M

tactic: rw [nilpotencyLength_eq_succ_iff, lowerCentralSeries_succ] at h
state_before: case succ
R : Type u
L : Type v
M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : LieRing L
inst✝⁴ : LieAlgebra R L
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : LieRingModule L M
inst✝ : LieModule R L M
k✝ : ℕ
N : LieSubmodule R L M
k : ℕ
h : nilpotencyLength R L M = Nat.succ k
⊢ ⁅⊤,
      match Nat.succ k with
      | 0 => ⊥
      | Nat.succ k => lowerCentralSeries R L M k⁆ =
    ⊥

tactic: exact h.1
state_before: case succ
R : Type u
L : Type v
M : Type w
inst✝⁶ : CommRing R
inst✝⁵ : LieRing L
inst✝⁴ : LieAlgebra R L
inst✝³ : AddCommGroup M
inst✝² : Module R M
inst✝¹ : LieRingModule L M
inst✝ : LieModule R L M
k✝ : ℕ
N : LieSubmodule R L M
k : ℕ
h : ⁅⊤, lowerCentralSeries R L M k⁆ = ⊥ ∧ lowerCentralSeries R L M k ≠ ⊥
⊢ ⁅⊤,
      match Nat.succ k with
      | 0 => ⊥
      | Nat.succ k => lowerCentralSeries R L M k⁆ =
    ⊥
Theorem: neg_one_mul
File: Mathlib/Algebra/Ring/Defs.lean

tactic: simp
state_before: α : Type u
β : Type v
γ : Type w
R : Type x
inst✝¹ : MulOneClass α
inst✝ : HasDistribNeg α
a : α
⊢ -1 * a = -a
Theorem: SimplicialObject.Splitting.hom_ext'
File: Mathlib/AlgebraicTopology/SplitSimplicialObject.lean

tactic: rw [← cancel_epi (s.iso Δ).hom]
state_before: C : Type u_2
inst✝¹ : Category C
inst✝ : HasFiniteCoproducts C
X Y : SimplicialObject C
s : Splitting X
Z : C
Δ : SimplexCategoryᵒᵖ
f g : X.obj Δ ⟶ Z
h : ∀ (A : IndexSet Δ), ιSummand s A ≫ f = ιSummand s A ≫ g
⊢ f = g

tactic: apply colimit.hom_ext
state_before: C : Type u_2
inst✝¹ : Category C
inst✝ : HasFiniteCoproducts C
X Y : SimplicialObject C
s : Splitting X
Z : C
Δ : SimplexCategoryᵒᵖ
f g : X.obj Δ ⟶ Z
h : ∀ (A : IndexSet Δ), ιSummand s A ≫ f = ιSummand s A ≫ g
⊢ (iso s Δ).hom ≫ f = (iso s Δ).hom ≫ g

tactic: rintro ⟨A⟩
state_before: case w
C : Type u_2
inst✝¹ : Category C
inst✝ : HasFiniteCoproducts C
X Y : SimplicialObject C
s : Splitting X
Z : C
Δ : SimplexCategoryᵒᵖ
f g : X.obj Δ ⟶ Z
h : ∀ (A : IndexSet Δ), ιSummand s A ≫ f = ιSummand s A ≫ g
⊢ ∀ (j : Discrete (IndexSet Δ)),
    colimit.ι (Discrete.functor (summand s.N Δ)) j ≫ (iso s Δ).hom ≫ f =
      colimit.ι (Discrete.functor (summand s.N Δ)) j ≫ (iso s Δ).hom ≫ g

tactic: simpa only [ιSummand_eq, iso_hom, map, colimit.ι_desc_assoc, Cofan.mk_ι_app] using h A
state_before: case w.mk
C : Type u_2
inst✝¹ : Category C
inst✝ : HasFiniteCoproducts C
X Y : SimplicialObject C
s : Splitting X
Z : C
Δ : SimplexCategoryᵒᵖ
f g : X.obj Δ ⟶ Z
h : ∀ (A : IndexSet Δ), ιSummand s A ≫ f = ιSummand s A ≫ g
A : IndexSet Δ
⊢ colimit.ι (Discrete.functor (summand s.N Δ)) { as := A } ≫ (iso s Δ).hom ≫ f =
    colimit.ι (Discrete.functor (summand s.N Δ)) { as := A } ≫ (iso s Δ).hom ≫ g
Theorem: SimpleGraph.subgraphOfAdj_connected
File: Mathlib/Combinatorics/SimpleGraph/Connectivity.lean

tactic: constructor
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
v w : V
hvw : Adj G v w
⊢ Subgraph.Connected (subgraphOfAdj G hvw)

tactic: rintro ⟨a, ha⟩ ⟨b, hb⟩
state_before: case preconnected
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
v w : V
hvw : Adj G v w
⊢ Preconnected (Subgraph.coe (subgraphOfAdj G hvw))

tactic: simp only [subgraphOfAdj_verts, Set.mem_insert_iff, Set.mem_singleton_iff] at ha hb
state_before: case preconnected.mk.mk
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
v w : V
hvw : Adj G v w
a : V
ha : a ∈ (subgraphOfAdj G hvw).verts
b : V
hb : b ∈ (subgraphOfAdj G hvw).verts
⊢ Reachable (Subgraph.coe (subgraphOfAdj G hvw)) { val := a, property := ha } { val := b, property := hb }

tactic: obtain rfl | rfl := ha <;> obtain rfl | rfl := hb <;>
  first | rfl | (apply Adj.reachable; simp)
state_before: case preconnected.mk.mk
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
v w : V
hvw : Adj G v w
a : V
ha✝ : a ∈ (subgraphOfAdj G hvw).verts
b : V
hb✝ : b ∈ (subgraphOfAdj G hvw).verts
ha : a = v ∨ a = w
hb : b = v ∨ b = w
⊢ Reachable (Subgraph.coe (subgraphOfAdj G hvw)) { val := a, property := ha✝ } { val := b, property := hb✝ }

tactic: rfl
state_before: case preconnected.mk.mk.inr.inr
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
v b : V
hvw : Adj G v b
ha hb : b ∈ (subgraphOfAdj G hvw).verts
⊢ Reachable (Subgraph.coe (subgraphOfAdj G hvw)) { val := b, property := ha } { val := b, property := hb }

tactic: (apply Adj.reachable; simp)
state_before: case preconnected.mk.mk.inr.inl
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
a b : V
hvw : Adj G b a
ha : a ∈ (subgraphOfAdj G hvw).verts
hb : b ∈ (subgraphOfAdj G hvw).verts
⊢ Reachable (Subgraph.coe (subgraphOfAdj G hvw)) { val := a, property := ha } { val := b, property := hb }

tactic: apply Adj.reachable
state_before: case preconnected.mk.mk.inr.inl
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
a b : V
hvw : Adj G b a
ha : a ∈ (subgraphOfAdj G hvw).verts
hb : b ∈ (subgraphOfAdj G hvw).verts
⊢ Reachable (Subgraph.coe (subgraphOfAdj G hvw)) { val := a, property := ha } { val := b, property := hb }

tactic: simp
state_before: case preconnected.mk.mk.inr.inl.h
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
a b : V
hvw : Adj G b a
ha : a ∈ (subgraphOfAdj G hvw).verts
hb : b ∈ (subgraphOfAdj G hvw).verts
⊢ Adj (Subgraph.coe (subgraphOfAdj G hvw)) { val := a, property := ha } { val := b, property := hb }
Theorem: List.Func.length_set
File: Mathlib/Data/List/Func.lean

tactic: rw [max_eq_left]
state_before: α : Type u
β : Type v
γ : Type w
a✝ : α
as✝ as1 as2 as3 : List α
inst✝¹ : Inhabited α
inst✝ : Inhabited β
a : α
as : List α
⊢ length ((a :: as) {0 ↦ a✝}) = max (length (a :: as)) (0 + 1)

tactic: rfl
state_before: α : Type u
β : Type v
γ : Type w
a✝ : α
as✝ as1 as2 as3 : List α
inst✝¹ : Inhabited α
inst✝ : Inhabited β
a : α
as : List α
⊢ length ((a :: as) {0 ↦ a✝}) = length (a :: as)

tactic: simp [Nat.le_add_right]
state_before: α : Type u
β : Type v
γ : Type w
a✝ : α
as✝ as1 as2 as3 : List α
inst✝¹ : Inhabited α
inst✝ : Inhabited β
a : α
as : List α
⊢ 0 + 1 ≤ length (a :: as)

tactic: exact Nat.succ_le_succ (Nat.zero_le _)
state_before: α : Type u
β : Type v
γ : Type w
a✝ : α
as✝ as1 as2 as3 : List α
inst✝¹ : Inhabited α
inst✝ : Inhabited β
a : α
as : List α
⊢ 1 ≤ Nat.succ (length as)

tactic: have := @length_set m []
state_before: α : Type u
β : Type v
γ : Type w
a : α
as as1 as2 as3 : List α
inst✝¹ : Inhabited α
inst✝ : Inhabited β
m : ℕ
⊢ length ([] {m + 1 ↦ a}) = max (length []) (m + 1 + 1)

tactic: simp [set, length, @length_set m, Nat.zero_max]
state_before: α : Type u
β : Type v
γ : Type w
a : α
as as1 as2 as3 : List α
inst✝¹ : Inhabited α
inst✝ : Inhabited β
m : ℕ
this : length ([] {m ↦ a}) = max (length []) (m + 1)
⊢ length ([] {m + 1 ↦ a}) = max (length []) (m + 1 + 1)

tactic: simp [set, length, @length_set m, Nat.max_succ_succ]
state_before: α : Type u
β : Type v
γ : Type w
a : α
as✝ as1 as2 as3 : List α
inst✝¹ : Inhabited α
inst✝ : Inhabited β
m : ℕ
head✝ : α
as : List α
⊢ length ((head✝ :: as) {m + 1 ↦ a}) = max (length (head✝ :: as)) (m + 1 + 1)
Theorem: abs_eq_self
File: Mathlib/Algebra/Order/Ring/Abs.lean

tactic: simp [abs_eq_max_neg]
state_before: α : Type u_1
inst✝ : LinearOrderedRing α
a b c : α
⊢ abs a = a ↔ 0 ≤ a
Theorem: Nat.modEq_iff_dvd'
File: Mathlib/Data/Nat/ModEq.lean

tactic: rw [modEq_iff_dvd, ← Int.coe_nat_dvd, Int.ofNat_sub h]
state_before: m n a b c d : ℕ
h : a ≤ b
⊢ a ≡ b [MOD n] ↔ n ∣ b - a
Theorem: IsROrC.natCast_im
File: Mathlib/Data/IsROrC/Basic.lean

tactic: rw [← ofReal_natCast, ofReal_im]
state_before: K : Type u_1
E : Type ?u.6253389
inst✝ : IsROrC K
n : ℕ
⊢ ↑im ↑n = 0
Theorem: Equiv.Perm.IsCycle.cycleOf
File: Mathlib/GroupTheory/Perm/Cycle/Basic.lean

tactic: by_cases hx : f x = x
state_before: ι : Type ?u.2436705
α : Type u_1
β : Type ?u.2436711
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f g : Perm α
x y : α
hf : IsCycle f
⊢ cycleOf f x = if ↑f x = x then 1 else f

tactic: rwa [if_pos hx, cycleOf_eq_one_iff]
state_before: case pos
ι : Type ?u.2436705
α : Type u_1
β : Type ?u.2436711
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f g : Perm α
x y : α
hf : IsCycle f
hx : ↑f x = x
⊢ cycleOf f x = if ↑f x = x then 1 else f

tactic: rwa [if_neg hx, hf.cycleOf_eq]
state_before: case neg
ι : Type ?u.2436705
α : Type u_1
β : Type ?u.2436711
inst✝¹ : DecidableEq α
inst✝ : Fintype α
f g : Perm α
x y : α
hf : IsCycle f
hx : ¬↑f x = x
⊢ cycleOf f x = if ↑f x = x then 1 else f
Theorem: MeasureTheory.AEEqFun.comp₂_toGerm
File: Mathlib/MeasureTheory/Function/AEEqFun.lean

tactic: simp
state_before: α : Type u_4
β : Type u_2
γ : Type u_1
δ : Type u_3
inst✝³ : MeasurableSpace α
μ ν : Measure α
inst✝² : TopologicalSpace β
inst✝¹ : TopologicalSpace γ
inst✝ : TopologicalSpace δ
g : β → γ → δ
hg : Continuous (uncurry g)
f₁✝ : α →ₘ[μ] β
f₂✝ : α →ₘ[μ] γ
f₁ : α → β
x✝¹ : AEStronglyMeasurable f₁ μ
f₂ : α → γ
x✝ : AEStronglyMeasurable f₂ μ
⊢ toGerm (comp₂ g hg (mk f₁ x✝¹) (mk f₂ x✝)) = Germ.map₂ g (toGerm (mk f₁ x✝¹)) (toGerm (mk f₂ x✝))
Theorem: div_le_div₀
File: Mathlib/Algebra/Order/WithZero.lean

tactic: rw [mul_inv_le_iff₀ hb, mul_right_comm, le_mul_inv_iff₀ hd]
state_before: α : Type u_1
a✝ b✝ c✝ d✝ x y z : α
inst✝ : LinearOrderedCommGroupWithZero α
a b c d : α
hb : b ≠ 0
hd : d ≠ 0
⊢ a * b⁻¹ ≤ c * d⁻¹ ↔ a * d ≤ c * b
Theorem: PowerSeries.constantCoeff_exp
File: Mathlib/RingTheory/PowerSeries/WellKnown.lean

tactic: rw [← coeff_zero_eq_constantCoeff_apply, coeff_exp]
state_before: A : Type u_1
A' : Type ?u.330522
inst✝⁷ : Ring A
inst✝⁶ : Ring A'
inst✝⁵ : Algebra ℚ A
inst✝⁴ : Algebra ℚ A'
inst✝³ : Ring A
inst✝² : Ring A'
inst✝¹ : Algebra ℚ A
inst✝ : Algebra ℚ A'
n : ℕ
f : A →+* A'
⊢ ↑(constantCoeff A) (exp A) = 1

tactic: simp
state_before: A : Type u_1
A' : Type ?u.330522
inst✝⁷ : Ring A
inst✝⁶ : Ring A'
inst✝⁵ : Algebra ℚ A
inst✝⁴ : Algebra ℚ A'
inst✝³ : Ring A
inst✝² : Ring A'
inst✝¹ : Algebra ℚ A
inst✝ : Algebra ℚ A'
n : ℕ
f : A →+* A'
⊢ ↑(algebraMap ℚ A) (1 / ↑0!) = 1
Theorem: Order.Ico_succ_right_eq_insert_of_not_isMax
File: Mathlib/Order/SuccPred/Basic.lean

tactic: simp_rw [← Iio_inter_Ici, Iio_succ_eq_insert_of_not_isMax h₂, insert_inter_of_mem (mem_Ici.2 h₁)]
state_before: α : Type u_1
inst✝¹ : PartialOrder α
inst✝ : SuccOrder α
a b : α
h₁ : a ≤ b
h₂ : ¬IsMax b
⊢ Ico a (succ b) = insert b (Ico a b)
Theorem: Complex.abs_re_lt_abs
File: Mathlib/Data/Complex/Basic.lean

tactic: rw [Complex.abs, AbsoluteValue.coe_mk, MulHom.coe_mk, Real.lt_sqrt (abs_nonneg _), normSq_apply,
  _root_.sq_abs, ← sq, lt_add_iff_pos_right, mul_self_pos]
state_before: z : ℂ
⊢ Abs.abs z.re < ↑abs z ↔ z.im ≠ 0
Theorem: Finset.Ioc_diff_Ioo_self
File: Mathlib/Data/Finset/LocallyFinite.lean

tactic: simp [← coe_inj, h]
state_before: ι : Type ?u.104989
α : Type u_1
inst✝² : PartialOrder α
inst✝¹ : LocallyFiniteOrder α
a b c : α
inst✝ : DecidableEq α
h : a < b
⊢ Ioc a b \ Ioo a b = {b}