set/subset
Subset test (set containment relation)
Usage
R:=set/subset(A, B)R:=A⊂B
Description
Determines whether set A is a subset of set B.
A subset has all its elements contained within another set.
This function returns a boolean value indicating the result.
The implementation wraps the Rust IndexSet containment logic and
preserves Mech’s deterministic order semantics for reproducibility.
Input
Arguments:
A : set of T — candidate subset
B : set of T — superset being tested
Element type constraints:
Tmust be hashable and comparable for equality (Eq+Hashin Rust).Common scalar kinds: integers, strings, symbols, booleans.
Output
Result:
R : boolean — true if all elements of
Aare contained inB, otherwise false.
Examples
True subset
Result: R = true
False subset
Result: R = false
Equal sets still count as subsets
Result: R = true
Details
Set semantics:
Inputs are treated as sets (duplicates ignored).
Order does not affect results.
Relation logic:
- A is a subset of B if every element of A exists in B.
- This differs from a proper subset, which requires A to contain
strictly fewer elements than B.
Symbolic shorthand:
A ⊆ Bis equivalent toset/subset(A, B).
Performance:
Average O(|A|) time using hashing; memory O(1).
Determinism:
Results are deterministic across runs and platforms.
Errors
Incorrect number of arguments (expects two).
Unsupported element type (not hashable or comparable).
Inconsistent element kinds between A and B.