reserve x,y,y1,y2 for set,
  D for non empty set,
  d,d1,d2,d3 for Element of D,
  F,G,H,H1,H2 for FinSequence of D,
  f,f1,f2 for sequence of D,
  g for BinOp of D,
  k,n,i,l for Nat,
  P for Permutation of dom F;

theorem
  g is associative & (g is having_a_unity or k <> 0 & l <> 0) implies g
  "**" (k * l |-> d) = g "**" (l |-> (g "**" (k |-> d)))
proof
  defpred P[Nat] means for g,k,d st g is associative & (g is
  having_a_unity or k <> 0 & $1 <> 0) holds g "**" (k * $1 |-> d) = g "**" ($1
  |-> (g "**" (k |-> d)));
A1: for l st P[l] holds P[l + 1]
  proof
    let l;
    assume
A2: P[l];
    let g,k,d;
    assume that
A3: g is associative and
A4: g is having_a_unity or k <> 0 & l + 1 <> 0;
    now
      per cases;
      suppose
        l = 0;
        hence thesis by Th16;
      end;
      suppose
A5:     l <> 0;
        then
A6:     k <> 0 implies k * l <> 0 by XCMPLX_1:6;
        g "**" (k * (l + 1) |-> d) = g "**" ((k * l + k * 1) |-> d)
          .= g.(g "**" (k * l |-> d),g "**" (k |-> d)) by A3,A4,A6,Th18
          .= g.(g "**" (l |-> (g "**" (k |-> d))),g "**" (k |-> d)) by A2,A3,A4
,A5
          .= g.(g "**" (l |-> (g "**" (k |-> d))),g "**" (1 |-> (g "**" (k
        |-> d)))) by Th16;
        hence thesis by A3,A5,Th18;
      end;
    end;
    hence thesis;
  end;
A7: P[0];
  for l holds P[l] from NAT_1:sch 2(A7,A1);
  hence thesis;
end;
