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;
