thus SCM is homogeneous :: thesis: SCM is with_explicit_jumps
proof
let I, J be Instruction of SCM; :: according to COMPOS_1:def 12 :: thesis: ( not InsCode I = InsCode J or dom (JumpPart I) = dom (JumpPart J) )
assume A1: InsCode I = InsCode J ; :: thesis: dom (JumpPart I) = dom (JumpPart 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:24;
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:24;
suppose ex a, b being Data-Location st I = a := b ; :: thesis: dom (JumpPart I) = dom (JumpPart J)
then consider a, b being Data-Location such that
A3: I = a := b ;
A4: InsCode I = 1 by A3, RECDEF_2:def 1;
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:24;
suppose ex a, b being Data-Location st J = a := b ; :: thesis: dom (JumpPart I) = dom (JumpPart J)
then consider d1, d2 being Data-Location such that
A5: J = d1 := d2 ;
thus dom (JumpPart I) = dom {} by A3, RECDEF_2:def 2
.= dom (JumpPart J) by A5, RECDEF_2: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 (JumpPart I) = dom (JumpPart J)
end;
end;
end;
hence dom (JumpPart I) = dom (JumpPart J) ; :: thesis: verum
end;
suppose ex a, b being Data-Location st I = AddTo (a,b) ; :: thesis: dom (JumpPart I) = dom (JumpPart J)
then consider a, b being Data-Location such that
A6: I = AddTo (a,b) ;
A7: InsCode I = 2 by A6, RECDEF_2:def 1;
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:24;
suppose ex a, b being Data-Location st J = AddTo (a,b) ; :: thesis: dom (JumpPart I) = dom (JumpPart J)
then consider d1, d2 being Data-Location such that
A8: J = AddTo (d1,d2) ;
thus dom (JumpPart I) = dom {} by A6, RECDEF_2:def 2
.= dom (JumpPart J) by A8, RECDEF_2: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 (JumpPart I) = dom (JumpPart J)
end;
end;
end;
hence dom (JumpPart I) = dom (JumpPart J) ; :: thesis: verum
end;
suppose ex a, b being Data-Location st I = SubFrom (a,b) ; :: thesis: dom (JumpPart I) = dom (JumpPart J)
then consider a, b being Data-Location such that
A9: I = SubFrom (a,b) ;
A10: InsCode I = 3 by A9, RECDEF_2:def 1;
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:24;
suppose ex a, b being Data-Location st J = SubFrom (a,b) ; :: thesis: dom (JumpPart I) = dom (JumpPart J)
then consider d1, d2 being Data-Location such that
A11: J = SubFrom (d1,d2) ;
thus dom (JumpPart I) = dom {} by A9, RECDEF_2:def 2
.= dom (JumpPart J) by A11, RECDEF_2: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 = 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 (JumpPart I) = dom (JumpPart J)
end;
end;
end;
hence dom (JumpPart I) = dom (JumpPart J) ; :: thesis: verum
end;
suppose ex a, b being Data-Location st I = MultBy (a,b) ; :: thesis: dom (JumpPart I) = dom (JumpPart J)
then consider a, b being Data-Location such that
A12: I = MultBy (a,b) ;
A13: InsCode I = 4 by A12, RECDEF_2:def 1;
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:24;
suppose ex a, b being Data-Location st J = MultBy (a,b) ; :: thesis: dom (JumpPart I) = dom (JumpPart J)
then consider d1, d2 being Data-Location such that
A14: J = MultBy (d1,d2) ;
thus dom (JumpPart I) = dom {} by A12, RECDEF_2:def 2
.= dom (JumpPart J) by A14, RECDEF_2: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 = 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 (JumpPart I) = dom (JumpPart J)
end;
end;
end;
hence dom (JumpPart I) = dom (JumpPart J) ; :: thesis: verum
end;
suppose ex a, b being Data-Location st I = Divide (a,b) ; :: thesis: dom (JumpPart I) = dom (JumpPart J)
then consider a, b being Data-Location such that
A15: I = Divide (a,b) ;
A16: InsCode I = 5 by A15, RECDEF_2:def 1;
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:24;
suppose ex a, b being Data-Location st J = Divide (a,b) ; :: thesis: dom (JumpPart I) = dom (JumpPart J)
then consider d1, d2 being Data-Location such that
A17: J = Divide (d1,d2) ;
thus dom (JumpPart I) = dom {} by A15, RECDEF_2:def 2
.= dom (JumpPart J) by A17, RECDEF_2: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 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 (JumpPart I) = dom (JumpPart J)
end;
end;
end;
hence dom (JumpPart I) = dom (JumpPart J) ; :: thesis: verum
end;
suppose ex k being natural number st I = SCM-goto k ; :: thesis: dom (JumpPart I) = dom (JumpPart J)
then consider k being natural number such that
A18: I = SCM-goto k ;
A19: InsCode I = 6 by A18, RECDEF_2:def 1;
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:24;
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 (JumpPart I) = dom (JumpPart J)
end;
end;
end;
hence dom (JumpPart I) = dom (JumpPart J) ; :: thesis: verum
end;
suppose ex a being Data-Location ex k being natural number st I = a =0_goto k ; :: thesis: dom (JumpPart I) = dom (JumpPart 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, RECDEF_2:def 1;
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:24;
suppose ex d1 being Data-Location ex k being natural number st J = d1 =0_goto k ; :: thesis: dom (JumpPart I) = dom (JumpPart J)
then consider d1 being Data-Location , k1 being natural number such that
A23: J = d1 =0_goto k1 ;
thus dom (JumpPart I) = dom <*k*> by A21, RECDEF_2:def 2
.= Seg 1 by FINSEQ_1:38
.= dom <*k1*> by FINSEQ_1:38
.= dom (JumpPart J) by A23, RECDEF_2: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 (JumpPart I) = dom (JumpPart J)
end;
end;
end;
hence dom (JumpPart I) = dom (JumpPart J) ; :: thesis: verum
end;
suppose ex a being Data-Location ex k being natural number st I = a >0_goto k ; :: thesis: dom (JumpPart I) = dom (JumpPart 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, RECDEF_2:def 1;
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:24;
suppose ex d1 being Data-Location ex k being natural number st J = d1 >0_goto k ; :: thesis: dom (JumpPart I) = dom (JumpPart J)
then consider d1 being Data-Location , k1 being natural number such that
A26: J = d1 >0_goto k1 ;
thus dom (JumpPart I) = dom <*k*> by A24, RECDEF_2:def 2
.= Seg 1 by FINSEQ_1:38
.= dom <*k1*> by FINSEQ_1:38
.= dom (JumpPart J) by A26, RECDEF_2: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 (JumpPart I) = dom (JumpPart J)
end;
end;
end;
hence dom (JumpPart I) = dom (JumpPart J) ; :: thesis: verum
end;
end;
end;
thus SCM is with_explicit_jumps :: thesis: verum
proof
let I be Instruction of SCM; :: according to AMISTD_2:def 2 :: thesis: I is with_explicit_jumps
thus JUMP I c= rng (JumpPart I) :: according to AMISTD_2:def 1,XBOOLE_0:def 10 :: thesis: proj2 (JumpPart I) c= JUMP I
proof
let f be set ; :: according to TARSKI:def 3 :: thesis: ( not f in JUMP I or f in rng (JumpPart I) )
assume A27: f in JUMP I ; :: thesis: f in rng (JumpPart 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 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:24;
suppose A32: ex a being Data-Location ex k1 being natural number st I = a =0_goto k1 ; :: thesis: f in rng (JumpPart I)
consider a being Data-Location , k1 being natural number such that
A33: I = a =0_goto k1 by A32;
A34: JumpPart (a =0_goto k1) = <*k1*> by RECDEF_2:def 2;
A35: rng <*k1*> = {k1} by FINSEQ_1:39;
JUMP (a =0_goto k1) = {k1} by Th51;
hence f in rng (JumpPart I) by A27, A33, A34, A35; :: thesis: verum
end;
suppose A36: ex a being Data-Location ex k1 being natural number st I = a >0_goto k1 ; :: thesis: f in rng (JumpPart I)
consider a being Data-Location , k1 being natural number such that
A37: I = a >0_goto k1 by A36;
A38: JumpPart (a >0_goto k1) = <*k1*> by RECDEF_2:def 2;
A39: rng <*k1*> = {k1} by FINSEQ_1:39;
JUMP (a >0_goto k1) = {k1} by Th53;
hence f in rng (JumpPart I) by A27, A37, A38, A39; :: thesis: verum
end;
end;
end;
let f be set ; :: according to TARSKI:def 3 :: thesis: ( not f in proj2 (JumpPart I) or f in JUMP I )
assume f in rng (JumpPart I) ; :: thesis: f in JUMP I
then consider k being set such that
A40: k in dom (JumpPart I) and
A41: f = (JumpPart I) . k by FUNCT_1:def 3;
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:24;
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
A42: I = a := b ;
k in dom {} by A40, A42, RECDEF_2:def 2;
hence f in JUMP I ; :: 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
A43: I = AddTo (a,b) ;
k in dom {} by A40, A43, RECDEF_2:def 2;
hence f in JUMP I ; :: 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
A44: I = SubFrom (a,b) ;
k in dom {} by A40, A44, RECDEF_2:def 2;
hence f in JUMP I ; :: 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
A45: I = MultBy (a,b) ;
k in dom {} by A40, A45, RECDEF_2:def 2;
hence f in JUMP I ; :: 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
A46: I = Divide (a,b) ;
k in dom {} by A40, A46, RECDEF_2:def 2;
hence f in JUMP I ; :: thesis: verum
end;
end;
end;