reserve F,G for Group;
reserve G1 for Subgroup of G;
reserve Gc for cyclic Group;
reserve H for Subgroup of Gc;
reserve f for Homomorphism of G,Gc;
reserve a,b for Element of G;
reserve g for Element of Gc;
reserve a1 for Element of G1;
reserve k,m,n,p,s for Element of NAT;
reserve i0,i,i1,i2 for Integer;
reserve j,j1 for Element of INT.Group;
reserve x,y,t for set;

theorem Th15:
  for Gc being strict finite cyclic Group
   holds INT.Group(card Gc),Gc are_isomorphic
proof
  let Gc be strict finite cyclic Group;
  set n = card Gc;
  consider g being Element of Gc such that
A1: for h be Element of Gc ex p being Nat st h=g|^p by GR_CY_1:18;
  for h be Element of Gc holds ex i st h=g|^i
  proof
    let h be Element of Gc;
    consider p being Nat such that
A2: h=g|^p by A1;
    reconsider p1=p as Integer;
    take p1;
    thus thesis by A2;
  end;
  then
A3: Gc = gr {g} by Th5;
  ex h being Homomorphism of INT.Group(n),Gc st h is bijective
  proof
    deffunc F(Element of INT.Group(n)) = g|^$1;
    consider h being Function of the carrier of INT.Group(n),the carrier of Gc
    such that
A4: for p be Element of INT.Group(n) holds h.p=F(p) from FUNCT_2:sch 4;
A5: for j,j1 being Element of INT.Group(n) holds h.(j*j1)=h.(j)*h.(j1)
    proof
      let j,j1 be Element of INT.Group(n);
      reconsider j9=j,j19=j1 as Element of Segm(n);
      j*j1 = (j+j1) mod n by GR_CY_1:def 4
        .=(j+j1)- n*((j+j1) div n) by NEWTON:63;
      then h.(j*j1) = g|^((j+j1) +-n *((j+j1) div n)) by A4
        .= g|^(j+j1) *g|^(-n *((j+j1) div n)) by GROUP_1:33
        .= g|^(j+j1)*(g|^(n *((j+j1) div n)))" by GROUP_1:36
        .= g|^(j+j1)*(g|^n|^((j+j1) div n))" by GROUP_1:35
        .= g|^(j+j1)*((1_Gc)|^((j+j1) div n))" by GR_CY_1:9
        .= g|^(j+j1)*(1_Gc)" by GROUP_1:31
        .= g|^(j+j1)*(1_Gc) by GROUP_1:8
        .= g|^(j+j1) by GROUP_1:def 4
        .= (g|^j)*(g|^j1) by GROUP_1:33
        .= h.(j)*(g|^j1) by A4
        .= h.(j)*h.(j1) by A4;
      hence thesis;
    end;
A6: h is one-to-one
    proof
      let x,y be object;
      assume that
A7:  x in dom h and
A8:  y in dom h and
A9:  h.x=h.y and
A10:  x<>y;
      reconsider m=y as Element of INT.Group(n) by A8,FUNCT_2:def 1;
      reconsider p=x as Element of INT.Group(n) by A7,FUNCT_2:def 1;
A11:  g|^p=h.m by A4,A9
        .= g|^m by A4;
     reconsider p,m as Element of NAT by ORDINAL1:def 12;
A12:  p < n by NAT_1:44;
A13:  m < n by NAT_1:44;
A14:  ex k st k<>0 & k < n & g|^k=1_Gc
      proof
          per cases by A10,XXREAL_0:1;
          suppose
A15:        p < m;
            reconsider m1=m,p1=p as Integer;
            reconsider r1 = (m1-p1) as Element of NAT by A15,INT_1:5;
              per cases;
              suppose
A16:            r1 >0;
                set z=0;
A17:            r1 < n
                proof
                    reconsider n1=n as Integer;
                    m1+-p1 < n1+0 by A13,XREAL_1:8;
                    hence thesis;
                end;
                g|^m1*(g|^(-p1)) = g|^(p1+-p1) by A11,GROUP_1:33;
                then g|^(m1+-p1) = g|^z by GROUP_1:33;
                hence thesis by A16,A17,GROUP_1:25;
              end;
              suppose
                r1 = 0;
                hence thesis by A10;
              end;
          end;
          suppose
A18:        m < p;
            reconsider m1=m,p1=p as Integer;
            reconsider r1 = (p1-m1) as Element of NAT by A18,INT_1:5;
            per cases;
            suppose
A19:          r1 >0;
              set z=0;
A20:          r1 < n
              proof
                  reconsider n1=n as Integer;
                  p1+-m1 < n1+0 by A12,XREAL_1:8;
                  hence thesis;
              end;
              g|^p1*(g|^(-m1)) = g|^(m1+-m1) by A11,GROUP_1:33;
              then g|^(p1+-m1) = g|^z by GROUP_1:33;
              hence thesis by A19,A20,GROUP_1:25;
            end;
            suppose
              r1 = 0;
              hence thesis by A10;
            end;
          end;
      end;
      g is not being_of_order_0 & ord g = n by A3,GR_CY_1:6,7;
      hence contradiction by A14,GROUP_1:def 11;
    end;
A21: dom h = the carrier of INT.Group(n) by FUNCT_2:def 1;
A22: the carrier of Gc c= rng h
    proof
      let x be object;
      assume x in the carrier of Gc;
      then reconsider z=x as Element of Gc;
      consider p being Nat such that
A23:  z=g|^p by A1;
        set t=p mod n;
        t < n by NAT_D:1;
        then reconsider t9=t as Element of INT.Group(n) by NAT_1:44;
        z=g|^(n * (p div n) + (p mod n)) by A23,NAT_D:2
          .=g|^(n * (p div n))*(g|^(p mod n)) by GROUP_1:33
          .=g |^ n |^ (p div n)*(g |^ (p mod n)) by GROUP_1:35
          .=(1_Gc) |^ (p div n)*(g |^ (p mod n)) by GR_CY_1:9
          .=(1_Gc)*(g |^ (p mod n)) by GROUP_1:31
          .=(g |^ (p mod n)) by GROUP_1:def 4;
      then t9 in dom h & x=h.(t9) by A4,A21;
      hence thesis by FUNCT_1:def 3;
    end;
    rng h c= the carrier of Gc by RELAT_1:def 19;
    then
A24: rng h = the carrier of Gc by A22,XBOOLE_0:def 10;
    reconsider h as Homomorphism of INT.Group(n),Gc by A5,GROUP_6:def 6;
    take h;
    h is onto by A24,FUNCT_2:def 3;
    hence thesis by A6,FUNCT_2:def 4;
  end;
  hence thesis by GROUP_6:def 11;
end;
