let SAS be Semi_Affine_Space; :: thesis: for o, b, a, d, c being Element of SAS holds
( o, diff (b,a,o), diff (d,c,o) is_collinear iff a,b // c,d )

let o, b, a, d, c be Element of SAS; :: thesis: ( o, diff (b,a,o), diff (d,c,o) is_collinear iff a,b // c,d )
A1: ( a,b // c,d implies o, diff (b,a,o), diff (d,c,o) is_collinear )
proof
assume A2: a,b // c,d ; :: thesis: o, diff (b,a,o), diff (d,c,o) is_collinear
A3: now
o, diff (d,c,o) // c,d by Th114;
then A4: c,d // o, diff (d,c,o) by Th17;
assume that
A5: a <> b and
A6: c <> d ; :: thesis: o, diff (b,a,o), diff (d,c,o) is_collinear
o, diff (b,a,o) // a,b by Th114;
then a,b // o, diff (b,a,o) by Th17;
then o, diff (b,a,o) // c,d by A2, A5, Def1;
then o, diff (b,a,o) // o, diff (d,c,o) by A6, A4, Th20;
hence o, diff (b,a,o), diff (d,c,o) is_collinear by Def2; :: thesis: verum
end;
now
assume ( a = b or c = d ) ; :: thesis: o, diff (b,a,o), diff (d,c,o) is_collinear
then ( o = diff (b,a,o) or o = diff (d,c,o) ) by Th113;
then o, diff (b,a,o) // o, diff (d,c,o) by Def1, Th14;
hence o, diff (b,a,o), diff (d,c,o) is_collinear by Def2; :: thesis: verum
end;
hence o, diff (b,a,o), diff (d,c,o) is_collinear by A3; :: thesis: verum
end;
( o, diff (b,a,o), diff (d,c,o) is_collinear implies a,b // c,d )
proof
assume A7: o, diff (b,a,o), diff (d,c,o) is_collinear ; :: thesis: a,b // c,d
A8: now
A9: o, diff (d,c,o) // c,d by Th114;
assume that
A10: o <> diff (b,a,o) and
A11: o <> diff (d,c,o) ; :: thesis: a,b // c,d
( o, diff (b,a,o) // o, diff (d,c,o) & o, diff (b,a,o) // a,b ) by A7, Def2, Th114;
then o, diff (d,c,o) // a,b by A10, Def1;
hence a,b // c,d by A11, A9, Def1; :: thesis: verum
end;
now
assume ( o = diff (b,a,o) or o = diff (d,c,o) ) ; :: thesis: a,b // c,d
then ( a = b or c = d ) by Th113;
hence a,b // c,d by Def1, Th14; :: thesis: verum
end;
hence a,b // c,d by A8; :: thesis: verum
end;
hence ( o, diff (b,a,o), diff (d,c,o) is_collinear iff a,b // c,d ) by A1; :: thesis: verum