public List <FuzzyFuncStatement> GetFuzzyFuncStatements(List <FuzzyDomain> domains)
        {
            var statements = new List <FuzzyFuncStatement>();

            var rulesSets = new List <IEnumerable <FuzzyRule> >();

            foreach (var domain in domains)
            {
                rulesSets.Add(domain.Clusters.Select(cluster => new FuzzyRule(domain, cluster)));
            }

            foreach (var rules in SetOperation.CartesianProduct(rulesSets))
            {
                statements.Add(
                    new FuzzyFuncStatement(
                        new FuzzyRuleSet(rules.ToArray()),
                        FuzzyCustomSocket.GetAmperageCircuitFormula(rules.ToDictionary(p => p.Domain.Domain))
                        )
                    );
            }

            return(statements);
        }