# `frequent_pattern_mining_protocols`

This library provides support entities for frequent itemset mining algorithms. Transactional datasets are represented as objects implementing the `transaction_dataset_protocol` protocol. The generic `pattern_miner_protocol` protocol and the `pattern_miner_common` category used by concrete miners are loaded from the `pattern_mining_protocols` core library.

The `frequent_pattern_mining_common` category builds on that generic core with frequent-itemset-specific helpers for dataset validation, support accumulation, and itemset ordering/filtering.

This library also provides reusable transaction smoke-test datasets and a small smoke-test suite.

## API documentation

Open the ../../apis/library_index.html#frequent_pattern_mining_protocols link in a web browser.

## Loading

To load all entities in this library, load the `loader.lgt` file:

    | ?- logtalk_load(frequent_pattern_mining_protocols(loader)).

## Testing

To run the library smoke tests, load the `tester.lgt` file:

    | ?- logtalk_load(frequent_pattern_mining_protocols(tester)).

## Test datasets

Several sample transaction datasets are included in the `test_datasets` directory:

- `market_basket_basics.lgt`: A compact transaction dataset with 6 transactions and 5 items intended for frequent-itemset smoke tests.

- `layered_baskets.lgt`: A transaction dataset with overlapping co-occurrence layers intended for support-count and candidate-pruning tests.

- `deep_intersection_baskets.lgt`: A compact transaction dataset with one frequent length-4 itemset and multiple overlapping length-3 itemsets intended to stress deeper vertical tidset intersections.

The directory also includes invalid fixtures useful for validation and error-handling tests:

- `invalid_undeclared_item_baskets.lgt`: Uses an item not listed in the declared item domain.

- `invalid_unsorted_transaction_baskets.lgt`: Uses a transaction whose items are not in canonical sorted order.

- `invalid_duplicate_item_baskets.lgt`: Uses a transaction with a duplicate item.

- `invalid_empty_baskets.lgt`: Declares an item domain but no transactions.

- `invalid_item_domain_baskets.lgt`: Declares a non-canonical item domain with duplicate items.