let D be non empty set ; :: thesis: for A being BinOp of D
for d, d1, d2 being Element of D
for f being FinSequence of D
for F being finite set
for E being Enumeration of F st union F c= Seg (1 + (len f)) holds
for Es being Enumeration of swap (F,(1 + (len f)),(2 + (len f))) st Es = Swap (E,(1 + (len f)),(2 + (len f))) holds
for CE1, CES being FinSequence of D * st CE1 = (SignGenOp ((f ^ <*d*>),A,F)) * E & CES = (SignGenOp (((f ^ <*d1*>) ^ <*d2*>),A,(swap (F,(1 + (len f)),(2 + (len f)))))) * Es holds
for s being FinSequence st s in doms CE1 & rng s c= dom f holds
( s in doms CES & (App CE1) . s = (App CES) . s )

let A be BinOp of D; :: thesis: for d, d1, d2 being Element of D
for f being FinSequence of D
for F being finite set
for E being Enumeration of F st union F c= Seg (1 + (len f)) holds
for Es being Enumeration of swap (F,(1 + (len f)),(2 + (len f))) st Es = Swap (E,(1 + (len f)),(2 + (len f))) holds
for CE1, CES being FinSequence of D * st CE1 = (SignGenOp ((f ^ <*d*>),A,F)) * E & CES = (SignGenOp (((f ^ <*d1*>) ^ <*d2*>),A,(swap (F,(1 + (len f)),(2 + (len f)))))) * Es holds
for s being FinSequence st s in doms CE1 & rng s c= dom f holds
( s in doms CES & (App CE1) . s = (App CES) . s )

let d, d1, d2 be Element of D; :: thesis: for f being FinSequence of D
for F being finite set
for E being Enumeration of F st union F c= Seg (1 + (len f)) holds
for Es being Enumeration of swap (F,(1 + (len f)),(2 + (len f))) st Es = Swap (E,(1 + (len f)),(2 + (len f))) holds
for CE1, CES being FinSequence of D * st CE1 = (SignGenOp ((f ^ <*d*>),A,F)) * E & CES = (SignGenOp (((f ^ <*d1*>) ^ <*d2*>),A,(swap (F,(1 + (len f)),(2 + (len f)))))) * Es holds
for s being FinSequence st s in doms CE1 & rng s c= dom f holds
( s in doms CES & (App CE1) . s = (App CES) . s )

let f be FinSequence of D; :: thesis: for F being finite set
for E being Enumeration of F st union F c= Seg (1 + (len f)) holds
for Es being Enumeration of swap (F,(1 + (len f)),(2 + (len f))) st Es = Swap (E,(1 + (len f)),(2 + (len f))) holds
for CE1, CES being FinSequence of D * st CE1 = (SignGenOp ((f ^ <*d*>),A,F)) * E & CES = (SignGenOp (((f ^ <*d1*>) ^ <*d2*>),A,(swap (F,(1 + (len f)),(2 + (len f)))))) * Es holds
for s being FinSequence st s in doms CE1 & rng s c= dom f holds
( s in doms CES & (App CE1) . s = (App CES) . s )

let F be finite set ; :: thesis: for E being Enumeration of F st union F c= Seg (1 + (len f)) holds
for Es being Enumeration of swap (F,(1 + (len f)),(2 + (len f))) st Es = Swap (E,(1 + (len f)),(2 + (len f))) holds
for CE1, CES being FinSequence of D * st CE1 = (SignGenOp ((f ^ <*d*>),A,F)) * E & CES = (SignGenOp (((f ^ <*d1*>) ^ <*d2*>),A,(swap (F,(1 + (len f)),(2 + (len f)))))) * Es holds
for s being FinSequence st s in doms CE1 & rng s c= dom f holds
( s in doms CES & (App CE1) . s = (App CES) . s )

set I = the_inverseOp_wrt A;
let E be Enumeration of F; :: thesis: ( union F c= Seg (1 + (len f)) implies for Es being Enumeration of swap (F,(1 + (len f)),(2 + (len f))) st Es = Swap (E,(1 + (len f)),(2 + (len f))) holds
for CE1, CES being FinSequence of D * st CE1 = (SignGenOp ((f ^ <*d*>),A,F)) * E & CES = (SignGenOp (((f ^ <*d1*>) ^ <*d2*>),A,(swap (F,(1 + (len f)),(2 + (len f)))))) * Es holds
for s being FinSequence st s in doms CE1 & rng s c= dom f holds
( s in doms CES & (App CE1) . s = (App CES) . s ) )

assume A1: union F c= Seg (1 + (len f)) ; :: thesis: for Es being Enumeration of swap (F,(1 + (len f)),(2 + (len f))) st Es = Swap (E,(1 + (len f)),(2 + (len f))) holds
for CE1, CES being FinSequence of D * st CE1 = (SignGenOp ((f ^ <*d*>),A,F)) * E & CES = (SignGenOp (((f ^ <*d1*>) ^ <*d2*>),A,(swap (F,(1 + (len f)),(2 + (len f)))))) * Es holds
for s being FinSequence st s in doms CE1 & rng s c= dom f holds
( s in doms CES & (App CE1) . s = (App CES) . s )

set EF = swap (F,(1 + (len f)),(2 + (len f)));
let Ee be Enumeration of swap (F,(1 + (len f)),(2 + (len f))); :: thesis: ( Ee = Swap (E,(1 + (len f)),(2 + (len f))) implies for CE1, CES being FinSequence of D * st CE1 = (SignGenOp ((f ^ <*d*>),A,F)) * E & CES = (SignGenOp (((f ^ <*d1*>) ^ <*d2*>),A,(swap (F,(1 + (len f)),(2 + (len f)))))) * Ee holds
for s being FinSequence st s in doms CE1 & rng s c= dom f holds
( s in doms CES & (App CE1) . s = (App CES) . s ) )

assume A2: Ee = Swap (E,(1 + (len f)),(2 + (len f))) ; :: thesis: for CE1, CES being FinSequence of D * st CE1 = (SignGenOp ((f ^ <*d*>),A,F)) * E & CES = (SignGenOp (((f ^ <*d1*>) ^ <*d2*>),A,(swap (F,(1 + (len f)),(2 + (len f)))))) * Ee holds
for s being FinSequence st s in doms CE1 & rng s c= dom f holds
( s in doms CES & (App CE1) . s = (App CES) . s )

let CE1, CEE be FinSequence of D * ; :: thesis: ( CE1 = (SignGenOp ((f ^ <*d*>),A,F)) * E & CEE = (SignGenOp (((f ^ <*d1*>) ^ <*d2*>),A,(swap (F,(1 + (len f)),(2 + (len f)))))) * Ee implies for s being FinSequence st s in doms CE1 & rng s c= dom f holds
( s in doms CEE & (App CE1) . s = (App CEE) . s ) )

assume A3: ( CE1 = (SignGenOp ((f ^ <*d*>),A,F)) * E & CEE = (SignGenOp (((f ^ <*d1*>) ^ <*d2*>),A,(swap (F,(1 + (len f)),(2 + (len f)))))) * Ee ) ; :: thesis: for s being FinSequence st s in doms CE1 & rng s c= dom f holds
( s in doms CEE & (App CE1) . s = (App CEE) . s )

let s be FinSequence; :: thesis: ( s in doms CE1 & rng s c= dom f implies ( s in doms CEE & (App CE1) . s = (App CEE) . s ) )
assume A4: ( s in doms CE1 & rng s c= dom f ) ; :: thesis: ( s in doms CEE & (App CE1) . s = (App CEE) . s )
A5: 1 + (len f) < (1 + (len f)) + 1 by NAT_1:13;
then A6: not 2 + (len f) in union F by A1, FINSEQ_1:1;
A7: len ((f ^ <*d1*>) ^ <*d2*>) = (len (f ^ <*d1*>)) + 1 by FINSEQ_2:16
.= ((len f) + 1) + 1 by FINSEQ_2:16 ;
len (f ^ <*d*>) = (len f) + 1 by FINSEQ_2:16;
then A8: doms CE1 c= doms CEE by A3, A5, A6, A7, Th11, Th107;
hence s in doms CEE by A4; :: thesis: (App CE1) . s = (App CEE) . s
A9: ( len E = len CE1 & len CE1 = len s & len s = len CEE ) by A3, A8, Th47, A4, CARD_1:def 7;
A10: ( len ((App CEE) . s) = len s & len s = len ((App CE1) . s) ) by A8, A4, Def9;
for i being Nat st 1 <= i & i <= len s holds
((App CE1) . s) . i = ((App CEE) . s) . i
proof
let i be Nat; :: thesis: ( 1 <= i & i <= len s implies ((App CE1) . s) . i = ((App CEE) . s) . i )
assume A11: ( 1 <= i & i <= len s ) ; :: thesis: ((App CE1) . s) . i = ((App CEE) . s) . i
reconsider si = s . i as Nat by A4;
A12: ( i in dom CE1 & i in dom CEE & i in dom E & i in dom s ) by A11, A9, FINSEQ_3:25;
then A13: ( ((App CE1) . s) . i = (CE1 . i) . si & CE1 . i = SignGen ((f ^ <*d*>),A,(E . i)) & ((App CEE) . s) . i = (CEE . i) . si & CEE . i = SignGen (((f ^ <*d1*>) ^ <*d2*>),A,(Ee . i)) ) by A3, A4, A8, Def9, Th80;
A14: si in rng s by A12, FUNCT_1:def 3;
then A15: ( si <= len f & len f < (len f) + 2 & len f < (len f) + 1 ) by A4, FINSEQ_3:25, NAT_1:16;
dom f c= dom (f ^ <*d*>) by FINSEQ_1:26;
then si in dom (f ^ <*d*>) by A14, A4;
then A16: si in dom (SignGen ((f ^ <*d*>),A,(E . i))) by Def11;
A17: (f ^ <*d1*>) ^ <*d2*> = f ^ <*d1,d2*> by FINSEQ_1:32;
dom f c= dom (f ^ <*d1,d2*>) by FINSEQ_1:26;
then si in dom ((f ^ <*d1*>) ^ <*d2*>) by A14, A4, A17;
then A18: si in dom (SignGen (((f ^ <*d1*>) ^ <*d2*>),A,(Ee . i))) by Def11;
per cases ( si in E . i or not si in E . i ) ;
suppose A19: si in E . i ; :: thesis: ((App CE1) . s) . i = ((App CEE) . s) . i
then A20: (SignGen ((f ^ <*d*>),A,(E . i))) . si = (the_inverseOp_wrt A) . ((f ^ <*d*>) . si) by A16, Def11
.= (the_inverseOp_wrt A) . (f . si) by A14, A4, FINSEQ_1:def 7 ;
per cases ( 1 + (len f) in E . i or not 1 + (len f) in E . i ) ;
suppose 1 + (len f) in E . i ; :: thesis: ((App CE1) . s) . i = ((App CEE) . s) . i
then A21: Ee . i = ((E . i) \ {(1 + (len f))}) \/ {(2 + (len f))} by A2, A12, Def4;
si in (E . i) \ {(1 + (len f))} by A15, A19, ZFMISC_1:56;
then si in Ee . i by A21, ZFMISC_1:136;
then (SignGen (((f ^ <*d1*>) ^ <*d2*>),A,(Ee . i))) . si = (the_inverseOp_wrt A) . ((f ^ <*d1,d2*>) . si) by A17, A18, Def11
.= (the_inverseOp_wrt A) . (f . si) by A14, A4, FINSEQ_1:def 7 ;
hence ((App CE1) . s) . i = ((App CEE) . s) . i by A20, A13; :: thesis: verum
end;
suppose not 1 + (len f) in E . i ; :: thesis: ((App CE1) . s) . i = ((App CEE) . s) . i
then Ee . i = (E . i) \/ {(1 + (len f))} by A2, A12, Def4;
then si in Ee . i by A19, XBOOLE_0:def 3;
then (SignGen (((f ^ <*d1*>) ^ <*d2*>),A,(Ee . i))) . si = (the_inverseOp_wrt A) . ((f ^ <*d1,d2*>) . si) by A17, A18, Def11
.= (the_inverseOp_wrt A) . (f . si) by A14, A4, FINSEQ_1:def 7 ;
hence ((App CE1) . s) . i = ((App CEE) . s) . i by A20, A13; :: thesis: verum
end;
end;
end;
suppose A22: not si in E . i ; :: thesis: ((App CE1) . s) . i = ((App CEE) . s) . i
then A23: (SignGen ((f ^ <*d*>),A,(E . i))) . si = (f ^ <*d*>) . si by A16, Def11
.= f . si by A14, A4, FINSEQ_1:def 7 ;
per cases ( 1 + (len f) in E . i or not 1 + (len f) in E . i ) ;
suppose 1 + (len f) in E . i ; :: thesis: ((App CE1) . s) . i = ((App CEE) . s) . i
then A24: Ee . i = ((E . i) \ {(1 + (len f))}) \/ {(2 + (len f))} by A2, A12, Def4;
not si in (E . i) \ {(1 + (len f))} by A22;
then not si in Ee . i by A24, A15, ZFMISC_1:136;
then (SignGen (((f ^ <*d1*>) ^ <*d2*>),A,(Ee . i))) . si = (f ^ <*d1,d2*>) . si by A17, A18, Def11
.= f . si by A14, A4, FINSEQ_1:def 7 ;
hence ((App CE1) . s) . i = ((App CEE) . s) . i by A23, A13; :: thesis: verum
end;
suppose not 1 + (len f) in E . i ; :: thesis: ((App CE1) . s) . i = ((App CEE) . s) . i
then Ee . i = (E . i) \/ {(1 + (len f))} by A2, A12, Def4;
then not si in Ee . i by A15, A22, ZFMISC_1:136;
then (SignGen (((f ^ <*d1*>) ^ <*d2*>),A,(Ee . i))) . si = (f ^ <*d1,d2*>) . si by A17, A18, Def11
.= f . si by A14, A4, FINSEQ_1:def 7 ;
hence ((App CE1) . s) . i = ((App CEE) . s) . i by A23, A13; :: thesis: verum
end;
end;
end;
end;
end;
hence (App CE1) . s = (App CEE) . s by A10; :: thesis: verum