Step * 2 1 1 1 2 of Lemma accum_split_prefix2

.....falsecase..... 
1. Type
2. Type
3. A
4. (T List × A) ⟶ A
5. (T List × A) ⟶ 𝔹
6. ys List
7. T
8. ∀ZZ:(T List × A) List. ∀Z,X:T List × A.
     ((accum_split(g;x;f;ys) = <ZZ [Z], X> ∈ ((T List × A) List × List × A))
      (accum_split(g;x;f;concat(map(λp.(fst(p));ZZ [Z]))) = <ZZ, Z> ∈ ((T List × A) List × List × A)))
9. ZZ (T List × A) List
10. List × A
11. List × A
12. v3 List
13. v4 A
14. [%5] is_accum_splitting(T;A;ys;[];<v3, v4>;f;g;x)
15. accum_split(g;x;f;ys)
= <[], v3, v4>
∈ {p:(T List × A) List × List × A| let LL,L2 in is_accum_splitting(T;A;ys;LL;L2;f;g;x)} 
16. True
17. ¬(v3 [] ∈ (T List))
⊢ (if f <v3, v4> then <[<v3, v4>], [y], g <v3, v4>> else <[], v3 [y], v4> fi 
= <ZZ [Z], X>
∈ ((T List × A) List × List × A))
 (accum_split(g;x;f;concat(map(λp.(fst(p));ZZ [Z]))) = <ZZ, Z> ∈ ((T List × A) List × List × A))
BY
xxx(SplitOnConclITE THEN Auto)xxx }

1
1. Type
2. Type
3. A
4. (T List × A) ⟶ A
5. (T List × A) ⟶ 𝔹
6. ys List
7. T
8. ∀ZZ:(T List × A) List. ∀Z,X:T List × A.
     ((accum_split(g;x;f;ys) = <ZZ [Z], X> ∈ ((T List × A) List × List × A))
      (accum_split(g;x;f;concat(map(λp.(fst(p));ZZ [Z]))) = <ZZ, Z> ∈ ((T List × A) List × List × A)))
9. ZZ (T List × A) List
10. List × A
11. List × A
12. v3 List
13. v4 A
14. is_accum_splitting(T;A;ys;[];<v3, v4>;f;g;x)
15. accum_split(g;x;f;ys)
= <[], v3, v4>
∈ {p:(T List × A) List × List × A| let LL,L2 in is_accum_splitting(T;A;ys;LL;L2;f;g;x)} 
16. True
17. ¬(v3 [] ∈ (T List))
18. ↑(f <v3, v4>)
19. <[<v3, v4>], [y], g <v3, v4>> = <ZZ [Z], X> ∈ ((T List × A) List × List × A)
⊢ accum_split(g;x;f;concat(map(λp.(fst(p));ZZ [Z]))) = <ZZ, Z> ∈ ((T List × A) List × List × A)

2
1. Type
2. Type
3. A
4. (T List × A) ⟶ A
5. (T List × A) ⟶ 𝔹
6. ys List
7. T
8. ∀ZZ:(T List × A) List. ∀Z,X:T List × A.
     ((accum_split(g;x;f;ys) = <ZZ [Z], X> ∈ ((T List × A) List × List × A))
      (accum_split(g;x;f;concat(map(λp.(fst(p));ZZ [Z]))) = <ZZ, Z> ∈ ((T List × A) List × List × A)))
9. ZZ (T List × A) List
10. List × A
11. List × A
12. v3 List
13. v4 A
14. is_accum_splitting(T;A;ys;[];<v3, v4>;f;g;x)
15. accum_split(g;x;f;ys)
= <[], v3, v4>
∈ {p:(T List × A) List × List × A| let LL,L2 in is_accum_splitting(T;A;ys;LL;L2;f;g;x)} 
16. True
17. ¬(v3 [] ∈ (T List))
18. ¬↑(f <v3, v4>)
19. <[], v3 [y], v4> = <ZZ [Z], X> ∈ ((T List × A) List × List × A)
⊢ accum_split(g;x;f;concat(map(λp.(fst(p));ZZ [Z]))) = <ZZ, Z> ∈ ((T List × A) List × List × A)


Latex:


Latex:
.....falsecase..... 
1.  A  :  Type
2.  T  :  Type
3.  x  :  A
4.  g  :  (T  List  \mtimes{}  A)  {}\mrightarrow{}  A
5.  f  :  (T  List  \mtimes{}  A)  {}\mrightarrow{}  \mBbbB{}
6.  ys  :  T  List
7.  y  :  T
8.  \mforall{}ZZ:(T  List  \mtimes{}  A)  List.  \mforall{}Z,X:T  List  \mtimes{}  A.
          ((accum\_split(g;x;f;ys)  =  <ZZ  @  [Z],  X>)
          {}\mRightarrow{}  (accum\_split(g;x;f;concat(map(\mlambda{}p.(fst(p));ZZ  @  [Z])))  =  <ZZ,  Z>))
9.  ZZ  :  (T  List  \mtimes{}  A)  List
10.  Z  :  T  List  \mtimes{}  A
11.  X  :  T  List  \mtimes{}  A
12.  v3  :  T  List
13.  v4  :  A
14.  [\%5]  :  is\_accum\_splitting(T;A;ys;[];<v3,  v4>f;g;x)
15.  accum\_split(g;x;f;ys)  =  <[],  v3,  v4>
16.  True
17.  \mneg{}(v3  =  [])
\mvdash{}  (if  f  <v3,  v4>  then  <[<v3,  v4>],  [y],  g  <v3,  v4>>  else  <[],  v3  @  [y],  v4>  fi    =  <ZZ  @  [Z],  X>)
{}\mRightarrow{}  (accum\_split(g;x;f;concat(map(\mlambda{}p.(fst(p));ZZ  @  [Z])))  =  <ZZ,  Z>)


By


Latex:
xxx(SplitOnConclITE  THEN  Auto)xxx




Home Index