Step * 1 1 3 1 1 of Lemma bs_tree_lookup_wf


1. Type
2. cmp comparison(E)
3. E
4. left bs_tree(E)@i
5. value E@i
6. right bs_tree(E)@i
7. bs_tree_ordered(E;cmp;left)
 case bs_tree_lookup(cmp;x;left)
    of inl(z) =>
    ((cmp x) 0 ∈ ℤ) ∧ z ∈ left
    inr(_) =>
    ∀z:E. (z ∈ left  ((cmp x) 0 ∈ ℤ)))
8. bs_tree_ordered(E;cmp;right)
 case bs_tree_lookup(cmp;x;right)
    of inl(z) =>
    ((cmp x) 0 ∈ ℤ) ∧ z ∈ right
    inr(_) =>
    ∀z:E. (z ∈ right  ((cmp x) 0 ∈ ℤ)))
9. bs_tree_ordered(E;cmp;left)
10. bs_tree_ordered(E;cmp;right)
11. ∀x:E. (x ∈ left  0 < cmp value)
12. ∀x:E. (x ∈ right  0 < cmp value x)
⊢ case bs_tree_lookup(cmp;x;bst_node(left;value;right))
 of inl(z) =>
 ((cmp x) 0 ∈ ℤ) ∧ z ∈ bst_node(left;value;right)
 inr(_) =>
 ∀z:E. (z ∈ bst_node(left;value;right)  ((cmp x) 0 ∈ ℤ)))
BY
(ThinTrivial
   THEN ((RepUR ``bs_tree_lookup`` THEN Fold `bs_tree_lookup` 0)
         THEN RepUR ``member_bs_tree`` 0
         THEN Fold `member_bs_tree` 0)
   THEN (CallByValueReduce THENA Auto)
   THEN Repeat (AutoSplit)) }

1
1. Type
2. cmp comparison(E)
3. E
4. left bs_tree(E)@i
5. value E@i
6. right bs_tree(E)@i
7. bs_tree_ordered(E;cmp;left)
8. bs_tree_ordered(E;cmp;right)
9. ∀x:E. (x ∈ left  0 < cmp value)
10. ∀x:E. (x ∈ right  0 < cmp value x)
11. case bs_tree_lookup(cmp;x;right)
 of inl(z) =>
 ((cmp x) 0 ∈ ℤ) ∧ z ∈ right
 inr(_) =>
 ∀z:E. (z ∈ right  ((cmp x) 0 ∈ ℤ)))
12. case bs_tree_lookup(cmp;x;left)
 of inl(z) =>
 ((cmp x) 0 ∈ ℤ) ∧ z ∈ left
 inr(_) =>
 ∀z:E. (z ∈ left  ((cmp x) 0 ∈ ℤ)))
13. cmp value x < 0
⊢ case bs_tree_lookup(cmp;x;left)
 of inl(z) =>
 ((cmp x) 0 ∈ ℤ) ∧ ((value z ∈ E) ∨ z ∈ left ∨ z ∈ right)
 inr(_) =>
 ∀z:E. (((value z ∈ E) ∨ z ∈ left ∨ z ∈ right)  ((cmp x) 0 ∈ ℤ)))

2
1. Type
2. cmp comparison(E)
3. E
4. left bs_tree(E)@i
5. value E@i
6. ¬cmp value x < 0
7. right bs_tree(E)@i
8. bs_tree_ordered(E;cmp;left)
9. bs_tree_ordered(E;cmp;right)
10. ∀x:E. (x ∈ left  0 < cmp value)
11. ∀x:E. (x ∈ right  0 < cmp value x)
12. case bs_tree_lookup(cmp;x;right)
 of inl(z) =>
 ((cmp x) 0 ∈ ℤ) ∧ z ∈ right
 inr(_) =>
 ∀z:E. (z ∈ right  ((cmp x) 0 ∈ ℤ)))
13. case bs_tree_lookup(cmp;x;left)
 of inl(z) =>
 ((cmp x) 0 ∈ ℤ) ∧ z ∈ left
 inr(_) =>
 ∀z:E. (z ∈ left  ((cmp x) 0 ∈ ℤ)))
14. 0 < cmp value x
⊢ case bs_tree_lookup(cmp;x;right)
 of inl(z) =>
 ((cmp x) 0 ∈ ℤ) ∧ ((value z ∈ E) ∨ z ∈ left ∨ z ∈ right)
 inr(_) =>
 ∀z:E. (((value z ∈ E) ∨ z ∈ left ∨ z ∈ right)  ((cmp x) 0 ∈ ℤ)))


Latex:


Latex:

1.  E  :  Type
2.  cmp  :  comparison(E)
3.  x  :  E
4.  left  :  bs\_tree(E)@i
5.  value  :  E@i
6.  right  :  bs\_tree(E)@i
7.  bs\_tree\_ordered(E;cmp;left)
{}\mRightarrow{}  case  bs\_tree\_lookup(cmp;x;left)
        of  inl(z)  =>
        ((cmp  z  x)  =  0)  \mwedge{}  z  \mmember{}  left
        |  inr($_{}$)  =>
        \mforall{}z:E.  (z  \mmember{}  left  {}\mRightarrow{}  (\mneg{}((cmp  z  x)  =  0)))
8.  bs\_tree\_ordered(E;cmp;right)
{}\mRightarrow{}  case  bs\_tree\_lookup(cmp;x;right)
        of  inl(z)  =>
        ((cmp  z  x)  =  0)  \mwedge{}  z  \mmember{}  right
        |  inr($_{}$)  =>
        \mforall{}z:E.  (z  \mmember{}  right  {}\mRightarrow{}  (\mneg{}((cmp  z  x)  =  0)))
9.  bs\_tree\_ordered(E;cmp;left)
10.  bs\_tree\_ordered(E;cmp;right)
11.  \mforall{}x:E.  (x  \mmember{}  left  {}\mRightarrow{}  0  <  cmp  x  value)
12.  \mforall{}x:E.  (x  \mmember{}  right  {}\mRightarrow{}  0  <  cmp  value  x)
\mvdash{}  case  bs\_tree\_lookup(cmp;x;bst\_node(left;value;right))
  of  inl(z)  =>
  ((cmp  z  x)  =  0)  \mwedge{}  z  \mmember{}  bst\_node(left;value;right)
  |  inr($_{}$)  =>
  \mforall{}z:E.  (z  \mmember{}  bst\_node(left;value;right)  {}\mRightarrow{}  (\mneg{}((cmp  z  x)  =  0)))


By


Latex:
(ThinTrivial
  THEN  ((RepUR  ``bs\_tree\_lookup``  0  THEN  Fold  `bs\_tree\_lookup`  0)
              THEN  RepUR  ``member\_bs\_tree``  0
              THEN  Fold  `member\_bs\_tree`  0)
  THEN  (CallByValueReduce  0  THENA  Auto)
  THEN  Repeat  (AutoSplit))




Home Index