code: function(a, b) {
  		var aClauseProps = this.getClauseProperties(a);
  		var bClauseProps = this.getClauseProperties(b);
  		var compatibleSort = true;
  		var result;
  
  		// if both have a paginate, make sure order is the same.
  		if( bClauseProps.enabled.paginate &&
  			(aClauseProps.enabled.order || bClauseProps.enabled.order)) {
  			// compare order clauses without any special props
  			compatibleSort = compare.equal(aClauseProps.order, bClauseProps.order,
  				undefined, undefined, undefined, {}, {});
  		}
  
  		if(!compatibleSort) {
  			result = false;
  		}
  		else {
  			result = this.evaluateOperator(compare.subset, a, b);
  		}
  
  		return result;
  	}
docs: @function can-set.Algebra.prototype.subset subset
  @parent can-set.Algebra.prototype
  
  @signature `algebra.subset(a, b)`
  
  Returns true if _A_ is a subset of _B_ or _A_ is equal to _B_ (_A_ ⊆ _B_).
  
  ```js
  algebra.subset({type: "critical"}, {}) //-> true
  algebra.subset({}, {}) //-> true
  ```
  
  @param  {can-set/Set} a A set.
  @param  {can-set/Set} b A set.
  @return {Boolean} `true` if `a` is a subset of `b`.