public bool LogicallyImplies(LogicExpression e)
        {
            var ops = _operands + e._operands;
            var n   = ops.GetCombinations();

            for (int l = 0; l < n; ++l)
            {
                ops.SetValues(l);
                if (GetTruthValue(ops) && !e.GetTruthValue(ops))
                {
                    return(false);
                }
            }

            return(true);
        }
        public bool IsValid()
        {
            var expression = LogicExpression.Create(ToExpression());

            return(expression.IsTautology());
        }
 public void SetConclusion(LogicExpression conclusion)
 {
     _conclusion = conclusion;
 }
 public void AddPremise(LogicExpression premise)
 {
     _premises.Add(premise);
 }
 public LogicExpression Disjunction(LogicExpression e)
 {
     return(Create($"({Expression}|{e.Expression})"));
 }
 public LogicExpression Conjunction(LogicExpression e)
 {
     return(Create($"({Expression}&{e.Expression})"));
 }