code: func CartesianProduct(s1, s2 ComparablePrincipalSets) comparablePrincipalSetPairs {
  	var res comparablePrincipalSetPairs
  	for _, x := range s1 {
  		var set comparablePrincipalSetPairs
  		// For every set in the first sets,
  		// combine it with every set in the second sets
  		for _, y := range s2 {
  			set = append(set, comparablePrincipalSetPair{
  				contained:  x,
  				containing: y,
  			})
  		}
  		res = append(res, set...)
  	}
  	return res
  }
docs: // CartesianProduct returns a comparablePrincipalSetPairs that is comprised of the combination
  // of every possible pair of ComparablePrincipalSet such that the first element is in s1,
  // and the second element is in s2.