internal static int GetPositiveWeight <T>( this Implicant <T> implicant) { return(implicant .TermSet .Count(term => term is PositiveTerm <T>)); }
internal static int GetUncombinedWeight <T>( this Implicant <T> implicant) { return(implicant .TermSet .Count(term => term is PositiveTerm <T> || term is NegativeTerm <T>)); }
public static DnfAnd <T> mintermOf <T>( Implicant <T> implicant) { var elementSet = implicant.TermSet .SelectMany(term => { return(term switch { PositiveTerm <T> _ => new List <IDnfVariable <T> > { DnfVariableOf(term.Value) }, NegativeTerm <T> _ => new List <IDnfVariable <T> > { DnfNotVariableOf(term.Value) }, _ => new List <IDnfVariable <T> >() }); })
internal static bool IsContainsMinterm <T>( this Implicant <T> implicant, DnfAnd <T> minterm) { var variableMintermMapB = minterm .ElementSet .ToDictionary(term => term.Value, term => term); return(!implicant .TermSet .Any(implicantTerm => { var mintermTerm = variableMintermMapB[implicantTerm.Value]; return (implicantTerm, mintermTerm) switch { (PositiveTerm <T> _, DnfNotVariable <T> _) => true, (NegativeTerm <T> _, DnfVariable <T> _) => true, _ => false }; })); }
public bool Equals( Implicant <T> that) { return(that != null && HashSet <Term <T> > .CreateSetComparer().Equals(this.TermSet, that.TermSet)); }