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;

theorem Th24:
  w is_atlas_of S,G implies for a,b,c holds @(w).(a,b) = c iff w.(
  a,c) = w.(c,b)
proof
  assume
A1: w is_atlas_of S,G;
  let a,b,c;
  thus @(w).(a,b) = c implies w.(a,c) = w.(c,b) by A1,Def9;
  thus w.(a,c) = w.(c,b) implies @(w).(a,b) = c
  proof
    defpred P[Element of S,Element of S,Element of S] means w.($1,$3) = w.($3,
    $2);
    assume
A2: w.(a,c) = w.(c,b);
A3: for a,b,c,c9 st P[a,b,c] & P[a,b,c9] holds c = c9
    proof
      let a,b,c,c9 such that
A4:   ( P[a,b,c])& P[a,b,c9];
      w.(c,c9) = w.(c,a) + w.(a,c9) by A1
        .= w.(c9,b) + w.(b,c) by A1,A4,Th5
        .= w.(c9,c) by A1
        .= -w.(c,c9) by A1,Th4;
      then w.(c,c9) = 0.G by Th16;
      hence thesis by A1,Th3;
    end;
    set c9 = @(w).(a,b);
    P[a,b,c9] by A1,Def9;
    hence thesis by A2,A3;
  end;
end;
