Step
*
1
1
3
1
1
of Lemma
bs_tree_lookup_wf
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)
⇒ case bs_tree_lookup(cmp;x;left)
    of inl(z) =>
    ((cmp z x) = 0 ∈ ℤ) ∧ z ∈ left
    | inr(_) =>
    ∀z:E. (z ∈ left 
⇒ (¬((cmp z x) = 0 ∈ ℤ)))
8. bs_tree_ordered(E;cmp;right)
⇒ case bs_tree_lookup(cmp;x;right)
    of inl(z) =>
    ((cmp z x) = 0 ∈ ℤ) ∧ z ∈ right
    | inr(_) =>
    ∀z:E. (z ∈ right 
⇒ (¬((cmp z x) = 0 ∈ ℤ)))
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)
⊢ case bs_tree_lookup(cmp;x;bst_node(left;value;right))
 of inl(z) =>
 ((cmp z x) = 0 ∈ ℤ) ∧ z ∈ bst_node(left;value;right)
 | inr(_) =>
 ∀z:E. (z ∈ bst_node(left;value;right) 
⇒ (¬((cmp z x) = 0 ∈ ℤ)))
BY
{ (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)) }
1
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)
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. case bs_tree_lookup(cmp;x;right)
 of inl(z) =>
 ((cmp z x) = 0 ∈ ℤ) ∧ z ∈ right
 | inr(_) =>
 ∀z:E. (z ∈ right 
⇒ (¬((cmp z x) = 0 ∈ ℤ)))
12. case bs_tree_lookup(cmp;x;left)
 of inl(z) =>
 ((cmp z x) = 0 ∈ ℤ) ∧ z ∈ left
 | inr(_) =>
 ∀z:E. (z ∈ left 
⇒ (¬((cmp z x) = 0 ∈ ℤ)))
13. cmp value x < 0
⊢ case bs_tree_lookup(cmp;x;left)
 of inl(z) =>
 ((cmp z x) = 0 ∈ ℤ) ∧ ((value = z ∈ E) ∨ z ∈ left ∨ z ∈ right)
 | inr(_) =>
 ∀z:E. (((value = z ∈ E) ∨ z ∈ left ∨ z ∈ right) 
⇒ (¬((cmp z x) = 0 ∈ ℤ)))
2
1. E : Type
2. cmp : comparison(E)
3. x : 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 x value)
11. ∀x:E. (x ∈ right 
⇒ 0 < cmp value x)
12. case bs_tree_lookup(cmp;x;right)
 of inl(z) =>
 ((cmp z x) = 0 ∈ ℤ) ∧ z ∈ right
 | inr(_) =>
 ∀z:E. (z ∈ right 
⇒ (¬((cmp z x) = 0 ∈ ℤ)))
13. case bs_tree_lookup(cmp;x;left)
 of inl(z) =>
 ((cmp z x) = 0 ∈ ℤ) ∧ z ∈ left
 | inr(_) =>
 ∀z:E. (z ∈ left 
⇒ (¬((cmp z x) = 0 ∈ ℤ)))
14. 0 < cmp value x
⊢ case bs_tree_lookup(cmp;x;right)
 of inl(z) =>
 ((cmp z x) = 0 ∈ ℤ) ∧ ((value = z ∈ E) ∨ z ∈ left ∨ z ∈ right)
 | inr(_) =>
 ∀z:E. (((value = z ∈ E) ∨ z ∈ left ∨ z ∈ right) 
⇒ (¬((cmp z 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