// RUN: %boogie -noVerify "%s" > "%t"
// RUN: %diff "%s.expect" "%t"
var m: []int;
var p: []a;
type C _;
var bad: []C a; // error: b is not used
function F(a, int) returns (bool) { true }
type Set _;
function EmptySet() returns (Set a);
function G(a, int) returns (Set a) { EmptySet() }
function H(int) returns (Set a);
function {:inline true} K(int) returns (Set a)
{ EmptySet() }
procedure P(x: int, y: bool) returns (z: int, w: bool); // error: "a" is not used
procedure Q(x: int, y: bool) returns (z: int, w: a);
procedure R(x: int, y: bool) returns (z: int, w: Set a);
procedure S(x: a, y: bool) returns (z: int, w: Set a);
function K2(int) returns (Set a) // now ok
{ EmptySet() }