Loogle!
Result
Found 18612 declarations mentioning HAdd.hAdd and OfNat.ofNat. Of these, 600 have a name containing "add_one". Of these, 582 match your pattern(s). Of these, only the first 200 are shown.
- Nat.lt_add_one π Init.Prelude
(n : β) : n < n + 1 - Nat.add_one_ne π Init.Data.Nat.Basic
(n : β) : n + 1 β n - Nat.add_one_ne_self π Init.Data.Nat.Basic
(n : β) : n + 1 β n - Nat.ne_add_one π Init.Data.Nat.Basic
(n : β) : n β n + 1 - Nat.add_one π Init.Data.Nat.Basic
(n : β) : n + 1 = n.succ - Nat.succ_eq_add_one π Init.Data.Nat.Basic
(n : β) : n.succ = n + 1 - Nat.not_add_one_le_self π Init.Data.Nat.Basic
(n : β) : Β¬n + 1 β€ n - Nat.add_one_ne_zero π Init.Data.Nat.Basic
(n : β) : n + 1 β 0 - Nat.zero_ne_add_one π Init.Data.Nat.Basic
(n : β) : 0 β n + 1 - Nat.add_one_pos π Init.Data.Nat.Basic
(n : β) : 0 < n + 1 - Nat.not_add_one_le_zero π Init.Data.Nat.Basic
(n : β) : Β¬n + 1 β€ 0 - Nat.add_one_le_of_lt π Init.Data.Nat.Basic
{n m : β} (h : n < m) : n + 1 β€ m - Nat.le_of_lt_add_one π Init.Data.Nat.Basic
{n m : β} : n < m + 1 β n β€ m - Nat.lt_add_one_of_le π Init.Data.Nat.Basic
{n m : β} : n β€ m β n < m + 1 - Nat.lt_add_one_of_lt π Init.Data.Nat.Basic
{a b : β} (h : a < b) : a < b + 1 - Nat.lt_of_add_one_le π Init.Data.Nat.Basic
{n m : β} (h : n + 1 β€ m) : n < m - Nat.add_one_le_iff π Init.Data.Nat.Basic
{n m : β} : n + 1 β€ m β n < m - Nat.lt_add_one_iff π Init.Data.Nat.Basic
{m n : β} : m < n + 1 β m β€ n - Nat.and_forall_add_one π Init.Data.Nat.Basic
{p : β β Prop} : (p 0 β§ β (n : β), p (n + 1)) β β (n : β), p n - Nat.exists_eq_add_one_of_ne_zero π Init.Data.Nat.Basic
{n : β} : n β 0 β β k, n = k + 1 - Nat.add_one_sub_one π Init.Data.Nat.Basic
(n : β) : n + 1 - 1 = n - Nat.lt_add_one_iff_lt_or_eq π Init.Data.Nat.Basic
{m n : β} : m < n + 1 β m < n β¨ m = n - Nat.or_exists_add_one π Init.Data.Nat.Basic
{p : β β Prop} : (p 0 β¨ β n, p (n + 1)) β Exists p - Nat.add_one_add_one_ne_one π Init.Data.Nat.Basic
{a : β} : a + 1 + 1 β 1 - Nat.add_one_inj π Init.Data.Nat.Basic
{a b : β} : a + 1 = b + 1 β a = b - Nat.add_one_ne_add_one_iff π Init.Data.Nat.Basic
{a b : β} : a + 1 β b + 1 β a β b - Nat.add_one_le_add_one_iff π Init.Data.Nat.Basic
{a b : β} : a + 1 β€ b + 1 β a β€ b - Nat.add_one_lt_add_one_iff π Init.Data.Nat.Basic
{a b : β} : a + 1 < b + 1 β a < b - Nat.sub_one_add_one π Init.Data.Nat.Basic
{a : β} (h : a β 0) : a - 1 + 1 = a - Nat.eq_zero_or_eq_sub_one_add_one π Init.Data.Nat.Basic
{n : β} : n = 0 β¨ n = n - 1 + 1 - Nat.sub_one_add_one_eq_of_pos π Init.Data.Nat.Basic
{n : β} : 0 < n β n - 1 + 1 = n - Nat.le_or_eq_of_le_add_one π Init.Data.Nat.Basic
{m n : β} (h : m β€ n + 1) : m β€ n β¨ m = n + 1 - Nat.add_one_mul π Init.Data.Nat.Basic
(n m : β) : (n + 1) * m = n * m + m - Nat.mul_add_one π Init.Data.Nat.Basic
(n m : β) : n * (m + 1) = n * m + n - Nat.pow_add_one π Init.Data.Nat.Basic
(n m : β) : n ^ (m + 1) = n ^ m * n - Fin.val_add_one_le_of_gt π Init.Data.Fin.Basic
{n : β} {a b : Fin n} (h : a > b) : βb + 1 β€ βa - Fin.val_add_one_le_of_lt π Init.Data.Fin.Basic
{n : β} {a b : Fin n} (h : a < b) : βa + 1 β€ βb - Int.negSucc_add_one_eq_neg_ofNat_iff π Init.Data.Int.Lemmas
{a b : β} : Int.negSucc a + 1 = -βb β a = b - Int.neg_ofNat_eq_negSucc_add_one_iff π Init.Data.Int.Lemmas
{a b : β} : -βa = Int.negSucc b + 1 β a = b - Int.natCast_add_one π Init.Data.Int.Lemmas
(n : β) : β(n + 1) = βn + 1 - Int.add_one_le_of_lt π Init.Data.Int.Order
{a b : β€} (H : a < b) : a + 1 β€ b - Int.le_add_one π Init.Data.Int.Order
{a b : β€} (h : a β€ b) : a β€ b + 1 - Int.le_of_lt_add_one π Init.Data.Int.Order
{a b : β€} (H : a < b + 1) : a β€ b - Int.lt_add_one_of_le π Init.Data.Int.Order
{a b : β€} (H : a β€ b) : a < b + 1 - Int.lt_of_add_one_le π Init.Data.Int.Order
{a b : β€} (H : a + 1 β€ b) : a < b - Int.add_one_le_iff π Init.Data.Int.Order
{a b : β€} : a + 1 β€ b β a < b - Int.le_iff_lt_add_one π Init.Data.Int.Order
{a b : β€} : a β€ b β a < b + 1 - Int.lt_add_one_iff π Init.Data.Int.Order
{a b : β€} : a < b + 1 β a β€ b - Int.lt_iff_add_one_le π Init.Data.Int.Order
{a b : β€} : a < b β a + 1 β€ b - Int.sign_natCast_add_one π Init.Data.Int.Order
(n : β) : (βn + 1).sign = 1 - Int.sign_of_add_one π Init.Data.Int.Order
(x : β) : (βx + 1).sign = 1 - Int.toNat_natCast_add_one π Init.Data.Int.Order
{n : β} : (βn + 1).toNat = n + 1 - Int.le_add_one_iff π Init.Data.Int.Order
{m n : β€} : m β€ n + 1 β m β€ n β¨ m = n + 1 - Nat.gcd_add_one π Init.Data.Nat.Gcd
(x y : β) : (x + 1).gcd y = (y % (x + 1)).gcd (x + 1) - Nat.le_iff_lt_add_one π Init.Data.Nat.Lemmas
{x y : β} : x β€ y β x < y + 1 - Nat.lt_iff_add_one_le π Init.Data.Nat.Lemmas
{m n : β} : m < n β m + 1 β€ n - Nat.sub_lt_add_one π Init.Data.Nat.Lemmas
(a b : β) : a - b < a + 1 - Nat.exists_add_one_eq π Init.Data.Nat.Lemmas
{a : β} : (β n, n + 1 = a) β 0 < a - Nat.exists_eq_add_one π Init.Data.Nat.Lemmas
{a : β} : (β n, a = n + 1) β 0 < a - Nat.le_add_one_iff π Init.Data.Nat.Lemmas
{m n : β} : m β€ n + 1 β m β€ n β¨ m = n + 1 - Nat.le_and_le_add_one_iff π Init.Data.Nat.Lemmas
{n m : β} : n β€ m β§ m β€ n + 1 β m = n β¨ m = n + 1 - Nat.pow_add_one' π Init.Data.Nat.Lemmas
{m n : β} : m ^ (n + 1) = m * m ^ n - Nat.add_one_mul_add_one π Init.Data.Nat.Lemmas
(a b : β) : (a + 1) * (b + 1) = a * b + a + b + 1 - Nat.add_div_of_dvd_add_add_one π Init.Data.Nat.Div.Lemmas
{c a b : β} (h : c β£ a + b + 1) : (a + b) / c = a / c + b / c - Nat.testBit_add_one π Init.Data.Nat.Bitwise.Lemmas
(x i : β) : x.testBit (i + 1) = (x / 2).testBit i - Fin.val_add_one_of_lt π Init.Data.Fin.Lemmas
{n : β} {i : Fin n.succ} (h : i < Fin.last n) : β(i + 1) = βi + 1 - Fin.last_add_one π Init.Data.Fin.Lemmas
(n : β) : Fin.last n + 1 = 0 - Fin.add_one_le_iff π Init.Data.Fin.Lemmas
{n : β} {k : Fin (n + 1)} : k + 1 β€ k β k = Fin.last n - Fin.add_one_lt_iff π Init.Data.Fin.Lemmas
{n : β} {k : Fin (n + 2)} : k + 1 < k β k = Fin.last (n + 1) - Fin.lt_add_one_iff π Init.Data.Fin.Lemmas
{n : β} {k : Fin (n + 1)} : k < k + 1 β k < Fin.last n - Fin.val_add_one π Init.Data.Fin.Lemmas
{n : β} (i : Fin (n + 1)) : β(i + 1) = if i = Fin.last n then 0 else βi + 1 - Fin.add_one_pos π Init.Data.Fin.Lemmas
{n : β} (i : Fin (n + 1)) (h : i < Fin.last n) : 0 < i + 1 - Fin.pred_add_one π Init.Data.Fin.Lemmas
{n : β} (i : Fin (n + 2)) (h : βi < n + 1) : (i + 1).pred β― = i.castLT h - List.ne_nil_of_length_eq_add_one π Init.Data.List.Lemmas
{Ξ±β : Type u_1} {l : List Ξ±β} {n : β} : l.length = n + 1 β l β [] - List.exists_mem_of_length_eq_add_one π Init.Data.List.Lemmas
{Ξ± : Type u_1} {n : β} {l : List Ξ±} : l.length = n + 1 β β a, a β l - List.exists_cons_of_length_eq_add_one π Init.Data.List.Lemmas
{Ξ± : Type u_1} {n : β} {l : List Ξ±} : l.length = n + 1 β β h t, l = h :: t - List.drop_add_one_eq_tail_drop π Init.Data.List.TakeDrop
{Ξ± : Type u_1} {i : β} {l : List Ξ±} : List.drop (i + 1) l = (List.drop i l).tail - List.take_add_one π Init.Data.List.TakeDrop
{Ξ± : Type u_1} {l : List Ξ±} {i : β} : List.take (i + 1) l = List.take i l ++ l[i]?.toList - Int.emod_self_add_one π Init.Data.Int.DivMod.Lemmas
{x : β€} (h : 0 β€ x) : x % (x + 1) = x - Int.bmod_natAbs_add_one π Init.Data.Int.DivMod.Lemmas
(x : β€) (w : x β -1) : x.bmod (x.natAbs + 1) = -x.sign - Int.lt_fdiv_add_one_mul_self π Init.Data.Int.DivMod.Lemmas
(a : β€) {b : β€} (H : 0 < b) : a < (a.fdiv b + 1) * b - Int.lt_tdiv_add_one_mul_self π Init.Data.Int.DivMod.Lemmas
(a : β€) {b : β€} (H : 0 < b) : a < (a.tdiv b + 1) * b - Int.lt_ediv_add_one_mul_self π Init.Data.Int.DivMod.Lemmas
(a : β€) {b : β€} (H : 0 < b) : a < (a / b + 1) * b - Int.bmod_self_add_one π Init.Data.Int.DivMod.Lemmas
{x : β} : (βx).bmod (x + 1) = if x = 0 then 0 else -1 - Int.le_emod_self_add_one_iff π Init.Data.Int.DivMod.Lemmas
{a b : β€} (h : 0 < b) : b β€ a % b + 1 β b β£ a + 1 - Int.add_one_tdiv π Init.Data.Int.DivMod.Lemmas
{a b : β€} : (a + 1).tdiv b = a.tdiv b + if 0 < a + 1 β§ b β£ a + 1 β¨ a < 0 β§ b β£ a then b.sign else 0 - Int.add_one_tdiv_of_pos π Init.Data.Int.DivMod.Lemmas
{a b : β€} (h : 0 < b) : (a + 1).tdiv b = a.tdiv b + if 0 < a + 1 β§ b β£ a + 1 β¨ a < 0 β§ b β£ a then 1 else 0 - Int.ofNat_add_one_out π Init.Data.Int.LemmasAux
(n : β) : βn + 1 = βn.succ - BitVec.lt_add_one π Init.Data.BitVec.Lemmas
{w : β} {b : BitVec w} (h : b β BitVec.allOnes w) : b < b + 1 - UInt16.lt_add_one π Init.Data.UInt.Lemmas
{c : UInt16} (h : c β -1) : c < c + 1 - UInt32.lt_add_one π Init.Data.UInt.Lemmas
{c : UInt32} (h : c β -1) : c < c + 1 - UInt64.lt_add_one π Init.Data.UInt.Lemmas
{c : UInt64} (h : c β -1) : c < c + 1 - UInt8.lt_add_one π Init.Data.UInt.Lemmas
{c : UInt8} (h : c β -1) : c < c + 1 - USize.lt_add_one π Init.Data.UInt.Lemmas
{c : USize} (h : c β -1) : c < c + 1 - UInt16.and_lt_add_one π Init.Data.UInt.Bitwise
{b c : UInt16} (h : c β -1) : b &&& c < c + 1 - UInt32.and_lt_add_one π Init.Data.UInt.Bitwise
{b c : UInt32} (h : c β -1) : b &&& c < c + 1 - UInt64.and_lt_add_one π Init.Data.UInt.Bitwise
{b c : UInt64} (h : c β -1) : b &&& c < c + 1 - UInt8.and_lt_add_one π Init.Data.UInt.Bitwise
{b c : UInt8} (h : c β -1) : b &&& c < c + 1 - USize.and_lt_add_one π Init.Data.UInt.Bitwise
{b c : USize} (h : c β -1) : b &&& c < c + 1 - List.getElem?_intersperse_two_mul_add_one π Init.Data.List.Nat.Basic
{Ξ± : Type u_1} {l : List Ξ±} {sep : Ξ±} {i : β} (h : i + 1 < l.length) : (List.intersperse sep l)[2 * i + 1]? = some sep - List.getElem_intersperse_two_mul_add_one π Init.Data.List.Nat.Basic
{Ξ± : Type u_1} {l : List Ξ±} {sep : Ξ±} {i : β} (h : 2 * i + 1 < (List.intersperse sep l).length) : (List.intersperse sep l)[2 * i + 1] = sep - Array.ne_empty_of_size_eq_add_one π Init.Data.Array.Lemmas
{n : β} {Ξ±β : Type u_1} {xs : Array Ξ±β} (h : xs.size = n + 1) : xs β #[] - Array.exists_mem_of_size_eq_add_one π Init.Data.Array.Lemmas
{Ξ± : Type u_1} {n : β} {xs : Array Ξ±} (h : xs.size = n + 1) : β a, a β xs - Array.exists_push_of_size_eq_add_one π Init.Data.Array.Lemmas
{Ξ± : Type u_1} {n : β} {xs : Array Ξ±} (h : xs.size = n + 1) : β ys a, xs = ys.push a - ByteArray.extract_add_one π Init.Data.ByteArray.Lemmas
{a : ByteArray} {i : β} (ha : i + 1 β€ a.size) : a.extract i (i + 1) = [a[i]].toByteArray - Std.PRange.LawfulUpwardEnumerable.succMany?_add_one π Init.Data.Range.Polymorphic.UpwardEnumerable
{Ξ± : Type u} {instβ : Std.PRange.UpwardEnumerable Ξ±} [self : Std.PRange.LawfulUpwardEnumerable Ξ±] (n : β) (a : Ξ±) : Std.PRange.succMany? (n + 1) a = (Std.PRange.succMany? n a).bind Std.PRange.succ? - Std.PRange.UpwardEnumerable.succMany?_add_one π Init.Data.Range.Polymorphic.UpwardEnumerable
{Ξ± : Type u_1} [Std.PRange.UpwardEnumerable Ξ±] [Std.PRange.LawfulUpwardEnumerable Ξ±] {n : β} {a : Ξ±} : Std.PRange.succMany? (n + 1) a = (Std.PRange.succMany? n a).bind Std.PRange.succ? - Std.PRange.UpwardEnumerable.succMany?_add_one_eq_succ?_bind_succMany? π Init.Data.Range.Polymorphic.UpwardEnumerable
{Ξ± : Type u_1} [Std.PRange.UpwardEnumerable Ξ±] [Std.PRange.LawfulUpwardEnumerable Ξ±] {n : β} {a : Ξ±} : Std.PRange.succMany? (n + 1) a = (Std.PRange.succ? a).bind fun x => Std.PRange.succMany? n x - Std.PRange.UpwardEnumerable.succMany_add_one_eq_succMany_succ π Init.Data.Range.Polymorphic.UpwardEnumerable
{n : β} {Ξ± : Type u} [Std.PRange.UpwardEnumerable Ξ±] [Std.PRange.LawfulUpwardEnumerable Ξ±] [Std.PRange.InfinitelyUpwardEnumerable Ξ±] {a : Ξ±} : Std.PRange.succMany (n + 1) a = Std.PRange.succMany n (Std.PRange.succ a) - Lean.Grind.NatModule.add_one_nsmul π Init.Grind.Module.Basic
{M : Type u} [self : Lean.Grind.NatModule M] (n : β) (a : M) : (n + 1) β’ a = n β’ a + a - Lean.Grind.Ring.intCast_natCast_add_one π Init.Grind.Ring.Basic
{Ξ± : Type u} [Lean.Grind.Ring Ξ±] (n : β) : β(βn + 1) = βn + 1 - Int16.toInt_maxValue_add_one π Init.Data.SInt.Lemmas
: Int16.maxValue.toInt + 1 = 2 ^ 15 - Int32.toInt_maxValue_add_one π Init.Data.SInt.Lemmas
: Int32.maxValue.toInt + 1 = 2 ^ 31 - Int64.toInt_maxValue_add_one π Init.Data.SInt.Lemmas
: Int64.maxValue.toInt + 1 = 2 ^ 63 - Int8.toInt_maxValue_add_one π Init.Data.SInt.Lemmas
: Int8.maxValue.toInt + 1 = 2 ^ 7 - ISize.toInt_maxValue_add_one π Init.Data.SInt.Lemmas
: ISize.maxValue.toInt + 1 = 2 ^ (System.Platform.numBits - 1) - Lean.Grind.Field.zpow_add_one π Init.Grind.Ring.Field
{Ξ± : Type u_1} [Lean.Grind.Field Ξ±] {a : Ξ±} (h : a β 0) (n : β€) : a ^ (n + 1) = a ^ n * a - Rat.lt_floor_add_one π Init.Data.Rat.Lemmas
(a : β) : a < β(a.floor + 1) - Rat.zpow_add_one π Init.Data.Rat.Lemmas
{q : β} (hq : q β 0) (m : β€) : q ^ (m + 1) = q ^ m * q - Int.trailingZeros_two_mul_add_one π Init.Data.Dyadic.Basic
(i : β€) : (2 * i + 1).trailingZeros = 0 - Std.Internal.List.Const.length_alterKey_eq_add_one π Std.Data.Internal.List.Associative
{Ξ± : Type u} [BEq Ξ±] {Ξ² : Type v} {k : Ξ±} {f : Option Ξ² β Option Ξ²} {l : List ((_ : Ξ±) Γ Ξ²)} (h : Std.Internal.List.containsKey k l = false) (h' : (f (Std.Internal.List.getValue? k l)).isSome = true) : (Std.Internal.List.Const.alterKey k f l).length = l.length + 1 - Std.DHashMap.Internal.Rawβ.size_alter_eq_add_one π Std.Data.DHashMap.Internal.RawLemmas
{Ξ± : Type u} {Ξ² : Ξ± β Type v} (m : Std.DHashMap.Internal.Rawβ Ξ± Ξ²) [BEq Ξ±] [Hashable Ξ±] [LawfulBEq Ξ±] (h : (βm).WF) {k : Ξ±} {f : Option (Ξ² k) β Option (Ξ² k)} (hβ : m.contains k = false) (hβ : (f (m.get? k)).isSome = true) : (β(m.alter k f)).size = (βm).size + 1 - Std.DHashMap.Internal.Rawβ.Const.size_alter_eq_add_one π Std.Data.DHashMap.Internal.RawLemmas
{Ξ± : Type u} [BEq Ξ±] [Hashable Ξ±] {Ξ² : Type v} [EquivBEq Ξ±] [LawfulHashable Ξ±] (m : Std.DHashMap.Internal.Rawβ Ξ± fun x => Ξ²) (h : (βm).WF) {k : Ξ±} {f : Option Ξ² β Option Ξ²} (hβ : m.contains k = false) (hβ : (f (Std.DHashMap.Internal.Rawβ.Const.get? m k)).isSome = true) : (β(Std.DHashMap.Internal.Rawβ.Const.alter m k f)).size = (βm).size + 1 - Std.DHashMap.size_alter_eq_add_one π Std.Data.DHashMap.Lemmas
{Ξ± : Type u} {Ξ² : Ξ± β Type v} {xβ : BEq Ξ±} {xβΒΉ : Hashable Ξ±} {m : Std.DHashMap Ξ± Ξ²} [LawfulBEq Ξ±] {k : Ξ±} {f : Option (Ξ² k) β Option (Ξ² k)} (h : k β m) (h' : (f (m.get? k)).isSome = true) : (m.alter k f).size = m.size + 1 - Std.DHashMap.Const.size_alter_eq_add_one π Std.Data.DHashMap.Lemmas
{Ξ± : Type u} {xβ : BEq Ξ±} {xβΒΉ : Hashable Ξ±} {Ξ² : Type v} {m : Std.DHashMap Ξ± fun x => Ξ²} [EquivBEq Ξ±] [LawfulHashable Ξ±] {k : Ξ±} {f : Option Ξ² β Option Ξ²} (h : k β m) (h' : (f (Std.DHashMap.Const.get? m k)).isSome = true) : (Std.DHashMap.Const.alter m k f).size = m.size + 1 - Std.DHashMap.Raw.size_alter_eq_add_one π Std.Data.DHashMap.RawLemmas
{Ξ± : Type u} {Ξ² : Ξ± β Type v} [BEq Ξ±] [Hashable Ξ±] {m : Std.DHashMap.Raw Ξ± Ξ²} [LawfulBEq Ξ±] {k : Ξ±} {f : Option (Ξ² k) β Option (Ξ² k)} (h : m.WF) (hβ : k β m) (hβ : (f (m.get? k)).isSome = true) : (m.alter k f).size = m.size + 1 - Std.DHashMap.Raw.Const.size_alter_eq_add_one π Std.Data.DHashMap.RawLemmas
{Ξ± : Type u} [BEq Ξ±] [Hashable Ξ±] {Ξ² : Type v} {m : Std.DHashMap.Raw Ξ± fun x => Ξ²} [LawfulBEq Ξ±] {k : Ξ±} {f : Option Ξ² β Option Ξ²} (h : m.WF) (hβ : k β m) (hβ : (f (Std.DHashMap.Raw.Const.get? m k)).isSome = true) : (Std.DHashMap.Raw.Const.alter m k f).size = m.size + 1 - Std.HashMap.size_alter_eq_add_one π Std.Data.HashMap.Lemmas
{Ξ± : Type u} {Ξ² : Type v} {xβ : BEq Ξ±} {xβΒΉ : Hashable Ξ±} {m : Std.HashMap Ξ± Ξ²} [EquivBEq Ξ±] [LawfulHashable Ξ±] {k : Ξ±} {f : Option Ξ² β Option Ξ²} (h : k β m) (h' : (f m[k]?).isSome = true) : (m.alter k f).size = m.size + 1 - Std.HashMap.Raw.size_alter_eq_add_one π Std.Data.HashMap.RawLemmas
{Ξ± : Type u} {Ξ² : Type v} [BEq Ξ±] [Hashable Ξ±] {m : Std.HashMap.Raw Ξ± Ξ²} [LawfulBEq Ξ±] {k : Ξ±} {f : Option Ξ² β Option Ξ²} (h : m.WF) (hβ : k β m) (hβ : (f m[k]?).isSome = true) : (m.alter k f).size = m.size + 1 - Std.DTreeMap.Internal.Impl.Const.size_alter!_eq_add_one π Std.Data.DTreeMap.Internal.Lemmas
{Ξ± : Type u} {instOrd : Ord Ξ±} {Ξ² : Type v} {t : Std.DTreeMap.Internal.Impl Ξ± fun x => Ξ²} [Std.TransOrd Ξ±] (h : t.WF) {k : Ξ±} {f : Option Ξ² β Option Ξ²} (hβ : k β t) (hβ : (f (Std.DTreeMap.Internal.Impl.Const.get? t k)).isSome = true) : (Std.DTreeMap.Internal.Impl.Const.alter! k f t).size = t.size + 1 - Std.DTreeMap.Internal.Impl.size_alter!_eq_add_one π Std.Data.DTreeMap.Internal.Lemmas
{Ξ± : Type u} {Ξ² : Ξ± β Type v} {instOrd : Ord Ξ±} {t : Std.DTreeMap.Internal.Impl Ξ± Ξ²} [Std.TransOrd Ξ±] [Std.LawfulEqOrd Ξ±] (h : t.WF) {k : Ξ±} {f : Option (Ξ² k) β Option (Ξ² k)} (hβ : k β t) (hβ : (f (t.get? k)).isSome = true) : (Std.DTreeMap.Internal.Impl.alter! k f t).size = t.size + 1 - Std.DTreeMap.Internal.Impl.size_alter_eq_add_one π Std.Data.DTreeMap.Internal.Lemmas
{Ξ± : Type u} {Ξ² : Ξ± β Type v} {instOrd : Ord Ξ±} {t : Std.DTreeMap.Internal.Impl Ξ± Ξ²} [Std.TransOrd Ξ±] [Std.LawfulEqOrd Ξ±] (h : t.WF) {k : Ξ±} {f : Option (Ξ² k) β Option (Ξ² k)} (hβ : k β t) (hβ : (f (t.get? k)).isSome = true) : (Std.DTreeMap.Internal.Impl.alter k f t β―).impl.size = t.size + 1 - Std.DTreeMap.Internal.Impl.Const.size_alter_eq_add_one π Std.Data.DTreeMap.Internal.Lemmas
{Ξ± : Type u} {instOrd : Ord Ξ±} {Ξ² : Type v} {t : Std.DTreeMap.Internal.Impl Ξ± fun x => Ξ²} [Std.TransOrd Ξ±] (h : t.WF) {k : Ξ±} {f : Option Ξ² β Option Ξ²} (hβ : k β t) (hβ : (f (Std.DTreeMap.Internal.Impl.Const.get? t k)).isSome = true) : (Std.DTreeMap.Internal.Impl.Const.alter k f t β―).impl.size = t.size + 1 - Std.DTreeMap.Const.size_alter_eq_add_one π Std.Data.DTreeMap.Lemmas
{Ξ± : Type u} {cmp : Ξ± β Ξ± β Ordering} {Ξ² : Type v} {t : Std.DTreeMap Ξ± (fun x => Ξ²) cmp} [Std.TransCmp cmp] {k : Ξ±} {f : Option Ξ² β Option Ξ²} (hβ : k β t) (hβ : (f (Std.DTreeMap.Const.get? t k)).isSome = true) : (Std.DTreeMap.Const.alter t k f).size = t.size + 1 - Std.DTreeMap.size_alter_eq_add_one π Std.Data.DTreeMap.Lemmas
{Ξ± : Type u} {Ξ² : Ξ± β Type v} {cmp : Ξ± β Ξ± β Ordering} {t : Std.DTreeMap Ξ± Ξ² cmp} [Std.TransCmp cmp] [Std.LawfulEqCmp cmp] {k : Ξ±} {f : Option (Ξ² k) β Option (Ξ² k)} (hβ : k β t) (hβ : (f (t.get? k)).isSome = true) : (t.alter k f).size = t.size + 1 - Std.DTreeMap.Raw.Const.size_alter_eq_add_one π Std.Data.DTreeMap.Raw.Lemmas
{Ξ± : Type u} {cmp : Ξ± β Ξ± β Ordering} {Ξ² : Type v} {t : Std.DTreeMap.Raw Ξ± (fun x => Ξ²) cmp} [Std.TransCmp cmp] (h : t.WF) {k : Ξ±} {f : Option Ξ² β Option Ξ²} (hβ : k β t) (hβ : (f (Std.DTreeMap.Raw.Const.get? t k)).isSome = true) : (Std.DTreeMap.Raw.Const.alter t k f).size = t.size + 1 - Std.DTreeMap.Raw.size_alter_eq_add_one π Std.Data.DTreeMap.Raw.Lemmas
{Ξ± : Type u} {Ξ² : Ξ± β Type v} {cmp : Ξ± β Ξ± β Ordering} {t : Std.DTreeMap.Raw Ξ± Ξ² cmp} [Std.TransCmp cmp] [Std.LawfulEqCmp cmp] (h : t.WF) {k : Ξ±} {f : Option (Ξ² k) β Option (Ξ² k)} (hβ : k β t) (hβ : (f (t.get? k)).isSome = true) : (t.alter k f).size = t.size + 1 - Std.TreeMap.size_alter_eq_add_one π Std.Data.TreeMap.Lemmas
{Ξ± : Type u} {Ξ² : Type v} {cmp : Ξ± β Ξ± β Ordering} {t : Std.TreeMap Ξ± Ξ² cmp} [Std.TransCmp cmp] {k : Ξ±} {f : Option Ξ² β Option Ξ²} (hβ : k β t) (hβ : (f t[k]?).isSome = true) : (t.alter k f).size = t.size + 1 - Std.ExtDHashMap.Const.size_alter_eq_add_one π Std.Data.ExtDHashMap.Lemmas
{Ξ± : Type u} {xβ : BEq Ξ±} {xβΒΉ : Hashable Ξ±} {Ξ² : Type v} {m : Std.ExtDHashMap Ξ± fun x => Ξ²} [EquivBEq Ξ±] [LawfulHashable Ξ±] {k : Ξ±} {f : Option Ξ² β Option Ξ²} (h : k β m) (h' : (f (Std.ExtDHashMap.Const.get? m k)).isSome = true) : (Std.ExtDHashMap.Const.alter m k f).size = m.size + 1 - Std.ExtDHashMap.size_alter_eq_add_one π Std.Data.ExtDHashMap.Lemmas
{Ξ± : Type u} {xβ : BEq Ξ±} {xβΒΉ : Hashable Ξ±} {Ξ² : Ξ± β Type v} {m : Std.ExtDHashMap Ξ± Ξ²} [LawfulBEq Ξ±] {k : Ξ±} {f : Option (Ξ² k) β Option (Ξ² k)} (h : k β m) (h' : (f (m.get? k)).isSome = true) : (m.alter k f).size = m.size + 1 - Std.ExtHashMap.size_alter_eq_add_one π Std.Data.ExtHashMap.Lemmas
{Ξ± : Type u} {Ξ² : Type v} {xβ : BEq Ξ±} {xβΒΉ : Hashable Ξ±} {m : Std.ExtHashMap Ξ± Ξ²} [EquivBEq Ξ±] [LawfulHashable Ξ±] {k : Ξ±} {f : Option Ξ² β Option Ξ²} (h : k β m) (h' : (f m[k]?).isSome = true) : (m.alter k f).size = m.size + 1 - Std.ExtDTreeMap.Const.size_alter_eq_add_one π Std.Data.ExtDTreeMap.Lemmas
{Ξ± : Type u} {cmp : Ξ± β Ξ± β Ordering} {Ξ² : Type v} {t : Std.ExtDTreeMap Ξ± (fun x => Ξ²) cmp} [Std.TransCmp cmp] {k : Ξ±} {f : Option Ξ² β Option Ξ²} (hβ : k β t) (hβ : (f (Std.ExtDTreeMap.Const.get? t k)).isSome = true) : (Std.ExtDTreeMap.Const.alter t k f).size = t.size + 1 - Std.ExtDTreeMap.size_alter_eq_add_one π Std.Data.ExtDTreeMap.Lemmas
{Ξ± : Type u} {Ξ² : Ξ± β Type v} {cmp : Ξ± β Ξ± β Ordering} {t : Std.ExtDTreeMap Ξ± Ξ² cmp} [Std.TransCmp cmp] [Std.LawfulEqCmp cmp] {k : Ξ±} {f : Option (Ξ² k) β Option (Ξ² k)} (hβ : k β t) (hβ : (f (t.get? k)).isSome = true) : (t.alter k f).size = t.size + 1 - Std.ExtTreeMap.size_alter_eq_add_one π Std.Data.ExtTreeMap.Lemmas
{Ξ± : Type u} {Ξ² : Type v} {cmp : Ξ± β Ξ± β Ordering} {t : Std.ExtTreeMap Ξ± Ξ² cmp} [Std.TransCmp cmp] {k : Ξ±} {f : Option Ξ² β Option Ξ²} (hβ : k β t) (hβ : (f t[k]?).isSome = true) : (t.alter k f).size = t.size + 1 - Std.TreeMap.Raw.size_alter_eq_add_one π Std.Data.TreeMap.Raw.Lemmas
{Ξ± : Type u} {Ξ² : Type v} {cmp : Ξ± β Ξ± β Ordering} {t : Std.TreeMap.Raw Ξ± Ξ² cmp} [Std.TransCmp cmp] (h : t.WF) {k : Ξ±} {f : Option Ξ² β Option Ξ²} (hβ : k β t) (hβ : (f t[k]?).isSome = true) : (t.alter k f).size = t.size + 1 - List.length_tail_add_one π Batteries.Data.List.Lemmas
{Ξ± : Type u_1} (l : List Ξ±) (h : 0 < l.length) : l.tail.length + 1 = l.length - Nat.le_add_one_of_avg_eq_left π Batteries.Data.Nat.Bisect
{a b : β} (h : a.avg b = a) : b β€ a + 1 - Nat.le_add_one_of_avg_eq_right π Batteries.Data.Nat.Bisect
{a b : β} (h : a.avg b = b) : a β€ b + 1 - Nat.bisect_add_one_false π Batteries.Data.Nat.Bisect
{start stop : β} {p : β β Bool} (h : start < stop) (hstart : p start = true) (hstop : p stop = false) : p (Nat.bisect h hstart hstop + 1) = false - Bool.ofNat_add_one π Mathlib.Data.Bool.Basic
{n : β} : Bool.ofNat (n + 1) = true - Nat.two_mul_ne_two_mul_add_one π Mathlib.Data.Nat.Init
{m n : β} : 2 * n β 2 * m + 1 - Nat.rec_add_one π Mathlib.Data.Nat.Init
{C : β β Sort u_1} (h0 : C 0) (h : (n : β) β C n β C (n + 1)) (n : β) : Nat.rec h0 h (n + 1) = h n (Nat.rec h0 h n) - add_one_zsmul π Mathlib.Algebra.Group.Basic
{G : Type u_3} [AddGroup G] (a : G) (n : β€) : (n + 1) β’ a = n β’ a + a - zpow_add_one π Mathlib.Algebra.Group.Basic
{G : Type u_3} [Group G] (a : G) (n : β€) : a ^ (n + 1) = a ^ n * a - zpow_add_oneβ π Mathlib.Algebra.GroupWithZero.Basic
{Gβ : Type u_2} [GroupWithZero Gβ] {a : Gβ} (ha : a β 0) (n : β€) : a ^ (n + 1) = a ^ n * a - Nat.cast_add_one π Mathlib.Data.Nat.Cast.Defs
{R : Type u_1} [AddMonoidWithOne R] (n : β) : β(n + 1) = βn + 1 - one_add_one_eq_two π Mathlib.Data.Nat.Cast.Defs
{R : Type u_1} [AddMonoidWithOne R] : 1 + 1 = 2 - three_add_one_eq_four π Mathlib.Data.Nat.Cast.Defs
{R : Type u_1} [AddMonoidWithOne R] : 3 + 1 = 4 - two_add_one_eq_three π Mathlib.Data.Nat.Cast.Defs
{R : Type u_1} [AddMonoidWithOne R] : 2 + 1 = 3 - add_one_mul π Mathlib.Algebra.Ring.Defs
{Ξ± : Type u} [Add Ξ±] [MulOneClass Ξ±] [RightDistribClass Ξ±] (a b : Ξ±) : (a + 1) * b = a * b + b - mul_add_one π Mathlib.Algebra.Ring.Defs
{Ξ± : Type u} [Add Ξ±] [MulOneClass Ξ±] [LeftDistribClass Ξ±] (a b : Ξ±) : a * (b + 1) = a * b + a - Nat.cast_add_one_ne_zero π Mathlib.Algebra.CharZero.Defs
{R : Type u_1} [AddMonoidWithOne R] [CharZero R] (n : β) : βn + 1 β 0 - Int.inductionOn'_add_one π Mathlib.Data.Int.Basic
{C : β€ β Sort u_1} {z b : β€} {H0 : C b} {Hs : (k : β€) β b β€ k β C k β C (k + 1)} {Hp : (k : β€) β k β€ b β C k β C (k - 1)} (hz : b β€ z) : Int.inductionOn' (z + 1) b H0 Hs Hp = Hs z hz (Int.inductionOn' z b H0 Hs Hp) - Nat.add_one_sqrt_le_of_ne_zero π Mathlib.Data.Nat.Sqrt
{n : β} (hn : n β 0) : (n + 1).sqrt β€ n - Nat.even_add_one π Mathlib.Algebra.Group.Nat.Even
{n : β} : Even (n + 1) β Β¬Even n - Nat.add_one_lt_of_even π Mathlib.Algebra.Group.Nat.Even
{m n : β} (hn : Even n) (hm : Even m) (hnm : n < m) : n + 1 < m - Nat.two_not_dvd_two_mul_add_one π Mathlib.Algebra.Group.Nat.Even
(n : β) : Β¬2 β£ 2 * n + 1 - Int.even_add_one π Mathlib.Algebra.Group.Int.Even
{n : β€} : Even (n + 1) β Β¬Even n - Int.two_not_dvd_two_mul_add_one π Mathlib.Algebra.Group.Int.Even
(n : β€) : Β¬2 β£ 2 * n + 1 - Nat.odd_add_one π Mathlib.Algebra.Ring.Parity
{n : β} : Odd (n + 1) β Β¬Odd n - Nat.not_even_two_mul_add_one π Mathlib.Algebra.Ring.Parity
(n : β) : Β¬Even (2 * n + 1) - Nat.two_dvd_mul_add_one π Mathlib.Algebra.Ring.Parity
(k : β) : 2 β£ k * (k + 1) - Function.Involutive.iterate_two_mul_add_one π Mathlib.Algebra.Ring.Parity
{Ξ± : Type u_4} {f : Ξ± β Ξ±} (hf : Function.Involutive f) (n : β) : f^[2 * n + 1] = f - Nat.div_two_mul_two_add_one_of_odd π Mathlib.Algebra.Ring.Parity
{n : β} (h : Odd n) : n / 2 * 2 + 1 = n - Nat.two_mul_div_two_add_one_of_odd π Mathlib.Algebra.Ring.Parity
{n : β} (h : Odd n) : 2 * (n / 2) + 1 = n - Even.add_one π Mathlib.Algebra.Ring.Parity
{Ξ± : Type u_2} [Semiring Ξ±] {a : Ξ±} (h : Even a) : Odd (a + 1) - Odd.add_one π Mathlib.Algebra.Ring.Parity
{Ξ± : Type u_2} [Semiring Ξ±] {a : Ξ±} (h : Odd a) : Even (a + 1) - odd_add_one_self π Mathlib.Algebra.Ring.Parity
{Ξ± : Type u_2} [Semiring Ξ±] {a : Ξ±} : Odd (a + 1 + a) - odd_two_mul_add_one π Mathlib.Algebra.Ring.Parity
{Ξ± : Type u_2} [Semiring Ξ±] (a : Ξ±) : Odd (2 * a + 1) - range_two_mul_add_one π Mathlib.Algebra.Ring.Parity
(Ξ± : Type u_4) [Semiring Ξ±] : (Set.range fun x => 2 * x + 1) = {a | Odd a} - lt_add_one π Mathlib.Algebra.Order.Monoid.NatCast
{Ξ± : Type u_1} [One Ξ±] [AddZeroClass Ξ±] [PartialOrder Ξ±] [ZeroLEOneClass Ξ±] [NeZero 1] [AddLeftStrictMono Ξ±] (a : Ξ±) : a < a + 1 - add_one_le_two_mul π Mathlib.Algebra.Order.Ring.Unbundled.Basic
{R : Type u} [LE R] [NonAssocSemiring R] [AddLeftMono R] {a : R} (a1 : 1 β€ a) : a + 1 β€ 2 * a - Int.not_even_two_mul_add_one π Mathlib.Algebra.Ring.Int.Parity
(n : β€) : Β¬Even (2 * n + 1) - Int.two_dvd_mul_add_one π Mathlib.Algebra.Ring.Int.Parity
(k : β€) : 2 β£ k * (k + 1) - Int.ediv_two_mul_two_add_one_of_odd π Mathlib.Algebra.Ring.Int.Parity
{n : β€} : Odd n β n / 2 * 2 + 1 = n - Int.two_mul_ediv_two_add_one_of_odd π Mathlib.Algebra.Ring.Int.Parity
{n : β€} : Odd n β 2 * (n / 2) + 1 = n - Nat.cast_add_one_pos π Mathlib.Data.Nat.Cast.Order.Basic
{Ξ± : Type u_1} [AddMonoidWithOne Ξ±] [PartialOrder Ξ±] [AddLeftMono Ξ±] [ZeroLEOneClass Ξ±] [NeZero 1] (n : β) : 0 < βn + 1 - Nat.two_mul_sq_add_one_le_two_pow_two_mul π Mathlib.Data.Nat.Cast.Order.Ring
(k : β) : 2 * k ^ 2 + 1 β€ 2 ^ (2 * k) - Nat.ceil_le_floor_add_one π Mathlib.Algebra.Order.Floor.Semiring
{R : Type u_1} [Semiring R] [LinearOrder R] [FloorSemiring R] [IsStrictOrderedRing R] (a : R) : βaββ β€ βaββ + 1 - Nat.add_one_le_ceil_iff π Mathlib.Algebra.Order.Floor.Semiring
{R : Type u_1} [Semiring R] [LinearOrder R] [FloorSemiring R] {a : R} {n : β} : n + 1 β€ βaββ β βn < a - Nat.lt_floor_add_one π Mathlib.Algebra.Order.Floor.Semiring
{R : Type u_1} [Semiring R] [LinearOrder R] [FloorSemiring R] [IsStrictOrderedRing R] (a : R) : a < ββaββ + 1 - Nat.ceil_lt_add_one π Mathlib.Algebra.Order.Floor.Semiring
{R : Type u_1} [Semiring R] [LinearOrder R] [FloorSemiring R] {a : R} [IsStrictOrderedRing R] (ha : 0 β€ a) : ββaββ < a + 1 - Nat.ceil_add_one π Mathlib.Algebra.Order.Floor.Semiring
{R : Type u_1} [Semiring R] [LinearOrder R] [FloorSemiring R] {a : R} [IsStrictOrderedRing R] (ha : 0 β€ a) : βa + 1ββ = βaββ + 1 - Nat.floor_add_one π Mathlib.Algebra.Order.Floor.Semiring
{R : Type u_1} [Semiring R] [LinearOrder R] [FloorSemiring R] {a : R} [IsStrictOrderedRing R] (ha : 0 β€ a) : βa + 1ββ = βaββ + 1 - div_add_one π Mathlib.Algebra.Field.Basic
{K : Type u_1} [DivisionSemiring K] {a b : K} (h : b β 0) : a / b + 1 = (a + b) / b - List.length_eraseIdx_add_one π Mathlib.Data.List.Basic
{ΞΉ : Type u_1} {l : List ΞΉ} {i : β} (h : i < l.length) : (l.eraseIdx i).length + 1 = l.length - List.length_erase_add_one π Mathlib.Data.List.Basic
{Ξ± : Type u} [BEq Ξ±] [LawfulBEq Ξ±] {a : Ξ±} {l : List Ξ±} (h : a β l) : (l.erase a).length + 1 = l.length - List.length_eraseP_add_one π Mathlib.Data.List.Basic
{Ξ± : Type u} {p : Ξ± β Bool} {l : List Ξ±} {a : Ξ±} (al : a β l) (pa : p a = true) : (List.eraseP p l).length + 1 = l.length - Int.ceil_le_floor_add_one π Mathlib.Algebra.Order.Floor.Ring
{R : Type u_2} [Ring R] [LinearOrder R] [FloorRing R] (a : R) : βaβ β€ βaβ + 1 - Int.add_one_le_ceil_iff π Mathlib.Algebra.Order.Floor.Ring
{R : Type u_2} [Ring R] [LinearOrder R] [FloorRing R] {z : β€} {a : R} : z + 1 β€ βaβ β βz < a
About
Loogle searches Lean and Mathlib definitions and theorems.
You can use Loogle from within the Lean4 VSCode language extension
using (by default) Ctrl-K Ctrl-S. 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.
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.
This is Loogle revision 6ff4759 serving mathlib revision 519f454