| Type | Role |
|---|---|
| Subst[A, B] | Substitution as a list of (redex, residue) pairs |
///|
test "Subst: add, lookup, and shadowing" {
let s : @foundation.Subst[String, Int] = Subst()
assert_true(s.is_empty())
let s2 = s.add("x", 1).add("y", 2)
assert_eq(s2.lookup("x"), Some(1))
assert_eq(s2.lookup("y"), Some(2))
assert_eq(s2.lookup("z"), None)
assert_true(s2.contains("x"))
// Shadowing: a later binding for "x" wins
let s3 = s2.add("x", 99)
assert_eq(s3.lookup("x"), Some(99))
}///|
test "mergesort with deduplication" {
let xs = [3, 1, 2, 1, 3]
let unique = @foundation.dedup_sort(xs)
assert_eq(unique, [1, 2, 3])
}HOL theorem prover in MoonBit