use "basic_models.g"; concept Foo { type bar; fun fooey(U x) -> bar@; }; fun zow where { Foo, Regular.bar> } (T f) -> Foo.bar@ { return fooey(f); } struct foo { int x; }; model Foo { type bar = int; fun fooey(foo f) -> int@ { return f.x; } }; fun main() -> int@ { let f = @foo{ x = 3 }; return 3 - zow(f); }