Loogle!
Result
Found 68 declarations whose name contains "until".
- String.nextUntil π Init.Data.String.Basic
(s : String) (p : Char β Bool) (i : String.Pos) : String.Pos - Lean.doElemRepeat__Until_ π Init.While
: Lean.ParserDescr - String.Iterator.foldUntil π Init.Data.String.Extra
{Ξ± : Type u_1} (it : String.Iterator) (init : Ξ±) (f : Ξ± β Char β Option Ξ±) : Ξ± Γ String.Iterator - String.Iterator.foldUntil.eq_def π Init.Data.String.Extra
{Ξ± : Type u_1} (it : String.Iterator) (init : Ξ±) (f : Ξ± β Char β Option Ξ±) : it.foldUntil init f = if it.atEnd = true then (init, it) else match f init it.curr with | some a => it.next.foldUntil a f | x => (init, it) - IO.Condvar.waitUntil π Init.System.Mutex
{m : Type β Type u_1} [Monad m] [MonadLift BaseIO m] (condvar : IO.Condvar) (mutex : IO.BaseMutex) (pred : m Bool) : m Unit - Std.Condvar.waitUntil π Std.Sync.Mutex
{m : Type β Type u_1} [Monad m] [MonadLiftT BaseIO m] (condvar : Std.Condvar) (mutex : Std.BaseMutex) (pred : m Bool) : m Unit - Lean.Meta.whnfUntil π Lean.Meta.WHNF
(e : Lean.Expr) (declName : Lean.Name) : Lean.MetaM (Option Lean.Expr) - Lean.Parser.takeUntilFn π Lean.Parser.Basic
(p : Char β Bool) : Lean.Parser.ParserFn - Lean.Lsp.TextDocumentSyncOptions.willSaveWaitUntil π Lean.Data.Lsp.TextSync
(self : Lean.Lsp.TextDocumentSyncOptions) : Bool - IO.AsyncList.waitUntil π Lean.Server.AsyncList
{Ξ± : Type u_1} {Ξ΅ : Type u_2} (p : Ξ± β Bool) : IO.AsyncList Ξ΅ Ξ± β Lean.Server.ServerTask (List Ξ± Γ Option Ξ΅) - Lean.ParseImports.takeUntil π Lean.Elab.ParseImportsFast
(p : Char β Bool) : Lean.ParseImports.Parser - Lean.Elab.Tactic.iterateUntilFailure π Mathlib.Tactic.Core
{m : Type β Type u} [Monad m] [MonadExcept Lean.Exception m] (tac : m Unit) : m Unit - Lean.Elab.Tactic.iterateUntilFailureCount π Mathlib.Tactic.Core
{m : Type β Type u} [Monad m] [MonadExcept Lean.Exception m] {Ξ± : Type} (tac : m Ξ±) : m β - Lean.Elab.Tactic.iterateUntilFailureWithResults π Mathlib.Tactic.Core
{m : Type β Type u} [Monad m] [MonadExcept Lean.Exception m] {Ξ± : Type} (tac : m Ξ±) : m (List Ξ±) - Lean.Meta.forallMetaTelescopeReducingUntilDefEq π Mathlib.Lean.Meta.Basic
(e t : Lean.Expr) (kind : Lean.MetavarKind := Lean.MetavarKind.natural) : Lean.MetaM (Array Lean.Expr Γ Array Lean.BinderInfo Γ Lean.Expr) - SimpleGraph.Walk.dropUntil π Mathlib.Combinatorics.SimpleGraph.Connectivity.WalkDecomp
{V : Type u} {G : SimpleGraph V} [DecidableEq V] {v w : V} (p : G.Walk v w) (u : V) : u β p.support β G.Walk u w - SimpleGraph.Walk.takeUntil π Mathlib.Combinatorics.SimpleGraph.Connectivity.WalkDecomp
{V : Type u} {G : SimpleGraph V} [DecidableEq V] {v w : V} (p : G.Walk v w) (u : V) : u β p.support β G.Walk v u - SimpleGraph.Walk.takeUntil_first π Mathlib.Combinatorics.SimpleGraph.Connectivity.WalkDecomp
{V : Type u} {G : SimpleGraph V} {v u : V} [DecidableEq V] (p : G.Walk u v) : p.takeUntil u β― = SimpleGraph.Walk.nil - SimpleGraph.Walk.takeUntil_nil π Mathlib.Combinatorics.SimpleGraph.Connectivity.WalkDecomp
{V : Type u} {G : SimpleGraph V} [DecidableEq V] {u : V} {h : u β SimpleGraph.Walk.nil.support} : SimpleGraph.Walk.nil.takeUntil u h = SimpleGraph.Walk.nil - SimpleGraph.Walk.nil_takeUntil π Mathlib.Combinatorics.SimpleGraph.Connectivity.WalkDecomp
{V : Type u} {G : SimpleGraph V} {v w u : V} [DecidableEq V] (p : G.Walk u v) (hwp : w β p.support) : (p.takeUntil w hwp).Nil β u = w - SimpleGraph.Walk.length_dropUntil_le π Mathlib.Combinatorics.SimpleGraph.Connectivity.WalkDecomp
{V : Type u} {G : SimpleGraph V} [DecidableEq V] {u v w : V} (p : G.Walk v w) (h : u β p.support) : (p.dropUntil u h).length β€ p.length - SimpleGraph.Walk.length_takeUntil_le π Mathlib.Combinatorics.SimpleGraph.Connectivity.WalkDecomp
{V : Type u} {G : SimpleGraph V} [DecidableEq V] {u v w : V} (p : G.Walk v w) (h : u β p.support) : (p.takeUntil u h).length β€ p.length - SimpleGraph.Walk.support_dropUntil_subset π Mathlib.Combinatorics.SimpleGraph.Connectivity.WalkDecomp
{V : Type u} {G : SimpleGraph V} [DecidableEq V] {u v w : V} (p : G.Walk v w) (h : u β p.support) : (p.dropUntil u h).support β p.support - SimpleGraph.Walk.support_takeUntil_subset π Mathlib.Combinatorics.SimpleGraph.Connectivity.WalkDecomp
{V : Type u} {G : SimpleGraph V} [DecidableEq V] {u v w : V} (p : G.Walk v w) (h : u β p.support) : (p.takeUntil u h).support β p.support - SimpleGraph.Walk.snd_takeUntil π Mathlib.Combinatorics.SimpleGraph.Connectivity.WalkDecomp
{V : Type u} {G : SimpleGraph V} {v w u : V} [DecidableEq V] (hsu : w β u) (p : G.Walk u v) (h : w β p.support) : (p.takeUntil w h).snd = p.snd - SimpleGraph.Walk.count_support_takeUntil_eq_one π Mathlib.Combinatorics.SimpleGraph.Connectivity.WalkDecomp
{V : Type u} {G : SimpleGraph V} [DecidableEq V] {u v w : V} (p : G.Walk v w) (h : u β p.support) : List.count u (p.takeUntil u h).support = 1 - SimpleGraph.Walk.edges_dropUntil_subset π Mathlib.Combinatorics.SimpleGraph.Connectivity.WalkDecomp
{V : Type u} {G : SimpleGraph V} [DecidableEq V] {u v w : V} (p : G.Walk v w) (h : u β p.support) : (p.dropUntil u h).edges β p.edges - SimpleGraph.Walk.edges_takeUntil_subset π Mathlib.Combinatorics.SimpleGraph.Connectivity.WalkDecomp
{V : Type u} {G : SimpleGraph V} [DecidableEq V] {u v w : V} (p : G.Walk v w) (h : u β p.support) : (p.takeUntil u h).edges β p.edges - SimpleGraph.Walk.length_takeUntil_lt π Mathlib.Combinatorics.SimpleGraph.Connectivity.WalkDecomp
{V : Type u} {G : SimpleGraph V} [DecidableEq V] {u v w : V} {p : G.Walk v w} (h : u β p.support) (huw : u β w) : (p.takeUntil u h).length < p.length - SimpleGraph.Walk.darts_dropUntil_subset π Mathlib.Combinatorics.SimpleGraph.Connectivity.WalkDecomp
{V : Type u} {G : SimpleGraph V} [DecidableEq V] {u v w : V} (p : G.Walk v w) (h : u β p.support) : (p.dropUntil u h).darts β p.darts - SimpleGraph.Walk.darts_takeUntil_subset π Mathlib.Combinatorics.SimpleGraph.Connectivity.WalkDecomp
{V : Type u} {G : SimpleGraph V} [DecidableEq V] {u v w : V} (p : G.Walk v w) (h : u β p.support) : (p.takeUntil u h).darts β p.darts - SimpleGraph.Walk.takeUntil.eq_1 π Mathlib.Combinatorics.SimpleGraph.Connectivity.WalkDecomp
{V : Type u} {G : SimpleGraph V} [inst : DecidableEq V] {v : V} (x : V) (x_1 : x β SimpleGraph.Walk.nil.support) : SimpleGraph.Walk.nil.takeUntil x x_1 = β―.mpr SimpleGraph.Walk.nil - SimpleGraph.Walk.getVert_takeUntil π Mathlib.Combinatorics.SimpleGraph.Connectivity.WalkDecomp
{V : Type u} {G : SimpleGraph V} {w : V} [DecidableEq V] {u v : V} {n : β} {p : G.Walk u v} (hw : w β p.support) (hn : n β€ (p.takeUntil w hw).length) : (p.takeUntil w hw).getVert n = p.getVert n - SimpleGraph.Walk.count_edges_takeUntil_le_one π Mathlib.Combinatorics.SimpleGraph.Connectivity.WalkDecomp
{V : Type u} {G : SimpleGraph V} [DecidableEq V] {u v w : V} (p : G.Walk v w) (h : u β p.support) (x : V) : List.count s(u, x) (p.takeUntil u h).edges β€ 1 - SimpleGraph.Walk.not_mem_support_takeUntil_support_takeUntil_subset π Mathlib.Combinatorics.SimpleGraph.Connectivity.WalkDecomp
{V : Type u} {G : SimpleGraph V} {v u : V} [DecidableEq V] {p : G.Walk u v} {w x : V} (h : x β w) (hw : w β p.support) (hx : x β (p.takeUntil w hw).support) : w β (p.takeUntil x β―).support - SimpleGraph.Walk.takeUntil_cons π Mathlib.Combinatorics.SimpleGraph.Connectivity.WalkDecomp
{V : Type u} {G : SimpleGraph V} {v w u : V} [DecidableEq V] {v' : V} {p : G.Walk v' v} (hwp : w β p.support) (h : u β w) (hadj : G.Adj u v') : (SimpleGraph.Walk.cons hadj p).takeUntil w β― = SimpleGraph.Walk.cons hadj (p.takeUntil w hwp) - SimpleGraph.Walk.takeUntil_takeUntil π Mathlib.Combinatorics.SimpleGraph.Connectivity.WalkDecomp
{V : Type u} {G : SimpleGraph V} {v u : V} [DecidableEq V] {w x : V} (p : G.Walk u v) (hw : w β p.support) (hx : x β (p.takeUntil w hw).support) : (p.takeUntil w hw).takeUntil x hx = p.takeUntil x β― - SimpleGraph.Walk.takeUntil.eq_2 π Mathlib.Combinatorics.SimpleGraph.Connectivity.WalkDecomp
{V : Type u} {G : SimpleGraph V} [inst : DecidableEq V] {v w : V} (x v_1 : V) (r : G.Adj v v_1) (p : G.Walk v_1 w) (x_1 : x β (SimpleGraph.Walk.cons r p).support) : (SimpleGraph.Walk.cons r p).takeUntil x x_1 = if hx : v = x then hx βΈ SimpleGraph.Walk.nil else SimpleGraph.Walk.cons r (p.takeUntil x β―) - SimpleGraph.Walk.takeUntil.induct π Mathlib.Combinatorics.SimpleGraph.Connectivity.WalkDecomp
{V : Type u} {G : SimpleGraph V} [DecidableEq V] (motive : {v w : V} β (p : G.Walk v w) β (u : V) β u β p.support β Prop) (case1 : β (a u : V) (h : u β SimpleGraph.Walk.nil.support), motive SimpleGraph.Walk.nil u h) (case2 : β (w v : V) (p : G.Walk v w) (u : V) (r : G.Adj u v) (h : u β (SimpleGraph.Walk.cons r p).support), motive (SimpleGraph.Walk.cons r p) u h) (case3 : β (a w v : V) (r : G.Adj a v) (p : G.Walk v w) (u : V) (h : u β (SimpleGraph.Walk.cons r p).support) (h_1 : Β¬a = u), motive p u β― β motive (SimpleGraph.Walk.cons r p) u h) {v w : V} (p : G.Walk v w) (u : V) (aβ : u β p.support) : motive p u aβ - SimpleGraph.Walk.dropUntil_copy π Mathlib.Combinatorics.SimpleGraph.Connectivity.WalkDecomp
{V : Type u} {G : SimpleGraph V} [DecidableEq V] {u v w v' w' : V} (p : G.Walk v w) (hv : v = v') (hw : w = w') (h : u β (p.copy hv hw).support) : (p.copy hv hw).dropUntil u h = (p.dropUntil u β―).copy β― hw - SimpleGraph.Walk.takeUntil_copy π Mathlib.Combinatorics.SimpleGraph.Connectivity.WalkDecomp
{V : Type u} {G : SimpleGraph V} [DecidableEq V] {u v w v' w' : V} (p : G.Walk v w) (hv : v = v') (hw : w = w') (h : u β (p.copy hv hw).support) : (p.copy hv hw).takeUntil u h = (p.takeUntil u β―).copy hv β― - SimpleGraph.Walk.IsCycle.isPath_takeUntil π Mathlib.Combinatorics.SimpleGraph.Path
{V : Type u} {G : SimpleGraph V} {v w : V} [DecidableEq V] {c : G.Walk v v} (hc : c.IsCycle) (h : w β c.support) : (c.takeUntil w h).IsPath - SimpleGraph.Walk.IsPath.dropUntil π Mathlib.Combinatorics.SimpleGraph.Path
{V : Type u} {G : SimpleGraph V} [DecidableEq V] {u v w : V} {p : G.Walk v w} (hc : p.IsPath) (h : u β p.support) : (p.dropUntil u h).IsPath - SimpleGraph.Walk.IsPath.takeUntil π Mathlib.Combinatorics.SimpleGraph.Path
{V : Type u} {G : SimpleGraph V} [DecidableEq V] {u v w : V} {p : G.Walk v w} (hc : p.IsPath) (h : u β p.support) : (p.takeUntil u h).IsPath - SimpleGraph.Walk.IsTrail.dropUntil π Mathlib.Combinatorics.SimpleGraph.Path
{V : Type u} {G : SimpleGraph V} [DecidableEq V] {u v w : V} {p : G.Walk v w} (hc : p.IsTrail) (h : u β p.support) : (p.dropUntil u h).IsTrail - SimpleGraph.Walk.IsTrail.takeUntil π Mathlib.Combinatorics.SimpleGraph.Path
{V : Type u} {G : SimpleGraph V} [DecidableEq V] {u v w : V} {p : G.Walk v w} (hc : p.IsTrail) (h : u β p.support) : (p.takeUntil u h).IsTrail - SimpleGraph.Walk.endpoint_not_mem_support_takeUntil π Mathlib.Combinatorics.SimpleGraph.Path
{V : Type u} {G : SimpleGraph V} {u v w : V} [DecidableEq V] {p : G.Walk u v} (hp : p.IsPath) (hw : w β p.support) (h : v β w) : v β (p.takeUntil w hw).support - SimpleGraph.Walk.exists_mem_support_mem_erase_mem_support_takeUntil_eq_empty π Mathlib.Combinatorics.SimpleGraph.Connectivity.Subgraph
{V : Type u} {G : SimpleGraph V} [DecidableEq V] {u v : V} {p : G.Walk u v} (s : Finset V) (h : {x β s | x β p.support}.Nonempty) : β x β s, β (hx : x β p.support), {t β s.erase x | t β (p.takeUntil x hx).support} = β - Estimator.improveUntil π Mathlib.Order.Estimator
{Ξ± : Type u_1} {Ξ΅ : Type u_2} [Preorder Ξ±] (a : Thunk Ξ±) (p : Ξ± β Bool) [Estimator a Ξ΅] [WellFoundedGT β(Set.range (EstimatorData.bound a))] (e : Ξ΅) : Except (Option Ξ΅) Ξ΅ - Estimator.improveUntilAux π Mathlib.Order.Estimator
{Ξ± : Type u_1} {Ξ΅ : Type u_2} [Preorder Ξ±] (a : Thunk Ξ±) (p : Ξ± β Bool) [Estimator a Ξ΅] [WellFoundedGT β(Set.range (EstimatorData.bound a))] (e : Ξ΅) (r : Bool) : Except (Option Ξ΅) Ξ΅ - Estimator.improveUntil_spec π Mathlib.Order.Estimator
{Ξ± : Type u_1} {Ξ΅ : Type u_2} [Preorder Ξ±] (a : Thunk Ξ±) (p : Ξ± β Bool) [Estimator a Ξ΅] [WellFoundedGT β(Set.range (EstimatorData.bound a))] (e : Ξ΅) : match Estimator.improveUntil a p e with | Except.error a_1 => Β¬p a.get = true | Except.ok e' => p (EstimatorData.bound a e') = true - Estimator.improveUntilAux_spec π Mathlib.Order.Estimator
{Ξ± : Type u_1} {Ξ΅ : Type u_2} [Preorder Ξ±] (a : Thunk Ξ±) (p : Ξ± β Bool) [Estimator a Ξ΅] [WellFoundedGT β(Set.range (EstimatorData.bound a))] (e : Ξ΅) (r : Bool) : match Estimator.improveUntilAux a p e r with | Except.error a_1 => Β¬p a.get = true | Except.ok e' => p (EstimatorData.bound a e') = true - Estimator.improveUntilAux.eq_1 π Mathlib.Order.Estimator
{Ξ± : Type u_1} {Ξ΅ : Type u_2} [Preorder Ξ±] (a : Thunk Ξ±) (p : Ξ± β Bool) [Estimator a Ξ΅] [WellFoundedGT β(Set.range (EstimatorData.bound a))] (e : Ξ΅) (r : Bool) : Estimator.improveUntilAux a p e r = if p (EstimatorData.bound a e) = true then pure e else match EstimatorData.improve a e, β― with | none, x => Except.error (if r = true then none else some e) | some e', x => Estimator.improveUntilAux a p e' true - Estimator.improveUntilAux.eq_def π Mathlib.Order.Estimator
{Ξ± : Type u_1} {Ξ΅ : Type u_2} [Preorder Ξ±] (a : Thunk Ξ±) (p : Ξ± β Bool) [Estimator a Ξ΅] [WellFoundedGT β(Set.range (EstimatorData.bound a))] (e : Ξ΅) (r : Bool) : Estimator.improveUntilAux a p e r = if p (EstimatorData.bound a e) = true then pure e else match EstimatorData.improve a e, β― with | none, x => Except.error (if r = true then none else some e) | some e', x => Estimator.improveUntilAux a p e' true - PreTilt.untiltAux π Mathlib.RingTheory.Perfectoid.Untilt
{O : Type u_1} [CommRing O] {p : β} [Fact (Nat.Prime p)] [Fact Β¬IsUnit βp] (x : PreTilt O p) (n : β) : O - PreTilt.untiltAux.eq_1 π Mathlib.RingTheory.Perfectoid.Untilt
{O : Type u_1} [CommRing O] {p : β} [Fact (Nat.Prime p)] [Fact Β¬IsUnit βp] (x : PreTilt O p) : x.untiltAux 0 = 1 - PreTilt.untiltFun π Mathlib.RingTheory.Perfectoid.Untilt
{O : Type u_1} [CommRing O] {p : β} [Fact (Nat.Prime p)] [Fact Β¬IsUnit βp] [IsPrecomplete (Ideal.span {βp}) O] (x : PreTilt O p) : O - PreTilt.untilt π Mathlib.RingTheory.Perfectoid.Untilt
{O : Type u_1} [CommRing O] {p : β} [Fact (Nat.Prime p)] [Fact Β¬IsUnit βp] [IsAdicComplete (Ideal.span {βp}) O] : PreTilt O p β* O - PreTilt.pow_dvd_untiltAux_sub_untiltAux π Mathlib.RingTheory.Perfectoid.Untilt
{O : Type u_1} [CommRing O] {p : β} [Fact (Nat.Prime p)] [Fact Β¬IsUnit βp] (x : PreTilt O p) {m n : β} (h : m β€ n) : βp ^ m β£ x.untiltAux m - x.untiltAux n - PreTilt.pow_dvd_one_untiltAux_sub_one π Mathlib.RingTheory.Perfectoid.Untilt
{O : Type u_1} [CommRing O] {p : β} [Fact (Nat.Prime p)] [Fact Β¬IsUnit βp] (m : β) : βp ^ m β£ PreTilt.untiltAux 1 m - 1 - PreTilt.untiltAux_smodEq_untiltFun π Mathlib.RingTheory.Perfectoid.Untilt
{O : Type u_1} [CommRing O] {p : β} [Fact (Nat.Prime p)] [Fact Β¬IsUnit βp] [IsPrecomplete (Ideal.span {βp}) O] (x : PreTilt O p) (n : β) : x.untiltAux n β‘ x.untiltFun [SMOD Ideal.span {βp} ^ n] - PreTilt.pow_dvd_mul_untiltAux_sub_untiltAux_mul π Mathlib.RingTheory.Perfectoid.Untilt
{O : Type u_1} [CommRing O] {p : β} [Fact (Nat.Prime p)] [Fact Β¬IsUnit βp] (x y : PreTilt O p) (m : β) : βp ^ m β£ (x * y).untiltAux m - x.untiltAux m * y.untiltAux m - PreTilt.untilt.eq_1 π Mathlib.RingTheory.Perfectoid.Untilt
{O : Type u_1} [CommRing O] {p : β} [Fact (Nat.Prime p)] [Fact Β¬IsUnit βp] [IsAdicComplete (Ideal.span {βp}) O] : PreTilt.untilt = { toFun := PreTilt.untiltFun, map_one' := β―, map_mul' := β― } - PreTilt.untiltFun.eq_1 π Mathlib.RingTheory.Perfectoid.Untilt
{O : Type u_1} [CommRing O] {p : β} [Fact (Nat.Prime p)] [Fact Β¬IsUnit βp] [IsPrecomplete (Ideal.span {βp}) O] (x : PreTilt O p) : x.untiltFun = Classical.choose β― - PreTilt.exists_smodEq_untiltAux π Mathlib.RingTheory.Perfectoid.Untilt
{O : Type u_1} [CommRing O] {p : β} [Fact (Nat.Prime p)] [Fact Β¬IsUnit βp] [IsPrecomplete (Ideal.span {βp}) O] (x : PreTilt O p) : β y, β (n : β), x.untiltAux n β‘ y [SMOD Ideal.span {βp} ^ n β’ β€] - PreTilt.untiltAux.eq_2 π Mathlib.RingTheory.Perfectoid.Untilt
{O : Type u_1} [CommRing O] {p : β} [Fact (Nat.Prime p)] [Fact Β¬IsUnit βp] (x : PreTilt O p) (n_2 : β) : x.untiltAux n_2.succ = Quotient.out ((Perfection.coeff (ModP O p) p n_2) x) ^ p ^ n_2 - PreTilt.mk_untilt_eq_coeff_zero π Mathlib.RingTheory.Perfectoid.Untilt
{O : Type u_1} [CommRing O] {p : β} [Fact (Nat.Prime p)] [Fact Β¬IsUnit βp] [IsAdicComplete (Ideal.span {βp}) O] (x : PreTilt O p) : (Ideal.Quotient.mk (Ideal.span {βp})) (PreTilt.untilt x) = (Perfection.coeff (ModP O p) p 0) x - PreTilt.mk_comp_untilt_eq_coeff_zero π Mathlib.RingTheory.Perfectoid.Untilt
{O : Type u_1} [CommRing O] {p : β} [Fact (Nat.Prime p)] [Fact Β¬IsUnit βp] [IsAdicComplete (Ideal.span {βp}) O] : β(Ideal.Quotient.mk (Ideal.span {βp})) β βPreTilt.untilt = β(Perfection.coeff (ModP O p) p 0)
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 5f22769