Step * 2 2 1 of Lemma map_is_append


1. Type
2. Type
3. A ⟶ B
4. A
5. List
6. ∀[L1,L2:B List].
     (map(f;firstn(||L1||;v)) L1 ∈ (B List)) ∧ (map(f;nth_tl(||L1||;v)) L2 ∈ (B List)) 
     supposing map(f;v) (L1 L2) ∈ (B List)
7. u1 B
8. v1 List
9. L2 List
10. [f map(f;v)] [u1 (v1 L2)] ∈ (B List)
11. (map(f;firstn(||v1||;v)) v1 ∈ (B List)) ∧ (map(f;nth_tl(||v1||;v)) L2 ∈ (B List))
⊢ (map(f;firstn(||v1|| 1;[u v])) [u1 v1] ∈ (B List)) ∧ (map(f;nth_tl(||v1|| 1;[u v])) L2 ∈ (B List))
BY
xxx(((RecUnfold `firstn` THEN RecUnfold `nth_tl` THEN Reduce THEN SplitOnConclITE) THENA Auto')
      THEN SplitOnConclITE
      THEN Auto')xxx }

1
1. Type
2. Type
3. A ⟶ B
4. A
5. List
6. ∀[L1,L2:B List].
     (map(f;firstn(||L1||;v)) L1 ∈ (B List)) ∧ (map(f;nth_tl(||L1||;v)) L2 ∈ (B List)) 
     supposing map(f;v) (L1 L2) ∈ (B List)
7. u1 B
8. v1 List
9. L2 List
10. [f map(f;v)] [u1 (v1 L2)] ∈ (B List)
11. map(f;firstn(||v1||;v)) v1 ∈ (B List)
12. map(f;nth_tl(||v1||;v)) L2 ∈ (B List)
13. 0 < ||v1|| 1
14. 0 < ||v1|| 1
⊢ map(f;[u firstn((||v1|| 1) 1;v)]) [u1 v1] ∈ (B List)


Latex:


Latex:

1.  A  :  Type
2.  B  :  Type
3.  f  :  A  {}\mrightarrow{}  B
4.  u  :  A
5.  v  :  A  List
6.  \mforall{}[L1,L2:B  List].
          (map(f;firstn(||L1||;v))  =  L1)  \mwedge{}  (map(f;nth\_tl(||L1||;v))  =  L2)  supposing  map(f;v)  =  (L1  @  L2)
7.  u1  :  B
8.  v1  :  B  List
9.  L2  :  B  List
10.  [f  u  /  map(f;v)]  =  [u1  /  (v1  @  L2)]
11.  (map(f;firstn(||v1||;v))  =  v1)  \mwedge{}  (map(f;nth\_tl(||v1||;v))  =  L2)
\mvdash{}  (map(f;firstn(||v1||  +  1;[u  /  v]))  =  [u1  /  v1])  \mwedge{}  (map(f;nth\_tl(||v1||  +  1;[u  /  v]))  =  L2)


By


Latex:
xxx(((RecUnfold  `firstn`  0  THEN  RecUnfold  `nth\_tl`  0  THEN  Reduce  0  THEN  SplitOnConclITE)
          THENA  Auto'
          )
        THEN  SplitOnConclITE
        THEN  Auto')xxx




Home Index