Step
*
8
of Lemma
member-insert-combine2
1. T : Type
2. cmp : comparison(T)
3. f : T ⟶ T ⟶ T
4. x : T
5. z : T
6. u : T
7. v : T List
8. ((∃l:T List. (l @ [z] ≤ v ∧ (∀y∈l.cmp x y < 0) ∧ cmp x z < 0))
∨ (∃l,l':T List
    ∃a:T
     (((l @ [a / l']) = v ∈ (T List))
     ∧ (∀y∈l.cmp x y < 0)
     ∧ ((0 < cmp x a ∧ (z ∈ [x; [a / l']])) ∨ (((cmp x a) = 0 ∈ ℤ) ∧ (z ∈ [f x a / l'])))))
∨ ((z = x ∈ T) ∧ (∀y∈v.cmp x y < 0)))
⇒ (z ∈ insert-combine(cmp;f;x;v))
9. l : T List
10. l' : T List
11. a : T
12. (l @ [a / l']) = [u / v] ∈ (T List)
13. (∀y∈l.cmp x y < 0)
14. 0 < cmp x a
15. (z = x ∈ T) ∨ (z = a ∈ T) ∨ (z ∈ l')
⊢ (z ∈ insert-combine(cmp;f;x;[u / v]))
BY
{ (RepUR ``insert-combine`` 0
   THEN Fold `insert-combine` 0
   THEN (CallByValueReduce 0 THENA Auto)
   THEN Repeat (AutoSplit)
   THEN SpList 0) }
1
1. T : Type
2. cmp : comparison(T)
3. f : T ⟶ T ⟶ T
4. x : T
5. z : T
6. u : T
7. v : T List
8. ((∃l:T List. (l @ [z] ≤ v ∧ (∀y∈l.cmp x y < 0) ∧ cmp x z < 0))
∨ (∃l,l':T List
    ∃a:T
     (((l @ [a / l']) = v ∈ (T List))
     ∧ (∀y∈l.cmp x y < 0)
     ∧ ((0 < cmp x a ∧ (z ∈ [x; [a / l']])) ∨ (((cmp x a) = 0 ∈ ℤ) ∧ (z ∈ [f x a / l'])))))
∨ ((z = x ∈ T) ∧ (∀y∈v.cmp x y < 0)))
⇒ (z ∈ insert-combine(cmp;f;x;v))
9. l : T List
10. l' : T List
11. a : T
12. (l @ [a / l']) = [u / v] ∈ (T List)
13. (∀y∈l.cmp x y < 0)
14. 0 < cmp x a
15. (z = x ∈ T) ∨ (z = a ∈ T) ∨ (z ∈ l')
16. (cmp x u) = 0 ∈ ℤ
⊢ (z = (f x u) ∈ T) ∨ (z ∈ v)
2
1. T : Type
2. cmp : comparison(T)
3. f : T ⟶ T ⟶ T
4. x : T
5. z : T
6. u : T
7. cmp x u ≠ 0
8. v : T List
9. ((∃l:T List. (l @ [z] ≤ v ∧ (∀y∈l.cmp x y < 0) ∧ cmp x z < 0))
∨ (∃l,l':T List
    ∃a:T
     (((l @ [a / l']) = v ∈ (T List))
     ∧ (∀y∈l.cmp x y < 0)
     ∧ ((0 < cmp x a ∧ (z ∈ [x; [a / l']])) ∨ (((cmp x a) = 0 ∈ ℤ) ∧ (z ∈ [f x a / l'])))))
∨ ((z = x ∈ T) ∧ (∀y∈v.cmp x y < 0)))
⇒ (z ∈ insert-combine(cmp;f;x;v))
10. l : T List
11. l' : T List
12. a : T
13. (l @ [a / l']) = [u / v] ∈ (T List)
14. (∀y∈l.cmp x y < 0)
15. 0 < cmp x a
16. (z = x ∈ T) ∨ (z = a ∈ T) ∨ (z ∈ l')
17. 0 < cmp x u
⊢ (z = x ∈ T) ∨ (z = u ∈ T) ∨ (z ∈ v)
3
1. T : Type
2. cmp : comparison(T)
3. f : T ⟶ T ⟶ T
4. x : T
5. z : T
6. u : T
7. ¬0 < cmp x u
8. cmp x u ≠ 0
9. v : T List
10. ((∃l:T List. (l @ [z] ≤ v ∧ (∀y∈l.cmp x y < 0) ∧ cmp x z < 0))
∨ (∃l,l':T List
    ∃a:T
     (((l @ [a / l']) = v ∈ (T List))
     ∧ (∀y∈l.cmp x y < 0)
     ∧ ((0 < cmp x a ∧ (z ∈ [x; [a / l']])) ∨ (((cmp x a) = 0 ∈ ℤ) ∧ (z ∈ [f x a / l'])))))
∨ ((z = x ∈ T) ∧ (∀y∈v.cmp x y < 0)))
⇒ (z ∈ insert-combine(cmp;f;x;v))
11. l : T List
12. l' : T List
13. a : T
14. (l @ [a / l']) = [u / v] ∈ (T List)
15. (∀y∈l.cmp x y < 0)
16. 0 < cmp x a
17. (z = x ∈ T) ∨ (z = a ∈ T) ∨ (z ∈ l')
⊢ (z = u ∈ T) ∨ (z ∈ insert-combine(cmp;f;x;v))
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.  ((\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)))
{}\mRightarrow{}  (z  \mmember{}  insert-combine(cmp;f;x;v))
9.  l  :  T  List
10.  l'  :  T  List
11.  a  :  T
12.  (l  @  [a  /  l'])  =  [u  /  v]
13.  (\mforall{}y\mmember{}l.cmp  x  y  <  0)
14.  0  <  cmp  x  a
15.  (z  =  x)  \mvee{}  (z  =  a)  \mvee{}  (z  \mmember{}  l')
\mvdash{}  (z  \mmember{}  insert-combine(cmp;f;x;[u  /  v]))
By
Latex:
(RepUR  ``insert-combine``  0
  THEN  Fold  `insert-combine`  0
  THEN  (CallByValueReduce  0  THENA  Auto)
  THEN  Repeat  (AutoSplit)
  THEN  SpList  0)
Home
Index