Loogle!
Result
Found 2301 declarations whose name contains "_def". Of these, only the first 200 are shown.
- sizeOf_default π Init.SizeOf
{Ξ± : Sort u_1} (n : Ξ±) : sizeOf n = 0 - id_def π Init.Core
{Ξ± : Sort u} (a : Ξ±) : id a = a - iff_def π Init.Core
{a b : Prop} : (a β b) β (a β b) β§ (b β a) - iff_def' π Init.Core
{a b : Prop} : (a β b) β (b β a) β§ (a β b) - Function.comp_def π Init.Core
{Ξ± : Sort u_1} {Ξ² : Sort u_2} {Ξ΄ : Sort u_3} (f : Ξ² β Ξ΄) (g : Ξ± β Ξ²) : f β g = fun x => f (g x) - Prod.lexLt_def π Init.Core
{Ξ± : Type u_1} {Ξ² : Type u_2} [LT Ξ±] [LT Ξ²] (s t : Ξ± Γ Ξ²) : s.lexLt t = (s.1 < t.1 β¨ s.1 = t.1 β§ s.2 < t.2) - Nat.max_def π Init.Data.Nat.Basic
{n m : β} : max n m = if n β€ m then m else n - Nat.min_def π Init.Data.Nat.Basic
{n m : β} : min n m = if n β€ m then n else m - Prod.lex_def π Init.WF
{Ξ± : Type u} {Ξ² : Type v} {r : Ξ± β Ξ± β Prop} {s : Ξ² β Ξ² β Prop} {p q : Ξ± Γ Ξ²} : Prod.Lex r s p q β r p.1 q.1 β¨ p.1 = q.1 β§ s p.2 q.2 - Nat.mod_def π Init.Data.Nat.Div.Basic
(m k : β) : m % k = m - k * (m / k) - Fin.neg_def π Init.Data.Fin.Basic
{n : β} (a : Fin n) : -a = β¨(n - βa) % n, β―β© - outOfBounds_eq_default π Init.GetElem
{Ξ± : Sort u_1} [Inhabited Ξ±] : outOfBounds = default - LawfulGetElem.getElem!_def π Init.GetElem
{cont : Type u} {idx : Type v} {elem : outParam (Type w)} {dom : outParam (cont β idx β Prop)} {ge : GetElem? cont idx elem dom} [self : LawfulGetElem cont idx elem dom] [Inhabited elem] (c : cont) (i : idx) : c[i]! = match c[i]? with | some e => e | none => default - LawfulGetElem.getElem?_def π Init.GetElem
{cont : Type u} {idx : Type v} {elem : outParam (Type w)} {dom : outParam (cont β idx β Prop)} {ge : GetElem? cont idx elem dom} [self : LawfulGetElem cont idx elem dom] (c : cont) (i : idx) [Decidable (dom c i)] : c[i]? = if h : dom c i then some c[i] else none - Array.mem_def π Init.Data.Array.Basic
{Ξ± : Type u} {a : Ξ±} {as : Array Ξ±} : a β as β a β as.toList - Nat.log2_def π Init.Data.Nat.Log2
(n : β) : n.log2 = if 2 β€ n then (n / 2).log2 + 1 else 0 - Int.add_def π Init.Data.Int.Lemmas
{a b : β€} : a.add b = a + b - Int.mul_def π Init.Data.Int.Lemmas
{a b : β€} : a.mul b = a * b - Int.nonneg_def π Init.Data.Int.Order
{a : β€} : a.NonNeg β β n, a = βn - Int.le_def π Init.Data.Int.Order
{a b : β€} : a β€ b β (b - a).NonNeg - Int.max_def π Init.Data.Int.Order
(n m : β€) : max n m = if n β€ m then m else n - Int.min_def π Init.Data.Int.Order
(n m : β€) : min n m = if n β€ m then n else m - Int.div_def π Init.Data.Int.DivMod.Bootstrap
(a b : β€) : a / b = a.ediv b - Int.dvd_def π Init.Data.Int.DivMod.Bootstrap
(a b : β€) : (a β£ b) = β c, b = a * c - Int.emod_def π Init.Data.Int.DivMod.Bootstrap
(a b : β€) : a % b = a - b * (a / b) - Int.bmod_def π Init.Data.Int.DivMod.Bootstrap
(x : β€) (m : β) : x.bmod m = if x % βm < (βm + 1) / 2 then x % βm else x % βm - βm - Nat.gcd_def π Init.Data.Nat.Gcd
(x y : β) : x.gcd y = if x = 0 then y else (y % x).gcd x - Lean.Omega.IntList.neg_def π Init.Omega.IntList
(xs : Lean.Omega.IntList) : -xs = List.map (fun x => -x) xs - Lean.Omega.IntList.smul_def π Init.Omega.IntList
(xs : Lean.Omega.IntList) (i : β€) : i * xs = List.map (fun x => i * x) xs - Lean.Omega.IntList.mul_def π Init.Omega.IntList
(xs ys : Lean.Omega.IntList) : xs * ys = List.zipWith (fun x1 x2 => x1 * x2) xs ys - Lean.Omega.IntList.add_def π Init.Omega.IntList
(xs ys : Lean.Omega.IntList) : xs + ys = List.zipWithAll (fun x y => x.getD 0 + y.getD 0) xs ys - Lean.Omega.IntList.sub_def π Init.Omega.IntList
(xs ys : Lean.Omega.IntList) : xs - ys = List.zipWithAll (fun x y => x.getD 0 - y.getD 0) xs ys - Nat.powMod_def π Init.Data.Nat.PowMod
(b e m : β) : b.powMod e m = b ^ e % m - Fin.le_def π Init.Data.Fin.Lemmas
{n : β} {a b : Fin n} : a β€ b β βa β€ βb - Fin.lt_def π Init.Data.Fin.Lemmas
{n : β} {a b : Fin n} : a < b β βa < βb - Fin.intCast_def π Init.Data.Fin.Lemmas
{n : β} [NeZero n] (x : β€) : βx = if 0 β€ x then Fin.ofNat n x.natAbs else -Fin.ofNat n x.natAbs - Fin.add_def π Init.Data.Fin.Lemmas
{n : β} (a b : Fin n) : a + b = β¨(βa + βb) % n, β―β© - Fin.mul_def π Init.Data.Fin.Lemmas
{n : β} (a b : Fin n) : a * b = β¨βa * βb % n, β―β© - Fin.mod_def π Init.Data.Fin.Lemmas
{n : β} (a m : Fin n) : a % m = β¨βa % βm, β―β© - Fin.sub_def π Init.Data.Fin.Lemmas
{n : β} (a b : Fin n) : a - b = β¨(n - βb + βa) % n, β―β© - Option.mem_def π Init.Data.Option.Instances
{Ξ± : Type u_1} {a : Ξ±} {b : Option Ξ±} : a β b β b = some a - Option.choice_eq_default π Init.Data.Option.Lemmas
{Ξ± : Type u_1} [Subsingleton Ξ±] [Inhabited Ξ±] : Option.choice Ξ± = some default - Option.pure_def π Init.Data.Option.Lemmas
{Ξ± : Type u_1} : pure = some - Option.guard_def π Init.Data.Option.Lemmas
{Ξ± : Type u_1} (p : Ξ± β Bool) : Option.guard p = fun x => if p x = true then some x else none - List.flatMap_def π Init.Data.List.Lemmas
{Ξ± : Type u_1} {Ξ² : Type u_2} {l : List Ξ±} {f : Ξ± β List Ξ²} : List.flatMap f l = (List.map f l).flatten - List.subset_def π Init.Data.List.Sublist
{Ξ± : Type u_1} {lβ lβ : List Ξ±} : lβ β lβ β β {a : Ξ±}, a β lβ β a β lβ - Int.mod_def' π Init.Data.Int.DivMod.Lemmas
(m n : β€) : m % n = m.emod n - Int.fmod_def π Init.Data.Int.DivMod.Lemmas
(a b : β€) : a.fmod b = a - b * a.fdiv b - Int.tmod_def π Init.Data.Int.DivMod.Lemmas
(a b : β€) : a.tmod b = a - b * a.tdiv b - Int.Internal.Linear.eq_def'_cert π Init.Data.Int.Linear
(x : Int.Internal.Linear.Var) (e : Int.Internal.Linear.Expr) (p : Int.Internal.Linear.Poly) : Bool - Int.Internal.Linear.eq_def_cert π Init.Data.Int.Linear
(x : Int.Internal.Linear.Var) (xPoly p : Int.Internal.Linear.Poly) : Bool - Int.Internal.Linear.eq_def_struct_cert π Init.Data.Int.Linear
(x : Int.Internal.Linear.Var) (e : Int.Internal.Linear.Expr) (p : Int.Internal.Linear.Poly) : Bool - Int.Internal.Linear.eq_def'_norm_cert π Init.Data.Int.Linear
(x : Int.Internal.Linear.Var) (e : Int.Internal.Linear.Expr) (ePoly ePoly' p : Int.Internal.Linear.Poly) : Bool - Int.Internal.Linear.eq_def_struct_norm_cert π Init.Data.Int.Linear
(x : Int.Internal.Linear.Var) (e : Int.Internal.Linear.Expr) (ePoly ePoly' p : Int.Internal.Linear.Poly) : Bool - Int.Internal.Linear.eq_def π Init.Data.Int.Linear
(ctx : Int.Internal.Linear.Context) (x : Int.Internal.Linear.Var) (xPoly p : Int.Internal.Linear.Poly) : Int.Internal.Linear.eq_def_cert x xPoly p = true β Int.Internal.Linear.Var.denote ctx x = Int.Internal.Linear.Poly.denote' ctx xPoly β Int.Internal.Linear.Poly.denote' ctx p = 0 - Int.Internal.Linear.eq_def' π Init.Data.Int.Linear
(ctx : Int.Internal.Linear.Context) (x : Int.Internal.Linear.Var) (e : Int.Internal.Linear.Expr) (p : Int.Internal.Linear.Poly) : Int.Internal.Linear.eq_def'_cert x e p = true β Int.Internal.Linear.Var.denote ctx x = Int.Internal.Linear.Expr.denote ctx e β Int.Internal.Linear.Poly.denote' ctx p = 0 - Int.Internal.Linear.eq_def_struct π Init.Data.Int.Linear
(ctx : Int.Internal.Linear.Context) (x : Int.Internal.Linear.Var) (e : Int.Internal.Linear.Expr) (p : Int.Internal.Linear.Poly) : Int.Internal.Linear.eq_def_struct_cert x e p = true β Int.Internal.Linear.Var.denote ctx x = Int.Internal.Linear.Expr.denote ctx e β Int.Internal.Linear.Poly.denote' ctx p = 0 - Int.Internal.Linear.eq_def_norm π Init.Data.Int.Linear
(ctx : Int.Internal.Linear.Context) (x : Int.Internal.Linear.Var) (xPoly xPoly' p : Int.Internal.Linear.Poly) : Int.Internal.Linear.eq_def_cert x xPoly' p = true β Int.Internal.Linear.Var.denote ctx x = Int.Internal.Linear.Poly.denote' ctx xPoly β Int.Internal.Linear.Poly.denote' ctx xPoly = Int.Internal.Linear.Poly.denote' ctx xPoly' β Int.Internal.Linear.Poly.denote' ctx p = 0 - Int.Internal.Linear.eq_def'_norm π Init.Data.Int.Linear
(ctx : Int.Internal.Linear.Context) (x : Int.Internal.Linear.Var) (e : Int.Internal.Linear.Expr) (ePoly ePoly' p : Int.Internal.Linear.Poly) : Int.Internal.Linear.eq_def'_norm_cert x e ePoly ePoly' p = true β Int.Internal.Linear.Var.denote ctx x = Int.Internal.Linear.Expr.denote ctx e β Int.Internal.Linear.Poly.denote' ctx ePoly = Int.Internal.Linear.Poly.denote' ctx ePoly' β Int.Internal.Linear.Poly.denote' ctx p = 0 - Int.Internal.Linear.eq_def_struct_norm π Init.Data.Int.Linear
(ctx : Int.Internal.Linear.Context) (x : Int.Internal.Linear.Var) (e : Int.Internal.Linear.Expr) (ePoly ePoly' p : Int.Internal.Linear.Poly) : Int.Internal.Linear.eq_def_struct_norm_cert x e ePoly ePoly' p = true β Int.Internal.Linear.Var.denote ctx x = Int.Internal.Linear.Expr.denote ctx e β Int.Internal.Linear.Poly.denote' ctx ePoly = Int.Internal.Linear.Poly.denote' ctx ePoly' β Int.Internal.Linear.Poly.denote' ctx p = 0 - Array.swap_def π Init.Data.List.ToArray
{Ξ± : Type u_1} (xs : Array Ξ±) (i j : β) (hi : i < xs.size) (hj : j < xs.size) : xs.swap i j hi hj = (xs.set i xs[j] hi).set j xs[i] β― - Array.singleton_def π Init.Data.Array.Lemmas
{Ξ± : Type u_1} {v : Ξ±} : Array.singleton v = #[v] - Array.flatMap_def π Init.Data.Array.Lemmas
{Ξ± : Type u_1} {Ξ² : Type u_2} {xs : Array Ξ±} {f : Ξ± β Array Ξ²} : Array.flatMap f xs = (Array.map f xs).flatten - Array.setIfInBounds_def π Init.Data.Array.Lemmas
{Ξ± : Type u_1} (xs : Array Ξ±) (i : β) (a : Ξ±) : xs.setIfInBounds i a = if h : i < xs.size then xs.set i a h else xs - Array.swapAt!_def π Init.Data.Array.Lemmas
{Ξ± : Type u_1} {xs : Array Ξ±} {i : β} {v : Ξ±} (h : i < xs.size) : xs.swapAt! i v = (xs[i], xs.set i v h) - Array.swapAt_def π Init.Data.Array.Lemmas
{Ξ± : Type u_1} {xs : Array Ξ±} {i : β} {v : Ξ±} (hi : i < xs.size) : xs.swapAt i v hi = (xs[i], xs.set i v hi) - Array.swapIfInBounds_def π Init.Data.Array.Lemmas
{Ξ± : Type u_1} {xs : Array Ξ±} {i j : β} : xs.swapIfInBounds i j = if hβ : i < xs.size then if hβ : j < xs.size then xs.swap i j hβ hβ else xs else xs - Rat.inv_def π Init.Data.Rat.Lemmas
(a : β) : aβ»ΒΉ = Rat.divInt (βa.den) a.num - Rat.floor_def π Init.Data.Rat.Lemmas
(a : β) : a.floor = a.num / βa.den - Rat.max_def π Init.Data.Rat.Lemmas
{n m : β} : max n m = if n β€ m then m else n - Rat.min_def π Init.Data.Rat.Lemmas
{n m : β} : min n m = if n β€ m then n else m - Rat.div_def π Init.Data.Rat.Lemmas
(a b : β) : a / b = a * bβ»ΒΉ - Rat.ofScientific_true_def π Init.Data.Rat.Lemmas
{m e : β} : Rat.ofScientific m true e = mkRat (βm) (10 ^ e) - Rat.ofScientific_false_def π Init.Data.Rat.Lemmas
{m e : β} : Rat.ofScientific m false e = β(m * 10 ^ e) - Rat.mul_def' π Init.Data.Rat.Lemmas
(a b : β) : a * b = mkRat (a.num * b.num) (a.den * b.den) - Rat.mul_def π Init.Data.Rat.Lemmas
(a b : β) : a * b = Rat.normalize (a.num * b.num) (a.den * b.den) β― - Rat.pow_def π Init.Data.Rat.Lemmas
(q : β) (n : β) : q ^ n = { num := q.num ^ n, den := q.den ^ n, den_nz := β―, reduced := β― } - Rat.mkRat_def π Init.Data.Rat.Lemmas
(n : β€) (d : β) : mkRat n d = if d0 : d = 0 then 0 else Rat.normalize n d d0 - Rat.ofScientific_def' π Init.Data.Rat.Lemmas
{m : β} {s : Bool} {e : β} : OfScientific.ofScientific m s e = βm * 10 ^ if s = true then -βe else βe - Rat.add_def' π Init.Data.Rat.Lemmas
(a b : β) : a + b = mkRat (a.num * βb.den + b.num * βa.den) (a.den * b.den) - Rat.sub_def' π Init.Data.Rat.Lemmas
(a b : β) : a - b = mkRat (a.num * βb.den - b.num * βa.den) (a.den * b.den) - Rat.ofScientific_def π Init.Data.Rat.Lemmas
{m : β} {s : Bool} {e : β} : Rat.ofScientific m s e = if s = true then mkRat (βm) (10 ^ e) else β(m * 10 ^ e) - Rat.add_def π Init.Data.Rat.Lemmas
(a b : β) : a + b = Rat.normalize (a.num * βb.den + b.num * βa.den) (a.den * b.den) β― - Rat.sub_def π Init.Data.Rat.Lemmas
(a b : β) : a - b = Rat.normalize (a.num * βb.den - b.num * βa.den) (a.den * b.den) β― - Rat.ofScientific_def_eq_if π Init.Data.Rat.Lemmas
{m : β} {s : Bool} {e : β} : OfScientific.ofScientific m s e = if s = true then βm / 10 ^ e else βm * 10 ^ e - Rat.ofScientific_def_eq_ite π Init.Data.Rat.Lemmas
{m : β} {s : Bool} {e : β} : OfScientific.ofScientific m s e = if s = true then βm / 10 ^ e else βm * 10 ^ e - Lean.Grind.LawfulOfScientific.ofScientific_def π Init.Grind.Ring.OfScientific
{Ξ± : Type u} {instβ : Lean.Grind.Field Ξ±} {instβΒΉ : OfScientific Ξ±} [self : Lean.Grind.LawfulOfScientific Ξ±] {m : β} {s : Bool} {e : β} : OfScientific.ofScientific m s e = if s = true then βm / 10 ^ e else βm * 10 ^ e - BitVec.le_def π Init.Data.BitVec.Lemmas
{n : β} {x y : BitVec n} : x β€ y β x.toNat β€ y.toNat - BitVec.lt_def π Init.Data.BitVec.Lemmas
{n : β} {x y : BitVec n} : x < y β x.toNat < y.toNat - BitVec.not_def π Init.Data.BitVec.Lemmas
{v : β} {x : BitVec v} : ~~~x = BitVec.allOnes v ^^^ x - BitVec.max_def π Init.Data.BitVec.Lemmas
{w : β} {x y : BitVec w} : x β y = if x β€ y then y else x - BitVec.min_def π Init.Data.BitVec.Lemmas
{w : β} {x y : BitVec w} : x β y = if x β€ y then x else y - BitVec.add_def π Init.Data.BitVec.Lemmas
{n : β} (x y : BitVec n) : x + y = BitVec.ofNat n (x.toNat + y.toNat) - BitVec.udiv_def π Init.Data.BitVec.Lemmas
{n : β} {x y : BitVec n} : x / y = BitVec.ofNat n (x.toNat / y.toNat) - BitVec.umod_def π Init.Data.BitVec.Lemmas
{n : β} {x y : BitVec n} : x % y = BitVec.ofNat n (x.toNat % y.toNat) - BitVec.sub_def π Init.Data.BitVec.Lemmas
{n : β} (x y : BitVec n) : x - y = BitVec.ofNat n (2 ^ n - y.toNat + x.toNat) - BitVec.rotateLeft_def π Init.Data.BitVec.Lemmas
{w : β} {x : BitVec w} {r : β} : x.rotateLeft r = x <<< (r % w) ||| x >>> (w - r % w) - BitVec.rotateRight_def π Init.Data.BitVec.Lemmas
{w : β} {x : BitVec w} {r : β} : x.rotateRight r = x >>> (r % w) ||| x <<< (w - r % w) - BitVec.append_def π Init.Data.BitVec.Lemmas
{v w : β} (x : BitVec v) (y : BitVec w) : x ++ y = x.shiftLeftZeroExtend w ||| BitVec.setWidth' β― y - BitVec.mul_def π Init.Data.BitVec.Lemmas
{n : β} {x y : BitVec n} : x * y = { toFin := x.toFin * y.toFin } - USize.one_def π Init.Data.UInt.Lemmas
: 1 = { toBitVec := 1 } - USize.zero_def π Init.Data.UInt.Lemmas
: 0 = { toBitVec := 0 } - UInt16.max_def π Init.Data.UInt.Lemmas
{a b : UInt16} : a β b = if a β€ b then b else a - UInt16.min_def π Init.Data.UInt.Lemmas
{a b : UInt16} : a β b = if a β€ b then a else b - UInt32.max_def π Init.Data.UInt.Lemmas
{a b : UInt32} : a β b = if a β€ b then b else a - UInt32.min_def π Init.Data.UInt.Lemmas
{a b : UInt32} : a β b = if a β€ b then a else b - UInt64.max_def π Init.Data.UInt.Lemmas
{a b : UInt64} : a β b = if a β€ b then b else a - UInt64.min_def π Init.Data.UInt.Lemmas
{a b : UInt64} : a β b = if a β€ b then a else b - UInt8.max_def π Init.Data.UInt.Lemmas
{a b : UInt8} : a β b = if a β€ b then b else a - UInt8.min_def π Init.Data.UInt.Lemmas
{a b : UInt8} : a β b = if a β€ b then a else b - USize.max_def π Init.Data.UInt.Lemmas
{a b : USize} : a β b = if a β€ b then b else a - USize.min_def π Init.Data.UInt.Lemmas
{a b : USize} : a β b = if a β€ b then a else b - UInt16.one_def π Init.Data.UInt.Lemmas
: 1 = { toBitVec := 1 } - UInt16.zero_def π Init.Data.UInt.Lemmas
: 0 = { toBitVec := 0 } - UInt32.one_def π Init.Data.UInt.Lemmas
: 1 = { toBitVec := 1 } - UInt32.zero_def π Init.Data.UInt.Lemmas
: 0 = { toBitVec := 0 } - UInt64.one_def π Init.Data.UInt.Lemmas
: 1 = { toBitVec := 1 } - UInt64.zero_def π Init.Data.UInt.Lemmas
: 0 = { toBitVec := 0 } - UInt8.one_def π Init.Data.UInt.Lemmas
: 1 = { toBitVec := 1 } - UInt8.zero_def π Init.Data.UInt.Lemmas
: 0 = { toBitVec := 0 } - USize.add_def π Init.Data.UInt.Lemmas
(a b : USize) : a + b = { toBitVec := a.toBitVec + b.toBitVec } - USize.mod_def π Init.Data.UInt.Lemmas
(a b : USize) : a % b = { toBitVec := a.toBitVec % b.toBitVec } - USize.mul_def π Init.Data.UInt.Lemmas
(a b : USize) : a * b = { toBitVec := a.toBitVec * b.toBitVec } - USize.sub_def π Init.Data.UInt.Lemmas
(a b : USize) : a - b = { toBitVec := a.toBitVec - b.toBitVec } - UInt16.add_def π Init.Data.UInt.Lemmas
(a b : UInt16) : a + b = { toBitVec := a.toBitVec + b.toBitVec } - UInt16.mod_def π Init.Data.UInt.Lemmas
(a b : UInt16) : a % b = { toBitVec := a.toBitVec % b.toBitVec } - UInt16.mul_def π Init.Data.UInt.Lemmas
(a b : UInt16) : a * b = { toBitVec := a.toBitVec * b.toBitVec } - UInt16.sub_def π Init.Data.UInt.Lemmas
(a b : UInt16) : a - b = { toBitVec := a.toBitVec - b.toBitVec } - UInt32.add_def π Init.Data.UInt.Lemmas
(a b : UInt32) : a + b = { toBitVec := a.toBitVec + b.toBitVec } - UInt32.mod_def π Init.Data.UInt.Lemmas
(a b : UInt32) : a % b = { toBitVec := a.toBitVec % b.toBitVec } - UInt32.mul_def π Init.Data.UInt.Lemmas
(a b : UInt32) : a * b = { toBitVec := a.toBitVec * b.toBitVec } - UInt32.sub_def π Init.Data.UInt.Lemmas
(a b : UInt32) : a - b = { toBitVec := a.toBitVec - b.toBitVec } - UInt64.add_def π Init.Data.UInt.Lemmas
(a b : UInt64) : a + b = { toBitVec := a.toBitVec + b.toBitVec } - UInt64.mod_def π Init.Data.UInt.Lemmas
(a b : UInt64) : a % b = { toBitVec := a.toBitVec % b.toBitVec } - UInt64.mul_def π Init.Data.UInt.Lemmas
(a b : UInt64) : a * b = { toBitVec := a.toBitVec * b.toBitVec } - UInt64.sub_def π Init.Data.UInt.Lemmas
(a b : UInt64) : a - b = { toBitVec := a.toBitVec - b.toBitVec } - UInt8.add_def π Init.Data.UInt.Lemmas
(a b : UInt8) : a + b = { toBitVec := a.toBitVec + b.toBitVec } - UInt8.mod_def π Init.Data.UInt.Lemmas
(a b : UInt8) : a % b = { toBitVec := a.toBitVec % b.toBitVec } - UInt8.mul_def π Init.Data.UInt.Lemmas
(a b : UInt8) : a * b = { toBitVec := a.toBitVec * b.toBitVec } - UInt8.sub_def π Init.Data.UInt.Lemmas
(a b : UInt8) : a - b = { toBitVec := a.toBitVec - b.toBitVec } - Char.le_def π Init.Data.Char.Lemmas
{a b : Char} : a β€ b β a.val β€ b.val - Char.lt_def π Init.Data.Char.Lemmas
{a b : Char} : a < b β a.val < b.val - Lean.Grind.node_def π Init.Grind.PP
: β β {Ξ± : Sort u} β {a : Ξ±} β NodeDef - ISize.max_def π Init.Data.SInt.Lemmas
{a b : ISize} : a β b = if a β€ b then b else a - ISize.min_def π Init.Data.SInt.Lemmas
{a b : ISize} : a β b = if a β€ b then a else b - Int16.max_def π Init.Data.SInt.Lemmas
{a b : Int16} : a β b = if a β€ b then b else a - Int16.min_def π Init.Data.SInt.Lemmas
{a b : Int16} : a β b = if a β€ b then a else b - Int32.max_def π Init.Data.SInt.Lemmas
{a b : Int32} : a β b = if a β€ b then b else a - Int32.min_def π Init.Data.SInt.Lemmas
{a b : Int32} : a β b = if a β€ b then a else b - Int64.max_def π Init.Data.SInt.Lemmas
{a b : Int64} : a β b = if a β€ b then b else a - Int64.min_def π Init.Data.SInt.Lemmas
{a b : Int64} : a β b = if a β€ b then a else b - Int8.max_def π Init.Data.SInt.Lemmas
{a b : Int8} : a β b = if a β€ b then b else a - Int8.min_def π Init.Data.SInt.Lemmas
{a b : Int8} : a β b = if a β€ b then a else b - Std.Shrink.inflate_deflate π Init.Data.Iterators.Basic
{Ξ± : Type u_1} {x : Ξ±} : (Std.Shrink.deflate x).inflate = x - Vector.singleton_def π Init.Data.Vector.Lemmas
{Ξ± : Type u_1} {v : Ξ±} : Vector.singleton v = #v[v] - Vector.flatMap_def π Init.Data.Vector.Lemmas
{Ξ± : Type u_1} {n : β} {Ξ² : Type u_2} {m : β} {xs : Vector Ξ± n} {f : Ξ± β Vector Ξ² m} : xs.flatMap f = (Vector.map f xs).flatten - Max.oppositeMin_def π Init.Data.Order.Opposite
{Ξ± : Type u_1} {min : Max Ξ±} : min.oppositeMin = { min := max } - Min.oppositeMax_def π Init.Data.Order.Opposite
{Ξ± : Type u_1} {min : Min Ξ±} : min.oppositeMax = { max := Min.min } - LE.opposite_def π Init.Data.Order.Opposite
{Ξ± : Type u_1} {le : LE Ξ±} : le.opposite = { le := fun a b => b β€ a } - LT.opposite_def π Init.Data.Order.Opposite
{Ξ± : Type u_1} {lt : LT Ξ±} : lt.opposite = { lt := fun a b => b < a } - Std.Internal.List.getValue!_eq_getValueD_default π Std.Data.Internal.List.Associative
{Ξ± : Type u} {Ξ² : Type v} [BEq Ξ±] [Inhabited Ξ²] {l : List ((_ : Ξ±) Γ Ξ²)} {a : Ξ±} : Std.Internal.List.getValue! a l = Std.Internal.List.getValueD a l default - Std.Internal.List.getValue!_eq_default π Std.Data.Internal.List.Associative
{Ξ± : Type u} {Ξ² : Type v} [BEq Ξ±] [Inhabited Ξ²] {l : List ((_ : Ξ±) Γ Ξ²)} {a : Ξ±} (h : Std.Internal.List.containsKey a l = false) : Std.Internal.List.getValue! a l = default - Std.Internal.List.getKey!_eq_default π Std.Data.Internal.List.Associative
{Ξ± : Type u} {Ξ² : Ξ± β Type v} [BEq Ξ±] [Inhabited Ξ±] {l : List ((a : Ξ±) Γ Ξ² a)} {a : Ξ±} (h : Std.Internal.List.containsKey a l = false) : Std.Internal.List.getKey! a l = default - Std.Internal.List.getKey!_eq_getKeyD_default π Std.Data.Internal.List.Associative
{Ξ± : Type u} {Ξ² : Ξ± β Type v} [BEq Ξ±] [EquivBEq Ξ±] [Inhabited Ξ±] {l : List ((a : Ξ±) Γ Ξ² a)} {a : Ξ±} : Std.Internal.List.getKey! a l = Std.Internal.List.getKeyD a l default - Std.Internal.List.maxKey!_eq_maxKeyD_default π Std.Data.Internal.List.Associative
{Ξ± : Type u} {Ξ² : Ξ± β Type v} [Ord Ξ±] [Std.TransOrd Ξ±] [BEq Ξ±] [Std.LawfulBEqOrd Ξ±] [Inhabited Ξ±] {l : List ((a : Ξ±) Γ Ξ² a)} : Std.Internal.List.maxKey! l = Std.Internal.List.maxKeyD l default - Std.Internal.List.minKey!_eq_minKeyD_default π Std.Data.Internal.List.Associative
{Ξ± : Type u} {Ξ² : Ξ± β Type v} [Ord Ξ±] [Std.TransOrd Ξ±] [BEq Ξ±] [Std.LawfulBEqOrd Ξ±] [Inhabited Ξ±] {l : List ((a : Ξ±) Γ Ξ² a)} : Std.Internal.List.minKey! l = Std.Internal.List.minKeyD l default - Std.Internal.List.getValueCast!_eq_getValueCastD_default π Std.Data.Internal.List.Associative
{Ξ± : Type u} {Ξ² : Ξ± β Type v} [BEq Ξ±] [LawfulBEq Ξ±] {l : List ((a : Ξ±) Γ Ξ² a)} {a : Ξ±} [Inhabited (Ξ² a)] : Std.Internal.List.getValueCast! a l = Std.Internal.List.getValueCastD a l default - Std.Internal.List.getValueCast!_eq_default π Std.Data.Internal.List.Associative
{Ξ± : Type u} {Ξ² : Ξ± β Type v} [BEq Ξ±] [LawfulBEq Ξ±] {l : List ((a : Ξ±) Γ Ξ² a)} {a : Ξ±} [Inhabited (Ξ² a)] (h : Std.Internal.List.containsKey a l = false) : Std.Internal.List.getValueCast! a l = default - Std.Internal.List.maxKey!_eq_default π Std.Data.Internal.List.Associative
{Ξ± : Type u} {Ξ² : Ξ± β Type v} [Ord Ξ±] [Std.TransOrd Ξ±] [BEq Ξ±] [Std.LawfulBEqOrd Ξ±] [Inhabited Ξ±] {l : List ((a : Ξ±) Γ Ξ² a)} (h : l.isEmpty = true) : Std.Internal.List.maxKey! l = default - Std.Internal.List.minKey!_eq_default π Std.Data.Internal.List.Associative
{Ξ± : Type u} {Ξ² : Ξ± β Type v} [Ord Ξ±] [Std.TransOrd Ξ±] [BEq Ξ±] [Std.LawfulBEqOrd Ξ±] [Inhabited Ξ±] {l : List ((a : Ξ±) Γ Ξ² a)} (h : l.isEmpty = true) : Std.Internal.List.minKey! l = default - Std.DHashMap.Internal.Rawβ.getKey!_eq_getKeyD_default π Std.Data.DHashMap.Internal.RawLemmas
{Ξ± : Type u} {Ξ² : Ξ± β Type v} (m : Std.DHashMap.Internal.Rawβ Ξ± Ξ²) [BEq Ξ±] [Hashable Ξ±] [EquivBEq Ξ±] [LawfulHashable Ξ±] [Inhabited Ξ±] (h : (βm).WF) {a : Ξ±} : m.getKey! a = m.getKeyD a default - Std.DHashMap.Internal.Rawβ.get!_eq_getD_default π Std.Data.DHashMap.Internal.RawLemmas
{Ξ± : Type u} {Ξ² : Ξ± β Type v} (m : Std.DHashMap.Internal.Rawβ Ξ± Ξ²) [BEq Ξ±] [Hashable Ξ±] [LawfulBEq Ξ±] (h : (βm).WF) {a : Ξ±} [Inhabited (Ξ² a)] : m.get! a = m.getD a default - Std.DHashMap.Internal.Rawβ.get!_eq_default π Std.Data.DHashMap.Internal.RawLemmas
{Ξ± : Type u} {Ξ² : Ξ± β Type v} (m : Std.DHashMap.Internal.Rawβ Ξ± Ξ²) [BEq Ξ±] [Hashable Ξ±] [LawfulBEq Ξ±] (h : (βm).WF) {a : Ξ±} [Inhabited (Ξ² a)] : m.contains a = false β m.get! a = default - Std.DHashMap.Internal.Rawβ.getKey!_eq_default π Std.Data.DHashMap.Internal.RawLemmas
{Ξ± : Type u} {Ξ² : Ξ± β Type v} (m : Std.DHashMap.Internal.Rawβ Ξ± Ξ²) [BEq Ξ±] [Hashable Ξ±] [EquivBEq Ξ±] [LawfulHashable Ξ±] [Inhabited Ξ±] (h : (βm).WF) {a : Ξ±} : m.contains a = false β m.getKey! a = default - Std.DHashMap.Internal.Rawβ.Const.get!_eq_getD_default π Std.Data.DHashMap.Internal.RawLemmas
{Ξ± : Type u} [BEq Ξ±] [Hashable Ξ±] {Ξ² : Type v} (m : Std.DHashMap.Internal.Rawβ Ξ± fun x => Ξ²) [EquivBEq Ξ±] [LawfulHashable Ξ±] [Inhabited Ξ²] (h : (βm).WF) {a : Ξ±} : Std.DHashMap.Internal.Rawβ.Const.get! m a = Std.DHashMap.Internal.Rawβ.Const.getD m a default - Std.DHashMap.Internal.Rawβ.Const.get!_eq_default π Std.Data.DHashMap.Internal.RawLemmas
{Ξ± : Type u} [BEq Ξ±] [Hashable Ξ±] {Ξ² : Type v} (m : Std.DHashMap.Internal.Rawβ Ξ± fun x => Ξ²) [EquivBEq Ξ±] [LawfulHashable Ξ±] [Inhabited Ξ²] (h : (βm).WF) {a : Ξ±} : m.contains a = false β Std.DHashMap.Internal.Rawβ.Const.get! m a = default - Std.DHashMap.getKey!_eq_getKeyD_default π Std.Data.DHashMap.Lemmas
{Ξ± : Type u} {Ξ² : Ξ± β Type v} {xβ : BEq Ξ±} {xβΒΉ : Hashable Ξ±} {m : Std.DHashMap Ξ± Ξ²} [EquivBEq Ξ±] [LawfulHashable Ξ±] [Inhabited Ξ±] {a : Ξ±} : m.getKey! a = m.getKeyD a default - Std.DHashMap.Const.get!_eq_getD_default π Std.Data.DHashMap.Lemmas
{Ξ± : Type u} {xβ : BEq Ξ±} {xβΒΉ : Hashable Ξ±} {Ξ² : Type v} {m : Std.DHashMap Ξ± fun x => Ξ²} [EquivBEq Ξ±] [LawfulHashable Ξ±] [Inhabited Ξ²] {a : Ξ±} : Std.DHashMap.Const.get! m a = Std.DHashMap.Const.getD m a default - Std.DHashMap.get!_eq_getD_default π Std.Data.DHashMap.Lemmas
{Ξ± : Type u} {Ξ² : Ξ± β Type v} {xβ : BEq Ξ±} {xβΒΉ : Hashable Ξ±} {m : Std.DHashMap Ξ± Ξ²} [LawfulBEq Ξ±] {a : Ξ±} [Inhabited (Ξ² a)] : m.get! a = m.getD a default - Std.DHashMap.get!_eq_default_of_contains_eq_false π Std.Data.DHashMap.Lemmas
{Ξ± : Type u} {Ξ² : Ξ± β Type v} {xβ : BEq Ξ±} {xβΒΉ : Hashable Ξ±} {m : Std.DHashMap Ξ± Ξ²} [LawfulBEq Ξ±] {a : Ξ±} [Inhabited (Ξ² a)] : m.contains a = false β m.get! a = default - Std.DHashMap.getKey!_eq_default_of_contains_eq_false π Std.Data.DHashMap.Lemmas
{Ξ± : Type u} {Ξ² : Ξ± β Type v} {xβ : BEq Ξ±} {xβΒΉ : Hashable Ξ±} {m : Std.DHashMap Ξ± Ξ²} [EquivBEq Ξ±] [LawfulHashable Ξ±] [Inhabited Ξ±] {a : Ξ±} : m.contains a = false β m.getKey! a = default - Std.DHashMap.Const.get!_eq_default_of_contains_eq_false π Std.Data.DHashMap.Lemmas
{Ξ± : Type u} {xβ : BEq Ξ±} {xβΒΉ : Hashable Ξ±} {Ξ² : Type v} {m : Std.DHashMap Ξ± fun x => Ξ²} [EquivBEq Ξ±] [LawfulHashable Ξ±] [Inhabited Ξ²] {a : Ξ±} : m.contains a = false β Std.DHashMap.Const.get! m a = default - Std.DHashMap.get!_eq_default π Std.Data.DHashMap.Lemmas
{Ξ± : Type u} {Ξ² : Ξ± β Type v} {xβ : BEq Ξ±} {xβΒΉ : Hashable Ξ±} {m : Std.DHashMap Ξ± Ξ²} [LawfulBEq Ξ±] {a : Ξ±} [Inhabited (Ξ² a)] : a β m β m.get! a = default - Std.DHashMap.getKey!_eq_default π Std.Data.DHashMap.Lemmas
{Ξ± : Type u} {Ξ² : Ξ± β Type v} {xβ : BEq Ξ±} {xβΒΉ : Hashable Ξ±} {m : Std.DHashMap Ξ± Ξ²} [EquivBEq Ξ±] [LawfulHashable Ξ±] [Inhabited Ξ±] {a : Ξ±} : a β m β m.getKey! a = default - Std.DHashMap.Const.get!_eq_default π Std.Data.DHashMap.Lemmas
{Ξ± : Type u} {xβ : BEq Ξ±} {xβΒΉ : Hashable Ξ±} {Ξ² : Type v} {m : Std.DHashMap Ξ± fun x => Ξ²} [EquivBEq Ξ±] [LawfulHashable Ξ±] [Inhabited Ξ²] {a : Ξ±} : a β m β Std.DHashMap.Const.get! m a = default - Std.Internal.ComputableSmall.inflate_deflate π Std.Data.Iterators.Lemmas.Equivalence.HetT
{Ξ± : Type v} [self : Std.Internal.ComputableSmall Ξ±] {a : Ξ±} : Std.Internal.ComputableSmall.inflate (Std.Internal.ComputableSmall.deflate a) = a - Std.Internal.USquash.inflate_deflate π Std.Data.Iterators.Lemmas.Equivalence.HetT
{Ξ± : Type v} {xβ : Std.Internal.Small Ξ±} {x : Ξ±} : (Std.Internal.USquash.deflate x).inflate = x - Std.DTreeMap.Internal.Impl.maxKey!_eq_maxKeyD_default π Std.Data.DTreeMap.Internal.Lemmas
{Ξ± : Type u} {Ξ² : Ξ± β Type v} {instOrd : Ord Ξ±} {t : Std.DTreeMap.Internal.Impl Ξ± Ξ²} [Std.TransOrd Ξ±] [Inhabited Ξ±] (h : t.WF) : t.maxKey! = t.maxKeyD default - Std.DTreeMap.Internal.Impl.minKey!_eq_minKeyD_default π Std.Data.DTreeMap.Internal.Lemmas
{Ξ± : Type u} {Ξ² : Ξ± β Type v} {instOrd : Ord Ξ±} {t : Std.DTreeMap.Internal.Impl Ξ± Ξ²} [Std.TransOrd Ξ±] [Inhabited Ξ±] (h : t.WF) : t.minKey! = t.minKeyD default - Std.DTreeMap.Internal.Impl.maxKey!_eq_default π Std.Data.DTreeMap.Internal.Lemmas
{Ξ± : Type u} {Ξ² : Ξ± β Type v} {instOrd : Ord Ξ±} {t : Std.DTreeMap.Internal.Impl Ξ± Ξ²} [Std.TransOrd Ξ±] [Inhabited Ξ±] (h : t.WF) (he : t.isEmpty = true) : t.maxKey! = default - Std.DTreeMap.Internal.Impl.minKey!_eq_default π Std.Data.DTreeMap.Internal.Lemmas
{Ξ± : Type u} {Ξ² : Ξ± β Type v} {instOrd : Ord Ξ±} {t : Std.DTreeMap.Internal.Impl Ξ± Ξ²} [Std.TransOrd Ξ±] [Inhabited Ξ±] (h : t.WF) (he : t.isEmpty = true) : t.minKey! = default - Std.DTreeMap.Internal.Impl.getKey!_eq_getKeyD_default π Std.Data.DTreeMap.Internal.Lemmas
{Ξ± : Type u} {Ξ² : Ξ± β Type v} {instOrd : Ord Ξ±} {t : Std.DTreeMap.Internal.Impl Ξ± Ξ²} [Std.TransOrd Ξ±] [Inhabited Ξ±] (h : t.WF) {a : Ξ±} : t.getKey! a = t.getKeyD a default - Std.DTreeMap.Internal.Impl.Const.get!_eq_getD_default π Std.Data.DTreeMap.Internal.Lemmas
{Ξ± : Type u} {instOrd : Ord Ξ±} {Ξ² : Type v} {t : Std.DTreeMap.Internal.Impl Ξ± fun x => Ξ²} [Std.TransOrd Ξ±] [Inhabited Ξ²] (h : t.WF) {a : Ξ±} : Std.DTreeMap.Internal.Impl.Const.get! t a = Std.DTreeMap.Internal.Impl.Const.getD t a default - Std.DTreeMap.Internal.Impl.getKey!_eq_default_of_contains_eq_false π Std.Data.DTreeMap.Internal.Lemmas
{Ξ± : Type u} {Ξ² : Ξ± β Type v} {instOrd : Ord Ξ±} {t : Std.DTreeMap.Internal.Impl Ξ± Ξ²} [Std.TransOrd Ξ±] [Inhabited Ξ±] (h : t.WF) {a : Ξ±} : Std.DTreeMap.Internal.Impl.contains a t = false β t.getKey! a = default - Std.DTreeMap.Internal.Impl.Const.get!_eq_default_of_contains_eq_false π Std.Data.DTreeMap.Internal.Lemmas
{Ξ± : Type u} {instOrd : Ord Ξ±} {Ξ² : Type v} {t : Std.DTreeMap.Internal.Impl Ξ± fun x => Ξ²} [Std.TransOrd Ξ±] [Inhabited Ξ²] (h : t.WF) {a : Ξ±} : Std.DTreeMap.Internal.Impl.contains a t = false β Std.DTreeMap.Internal.Impl.Const.get! t a = default - Std.DTreeMap.Internal.Impl.getKey!_eq_default π Std.Data.DTreeMap.Internal.Lemmas
{Ξ± : Type u} {Ξ² : Ξ± β Type v} {instOrd : Ord Ξ±} {t : Std.DTreeMap.Internal.Impl Ξ± Ξ²} [Std.TransOrd Ξ±] [Inhabited Ξ±] (h : t.WF) {a : Ξ±} : a β t β t.getKey! a = default - Std.DTreeMap.Internal.Impl.get!_eq_getD_default π Std.Data.DTreeMap.Internal.Lemmas
{Ξ± : Type u} {Ξ² : Ξ± β Type v} {instOrd : Ord Ξ±} {t : Std.DTreeMap.Internal.Impl Ξ± Ξ²} [Std.TransOrd Ξ±] [Std.LawfulEqOrd Ξ±] (h : t.WF) {a : Ξ±} [Inhabited (Ξ² a)] : t.get! a = t.getD a default - Std.DTreeMap.Internal.Impl.Const.get!_eq_default π Std.Data.DTreeMap.Internal.Lemmas
{Ξ± : Type u} {instOrd : Ord Ξ±} {Ξ² : Type v} {t : Std.DTreeMap.Internal.Impl Ξ± fun x => Ξ²} [Std.TransOrd Ξ±] [Inhabited Ξ²] (h : t.WF) {a : Ξ±} : a β t β Std.DTreeMap.Internal.Impl.Const.get! t a = default - Std.DTreeMap.Internal.Impl.get!_eq_default_of_contains_eq_false π Std.Data.DTreeMap.Internal.Lemmas
{Ξ± : Type u} {Ξ² : Ξ± β Type v} {instOrd : Ord Ξ±} {t : Std.DTreeMap.Internal.Impl Ξ± Ξ²} [Std.TransOrd Ξ±] [Std.LawfulEqOrd Ξ±] (h : t.WF) {a : Ξ±} [Inhabited (Ξ² a)] : Std.DTreeMap.Internal.Impl.contains a t = false β t.get! a = default - Std.DTreeMap.Internal.Impl.get!_eq_default π Std.Data.DTreeMap.Internal.Lemmas
{Ξ± : Type u} {Ξ² : Ξ± β Type v} {instOrd : Ord Ξ±} {t : Std.DTreeMap.Internal.Impl Ξ± Ξ²} [Std.TransOrd Ξ±] [Std.LawfulEqOrd Ξ±] (h : t.WF) {a : Ξ±} [Inhabited (Ξ² a)] : a β t β t.get! a = default
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 0d3fb85