reserve i,s,t,m,n,k for Nat,
        c,d,e for Element of NAT,
        fn for FinSequence of NAT,
        x,y for Integer;
reserve p for Prime;
 reserve fp,fr for FinSequence of NAT;

theorem
  n>1 & len fp>=2 & (for d st d in dom fp holds fp.d,n are_coprime)
  implies for fr st len fr = len fp & (for d st d in dom fr holds
  fr.d = order(fp.d,n)) & (for d,e st d in dom fr & e in dom fr & d <> e
  holds fr.d,fr.e are_coprime) holds order((Product fp),n) = Product fr
proof
defpred RP[FinSequence of NAT] means
   for d st d in dom $1 holds $1.d,n are_coprime;
 defpred CC[FinSequence of NAT] means
   for fr st len fr = len $1 & (for d st d in dom fr holds
  fr.d = order($1.d,n)) & (for d,e st d in dom fr & e in dom fr & d <> e
  holds fr.d,fr.e are_coprime) holds order((Product $1),n) = Product fr;
 defpred TH[FinSequence of NAT] means
   (n>1 & len $1>=2 & RP[$1]) implies CC[$1];
A1:TH[<*>NAT qua FinSequence of NAT];
A2:for fp,c st TH[fp] holds TH[fp^<*c*>]
  proof let fp,c; assume A3:TH[fp];
   set fp1=fp^<*c*>;
    TH[fp1]
    proof
    assume A4:n>1 & len fp1>=2 & RP[fp1];
A5:  len fp1=len fp+1 by FINSEQ_2:16;
       per cases by A4,XXREAL_0:1;
       suppose A6:len fp1 = 2;
         then fp1=<*(fp1.1),(fp1.2)*> by FINSEQ_1:44;
         then A7:Product fp1=(fp1.1)*(fp1.2) by RVSUM_1:99;
         dom fp1 = Seg 2 by A6,FINSEQ_1:def 3; then
A8:      1 in dom fp1 & 2 in dom fp1;then
A9:      fp1.1,n are_coprime & fp1.2,n are_coprime by A4;
            CC[fp1]
          proof
            let fr;
            assume A10:len fr = len fp1 & (for d st d in dom fr holds
            fr.d = order(fp1.d,n)) & (for d,e st d in dom fr & e in dom fr
            & d<>e holds fr.d,fr.e are_coprime);
            then A11:1 in dom fr & 2 in dom fr by A8,FINSEQ_3:29;
            then fr.1,fr.2 are_coprime by A10;
            then order(fp1.1,n),fr.2 are_coprime by A10,A11;then
A12:        order(fp1.1,n),order(fp1.2,n) are_coprime by A10,A11;
            fr=<*fr.1,fr.2*> by A6,A10,FINSEQ_1:44;
            then Product fr = fr.1*fr.2 by RVSUM_1:99
                           .= order(fp1.1,n) * fr.2 by A10,A11
                           .= order(fp1.1,n)*order(fp1.2,n) by A10,A11;
           hence thesis by A12,A4,A7,A9,Th17;
          end;
         hence thesis;
       end;
       suppose len fp1 > 2;
         then len fp + 1 > 2 by FINSEQ_2:16;
         then A13:len fp +1 -1 >= 2 by INT_1:52;
A14:        RP[fp]
         proof let d; assume A15:d in dom fp;
            then fp1.d = fp.d by FINSEQ_1:def 7;
           hence thesis by A4,A15,FINSEQ_2:15;
         end;
         CC[fp1]
            proof
            let fr;
            assume A16:len fr = len fp1 & (for d st d in dom fr holds
            fr.d = order(fp1.d,n)) & (for d,e st d in dom fr & e in dom fr
            & d<>e holds fr.d,fr.e are_coprime);
            then consider f be FinSequence of NAT,l be Element of NAT such that
A17:        fr = f ^ <*l*> by FINSEQ_2:19;
A18:        len f + 1 = len fp + 1 by A5,A16,A17,FINSEQ_2:16;
A19:           for d st d in dom f holds f.d = order(fp.d,n)
            proof let d; assume A20:d in dom f;
               then A21:f.d = fr.d by A17,FINSEQ_1:def 7;
A22:           d in dom fr by A20,A17,FINSEQ_2:15;
               dom f = dom fp by A18,FINSEQ_3:29;
               then fp.d = fp1.d by A20,FINSEQ_1:def 7;
             hence thesis by A22,A16,A21;
            end;
            for d,e st d in dom f & e in dom f & d<>e
              holds f.d,f.e are_coprime
            proof let d,e; assume A23:d in dom f & e in dom f & d<>e;
              then A24:f.d = fr.d & f.e = fr.e by A17,FINSEQ_1:def 7;
              d in dom fr & e in dom fr by A23,A17,FINSEQ_2:15;
             hence thesis by A23,A16,A24;
            end;
           then A25:order(Product fp,n)=Product f by A18,A19,A14,A3,A4,A13;
A26:       for d be Nat st d in dom fp holds (fp.d) gcd n = 1
             by A14,INT_2:def 3;
           (Product fp) gcd n = 1 by A26,WSIERP_1:36;
           then A27:(Product (fp)),n are_coprime by INT_2:def 3;
           reconsider z = 0, j = 1 as Element of NAT;
           len fp+j>=z+j by XREAL_1:7;then
           (len fp+1) in dom fp1 by A5,FINSEQ_3:25;
           then fp1.(len fp+1),n are_coprime by A4;
           then A28:c,n are_coprime by FINSEQ_1:42;
           len f+j >= z+j by XREAL_1:7;
           then len fr >= j by A17,FINSEQ_2:16;
           then A29:len fr in dom fr by FINSEQ_3:25;
           then fr.(len fr)=order(fp1.(len fr),n) by A16
                          .=order(fp1.(len fp+1),n) by A16,FINSEQ_2:16
                          .=order(c,n) by FINSEQ_1:42;
           then A30:fr.(len f+1) = order(c,n) by A17,FINSEQ_2:16;
A31:       Product fp1 = Product fp * c & Product fr = Product f * l
                                                       by A17,RVSUM_1:96;
           for d be Nat st d in dom f holds f.d gcd fr.(len f +1) = 1
           proof let d be Nat; assume A32:d in dom f;
              then A33:d in dom fr by A17,FINSEQ_2:15;
              d<=len f by A32,FINSEQ_3:25;then
A34:          d<len f+1 by XREAL_1:145;
              (len f+1) in dom fr by A17,A29,FINSEQ_2:16;
              then fr.d,fr.(len f+1) are_coprime by A16,A33,A34;
              then f.d,fr.(len f+1) are_coprime
                                                 by A17,A32,FINSEQ_1:def 7;
             hence thesis by INT_2:def 3;
           end;
          then Product f gcd (fr.(len f +1)) = 1 by WSIERP_1:36;
          then Product f,order(c,n) are_coprime by A30,INT_2:def 3;
          then order(Product fp*c,n)=order(Product fp,n)*order(c,n)
                                                 by A4,A28,A27,A25,Th17;
         hence order(Product fp1,n)=Product fr by A31,A30,A17,A25,FINSEQ_1:42;
         end;
        hence thesis;
       end;
     end;
    hence thesis;
   end;
   for fp being FinSequence of NAT holds TH[fp] from FINSEQ_2:sch 2(A1,A2);
 hence thesis;
end;
