Step
*
3
1
1
1
of Lemma
member-bs_tree_delete
1. E : Type
2. cmp : comparison(E)
3. x : E
4. left : bs_tree(E)
5. value : E
6. right : bs_tree(E)
7. bs_tree_ordered(E;cmp;left) 
⇒ (∀z:E. (z ∈ bs_tree_delete(cmp;x;left) 
⇐⇒ z ∈ left ∧ (¬((cmp z x) = 0 ∈ ℤ))))
8. bs_tree_ordered(E;cmp;right) 
⇒ (∀z:E. (z ∈ bs_tree_delete(cmp;x;right) 
⇐⇒ z ∈ right ∧ (¬((cmp z x) = 0 ∈ ℤ))))
9. bs_tree_ordered(E;cmp;bst_node(left;value;right))
10. z : E
11. bs_tree_max(left;value) = bs_tree_max(left;value) ∈ (E × ordered_bs_tree(E;cmp))
12. let m,t = bs_tree_max(left;value) 
    in (∀x:E. (x ∈ left 
⇒ (x ∈ t ∨ (x = m ∈ E))))
       ∧ ((¬↑bst_null?(left)) 
⇒ m ∈ left)
       ∧ (∀x:E. (x ∈ t 
⇒ (x ∈ left ∧ 0 < cmp x m)))
⊢ z ∈ bs_tree_delete(cmp;x;bst_node(left;value;right)) 
⇐⇒ z ∈ bst_node(left;value;right) ∧ (¬((cmp z x) = 0 ∈ ℤ))
BY
{ (RepUR ``bs_tree_ordered`` -4
   THEN Fold `bs_tree_ordered` (-4)
   THEN ExRepD
   THEN ThinTrivial
   THEN RepUR ``bs_tree_delete`` 0
   THEN Fold `bs_tree_delete` 0
   THEN Repeat (AutoSplit)) }
1
1. E : Type
2. cmp : comparison(E)
3. x : E
4. left : bs_tree(E)
5. value : E
6. right : bs_tree(E)
7. bs_tree_ordered(E;cmp;left)
8. bs_tree_ordered(E;cmp;right)
9. ∀x:E. (x ∈ left 
⇒ 0 < cmp x value)
10. ∀x:E. (x ∈ right 
⇒ 0 < cmp value x)
11. z : E
12. bs_tree_max(left;value) = bs_tree_max(left;value) ∈ (E × ordered_bs_tree(E;cmp))
13. let m,t = bs_tree_max(left;value) 
    in (∀x:E. (x ∈ left 
⇒ (x ∈ t ∨ (x = m ∈ E))))
       ∧ ((¬↑bst_null?(left)) 
⇒ m ∈ left)
       ∧ (∀x:E. (x ∈ t 
⇒ (x ∈ left ∧ 0 < cmp x m)))
14. ∀z:E. (z ∈ bs_tree_delete(cmp;x;right) 
⇐⇒ z ∈ right ∧ (¬((cmp z x) = 0 ∈ ℤ)))
15. ∀z:E. (z ∈ bs_tree_delete(cmp;x;left) 
⇐⇒ z ∈ left ∧ (¬((cmp z x) = 0 ∈ ℤ)))
16. 0 < cmp x value
⊢ z ∈ bst_node(bs_tree_delete(cmp;x;left);value;right) 
⇐⇒ z ∈ bst_node(left;value;right) ∧ (¬((cmp z x) = 0 ∈ ℤ))
2
1. E : Type
2. cmp : comparison(E)
3. x : E
4. left : bs_tree(E)
5. value : E
6. ¬0 < cmp x value
7. right : bs_tree(E)
8. bs_tree_ordered(E;cmp;left)
9. bs_tree_ordered(E;cmp;right)
10. ∀x:E. (x ∈ left 
⇒ 0 < cmp x value)
11. ∀x:E. (x ∈ right 
⇒ 0 < cmp value x)
12. z : E
13. bs_tree_max(left;value) = bs_tree_max(left;value) ∈ (E × ordered_bs_tree(E;cmp))
14. let m,t = bs_tree_max(left;value) 
    in (∀x:E. (x ∈ left 
⇒ (x ∈ t ∨ (x = m ∈ E))))
       ∧ ((¬↑bst_null?(left)) 
⇒ m ∈ left)
       ∧ (∀x:E. (x ∈ t 
⇒ (x ∈ left ∧ 0 < cmp x m)))
15. ∀z:E. (z ∈ bs_tree_delete(cmp;x;right) 
⇐⇒ z ∈ right ∧ (¬((cmp z x) = 0 ∈ ℤ)))
16. ∀z:E. (z ∈ bs_tree_delete(cmp;x;left) 
⇐⇒ z ∈ left ∧ (¬((cmp z x) = 0 ∈ ℤ)))
17. 0 < cmp value x
⊢ z ∈ bst_node(left;value;bs_tree_delete(cmp;x;right)) 
⇐⇒ z ∈ bst_node(left;value;right) ∧ (¬((cmp z x) = 0 ∈ ℤ))
3
1. E : Type
2. cmp : comparison(E)
3. x : E
4. left : bs_tree(E)
5. value : E
6. ¬0 < cmp value x
7. ¬0 < cmp x value
8. right : bs_tree(E)
9. bs_tree_ordered(E;cmp;left)
10. bs_tree_ordered(E;cmp;right)
11. ∀x:E. (x ∈ left 
⇒ 0 < cmp x value)
12. ∀x:E. (x ∈ right 
⇒ 0 < cmp value x)
13. z : E
14. bs_tree_max(left;value) = bs_tree_max(left;value) ∈ (E × ordered_bs_tree(E;cmp))
15. let m,t = bs_tree_max(left;value) 
    in (∀x:E. (x ∈ left 
⇒ (x ∈ t ∨ (x = m ∈ E))))
       ∧ ((¬↑bst_null?(left)) 
⇒ m ∈ left)
       ∧ (∀x:E. (x ∈ t 
⇒ (x ∈ left ∧ 0 < cmp x m)))
16. ∀z:E. (z ∈ bs_tree_delete(cmp;x;right) 
⇐⇒ z ∈ right ∧ (¬((cmp z x) = 0 ∈ ℤ)))
17. ∀z:E. (z ∈ bs_tree_delete(cmp;x;left) 
⇐⇒ z ∈ left ∧ (¬((cmp z x) = 0 ∈ ℤ)))
18. ↑bst_null?(left)
⊢ z ∈ right 
⇐⇒ z ∈ bst_node(left;value;right) ∧ (¬((cmp z x) = 0 ∈ ℤ))
4
1. E : Type
2. cmp : comparison(E)
3. x : E
4. left : bs_tree(E)
5. ¬↑bst_null?(left)
6. value : E
7. ¬0 < cmp value x
8. ¬0 < cmp x value
9. right : bs_tree(E)
10. bs_tree_ordered(E;cmp;left)
11. bs_tree_ordered(E;cmp;right)
12. ∀x:E. (x ∈ left 
⇒ 0 < cmp x value)
13. ∀x:E. (x ∈ right 
⇒ 0 < cmp value x)
14. z : E
15. bs_tree_max(left;value) = bs_tree_max(left;value) ∈ (E × ordered_bs_tree(E;cmp))
16. let m,t = bs_tree_max(left;value) 
    in (∀x:E. (x ∈ left 
⇒ (x ∈ t ∨ (x = m ∈ E))))
       ∧ ((¬False) 
⇒ m ∈ left)
       ∧ (∀x:E. (x ∈ t 
⇒ (x ∈ left ∧ 0 < cmp x m)))
17. ∀z:E. (z ∈ bs_tree_delete(cmp;x;right) 
⇐⇒ z ∈ right ∧ (¬((cmp z x) = 0 ∈ ℤ)))
18. ∀z:E. (z ∈ bs_tree_delete(cmp;x;left) 
⇐⇒ z ∈ left ∧ (¬((cmp z x) = 0 ∈ ℤ)))
⊢ z ∈ let m,a' = bs_tree_max(left;value) 
      in bst_node(a';m;right)
⇐⇒ z ∈ bst_node(left;value;right) ∧ (¬((cmp z x) = 0 ∈ ℤ))
Latex:
Latex:
1.  E  :  Type
2.  cmp  :  comparison(E)
3.  x  :  E
4.  left  :  bs\_tree(E)
5.  value  :  E
6.  right  :  bs\_tree(E)
7.  bs\_tree\_ordered(E;cmp;left)
{}\mRightarrow{}  (\mforall{}z:E.  (z  \mmember{}  bs\_tree\_delete(cmp;x;left)  \mLeftarrow{}{}\mRightarrow{}  z  \mmember{}  left  \mwedge{}  (\mneg{}((cmp  z  x)  =  0))))
8.  bs\_tree\_ordered(E;cmp;right)
{}\mRightarrow{}  (\mforall{}z:E.  (z  \mmember{}  bs\_tree\_delete(cmp;x;right)  \mLeftarrow{}{}\mRightarrow{}  z  \mmember{}  right  \mwedge{}  (\mneg{}((cmp  z  x)  =  0))))
9.  bs\_tree\_ordered(E;cmp;bst\_node(left;value;right))
10.  z  :  E
11.  bs\_tree\_max(left;value)  =  bs\_tree\_max(left;value)
12.  let  m,t  =  bs\_tree\_max(left;value) 
        in  (\mforall{}x:E.  (x  \mmember{}  left  {}\mRightarrow{}  (x  \mmember{}  t  \mvee{}  (x  =  m))))
              \mwedge{}  ((\mneg{}\muparrow{}bst\_null?(left))  {}\mRightarrow{}  m  \mmember{}  left)
              \mwedge{}  (\mforall{}x:E.  (x  \mmember{}  t  {}\mRightarrow{}  (x  \mmember{}  left  \mwedge{}  0  <  cmp  x  m)))
\mvdash{}  z  \mmember{}  bs\_tree\_delete(cmp;x;bst\_node(left;value;right))
\mLeftarrow{}{}\mRightarrow{}  z  \mmember{}  bst\_node(left;value;right)  \mwedge{}  (\mneg{}((cmp  z  x)  =  0))
By
Latex:
(RepUR  ``bs\_tree\_ordered``  -4
  THEN  Fold  `bs\_tree\_ordered`  (-4)
  THEN  ExRepD
  THEN  ThinTrivial
  THEN  RepUR  ``bs\_tree\_delete``  0
  THEN  Fold  `bs\_tree\_delete`  0
  THEN  Repeat  (AutoSplit))
Home
Index