Equations
- (ABTree.leaf a).access [] = some (Sum.inl a)
- (ABTree.node b bL bR).access [] = some (Sum.inr b)
- (ABTree.node i bl bR).access (SkElem.Left :: ps) = bl.access ps
- (ABTree.node i bL br).access (SkElem.Right :: ps) = br.access ps
- t.access p = none
Instances For
Equations
- One or more equations did not get rendered due to their size.
- (ABTree.leaf v).access_path_value p_2 = some (Sequence.nil, v)
- t.access_path_value p = none
Instances For
theorem
ABTree.iaccess_head_left
{α β : Type}
{n : ℕ}
{bl br : ABTree α β}
{b : β}
{p : ISkeleton n.succ}
{res : Option (α ⊕ β)}
:
Sequence.head p = SkElem.Left → (node b bl br).iaccess p = res → bl.iaccess (Sequence.tail p) = res
theorem
ABTree.iaccess_head_right
{α β : Type}
{n : ℕ}
{bl br : ABTree α β}
{b : β}
{p : ISkeleton n.succ}
{res : Option (α ⊕ β)}
:
Sequence.head p = SkElem.Right → (node b bl br).iaccess p = res → br.iaccess (Sequence.tail p) = res
Equations
- no_dup_elements t = ∀ (p q : Skeleton) (p_v q_v : α), ¬p = q → ABTree.access t p = some (Sum.inl p_v) → ABTree.access t q = some (Sum.inl q_v) → ¬p_v = q_v
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Instances For
Equations
- BTree.toPaths' (ABTree.leaf v) acc = [(acc, v)]
- BTree.toPaths' (ABTree.node PUnit.unit bl br) acc = bl.toPaths' (List.concat acc SkElem.Left) ++ br.toPaths' (List.concat acc SkElem.Right)
Instances For
Equations
- (ABTree.leaf v).toPaths' path = [(path, Sum.inl v)]
- (ABTree.node b bl br).toPaths' path = (path, Sum.inr b) :: bl.toPaths' (List.concat path SkElem.Left) ++ br.toPaths' (List.concat path SkElem.Right)
Instances For
theorem
toPaths_elems_skeletons
{α : Type}
(t : BTree α)
(a : α)
(aIn : a ∈ List.map (fun (x : Skeleton × α) => x.2) t.toPaths_elems)
:
Equations
- find_first_split P elems = find_first_split_acc P elems []
Instances For
theorem
find_first_split_none_wk
{α : Type}
(P : α → Bool)
(els accl accr : List α)
:
find_first_split_acc P els (accl.append accr) = none → find_first_split_acc P els accr = none
theorem
find_first_split_none_forget
{α : Type}
(P : α → Bool)
(els acc : List α)
:
find_first_split_acc P els [] = none → find_first_split_acc P els acc = none
theorem
finds_dup_wk'
{α β : Type}
[DecidableEq α]
{f : β → α}
(els accl accr : List β)
:
find_dups_acc f els accr = none → find_dups_acc f els (accl ++ accr) = none
theorem
finds_dup_wk
{α β : Type}
[DecidableEq α]
{f : β → α}
(els accl accr : List β)
:
find_dups_acc f els (accl ++ accr) = none → find_dups_acc f els accr = none
theorem
finds_no_dup
{α β : Type}
[DecidableEq β]
(f : α → β)
(elems : List α)
(no_dups_found : find_dups f elems = none)
:
theorem
no_dups_no_first_head
{α β : Type}
[DecidableEq β]
(f : α → β)
(a : α)
(els : List α)
(h_nodups : find_dups f (a :: els) = none)
:
theorem
no_dups_finds_none
{α β : Type}
[DecidableEq β]
(f : α → β)
(elems : List α)
(h_nodups : (List.map f elems).Nodup)
:
theorem
finds_no_dup_inj
{α β : Type}
[DecidableEq β]
(f : α → β)
(elems : List α)
(H_nodups : find_dups f elems = none)
:
elems.Nodup
Equations
- find_first_split_proj proj b ll = find_first_split (fun (x : β) => proj x == proj b) ll
Instances For
theorem
split_at_none
{β α : Type}
[DecidableEq α]
{proj : β → α}
{b : β}
{ls : List β}
:
find_first_split_proj proj b ls = none → proj b ∉ List.map proj ls
Equations
Instances For
Equations
Instances For
Equations
- find_intersect proj ll rr = split_at_first_pred (fun (x : β) => find_first_split_proj proj x rr) ll
Instances For
theorem
find_intersect_none
{β α : Type}
[DecidableEq α]
{proj : β → α}
{ls rs : List β}
(H : find_intersect proj ls rs = none)
(l : β)
:
theorem
find_intersect_none'
{β α : Type}
[DecidableEq α]
{proj : β → α}
{ls rs : List β}
(H : ∀ l ∈ ls, ∀ r ∈ rs, ¬proj l = proj r)
: