reserve G for non empty addLoopStr;
reserve x for Element of G;
reserve M for non empty MidStr;
reserve p,q,r for Point of M;
reserve w for Function of [:the carrier of M,the carrier of M:], the carrier
  of G;
reserve S for non empty set;
reserve a,b,b9,c,c9,d for Element of S;
reserve w for Function of [:S,S:],the carrier of G;
reserve G for add-associative right_zeroed right_complementable non empty
  addLoopStr;
reserve x for Element of G;
reserve w for Function of [:S,S:],the carrier of G;
reserve G for add-associative right_zeroed right_complementable Abelian non
  empty addLoopStr;
reserve x for Element of G;
reserve w for Function of [:S,S:],the carrier of G;
reserve M for MidSp;
reserve p,q,r,s for Point of M;
reserve G for midpoint_operator add-associative right_zeroed
  right_complementable Abelian non empty addLoopStr;
reserve x,y for Element of G;

theorem Th17:
  for G being Fanoian add-associative right_zeroed
  right_complementable Abelian non empty addLoopStr, x,y being Element of G
  holds Double x = Double y implies x = y
proof
  let G be Fanoian add-associative right_zeroed right_complementable Abelian
  non empty addLoopStr, x,y be Element of G;
  assume Double x = Double y;
  then 0.G = (x+x)+-(y+y) by RLVECT_1:def 10
    .= x+x+(-y+-y) by RLVECT_1:31
    .= x+(x+(-y+-y)) by RLVECT_1:def 3
    .= x+(x+-y+-y) by RLVECT_1:def 3
    .= (x+-y)+(x+-y) by RLVECT_1:def 3;
  then -y+x = 0.G by VECTSP_1:def 18;
  hence x = -(-y) by RLVECT_1:6
    .= y by RLVECT_1:17;
end;
