procedure AggregateGraphForFastPath(pre_accept_acks, partitions) {
xxxxdddx:
tmp_partitions := partitions;
yyyyassy: while (tmp_partitions /= {}) {
with (p \in tmp_partitions) {
tmp_par := p;
tmp_partitions := @ \ {p};
};
tmp_ack := PickXXX(pre_accept_acks[tmp_par]);
dep_c := @ \union tmp_ack.dep;
};
return;
}
Hi,I am trying to use TLA+ to reason a fair complex protocolused for transaction and replication. An comparable systemwould be Google's Spanner, i.e. 2PC on top of Paxos. Thedifference is my protocol is not layered like 2PC and Paxosso everything is described as one.I found that it is hard to do model checking with complex models.It is okay to check with simpler models, e.g. 1 shard + 1 replication,3 shard + 1 replication, 1 shard+3 replication. The model checkercan finish in a few minutes on my 24-core workstation. However,if I change to a more complex model, such as 3 shard + 3 replication.The checker seem never finishes. The longest run I had is a littleless than 2 days with my 24-core workstation.I realize it might has something to do with how the model checkerdoes (brutal search?), and perhaps the labels in the PlusCal kindof makes things worse? Does adding a label in PlusCal severelyaffect the time for model checking?Is there any way to work around this?-Shuai