posMul : _Int -> _Int -> _Int;
posMul a b = case b of {
    0 => 0;
    _ => a + posMul a (b - 1)
};

facc : _Int -> _Int;
facc a = case a of {
    1 => 1;
    _ => posMul a (facc (a - 1))
};

minimization : (_Int -> _Int) -> _Int -> _Int;
minimization p x = case p x of { 
    1 => x;
    _ => minimization p (x + 1)
};

checkFac : _Int -> _Int;
checkFac x = case facc x of {
    0 => 1;
    _ => 0
};

main : _Int;
main = minimization checkFac 1