let pp p fmt = function
    | Num q, [] -> 
        Mpa.Q.pp fmt q
    | Add, [] -> 
        Pretty.string fmt "0"
    | Add, al -> 
        Pretty.infixl p " + " fmt al
    | Multq(q) , [x] -> 
        Pretty.infix Mpa.Q.pp "*" p fmt (q, x)
    | _ -> 
        invalid_arg "Ill-formed application in linear arithmetic"