// 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 }
}