Step
*
1
2
1
1
1
of Lemma
aa_max_ltree_spec
1. t : aa_ltree(
)@i
2. val : 
@i
3. left_subtree : aa_ltree(
)@i
4. right_subtree : aa_ltree(
)@i
5. aa_binary_search_tree(left_subtree)

 (
i:
. (aa_bst_member_prop(i;left_subtree) 
 (
j:
. (((inl j ) = aa_max_ltree(left_subtree)) 
 (i 
 j)))))@i
6. aa_binary_search_tree(right_subtree)

 (
i:
. (aa_bst_member_prop(i;right_subtree) 
 (
j:
. (((inl j ) = aa_max_ltree(right_subtree)) 
 (i 
 j)))))@i
7. aa_binary_search_tree(aa_lt_node(val;left_subtree;right_subtree))@i
8. i : 
@i
9. aa_bst_member_prop(i;aa_lt_node(val;left_subtree;right_subtree))@i
 (inl case aa_max_ltree(right_subtree) of inl(rmaxint) => imax(val;rmaxint) | inr(unitval) => val )
= case aa_max_ltree(right_subtree) of inl(intval2) => inl imax(val;intval2)  | inr(unitval2) => inl val 
BY
{ ((GenConclAtAddr [2;1;1] THEN DVar `v' THEN Reduce 0 THEN Auto) THEN skip{SplitOnHypITE n}) }
1.  t  :  aa\_ltree(\mBbbZ{})@i
2.  val  :  \mBbbZ{}@i
3.  left$_{subtree}$  :  aa\_ltree(\mBbbZ{})@i
4.  right$_{subtree}$  :  aa\_ltree(\mBbbZ{})@i
5.  aa\_binary\_search\_tree(left$_{subtree}$)
{}\mRightarrow{}  (\mforall{}i:\mBbbZ{}
            (aa\_bst\_member\_prop(i;left$_{subtree}$)
            {}\mRightarrow{}  (\mexists{}j:\mBbbZ{}.  (((inl  j  )  =  aa\_max\_ltree(left$_{subtree}$))  \mwedge{}  (i  \mleq{}  j)))))@i
6.  aa\_binary\_search\_tree(right$_{subtree}$)
{}\mRightarrow{}  (\mforall{}i:\mBbbZ{}
            (aa\_bst\_member\_prop(i;right$_{subtree}$)
            {}\mRightarrow{}  (\mexists{}j:\mBbbZ{}.  (((inl  j  )  =  aa\_max\_ltree(right$_{subtree}$))  \mwedge{}  (i  \mleq{}  j)))))@i
7.  aa\_binary\_search\_tree(aa\_lt\_node(val;left$_{subtree}$;right$_{sub\000Ctree}$))@i
8.  i  :  \mBbbZ{}@i
9.  aa\_bst\_member\_prop(i;aa\_lt\_node(val;left$_{subtree}$;right$_{subt\000Cree}$))@i
\mvdash{}  (inl  case  aa\_max\_ltree(right$_{subtree}$)  of  inl(rmaxint)  =>  imax(val;rmaxint)\000C  |  inr(unitval)  =>  val  )
=  case  aa\_max\_ltree(right$_{subtree}$)
    of  inl(intval2)  =>
      inl  imax(val;intval2) 
      |  inr(unitval2)  =>
      inl  val 
By
((GenConclAtAddr  [2;1;1]  THEN  DVar  `v'  THEN  Reduce  0  THEN  Auto)  THEN  skip\{SplitOnHypITE  n\})
Home
Index