reserve i,j,k,n for Nat;
reserve x,y,z for Tuple of n, BOOLEAN;

theorem Th9:
  for n,x,y,z holds (x 'xor' y) 'xor' z = x 'xor' (y 'xor' z)
proof
  let n;
  let x,y,z be Tuple of n, BOOLEAN;
A1: len ((x 'xor' y) 'xor' z) = n by CARD_1:def 7;
  then
A2: dom ((x 'xor' y) 'xor' z) = Seg n by FINSEQ_1:def 3;
A3: len (x 'xor' (y 'xor' z)) = n by CARD_1:def 7;
  now
    let j be Nat;
    assume
A4: j in dom ((x 'xor' y) 'xor' z);
    then
A5: j in dom (x 'xor' (y 'xor' z)) by A3,A2,FINSEQ_1:def 3;
    thus ((x 'xor' y) 'xor' z).j = ((x 'xor' y) 'xor' z)/.j by A4,
PARTFUN1:def 6
      .= ((x 'xor' y)/.j) 'xor' (z/.j) by A2,A4,Def2
      .= ((x/.j) 'xor' (y/.j)) 'xor' (z/.j) by A2,A4,Def2
      .= (x/.j) 'xor' ((y/.j) 'xor' (z/.j)) by XBOOLEAN:73
      .= (x/.j) 'xor' ((y 'xor' z)/.j) by A2,A4,Def2
      .= ((x 'xor' (y 'xor' z)))/.j by A2,A4,Def2
      .= (x 'xor' (y 'xor' z)).j by A5,PARTFUN1:def 6;
  end;
  hence thesis by A1,A3,FINSEQ_2:9;
end;
