Step
*
1
of Lemma
combine-list-as-reduce
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. L : A List
6. 0 < ||L||
7. L' : A List
8. L = (L' @ [last(L)]) ∈ (A List)
9. ∀L:A List. (0 < ||L|| 
⇒ (isl(reduce(λx,y. case y of inl(z) => inl f[x;z] | inr(z) => inl x;inr ⋅ L)) ~ tt))
⊢ combine-list(x,y.f[x;y];L) = outl(reduce(λx,y. case y of inl(z) => inl f[x;z] | inr(z) => inl x;inr ⋅ L)) ∈ A
BY
{ TACTIC:StrongHypSubst (-2) 0 }
1
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. L : A List
6. 0 < ||L||
7. L' : A List
8. L = (L' @ [last(L)]) ∈ (A List)
9. ∀L:A List. (0 < ||L|| 
⇒ (isl(reduce(λx,y. case y of inl(z) => inl f[x;z] | inr(z) => inl x;inr ⋅ L)) ~ tt))
⊢ combine-list(x,y.f[x;y];L' @ [last(L)])
= outl(reduce(λx,y. case y of inl(z) => inl f[x;z] | inr(z) => inl x;inr ⋅ L' @ [last(L)]))
∈ A
2
.....wf..... 
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. L : A List
6. 0 < ||L||
7. L' : A List
8. L = (L' @ [last(L)]) ∈ (A List)
9. ∀L:A List. (0 < ||L|| 
⇒ (isl(reduce(λx,y. case y of inl(z) => inl f[x;z] | inr(z) => inl x;inr ⋅ L)) ~ tt))
10. z : A List
11. z = (L' @ [last(L)]) ∈ (A List)
⊢ combine-list(x,y.f[x;y];z) = outl(reduce(λx,y. case y of inl(z) => inl f[x;z] | inr(z) => inl x;inr ⋅ z)) ∈ A ∈ ℙ
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.  L  :  A  List
6.  0  <  ||L||
7.  L'  :  A  List
8.  L  =  (L'  @  [last(L)])
9.  \mforall{}L:A  List
          (0  <  ||L||  {}\mRightarrow{}  (isl(reduce(\mlambda{}x,y.  case  y  of  inl(z)  =>  inl  f[x;z]  |  inr(z)  =>  inl  x;inr  \mcdot{}  ;L))  \msim{}  t\000Ct))
\mvdash{}  combine-list(x,y.f[x;y];L)
=  outl(reduce(\mlambda{}x,y.  case  y  of  inl(z)  =>  inl  f[x;z]  |  inr(z)  =>  inl  x;inr  \mcdot{}  ;L))
By
Latex:
TACTIC:StrongHypSubst  (-2)  0
Home
Index