@startuml
!pragma teoz true
database DL
actor P1
actor Pi
P1 -> P1 : ABcast(m)
P1 -> P1 : m \in S
P1 -> DL : READ()
DL --> P1 : P
P1 -> P1 : r_{max} = max\{r : (\_, prove(r)) \in P\}
loop \textbf{foreach } r \in \{r_{max} + 1, \dots\}
P1 ->(05) Pi : RBcast(prop, S, r, 1)
P1 -> DL : PROVE(r)
P1 -> DL : APPEND(r)
P1 -> DL : READ()
DL --> P1 : P
alt (1, \text{prove(}r\text{)}) \in P
note over P1 : break
else (\exists j, r' : (j, prove(r')) \in P \land m \in prop[r'][j])
note over P1 : break
end
end
hide footbox
@enduml