argument principle function