:: {C}ross-ratio in Real Vector Space
:: by Roland Coghetto
::
:: Received February 27, 2019
:: Copyright (c) 2019 Association of Mizar Users
:: (Stowarzyszenie Uzytkownikow Mizara, Bialystok, Poland).
:: This code can be distributed under the GNU General Public Licence
:: version 3.0 or later, or the Creative Commons Attribution-ShareAlike
:: License version 3.0 or later, subject to the binding interpretation
:: detailed in file COPYING.interpretation.
:: See COPYING.GPL and COPYING.CC-BY-SA for the full text of these
:: licenses, or see http://www.gnu.org/licenses/gpl.html and
:: http://creativecommons.org/licenses/by-sa/3.0/.
environ
vocabularies NAT_1, FINSEQ_2, REAL_1, XCMPLX_0, PENCIL_1, ALGSTR_0, ARYTM_1,
ARYTM_3, CARD_1, EUCLID, FUNCT_1, INCSP_1, NUMBERS, PRE_TOPC, RELAT_1,
STRUCT_0, SUBSET_1, SUPINF_2, VECTSP_1, XBOOLE_0, TARSKI, FINSEQ_1,
RLTOPSP1, ANPROJ10, FUNCT_5, RLVECT_1, FUNCOP_1, FUNCT_2, FUNCSDOM,
BINOP_2, PCOMPS_1, ZFMISC_1;
notations ORDINAL1, XCMPLX_0, PRE_TOPC, TARSKI, XBOOLE_0, RLVECT_1, XREAL_0,
SUBSET_1, NUMBERS, FUNCT_1, FUNCT_2, FINSEQ_1, STRUCT_0, ALGSTR_0,
VECTSP_1, FINSEQ_2, BINOP_1, FUNCOP_1, FINSEQ_4, RVSUM_1, FUNCSDOM,
BINOP_2, PCOMPS_1, EUCLID, SRINGS_5, RLTOPSP1, EUCLID_4, ZFMISC_1;
constructors FINSEQ_4, MONOID_0, BINOP_2, FUNCSDOM, PCOMPS_1, SRINGS_5,
EUCLID_4;
registrations MEMBERED, ORDINAL1, STRUCT_0, XREAL_0, MONOID_0, EUCLID,
VALUED_0, XCMPLX_0, NUMBERS, RLTOPSP1, RLVECT_1, RELAT_1, FINSEQ_4;
requirements REAL, SUBSET, NUMERALS, ARITHM, BOOLE;
begin :: Preliminaries
registration
let a,b,c,d be object;
reduce <*a,b,c,d*>.1 to a;
reduce <*a,b,c,d*>.2 to b;
reduce <*a,b,c,d*>.3 to c;
reduce <*a,b,c,d*>.4 to d;
end;
theorem :: ANPROJ10:1
for a,b,c,d,a9,b9,c9,d9 being object st
<* a, b, c, d *> = <* a9, b9, c9, d9 *> holds
a = a9 & b = b9 & c = c9 & d = d9;
definition
let r be Real;
attr r is unit means
:: ANPROJ10:def 1
r = 1;
end;
registration
cluster non unit for non zero Real;
end;
definition
let r be non unit non zero Real;
func op1(r) -> non unit non zero Real equals
:: ANPROJ10:def 2
1 / r;
involutiveness;
end;
definition
let r being non unit non zero Real;
func op2(r) -> non unit non zero Real equals
:: ANPROJ10:def 3
1 - r;
involutiveness;
end;
reserve a,b,r for non unit non zero Real;
theorem :: ANPROJ10:2
op2(op1(r)) = (r - 1) / r &
op1(op2(r)) = 1 / (1 - r) &
op1(op2(op1(r))) = r / (r - 1) &
op2(op1(op2(r))) = r / (r - 1);
theorem :: ANPROJ10:3
op2(op1(op2(op1(r)))) = op1(op2(r)) &
op1(op2(op1(op2(r)))) = op2(op1(r));
theorem :: ANPROJ10:4
op1(a) / op1(b) = b / a;
reserve X for non empty set,
x for Tuple of 4,X;
theorem :: ANPROJ10:5
4-tuples_on X = the set of all <* d1, d2, d3, d4 *> where
d1,d2,d3,d4 is Element of X;
theorem :: ANPROJ10:6
for a,b,c,d being object st (a = x.1 or a = x.2 or a = x.3 or a = x.4) &
(b = x.1 or b = x.2 or b = x.3 or b = x.4) &
(c = x.1 or c = x.2 or c = x.3 or c = x.4) &
(d = x.1 or d = x.2 or d = x.3 or d = x.4) holds
<* a,b,c,d *> is Tuple of 4,X;
definition
let X be non empty set;
let x be Tuple of 4,X;
func pi_1342(x) -> Tuple of 4,X equals
:: ANPROJ10:def 4
<* x.1,x.3,x.4,x.2 *>;
func pi_1423(x) -> Tuple of 4,X equals
:: ANPROJ10:def 5
<* x.1,x.4,x.2,x.3 *>;
func pi_2143(x) -> Tuple of 4,X equals
:: ANPROJ10:def 6
<* x.2,x.1,x.4,x.3 *>;
func pi_2314(x) -> Tuple of 4,X equals
:: ANPROJ10:def 7
<* x.2,x.3,x.1,x.4 *>;
func pi_2341(x) -> Tuple of 4,X equals
:: ANPROJ10:def 8
<* x.2,x.3,x.4,x.1 *>;
func pi_2413(x) -> Tuple of 4,X equals
:: ANPROJ10:def 9
<* x.2,x.4,x.1,x.3 *>;
func pi_2431(x) -> Tuple of 4,X equals
:: ANPROJ10:def 10
<* x.2,x.4,x.3,x.1 *>;
func pi_3124(x) -> Tuple of 4,X equals
:: ANPROJ10:def 11
<* x.3,x.1,x.2,x.4 *>;
func pi_3142(x) -> Tuple of 4,X equals
:: ANPROJ10:def 12
<* x.3,x.1,x.4,x.2 *>;
func pi_3241(x) -> Tuple of 4,X equals
:: ANPROJ10:def 13
<* x.3,x.2,x.4,x.1 *>;
func pi_3412(x) -> Tuple of 4,X equals
:: ANPROJ10:def 14
<* x.3,x.4,x.1,x.2 *>;
func pi_3421(x) -> Tuple of 4,X equals
:: ANPROJ10:def 15
<* x.3,x.4,x.2,x.1 *>;
func pi_4123(x) -> Tuple of 4,X equals
:: ANPROJ10:def 16
<* x.4,x.1,x.2,x.3 *>;
func pi_4132(x) -> Tuple of 4,X equals
:: ANPROJ10:def 17
<* x.4,x.1,x.3,x.2 *>;
func pi_4213(x) -> Tuple of 4,X equals
:: ANPROJ10:def 18
<* x.4,x.2,x.1,x.3 *>;
func pi_4312(x) -> Tuple of 4,X equals
:: ANPROJ10:def 19
<* x.4,x.3,x.1,x.2 *>;
func pi_4321(x) -> Tuple of 4,X equals
:: ANPROJ10:def 20
<* x.4,x.3,x.2,x.1 *>;
end;
definition
let X be non empty set;
let x be Tuple of 4,X;
func pi_id(x) -> Tuple of 4,X equals
:: ANPROJ10:def 21
<* x.1,x.2,x.3,x.4 *>;
func pi_12(x) -> Tuple of 4,X equals
:: ANPROJ10:def 22
<* x.2,x.1,x.3,x.4 *>;
involutiveness;
func pi_13(x) -> Tuple of 4,X equals
:: ANPROJ10:def 23
<* x.3,x.2,x.1,x.4 *>;
involutiveness;
func pi_14(x) -> Tuple of 4,X equals
:: ANPROJ10:def 24
<* x.4,x.2,x.3,x.1 *>;
involutiveness;
func pi_23(x) -> Tuple of 4,X equals
:: ANPROJ10:def 25
<* x.1,x.3,x.2,x.4 *>;
involutiveness;
func pi_24(x) -> Tuple of 4,X equals
:: ANPROJ10:def 26
<* x.1,x.4,x.3,x.2 *>;
involutiveness;
func pi_34(x) -> Tuple of 4,X equals
:: ANPROJ10:def 27
<* x.1,x.2,x.4,x.3 *>;
involutiveness;
end;
registration
let X be non empty set;
let x be Tuple of 4,X;
reduce pi_id(x) to x;
end;
notation
let X be non empty set;
let x be Tuple of 4,X;
synonym pi_1234(x) for pi_id(x);
synonym pi_2134(x) for pi_12(x);
synonym pi_3214(x) for pi_13(x);
synonym pi_4231(x) for pi_14(x);
synonym pi_1324(x) for pi_23(x);
synonym pi_1432(x) for pi_24(x);
synonym pi_1243(x) for pi_34(x);
end;
theorem :: ANPROJ10:7
pi_12(pi_13(x)) = pi_13(pi_23(x)) &
pi_12(pi_14(x)) = pi_14(pi_24(x)) &
pi_12(pi_23(x)) = pi_13(pi_12(x)) &
pi_12(pi_24(x)) = pi_14(pi_12(x)) &
pi_12(pi_34(x)) = pi_34(pi_12(x)) &
pi_13(pi_12(x)) = pi_23(pi_13(x)) &
pi_13(pi_14(x)) = pi_34(pi_13(x)) &
pi_13(pi_23(x)) = pi_12(pi_13(x)) &
pi_13(pi_24(x)) = pi_13(pi_24(x)) &
pi_13(pi_34(x)) = pi_14(pi_13(x)) &
pi_23(pi_12(x)) = pi_13(pi_23(x)) &
pi_23(pi_13(x)) = pi_12(pi_23(x)) &
pi_23(pi_14(x)) = pi_14(pi_23(x)) &
pi_23(pi_24(x)) = pi_34(pi_23(x)) &
pi_23(pi_34(x)) = pi_24(pi_23(x)) &
pi_24(pi_12(x)) = pi_14(pi_24(x)) &
pi_24(pi_13(x)) = pi_13(pi_24(x)) &
pi_24(pi_14(x)) = pi_12(pi_24(x)) &
pi_24(pi_23(x)) = pi_34(pi_24(x)) &
pi_24(pi_34(x)) = pi_23(pi_24(x)) &
pi_34(pi_12(x)) = pi_12(pi_34(x)) &
pi_34(pi_13(x)) = pi_14(pi_34(x)) &
pi_34(pi_14(x)) = pi_13(pi_34(x)) &
pi_34(pi_23(x)) = pi_24(pi_34(x)) &
pi_34(pi_24(x)) = pi_23(pi_34(x));
theorem :: ANPROJ10:8
pi_1342(x) = pi_34(pi_23(x)) &
pi_1423(x) = pi_34(pi_24(x)) &
pi_2143(x) = pi_12(pi_34(x)) &
pi_2314(x) = pi_23(pi_12(x)) &
pi_2341(x) = pi_34(pi_23(pi_12(x))) &
pi_2413(x) = pi_34(pi_24(pi_12(x))) &
pi_2431(x) = pi_24(pi_12(x)) &
pi_3124(x) = pi_23(pi_13(x)) &
pi_3142(x) = pi_24(pi_34(pi_13(x))) &
pi_3241(x) = pi_34(pi_13(x)) &
pi_3412(x) = pi_24(pi_13(x)) &
pi_3421(x) = pi_24(pi_23(pi_13(x))) &
pi_4123(x) = pi_23(pi_34(pi_14(x))) &
pi_4132(x) = pi_24(pi_14(x)) &
pi_4213(x) = pi_34(pi_14(x)) &
pi_4312(x) = pi_23(pi_24(pi_14(x))) &
pi_4321(x) = pi_23(pi_14(x));
theorem :: ANPROJ10:9
pi_13(pi_23(pi_13(x))) = pi_12(x) &
pi_12(pi_34(pi_23(pi_13(x)))) = pi_34(pi_23(x)) &
pi_23(pi_24(pi_14(pi_23(pi_13(x))))) = pi_14(x);
theorem :: ANPROJ10:10
pi_23(pi_14(pi_34(x))) = pi_24(pi_23(pi_13(x))) &
pi_34(pi_24(pi_12(x))) = pi_24(pi_13(pi_23(x))) &
pi_24(pi_34(pi_13(x))) = pi_12(pi_34(pi_23(x)));
begin :: Affine-Ratio
reserve V for RealLinearSpace,
A,B,C,P,Q,R,S for Element of V;
theorem :: ANPROJ10:11
P,Q,Q are_collinear;
definition
let V be RealLinearSpace;
let A,B,C be Element of V;
assume that
A <> C and
A,B,C are_collinear;
func affine-ratio(A,B,C) -> Real means
:: ANPROJ10:def 28
(B - A) = it * (C - A);
end;
theorem :: ANPROJ10:12
A <> C & A,B,C are_collinear implies
A - B = affine-ratio(A,B,C) * (A - C);
theorem :: ANPROJ10:13
A <> C & A,B,C are_collinear implies
(affine-ratio(A,B,C) = 0 iff A = B);
theorem :: ANPROJ10:14
A <> C & A,B,C are_collinear implies
(affine-ratio(A,B,C) = 1 iff B = C);
theorem :: ANPROJ10:15
for a,b being Real st P <> Q & a * (P - Q) = b * (P - Q) holds a = b;
theorem :: ANPROJ10:16
P,Q,R are_collinear & P <> R & P <> Q implies
affine-ratio(P,R,Q) = 1 / affine-ratio(P,Q,R);
theorem :: ANPROJ10:17
P,Q,R are_collinear & P <> R & Q <> R & P <> Q implies
affine-ratio(Q,P,R) =
affine-ratio(P,Q,R) / (affine-ratio(P,Q,R) - 1);
theorem :: ANPROJ10:18
P,Q,R are_collinear & P <> R implies
affine-ratio(R,Q,P) = 1 - affine-ratio(P,Q,R);
theorem :: ANPROJ10:19
P,Q,R are_collinear & P <> R & P <> Q implies
affine-ratio(Q,R,P) =
(affine-ratio(P,Q,R) - 1) / affine-ratio(P,Q,R);
theorem :: ANPROJ10:20
P,Q,R are_collinear & P <> R & Q <> R implies
affine-ratio(R,P,Q) = 1 / (1 - affine-ratio(P,Q,R));
theorem :: ANPROJ10:21
for r being Real st P,Q,R are_collinear &
P <> R & Q <> R & P <> Q &
r = affine-ratio(P,Q,R) holds
affine-ratio(P,R,Q) = 1 / r &
affine-ratio(Q,P,R) = r / (r - 1) &
affine-ratio(Q,R,P) = (r - 1) / r &
affine-ratio(R,P,Q) = 1 / (1 - r) &
affine-ratio(R,Q,P) = 1 - r;
theorem :: ANPROJ10:22
for a being non zero Real st P,Q,R are_collinear & P <> R holds
affine-ratio(P,Q,R) = affine-ratio(a * P,a * Q,a * R);
theorem :: ANPROJ10:23
for x,y being Element of REAL 1
for p,q being Tuple of 1,REAL st
p = x & q = y holds x + y = p + q;
theorem :: ANPROJ10:24
for x,y being Element of TOP-REAL 1
for p,q being Tuple of 1,REAL st
p = x & q = y holds x + y = p + q;
theorem :: ANPROJ10:25
for x,y being Element of TOP-REAL 1
for p,q being Tuple of 1,REAL st
p = x & q = y holds x - y = p - q;
theorem :: ANPROJ10:26
for x being Element of TOP-REAL 1
for p being Tuple of 1,REAL st
p = x holds - x = - p;
theorem :: ANPROJ10:27
for T being RealLinearSpace
for x,y being Element of T
for p,q being Tuple of 1,REAL st
T = TOP-REAL 1 & p = x & q = y
holds x + y = p + q;
theorem :: ANPROJ10:28
for p being Tuple of 1,REAL holds - p is Tuple of 1,REAL;
theorem :: ANPROJ10:29
for T being RealLinearSpace
for x being Element of T
for p being Tuple of 1,REAL st
T = TOP-REAL 1 & p = x
holds - p = - x;
theorem :: ANPROJ10:30
for T being RealLinearSpace
for x being Element of T
for p being Element of TOP-REAL 1 st
T = TOP-REAL 1 & p = x
holds - p = - x;
theorem :: ANPROJ10:31
for T being RealLinearSpace
for x,y being Element of T
for p,q being Tuple of 1,REAL st
T = TOP-REAL 1 & p = x & q = y
holds x - y = p - q;
theorem :: ANPROJ10:32
for T being RealLinearSpace
for x,y being Element of T
for p,q being Element of TOP-REAL 1 st
T = TOP-REAL 1 & p = x & q = y
holds x + y = p + q;
theorem :: ANPROJ10:33
for D being set
for d being Element of D holds Seg 1 --> d = <* d *>;
theorem :: ANPROJ10:34
for a,r being Real holds
multreal.:( Seg 1 --> a, <* r *> ) = <* a * r *>;
theorem :: ANPROJ10:35
for a being Real for p being Tuple of 1,REAL holds
multreal.:(dom p --> a,p) = a * p;
theorem :: ANPROJ10:36
for a being Real for p being Tuple of 1,REAL holds
multreal.:(dom p --> a,p) = a * p;
theorem :: ANPROJ10:37
for T being RealLinearSpace for x,y being Element of T
for a being Real for p,q being Tuple of 1,REAL st
T = TOP-REAL 1 & p = x & q = y & x = a * y holds p = a * q;
theorem :: ANPROJ10:38
for T being RealLinearSpace for x,y being Element of T
for a being Real for p,q being Element of TOP-REAL 1 st
T = TOP-REAL 1 & p = x & q = y holds x = a * y implies p = a * q;
theorem :: ANPROJ10:39
for T being RealLinearSpace for x,y being Element of T
for p,q being Element of TOP-REAL 1 st T = TOP-REAL 1 & p = x & q = y
holds x - y = p - q;
theorem :: ANPROJ10:40
for p,q being Tuple of 1,REAL for r being Real st
p = r * q & p <> <* 0 *> holds ex a,b being Real st
p = <* a *> & q =<* b *> & r = a / b;
theorem :: ANPROJ10:41
for x,y,z being Element of TOP-REAL 1 holds x,y,z are_collinear;
theorem :: ANPROJ10:42
for T being RealLinearSpace st T = TOP-REAL 1
for x,y,z being Element of T holds x,y,z are_collinear;
theorem :: ANPROJ10:43
for T being RealLinearSpace st T = TOP-REAL 1
for x,y,z being Element of T st z <> x & y <> x holds
ex a,b,c being Real st x = <* a *> & y = <* b *> & z = <* c *> &
affine-ratio(x,y,z) = (b - a) / (c - a);
theorem :: ANPROJ10:44
for x being Element of TOP-REAL 1 for a,r being Real st
x = <* a *> holds r * x = <* (r * a) *>;
theorem :: ANPROJ10:45
for x,y being Element of TOP-REAL 1 for a,b,r being Real st
x = <* a *> & y = <* b *> holds x = r * y iff a = r * b;
theorem :: ANPROJ10:46
for x,y being Element of TOP-REAL 1 for a,b being Real st
x = <* a *> & y = <* b *> holds x - y = <* a - b *>;
theorem :: ANPROJ10:47
for V being RealLinearSpace for x,y being Element of F_Real
for x9,y9 being Element of V st V = F_Real & x = x9 & y = y9 holds
x + y = x9 + y9;
theorem :: ANPROJ10:48
for V being RealLinearSpace for P,Q,R being Element of V st
P,Q,R are_collinear & P <> R & Q <> R & P <> Q holds
affine-ratio(P,Q,R) <> 0 & affine-ratio(P,Q,R) <> 1;
theorem :: ANPROJ10:49
for V being RealLinearSpace for P,Q,R being Element of V st
P,Q,R are_collinear & P <> R & Q <> R & P <> Q holds
ex r being non unit non zero Real st
r = affine-ratio(P,Q,R) &
affine-ratio(P,R,Q) = op1(r) &
affine-ratio(Q,P,R) = op1(op2(op1(r))) &
affine-ratio(Q,R,P) = op2(op1(r)) &
affine-ratio(R,P,Q) = op1(op2(r)) &
affine-ratio(R,Q,P) = op2(r);
begin :: Cross-Ratio
theorem :: ANPROJ10:50
for X being non empty set
for x being Tuple of 4,X
for P,Q,R,S being Element of X st x = <* P,Q,R,S *> holds
pi_1234(x) = <* P, Q, R, S *> &
pi_1243(x) = <* P, Q, S, R *> &
pi_1324(x) = <* P, R, Q, S *> &
pi_1342(x) = <* P, R, S, Q *> &
pi_1423(x) = <* P, S, Q, R *> &
pi_1432(x) = <* P, S, R, Q *> &
pi_2134(x) = <* Q, P, R, S *> &
pi_2143(x) = <* Q, P, S, R *> &
pi_2314(x) = <* Q, R, P, S *> &
pi_2341(x) = <* Q, R, S, P *> &
pi_2413(x) = <* Q, S, P, R *> &
pi_2431(x) = <* Q, S, R, P *> &
pi_3124(x) = <* R, P, Q, S *> &
pi_3142(x) = <* R, P, S, Q *> &
pi_3214(x) = <* R, Q, P, S *> &
pi_3241(x) = <* R, Q, S, P *> &
pi_3412(x) = <* R, S, P, Q *> &
pi_3421(x) = <* R, S, Q ,P *> &
pi_4123(x) = <* S, P, Q, R *> &
pi_4132(x) = <* S, P, R, Q *> &
pi_4213(x) = <* S, Q, P, R *> &
pi_4231(x) = <* S, Q, R, P *> &
pi_4312(x) = <* S, R, P, Q *> &
pi_4321(x) = <* S, R, Q, P *>;
theorem :: ANPROJ10:51
for X being non empty set
for x being Tuple of 4,X holds
pi_1324(pi_1243(x)) = pi_1423(x) & pi_2143(pi_1243(x)) = pi_2134(x) &
pi_3412(pi_1243(x)) = pi_4312(x) & pi_4321(pi_1243(x)) = pi_3421(x) &
pi_3412(pi_1324(x)) = pi_2413(x) & pi_2143(pi_1324(x)) = pi_3142(x) &
pi_4321(pi_1324(x)) = pi_4231(x) & pi_3412(pi_1423(x)) = pi_2314(x) &
pi_2143(pi_1423(x)) = pi_4132(x) & pi_4321(pi_1423(x)) = pi_3241(x) &
pi_1243(pi_1423(x)) = pi_1432(x) & pi_4321(pi_1432(x)) = pi_2341(x) &
pi_3412(pi_1432(x)) = pi_3214(x) & pi_2143(pi_1432(x)) = pi_4123(x) &
pi_4321(pi_3124(x)) = pi_4213(x) & pi_3412(pi_3124(x)) = pi_2431(x) &
pi_2143(pi_3124(x)) = pi_1342(x) & pi_4312(pi_3124(x)) = pi_4231(x) &
pi_4321(pi_3124(x)) = pi_4213(x);
reserve x for Tuple of 4,the carrier of V,
P9,Q9,R9,S9 for Element of V;
definition
let V being RealLinearSpace;
let P,Q,R,S being Element of V;
func cross-ratio(P,Q,R,S) -> Real equals
:: ANPROJ10:def 29
affine-ratio(R,P,Q) / affine-ratio(S,P,Q);
end;
theorem :: ANPROJ10:52
P,Q,R,S are_collinear & R <> Q & S <> Q & S <> P implies
(R = P iff cross-ratio(P,Q,R,S) = 0);
theorem :: ANPROJ10:53
P <> R & P <> S implies cross-ratio(P,P,R,S) = 1;
theorem :: ANPROJ10:54
P,Q,R,S are_collinear & R <> Q & S <> Q & R <> S &
cross-ratio(P,Q,R,S) = 1 implies P = Q;
theorem :: ANPROJ10:55
P,Q,R,S are_collinear & P9,Q9,R9,S9 are_collinear & S <> P & S <> Q &
S9 <> P9 & S9 <> Q9 implies
(cross-ratio(P,Q,R,S) = cross-ratio(P9,Q9,R9,S9) iff
affine-ratio(R,P,Q) * affine-ratio(S9,P9,Q9) =
affine-ratio(R9,P9,Q9) * affine-ratio(S,P,Q));
theorem :: ANPROJ10:56
P,Q,R,S are_collinear & P <> S & R <> Q & S <> Q implies
cross-ratio(P,Q,R,S) = cross-ratio(R,S,P,Q);
theorem :: ANPROJ10:57
for V being RealLinearSpace for P,Q,R,S being Element of V st
P,Q,R,S are_collinear & P <> R & P <> S & R <> Q & S <> Q holds
cross-ratio(P,Q,R,S) = cross-ratio(Q,P,S,R);
theorem :: ANPROJ10:58
P,Q,R,S are_collinear & P <> R & P <> S & R <> Q & S <> Q implies
cross-ratio(P,Q,R,S) = cross-ratio(S,R,Q,P);
theorem :: ANPROJ10:59
cross-ratio(P,Q,S,R) = 1 / cross-ratio(P,Q,R,S);
theorem :: ANPROJ10:60
P,Q,R,S are_collinear & P <> R & P <> S & R <> Q & S <> Q implies
cross-ratio(Q,P,R,S) = 1 / cross-ratio(P,Q,R,S);
theorem :: ANPROJ10:61
P,Q,R,S are_collinear & P <> R & P <> S & R <> Q & S <> Q implies
cross-ratio(R,S,Q,P) = 1 / cross-ratio(P,Q,R,S);
theorem :: ANPROJ10:62
P,Q,R,S are_collinear & P <> R & P <> S & R <> Q & S <> Q implies
cross-ratio(S,R,P,Q) = 1 / cross-ratio(P,Q,R,S);
theorem :: ANPROJ10:63
P,Q,R,S are_collinear & P,Q,R,S are_mutually_distinct implies
cross-ratio(P,R,Q,S) = 1 - cross-ratio(P,Q,R,S);
theorem :: ANPROJ10:64
P,Q,R,S are_collinear & P,Q,R,S are_mutually_distinct implies
cross-ratio(Q,S,P,R) = 1 - cross-ratio(P,Q,R,S);
theorem :: ANPROJ10:65
P,Q,R,S are_collinear & P,Q,R,S are_mutually_distinct implies
cross-ratio(R,P,S,Q) = 1 - cross-ratio(P,Q,R,S);
theorem :: ANPROJ10:66
P,Q,R,S are_collinear & P,Q,R,S are_mutually_distinct implies
cross-ratio(S,Q,R,P) = 1 - cross-ratio(P,Q,R,S);
definition
let V being RealLinearSpace;
let x being Tuple of 4,the carrier of V;
func cross-ratio-tuple(x) -> Real means
:: ANPROJ10:def 30
ex P,Q,R,S being Element of V st P = x.1 & Q = x.2 & R = x.3 &
S = x.4 & it = cross-ratio(P,Q,R,S);
end;
theorem :: ANPROJ10:67
x = <* P, Q, R, S *> implies
cross-ratio(P,Q,R,S) = cross-ratio-tuple(x);
theorem :: ANPROJ10:68
x = <* P, Q, R, S *> & P,Q,R,S are_collinear &
P <> S & Q <> R & Q <> S implies
cross-ratio-tuple(x) = cross-ratio-tuple(pi_3412(x));
theorem :: ANPROJ10:69
x = <* P, Q, R, S *> & P,Q,R,S are_collinear & P <> R & P <> S &
Q <> R & Q <> S implies
cross-ratio-tuple(x) = cross-ratio-tuple(pi_2143(x)) &
cross-ratio-tuple(x) = cross-ratio-tuple(pi_4321(x));
theorem :: ANPROJ10:70
cross-ratio-tuple(pi_1243(x)) = 1 / cross-ratio-tuple(x);
theorem :: ANPROJ10:71
x = <*P,Q,R,S*> & P,Q,R,S are_mutually_distinct &
P,Q,R,S are_collinear implies
(ex r being non unit non zero Real st r = cross-ratio-tuple(x) &
cross-ratio-tuple(pi_1243(x)) = op1(r));
theorem :: ANPROJ10:72
x = <*P,Q,R,S*> & P,Q,R,S are_collinear & P <> R & P <> S &
Q <> R & Q <> S implies
cross-ratio-tuple(pi_1243(x)) = 1 / cross-ratio-tuple(x) &
cross-ratio-tuple(pi_2134(x)) = 1 / cross-ratio-tuple(x) &
cross-ratio-tuple(pi_3421(x)) = 1 / cross-ratio-tuple(x) &
cross-ratio-tuple(pi_4312(x)) = 1 / cross-ratio-tuple(x);
theorem :: ANPROJ10:73
x = <* P,Q,R,S *> & P,Q,R,S are_mutually_distinct &
P,Q,R,S are_collinear implies
cross-ratio-tuple(pi_1324(x)) = 1 - cross-ratio-tuple(x) &
cross-ratio-tuple(pi_2413(x)) = 1 - cross-ratio-tuple(x) &
cross-ratio-tuple(pi_3142(x)) = 1 - cross-ratio-tuple(x) &
cross-ratio-tuple(pi_4231(x)) = 1 - cross-ratio-tuple(x);
theorem :: ANPROJ10:74
x = <* P,Q,R,S *> & P,Q,R,S are_mutually_distinct &
P,Q,R,S are_collinear implies
cross-ratio-tuple(pi_3124(x)) = 1 / (1 - cross-ratio-tuple(x)) &
cross-ratio-tuple(pi_2431(x)) = 1 / (1 - cross-ratio-tuple(x)) &
cross-ratio-tuple(pi_1342(x)) = 1 / (1 - cross-ratio-tuple(x)) &
cross-ratio-tuple(pi_4213(x)) = 1 / (1 - cross-ratio-tuple(x));
theorem :: ANPROJ10:75
x = <* P,Q,R,S *> & P,Q,R,S are_mutually_distinct &
P,Q,R,S are_collinear implies
cross-ratio-tuple(pi_1423(x))
= (cross-ratio-tuple(x) - 1) / cross-ratio-tuple(x) &
cross-ratio-tuple(pi_2314(x))
= (cross-ratio-tuple(x) - 1) / cross-ratio-tuple(x) &
cross-ratio-tuple(pi_4132(x))
= (cross-ratio-tuple(x) - 1) / cross-ratio-tuple(x) &
cross-ratio-tuple(pi_3241(x))
= (cross-ratio-tuple(x) - 1) / cross-ratio-tuple(x);
theorem :: ANPROJ10:76
x = <* P,Q,R,S *> & P,Q,R,S are_mutually_distinct &
P,Q,R,S are_collinear implies
cross-ratio-tuple(pi_1432(x))
= cross-ratio-tuple(x) / (cross-ratio-tuple(x) - 1) &
cross-ratio-tuple(pi_2341(x))
= cross-ratio-tuple(x) / (cross-ratio-tuple(x) - 1) &
cross-ratio-tuple(pi_3214(x))
= cross-ratio-tuple(x) / (cross-ratio-tuple(x) - 1) &
cross-ratio-tuple(pi_4123(x))
= cross-ratio-tuple(x) / (cross-ratio-tuple(x) - 1);
begin
theorem :: ANPROJ10:77
for x1,x2,x3,x4 being Element of TOP-REAL 1 st
x2 <> x3 & x3 <> x1 & x2 <> x4 & x1 <> x4 holds
ex a,b,c,d being Real st x1 = <* a *> & x2 = <* b *> & x3 = <* c *> &
x4 = <* d *> & cross-ratio-tuple(<*x1,x2,x3,x4*>)
= ((c - a) / (c - b)) * ((d - b) / (d - a));