assura-stdlib 0.1.0

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

contract string_length {
    input(s: String)
    output(result: Nat)
    ensures { result >= 0 }
    effects { pure }
}

contract substring {
    input(s: String, start: Nat, end: Nat)
    output(result: String)
    requires { start <= end }
    effects { pure }
}

contract contains {
    input(haystack: String, needle: String)
    output(result: Bool)
    effects { pure }
}

contract starts_with {
    input(s: String, prefix: String)
    output(result: Bool)
    effects { pure }
}

contract ends_with {
    input(s: String, suffix: String)
    output(result: Bool)
    effects { pure }
}

contract trim {
    input(s: String)
    output(result: String)
    effects { pure }
}

contract to_uppercase {
    input(s: String)
    output(result: String)
    effects { pure }
}

contract to_lowercase {
    input(s: String)
    output(result: String)
    effects { pure }
}

contract replace {
    input(s: String, from: String, to: String)
    output(result: String)
    effects { pure }
}

contract concat {
    input(a: String, b: String)
    output(result: String)
    effects { pure }
}

contract index_of {
    input(s: String, needle: String)
    output(result: Int)
    effects { pure }
}

contract is_empty {
    input(s: String)
    output(result: Bool)
    effects { pure }
}