Loogle!
Result
Found 159 declarations mentioning Ordinal.omega0.
- Ordinal.omega0 π Mathlib.SetTheory.Ordinal.Basic
: Ordinal.{u} - Cardinal.ord_aleph0 π Mathlib.SetTheory.Ordinal.Basic
: Cardinal.aleph0.ord = Ordinal.omega0 - Ordinal.card_omega0 π Mathlib.SetTheory.Ordinal.Basic
: Ordinal.omega0.card = Cardinal.aleph0 - Ordinal.lift_omega0 π Mathlib.SetTheory.Ordinal.Basic
: Ordinal.lift.{u_1, u_2} Ordinal.omega0 = Ordinal.omega0 - Cardinal.ord_eq_omega0 π Mathlib.SetTheory.Ordinal.Basic
{a : Cardinal.{u_1}} : a.ord = Ordinal.omega0 β a = Cardinal.aleph0 - Ordinal.finite_toType_of_lt_omega0 π Mathlib.SetTheory.Ordinal.Basic
{o : Ordinal.{u_1}} (h : o < Ordinal.omega0) : Finite o.ToType - Cardinal.omega0_le_ord π Mathlib.SetTheory.Ordinal.Basic
{a : Cardinal.{u_1}} : Ordinal.omega0 β€ a.ord β Cardinal.aleph0 β€ a - Cardinal.ord_le_omega0 π Mathlib.SetTheory.Ordinal.Basic
{a : Cardinal.{u_1}} : a.ord β€ Ordinal.omega0 β a β€ Cardinal.aleph0 - Ordinal.aleph0_le_card π Mathlib.SetTheory.Ordinal.Basic
{o : Ordinal.{u_1}} : Cardinal.aleph0 β€ o.card β Ordinal.omega0 β€ o - Ordinal.finite_Iio_of_lt_omega0 π Mathlib.SetTheory.Ordinal.Basic
{o : Ordinal.{u_1}} (h : o < Ordinal.omega0) : (Set.Iio o).Finite - Cardinal.omega0_lt_ord π Mathlib.SetTheory.Ordinal.Basic
{a : Cardinal.{u_1}} : Ordinal.omega0 < a.ord β Cardinal.aleph0 < a - Cardinal.ord_lt_omega0 π Mathlib.SetTheory.Ordinal.Basic
{a : Cardinal.{u_1}} : a.ord < Ordinal.omega0 β a < Cardinal.aleph0 - Ordinal.card_lt_aleph0 π Mathlib.SetTheory.Ordinal.Basic
{o : Ordinal.{u_1}} : o.card < Cardinal.aleph0 β o < Ordinal.omega0 - Ordinal.type_nat_lt π Mathlib.SetTheory.Ordinal.Basic
: (Ordinal.type fun x1 x2 => x1 < x2) = Ordinal.omega0 - Ordinal.isSuccLimit_omega0 π Mathlib.SetTheory.Ordinal.Arithmetic
: Order.IsSuccLimit Ordinal.omega0 - Ordinal.omega0_ne_zero π Mathlib.SetTheory.Ordinal.Arithmetic
: Ordinal.omega0 β 0 - Ordinal.omega0_pos π Mathlib.SetTheory.Ordinal.Arithmetic
: 0 < Ordinal.omega0 - Ordinal.one_lt_omega0 π Mathlib.SetTheory.Ordinal.Arithmetic
: 1 < Ordinal.omega0 - Ordinal.natCast_lt_omega0 π Mathlib.SetTheory.Ordinal.Arithmetic
(n : β) : βn < Ordinal.omega0 - Ordinal.nat_lt_omega0 π Mathlib.SetTheory.Ordinal.Arithmetic
(n : β) : βn < Ordinal.omega0 - Ordinal.omega0_le_of_isSuccLimit π Mathlib.SetTheory.Ordinal.Arithmetic
{o : Ordinal.{u_4}} (h : Order.IsSuccLimit o) : Ordinal.omega0 β€ o - Ordinal.one_add_omega0 π Mathlib.SetTheory.Ordinal.Arithmetic
: 1 + Ordinal.omega0 = Ordinal.omega0 - Ordinal.natCast_add_omega0 π Mathlib.SetTheory.Ordinal.Arithmetic
(n : β) : βn + Ordinal.omega0 = Ordinal.omega0 - Ordinal.isSuccPrelimit_iff_omega0_dvd π Mathlib.SetTheory.Ordinal.Arithmetic
{a : Ordinal.{u_4}} : Order.IsSuccPrelimit a β Ordinal.omega0 β£ a - Ordinal.add_omega0 π Mathlib.SetTheory.Ordinal.Arithmetic
{a : Ordinal.{u_4}} (h : a < Ordinal.omega0) : a + Ordinal.omega0 = Ordinal.omega0 - Ordinal.eq_natCast_or_omega0_le π Mathlib.SetTheory.Ordinal.Arithmetic
(o : Ordinal.{u_4}) : (β n, o = βn) β¨ Ordinal.omega0 β€ o - Ordinal.eq_nat_or_omega0_le π Mathlib.SetTheory.Ordinal.Arithmetic
(o : Ordinal.{u_4}) : (β n, o = βn) β¨ Ordinal.omega0 β€ o - Ordinal.lt_omega0 π Mathlib.SetTheory.Ordinal.Arithmetic
{o : Ordinal.{u_4}} : o < Ordinal.omega0 β β n, o = βn - Ordinal.natCast_mod_omega0 π Mathlib.SetTheory.Ordinal.Arithmetic
(n : β) : βn % Ordinal.omega0 = βn - Ordinal.omega0_le π Mathlib.SetTheory.Ordinal.Arithmetic
{o : Ordinal.{u_4}} : Ordinal.omega0 β€ o β β (n : β), βn β€ o - Ordinal.one_add_of_omega0_le π Mathlib.SetTheory.Ordinal.Arithmetic
{o : Ordinal.{u_4}} (h : Ordinal.omega0 β€ o) : 1 + o = o - Ordinal.natCast_add_of_omega0_le π Mathlib.SetTheory.Ordinal.Arithmetic
{o : Ordinal.{u_4}} (h : Ordinal.omega0 β€ o) (n : β) : βn + o = o - Ordinal.iSup_natCast π Mathlib.SetTheory.Ordinal.Family
: iSup Nat.cast = Ordinal.omega0 - Ordinal.apply_omega0_of_isNormal π Mathlib.SetTheory.Ordinal.Family
{f : Ordinal.{u} β Ordinal.{v}} (hf : Order.IsNormal f) : β¨ n, f βn = f Ordinal.omega0 - Ordinal.iSup_add_natCast π Mathlib.SetTheory.Ordinal.Family
(o : Ordinal.{u_1}) : β¨ n, o + βn = o + Ordinal.omega0 - Ordinal.iSup_mul_natCast π Mathlib.SetTheory.Ordinal.Family
(o : Ordinal.{u_1}) : β¨ n, o * βn = o * Ordinal.omega0 - Ordinal.sub_omega0_opow_log_lt π Mathlib.SetTheory.Ordinal.Exponential
{a : Ordinal.{u_1}} (ha : a β 0) : a - Ordinal.omega0 ^ Ordinal.log Ordinal.omega0 a < a - Ordinal.iSup_pow_natCast π Mathlib.SetTheory.Ordinal.Exponential
{o : Ordinal.{u_1}} (ho : 0 < o) : β¨ n, o ^ n = o ^ Ordinal.omega0 - Ordinal.omega0_opow_mul_nat_lt π Mathlib.SetTheory.Ordinal.Exponential
{a b : Ordinal.{u_1}} (h : a < b) (n : β) : Ordinal.omega0 ^ a * βn < Ordinal.omega0 ^ b - Ordinal.lt_omega0_opow_succ π Mathlib.SetTheory.Ordinal.Exponential
{a b : Ordinal.{u_1}} : a < Ordinal.omega0 ^ Order.succ b β β n, a < Ordinal.omega0 ^ b * βn - Ordinal.lt_omega0_opow π Mathlib.SetTheory.Ordinal.Exponential
{a b : Ordinal.{u_1}} (hb : b β 0) : a < Ordinal.omega0 ^ b β β c < b, β n, a < Ordinal.omega0 ^ c * βn - Ordinal.lt_omega0_omega0_opow π Mathlib.SetTheory.Ordinal.Exponential
{a b : Ordinal.{u_1}} (hb : b β 0) : a < Ordinal.omega0 ^ Ordinal.omega0 ^ b β β c < b, β n, a < Ordinal.omega0 ^ (Ordinal.omega0 ^ c * βn) - Ordinal.nfp_add_zero π Mathlib.SetTheory.Ordinal.FixedPoint
(a : Ordinal.{u_1}) : Ordinal.nfp (fun x => a + x) 0 = a * Ordinal.omega0 - Ordinal.add_eq_right_iff_mul_omega0_le π Mathlib.SetTheory.Ordinal.FixedPoint
{a b : Ordinal.{u_1}} : a + b = b β a * Ordinal.omega0 β€ b - Ordinal.deriv_add_eq_mul_omega0_add π Mathlib.SetTheory.Ordinal.FixedPoint
(a b : Ordinal.{u}) : Ordinal.deriv (fun x => a + x) b = a * Ordinal.omega0 + b - Ordinal.mul_eq_right_iff_opow_omega0_dvd π Mathlib.SetTheory.Ordinal.FixedPoint
{a b : Ordinal.{u_1}} : a * b = b β a ^ Ordinal.omega0 β£ b - Ordinal.add_le_right_iff_mul_omega0_le π Mathlib.SetTheory.Ordinal.FixedPoint
{a b : Ordinal.{u_1}} : a + b β€ b β a * Ordinal.omega0 β€ b - Ordinal.eq_zero_or_opow_omega0_le_of_mul_eq_right π Mathlib.SetTheory.Ordinal.FixedPoint
{a b : Ordinal.{u_1}} (hab : a * b = b) : b = 0 β¨ a ^ Ordinal.omega0 β€ b - Ordinal.nfp_mul_one π Mathlib.SetTheory.Ordinal.FixedPoint
{a : Ordinal.{u_1}} (ha : 0 < a) : Ordinal.nfp (fun x => a * x) 1 = a ^ Ordinal.omega0 - Ordinal.nfp_add_eq_mul_omega0 π Mathlib.SetTheory.Ordinal.FixedPoint
{a b : Ordinal.{u_1}} (hba : b β€ a * Ordinal.omega0) : Ordinal.nfp (fun x => a + x) b = a * Ordinal.omega0 - Ordinal.deriv_mul_eq_opow_omega0_mul π Mathlib.SetTheory.Ordinal.FixedPoint
{a : Ordinal.{u}} (ha : 0 < a) (b : Ordinal.{u}) : Ordinal.deriv (fun x => a * x) b = a ^ Ordinal.omega0 * b - Ordinal.mul_le_right_iff_opow_omega0_dvd π Mathlib.SetTheory.Ordinal.FixedPoint
{a b : Ordinal.{u_1}} (ha : 0 < a) : a * b β€ b β a ^ Ordinal.omega0 β£ b - Ordinal.nfp_mul_eq_opow_omega0 π Mathlib.SetTheory.Ordinal.FixedPoint
{a b : Ordinal.{u_1}} (hb : 0 < b) (hba : b β€ a ^ Ordinal.omega0) : Ordinal.nfp (fun x => a * x) b = a ^ Ordinal.omega0 - Ordinal.nfp_mul_opow_omega0_add π Mathlib.SetTheory.Ordinal.FixedPoint
{a c : Ordinal.{u_1}} (b : Ordinal.{u_1}) (ha : 0 < a) (hc : 0 < c) (hca : c β€ a ^ Ordinal.omega0) : Ordinal.nfp (fun x => a * x) (a ^ Ordinal.omega0 * b + c) = a ^ Ordinal.omega0 * Order.succ b - Ordinal.isPrincipal_add_omega0 π Mathlib.SetTheory.Ordinal.Principal
: Ordinal.IsPrincipal (fun x1 x2 => x1 + x2) Ordinal.omega0 - Ordinal.principal_add_omega0 π Mathlib.SetTheory.Ordinal.Principal
: Ordinal.IsPrincipal (fun x1 x2 => x1 + x2) Ordinal.omega0 - Ordinal.isPrincipal_opow_omega0 π Mathlib.SetTheory.Ordinal.Principal
: Ordinal.IsPrincipal (fun x1 x2 => x1 ^ x2) Ordinal.omega0 - Ordinal.principal_opow_omega0 π Mathlib.SetTheory.Ordinal.Principal
: Ordinal.IsPrincipal (fun x1 x2 => x1 ^ x2) Ordinal.omega0 - Ordinal.isPrincipal_mul_omega0 π Mathlib.SetTheory.Ordinal.Principal
: Ordinal.IsPrincipal (fun x1 x2 => x1 * x2) Ordinal.omega0 - Ordinal.principal_mul_omega0 π Mathlib.SetTheory.Ordinal.Principal
: Ordinal.IsPrincipal (fun x1 x2 => x1 * x2) Ordinal.omega0 - Ordinal.isPrincipal_add_omega0_opow π Mathlib.SetTheory.Ordinal.Principal
(o : Ordinal.{u_1}) : Ordinal.IsPrincipal (fun x1 x2 => x1 + x2) (Ordinal.omega0 ^ o) - Ordinal.principal_add_omega0_opow π Mathlib.SetTheory.Ordinal.Principal
(o : Ordinal.{u_1}) : Ordinal.IsPrincipal (fun x1 x2 => x1 + x2) (Ordinal.omega0 ^ o) - Ordinal.natCast_opow_omega0 π Mathlib.SetTheory.Ordinal.Principal
{n : β} (hn : 1 < n) : βn ^ Ordinal.omega0 = Ordinal.omega0 - Ordinal.add_of_omega0_le π Mathlib.SetTheory.Ordinal.Principal
{a b : Ordinal.{u}} : a < Ordinal.omega0 β Ordinal.omega0 β€ b β a + b = b - Ordinal.natCast_mul_omega0 π Mathlib.SetTheory.Ordinal.Principal
{n : β} (hn : 0 < n) : βn * Ordinal.omega0 = Ordinal.omega0 - Ordinal.opow_omega0 π Mathlib.SetTheory.Ordinal.Principal
{a : Ordinal.{u}} (a1 : 1 < a) (h : a < Ordinal.omega0) : a ^ Ordinal.omega0 = Ordinal.omega0 - Ordinal.isPrincipal_mul_omega0_opow_opow π Mathlib.SetTheory.Ordinal.Principal
(o : Ordinal.{u_1}) : Ordinal.IsPrincipal (fun x1 x2 => x1 * x2) (Ordinal.omega0 ^ Ordinal.omega0 ^ o) - Ordinal.principal_mul_omega0_opow_opow π Mathlib.SetTheory.Ordinal.Principal
(o : Ordinal.{u_1}) : Ordinal.IsPrincipal (fun x1 x2 => x1 * x2) (Ordinal.omega0 ^ Ordinal.omega0 ^ o) - Ordinal.mul_omega0 π Mathlib.SetTheory.Ordinal.Principal
{a : Ordinal.{u}} (a0 : 0 < a) (ha : a < Ordinal.omega0) : a * Ordinal.omega0 = Ordinal.omega0 - Ordinal.isPrincipal_add_iff_zero_or_omega0_opow π Mathlib.SetTheory.Ordinal.Principal
{o : Ordinal.{u}} : Ordinal.IsPrincipal (fun x1 x2 => x1 + x2) o β o = 0 β¨ o β Set.range fun x => Ordinal.omega0 ^ x - Ordinal.principal_add_iff_zero_or_omega0_opow π Mathlib.SetTheory.Ordinal.Principal
{o : Ordinal.{u}} : Ordinal.IsPrincipal (fun x1 x2 => x1 + x2) o β o = 0 β¨ o β Set.range fun x => Ordinal.omega0 ^ x - Ordinal.isLeast_sub_lt_omega0_opow_log π Mathlib.SetTheory.Ordinal.Principal
{a : Ordinal.{u}} (h : a β 0) : IsLeast {b | a - b < a} (Ordinal.omega0 ^ Ordinal.log Ordinal.omega0 a) - Ordinal.add_omega0_opow π Mathlib.SetTheory.Ordinal.Principal
{a b : Ordinal.{u}} (h : a < Ordinal.omega0 ^ b) : a + Ordinal.omega0 ^ b = Ordinal.omega0 ^ b - Ordinal.add_absorp π Mathlib.SetTheory.Ordinal.Principal
{a b c : Ordinal.{u}} (hβ : a < Ordinal.omega0 ^ b) (hβ : Ordinal.omega0 ^ b β€ c) : a + c = c - Ordinal.add_of_omega0_opow_le π Mathlib.SetTheory.Ordinal.Principal
{a b c : Ordinal.{u}} (hβ : a < Ordinal.omega0 ^ b) (hβ : Ordinal.omega0 ^ b β€ c) : a + c = c - Ordinal.mul_omega0_dvd π Mathlib.SetTheory.Ordinal.Principal
{a : Ordinal.{u}} (a0 : 0 < a) (ha : a < Ordinal.omega0) {b : Ordinal.{u}} : Ordinal.omega0 β£ b β a * b = b - Ordinal.mul_lt_omega0_opow π Mathlib.SetTheory.Ordinal.Principal
{a b c : Ordinal.{u}} (c0 : 0 < c) (ha : a < Ordinal.omega0 ^ c) (hb : b < Ordinal.omega0) : a * b < Ordinal.omega0 ^ c - Ordinal.isPrincipal_mul_iff_le_two_or_omega0_opow_opow π Mathlib.SetTheory.Ordinal.Principal
{o : Ordinal.{u}} : Ordinal.IsPrincipal (fun x1 x2 => x1 * x2) o β o β€ 2 β¨ o β Set.range fun x => Ordinal.omega0 ^ Ordinal.omega0 ^ x - Ordinal.principal_mul_iff_le_two_or_omega0_opow_opow π Mathlib.SetTheory.Ordinal.Principal
{o : Ordinal.{u}} : Ordinal.IsPrincipal (fun x1 x2 => x1 * x2) o β o β€ 2 β¨ o β Set.range fun x => Ordinal.omega0 ^ Ordinal.omega0 ^ x - Ordinal.mul_omega0_opow_opow π Mathlib.SetTheory.Ordinal.Principal
{a b : Ordinal.{u}} (a0 : 0 < a) (h : a < Ordinal.omega0 ^ Ordinal.omega0 ^ b) : a * Ordinal.omega0 ^ Ordinal.omega0 ^ b = Ordinal.omega0 ^ Ordinal.omega0 ^ b - Ordinal.isInitial_omega0 π Mathlib.SetTheory.Cardinal.Aleph
: Ordinal.omega0.IsInitial - Cardinal.preBeth_omega π Mathlib.SetTheory.Cardinal.Aleph
: Cardinal.preBeth Ordinal.omega0 = Cardinal.aleph0 - Cardinal.beth_eq_preBeth π Mathlib.SetTheory.Cardinal.Aleph
(o : Ordinal.{u_1}) : Cardinal.beth o = Cardinal.preBeth (Ordinal.omega0 + o) - Ordinal.isInitial_succ π Mathlib.SetTheory.Cardinal.Aleph
{o : Ordinal.{u_1}} : (Order.succ o).IsInitial β o < Ordinal.omega0 - Cardinal.preAleph_omega0 π Mathlib.SetTheory.Cardinal.Aleph
: Cardinal.preAleph Ordinal.omega0 = Cardinal.aleph0 - Cardinal.preBeth_of_omega0_sq_le π Mathlib.SetTheory.Cardinal.Aleph
{o : Ordinal.{u_1}} (ho : Ordinal.omega0 ^ 2 β€ o) : Cardinal.preBeth o = Cardinal.beth o - Ordinal.preOmega_omega0 π Mathlib.SetTheory.Cardinal.Aleph
: Ordinal.preOmega Ordinal.omega0 = Ordinal.omega0 - Cardinal.preAleph_symm_aleph0 π Mathlib.SetTheory.Cardinal.Aleph
: Cardinal.preAleph.symm Cardinal.aleph0 = Ordinal.omega0 - Cardinal.aleph0_le_preAleph π Mathlib.SetTheory.Cardinal.Aleph
{o : Ordinal.{u_1}} : Cardinal.aleph0 β€ Cardinal.preAleph o β Ordinal.omega0 β€ o - Ordinal.omega_zero π Mathlib.SetTheory.Cardinal.Aleph
: Ordinal.omega 0 = Ordinal.omega0 - Ordinal.omega0_le_omega π Mathlib.SetTheory.Cardinal.Aleph
(o : Ordinal.{u_1}) : Ordinal.omega0 β€ Ordinal.omega o - Ordinal.omega0_lt_omega_one π Mathlib.SetTheory.Cardinal.Aleph
: Ordinal.omega0 < Ordinal.omega 1 - Ordinal.omega0_le_preOmega_iff π Mathlib.SetTheory.Cardinal.Aleph
{x : Ordinal.{u_1}} : Ordinal.omega0 β€ Ordinal.preOmega x β Ordinal.omega0 β€ x - Ordinal.omega0_lt_preOmega_iff π Mathlib.SetTheory.Cardinal.Aleph
{x : Ordinal.{u_1}} : Ordinal.omega0 < Ordinal.preOmega x β Ordinal.omega0 < x - Ordinal.range_omega π Mathlib.SetTheory.Cardinal.Aleph
: Set.range βOrdinal.omega = {x | Ordinal.omega0 β€ x β§ x.IsInitial} - Ordinal.mem_range_omega_iff π Mathlib.SetTheory.Cardinal.Aleph
{x : Ordinal.{u_1}} : x β Set.range βOrdinal.omega β Ordinal.omega0 β€ x β§ x.IsInitial - Cardinal.aleph_eq_preAleph π Mathlib.SetTheory.Cardinal.Aleph
(o : Ordinal.{u_1}) : Cardinal.aleph o = Cardinal.preAleph (Ordinal.omega0 + o) - Cardinal.preAleph_symm_aleph π Mathlib.SetTheory.Cardinal.Aleph
(o : Ordinal.{u_1}) : Cardinal.preAleph.symm (Cardinal.aleph o) = Ordinal.omega0 + o - Ordinal.omega_eq_preOmega π Mathlib.SetTheory.Cardinal.Aleph
(o : Ordinal.{u_1}) : Ordinal.omega o = Ordinal.preOmega (Ordinal.omega0 + o) - Cardinal.preAleph_of_omega0_sq_le π Mathlib.SetTheory.Cardinal.Aleph
{o : Ordinal.{u_1}} (ho : Ordinal.omega0 ^ 2 β€ o) : Cardinal.preAleph o = Cardinal.aleph o - Ordinal.preOmega_of_omega0_sq_le π Mathlib.SetTheory.Cardinal.Aleph
{o : Ordinal.{u_1}} (ho : Ordinal.omega0 ^ 2 β€ o) : Ordinal.preOmega o = Ordinal.omega o - Ordinal.cof_omega0 π Mathlib.SetTheory.Cardinal.Cofinality.Ordinal
: Ordinal.omega0.cof = Cardinal.aleph0 - Ordinal.IsInitial.isPrincipal_add π Mathlib.SetTheory.Cardinal.Ordinal
{o : Ordinal.{u_1}} (h : o.IsInitial) (ho : Ordinal.omega0 β€ o) : Ordinal.IsPrincipal (fun x1 x2 => x1 + x2) o - Ordinal.IsInitial.principal_add π Mathlib.SetTheory.Cardinal.Ordinal
{o : Ordinal.{u_1}} (h : o.IsInitial) (ho : Ordinal.omega0 β€ o) : Ordinal.IsPrincipal (fun x1 x2 => x1 + x2) o - Ordinal.IsInitial.isPrincipal_opow π Mathlib.SetTheory.Cardinal.Ordinal
{o : Ordinal.{u_1}} (h : o.IsInitial) (ho : Ordinal.omega0 β€ o) : Ordinal.IsPrincipal (fun x1 x2 => x1 ^ x2) o - Ordinal.IsInitial.principal_opow π Mathlib.SetTheory.Cardinal.Ordinal
{o : Ordinal.{u_1}} (h : o.IsInitial) (ho : Ordinal.omega0 β€ o) : Ordinal.IsPrincipal (fun x1 x2 => x1 ^ x2) o - Ordinal.IsInitial.isPrincipal_mul π Mathlib.SetTheory.Cardinal.Ordinal
{o : Ordinal.{u_1}} (h : o.IsInitial) (ho : Ordinal.omega0 β€ o) : Ordinal.IsPrincipal (fun x1 x2 => x1 * x2) o - Ordinal.IsInitial.principal_mul π Mathlib.SetTheory.Cardinal.Ordinal
{o : Ordinal.{u_1}} (h : o.IsInitial) (ho : Ordinal.omega0 β€ o) : Ordinal.IsPrincipal (fun x1 x2 => x1 * x2) o - Ordinal.card_omega0_opow π Mathlib.SetTheory.Cardinal.Ordinal
{a : Ordinal.{u_1}} (h : a β 0) : (Ordinal.omega0 ^ a).card = max Cardinal.aleph0 a.card - Ordinal.card_opow_le_of_omega0_le_left π Mathlib.SetTheory.Cardinal.Ordinal
{a : Ordinal.{u_1}} (ha : Ordinal.omega0 β€ a) (b : Ordinal.{u_1}) : (a ^ b).card β€ max a.card b.card - Ordinal.card_opow_le_of_omega0_le_right π Mathlib.SetTheory.Cardinal.Ordinal
(a : Ordinal.{u_1}) {b : Ordinal.{u_1}} (hb : Ordinal.omega0 β€ b) : (a ^ b).card β€ max a.card b.card - Ordinal.card_opow_omega0 π Mathlib.SetTheory.Cardinal.Ordinal
{a : Ordinal.{u_1}} (h : 1 < a) : (a ^ Ordinal.omega0).card = max Cardinal.aleph0 a.card - Ordinal.card_opow_eq_of_omega0_le_left π Mathlib.SetTheory.Cardinal.Ordinal
{a b : Ordinal.{u_1}} (ha : Ordinal.omega0 β€ a) (hb : 0 < b) : (a ^ b).card = max a.card b.card - Ordinal.card_opow_eq_of_omega0_le_right π Mathlib.SetTheory.Cardinal.Ordinal
{a b : Ordinal.{u_1}} (ha : 1 < a) (hb : Ordinal.omega0 β€ b) : (a ^ b).card = max a.card b.card - Cardinal.isSingular_aleph_omega0 π Mathlib.SetTheory.Cardinal.Regular
: (Cardinal.aleph Ordinal.omega0).IsSingular - Cardinal.IsSingular.aleph_omega0_le π Mathlib.SetTheory.Cardinal.Regular
{c : Cardinal.{u_1}} (hc : c.IsSingular) : Cardinal.aleph Ordinal.omega0 β€ c - Cardinal.isRegular_preAleph_succ π Mathlib.SetTheory.Cardinal.Regular
{o : Ordinal.{u_1}} (h : Ordinal.omega0 β€ o) : (Cardinal.preAleph (Order.succ o)).IsRegular - Cardinal.isRegular_preAleph_add_one π Mathlib.SetTheory.Cardinal.Regular
{o : Ordinal.{u_1}} (h : Ordinal.omega0 β€ o) : (Cardinal.preAleph (o + 1)).IsRegular - Cardinal.cof_preOmega_add_one π Mathlib.SetTheory.Cardinal.Regular
{o : Ordinal.{u_1}} (h : Ordinal.omega0 β€ o) : (Ordinal.preOmega (o + 1)).cof = Cardinal.preAleph (o + 1) - ONote.NFBelow.repr_lt π Mathlib.SetTheory.Ordinal.Notation
{o : ONote} {b : Ordinal.{0}} (h : o.NFBelow b) : o.repr < Ordinal.omega0 ^ b - ONote.omega0_le_oadd π Mathlib.SetTheory.Ordinal.Notation
(e : ONote) (n : β+) (a : ONote) : Ordinal.omega0 ^ e.repr β€ (e.oadd n a).repr - ONote.NF.below_of_lt' π Mathlib.SetTheory.Ordinal.Notation
{o : ONote} {b : Ordinal.{0}} : o.repr < Ordinal.omega0 ^ b β o.NF β o.NFBelow b - ONote.split_dvd π Mathlib.SetTheory.Ordinal.Notation
{o o' : ONote} {m : β} [o.NF] (h : o.split = (o', m)) : Ordinal.omega0 β£ o'.repr - ONote.repr_scale π Mathlib.SetTheory.Ordinal.Notation
(x : ONote) [x.NF] (o : ONote) [o.NF] : (x.scale o).repr = Ordinal.omega0 ^ x.repr * o.repr - ONote.NF.of_dvd_omega0 π Mathlib.SetTheory.Ordinal.Notation
{e : ONote} {n : β+} {a : ONote} (h : (e.oadd n a).NF) : Ordinal.omega0 β£ (e.oadd n a).repr β e.repr β 0 β§ Ordinal.omega0 β£ a.repr - ONote.nf_repr_split' π Mathlib.SetTheory.Ordinal.Notation
{o o' : ONote} {m : β} [o.NF] : o.split' = (o', m) β o'.NF β§ o.repr = Ordinal.omega0 * o'.repr + βm - ONote.split_add_lt π Mathlib.SetTheory.Ordinal.Notation
{o e : ONote} {n : β+} {a : ONote} {m : β} [o.NF] (h : o.split = (e.oadd n a, m)) : a.repr + βm < Ordinal.omega0 ^ e.repr - ONote.scale_opowAux π Mathlib.SetTheory.Ordinal.Notation
(e a0 a : ONote) [e.NF] [a0.NF] [a.NF] (k m : β) : (e.opowAux a0 a k m).repr = Ordinal.omega0 ^ e.repr * (ONote.opowAux 0 a0 a k m).repr - ONote.NF.of_dvd_omega0_opow π Mathlib.SetTheory.Ordinal.Notation
{b : Ordinal.{0}} {e : ONote} {n : β+} {a : ONote} (h : (e.oadd n a).NF) (d : Ordinal.omega0 ^ b β£ (e.oadd n a).repr) : b β€ e.repr β§ Ordinal.omega0 ^ b β£ a.repr - ONote.repr_opow_auxβ π Mathlib.SetTheory.Ordinal.Notation
{e a : ONote} [Ne : e.NF] [Na : a.NF] {a' : Ordinal.{0}} (e0 : e.repr β 0) (h : a' < Ordinal.omega0 ^ e.repr) (aa : a.repr = a') (n : β+) : (Ordinal.omega0 ^ e.repr * ββn + a') ^ Ordinal.omega0 = (Ordinal.omega0 ^ e.repr) ^ Ordinal.omega0 - ONote.repr_opow_auxβ π Mathlib.SetTheory.Ordinal.Notation
{a0 a' : ONote} [N0 : a0.NF] [Na' : a'.NF] (m : β) (d : Ordinal.omega0 β£ a'.repr) (e0 : a0.repr β 0) (h : a'.repr + βm < Ordinal.omega0 ^ a0.repr) (n : β+) (k : β) : have R := (ONote.opowAux 0 a0 (a0.oadd n a' * βm) k m).repr; (k β 0 β R < (Ordinal.omega0 ^ a0.repr) ^ Order.succ βk) β§ (Ordinal.omega0 ^ a0.repr) ^ βk * (Ordinal.omega0 ^ a0.repr * ββn + a'.repr) + R = (Ordinal.omega0 ^ a0.repr * ββn + a'.repr + βm) ^ Order.succ βk - Ordinal.omega0_lt_epsilon π Mathlib.SetTheory.Ordinal.Veblen
(o : Ordinal.{u_1}) : Ordinal.omega0 < o.epsilon - Ordinal.omega0_lt_gamma π Mathlib.SetTheory.Ordinal.Veblen
(o : Ordinal.{u_1}) : Ordinal.omega0 < o.gamma - Ordinal.omega0_opow_epsilon π Mathlib.SetTheory.Ordinal.Veblen
(o : Ordinal.{u_1}) : Ordinal.omega0 ^ o.epsilon = o.epsilon - Ordinal.epsilon_eq_deriv π Mathlib.SetTheory.Ordinal.Veblen
(o : Ordinal.{u_1}) : o.epsilon = Ordinal.deriv (fun a => Ordinal.omega0 ^ a) o - Ordinal.veblen_invVeblenβ_invVeblenβ π Mathlib.SetTheory.Ordinal.Veblen
(x : Ordinal.{u_1}) : Ordinal.veblen x.invVeblenβ x.invVeblenβ = Ordinal.omega0 ^ x - Ordinal.invVeblenβ_lt π Mathlib.SetTheory.Ordinal.Veblen
(x : Ordinal.{u_1}) : x.invVeblenβ < Ordinal.omega0 ^ x - Ordinal.veblen_zero π Mathlib.SetTheory.Ordinal.Veblen
: Ordinal.veblen 0 = fun a => Ordinal.omega0 ^ a - Ordinal.veblen_zero_apply π Mathlib.SetTheory.Ordinal.Veblen
(a : Ordinal.{u_1}) : Ordinal.veblen 0 a = Ordinal.omega0 ^ a - Ordinal.omega0_le_veblen_of_left_ne_zero π Mathlib.SetTheory.Ordinal.Veblen
{a : Ordinal.{u_1}} (b : Ordinal.{u_1}) (ha : a β 0) : Ordinal.omega0 β€ Ordinal.veblen a b - Ordinal.omega0_le_veblen_of_right_ne_zero π Mathlib.SetTheory.Ordinal.Veblen
(a : Ordinal.{u_1}) {b : Ordinal.{u_1}} (hb : b β 0) : Ordinal.omega0 β€ Ordinal.veblen a b - Ordinal.invVeblenβ_eq_iff π Mathlib.SetTheory.Ordinal.Veblen
{a x : Ordinal.{u}} : x.invVeblenβ = a β Ordinal.omega0 ^ x = Ordinal.veblen x.invVeblenβ a - Ordinal.invVeblenβ_of_lt_opow π Mathlib.SetTheory.Ordinal.Veblen
{a : Ordinal.{u}} (h : a < Ordinal.omega0 ^ a) : a.invVeblenβ = a - Ordinal.veblen_mem_range_opow π Mathlib.SetTheory.Ordinal.Veblen
(o a : Ordinal.{u_1}) : Ordinal.veblen o a β Set.range fun x => Ordinal.omega0 ^ x - Ordinal.epsilon_zero_eq_nfp π Mathlib.SetTheory.Ordinal.Veblen
: Ordinal.epsilon 0 = Ordinal.nfp (fun a => Ordinal.omega0 ^ a) 0 - Ordinal.invVeblenβ_of_lt_opow π Mathlib.SetTheory.Ordinal.Veblen
{a : Ordinal.{u}} (h : a < Ordinal.omega0 ^ a) : a.invVeblenβ = 0 - Ordinal.epsilon_succ_eq_nfp π Mathlib.SetTheory.Ordinal.Veblen
(o : Ordinal.{u_1}) : (Order.succ o).epsilon = Ordinal.nfp (fun a => Ordinal.omega0 ^ a) (Order.succ o.epsilon) - Ordinal.veblen_opow_eq_opow_iff π Mathlib.SetTheory.Ordinal.Veblen
{o a : Ordinal.{u}} : Ordinal.veblen o (Ordinal.omega0 ^ a) = Ordinal.omega0 ^ a β Ordinal.veblen o a = a - Ordinal.epsilon_zero_le_of_omega0_opow_le π Mathlib.SetTheory.Ordinal.Veblen
{o : Ordinal.{u}} (h : Ordinal.omega0 ^ o β€ o) : Ordinal.epsilon 0 β€ o - Ordinal.invVeblenβ_le_iff π Mathlib.SetTheory.Ordinal.Veblen
{a x : Ordinal.{u}} : x.invVeblenβ β€ a β Ordinal.omega0 ^ x β€ Ordinal.veblen x.invVeblenβ a - Ordinal.invVeblenβ_lt_iff π Mathlib.SetTheory.Ordinal.Veblen
{a x : Ordinal.{u}} : x.invVeblenβ < a β Ordinal.omega0 ^ x < Ordinal.veblen x.invVeblenβ a - Ordinal.le_invVeblenβ_iff π Mathlib.SetTheory.Ordinal.Veblen
{a x : Ordinal.{u}} : a β€ x.invVeblenβ β Ordinal.veblen x.invVeblenβ a β€ Ordinal.omega0 ^ x - Ordinal.lt_invVeblenβ_iff π Mathlib.SetTheory.Ordinal.Veblen
{a x : Ordinal.{u}} : a < x.invVeblenβ β Ordinal.veblen x.invVeblenβ a < Ordinal.omega0 ^ x - Ordinal.mem_range_veblen_iff_le_invVeblenβ π Mathlib.SetTheory.Ordinal.Veblen
{o x : Ordinal.{u}} : Ordinal.omega0 ^ x β Set.range (Ordinal.veblen o) β o β€ x.invVeblenβ - Ordinal.iterate_omega0_opow_lt_epsilon_zero π Mathlib.SetTheory.Ordinal.Veblen
(n : β) : (fun a => Ordinal.omega0 ^ a)^[n] 0 < Ordinal.epsilon 0 - Ordinal.veblen_eq_opow_iff π Mathlib.SetTheory.Ordinal.Veblen
{o a x : Ordinal.{u}} (h : a < Ordinal.veblen o a) : Ordinal.veblen o a = Ordinal.omega0 ^ x β x.invVeblenβ = o β§ x.invVeblenβ = a - Ordinal.opow_lt_veblen_opow_iff π Mathlib.SetTheory.Ordinal.Veblen
{o a : Ordinal.{u}} : Ordinal.omega0 ^ a < Ordinal.veblen o (Ordinal.omega0 ^ a) β a < Ordinal.veblen o a - Ordinal.epsilon_add_one_eq_nfp π Mathlib.SetTheory.Ordinal.Veblen
(o : Ordinal.{u_1}) : (o + 1).epsilon = Ordinal.nfp (fun a => Ordinal.omega0 ^ a) (o.epsilon + 1) - Ordinal.lt_epsilon_zero π Mathlib.SetTheory.Ordinal.Veblen
{o : Ordinal.{u}} : o < Ordinal.epsilon 0 β β n, o < (fun a => Ordinal.omega0 ^ a)^[n] 0
About
Loogle searches Lean and Mathlib definitions and theorems.
You can use Loogle from within the Lean4 VSCode language extension
using the Loogle command from the command palette. You can also try the
#loogle command from LeanSearchClient,
the CLI version, the Loogle
VS Code extension, the lean.nvim
integration or the Zulip bot.
Usage
Loogle finds definitions and lemmas in various ways:
By constant:
πReal.sin
finds all lemmas whose statement somehow mentions the sine function.By lemma name substring:
π"differ"
finds all lemmas that have"differ"somewhere in their lemma name.By subexpression:
π_ * (_ ^ _)
finds all lemmas whose statements somewhere include a product where the second argument is raised to some power.The pattern can also be non-linear, as in
πReal.sqrt ?a * Real.sqrt ?aIf the pattern has parameters, they are matched in any order. Both of these will find
List.map:
π(?a -> ?b) -> List ?a -> List ?b
πList ?a -> (?a -> ?b) -> List ?bBy main conclusion:
π|- tsum _ = _ * tsum _
finds all lemmas where the conclusion (the subexpression to the right of allβandβ) has the given shape.As before, if the pattern has parameters, they are matched against the hypotheses of the lemma in any order; for example,
π|- _ < _ β tsum _ < tsum _
will findtsum_lt_tsumeven though the hypothesisf i < g iis not the last.You can filter for definitions vs theorems: Using
β’ (_ : Type _)finds all definitions which provide data whileβ’ (_ : Prop)finds all theorems (and definitions of proofs).
If you pass more than one such search filter, separated by commas
Loogle will return lemmas which match all of them. The
search
π Real.sin, "two", tsum, _ * _, _ ^ _, |- _ < _ β _
would find all lemmas which mention the constants Real.sin
and tsum, have "two" as a substring of the
lemma name, include a product and a power somewhere in the type,
and have a hypothesis of the form _ < _ (if
there were any such lemmas). Metavariables (?a) are
assigned independently in each filter.
The #lucky button will directly send you to the
documentation of the first hit.
Source code
You can find the source code for this service at https://github.com/nomeata/loogle. The https://loogle.lean-lang.org/ service is provided by the Lean FRO. Please review the Lean FRO Terms of Use and Privacy Policy.
This is Loogle revision 9f11169 serving mathlib revision ce5dd8c