public static SequentFormula Apply(SequentFormula first, SequentFormula second, SequentFormula third) { if (Disjunction.GetInstance().Equals(first.Consequent.TopConnective) == false) { return(null); } if (second.Consequent == null || third.Consequent == null) { return(null); } if (second.Consequent.Equals(third.Consequent) == false) { return(null); } var newAntecedents = new HashSet <Formula>(); foreach (var antecedent in first) { newAntecedents.Add(antecedent); } foreach (var antecedent in second) { newAntecedents.Add(antecedent); } foreach (var antecedent in third) { newAntecedents.Add(antecedent); } var newConsequent = second.Consequent; return(new SequentFormula(newAntecedents, newConsequent)); }
public static SequentFormula Apply(Formula additionalFormula, SequentFormula first) { if (first.Consequent != null) { return(null); } if (additionalFormula == null) { return(null); } if (first.ContainsAntecedent(additionalFormula) == false) { return(null); } var newAntecedents = new HashSet <Formula>(); foreach (var antecedent in first) { newAntecedents.Add(antecedent); } var subs = new Dictionary <PropositionalVariable, Formula> { { A, additionalFormula } }; var newConsequent = NegationTerm.SubstituteInFormula(subs); return(new SequentFormula(newAntecedents, newConsequent)); }
public static SequentFormula Apply(Formula additionalFormula, SequentFormula first) { if (first.Consequent != null) { return(null); } if (additionalFormula == null) { return(null); } if (Negation.GetInstance().Equals(additionalFormula.TopConnective) == false) { return(null); } if (first.ContainsAntecedent(additionalFormula) == false) { return(null); } var newAntecedents = new HashSet <Formula>(); foreach (var antecedent in first) { newAntecedents.Add(antecedent); } var newConsequent = additionalFormula.GetOperand(0); return(new SequentFormula(newAntecedents, newConsequent)); }
public static SequentFormula Apply(SequentFormula first, SequentFormula second) { if (first.Consequent == null || second.Consequent == null) { return(null); } if (Negation.GetInstance().Equals(second.Consequent.TopConnective)) { return(null); } if (first.Consequent.Equals(second.Consequent.GetOperand(0)) == false) { return(null); } var newAntecedents = new HashSet <Formula>(); foreach (var antecedent in first) { newAntecedents.Add(antecedent); } foreach (var antecedent in second) { newAntecedents.Add(antecedent); } return(new SequentFormula(newAntecedents, null)); }
public ConjunctionIntroduction(SequentFormula first, int firstNumber, SequentFormula second, int secondNumber) { _first = first; _second = second; _firstNumber = firstNumber; _secondNumber = secondNumber; IsValid = _first.Consequent != null && _second.Consequent != null; }
public static int CalcHashCode(SequentFormula formula) { var ret = 0; ret += formula.Consequent.GetHashCode(); foreach (var f in formula) { ret *= Mod; ret += f.GetHashCode(); } return(ret); }
public static SequentFormula Apply(Formula additionalFormula, SequentFormula first) { if (additionalFormula == null) { return(null); } var newAntecedents = new HashSet <Formula>(); foreach (var antecedent in first) { newAntecedents.Add(antecedent); } newAntecedents.Add(additionalFormula); return(new SequentFormula(newAntecedents, first.Consequent)); }
public static bool IsAxiom(SequentFormula formula) { Formula antecedent = null; var cnt = 0; foreach (var f in formula) { antecedent = f; cnt++; if (cnt > 1) { return(false); } } return(cnt != 0 && formula.Consequent.Equals(antecedent)); }
public static bool Equals(SequentFormula first, SequentFormula second) { if (first == null && second == null) { return(true); } if (first == null || second == null) { return(false); } if (first.GetHashCode() != second.GetHashCode()) { return(false); } if (Equals(first.Consequent, second.Consequent) == false) { return(false); } if (first._antecedents.Count != second._antecedents.Count) { return(false); } foreach (var f in first) { if (second.ContainsAntecedent(f) == false) { return(false); } } return(true); }
public ConjunctionRemovingRight(SequentFormula first, int firstNumber) { _first = first; _firstNumber = firstNumber; IsValid = _first.Consequent != null && _first.Consequent.TopConnective.Equals(Conjunction.GetInstance()); }