thus SCM is homogeneous :: thesis: ( SCM is with_explicit_jumps & SCM is without_implicit_jumps )
proof
let I, J be Instruction of SCM ; :: according to AMISTD_2:def 4 :: thesis: ( not InsCode I = InsCode J or dom (AddressPart I) = dom (AddressPart J) )
assume A1: InsCode I = InsCode J ; :: thesis: dom (AddressPart I) = dom (AddressPart J)
A2: ( J = [0 ,{} ] or ex a, b being Data-Location st J = a := b or ex a, b being Data-Location st J = AddTo a,b or ex a, b being Data-Location st J = SubFrom a,b or ex a, b being Data-Location st J = MultBy a,b or ex a, b being Data-Location st J = Divide a,b or ex k being natural number st J = SCM-goto k or ex a being Data-Location ex k being natural number st J = a =0_goto k or ex a being Data-Location ex k being natural number st J = a >0_goto k ) by AMI_3:69;
per cases ( I = [0 ,{} ] or ex a, b being Data-Location st I = a := b or ex a, b being Data-Location st I = AddTo a,b or ex a, b being Data-Location st I = SubFrom a,b or ex a, b being Data-Location st I = MultBy a,b or ex a, b being Data-Location st I = Divide a,b or ex k being natural number st I = SCM-goto k or ex a being Data-Location ex k being natural number st I = a =0_goto k or ex a being Data-Location ex k being natural number st I = a >0_goto k ) by AMI_3:69;
suppose ex a, b being Data-Location st I = a := b ; :: thesis: dom (AddressPart I) = dom (AddressPart J)
then consider a, b being Data-Location such that
A3: I = a := b ;
A4: InsCode I = 1 by A3, MCART_1:7;
now
per cases ( J = [0 ,{} ] or ex a, b being Data-Location st J = a := b or ex a, b being Data-Location st J = AddTo a,b or ex a, b being Data-Location st J = SubFrom a,b or ex a, b being Data-Location st J = MultBy a,b or ex a, b being Data-Location st J = Divide a,b or ex k being natural number st J = SCM-goto k or ex a being Data-Location ex k being natural number st J = a =0_goto k or ex a being Data-Location ex k being natural number st J = a >0_goto k ) by AMI_3:69;
suppose ex a, b being Data-Location st J = a := b ; :: thesis: dom (AddressPart I) = dom (AddressPart J)
then consider d1, d2 being Data-Location such that
A5: J = d1 := d2 ;
thus dom (AddressPart I) = dom <*a,b*> by A3, MCART_1:def 2
.= Seg 2 by FINSEQ_3:29
.= dom <*d1,d2*> by FINSEQ_3:29
.= dom (AddressPart J) by A5, MCART_1:def 2 ; :: thesis: verum
end;
suppose ( ex a, b being Data-Location st J = AddTo a,b or ex a, b being Data-Location st J = SubFrom a,b or ex a, b being Data-Location st J = MultBy a,b or ex a, b being Data-Location st J = Divide a,b or ex k being natural number st J = SCM-goto k or ex a being Data-Location ex k being natural number st J = a =0_goto k or ex a being Data-Location ex k being natural number st J = a >0_goto k ) ; :: thesis: dom (AddressPart I) = dom (AddressPart J)
end;
end;
end;
hence dom (AddressPart I) = dom (AddressPart J) ; :: thesis: verum
end;
suppose ex a, b being Data-Location st I = AddTo a,b ; :: thesis: dom (AddressPart I) = dom (AddressPart J)
then consider a, b being Data-Location such that
A6: I = AddTo a,b ;
A7: InsCode I = 2 by A6, MCART_1:7;
now
per cases ( J = [0 ,{} ] or ex a, b being Data-Location st J = AddTo a,b or ex a, b being Data-Location st J = a := b or ex a, b being Data-Location st J = SubFrom a,b or ex a, b being Data-Location st J = MultBy a,b or ex a, b being Data-Location st J = Divide a,b or ex k being natural number st J = SCM-goto k or ex a being Data-Location ex k being natural number st J = a =0_goto k or ex a being Data-Location ex k being natural number st J = a >0_goto k ) by AMI_3:69;
suppose ex a, b being Data-Location st J = AddTo a,b ; :: thesis: dom (AddressPart I) = dom (AddressPart J)
then consider d1, d2 being Data-Location such that
A8: J = AddTo d1,d2 ;
thus dom (AddressPart I) = dom <*a,b*> by A6, MCART_1:def 2
.= Seg 2 by FINSEQ_3:29
.= dom <*d1,d2*> by FINSEQ_3:29
.= dom (AddressPart J) by A8, MCART_1:def 2 ; :: thesis: verum
end;
suppose ( ex a, b being Data-Location st J = a := b or ex a, b being Data-Location st J = SubFrom a,b or ex a, b being Data-Location st J = MultBy a,b or ex a, b being Data-Location st J = Divide a,b or ex k being natural number st J = SCM-goto k or ex a being Data-Location ex k being natural number st J = a =0_goto k or ex a being Data-Location ex k being natural number st J = a >0_goto k ) ; :: thesis: dom (AddressPart I) = dom (AddressPart J)
end;
end;
end;
hence dom (AddressPart I) = dom (AddressPart J) ; :: thesis: verum
end;
suppose ex a, b being Data-Location st I = SubFrom a,b ; :: thesis: dom (AddressPart I) = dom (AddressPart J)
then consider a, b being Data-Location such that
A9: I = SubFrom a,b ;
A10: InsCode I = 3 by A9, MCART_1:7;
now
per cases ( J = [0 ,{} ] or ex a, b being Data-Location st J = SubFrom a,b or ex a, b being Data-Location st J = a := b or ex a, b being Data-Location st J = AddTo a,b or ex a, b being Data-Location st J = MultBy a,b or ex a, b being Data-Location st J = Divide a,b or ex k being natural number st J = SCM-goto k or ex a being Data-Location ex k being natural number st J = a =0_goto k or ex a being Data-Location ex k being natural number st J = a >0_goto k ) by AMI_3:69;
suppose ( ex a, b being Data-Location st J = a := b or ex a, b being Data-Location st J = AddTo a,b or ex a, b being Data-Location st J = MultBy a,b or ex a, b being Data-Location st J = Divide a,b or ex k being natural number st J = SCM-goto k or ex a being Data-Location ex k being natural number st J = a =0_goto k or ex a being Data-Location ex k being natural number st J = a >0_goto k ) ; :: thesis: dom (AddressPart I) = dom (AddressPart J)
end;
end;
end;
hence dom (AddressPart I) = dom (AddressPart J) ; :: thesis: verum
end;
suppose ex a, b being Data-Location st I = MultBy a,b ; :: thesis: dom (AddressPart I) = dom (AddressPart J)
then consider a, b being Data-Location such that
A12: I = MultBy a,b ;
A13: InsCode I = 4 by A12, MCART_1:7;
now
per cases ( J = [0 ,{} ] or ex a, b being Data-Location st J = MultBy a,b or ex a, b being Data-Location st J = a := b or ex a, b being Data-Location st J = AddTo a,b or ex a, b being Data-Location st J = SubFrom a,b or ex a, b being Data-Location st J = Divide a,b or ex k being natural number st J = SCM-goto k or ex a being Data-Location ex k being natural number st J = a =0_goto k or ex a being Data-Location ex k being natural number st J = a >0_goto k ) by AMI_3:69;
suppose ( ex a, b being Data-Location st J = a := b or ex a, b being Data-Location st J = AddTo a,b or ex a, b being Data-Location st J = SubFrom a,b or ex a, b being Data-Location st J = Divide a,b or ex k being natural number st J = SCM-goto k or ex a being Data-Location ex k being natural number st J = a =0_goto k or ex a being Data-Location ex k being natural number st J = a >0_goto k ) ; :: thesis: dom (AddressPart I) = dom (AddressPart J)
end;
end;
end;
hence dom (AddressPart I) = dom (AddressPart J) ; :: thesis: verum
end;
suppose ex a, b being Data-Location st I = Divide a,b ; :: thesis: dom (AddressPart I) = dom (AddressPart J)
then consider a, b being Data-Location such that
A15: I = Divide a,b ;
A16: InsCode I = 5 by A15, MCART_1:7;
now
per cases ( J = [0 ,{} ] or ex a, b being Data-Location st J = Divide a,b or ex a, b being Data-Location st J = a := b or ex a, b being Data-Location st J = AddTo a,b or ex a, b being Data-Location st J = SubFrom a,b or ex a, b being Data-Location st J = MultBy a,b or ex k being natural number st J = SCM-goto k or ex a being Data-Location ex k being natural number st J = a =0_goto k or ex a being Data-Location ex k being natural number st J = a >0_goto k ) by AMI_3:69;
suppose ( ex a, b being Data-Location st J = a := b or ex a, b being Data-Location st J = AddTo a,b or ex a, b being Data-Location st J = SubFrom a,b or ex a, b being Data-Location st J = MultBy a,b or ex k being natural number st J = SCM-goto k or ex a being Data-Location ex k being natural number st J = a =0_goto k or ex a being Data-Location ex k being natural number st J = a >0_goto k ) ; :: thesis: dom (AddressPart I) = dom (AddressPart J)
end;
end;
end;
hence dom (AddressPart I) = dom (AddressPart J) ; :: thesis: verum
end;
suppose ex k being natural number st I = SCM-goto k ; :: thesis: dom (AddressPart I) = dom (AddressPart J)
then consider k being natural number such that
A18: I = SCM-goto k ;
A19: InsCode I = 6 by A18, MCART_1:7;
now
per cases ( J = [0 ,{} ] or ex k being natural number st J = SCM-goto k or ex a, b being Data-Location st J = a := b or ex a, b being Data-Location st J = AddTo a,b or ex a, b being Data-Location st J = SubFrom a,b or ex a, b being Data-Location st J = MultBy a,b or ex a, b being Data-Location st J = Divide a,b or ex a being Data-Location ex k being natural number st J = a =0_goto k or ex a being Data-Location ex k being natural number st J = a >0_goto k ) by AMI_3:69;
suppose ( ex a, b being Data-Location st J = a := b or ex a, b being Data-Location st J = AddTo a,b or ex a, b being Data-Location st J = SubFrom a,b or ex a, b being Data-Location st J = MultBy a,b or ex a, b being Data-Location st J = Divide a,b or ex a being Data-Location ex k being natural number st J = a =0_goto k or ex a being Data-Location ex k being natural number st J = a >0_goto k ) ; :: thesis: dom (AddressPart I) = dom (AddressPart J)
end;
end;
end;
hence dom (AddressPart I) = dom (AddressPart J) ; :: thesis: verum
end;
suppose ex a being Data-Location ex k being natural number st I = a =0_goto k ; :: thesis: dom (AddressPart I) = dom (AddressPart J)
then consider a being Data-Location , k being natural number such that
A21: I = a =0_goto k ;
A22: InsCode I = 7 by A21, MCART_1:7;
now
per cases ( J = [0 ,{} ] or ex d1 being Data-Location ex k being natural number st J = d1 =0_goto k or ex a, b being Data-Location st J = a := b or ex a, b being Data-Location st J = AddTo a,b or ex a, b being Data-Location st J = SubFrom a,b or ex a, b being Data-Location st J = MultBy a,b or ex a, b being Data-Location st J = Divide a,b or ex k being natural number st J = SCM-goto k or ex a being Data-Location ex k being natural number st J = a >0_goto k ) by AMI_3:69;
suppose ex d1 being Data-Location ex k being natural number st J = d1 =0_goto k ; :: thesis: dom (AddressPart I) = dom (AddressPart J)
then consider d1 being Data-Location , k1 being natural number such that
A23: J = d1 =0_goto k1 ;
thus dom (AddressPart I) = dom <*k,a*> by A21, MCART_1:def 2
.= Seg 2 by FINSEQ_3:29
.= dom <*k1,d1*> by FINSEQ_3:29
.= dom (AddressPart J) by A23, MCART_1:def 2 ; :: thesis: verum
end;
suppose ( ex a, b being Data-Location st J = a := b or ex a, b being Data-Location st J = AddTo a,b or ex a, b being Data-Location st J = SubFrom a,b or ex a, b being Data-Location st J = MultBy a,b or ex a, b being Data-Location st J = Divide a,b or ex k being natural number st J = SCM-goto k or ex a being Data-Location ex k being natural number st J = a >0_goto k ) ; :: thesis: dom (AddressPart I) = dom (AddressPart J)
end;
end;
end;
hence dom (AddressPart I) = dom (AddressPart J) ; :: thesis: verum
end;
suppose ex a being Data-Location ex k being natural number st I = a >0_goto k ; :: thesis: dom (AddressPart I) = dom (AddressPart J)
then consider a being Data-Location , k being natural number such that
A24: I = a >0_goto k ;
A25: InsCode I = 8 by A24, MCART_1:7;
now
per cases ( J = [0 ,{} ] or ex d1 being Data-Location ex k being natural number st J = d1 >0_goto k or ex a, b being Data-Location st J = a := b or ex a, b being Data-Location st J = AddTo a,b or ex a, b being Data-Location st J = SubFrom a,b or ex a, b being Data-Location st J = MultBy a,b or ex a, b being Data-Location st J = Divide a,b or ex k being natural number st J = SCM-goto k or ex a being Data-Location ex k being natural number st J = a =0_goto k ) by AMI_3:69;
suppose ex d1 being Data-Location ex k being natural number st J = d1 >0_goto k ; :: thesis: dom (AddressPart I) = dom (AddressPart J)
then consider d1 being Data-Location , k1 being natural number such that
A26: J = d1 >0_goto k1 ;
thus dom (AddressPart I) = dom <*k,a*> by A24, MCART_1:def 2
.= Seg 2 by FINSEQ_3:29
.= dom <*k1,d1*> by FINSEQ_3:29
.= dom (AddressPart J) by A26, MCART_1:def 2 ; :: thesis: verum
end;
suppose ( ex a, b being Data-Location st J = a := b or ex a, b being Data-Location st J = AddTo a,b or ex a, b being Data-Location st J = SubFrom a,b or ex a, b being Data-Location st J = MultBy a,b or ex a, b being Data-Location st J = Divide a,b or ex k being natural number st J = SCM-goto k or ex a being Data-Location ex k being natural number st J = a =0_goto k ) ; :: thesis: dom (AddressPart I) = dom (AddressPart J)
end;
end;
end;
hence dom (AddressPart I) = dom (AddressPart J) ; :: thesis: verum
end;
end;
end;
thus SCM is with_explicit_jumps :: thesis: SCM is without_implicit_jumps
proof
let I be Instruction of SCM ; :: according to AMISTD_2:def 8 :: thesis: I is with_explicit_jumps
let f be set ; :: according to AMISTD_2:def 6 :: thesis: ( not f in JUMP I or ex b1 being set st
( b1 in dom (AddressPart I) & f = (AddressPart I) . b1 & (product" (AddressParts (InsCode I))) . b1 = NAT ) )

assume A27: f in JUMP I ; :: thesis: ex b1 being set st
( b1 in dom (AddressPart I) & f = (AddressPart I) . b1 & (product" (AddressParts (InsCode I))) . b1 = NAT )

per cases ( I = [0 ,{} ] or ex a, b being Data-Location st I = a := b or ex a, b being Data-Location st I = AddTo a,b or ex a, b being Data-Location st I = SubFrom a,b or ex a, b being Data-Location st I = MultBy a,b or ex a, b being Data-Location st I = Divide a,b or ex k being natural number st I = SCM-goto k or ex a being Data-Location ex k1 being natural number st I = a =0_goto k1 or ex a being Data-Location ex k1 being natural number st I = a >0_goto k1 ) by AMI_3:69;
suppose I = [0 ,{} ] ; :: thesis: ex b1 being set st
( b1 in dom (AddressPart I) & f = (AddressPart I) . b1 & (product" (AddressParts (InsCode I))) . b1 = NAT )

hence ex b1 being set st
( b1 in dom (AddressPart I) & f = (AddressPart I) . b1 & (product" (AddressParts (InsCode I))) . b1 = NAT ) by A27, AMI_3:71; :: thesis: verum
end;
suppose ex a, b being Data-Location st I = a := b ; :: thesis: ex b1 being set st
( b1 in dom (AddressPart I) & f = (AddressPart I) . b1 & (product" (AddressParts (InsCode I))) . b1 = NAT )

hence ex b1 being set st
( b1 in dom (AddressPart I) & f = (AddressPart I) . b1 & (product" (AddressParts (InsCode I))) . b1 = NAT ) by A27; :: thesis: verum
end;
suppose ex a, b being Data-Location st I = AddTo a,b ; :: thesis: ex b1 being set st
( b1 in dom (AddressPart I) & f = (AddressPart I) . b1 & (product" (AddressParts (InsCode I))) . b1 = NAT )

hence ex b1 being set st
( b1 in dom (AddressPart I) & f = (AddressPart I) . b1 & (product" (AddressParts (InsCode I))) . b1 = NAT ) by A27; :: thesis: verum
end;
suppose ex a, b being Data-Location st I = SubFrom a,b ; :: thesis: ex b1 being set st
( b1 in dom (AddressPart I) & f = (AddressPart I) . b1 & (product" (AddressParts (InsCode I))) . b1 = NAT )

hence ex b1 being set st
( b1 in dom (AddressPart I) & f = (AddressPart I) . b1 & (product" (AddressParts (InsCode I))) . b1 = NAT ) by A27; :: thesis: verum
end;
suppose ex a, b being Data-Location st I = MultBy a,b ; :: thesis: ex b1 being set st
( b1 in dom (AddressPart I) & f = (AddressPart I) . b1 & (product" (AddressParts (InsCode I))) . b1 = NAT )

hence ex b1 being set st
( b1 in dom (AddressPart I) & f = (AddressPart I) . b1 & (product" (AddressParts (InsCode I))) . b1 = NAT ) by A27; :: thesis: verum
end;
suppose ex a, b being Data-Location st I = Divide a,b ; :: thesis: ex b1 being set st
( b1 in dom (AddressPart I) & f = (AddressPart I) . b1 & (product" (AddressParts (InsCode I))) . b1 = NAT )

hence ex b1 being set st
( b1 in dom (AddressPart I) & f = (AddressPart I) . b1 & (product" (AddressParts (InsCode I))) . b1 = NAT ) by A27; :: thesis: verum
end;
suppose A28: ex k being natural number st I = SCM-goto k ; :: thesis: ex b1 being set st
( b1 in dom (AddressPart I) & f = (AddressPart I) . b1 & (product" (AddressParts (InsCode I))) . b1 = NAT )

end;
suppose A31: ex a being Data-Location ex k1 being natural number st I = a =0_goto k1 ; :: thesis: ex b1 being set st
( b1 in dom (AddressPart I) & f = (AddressPart I) . b1 & (product" (AddressParts (InsCode I))) . b1 = NAT )

end;
suppose A34: ex a being Data-Location ex k1 being natural number st I = a >0_goto k1 ; :: thesis: ex b1 being set st
( b1 in dom (AddressPart I) & f = (AddressPart I) . b1 & (product" (AddressParts (InsCode I))) . b1 = NAT )

end;
end;
end;
let I be Instruction of SCM ; :: according to AMISTD_2:def 9 :: thesis: I is without_implicit_jumps
let f be set ; :: according to AMISTD_2:def 7 :: thesis: ( for b1 being set holds
( not b1 in dom (AddressPart I) or not f = (AddressPart I) . b1 or not (product" (AddressParts (InsCode I))) . b1 = NAT ) or f in JUMP I )

given k being set such that A37: k in dom (AddressPart I) and
A38: f = (AddressPart I) . k and
A39: (product" (AddressParts (InsCode I))) . k = NAT ; :: thesis: f in JUMP I
per cases ( I = [0 ,{} ] or ex a, b being Data-Location st I = a := b or ex a, b being Data-Location st I = AddTo a,b or ex a, b being Data-Location st I = SubFrom a,b or ex a, b being Data-Location st I = MultBy a,b or ex a, b being Data-Location st I = Divide a,b or ex k being natural number st I = SCM-goto k or ex a being Data-Location ex k being natural number st I = a =0_goto k or ex a being Data-Location ex k1 being natural number st I = a >0_goto k1 ) by AMI_3:69;
suppose I = [0 ,{} ] ; :: thesis: f in JUMP I
end;
suppose ex a, b being Data-Location st I = a := b ; :: thesis: f in JUMP I
then consider a, b being Data-Location such that
A40: I = a := b ;
k in dom <*a,b*> by A37, A40, MCART_1:def 2;
then ( k = 1 or k = 2 ) by Lm2;
hence f in JUMP I by A39, A40, Th2, Th25, Th26; :: thesis: verum
end;
suppose ex a, b being Data-Location st I = AddTo a,b ; :: thesis: f in JUMP I
then consider a, b being Data-Location such that
A41: I = AddTo a,b ;
k in dom <*a,b*> by A37, A41, MCART_1:def 2;
then ( k = 1 or k = 2 ) by Lm2;
hence f in JUMP I by A39, A41, Th2, Th27, Th28; :: thesis: verum
end;
suppose ex a, b being Data-Location st I = SubFrom a,b ; :: thesis: f in JUMP I
then consider a, b being Data-Location such that
A42: I = SubFrom a,b ;
k in dom <*a,b*> by A37, A42, MCART_1:def 2;
then ( k = 1 or k = 2 ) by Lm2;
hence f in JUMP I by A39, A42, Th2, Th29, Th30; :: thesis: verum
end;
suppose ex a, b being Data-Location st I = MultBy a,b ; :: thesis: f in JUMP I
then consider a, b being Data-Location such that
A43: I = MultBy a,b ;
k in dom <*a,b*> by A37, A43, MCART_1:def 2;
then ( k = 1 or k = 2 ) by Lm2;
hence f in JUMP I by A39, A43, Th2, Th31, Th32; :: thesis: verum
end;
suppose ex a, b being Data-Location st I = Divide a,b ; :: thesis: f in JUMP I
then consider a, b being Data-Location such that
A44: I = Divide a,b ;
k in dom <*a,b*> by A37, A44, MCART_1:def 2;
then ( k = 1 or k = 2 ) by Lm2;
hence f in JUMP I by A39, A44, Th2, Th33, Th34; :: thesis: verum
end;
suppose ex k being natural number st I = SCM-goto k ; :: thesis: f in JUMP I
then consider k1 being natural number such that
A45: I = SCM-goto k1 ;
A46: AddressPart I = <*k1*> by A45, MCART_1:def 2;
then k = 1 by A37, Lm1;
then A47: f = k1 by A38, A46, FINSEQ_1:def 8;
JUMP I = {k1} by A45, Th47;
hence f in JUMP I by A47, TARSKI:def 1; :: thesis: verum
end;
suppose ex a being Data-Location ex k being natural number st I = a =0_goto k ; :: thesis: f in JUMP I
then consider a being Data-Location , k1 being natural number such that
A48: I = a =0_goto k1 ;
A49: AddressPart I = <*k1,a*> by A48, MCART_1:def 2;
then ( k = 1 or k = 2 ) by A37, Lm2;
then A50: f = k1 by A38, A39, A48, A49, Th2, Th37, FINSEQ_1:61;
JUMP I = {k1} by A48, Th49;
hence f in JUMP I by A50, TARSKI:def 1; :: thesis: verum
end;
suppose ex a being Data-Location ex k1 being natural number st I = a >0_goto k1 ; :: thesis: f in JUMP I
then consider a being Data-Location , k1 being natural number such that
A51: I = a >0_goto k1 ;
A52: AddressPart I = <*k1,a*> by A51, MCART_1:def 2;
then ( k = 1 or k = 2 ) by A37, Lm2;
then A53: f = k1 by A38, A39, A51, A52, Th2, Th39, FINSEQ_1:61;
JUMP I = {k1} by A51, Th51;
hence f in JUMP I by A53, TARSKI:def 1; :: thesis: verum
end;
end;