Step * 2 of Lemma member-insert-combine2


1. Type
2. cmp comparison(T)
3. T ⟶ T ⟶ T
4. T
5. T
6. T
7. List
8. (z ∈ insert-combine(cmp;f;x;v))
 ((∃l:T List. (l [z] ≤ v ∧ (∀y∈l.cmp y < 0) ∧ cmp z < 0))
   ∨ (∃l,l':T List
       ∃a:T
        (((l [a l']) v ∈ (T List))
        ∧ (∀y∈l.cmp y < 0)
        ∧ ((0 < cmp a ∧ (z ∈ [x; [a l']])) ∨ (((cmp a) 0 ∈ ℤ) ∧ (z ∈ [f l'])))))
   ∨ ((z x ∈ T) ∧ (∀y∈v.cmp y < 0)))
9. (z ∈ eval tst cmp in
        if (tst =z 0) then [f v]
        if 0 <tst then [x; [u v]]
        else [u insert-combine(cmp;f;x;v)]
        fi )
⊢ (∃l:T List. (l [z] ≤ [u v] ∧ (∀y∈l.cmp y < 0) ∧ cmp z < 0))
∨ (∃l,l':T List
    ∃a:T
     (((l [a l']) [u v] ∈ (T List))
     ∧ (∀y∈l.cmp y < 0)
     ∧ ((0 < cmp a ∧ (z ∈ [x; [a l']])) ∨ (((cmp a) 0 ∈ ℤ) ∧ (z ∈ [f l'])))))
∨ ((z x ∈ T) ∧ (∀y∈[u v].cmp y < 0))
BY
(RepUR ``insert-combine`` (-1)
   THEN Fold `insert-combine` (-1)
   THEN (CallByValueReduce (-1) THENA Auto)
   THEN (SplitOnHypITE (-1) THENA Auto)
   THEN Try ((SplitOnHypITE (-2) THENA Auto))
   THEN Try (Complete (((OrRight THENA Auto)
                        THEN (OrLeft THENA Auto)
                        THEN InstConcl [⌜[]⌝;⌜v⌝;⌜u⌝]⋅
                        THEN Reduce 0
                        THEN Auto)))
   THEN SpList (-3)
   THEN (Assert ⌜cmp u < 0⌝⋅ THENA Auto)
   THEN RepeatFor (Thin (-2))
   THEN DProdsAndUnions
   THEN Try (Complete (((OrLeft THENA Auto)
                        THEN InstConcl [⌜[]⌝]⋅
                        THEN Reduce 0
                        THEN Auto
                        THEN SpList 0
                        THEN Auto'
                        THEN BLemma `nil_iseg`
                        THEN Auto)))
   THEN (D (-3) THENA Auto)
   THEN DProdsAndUnions
   THEN Try (Complete (((OrLeft THENA Auto)
                        THEN InstConcl [⌜[u l]⌝]⋅
                        THEN Reduce 0
                        THEN Auto
                        THEN SpList 0
                        THEN Auto)))
   THEN Try (Complete (((OrRight THENA Auto)
                        THEN (OrLeft THENA Auto)
                        THEN InstConcl [⌜[u l]⌝;⌜l'⌝;⌜a⌝]⋅
                        THEN Reduce 0
                        THEN Auto
                        THEN SpList 0
                        THEN Auto)))
   THEN Try (Complete ((RepeatFor ((OrRight THENA Auto)) THEN SpList THEN Auto)))) }


Latex:


Latex:

1.  T  :  Type
2.  cmp  :  comparison(T)
3.  f  :  T  {}\mrightarrow{}  T  {}\mrightarrow{}  T
4.  x  :  T
5.  z  :  T
6.  u  :  T
7.  v  :  T  List
8.  (z  \mmember{}  insert-combine(cmp;f;x;v))
{}\mRightarrow{}  ((\mexists{}l:T  List.  (l  @  [z]  \mleq{}  v  \mwedge{}  (\mforall{}y\mmember{}l.cmp  x  y  <  0)  \mwedge{}  cmp  x  z  <  0))
      \mvee{}  (\mexists{}l,l':T  List
              \mexists{}a:T
                (((l  @  [a  /  l'])  =  v)
                \mwedge{}  (\mforall{}y\mmember{}l.cmp  x  y  <  0)
                \mwedge{}  ((0  <  cmp  x  a  \mwedge{}  (z  \mmember{}  [x;  [a  /  l']]))  \mvee{}  (((cmp  x  a)  =  0)  \mwedge{}  (z  \mmember{}  [f  x  a  /  l'])))))
      \mvee{}  ((z  =  x)  \mwedge{}  (\mforall{}y\mmember{}v.cmp  x  y  <  0)))
9.  (z  \mmember{}  eval  tst  =  cmp  x  u  in
                if  (tst  =\msubz{}  0)  then  [f  x  u  /  v]
                if  0  <z  tst  then  [x;  [u  /  v]]
                else  [u  /  insert-combine(cmp;f;x;v)]
                fi  )
\mvdash{}  (\mexists{}l:T  List.  (l  @  [z]  \mleq{}  [u  /  v]  \mwedge{}  (\mforall{}y\mmember{}l.cmp  x  y  <  0)  \mwedge{}  cmp  x  z  <  0))
\mvee{}  (\mexists{}l,l':T  List
        \mexists{}a:T
          (((l  @  [a  /  l'])  =  [u  /  v])
          \mwedge{}  (\mforall{}y\mmember{}l.cmp  x  y  <  0)
          \mwedge{}  ((0  <  cmp  x  a  \mwedge{}  (z  \mmember{}  [x;  [a  /  l']]))  \mvee{}  (((cmp  x  a)  =  0)  \mwedge{}  (z  \mmember{}  [f  x  a  /  l'])))))
\mvee{}  ((z  =  x)  \mwedge{}  (\mforall{}y\mmember{}[u  /  v].cmp  x  y  <  0))


By


Latex:
(RepUR  ``insert-combine``  (-1)
  THEN  Fold  `insert-combine`  (-1)
  THEN  (CallByValueReduce  (-1)  THENA  Auto)
  THEN  (SplitOnHypITE  (-1)  THENA  Auto)
  THEN  Try  ((SplitOnHypITE  (-2)  THENA  Auto))
  THEN  Try  (Complete  (((OrRight  THENA  Auto)
                                            THEN  (OrLeft  THENA  Auto)
                                            THEN  InstConcl  [\mkleeneopen{}[]\mkleeneclose{};\mkleeneopen{}v\mkleeneclose{};\mkleeneopen{}u\mkleeneclose{}]\mcdot{}
                                            THEN  Reduce  0
                                            THEN  Auto)))
  THEN  SpList  (-3)
  THEN  (Assert  \mkleeneopen{}cmp  x  u  <  0\mkleeneclose{}\mcdot{}  THENA  Auto)
  THEN  RepeatFor  2  (Thin  (-2))
  THEN  DProdsAndUnions
  THEN  Try  (Complete  (((OrLeft  THENA  Auto)
                                            THEN  InstConcl  [\mkleeneopen{}[]\mkleeneclose{}]\mcdot{}
                                            THEN  Reduce  0
                                            THEN  Auto
                                            THEN  SpList  0
                                            THEN  Auto'
                                            THEN  BLemma  `nil\_iseg`
                                            THEN  Auto)))
  THEN  (D  (-3)  THENA  Auto)
  THEN  DProdsAndUnions
  THEN  Try  (Complete  (((OrLeft  THENA  Auto)
                                            THEN  InstConcl  [\mkleeneopen{}[u  /  l]\mkleeneclose{}]\mcdot{}
                                            THEN  Reduce  0
                                            THEN  Auto
                                            THEN  SpList  0
                                            THEN  Auto)))
  THEN  Try  (Complete  (((OrRight  THENA  Auto)
                                            THEN  (OrLeft  THENA  Auto)
                                            THEN  InstConcl  [\mkleeneopen{}[u  /  l]\mkleeneclose{};\mkleeneopen{}l'\mkleeneclose{};\mkleeneopen{}a\mkleeneclose{}]\mcdot{}
                                            THEN  Reduce  0
                                            THEN  Auto
                                            THEN  SpList  0
                                            THEN  Auto)))
  THEN  Try  (Complete  ((RepeatFor  2  ((OrRight  THENA  Auto))  THEN  SpList  0  THEN  Auto))))




Home Index