reserve a, b, c, d, x, y, z for Complex;
reserve r for Real;

theorem Th67:
  a <> 0 & b <> 0 implies cos angle(a,b) = Re (a.|.b)/(|.a.|*|.b.|
  ) & sin angle(a,b) = - Im (a.|.b)/(|.a.|*|.b.|)
proof
  assume that
A1: a <> 0 and
A2: b <> 0;
A3: |.a.| <> 0 & |.b.| <> 0 by A1,A2,COMPLEX1:45;
  set ra = Rotate(a,-Arg a), rb = Rotate(b,-Arg a), r = -Arg a;
  set mabi = (|.a.|*|.b.|)";
A4: |.a.| >= 0 & |.b.| >= 0 by COMPLEX1:46;
  angle(a,b) = angle(ra,rb) by A1,A2,Th63;
  then
A5: angle(a,b) = angle(|.a.|*mabi,rb*mabi) by A3,A4,Th61,SIN_COS:31
    .= Arg(rb*mabi) by A4,Th59;
A6: a = |.a.|*cos Arg a+(|.a.|*sin Arg a)*<i> by COMPTRIG:62;
  then Re a = |.a.|*cos Arg a by COMPLEX1:12;
  then
A7: cos Arg a = (Re a)/|.a.| by A1,COMPLEX1:45,XCMPLX_1:89;
  Im a = |.a.|*sin Arg a by A6,COMPLEX1:12;
  then
A8: sin Arg a = (Im a)/|.a.| by A1,COMPLEX1:45,XCMPLX_1:89;
A9: a.|.b = (Re a)*(Re b)+(Im a)*(Im b)+(-((Re a)*(Im b))+(Im a)*(Re b))*
  <i> by Th27;
  then
A10: Re (a.|.b) = (Re a)*(Re b)+(Im a)*(Im b) by COMPLEX1:12;
  Re rb = (Re b)*(cos r)-(Im b)*(sin r) by Th54;
  then
A11: Re rb = (Re b)*(cos r)-(Im b)*(-sin Arg a) by SIN_COS:31
    .= (Re b)*((Re a)/|.a.|)+(Im b)*((Im a)/|.a.|) by A7,A8,SIN_COS:31
    .= Re (a.|.b) / |.a.| by A10;
A12: (Im rb)^2 >= 0 by XREAL_1:63;
  Im rb = (Re b)*(sin r)+(Im b)*(cos r) by Th54;
  then
A13: Im rb = (Re b)*(-sin Arg a)+(Im b)*(cos r) by SIN_COS:31
    .= (-(Re b))*((Im a)/|.a.|)+(Im b)*((Re a)/|.a.|) by A7,A8,SIN_COS:31
    .= -(-((-(Re b))*(Im a)+(Im b)*(Re a)))/|.a.|
    .= - Im (a.|.b)/|.a.| by A9,COMPLEX1:12;
  set IT = rb*mabi;
  set mab = (|.a.|*|.b.|);
A14: mabi^2 >= 0 & (Re rb)^2 >= 0 by XREAL_1:63;
  mabi = mabi+0*<i>;
  then
A15: Re mabi = mabi & Im mabi = 0 by COMPLEX1:12;
  then
A16: Re IT = Re rb * mabi - (Im rb)*0 by COMPLEX1:9
    .= Re rb * mabi;
A17: Im IT = Re rb * 0 + Im rb * mabi by A15,COMPLEX1:9
    .= Im rb * mabi;
  then
A18: |.IT.| = sqrt((Re rb * mabi)^2+(Im rb * mabi)^2) by A16,COMPLEX1:def 12
    .= sqrt(mabi^2*((Re rb)^2+(Im rb)^2))
    .= sqrt(mabi^2)*sqrt((Re rb)^2+(Im rb)^2) by A14,A12,SQUARE_1:29
    .= mabi*sqrt((Re rb)^2+(Im rb)^2) by A4,SQUARE_1:22
    .= mabi*|.rb.| by COMPLEX1:def 12
    .= mabi*|.b.| by Th51;
A19: IT = |.IT.|*cos Arg IT+(|.IT.|*sin Arg IT)*<i> by COMPTRIG:62;
  then |.IT.|*cos Arg IT = Re rb * mabi by A16,COMPLEX1:12;
  hence cos angle(a,b) = Re rb * mabi/|.IT.| by A3,A5,A18,XCMPLX_1:89
    .= Re rb *(mabi/|.IT.|)
    .= Re (a.|.b) / |.a.|*(mabi/mabi/|.b.|) by A11,A18,XCMPLX_1:78
    .= Re (a.|.b) / |.a.|*(1/|.b.|) by A3,XCMPLX_1:60
    .= Re (a.|.b)*1 / (|.a.|*|.b.|) by XCMPLX_1:76
    .= Re (a.|.b)/mab;
  |.IT.|*sin Arg IT = Im rb * mabi by A19,A17,COMPLEX1:12;
  hence sin angle(a,b) = Im rb * mabi/|.IT.| by A3,A5,A18,XCMPLX_1:89
    .= Im rb * (mabi/|.IT.|)
    .= (- Im (a.|.b) / |.a.|)*(mabi/mabi/|.b.|) by A13,A18,XCMPLX_1:78
    .= ((- Im (a.|.b)) / |.a.|)*(1/|.b.|) by A3,XCMPLX_1:60
    .= (- Im (a.|.b))*1/(|.a.|*|.b.|) by XCMPLX_1:76
    .= - Im (a.|.b)/mab;
end;
