Loogle!
Result
Found 73799 declarations mentioning Nat. Of these, only the first 200 are shown.
- Nat π Init.Prelude
: Type - Lean.defaultMaxRecDepth π Init.Prelude
: β - Lean.firstFrontendMacroScope π Init.Prelude
: β - Lean.reservedMacroScope π Init.Prelude
: β - Nat.zero π Init.Prelude
: β - UInt16.size π Init.Prelude
: β - UInt32.size π Init.Prelude
: β - UInt64.size π Init.Prelude
: β - UInt8.size π Init.Prelude
: β - USize.size π Init.Prelude
: β - System.Platform.numBits π Init.Prelude
: β - BitVec π Init.Prelude
(w : β) : Type - Fin π Init.Prelude
(n : β) : Type - instAddNat π Init.Prelude
: Add β - instDecidableEqNat π Init.Prelude
: DecidableEq β - instInhabitedNat π Init.Prelude
: Inhabited β - instLENat π Init.Prelude
: LE β - instLTNat π Init.Prelude
: LT β - instMinNat π Init.Prelude
: Min β - instMulNat π Init.Prelude
: Mul β - instNatPowNat π Init.Prelude
: NatPow β - instSubNat π Init.Prelude
: Sub β - Char.ofNat π Init.Prelude
(n : β) : Char - Char.utf8Size π Init.Prelude
(c : Char) : β - Nat.isValidChar π Init.Prelude
(n : β) : Prop - Nat.succ π Init.Prelude
(n : β) : β - Substring.bsize π Init.Prelude
: Substring β β - UInt32.toNat π Init.Prelude
(n : UInt32) : β - Lean.Syntax.getNumArgs π Init.Prelude
(stx : Lean.Syntax) : β - String.Pos.byteIdx π Init.Prelude
(self : String.Pos) : β - String.Pos.mk π Init.Prelude
(byteIdx : β) : String.Pos - Lean.Macro.Context.currRecDepth π Init.Prelude
(self : Lean.Macro.Context) : β - Lean.Macro.Context.maxRecDepth π Init.Prelude
(self : Lean.Macro.Context) : β - Nat.pred π Init.Prelude
: β β β - String.utf8ByteSize π Init.Prelude
: String β β - OfNat π Init.Prelude
(Ξ± : Type u) : β β Type u - Nat.le π Init.Prelude
(n : β) : β β Prop - Nat.lt π Init.Prelude
(n m : β) : Prop - Lean.Name.mkNum π Init.Prelude
(p : Lean.Name) (v : β) : Lean.Name - Lean.Name.num π Init.Prelude
(pre : Lean.Name) (i : β) : Lean.Name - Lean.ParserDescr.cat π Init.Prelude
(catName : Lean.Name) (rbp : β) : Lean.ParserDescr - Lean.Syntax.getArg π Init.Prelude
(stx : Lean.Syntax) (i : β) : Lean.Syntax - Lean.Syntax.matchesNull π Init.Prelude
(stx : Lean.Syntax) (n : β) : Bool - String.utf8ByteSize.go π Init.Prelude
: List Char β β - instDecidableEqBitVec π Init.Prelude
{w : β} : DecidableEq (BitVec w) - instDecidableEqFin π Init.Prelude
(n : β) : DecidableEq (Fin n) - instLEBitVec π Init.Prelude
{w : β} : LE (BitVec w) - instLEFin π Init.Prelude
{n : β} : LE (Fin n) - instLTBitVec π Init.Prelude
{w : β} : LT (BitVec w) - instLTFin π Init.Prelude
{n : β} : LT (Fin n) - instOfNatNat π Init.Prelude
(n : β) : OfNat β n - BitVec.toNat π Init.Prelude
{w : β} (x : BitVec w) : β - Fin.val π Init.Prelude
{n : β} (self : Fin n) : β - List.length π Init.Prelude
{Ξ± : Type u_1} : List Ξ± β β - List.lengthTR π Init.Prelude
{Ξ± : Type u_1} (as : List Ξ±) : β - Nat.add π Init.Prelude
: β β β β β - Nat.beq π Init.Prelude
: β β β β Bool - Nat.ble π Init.Prelude
: β β β β Bool - Nat.mul π Init.Prelude
: β β β β β - Nat.pow π Init.Prelude
(m : β) : β β β - Nat.sub π Init.Prelude
: β β β β β - Lean.ParserDescr.node π Init.Prelude
(kind : Lean.SyntaxNodeKind) (prec : β) (p : Lean.ParserDescr) : Lean.ParserDescr - Lean.Syntax.isNodeOf π Init.Prelude
(stx : Lean.Syntax) (k : Lean.SyntaxNodeKind) (n : β) : Bool - Nat.le.refl π Init.Prelude
{n : β} : n.le n - Array.emptyWithCapacity π Init.Prelude
{Ξ± : Type u} (c : β) : Array Ξ± - Array.mkEmpty π Init.Prelude
{Ξ± : Type u} (c : β) : Array Ξ± - Array.size π Init.Prelude
{Ξ± : Type u} (a : Array Ξ±) : β - Char.ofNatAux π Init.Prelude
(n : β) (h : n.isValidChar) : Char - List.lengthTRAux π Init.Prelude
{Ξ± : Type u_1} : List Ξ± β β β β - Lean.ParserDescr.trailingNode π Init.Prelude
(kind : Lean.SyntaxNodeKind) (prec lhsPrec : β) (p : Lean.ParserDescr) : Lean.ParserDescr - Lean.Syntax.getHeadInfo?.loop π Init.Prelude
(args : Array Lean.Syntax) (i : β) : Option Lean.SourceInfo - instPowNat π Init.Prelude
{Ξ± : Type u_1} [NatPow Ξ±] : Pow Ξ± β - Array.getD π Init.Prelude
{Ξ± : Type u_1} (a : Array Ξ±) (i : β) (vβ : Ξ±) : Ξ± - Nat.le_refl π Init.Prelude
(n : β) : n β€ n - NatPow.mk π Init.Prelude
{Ξ± : Type u} (pow : Ξ± β β β Ξ±) : NatPow Ξ± - NatPow.pow π Init.Prelude
{Ξ± : Type u} [self : NatPow Ξ±] : Ξ± β β β Ξ± - OfNat.mk π Init.Prelude
{Ξ± : Type u} {xβ : β} (ofNat : Ξ±) : OfNat Ξ± xβ - OfNat.ofNat π Init.Prelude
{Ξ± : Type u} (xβ : β) [self : OfNat Ξ± xβ] : Ξ± - List.set π Init.Prelude
{Ξ± : Type u_1} (l : List Ξ±) (n : β) (a : Ξ±) : List Ξ± - Nat.ble_self_eq_true π Init.Prelude
(n : β) : n.ble n = true - Nat.le_succ π Init.Prelude
(n : β) : n β€ n.succ - Nat.lt_irrefl π Init.Prelude
(n : β) : Β¬n < n - UInt16.ofBitVec π Init.Prelude
(toBitVec : BitVec 16) : UInt16 - UInt16.toBitVec π Init.Prelude
(self : UInt16) : BitVec 16 - UInt32.ofBitVec π Init.Prelude
(toBitVec : BitVec 32) : UInt32 - UInt32.toBitVec π Init.Prelude
(self : UInt32) : BitVec 32 - UInt64.ofBitVec π Init.Prelude
(toBitVec : BitVec 64) : UInt64 - UInt64.toBitVec π Init.Prelude
(self : UInt64) : BitVec 64 - UInt8.ofBitVec π Init.Prelude
(toBitVec : BitVec 8) : UInt8 - UInt8.toBitVec π Init.Prelude
(self : UInt8) : BitVec 8 - Lean.Macro.Context.mk π Init.Prelude
(methods : Lean.Macro.MethodsRefβ) (mainModule : Lean.Name) (currMacroScope : Lean.MacroScope) (currRecDepth maxRecDepth : β) (ref : Lean.Syntax) : Lean.Macro.Context - Array.get!Internal π Init.Prelude
{Ξ± : Type u} [Inhabited Ξ±] (a : Array Ξ±) (i : β) : Ξ± - Nat.not_succ_le_self π Init.Prelude
(n : β) : Β¬n.succ β€ n - UInt16.ofNatLT π Init.Prelude
(n : β) (h : n < UInt16.size) : UInt16 - UInt32.ofNatLT π Init.Prelude
(n : β) (h : n < UInt32.size) : UInt32 - UInt64.ofNatLT π Init.Prelude
(n : β) (h : n < UInt64.size) : UInt64 - UInt8.ofNatLT π Init.Prelude
(n : β) (h : n < UInt8.size) : UInt8 - USize.ofNatLT π Init.Prelude
(n : β) (h : n < USize.size) : USize - Lean.Syntax.getTailPos?.loop π Init.Prelude
(canonicalOnly : Bool := false) (args : Array Lean.Syntax) (i : β) : Option String.Pos - Nat.decEq π Init.Prelude
(n m : β) : Decidable (n = m) - Fin.mk π Init.Prelude
{n : β} (val : β) (isLt : val < n) : Fin n - USize.size_pos π Init.Prelude
: 0 < USize.size - Array.appendCore.loop π Init.Prelude
{Ξ± : Type u} (bs : Array Ξ±) (i j : β) (as : Array Ξ±) : Array Ξ± - Array.extract.loop π Init.Prelude
{Ξ± : Type u_1} (as : Array Ξ±) (i j : β) (bs : Array Ξ±) : Array Ξ± - Nat.le.step π Init.Prelude
{n m : β} : n.le m β n.le m.succ - Nat.decLe π Init.Prelude
(n m : β) : Decidable (n β€ m) - Nat.decLt π Init.Prelude
(n m : β) : Decidable (n < m) - Fin.isLt π Init.Prelude
{n : β} (self : Fin n) : βself < n - Nat.zero_le π Init.Prelude
(n : β) : 0 β€ n - BitVec.decEq π Init.Prelude
{w : β} (x y : BitVec w) : Decidable (x = y) - Nat.not_lt_zero π Init.Prelude
(n : β) : Β¬n < 0 - Nat.succ_pos π Init.Prelude
(n : β) : 0 < n.succ - Nat.zero_lt_succ π Init.Prelude
(n : β) : 0 < n.succ - Nat.le.below π Init.Prelude
{n : β} : {motive : (a : β) β n.le a β Prop} β {a : β} β n.le a β Prop - Nat.eq_of_beq_eq_true π Init.Prelude
{n m : β} : n.beq m = true β n = m - Nat.not_succ_le_zero π Init.Prelude
(n : β) : n.succ β€ 0 β False - Nat.le.below.refl π Init.Prelude
{n : β} {motiveβ : (a : β) β n.le a β Prop} : β―.below - instDecidableLeBitVec π Init.Prelude
{w : β} (x y : BitVec w) : Decidable (x β€ y) - instDecidableLtBitVec π Init.Prelude
{w : β} (x y : BitVec w) : Decidable (x < y) - Fin.decLe π Init.Prelude
{n : β} (a b : Fin n) : Decidable (a β€ b) - Fin.decLt π Init.Prelude
{n : β} (a b : Fin n) : Decidable (a < b) - Nat.le_of_lt_succ π Init.Prelude
{m n : β} : m < n.succ β m β€ n - Nat.le_step π Init.Prelude
{n m : β} (h : n β€ m) : n β€ m.succ - Nat.le_succ_of_le π Init.Prelude
{n m : β} (h : n β€ m) : n β€ m.succ - Nat.lt_or_ge π Init.Prelude
(n m : β) : n < m β¨ n β₯ m - Nat.ne_of_beq_eq_false π Init.Prelude
{n m : β} : n.beq m = false β Β¬n = m - Array.getInternal π Init.Prelude
{Ξ± : Type u} (a : Array Ξ±) (i : β) (h : i < a.size) : Ξ± - Nat.le_of_succ_le_succ π Init.Prelude
{n m : β} : n.succ β€ m.succ β n β€ m - Nat.pred_le_pred π Init.Prelude
{n m : β} : n β€ m β n.pred β€ m.pred - Nat.succ_le_succ π Init.Prelude
{n m : β} : n β€ m β n.succ β€ m.succ - Nat.ble_eq_true_of_le π Init.Prelude
{n m : β} (h : n β€ m) : n.ble m = true - Nat.le_of_ble_eq_true π Init.Prelude
{n m : β} (h : n.ble m = true) : n β€ m - Nat.ble_succ_eq_true π Init.Prelude
{n m : β} : n.ble m = true β n.ble m.succ = true - Nat.le_antisymm π Init.Prelude
{n m : β} (hβ : n β€ m) (hβ : m β€ n) : n = m - Nat.not_le_of_not_ble_eq_true π Init.Prelude
{n m : β} (h : Β¬n.ble m = true) : Β¬n β€ m - Array.extract π Init.Prelude
{Ξ± : Type u_1} (as : Array Ξ±) (start : β := 0) (stop : β := as.size) : Array Ξ± - Nat.eq_or_lt_of_le π Init.Prelude
{n m : β} : n β€ m β n = m β¨ n < m - Nat.lt_of_le_of_ne π Init.Prelude
{n m : β} (hβ : n β€ m) (hβ : Β¬n = m) : n < m - USize.size_eq π Init.Prelude
: USize.size = 4294967296 β¨ USize.size = 18446744073709551616 - System.Platform.numBits_eq π Init.Prelude
: System.Platform.numBits = 32 β¨ System.Platform.numBits = 64 - Fin.eq_of_val_eq π Init.Prelude
{n : β} {i j : Fin n} : βi = βj β i = j - Fin.val_eq_of_eq π Init.Prelude
{n : β} {i j : Fin n} (h : i = j) : βi = βj - Nat.le_trans π Init.Prelude
{n m k : β} : n β€ m β m β€ k β n β€ k - Nat.lt_of_le_of_lt π Init.Prelude
{n m k : β} (hβ : n β€ m) (hβ : m < k) : n < k - Nat.lt_trans π Init.Prelude
{n m k : β} (hβ : n < m) : m < k β n < k - BitVec.ofFin π Init.Prelude
{w : β} (toFin : Fin (2 ^ w)) : BitVec w - BitVec.toFin π Init.Prelude
{w : β} (self : BitVec w) : Fin (2 ^ w) - System.Platform.getNumBits π Init.Prelude
: Unit β { n // n = 32 β¨ n = 64 } - BitVec.ofNatLT π Init.Prelude
{w : β} (i : β) (p : i < 2 ^ w) : BitVec w - Nat.le.brecOn π Init.Prelude
{n : β} {motiveβ : (a : β) β n.le a β Prop} {aβ : β} (xβ : n.le aβ) : (β (a : β) (x : n.le a), x.below β motiveβ a x) β motiveβ aβ xβ - Nat.le.below.step π Init.Prelude
{n : β} {motiveβ : (a : β) β n.le a β Prop} {m : β} {aβ : n.le m} : aβ.below β motiveβ m aβ β β―.below - instSizeOfNat π Init.SizeOf
: SizeOf β - Lean.Name.sizeOf π Init.SizeOf
: Lean.Name β β - default.sizeOf π Init.SizeOf
(Ξ± : Sort u) : Ξ± β β - SizeOf.mk π Init.SizeOf
{Ξ± : Sort u} (sizeOf : Ξ± β β) : SizeOf Ξ± - SizeOf.sizeOf π Init.SizeOf
{Ξ± : Sort u} [self : SizeOf Ξ±] : Ξ± β β - sizeOf_nat π Init.SizeOf
(n : β) : sizeOf n = n - Bool.false.sizeOf_spec π Init.SizeOf
: sizeOf false = 1 - Bool.true.sizeOf_spec π Init.SizeOf
: sizeOf true = 1 - PUnit.unit.sizeOf_spec π Init.SizeOf
: sizeOf PUnit.unit = 1 - Lean.Name.anonymous.sizeOf_spec π Init.SizeOf
: sizeOf Lean.Name.anonymous = 1 - Lean.SourceInfo.none.sizeOf_spec π Init.SizeOf
: sizeOf Lean.SourceInfo.none = 1 - Lean.Syntax.missing.sizeOf_spec π Init.SizeOf
: sizeOf Lean.Syntax.missing = 1 - Lean.Macro.Exception.unsupportedSyntax.sizeOf_spec π Init.SizeOf
: sizeOf Lean.Macro.Exception.unsupportedSyntax = 1 - Bool.sizeOf_eq_one π Init.SizeOf
(b : Bool) : sizeOf b = 1 - Unit.sizeOf π Init.SizeOf
(u : Unit) : sizeOf u = 1 - sizeOf_default π Init.SizeOf
{Ξ± : Sort u_1} (n : Ξ±) : sizeOf n = 0 - List.nil.sizeOf_spec π Init.SizeOf
{Ξ± : Type u} [SizeOf Ξ±] : sizeOf [] = 1 - Option.none.sizeOf_spec π Init.SizeOf
{Ξ± : Type u} [SizeOf Ξ±] : sizeOf none = 1 - sizeOf_thunk π Init.SizeOf
{Ξ± : Sort u_1} [SizeOf Ξ±] (f : Unit β Ξ±) : sizeOf f = sizeOf (f ()) - Decidable.isFalse.sizeOf_spec π Init.SizeOf
{p : Prop} [SizeOf p] (h : Β¬p) : sizeOf (isFalse h) = 1 - Lean.ParserDescr.const.sizeOf_spec π Init.SizeOf
(name : Lean.Name) : sizeOf (Lean.ParserDescr.const name) = 1 + sizeOf name - Lean.ParserDescr.parser.sizeOf_spec π Init.SizeOf
(declName : Lean.Name) : sizeOf (Lean.ParserDescr.parser declName) = 1 + sizeOf declName - Lean.ParserDescr.symbol.sizeOf_spec π Init.SizeOf
(val : String) : sizeOf (Lean.ParserDescr.symbol val) = 1 + sizeOf val - String.Pos.mk.sizeOf_spec π Init.SizeOf
(byteIdx : β) : sizeOf { byteIdx := byteIdx } = 1 + sizeOf byteIdx - USize.ofBitVec.sizeOf_spec π Init.SizeOf
(toBitVec : BitVec System.Platform.numBits) : sizeOf { toBitVec := toBitVec } = 1 + sizeOf toBitVec - String.mk.sizeOf_spec π Init.SizeOf
(data : List Char) : sizeOf { data := data } = 1 + sizeOf data - Lean.TSyntax.mk.sizeOf_spec π Init.SizeOf
{ks : Lean.SyntaxNodeKinds} (raw : Lean.Syntax) : sizeOf { raw := raw } = 1 + sizeOf raw - Decidable.isTrue.sizeOf_spec π Init.SizeOf
{p : Prop} [SizeOf p] (h : p) : sizeOf (isTrue h) = 1 + sizeOf h - Option.some.sizeOf_spec π Init.SizeOf
{Ξ± : Type u} [SizeOf Ξ±] (val : Ξ±) : sizeOf (some val) = 1 + sizeOf val - PLift.up.sizeOf_spec π Init.SizeOf
{Ξ± : Sort u} [SizeOf Ξ±] (down : Ξ±) : sizeOf { down := down } = 1 + sizeOf down - ULift.up.sizeOf_spec π Init.SizeOf
{Ξ± : Type s} [SizeOf Ξ±] (down : Ξ±) : sizeOf { down := down } = 1 + sizeOf down - Lean.Syntax.SepArray.mk.sizeOf_spec π Init.SizeOf
{sep : String} (elemsAndSeps : Array Lean.Syntax) : sizeOf { elemsAndSeps := elemsAndSeps } = 1 + sizeOf elemsAndSeps - Array.mk.sizeOf_spec π Init.SizeOf
{Ξ± : Type u} [SizeOf Ξ±] (toList : List Ξ±) : sizeOf { toList := toList } = 1 + sizeOf toList - Lean.Macro.Methods.mk.sizeOf_spec π Init.SizeOf
(expandMacro? : Lean.Syntax β Lean.MacroM (Option Lean.Syntax)) (getCurrNamespace : Lean.MacroM Lean.Name) (hasDecl : Lean.Name β Lean.MacroM Bool) (resolveNamespace : Lean.Name β Lean.MacroM (List Lean.Name)) (resolveGlobalName : Lean.Name β Lean.MacroM (List (Lean.Name Γ List String))) : sizeOf { expandMacro? := expandMacro?, getCurrNamespace := getCurrNamespace, hasDecl := hasDecl, resolveNamespace := resolveNamespace, resolveGlobalName := resolveGlobalName } = 1 - Lean.Syntax.TSepArray.mk.sizeOf_spec π Init.SizeOf
{ks : Lean.SyntaxNodeKinds} {sep : String} (elemsAndSeps : Array Lean.Syntax) : sizeOf { elemsAndSeps := elemsAndSeps } = 1 + sizeOf elemsAndSeps - Lean.Name.num.sizeOf_spec π Init.SizeOf
(p : Lean.Name) (n : β) : sizeOf (p.num n) = 1 + sizeOf p + sizeOf n - Lean.Name.str.sizeOf_spec π Init.SizeOf
(p : Lean.Name) (s : String) : sizeOf (p.str s) = 1 + sizeOf p + sizeOf s - Lean.ParserDescr.cat.sizeOf_spec π Init.SizeOf
(catName : Lean.Name) (rbp : β) : sizeOf (Lean.ParserDescr.cat catName rbp) = 1 + sizeOf catName + sizeOf rbp - Lean.ParserDescr.nonReservedSymbol.sizeOf_spec π Init.SizeOf
(val : String) (includeIdent : Bool) : sizeOf (Lean.ParserDescr.nonReservedSymbol val includeIdent) = 1 + sizeOf val + sizeOf includeIdent - Lean.ParserDescr.unary.sizeOf_spec π Init.SizeOf
(name : Lean.Name) (p : Lean.ParserDescr) : sizeOf (Lean.ParserDescr.unary name p) = 1 + sizeOf name + sizeOf p - Lean.Syntax.atom.sizeOf_spec π Init.SizeOf
(info : Lean.SourceInfo) (val : String) : sizeOf (Lean.Syntax.atom info val) = 1 + sizeOf info + sizeOf val - Lean.Macro.Exception.error.sizeOf_spec π Init.SizeOf
(aβ : Lean.Syntax) (aβΒΉ : String) : sizeOf (Lean.Macro.Exception.error aβ aβΒΉ) = 1 + sizeOf aβ + sizeOf aβΒΉ - Except.error.sizeOf_spec π Init.SizeOf
{Ξ΅ : Type u} {Ξ± : Type v} [SizeOf Ξ΅] [SizeOf Ξ±] (aβ : Ξ΅) : sizeOf (Except.error aβ) = 1 + sizeOf aβ - Except.ok.sizeOf_spec π Init.SizeOf
{Ξ΅ : Type u} {Ξ± : Type v} [SizeOf Ξ΅] [SizeOf Ξ±] (aβ : Ξ±) : sizeOf (Except.ok aβ) = 1 + sizeOf aβ - UInt16.ofBitVec.sizeOf_spec π Init.SizeOf
(toBitVec : BitVec 16) : sizeOf { toBitVec := toBitVec } = 1 + sizeOf toBitVec - UInt32.ofBitVec.sizeOf_spec π Init.SizeOf
(toBitVec : BitVec 32) : sizeOf { toBitVec := toBitVec } = 1 + sizeOf toBitVec - UInt64.ofBitVec.sizeOf_spec π Init.SizeOf
(toBitVec : BitVec 64) : sizeOf { toBitVec := toBitVec } = 1 + sizeOf toBitVec - UInt8.ofBitVec.sizeOf_spec π Init.SizeOf
(toBitVec : BitVec 8) : sizeOf { toBitVec := toBitVec } = 1 + sizeOf toBitVec - Char.mk.sizeOf_spec π Init.SizeOf
(val : UInt32) (valid : val.isValidChar) : sizeOf { val := val, valid := valid } = 1 + sizeOf val + sizeOf valid
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 ?a
If 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 ?b
By 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_tsum
even though the hypothesisf i < g i
is 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 19971e9
serving mathlib revision 151dd12