reserve x for set;
reserve i,j for Integer;
reserve n,n1,n2,n3 for Nat;
reserve p for Prime;
reserve a,b,c,d for Element of GF(p);
reserve K for Ring;
reserve a1,a2,a3,a4,a5,a6 for Element of K;

theorem Th25:
  for g2, a, b be Element of GF(p) st g2 = 2 mod p
  holds (a + b) |^2 = a |^2 + g2*a*b + b |^2
  proof
    let g2, a, b be Element of GF(p) such that
    A1: g2 = 2 mod p;
    thus (a + b) |^2 = (a + b)*(a + b) by EC_PF_1:22
    .= a*(a+b)+b*(a+b) by VECTSP_1:def 7
    .= a*a+a*b+b*(a+b) by VECTSP_1:def 7
    .= a |^2 + a*b + b*(a+b) by EC_PF_1:22
    .= a |^2 + a*b + (b*a+b*b) by VECTSP_1:def 7
    .= a |^2 + a*b + (a*b+b |^2) by EC_PF_1:22
    .= a |^2 + (a*b+(a*b+b |^2)) by ALGSTR_1:7
    .= a |^2 + ((a*b+a*b)+b |^2) by ALGSTR_1:7
    .= a |^2 + (g2*(a*b)+b |^2) by A1,Th20
    .= a |^2 + g2*(a*b) + b|^2 by ALGSTR_1:7
    .= a |^2 + g2*a*b + b |^2 by GROUP_1:def 3;
  end;
