Step * of Lemma term-accum1_wf

No Annotations
[opr,P:Type]. ∀[R:P ⟶ term(opr) ⟶ ℙ]. ∀[Q:P ⟶ opr ⟶ (varname() List) ⟶ ((t:term(opr) × p:P × R[p;t]) List) ⟶ P].
[varcase:∀p:P. ∀v:{v:varname()| ¬(v nullvar() ∈ varname())} .  R[p;varterm(v)]].
[mktermcase:∀p:P. ∀f:opr. ∀bts:bound-term(opr) List. ∀L:{L:(t:term(opr) × p:P × R[p;t]) List| 
                                                          (||L|| ||bts|| ∈ ℤ)
                                                          ∧ (∀i:ℕ||L||. ((fst(L[i])) (snd(bts[i])) ∈ term(opr)))
                                                          ∧ (∀i:ℕ||L||
                                                               ((fst(snd(L[i])))
                                                               Q[p;f;fst(bts[i]);firstn(i;L)]
                                                               ∈ P))} .
               R[p;mkterm(f;bts)]]. ∀[t:term(opr)].
  (term-accum1(t)
   p,f,vs,tr.Q[p;f;vs;tr]
   varterm(x) with  varcase[p;x]
   mkterm(f,bts) with  trs.mktermcase[p;f;bts;trs] ∈ p:P ⟶ R[p;t])
BY
(Intros
   THEN Unhide
   THEN (Subst' term-accum1(t)
                p,f,vs,tr.Q[p;f;vs;tr]
                varterm(x) with  varcase[p;x]
                mkterm(f,bts) with  trs.mktermcase[p;f;bts;trs] TERMOF{term-accum-induction-ext:o, \\v:l, i:l} 
                                                                      varcase 
                                                                      mktermcase 
                                                                      0
         THENA (RW (AddrC [2] (TagC (mk_tag_term 5))) THEN RepUR ``so_apply`` THEN Auto)
         )
   THEN (GenConcl ⌜TERMOF{term-accum-induction-ext:o, \\v:l, i:l}
                   F
                   ∈ (∀Q:P ⟶ opr ⟶ (varname() List) ⟶ ((t:term(opr) × p:P × R[p;t]) List) ⟶ P
                        ((∀p:P. ∀v:{v:varname()| ¬(v nullvar() ∈ varname())} .  R[p;varterm(v)])
                         (∀p:P. ∀f:opr. ∀bts:bound-term(opr) List. ∀L:{L:(t:term(opr) × p:P × R[p;t]) List| 
                                                                         (||L|| ||bts|| ∈ ℤ)
                                                                         ∧ (∀i:ℕ||L||
                                                                              ((fst(L[i])) (snd(bts[i])) ∈ term(opr)))
                                                                         ∧ (∀i:ℕ||L||
                                                                              ((fst(snd(L[i])))
                                                                              Q[p;f;fst(bts[i]);firstn(i;L)]
                                                                              ∈ P))} .
                              R[p;mkterm(f;bts)])
                         {∀t:term(opr). ∀p:P.  R[p;t]}))⌝⋅
         THENA Auto
         )
   THEN Thin (-1)
   THEN All (RepUR ``all implies guard so_apply``)
   THEN Auto) }


Latex:


Latex:
No  Annotations
\mforall{}[opr,P:Type].  \mforall{}[R:P  {}\mrightarrow{}  term(opr)  {}\mrightarrow{}  \mBbbP{}].  \mforall{}[Q:P
                                                                                          {}\mrightarrow{}  opr
                                                                                          {}\mrightarrow{}  (varname()  List)
                                                                                          {}\mrightarrow{}  ((t:term(opr)  \mtimes{}  p:P  \mtimes{}  R[p;t])  List)
                                                                                          {}\mrightarrow{}  P].  \mforall{}[varcase:\mforall{}p:P.  \mforall{}v:\{v:varname()| 
                                                                                                                                                \mneg{}(v  =  nullvar())\}  .
                                                                                                                                R[p;varterm(v)]].
\mforall{}[mktermcase:\mforall{}p:P.  \mforall{}f:opr.  \mforall{}bts:bound-term(opr)  List.  \mforall{}L:\{L:(t:term(opr)  \mtimes{}  p:P  \mtimes{}  R[p;t])  List| 
                                                                                                                    (||L||  =  ||bts||)
                                                                                                                    \mwedge{}  (\mforall{}i:\mBbbN{}||L||
                                                                                                                              ((fst(L[i]))  =  (snd(bts[i]))))
                                                                                                                    \mwedge{}  (\mforall{}i:\mBbbN{}||L||
                                                                                                                              ((fst(snd(L[i])))
                                                                                                                              =  Q[p;f;fst(bts[i]);firstn(i;L)]))\}  .
                              R[p;mkterm(f;bts)]].  \mforall{}[t:term(opr)].
    (term-accum1(t)
      p,f,vs,tr.Q[p;f;vs;tr]
      varterm(x)  with  p  {}\mRightarrow{}  varcase[p;x]
      mkterm(f,bts)  with  p  {}\mRightarrow{}  trs.mktermcase[p;f;bts;trs]  \mmember{}  p:P  {}\mrightarrow{}  R[p;t])


By


Latex:
(Intros
  THEN  Unhide
  THEN  (Subst'  term-accum1(t)
                            p,f,vs,tr.Q[p;f;vs;tr]
                            varterm(x)  with  p  {}\mRightarrow{}  varcase[p;x]
                            mkterm(f,bts)  with  p  {}\mRightarrow{}  trs.mktermcase[p;f;bts;trs] 
              \msim{}  TERMOF\{term-accum-induction-ext:o,  \mbackslash{}\mbackslash{}v:l,  i:l\}  Q  varcase  mktermcase  t  0
              THENA  (RW  (AddrC  [2]  (TagC  (mk\_tag\_term  5)))  0  THEN  RepUR  ``so\_apply``  0  THEN  Auto)
              )
  THEN  (GenConcl  \mkleeneopen{}TERMOF\{term-accum-induction-ext:o,  \mbackslash{}\mbackslash{}v:l,  i:l\}  =  F\mkleeneclose{}\mcdot{}  THENA  Auto)
  THEN  Thin  (-1)
  THEN  All  (RepUR  ``all  implies  guard  so\_apply``)
  THEN  Auto)




Home Index