reserve i,j,k,n for Nat;
reserve x,y,z for Tuple of n, BOOLEAN;
reserve m,k,k1,k2 for FinSequence of NAT;

theorem Th34:
  for n being non zero Nat,m,k1,k2 holds 2 to_power(n)
+1 is prime & len m >= 4 & m.1 is_expressible_by n & m.2 is_expressible_by n &
m.3 is_expressible_by n & m.4 is_expressible_by n & k1.1 is_expressible_by n &
k1.2 is_expressible_by n & k1.3 is_expressible_by n & k1.4 is_expressible_by n
& k2.1 = INV_MOD(k1.1,n) & k2.2 = NEG_MOD(k1.2,n) & k2.3 = NEG_MOD(k1.3,n) & k2
  .4 = INV_MOD(k1.4,n) implies (IDEA_QS(k2,n)*IDEA_PS(k1,n)).m = m
proof
  let n be non zero Nat;
  let m,k1,k2;
  assume
A1: 2 to_power(n)+1 is prime & len m >= 4 & m.1 is_expressible_by n & m.
2 is_expressible_by n & m.3 is_expressible_by n & m.4 is_expressible_by n & k1.
  1 is_expressible_by n & k1.2 is_expressible_by n & k1.3 is_expressible_by n &
k1.4 is_expressible_by n & k2.1 = INV_MOD( k1. 1,n) & k2.2 = NEG_MOD(k1.2,n ) &
  k2.3 = NEG_MOD(k1.3,n) & k2.4 = INV_MOD(k1.4 ,n);
  dom IDEA_PS(k1,n) = MESSAGES by FUNCT_2:def 1;
  then m in dom IDEA_PS(k1,n) by FINSEQ_1:def 11;
  then (IDEA_QS(k2,n)*IDEA_PS(k1,n)).m = IDEA_QS(k2,n).(IDEA_PS(k1,n).m) by
FUNCT_1:13
    .= IDEA_QS(k2,n).IDEAoperationA(m,k1,n) by Def19
    .= IDEAoperationA(IDEAoperationA(m,k1,n),k2,n) by Def20
    .= m by A1,Th29;
  hence thesis;
end;
