Author of this content has low reputation.
Elastico: https://www.comp.nus.edu.sg/~loiluu/papers/elastico.pdf
The paper mentioned a possible double spending checking logic in section 10.2. From what I understand, transactions are sharded into different committees (i.e. shards) by hash of their input(s).
It makes sense for transactions which have only one input. However, for those with multiple inputs (which I assume is common situation in Bitcoin), I don't understand how this can prevent double spending. Let's say there are two transections A (with input UTXOs a and b) and C (with input UTXOs b and c). These two transections might end up in two shards and each executed successfully.