Algorithmically, we will do something simple that may nevertheless be surprising: we will run the obvious fault-tolerant variant of the greedy algorithm of Althöfer et al. [1]}. That is, we will consider the edges of \(G\)  in nondecreasing weight order, and when considering an edge \((u, v)\)  we will add it to our emulator if it is “necessary”. In the traditional non-fault tolerant setting, “necessary” means that \(\text{dist}_H(u,v) > (2k-1) \cdot w(u,v)\) , i.e., the current spanner/emulator does not adequately preserve the distance between the endpoints \(u, v\) . In the fault-tolerant spanner setting, where the greedy algorithm has also been used and analyzed [2]}, [3]}, [4]}, “necessary” means that there is some appropriate fault set \(F\) 
such that \(\text{dist}_{H \setminus F}(u,v) > (2k-1) \cdot w(u,v)\)  (i.e., the current solution does not adequately preserve the distance between the endpoints under fault set \(F\) ). Analogously, in our algorithm, “necessary” will mean that there is some fault set \(F \subseteq E\)  with \(|F| \le f\)  (and not containing \((u,v)\) ) such that \(\text{dist}_{H^F}(u,v) > (2k-1) \cdot w(u,v)\) .
