File: .lake/packages/lean4/src/lean/Lean/Data/PrefixTree.lean

full_name: Lean.PrefixTreeNode
code: inductive PrefixTreeNode (α : Type u) (β : Type v) where
  | Node : Option β → RBNode α (fun _ => PrefixTreeNode α β) → PrefixTreeNode α β
goal: Type (max u v)

full_name: Lean.PrefixTreeNode.Node
code: inductive PrefixTreeNode (α : Type u) (β : Type v) where
  | Node : Option β → RBNode α (fun _ => PrefixTreeNode α β) → PrefixTreeNode α β
goal: Option β → (Lean.RBNode α fun x => Lean.PrefixTreeNode α β) → Lean.PrefixTreeNode α β

full_name: Lean.instInhabitedPrefixTreeNode
code: instance : Inhabited (PrefixTreeNode α β) 
goal: Inhabited (Lean.PrefixTreeNode α β)

full_name: Lean.PrefixTreeNode.empty
code: def empty : PrefixTreeNode α β 
goal: Lean.PrefixTreeNode α β

full_name: Lean.PrefixTreeNode.insert.loop
code: @[specialize]
partial def insert (t : PrefixTreeNode α β) (cmp : α → α → Ordering) (k : List α) (val : β) : PrefixTreeNode α β 
goal: Lean.PrefixTreeNode α β → List α → Lean.PrefixTreeNode α β

full_name: Lean.PrefixTreeNode.insert
code: @[specialize]
partial def insert (t : PrefixTreeNode α β) (cmp : α → α → Ordering) (k : List α) (val : β) : PrefixTreeNode α β 
goal: Lean.PrefixTreeNode α β

full_name: Lean.PrefixTreeNode.insert.insertEmpty
code: @[specialize]
partial def insert (t : PrefixTreeNode α β) (cmp : α → α → Ordering) (k : List α) (val : β) : PrefixTreeNode α β 
goal: Lean.PrefixTreeNode α β

full_name: Lean.PrefixTreeNode.find?.loop
code: @[specialize]
partial def find? (t : PrefixTreeNode α β) (cmp : α → α → Ordering) (k : List α) : Option β 
goal: Lean.PrefixTreeNode α β → List α → Option β

full_name: Lean.PrefixTreeNode.find?
code: @[specialize]
partial def find? (t : PrefixTreeNode α β) (cmp : α → α → Ordering) (k : List α) : Option β 
goal: Option β

full_name: Lean.PrefixTreeNode.foldMatchingM
code: @[specialize]
partial def foldMatchingM [Monad m] (t : PrefixTreeNode α β) (cmp : α → α → Ordering) (k : List α) (init : σ) (f : β → σ → m σ) : m σ 
goal: m σ

full_name: Lean.PrefixTreeNode.foldMatchingM.find
code: @[specialize]
partial def foldMatchingM [Monad m] (t : PrefixTreeNode α β) (cmp : α → α → Ordering) (k : List α) (init : σ) (f : β → σ → m σ) : m σ 
goal: List α → Lean.PrefixTreeNode α β → σ → m σ

full_name: Lean.PrefixTreeNode.foldMatchingM.fold
code: @[specialize]
partial def foldMatchingM [Monad m] (t : PrefixTreeNode α β) (cmp : α → α → Ordering) (k : List α) (init : σ) (f : β → σ → m σ) : m σ 
goal: Lean.PrefixTreeNode α β → σ → m σ

full_name: Lean.PrefixTreeNode.WellFormed.emptyWff
code: inductive WellFormed (cmp : α → α → Ordering) : PrefixTreeNode α β → Prop where
  | emptyWff  : WellFormed cmp empty
  | insertWff : WellFormed cmp t → WellFormed cmp (insert t cmp k val)
goal: ∀ {x : Type u_2}, Lean.PrefixTreeNode.WellFormed cmp Lean.PrefixTreeNode.empty

full_name: Lean.PrefixTreeNode.WellFormed
code: inductive WellFormed (cmp : α → α → Ordering) : PrefixTreeNode α β → Prop where
  | emptyWff  : WellFormed cmp empty
  | insertWff : WellFormed cmp t → WellFormed cmp (insert t cmp k val)
goal: Lean.PrefixTreeNode α β → Prop

full_name: Lean.PrefixTreeNode.WellFormed.insertWff
code: inductive WellFormed (cmp : α → α → Ordering) : PrefixTreeNode α β → Prop where
  | emptyWff  : WellFormed cmp empty
  | insertWff : WellFormed cmp t → WellFormed cmp (insert t cmp k val)
goal: ∀ {x : Type u_2} {t : Lean.PrefixTreeNode α x} {k : List α} {val : x},
  Lean.PrefixTreeNode.WellFormed cmp t → Lean.PrefixTreeNode.WellFormed cmp (t.insert cmp k val)

full_name: Lean.PrefixTree
code: def PrefixTree (α : Type u) (β : Type v) (cmp : α → α → Ordering) : Type (max u v) 
goal: Type (max u v)

full_name: Lean.PrefixTree.empty
code: def PrefixTree.empty : PrefixTree α β p 
goal: Lean.PrefixTree α β p

full_name: Lean.instInhabitedPrefixTree
code: instance : Inhabited (PrefixTree α β p) 
goal: Inhabited (Lean.PrefixTree α β p)

full_name: Lean.instEmptyCollectionPrefixTree
code: instance : EmptyCollection (PrefixTree α β p) 
goal: EmptyCollection (Lean.PrefixTree α β p)

full_name: Lean.PrefixTree.insert
code: @[inline]
def PrefixTree.insert (t : PrefixTree α β p) (k : List α) (v : β) : PrefixTree α β p 
goal: Lean.PrefixTree α β p

full_name: Lean.PrefixTree.find?
code: @[inline]
def PrefixTree.find? (t : PrefixTree α β p) (k : List α) : Option β 
goal: Option β

full_name: Lean.PrefixTree.foldMatchingM
code: @[inline]
def PrefixTree.foldMatchingM [Monad m] (t : PrefixTree α β p) (k : List α) (init : σ) (f : β → σ → m σ) : m σ 
goal: m σ

full_name: Lean.PrefixTree.foldM
code: @[inline]
def PrefixTree.foldM [Monad m] (t : PrefixTree α β p) (init : σ) (f : β → σ → m σ) : m σ 
goal: m σ

full_name: Lean.PrefixTree.forMatchingM
code: @[inline]
def PrefixTree.forMatchingM [Monad m] (t : PrefixTree α β p) (k : List α) (f : β → m Unit) : m Unit 
goal: m Unit

full_name: Lean.PrefixTree.forM
code: @[inline]
def PrefixTree.forM [Monad m] (t : PrefixTree α β p) (f : β → m Unit) : m Unit 
goal: m Unit