tasksource/leandojo huggingface dataset:
Theorem: MeasureTheory.indicatorConstLp_disjoint_union
File: Mathlib/MeasureTheory/Function/LpSpace.lean

tactic: ext1
state_before: α : Type u_1
E : Type u_2
F : Type ?u.709397
G : Type ?u.709400
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
s✝ : Set α
hs✝ : MeasurableSet s✝
hμs✝ : ↑↑μ s✝ ≠ ⊤
c✝ : E
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
hμs : ↑↑μ s ≠ ⊤
hμt : ↑↑μ t ≠ ⊤
hst : s ∩ t = ∅
c : E
⊢ indicatorConstLp p (_ : MeasurableSet (s ∪ t)) (_ : ↑↑μ (s ∪ t) ≠ ⊤) c =
    indicatorConstLp p hs hμs c + indicatorConstLp p ht hμt c

tactic: refine' indicatorConstLp_coeFn.trans (EventuallyEq.trans _ (Lp.coeFn_add _ _).symm)
state_before: case h
α : Type u_1
E : Type u_2
F : Type ?u.709397
G : Type ?u.709400
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
s✝ : Set α
hs✝ : MeasurableSet s✝
hμs✝ : ↑↑μ s✝ ≠ ⊤
c✝ : E
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
hμs : ↑↑μ s ≠ ⊤
hμt : ↑↑μ t ≠ ⊤
hst : s ∩ t = ∅
c : E
⊢ ↑↑(indicatorConstLp p (_ : MeasurableSet (s ∪ t)) (_ : ↑↑μ (s ∪ t) ≠ ⊤) c) =ᵐ[μ]
    ↑↑(indicatorConstLp p hs hμs c + indicatorConstLp p ht hμt c)

tactic: refine'
  EventuallyEq.trans _
    (EventuallyEq.add indicatorConstLp_coeFn.symm indicatorConstLp_coeFn.symm)
state_before: case h
α : Type u_1
E : Type u_2
F : Type ?u.709397
G : Type ?u.709400
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
s✝ : Set α
hs✝ : MeasurableSet s✝
hμs✝ : ↑↑μ s✝ ≠ ⊤
c✝ : E
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
hμs : ↑↑μ s ≠ ⊤
hμt : ↑↑μ t ≠ ⊤
hst : s ∩ t = ∅
c : E
⊢ (Set.indicator (s ∪ t) fun x => c) =ᵐ[μ] ↑↑(indicatorConstLp p hs hμs c) + ↑↑(indicatorConstLp p ht hμt c)

tactic: rw [Set.indicator_union_of_disjoint (Set.disjoint_iff_inter_eq_empty.mpr hst) _]
state_before: case h
α : Type u_1
E : Type u_2
F : Type ?u.709397
G : Type ?u.709400
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
s✝ : Set α
hs✝ : MeasurableSet s✝
hμs✝ : ↑↑μ s✝ ≠ ⊤
c✝ : E
s t : Set α
hs : MeasurableSet s
ht : MeasurableSet t
hμs : ↑↑μ s ≠ ⊤
hμt : ↑↑μ t ≠ ⊤
hst : s ∩ t = ∅
c : E
⊢ (Set.indicator (s ∪ t) fun x => c) =ᵐ[μ] fun x => Set.indicator s (fun x => c) x + Set.indicator t (fun x => c) x
Theorem: Polynomial.Monic.natDegree_mul
File: Mathlib/Data/Polynomial/Monic.lean

tactic: nontriviality R
state_before: R : Type u
S : Type v
a b : R
m n : ℕ
ι : Type y
inst✝ : Semiring R
p q r : R[X]
hp : Monic p
hq : Monic q
⊢ natDegree (p * q) = natDegree p + natDegree q

tactic: apply natDegree_mul'
state_before: R : Type u
S : Type v
a b : R
m n : ℕ
ι : Type y
inst✝ : Semiring R
p q r : R[X]
hp : Monic p
hq : Monic q
✝ : Nontrivial R
⊢ natDegree (p * q) = natDegree p + natDegree q

tactic: simp [hp.leadingCoeff, hq.leadingCoeff]
state_before: case h
R : Type u
S : Type v
a b : R
m n : ℕ
ι : Type y
inst✝ : Semiring R
p q r : R[X]
hp : Monic p
hq : Monic q
✝ : Nontrivial R
⊢ Polynomial.leadingCoeff p * Polynomial.leadingCoeff q ≠ 0
Theorem: MeasureTheory.Measure.AbsolutelyContinuous.prod
File: Mathlib/MeasureTheory/Constructions/Prod/Basic.lean

tactic: refine' AbsolutelyContinuous.mk fun s hs h2s => _
state_before: α : Type u_2
α' : Type ?u.4449024
β : Type u_1
β' : Type ?u.4449030
γ : Type ?u.4449033
E : Type ?u.4449036
inst✝⁷ : MeasurableSpace α
inst✝⁶ : MeasurableSpace α'
inst✝⁵ : MeasurableSpace β
inst✝⁴ : MeasurableSpace β'
inst✝³ : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝² : NormedAddCommGroup E
inst✝¹ : SigmaFinite ν
inst✝ : SigmaFinite ν'
h1 : μ ≪ μ'
h2 : ν ≪ ν'
⊢ Measure.prod μ ν ≪ Measure.prod μ' ν'

tactic: rw [measure_prod_null hs] at h2s ⊢
state_before: α : Type u_2
α' : Type ?u.4449024
β : Type u_1
β' : Type ?u.4449030
γ : Type ?u.4449033
E : Type ?u.4449036
inst✝⁷ : MeasurableSpace α
inst✝⁶ : MeasurableSpace α'
inst✝⁵ : MeasurableSpace β
inst✝⁴ : MeasurableSpace β'
inst✝³ : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝² : NormedAddCommGroup E
inst✝¹ : SigmaFinite ν
inst✝ : SigmaFinite ν'
h1 : μ ≪ μ'
h2 : ν ≪ ν'
s : Set (α × β)
hs : MeasurableSet s
h2s : ↑↑(Measure.prod μ' ν') s = 0
⊢ ↑↑(Measure.prod μ ν) s = 0

tactic: exact (h2s.filter_mono h1.ae_le).mono fun _ h => h2 h
state_before: α : Type u_2
α' : Type ?u.4449024
β : Type u_1
β' : Type ?u.4449030
γ : Type ?u.4449033
E : Type ?u.4449036
inst✝⁷ : MeasurableSpace α
inst✝⁶ : MeasurableSpace α'
inst✝⁵ : MeasurableSpace β
inst✝⁴ : MeasurableSpace β'
inst✝³ : MeasurableSpace γ
μ μ' : Measure α
ν ν' : Measure β
τ : Measure γ
inst✝² : NormedAddCommGroup E
inst✝¹ : SigmaFinite ν
inst✝ : SigmaFinite ν'
h1 : μ ≪ μ'
h2 : ν ≪ ν'
s : Set (α × β)
hs : MeasurableSet s
h2s : (fun x => ↑↑ν' (Prod.mk x ⁻¹' s)) =ᶠ[ae μ'] 0
⊢ (fun x => ↑↑ν (Prod.mk x ⁻¹' s)) =ᶠ[ae μ] 0
Theorem: Matrix.exists_iff
File: Mathlib/Data/Matrix/Reflection.lean

tactic: simp only [Exists, FinVec.exists_iff, exists_iff]
state_before: l m✝ n✝ : ℕ
α : Type u_1
β : Type ?u.4399
m n : ℕ
P : Matrix (Fin (m + 1)) (Fin n) α → Prop
⊢ Exists P ↔ ∃ x, P x

tactic: exact Iff.symm Fin.exists_fin_succ_pi
state_before: l m✝ n✝ : ℕ
α : Type u_1
β : Type ?u.4399
m n : ℕ
P : Matrix (Fin (m + 1)) (Fin n) α → Prop
⊢ (∃ x x_1, P (↑of (vecCons x x_1))) ↔ ∃ x, P x
Theorem: Cardinal.beth_normal
File: Mathlib/SetTheory/Cardinal/Ordinal.lean

tactic: rw [beth_limit ho, ord_le]
state_before: o : Ordinal
ho : Ordinal.IsLimit o
a : Ordinal
ha : ∀ (b : Ordinal), b < o → ord (beth b) ≤ a
⊢ ord (beth o) ≤ a

tactic: exact ciSup_le' fun b => ord_le.1 (ha _ b.2)
state_before: o : Ordinal
ho : Ordinal.IsLimit o
a : Ordinal
ha : ∀ (b : Ordinal), b < o → ord (beth b) ≤ a
⊢ (⨆ (a : ↑(Iio o)), beth ↑a) ≤ card a
Theorem: NNReal.rpow_arith_mean_le_arith_mean_rpow
File: Mathlib/Analysis/MeanInequalitiesPow.lean

tactic: exact_mod_cast
  Real.rpow_arith_mean_le_arith_mean_rpow s _ _ (fun i _ => (w i).coe_nonneg)
    (by exact_mod_cast hw') (fun i _ => (z i).coe_nonneg) hp
state_before: ι : Type u
s : Finset ι
w z : ι → ℝ≥0
hw' : ∑ i in s, w i = 1
p : ℝ
hp : 1 ≤ p
⊢ (∑ i in s, w i * z i) ^ p ≤ ∑ i in s, w i * z i ^ p

tactic: exact_mod_cast hw'
state_before: ι : Type u
s : Finset ι
w z : ι → ℝ≥0
hw' : ∑ i in s, w i = 1
p : ℝ
hp : 1 ≤ p
⊢ ∑ i in s, ↑(w i) = 1
Theorem: nat_mul_inj
File: Mathlib/Algebra/CharZero/Lemmas.lean

tactic: rw [← sub_eq_zero, ← mul_sub, mul_eq_zero, sub_eq_zero] at h
state_before: R : Type u_1
inst✝² : NonAssocRing R
inst✝¹ : NoZeroDivisors R
inst✝ : CharZero R
n : ℕ
a b : R
h : ↑n * a = ↑n * b
⊢ n = 0 ∨ a = b

tactic: exact_mod_cast h
state_before: R : Type u_1
inst✝² : NonAssocRing R
inst✝¹ : NoZeroDivisors R
inst✝ : CharZero R
n : ℕ
a b : R
h✝ : ↑n * a = ↑n * b
h : ↑n = 0 ∨ a = b
⊢ n = 0 ∨ a = b
Theorem: LinearEquiv.lift_rank_eq
File: Mathlib/LinearAlgebra/Dimension.lean

tactic: apply le_antisymm
state_before: K : Type u
V V₁ V₂ V₃ : Type v
V' V'₁ : Type v'
V'' : Type v''
ι : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type ?u.60823
R : Type u
inst✝⁶ : Ring R
M : Type v
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
M' : Type v'
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
M₁ : Type v
inst✝¹ : AddCommGroup M₁
inst✝ : Module R M₁
f : M ≃ₗ[R] M'
⊢ lift (Module.rank R M) = lift (Module.rank R M')

tactic: exact f.toLinearMap.lift_rank_le_of_injective f.injective
state_before: case a
K : Type u
V V₁ V₂ V₃ : Type v
V' V'₁ : Type v'
V'' : Type v''
ι : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type ?u.60823
R : Type u
inst✝⁶ : Ring R
M : Type v
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
M' : Type v'
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
M₁ : Type v
inst✝¹ : AddCommGroup M₁
inst✝ : Module R M₁
f : M ≃ₗ[R] M'
⊢ lift (Module.rank R M) ≤ lift (Module.rank R M')

tactic: exact f.symm.toLinearMap.lift_rank_le_of_injective f.symm.injective
state_before: case a
K : Type u
V V₁ V₂ V₃ : Type v
V' V'₁ : Type v'
V'' : Type v''
ι : Type w
ι' : Type w'
η : Type u₁'
φ : η → Type ?u.60823
R : Type u
inst✝⁶ : Ring R
M : Type v
inst✝⁵ : AddCommGroup M
inst✝⁴ : Module R M
M' : Type v'
inst✝³ : AddCommGroup M'
inst✝² : Module R M'
M₁ : Type v
inst✝¹ : AddCommGroup M₁
inst✝ : Module R M₁
f : M ≃ₗ[R] M'
⊢ lift (Module.rank R M') ≤ lift (Module.rank R M)
Theorem: LieSubmodule.coe_map_toEndomorphism_le
File: Mathlib/Algebra/Lie/OfAssociative.lean

tactic: rintro n ⟨m, hm, rfl⟩
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
N : LieSubmodule R L M
x : L
⊢ Submodule.map (↑(toEndomorphism R L M) x) ↑N ≤ ↑N

tactic: exact N.lie_mem hm
state_before: case intro.intro
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
N : LieSubmodule R L M
x : L
m : M
hm : m ∈ ↑↑N
⊢ ↑(↑(toEndomorphism R L M) x) m ∈ ↑N
Theorem: Int.subgroup_cyclic
File: Mathlib/GroupTheory/Archimedean.lean

tactic: simp [this]
state_before: G : Type ?u.21656
inst✝¹ : LinearOrderedAddCommGroup G
inst✝ : Archimedean G
H : AddSubgroup ℤ
this : Ioo 0 1 = ∅
⊢ Disjoint (↑H) (Ioo 0 1)
Theorem: List.filterMap_map
File: Std/Data/List/Lemmas.lean

tactic: rw [← filterMap_eq_map, filterMap_filterMap]
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f : α → β
g : β → Option γ
l : List α
⊢ filterMap g (map f l) = filterMap (g ∘ f) l

tactic: rfl
state_before: α : Type u_1
β : Type u_2
γ : Type u_3
f : α → β
g : β → Option γ
l : List α
⊢ filterMap (fun x => Option.bind ((some ∘ f) x) g) l = filterMap (g ∘ f) l
Theorem: Subsemiring.coe_pow
File: Mathlib/RingTheory/Subsemiring/Basic.lean

tactic: induction' n with n ih
state_before: R✝ : Type u
S : Type v
T : Type w
inst✝³ : NonAssocSemiring R✝
M : Submonoid R✝
inst✝² : NonAssocSemiring S
inst✝¹ : NonAssocSemiring T
s✝ : Subsemiring R✝
R : Type u_1
inst✝ : Semiring R
s : Subsemiring R
x : { x // x ∈ s }
n : ℕ
⊢ ↑(x ^ n) = ↑x ^ n

tactic: simp
state_before: case zero
R✝ : Type u
S : Type v
T : Type w
inst✝³ : NonAssocSemiring R✝
M : Submonoid R✝
inst✝² : NonAssocSemiring S
inst✝¹ : NonAssocSemiring T
s✝ : Subsemiring R✝
R : Type u_1
inst✝ : Semiring R
s : Subsemiring R
x : { x // x ∈ s }
⊢ ↑(x ^ Nat.zero) = ↑x ^ Nat.zero

tactic: simp [pow_succ, ih]
state_before: case succ
R✝ : Type u
S : Type v
T : Type w
inst✝³ : NonAssocSemiring R✝
M : Submonoid R✝
inst✝² : NonAssocSemiring S
inst✝¹ : NonAssocSemiring T
s✝ : Subsemiring R✝
R : Type u_1
inst✝ : Semiring R
s : Subsemiring R
x : { x // x ∈ s }
n : ℕ
ih : ↑(x ^ n) = ↑x ^ n
⊢ ↑(x ^ Nat.succ n) = ↑x ^ Nat.succ n
Theorem: FractionalIdeal.isNoetherian_zero
File: Mathlib/RingTheory/FractionalIdeal.lean

tactic: rw [coe_zero] at hI
state_before: R : Type ?u.1744445
inst✝⁵ : CommRing R
S : Submonoid R
P : Type ?u.1744652
inst✝⁴ : CommRing P
inst✝³ : Algebra R P
loc : IsLocalization S P
R₁ : Type u_1
inst✝² : CommRing R₁
K : Type u_2
inst✝¹ : Field K
inst✝ : Algebra R₁ K
frac : IsFractionRing R₁ K
I : Submodule R₁ K
hI : I ≤ ↑0
⊢ FG I

tactic: rw [le_bot_iff.mp hI]
state_before: R : Type ?u.1744445
inst✝⁵ : CommRing R
S : Submonoid R
P : Type ?u.1744652
inst✝⁴ : CommRing P
inst✝³ : Algebra R P
loc : IsLocalization S P
R₁ : Type u_1
inst✝² : CommRing R₁
K : Type u_2
inst✝¹ : Field K
inst✝ : Algebra R₁ K
frac : IsFractionRing R₁ K
I : Submodule R₁ K
hI : I ≤ ⊥
⊢ FG I

tactic: exact fg_bot
state_before: R : Type ?u.1744445
inst✝⁵ : CommRing R
S : Submonoid R
P : Type ?u.1744652
inst✝⁴ : CommRing P
inst✝³ : Algebra R P
loc : IsLocalization S P
R₁ : Type u_1
inst✝² : CommRing R₁
K : Type u_2
inst✝¹ : Field K
inst✝ : Algebra R₁ K
frac : IsFractionRing R₁ K
I : Submodule R₁ K
hI : I ≤ ⊥
⊢ FG ⊥
Theorem: sdiff_compl
File: Mathlib/Order/BooleanAlgebra.lean

tactic: rw [sdiff_eq, compl_compl]
state_before: α : Type u
β : Type ?u.57101
w x y z : α
inst✝ : BooleanAlgebra α
⊢ x \ yᶜ = x ⊓ y
Theorem: List.kerase_cons_ne
File: Mathlib/Data/List/Sigma.lean

tactic: simp [kerase, h]
state_before: α : Type u
β : α → Type v
l✝ l₁ l₂ : List (Sigma β)
inst✝ : DecidableEq α
a : α
s : Sigma β
l : List (Sigma β)
h : a ≠ s.fst
⊢ kerase a (s :: l) = s :: kerase a l
Theorem: LinearMap.range_smul
File: Mathlib/LinearAlgebra/Basic.lean

tactic: simpa only [range_eq_map] using Submodule.map_smul f _ a h
state_before: R : Type ?u.1512475
R₁ : Type ?u.1512478
R₂ : Type ?u.1512481
R₃ : Type ?u.1512484
R₄ : Type ?u.1512487
S : Type ?u.1512490
K : Type u_1
K₂ : Type ?u.1512496
M : Type ?u.1512499
M' : Type ?u.1512502
M₁ : Type ?u.1512505
M₂ : Type ?u.1512508
M₃ : Type ?u.1512511
M₄ : Type ?u.1512514
N : Type ?u.1512517
N₂ : Type ?u.1512520
ι : Type ?u.1512523
V : Type u_2
V₂ : Type u_3
inst✝⁵ : Semifield K
inst✝⁴ : Semifield K₂
inst✝³ : AddCommMonoid V
inst✝² : Module K V
inst✝¹ : AddCommMonoid V₂
inst✝ : Module K V₂
f : V →ₗ[K] V₂
a : K
h : a ≠ 0
⊢ range (a • f) = range f
Theorem: Std.RBNode.toStream_toList
File: Std/Data/RBMap/Lemmas.lean

tactic: simp [toStream_toList']
state_before: α : Type u_1
t : RBNode α
⊢ Stream.toList (toStream t Stream.nil) = toList t
Theorem: NormOneClass.nontrivial
File: Mathlib/Analysis/Normed/Field/Basic.lean

tactic: simp
state_before: α✝ : Type ?u.4860
β : Type ?u.4863
γ : Type ?u.4866
ι : Type ?u.4869
α : Type u_1
inst✝² : SeminormedAddCommGroup α
inst✝¹ : One α
inst✝ : NormOneClass α
⊢ ‖0‖ ≠ ‖1‖
Theorem: CompleteLattice.sSup_continuous
File: Mathlib/Order/OmegaCompletePartialOrder.lean

tactic: intro c
state_before: α : Type u
β : Type v
inst✝¹ : OmegaCompletePartialOrder α
inst✝ : CompleteLattice β
s : Set (α →o β)
hs : ∀ (f : α →o β), f ∈ s → Continuous f
⊢ Continuous (sSup s)

tactic: apply eq_of_forall_ge_iff
state_before: α : Type u
β : Type v
inst✝¹ : OmegaCompletePartialOrder α
inst✝ : CompleteLattice β
s : Set (α →o β)
hs : ∀ (f : α →o β), f ∈ s → Continuous f
c : Chain α
⊢ ↑(sSup s) (ωSup c) = ωSup (Chain.map c (sSup s))

tactic: intro z
state_before: case H
α : Type u
β : Type v
inst✝¹ : OmegaCompletePartialOrder α
inst✝ : CompleteLattice β
s : Set (α →o β)
hs : ∀ (f : α →o β), f ∈ s → Continuous f
c : Chain α
⊢ ∀ (c_1 : β), ↑(sSup s) (ωSup c) ≤ c_1 ↔ ωSup (Chain.map c (sSup s)) ≤ c_1

tactic: suffices (∀ f ∈ s, ∀ (n), (f : _) (c n) ≤ z) ↔ ∀ (n), ∀ f ∈ s, (f : _) (c n) ≤ z by
  simpa (config := { contextual := true }) [ωSup_le_iff, hs _ _ _] using this
state_before: case H
α : Type u
β : Type v
inst✝¹ : OmegaCompletePartialOrder α
inst✝ : CompleteLattice β
s : Set (α →o β)
hs : ∀ (f : α →o β), f ∈ s → Continuous f
c : Chain α
z : β
⊢ ↑(sSup s) (ωSup c) ≤ z ↔ ωSup (Chain.map c (sSup s)) ≤ z

tactic: exact ⟨fun H n f hf => H f hf n, fun H f hf n => H n f hf⟩
state_before: case H
α : Type u
β : Type v
inst✝¹ : OmegaCompletePartialOrder α
inst✝ : CompleteLattice β
s : Set (α →o β)
hs : ∀ (f : α →o β), f ∈ s → Continuous f
c : Chain α
z : β
⊢ (∀ (f : α →o β), f ∈ s → ∀ (n : ℕ), ↑f (↑c n) ≤ z) ↔ ∀ (n : ℕ) (f : α →o β), f ∈ s → ↑f (↑c n) ≤ z

tactic: simpa (config := { contextual := true }) [ωSup_le_iff, hs _ _ _] using this
state_before: α : Type u
β : Type v
inst✝¹ : OmegaCompletePartialOrder α
inst✝ : CompleteLattice β
s : Set (α →o β)
hs : ∀ (f : α →o β), f ∈ s → Continuous f
c : Chain α
z : β
this : (∀ (f : α →o β), f ∈ s → ∀ (n : ℕ), ↑f (↑c n) ≤ z) ↔ ∀ (n : ℕ) (f : α →o β), f ∈ s → ↑f (↑c n) ≤ z
⊢ ↑(sSup s) (ωSup c) ≤ z ↔ ωSup (Chain.map c (sSup s)) ≤ z
Theorem: CompositionSeries.eq_of_bot_eq_bot_of_top_eq_top_of_length_eq_zero
File: Mathlib/Order/JordanHolder.lean

tactic: have : ∀ x, x ∈ s₁ ↔ x = s₁.top := fun x =>
  ⟨fun hx => forall_mem_eq_of_length_eq_zero hs₁0 hx s₁.top_mem, fun hx => hx.symm ▸ s₁.top_mem⟩
state_before: X : Type u
inst✝¹ : Lattice X
inst✝ : JordanHolderLattice X
s₁ s₂ : CompositionSeries X
hb : bot s₁ = bot s₂
ht : top s₁ = top s₂
hs₁0 : s₁.length = 0
⊢ s₁ = s₂

tactic: have : ∀ x, x ∈ s₂ ↔ x = s₂.top := fun x =>
  ⟨fun hx =>
    forall_mem_eq_of_length_eq_zero
      (length_eq_zero_of_bot_eq_bot_of_top_eq_top_of_length_eq_zero hb ht hs₁0) hx s₂.top_mem,
    fun hx => hx.symm ▸ s₂.top_mem⟩
state_before: X : Type u
inst✝¹ : Lattice X
inst✝ : JordanHolderLattice X
s₁ s₂ : CompositionSeries X
hb : bot s₁ = bot s₂
ht : top s₁ = top s₂
hs₁0 : s₁.length = 0
this : ∀ (x : X), x ∈ s₁ ↔ x = top s₁
⊢ s₁ = s₂

tactic: ext
state_before: X : Type u
inst✝¹ : Lattice X
inst✝ : JordanHolderLattice X
s₁ s₂ : CompositionSeries X
hb : bot s₁ = bot s₂
ht : top s₁ = top s₂
hs₁0 : s₁.length = 0
this✝ : ∀ (x : X), x ∈ s₁ ↔ x = top s₁
this : ∀ (x : X), x ∈ s₂ ↔ x = top s₂
⊢ s₁ = s₂

tactic: simp [*]
state_before: case h
X : Type u
inst✝¹ : Lattice X
inst✝ : JordanHolderLattice X
s₁ s₂ : CompositionSeries X
hb : bot s₁ = bot s₂
ht : top s₁ = top s₂
hs₁0 : s₁.length = 0
this✝ : ∀ (x : X), x ∈ s₁ ↔ x = top s₁
this : ∀ (x : X), x ∈ s₂ ↔ x = top s₂
x✝ : X
⊢ x✝ ∈ s₁ ↔ x✝ ∈ s₂
Theorem: Colex.colex_le_of_subset
File: Mathlib/Combinatorics/Colex.lean

tactic: rw [← sdiff_le_sdiff_iff_le, sdiff_eq_empty_iff_subset.2 h]
state_before: α : Type u_1
inst✝ : LinearOrder α
A B : Finset α
h : A ⊆ B
⊢ toColex A ≤ toColex B

tactic: apply empty_toColex_le
state_before: α : Type u_1
inst✝ : LinearOrder α
A B : Finset α
h : A ⊆ B
⊢ toColex ∅ ≤ toColex (B \ A)
Theorem: Derivation.map_algebraMap
File: Mathlib/RingTheory/Derivation/Basic.lean

tactic: rw [← mul_one r, RingHom.map_mul, RingHom.map_one, ← smul_def, map_smul, map_one_eq_zero,
  smul_zero]
state_before: R : Type u_3
inst✝⁵ : CommSemiring R
A : Type u_2
inst✝⁴ : CommSemiring A
inst✝³ : Algebra R A
M : Type u_1
inst✝² : AddCommMonoid M
inst✝¹ : Module A M
inst✝ : Module R M
D D1 D2 : Derivation R A M
r : R
a b : A
⊢ ↑D (↑(algebraMap R A) r) = 0
Theorem: Matrix.transpose_neg
File: Mathlib/Data/Matrix/Basic.lean

tactic: ext
state_before: l : Type ?u.928988
m : Type u_1
n : Type u_2
o : Type ?u.928997
m' : o → Type ?u.929002
n' : o → Type ?u.929007
R : Type ?u.929010
S : Type ?u.929013
α : Type v
β : Type w
γ : Type ?u.929020
inst✝ : Neg α
M : Matrix m n α
⊢ (-M)ᵀ = -Mᵀ

tactic: rfl
state_before: case a.h
l : Type ?u.928988
m : Type u_1
n : Type u_2
o : Type ?u.928997
m' : o → Type ?u.929002
n' : o → Type ?u.929007
R : Type ?u.929010
S : Type ?u.929013
α : Type v
β : Type w
γ : Type ?u.929020
inst✝ : Neg α
M : Matrix m n α
i✝ : n
x✝ : m
⊢ (-M)ᵀ i✝ x✝ = (-Mᵀ) i✝ x✝
Theorem: StrictConvexOn.translate_left
File: Mathlib/Analysis/Convex/Function.lean

tactic: simpa only [add_comm] using hf.translate_right c
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type ?u.716463
α : Type ?u.716466
β : Type u_3
ι : Type ?u.716472
inst✝⁴ : OrderedSemiring 𝕜
inst✝³ : AddCancelCommMonoid E
inst✝² : OrderedAddCommMonoid β
inst✝¹ : Module 𝕜 E
inst✝ : SMul 𝕜 β
s : Set E
f : E → β
hf : StrictConvexOn 𝕜 s f
c : E
⊢ StrictConvexOn 𝕜 ((fun z => c + z) ⁻¹' s) (f ∘ fun z => z + c)
Theorem: Real.rpow_lt_rpow_left_iff
File: Mathlib/Analysis/SpecialFunctions/Pow/Real.lean

tactic: rw [lt_iff_not_le, rpow_le_rpow_left_iff hx, lt_iff_not_le]
state_before: x y z : ℝ
hx : 1 < x
⊢ x ^ y < x ^ z ↔ y < z
Theorem: eq_iff_eq_cancel_right
File: Mathlib/Logic/Basic.lean

tactic: rw [h]
state_before: α : Sort u_1
a b : α
h : ∀ {c : α}, a = c ↔ b = c
⊢ a = b

tactic: rw [h]
state_before: α : Sort u_1
a✝ b : α
h : a✝ = b
a : α
⊢ a✝ = a ↔ b = a
Theorem: Cardinal.mk_list_eq_max_mk_aleph0
File: Mathlib/SetTheory/Cardinal/Ordinal.lean

tactic: cases finite_or_infinite α
state_before: α : Type u
inst✝ : Nonempty α
⊢ (#List α) = max (#α) ℵ₀

tactic: rw [mk_list_eq_aleph0, eq_comm, max_eq_right]
state_before: case inl
α : Type u
inst✝ : Nonempty α
h✝ : Finite α
⊢ (#List α) = max (#α) ℵ₀

tactic: exact mk_le_aleph0
state_before: case inl
α : Type u
inst✝ : Nonempty α
h✝ : Finite α
⊢ (#α) ≤ ℵ₀

tactic: rw [mk_list_eq_mk, eq_comm, max_eq_left]
state_before: case inr
α : Type u
inst✝ : Nonempty α
h✝ : Infinite α
⊢ (#List α) = max (#α) ℵ₀

tactic: exact aleph0_le_mk α
state_before: case inr
α : Type u
inst✝ : Nonempty α
h✝ : Infinite α
⊢ ℵ₀ ≤ (#α)
Theorem: Complex.frontier_setOf_le_im
File: Mathlib/Analysis/Complex/ReImTopology.lean

tactic: simpa only [frontier_Ici] using frontier_preimage_im (Ici a)
state_before: a : ℝ
⊢ frontier {z | a ≤ z.im} = {z | z.im = a}
Theorem: GromovHausdorff.HD_bound_aux1
File: Mathlib/Topology/MetricSpace/GromovHausdorffRealized.lean

tactic: rcases (Real.bounded_iff_bddBelow_bddAbove.1 f.bounded_range).2 with ⟨Cf, hCf⟩
state_before: X : Type u
Y : Type v
inst✝⁵ : MetricSpace X
inst✝⁴ : CompactSpace X
inst✝³ : Nonempty X
inst✝² : MetricSpace Y
inst✝¹ : CompactSpace Y
inst✝ : Nonempty Y
f✝ : GromovHausdorff.ProdSpaceFun X Y
x y z t : X ⊕ Y
f : GromovHausdorff.Cb X Y
C : ℝ
⊢ BddAbove (range fun x => ⨅ (y : Y), ↑f (inl x, inr y) + C)

tactic: refine' ⟨Cf + C, forall_range_iff.2 fun x => _⟩
state_before: case intro
X : Type u
Y : Type v
inst✝⁵ : MetricSpace X
inst✝⁴ : CompactSpace X
inst✝³ : Nonempty X
inst✝² : MetricSpace Y
inst✝¹ : CompactSpace Y
inst✝ : Nonempty Y
f✝ : GromovHausdorff.ProdSpaceFun X Y
x y z t : X ⊕ Y
f : GromovHausdorff.Cb X Y
C Cf : ℝ
hCf : Cf ∈ upperBounds (range ↑f)
⊢ BddAbove (range fun x => ⨅ (y : Y), ↑f (inl x, inr y) + C)

tactic: calc
  (⨅ y, f (inl x, inr y) + C) ≤ f (inl x, inr default) + C := ciInf_le (HD_below_aux1 C) default
  _ ≤ Cf + C := add_le_add ((fun x => hCf (mem_range_self x)) _) le_rfl
state_before: case intro
X : Type u
Y : Type v
inst✝⁵ : MetricSpace X
inst✝⁴ : CompactSpace X
inst✝³ : Nonempty X
inst✝² : MetricSpace Y
inst✝¹ : CompactSpace Y
inst✝ : Nonempty Y
f✝ : GromovHausdorff.ProdSpaceFun X Y
x✝ y z t : X ⊕ Y
f : GromovHausdorff.Cb X Y
C Cf : ℝ
hCf : Cf ∈ upperBounds (range ↑f)
x : X
⊢ (⨅ (y : Y), ↑f (inl x, inr y) + C) ≤ Cf + C
Theorem: WithBot.image_coe_Ici
File: Mathlib/Data/Set/Intervals/WithBotTop.lean

tactic: rw [← preimage_coe_Ici, image_preimage_eq_inter_range, range_coe,
  inter_eq_self_of_subset_left (Ici_subset_Ioi.2 <| bot_lt_coe a)]
state_before: α : Type u_1
inst✝ : PartialOrder α
a b : α
⊢ some '' Ici a = Ici ↑a
Theorem: Ordinal.isLimit_iff_omega_dvd
File: Mathlib/SetTheory/Ordinal/Arithmetic.lean

tactic: refine' ⟨fun l => ⟨l.1, ⟨a / ω, le_antisymm _ (mul_div_le _ _)⟩⟩, fun h => _⟩
state_before: a : Ordinal
⊢ IsLimit a ↔ a ≠ 0 ∧ ω ∣ a

tactic: refine' (limit_le l).2 fun x hx => le_of_lt _
state_before: case refine'_1
a : Ordinal
l : IsLimit a
⊢ a ≤ ω * (a / ω)

tactic: rw [← div_lt omega_ne_zero, ← succ_le_iff, le_div omega_ne_zero, mul_succ,
  add_le_of_limit omega_isLimit]
state_before: case refine'_1
a : Ordinal
l : IsLimit a
x : Ordinal
hx : x < a
⊢ x < ω * (a / ω)

tactic: intro b hb
state_before: case refine'_1
a : Ordinal
l : IsLimit a
x : Ordinal
hx : x < a
⊢ ∀ (b' : Ordinal), b' < ω → ω * (x / ω) + b' ≤ a

tactic: rcases lt_omega.1 hb with ⟨n, rfl⟩
state_before: case refine'_1
a : Ordinal
l : IsLimit a
x : Ordinal
hx : x < a
b : Ordinal
hb : b < ω
⊢ ω * (x / ω) + b ≤ a

tactic: exact
  (add_le_add_right (mul_div_le _ _) _).trans
    (lt_sub.1 <| nat_lt_limit (sub_isLimit l hx) _).le
state_before: case refine'_1.intro
a : Ordinal
l : IsLimit a
x : Ordinal
hx : x < a
n : ℕ
hb : ↑n < ω
⊢ ω * (x / ω) + ↑n ≤ a

tactic: rcases h with ⟨a0, b, rfl⟩
state_before: case refine'_2
a : Ordinal
h : a ≠ 0 ∧ ω ∣ a
⊢ IsLimit a

tactic: refine' mul_isLimit_left omega_isLimit (Ordinal.pos_iff_ne_zero.2 <| mt _ a0)
state_before: case refine'_2.intro.intro
b : Ordinal
a0 : ω * b ≠ 0
⊢ IsLimit (ω * b)

tactic: intro e
state_before: case refine'_2.intro.intro
b : Ordinal
a0 : ω * b ≠ 0
⊢ b = 0 → ω * b = 0

tactic: simp only [e, mul_zero]
state_before: case refine'_2.intro.intro
b : Ordinal
a0 : ω * b ≠ 0
e : b = 0
⊢ ω * b = 0