Distributed Systems: Class 1
Aurojit Panda
Distributed Systems: Class 1 Aurojit Panda Please interrupt Please - - PowerPoint PPT Presentation
Distributed Systems: Class 1 Aurojit Panda Please interrupt Please interrupt When things seem unclear or we are going too fast. Administrivia Initial Bits If enrolled, you should have Piazza access. Come up if you do not. Waitlist:
Aurojit Panda
When things seem unclear or we are going too fast.
Process 0 Process 1
Process 0 Process 1 Ping
Process 0 Process 1 Ping Pong
Time P0 P1 P2
Time P0 P1 P2
Time P0 P1 P2
Time P0 P1 P2
Time P0 P1 P2
Time P0 P1 P2
Time P0 P1 P2
Time P0 P1 P2
Process 0 Process 1
Process 0 Process 1
Process 0 Process 1 Ping
Invariant: I will never contradict a previously announced class policy.
Invariant: I will never contradict a previously announced class policy.
Invariant: I will never contradict a previously announced class policy.
This class has no exams
Invariant: I will never contradict a previously announced class policy.
Invariant: I will never contradict a previously announced class policy.
Invariant: I will never contradict a previously announced class policy.
Invariant: I will never contradict a previously announced class policy.
Exam next week
Invariant: I will never contradict a previously announced class policy.
Exam next week This class has no exams
Invariant: I will never contradict a previously announced class policy.
Exam next week This class has no exams
Invariant: I will eventually return any pen that you lend me.
Invariant: I will eventually return any pen that you lend me.
Invariant: I will eventually return any pen that you lend me.
Invariant: I will eventually return any pen that you lend me.
Invariant: I will eventually return any pen that you lend me.
Invariant: I will eventually return any pen that you lend me.
Invariant: I will eventually return any pen that you lend me.
Invariant: I will eventually return any pen that you lend me.
Invariant: I will eventually return any pen that you lend me.
Invariant: I will eventually return any pen that you lend me.
Invariant: I will eventually return any pen that you lend me.
Invariant: I will eventually return any pen that you lend me.
Invariant: I will eventually return any pen that you lend me.
Invariant: I will eventually return any pen that you lend me.
Invariant: I will eventually return any pen that you lend me.
Invariant: I will eventually return any pen that you lend me.
Invariant: I will eventually return any pen that you lend me.
Invariant: I will eventually return any pen that you lend me.
Invariant: I will eventually return any pen that you lend me.
Invariant: I will eventually return any pen that you lend me.
Invariant: I will eventually return any pen that you lend me.
Invariant: I will eventually return any pen that you lend me.
Invariant: I will eventually return any pen that you lend me.
Invariant: I will eventually return any pen that you lend me.
Invariant: I will eventually return any pen that you lend me.
Invariant: I will eventually return any pen that you lend me.
Q.send(add X) Y.send(I am in queue) msg = wait() ... Q.send(add Y) while(true) msg = wait() queue.add(msg) Process X Process Y Process Q
Q.send(add X) Y.send(I am in queue) msg = wait() ... Q.send(add Y) while(true) msg = wait() queue.add(msg) Process X Process Y Process Q What are the possible values of queue at the end of this?
Q.send(add X) Y.send(I am in queue) msg = wait() ... Q.send(add Y) while(true) msg = wait() queue.add(msg) Process X Process Y Process Q What are the possible values of queue at the end of this? X Y Y X X Y
Q.send(add X) Y.send(I am in queue) msg = wait() ... Q.send(add Y) while(true) msg = wait() queue.add(msg) Process X Process Y Process Q What are the possible values of queue at the end of this? X Y Y X X Y
Q.send(add X) Y.send(I am in queue) msg = wait() ... Q.send(add Y) while(true) msg = wait() queue.add(msg) Process X Process Y Process Q What are the possible values of queue at the end of this? X Y Y X X Y
Causally Compatible
Q.send(add X) Y.send(I am in queue) msg = wait() ... Q.send(add Y) while(true) msg = wait() queue.add(msg) Process X Process Y Process Q What are the possible values of queue at the end of this? X Y Y X X Y
Not Causally Compatible Causally Compatible
Q.send(add X) Y.send(I am in queue) msg = wait() ... Q.send(add Y) while(true) msg = wait() queue.add(msg) Process X Process Y Process Q What are the possible values of queue at the end of this? X Y Y X X Y
Time
Q X Y
1 3 8 20 22 9
Time
Q X Y
1 3 8 20 22 9
send( ) send( ) send( ) receive( ) receive( ) receive( )
Event Time 1 3 8 9 20 22
send( ) send( ) send( ) receive( ) receive( ) receive( )
Event Time 1 3 8 9 20 22
send( ) send( ) send( ) receive( ) receive( ) receive( )
Event Time 1 3 8 9 20 22
send( ) send( ) send( ) receive( ) receive( ) receive( )
Event Time 1 3 8 9 20 22
send( ) send( ) send( ) receive( ) receive( ) receive( )
Event Time 1 3 8 9 20 22
send( ) send( ) send( ) receive( ) receive( ) receive( )
Event Time 1 3 8 9 20 22
Q X Y
Q X Y
Q X Y
Q X Y
e1
e2
e3
e1
e2
e3
e1
e2
e1
e2
e3
e1
e2
e1
e2
e3
e1
e2
e3
e1 → e2 e2 → e3 e1 → e3
e1
e2
e3
e1 → e2 e2 → e3 e1 → e3
e1
e2
e1 → e2
e1
e2
e3
e1 → e2 e2 → e3 e1 → e3
e1
e2
e1 → e2
e1
e2
e3
e1 → e2 e2 → e3 e1 → e3
c(e) = ci(e)
<latexit sha1_base64="WZBiuzWDXepg1mOnsvKFQ9+E03k=">AB9HicbZBNSwMxEIZn61etX1WPXoJFqJeyK4JehKIXjxXsB7RLyazbWg2uybZQin9HV48KOLVH+PNf2Pa7kFbXwg8vDPDTN4gEVwb1/12cmvrG5tb+e3Czu7e/kHx8Kih41QxrLNYxKoVUI2CS6wbgS2EoU0CgQ2g+HdrN4codI8lo9mnKAf0b7kIWfUWMtnZTwnN4R1uYVuseRW3LnIKngZlCBTrVv86vRilkYoDRNU67bnJsafUGU4EzgtdFKNCWVD2se2RUkj1P5kfvSUnFmnR8JY2ScNmbu/JyY0nocBbYzomagl2sz879aOzXhtT/hMkNSrZYFKaCmJjMEiA9rpAZMbZAmeL2VsIGVFmbE4FG4K3/OVaFxUPLfiPVyWqrdZHk4gVMogwdXUIV7qEdGDzBM7zCmzNyXpx352PRmnOymWP4I+fzB0DXkHM=</latexit><latexit sha1_base64="WZBiuzWDXepg1mOnsvKFQ9+E03k=">AB9HicbZBNSwMxEIZn61etX1WPXoJFqJeyK4JehKIXjxXsB7RLyazbWg2uybZQin9HV48KOLVH+PNf2Pa7kFbXwg8vDPDTN4gEVwb1/12cmvrG5tb+e3Czu7e/kHx8Kih41QxrLNYxKoVUI2CS6wbgS2EoU0CgQ2g+HdrN4codI8lo9mnKAf0b7kIWfUWMtnZTwnN4R1uYVuseRW3LnIKngZlCBTrVv86vRilkYoDRNU67bnJsafUGU4EzgtdFKNCWVD2se2RUkj1P5kfvSUnFmnR8JY2ScNmbu/JyY0nocBbYzomagl2sz879aOzXhtT/hMkNSrZYFKaCmJjMEiA9rpAZMbZAmeL2VsIGVFmbE4FG4K3/OVaFxUPLfiPVyWqrdZHk4gVMogwdXUIV7qEdGDzBM7zCmzNyXpx352PRmnOymWP4I+fzB0DXkHM=</latexit><latexit sha1_base64="WZBiuzWDXepg1mOnsvKFQ9+E03k=">AB9HicbZBNSwMxEIZn61etX1WPXoJFqJeyK4JehKIXjxXsB7RLyazbWg2uybZQin9HV48KOLVH+PNf2Pa7kFbXwg8vDPDTN4gEVwb1/12cmvrG5tb+e3Czu7e/kHx8Kih41QxrLNYxKoVUI2CS6wbgS2EoU0CgQ2g+HdrN4codI8lo9mnKAf0b7kIWfUWMtnZTwnN4R1uYVuseRW3LnIKngZlCBTrVv86vRilkYoDRNU67bnJsafUGU4EzgtdFKNCWVD2se2RUkj1P5kfvSUnFmnR8JY2ScNmbu/JyY0nocBbYzomagl2sz879aOzXhtT/hMkNSrZYFKaCmJjMEiA9rpAZMbZAmeL2VsIGVFmbE4FG4K3/OVaFxUPLfiPVyWqrdZHk4gVMogwdXUIV7qEdGDzBM7zCmzNyXpx352PRmnOymWP4I+fzB0DXkHM=</latexit><latexit sha1_base64="WZBiuzWDXepg1mOnsvKFQ9+E03k=">AB9HicbZBNSwMxEIZn61etX1WPXoJFqJeyK4JehKIXjxXsB7RLyazbWg2uybZQin9HV48KOLVH+PNf2Pa7kFbXwg8vDPDTN4gEVwb1/12cmvrG5tb+e3Czu7e/kHx8Kih41QxrLNYxKoVUI2CS6wbgS2EoU0CgQ2g+HdrN4codI8lo9mnKAf0b7kIWfUWMtnZTwnN4R1uYVuseRW3LnIKngZlCBTrVv86vRilkYoDRNU67bnJsafUGU4EzgtdFKNCWVD2se2RUkj1P5kfvSUnFmnR8JY2ScNmbu/JyY0nocBbYzomagl2sz879aOzXhtT/hMkNSrZYFKaCmJjMEiA9rpAZMbZAmeL2VsIGVFmbE4FG4K3/OVaFxUPLfiPVyWqrdZHk4gVMogwdXUIV7qEdGDzBM7zCmzNyXpx352PRmnOymWP4I+fzB0DXkHM=</latexit>If event e occured at process i
c(e) = ci(e)
<latexit sha1_base64="WZBiuzWDXepg1mOnsvKFQ9+E03k=">AB9HicbZBNSwMxEIZn61etX1WPXoJFqJeyK4JehKIXjxXsB7RLyazbWg2uybZQin9HV48KOLVH+PNf2Pa7kFbXwg8vDPDTN4gEVwb1/12cmvrG5tb+e3Czu7e/kHx8Kih41QxrLNYxKoVUI2CS6wbgS2EoU0CgQ2g+HdrN4codI8lo9mnKAf0b7kIWfUWMtnZTwnN4R1uYVuseRW3LnIKngZlCBTrVv86vRilkYoDRNU67bnJsafUGU4EzgtdFKNCWVD2se2RUkj1P5kfvSUnFmnR8JY2ScNmbu/JyY0nocBbYzomagl2sz879aOzXhtT/hMkNSrZYFKaCmJjMEiA9rpAZMbZAmeL2VsIGVFmbE4FG4K3/OVaFxUPLfiPVyWqrdZHk4gVMogwdXUIV7qEdGDzBM7zCmzNyXpx352PRmnOymWP4I+fzB0DXkHM=</latexit><latexit sha1_base64="WZBiuzWDXepg1mOnsvKFQ9+E03k=">AB9HicbZBNSwMxEIZn61etX1WPXoJFqJeyK4JehKIXjxXsB7RLyazbWg2uybZQin9HV48KOLVH+PNf2Pa7kFbXwg8vDPDTN4gEVwb1/12cmvrG5tb+e3Czu7e/kHx8Kih41QxrLNYxKoVUI2CS6wbgS2EoU0CgQ2g+HdrN4codI8lo9mnKAf0b7kIWfUWMtnZTwnN4R1uYVuseRW3LnIKngZlCBTrVv86vRilkYoDRNU67bnJsafUGU4EzgtdFKNCWVD2se2RUkj1P5kfvSUnFmnR8JY2ScNmbu/JyY0nocBbYzomagl2sz879aOzXhtT/hMkNSrZYFKaCmJjMEiA9rpAZMbZAmeL2VsIGVFmbE4FG4K3/OVaFxUPLfiPVyWqrdZHk4gVMogwdXUIV7qEdGDzBM7zCmzNyXpx352PRmnOymWP4I+fzB0DXkHM=</latexit><latexit sha1_base64="WZBiuzWDXepg1mOnsvKFQ9+E03k=">AB9HicbZBNSwMxEIZn61etX1WPXoJFqJeyK4JehKIXjxXsB7RLyazbWg2uybZQin9HV48KOLVH+PNf2Pa7kFbXwg8vDPDTN4gEVwb1/12cmvrG5tb+e3Czu7e/kHx8Kih41QxrLNYxKoVUI2CS6wbgS2EoU0CgQ2g+HdrN4codI8lo9mnKAf0b7kIWfUWMtnZTwnN4R1uYVuseRW3LnIKngZlCBTrVv86vRilkYoDRNU67bnJsafUGU4EzgtdFKNCWVD2se2RUkj1P5kfvSUnFmnR8JY2ScNmbu/JyY0nocBbYzomagl2sz879aOzXhtT/hMkNSrZYFKaCmJjMEiA9rpAZMbZAmeL2VsIGVFmbE4FG4K3/OVaFxUPLfiPVyWqrdZHk4gVMogwdXUIV7qEdGDzBM7zCmzNyXpx352PRmnOymWP4I+fzB0DXkHM=</latexit><latexit sha1_base64="WZBiuzWDXepg1mOnsvKFQ9+E03k=">AB9HicbZBNSwMxEIZn61etX1WPXoJFqJeyK4JehKIXjxXsB7RLyazbWg2uybZQin9HV48KOLVH+PNf2Pa7kFbXwg8vDPDTN4gEVwb1/12cmvrG5tb+e3Czu7e/kHx8Kih41QxrLNYxKoVUI2CS6wbgS2EoU0CgQ2g+HdrN4codI8lo9mnKAf0b7kIWfUWMtnZTwnN4R1uYVuseRW3LnIKngZlCBTrVv86vRilkYoDRNU67bnJsafUGU4EzgtdFKNCWVD2se2RUkj1P5kfvSUnFmnR8JY2ScNmbu/JyY0nocBbYzomagl2sz879aOzXhtT/hMkNSrZYFKaCmJjMEiA9rpAZMbZAmeL2VsIGVFmbE4FG4K3/OVaFxUPLfiPVyWqrdZHk4gVMogwdXUIV7qEdGDzBM7zCmzNyXpx352PRmnOymWP4I+fzB0DXkHM=</latexit>If event e occured at process i
e0 → e1 = ⇒ c(e0) < c(e1)
<latexit sha1_base64="rAmvIhqNsE0YwVhydMyFGDP0eI0=">ACFXicbZDLSsNAFIYnXmu9RV26GSxC1ISEXThoujGZQV7gSaEyfSkHTq5MDNRSuhLuPFV3LhQxK3gzrdxmahrQcGPv7/HM6c3084k8qyvo2l5ZXVtfXSRnlza3tn19zb8s4FRaNOax6PpEAmcRtBRTHLqJABL6HDr+6Hrqd+5BSBZHd2qcgBuSQcQCRonSkmegGdhR7DBUBEh4gcMno0dFurdIDGtaruGL3Owa5ZsepWXngR7AIqKimZ345/ZimIUSKciJlz7YS5WZEKEY5TMpOKiEhdEQG0NMYkRCkm+VXTfCxVvo4iIV+kcK5+nsiI6GU49DXnSFRQznvTcX/vF6qgs3Y1GSKojobFGQcqxiPI0I95kAqvhYA6GC6b9iOiSCUKWDLOsQ7PmTF6F9Wretun17VmlcFXGU0CE6QlVko3PUQDeoiVqIokf0jF7Rm/FkvBjvxsesdckoZg7QnzI+fwCmKZyN</latexit><latexit sha1_base64="rAmvIhqNsE0YwVhydMyFGDP0eI0=">ACFXicbZDLSsNAFIYnXmu9RV26GSxC1ISEXThoujGZQV7gSaEyfSkHTq5MDNRSuhLuPFV3LhQxK3gzrdxmahrQcGPv7/HM6c3084k8qyvo2l5ZXVtfXSRnlza3tn19zb8s4FRaNOax6PpEAmcRtBRTHLqJABL6HDr+6Hrqd+5BSBZHd2qcgBuSQcQCRonSkmegGdhR7DBUBEh4gcMno0dFurdIDGtaruGL3Owa5ZsepWXngR7AIqKimZ345/ZimIUSKciJlz7YS5WZEKEY5TMpOKiEhdEQG0NMYkRCkm+VXTfCxVvo4iIV+kcK5+nsiI6GU49DXnSFRQznvTcX/vF6qgs3Y1GSKojobFGQcqxiPI0I95kAqvhYA6GC6b9iOiSCUKWDLOsQ7PmTF6F9Wretun17VmlcFXGU0CE6QlVko3PUQDeoiVqIokf0jF7Rm/FkvBjvxsesdckoZg7QnzI+fwCmKZyN</latexit><latexit sha1_base64="rAmvIhqNsE0YwVhydMyFGDP0eI0=">ACFXicbZDLSsNAFIYnXmu9RV26GSxC1ISEXThoujGZQV7gSaEyfSkHTq5MDNRSuhLuPFV3LhQxK3gzrdxmahrQcGPv7/HM6c3084k8qyvo2l5ZXVtfXSRnlza3tn19zb8s4FRaNOax6PpEAmcRtBRTHLqJABL6HDr+6Hrqd+5BSBZHd2qcgBuSQcQCRonSkmegGdhR7DBUBEh4gcMno0dFurdIDGtaruGL3Owa5ZsepWXngR7AIqKimZ345/ZimIUSKciJlz7YS5WZEKEY5TMpOKiEhdEQG0NMYkRCkm+VXTfCxVvo4iIV+kcK5+nsiI6GU49DXnSFRQznvTcX/vF6qgs3Y1GSKojobFGQcqxiPI0I95kAqvhYA6GC6b9iOiSCUKWDLOsQ7PmTF6F9Wretun17VmlcFXGU0CE6QlVko3PUQDeoiVqIokf0jF7Rm/FkvBjvxsesdckoZg7QnzI+fwCmKZyN</latexit><latexit sha1_base64="rAmvIhqNsE0YwVhydMyFGDP0eI0=">ACFXicbZDLSsNAFIYnXmu9RV26GSxC1ISEXThoujGZQV7gSaEyfSkHTq5MDNRSuhLuPFV3LhQxK3gzrdxmahrQcGPv7/HM6c3084k8qyvo2l5ZXVtfXSRnlza3tn19zb8s4FRaNOax6PpEAmcRtBRTHLqJABL6HDr+6Hrqd+5BSBZHd2qcgBuSQcQCRonSkmegGdhR7DBUBEh4gcMno0dFurdIDGtaruGL3Owa5ZsepWXngR7AIqKimZ345/ZimIUSKciJlz7YS5WZEKEY5TMpOKiEhdEQG0NMYkRCkm+VXTfCxVvo4iIV+kcK5+nsiI6GU49DXnSFRQznvTcX/vF6qgs3Y1GSKojobFGQcqxiPI0I95kAqvhYA6GC6b9iOiSCUKWDLOsQ7PmTF6F9Wretun17VmlcFXGU0CE6QlVko3PUQDeoiVqIokf0jF7Rm/FkvBjvxsesdckoZg7QnzI+fwCmKZyN</latexit>c(e) = ci(e)
<latexit sha1_base64="WZBiuzWDXepg1mOnsvKFQ9+E03k=">AB9HicbZBNSwMxEIZn61etX1WPXoJFqJeyK4JehKIXjxXsB7RLyazbWg2uybZQin9HV48KOLVH+PNf2Pa7kFbXwg8vDPDTN4gEVwb1/12cmvrG5tb+e3Czu7e/kHx8Kih41QxrLNYxKoVUI2CS6wbgS2EoU0CgQ2g+HdrN4codI8lo9mnKAf0b7kIWfUWMtnZTwnN4R1uYVuseRW3LnIKngZlCBTrVv86vRilkYoDRNU67bnJsafUGU4EzgtdFKNCWVD2se2RUkj1P5kfvSUnFmnR8JY2ScNmbu/JyY0nocBbYzomagl2sz879aOzXhtT/hMkNSrZYFKaCmJjMEiA9rpAZMbZAmeL2VsIGVFmbE4FG4K3/OVaFxUPLfiPVyWqrdZHk4gVMogwdXUIV7qEdGDzBM7zCmzNyXpx352PRmnOymWP4I+fzB0DXkHM=</latexit><latexit sha1_base64="WZBiuzWDXepg1mOnsvKFQ9+E03k=">AB9HicbZBNSwMxEIZn61etX1WPXoJFqJeyK4JehKIXjxXsB7RLyazbWg2uybZQin9HV48KOLVH+PNf2Pa7kFbXwg8vDPDTN4gEVwb1/12cmvrG5tb+e3Czu7e/kHx8Kih41QxrLNYxKoVUI2CS6wbgS2EoU0CgQ2g+HdrN4codI8lo9mnKAf0b7kIWfUWMtnZTwnN4R1uYVuseRW3LnIKngZlCBTrVv86vRilkYoDRNU67bnJsafUGU4EzgtdFKNCWVD2se2RUkj1P5kfvSUnFmnR8JY2ScNmbu/JyY0nocBbYzomagl2sz879aOzXhtT/hMkNSrZYFKaCmJjMEiA9rpAZMbZAmeL2VsIGVFmbE4FG4K3/OVaFxUPLfiPVyWqrdZHk4gVMogwdXUIV7qEdGDzBM7zCmzNyXpx352PRmnOymWP4I+fzB0DXkHM=</latexit><latexit sha1_base64="WZBiuzWDXepg1mOnsvKFQ9+E03k=">AB9HicbZBNSwMxEIZn61etX1WPXoJFqJeyK4JehKIXjxXsB7RLyazbWg2uybZQin9HV48KOLVH+PNf2Pa7kFbXwg8vDPDTN4gEVwb1/12cmvrG5tb+e3Czu7e/kHx8Kih41QxrLNYxKoVUI2CS6wbgS2EoU0CgQ2g+HdrN4codI8lo9mnKAf0b7kIWfUWMtnZTwnN4R1uYVuseRW3LnIKngZlCBTrVv86vRilkYoDRNU67bnJsafUGU4EzgtdFKNCWVD2se2RUkj1P5kfvSUnFmnR8JY2ScNmbu/JyY0nocBbYzomagl2sz879aOzXhtT/hMkNSrZYFKaCmJjMEiA9rpAZMbZAmeL2VsIGVFmbE4FG4K3/OVaFxUPLfiPVyWqrdZHk4gVMogwdXUIV7qEdGDzBM7zCmzNyXpx352PRmnOymWP4I+fzB0DXkHM=</latexit><latexit sha1_base64="WZBiuzWDXepg1mOnsvKFQ9+E03k=">AB9HicbZBNSwMxEIZn61etX1WPXoJFqJeyK4JehKIXjxXsB7RLyazbWg2uybZQin9HV48KOLVH+PNf2Pa7kFbXwg8vDPDTN4gEVwb1/12cmvrG5tb+e3Czu7e/kHx8Kih41QxrLNYxKoVUI2CS6wbgS2EoU0CgQ2g+HdrN4codI8lo9mnKAf0b7kIWfUWMtnZTwnN4R1uYVuseRW3LnIKngZlCBTrVv86vRilkYoDRNU67bnJsafUGU4EzgtdFKNCWVD2se2RUkj1P5kfvSUnFmnR8JY2ScNmbu/JyY0nocBbYzomagl2sz879aOzXhtT/hMkNSrZYFKaCmJjMEiA9rpAZMbZAmeL2VsIGVFmbE4FG4K3/OVaFxUPLfiPVyWqrdZHk4gVMogwdXUIV7qEdGDzBM7zCmzNyXpx352PRmnOymWP4I+fzB0DXkHM=</latexit>If event e occured at process i
e0 → e1 = ⇒ c(e0) < c(e1)
<latexit sha1_base64="rAmvIhqNsE0YwVhydMyFGDP0eI0=">ACFXicbZDLSsNAFIYnXmu9RV26GSxC1ISEXThoujGZQV7gSaEyfSkHTq5MDNRSuhLuPFV3LhQxK3gzrdxmahrQcGPv7/HM6c3084k8qyvo2l5ZXVtfXSRnlza3tn19zb8s4FRaNOax6PpEAmcRtBRTHLqJABL6HDr+6Hrqd+5BSBZHd2qcgBuSQcQCRonSkmegGdhR7DBUBEh4gcMno0dFurdIDGtaruGL3Owa5ZsepWXngR7AIqKimZ345/ZimIUSKciJlz7YS5WZEKEY5TMpOKiEhdEQG0NMYkRCkm+VXTfCxVvo4iIV+kcK5+nsiI6GU49DXnSFRQznvTcX/vF6qgs3Y1GSKojobFGQcqxiPI0I95kAqvhYA6GC6b9iOiSCUKWDLOsQ7PmTF6F9Wretun17VmlcFXGU0CE6QlVko3PUQDeoiVqIokf0jF7Rm/FkvBjvxsesdckoZg7QnzI+fwCmKZyN</latexit><latexit sha1_base64="rAmvIhqNsE0YwVhydMyFGDP0eI0=">ACFXicbZDLSsNAFIYnXmu9RV26GSxC1ISEXThoujGZQV7gSaEyfSkHTq5MDNRSuhLuPFV3LhQxK3gzrdxmahrQcGPv7/HM6c3084k8qyvo2l5ZXVtfXSRnlza3tn19zb8s4FRaNOax6PpEAmcRtBRTHLqJABL6HDr+6Hrqd+5BSBZHd2qcgBuSQcQCRonSkmegGdhR7DBUBEh4gcMno0dFurdIDGtaruGL3Owa5ZsepWXngR7AIqKimZ345/ZimIUSKciJlz7YS5WZEKEY5TMpOKiEhdEQG0NMYkRCkm+VXTfCxVvo4iIV+kcK5+nsiI6GU49DXnSFRQznvTcX/vF6qgs3Y1GSKojobFGQcqxiPI0I95kAqvhYA6GC6b9iOiSCUKWDLOsQ7PmTF6F9Wretun17VmlcFXGU0CE6QlVko3PUQDeoiVqIokf0jF7Rm/FkvBjvxsesdckoZg7QnzI+fwCmKZyN</latexit><latexit sha1_base64="rAmvIhqNsE0YwVhydMyFGDP0eI0=">ACFXicbZDLSsNAFIYnXmu9RV26GSxC1ISEXThoujGZQV7gSaEyfSkHTq5MDNRSuhLuPFV3LhQxK3gzrdxmahrQcGPv7/HM6c3084k8qyvo2l5ZXVtfXSRnlza3tn19zb8s4FRaNOax6PpEAmcRtBRTHLqJABL6HDr+6Hrqd+5BSBZHd2qcgBuSQcQCRonSkmegGdhR7DBUBEh4gcMno0dFurdIDGtaruGL3Owa5ZsepWXngR7AIqKimZ345/ZimIUSKciJlz7YS5WZEKEY5TMpOKiEhdEQG0NMYkRCkm+VXTfCxVvo4iIV+kcK5+nsiI6GU49DXnSFRQznvTcX/vF6qgs3Y1GSKojobFGQcqxiPI0I95kAqvhYA6GC6b9iOiSCUKWDLOsQ7PmTF6F9Wretun17VmlcFXGU0CE6QlVko3PUQDeoiVqIokf0jF7Rm/FkvBjvxsesdckoZg7QnzI+fwCmKZyN</latexit><latexit sha1_base64="rAmvIhqNsE0YwVhydMyFGDP0eI0=">ACFXicbZDLSsNAFIYnXmu9RV26GSxC1ISEXThoujGZQV7gSaEyfSkHTq5MDNRSuhLuPFV3LhQxK3gzrdxmahrQcGPv7/HM6c3084k8qyvo2l5ZXVtfXSRnlza3tn19zb8s4FRaNOax6PpEAmcRtBRTHLqJABL6HDr+6Hrqd+5BSBZHd2qcgBuSQcQCRonSkmegGdhR7DBUBEh4gcMno0dFurdIDGtaruGL3Owa5ZsepWXngR7AIqKimZ345/ZimIUSKciJlz7YS5WZEKEY5TMpOKiEhdEQG0NMYkRCkm+VXTfCxVvo4iIV+kcK5+nsiI6GU49DXnSFRQznvTcX/vF6qgs3Y1GSKojobFGQcqxiPI0I95kAqvhYA6GC6b9iOiSCUKWDLOsQ7PmTF6F9Wretun17VmlcFXGU0CE6QlVko3PUQDeoiVqIokf0jF7Rm/FkvBjvxsesdckoZg7QnzI+fwCmKZyN</latexit>Lamport says yes!
cj = max(v, cj + 1)
<latexit sha1_base64="ADPUfFU8Ao7ntgqTwAfWZ8pdUc=">AB/nicbVDLSgMxFM3UV62vUXHlJliEilJmRNCNUHTjsoJ9QDsMmTxiaZIckUy1DwV9y4UMSt3+HOvzHTzkKtBy6cnHMvufcEMaNKO86XVhYXFpeKa6W1tY3Nrfs7Z2mihKJSQNHLJLtACnCqCANTUj7VgSxANGWsHwOvNbIyIVjcSdHsfE46gvaEgx0kby7T3s38NLyNFDZXQCs8cxdI98u+xUnSngPHFzUgY56r792e1FOFEaMyQUh3XibWXIqkpZmRS6iaKxAgPUZ90DBWIE+Wl0/Un8NAoPRhG0pTQcKr+nEgRV2rMA9PJkR6ov14m/ud1Eh1eCkVcaKJwLOPwoRBHcEsC9ijkmDNxoYgLKnZFeIBkghrk1jJhOD+PXmeNE+rlN1b8/Ktas8jiLYBwegAlxwDmrgBtRBA2CQgifwAl6tR+vZerPeZ60FK5/ZBb9gfXwDktOTRw=</latexit><latexit sha1_base64="ADPUfFU8Ao7ntgqTwAfWZ8pdUc=">AB/nicbVDLSgMxFM3UV62vUXHlJliEilJmRNCNUHTjsoJ9QDsMmTxiaZIckUy1DwV9y4UMSt3+HOvzHTzkKtBy6cnHMvufcEMaNKO86XVhYXFpeKa6W1tY3Nrfs7Z2mihKJSQNHLJLtACnCqCANTUj7VgSxANGWsHwOvNbIyIVjcSdHsfE46gvaEgx0kby7T3s38NLyNFDZXQCs8cxdI98u+xUnSngPHFzUgY56r792e1FOFEaMyQUh3XibWXIqkpZmRS6iaKxAgPUZ90DBWIE+Wl0/Un8NAoPRhG0pTQcKr+nEgRV2rMA9PJkR6ov14m/ud1Eh1eCkVcaKJwLOPwoRBHcEsC9ijkmDNxoYgLKnZFeIBkghrk1jJhOD+PXmeNE+rlN1b8/Ktas8jiLYBwegAlxwDmrgBtRBA2CQgifwAl6tR+vZerPeZ60FK5/ZBb9gfXwDktOTRw=</latexit><latexit sha1_base64="ADPUfFU8Ao7ntgqTwAfWZ8pdUc=">AB/nicbVDLSgMxFM3UV62vUXHlJliEilJmRNCNUHTjsoJ9QDsMmTxiaZIckUy1DwV9y4UMSt3+HOvzHTzkKtBy6cnHMvufcEMaNKO86XVhYXFpeKa6W1tY3Nrfs7Z2mihKJSQNHLJLtACnCqCANTUj7VgSxANGWsHwOvNbIyIVjcSdHsfE46gvaEgx0kby7T3s38NLyNFDZXQCs8cxdI98u+xUnSngPHFzUgY56r792e1FOFEaMyQUh3XibWXIqkpZmRS6iaKxAgPUZ90DBWIE+Wl0/Un8NAoPRhG0pTQcKr+nEgRV2rMA9PJkR6ov14m/ud1Eh1eCkVcaKJwLOPwoRBHcEsC9ijkmDNxoYgLKnZFeIBkghrk1jJhOD+PXmeNE+rlN1b8/Ktas8jiLYBwegAlxwDmrgBtRBA2CQgifwAl6tR+vZerPeZ60FK5/ZBb9gfXwDktOTRw=</latexit><latexit sha1_base64="ADPUfFU8Ao7ntgqTwAfWZ8pdUc=">AB/nicbVDLSgMxFM3UV62vUXHlJliEilJmRNCNUHTjsoJ9QDsMmTxiaZIckUy1DwV9y4UMSt3+HOvzHTzkKtBy6cnHMvufcEMaNKO86XVhYXFpeKa6W1tY3Nrfs7Z2mihKJSQNHLJLtACnCqCANTUj7VgSxANGWsHwOvNbIyIVjcSdHsfE46gvaEgx0kby7T3s38NLyNFDZXQCs8cxdI98u+xUnSngPHFzUgY56r792e1FOFEaMyQUh3XibWXIqkpZmRS6iaKxAgPUZ90DBWIE+Wl0/Un8NAoPRhG0pTQcKr+nEgRV2rMA9PJkR6ov14m/ud1Eh1eCkVcaKJwLOPwoRBHcEsC9ijkmDNxoYgLKnZFeIBkghrk1jJhOD+PXmeNE+rlN1b8/Ktas8jiLYBwegAlxwDmrgBtRBA2CQgifwAl6tR+vZerPeZ60FK5/ZBb9gfXwDktOTRw=</latexit>cj = max(v, cj + 1)
<latexit sha1_base64="ADPUfFU8Ao7ntgqTwAfWZ8pdUc=">AB/nicbVDLSgMxFM3UV62vUXHlJliEilJmRNCNUHTjsoJ9QDsMmTxiaZIckUy1DwV9y4UMSt3+HOvzHTzkKtBy6cnHMvufcEMaNKO86XVhYXFpeKa6W1tY3Nrfs7Z2mihKJSQNHLJLtACnCqCANTUj7VgSxANGWsHwOvNbIyIVjcSdHsfE46gvaEgx0kby7T3s38NLyNFDZXQCs8cxdI98u+xUnSngPHFzUgY56r792e1FOFEaMyQUh3XibWXIqkpZmRS6iaKxAgPUZ90DBWIE+Wl0/Un8NAoPRhG0pTQcKr+nEgRV2rMA9PJkR6ov14m/ud1Eh1eCkVcaKJwLOPwoRBHcEsC9ijkmDNxoYgLKnZFeIBkghrk1jJhOD+PXmeNE+rlN1b8/Ktas8jiLYBwegAlxwDmrgBtRBA2CQgifwAl6tR+vZerPeZ60FK5/ZBb9gfXwDktOTRw=</latexit><latexit sha1_base64="ADPUfFU8Ao7ntgqTwAfWZ8pdUc=">AB/nicbVDLSgMxFM3UV62vUXHlJliEilJmRNCNUHTjsoJ9QDsMmTxiaZIckUy1DwV9y4UMSt3+HOvzHTzkKtBy6cnHMvufcEMaNKO86XVhYXFpeKa6W1tY3Nrfs7Z2mihKJSQNHLJLtACnCqCANTUj7VgSxANGWsHwOvNbIyIVjcSdHsfE46gvaEgx0kby7T3s38NLyNFDZXQCs8cxdI98u+xUnSngPHFzUgY56r792e1FOFEaMyQUh3XibWXIqkpZmRS6iaKxAgPUZ90DBWIE+Wl0/Un8NAoPRhG0pTQcKr+nEgRV2rMA9PJkR6ov14m/ud1Eh1eCkVcaKJwLOPwoRBHcEsC9ijkmDNxoYgLKnZFeIBkghrk1jJhOD+PXmeNE+rlN1b8/Ktas8jiLYBwegAlxwDmrgBtRBA2CQgifwAl6tR+vZerPeZ60FK5/ZBb9gfXwDktOTRw=</latexit><latexit sha1_base64="ADPUfFU8Ao7ntgqTwAfWZ8pdUc=">AB/nicbVDLSgMxFM3UV62vUXHlJliEilJmRNCNUHTjsoJ9QDsMmTxiaZIckUy1DwV9y4UMSt3+HOvzHTzkKtBy6cnHMvufcEMaNKO86XVhYXFpeKa6W1tY3Nrfs7Z2mihKJSQNHLJLtACnCqCANTUj7VgSxANGWsHwOvNbIyIVjcSdHsfE46gvaEgx0kby7T3s38NLyNFDZXQCs8cxdI98u+xUnSngPHFzUgY56r792e1FOFEaMyQUh3XibWXIqkpZmRS6iaKxAgPUZ90DBWIE+Wl0/Un8NAoPRhG0pTQcKr+nEgRV2rMA9PJkR6ov14m/ud1Eh1eCkVcaKJwLOPwoRBHcEsC9ijkmDNxoYgLKnZFeIBkghrk1jJhOD+PXmeNE+rlN1b8/Ktas8jiLYBwegAlxwDmrgBtRBA2CQgifwAl6tR+vZerPeZ60FK5/ZBb9gfXwDktOTRw=</latexit><latexit sha1_base64="ADPUfFU8Ao7ntgqTwAfWZ8pdUc=">AB/nicbVDLSgMxFM3UV62vUXHlJliEilJmRNCNUHTjsoJ9QDsMmTxiaZIckUy1DwV9y4UMSt3+HOvzHTzkKtBy6cnHMvufcEMaNKO86XVhYXFpeKa6W1tY3Nrfs7Z2mihKJSQNHLJLtACnCqCANTUj7VgSxANGWsHwOvNbIyIVjcSdHsfE46gvaEgx0kby7T3s38NLyNFDZXQCs8cxdI98u+xUnSngPHFzUgY56r792e1FOFEaMyQUh3XibWXIqkpZmRS6iaKxAgPUZ90DBWIE+Wl0/Un8NAoPRhG0pTQcKr+nEgRV2rMA9PJkR6ov14m/ud1Eh1eCkVcaKJwLOPwoRBHcEsC9ijkmDNxoYgLKnZFeIBkghrk1jJhOD+PXmeNE+rlN1b8/Ktas8jiLYBwegAlxwDmrgBtRBA2CQgifwAl6tR+vZerPeZ60FK5/ZBb9gfXwDktOTRw=</latexit>cj = max(v, cj + 1)
<latexit sha1_base64="ADPUfFU8Ao7ntgqTwAfWZ8pdUc=">AB/nicbVDLSgMxFM3UV62vUXHlJliEilJmRNCNUHTjsoJ9QDsMmTxiaZIckUy1DwV9y4UMSt3+HOvzHTzkKtBy6cnHMvufcEMaNKO86XVhYXFpeKa6W1tY3Nrfs7Z2mihKJSQNHLJLtACnCqCANTUj7VgSxANGWsHwOvNbIyIVjcSdHsfE46gvaEgx0kby7T3s38NLyNFDZXQCs8cxdI98u+xUnSngPHFzUgY56r792e1FOFEaMyQUh3XibWXIqkpZmRS6iaKxAgPUZ90DBWIE+Wl0/Un8NAoPRhG0pTQcKr+nEgRV2rMA9PJkR6ov14m/ud1Eh1eCkVcaKJwLOPwoRBHcEsC9ijkmDNxoYgLKnZFeIBkghrk1jJhOD+PXmeNE+rlN1b8/Ktas8jiLYBwegAlxwDmrgBtRBA2CQgifwAl6tR+vZerPeZ60FK5/ZBb9gfXwDktOTRw=</latexit><latexit sha1_base64="ADPUfFU8Ao7ntgqTwAfWZ8pdUc=">AB/nicbVDLSgMxFM3UV62vUXHlJliEilJmRNCNUHTjsoJ9QDsMmTxiaZIckUy1DwV9y4UMSt3+HOvzHTzkKtBy6cnHMvufcEMaNKO86XVhYXFpeKa6W1tY3Nrfs7Z2mihKJSQNHLJLtACnCqCANTUj7VgSxANGWsHwOvNbIyIVjcSdHsfE46gvaEgx0kby7T3s38NLyNFDZXQCs8cxdI98u+xUnSngPHFzUgY56r792e1FOFEaMyQUh3XibWXIqkpZmRS6iaKxAgPUZ90DBWIE+Wl0/Un8NAoPRhG0pTQcKr+nEgRV2rMA9PJkR6ov14m/ud1Eh1eCkVcaKJwLOPwoRBHcEsC9ijkmDNxoYgLKnZFeIBkghrk1jJhOD+PXmeNE+rlN1b8/Ktas8jiLYBwegAlxwDmrgBtRBA2CQgifwAl6tR+vZerPeZ60FK5/ZBb9gfXwDktOTRw=</latexit><latexit sha1_base64="ADPUfFU8Ao7ntgqTwAfWZ8pdUc=">AB/nicbVDLSgMxFM3UV62vUXHlJliEilJmRNCNUHTjsoJ9QDsMmTxiaZIckUy1DwV9y4UMSt3+HOvzHTzkKtBy6cnHMvufcEMaNKO86XVhYXFpeKa6W1tY3Nrfs7Z2mihKJSQNHLJLtACnCqCANTUj7VgSxANGWsHwOvNbIyIVjcSdHsfE46gvaEgx0kby7T3s38NLyNFDZXQCs8cxdI98u+xUnSngPHFzUgY56r792e1FOFEaMyQUh3XibWXIqkpZmRS6iaKxAgPUZ90DBWIE+Wl0/Un8NAoPRhG0pTQcKr+nEgRV2rMA9PJkR6ov14m/ud1Eh1eCkVcaKJwLOPwoRBHcEsC9ijkmDNxoYgLKnZFeIBkghrk1jJhOD+PXmeNE+rlN1b8/Ktas8jiLYBwegAlxwDmrgBtRBA2CQgifwAl6tR+vZerPeZ60FK5/ZBb9gfXwDktOTRw=</latexit><latexit sha1_base64="ADPUfFU8Ao7ntgqTwAfWZ8pdUc=">AB/nicbVDLSgMxFM3UV62vUXHlJliEilJmRNCNUHTjsoJ9QDsMmTxiaZIckUy1DwV9y4UMSt3+HOvzHTzkKtBy6cnHMvufcEMaNKO86XVhYXFpeKa6W1tY3Nrfs7Z2mihKJSQNHLJLtACnCqCANTUj7VgSxANGWsHwOvNbIyIVjcSdHsfE46gvaEgx0kby7T3s38NLyNFDZXQCs8cxdI98u+xUnSngPHFzUgY56r792e1FOFEaMyQUh3XibWXIqkpZmRS6iaKxAgPUZ90DBWIE+Wl0/Un8NAoPRhG0pTQcKr+nEgRV2rMA9PJkR6ov14m/ud1Eh1eCkVcaKJwLOPwoRBHcEsC9ijkmDNxoYgLKnZFeIBkghrk1jJhOD+PXmeNE+rlN1b8/Ktas8jiLYBwegAlxwDmrgBtRBA2CQgifwAl6tR+vZerPeZ60FK5/ZBb9gfXwDktOTRw=</latexit>cj = max(v, cj + 1)
<latexit sha1_base64="ADPUfFU8Ao7ntgqTwAfWZ8pdUc=">AB/nicbVDLSgMxFM3UV62vUXHlJliEilJmRNCNUHTjsoJ9QDsMmTxiaZIckUy1DwV9y4UMSt3+HOvzHTzkKtBy6cnHMvufcEMaNKO86XVhYXFpeKa6W1tY3Nrfs7Z2mihKJSQNHLJLtACnCqCANTUj7VgSxANGWsHwOvNbIyIVjcSdHsfE46gvaEgx0kby7T3s38NLyNFDZXQCs8cxdI98u+xUnSngPHFzUgY56r792e1FOFEaMyQUh3XibWXIqkpZmRS6iaKxAgPUZ90DBWIE+Wl0/Un8NAoPRhG0pTQcKr+nEgRV2rMA9PJkR6ov14m/ud1Eh1eCkVcaKJwLOPwoRBHcEsC9ijkmDNxoYgLKnZFeIBkghrk1jJhOD+PXmeNE+rlN1b8/Ktas8jiLYBwegAlxwDmrgBtRBA2CQgifwAl6tR+vZerPeZ60FK5/ZBb9gfXwDktOTRw=</latexit><latexit sha1_base64="ADPUfFU8Ao7ntgqTwAfWZ8pdUc=">AB/nicbVDLSgMxFM3UV62vUXHlJliEilJmRNCNUHTjsoJ9QDsMmTxiaZIckUy1DwV9y4UMSt3+HOvzHTzkKtBy6cnHMvufcEMaNKO86XVhYXFpeKa6W1tY3Nrfs7Z2mihKJSQNHLJLtACnCqCANTUj7VgSxANGWsHwOvNbIyIVjcSdHsfE46gvaEgx0kby7T3s38NLyNFDZXQCs8cxdI98u+xUnSngPHFzUgY56r792e1FOFEaMyQUh3XibWXIqkpZmRS6iaKxAgPUZ90DBWIE+Wl0/Un8NAoPRhG0pTQcKr+nEgRV2rMA9PJkR6ov14m/ud1Eh1eCkVcaKJwLOPwoRBHcEsC9ijkmDNxoYgLKnZFeIBkghrk1jJhOD+PXmeNE+rlN1b8/Ktas8jiLYBwegAlxwDmrgBtRBA2CQgifwAl6tR+vZerPeZ60FK5/ZBb9gfXwDktOTRw=</latexit><latexit sha1_base64="ADPUfFU8Ao7ntgqTwAfWZ8pdUc=">AB/nicbVDLSgMxFM3UV62vUXHlJliEilJmRNCNUHTjsoJ9QDsMmTxiaZIckUy1DwV9y4UMSt3+HOvzHTzkKtBy6cnHMvufcEMaNKO86XVhYXFpeKa6W1tY3Nrfs7Z2mihKJSQNHLJLtACnCqCANTUj7VgSxANGWsHwOvNbIyIVjcSdHsfE46gvaEgx0kby7T3s38NLyNFDZXQCs8cxdI98u+xUnSngPHFzUgY56r792e1FOFEaMyQUh3XibWXIqkpZmRS6iaKxAgPUZ90DBWIE+Wl0/Un8NAoPRhG0pTQcKr+nEgRV2rMA9PJkR6ov14m/ud1Eh1eCkVcaKJwLOPwoRBHcEsC9ijkmDNxoYgLKnZFeIBkghrk1jJhOD+PXmeNE+rlN1b8/Ktas8jiLYBwegAlxwDmrgBtRBA2CQgifwAl6tR+vZerPeZ60FK5/ZBb9gfXwDktOTRw=</latexit><latexit sha1_base64="ADPUfFU8Ao7ntgqTwAfWZ8pdUc=">AB/nicbVDLSgMxFM3UV62vUXHlJliEilJmRNCNUHTjsoJ9QDsMmTxiaZIckUy1DwV9y4UMSt3+HOvzHTzkKtBy6cnHMvufcEMaNKO86XVhYXFpeKa6W1tY3Nrfs7Z2mihKJSQNHLJLtACnCqCANTUj7VgSxANGWsHwOvNbIyIVjcSdHsfE46gvaEgx0kby7T3s38NLyNFDZXQCs8cxdI98u+xUnSngPHFzUgY56r792e1FOFEaMyQUh3XibWXIqkpZmRS6iaKxAgPUZ90DBWIE+Wl0/Un8NAoPRhG0pTQcKr+nEgRV2rMA9PJkR6ov14m/ud1Eh1eCkVcaKJwLOPwoRBHcEsC9ijkmDNxoYgLKnZFeIBkghrk1jJhOD+PXmeNE+rlN1b8/Ktas8jiLYBwegAlxwDmrgBtRBA2CQgifwAl6tR+vZerPeZ60FK5/ZBb9gfXwDktOTRw=</latexit>cj = max(v, cj + 1)
<latexit sha1_base64="ADPUfFU8Ao7ntgqTwAfWZ8pdUc=">AB/nicbVDLSgMxFM3UV62vUXHlJliEilJmRNCNUHTjsoJ9QDsMmTxiaZIckUy1DwV9y4UMSt3+HOvzHTzkKtBy6cnHMvufcEMaNKO86XVhYXFpeKa6W1tY3Nrfs7Z2mihKJSQNHLJLtACnCqCANTUj7VgSxANGWsHwOvNbIyIVjcSdHsfE46gvaEgx0kby7T3s38NLyNFDZXQCs8cxdI98u+xUnSngPHFzUgY56r792e1FOFEaMyQUh3XibWXIqkpZmRS6iaKxAgPUZ90DBWIE+Wl0/Un8NAoPRhG0pTQcKr+nEgRV2rMA9PJkR6ov14m/ud1Eh1eCkVcaKJwLOPwoRBHcEsC9ijkmDNxoYgLKnZFeIBkghrk1jJhOD+PXmeNE+rlN1b8/Ktas8jiLYBwegAlxwDmrgBtRBA2CQgifwAl6tR+vZerPeZ60FK5/ZBb9gfXwDktOTRw=</latexit><latexit sha1_base64="ADPUfFU8Ao7ntgqTwAfWZ8pdUc=">AB/nicbVDLSgMxFM3UV62vUXHlJliEilJmRNCNUHTjsoJ9QDsMmTxiaZIckUy1DwV9y4UMSt3+HOvzHTzkKtBy6cnHMvufcEMaNKO86XVhYXFpeKa6W1tY3Nrfs7Z2mihKJSQNHLJLtACnCqCANTUj7VgSxANGWsHwOvNbIyIVjcSdHsfE46gvaEgx0kby7T3s38NLyNFDZXQCs8cxdI98u+xUnSngPHFzUgY56r792e1FOFEaMyQUh3XibWXIqkpZmRS6iaKxAgPUZ90DBWIE+Wl0/Un8NAoPRhG0pTQcKr+nEgRV2rMA9PJkR6ov14m/ud1Eh1eCkVcaKJwLOPwoRBHcEsC9ijkmDNxoYgLKnZFeIBkghrk1jJhOD+PXmeNE+rlN1b8/Ktas8jiLYBwegAlxwDmrgBtRBA2CQgifwAl6tR+vZerPeZ60FK5/ZBb9gfXwDktOTRw=</latexit><latexit sha1_base64="ADPUfFU8Ao7ntgqTwAfWZ8pdUc=">AB/nicbVDLSgMxFM3UV62vUXHlJliEilJmRNCNUHTjsoJ9QDsMmTxiaZIckUy1DwV9y4UMSt3+HOvzHTzkKtBy6cnHMvufcEMaNKO86XVhYXFpeKa6W1tY3Nrfs7Z2mihKJSQNHLJLtACnCqCANTUj7VgSxANGWsHwOvNbIyIVjcSdHsfE46gvaEgx0kby7T3s38NLyNFDZXQCs8cxdI98u+xUnSngPHFzUgY56r792e1FOFEaMyQUh3XibWXIqkpZmRS6iaKxAgPUZ90DBWIE+Wl0/Un8NAoPRhG0pTQcKr+nEgRV2rMA9PJkR6ov14m/ud1Eh1eCkVcaKJwLOPwoRBHcEsC9ijkmDNxoYgLKnZFeIBkghrk1jJhOD+PXmeNE+rlN1b8/Ktas8jiLYBwegAlxwDmrgBtRBA2CQgifwAl6tR+vZerPeZ60FK5/ZBb9gfXwDktOTRw=</latexit><latexit sha1_base64="ADPUfFU8Ao7ntgqTwAfWZ8pdUc=">AB/nicbVDLSgMxFM3UV62vUXHlJliEilJmRNCNUHTjsoJ9QDsMmTxiaZIckUy1DwV9y4UMSt3+HOvzHTzkKtBy6cnHMvufcEMaNKO86XVhYXFpeKa6W1tY3Nrfs7Z2mihKJSQNHLJLtACnCqCANTUj7VgSxANGWsHwOvNbIyIVjcSdHsfE46gvaEgx0kby7T3s38NLyNFDZXQCs8cxdI98u+xUnSngPHFzUgY56r792e1FOFEaMyQUh3XibWXIqkpZmRS6iaKxAgPUZ90DBWIE+Wl0/Un8NAoPRhG0pTQcKr+nEgRV2rMA9PJkR6ov14m/ud1Eh1eCkVcaKJwLOPwoRBHcEsC9ijkmDNxoYgLKnZFeIBkghrk1jJhOD+PXmeNE+rlN1b8/Ktas8jiLYBwegAlxwDmrgBtRBA2CQgifwAl6tR+vZerPeZ60FK5/ZBb9gfXwDktOTRw=</latexit>cj = max(v, cj + 1)
<latexit sha1_base64="ADPUfFU8Ao7ntgqTwAfWZ8pdUc=">AB/nicbVDLSgMxFM3UV62vUXHlJliEilJmRNCNUHTjsoJ9QDsMmTxiaZIckUy1DwV9y4UMSt3+HOvzHTzkKtBy6cnHMvufcEMaNKO86XVhYXFpeKa6W1tY3Nrfs7Z2mihKJSQNHLJLtACnCqCANTUj7VgSxANGWsHwOvNbIyIVjcSdHsfE46gvaEgx0kby7T3s38NLyNFDZXQCs8cxdI98u+xUnSngPHFzUgY56r792e1FOFEaMyQUh3XibWXIqkpZmRS6iaKxAgPUZ90DBWIE+Wl0/Un8NAoPRhG0pTQcKr+nEgRV2rMA9PJkR6ov14m/ud1Eh1eCkVcaKJwLOPwoRBHcEsC9ijkmDNxoYgLKnZFeIBkghrk1jJhOD+PXmeNE+rlN1b8/Ktas8jiLYBwegAlxwDmrgBtRBA2CQgifwAl6tR+vZerPeZ60FK5/ZBb9gfXwDktOTRw=</latexit><latexit sha1_base64="ADPUfFU8Ao7ntgqTwAfWZ8pdUc=">AB/nicbVDLSgMxFM3UV62vUXHlJliEilJmRNCNUHTjsoJ9QDsMmTxiaZIckUy1DwV9y4UMSt3+HOvzHTzkKtBy6cnHMvufcEMaNKO86XVhYXFpeKa6W1tY3Nrfs7Z2mihKJSQNHLJLtACnCqCANTUj7VgSxANGWsHwOvNbIyIVjcSdHsfE46gvaEgx0kby7T3s38NLyNFDZXQCs8cxdI98u+xUnSngPHFzUgY56r792e1FOFEaMyQUh3XibWXIqkpZmRS6iaKxAgPUZ90DBWIE+Wl0/Un8NAoPRhG0pTQcKr+nEgRV2rMA9PJkR6ov14m/ud1Eh1eCkVcaKJwLOPwoRBHcEsC9ijkmDNxoYgLKnZFeIBkghrk1jJhOD+PXmeNE+rlN1b8/Ktas8jiLYBwegAlxwDmrgBtRBA2CQgifwAl6tR+vZerPeZ60FK5/ZBb9gfXwDktOTRw=</latexit><latexit sha1_base64="ADPUfFU8Ao7ntgqTwAfWZ8pdUc=">AB/nicbVDLSgMxFM3UV62vUXHlJliEilJmRNCNUHTjsoJ9QDsMmTxiaZIckUy1DwV9y4UMSt3+HOvzHTzkKtBy6cnHMvufcEMaNKO86XVhYXFpeKa6W1tY3Nrfs7Z2mihKJSQNHLJLtACnCqCANTUj7VgSxANGWsHwOvNbIyIVjcSdHsfE46gvaEgx0kby7T3s38NLyNFDZXQCs8cxdI98u+xUnSngPHFzUgY56r792e1FOFEaMyQUh3XibWXIqkpZmRS6iaKxAgPUZ90DBWIE+Wl0/Un8NAoPRhG0pTQcKr+nEgRV2rMA9PJkR6ov14m/ud1Eh1eCkVcaKJwLOPwoRBHcEsC9ijkmDNxoYgLKnZFeIBkghrk1jJhOD+PXmeNE+rlN1b8/Ktas8jiLYBwegAlxwDmrgBtRBA2CQgifwAl6tR+vZerPeZ60FK5/ZBb9gfXwDktOTRw=</latexit><latexit sha1_base64="ADPUfFU8Ao7ntgqTwAfWZ8pdUc=">AB/nicbVDLSgMxFM3UV62vUXHlJliEilJmRNCNUHTjsoJ9QDsMmTxiaZIckUy1DwV9y4UMSt3+HOvzHTzkKtBy6cnHMvufcEMaNKO86XVhYXFpeKa6W1tY3Nrfs7Z2mihKJSQNHLJLtACnCqCANTUj7VgSxANGWsHwOvNbIyIVjcSdHsfE46gvaEgx0kby7T3s38NLyNFDZXQCs8cxdI98u+xUnSngPHFzUgY56r792e1FOFEaMyQUh3XibWXIqkpZmRS6iaKxAgPUZ90DBWIE+Wl0/Un8NAoPRhG0pTQcKr+nEgRV2rMA9PJkR6ov14m/ud1Eh1eCkVcaKJwLOPwoRBHcEsC9ijkmDNxoYgLKnZFeIBkghrk1jJhOD+PXmeNE+rlN1b8/Ktas8jiLYBwegAlxwDmrgBtRBA2CQgifwAl6tR+vZerPeZ60FK5/ZBb9gfXwDktOTRw=</latexit>e0 ↛ e1