Algebra
Perform set logic with an awareness of how certain properties represent a set.
    new set.Algebra(compares...)
  
  An algebra instance can perform a variety of set logic methods
using the compares configuration.
A default algebra instance can be created like:
var set = require("can-set");
var defaultAlgebra = new set.Algebra();
This treats every property as a filter in a where clause.  For example:
// `{id: 2, ownerId: 5}` belongs to ``.getList({ownerId: 5})`
defaultAlgebra.has({ownerId: 5}, {id: 2, ownerId: 5}) //-> true
defaultAlgebra.getSubset({ownerId: 5}, {},
    [
        {id: 1, ownerId: 2},
        {id: 2, ownerId: 5},
        {id: 3, ownerId: 12}
    ]) //-> [{id: 2, ownerId: 5}]
Compares configurations can be passed to add better property behavior awareness:
var set = require("can-set");
var todoAlgebra = new set.Algebra(
  set.props.boolean("completed"),
  set.props.id("_id"),
  set.props.offsetLimit("offset","limit")
);
defaultAlgebra.getSubset({limit: 2, offset: 1}, {},
    [
        {id: 1, ownerId: 2},
        {id: 2, ownerId: 5},
        {id: 3, ownerId: 12}
    ]) //-> [{id: 2, ownerId: 5},{id: 3, ownerId: 12}]
props has helper functions that make common Compares configurations.