Step * 3 of Lemma pW-rec_wf


1. Type
2. P ⟶ Type
3. p:P ⟶ A[p] ⟶ Type
4. p:P ⟶ a:A[p] ⟶ B[p;a] ⟶ P
5. pcw-step(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b]) ∈ Type
6. pW ∈ P ⟶ Type
7. par:P ⟶ (pW par) ⟶ ℙ
8. ind par:P
⟶ a:A[par]
⟶ f:(b:B[par;a] ⟶ (pW C[par;a;b]))
⟶ (b:B[par;a] ⟶ Q[C[par;a;b];f b])
⟶ Q[par;pW-sup(a;f)]
9. par P
10. pW par
11. param-W-rel(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b];par;w) ∈ n:ℕ
    ⟶ (ℕn ⟶ pcw-step(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b]))
    ⟶ pcw-step(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b])
    ⟶ ℙ
12. ∀[pp:n:ℕ × (ℕn ⟶ pcw-step(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b]))]. (Barred(pp) ∈ ℙ)
13. : ℕ
14. : ℕn ⟶ pcw-step(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b])
15. ∀%6:ℕn. (param-W-rel(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b];par;w) %6 (s %6))
16. ∀t:{t:pcw-step(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b])| param-W-rel(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b];par;w) t} 
      (if (0) < (n 1)
          then let q,w',d if (n 1) 1=n then else (s ((n 1) 1)) in 
               case d
                of inl(b) =>
                let a,f w' 
                in let ind(p,a,f,G) ind[p;a;f;G] in 
                   letrec F(p,w) let a,f=w in 
                                   ind(p,a,f,λb.F(C[p;a;b],f(b)) in 
                   F(C[q;a;b];f b)
                inr(z) =>
                Ax
          else let ind(p,a,f,G) ind[p;a;f;G] in 
               letrec F(p,w) let a,f=w in 
                               ind(p,a,f,λb.F(C[p;a;b],f(b)) in 
               F(par;w) ∈ if (0) < (n 1)
                             then let q,w',d if (n 1) 1=n then else (s ((n 1) 1)) in 
                                  case of inl(b) => let a,f w' in Q[C[q;a;b];f b] inr(z) => True
                             else Q[par;w])
⊢ if (0) < (n)
     then let q,w',d (n 1) in 
          case d
           of inl(b) =>
           let a,f w' 
           in let ind(p,a,f,G) ind[p;a;f;G] in 
              letrec F(p,w) let a,f=w in 
                              ind(p,a,f,λb.F(C[p;a;b],f(b)) in 
              F(C[q;a;b];f b)
           inr(z) =>
           Ax
     else let ind(p,a,f,G) ind[p;a;f;G] in 
          letrec F(p,w) let a,f=w in 
                          ind(p,a,f,λb.F(C[p;a;b],f(b)) in 
          F(par;w) ∈ if (0) < (n)
                        then let q,w',d (n 1) in 
                             case of inl(b) => let a,f w' in Q[C[q;a;b];f b] inr(z) => True
                        else Q[par;w]
BY
(Assert ∀t:{t:pcw-step(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b])| 
              param-W-rel(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b];par;w) t} 
            (let q,w',d in 
             case d
              of inl(b) =>
              let a,f w' 
              in let ind(p,a,f,G) ind[p;a;f;G] in 
                 letrec F(p,w) let a,f=w in 
                                 ind(p,a,f,λb.F(C[p;a;b],f(b)) in 
                 F(C[q;a;b];f b)
              inr(z) =>
              Ax ∈ let q,w',d in 
             case of inl(b) => let a,f w' in Q[C[q;a;b];f b] inr(z) => True) BY
         ((Subst' (n 1) -1 THENA Auto)
          THEN (Reduce  (-1) THENA Auto)
          THEN LessCases (-1)
          THEN Try (Complete (Auto)))) }

1
1. Type
2. P ⟶ Type
3. p:P ⟶ A[p] ⟶ Type
4. p:P ⟶ a:A[p] ⟶ B[p;a] ⟶ P
5. pcw-step(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b]) ∈ Type
6. pW ∈ P ⟶ Type
7. par:P ⟶ (pW par) ⟶ ℙ
8. ind par:P
⟶ a:A[par]
⟶ f:(b:B[par;a] ⟶ (pW C[par;a;b]))
⟶ (b:B[par;a] ⟶ Q[C[par;a;b];f b])
⟶ Q[par;pW-sup(a;f)]
9. par P
10. pW par
11. param-W-rel(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b];par;w) ∈ n:ℕ
    ⟶ (ℕn ⟶ pcw-step(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b]))
    ⟶ pcw-step(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b])
    ⟶ ℙ
12. ∀[pp:n:ℕ × (ℕn ⟶ pcw-step(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b]))]. (Barred(pp) ∈ ℙ)
13. : ℕ
14. : ℕn ⟶ pcw-step(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b])
15. ∀%6:ℕn. (param-W-rel(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b];par;w) %6 (s %6))
16. ∀t:{t:pcw-step(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b])| param-W-rel(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b];par;w) t} 
      (if (0) < (n 1)
          then let q,w',d if (n 1) 1=n then else (s ((n 1) 1)) in 
               case d
                of inl(b) =>
                let a,f w' 
                in let ind(p,a,f,G) ind[p;a;f;G] in 
                   letrec F(p,w) let a,f=w in 
                                   ind(p,a,f,λb.F(C[p;a;b],f(b)) in 
                   F(C[q;a;b];f b)
                inr(z) =>
                Ax
          else let ind(p,a,f,G) ind[p;a;f;G] in 
               letrec F(p,w) let a,f=w in 
                               ind(p,a,f,λb.F(C[p;a;b],f(b)) in 
               F(par;w) ∈ if (0) < (n 1)
                             then let q,w',d if (n 1) 1=n then else (s ((n 1) 1)) in 
                                  case of inl(b) => let a,f w' in Q[C[q;a;b];f b] inr(z) => True
                             else Q[par;w])
17. ∀t:{t:pcw-step(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b])| param-W-rel(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b];par;w) t} 
      (let q,w',d in 
       case d
        of inl(b) =>
        let a,f w' 
        in let ind(p,a,f,G) ind[p;a;f;G] in 
           letrec F(p,w) let a,f=w in 
                           ind(p,a,f,λb.F(C[p;a;b],f(b)) in 
           F(C[q;a;b];f b)
        inr(z) =>
        Ax ∈ let q,w',d in 
       case of inl(b) => let a,f w' in Q[C[q;a;b];f b] inr(z) => True)
⊢ if (0) < (n)
     then let q,w',d (n 1) in 
          case d
           of inl(b) =>
           let a,f w' 
           in let ind(p,a,f,G) ind[p;a;f;G] in 
              letrec F(p,w) let a,f=w in 
                              ind(p,a,f,λb.F(C[p;a;b],f(b)) in 
              F(C[q;a;b];f b)
           inr(z) =>
           Ax
     else let ind(p,a,f,G) ind[p;a;f;G] in 
          letrec F(p,w) let a,f=w in 
                          ind(p,a,f,λb.F(C[p;a;b],f(b)) in 
          F(par;w) ∈ if (0) < (n)
                        then let q,w',d (n 1) in 
                             case of inl(b) => let a,f w' in Q[C[q;a;b];f b] inr(z) => True
                        else Q[par;w]


Latex:


Latex:

1.  P  :  Type
2.  A  :  P  {}\mrightarrow{}  Type
3.  B  :  p:P  {}\mrightarrow{}  A[p]  {}\mrightarrow{}  Type
4.  C  :  p:P  {}\mrightarrow{}  a:A[p]  {}\mrightarrow{}  B[p;a]  {}\mrightarrow{}  P
5.  pcw-step(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b])  \mmember{}  Type
6.  pW  \mmember{}  P  {}\mrightarrow{}  Type
7.  Q  :  par:P  {}\mrightarrow{}  (pW  par)  {}\mrightarrow{}  \mBbbP{}
8.  ind  :  par:P
{}\mrightarrow{}  a:A[par]
{}\mrightarrow{}  f:(b:B[par;a]  {}\mrightarrow{}  (pW  C[par;a;b]))
{}\mrightarrow{}  (b:B[par;a]  {}\mrightarrow{}  Q[C[par;a;b];f  b])
{}\mrightarrow{}  Q[par;pW-sup(a;f)]
9.  par  :  P
10.  w  :  pW  par
11.  param-W-rel(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b];par;w)  \mmember{}  n:\mBbbN{}
        {}\mrightarrow{}  (\mBbbN{}n  {}\mrightarrow{}  pcw-step(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b]))
        {}\mrightarrow{}  pcw-step(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b])
        {}\mrightarrow{}  \mBbbP{}
12.  \mforall{}[pp:n:\mBbbN{}  \mtimes{}  (\mBbbN{}n  {}\mrightarrow{}  pcw-step(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b]))].  (Barred(pp)  \mmember{}  \mBbbP{})
13.  n  :  \mBbbN{}
14.  s  :  \mBbbN{}n  {}\mrightarrow{}  pcw-step(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b])
15.  \mforall{}\%6:\mBbbN{}n.  (param-W-rel(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b];par;w)  \%6  s  (s  \%6))
16.  \mforall{}t:\{t:pcw-step(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b])| 
                param-W-rel(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b];par;w)  n  s  t\} 
            (if  (0)  <  (n  +  1)
                    then  let  q,w',d  =  if  (n  +  1)  -  1=n  then  t  else  (s  ((n  +  1)  -  1))  in 
                              case  d
                                of  inl(b)  =>
                                let  a,f  =  w' 
                                in  let  ind(p,a,f,G)  =  ind[p;a;f;G]  in 
                                      letrec  F(p,w)  =  let  a,f=w  in 
                                                                      ind(p,a,f,\mlambda{}b.F(C[p;a;b],f(b))  in 
                                      F(C[q;a;b];f  b)
                                |  inr(z)  =>
                                Ax
                    else  let  ind(p,a,f,G)  =  ind[p;a;f;G]  in 
                              letrec  F(p,w)  =  let  a,f=w  in 
                                                              ind(p,a,f,\mlambda{}b.F(C[p;a;b],f(b))  in 
                              F(par;w)  \mmember{}  if  (0)  <  (n  +  1)
                                                          then  let  q,w',d  =  if  (n  +  1)  -  1=n  then  t  else  (s  ((n  +  1)  -  1))  in 
                                                                    case  d
                                                                      of  inl(b)  =>
                                                                      let  a,f  =  w' 
                                                                      in  Q[C[q;a;b];f  b]
                                                                      |  inr(z)  =>
                                                                      True
                                                          else  Q[par;w])
\mvdash{}  if  (0)  <  (n)
          then  let  q,w',d  =  s  (n  -  1)  in 
                    case  d
                      of  inl(b)  =>
                      let  a,f  =  w' 
                      in  let  ind(p,a,f,G)  =  ind[p;a;f;G]  in 
                            letrec  F(p,w)  =  let  a,f=w  in 
                                                            ind(p,a,f,\mlambda{}b.F(C[p;a;b],f(b))  in 
                            F(C[q;a;b];f  b)
                      |  inr(z)  =>
                      Ax
          else  let  ind(p,a,f,G)  =  ind[p;a;f;G]  in 
                    letrec  F(p,w)  =  let  a,f=w  in 
                                                    ind(p,a,f,\mlambda{}b.F(C[p;a;b],f(b))  in 
                    F(par;w)  \mmember{}  if  (0)  <  (n)
                                                then  let  q,w',d  =  s  (n  -  1)  in 
                                                          case  d  of  inl(b)  =>  let  a,f  =  w'  in  Q[C[q;a;b];f  b]  |  inr(z)  =>  True
                                                else  Q[par;w]


By


Latex:
(Assert  \mforall{}t:\{t:pcw-step(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b])| 
                        param-W-rel(P;p.A[p];p,a.B[p;a];p,a,b.C[p;a;b];par;w)  n  s  t\} 
                    (let  q,w',d  =  t  in 
                      case  d
                        of  inl(b)  =>
                        let  a,f  =  w' 
                        in  let  ind(p,a,f,G)  =  ind[p;a;f;G]  in 
                              letrec  F(p,w)  =  let  a,f=w  in 
                                                              ind(p,a,f,\mlambda{}b.F(C[p;a;b],f(b))  in 
                              F(C[q;a;b];f  b)
                        |  inr(z)  =>
                        Ax  \mmember{}  let  q,w',d  =  t  in 
                      case  d  of  inl(b)  =>  let  a,f  =  w'  in  Q[C[q;a;b];f  b]  |  inr(z)  =>  True)  BY
              ((Subst'  (n  +  1)  -  1  \msim{}  n  -1  THENA  Auto)
                THEN  (Reduce    (-1)  THENA  Auto)
                THEN  LessCases  (-1)
                THEN  Try  (Complete  (Auto))))




Home Index