let n be Element of NAT ; :: thesis: for R being good Ring
for a being Data-Location of R
for loc being Element of NAT
for s1, s2 being State of (SCM R) st not R is trivial holds
for p being non NAT -defined autonomic FinPartState of st p c= s1 & p c= s2 & CurInstr ((ProgramPart (Comput ((ProgramPart s1),s1,n))),(Comput ((ProgramPart s1),s1,n))) = a =0_goto loc & loc <> succ (IC (Comput ((ProgramPart s1),s1,n))) holds
( (Comput ((ProgramPart s1),s1,n)) . a = 0. R iff (Comput ((ProgramPart s2),s2,n)) . a = 0. R )

let R be good Ring; :: thesis: for a being Data-Location of R
for loc being Element of NAT
for s1, s2 being State of (SCM R) st not R is trivial holds
for p being non NAT -defined autonomic FinPartState of st p c= s1 & p c= s2 & CurInstr ((ProgramPart (Comput ((ProgramPart s1),s1,n))),(Comput ((ProgramPart s1),s1,n))) = a =0_goto loc & loc <> succ (IC (Comput ((ProgramPart s1),s1,n))) holds
( (Comput ((ProgramPart s1),s1,n)) . a = 0. R iff (Comput ((ProgramPart s2),s2,n)) . a = 0. R )

let a be Data-Location of R; :: thesis: for loc being Element of NAT
for s1, s2 being State of (SCM R) st not R is trivial holds
for p being non NAT -defined autonomic FinPartState of st p c= s1 & p c= s2 & CurInstr ((ProgramPart (Comput ((ProgramPart s1),s1,n))),(Comput ((ProgramPart s1),s1,n))) = a =0_goto loc & loc <> succ (IC (Comput ((ProgramPart s1),s1,n))) holds
( (Comput ((ProgramPart s1),s1,n)) . a = 0. R iff (Comput ((ProgramPart s2),s2,n)) . a = 0. R )

let loc be Element of NAT ; :: thesis: for s1, s2 being State of (SCM R) st not R is trivial holds
for p being non NAT -defined autonomic FinPartState of st p c= s1 & p c= s2 & CurInstr ((ProgramPart (Comput ((ProgramPart s1),s1,n))),(Comput ((ProgramPart s1),s1,n))) = a =0_goto loc & loc <> succ (IC (Comput ((ProgramPart s1),s1,n))) holds
( (Comput ((ProgramPart s1),s1,n)) . a = 0. R iff (Comput ((ProgramPart s2),s2,n)) . a = 0. R )

let s1, s2 be State of (SCM R); :: thesis: ( not R is trivial implies for p being non NAT -defined autonomic FinPartState of st p c= s1 & p c= s2 & CurInstr ((ProgramPart (Comput ((ProgramPart s1),s1,n))),(Comput ((ProgramPart s1),s1,n))) = a =0_goto loc & loc <> succ (IC (Comput ((ProgramPart s1),s1,n))) holds
( (Comput ((ProgramPart s1),s1,n)) . a = 0. R iff (Comput ((ProgramPart s2),s2,n)) . a = 0. R ) )

assume A1: not R is trivial ; :: thesis: for p being non NAT -defined autonomic FinPartState of st p c= s1 & p c= s2 & CurInstr ((ProgramPart (Comput ((ProgramPart s1),s1,n))),(Comput ((ProgramPart s1),s1,n))) = a =0_goto loc & loc <> succ (IC (Comput ((ProgramPart s1),s1,n))) holds
( (Comput ((ProgramPart s1),s1,n)) . a = 0. R iff (Comput ((ProgramPart s2),s2,n)) . a = 0. R )

set Cs2i1 = Comput ((ProgramPart s2),s2,(n + 1));
set Cs1i1 = Comput ((ProgramPart s1),s1,(n + 1));
set I = CurInstr ((ProgramPart (Comput ((ProgramPart s1),s1,n))),(Comput ((ProgramPart s1),s1,n)));
let p be non NAT -defined autonomic FinPartState of ; :: thesis: ( p c= s1 & p c= s2 & CurInstr ((ProgramPart (Comput ((ProgramPart s1),s1,n))),(Comput ((ProgramPart s1),s1,n))) = a =0_goto loc & loc <> succ (IC (Comput ((ProgramPart s1),s1,n))) implies ( (Comput ((ProgramPart s1),s1,n)) . a = 0. R iff (Comput ((ProgramPart s2),s2,n)) . a = 0. R ) )
assume A2: ( p c= s1 & p c= s2 ) ; :: thesis: ( not CurInstr ((ProgramPart (Comput ((ProgramPart s1),s1,n))),(Comput ((ProgramPart s1),s1,n))) = a =0_goto loc or not loc <> succ (IC (Comput ((ProgramPart s1),s1,n))) or ( (Comput ((ProgramPart s1),s1,n)) . a = 0. R iff (Comput ((ProgramPart s2),s2,n)) . a = 0. R ) )
A3: CurInstr ((ProgramPart (Comput ((ProgramPart s1),s1,n))),(Comput ((ProgramPart s1),s1,n))) = CurInstr ((ProgramPart (Comput ((ProgramPart s2),s2,n))),(Comput ((ProgramPart s2),s2,n))) by A1, A2, Th28;
set Cs2i = Comput ((ProgramPart s2),s2,n);
set Cs1i = Comput ((ProgramPart s1),s1,n);
A4: Comput ((ProgramPart s1),s1,(n + 1)) = Following ((ProgramPart s1),(Comput ((ProgramPart s1),s1,n))) by EXTPRO_1:4
.= Exec ((CurInstr ((ProgramPart (Comput ((ProgramPart s1),s1,n))),(Comput ((ProgramPart s1),s1,n)))),(Comput ((ProgramPart s1),s1,n))) by AMI_1:123 ;
A5: Comput ((ProgramPart s2),s2,(n + 1)) = Following ((ProgramPart s2),(Comput ((ProgramPart s2),s2,n))) by EXTPRO_1:4
.= Exec ((CurInstr ((ProgramPart (Comput ((ProgramPart s2),s2,n))),(Comput ((ProgramPart s2),s2,n)))),(Comput ((ProgramPart s2),s2,n))) by AMI_1:123 ;
A6: ( ((Comput ((ProgramPart s1),s1,(n + 1))) | (dom p)) . (IC (SCM R)) = (Comput ((ProgramPart s1),s1,(n + 1))) . (IC (SCM R)) & ((Comput ((ProgramPart s2),s2,(n + 1))) | (dom p)) . (IC (SCM R)) = (Comput ((ProgramPart s2),s2,(n + 1))) . (IC (SCM R)) ) by A1, Th25, FUNCT_1:72;
assume that
A7: CurInstr ((ProgramPart (Comput ((ProgramPart s1),s1,n))),(Comput ((ProgramPart s1),s1,n))) = a =0_goto loc and
A8: loc <> succ (IC (Comput ((ProgramPart s1),s1,n))) ; :: thesis: ( (Comput ((ProgramPart s1),s1,n)) . a = 0. R iff (Comput ((ProgramPart s2),s2,n)) . a = 0. R )
A9: IC (Comput ((ProgramPart s1),s1,n)) = IC (Comput ((ProgramPart s2),s2,n)) by A1, A2, Th28;
hereby :: thesis: ( (Comput ((ProgramPart s2),s2,n)) . a = 0. R implies (Comput ((ProgramPart s1),s1,n)) . a = 0. R )
assume ( (Comput ((ProgramPart s1),s1,n)) . a = 0. R & (Comput ((ProgramPart s2),s2,n)) . a <> 0. R ) ; :: thesis: contradiction
then ( (Comput ((ProgramPart s1),s1,(n + 1))) . (IC (SCM R)) = loc & (Comput ((ProgramPart s2),s2,(n + 1))) . (IC (SCM R)) = succ (IC (Comput ((ProgramPart s2),s2,n))) ) by A3, A4, A5, A7, SCMRING2:18;
hence contradiction by A2, A9, A6, A8, EXTPRO_1:def 9; :: thesis: verum
end;
assume that
A10: (Comput ((ProgramPart s2),s2,n)) . a = 0. R and
A11: (Comput ((ProgramPart s1),s1,n)) . a <> 0. R ; :: thesis: contradiction
A12: (Comput ((ProgramPart s1),s1,(n + 1))) . (IC (SCM R)) = succ (IC (Comput ((ProgramPart s1),s1,n))) by A4, A7, A11, SCMRING2:18;
(Comput ((ProgramPart s2),s2,(n + 1))) . (IC (SCM R)) = loc by A3, A5, A7, A10, SCMRING2:18;
hence contradiction by A2, A6, A8, A12, EXTPRO_1:def 9; :: thesis: verum