Proof: Copy By Load Example
In this example, we show how we can copy 3 values using LOAD instructions.
More precisely, we prove that
Let's prove the following theorem:
- the PC at time 0 = 0
- instruction #0 is
load dst=7 addr=6 imm=0
- instruction #1 is
load dst=8 addr=6 imm=1
- instruction #2 is
load dst=9 addr=6 imm=2
- value of cell 3 at time 0 = 13
- value of cell 4 at time 0 = 11
- value of cell 5 at time 0 = 20
- value of cell 6 at time 0 = 3
then value of cell 8 at time 3 = 11
Try out this example in the simulator:
Memory Cells |
---|
Program Counter | Time |
---|---|
0 | 0 |
Notice how addr remains the same, and the imm is increased.
Instruction #0 copies cell #3 to cell #7. The source is the value stored in cell #6 (3) plus the imm (0).
Instruction #1 copies cell #4 to cell #8. The source is the value stored in cell #6 (3) plus the imm (1).
Instruction #2 copies cell #5 to cell #9. The source is the value stored in cell #6 (3) plus the imm (2).
To make claims about value of the cell #8 at time 3, we start at time 0, then make claims about the state at time 1, and use them to make claims about time 2, and so on.
Proof:
1 | the PC at time 0 = 0 |
---|---|
2 | instruction #0 is load dst=7 addr=6 imm=0 |
3 | instruction #1 is load dst=8 addr=6 imm=1 |
4 | instruction #2 is load dst=9 addr=6 imm=2 |
5 | value of cell 3 at time 0 = 13 |
6 | value of cell 4 at time 0 = 11 |
7 | value of cell 5 at time 0 = 20 |
8 | value of cell 6 at time 0 = 3 |
# | Claim | Reason |
---|---|---|
1 | value of cell 7 at time 1 = 13 | if instruction #0 is load dst=7 addr=6 imm=0 and the PC at time 0 = 0 and value of cell 6 at time 0 = 3 and value of cell 3 at time 0 = 13, then value of cell 7 at time 1 = 13 |
2 | the PC at time 1 = 1 | if instruction #0 is load dst=7 addr=6 imm=0 and the PC at time 0 = 0, then the PC at time 1 = 1 |
3 | value of cell 3 at time 1 = 13 | if instruction #0 is load dst=7 addr=6 imm=0 and the PC at time 0 = 0 and value of cell 3 at time 0 = 13, then value of cell 3 at time 1 = 13 |
4 | value of cell 4 at time 1 = 11 | if instruction #0 is load dst=7 addr=6 imm=0 and the PC at time 0 = 0 and value of cell 4 at time 0 = 11, then value of cell 4 at time 1 = 11 |
5 | value of cell 5 at time 1 = 20 | if instruction #0 is load dst=7 addr=6 imm=0 and the PC at time 0 = 0 and value of cell 5 at time 0 = 20, then value of cell 5 at time 1 = 20 |
6 | value of cell 6 at time 1 = 3 | if instruction #0 is load dst=7 addr=6 imm=0 and the PC at time 0 = 0 and value of cell 6 at time 0 = 3, then value of cell 6 at time 1 = 3 |
7 | value of cell 8 at time 2 = 11 | if instruction #1 is load dst=8 addr=6 imm=1 and the PC at time 1 = 1 and value of cell 6 at time 1 = 3 and value of cell 4 at time 1 = 11, then value of cell 8 at time 2 = 11 |
8 | the PC at time 2 = 2 | if instruction #1 is load dst=8 addr=6 imm=1 and the PC at time 1 = 1, then the PC at time 2 = 2 |
9 | value of cell 3 at time 2 = 13 | if instruction #1 is load dst=8 addr=6 imm=1 and the PC at time 1 = 1 and value of cell 3 at time 1 = 13, then value of cell 3 at time 2 = 13 |
10 | value of cell 4 at time 2 = 11 | if instruction #1 is load dst=8 addr=6 imm=1 and the PC at time 1 = 1 and value of cell 4 at time 1 = 11, then value of cell 4 at time 2 = 11 |
11 | value of cell 5 at time 2 = 20 | if instruction #1 is load dst=8 addr=6 imm=1 and the PC at time 1 = 1 and value of cell 5 at time 1 = 20, then value of cell 5 at time 2 = 20 |
12 | value of cell 6 at time 2 = 3 | if instruction #1 is load dst=8 addr=6 imm=1 and the PC at time 1 = 1 and value of cell 6 at time 1 = 3, then value of cell 6 at time 2 = 3 |
13 | value of cell 7 at time 2 = 13 | if instruction #1 is load dst=8 addr=6 imm=1 and the PC at time 1 = 1 and value of cell 7 at time 1 = 13, then value of cell 7 at time 2 = 13 |
14 | value of cell 9 at time 3 = 20 | if instruction #2 is load dst=9 addr=6 imm=2 and the PC at time 2 = 2 and value of cell 6 at time 2 = 3 and value of cell 5 at time 2 = 20, then value of cell 9 at time 3 = 20 |
15 | the PC at time 3 = 3 | if instruction #2 is load dst=9 addr=6 imm=2 and the PC at time 2 = 2, then the PC at time 3 = 3 |
16 | value of cell 3 at time 3 = 13 | if instruction #2 is load dst=9 addr=6 imm=2 and the PC at time 2 = 2 and value of cell 3 at time 2 = 13, then value of cell 3 at time 3 = 13 |
17 | value of cell 4 at time 3 = 11 | if instruction #2 is load dst=9 addr=6 imm=2 and the PC at time 2 = 2 and value of cell 4 at time 2 = 11, then value of cell 4 at time 3 = 11 |
18 | value of cell 5 at time 3 = 20 | if instruction #2 is load dst=9 addr=6 imm=2 and the PC at time 2 = 2 and value of cell 5 at time 2 = 20, then value of cell 5 at time 3 = 20 |
19 | value of cell 6 at time 3 = 3 | if instruction #2 is load dst=9 addr=6 imm=2 and the PC at time 2 = 2 and value of cell 6 at time 2 = 3, then value of cell 6 at time 3 = 3 |
20 | value of cell 7 at time 3 = 13 | if instruction #2 is load dst=9 addr=6 imm=2 and the PC at time 2 = 2 and value of cell 7 at time 2 = 13, then value of cell 7 at time 3 = 13 |
21 | value of cell 8 at time 3 = 11 | if instruction #2 is load dst=9 addr=6 imm=2 and the PC at time 2 = 2 and value of cell 8 at time 2 = 11, then value of cell 8 at time 3 = 11 |
Comments
Please log in to add comments