Text this: Foundations of Bilevel Programming