Given the traits/types found in this gist: https://gist.github.com/nikomatsakis/58717b0588393ca14f2d6168e7c86188 Why do we get ambiguity here? ```bash > target/debug/chalki --program=$HOME/tmp/futures-model.chalk --goal='forall<T> { if (T: FutureResult) { exists<I, E> { T: Future<Output = Result<I, E>> } } }' Ambiguous; no inference guidance ``` Note that if we (hackily) don't force the solver to give us back a result for `I` and `E`, we get `Unique` as expected: ```bash > target/debug/chalki --program=$HOME/tmp/futures-model.chalk --goal='forall<T> { if (T: FutureResult) { T: Future, exists<I, E> { T: Future<Output = Result<I, E>> } } }' Unique; substitution [], lifetime constraints [] ``` cc @scalexm, who wanted to investigate this