reserve D for non empty set;
reserve f1,f2 for FinSequence of D;
reserve i,n,n1,n2,n3,n4,n5,n6 for Element of NAT;
reserve S for Gene-Set;
reserve p1,p2 for Individual of S;

theorem Th13:
  crossover(p1,p2,n1,n2) = crossover(p1,p2,n2,n1)
proof
A1: len p1 = len S by Def1;
  len ((p2|n2)^(p1/^n2)) = len crossover(p2,p1,n2);
  then
A2: len ((p2|n2)^(p1/^n2)) = len S by Def1;
A3: len p2 = len S by Def1;
  len ((p1|n2)^(p2/^n2)) = len crossover(p1,p2,n2);
  then
A4: len ((p1|n2)^(p2/^n2)) = len S by Def1;
  now
    per cases by NAT_1:3;
    suppose
A5:   n1 >= n2 & n2 > 0;
      now
        per cases;
        suppose
A6:       n1 >= len p1;
          then p2|n1 = p2 by A1,A3,FINSEQ_1:58;
          then
A7:       (p2|n1)^(p1/^n1) = p2^{} by A6,FINSEQ_5:32
            .= p2 by FINSEQ_1:34;
          p1|n1 = p1 by A6,FINSEQ_1:58;
          then
A8:       (p1|n1)^(p2/^n1) = p1^{} by A1,A3,A6,FINSEQ_5:32
            .= p1 by FINSEQ_1:34;
          ((p1|n2)^(p2/^n2))|n1=((p1|n2)^(p2/^n2)) by A1,A4,A6,FINSEQ_1:58;
          then
crossover(p1,p2,n2,n1) = ((p1|n2)^(p2/^n2))^{} by A1,A2,A6,FINSEQ_5:32
            .= (p1|n2)^(p2/^n2) by FINSEQ_1:34;
          hence thesis by A8,A7;
        end;
        suppose
A9:       n1 < len p1;
          then len(p1|n1) = n1 by FINSEQ_1:59;
          then
A10:      ((p1|n1)^(p2/^n1))|n2 = (p1|n1)|n2 by A5,FINSEQ_5:22
            .= p1|n2 by A5,FINSEQ_5:77;
          n1 <= len p2 by A3,A9,Def1;
          then n2 <= len(p2|n1) by A5,FINSEQ_1:59;
          then
A11:      crossover(p1,p2,n1,n2) = (p1|n2)^(((p2|n1)/^n2)^(p1/^ n1)) by A10,Th1
            .= (p1|n2)^((p2|n1)/^n2)^(p1/^n1) by FINSEQ_1:32;
          len(p2|n2) = n2 by A1,A3,A5,A9,FINSEQ_1:59,XXREAL_0:2;
          then consider i being Nat such that
A12:      len(p2|n2) + i = n1 by A5,NAT_1:10;
          reconsider i as Element of NAT by ORDINAL1:def 12;
A13:      len(p1|n2) = n2 by A5,A9,FINSEQ_1:59,XXREAL_0:2;
          then
A14:      len(p1|n2) + i = n1 by A1,A3,A5,A9,A12,FINSEQ_1:59,XXREAL_0:2;
          then i=n1-n2 by A13;
          then
A15:      i= n1-'n2 by A5,XREAL_1:233;
A16:      ((p1|n2)^(p2/^n2))|n1=(p1|n2)^((p2/^n2)|i) by A14,Th2
            .= (p1|n2)^((p2|n1)/^n2) by A15,FINSEQ_5:80;
          ((p2|n2)^(p1/^n2))/^n1=(p1/^n2)/^i by A12,FINSEQ_5:36
            .= p1/^(n2+i) by FINSEQ_6:81
            .= p1/^n1 by A1,A3,A5,A9,A12,FINSEQ_1:59,XXREAL_0:2;
          hence thesis by A11,A16;
        end;
      end;
      hence thesis;
    end;
    suppose
A17:  n1 < n2 & n2 > 0;
      now
        per cases;
        suppose
A18:      n1 >= len p1;
          then n2 >= len p1 by A17,XXREAL_0:2;
          then
A19:      n2 >= len p2 by A3,Def1;
A20:      n1 >= len p2 by A3,A18,Def1;
          then (p2|n1)=p2 by FINSEQ_1:58;
          then (p2|n1)^(p1/^n1) = p2^{} by A18,FINSEQ_5:32
            .= p2 by FINSEQ_1:34;
          then
A21:      ((p2|n1)^(p1/^n1))/^n2 = {} by A19,FINSEQ_5:32;
          (p1|n2) = p1 by A17,A18,FINSEQ_1:58,XXREAL_0:2;
          then (p1|n2)^(p2/^n2) = p1^{} by A19,FINSEQ_5:32
            .= p1 by FINSEQ_1:34;
          then
A22:      ((p1|n2)^(p2/^n2))|n1 = p1 by A18,FINSEQ_1:58;
          (p2|n2) = p2 by A19,FINSEQ_1:58;
          then (p2|n2)^(p1/^n2) = p2^{} by A17,A18,FINSEQ_5:32,XXREAL_0:2
            .= p2 by FINSEQ_1:34;
          then
A23:      ((p2|n2)^(p1/^n2))/^n1 = {} by A20,FINSEQ_5:32;
          (p1|n1)=p1 by A18,FINSEQ_1:58;
          then (p1|n1)^(p2/^n1) = p1^{} by A20,FINSEQ_5:32
            .= p1 by FINSEQ_1:34;
          hence thesis by A17,A18,A21,A22,A23,FINSEQ_1:58,XXREAL_0:2;
        end;
        suppose
A24:      n1 < len p1;
          n1 <= len(p1|n2)
          proof
            now
              per cases;
              suppose
                n2 >= len p1;
                hence thesis by A24,FINSEQ_1:58;
              end;
              suppose
                n2 < len p1;
                hence thesis by A17,FINSEQ_1:59;
              end;
            end;
            hence thesis;
          end;
          then
A25:      ((p1|n2)^(p2/^n2))|n1 = (p1|n2)|n1 by FINSEQ_5:22
            .= p1|n1 by A17,FINSEQ_5:77;
A26:      len(p1|n1) = n1 by A24,FINSEQ_1:59;
          then consider i being Nat such that
A27:      len(p1|n1) + i = n2 by A17,NAT_1:10;
          reconsider i as Element of NAT by ORDINAL1:def 12;
A28:      ((p1|n1)^(p2/^n1))|n2 = (p1|n1)^((p2/^n1)|i) by A27,Th2;
          len(p2|n1) = n1 by A1,A3,A24,FINSEQ_1:59;
          then len(p2|n1) + i = n2 by A24,A27,FINSEQ_1:59;
          then
A29:      crossover(p1,p2,n1,n2) =((p1|n1)^((p2/^n1)|i))^((p1/^n1)/^i) by A28,
FINSEQ_5:36
            .=(p1|n1)^((p2/^n1)|i)^(p1/^(n1+i)) by FINSEQ_6:81
            .=(p1|n1)^((p2/^n1)|i)^(p1/^n2) by A24,A27,FINSEQ_1:59;
A30:      i = n2 - n1 by A26,A27;
          n1 <= len(p2|n2)
          proof
            now
              per cases;
              suppose
                n2 >= len p2;
                hence thesis by A1,A3,A24,FINSEQ_1:58;
              end;
              suppose
                n2 < len p2;
                hence thesis by A17,FINSEQ_1:59;
              end;
            end;
            hence thesis;
          end;
          then ((p2|n2)^(p1/^n2))/^n1 = ((p2|n2)/^n1)^(p1/^n2) by Th1
            .=((p2/^n1)|(n2-'n1))^(p1/^n2) by FINSEQ_5:80
            .=((p2/^n1)|i)^(p1/^n2) by A17,A30,XREAL_1:233;
          hence thesis by A29,A25,FINSEQ_1:32;
        end;
      end;
      hence thesis;
    end;
    suppose
A31:  n2 = 0;
      then crossover(p1,p2,n1,n2)= crossover(p2,p1,n1) by Th8
        .= crossover(p1,p2,0,n1) by Th7;
      hence thesis by A31;
    end;
  end;
  hence thesis;
end;
