Step * 2 2 1 1 of Lemma list_split_wf


1. Type
2. (T List) ⟶ 𝔹
3. : ℕ
4. List
5. ¬↑null(L)
6. {p:T List List × (T List)| let LL,L2 in is_list_splitting(T;firstn(||L|| 1;L);LL;L2;f)} 
⊢ accumulate (with value and list item v):
   let LL,L2 
   in if null(L2) then <LL, [v]>
      if L2 then <LL [L2], [v]>
      else <LL, L2 [v]>
      fi 
  over list:
    [last(L)]
  with starting value:
   v) ∈ {p:T List List × (T List)| let LL,L2 in is_list_splitting(T;firstn(||L|| 1;L) [last(L)];LL;L2;f)} 
BY
(D -1
   THEN RepeatFor ((D -2 THEN All Reduce))
   THEN RepUR ``is_list_splitting`` -1
   THEN MemTypeCD
   THEN Reduce 0
   THEN Auto
   THEN Try ((SplitOnConclITE THENA Auto))
   THEN RepUR ``is_list_splitting`` 0
   THEN Auto
   THEN All (RWO "append-nil")
   THEN Auto
   THEN Try (((RWO "iseg_single" (-2) THENM -2) THEN Auto))) }

1
1. Type
2. (T List) ⟶ 𝔹
3. : ℕ
4. List
5. ¬↑null(L)
6. v1 List List
7. T
8. List
9. firstn(||L|| 1;L) (concat(v1) [u v]) ∈ (T List)
10. (∀L'∈v1.(↑(f L')) ∧ (¬↑null(L')) ∧ (∀S:T List. ((¬↑null(S))  S ≤ L'  (S L' ∈ (T List)))  (¬↑(f S)))))
11. (¬↑null(firstn(||L|| 1;L)))  False)
12. ∀S:T List. ((¬↑null(S))  S ≤ [u v]  (S [u v] ∈ (T List)))  (¬↑(f S)))
13. ↑(f [u v])
⊢ (firstn(||L|| 1;L) [last(L)]) (concat(v1 [[u v]]) [last(L)]) ∈ (T List)

2
1. Type
2. (T List) ⟶ 𝔹
3. : ℕ
4. List
5. ¬↑null(L)
6. v1 List List
7. T
8. List
9. firstn(||L|| 1;L) (concat(v1) [u v]) ∈ (T List)
10. (∀L'∈v1.(↑(f L')) ∧ (¬↑null(L')) ∧ (∀S:T List. ((¬↑null(S))  S ≤ L'  (S L' ∈ (T List)))  (¬↑(f S)))))
11. (¬↑null(firstn(||L|| 1;L)))  False)
12. ∀S:T List. ((¬↑null(S))  S ≤ [u v]  (S [u v] ∈ (T List)))  (¬↑(f S)))
13. ↑(f [u v])
14. (firstn(||L|| 1;L) [last(L)]) (concat(v1 [[u v]]) [last(L)]) ∈ (T List)
⊢ (∀L'∈v1 [[u v]].(↑(f L'))
      ∧ (¬↑null(L'))
      ∧ (∀S:T List. ((¬↑null(S))  S ≤ L'  (S L' ∈ (T List)))  (¬↑(f S)))))

3
1. Type
2. (T List) ⟶ 𝔹
3. : ℕ
4. List
5. ¬↑null(L)
6. v1 List List
7. T
8. List
9. firstn(||L|| 1;L) (concat(v1) [u v]) ∈ (T List)
10. (∀L'∈v1.(↑(f L')) ∧ (¬↑null(L')) ∧ (∀S:T List. ((¬↑null(S))  S ≤ L'  (S L' ∈ (T List)))  (¬↑(f S)))))
11. (¬↑null(firstn(||L|| 1;L)))  False)
12. ∀S:T List. ((¬↑null(S))  S ≤ [u v]  (S [u v] ∈ (T List)))  (¬↑(f S)))
13. ¬↑(f [u v])
⊢ (firstn(||L|| 1;L) [last(L)]) (concat(v1) [u (v [last(L)])]) ∈ (T List)

4
1. Type
2. (T List) ⟶ 𝔹
3. : ℕ
4. List
5. ¬↑null(L)
6. v1 List List
7. T
8. List
9. firstn(||L|| 1;L) (concat(v1) [u v]) ∈ (T List)
10. (∀L'∈v1.(↑(f L')) ∧ (¬↑null(L')) ∧ (∀S:T List. ((¬↑null(S))  S ≤ L'  (S L' ∈ (T List)))  (¬↑(f S)))))
11. (¬↑null(firstn(||L|| 1;L)))  False)
12. ∀S:T List. ((¬↑null(S))  S ≤ [u v]  (S [u v] ∈ (T List)))  (¬↑(f S)))
13. ¬↑(f [u v])
14. (firstn(||L|| 1;L) [last(L)]) (concat(v1) [u (v [last(L)])]) ∈ (T List)
15. (∀L'∈v1.(↑(f L')) ∧ (¬↑null(L')) ∧ (∀S:T List. ((¬↑null(S))  S ≤ L'  (S L' ∈ (T List)))  (¬↑(f S)))))
16. (¬↑null(firstn(||L|| 1;L) [last(L)]))  False)
17. List
18. ¬↑null(S)
19. S ≤ [u (v [last(L)])]
20. ¬(S [u (v [last(L)])] ∈ (T List))
⊢ ¬↑(f S)


Latex:


Latex:

1.  T  :  Type
2.  f  :  (T  List)  {}\mrightarrow{}  \mBbbB{}
3.  n  :  \mBbbN{}
4.  L  :  T  List
5.  \mneg{}\muparrow{}null(L)
6.  v  :  \{p:T  List  List  \mtimes{}  (T  List)| 
                let  LL,L2  =  p 
                in  is\_list\_splitting(T;firstn(||L||  -  1;L);LL;L2;f)\} 
\mvdash{}  accumulate  (with  value  p  and  list  item  v):
      let  LL,L2  =  p 
      in  if  null(L2)  then  <LL,  [v]>
            if  f  L2  then  <LL  @  [L2],  [v]>
            else  <LL,  L2  @  [v]>
            fi 
    over  list:
        [last(L)]
    with  starting  value:
      v)  \mmember{}  \{p:T  List  List  \mtimes{}  (T  List)| 
                  let  LL,L2  =  p 
                  in  is\_list\_splitting(T;firstn(||L||  -  1;L)  @  [last(L)];LL;L2;f)\} 


By


Latex:
(D  -1
  THEN  RepeatFor  2  ((D  -2  THEN  All  Reduce))
  THEN  RepUR  ``is\_list\_splitting``  -1
  THEN  MemTypeCD
  THEN  Reduce  0
  THEN  Auto
  THEN  Try  ((SplitOnConclITE  THENA  Auto))
  THEN  RepUR  ``is\_list\_splitting``  0
  THEN  Auto
  THEN  All  (RWO  "append-nil")
  THEN  Auto
  THEN  Try  (((RWO  "iseg\_single"  (-2)  THENM  D  -2)  THEN  Auto)))




Home Index