Loogle!
Result
Found 8473 declarations whose name contains "sin". Of these, only the first 200 are shown.
- Lean.Syntax.missing π Init.Prelude
: Lean.Syntax - Lean.Syntax.isMissing π Init.Prelude
: Lean.Syntax β Bool - Lean.Parser.Tactic.SolveByElim.using_ π Init.Tactics
: Lean.ParserDescr - Lean.Syntax.missing.sizeOf_spec π Init.SizeOf
: sizeOf Lean.Syntax.missing = 1 - Subsingleton π Init.Core
(Ξ± : Sort u) : Prop - instSubsingletonEmpty π Init.Core
: Subsingleton Empty - instSubsingletonPEmpty π Init.Core
: Subsingleton PEmpty.{u_1} - instSubsingletonPUnit π Init.Core
: Subsingleton PUnit.{u_1} - instSubsingleton π Init.Core
(p : Prop) : Subsingleton p - Singleton π Init.Core
(Ξ± : outParam (Type u)) (Ξ² : Type v) : Type (max u v) - instSubsingletonDecidable π Init.Core
(p : Prop) : Subsingleton (Decidable p) - instSubsingletonSquash π Init.Core
{Ξ± : Sort u_1} : Subsingleton (Squash Ξ±) - toBoolUsing π Init.Core
{p : Prop} (d : Decidable p) : Bool - PUnit.subsingleton π Init.Core
(a b : PUnit.{u_1}) : a = b - Singleton.mk π Init.Core
{Ξ± : outParam (Type u)} {Ξ² : Type v} (singleton : Ξ± β Ξ²) : Singleton Ξ± Ξ² - Singleton.singleton π Init.Core
{Ξ± : outParam (Type u)} {Ξ² : Type v} [self : Singleton Ξ± Ξ²] : Ξ± β Ξ² - Subsingleton.allEq π Init.Core
{Ξ± : Sort u} [self : Subsingleton Ξ±] (a b : Ξ±) : a = b - Subsingleton.elim π Init.Core
{Ξ± : Sort u} [h : Subsingleton Ξ±] (a b : Ξ±) : a = b - Subsingleton.intro π Init.Core
{Ξ± : Sort u} (allEq : β (a b : Ξ±), a = b) : Subsingleton Ξ± - instSubsingletonProd π Init.Core
{Ξ± : Type u_1} {Ξ² : Type u_2} [Subsingleton Ξ±] [Subsingleton Ξ²] : Subsingleton (Ξ± Γ Ξ²) - ofBoolUsing_eq_true π Init.Core
{p : Prop} {d : Decidable p} (h : toBoolUsing d = true) : p - of_toBoolUsing_eq_true π Init.Core
{p : Prop} {d : Decidable p} (h : toBoolUsing d = true) : p - toBoolUsing_eq_true π Init.Core
{p : Prop} (d : Decidable p) (h : p) : toBoolUsing d = true - LawfulSingleton π Init.Core
(Ξ± : Type u) (Ξ² : Type v) [EmptyCollection Ξ²] [Insert Ξ± Ξ²] [Singleton Ξ± Ξ²] : Prop - eq_iff_true_of_subsingleton π Init.Core
{Ξ± : Sort u_1} [Subsingleton Ξ±] (x y : Ξ±) : x = y β True - ofBoolUsing_eq_false π Init.Core
{p : Prop} {d : Decidable p} (h : toBoolUsing d = false) : Β¬p - of_toBoolUsing_eq_false π Init.Core
{p : Prop} {d : Decidable p} (h : toBoolUsing d = false) : Β¬p - Pi.instSubsingleton π Init.Core
{Ξ± : Sort u} {Ξ² : Ξ± β Sort v} [β (a : Ξ±), Subsingleton (Ξ² a)] : Subsingleton ((a : Ξ±) β Ξ² a) - Relation.TransGen.single π Init.Core
{Ξ± : Sort u} {r : Ξ± β Ξ± β Prop} {a b : Ξ±} : r a b β Relation.TransGen r a b - Subsingleton.helim π Init.Core
{Ξ± Ξ² : Sort u} [hβ : Subsingleton Ξ±] (hβ : Ξ± = Ξ²) (a : Ξ±) (b : Ξ²) : a β b - Quotient.recOnSubsingleton π Init.Core
{Ξ± : Sort u} {s : Setoid Ξ±} {motive : Quotient s β Sort v} [h : β (a : Ξ±), Subsingleton (motive β¦aβ§)] (q : Quotient s) (f : (a : Ξ±) β motive β¦aβ§) : motive q - recSubsingleton π Init.Core
{p : Prop} [h : Decidable p] {hβ : p β Sort u} {hβ : Β¬p β Sort u} [hβ : β (h : p), Subsingleton (hβ h)] [hβ : β (h : Β¬p), Subsingleton (hβ h)] : Subsingleton (Decidable.casesOn h hβ hβ) - Quot.recOnSubsingleton π Init.Core
{Ξ± : Sort u} {r : Ξ± β Ξ± β Prop} {motive : Quot r β Sort v} [h : β (a : Ξ±), Subsingleton (motive (Quot.mk r a))] (q : Quot r) (f : (a : Ξ±) β motive (Quot.mk r a)) : motive q - Relation.TransGen.below.single π Init.Core
{Ξ± : Sort u} {r : Ξ± β Ξ± β Prop} {a : Ξ±} {motiveβ : (a_1 : Ξ±) β Relation.TransGen r a a_1 β Prop} {b : Ξ±} (aβ : r a b) : β―.below - LawfulSingleton.insert_empty_eq π Init.Core
{Ξ± : Type u} {Ξ² : Type v} {instβ : EmptyCollection Ξ²} {instβΒΉ : Insert Ξ± Ξ²} {instβΒ² : Singleton Ξ± Ξ²} [self : LawfulSingleton Ξ± Ξ²] (x : Ξ±) : insert x β = {x} - LawfulSingleton.insert_emptyc_eq π Init.Core
{Ξ² : Type u_1} {Ξ± : Type u_2} [EmptyCollection Ξ²] [Insert Ξ± Ξ²] [Singleton Ξ± Ξ²] [LawfulSingleton Ξ± Ξ²] (x : Ξ±) : insert x β = {x} - LawfulSingleton.mk π Init.Core
{Ξ± : Type u} {Ξ² : Type v} [EmptyCollection Ξ²] [Insert Ξ± Ξ²] [Singleton Ξ± Ξ²] (insert_empty_eq : β (x : Ξ±), insert x β = {x}) : LawfulSingleton Ξ± Ξ² - Quotient.recOnSubsingletonβ π Init.Core
{Ξ± : Sort uA} {Ξ² : Sort uB} {sβ : Setoid Ξ±} {sβ : Setoid Ξ²} {motive : Quotient sβ β Quotient sβ β Sort uC} [s : β (a : Ξ±) (b : Ξ²), Subsingleton (motive β¦aβ§ β¦bβ§)] (qβ : Quotient sβ) (qβ : Quotient sβ) (g : (a : Ξ±) β (b : Ξ²) β motive β¦aβ§ β¦bβ§) : motive qβ qβ - instSubsingletonStateM π Init.Control.State
{Ο Ξ± : Type u_1} [Subsingleton Ο] [Subsingleton Ξ±] : Subsingleton (StateM Ο Ξ±) - Lean.Meta.Simp.Config.singlePass π Init.MetaTypes
(self : Lean.Meta.Simp.Config) : Bool - tacticDecreasing_tactic π Init.WFTactics
: Lean.ParserDescr - tacticDecreasing_trivial π Init.WFTactics
: Lean.ParserDescr - tacticDecreasing_trivial_pre_omega π Init.WFTactics
: Lean.ParserDescr - tacticDecreasing_with_ π Init.WFTactics
: Lean.ParserDescr - List.singleton π Init.Data.List.Basic
{Ξ± : Type u} (a : Ξ±) : List Ξ± - List.IsInfix π Init.Data.List.Basic
{Ξ± : Type u} (lβ lβ : List Ξ±) : Prop - List.dropLast_single π Init.Data.List.Basic
{Ξ±β : Type u_1} {x : Ξ±β} : [x].dropLast = [] - List.dropLast_singleton π Init.Data.List.Basic
{Ξ±β : Type u_1} {x : Ξ±β} : [x].dropLast = [] - List.length_singleton π Init.Data.List.Basic
{Ξ± : Type u} {a : Ξ±} : [a].length = 1 - List.intersperse_single π Init.Data.List.Basic
{Ξ± : Type u} {x sep : Ξ±} : List.intersperse sep [x] = [x] - String.singleton π Init.Data.String.Basic
(c : Char) : String - String.length_singleton π Init.Data.String.Basic
(c : Char) : (String.singleton c).length = 1 - String.singleton_eq π Init.Data.String.Basic
(c : Char) : String.singleton c = { data := [c] } - String.data_singleton π Init.Data.String.Basic
(c : Char) : (String.singleton c).data = [c] - String.isInt π Init.Data.ToString.Basic
(s : String) : Bool - Array.singleton π Init.Data.Array.Basic
{Ξ± : Type u} (v : Ξ±) : Array Ξ± - Lean.Name.isInaccessibleUserName π Init.Meta
: Lean.Name β Bool - Lean.Syntax.isInterpolatedStrLit? π Init.Meta
(stx : Lean.Syntax) : Option String - Lean.Syntax.SepArray.ofElemsUsingRef π Init.Meta
{m : Type β Type} [Monad m] [Lean.MonadRef m] {sep : String} (elems : Array Lean.Syntax) : m (Lean.Syntax.SepArray sep) - Lean.Parser.Tactic.Conv.occsIndexed π Init.Conv
: Lean.ParserDescr - Lean.singletonUnexpander π Init.NotationExtra
: Lean.PrettyPrinter.Unexpander - Classical.epsilon_singleton π Init.Classical
{Ξ± : Sort u} (x : Ξ±) : (Classical.epsilon fun y => y = x) = x - List.mem_singleton_self π Init.Data.List.Lemmas
{Ξ± : Type u_1} (a : Ξ±) : a β [a] - List.getLast?_singleton π Init.Data.List.Lemmas
{Ξ± : Type u_1} {a : Ξ±} : [a].getLast? = some a - List.head?_singleton π Init.Data.List.Lemmas
{Ξ± : Type u_1} {a : Ξ±} : [a].head? = some a - List.head_singleton π Init.Data.List.Lemmas
{Ξ± : Type u_1} {a : Ξ±} : [a].head β― = a - List.flatten_singleton π Init.Data.List.Lemmas
{Ξ± : Type u_1} {l : List Ξ±} : [l].flatten = l - List.flatMap_singleton' π Init.Data.List.Lemmas
{Ξ± : Type u_1} (l : List Ξ±) : List.flatMap (fun x => [x]) l = l - List.eq_of_mem_singleton π Init.Data.List.Lemmas
{Ξ±β : Type u_1} {b a : Ξ±β} : a β [b] β a = b - List.flatMap_singleton π Init.Data.List.Lemmas
{Ξ± : Type u_1} {Ξ² : Type u_2} (f : Ξ± β List Ξ²) (x : Ξ±) : List.flatMap f [x] = f x - List.mem_singleton π Init.Data.List.Lemmas
{Ξ± : Type u_1} {a b : Ξ±} : a β [b] β a = b - List.flatten_replicate_singleton π Init.Data.List.Lemmas
{n : β} {Ξ±β : Type u_1} {a : Ξ±β} : (List.replicate n [a]).flatten = List.replicate n a - List.singleton_inj π Init.Data.List.Lemmas
{Ξ± : Type u_1} {a b : Ξ±} : [a] = [b] β a = b - List.forall_mem_singleton π Init.Data.List.Lemmas
{Ξ± : Type u_1} {p : Ξ± β Prop} {a : Ξ±} : (β x β [a], p x) β p a - List.getLast_singleton π Init.Data.List.Lemmas
{Ξ± : Type u_1} {a : Ξ±} (h : [a] β []) : [a].getLast h = a - List.map_singleton π Init.Data.List.Lemmas
{Ξ± : Type u_1} {Ξ² : Type u_2} {f : Ξ± β Ξ²} {a : Ξ±} : List.map f [a] = [f a] - List.singleton_append π Init.Data.List.Lemmas
{Ξ±β : Type u_1} {x : Ξ±β} {l : List Ξ±β} : [x] ++ l = x :: l - List.getElem_singleton π Init.Data.List.Lemmas
{Ξ± : Type u_1} {a : Ξ±} {i : β} (h : i < 1) : [a][i] = a - List.map_eq_singleton_iff π Init.Data.List.Lemmas
{Ξ± : Type u_1} {Ξ² : Type u_2} {f : Ξ± β Ξ²} {l : List Ξ±} {b : Ξ²} : List.map f l = [b] β β a, l = [a] β§ f a = b - List.replace_singleton π Init.Data.List.Lemmas
{Ξ± : Type u_1} [BEq Ξ±] {a b c : Ξ±} : [a].replace b c = [if (b == a) = true then c else a] - List.getElem?_singleton π Init.Data.List.Lemmas
{Ξ± : Type u_1} {a : Ξ±} {i : β} : [a][i]? = if i = 0 then some a else none - List.append_eq_singleton_iff π Init.Data.List.Lemmas
{Ξ±β : Type u_1} {a b : List Ξ±β} {x : Ξ±β} : a ++ b = [x] β a = [] β§ b = [x] β¨ a = [x] β§ b = [] - List.singleton_eq_append_iff π Init.Data.List.Lemmas
{Ξ±β : Type u_1} {x : Ξ±β} {a b : List Ξ±β} : [x] = a ++ b β a = [] β§ b = [x] β¨ a = [x] β§ b = [] - List.flatten_eq_singleton_iff π Init.Data.List.Lemmas
{Ξ± : Type u_1} {xs : List (List Ξ±)} {y : Ξ±} : xs.flatten = [y] β β as bs, xs = as ++ [y] :: bs β§ (β l β as, l = []) β§ β l β bs, l = [] - List.singleton_eq_flatten_iff π Init.Data.List.Lemmas
{Ξ± : Type u_1} {xs : List (List Ξ±)} {y : Ξ±} : [y] = xs.flatten β β as bs, xs = as ++ [y] :: bs β§ (β l β as, l = []) β§ β l β bs, l = [] - BitVec.instSubsingletonOfNatNat π Init.Data.BitVec.Basic
: Subsingleton (BitVec 0) - Fin.subsingleton_one π Init.Data.Fin.Lemmas
: Subsingleton (Fin 1) - Fin.subsingleton_zero π Init.Data.Fin.Lemmas
: Subsingleton (Fin 0) - Fin.subsingleton_iff_le_one π Init.Data.Fin.Lemmas
{n : β} : Subsingleton (Fin n) β n β€ 1 - List.IsInfix.sublist π Init.Data.List.Sublist
{Ξ±β : Type u_1} {lβ lβ : List Ξ±β} : lβ <:+: lβ β lβ.Sublist lβ - List.IsPrefix.isInfix π Init.Data.List.Sublist
{Ξ±β : Type u_1} {lβ lβ : List Ξ±β} : lβ <+: lβ β lβ <:+: lβ - List.IsSuffix.isInfix π Init.Data.List.Sublist
{Ξ±β : Type u_1} {lβ lβ : List Ξ±β} : lβ <:+ lβ β lβ <:+: lβ - List.IsInfix.subset π Init.Data.List.Sublist
{Ξ±β : Type u_1} {lβ lβ : List Ξ±β} (hl : lβ <:+: lβ) : lβ β lβ - List.IsInfix.reverse π Init.Data.List.Sublist
{Ξ±β : Type u_1} {lβ lβ : List Ξ±β} : lβ <:+: lβ β lβ.reverse <:+: lβ.reverse - List.IsInfix.length_le π Init.Data.List.Sublist
{Ξ±β : Type u_1} {lβ lβ : List Ξ±β} (h : lβ <:+: lβ) : lβ.length β€ lβ.length - List.IsInfix.trans π Init.Data.List.Sublist
{Ξ± : Type u_1} {lβ lβ lβ : List Ξ±} : lβ <:+: lβ β lβ <:+: lβ β lβ <:+: lβ - List.singleton_sublist π Init.Data.List.Sublist
{Ξ± : Type u_1} {a : Ξ±} {l : List Ξ±} : [a].Sublist l β a β l - List.IsInfix.filter π Init.Data.List.Sublist
{Ξ± : Type u_1} (p : Ξ± β Bool) β¦lβ lβ : List Ξ±β¦ (h : lβ <:+: lβ) : List.filter p lβ <:+: List.filter p lβ - List.IsInfix.ne_nil π Init.Data.List.Sublist
{Ξ± : Type u_1} {xs ys : List Ξ±} (h : xs <:+: ys) (hx : xs β []) : ys β [] - List.IsInfix.eq_of_length π Init.Data.List.Sublist
{Ξ±β : Type u_1} {lβ lβ : List Ξ±β} (h : lβ <:+: lβ) : lβ.length = lβ.length β lβ = lβ - List.IsInfix.eq_of_length_le π Init.Data.List.Sublist
{Ξ±β : Type u_1} {lβ lβ : List Ξ±β} (h : lβ <:+: lβ) : lβ.length β€ lβ.length β lβ = lβ - List.IsInfix.map π Init.Data.List.Sublist
{Ξ± : Type u_1} {Ξ² : Type u_2} (f : Ξ± β Ξ²) β¦lβ lβ : List Ξ±β¦ (h : lβ <:+: lβ) : List.map f lβ <:+: List.map f lβ - List.IsInfix.filterMap π Init.Data.List.Sublist
{Ξ± : Type u_1} {Ξ² : Type u_2} (f : Ξ± β Option Ξ²) β¦lβ lβ : List Ξ±β¦ (h : lβ <:+: lβ) : List.filterMap f lβ <:+: List.filterMap f lβ - List.IsInfix.mem π Init.Data.List.Sublist
{Ξ±β : Type u_1} {lβ : List Ξ±β} {a : Ξ±β} {lβ : List Ξ±β} (hx : a β lβ) (hl : lβ <:+: lβ) : a β lβ - List.isInfix_replicate_iff π Init.Data.List.Sublist
{Ξ± : Type u_1} {n : β} {a : Ξ±} {l : List Ξ±} : l <:+: List.replicate n a β l.length β€ n β§ l = List.replicate l.length a - List.isInfix_filter_iff π Init.Data.List.Sublist
{Ξ± : Type u_1} {p : Ξ± β Bool} {lβ lβ : List Ξ±} : lβ <:+: List.filter p lβ β β l, l <:+: lβ β§ lβ = List.filter p l - List.isInfix_map_iff π Init.Data.List.Sublist
{Ξ± : Type u_1} {Ξ² : Type u_2} {f : Ξ± β Ξ²} {lβ : List Ξ±} {lβ : List Ξ²} : lβ <:+: List.map f lβ β β l, l <:+: lβ β§ lβ = List.map f l - List.isInfix_filterMap_iff π Init.Data.List.Sublist
{Ξ± : Type u_1} {Ξ² : Type u_2} {f : Ξ± β Option Ξ²} {lβ : List Ξ±} {lβ : List Ξ²} : lβ <:+: List.filterMap f lβ β β l, l <:+: lβ β§ lβ = List.filterMap f l - List.IsInfix.eq_1 π Init.Data.List.Sublist
{Ξ± : Type u} (lβ lβ : List Ξ±) : (lβ <:+: lβ) = β s t, s ++ lβ ++ t = lβ - List.IsInfix.countP_le π Init.Data.List.Count
{Ξ± : Type u_1} {p : Ξ± β Bool} {lβ lβ : List Ξ±} (s : lβ <:+: lβ) : List.countP p lβ β€ List.countP p lβ - List.count_singleton_self π Init.Data.List.Count
{Ξ± : Type u_1} [BEq Ξ±] [LawfulBEq Ξ±] {a : Ξ±} : List.count a [a] = 1 - List.IsInfix.count_le π Init.Data.List.Count
{Ξ± : Type u_1} [BEq Ξ±] {lβ lβ : List Ξ±} (a : Ξ±) (h : lβ <:+: lβ) : List.count a lβ β€ List.count a lβ - List.countP_singleton π Init.Data.List.Count
{Ξ± : Type u_1} {p : Ξ± β Bool} {a : Ξ±} : List.countP p [a] = if p a = true then 1 else 0 - List.count_singleton π Init.Data.List.Count
{Ξ± : Type u_1} [BEq Ξ±] {a b : Ξ±} : List.count a [b] = if (b == a) = true then 1 else 0 - List.pairwise_singleton π Init.Data.List.Pairwise
{Ξ± : Type u_1} (R : Ξ± β Ξ± β Prop) (a : Ξ±) : List.Pairwise R [a] - List.findSome?_singleton π Init.Data.List.Impl
{Ξ± : Type u_1} {Ξ±β : Type u_2} {f : Ξ± β Option Ξ±β} {a : Ξ±} : List.findSome? f [a] = f a - List.find?_singleton π Init.Data.List.Impl
{Ξ± : Type u_1} {p : Ξ± β Bool} {a : Ξ±} : List.find? p [a] = if p a = true then some a else none - List.IsInfix.find?_eq_none π Init.Data.List.Find
{Ξ± : Type u_1} {lβ lβ : List Ξ±} {p : Ξ± β Bool} (h : lβ <:+: lβ) : List.find? p lβ = none β List.find? p lβ = none - List.IsInfix.findIdx?_eq_none π Init.Data.List.Find
{Ξ± : Type u_1} {lβ lβ : List Ξ±} {p : Ξ± β Bool} (h : lβ <:+: lβ) : List.findIdx? p lβ = none β List.findIdx? p lβ = none - List.IsInfix.findSome?_eq_none π Init.Data.List.Find
{Ξ± : Type u_1} {Ξ² : Type u_2} {lβ lβ : List Ξ±} {f : Ξ± β Option Ξ²} (h : lβ <:+: lβ) : List.findSome? f lβ = none β List.findSome? f lβ = none - List.findIdx_singleton π Init.Data.List.Find
{Ξ± : Type u_1} {a : Ξ±} {p : Ξ± β Bool} : List.findIdx p [a] = if p a = true then 0 else 1 - List.findIdx?_singleton π Init.Data.List.Find
{Ξ± : Type u_1} {a : Ξ±} {p : Ξ± β Bool} : List.findIdx? p [a] = if p a = true then some 0 else none - List.idxOf?_singleton π Init.Data.List.Find
{Ξ± : Type u_1} [BEq Ξ±] {a b : Ξ±} : List.idxOf? b [a] = if (a == b) = true then some 0 else none - List.IsInfix.lookup_eq_none π Init.Data.List.Find
{Ξ± : Type u_2} [BEq Ξ±] [LawfulBEq Ξ±] {Ξ² : Type u_1} {k : Ξ±} {lβ lβ : List (Ξ± Γ Ξ²)} (h : lβ <:+: lβ) : List.lookup k lβ = none β List.lookup k lβ = none - List.lookup_singleton π Init.Data.List.Find
{Ξ± : Type u_1} [BEq Ξ±] [LawfulBEq Ξ±] {c a b : Ξ±} : List.lookup c [(a, b)] = if (c == a) = true then some b else none - List.findFinIdx?_singleton π Init.Data.List.Find
{Ξ± : Type u_1} {a : Ξ±} {p : Ξ± β Bool} : List.findFinIdx? p [a] = if p a = true then some β¨0, List.findFinIdx?_singleton._proof_1β© else none - Std.Iterators.IterM.IsPlausibleIndirectSuccessorOf.single π Init.Data.Iterators.Basic
{Ξ± Ξ² : Type w} {m : Type w β Type w'} [Std.Iterators.Iterator Ξ± m Ξ²] {it' it : Std.IterM m Ξ²} (h : it'.IsPlausibleSuccessorOf it) : it'.IsPlausibleIndirectSuccessorOf it - List.toArray_singleton π Init.Data.List.ToArray
{Ξ± : Type u_1} (a : Ξ±) : (List.singleton a).toArray = Array.singleton a - Array.singleton_def π Init.Data.Array.Lemmas
{Ξ± : Type u_1} {v : Ξ±} : Array.singleton v = #[v] - Array.mem_singleton_self π Init.Data.Array.Lemmas
{Ξ± : Type u_1} (a : Ξ±) : a β #[a] - Array.back_singleton π Init.Data.Array.Lemmas
{Ξ± : Type u_1} {a : Ξ±} : #[a].back β― = a - Array.flatMap_singleton' π Init.Data.Array.Lemmas
{Ξ± : Type u_1} (xs : Array Ξ±) : Array.flatMap (fun x => #[x]) xs = xs - Array.flatten_singleton π Init.Data.Array.Lemmas
{Ξ± : Type u_1} {xs : Array Ξ±} : #[xs].flatten = xs - Array.singleton_eq_toArray_singleton π Init.Data.Array.Lemmas
{Ξ± : Type u_1} {a : Ξ±} : #[a] = #[a] - Array.eq_of_mem_singleton π Init.Data.Array.Lemmas
{Ξ±β : Type u_1} {b a : Ξ±β} (h : a β #[b]) : a = b - Array.flatMap_singleton π Init.Data.Array.Lemmas
{Ξ± : Type u_1} {Ξ² : Type u_2} {f : Ξ± β Array Ξ²} {x : Ξ±} : Array.flatMap f #[x] = f x - Array.mem_singleton π Init.Data.Array.Lemmas
{Ξ± : Type u_1} {a b : Ξ±} : a β #[b] β a = b - Array.flatten_mkArray_singleton π Init.Data.Array.Lemmas
{n : β} {Ξ±β : Type u_1} {a : Ξ±β} : (Array.replicate n #[a]).flatten = Array.replicate n a - Array.flatten_replicate_singleton π Init.Data.Array.Lemmas
{n : β} {Ξ±β : Type u_1} {a : Ξ±β} : (Array.replicate n #[a]).flatten = Array.replicate n a - Array.forall_mem_singleton π Init.Data.Array.Lemmas
{Ξ± : Type u_1} {p : Ξ± β Prop} {a : Ξ±} : (β x β #[a], p x) β p a - Array.singleton_inj π Init.Data.Array.Lemmas
{Ξ±β : Type u_1} {a b : Ξ±β} : #[a] = #[b] β a = b - Array.map_singleton π Init.Data.Array.Lemmas
{Ξ± : Type u_1} {Ξ² : Type u_2} {f : Ξ± β Ξ²} {a : Ξ±} : Array.map f #[a] = #[f a] - Array.append_singleton π Init.Data.Array.Lemmas
{Ξ± : Type u_1} {a : Ξ±} {as : Array Ξ±} : as ++ #[a] = as.push a - Array.push_eq_append_singleton π Init.Data.Array.Lemmas
{Ξ± : Type u_1} {as : Array Ξ±} {x : Ξ±} : as.push x = as ++ #[x] - Array.getElem_singleton π Init.Data.Array.Lemmas
{Ξ± : Type u_1} {a : Ξ±} {i : β} (h : i < 1) : #[a][i] = a - Array.map_eq_singleton_iff π Init.Data.Array.Lemmas
{Ξ± : Type u_1} {Ξ² : Type u_2} {f : Ξ± β Ξ²} {xs : Array Ξ±} {b : Ξ²} : Array.map f xs = #[b] β β a, xs = #[a] β§ f a = b - Array.replace_singleton π Init.Data.Array.Lemmas
{Ξ± : Type u_1} [BEq Ξ±] {a b c : Ξ±} : #[a].replace b c = #[if (a == b) = true then c else a] - Array.getElem?_singleton π Init.Data.Array.Lemmas
{Ξ± : Type u_1} {a : Ξ±} {i : β} : #[a][i]? = if i = 0 then some a else none - Array.append_singleton_assoc π Init.Data.Array.Lemmas
{Ξ± : Type u_1} {a : Ξ±} {xs ys : Array Ξ±} : xs ++ (#[a] ++ ys) = xs.push a ++ ys - Array.append_eq_singleton_iff π Init.Data.Array.Lemmas
{Ξ± : Type u_1} {xs ys : Array Ξ±} {x : Ξ±} : xs ++ ys = #[x] β xs = #[] β§ ys = #[x] β¨ xs = #[x] β§ ys = #[] - Array.singleton_eq_append_iff π Init.Data.Array.Lemmas
{Ξ± : Type u_1} {xs ys : Array Ξ±} {x : Ξ±} : #[x] = xs ++ ys β xs = #[] β§ ys = #[x] β¨ xs = #[x] β§ ys = #[] - List.IsInfix.le_countP π Init.Data.List.Nat.Count
{Ξ±β : Type u_1} {lβ lβ : List Ξ±β} {p : Ξ±β β Bool} (s : lβ <:+: lβ) : List.countP p lβ - (lβ.length - lβ.length) β€ List.countP p lβ - List.IsInfix.le_count π Init.Data.List.Nat.Count
{Ξ± : Type u_1} [BEq Ξ±] {lβ lβ : List Ξ±} (s : lβ <:+: lβ) (a : Ξ±) : List.count a lβ - (lβ.length - lβ.length) β€ List.count a lβ - Array.count_singleton_self π Init.Data.Array.Count
{Ξ± : Type u_1} [BEq Ξ±] [LawfulBEq Ξ±] {a : Ξ±} : Array.count a #[a] = 1 - Array.countP_singleton π Init.Data.Array.Count
{Ξ± : Type u_1} {p : Ξ± β Bool} {a : Ξ±} : Array.countP p #[a] = if p a = true then 1 else 0 - Array.count_singleton π Init.Data.Array.Count
{Ξ± : Type u_1} [BEq Ξ±] {a b : Ξ±} : Array.count a #[b] = if (b == a) = true then 1 else 0 - List.zipIdx_singleton π Init.Data.List.Nat.Range
{Ξ± : Type u_1} {x : Ξ±} {k : β} : [x].zipIdx k = [(x, k)] - List.range'_eq_singleton_iff π Init.Data.List.Nat.Range
{s n a : β} : List.range' s n = [a] β s = a β§ n = 1 - Option.toList_eq_singleton_iff π Init.Data.Option.List
{Ξ± : Type u_1} {a : Ξ±} {o : Option Ξ±} : o.toList = [a] β o = some a - Option.toArray_eq_singleton_iff π Init.Data.Option.Array
{Ξ± : Type u_1} {a : Ξ±} {o : Option Ξ±} : o.toArray = #[a] β o = some a - Option.instSubsingletonSubtypeEqSome π Init.Data.Option.Attach
{Ξ± : Type u_1} {o : Option Ξ±} : Subsingleton { x // o = some x } - List.mapIdx_singleton π Init.Data.List.MapIdx
{Ξ± : Type u_1} {Ξ±β : Type u_2} {f : β β Ξ± β Ξ±β} {a : Ξ±} : List.mapIdx f [a] = [f 0 a] - List.mapFinIdx_singleton π Init.Data.List.MapIdx
{Ξ± : Type u_1} {Ξ² : Type u_2} {a : Ξ±} {f : (i : β) β Ξ± β i < 1 β Ξ²} : [a].mapFinIdx f = [f 0 a List.mapFinIdx_singleton._proof_1] - List.mapIdx_eq_singleton_iff π Init.Data.List.MapIdx
{Ξ± : Type u_1} {Ξ² : Type u_2} {l : List Ξ±} {f : β β Ξ± β Ξ²} {b : Ξ²} : List.mapIdx f l = [b] β β a, l = [a] β§ f 0 a = b - List.mapFinIdx_eq_singleton_iff π Init.Data.List.MapIdx
{Ξ± : Type u_1} {Ξ² : Type u_2} {l : List Ξ±} {f : (i : β) β Ξ± β i < l.length β Ξ²} {b : Ξ²} : l.mapFinIdx f = [b] β β a, β (w : l = [a]), f 0 a β― = b - Array.mapIdx_singleton π Init.Data.Array.MapIdx
{Ξ± : Type u_1} {Ξ±β : Type u_2} {f : β β Ξ± β Ξ±β} {a : Ξ±} : Array.mapIdx f #[a] = #[f 0 a] - Array.mapFinIdx_singleton π Init.Data.Array.MapIdx
{Ξ± : Type u_1} {Ξ² : Type u_2} {a : Ξ±} {f : (i : β) β Ξ± β i < 1 β Ξ²} : #[a].mapFinIdx f = #[f 0 a Array.mapFinIdx_singleton._proof_1] - Array.mapIdx_eq_singleton_iff π Init.Data.Array.MapIdx
{Ξ± : Type u_1} {Ξ² : Type u_2} {xs : Array Ξ±} {f : β β Ξ± β Ξ²} {b : Ξ²} : Array.mapIdx f xs = #[b] β β a, xs = #[a] β§ f 0 a = b - Array.mapFinIdx_eq_singleton_iff π Init.Data.Array.MapIdx
{Ξ± : Type u_1} {Ξ² : Type u_2} {xs : Array Ξ±} {f : (i : β) β Ξ± β i < xs.size β Ξ²} {b : Ξ²} : xs.mapFinIdx f = #[b] β β a, β (w : xs = #[a]), f 0 a β― = b - Array.range'_eq_singleton_iff π Init.Data.Array.Range
{s n a : β} : Array.range' s n = #[a] β s = a β§ n = 1 - Array.zipIdx_singleton π Init.Data.Array.Range
{Ξ± : Type u_1} {x : Ξ±} {k : β} : #[x].zipIdx k = #[(x, k)] - Vector.singleton π Init.Data.Vector.Basic
{Ξ± : Type u_1} (v : Ξ±) : Vector Ξ± 1 - List.isInfix_iff π Init.Data.List.Nat.Sublist
{Ξ± : Type u_1} {lβ lβ : List Ξ±} : lβ <:+: lβ β β k, lβ.length + k β€ lβ.length β§ β (i : β) (h : i < lβ.length), lβ[i + k]? = some lβ[i] - List.singleton_perm_singleton π Init.Data.List.Perm
{Ξ± : Type u_1} {a b : Ξ±} : [a].Perm [b] β a = b - List.Perm.eq_singleton π Init.Data.List.Perm
{Ξ±β : Type u_1} {l : List Ξ±β} {a : Ξ±β} (h : l.Perm [a]) : l = [a] - List.Perm.singleton_eq π Init.Data.List.Perm
{Ξ±β : Type u_1} {a : Ξ±β} {l : List Ξ±β} (h : [a].Perm l) : [a] = l - List.perm_singleton π Init.Data.List.Perm
{Ξ± : Type u_1} {a : Ξ±} {l : List Ξ±} : l.Perm [a] β l = [a] - List.singleton_perm π Init.Data.List.Perm
{Ξ± : Type u_1} {a : Ξ±} {l : List Ξ±} : [a].Perm l β [a] = l - List.perm_append_singleton π Init.Data.List.Perm
{Ξ± : Type u_1} (a : Ξ±) (l : List Ξ±) : (l ++ [a]).Perm (a :: l) - List.mergeSort_singleton π Init.Data.List.Sort.Lemmas
{Ξ± : Type u_1} {r : Ξ± β Ξ± β Bool} (a : Ξ±) : [a].mergeSort r = [a] - Lean.Grind.IntInterval.sint π Init.Grind.ToInt
(n : β) : Lean.Grind.IntInterval - Lean.Grind.instToIntISizeSintNumBits π Init.GrindInstances.ToInt
: Lean.Grind.ToInt ISize (Lean.Grind.IntInterval.sint System.Platform.numBits) - Lean.Grind.instAddISizeSintNumBits π Init.GrindInstances.ToInt
: Lean.Grind.ToInt.Add ISize (Lean.Grind.IntInterval.sint System.Platform.numBits) - Lean.Grind.instLEISizeSintNumBits π Init.GrindInstances.ToInt
: Lean.Grind.ToInt.LE ISize (Lean.Grind.IntInterval.sint System.Platform.numBits) - Lean.Grind.instLTISizeSintNumBits π Init.GrindInstances.ToInt
: Lean.Grind.ToInt.LT ISize (Lean.Grind.IntInterval.sint System.Platform.numBits) - Lean.Grind.instMulISizeSintNumBits π Init.GrindInstances.ToInt
: Lean.Grind.ToInt.Mul ISize (Lean.Grind.IntInterval.sint System.Platform.numBits) - Lean.Grind.instOfNatISizeSintNumBits π Init.GrindInstances.ToInt
: Lean.Grind.ToInt.OfNat ISize (Lean.Grind.IntInterval.sint System.Platform.numBits) - Lean.Grind.instToIntInt16SintOfNatNat π Init.GrindInstances.ToInt
: Lean.Grind.ToInt Int16 (Lean.Grind.IntInterval.sint 16) - Lean.Grind.instToIntInt32SintOfNatNat π Init.GrindInstances.ToInt
: Lean.Grind.ToInt Int32 (Lean.Grind.IntInterval.sint 32) - Lean.Grind.instToIntInt64SintOfNatNat π Init.GrindInstances.ToInt
: Lean.Grind.ToInt Int64 (Lean.Grind.IntInterval.sint 64) - Lean.Grind.instToIntInt8SintOfNatNat π Init.GrindInstances.ToInt
: Lean.Grind.ToInt Int8 (Lean.Grind.IntInterval.sint 8) - Lean.Grind.instZeroISizeSintNumBits π Init.GrindInstances.ToInt
: Lean.Grind.ToInt.Zero ISize (Lean.Grind.IntInterval.sint System.Platform.numBits) - Lean.Grind.instAddInt16SintOfNatNat π Init.GrindInstances.ToInt
: Lean.Grind.ToInt.Add Int16 (Lean.Grind.IntInterval.sint 16) - Lean.Grind.instAddInt32SintOfNatNat π Init.GrindInstances.ToInt
: Lean.Grind.ToInt.Add Int32 (Lean.Grind.IntInterval.sint 32) - Lean.Grind.instAddInt64SintOfNatNat π Init.GrindInstances.ToInt
: Lean.Grind.ToInt.Add Int64 (Lean.Grind.IntInterval.sint 64) - Lean.Grind.instAddInt8SintOfNatNat π Init.GrindInstances.ToInt
: Lean.Grind.ToInt.Add Int8 (Lean.Grind.IntInterval.sint 8) - Lean.Grind.instLEInt16SintOfNatNat π Init.GrindInstances.ToInt
: Lean.Grind.ToInt.LE Int16 (Lean.Grind.IntInterval.sint 16) - Lean.Grind.instLEInt32SintOfNatNat π Init.GrindInstances.ToInt
: Lean.Grind.ToInt.LE Int32 (Lean.Grind.IntInterval.sint 32) - Lean.Grind.instLEInt64SintOfNatNat π Init.GrindInstances.ToInt
: Lean.Grind.ToInt.LE Int64 (Lean.Grind.IntInterval.sint 64) - Lean.Grind.instLEInt8SintOfNatNat π Init.GrindInstances.ToInt
: Lean.Grind.ToInt.LE Int8 (Lean.Grind.IntInterval.sint 8)
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 06e7f72
serving mathlib revision e128198