See discussion here: https://rust-lang.zulipchat.com/#narrow/stream/144729-wg-traits/topic/meeting.202020-09-29/near/211676604 Needed for rust-lang/rust#77187 For fundamental types like `Box<T, U>`, we should generate rules: ``` forall<T, U> { IsLocal(Box<T>) :- IsLocal(T) } forall<T, U> { IsLocal(Box<T>) :- IsLocal(U) } forall<T, U> { IsUpstream(Box<T, U>) :- IsUpstream(T), IsUpstream(U) } forall<T, U> { DownstreamType(Box<T, U>) :- DownstreamType(T). } forall<T, U> { DownstreamType(Box<T, U>) :- DownstreamType(U). } ```