set/subset

Usage

Description

Input

Output

Examples

True subset

False subset

Equal sets still count as subsets

Details

Errors

set/subset

Subset test (set containment relation)

Usage

R:=set/subset(A, B)R:=AB

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:

  • T must be hashable and comparable for equality (Eq + Hash in Rust).

  • Common scalar kinds: integers, strings, symbols, booleans.

Output

Result:

  • R : boolean — true if all elements of A are contained in B, otherwise false.

Examples

True subset

A:={"b", "c"}B:={"a", "b", "c", "d"}R:=set/subset(A, B)

Result: R = true

False subset

A:={1, 4}B:={1, 2, 3}R:=AB

Result: R = false

Equal sets still count as subsets

A:={"x", "y", "z"}B:={"x", "y", "z"}R:=set/subset(A, B)

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 ⊆ B is equivalent to set/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.