1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Associates.eq_of_factors_eq_factors
File: Mathlib/RingTheory/UniqueFactorizationDomain.lean

tactic: have : a.factors.prod = b.factors.prod := by rw [h]
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : UniqueFactorizationMonoid α
a b : Associates α
h : a.factors = b.factors
⊢ a = b
state_after: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : UniqueFactorizationMonoid α
a b : Associates α
h : a.factors = b.factors
this : a.factors.prod = b.factors.prod
⊢ a = b

tactic: rwa [factors_prod, factors_prod] at this
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : UniqueFactorizationMonoid α
a b : Associates α
h : a.factors = b.factors
this : a.factors.prod = b.factors.prod
⊢ a = b
state_after: no goals

tactic: rw [h]
state_before: α : Type u_1
inst✝¹ : CancelCommMonoidWithZero α
inst✝ : UniqueFactorizationMonoid α
a b : Associates α
h : a.factors = b.factors
⊢ a.factors.prod = b.factors.prod
state_after: no goals
Theorem: Polynomial.X_pow_sub_C_ne_zero
File: Mathlib/Algebra/Polynomial/Degree/Definitions.lean

tactic: rw [sub_eq_add_neg, ← map_neg C a]
state_before: R : Type u
S : Type v
a✝ b c d : R
n✝ m : ℕ
inst✝¹ : Ring R
inst✝ : Nontrivial R
n : ℕ
hn : 0 < n
a : R
⊢ X ^ n - C a ≠ 0
state_after: R : Type u
S : Type v
a✝ b c d : R
n✝ m : ℕ
inst✝¹ : Ring R
inst✝ : Nontrivial R
n : ℕ
hn : 0 < n
a : R
⊢ X ^ n + C (-a) ≠ 0

tactic: exact X_pow_add_C_ne_zero hn _
state_before: R : Type u
S : Type v
a✝ b c d : R
n✝ m : ℕ
inst✝¹ : Ring R
inst✝ : Nontrivial R
n : ℕ
hn : 0 < n
a : R
⊢ X ^ n + C (-a) ≠ 0
state_after: no goals
Theorem: Set.subset_toFinset
File: Mathlib/Data/Fintype/Basic.lean

tactic: rw [← Finset.coe_subset, coe_toFinset]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
s✝ t : Set α
s : Finset α
inst✝ : Fintype ↑t
⊢ s ⊆ t.toFinset ↔ ↑s ⊆ t
state_after: no goals
Theorem: Asymptotics.isLittleO_iff_forall_isBigOWith
File: Mathlib/Analysis/Asymptotics/Asymptotics.lean

tactic: rw [IsLittleO_def]
state_before: α : Type u_1
β : Type u_2
E : Type u_3
F : Type u_4
G : Type u_5
E' : Type u_6
F' : Type u_7
G' : Type u_8
E'' : Type u_9
F'' : Type u_10
G'' : Type u_11
E''' : Type u_12
R : Type u_13
R' : Type u_14
𝕜 : Type u_15
𝕜' : Type u_16
inst✝¹³ : Norm E
inst✝¹² : Norm F
inst✝¹¹ : Norm G
inst✝¹⁰ : SeminormedAddCommGroup E'
inst✝⁹ : SeminormedAddCommGroup F'
inst✝⁸ : SeminormedAddCommGroup G'
inst✝⁷ : NormedAddCommGroup E''
inst✝⁶ : NormedAddCommGroup F''
inst✝⁵ : NormedAddCommGroup G''
inst✝⁴ : SeminormedRing R
inst✝³ : SeminormedAddGroup E'''
inst✝² : SeminormedRing R'
inst✝¹ : NormedDivisionRing 𝕜
inst✝ : NormedDivisionRing 𝕜'
c c' c₁ c₂ : ℝ
f : α → E
g : α → F
k : α → G
f' : α → E'
g' : α → F'
k' : α → G'
f'' : α → E''
g'' : α → F''
k'' : α → G''
l l' : Filter α
⊢ f =o[l] g ↔ ∀ ⦃c : ℝ⦄, 0 < c → IsBigOWith c l f g
state_after: no goals
Theorem: Fin.preimage_apply_01_prod
File: Mathlib/Logic/Equiv/Fin.lean

tactic: ext f
state_before: m n : ℕ
α : Fin 2 → Type u
s : Set (α 0)
t : Set (α 1)
⊢ (fun f => (f 0, f 1)) ⁻¹' s ×ˢ t = Set.univ.pi (cons s (cons t finZeroElim))
state_after: case h
m n : ℕ
α : Fin 2 → Type u
s : Set (α 0)
t : Set (α 1)
f : (i : Fin 2) → α i
⊢ f ∈ (fun f => (f 0, f 1)) ⁻¹' s ×ˢ t ↔ f ∈ Set.univ.pi (cons s (cons t finZeroElim))

tactic: simp [Fin.forall_fin_two]
state_before: case h
m n : ℕ
α : Fin 2 → Type u
s : Set (α 0)
t : Set (α 1)
f : (i : Fin 2) → α i
⊢ f ∈ (fun f => (f 0, f 1)) ⁻¹' s ×ˢ t ↔ f ∈ Set.univ.pi (cons s (cons t finZeroElim))
state_after: no goals
Theorem: exists_lt_of_lt_ciSup'
File: Mathlib/Order/ConditionallyCompleteLattice/Basic.lean

tactic: contrapose! h
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrderBot α
s : Set α
f✝ : ι → α
a✝ : α
f : ι → α
a : α
h : a < ⨆ i, f i
⊢ ∃ i, a < f i
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrderBot α
s : Set α
f✝ : ι → α
a✝ : α
f : ι → α
a : α
h : ∀ (i : ι), f i ≤ a
⊢ ⨆ i, f i ≤ a

tactic: exact ciSup_le' h
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
ι : Sort u_4
inst✝ : ConditionallyCompleteLinearOrderBot α
s : Set α
f✝ : ι → α
a✝ : α
f : ι → α
a : α
h : ∀ (i : ι), f i ≤ a
⊢ ⨆ i, f i ≤ a
state_after: no goals
Theorem: PiNat.res_injective
File: Mathlib/Topology/MetricSpace/PiNat.lean

tactic: intro x y h
state_before: E : ℕ → Type u_1
α : Type u_2
⊢ Injective res
state_after: E : ℕ → Type u_1
α : Type u_2
x y : ℕ → α
h : res x = res y
⊢ x = y

tactic: ext n
state_before: E : ℕ → Type u_1
α : Type u_2
x y : ℕ → α
h : res x = res y
⊢ x = y
state_after: case h
E : ℕ → Type u_1
α : Type u_2
x y : ℕ → α
h : res x = res y
n : ℕ
⊢ x n = y n

tactic: apply res_eq_res.mp _ (Nat.lt_succ_self _)
state_before: case h
E : ℕ → Type u_1
α : Type u_2
x y : ℕ → α
h : res x = res y
n : ℕ
⊢ x n = y n
state_after: E : ℕ → Type u_1
α : Type u_2
x y : ℕ → α
h : res x = res y
n : ℕ
⊢ res x n.succ = res y n.succ

tactic: rw [h]
state_before: E : ℕ → Type u_1
α : Type u_2
x y : ℕ → α
h : res x = res y
n : ℕ
⊢ res x n.succ = res y n.succ
state_after: no goals
Theorem: Finsupp.cons_ne_zero_of_right
File: Mathlib/Data/Finsupp/Fin.lean

tactic: contrapose! h with c
state_before: n : ℕ
i : Fin n
M : Type u_1
inst✝ : Zero M
y : M
t : Fin (n + 1) →₀ M
s : Fin n →₀ M
h : s ≠ 0
⊢ cons y s ≠ 0
state_after: n : ℕ
i : Fin n
M : Type u_1
inst✝ : Zero M
y : M
t : Fin (n + 1) →₀ M
s : Fin n →₀ M
c : cons y s = 0
⊢ s = 0

tactic: ext a
state_before: n : ℕ
i : Fin n
M : Type u_1
inst✝ : Zero M
y : M
t : Fin (n + 1) →₀ M
s : Fin n →₀ M
c : cons y s = 0
⊢ s = 0
state_after: case h
n : ℕ
i : Fin n
M : Type u_1
inst✝ : Zero M
y : M
t : Fin (n + 1) →₀ M
s : Fin n →₀ M
c : cons y s = 0
a : Fin n
⊢ s a = 0 a

tactic: simp [← cons_succ a y s, c]
state_before: case h
n : ℕ
i : Fin n
M : Type u_1
inst✝ : Zero M
y : M
t : Fin (n + 1) →₀ M
s : Fin n →₀ M
c : cons y s = 0
a : Fin n
⊢ s a = 0 a
state_after: no goals
Theorem: Fin.map_valEmbedding_Iio
File: Mathlib/Order/Interval/Finset/Fin.lean

tactic: simp [Iio_eq_finset_subtype, Finset.fin, Finset.map_map]
state_before: n : ℕ
a b : Fin n
⊢ map valEmbedding (Iio b) = Iio ↑b
state_after: no goals
Theorem: Finset.image_image
File: Mathlib/Data/Finset/Image.lean

tactic: simp only [image_val, dedup_map_dedup_eq, Multiset.map_map]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
inst✝¹ : DecidableEq β
f g✝ : α → β
s : Finset α
t : Finset β
a : α
b c : β
inst✝ : DecidableEq γ
g : β → γ
⊢ (image g (image f s)).val = (image (g ∘ f) s).val
state_after: no goals
Theorem: ContinuousMap.subalgebra_topologicalClosure_eq_top_of_separatesPoints
File: Mathlib/Topology/ContinuousFunction/StoneWeierstrass.lean

tactic: apply SetLike.ext'
state_before: X : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : CompactSpace X
A : Subalgebra ℝ C(X, ℝ)
w : A.SeparatesPoints
⊢ A.topologicalClosure = ⊤
state_after: case h
X : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : CompactSpace X
A : Subalgebra ℝ C(X, ℝ)
w : A.SeparatesPoints
⊢ ↑A.topologicalClosure = ↑⊤

tactic: let L := A.topologicalClosure
state_before: case h
X : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : CompactSpace X
A : Subalgebra ℝ C(X, ℝ)
w : A.SeparatesPoints
⊢ ↑A.topologicalClosure = ↑⊤
state_after: case h
X : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : CompactSpace X
A : Subalgebra ℝ C(X, ℝ)
w : A.SeparatesPoints
L : Subalgebra ℝ C(X, ℝ) := A.topologicalClosure
⊢ ↑A.topologicalClosure = ↑⊤

tactic: have n : Set.Nonempty (L : Set C(X, ℝ)) := ⟨(1 : C(X, ℝ)), A.le_topologicalClosure A.one_mem⟩
state_before: case h
X : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : CompactSpace X
A : Subalgebra ℝ C(X, ℝ)
w : A.SeparatesPoints
L : Subalgebra ℝ C(X, ℝ) := A.topologicalClosure
⊢ ↑A.topologicalClosure = ↑⊤
state_after: case h
X : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : CompactSpace X
A : Subalgebra ℝ C(X, ℝ)
w : A.SeparatesPoints
L : Subalgebra ℝ C(X, ℝ) := A.topologicalClosure
n : (↑L).Nonempty
⊢ ↑A.topologicalClosure = ↑⊤

tactic: convert
  sublattice_closure_eq_top (L : Set C(X, ℝ)) n
    (fun f fm g gm => inf_mem_closed_subalgebra L A.isClosed_topologicalClosure ⟨f, fm⟩ ⟨g, gm⟩)
    (fun f fm g gm => sup_mem_closed_subalgebra L A.isClosed_topologicalClosure ⟨f, fm⟩ ⟨g, gm⟩)
    (Subalgebra.SeparatesPoints.strongly
      (Subalgebra.separatesPoints_monotone A.le_topologicalClosure w))
state_before: case h
X : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : CompactSpace X
A : Subalgebra ℝ C(X, ℝ)
w : A.SeparatesPoints
L : Subalgebra ℝ C(X, ℝ) := A.topologicalClosure
n : (↑L).Nonempty
⊢ ↑A.topologicalClosure = ↑⊤
state_after: case h.e'_2
X : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : CompactSpace X
A : Subalgebra ℝ C(X, ℝ)
w : A.SeparatesPoints
L : Subalgebra ℝ C(X, ℝ) := A.topologicalClosure
n : (↑L).Nonempty
⊢ ↑A.topologicalClosure = closure ↑L

tactic: simp [L]
state_before: case h.e'_2
X : Type u_1
inst✝¹ : TopologicalSpace X
inst✝ : CompactSpace X
A : Subalgebra ℝ C(X, ℝ)
w : A.SeparatesPoints
L : Subalgebra ℝ C(X, ℝ) := A.topologicalClosure
n : (↑L).Nonempty
⊢ ↑A.topologicalClosure = closure ↑L
state_after: no goals
Theorem: CategoryTheory.Functor.initial_of_initial_comp
File: Mathlib/CategoryTheory/Limits/Final.lean

tactic: suffices Final G.op from initial_of_final_op _
state_before: C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
D : Type u₂
inst✝³ : Category.{v₂, u₂} D
E : Type u₃
inst✝² : Category.{v₃, u₃} E
F : C ⥤ D
G : D ⥤ E
inst✝¹ : F.Initial
inst✝ : (F ⋙ G).Initial
⊢ G.Initial
state_after: C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
D : Type u₂
inst✝³ : Category.{v₂, u₂} D
E : Type u₃
inst✝² : Category.{v₃, u₃} E
F : C ⥤ D
G : D ⥤ E
inst✝¹ : F.Initial
inst✝ : (F ⋙ G).Initial
⊢ G.op.Final

tactic: have : Final (F.op ⋙ G.op) := show Final (F ⋙ G).op from inferInstance
state_before: C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
D : Type u₂
inst✝³ : Category.{v₂, u₂} D
E : Type u₃
inst✝² : Category.{v₃, u₃} E
F : C ⥤ D
G : D ⥤ E
inst✝¹ : F.Initial
inst✝ : (F ⋙ G).Initial
⊢ G.op.Final
state_after: C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
D : Type u₂
inst✝³ : Category.{v₂, u₂} D
E : Type u₃
inst✝² : Category.{v₃, u₃} E
F : C ⥤ D
G : D ⥤ E
inst✝¹ : F.Initial
inst✝ : (F ⋙ G).Initial
this : (F.op ⋙ G.op).Final
⊢ G.op.Final

tactic: exact final_of_final_comp F.op G.op
state_before: C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
D : Type u₂
inst✝³ : Category.{v₂, u₂} D
E : Type u₃
inst✝² : Category.{v₃, u₃} E
F : C ⥤ D
G : D ⥤ E
inst✝¹ : F.Initial
inst✝ : (F ⋙ G).Initial
this : (F.op ⋙ G.op).Final
⊢ G.op.Final
state_after: no goals
Theorem: Matroid.StrictRestriction.exists_eq_restrict
File: Mathlib/Data/Matroid/Restrict.lean

tactic: rw [h.eq_restrict]
state_before: α : Type u_1
M : Matroid α
R I J X Y : Set α
N : Matroid α
h : N <r M
⊢ N = M ↾ N.E
state_after: no goals
Theorem: Set.pow_mem_pow
File: Mathlib/Data/Set/Pointwise/Basic.lean

tactic: rw [pow_zero]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝ : Monoid α
s t : Set α
a : α
m n : ℕ
ha : a ∈ s
⊢ a ^ 0 ∈ s ^ 0
state_after: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝ : Monoid α
s t : Set α
a : α
m n : ℕ
ha : a ∈ s
⊢ 1 ∈ s ^ 0

tactic: exact one_mem_one
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝ : Monoid α
s t : Set α
a : α
m n : ℕ
ha : a ∈ s
⊢ 1 ∈ s ^ 0
state_after: no goals

tactic: rw [pow_succ]
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝ : Monoid α
s t : Set α
a : α
m n✝ : ℕ
ha : a ∈ s
n : ℕ
⊢ a ^ (n + 1) ∈ s ^ (n + 1)
state_after: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝ : Monoid α
s t : Set α
a : α
m n✝ : ℕ
ha : a ∈ s
n : ℕ
⊢ a ^ n * a ∈ s ^ (n + 1)

tactic: exact mul_mem_mul (pow_mem_pow ha _) ha
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
inst✝ : Monoid α
s t : Set α
a : α
m n✝ : ℕ
ha : a ∈ s
n : ℕ
⊢ a ^ n * a ∈ s ^ (n + 1)
state_after: no goals
Theorem: SimpleGraph.fromEdgeSet_mono
File: Mathlib/Combinatorics/SimpleGraph/Basic.lean

tactic: rintro v w
state_before: ι : Sort u_1
V : Type u
G : SimpleGraph V
a b c u v w : V
e : Sym2 V
s✝ s t : Set (Sym2 V)
h : s ⊆ t
⊢ fromEdgeSet s ≤ fromEdgeSet t
state_after: ι : Sort u_1
V : Type u
G : SimpleGraph V
a b c u v✝ w✝ : V
e : Sym2 V
s✝ s t : Set (Sym2 V)
h : s ⊆ t
v w : V
⊢ (fromEdgeSet s).Adj v w → (fromEdgeSet t).Adj v w

tactic: simp (config := { contextual := true }) only [fromEdgeSet_adj, Ne, not_false_iff,
  and_true_iff, and_imp]
state_before: ι : Sort u_1
V : Type u
G : SimpleGraph V
a b c u v✝ w✝ : V
e : Sym2 V
s✝ s t : Set (Sym2 V)
h : s ⊆ t
v w : V
⊢ (fromEdgeSet s).Adj v w → (fromEdgeSet t).Adj v w
state_after: ι : Sort u_1
V : Type u
G : SimpleGraph V
a b c u v✝ w✝ : V
e : Sym2 V
s✝ s t : Set (Sym2 V)
h : s ⊆ t
v w : V
⊢ s(v, w) ∈ s → ¬v = w → s(v, w) ∈ t

tactic: exact fun vws _ => h vws
state_before: ι : Sort u_1
V : Type u
G : SimpleGraph V
a b c u v✝ w✝ : V
e : Sym2 V
s✝ s t : Set (Sym2 V)
h : s ⊆ t
v w : V
⊢ s(v, w) ∈ s → ¬v = w → s(v, w) ∈ t
state_after: no goals
Theorem: LinearMap.toMatrix₂'_mul
File: Mathlib/LinearAlgebra/Matrix/SesquilinearForm.lean

tactic: simp only [B.toMatrix₂'_compl₂, toMatrix'_toLin']
state_before: R : Type u_1
R₁ : Type u_2
R₂ : Type u_3
M✝ : Type u_4
M₁ : Type u_5
M₂ : Type u_6
M₁' : Type u_7
M₂' : Type u_8
n : Type u_9
m : Type u_10
n' : Type u_11
m' : Type u_12
ι : Type u_13
inst✝¹⁰ : CommSemiring R
inst✝⁹ : Semiring R₁
inst✝⁸ : Semiring R₂
inst✝⁷ : Fintype n
inst✝⁶ : Fintype m
inst✝⁵ : DecidableEq n
inst✝⁴ : DecidableEq m
σ₁ : R₁ →+* R
σ₂ : R₂ →+* R
inst✝³ : Fintype n'
inst✝² : Fintype m'
inst✝¹ : DecidableEq n'
inst✝ : DecidableEq m'
B : (n → R) →ₗ[R] (m → R) →ₗ[R] R
M : Matrix m m' R
⊢ toMatrix₂' B * M = toMatrix₂' (B.compl₂ (toLin' M))
state_after: no goals
Theorem: ContinuousMap.Nullhomotopic.comp_left
File: Mathlib/Topology/Homotopy/Contractible.lean

tactic: cases' hf with y hy
state_before: X : Type u_1
Y : Type u_2
Z : Type u_3
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : TopologicalSpace Z
f : C(Y, Z)
hf : f.Nullhomotopic
g : C(X, Y)
⊢ (f.comp g).Nullhomotopic
state_after: case intro
X : Type u_1
Y : Type u_2
Z : Type u_3
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : TopologicalSpace Z
f : C(Y, Z)
g : C(X, Y)
y : Z
hy : f.Homotopic (const Y y)
⊢ (f.comp g).Nullhomotopic

tactic: use y
state_before: case intro
X : Type u_1
Y : Type u_2
Z : Type u_3
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : TopologicalSpace Z
f : C(Y, Z)
g : C(X, Y)
y : Z
hy : f.Homotopic (const Y y)
⊢ (f.comp g).Nullhomotopic
state_after: case h
X : Type u_1
Y : Type u_2
Z : Type u_3
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : TopologicalSpace Z
f : C(Y, Z)
g : C(X, Y)
y : Z
hy : f.Homotopic (const Y y)
⊢ (f.comp g).Homotopic (const X y)

tactic: exact Homotopic.hcomp (Homotopic.refl g) hy
state_before: case h
X : Type u_1
Y : Type u_2
Z : Type u_3
inst✝² : TopologicalSpace X
inst✝¹ : TopologicalSpace Y
inst✝ : TopologicalSpace Z
f : C(Y, Z)
g : C(X, Y)
y : Z
hy : f.Homotopic (const Y y)
⊢ (f.comp g).Homotopic (const X y)
state_after: no goals
Theorem: CategoryTheory.Limits.imageSubobject_iso_comp
File: Mathlib/CategoryTheory/Subobject/Limits.lean

tactic: simp
state_before: C : Type u
inst✝⁴ : Category.{v, u} C
X Y Z : C
f✝ : X ⟶ Y
inst✝³ : HasImage f✝
inst✝² : HasEqualizers C
X' : C
h : X' ⟶ X
inst✝¹ : IsIso h
f : X ⟶ Y
inst✝ : HasImage f
⊢ inv (image.preComp h f) ≫ image.ι (h ≫ f) = image.ι f
state_after: no goals
Theorem: SimplicialObject.Splitting.IndexSet.eqId_iff_len_eq
File: Mathlib/AlgebraicTopology/SplitSimplicialObject.lean

tactic: rw [eqId_iff_eq]
state_before: C : Type u_1
inst✝ : Category.{?u.3816, u_1} C
Δ : SimplexCategoryᵒᵖ
A : IndexSet Δ
⊢ A.EqId ↔ A.fst.unop.len = Δ.unop.len
state_after: C : Type u_1
inst✝ : Category.{?u.3816, u_1} C
Δ : SimplexCategoryᵒᵖ
A : IndexSet Δ
⊢ A.fst = Δ ↔ A.fst.unop.len = Δ.unop.len

tactic: constructor
state_before: C : Type u_1
inst✝ : Category.{?u.3816, u_1} C
Δ : SimplexCategoryᵒᵖ
A : IndexSet Δ
⊢ A.fst = Δ ↔ A.fst.unop.len = Δ.unop.len
state_after: case mp
C : Type u_1
inst✝ : Category.{?u.3816, u_1} C
Δ : SimplexCategoryᵒᵖ
A : IndexSet Δ
⊢ A.fst = Δ → A.fst.unop.len = Δ.unop.len

case mpr
C : Type u_1
inst✝ : Category.{?u.3816, u_1} C
Δ : SimplexCategoryᵒᵖ
A : IndexSet Δ
⊢ A.fst.unop.len = Δ.unop.len → A.fst = Δ

tactic: intro h
state_before: case mp
C : Type u_1
inst✝ : Category.{?u.3816, u_1} C
Δ : SimplexCategoryᵒᵖ
A : IndexSet Δ
⊢ A.fst = Δ → A.fst.unop.len = Δ.unop.len
state_after: case mp
C : Type u_1
inst✝ : Category.{?u.3816, u_1} C
Δ : SimplexCategoryᵒᵖ
A : IndexSet Δ
h : A.fst = Δ
⊢ A.fst.unop.len = Δ.unop.len

tactic: rw [h]
state_before: case mp
C : Type u_1
inst✝ : Category.{?u.3816, u_1} C
Δ : SimplexCategoryᵒᵖ
A : IndexSet Δ
h : A.fst = Δ
⊢ A.fst.unop.len = Δ.unop.len
state_after: no goals

tactic: intro h
state_before: case mpr
C : Type u_1
inst✝ : Category.{?u.3816, u_1} C
Δ : SimplexCategoryᵒᵖ
A : IndexSet Δ
⊢ A.fst.unop.len = Δ.unop.len → A.fst = Δ
state_after: case mpr
C : Type u_1
inst✝ : Category.{?u.3816, u_1} C
Δ : SimplexCategoryᵒᵖ
A : IndexSet Δ
h : A.fst.unop.len = Δ.unop.len
⊢ A.fst = Δ

tactic: rw [← unop_inj_iff]
state_before: case mpr
C : Type u_1
inst✝ : Category.{?u.3816, u_1} C
Δ : SimplexCategoryᵒᵖ
A : IndexSet Δ
h : A.fst.unop.len = Δ.unop.len
⊢ A.fst = Δ
state_after: case mpr
C : Type u_1
inst✝ : Category.{?u.3816, u_1} C
Δ : SimplexCategoryᵒᵖ
A : IndexSet Δ
h : A.fst.unop.len = Δ.unop.len
⊢ A.fst.unop = Δ.unop

tactic: ext
state_before: case mpr
C : Type u_1
inst✝ : Category.{?u.3816, u_1} C
Δ : SimplexCategoryᵒᵖ
A : IndexSet Δ
h : A.fst.unop.len = Δ.unop.len
⊢ A.fst.unop = Δ.unop
state_after: case mpr.a
C : Type u_1
inst✝ : Category.{?u.3816, u_1} C
Δ : SimplexCategoryᵒᵖ
A : IndexSet Δ
h : A.fst.unop.len = Δ.unop.len
⊢ A.fst.unop.len = Δ.unop.len

tactic: exact h
state_before: case mpr.a
C : Type u_1
inst✝ : Category.{?u.3816, u_1} C
Δ : SimplexCategoryᵒᵖ
A : IndexSet Δ
h : A.fst.unop.len = Δ.unop.len
⊢ A.fst.unop.len = Δ.unop.len
state_after: no goals
Theorem: MeasureTheory.pdf.integrable_pdf_smul_iff
File: Mathlib/Probability/Density.lean

tactic: erw [← integrable_map_measure (hf.mono_ac HasPDF.absolutelyContinuous)
  (HasPDF.aemeasurable X ℙ μ),
  map_eq_withDensity_pdf X ℙ μ, pdf_def, integrable_rnDeriv_smul_iff HasPDF.absolutelyContinuous]
state_before: Ω : Type u_1
E : Type u_2
inst✝⁵ : MeasurableSpace E
m : MeasurableSpace Ω
ℙ : Measure Ω
μ : Measure E
F : Type u_3
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
inst✝² : CompleteSpace F
inst✝¹ : IsFiniteMeasure ℙ
X : Ω → E
inst✝ : HasPDF X ℙ μ
f : E → F
hf : AEStronglyMeasurable f μ
⊢ Integrable (fun x => (pdf X ℙ μ x).toReal • f x) μ ↔ Integrable (fun x => f (X x)) ℙ
state_after: Ω : Type u_1
E : Type u_2
inst✝⁵ : MeasurableSpace E
m : MeasurableSpace Ω
ℙ : Measure Ω
μ : Measure E
F : Type u_3
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
inst✝² : CompleteSpace F
inst✝¹ : IsFiniteMeasure ℙ
X : Ω → E
inst✝ : HasPDF X ℙ μ
f : E → F
hf : AEStronglyMeasurable f μ
⊢ Integrable f (map X ℙ) ↔ Integrable f (μ.withDensity ((map X ℙ).rnDeriv μ))

tactic: rw [withDensity_rnDeriv_eq _ _ HasPDF.absolutelyContinuous]
state_before: Ω : Type u_1
E : Type u_2
inst✝⁵ : MeasurableSpace E
m : MeasurableSpace Ω
ℙ : Measure Ω
μ : Measure E
F : Type u_3
inst✝⁴ : NormedAddCommGroup F
inst✝³ : NormedSpace ℝ F
inst✝² : CompleteSpace F
inst✝¹ : IsFiniteMeasure ℙ
X : Ω → E
inst✝ : HasPDF X ℙ μ
f : E → F
hf : AEStronglyMeasurable f μ
⊢ Integrable f (map X ℙ) ↔ Integrable f (μ.withDensity ((map X ℙ).rnDeriv μ))
state_after: no goals
Theorem: compl_eq_iff_isCompl
File: Mathlib/Order/BooleanAlgebra.lean

tactic: rw [← h]
state_before: α : Type u
β : Type u_1
w x y z : α
inst✝ : BooleanAlgebra α
h : xᶜ = y
⊢ IsCompl x y
state_after: α : Type u
β : Type u_1
w x y z : α
inst✝ : BooleanAlgebra α
h : xᶜ = y
⊢ IsCompl x xᶜ

tactic: exact isCompl_compl
state_before: α : Type u
β : Type u_1
w x y z : α
inst✝ : BooleanAlgebra α
h : xᶜ = y
⊢ IsCompl x xᶜ
state_after: no goals
Theorem: MeasureTheory.lintegral_trim_ae
File: Mathlib/MeasureTheory/Integral/Lebesgue.lean

tactic: rw [lintegral_congr_ae (ae_eq_of_ae_eq_trim hf.ae_eq_mk), lintegral_congr_ae hf.ae_eq_mk,
  lintegral_trim hm hf.measurable_mk]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m m0 : MeasurableSpace α
μ : Measure α
hm : m ≤ m0
f : α → ℝ≥0∞
hf : AEMeasurable f (μ.trim hm)
⊢ ∫⁻ (a : α), f a ∂μ.trim hm = ∫⁻ (a : α), f a ∂μ
state_after: no goals
Theorem: Finset.one_lt_card_iff_nontrivial
File: Mathlib/Data/Finset/Card.lean

tactic: rw [← not_iff_not, not_lt, Finset.Nontrivial, ← Set.nontrivial_coe_sort,
  not_nontrivial_iff_subsingleton, card_le_one_iff_subsingleton_coe, coe_sort_coe]
state_before: α : Type u_1
β : Type u_2
R : Type u_3
s t u : Finset α
f : α → β
n : ℕ
⊢ 1 < s.card ↔ s.Nontrivial
state_after: no goals
Theorem: CategoryTheory.shiftFunctorZero_inv_app_obj_of_induced
File: Mathlib/CategoryTheory/Shift/Induced.lean

tactic: letI := HasShift.induced F A s i
state_before: C : Type u_4
D : Type u_2
inst✝⁵ : Category.{u_3, u_4} C
inst✝⁴ : Category.{u_1, u_2} D
F : C ⥤ D
A : Type u_5
inst✝³ : AddMonoid A
inst✝² : HasShift C A
s : A → D ⥤ D
i : (a : A) → F ⋙ s a ≅ shiftFunctor C a ⋙ F
inst✝¹ : ((whiskeringLeft C D D).obj F).Full
inst✝ : ((whiskeringLeft C D D).obj F).Faithful
X : C
⊢ (shiftFunctorZero D A).inv.app (F.obj X) = F.map ((shiftFunctorZero C A).inv.app X) ≫ (i 0).inv.app X
state_after: C : Type u_4
D : Type u_2
inst✝⁵ : Category.{u_3, u_4} C
inst✝⁴ : Category.{u_1, u_2} D
F : C ⥤ D
A : Type u_5
inst✝³ : AddMonoid A
inst✝² : HasShift C A
s : A → D ⥤ D
i : (a : A) → F ⋙ s a ≅ shiftFunctor C a ⋙ F
inst✝¹ : ((whiskeringLeft C D D).obj F).Full
inst✝ : ((whiskeringLeft C D D).obj F).Faithful
X : C
this : HasShift D A := HasShift.induced F A s i
⊢ (shiftFunctorZero D A).inv.app (F.obj X) = F.map ((shiftFunctorZero C A).inv.app X) ≫ (i 0).inv.app X

tactic: simp only [ShiftMkCore.shiftFunctorZero_eq, HasShift.Induced.zero_inv_app_obj]
state_before: C : Type u_4
D : Type u_2
inst✝⁵ : Category.{u_3, u_4} C
inst✝⁴ : Category.{u_1, u_2} D
F : C ⥤ D
A : Type u_5
inst✝³ : AddMonoid A
inst✝² : HasShift C A
s : A → D ⥤ D
i : (a : A) → F ⋙ s a ≅ shiftFunctor C a ⋙ F
inst✝¹ : ((whiskeringLeft C D D).obj F).Full
inst✝ : ((whiskeringLeft C D D).obj F).Faithful
X : C
this : HasShift D A := HasShift.induced F A s i
⊢ (shiftFunctorZero D A).inv.app (F.obj X) = F.map ((shiftFunctorZero C A).inv.app X) ≫ (i 0).inv.app X
state_after: no goals
Theorem: BoxIntegral.Box.diam_Icc_le_of_distortion_le
File: Mathlib/Analysis/BoxIntegral/Box/Basic.lean

tactic: gcongr
state_before: ι : Type u_1
I✝ J : Box ι
x✝ y✝ : ι → ℝ
inst✝ : Fintype ι
I : Box ι
i : ι
c : ℝ≥0
h : I.distortion ≤ c
this : 0 ≤ ↑c * (I.upper i - I.lower i)
x : ι → ℝ
hx : x ∈ Box.Icc I
y : ι → ℝ
hy : y ∈ Box.Icc I
⊢ ↑I.distortion * (I.upper i - I.lower i) ≤ ↑c * (I.upper i - I.lower i)
state_after: case a0
ι : Type u_1
I✝ J : Box ι
x✝ y✝ : ι → ℝ
inst✝ : Fintype ι
I : Box ι
i : ι
c : ℝ≥0
h : I.distortion ≤ c
this : 0 ≤ ↑c * (I.upper i - I.lower i)
x : ι → ℝ
hx : x ∈ Box.Icc I
y : ι → ℝ
hy : y ∈ Box.Icc I
⊢ 0 ≤ I.upper i - I.lower i

tactic: exact sub_nonneg.2 (I.lower_le_upper i)
state_before: case a0
ι : Type u_1
I✝ J : Box ι
x✝ y✝ : ι → ℝ
inst✝ : Fintype ι
I : Box ι
i : ι
c : ℝ≥0
h : I.distortion ≤ c
this : 0 ≤ ↑c * (I.upper i - I.lower i)
x : ι → ℝ
hx : x ∈ Box.Icc I
y : ι → ℝ
hy : y ∈ Box.Icc I
⊢ 0 ≤ I.upper i - I.lower i
state_after: no goals
Theorem: IsLocalization.coeffIntegerNormalization_of_not_mem_support
File: Mathlib/RingTheory/Localization/Integral.lean

tactic: simp only [coeffIntegerNormalization, h, mem_support_iff, eq_self_iff_true, not_true, Ne,
  dif_neg, not_false_iff]
state_before: R : Type u_1
inst✝⁴ : CommRing R
M : Submonoid R
S : Type u_2
inst✝³ : CommRing S
inst✝² : Algebra R S
P : Type u_3
inst✝¹ : CommRing P
inst✝ : IsLocalization M S
p : S[X]
i : ℕ
h : p.coeff i = 0
⊢ coeffIntegerNormalization M p i = 0
state_after: no goals