Kind/book/BBT.balance.rgt_heavier.kind2
2024-03-01 20:40:31 -03:00

53 lines
1.3 KiB
Plaintext

BBT.balance.rgt_heavier
: ∀(K: *)
∀(V: *)
∀(cmp: ∀(a: K) ∀(b: K) Cmp)
∀(new_size: #U60)
∀(node_key: K)
∀(set_key: K)
∀(val: V)
∀(lft: (BBT K V))
∀(rgt: (BBT K V))
(BBT K V)
= λK λV λcmp λnew_size λnode_key λset_key λval λlft λrgt
let P = λx (BBT K V)
let bin = λrgt.size λrgt.key λrgt.val λrgt.lft λrgt.rgt
let P = λx
∀(new_size: #U60)
∀(key: K)
∀(val: V)
∀(lft: (BBT K V))
∀(rgt.key: K)
∀(rgt.val: V)
∀(rgt.lft: (BBT K V))
∀(rgt.rgt: (BBT K V))
(BBT K V)
let true = λnew_size λkey λval λlft λrgt.key λrgt.val λrgt.lft λrgt.rgt
let rgt = (BBT.bin K V rgt.size rgt.key rgt.val rgt.lft rgt.rgt)
(BBT.lft_rotate K V new_size key val lft rgt)
let false = λnew_size λkey λval λlft λrgt.key λrgt.val λrgt.lft λrgt.rgt
let rgt = (BBT.rgt_rotate
K
V
rgt.size
rgt.key
rgt.val
rgt.lft
rgt.rgt
)
(BBT.lft_rotate K V new_size key val lft rgt)
(~(Cmp.is_gtn (cmp set_key rgt.key))
P
true
false
new_size
node_key
val
lft
rgt.key
rgt.val
rgt.lft
rgt.rgt
)
let tip = (BBT.tip K V)
(~rgt P bin tip)