Step * 1 of Lemma int-decr-map-find_wf


1. Value Type
2. : ℤ
3. : ℤ × Value
4. (ℤ × Value) List
5. l-ordered(ℤ × Value;x,y.(fst(x)) > (fst(y));v)
 (case find-combine(λp.(k fst(p));v) of inl(x) => inl (snd(x)) inr(x) => inr ⋅ 
    ∈ {v@0:Value| (¬↑null(v)) ∧ (<k, v@0> ∈ v)}  (↓(∀p∈v.¬(k (fst(p)) ∈ ℤ))))
⊢ (l-ordered(ℤ × Value;x,y.(fst(x)) > (fst(y));v) ∧ (∀y:ℤ × Value. ((y ∈ v)  ((fst(u)) > (fst(y))))))
 (case eval tst fst(u) in
         if (tst =z 0) then inl u
         if 0 <tst then inr ⋅ 
         else find-combine(λp.(k fst(p));v)
         fi 
     of inl(x) =>
     inl (snd(x))
     inr(x) =>
     inr ⋅  ∈ {v@0:Value| False) ∧ (<k, v@0> ∈ [u v])}  (↓(∀p∈[u v].¬(k (fst(p)) ∈ ℤ))))
BY
((UnivCD THENA Auto) THEN (-1) THEN (D (-3) THENA Auto) THEN (CallByValueReduce THENA Auto) THEN AutoSplit) }

1
1. Value Type
2. : ℤ
3. : ℤ × Value
4. (ℤ × Value) List
5. l-ordered(ℤ × Value;x,y.(fst(x)) > (fst(y));v)@i
6. ∀y:ℤ × Value. ((y ∈ v)  ((fst(u)) > (fst(y))))@i
7. case find-combine(λp.(k fst(p));v) of inl(x) => inl (snd(x)) inr(x) => inr ⋅ 
   ∈ {v@0:Value| (¬↑null(v)) ∧ (<k, v@0> ∈ v)}  (↓(∀p∈v.¬(k (fst(p)) ∈ ℤ)))
8. (k fst(u)) 0 ∈ ℤ
⊢ inl (snd(u)) ∈ {v@0:Value| False) ∧ (<k, v@0> ∈ [u v])}  (↓(∀p∈[u v].¬(k (fst(p)) ∈ ℤ)))

2
1. Value Type
2. : ℤ
3. : ℤ × Value
4. fst(u) ≠ 0
5. (ℤ × Value) List
6. l-ordered(ℤ × Value;x,y.(fst(x)) > (fst(y));v)@i
7. ∀y:ℤ × Value. ((y ∈ v)  ((fst(u)) > (fst(y))))@i
8. case find-combine(λp.(k fst(p));v) of inl(x) => inl (snd(x)) inr(x) => inr ⋅ 
   ∈ {v@0:Value| (¬↑null(v)) ∧ (<k, v@0> ∈ v)}  (↓(∀p∈v.¬(k (fst(p)) ∈ ℤ)))
⊢ case if 0 <fst(u) then inr ⋅  else find-combine(λp.(k fst(p));v) fi 
   of inl(x) =>
   inl (snd(x))
   inr(x) =>
   inr ⋅  ∈ {v@0:Value| False) ∧ (<k, v@0> ∈ [u v])}  (↓(∀p∈[u v].¬(k (fst(p)) ∈ ℤ)))


Latex:



1.  Value  :  Type
2.  k  :  \mBbbZ{}
3.  u  :  \mBbbZ{}  \mtimes{}  Value
4.  v  :  (\mBbbZ{}  \mtimes{}  Value)  List
5.  l-ordered(\mBbbZ{}  \mtimes{}  Value;x,y.(fst(x))  >  (fst(y));v)
{}\mRightarrow{}  (case  find-combine(\mlambda{}p.(k  -  fst(p));v)  of  inl(x)  =>  inl  (snd(x))  |  inr(x)  =>  inr  \mcdot{} 
        \mmember{}  \{v@0:Value|  (\mneg{}\muparrow{}null(v))  \mwedge{}  (<k,  v@0>  \mmember{}  v)\}    +  (\mdownarrow{}(\mforall{}p\mmember{}v.\mneg{}(k  =  (fst(p))))))
\mvdash{}  (l-ordered(\mBbbZ{}  \mtimes{}  Value;x,y.(fst(x))  >  (fst(y));v)
\mwedge{}  (\mforall{}y:\mBbbZ{}  \mtimes{}  Value.  ((y  \mmember{}  v)  {}\mRightarrow{}  ((fst(u))  >  (fst(y))))))
{}\mRightarrow{}  (case  eval  tst  =  k  -  fst(u)  in
                  if  (tst  =\msubz{}  0)  then  inl  u
                  if  0  <z  tst  then  inr  \mcdot{} 
                  else  find-combine(\mlambda{}p.(k  -  fst(p));v)
                  fi 
          of  inl(x)  =>
          inl  (snd(x))
          |  inr(x)  =>
          inr  \mcdot{}    \mmember{}  \{v@0:Value|  (\mneg{}False)  \mwedge{}  (<k,  v@0>  \mmember{}  [u  /  v])\}    +  (\mdownarrow{}(\mforall{}p\mmember{}[u  /  v].\mneg{}(k  =  (fst(p))))))


By

((UnivCD  THENA  Auto)
  THEN  D  (-1)
  THEN  (D  (-3)  THENA  Auto)
  THEN  (CallByValueReduce  0  THENA  Auto)
  THEN  AutoSplit)




Home Index