
theorem PGG:
  for a,b be Integer holds (Parity a) gcd (Parity b) = Parity (a gcd b)
  proof
    let a,b be Integer;
    |.a.| in NAT by INT_1:3; then
    reconsider k = |.a.| as Nat;
    |.b.| in NAT by INT_1:3; then
    reconsider l = |.b.| as Nat;
    per cases;
    suppose
      A1: a = 0; then
      Parity a = 0 by Def1; then
      (Parity a) gcd (Parity b) = Parity (k gcd l) by A1,PMP;
      hence thesis by INT_2:34;
    end;
    suppose
      A1: b = 0; then
      Parity b = 0 by Def1; then
      (Parity a) gcd (Parity b) = Parity (k gcd l) by A1,PMP;
      hence thesis by INT_2:34;
    end;
    suppose
      A0: a <> 0 & b <> 0;
      reconsider a as non zero Integer by A0;
      reconsider b as non zero Integer by A0;
      per cases by Th4;
      suppose
        B1: (Parity a) divides (Parity b); then
        B2: Parity a <= Parity b by NAT_D:7;
        (Parity a) gcd (Parity b) = |.Parity a.| by B1
        .= min (Parity a,Parity b) by B2,XXREAL_0:def 9
        .= Parity (a gcd b) by PGC;
        hence thesis;
      end;
      suppose
        B1: (Parity b) divides (Parity a); then
        B2: Parity a >= Parity b by NAT_D:7;
        (Parity a) gcd (Parity b) = |.Parity b.| by B1
        .= min (Parity a,Parity b) by B2,XXREAL_0:def 9
        .= Parity (a gcd b) by PGC;
        hence thesis;
      end;
   end;
 end;
