Step * of Lemma rec-class-val

[Info,T:Type]. ∀[G:es:EO+(Info) ⟶ E ⟶ bag(T)]. ∀[F:es:EO+(Info) ⟶ e':E ⟶ T ⟶ {e:E| (e' <loc e)}  ⟶ bag(T)].
[es:EO+(Info)]. ∀[e:E].
  RecClass(first e
             G[es;e]
           or next after e' with value v
               F[es;e';v;e])(e)
  if e ∈b prior(RecClass(first e
                             G[es;e]
                           or next after e' with value v
                               F[es;e';v;e]))
    then let e' prior(RecClass(first e
                                   G[es;e]
                                 or next after e' with value v
                                     F[es;e';v;e]))(e) in
             only(F[es;e';RecClass(first e
                                     G[es;e]
                                   or next after e' with value v
                                       F[es;e';v;e])(e');e])
    else only(G[es;e])
    fi 
  ∈ 
  supposing ↑e ∈b RecClass(first e
                             G[es;e]
                           or next after e' with value v
                               F[es;e';v;e])
BY
WithCumulativity (RemoveUniform Auto ((InstLemma `es-rec-class_wf` [⌜Info⌝;⌜T⌝;⌜G⌝;⌜F⌝]⋅ THEN Auto))⋅
                    THEN RepeatFor ((D THENA Auto))
                    THEN RW (AddrC [1] (RecUnfoldC `es-rec-class`)) 0⋅
                    THEN RW (AddrC [2;2] (RecUnfoldC `es-rec-class`)) 0⋅
                    THEN RepUR ``in-eclass eclass-val can-apply do-apply let`` 0
                    THEN (GenConcl ⌜RecClass(first e
                                               G[es;e]
                                             or next after e' with value v
                                                 F[es;e';v;e])
                                    X
                                    ∈ EClass(T)⌝⋅
                          THENA Auto
                          )
                    THEN All Thin
                    THEN Fold `eclass-val` 0)⋅ }

1
1. Info Type@i'
2. Type@i'
3. es:EO+(Info) ⟶ E ⟶ bag(T)@i'
4. es:EO+(Info) ⟶ e':E ⟶ T ⟶ {e:E| (e' <loc e)}  ⟶ bag(T)@i'
5. es EO+(Info)@i'
6. E@i
7. EClass(T)@i'
⊢ only(if (#(prior(X) es e) =z 1) then F[es;prior(X)(e);X(prior(X)(e));e] else G[es;e] fi )
  if (#(prior(X) es e) =z 1) then only(F[es;prior(X)(e);X(prior(X)(e));e]) else only(G[es;e]) fi 
  ∈ 
  supposing ↑(#(if (#(prior(X) es e) =z 1) then F[es;prior(X)(e);X(prior(X)(e));e] else G[es;e] fi =z 1)


Latex:


Latex:
\mforall{}[Info,T:Type].  \mforall{}[G:es:EO+(Info)  {}\mrightarrow{}  E  {}\mrightarrow{}  bag(T)].  \mforall{}[F:es:EO+(Info)
                                                                                                            {}\mrightarrow{}  e':E
                                                                                                            {}\mrightarrow{}  T
                                                                                                            {}\mrightarrow{}  \{e:E|  (e'  <loc  e)\} 
                                                                                                            {}\mrightarrow{}  bag(T)].  \mforall{}[es:EO+(Info)].  \mforall{}[e:E].
    RecClass(first  e
                          G[es;e]
                      or  next  e  after  e'  with  value  v
                              F[es;e';v;e])(e)
    =  if  e  \mmember{}\msubb{}  prior(RecClass(first  e
                                                          G[es;e]
                                                      or  next  e  after  e'  with  value  v
                                                              F[es;e';v;e]))
        then  let  e'  =  prior(RecClass(first  e
                                                                      G[es;e]
                                                                  or  next  e  after  e'  with  value  v
                                                                          F[es;e';v;e]))(e)  in
                          only(F[es;e';RecClass(first  e
                                                                          G[es;e]
                                                                      or  next  e  after  e'  with  value  v
                                                                              F[es;e';v;e])(e');e])
        else  only(G[es;e])
        fi   
    supposing  \muparrow{}e  \mmember{}\msubb{}  RecClass(first  e
                                                          G[es;e]
                                                      or  next  e  after  e'  with  value  v
                                                              F[es;e';v;e])


By


Latex:
WithCumulativity  (RemoveUniform  Auto  ((InstLemma  `es-rec-class\_wf`  [\mkleeneopen{}Info\mkleeneclose{};\mkleeneopen{}T\mkleeneclose{};\mkleeneopen{}G\mkleeneclose{};\mkleeneopen{}F\mkleeneclose{}]\mcdot{}  THEN  Auto))
                                    \mcdot{}
                                    THEN  RepeatFor  6  ((D  0  THENA  Auto))
                                    THEN  RW  (AddrC  [1]  (RecUnfoldC  `es-rec-class`))  0\mcdot{}
                                    THEN  RW  (AddrC  [2;2]  (RecUnfoldC  `es-rec-class`))  0\mcdot{}
                                    THEN  RepUR  ``in-eclass  eclass-val  can-apply  do-apply  let``  0
                                    THEN  (GenConcl  \mkleeneopen{}RecClass(first  e
                                                                                          G[es;e]
                                                                                      or  next  e  after  e'  with  value  v
                                                                                              F[es;e';v;e])
                                                                    =  X\mkleeneclose{}\mcdot{}
                                                THENA  Auto
                                                )
                                    THEN  All  Thin
                                    THEN  Fold  `eclass-val`  0)\mcdot{}




Home Index