Step
*
1
3
1
1
2
of Lemma
combine-list-permutation
1. A : Type
2. f : A ⟶ A ⟶ A
3. Assoc(A;λx,y. f[x;y])
4. Comm(A;λx,y. f[x;y])
5. as : A List
6. bs : A List
7. 0 < ||as||
8. permutation(A;as;bs)
9. as@0 : A List
10. a1 : A
11. a2 : A
12. permutation(A;as;[a2; [a1 / as@0]])
⊢ permutation(A;([a2] @ [a1]) @ as@0;[a1; [a2 / as@0]])
BY
{ Subst ⌜[a1; [a2 / as@0]] ~ ([a1] @ [a2]) @ as@0⌝ 0⋅ }
1
.....equality..... 
1. A : Type
2. f : A ⟶ A ⟶ A
3. Assoc(A;λx,y. f[x;y])
4. Comm(A;λx,y. f[x;y])
5. as : A List
6. bs : A List
7. 0 < ||as||
8. permutation(A;as;bs)
9. as@0 : A List
10. a1 : A
11. a2 : A
12. permutation(A;as;[a2; [a1 / as@0]])
⊢ [a1; [a2 / as@0]] ~ ([a1] @ [a2]) @ as@0
2
1. A : Type
2. f : A ⟶ A ⟶ A
3. Assoc(A;λx,y. f[x;y])
4. Comm(A;λx,y. f[x;y])
5. as : A List
6. bs : A List
7. 0 < ||as||
8. permutation(A;as;bs)
9. as@0 : A List
10. a1 : A
11. a2 : A
12. permutation(A;as;[a2; [a1 / as@0]])
⊢ permutation(A;([a2] @ [a1]) @ as@0;([a1] @ [a2]) @ as@0)
Latex:
Latex:
1.  A  :  Type
2.  f  :  A  {}\mrightarrow{}  A  {}\mrightarrow{}  A
3.  Assoc(A;\mlambda{}x,y.  f[x;y])
4.  Comm(A;\mlambda{}x,y.  f[x;y])
5.  as  :  A  List
6.  bs  :  A  List
7.  0  <  ||as||
8.  permutation(A;as;bs)
9.  as@0  :  A  List
10.  a1  :  A
11.  a2  :  A
12.  permutation(A;as;[a2;  [a1  /  as@0]])
\mvdash{}  permutation(A;([a2]  @  [a1])  @  as@0;[a1;  [a2  /  as@0]])
By
Latex:
Subst  \mkleeneopen{}[a1;  [a2  /  as@0]]  \msim{}  ([a1]  @  [a2])  @  as@0\mkleeneclose{}  0\mcdot{}
Home
Index