reserve i,j,n,k,m for Nat,
     a,b,x,y,z for object,
     F,G for FinSequence-yielding FinSequence,
     f,g,p,q for FinSequence,
     X,Y for set,
     D for non empty set;
reserve
  B,A,M for BinOp of D,
  F,G for D* -valued FinSequence,
  f for FinSequence of D,
  d,d1,d2 for Element of D;
reserve
  F,G for non-empty non empty FinSequence of D*,
  f for non empty FinSequence of D;
reserve f,g for FinSequence of D,
        a,b,c for set,
        F,F1,F2 for finite set;

theorem
  B is having_a_unity associative having_an_inverseOp implies
    SignGen(SignGen(f,B,X),B,X) = f
proof
  set C=SignGen(f,B,X),I=the_inverseOp_wrt B;
  assume
A1: B is having_a_unity associative having_an_inverseOp;
A2: len SignGen(C,B,X) = len C =len f by CARD_1:def 7;
A3: dom f=dom C= dom SignGen(C,B,X) by Def11;
  for k st 1 <= k & k <= len f holds SignGen(C,B,X).k = f.k
  proof
    let k such that
A4:   1 <= k & k <= len f;
A5:   k in dom f by A4,FINSEQ_3:25;
    then
A6:   f.k=f/.k by PARTFUN1:def 6;
    per cases;
    suppose
A7:     k in X;
      then C.k = (the_inverseOp_wrt B).(f.k) by A5,A3,Def11;
      then SignGen(C,B,X).k = I.(I.(f/.k)) by A5,A7,A6,A3,Def11;
      hence thesis by A1,A6,FINSEQOP:62;
    end;
    suppose
A8:     not k in X;
      then C.k = f.k by A5,A3,Def11;
      hence thesis by A5,A8,A3,Def11;
    end;
  end;
  hence thesis by A2;
end;
