combinations(combinations_5_choose_3, [[1, 2, 3], [1, 2, 4], [1, 2, 5], [1, 3, 4], [1, 3, 5], [1, 4, 5], [2, 3, 4], [2, 3, 5], [2, 4, 5], [3, 4, 5]]).
count(combinations_5_choose_3, 10).

clause(5,
       unique_combinations(var('K'), var('Items'), var('Unique')),
       (findall(var('C'), combination(var('K'), var('Items'), var('C')), var('All')),
        sort(var('All'), var('Unique')))).
clause(6,
       combinations(combinations_5_choose_3, var('Unique')),
       unique_combinations(3, [1, 2, 3, 4, 5], var('Unique'))).
clause(7,
       count(combinations_5_choose_3, var('Count')),
       (unique_combinations(3, [1, 2, 3, 4, 5], var('Unique')),
        length(var('Unique'), var('Count')))).

step(combinations(combinations_5_choose_3, [[1, 2, 3], [1, 2, 4], [1, 2, 5], [1, 3, 4], [1, 3, 5], [1, 4, 5], [2, 3, 4], [2, 3, 5], [2, 4, 5], [3, 4, 5]]),
     rule(6),
     ['Unique' = [[1, 2, 3], [1, 2, 4], [1, 2, 5], [1, 3, 4], [1, 3, 5], [1, 4, 5], [2, 3, 4], [2, 3, 5], [2, 4, 5], [3, 4, 5]]],
     [unique_combinations(3, [1, 2, 3, 4, 5], [[1, 2, 3], [1, 2, 4], [1, 2, 5], [1, 3, 4], [1, 3, 5], [1, 4, 5], [2, 3, 4], [2, 3, 5], [2, 4, 5], [3, 4, 5]])]).
step(unique_combinations(3, [1, 2, 3, 4, 5], [[1, 2, 3], [1, 2, 4], [1, 2, 5], [1, 3, 4], [1, 3, 5], [1, 4, 5], [2, 3, 4], [2, 3, 5], [2, 4, 5], [3, 4, 5]]),
     rule(5),
     ['K' = 3,
      'Items' = [1, 2, 3, 4, 5],
      'Unique' = [[1, 2, 3], [1, 2, 4], [1, 2, 5], [1, 3, 4], [1, 3, 5], [1, 4, 5], [2, 3, 4], [2, 3, 5], [2, 4, 5], [3, 4, 5]],
      'All' = [[1, 2, 3], [1, 2, 4], [1, 2, 5], [1, 2, 3], [1, 3, 4], [1, 3, 5], [1, 2, 4], [1, 3, 4], [1, 4, 5], [1, 2, 5], [1, 3, 5], [1, 4, 5], [1, 2, 3], [1, 2, 4], [1, 2, 5], [1, 2, 3], [2, 3, 4], [2, 3, 5], [1, 2, 4], [2, 3, 4], [2, 4, 5], [1, 2, 5], [2, 3, 5], [2, 4, 5], [1, 2, 3], [1, 3, 4], [1, 3, 5], [1, 2, 3], [2, 3, 4], [2, 3, 5], [1, 3, 4], [2, 3, 4], [3, 4, 5], [1, 3, 5], [2, 3, 5], [3, 4, 5], [1, 2, 4], [1, 3, 4], [1, 4, 5], [1, 2, 4], [2, 3, 4], [2, 4, 5], [1, 3, 4], [2, 3, 4], [3, 4, 5], [1, 4, 5], [2, 4, 5], [3, 4, 5], [1, 2, 5], [1, 3, 5], [1, 4, 5], [1, 2, 5], [2, 3, 5], [2, 4, 5], [1, 3, 5], [2, 3, 5], [3, 4, 5], [1, 4, 5], [2, 4, 5], [3, 4, 5]]],
     [findall(C, combination(3, [1, 2, 3, 4, 5], C), [[1, 2, 3], [1, 2, 4], [1, 2, 5], [1, 2, 3], [1, 3, 4], [1, 3, 5], [1, 2, 4], [1, 3, 4], [1, 4, 5], [1, 2, 5], [1, 3, 5], [1, 4, 5], [1, 2, 3], [1, 2, 4], [1, 2, 5], [1, 2, 3], [2, 3, 4], [2, 3, 5], [1, 2, 4], [2, 3, 4], [2, 4, 5], [1, 2, 5], [2, 3, 5], [2, 4, 5], [1, 2, 3], [1, 3, 4], [1, 3, 5], [1, 2, 3], [2, 3, 4], [2, 3, 5], [1, 3, 4], [2, 3, 4], [3, 4, 5], [1, 3, 5], [2, 3, 5], [3, 4, 5], [1, 2, 4], [1, 3, 4], [1, 4, 5], [1, 2, 4], [2, 3, 4], [2, 4, 5], [1, 3, 4], [2, 3, 4], [3, 4, 5], [1, 4, 5], [2, 4, 5], [3, 4, 5], [1, 2, 5], [1, 3, 5], [1, 4, 5], [1, 2, 5], [2, 3, 5], [2, 4, 5], [1, 3, 5], [2, 3, 5], [3, 4, 5], [1, 4, 5], [2, 4, 5], [3, 4, 5]]),
      sort([[1, 2, 3], [1, 2, 4], [1, 2, 5], [1, 2, 3], [1, 3, 4], [1, 3, 5], [1, 2, 4], [1, 3, 4], [1, 4, 5], [1, 2, 5], [1, 3, 5], [1, 4, 5], [1, 2, 3], [1, 2, 4], [1, 2, 5], [1, 2, 3], [2, 3, 4], [2, 3, 5], [1, 2, 4], [2, 3, 4], [2, 4, 5], [1, 2, 5], [2, 3, 5], [2, 4, 5], [1, 2, 3], [1, 3, 4], [1, 3, 5], [1, 2, 3], [2, 3, 4], [2, 3, 5], [1, 3, 4], [2, 3, 4], [3, 4, 5], [1, 3, 5], [2, 3, 5], [3, 4, 5], [1, 2, 4], [1, 3, 4], [1, 4, 5], [1, 2, 4], [2, 3, 4], [2, 4, 5], [1, 3, 4], [2, 3, 4], [3, 4, 5], [1, 4, 5], [2, 4, 5], [3, 4, 5], [1, 2, 5], [1, 3, 5], [1, 4, 5], [1, 2, 5], [2, 3, 5], [2, 4, 5], [1, 3, 5], [2, 3, 5], [3, 4, 5], [1, 4, 5], [2, 4, 5], [3, 4, 5]], [[1, 2, 3], [1, 2, 4], [1, 2, 5], [1, 3, 4], [1, 3, 5], [1, 4, 5], [2, 3, 4], [2, 3, 5], [2, 4, 5], [3, 4, 5]])]).
step(findall(C, combination(3, [1, 2, 3, 4, 5], C), [[1, 2, 3], [1, 2, 4], [1, 2, 5], [1, 2, 3], [1, 3, 4], [1, 3, 5], [1, 2, 4], [1, 3, 4], [1, 4, 5], [1, 2, 5], [1, 3, 5], [1, 4, 5], [1, 2, 3], [1, 2, 4], [1, 2, 5], [1, 2, 3], [2, 3, 4], [2, 3, 5], [1, 2, 4], [2, 3, 4], [2, 4, 5], [1, 2, 5], [2, 3, 5], [2, 4, 5], [1, 2, 3], [1, 3, 4], [1, 3, 5], [1, 2, 3], [2, 3, 4], [2, 3, 5], [1, 3, 4], [2, 3, 4], [3, 4, 5], [1, 3, 5], [2, 3, 5], [3, 4, 5], [1, 2, 4], [1, 3, 4], [1, 4, 5], [1, 2, 4], [2, 3, 4], [2, 4, 5], [1, 3, 4], [2, 3, 4], [3, 4, 5], [1, 4, 5], [2, 4, 5], [3, 4, 5], [1, 2, 5], [1, 3, 5], [1, 4, 5], [1, 2, 5], [2, 3, 5], [2, 4, 5], [1, 3, 5], [2, 3, 5], [3, 4, 5], [1, 4, 5], [2, 4, 5], [3, 4, 5]]),
     collected,
     [],
     []).
step(sort([[1, 2, 3], [1, 2, 4], [1, 2, 5], [1, 2, 3], [1, 3, 4], [1, 3, 5], [1, 2, 4], [1, 3, 4], [1, 4, 5], [1, 2, 5], [1, 3, 5], [1, 4, 5], [1, 2, 3], [1, 2, 4], [1, 2, 5], [1, 2, 3], [2, 3, 4], [2, 3, 5], [1, 2, 4], [2, 3, 4], [2, 4, 5], [1, 2, 5], [2, 3, 5], [2, 4, 5], [1, 2, 3], [1, 3, 4], [1, 3, 5], [1, 2, 3], [2, 3, 4], [2, 3, 5], [1, 3, 4], [2, 3, 4], [3, 4, 5], [1, 3, 5], [2, 3, 5], [3, 4, 5], [1, 2, 4], [1, 3, 4], [1, 4, 5], [1, 2, 4], [2, 3, 4], [2, 4, 5], [1, 3, 4], [2, 3, 4], [3, 4, 5], [1, 4, 5], [2, 4, 5], [3, 4, 5], [1, 2, 5], [1, 3, 5], [1, 4, 5], [1, 2, 5], [2, 3, 5], [2, 4, 5], [1, 3, 5], [2, 3, 5], [3, 4, 5], [1, 4, 5], [2, 4, 5], [3, 4, 5]], [[1, 2, 3], [1, 2, 4], [1, 2, 5], [1, 3, 4], [1, 3, 5], [1, 4, 5], [2, 3, 4], [2, 3, 5], [2, 4, 5], [3, 4, 5]]),
     builtin,
     [],
     []).
step(count(combinations_5_choose_3, 10),
     rule(7),
     ['Count' = 10,
      'Unique' = [[1, 2, 3], [1, 2, 4], [1, 2, 5], [1, 3, 4], [1, 3, 5], [1, 4, 5], [2, 3, 4], [2, 3, 5], [2, 4, 5], [3, 4, 5]]],
     [unique_combinations(3, [1, 2, 3, 4, 5], [[1, 2, 3], [1, 2, 4], [1, 2, 5], [1, 3, 4], [1, 3, 5], [1, 4, 5], [2, 3, 4], [2, 3, 5], [2, 4, 5], [3, 4, 5]]),
      length([[1, 2, 3], [1, 2, 4], [1, 2, 5], [1, 3, 4], [1, 3, 5], [1, 4, 5], [2, 3, 4], [2, 3, 5], [2, 4, 5], [3, 4, 5]], 10)]).
step(length([[1, 2, 3], [1, 2, 4], [1, 2, 5], [1, 3, 4], [1, 3, 5], [1, 4, 5], [2, 3, 4], [2, 3, 5], [2, 4, 5], [3, 4, 5]], 10),
     builtin,
     [],
     []).
