reserve a,b,c,d,e,f for Real,
        k,m for Nat,
        D for non empty set,
        V for non trivial RealLinearSpace,
        u,v,w for Element of V,
        p,q,r for Element of ProjectiveSpace(V);
reserve o,p,q,r,s,t for Point of TOP-REAL 3,
        M for Matrix of 3,F_Real;
reserve pf for FinSequence of D;
reserve PQR for Matrix of 3,F_Real;
reserve R for Ring;

theorem
  for N being invertible Matrix of 3,F_Real
  for p,q,r being Point of ProjectiveSpace TOP-REAL 3 holds
  p,q,r are_collinear iff
  homography(N).p, homography(N).q, homography(N).r are_collinear
  proof
    let N be invertible Matrix of 3,F_Real;
    let p,q,r be Point of ProjectiveSpace TOP-REAL 3;
    thus p,q,r are_collinear implies
    homography(N).p, homography(N).q, homography(N).r are_collinear
    proof
      assume
A1:   p,q,r are_collinear;
      consider up,vp being Element of TOP-REAL 3,
               ufp being FinSequence of F_Real,
               pp being FinSequence of 1-tuples_on REAL
      such that
A2:   p = Dir up and
A3:   up is not zero and
A4:   up = ufp and
A5:   pp = N * ufp and
A6:   vp = M2F pp and
      vp is not zero and
A7:   homography(N).p = Dir vp by DEF4;
      consider uq,vq being Element of TOP-REAL 3,
               ufq being FinSequence of F_Real,
      pq being FinSequence of 1-tuples_on REAL such that
A8:   q = Dir uq and
A9:   uq is not zero and
A10:  uq = ufq and
A11:  pq = N * ufq and
A12:  vq = M2F pq and
      vq is not zero and
A13:  homography(N).q = Dir vq by DEF4;
      consider ur,vr being Element of TOP-REAL 3,
               ufr being FinSequence of F_Real,
        pr being FinSequence of 1-tuples_on REAL such that
A14:  r = Dir ur and
A15:  ur is not zero and
A16:  ur = ufr and
A17:  pr = N * ufr and
A18:  vr = M2F pr and
      vr is not zero and
A19:  homography(N).r = Dir vr by DEF4;
      consider u,v,w be Element of TOP-REAL 3 such that
A20:  p = Dir u and
A21:  q = Dir v and
A22:  r = Dir w and
A23:  u is not zero and
A24:  v is not zero and
A25:  w is not zero and
A26:  u,v,w are_LinDep by A1,ANPROJ_2:23;
A27:  |{u,v,w}| = 0 by A26,Th37;
      are_Prop up,u by A20,A2,A23,A3,ANPROJ_1:22;
      then consider ap be Real such that
      ap <> 0 and
A28:  up = ap * u by ANPROJ_1:1;
      are_Prop uq,v by A8,A21,A24,A9,ANPROJ_1:22;
      then consider aq be Real such that
      aq <> 0 and
A29:  uq = aq * v by ANPROJ_1:1;
      are_Prop ur, w by A22,A14,A25,A15,ANPROJ_1:22;
      then consider ar be Real such that
      ar <> 0 and
A30:  ur = ar * w by ANPROJ_1:1;
A31:  |{ up,uq,ur }| = ap * |{u,aq * v,ar * w}| by Th26,A28,A29,A30
                    .= ap * (aq *|{u,v,ar * w}|) by Th27
                    .= ap * (aq * (ar * |{u,v,w}|)) by Th28
                    .= 0 by A27;
      reconsider pf = up,qf = uq,rf = ur as FinSequence of F_Real by EUCLID:24;
A32:  N * pf = N * (<*pf*>@) & N * qf = N * (<*qf*>@) &
        N * rf = N * (<*rf*>@) by LAPLACE:def 9;
A33:  len pf = 3 & len qf = 3 & len rf = 3 by FINSEQ_3:153;
      N * (<*pf*>@) is Matrix of 3,1,F_Real &
        N * (<*qf*>@) is Matrix of 3,1,F_Real &
        N * (<*rf*>@) is Matrix of 3,1,F_Real by FINSEQ_3:153,Th74;
      then reconsider pt = N * pf, qt = N * qf,
        rt = N * rf as FinSequence of 1-tuples_on REAL by A32,Th79;
A34:  pt = N * (<*pf*>@) & qt = N * (<*qf*>@) & rt = N * (<*rf*>@)
        by LAPLACE:def 9;
A35:  width N = 3 by MATRIX_0:23;
      width <*pf*> = 3 by A33,Th61; then
A36:  len (<*pf*>@) = width <*pf*> by MATRIX_0:29
                    .= len pf by MATRIX_0:23
                    .= 3 by FINSEQ_3:153;
      width <*qf*> = 3 by A33,Th61; then
A37:  len (<*qf*>@) = width <*qf*> by MATRIX_0:29
                   .= len qf by MATRIX_0:23
                   .= 3 by FINSEQ_3:153;
      width <*rf*> = 3 by A33,Th61;
      then len (<*rf*>@) = width <*rf*> by MATRIX_0:29
                        .= len rf by MATRIX_0:23
                        .= 3 by FINSEQ_3:153;
      then len pt = len N & len qt = len N & len rt = len N
        by A35,A37,A36,A34,MATRIX_3:def 4;
      then reconsider pm = M2F pt,qm = M2F qt,
        rm = M2F rt as Element of TOP-REAL 3 by MATRIX_0:23,Th66;
A38:  |{ pm,qm,rm }| = 0 by A31,Th78;
      pm is not zero & qm is not zero & rm is not zero
        by A3,A9,A15,Th82;
      hence thesis by A38,Th37,ANPROJ_2:23,A6,A12,A18,A7,A13,A19,
        A4,A5,A10,A11,A16,A17;
    end;
    thus homography(N).p, homography(N).q, homography(N).r are_collinear
    implies p,q,r are_collinear
    proof
      assume
A39:  homography(N).p, homography(N).q, homography(N).r are_collinear;
      consider up,vp being Element of TOP-REAL 3,
               ufp being FinSequence of F_Real,
               pp being FinSequence of 1-tuples_on REAL
      such that
A40:  p = Dir up and
A41:  up is not zero and
A42:  up = ufp and
A43:  pp = N * ufp and
A44:  vp = M2F pp and
A45:  vp is not zero and
A46:  homography(N).p = Dir vp by DEF4;
      consider uq,vq being Element of TOP-REAL 3,
               ufq being FinSequence of F_Real,
      pq being FinSequence of 1-tuples_on REAL such that
A47:  q = Dir uq and
A48:  uq is not zero and
A49:  uq = ufq and
A50:  pq = N * ufq and
A51:  vq = M2F pq and
A52:  vq is not zero and
A53:  homography(N).q = Dir vq by DEF4;
      consider ur,vr being Element of TOP-REAL 3,
               ufr being FinSequence of F_Real,
      pr being FinSequence of 1-tuples_on REAL such that
A54:  r = Dir ur and
A55:  ur is not zero and
A56:  ur = ufr and
A57:  pr = N * ufr and
A58:  vr = M2F pr and
A59:  vr is not zero and
A60:  homography(N).r = Dir vr by DEF4;
      consider u,v,w being Point of TOP-REAL 3 such that
A61:  homography(N).p = Dir(u) and
A62:  homography(N).q = Dir(v) and
A63:  homography(N).r = Dir(w) and
A64:  u is not zero & v is not zero & w is not zero and
A65:  (u = v or u = w or v = w or {u,v,w} is linearly-dependent) by A39,Th9;
      u,v,w are_LinDep by A65,Th8;
      then |{ u,v,w }| = 0 by Th37;
      then |{ u,v,vr }| = 0 by A63,A60,A64,Th50,A59;
      then |{ u,vq,vr }| = 0 by A62,A53,A64,Th49,A52;
      then |{ vp,vq,vr }| = 0 by  A61,A46,A64,Th48,A45;
      then |{ up,uq,ur }| = 0 by A42,A43,A44,A49,A50,A51,A56,A57,A58,Th78;
      then (up = uq or up = ur or uq = ur or {up,uq,ur} is linearly-dependent)
        by Th37,Th8;
      hence thesis by Th9,A40,A41,A47,A48,A54,A55;
    end;
  end;
