concept Comparable { fun compare(U x, U y) -> bool@; }; fun min where { Comparable } (T x, T y) -> T { if (model Comparable.compare(x, y)) return x; else return y; } model Comparable { fun compare(int x, int y) -> bool@ { return x < y; } }; fun main() -> int@ { return min(1, 0); }