While experimenting with the Haskell PPL binding, I noticed that the C interface function "ppl_new_LinExpression_with_dimension" always creates an expression with one plus the specified dimension. The following code illustrates the problem: #include <ppl_c.h> main () { ppl_LinExpression_t e; ppl_dimension_type dim_in=3, dim_out;; ppl_initialize(); ppl_new_LinExpression_with_dimension(&e, dim_in); dim_out = ppl_LinExpression_space_dimension(e); printf("%d, %d\n", dim_in, dim_out); /* 3, 4 rather than 3,3 as expected */ ppl_finalize(); } Looking at the source code interface/C/ppl_c.cc, it becomes clear that the expression created has a single Variable(d), therefore dimension d+1: int ppl_new_LinExpression_with_dimension(ppl_LinExpression_t* ple, ppl_dimension_type d) try { *ple = to_nonconst(new LinExpression(0*Variable(d))); /* <----- should be Variable(d-1) */ return 0; } CATCH_ALL This is of course trivial to correct, but I thought it best to report so that it gets corrected in the newer releases. Best regards, Pedro