Schrijf het predicaat modulo/3
die de modulo operatie uitvoert tussen de eerste 2 argumenten en in het laatste argument het resultaat plaats. Bij de Peanogetallen wordt 0 voorgesteld door 0
en 1 door s(0)
.
In het algemeen wordt \(n\) voorgesteld door een 0
omringd door \(n\) keer s/1
.
Volgende predicaten zijn verondersteld gedefinieerd:
p_add(A,B,C)
als en slechts als \(A + B = C\)p_sub(A,B,C)
als en slechts als \(A - B = C\)p_mul(A,B,C)
als en slechts als \(A \cdot B = C\) (De versie op Dodona laat toe te delen, kan jouw implementatie dat? Waarom?)p_exp(A,B,C)
als en slechts als \(A^B = C\)less_strict(X,Y)
: X
is strikt kleiner dan Y
greater_strict(X,Y)
: X
is strikt groter dan Y
less_or_eq(X,Y)
: X
is kleiner of gelijk aan Y
greater_or_eq(X,Y)
: X
is groter of gelijk aan Y
Deze oefening kan op twee manieren worden opgelost: met recursie en zonder recursie, probeer beide varianten eens te implementeren.