assura-stdlib 0.2.0

Assura standard library contracts and prelude types
Documentation
// Standard library: math contracts
module std.math

contract abs {
    input(x: Int)
    output(result: Nat)
    effects { pure }
}

contract min {
    input(a: Int, b: Int)
    output(result: Int)
    effects { pure }
}

contract max {
    input(a: Int, b: Int)
    output(result: Int)
    effects { pure }
}

contract clamp {
    input(x: Int, lo: Int, hi: Int)
    output(result: Int)
    requires { lo <= hi }
    effects { pure }
}

contract signum {
    input(x: Int)
    output(result: Int)
    effects { pure }
}

contract gcd {
    input(a: Nat, b: Nat)
    output(result: Nat)
    requires { a > 0 || b > 0 }
    effects { pure }
}

contract lcm {
    input(a: Nat, b: Nat)
    output(result: Nat)
    requires { a > 0 }
    requires { b > 0 }
    effects { pure }
}

contract divmod {
    input(dividend: Int, divisor: Int)
    output(quotient: Int, remainder: Int)
    requires { divisor != 0 }
    effects { pure }
}

contract pow {
    input(base: Int, exponent: Nat)
    output(result: Int)
    requires { exponent >= 0 }
    effects { pure }
}