constraint solving
extract root type