Step
*
of Lemma
reduce-permutation
∀[A:Type]. ∀[f:A ⟶ A ⟶ A]. ∀[e:A].
  (∀[as,bs:A List].  reduce(f;e;as) = reduce(f;e;bs) ∈ A supposing permutation(A;as;bs)) supposing 
     (Comm(A;λx,y. f[x;y]) and 
     Assoc(A;λx,y. f[x;y]))
BY
{ (Auto
   THEN (InstLemma `reduce-as-combine-list` [⌜A⌝;⌜f⌝]⋅ THENA Auto)
   THEN (RWO "-1" 0 THEN Auto)
   THEN BLemma `combine-list-permutation`
   THEN Auto') }
1
1. A : Type
2. f : A ⟶ A ⟶ A
3. e : A
4. Assoc(A;λx,y. f[x;y])
5. Comm(A;λx,y. f[x;y])
6. as : A List
7. bs : A List
8. permutation(A;as;bs)
9. ∀[L:A List]. ∀[z:A].  (reduce(f;z;L) = combine-list(x,y.f[x;y];[z / L]) ∈ A)
⊢ permutation(A;[e / as];[e / bs])
Latex:
Latex:
\mforall{}[A:Type].  \mforall{}[f:A  {}\mrightarrow{}  A  {}\mrightarrow{}  A].  \mforall{}[e:A].
    (\mforall{}[as,bs:A  List].    reduce(f;e;as)  =  reduce(f;e;bs)  supposing  permutation(A;as;bs))  supposing 
          (Comm(A;\mlambda{}x,y.  f[x;y])  and 
          Assoc(A;\mlambda{}x,y.  f[x;y]))
By
Latex:
(Auto
  THEN  (InstLemma  `reduce-as-combine-list`  [\mkleeneopen{}A\mkleeneclose{};\mkleeneopen{}f\mkleeneclose{}]\mcdot{}  THENA  Auto)
  THEN  (RWO  "-1"  0  THEN  Auto)
  THEN  BLemma  `combine-list-permutation`
  THEN  Auto')
Home
Index