Extracting optimal explanations for ensemble trees via automated reasoning