set/proper-superset
===============================================================================

%% Proper superset test (strict set containment relation)

1. Usage
-------------------------------------------------------------------------------

```mech:disabled
R := set/proper-superset(A, B)
R := A ⊋ B
```

2. Description
-------------------------------------------------------------------------------

Determines whether set `A` is a **proper superset** of set `B`.  
A proper superset contains all elements of another set **and at least one more**.  
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.

3. Input
-------------------------------------------------------------------------------

Arguments:
- A : set of T   — candidate superset
- B : set of T   — subset being tested

Element type constraints:
- `T` must be hashable and comparable for equality (`Eq` + `Hash` in Rust).
- Common scalar kinds: integers, strings, symbols, booleans.

4. Output
-------------------------------------------------------------------------------

Result:
- R : boolean — true if all elements of `B` are contained in `A` and `A` has
  at least one element not present in `B`.

5. Examples
-------------------------------------------------------------------------------

(5.1) True proper superset

```mech:ex1
A := {"a", "b", "c", "d"}
B := {"b", "c"}
R := set/proper-superset(A, B)
```

(5.2) False — equal sets

```mech:ex2
A := {1, 2, 3}
B := {1, 2, 3}
R := A ⊋ B
```

(5.3) False — missing an element

```mech:ex3
A := {"x", "y"}
B := {"x", "y", "z"}
R := set/proper-superset(A, B)
```

6. Details
-------------------------------------------------------------------------------

Set semantics:
- Inputs are treated as sets (duplicates ignored).
- Order does not affect results.

Relation logic:
- `A` is a **proper superset** of `B` if every element of `B` exists in `A`
  and `A` has at least one additional distinct element.

Symbolic shorthand:
- `A ⊋ B` is equivalent to `set/proper_superset(A, B)`.

Performance:
- Average `O(|B|)` time using hashing; memory `O(1)`.

Determinism:
- Results are deterministic across runs and platforms.

7. Errors
-------------------------------------------------------------------------------

- Incorrect number of arguments (expects two).
- Unsupported element type (not hashable or comparable).
- Inconsistent element kinds between A and B.
