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;
reserve x,y for Element of vectgroup(M);
reserve w for Function of [:S,S:],the carrier of G;
reserve a,b,c for Point of MidStr(#S,@(w)#);
reserve M for non empty MidStr;
reserve w for Function of [:the carrier of M,the carrier of M:], the carrier
  of G;
reserve a,b,b1,b2,c for Point of M;

theorem Th27:
  w is_atlas_of the carrier of M,G & w is associating
  implies (a@c = b1@b2 iff w.(a,c) = w.(a,b1) + w.(a,b2))
proof
  assume that
A1: w is_atlas_of the carrier of M,G and
A2: w is associating;
A3: a@c = b1@b2 iff w.(a,b2) = w.(b1,c) by A1,A2,Th13;
  hence a@c = b1@b2 implies w.(a,c) = w.(a,b1) + w.(a,b2) by A1;
  w.(a,c) = w.(a,b1) + w.(b1,c) by A1;
  hence thesis by A3,RLVECT_1:8;
end;
