Releases: sdcondon/SCFirstOrderLogic
Releases · sdcondon/SCFirstOrderLogic
2.1.0-pre.3
Even more conversion flexibility on OperableSentenceFactory surrogate types. At some point I should probably look into just how much overhead (i.e. copies of things) is created with all these implicit conversions - in particular, in comparison to how many allocations (both short- and long- lived) are made when using language integration.
2.1.0-pre.2
A little more conversion flexibility in OperableSentenceFactory
..
2.1.0-pre.1
- A little more conversion flexibility added to
OperableSentenceFactory
. - Removed a weird explicit conversion operator from Literal. Strictly speaking a breaking change, but highly doubt anyone will notice given download numbers..
2.0.0
So.. v1 should probably have been v0. It wasn't quite ready. Never mind.. This is what probably should have been v1.
Breaking changes:
- CNFSentence, CNFClause and CNFLiteral have been moved up to the SCFirstOrderLogic namespace - and in the process CNFLiteral has been renamed to Literal. Now that I have actually started trying to consume this library (and in particular want to use Literal, but not in the context of CNF) I'm finding that the current name and namespace are really awkward. So I've moved and renamed them. The SCFirstOrderLogic namespace now includes all of our sentence model - both "raw" and CNF. This feels much cleaner.
- Unification logic has been moved from the SCFirstOrderLogic.Inference.Unification to the new SCFirstOrderLogic.SentenceManipulation.Unification namespace. When using this library I'm going to want to do unification - but I'm not doing inference.
- CNFDefiniteClause has been promoted from SCFirstOrderLogic.Inference.Chaining to SCFirstOrderLogic. No reason for it not to sit alongside the others rather than being hidden away alongside the only classes that happen to use it within this lib.
- CNFExplainer.FindNormalisationTerms has been moved to a new CNFExaminer class in SentenceManipulation - this logic is nothing to do with formatting.
Bug fixes:
- Literal unification could return a false negative result when unifying two non-ground literals.
- Literal unification could return a false positive result when trying to unify a predicate or function with the same identifier but different numbers of arguments. It was only trying to unify the smaller number of arguments. This is of course somewhat of an edge case (one would normally expect the same identifier to mean the same number of arguments), but it now fails instead.
- Forward chaining's check to see if a new conclusion had been drawn was prone to false negatives, resulting in it doing more work than it needed to do.
Other changes:
- Several documentation improvements
- Added an overload of CNFExplainer.FindNormalisationTerms that accepts predicates. Use it in forward chaining query.
1.1.0
Several minor additions and improvements:
- Several documentation fixes and improvements
- Corrected the accessibility modifier of
SentenceFormatter.Format(Conjunction)
- which was erroneously private - Added an
AreEqual
method (for the equality predicate) to OperableSentenceFactory. There's no reason for it not to be there, given thatSentenceFactory
has it. - Added a
Var(object symbol)
method to bothSentenceFactory
andOperableSentenceFactory
- for variables. - CNFLiteral now has an additional ctor overload.
1.0.2
1.0.1
1.0.0
1.0.0-pre.1
Quick pre-release just to verify that everything is working..