1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Metric.tendsto_dist_right_atTop_iff
File: Mathlib/Topology/MetricSpace/Bounded.lean

tactic: rw [← comap_dist_right_atTop c, tendsto_comap_iff, Function.comp_def]
state_before: α : Type u
β : Type v
X : Type u_1
ι : Type u_2
inst✝ : PseudoMetricSpace α
x : α
s t : Set α
r : ℝ
c : α
f : β → α
l : Filter β
⊢ Tendsto (fun x => dist (f x) c) l atTop ↔ Tendsto f l (cobounded α)
state_after: no goals
Theorem: CategoryTheory.IsIso.inv_eq_of_hom_inv_id
File: Mathlib/CategoryTheory/Iso.lean

tactic: apply (cancel_epi f).mp
state_before: C : Type u
inst✝¹ : Category.{v, u} C
X Y Z : C
f : X ⟶ Y
inst✝ : IsIso f
g : Y ⟶ X
hom_inv_id : f ≫ g = 𝟙 X
⊢ inv f = g
state_after: C : Type u
inst✝¹ : Category.{v, u} C
X Y Z : C
f : X ⟶ Y
inst✝ : IsIso f
g : Y ⟶ X
hom_inv_id : f ≫ g = 𝟙 X
⊢ f ≫ inv f = f ≫ g

tactic: simp [hom_inv_id]
state_before: C : Type u
inst✝¹ : Category.{v, u} C
X Y Z : C
f : X ⟶ Y
inst✝ : IsIso f
g : Y ⟶ X
hom_inv_id : f ≫ g = 𝟙 X
⊢ f ≫ inv f = f ≫ g
state_after: no goals
Theorem: forall_sUnion
File: Mathlib/Data/Set/Lattice.lean

tactic: simp_rw [← iInf_Prop_eq, iInf_sUnion]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
ι' : Sort u_5
ι₂ : Sort u_6
κ : ι → Sort u_7
κ₁ : ι → Sort u_8
κ₂ : ι → Sort u_9
κ' : ι' → Sort u_10
inst✝ : CompleteLattice β
S : Set (Set α)
p : α → Prop
⊢ (∀ x ∈ ⋃₀ S, p x) ↔ ∀ s ∈ S, ∀ x ∈ s, p x
state_after: no goals
Theorem: Nat.odd_sub'
File: Mathlib/Algebra/Ring/Parity.lean

tactic: rw [odd_iff_not_even, even_sub h, not_iff, not_iff_comm, odd_iff_not_even]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
R : Type u_4
m n : ℕ
h : n ≤ m
⊢ Odd (m - n) ↔ (Odd n ↔ Even m)
state_after: no goals
Theorem: Nat.cond_decide_mod_two
File: Mathlib/Init/Data/Nat/Lemmas.lean

tactic: by_cases h : x % 2 = 1
state_before: x : ℕ
d : Decidable (x % 2 = 1)
⊢ (bif decide (x % 2 = 1) then 1 else 0) = x % 2
state_after: case pos
x : ℕ
d : Decidable (x % 2 = 1)
h : x % 2 = 1
⊢ (bif decide (x % 2 = 1) then 1 else 0) = x % 2

case neg
x : ℕ
d : Decidable (x % 2 = 1)
h : ¬x % 2 = 1
⊢ (bif decide (x % 2 = 1) then 1 else 0) = x % 2

tactic: simp! [*]
state_before: case pos
x : ℕ
d : Decidable (x % 2 = 1)
h : x % 2 = 1
⊢ (bif decide (x % 2 = 1) then 1 else 0) = x % 2
state_after: no goals

tactic: cases mod_two_eq_zero_or_one x <;> simp! [*, Nat.zero_ne_one]
state_before: case neg
x : ℕ
d : Decidable (x % 2 = 1)
h : ¬x % 2 = 1
⊢ (bif decide (x % 2 = 1) then 1 else 0) = x % 2
state_after: no goals
Theorem: List.mapAccumr_eq_foldr
File: Mathlib/Data/List/Lemmas.lean

tactic: simp only [mapAccumr, foldr, mapAccumr_eq_foldr f as]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
σ : Type u_4
f : α → σ → σ × β
a : α
as : List α
s : σ
⊢ mapAccumr f (a :: as) s =
    foldr
      (fun a s =>
        let r := f a s.1;
        (r.1, r.2 :: s.2))
      (s, []) (a :: as)
state_after: no goals
Theorem: NumberField.InfinitePlace.isComplex_smul_iff
File: Mathlib/NumberTheory/NumberField/Embeddings.lean

tactic: rw [← not_isReal_iff_isComplex, ← not_isReal_iff_isComplex, isReal_smul_iff]
state_before: k : Type u_1
inst✝⁷ : Field k
K : Type u_2
inst✝⁶ : Field K
F : Type u_3
inst✝⁵ : Field F
inst✝⁴ : NumberField K
inst✝³ : Algebra k K
inst✝² : Algebra k F
inst✝¹ : Algebra K F
inst✝ : IsScalarTower k K F
σ : K ≃ₐ[k] K
w : InfinitePlace K
⊢ (σ • w).IsComplex ↔ w.IsComplex
state_after: no goals
Theorem: Real.one_sub_sq_div_two_le_cos
File: Mathlib/Analysis/SpecialFunctions/Trigonometric/Bounds.lean

tactic: wlog hx₀ : 0 ≤ x
state_before: x : ℝ
⊢ 1 - x ^ 2 / 2 ≤ cos x
state_after: case inr
x : ℝ
this : ∀ {x : ℝ}, 0 ≤ x → 1 - x ^ 2 / 2 ≤ cos x
hx₀ : ¬0 ≤ x
⊢ 1 - x ^ 2 / 2 ≤ cos x

x✝ x : ℝ
hx₀ : 0 ≤ x
⊢ 1 - x ^ 2 / 2 ≤ cos x

tactic: suffices MonotoneOn (fun x ↦ cos x + x ^ 2 / 2) (Ici 0) by
  simpa using this left_mem_Ici hx₀ hx₀
state_before: x✝ x : ℝ
hx₀ : 0 ≤ x
⊢ 1 - x ^ 2 / 2 ≤ cos x
state_after: x✝ x : ℝ
hx₀ : 0 ≤ x
⊢ MonotoneOn (fun x => cos x + x ^ 2 / 2) (Ici 0)

tactic: refine monotoneOn_of_hasDerivWithinAt_nonneg
  (convex_Ici _) (by fun_prop)
  (fun x _ ↦ ((hasDerivAt_cos ..).add <| (hasDerivAt_pow ..).div_const _).hasDerivWithinAt)
  fun x hx ↦ ?_
state_before: x✝ x : ℝ
hx₀ : 0 ≤ x
⊢ MonotoneOn (fun x => cos x + x ^ 2 / 2) (Ici 0)
state_after: x✝¹ x✝ : ℝ
hx₀ : 0 ≤ x✝
x : ℝ
hx : x ∈ interior (Ici 0)
⊢ 0 ≤ -sin x + ↑2 * x ^ (2 - 1) / 2

tactic: simpa [mul_div_cancel_left₀] using sin_le <| interior_subset hx
state_before: x✝¹ x✝ : ℝ
hx₀ : 0 ≤ x✝
x : ℝ
hx : x ∈ interior (Ici 0)
⊢ 0 ≤ -sin x + ↑2 * x ^ (2 - 1) / 2
state_after: no goals

tactic: simpa using this $ neg_nonneg.2 $ le_of_not_le hx₀
state_before: case inr
x : ℝ
this : ∀ {x : ℝ}, 0 ≤ x → 1 - x ^ 2 / 2 ≤ cos x
hx₀ : ¬0 ≤ x
⊢ 1 - x ^ 2 / 2 ≤ cos x
state_after: no goals

tactic: simpa using this left_mem_Ici hx₀ hx₀
state_before: x✝ x : ℝ
hx₀ : 0 ≤ x
this : MonotoneOn (fun x => cos x + x ^ 2 / 2) (Ici 0)
⊢ 1 - x ^ 2 / 2 ≤ cos x
state_after: no goals

tactic: fun_prop
state_before: x✝ x : ℝ
hx₀ : 0 ≤ x
⊢ ContinuousOn (fun x => cos x + x ^ 2 / 2) (Ici 0)
state_after: no goals
Theorem: FirstOrder.Language.Substructure.range_subtype
File: Mathlib/ModelTheory/Substructures.lean

tactic: ext x
state_before: L : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝² : L.Structure M
inst✝¹ : L.Structure N
inst✝ : L.Structure P
S✝ S : L.Substructure M
⊢ S.subtype.toHom.range = S
state_after: case h
L : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝² : L.Structure M
inst✝¹ : L.Structure N
inst✝ : L.Structure P
S✝ S : L.Substructure M
x : M
⊢ x ∈ S.subtype.toHom.range ↔ x ∈ S

tactic: simp only [Hom.mem_range, Embedding.coe_toHom, coeSubtype]
state_before: case h
L : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝² : L.Structure M
inst✝¹ : L.Structure N
inst✝ : L.Structure P
S✝ S : L.Substructure M
x : M
⊢ x ∈ S.subtype.toHom.range ↔ x ∈ S
state_after: case h
L : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝² : L.Structure M
inst✝¹ : L.Structure N
inst✝ : L.Structure P
S✝ S : L.Substructure M
x : M
⊢ (∃ y, ↑y = x) ↔ x ∈ S

tactic: refine ⟨?_, fun h => ⟨⟨x, h⟩, rfl⟩⟩
state_before: case h
L : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝² : L.Structure M
inst✝¹ : L.Structure N
inst✝ : L.Structure P
S✝ S : L.Substructure M
x : M
⊢ (∃ y, ↑y = x) ↔ x ∈ S
state_after: case h
L : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝² : L.Structure M
inst✝¹ : L.Structure N
inst✝ : L.Structure P
S✝ S : L.Substructure M
x : M
⊢ (∃ y, ↑y = x) → x ∈ S

tactic: rintro ⟨⟨y, hy⟩, rfl⟩
state_before: case h
L : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝² : L.Structure M
inst✝¹ : L.Structure N
inst✝ : L.Structure P
S✝ S : L.Substructure M
x : M
⊢ (∃ y, ↑y = x) → x ∈ S
state_after: case h.intro.mk
L : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝² : L.Structure M
inst✝¹ : L.Structure N
inst✝ : L.Structure P
S✝ S : L.Substructure M
y : M
hy : y ∈ S
⊢ ↑⟨y, hy⟩ ∈ S

tactic: exact hy
state_before: case h.intro.mk
L : Language
M : Type w
N : Type u_1
P : Type u_2
inst✝² : L.Structure M
inst✝¹ : L.Structure N
inst✝ : L.Structure P
S✝ S : L.Substructure M
y : M
hy : y ∈ S
⊢ ↑⟨y, hy⟩ ∈ S
state_after: no goals
Theorem: LinearMap.BilinForm.symmCompOfNondegenerate_left_apply
File: Mathlib/LinearAlgebra/BilinearForm/Properties.lean

tactic: conv_lhs => rw [comp_symmCompOfNondegenerate_apply]
state_before: R : Type u_1
M : Type u_2
inst✝¹⁵ : CommSemiring R
inst✝¹⁴ : AddCommMonoid M
inst✝¹³ : Module R M
R₁ : Type u_3
M₁ : Type u_4
inst✝¹² : CommRing R₁
inst✝¹¹ : AddCommGroup M₁
inst✝¹⁰ : Module R₁ M₁
V : Type u_5
K : Type u_6
inst✝⁹ : Field K
inst✝⁸ : AddCommGroup V
inst✝⁷ : Module K V
M'✝ : Type u_7
M'' : Type u_8
inst✝⁶ : AddCommMonoid M'✝
inst✝⁵ : AddCommMonoid M''
inst✝⁴ : Module R M'✝
inst✝³ : Module R M''
B : BilinForm R M
B₁✝ : BilinForm R₁ M₁
M' : Type u_9
inst✝² : AddCommMonoid M'
inst✝¹ : Module R M'
inst✝ : FiniteDimensional K V
B₁ B₂ : BilinForm K V
b₂ : B₂.Nondegenerate
v w : V
⊢ (B₂ ((B₁.symmCompOfNondegenerate B₂ b₂) w)) v = (B₁ w) v
state_after: no goals
Theorem: Bool.toNat_bne_one
File: Mathlib/Data/Bool/Basic.lean

tactic: simp [bne]
state_before: b : Bool
⊢ (b.toNat != 1) = !b
state_after: no goals
Theorem: List.exists_chain_of_relationReflTransGen
File: Mathlib/Data/List/Chain.lean

tactic: refine Relation.ReflTransGen.head_induction_on h ?_ ?_
state_before: α : Type u
β : Type v
R r : α → α → Prop
l l₁ l₂ : List α
a b : α
h : Relation.ReflTransGen r a b
⊢ ∃ l, Chain r a l ∧ (a :: l).getLast ⋯ = b
state_after: case refine_1
α : Type u
β : Type v
R r : α → α → Prop
l l₁ l₂ : List α
a b : α
h : Relation.ReflTransGen r a b
⊢ ∃ l, Chain r b l ∧ (b :: l).getLast ⋯ = b

case refine_2
α : Type u
β : Type v
R r : α → α → Prop
l l₁ l₂ : List α
a b : α
h : Relation.ReflTransGen r a b
⊢ ∀ {a c : α},
    r a c →
      Relation.ReflTransGen r c b →
        (∃ l, Chain r c l ∧ (c :: l).getLast ⋯ = b) → ∃ l, Chain r a l ∧ (a :: l).getLast ⋯ = b

tactic: exact ⟨[], Chain.nil, rfl⟩
state_before: case refine_1
α : Type u
β : Type v
R r : α → α → Prop
l l₁ l₂ : List α
a b : α
h : Relation.ReflTransGen r a b
⊢ ∃ l, Chain r b l ∧ (b :: l).getLast ⋯ = b
state_after: no goals

tactic: intro c d e _ ih
state_before: case refine_2
α : Type u
β : Type v
R r : α → α → Prop
l l₁ l₂ : List α
a b : α
h : Relation.ReflTransGen r a b
⊢ ∀ {a c : α},
    r a c →
      Relation.ReflTransGen r c b →
        (∃ l, Chain r c l ∧ (c :: l).getLast ⋯ = b) → ∃ l, Chain r a l ∧ (a :: l).getLast ⋯ = b
state_after: case refine_2
α : Type u
β : Type v
R r : α → α → Prop
l l₁ l₂ : List α
a b : α
h : Relation.ReflTransGen r a b
c d : α
e : r c d
h✝ : Relation.ReflTransGen r d b
ih : ∃ l, Chain r d l ∧ (d :: l).getLast ⋯ = b
⊢ ∃ l, Chain r c l ∧ (c :: l).getLast ⋯ = b

tactic: obtain ⟨l, hl₁, hl₂⟩ := ih
state_before: case refine_2
α : Type u
β : Type v
R r : α → α → Prop
l l₁ l₂ : List α
a b : α
h : Relation.ReflTransGen r a b
c d : α
e : r c d
h✝ : Relation.ReflTransGen r d b
ih : ∃ l, Chain r d l ∧ (d :: l).getLast ⋯ = b
⊢ ∃ l, Chain r c l ∧ (c :: l).getLast ⋯ = b
state_after: case refine_2.intro.intro
α : Type u
β : Type v
R r : α → α → Prop
l✝ l₁ l₂ : List α
a b : α
h : Relation.ReflTransGen r a b
c d : α
e : r c d
h✝ : Relation.ReflTransGen r d b
l : List α
hl₁ : Chain r d l
hl₂ : (d :: l).getLast ⋯ = b
⊢ ∃ l, Chain r c l ∧ (c :: l).getLast ⋯ = b

tactic: refine ⟨d :: l, Chain.cons e hl₁, ?_⟩
state_before: case refine_2.intro.intro
α : Type u
β : Type v
R r : α → α → Prop
l✝ l₁ l₂ : List α
a b : α
h : Relation.ReflTransGen r a b
c d : α
e : r c d
h✝ : Relation.ReflTransGen r d b
l : List α
hl₁ : Chain r d l
hl₂ : (d :: l).getLast ⋯ = b
⊢ ∃ l, Chain r c l ∧ (c :: l).getLast ⋯ = b
state_after: case refine_2.intro.intro
α : Type u
β : Type v
R r : α → α → Prop
l✝ l₁ l₂ : List α
a b : α
h : Relation.ReflTransGen r a b
c d : α
e : r c d
h✝ : Relation.ReflTransGen r d b
l : List α
hl₁ : Chain r d l
hl₂ : (d :: l).getLast ⋯ = b
⊢ (c :: d :: l).getLast ⋯ = b

tactic: rwa [getLast_cons_cons]
state_before: case refine_2.intro.intro
α : Type u
β : Type v
R r : α → α → Prop
l✝ l₁ l₂ : List α
a b : α
h : Relation.ReflTransGen r a b
c d : α
e : r c d
h✝ : Relation.ReflTransGen r d b
l : List α
hl₁ : Chain r d l
hl₂ : (d :: l).getLast ⋯ = b
⊢ (c :: d :: l).getLast ⋯ = b
state_after: no goals
Theorem: AddCircle.scaled_exp_map_periodic
File: Mathlib/Analysis/SpecialFunctions/Complex/Circle.lean

tactic: rcases eq_or_ne T 0 with (rfl | hT)
state_before: T : ℝ
⊢ Periodic (fun x => expMapCircle (2 * π / T * x)) T
state_after: case inl

⊢ Periodic (fun x => expMapCircle (2 * π / 0 * x)) 0

case inr
T : ℝ
hT : T ≠ 0
⊢ Periodic (fun x => expMapCircle (2 * π / T * x)) T

tactic: intro x
state_before: case inl

⊢ Periodic (fun x => expMapCircle (2 * π / 0 * x)) 0
state_after: case inl
x : ℝ
⊢ (fun x => expMapCircle (2 * π / 0 * x)) (x + 0) = (fun x => expMapCircle (2 * π / 0 * x)) x

tactic: simp
state_before: case inl
x : ℝ
⊢ (fun x => expMapCircle (2 * π / 0 * x)) (x + 0) = (fun x => expMapCircle (2 * π / 0 * x)) x
state_after: no goals

tactic: intro x
state_before: case inr
T : ℝ
hT : T ≠ 0
⊢ Periodic (fun x => expMapCircle (2 * π / T * x)) T
state_after: case inr
T : ℝ
hT : T ≠ 0
x : ℝ
⊢ (fun x => expMapCircle (2 * π / T * x)) (x + T) = (fun x => expMapCircle (2 * π / T * x)) x

tactic: simp_rw [mul_add]
state_before: case inr
T : ℝ
hT : T ≠ 0
x : ℝ
⊢ (fun x => expMapCircle (2 * π / T * x)) (x + T) = (fun x => expMapCircle (2 * π / T * x)) x
state_after: case inr
T : ℝ
hT : T ≠ 0
x : ℝ
⊢ expMapCircle (2 * π / T * x + 2 * π / T * T) = expMapCircle (2 * π / T * x)

tactic: rw [div_mul_cancel₀ _ hT, periodic_expMapCircle]
state_before: case inr
T : ℝ
hT : T ≠ 0
x : ℝ
⊢ expMapCircle (2 * π / T * x + 2 * π / T * T) = expMapCircle (2 * π / T * x)
state_after: no goals
Theorem: Polynomial.content_X_pow
File: Mathlib/RingTheory/Polynomial/Content.lean

tactic: induction' k with k hi
state_before: R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : NormalizedGCDMonoid R
k : ℕ
⊢ (X ^ k).content = 1
state_after: case zero
R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : NormalizedGCDMonoid R
⊢ (X ^ 0).content = 1

case succ
R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : NormalizedGCDMonoid R
k : ℕ
hi : (X ^ k).content = 1
⊢ (X ^ (k + 1)).content = 1

tactic: rw [pow_succ', content_X_mul, hi]
state_before: case succ
R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : NormalizedGCDMonoid R
k : ℕ
hi : (X ^ k).content = 1
⊢ (X ^ (k + 1)).content = 1
state_after: no goals

tactic: simp
state_before: case zero
R : Type u_1
inst✝² : CommRing R
inst✝¹ : IsDomain R
inst✝ : NormalizedGCDMonoid R
⊢ (X ^ 0).content = 1
state_after: no goals
Theorem: Unitization.starLift_range
File: Mathlib/Algebra/Algebra/Subalgebra/Unitization.lean

tactic: rw [starLift_range_le, StarAlgebra.adjoin_le_iff]
state_before: R : Type u_1
A : Type u_2
C : Type u_3
inst✝¹¹ : CommSemiring R
inst✝¹⁰ : NonUnitalSemiring A
inst✝⁹ : StarRing R
inst✝⁸ : StarRing A
inst✝⁷ : Module R A
inst✝⁶ : SMulCommClass R A A
inst✝⁵ : IsScalarTower R A A
inst✝⁴ : StarModule R A
inst✝³ : Semiring C
inst✝² : StarRing C
inst✝¹ : Algebra R C
inst✝ : StarModule R C
f : A →⋆ₙₐ[R] C
c : StarSubalgebra R C
⊢ (starLift f).range ≤ c ↔ StarAlgebra.adjoin R ↑(NonUnitalStarAlgHom.range f) ≤ c
state_after: R : Type u_1
A : Type u_2
C : Type u_3
inst✝¹¹ : CommSemiring R
inst✝¹⁰ : NonUnitalSemiring A
inst✝⁹ : StarRing R
inst✝⁸ : StarRing A
inst✝⁷ : Module R A
inst✝⁶ : SMulCommClass R A A
inst✝⁵ : IsScalarTower R A A
inst✝⁴ : StarModule R A
inst✝³ : Semiring C
inst✝² : StarRing C
inst✝¹ : Algebra R C
inst✝ : StarModule R C
f : A →⋆ₙₐ[R] C
c : StarSubalgebra R C
⊢ NonUnitalStarAlgHom.range f ≤ c.toNonUnitalStarSubalgebra ↔ ↑(NonUnitalStarAlgHom.range f) ⊆ ↑c

tactic: rfl
state_before: R : Type u_1
A : Type u_2
C : Type u_3
inst✝¹¹ : CommSemiring R
inst✝¹⁰ : NonUnitalSemiring A
inst✝⁹ : StarRing R
inst✝⁸ : StarRing A
inst✝⁷ : Module R A
inst✝⁶ : SMulCommClass R A A
inst✝⁵ : IsScalarTower R A A
inst✝⁴ : StarModule R A
inst✝³ : Semiring C
inst✝² : StarRing C
inst✝¹ : Algebra R C
inst✝ : StarModule R C
f : A →⋆ₙₐ[R] C
c : StarSubalgebra R C
⊢ NonUnitalStarAlgHom.range f ≤ c.toNonUnitalStarSubalgebra ↔ ↑(NonUnitalStarAlgHom.range f) ⊆ ↑c
state_after: no goals
Theorem: TopologicalSpace.productOfMemOpens_inducing
File: Mathlib/Topology/ContinuousFunction/T0Sierpinski.lean

tactic: convert inducing_iInf_to_pi fun (u : Opens X) (x : X) => x ∈ u
state_before: X : Type u_1
inst✝ : TopologicalSpace X
⊢ Inducing ⇑(productOfMemOpens X)
state_after: case h.e'_3
X : Type u_1
inst✝ : TopologicalSpace X
⊢ inst✝ = ⨅ i, induced (fun x => x ∈ i) inferInstance

tactic: apply eq_induced_by_maps_to_sierpinski
state_before: case h.e'_3
X : Type u_1
inst✝ : TopologicalSpace X
⊢ inst✝ = ⨅ i, induced (fun x => x ∈ i) inferInstance
state_after: no goals
Theorem: CategoryTheory.Subobject.ofMkLEMk_comp
File: Mathlib/CategoryTheory/Subobject/Basic.lean

tactic: simp [ofMkLEMk]
state_before: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
X Y Z : C
D : Type u₂
inst✝² : Category.{v₂, u₂} D
B A₁ A₂ : C
f : A₁ ⟶ B
g : A₂ ⟶ B
inst✝¹ : Mono f
inst✝ : Mono g
h : mk f ≤ mk g
⊢ ofMkLEMk f g h ≫ g = f
state_after: no goals
Theorem: Finsupp.coe_neLocus
File: Mathlib/Data/Finsupp/NeLocus.lean

tactic: ext
state_before: α : Type u_1
M : Type u_2
N : Type u_3
P : Type u_4
inst✝² : DecidableEq α
inst✝¹ : DecidableEq N
inst✝ : Zero N
f g : α →₀ N
⊢ ↑(f.neLocus g) = {x | f x ≠ g x}
state_after: case h
α : Type u_1
M : Type u_2
N : Type u_3
P : Type u_4
inst✝² : DecidableEq α
inst✝¹ : DecidableEq N
inst✝ : Zero N
f g : α →₀ N
x✝ : α
⊢ x✝ ∈ ↑(f.neLocus g) ↔ x✝ ∈ {x | f x ≠ g x}

tactic: exact mem_neLocus
state_before: case h
α : Type u_1
M : Type u_2
N : Type u_3
P : Type u_4
inst✝² : DecidableEq α
inst✝¹ : DecidableEq N
inst✝ : Zero N
f g : α →₀ N
x✝ : α
⊢ x✝ ∈ ↑(f.neLocus g) ↔ x✝ ∈ {x | f x ≠ g x}
state_after: no goals
Theorem: map_nhds_subtype_coe_eq_nhds
File: Mathlib/Topology/Constructions.lean

tactic: rw [Subtype.range_val]
state_before: X : Type u
Y : Type v
Z : Type u_1
W : Type u_2
ε : Type u_3
ζ : Type u_4
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : TopologicalSpace Z
p : X → Prop
x : X
hx : p x
h : ∀ᶠ (x : X) in 𝓝 x, p x
⊢ range Subtype.val ∈ 𝓝 ↑⟨x, hx⟩
state_after: X : Type u
Y : Type v
Z : Type u_1
W : Type u_2
ε : Type u_3
ζ : Type u_4
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : TopologicalSpace Z
p : X → Prop
x : X
hx : p x
h : ∀ᶠ (x : X) in 𝓝 x, p x
⊢ p ∈ 𝓝 ↑⟨x, hx⟩

tactic: exact h
state_before: X : Type u
Y : Type v
Z : Type u_1
W : Type u_2
ε : Type u_3
ζ : Type u_4
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : TopologicalSpace Z
p : X → Prop
x : X
hx : p x
h : ∀ᶠ (x : X) in 𝓝 x, p x
⊢ p ∈ 𝓝 ↑⟨x, hx⟩
state_after: no goals
Theorem: continuous_sInf_rng
File: Mathlib/Topology/Order.lean

tactic: simp only [continuous_iff_coinduced_le, le_sInf_iff]
state_before: α : Type u
β : Type v
γ : Type u_1
f : α → β
ι : Sort u_2
t₁ : TopologicalSpace α
T : Set (TopologicalSpace β)
⊢ Continuous f ↔ ∀ t ∈ T, Continuous f
state_after: no goals
Theorem: Multiset.coe_count
File: Mathlib/Data/Multiset/Basic.lean

tactic: rfl
state_before: α : Type u_1
β : Type v
γ : Type u_2
inst✝ : DecidableEq α
s : Multiset α
a : α
l : List α
⊢ List.countP (fun b => decide (b = a)) l = List.countP (fun x => x == a) l
state_after: no goals
Theorem: Equiv.Perm.IsCycle.cycleOf
File: Mathlib/GroupTheory/Perm/Cycle/Factors.lean

tactic: by_cases hx : f x = x
state_before: ι : Type u_1
α : Type u_2
β : Type u_3
f g : Perm α
x y : α
inst✝² : DecidableRel f.SameCycle
inst✝¹ : DecidableRel g.SameCycle
inst✝ : DecidableEq α
hf : f.IsCycle
⊢ f.cycleOf x = if f x = x then 1 else f
state_after: case pos
ι : Type u_1
α : Type u_2
β : Type u_3
f g : Perm α
x y : α
inst✝² : DecidableRel f.SameCycle
inst✝¹ : DecidableRel g.SameCycle
inst✝ : DecidableEq α
hf : f.IsCycle
hx : f x = x
⊢ f.cycleOf x = if f x = x then 1 else f

case neg
ι : Type u_1
α : Type u_2
β : Type u_3
f g : Perm α
x y : α
inst✝² : DecidableRel f.SameCycle
inst✝¹ : DecidableRel g.SameCycle
inst✝ : DecidableEq α
hf : f.IsCycle
hx : ¬f x = x
⊢ f.cycleOf x = if f x = x then 1 else f

tactic: rwa [if_pos hx, cycleOf_eq_one_iff]
state_before: case pos
ι : Type u_1
α : Type u_2
β : Type u_3
f g : Perm α
x y : α
inst✝² : DecidableRel f.SameCycle
inst✝¹ : DecidableRel g.SameCycle
inst✝ : DecidableEq α
hf : f.IsCycle
hx : f x = x
⊢ f.cycleOf x = if f x = x then 1 else f
state_after: no goals

tactic: rwa [if_neg hx, hf.cycleOf_eq]
state_before: case neg
ι : Type u_1
α : Type u_2
β : Type u_3
f g : Perm α
x y : α
inst✝² : DecidableRel f.SameCycle
inst✝¹ : DecidableRel g.SameCycle
inst✝ : DecidableEq α
hf : f.IsCycle
hx : ¬f x = x
⊢ f.cycleOf x = if f x = x then 1 else f
state_after: no goals
Theorem: SupIrred.finset_sup_eq
File: Mathlib/Order/Irreducible.lean

tactic: induction' s using Finset.induction with i s _ ih
state_before: ι : Type u_1
α : Type u_2
inst✝¹ : SemilatticeSup α
a b c : α
inst✝ : OrderBot α
s : Finset ι
f : ι → α
ha : SupIrred a
h : s.sup f = a
⊢ ∃ i ∈ s, f i = a
state_after: case empty
ι : Type u_1
α : Type u_2
inst✝¹ : SemilatticeSup α
a b c : α
inst✝ : OrderBot α
s : Finset ι
f : ι → α
ha : SupIrred a
h : ∅.sup f = a
⊢ ∃ i ∈ ∅, f i = a

case insert
ι : Type u_1
α : Type u_2
inst✝¹ : SemilatticeSup α
a b c : α
inst✝ : OrderBot α
s✝ : Finset ι
f : ι → α
ha : SupIrred a
i : ι
s : Finset ι
a✝ : i ∉ s
ih : s.sup f = a → ∃ i ∈ s, f i = a
h : (insert i s).sup f = a
⊢ ∃ i_1 ∈ insert i s, f i_1 = a

tactic: simp only [exists_prop, exists_mem_insert] at ih ⊢
state_before: case insert
ι : Type u_1
α : Type u_2
inst✝¹ : SemilatticeSup α
a b c : α
inst✝ : OrderBot α
s✝ : Finset ι
f : ι → α
ha : SupIrred a
i : ι
s : Finset ι
a✝ : i ∉ s
ih : s.sup f = a → ∃ i ∈ s, f i = a
h : (insert i s).sup f = a
⊢ ∃ i_1 ∈ insert i s, f i_1 = a
state_after: case insert
ι : Type u_1
α : Type u_2
inst✝¹ : SemilatticeSup α
a b c : α
inst✝ : OrderBot α
s✝ : Finset ι
f : ι → α
ha : SupIrred a
i : ι
s : Finset ι
a✝ : i ∉ s
ih : s.sup f = a → ∃ i ∈ s, f i = a
h : (insert i s).sup f = a
⊢ f i = a ∨ ∃ x ∈ s, f x = a

tactic: rw [sup_insert] at h
state_before: case insert
ι : Type u_1
α : Type u_2
inst✝¹ : SemilatticeSup α
a b c : α
inst✝ : OrderBot α
s✝ : Finset ι
f : ι → α
ha : SupIrred a
i : ι
s : Finset ι
a✝ : i ∉ s
ih : s.sup f = a → ∃ i ∈ s, f i = a
h : (insert i s).sup f = a
⊢ f i = a ∨ ∃ x ∈ s, f x = a
state_after: case insert
ι : Type u_1
α : Type u_2
inst✝¹ : SemilatticeSup α
a b c : α
inst✝ : OrderBot α
s✝ : Finset ι
f : ι → α
ha : SupIrred a
i : ι
s : Finset ι
a✝ : i ∉ s
ih : s.sup f = a → ∃ i ∈ s, f i = a
h : f i ⊔ s.sup f = a
⊢ f i = a ∨ ∃ x ∈ s, f x = a

tactic: exact (ha.2 h).imp_right ih
state_before: case insert
ι : Type u_1
α : Type u_2
inst✝¹ : SemilatticeSup α
a b c : α
inst✝ : OrderBot α
s✝ : Finset ι
f : ι → α
ha : SupIrred a
i : ι
s : Finset ι
a✝ : i ∉ s
ih : s.sup f = a → ∃ i ∈ s, f i = a
h : f i ⊔ s.sup f = a
⊢ f i = a ∨ ∃ x ∈ s, f x = a
state_after: no goals

tactic: simpa [ha.ne_bot] using h.symm
state_before: case empty
ι : Type u_1
α : Type u_2
inst✝¹ : SemilatticeSup α
a b c : α
inst✝ : OrderBot α
s : Finset ι
f : ι → α
ha : SupIrred a
h : ∅.sup f = a
⊢ ∃ i ∈ ∅, f i = a
state_after: no goals
Theorem: ProbabilityTheory.kernel.iIndepSet.indep_generateFrom_lt
File: Mathlib/Probability/Independence/Kernel.lean

tactic: convert iIndepSet.indep_generateFrom_of_disjoint hsm hs {i} { j | j < i }
  (Set.disjoint_singleton_left.mpr (lt_irrefl _))
state_before: α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : ↥(kernel α Ω)
μ : Measure α
inst✝¹ : Preorder ι
inst✝ : IsMarkovKernel κ
s : ι → Set Ω
hsm : ∀ (n : ι), MeasurableSet (s n)
hs : iIndepSet s κ μ
i : ι
⊢ Indep (generateFrom {s i}) (generateFrom {t | ∃ j < i, s j = t}) κ μ
state_after: case h.e'_4.h.e'_2
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : ↥(kernel α Ω)
μ : Measure α
inst✝¹ : Preorder ι
inst✝ : IsMarkovKernel κ
s : ι → Set Ω
hsm : ∀ (n : ι), MeasurableSet (s n)
hs : iIndepSet s κ μ
i : ι
⊢ {s i} = {t | ∃ n ∈ {i}, s n = t}

tactic: simp only [Set.mem_singleton_iff, exists_prop, exists_eq_left, Set.setOf_eq_eq_singleton']
state_before: case h.e'_4.h.e'_2
α : Type u_1
Ω : Type u_2
ι : Type u_3
_mα : MeasurableSpace α
_mΩ : MeasurableSpace Ω
κ : ↥(kernel α Ω)
μ : Measure α
inst✝¹ : Preorder ι
inst✝ : IsMarkovKernel κ
s : ι → Set Ω
hsm : ∀ (n : ι), MeasurableSet (s n)
hs : iIndepSet s κ μ
i : ι
⊢ {s i} = {t | ∃ n ∈ {i}, s n = t}
state_after: no goals
Theorem: zero_isRadical_iff
File: Mathlib/RingTheory/Nilpotent/Basic.lean

tactic: simp_rw [isReduced_iff, IsNilpotent, exists_imp, ← zero_dvd_iff]
state_before: R : Type u_1
S : Type u_2
x y : R
inst✝ : MonoidWithZero R
⊢ IsRadical 0 ↔ IsReduced R
state_after: R : Type u_1
S : Type u_2
x y : R
inst✝ : MonoidWithZero R
⊢ IsRadical 0 ↔ ∀ (x : R) (x_1 : ℕ), 0 ∣ x ^ x_1 → 0 ∣ x

tactic: exact forall_swap
state_before: R : Type u_1
S : Type u_2
x y : R
inst✝ : MonoidWithZero R
⊢ IsRadical 0 ↔ ∀ (x : R) (x_1 : ℕ), 0 ∣ x ^ x_1 → 0 ∣ x
state_after: no goals