Loogle!
Result
Found 1177 declarations mentioning Nat.succ. Of these, only the first 200 are shown.
- Nat.succ π Init.Prelude
(n : β) : β - Nat.le_succ π Init.Prelude
(n : β) : n β€ n.succ - Nat.lt_succ_self π Init.Prelude
(n : β) : n < n.succ - Nat.not_succ_le_self π Init.Prelude
(n : β) : Β¬n.succ β€ n - Nat.le.step π Init.Prelude
{n m : β} : n.le m β n.le m.succ - Nat.ctorIdx_succ π Init.Prelude
{n : β} : n.succ.ctorIdx = 1 - Nat.succ_pos π Init.Prelude
(n : β) : 0 < n.succ - Nat.zero_lt_succ π Init.Prelude
(n : β) : 0 < n.succ - Nat.not_succ_le_zero π Init.Prelude
(n : β) : n.succ β€ 0 β False - Nat.le_of_lt_succ π Init.Prelude
{m n : β} : m < n.succ β m β€ n - Nat.le_succ_of_le π Init.Prelude
{n m : β} (h : n β€ m) : n β€ m.succ - Nat.lt_succ_of_le π Init.Prelude
{n m : β} : n β€ m β n < m.succ - Nat.le_of_succ_le_succ π Init.Prelude
{n m : β} : n.succ β€ m.succ β n β€ m - Nat.succ_le_succ π Init.Prelude
{n m : β} : n β€ m β n.succ β€ m.succ - Nat.ble_succ_eq_true π Init.Prelude
{n m : β} : n.ble m = true β n.ble m.succ = true - Nat.succ_sub_succ_eq_sub π Init.Prelude
(n m : β) : n.succ - m.succ = n - m - Nat.succ.inj π Init.Core
{m n : β} : m.succ = n.succ β m = n - Nat.succ.injEq π Init.Core
(u v : β) : (u.succ = v.succ) = (u = v) - Nat.succ_ne_self π Init.Data.Nat.Basic
(n : β) : n.succ β n - Nat.pred_succ π Init.Data.Nat.Basic
(n : β) : n.succ.pred = n - Nat.lt.base π Init.Data.Nat.Basic
(n : β) : n < n.succ - Nat.succ_ne_zero π Init.Data.Nat.Basic
(n : β) : n.succ β 0 - Nat.succ_succ_ne_one π Init.Data.Nat.Basic
(a : β) : a.succ.succ β 1 - Nat.le_of_succ_le π Init.Data.Nat.Basic
{n m : β} (h : n.succ β€ m) : n β€ m - Nat.le_step π Init.Data.Nat.Basic
{n m : β} (h : n β€ m) : n β€ m.succ - Nat.lt_of_succ_le π Init.Data.Nat.Basic
{n m : β} (h : n.succ β€ m) : n < m - Nat.lt_of_succ_lt π Init.Data.Nat.Basic
{n m : β} : n.succ < m β n < m - Nat.lt_succ_of_lt π Init.Data.Nat.Basic
{a b : β} (h : a < b) : a < b.succ - Nat.recCompiled π Init.Data.Nat.Basic
{motive : β β Sort u} (zero : motive Nat.zero) (succ : (n : β) β motive n β motive n.succ) (t : β) : motive t - Nat.succ_inj π Init.Data.Nat.Basic
{a b : β} : a.succ = b.succ β a = b - Nat.succ_le_of_lt π Init.Data.Nat.Basic
{n m : β} (h : n < m) : n.succ β€ m - Nat.succ_ne_succ_iff π Init.Data.Nat.Basic
{a b : β} : a.succ β b.succ β a β b - Nat.lt.step π Init.Data.Nat.Basic
{n m : β} : n < m β n < m.succ - Nat.lt_of_succ_lt_succ π Init.Data.Nat.Basic
{n m : β} : n.succ < m.succ β n < m - Nat.lt_pred_of_succ_lt π Init.Data.Nat.Basic
{n m : β} : n.succ < m β n < m.pred - Nat.lt_succ π Init.Data.Nat.Basic
{m n : β} : m < n.succ β m β€ n - Nat.lt_succ_iff π Init.Data.Nat.Basic
{m n : β} : m < n.succ β m β€ n - Nat.pred_le_of_le_succ π Init.Data.Nat.Basic
{n m : β} : n β€ m.succ β n.pred β€ m - Nat.succ_le_iff π Init.Data.Nat.Basic
{m n : β} : m.succ β€ n β m < n - Nat.succ_lt_succ π Init.Data.Nat.Basic
{n m : β} : n < m β n.succ < m.succ - Nat.succ_lt_of_lt_pred π Init.Data.Nat.Basic
{n : β} {m : β} : n < m.pred β n.succ < m - Nat.le_succ_of_pred_le π Init.Data.Nat.Basic
{n : β} {m : β} : n.pred β€ m β n β€ m.succ - Nat.succ_le_succ_iff π Init.Data.Nat.Basic
{a b : β} : a.succ β€ b.succ β a β€ b - Nat.succ_lt_succ_iff π Init.Data.Nat.Basic
{a b : β} : a.succ < b.succ β a < b - Nat.succ_pred π Init.Data.Nat.Basic
{a : β} (h : a β 0) : a.pred.succ = a - Nat.lt_pred_iff π Init.Data.Nat.Basic
{n : β} {m : β} : n < m.pred β n.succ < m - Nat.lt_pred_iff_succ_lt π Init.Data.Nat.Basic
{n : β} {m : β} : n < m.pred β n.succ < m - Nat.pred_le_iff π Init.Data.Nat.Basic
{n : β} {m : β} : n.pred β€ m β n β€ m.succ - Nat.pred_le_iff_le_succ π Init.Data.Nat.Basic
{n : β} {m : β} : n.pred β€ m β n β€ m.succ - Nat.rec_eq_recCompiled π Init.Data.Nat.Basic
: @Nat.rec = @Nat.recCompiled - Nat.succ_pred_eq_of_ne_zero π Init.Data.Nat.Basic
{n : β} : n β 0 β n.pred.succ = n - Nat.exists_eq_succ_of_ne_zero π Init.Data.Nat.Basic
{n : β} : n β 0 β β k, n = k.succ - Nat.succ_pred_eq_of_pos π Init.Data.Nat.Basic
{n : β} : 0 < n β n.pred.succ = n - Nat.add_one π Init.Data.Nat.Basic
(n : β) : n + 1 = n.succ - Nat.eq_zero_or_eq_succ_pred π Init.Data.Nat.Basic
(n : β) : n = 0 β¨ n = n.pred.succ - Nat.succ_eq_add_one π Init.Data.Nat.Basic
(n : β) : n.succ = n + 1 - Nat.le_or_eq_of_le_succ π Init.Data.Nat.Basic
{m n : β} (h : m β€ n.succ) : m β€ n β¨ m = n.succ - Nat.lt_succ_iff_lt_or_eq π Init.Data.Nat.Basic
{m n : β} : m < n.succ β m < n β¨ m = n - Nat.lt_of_sub_eq_succ π Init.Data.Nat.Basic
{m n l : β} (h : m - n = l.succ) : n < m - Nat.add_succ π Init.Data.Nat.Basic
(n m : β) : n + m.succ = (n + m).succ - Nat.sub_le_succ_sub π Init.Data.Nat.Basic
(a i : β) : a - i β€ a.succ - i - Nat.sub_succ π Init.Data.Nat.Basic
(n m : β) : n - m.succ = (n - m).pred - Nat.succ_add π Init.Data.Nat.Basic
(n m : β) : n.succ + m = (n + m).succ - Nat.succ_sub_succ π Init.Data.Nat.Basic
(n m : β) : n.succ - m.succ = n - m - Nat.succ_sub π Init.Data.Nat.Basic
{m n : β} (h : n β€ m) : m.succ - n = (m - n).succ - Nat.mul_succ π Init.Data.Nat.Basic
(n m : β) : n * m.succ = n * m + n - Nat.succ_mul π Init.Data.Nat.Basic
(n m : β) : n.succ * m = n * m + m - Nat.pow_succ π Init.Data.Nat.Basic
(n m : β) : n ^ m.succ = n ^ m * n - Nat.caseStrongRecOn π Init.WF
{motive : β β Sort u} (a : β) (zero : motive 0) (ind : (n : β) β ((m : β) β m β€ n β motive m) β motive n.succ) : motive a - Int.negSucc_emod_ofNat π Init.Data.Int.DivMod.Basic
{a b : β} : Int.negSucc a % βb = Int.subNatNat b (a % b).succ - Int.negSucc_ediv_ofNat_succ π Init.Data.Int.DivMod.Basic
{a b : β} : Int.negSucc a / β(b + 1) = Int.negSucc (a / b.succ) - Int.negSucc_emod_negSucc π Init.Data.Int.DivMod.Basic
{a b : β} : Int.negSucc a % Int.negSucc b = Int.subNatNat (b + 1) (a % (b + 1)).succ - Int.neg_ofNat_succ π Init.Data.Int.Lemmas
(n : β) : -βn.succ = Int.negSucc n - Int.negSucc_add_ofNat π Init.Data.Int.Lemmas
(m n : β) : Int.negSucc m + βn = Int.subNatNat n m.succ - Int.ofNat_add_negSucc π Init.Data.Int.Lemmas
(m n : β) : βm + Int.negSucc n = Int.subNatNat m n.succ - Int.subNatNat_of_sub_eq_succ π Init.Data.Int.Lemmas
{m n k : β} (h : n - m = k.succ) : Int.subNatNat m n = Int.negSucc k - Int.natCast_succ π Init.Data.Int.Lemmas
(n : β) : βn.succ = βn + 1 - Int.negOfNat_mul_negSucc π Init.Data.Int.Lemmas
(m n : β) : Int.negOfNat n * Int.negSucc m = Int.ofNat (n * m.succ) - Int.negSucc_add_negSucc π Init.Data.Int.Lemmas
(m n : β) : Int.negSucc m + Int.negSucc n = Int.negSucc (m + n).succ - Int.negSucc_mul_negOfNat π Init.Data.Int.Lemmas
(m n : β) : Int.negSucc m * Int.negOfNat n = Int.ofNat (m.succ * n) - Int.subNatNat_add_negSucc π Init.Data.Int.Lemmas
(m n k : β) : Int.subNatNat m n + Int.negSucc k = Int.subNatNat m (n + k.succ) - Int.ofNat_add_negSucc_of_lt π Init.Data.Int.Lemmas
{m n : β} (h : m < n.succ) : Int.ofNat m + Int.negSucc n = Int.negSucc (n - m) - Int.negSucc_mul_negSucc π Init.Data.Int.Lemmas
(m n : β) : Int.negSucc m * Int.negSucc n = βm.succ * βn.succ - Int.negSucc_mul_ofNat π Init.Data.Int.Lemmas
(m n : β) : Int.negSucc m * βn = -β(m.succ * n) - Int.ofNat_mul_negSucc π Init.Data.Int.Lemmas
(m n : β) : βm * Int.negSucc n = -β(m * n.succ) - Int.negSucc_mul_subNatNat π Init.Data.Int.Lemmas
(m n k : β) : Int.negSucc m * Int.subNatNat n k = Int.subNatNat (m.succ * k) (m.succ * n) - Int.natAbs_negSucc π Init.Data.Int.Order
(n : β) : (Int.negSucc n).natAbs = n.succ - Int.ofNat_succ_pos π Init.Data.Int.Order
(n : β) : 0 < βn.succ - Int.lt.dest π Init.Data.Int.Order
{a b : β€} (h : a < b) : β n, a + βn.succ = b - Nat.gcd_succ π Init.Data.Nat.Gcd
(x y : β) : x.succ.gcd y = (y % x.succ).gcd x.succ - Nat.not_succ_lt_self π Init.Data.Nat.Lemmas
{n : β} : Β¬n.succ < n - Nat.one_lt_succ_succ π Init.Data.Nat.Lemmas
(n : β) : 1 < n.succ.succ - Nat.pred_eq_of_eq_succ π Init.Data.Nat.Lemmas
{m n : β} (H : m = n.succ) : m.pred = n - Nat.succ_ne_succ π Init.Data.Nat.Lemmas
{m n : β} : m.succ β n.succ β m β n - Nat.mod_succ π Init.Data.Nat.Lemmas
(n : β) : n % n.succ = n - Nat.succ_le π Init.Data.Nat.Lemmas
{n m : β} : n.succ β€ m β n < m - Nat.sub_lt_succ π Init.Data.Nat.Lemmas
(a b : β) : a - b < a.succ - Nat.succ_max_succ π Init.Data.Nat.Lemmas
(x y : β) : max x.succ y.succ = (max x y).succ - Nat.succ_min_succ π Init.Data.Nat.Lemmas
(x y : β) : min x.succ y.succ = (min x y).succ - Nat.one_add π Init.Data.Nat.Lemmas
(n : β) : 1 + n = n.succ - Nat.succ_eq_one_add π Init.Data.Nat.Lemmas
(n : β) : n.succ = 1 + n - Nat.succ_sub_one π Init.Data.Nat.Lemmas
(n : β) : n.succ - 1 = n - Nat.le_succ_iff π Init.Data.Nat.Lemmas
{m n : β} : m β€ n.succ β m β€ n β¨ m = n.succ - Nat.mod_succ_eq_iff_lt π Init.Data.Nat.Lemmas
{m n : β} : m % n.succ = m β m < n.succ - Nat.succ_add_eq_add_succ π Init.Data.Nat.Lemmas
(a b : β) : a.succ + b = a + b.succ - Nat.succ_mul_pos π Init.Data.Nat.Lemmas
{n : β} (m : β) (hn : 0 < n) : 0 < m.succ * n - Nat.add_succ_sub_one π Init.Data.Nat.Lemmas
(m n : β) : m + n.succ - 1 = m + n - Nat.sub_succ' π Init.Data.Nat.Lemmas
(m n : β) : m - n.succ = m - n - 1 - Nat.succ_add_sub_one π Init.Data.Nat.Lemmas
(n m : β) : m.succ + n - 1 = m + n - Nat.pow_succ' π Init.Data.Nat.Lemmas
{m n : β} : m ^ n.succ = m * m ^ n - Nat.succ_sub_sub_succ π Init.Data.Nat.Lemmas
(n m k : β) : n.succ - m - k.succ = n - m - k - Nat.succ_mul_succ π Init.Data.Nat.Lemmas
(a b : β) : a.succ * b.succ = a * b + a + b + 1 - Nat.succ_mul_succ_eq π Init.Data.Nat.Lemmas
(a b : β) : a.succ * b.succ = a * b + a + b + 1 - Int.pow_succ π Init.Data.Int.Pow
(m : β€) (n : β) : m ^ n.succ = m ^ n * m - Int.negSucc_pow π Init.Data.Int.Pow
(m n : β) : Int.negSucc m ^ n = if n % 2 = 0 then Int.ofNat (m.succ ^ n) else Int.negOfNat (m.succ ^ n) - Nat.testBit_succ π Init.Data.Nat.Bitwise.Lemmas
(x i : β) : x.testBit i.succ = (x / 2).testBit i - Fin.cast_succ_eq π Init.Data.Fin.Lemmas
{n n' : β} (i : Fin n) (h : n.succ = n'.succ) : Fin.cast h i.succ = (Fin.cast β― i).succ - Fin.castLE_zero π Init.Data.Fin.Lemmas
{n m : β} (h : n.succ β€ m.succ) : Fin.castLE h 0 = 0 - Fin.succ_eq_last_succ π Init.Data.Fin.Lemmas
{n : β} {i : Fin n.succ} : i.succ = Fin.last (n + 1) β i = Fin.last n - Fin.succ_last π Init.Data.Fin.Lemmas
(n : β) : (Fin.last n).succ = Fin.last n.succ - Fin.pred_le_pred_iff π Init.Data.Fin.Lemmas
{n : β} {a b : Fin n.succ} {ha : a β 0} {hb : b β 0} : a.pred ha β€ b.pred hb β a β€ b - Fin.pred_lt_pred_iff π Init.Data.Fin.Lemmas
{n : β} {a b : Fin n.succ} {ha : a β 0} {hb : b β 0} : a.pred ha < b.pred hb β a < b - 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.succRec π Init.Data.Fin.Lemmas
{motive : (n : β) β Fin n β Sort u_1} (zero : (n : β) β motive n.succ 0) (succ : (n : β) β (i : Fin n) β motive n i β motive n.succ i.succ) {n : β} (i : Fin n) : motive n i - Fin.succRecOn π Init.Data.Fin.Lemmas
{n : β} (i : Fin n) {motive : (n : β) β Fin n β Sort u_1} (zero : (n : β) β motive (n + 1) 0) (succ : (n : β) β (i : Fin n) β motive n i β motive n.succ i.succ) : motive n i - Fin.castLE_succ π Init.Data.Fin.Lemmas
{m n : β} (h : m + 1 β€ n + 1) (i : Fin m) : Fin.castLE h i.succ = (Fin.castLE β― i).succ - Fin.mk_succ_pos π Init.Data.Fin.Lemmas
{n : β} (i : β) (h : i < n) : 0 < β¨i.succ, β―β© - Fin.succRecOn_succ π Init.Data.Fin.Lemmas
{motive : (n : β) β Fin n β Sort u_1} {zero : (n : β) β motive (n + 1) 0} {succ : (n : β) β (i : Fin n) β motive n i β motive n.succ i.succ} {n : β} (i : Fin n) : i.succ.succRecOn zero succ = succ n i (i.succRecOn zero succ) - Fin.cases_succ' π Init.Data.Fin.Lemmas
{n : β} {motive : Fin (n + 1) β Sort u_1} {zero : motive 0} {succ : (i : Fin n) β motive i.succ} {i : β} (h : i + 1 < n + 1) : Fin.cases zero succ β¨i.succ, hβ© = succ β¨i, β―β© - Fin.succRecOn_zero π Init.Data.Fin.Lemmas
{motive : (n : β) β Fin n β Sort u_1} {zero : (n : β) β motive (n + 1) 0} {succ : (n : β) β (i : Fin n) β motive n i β motive n.succ i.succ} (n : β) : Fin.succRecOn 0 zero succ = zero n - List.getElem_cons π Init.Data.List.Lemmas
{Ξ± : Type u_1} {i : β} {a : Ξ±} {l : List Ξ±} (w : i < (a :: l).length) : (a :: l)[i] = if h : i = 0 then a else l[i - 1] - List.IsPrefix.getElem π Init.Data.List.Sublist
{Ξ± : Type u_1} {xs ys : List Ξ±} (h : xs <+: ys) {i : β} (hi : i < xs.length) : xs[i] = ys[i] - Int.emod_negSucc π Init.Data.Int.DivMod.Lemmas
(m : β) (n : β€) : Int.negSucc m % n = Int.subNatNat n.natAbs (m % n.natAbs).succ - Int.natCast_succ_pos π Init.Data.Int.LemmasAux
(n : β) : 0 < βn.succ - Int.ofNat_add_one_out π Init.Data.Int.LemmasAux
(n : β) : βn + 1 = βn.succ - List.range_succ π Init.Data.List.Range
{n : β} : List.range n.succ = List.range n ++ [n] - List.range_succ_eq_map π Init.Data.List.Range
{n : β} : List.range (n + 1) = 0 :: List.map Nat.succ (List.range n) - List.not_of_lt_findIdx π Init.Data.List.Find
{Ξ± : Type u_1} {p : Ξ± β Bool} {xs : List Ξ±} {i : β} (h : i < List.findIdx p xs) : p xs[i] = false - Std.Iter.atIdxSlow?.induct_unfolding π Init.Data.Iterators.Consumers.Access
{Ξ± Ξ² : Type u} [Std.Iterator Ξ± Id Ξ²] [Std.Iterators.Productive Ξ± Id] (motive : β β Std.Iter Ξ² β Option Ξ² β Prop) (yield_zero : β (it it' : Std.Iter Ξ²) (out : Ξ²) (property : it.IsPlausibleStep (Std.IterStep.yield it' out)), it.step = β¨Std.IterStep.yield it' out, propertyβ© β motive 0 it (some out)) (yield_succ : β (it it' : Std.Iter Ξ²) (out : Ξ²) (property : it.IsPlausibleStep (Std.IterStep.yield it' out)), it.step = β¨Std.IterStep.yield it' out, propertyβ© β β (k : β), motive k it' (Std.Iter.atIdxSlow? k it') β motive k.succ it (Std.Iter.atIdxSlow? k it')) (skip_case : β (n : β) (it it' : Std.Iter Ξ²) (property : it.IsPlausibleStep (Std.IterStep.skip it')), it.step = β¨Std.IterStep.skip it', propertyβ© β motive n it' (Std.Iter.atIdxSlow? n it') β motive n it (Std.Iter.atIdxSlow? n it')) (done_case : β (n : β) (it : Std.Iter Ξ²) (property : it.IsPlausibleStep Std.IterStep.done), it.step = β¨Std.IterStep.done, propertyβ© β motive n it none) (n : β) (it : Std.Iter Ξ²) : motive n it (Std.Iter.atIdxSlow? n it) - Array.not_of_lt_findIdx π Init.Data.Array.Find
{Ξ± : Type u_1} {p : Ξ± β Bool} {xs : Array Ξ±} {i : β} (h : i < Array.findIdx p xs) : p xs[i] = false - Array.range_succ π Init.Data.Array.Range
{n : β} : Array.range n.succ = Array.range n ++ #[n] - Array.range_succ_eq_map π Init.Data.Array.Range
{n : β} : Array.range (n + 1) = #[0] ++ Array.map Nat.succ (Array.range n) - Subarray.split π Init.Data.Array.Subarray.Split
{Ξ± : Type u_1} (s : Subarray Ξ±) (i : Fin (Std.Slice.size s).succ) : Subarray Ξ± Γ Subarray Ξ± - Vector.range_succ π Init.Data.Vector.Range
{n : β} : Vector.range n.succ = Vector.range n ++ #v[n] - Vector.range_succ_eq_map π Init.Data.Vector.Range
{n : β} : Vector.range (n + 1) = Vector.cast β― (#v[0] ++ Vector.map Nat.succ (Vector.range n)) - Std.Time.Internal.Bounded.LE.ofFin π Std.Time.Internal.Bounded
{hi : β} (fin : Fin hi.succ) : Std.Time.Internal.Bounded.LE 0 βhi - Std.Time.Internal.Bounded.LE.ofFin' π Std.Time.Internal.Bounded
{hi lo : β} (fin : Fin hi.succ) (h : lo β€ hi) : Std.Time.Internal.Bounded.LE βlo βhi - Fin.dfoldlM_loop_eq π Batteries.Data.Fin.Fold
{m : Type u_1 β Type u_2} {n : β} {Ξ± : Fin (n + 1) β Type u_1} [Monad m] (f : (i : Fin n) β Ξ± i.castSucc β m (Ξ± i.succ)) (x : Ξ± β¨n, β―β©) : Fin.dfoldlM.loop n Ξ± f n β― x = pure x - Nat.log2_eq_succ_log2_shiftRight π Mathlib.Data.Nat.BinaryRec
{n : β} (hn : n >>> 1 β 0) : n.log2 = (n >>> 1).log2.succ - DivInvMonoid.zpow_neg' π Mathlib.Algebra.Group.Defs
{G : Type u} [self : DivInvMonoid G] (n : β) (a : G) : DivInvMonoid.zpow (Int.negSucc n) a = (DivInvMonoid.zpow (βn.succ) a)β»ΒΉ - SubNegMonoid.zsmul_neg' π Mathlib.Algebra.Group.Defs
{G : Type u} [self : SubNegMonoid G] (n : β) (a : G) : SubNegMonoid.zsmul (Int.negSucc n) a = -SubNegMonoid.zsmul (βn.succ) a - DivInvMonoid.zpow_succ' π Mathlib.Algebra.Group.Defs
{G : Type u} [self : DivInvMonoid G] (n : β) (a : G) : DivInvMonoid.zpow (βn.succ) a = DivInvMonoid.zpow (βn) a * a - SubNegMonoid.zsmul_succ' π Mathlib.Algebra.Group.Defs
{G : Type u} [self : SubNegMonoid G] (n : β) (a : G) : SubNegMonoid.zsmul (βn.succ) a = SubNegMonoid.zsmul (βn) a + a - DivInvMonoid.mk π Mathlib.Algebra.Group.Defs
{G : Type u} [toMonoid : Monoid G] [toInv : Inv G] [toDiv : Div G] (div_eq_mul_inv : β (a b : G), a / b = a * bβ»ΒΉ := by intros; rfl) (zpow : β€ β G β G) (zpow_zero' : β (a : G), zpow 0 a = 1 := by intros; rfl) (zpow_succ' : β (n : β) (a : G), zpow (βn.succ) a = zpow (βn) a * a := by intros; rfl) (zpow_neg' : β (n : β) (a : G), zpow (Int.negSucc n) a = (zpow (βn.succ) a)β»ΒΉ := by intros; rfl) : DivInvMonoid G - SubNegMonoid.mk π Mathlib.Algebra.Group.Defs
{G : Type u} [toAddMonoid : AddMonoid G] [toNeg : Neg G] [toSub : Sub G] (sub_eq_add_neg : β (a b : G), a - b = a + -b := by intros; rfl) (zsmul : β€ β G β G) (zsmul_zero' : β (a : G), zsmul 0 a = 0 := by intros; rfl) (zsmul_succ' : β (n : β) (a : G), zsmul (βn.succ) a = zsmul (βn) a + a := by intros; rfl) (zsmul_neg' : β (n : β) (a : G), zsmul (Int.negSucc n) a = -zsmul (βn.succ) a := by intros; rfl) : SubNegMonoid G - Function.iterate_succ_apply π Mathlib.Logic.Function.Iterate
{Ξ± : Type u} (f : Ξ± β Ξ±) (n : β) (x : Ξ±) : f^[n.succ] x = f^[n] (f x) - Function.iterate_succ_apply' π Mathlib.Logic.Function.Iterate
{Ξ± : Type u} (f : Ξ± β Ξ±) (n : β) (x : Ξ±) : f^[n.succ] x = f (f^[n] x) - Function.iterate_succ π Mathlib.Logic.Function.Iterate
{Ξ± : Type u} (f : Ξ± β Ξ±) (n : β) : f^[n.succ] = f^[n] β f - Function.iterate_succ' π Mathlib.Logic.Function.Iterate
{Ξ± : Type u} (f : Ξ± β Ξ±) (n : β) : f^[n.succ] = f β f^[n] - pairwise_fin_succ_iff_of_isSymm π Mathlib.Logic.Pairwise
{n : β} {R : Fin n.succ β Fin n.succ β Prop} [Std.Symm R] : Pairwise R β (β (j : Fin n), R 0 j.succ) β§ Pairwise fun i j => R i.succ j.succ - pairwise_fin_succ_iff π Mathlib.Logic.Pairwise
{n : β} {R : Fin n.succ β Fin n.succ β Prop} : Pairwise R β (β (i : Fin n), R i.succ 0) β§ (β (j : Fin n), R 0 j.succ) β§ Pairwise fun i j => R i.succ j.succ - Nat.succ_pos' π Mathlib.Data.Nat.Init
{n : β} : 0 < n.succ - LT.lt.nat_succ_le π Mathlib.Data.Nat.Init
{n m : β} (h : n < m) : n.succ β€ m - Nat.of_le_succ π Mathlib.Data.Nat.Init
{m n : β} : m β€ n.succ β m β€ n β¨ m = n.succ - Nat.pincerRecursion π Mathlib.Data.Nat.Init
{P : β β β β Sort u_1} (Ha0 : (m : β) β P m 0) (H0b : (n : β) β P 0 n) (H : (x y : β) β P x y.succ β P x.succ y β P x.succ y.succ) (n m : β) : P n m - Nat.leRec_succ' π Mathlib.Data.Nat.Init
{n : β} {motive : (m : β) β n β€ m β Sort u_1} (refl : motive n β―) (le_succ_of_le : β¦k : ββ¦ β (h : n β€ k) β motive k h β motive (k + 1) β―) : Nat.leRec refl le_succ_of_le β― = le_succ_of_le β― refl - Nat.succ_injective π Mathlib.Data.Nat.Basic
: Function.Injective Nat.succ - Int.lt.elim π Mathlib.Data.Int.Order.Basic
{a b : β€} (h : a < b) {P : Prop} (h' : β (n : β), a + βn.succ = b β P) : P - Nat.mem_range_succ π Mathlib.Data.Set.Image
(i : β) : i β Set.range Nat.succ β 0 < i - Int.pred_nat_succ π Mathlib.Data.Int.Init
(n : β) : (βn.succ).pred = βn - Int.neg_nat_succ π Mathlib.Data.Int.Init
(n : β) : -βn.succ = (-βn).pred - Int.succ_neg_natCast_succ π Mathlib.Data.Int.Init
(n : β) : (-βn.succ).succ = -βn - Int.ofNat_add_negSucc_of_ge π Mathlib.Data.Int.Init
{m n : β} (h : n.succ β€ m) : Int.ofNat m + Int.negSucc n = Int.ofNat (m - n.succ) - Plausible.Random.instFinSucc π Plausible.Random
{m : Type β Type u_1} [Monad m] {n : β} : Plausible.Random m (Fin n.succ) - Plausible.Random.randFin π Plausible.Random
{m : Type β Type u_1} [Monad m] {g : Type} {n : β} [RandomGen g] : Plausible.RandGT g m (Fin n.succ) - Plausible.Fin.Arbitrary π Plausible.Arbitrary
{n : β} : Plausible.Arbitrary (Fin n.succ) - Plausible.Fin.shrinkable π Plausible.Sampleable
{n : β} : Plausible.Shrinkable (Fin n.succ) - CommGroupWithZero.zpow_neg' π Mathlib.Algebra.GroupWithZero.Defs
{Gβ : Type u_2} [self : CommGroupWithZero Gβ] (n : β) (a : Gβ) : CommGroupWithZero.zpow (Int.negSucc n) a = (CommGroupWithZero.zpow (βn.succ) a)β»ΒΉ - GroupWithZero.zpow_neg' π Mathlib.Algebra.GroupWithZero.Defs
{Gβ : Type u} [self : GroupWithZero Gβ] (n : β) (a : Gβ) : GroupWithZero.zpow (Int.negSucc n) a = (GroupWithZero.zpow (βn.succ) a)β»ΒΉ - GroupWithZero.zpow_succ' π Mathlib.Algebra.GroupWithZero.Defs
{Gβ : Type u} [self : GroupWithZero Gβ] (n : β) (a : Gβ) : GroupWithZero.zpow (βn.succ) a = GroupWithZero.zpow (βn) a * a - CommGroupWithZero.zpow_succ' π Mathlib.Algebra.GroupWithZero.Defs
{Gβ : Type u_2} [self : CommGroupWithZero Gβ] (n : β) (a : Gβ) : CommGroupWithZero.zpow (βn.succ) a = CommGroupWithZero.zpow (βn) a * a - GroupWithZero.mk π Mathlib.Algebra.GroupWithZero.Defs
{Gβ : Type u} [toMonoidWithZero : MonoidWithZero Gβ] [toInv : Inv Gβ] [toDiv : Div Gβ] (div_eq_mul_inv : β (a b : Gβ), a / b = a * bβ»ΒΉ := by intros; rfl) (zpow : β€ β Gβ β Gβ) (zpow_zero' : β (a : Gβ), zpow 0 a = 1 := by intros; rfl) (zpow_succ' : β (n : β) (a : Gβ), zpow (βn.succ) a = zpow (βn) a * a := by intros; rfl) (zpow_neg' : β (n : β) (a : Gβ), zpow (Int.negSucc n) a = (zpow (βn.succ) a)β»ΒΉ := by intros; rfl) [toNontrivial : Nontrivial Gβ] (inv_zero : 0β»ΒΉ = 0) (mul_inv_cancel : β (a : Gβ), a β 0 β a * aβ»ΒΉ = 1) : GroupWithZero Gβ - CommGroupWithZero.mk π Mathlib.Algebra.GroupWithZero.Defs
{Gβ : Type u_2} [toCommMonoidWithZero : CommMonoidWithZero Gβ] [toInv : Inv Gβ] [toDiv : Div Gβ] (div_eq_mul_inv : β (a b : Gβ), a / b = a * bβ»ΒΉ := by intros; rfl) (zpow : β€ β Gβ β Gβ) (zpow_zero' : β (a : Gβ), zpow 0 a = 1 := by intros; rfl) (zpow_succ' : β (n : β) (a : Gβ), zpow (βn.succ) a = zpow (βn) a * a := by intros; rfl) (zpow_neg' : β (n : β) (a : Gβ), zpow (Int.negSucc n) a = (zpow (βn.succ) a)β»ΒΉ := by intros; rfl) [toNontrivial : Nontrivial Gβ] (inv_zero : 0β»ΒΉ = 0) (mul_inv_cancel : β (a : Gβ), a β 0 β a * aβ»ΒΉ = 1) : CommGroupWithZero Gβ - IsNilpotent.pow_succ π Mathlib.Algebra.GroupWithZero.Basic
(n : β) {S : Type u_5} [MonoidWithZero S] {x : S} (hx : IsNilpotent x) : IsNilpotent (x ^ n.succ) - Nat.cast_succ π Mathlib.Data.Nat.Cast.Defs
{R : Type u_1} [AddMonoidWithOne R] (n : β) : βn.succ = βn + 1 - AddGroupWithOne.zsmul_neg' π Mathlib.Data.Int.Cast.Defs
{R : Type u} [self : AddGroupWithOne R] (n : β) (a : R) : AddGroupWithOne.zsmul (Int.negSucc n) a = -AddGroupWithOne.zsmul (βn.succ) a - AddGroupWithOne.zsmul_succ' π Mathlib.Data.Int.Cast.Defs
{R : Type u} [self : AddGroupWithOne R] (n : β) (a : R) : AddGroupWithOne.zsmul (βn.succ) a = AddGroupWithOne.zsmul (βn) a + a - AddGroupWithOne.mk π Mathlib.Data.Int.Cast.Defs
{R : Type u} [toIntCast : IntCast R] [toAddMonoidWithOne : AddMonoidWithOne R] [toNeg : Neg R] [toSub : Sub R] (sub_eq_add_neg : β (a b : R), a - b = a + -b := by intros; rfl) (zsmul : β€ β R β R) (zsmul_zero' : β (a : R), zsmul 0 a = 0 := by intros; rfl) (zsmul_succ' : β (n : β) (a : R), zsmul (βn.succ) a = zsmul (βn) a + a := by intros; rfl) (zsmul_neg' : β (n : β) (a : R), zsmul (Int.negSucc n) a = -zsmul (βn.succ) a := by intros; rfl) (neg_add_cancel : β (a : R), -a + a = 0) (intCast_ofNat : β (n : β), IntCast.intCast βn = βn := by intros; rfl) (intCast_negSucc : β (n : β), IntCast.intCast (Int.negSucc n) = -β(n + 1) := by intros; rfl) : AddGroupWithOne R - Ring.zsmul_neg' π Mathlib.Algebra.Ring.Defs
{R : Type u} [self : Ring R] (n : β) (a : R) : Ring.zsmul (Int.negSucc n) a = -Ring.zsmul (βn.succ) a - Ring.zsmul_succ' π Mathlib.Algebra.Ring.Defs
{R : Type u} [self : Ring R] (n : β) (a : R) : Ring.zsmul (βn.succ) a = Ring.zsmul (βn) a + a - Ring.mk π Mathlib.Algebra.Ring.Defs
{R : Type u} [toSemiring : Semiring R] [toNeg : Neg R] [toSub : Sub R] (sub_eq_add_neg : β (a b : R), a - b = a + -b := by intros; rfl) (zsmul : β€ β R β R) (zsmul_zero' : β (a : R), zsmul 0 a = 0 := by intros; rfl) (zsmul_succ' : β (n : β) (a : R), zsmul (βn.succ) a = zsmul (βn) a + a := by intros; rfl) (zsmul_neg' : β (n : β) (a : R), zsmul (Int.negSucc n) a = -zsmul (βn.succ) a := by intros; rfl) (neg_add_cancel : β (a : R), -a + a = 0) [toIntCast : IntCast R] (intCast_ofNat : β (n : β), IntCast.intCast βn = βn := by intros; rfl) (intCast_negSucc : β (n : β), IntCast.intCast (Int.negSucc n) = -β(n + 1) := by intros; rfl) : Ring R - Nat.sqrt_succ_le_succ_sqrt π Mathlib.Data.Nat.Sqrt
(n : β) : n.succ.sqrt β€ n.sqrt.succ - Nat.lt_succ_sqrt π Mathlib.Data.Nat.Sqrt
(n : β) : n < n.sqrt.succ * n.sqrt.succ - Nat.lt_succ_sqrt' π Mathlib.Data.Nat.Sqrt
(n : β) : n < n.sqrt.succ ^ 2 - LinearOrderedAddCommGroupWithTop.zsmul_neg' π Mathlib.Algebra.Order.AddGroupWithTop
{Ξ± : Type u_3} [self : LinearOrderedAddCommGroupWithTop Ξ±] (n : β) (a : Ξ±) : LinearOrderedAddCommGroupWithTop.zsmul (Int.negSucc n) a = -LinearOrderedAddCommGroupWithTop.zsmul (βn.succ) a - LinearOrderedAddCommGroupWithTop.zsmul_succ' π Mathlib.Algebra.Order.AddGroupWithTop
{Ξ± : Type u_3} [self : LinearOrderedAddCommGroupWithTop Ξ±] (n : β) (a : Ξ±) : LinearOrderedAddCommGroupWithTop.zsmul (βn.succ) a = LinearOrderedAddCommGroupWithTop.zsmul (βn) a + a - LinearOrderedAddCommGroupWithTop.mk π Mathlib.Algebra.Order.AddGroupWithTop
{Ξ± : Type u_3} [toAddCommMonoid : AddCommMonoid Ξ±] [toLinearOrder : LinearOrder Ξ±] [toIsOrderedAddMonoid : IsOrderedAddMonoid Ξ±] [toOrderTop : OrderTop Ξ±] [toNeg : Neg Ξ±] [toSub : Sub Ξ±] (sub_eq_add_neg : β (a b : Ξ±), a - b = a + -b := by intros; rfl) (zsmul : β€ β Ξ± β Ξ±) (zsmul_zero' : β (a : Ξ±), zsmul 0 a = 0 := by intros; rfl) (zsmul_succ' : β (n : β) (a : Ξ±), zsmul (βn.succ) a = zsmul (βn) a + a := by intros; rfl) (zsmul_neg' : β (n : β) (a : Ξ±), zsmul (Int.negSucc n) a = -zsmul (βn.succ) a := by intros; rfl) [toNontrivial : Nontrivial Ξ±] (top_add' : β (x : Ξ±), β€ + x = β€) (neg_top : -β€ = β€) (add_neg_cancel_of_ne_top : β β¦x : Ξ±β¦, x β β€ β x + -x = 0) : LinearOrderedAddCommGroupWithTop Ξ± - LinearOrderedCommGroupWithZero.zpow_neg' π Mathlib.Algebra.Order.GroupWithZero.Canonical
{Ξ± : Type u_3} [self : LinearOrderedCommGroupWithZero Ξ±] (n : β) (a : Ξ±) : LinearOrderedCommGroupWithZero.zpow (Int.negSucc n) a = (LinearOrderedCommGroupWithZero.zpow (βn.succ) a)β»ΒΉ - LinearOrderedCommGroupWithZero.zpow_succ' π Mathlib.Algebra.Order.GroupWithZero.Canonical
{Ξ± : Type u_3} [self : LinearOrderedCommGroupWithZero Ξ±] (n : β) (a : Ξ±) : LinearOrderedCommGroupWithZero.zpow (βn.succ) a = LinearOrderedCommGroupWithZero.zpow (βn) a * a - LinearOrderedCommGroupWithZero.mk π Mathlib.Algebra.Order.GroupWithZero.Canonical
{Ξ± : Type u_3} [toLinearOrderedCommMonoidWithZero : LinearOrderedCommMonoidWithZero Ξ±] [toInv : Inv Ξ±] [toDiv : Div Ξ±] (div_eq_mul_inv : β (a b : Ξ±), a / b = a * bβ»ΒΉ := by intros; rfl) (zpow : β€ β Ξ± β Ξ±) (zpow_zero' : β (a : Ξ±), zpow 0 a = 1 := by intros; rfl) (zpow_succ' : β (n : β) (a : Ξ±), zpow (βn.succ) a = zpow (βn) a * a := by intros; rfl) (zpow_neg' : β (n : β) (a : Ξ±), zpow (Int.negSucc n) a = (zpow (βn.succ) a)β»ΒΉ := by intros; rfl) [toNontrivial : Nontrivial Ξ±] (inv_zero : 0β»ΒΉ = 0) (mul_inv_cancel : β (a : Ξ±), a β 0 β a * aβ»ΒΉ = 1) : LinearOrderedCommGroupWithZero Ξ±
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 401c76f serving mathlib revision b87935d