it is available under microsoft's open specification promise levin has been married three times and fathered five children convex functions that are not proper are called improper convex functions