Step * of Lemma test-red-black-example

[A,D:Type]. ∀[Red,Black:D ⟶ ℙ]. ∀[R:D ⟶ D ⟶ ℙ].
  ((∀x:D. (Red[x] ∨ Black[x]))
   (∀x,y,z:D.  (R[x;y]  R[y;z]  R[x;z]))
   (∀x:D. (R[x;x]  A))
   (∀x:D. (Red[x]  (∃y:D. (Black[y] ∧ R[x;y]))))
   (∀x:D. (Black[x]  (∃y:D. (Red[y] ∧ R[x;y]))))
   (∃m:D. ((∀x:D. (Red[x]  R[x;m])) ∨ (∀x:D. (Black[x]  R[x;m]))))
   A)
BY
(EvidenceTac ⌜λD,T,I,RB,BR,mx. let fst(mx) in
                                  let Im in
                                  let mRorB in
                                  let RorBFinite snd(mx) in
                                  let RIsFinite isl(RorBFinite) in
                                  let mBoundsRed outl(RorBFinite) in
                                  let mBoundsBlack outr(RorBFinite) in
                                  let mIsRed isl(mRorB) in
                                  let mRed outl(mRorB) in
                                  let mBlack outr(mRorB) in
                                  let loop = λy.(T m) in
                                  if RIsFinite
                                    then if hd([mIsRed])
                                         then Im (mBoundsRed mRed)
                                         else let y,rdy,ygtr BR mBlack in 
                                              Im (loop ygtr (mBoundsRed rdy))
                                         fi 
                                  if mIsRed then let y,bly,ygtr RB mRed in Im (loop ygtr (mBoundsBlack bly))
                                  else Im (mBoundsBlack mBlack)
                                  fi ⌝⋅
   THENA Auto
   )⋅ }


Latex:


Latex:
\mforall{}[A,D:Type].  \mforall{}[Red,Black:D  {}\mrightarrow{}  \mBbbP{}].  \mforall{}[R:D  {}\mrightarrow{}  D  {}\mrightarrow{}  \mBbbP{}].
    ((\mforall{}x:D.  (Red[x]  \mvee{}  Black[x]))
    {}\mRightarrow{}  (\mforall{}x,y,z:D.    (R[x;y]  {}\mRightarrow{}  R[y;z]  {}\mRightarrow{}  R[x;z]))
    {}\mRightarrow{}  (\mforall{}x:D.  (R[x;x]  {}\mRightarrow{}  A))
    {}\mRightarrow{}  (\mforall{}x:D.  (Red[x]  {}\mRightarrow{}  (\mexists{}y:D.  (Black[y]  \mwedge{}  R[x;y]))))
    {}\mRightarrow{}  (\mforall{}x:D.  (Black[x]  {}\mRightarrow{}  (\mexists{}y:D.  (Red[y]  \mwedge{}  R[x;y]))))
    {}\mRightarrow{}  (\mexists{}m:D.  ((\mforall{}x:D.  (Red[x]  {}\mRightarrow{}  R[x;m]))  \mvee{}  (\mforall{}x:D.  (Black[x]  {}\mRightarrow{}  R[x;m]))))
    {}\mRightarrow{}  A)


By


Latex:
(EvidenceTac  \mkleeneopen{}\mlambda{}D,T,I,RB,BR,mx.  let  m  =  fst(mx)  in
                                                                let  Im  =  I  m  in
                                                                let  mRorB  =  D  m  in
                                                                let  RorBFinite  =  snd(mx)  in
                                                                let  RIsFinite  =  isl(RorBFinite)  in
                                                                let  mBoundsRed  =  outl(RorBFinite)  in
                                                                let  mBoundsBlack  =  outr(RorBFinite)  in
                                                                let  mIsRed  =  isl(mRorB)  in
                                                                let  mRed  =  outl(mRorB)  in
                                                                let  mBlack  =  outr(mRorB)  in
                                                                let  loop  =  \mlambda{}y.(T  m  y  m)  in
                                                                if  RIsFinite
                                                                    then  if  hd([mIsRed])
                                                                              then  Im  (mBoundsRed  m  mRed)
                                                                              else  let  y,rdy,ygtr  =  BR  m  mBlack  in 
                                                                                        Im  (loop  y  ygtr  (mBoundsRed  y  rdy))
                                                                              fi 
                                                                if  mIsRed
                                                                    then  let  y,bly,ygtr  =  RB  m  mRed  in 
                                                                              Im  (loop  y  ygtr  (mBoundsBlack  y  bly))
                                                                else  Im  (mBoundsBlack  m  mBlack)
                                                                fi  \mkleeneclose{}\mcdot{}
  THENA  Auto
  )\mcdot{}




Home Index