W obliczalności i złożoności, znajdowanie mapowań między problemami, które pozwalają rozwiązać jeden problem przy użyciu rozwiązania innego. Aby dowiedzieć się, jak zredukować teorię języka programowania (np. Redukcja beta), zobacz [rachunek-lambda] lub [przepisywanie terminu].