1337xyz1337xyz/leandojo-benchmark4-v10 huggingface dataset:
Theorem: Ordnode.length_toList'
File: Mathlib/Data/Ordmap/Ordset.lean

tactic: rw [toList_node, List.length_append, List.length_cons, length_toList' l,
    length_toList' r]
state_before: α : Type u_1
size✝ : ℕ
l : Ordnode α
x✝ : α
r : Ordnode α
⊢ (node size✝ l x✝ r).toList.length = (node size✝ l x✝ r).realSize
state_after: α : Type u_1
size✝ : ℕ
l : Ordnode α
x✝ : α
r : Ordnode α
⊢ l.realSize + (r.realSize + 1) = (node size✝ l x✝ r).realSize

tactic: rfl
state_before: α : Type u_1
size✝ : ℕ
l : Ordnode α
x✝ : α
r : Ordnode α
⊢ l.realSize + (r.realSize + 1) = (node size✝ l x✝ r).realSize
state_after: no goals
Theorem: Finset.prod_eq_zero
File: Mathlib/Algebra/BigOperators/GroupWithZero/Finset.lean

tactic: classical rw [← prod_erase_mul _ _ hi, h, mul_zero]
state_before: ι : Type u_1
κ : Type u_2
G₀ : Type u_3
M₀ : Type u_4
inst✝¹ : CommMonoidWithZero M₀
p : ι → Prop
inst✝ : DecidablePred p
f : ι → M₀
s : Finset ι
i : ι
hi : i ∈ s
h : f i = 0
⊢ ∏ j ∈ s, f j = 0
state_after: no goals

tactic: rw [← prod_erase_mul _ _ hi, h, mul_zero]
state_before: ι : Type u_1
κ : Type u_2
G₀ : Type u_3
M₀ : Type u_4
inst✝¹ : CommMonoidWithZero M₀
p : ι → Prop
inst✝ : DecidablePred p
f : ι → M₀
s : Finset ι
i : ι
hi : i ∈ s
h : f i = 0
⊢ ∏ j ∈ s, f j = 0
state_after: no goals
Theorem: sbtw_iff_not_btw
File: Mathlib/Order/Circular.lean

tactic: rw [sbtw_iff_btw_not_btw]
state_before: α : Type u_1
inst✝ : CircularOrder α
a b c : α
⊢ sbtw a b c ↔ ¬btw c b a
state_after: α : Type u_1
inst✝ : CircularOrder α
a b c : α
⊢ btw a b c ∧ ¬btw c b a ↔ ¬btw c b a

tactic: exact and_iff_right_of_imp (btw_total _ _ _).resolve_left
state_before: α : Type u_1
inst✝ : CircularOrder α
a b c : α
⊢ btw a b c ∧ ¬btw c b a ↔ ¬btw c b a
state_after: no goals
Theorem: minpoly.exists_algEquiv_of_root'
File: Mathlib/FieldTheory/Normal.lean

tactic: obtain ⟨σ, hσ⟩ := exists_algEquiv_of_root hy h_ev
state_before: F : Type u_1
K✝ : Type u_2
inst✝¹³ : Field F
inst✝¹² : Field K✝
inst✝¹¹ : Algebra F K✝
K₁ : Type u_3
K₂ : Type u_4
K₃ : Type u_5
inst✝¹⁰ : Field F
inst✝⁹ : Field K₁
inst✝⁸ : Field K₂
inst✝⁷ : Field K₃
inst✝⁶ : Algebra F K₁
inst✝⁵ : Algebra F K₂
inst✝⁴ : Algebra F K₃
ϕ : K₁ →ₐ[F] K₂
χ : K₁ ≃ₐ[F] K₂
ψ : K₂ →ₐ[F] K₃
ω : K₂ ≃ₐ[F] K₃
K : Type u_6
L : Type u_7
inst✝³ : Field K
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : Normal K L
x y : L
hy : IsAlgebraic K y
h_ev : (Polynomial.aeval x) (minpoly K y) = 0
⊢ ∃ σ, σ y = x
state_after: case intro
F : Type u_1
K✝ : Type u_2
inst✝¹³ : Field F
inst✝¹² : Field K✝
inst✝¹¹ : Algebra F K✝
K₁ : Type u_3
K₂ : Type u_4
K₃ : Type u_5
inst✝¹⁰ : Field F
inst✝⁹ : Field K₁
inst✝⁸ : Field K₂
inst✝⁷ : Field K₃
inst✝⁶ : Algebra F K₁
inst✝⁵ : Algebra F K₂
inst✝⁴ : Algebra F K₃
ϕ : K₁ →ₐ[F] K₂
χ : K₁ ≃ₐ[F] K₂
ψ : K₂ →ₐ[F] K₃
ω : K₂ ≃ₐ[F] K₃
K : Type u_6
L : Type u_7
inst✝³ : Field K
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : Normal K L
x y : L
hy : IsAlgebraic K y
h_ev : (Polynomial.aeval x) (minpoly K y) = 0
σ : L ≃ₐ[K] L
hσ : σ x = y
⊢ ∃ σ, σ y = x

tactic: use σ.symm
state_before: case intro
F : Type u_1
K✝ : Type u_2
inst✝¹³ : Field F
inst✝¹² : Field K✝
inst✝¹¹ : Algebra F K✝
K₁ : Type u_3
K₂ : Type u_4
K₃ : Type u_5
inst✝¹⁰ : Field F
inst✝⁹ : Field K₁
inst✝⁸ : Field K₂
inst✝⁷ : Field K₃
inst✝⁶ : Algebra F K₁
inst✝⁵ : Algebra F K₂
inst✝⁴ : Algebra F K₃
ϕ : K₁ →ₐ[F] K₂
χ : K₁ ≃ₐ[F] K₂
ψ : K₂ →ₐ[F] K₃
ω : K₂ ≃ₐ[F] K₃
K : Type u_6
L : Type u_7
inst✝³ : Field K
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : Normal K L
x y : L
hy : IsAlgebraic K y
h_ev : (Polynomial.aeval x) (minpoly K y) = 0
σ : L ≃ₐ[K] L
hσ : σ x = y
⊢ ∃ σ, σ y = x
state_after: case h
F : Type u_1
K✝ : Type u_2
inst✝¹³ : Field F
inst✝¹² : Field K✝
inst✝¹¹ : Algebra F K✝
K₁ : Type u_3
K₂ : Type u_4
K₃ : Type u_5
inst✝¹⁰ : Field F
inst✝⁹ : Field K₁
inst✝⁸ : Field K₂
inst✝⁷ : Field K₃
inst✝⁶ : Algebra F K₁
inst✝⁵ : Algebra F K₂
inst✝⁴ : Algebra F K₃
ϕ : K₁ →ₐ[F] K₂
χ : K₁ ≃ₐ[F] K₂
ψ : K₂ →ₐ[F] K₃
ω : K₂ ≃ₐ[F] K₃
K : Type u_6
L : Type u_7
inst✝³ : Field K
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : Normal K L
x y : L
hy : IsAlgebraic K y
h_ev : (Polynomial.aeval x) (minpoly K y) = 0
σ : L ≃ₐ[K] L
hσ : σ x = y
⊢ σ.symm y = x

tactic: rw [← hσ, symm_apply_apply]
state_before: case h
F : Type u_1
K✝ : Type u_2
inst✝¹³ : Field F
inst✝¹² : Field K✝
inst✝¹¹ : Algebra F K✝
K₁ : Type u_3
K₂ : Type u_4
K₃ : Type u_5
inst✝¹⁰ : Field F
inst✝⁹ : Field K₁
inst✝⁸ : Field K₂
inst✝⁷ : Field K₃
inst✝⁶ : Algebra F K₁
inst✝⁵ : Algebra F K₂
inst✝⁴ : Algebra F K₃
ϕ : K₁ →ₐ[F] K₂
χ : K₁ ≃ₐ[F] K₂
ψ : K₂ →ₐ[F] K₃
ω : K₂ ≃ₐ[F] K₃
K : Type u_6
L : Type u_7
inst✝³ : Field K
inst✝² : Field L
inst✝¹ : Algebra K L
inst✝ : Normal K L
x y : L
hy : IsAlgebraic K y
h_ev : (Polynomial.aeval x) (minpoly K y) = 0
σ : L ≃ₐ[K] L
hσ : σ x = y
⊢ σ.symm y = x
state_after: no goals
Theorem: MeasureTheory.tendsto_setLIntegral_zero
File: Mathlib/MeasureTheory/Integral/Lebesgue.lean

tactic: simp only [ENNReal.nhds_zero, tendsto_iInf, tendsto_principal, mem_Iio,
  ← pos_iff_ne_zero] at hl ⊢
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
ι : Type u_5
f : α → ℝ≥0∞
h : ∫⁻ (x : α), f x ∂μ ≠ ⊤
l : Filter ι
s : ι → Set α
hl : Tendsto (⇑μ ∘ s) l (𝓝 0)
⊢ Tendsto (fun i => ∫⁻ (x : α) in s i, f x ∂μ) l (𝓝 0)
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
ι : Type u_5
f : α → ℝ≥0∞
h : ∫⁻ (x : α), f x ∂μ ≠ ⊤
l : Filter ι
s : ι → Set α
hl : ∀ (i : ℝ≥0∞), 0 < i → ∀ᶠ (a : ι) in l, (⇑μ ∘ s) a < i
⊢ ∀ (i : ℝ≥0∞), 0 < i → ∀ᶠ (a : ι) in l, ∫⁻ (x : α) in s a, f x ∂μ < i

tactic: intro ε ε0
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
ι : Type u_5
f : α → ℝ≥0∞
h : ∫⁻ (x : α), f x ∂μ ≠ ⊤
l : Filter ι
s : ι → Set α
hl : ∀ (i : ℝ≥0∞), 0 < i → ∀ᶠ (a : ι) in l, (⇑μ ∘ s) a < i
⊢ ∀ (i : ℝ≥0∞), 0 < i → ∀ᶠ (a : ι) in l, ∫⁻ (x : α) in s a, f x ∂μ < i
state_after: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
ι : Type u_5
f : α → ℝ≥0∞
h : ∫⁻ (x : α), f x ∂μ ≠ ⊤
l : Filter ι
s : ι → Set α
hl : ∀ (i : ℝ≥0∞), 0 < i → ∀ᶠ (a : ι) in l, (⇑μ ∘ s) a < i
ε : ℝ≥0∞
ε0 : 0 < ε
⊢ ∀ᶠ (a : ι) in l, ∫⁻ (x : α) in s a, f x ∂μ < ε

tactic: rcases exists_pos_setLIntegral_lt_of_measure_lt h ε0.ne' with ⟨δ, δ0, hδ⟩
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
ι : Type u_5
f : α → ℝ≥0∞
h : ∫⁻ (x : α), f x ∂μ ≠ ⊤
l : Filter ι
s : ι → Set α
hl : ∀ (i : ℝ≥0∞), 0 < i → ∀ᶠ (a : ι) in l, (⇑μ ∘ s) a < i
ε : ℝ≥0∞
ε0 : 0 < ε
⊢ ∀ᶠ (a : ι) in l, ∫⁻ (x : α) in s a, f x ∂μ < ε
state_after: case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ✝ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
ι : Type u_5
f : α → ℝ≥0∞
h : ∫⁻ (x : α), f x ∂μ ≠ ⊤
l : Filter ι
s : ι → Set α
hl : ∀ (i : ℝ≥0∞), 0 < i → ∀ᶠ (a : ι) in l, (⇑μ ∘ s) a < i
ε : ℝ≥0∞
ε0 : 0 < ε
δ : ℝ≥0∞
δ0 : δ > 0
hδ : ∀ (s : Set α), μ s < δ → ∫⁻ (x : α) in s, f x ∂μ < ε
⊢ ∀ᶠ (a : ι) in l, ∫⁻ (x : α) in s a, f x ∂μ < ε

tactic: exact (hl δ δ0).mono fun i => hδ _
state_before: case intro.intro
α : Type u_1
β : Type u_2
γ : Type u_3
δ✝ : Type u_4
m : MeasurableSpace α
μ ν : Measure α
ι : Type u_5
f : α → ℝ≥0∞
h : ∫⁻ (x : α), f x ∂μ ≠ ⊤
l : Filter ι
s : ι → Set α
hl : ∀ (i : ℝ≥0∞), 0 < i → ∀ᶠ (a : ι) in l, (⇑μ ∘ s) a < i
ε : ℝ≥0∞
ε0 : 0 < ε
δ : ℝ≥0∞
δ0 : δ > 0
hδ : ∀ (s : Set α), μ s < δ → ∫⁻ (x : α) in s, f x ∂μ < ε
⊢ ∀ᶠ (a : ι) in l, ∫⁻ (x : α) in s a, f x ∂μ < ε
state_after: no goals
Theorem: Metric.cthickening_max_zero
File: Mathlib/Topology/MetricSpace/Thickening.lean

tactic: cases le_total δ 0 <;> simp [cthickening_of_nonpos, *]
state_before: ι : Sort u_1
α : Type u
β : Type v
inst✝ : PseudoEMetricSpace α
δ✝ ε : ℝ
s t : Set α
x : α
δ : ℝ
E : Set α
⊢ cthickening (max 0 δ) E = cthickening δ E
state_after: no goals
Theorem: Fin.univ_image_def
File: Mathlib/Data/Fintype/Basic.lean

tactic: simp [Finset.image]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
n : ℕ
inst✝ : DecidableEq α
f : Fin n → α
⊢ image f univ = (List.ofFn f).toFinset
state_after: no goals
Theorem: Mathlib.Tactic.PushNeg.not_nonempty_eq
File: Mathlib/Tactic/PushNeg.lean

tactic: have A : ∀ (x : γ), ¬(x ∈ (∅ : Set γ)) := fun x ↦ id
state_before: α : Sort ?u.827
p q : Prop
s✝ : α → Prop
β : Type u
inst✝ : LinearOrder β
γ : Type u_1
s : Set γ
⊢ (¬s.Nonempty) = (s = ∅)
state_after: α : Sort ?u.827
p q : Prop
s✝ : α → Prop
β : Type u
inst✝ : LinearOrder β
γ : Type u_1
s : Set γ
A : ∀ (x : γ), ¬x ∈ ∅
⊢ (¬s.Nonempty) = (s = ∅)

tactic: simp only [Set.Nonempty, not_exists, eq_iff_iff]
state_before: α : Sort ?u.827
p q : Prop
s✝ : α → Prop
β : Type u
inst✝ : LinearOrder β
γ : Type u_1
s : Set γ
A : ∀ (x : γ), ¬x ∈ ∅
⊢ (¬s.Nonempty) = (s = ∅)
state_after: α : Sort ?u.827
p q : Prop
s✝ : α → Prop
β : Type u
inst✝ : LinearOrder β
γ : Type u_1
s : Set γ
A : ∀ (x : γ), ¬x ∈ ∅
⊢ (∀ (x : γ), ¬x ∈ s) ↔ s = ∅

tactic: exact ⟨fun h ↦ Set.ext (fun x ↦ by simp only [h x, false_iff, A]), fun h ↦ by rwa [h]⟩
state_before: α : Sort ?u.827
p q : Prop
s✝ : α → Prop
β : Type u
inst✝ : LinearOrder β
γ : Type u_1
s : Set γ
A : ∀ (x : γ), ¬x ∈ ∅
⊢ (∀ (x : γ), ¬x ∈ s) ↔ s = ∅
state_after: no goals

tactic: simp only [h x, false_iff, A]
state_before: α : Sort ?u.827
p q : Prop
s✝ : α → Prop
β : Type u
inst✝ : LinearOrder β
γ : Type u_1
s : Set γ
A : ∀ (x : γ), ¬x ∈ ∅
h : ∀ (x : γ), ¬x ∈ s
x : γ
⊢ x ∈ s ↔ x ∈ ∅
state_after: no goals

tactic: rwa [h]
state_before: α : Sort ?u.827
p q : Prop
s✝ : α → Prop
β : Type u
inst✝ : LinearOrder β
γ : Type u_1
s : Set γ
A : ∀ (x : γ), ¬x ∈ ∅
h : s = ∅
⊢ ∀ (x : γ), ¬x ∈ s
state_after: no goals
Theorem: MeasureTheory.Measure.rnDeriv_le_one_of_le
File: Mathlib/MeasureTheory/Decomposition/RadonNikodym.lean

tactic: refine ae_le_of_forall_setLIntegral_le_of_sigmaFinite (μ.measurable_rnDeriv ν) measurable_const
  (fun s _ _ ↦ ?_)
state_before: α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
hμν : μ ≤ ν
inst✝ : SigmaFinite ν
⊢ μ.rnDeriv ν ≤ᶠ[ae ν] 1
state_after: α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
hμν : μ ≤ ν
inst✝ : SigmaFinite ν
s : Set α
x✝¹ : MeasurableSet s
x✝ : ν s < ⊤
⊢ ∫⁻ (x : α) in s, μ.rnDeriv ν x ∂ν ≤ ∫⁻ (x : α) in s, 1 x ∂ν

tactic: simp only [Pi.one_apply, MeasureTheory.setLIntegral_one]
state_before: α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
hμν : μ ≤ ν
inst✝ : SigmaFinite ν
s : Set α
x✝¹ : MeasurableSet s
x✝ : ν s < ⊤
⊢ ∫⁻ (x : α) in s, μ.rnDeriv ν x ∂ν ≤ ∫⁻ (x : α) in s, 1 x ∂ν
state_after: α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
hμν : μ ≤ ν
inst✝ : SigmaFinite ν
s : Set α
x✝¹ : MeasurableSet s
x✝ : ν s < ⊤
⊢ ∫⁻ (x : α) in s, μ.rnDeriv ν x ∂ν ≤ ν s

tactic: exact (Measure.setLIntegral_rnDeriv_le s).trans (hμν s)
state_before: α : Type u_1
β : Type u_2
m : MeasurableSpace α
μ ν : Measure α
hμν : μ ≤ ν
inst✝ : SigmaFinite ν
s : Set α
x✝¹ : MeasurableSet s
x✝ : ν s < ⊤
⊢ ∫⁻ (x : α) in s, μ.rnDeriv ν x ∂ν ≤ ν s
state_after: no goals
Theorem: ENNReal.log_eq_iff
File: Mathlib/Analysis/SpecialFunctions/Log/ENNReal.lean

tactic: rw [h]
state_before: x y : ℝ≥0∞
h : x = y
⊢ x.log = y.log
state_after: no goals
Theorem: MeasureTheory.lmarginal_union'
File: Mathlib/MeasureTheory/Integral/Marginal.lean

tactic: rw [Finset.union_comm, lmarginal_union μ f hf hst.symm]
state_before: δ : Type u_1
δ' : Type u_2
π : δ → Type u_3
inst✝² : (x : δ) → MeasurableSpace (π x)
μ : (i : δ) → Measure (π i)
inst✝¹ : ∀ (i : δ), SigmaFinite (μ i)
inst✝ : DecidableEq δ
s✝ t✝ : Finset δ
f✝ g : ((i : δ) → π i) → ℝ≥0∞
x y : (i : δ) → π i
i : δ
f : ((i : δ) → π i) → ℝ≥0∞
hf : Measurable f
s t : Finset δ
hst : Disjoint s t
⊢ ∫⋯∫⁻_s ∪ t, f ∂μ = ∫⋯∫⁻_t, ∫⋯∫⁻_s, f ∂μ ∂μ
state_after: no goals
Theorem: Function.symmetric_apply_eq_iff
File: Mathlib/Logic/Function/Basic.lean

tactic: simp [Symmetric, Involutive]
state_before: α : Sort u_1
f : α → α
⊢ (Symmetric fun x x_1 => f x = x_1) ↔ Involutive f
state_after: no goals
Theorem: Polynomial.isUnitTrinomial_iff''
File: Mathlib/Algebra/Polynomial/UnitTrinomial.lean

tactic: rw [isUnitTrinomial_iff', isUnitTrinomial_iff', h]
state_before: p q : ℤ[X]
h : p * p.mirror = q * q.mirror
⊢ p.IsUnitTrinomial ↔ q.IsUnitTrinomial
state_after: no goals
Theorem: List.prod_eq_zero_iff
File: Mathlib/Algebra/BigOperators/Ring/List.lean

tactic: simp
state_before: ι : Type u_1
κ : Type u_2
M : Type u_3
M₀ : Type u_4
R : Type u_5
inst✝² : MonoidWithZero M₀
l : List M₀
inst✝¹ : Nontrivial M₀
inst✝ : NoZeroDivisors M₀
⊢ [].prod = 0 ↔ 0 ∈ []
state_after: no goals

tactic: rw [prod_cons, mul_eq_zero, prod_eq_zero_iff, mem_cons, eq_comm]
state_before: ι : Type u_1
κ : Type u_2
M : Type u_3
M₀ : Type u_4
R : Type u_5
inst✝² : MonoidWithZero M₀
l✝ : List M₀
inst✝¹ : Nontrivial M₀
inst✝ : NoZeroDivisors M₀
a : M₀
l : List M₀
⊢ (a :: l).prod = 0 ↔ 0 ∈ a :: l
state_after: no goals
Theorem: FractionalIdeal.mul_induction_on
File: Mathlib/RingTheory/FractionalIdeal/Basic.lean

tactic: simp only [mul_def] at hr
state_before: R : Type u_1
inst✝² : CommRing R
S : Submonoid R
P : Type u_2
inst✝¹ : CommRing P
inst✝ : Algebra R P
loc : IsLocalization S P
I J : FractionalIdeal S P
C : P → Prop
r : P
hr : r ∈ I * J
hm : ∀ i ∈ I, ∀ j ∈ J, C (i * j)
ha : ∀ (x y : P), C x → C y → C (x + y)
⊢ C r
state_after: R : Type u_1
inst✝² : CommRing R
S : Submonoid R
P : Type u_2
inst✝¹ : CommRing P
inst✝ : Algebra R P
loc : IsLocalization S P
I J : FractionalIdeal S P
C : P → Prop
r : P
hm : ∀ i ∈ I, ∀ j ∈ J, C (i * j)
ha : ∀ (x y : P), C x → C y → C (x + y)
hr : r ∈ ⟨↑I * ↑J, ⋯⟩
⊢ C r

tactic: exact Submodule.mul_induction_on hr hm ha
state_before: R : Type u_1
inst✝² : CommRing R
S : Submonoid R
P : Type u_2
inst✝¹ : CommRing P
inst✝ : Algebra R P
loc : IsLocalization S P
I J : FractionalIdeal S P
C : P → Prop
r : P
hm : ∀ i ∈ I, ∀ j ∈ J, C (i * j)
ha : ∀ (x y : P), C x → C y → C (x + y)
hr : r ∈ ⟨↑I * ↑J, ⋯⟩
⊢ C r
state_after: no goals
Theorem: CategoryTheory.BraidedCategory.braiding_tensor_right
File: Mathlib/CategoryTheory/Monoidal/Braided/Basic.lean

tactic: apply (cancel_epi (α_ X Y Z).hom).1
state_before: C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : MonoidalCategory C
inst✝ : BraidedCategory C
X Y Z : C
⊢ (β_ X (Y ⊗ Z)).hom = (α_ X Y Z).inv ≫ (β_ X Y).hom ▷ Z ≫ (α_ Y X Z).hom ≫ Y ◁ (β_ X Z).hom ≫ (α_ Y Z X).inv
state_after: C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : MonoidalCategory C
inst✝ : BraidedCategory C
X Y Z : C
⊢ (α_ X Y Z).hom ≫ (β_ X (Y ⊗ Z)).hom =
    (α_ X Y Z).hom ≫ (α_ X Y Z).inv ≫ (β_ X Y).hom ▷ Z ≫ (α_ Y X Z).hom ≫ Y ◁ (β_ X Z).hom ≫ (α_ Y Z X).inv

tactic: apply (cancel_mono (α_ Y Z X).hom).1
state_before: C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : MonoidalCategory C
inst✝ : BraidedCategory C
X Y Z : C
⊢ (α_ X Y Z).hom ≫ (β_ X (Y ⊗ Z)).hom =
    (α_ X Y Z).hom ≫ (α_ X Y Z).inv ≫ (β_ X Y).hom ▷ Z ≫ (α_ Y X Z).hom ≫ Y ◁ (β_ X Z).hom ≫ (α_ Y Z X).inv
state_after: C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : MonoidalCategory C
inst✝ : BraidedCategory C
X Y Z : C
⊢ ((α_ X Y Z).hom ≫ (β_ X (Y ⊗ Z)).hom) ≫ (α_ Y Z X).hom =
    ((α_ X Y Z).hom ≫ (α_ X Y Z).inv ≫ (β_ X Y).hom ▷ Z ≫ (α_ Y X Z).hom ≫ Y ◁ (β_ X Z).hom ≫ (α_ Y Z X).inv) ≫
      (α_ Y Z X).hom

tactic: simp [hexagon_forward]
state_before: C : Type u
inst✝² : Category.{v, u} C
inst✝¹ : MonoidalCategory C
inst✝ : BraidedCategory C
X Y Z : C
⊢ ((α_ X Y Z).hom ≫ (β_ X (Y ⊗ Z)).hom) ≫ (α_ Y Z X).hom =
    ((α_ X Y Z).hom ≫ (α_ X Y Z).inv ≫ (β_ X Y).hom ▷ Z ≫ (α_ Y X Z).hom ≫ Y ◁ (β_ X Z).hom ≫ (α_ Y Z X).inv) ≫
      (α_ Y Z X).hom
state_after: no goals
Theorem: CategoryTheory.Limits.Fork.equalizer_ext
File: Mathlib/CategoryTheory/Limits/Shapes/Equalizers.lean

tactic: rw [s.app_one_eq_ι_comp_left, this]
state_before: C : Type u
inst✝ : Category.{v, u} C
X Y : C
f g : X ⟶ Y
s : Fork f g
W : C
k l : W ⟶ s.pt
h : k ≫ s.ι = l ≫ s.ι
this : k ≫ s.ι ≫ f = l ≫ s.ι ≫ f
⊢ k ≫ s.π.app one = l ≫ s.π.app one
state_after: no goals

tactic: simp only [← Category.assoc]
state_before: C : Type u
inst✝ : Category.{v, u} C
X Y : C
f g : X ⟶ Y
s : Fork f g
W : C
k l : W ⟶ s.pt
h : k ≫ s.ι = l ≫ s.ι
⊢ k ≫ s.ι ≫ f = l ≫ s.ι ≫ f
state_after: C : Type u
inst✝ : Category.{v, u} C
X Y : C
f g : X ⟶ Y
s : Fork f g
W : C
k l : W ⟶ s.pt
h : k ≫ s.ι = l ≫ s.ι
⊢ (k ≫ s.ι) ≫ f = (l ≫ s.ι) ≫ f
Theorem: norm_indicator_le_norm_self
File: Mathlib/Analysis/NormedSpace/IndicatorFunction.lean

tactic: rw [norm_indicator_eq_indicator_norm]
state_before: α : Type u_1
E : Type u_2
inst✝ : SeminormedAddCommGroup E
s t : Set α
f : α → E
a : α
⊢ ‖s.indicator f a‖ ≤ ‖f a‖
state_after: α : Type u_1
E : Type u_2
inst✝ : SeminormedAddCommGroup E
s t : Set α
f : α → E
a : α
⊢ s.indicator (fun a => ‖f a‖) a ≤ ‖f a‖

tactic: apply indicator_norm_le_norm_self
state_before: α : Type u_1
E : Type u_2
inst✝ : SeminormedAddCommGroup E
s t : Set α
f : α → E
a : α
⊢ s.indicator (fun a => ‖f a‖) a ≤ ‖f a‖
state_after: no goals
Theorem: EReal.sub_lt_sub_of_lt_of_le
File: Mathlib/Data/Real/EReal.lean

tactic: simp [ht]
state_before: x y z t : EReal
h : x < y
h' : z ≤ t
hz : z ≠ ⊥
ht : t ≠ ⊤
⊢ -t ≠ ⊥
state_after: no goals

tactic: simp [hz]
state_before: x y z t : EReal
h : x < y
h' : z ≤ t
hz : z ≠ ⊥
ht : t ≠ ⊤
⊢ -z ≠ ⊤
state_after: no goals
Theorem: CategoryTheory.congrArg_mpr_hom_left
File: Mathlib/CategoryTheory/EqToHom.lean

tactic: cases p
state_before: C : Type u₁
inst✝ : Category.{v₁, u₁} C
β : Sort u_1
X Y Z : C
p : X = Y
q : Y ⟶ Z
⊢ ⋯.mpr q = eqToHom p ≫ q
state_after: case refl
C : Type u₁
inst✝ : Category.{v₁, u₁} C
β : Sort u_1
X Z : C
q : X ⟶ Z
⊢ ⋯.mpr q = eqToHom ⋯ ≫ q

tactic: simp
state_before: case refl
C : Type u₁
inst✝ : Category.{v₁, u₁} C
β : Sort u_1
X Z : C
q : X ⟶ Z
⊢ ⋯.mpr q = eqToHom ⋯ ≫ q
state_after: no goals
Theorem: Set.singleton_prod_singleton
File: Mathlib/Data/Set/Prod.lean

tactic: simp
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
δ : Type u_4
s s₁ s₂ : Set α
t t₁ t₂ : Set β
a : α
b : β
⊢ {a} ×ˢ {b} = {(a, b)}
state_after: no goals
Theorem: CategoryTheory.Functor.preimage_comp
File: Mathlib/CategoryTheory/Functor/FullyFaithful.lean

tactic: simp
state_before: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
D : Type u₂
inst✝² : Category.{v₂, u₂} D
X✝ Y✝ : C
F : C ⥤ D
inst✝¹ : F.Full
inst✝ : F.Faithful
X Y Z : C
f : F.obj X ⟶ F.obj Y
g : F.obj Y ⟶ F.obj Z
⊢ F.map (F.preimage (f ≫ g)) = F.map (F.preimage f ≫ F.preimage g)
state_after: no goals
Theorem: WeierstrassCurve.coeff_preΨ₄_ne_zero
File: Mathlib/AlgebraicGeometry/EllipticCurve/DivisionPolynomial/Degree.lean

tactic: rwa [coeff_preΨ₄]
state_before: R : Type u
inst✝ : CommRing R
W : WeierstrassCurve R
h : 2 ≠ 0
⊢ W.preΨ₄.coeff 6 ≠ 0
state_after: no goals
Theorem: UpperHalfPlane.ModularGroup.det_coe'
File: Mathlib/Analysis/Complex/UpperHalfPlane/Basic.lean

tactic: simp only [SpecialLinearGroup.coe_GLPos_coe_GL_coe_matrix, SpecialLinearGroup.det_coe, coe']
state_before: Γ : Subgroup SL(2, ℤ)
g : SL(2, ℤ)
⊢ (↑↑↑g).det = 1
state_after: no goals
Theorem: Filter.map_comap
File: Mathlib/Order/Filter/Basic.lean

tactic: refine le_antisymm (le_inf map_comap_le <| le_principal_iff.2 range_mem_map) ?_
state_before: α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
l f✝ f₁ f₂ : Filter α
g g₁ g₂ : Filter β
m✝ : α → β
m' : β → γ
s : Set α
t : Set β
f : Filter β
m : α → β
⊢ map m (comap m f) = f ⊓ 𝓟 (range m)
state_after: α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
l f✝ f₁ f₂ : Filter α
g g₁ g₂ : Filter β
m✝ : α → β
m' : β → γ
s : Set α
t : Set β
f : Filter β
m : α → β
⊢ f ⊓ 𝓟 (range m) ≤ map m (comap m f)

tactic: rintro t' ⟨t, ht, sub⟩
state_before: α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
l f✝ f₁ f₂ : Filter α
g g₁ g₂ : Filter β
m✝ : α → β
m' : β → γ
s : Set α
t : Set β
f : Filter β
m : α → β
⊢ f ⊓ 𝓟 (range m) ≤ map m (comap m f)
state_after: case intro.intro
α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
l f✝ f₁ f₂ : Filter α
g g₁ g₂ : Filter β
m✝ : α → β
m' : β → γ
s : Set α
t✝ : Set β
f : Filter β
m : α → β
t' t : Set β
ht : t ∈ f
sub : m ⁻¹' t ⊆ m ⁻¹' t'
⊢ t' ∈ f ⊓ 𝓟 (range m)

tactic: refine mem_inf_principal.2 (mem_of_superset ht ?_)
state_before: case intro.intro
α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
l f✝ f₁ f₂ : Filter α
g g₁ g₂ : Filter β
m✝ : α → β
m' : β → γ
s : Set α
t✝ : Set β
f : Filter β
m : α → β
t' t : Set β
ht : t ∈ f
sub : m ⁻¹' t ⊆ m ⁻¹' t'
⊢ t' ∈ f ⊓ 𝓟 (range m)
state_after: case intro.intro
α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
l f✝ f₁ f₂ : Filter α
g g₁ g₂ : Filter β
m✝ : α → β
m' : β → γ
s : Set α
t✝ : Set β
f : Filter β
m : α → β
t' t : Set β
ht : t ∈ f
sub : m ⁻¹' t ⊆ m ⁻¹' t'
⊢ t ⊆ {x | x ∈ range m → x ∈ t'}

tactic: rintro _ hxt ⟨x, rfl⟩
state_before: case intro.intro
α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
l f✝ f₁ f₂ : Filter α
g g₁ g₂ : Filter β
m✝ : α → β
m' : β → γ
s : Set α
t✝ : Set β
f : Filter β
m : α → β
t' t : Set β
ht : t ∈ f
sub : m ⁻¹' t ⊆ m ⁻¹' t'
⊢ t ⊆ {x | x ∈ range m → x ∈ t'}
state_after: case intro.intro.intro
α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
l f✝ f₁ f₂ : Filter α
g g₁ g₂ : Filter β
m✝ : α → β
m' : β → γ
s : Set α
t✝ : Set β
f : Filter β
m : α → β
t' t : Set β
ht : t ∈ f
sub : m ⁻¹' t ⊆ m ⁻¹' t'
x : α
hxt : m x ∈ t
⊢ m x ∈ t'

tactic: exact sub hxt
state_before: case intro.intro.intro
α : Type u
β : Type v
γ : Type w
δ : Type u_1
ι : Sort x
l f✝ f₁ f₂ : Filter α
g g₁ g₂ : Filter β
m✝ : α → β
m' : β → γ
s : Set α
t✝ : Set β
f : Filter β
m : α → β
t' t : Set β
ht : t ∈ f
sub : m ⁻¹' t ⊆ m ⁻¹' t'
x : α
hxt : m x ∈ t
⊢ m x ∈ t'
state_after: no goals
Theorem: StructureGroupoid.LocalInvariantProp.liftPropWithinAt_indep_chart
File: Mathlib/Geometry/Manifold/LocalInvariantProperties.lean

tactic: simp only [liftPropWithinAt_iff']
state_before: H : Type u_1
M : Type u_2
H' : Type u_3
M' : Type u_4
X : Type u_5
inst✝⁸ : TopologicalSpace H
inst✝⁷ : TopologicalSpace M
inst✝⁶ : ChartedSpace H M
inst✝⁵ : TopologicalSpace H'
inst✝⁴ : TopologicalSpace M'
inst✝³ : ChartedSpace H' M'
inst✝² : TopologicalSpace X
G : StructureGroupoid H
G' : StructureGroupoid H'
e e' : PartialHomeomorph M H
f f' : PartialHomeomorph M' H'
P : (H → H') → Set H → H → Prop
g g' : M → M'
s t : Set M
x : M
Q : (H → H) → Set H → H → Prop
hG : G.LocalInvariantProp G' P
inst✝¹ : HasGroupoid M G
inst✝ : HasGroupoid M' G'
he : e ∈ maximalAtlas M G
xe : x ∈ e.source
hf : f ∈ maximalAtlas M' G'
xf : g x ∈ f.source
⊢ LiftPropWithinAt P g s x ↔ ContinuousWithinAt g s x ∧ P (↑f ∘ g ∘ ↑e.symm) (↑e.symm ⁻¹' s) (↑e x)
state_after: H : Type u_1
M : Type u_2
H' : Type u_3
M' : Type u_4
X : Type u_5
inst✝⁸ : TopologicalSpace H
inst✝⁷ : TopologicalSpace M
inst✝⁶ : ChartedSpace H M
inst✝⁵ : TopologicalSpace H'
inst✝⁴ : TopologicalSpace M'
inst✝³ : ChartedSpace H' M'
inst✝² : TopologicalSpace X
G : StructureGroupoid H
G' : StructureGroupoid H'
e e' : PartialHomeomorph M H
f f' : PartialHomeomorph M' H'
P : (H → H') → Set H → H → Prop
g g' : M → M'
s t : Set M
x : M
Q : (H → H) → Set H → H → Prop
hG : G.LocalInvariantProp G' P
inst✝¹ : HasGroupoid M G
inst✝ : HasGroupoid M' G'
he : e ∈ maximalAtlas M G
xe : x ∈ e.source
hf : f ∈ maximalAtlas M' G'
xf : g x ∈ f.source
⊢ ContinuousWithinAt g s x ∧
      P (↑(chartAt H' (g x)) ∘ g ∘ ↑(chartAt H x).symm) (↑(chartAt H x).symm ⁻¹' s) (↑(chartAt H x) x) ↔
    ContinuousWithinAt g s x ∧ P (↑f ∘ g ∘ ↑e.symm) (↑e.symm ⁻¹' s) (↑e x)

tactic: exact and_congr_right <|
  hG.liftPropWithinAt_indep_chart_aux (chart_mem_maximalAtlas _ _) (mem_chart_source _ _) he xe
    (chart_mem_maximalAtlas _ _) (mem_chart_source _ _) hf xf
state_before: H : Type u_1
M : Type u_2
H' : Type u_3
M' : Type u_4
X : Type u_5
inst✝⁸ : TopologicalSpace H
inst✝⁷ : TopologicalSpace M
inst✝⁶ : ChartedSpace H M
inst✝⁵ : TopologicalSpace H'
inst✝⁴ : TopologicalSpace M'
inst✝³ : ChartedSpace H' M'
inst✝² : TopologicalSpace X
G : StructureGroupoid H
G' : StructureGroupoid H'
e e' : PartialHomeomorph M H
f f' : PartialHomeomorph M' H'
P : (H → H') → Set H → H → Prop
g g' : M → M'
s t : Set M
x : M
Q : (H → H) → Set H → H → Prop
hG : G.LocalInvariantProp G' P
inst✝¹ : HasGroupoid M G
inst✝ : HasGroupoid M' G'
he : e ∈ maximalAtlas M G
xe : x ∈ e.source
hf : f ∈ maximalAtlas M' G'
xf : g x ∈ f.source
⊢ ContinuousWithinAt g s x ∧
      P (↑(chartAt H' (g x)) ∘ g ∘ ↑(chartAt H x).symm) (↑(chartAt H x).symm ⁻¹' s) (↑(chartAt H x) x) ↔
    ContinuousWithinAt g s x ∧ P (↑f ∘ g ∘ ↑e.symm) (↑e.symm ⁻¹' s) (↑e x)
state_after: no goals