Releases: sdcondon/SCFirstOrderLogic
Releases · sdcondon/SCFirstOrderLogic
8.0.0
Changes compared to 7.7.1:
- BREAKING: Across the library, changed "sentence" to "formula", since that's always what is meant. Wrote this library while learning the domain, and didn't fully appreciate the strict distinction between the two terms (its only a sentence if it has no free variables - which of course isn't necessarily the case for our "sentence" types).
- BREAKING: Removed all the inference abstraction types from the "Inference" namespace. I'm going to put these into a new SCFirstOrderLogic.Inference.Abstractions package. Given the comparatively low download count of SCFirstOrderLogic.Inference.Basic, I strongly suspect people are doing their own thing when it comes to inference, and it is a bit weird and presumptuous to include these abstractions in the core package when there's no real reason why people should favour them over whatever makes the most sense for their application.
- BREAKING: Removed all the "LinqKnowledgeBase" types. These were very minimal functionality (they just wrap an inner KB, adapting from passed LINQ expressions to formulae). Not going to bother including these in the new package (see above).
- BREAKING: Moved the LINQ formula creation stuff from "LanguageIntegration" to "FormulaCreation.Linq" and renamed the FormulaFactory to LinqFormulaFactory. Without the LINQ KB abstractions complicating matters, it makes sense to consolidate the formula creation stuff a bit.
- BREAKING: Renamed Literal.IsNegated to IsNegative - for consistency with IsPositive
- BREAKING: Renamed SentenceManipulation.VariableManipulation namespace to SentenceManipulation.Substitution. Renamed VariableManipulationExtensions to SubstitutionExtensions.
- BREAKING: Renamed VariableIdIgnorantEqualityComparer to VariableIdAgnosticEqualityComparer
- BREAKING: Removed TFeature type param from feature vector indices, and instead just use the
objecttype in vector components. Having a type param for this was needlessly constraining - we should only not have type compatibility between indices when the type of the associated values differs. - BREAKING: In FeatureVectorIndex, renamed TryGet to TryGetValue - which is more intuitive since its in line with IDictionary.
- BREAKING: Removed obsolete SentenceParser (now FormulaParser) ctors.
- CNFFormula fix - now throws if attempting to create empty formula with the ctor that accepts an enumerable of clauses
- Added (optional) CancellationToken support to async visitor types in FormulaManipulation namespace.
- Added (optional) CancellationToken support to async term and clause index types
- Added a couple of ctors to CNFDefiniteClause.
- Added ToFormula method to CNFFormula and CNFClause.
- XML doc updates
Changes compared to 8.0.0-pre.3:
- Just some very minor XML doc tweaks. I was planning to make some breaking changes to formatting (I don't like how the label scoping is implicit by formatter instance - I'd rather it be explicit, with, say, a
MakeLabellingScopemethod on a formatter that is now intended as long-lived), but couldn't get it to a point where I was happy with it, so I'll come back to it at a later date.
8.0.0-pre.3
Changes compared to 8.0.0-pre.2:
- BREAKING: Removed all the inference abstraction types from the "Inference" namespace. I'm going to put these into a new SCFirstOrderLogic.Inference.Abstractions package. Given the comparatively low download count of SCFirstOrderLogic.Inference.Basic, I strongly suspect people are doing their own thing when it comes to inference, and it is a bit weird and presumptuous to include these abstractions in the core package when there's no real reason why people should favour them over whatever makes the most sense for their application.
- BREAKING: Removed all the "LinqKnowledgeBase" types. These were very minimal functionality (they just wrap an inner KB, adapting from passed LINQ expressions to formulae). Not going to bother including these in the new package (see above).
- BREAKING: Moved the LINQ formula creation stuff from "LanguageIntegration" to "FormulaCreation.Linq" and renamed the FormulaFactory to LinqFormulaFactory. Without the LINQ KB abstractions complicating matters, it makes sense to consolidate the formula creation stuff a bit.
Changes compared to 7.7.1:
- BREAKING: Across the library, changed "sentence" to "formula", since that's always what is meant. Wrote this library while learning the domain, and didn't fully appreciate the strict distinction between the two terms (its only a sentence if it has no free variables - which of course isn't necessarily the case for our "sentence" types).
- BREAKING: Removed all the inference abstraction types from the "Inference" namespace. I'm going to put these into a new SCFirstOrderLogic.Inference.Abstractions package. Given the comparatively low download count of SCFirstOrderLogic.Inference.Basic, I strongly suspect people are doing their own thing when it comes to inference, and it is a bit weird and presumptuous to include these abstractions in the core package when there's no real reason why people should favour them over whatever makes the most sense for their application.
- BREAKING: Removed all the "LinqKnowledgeBase" types. These were very minimal functionality (they just wrap an inner KB adapting from passed LINQ expressions to formulae). Not going to bother including these in the new package (see above).
- BREAKING: Moved the LINQ formula creation stuff from "LanguageIntegration" to "FormulaCreation.Linq" and renamed the FormulaFactory to LinqFormulaFactory. Without the LINQ KB abstractions complicating matters, it makes sense to consolidate the formula creation stuff a bit.
- BREAKING: Renamed Literal.IsNegated to IsNegative - for consistency with IsPositive
- BREAKING: Renamed SentenceManipulation.VariableManipulation namespace to SentenceManipulation.Substitution. Renamed VariableManipulationExtensions to SubstitutionExtensions.
- BREAKING: Renamed VariableIdIgnorantEqualityComparer to VariableIdAgnosticEqualityComparer
- BREAKING: Remove TFeature type param from feature vector indices, and instead just use the
objecttype in vector components. Having a type param for this was needlessly constraining - we should only not have type compat between indices when the type of the associated values differs. - BREAKING: In FeatureVectorIndex, renamed TryGet to TryGetValue - which is more intuitive since its in line with IDictionary.
- BREAKING: Removed obsolete SentenceParser (now FormulaParser) ctors.
- CNFFormula fix - now throws if attempting to create empty formula with the ctor that accepts an enumerable of clauses
- Added (optional) CancellationToken support to async visitor types in FormulaManipulation namespace.
- Added (optional) CancellationToken support to async term and clause index types
- Added a couple of ctors to CNFDefiniteClause.
- Added ToFormula method to CNFFormula and CNFClause.
- XML doc updates
8.0.0-pre.2
Changes compared to 8.0.0-pre.1:
- BREAKING: Removed TFeature type param from feature vector indices, and instead just use the
objecttype for features in vector components. Having a type param for this was needlessly constraining - we should only not have type compatibility between indices when the type of the associated values differs. - BREAKING: Renamed Literal.IsNegated to IsNegative - for consistency with IsPositive
- CNFFormula fix - now throws if attempting to create empty formula with the ctor that accepts an enumerable of clauses
Changes compared to 7.7.1:
- BREAKING: Across the library, changed "sentence" to "formula", since that's always what is meant. Wrote this library while learning the domain, and didn't fully appreciate the strict distinction between the two terms.
- BREAKING: Renamed Literal.IsNegated to IsNegative - for consistency with IsPositive
- BREAKING: Renamed SentenceManipulation.VariableManipulation namespace to SentenceManipulation.Substitution. Renamed VariableManipulationExtensions to SubstitutionExtensions.
- BREAKING: Renamed VariableIdIgnorantEqualityComparer to VariableIdAgnosticEqualityComparer
- BREAKING: Remove TFeature type param from feature vector indices, and instead just use the
objecttype in vector components. Having a type param for this was needlessly constraining - we should only not have type compat between indices when the type of the associated values differs. - BREAKING: In FeatureVectorIndex, renamed TryGet to TryGetValue - which is more intuitive since its in line with IDictionary.
- BREAKING: In SteppableQuery, IsComplete and Result are no longer abstract. Instead, a protected SetResult method is present.
- BREAKING: Removed obsolete SentenceParser (now FormulaParser) ctors.
- CNFFormula fix - now throws if attempting to create empty formula with the ctor that accepts an enumerable of clauses
- Added (optional) CancellationToken support to async visitor types in FormulaManipulation namespace.
- Added (optional) CancellationToken support to async term and clause index types
- Added a couple of ctors to CNFDefiniteClause.
- Added ToFormula method to CNFFormula and CNFClause.
- XML doc updates
8.0.0-pre.1
Changes compared to 7.7.1:
- BREAKING: Across the library, changed "sentence" to "formula", since that's always what is meant. Wrote this library while learning the domain, and didn't fully appreciate the strict distinction between the two terms.
- BREAKING: Renamed SentenceManipulation.VariableManipulation namespace to SentenceManipulation.Substitution. Renamed VariableManipulationExtensions to SubstitutionExtensions.
- BREAKING: Renamed VariableIdIgnorantEqualityComparer to VariableIdAgnosticEqualityComparer
- BREAKING: In FeatureVectorIndex, renamed TryGet to TryGetValue - which is more intuitive since its in line with IDictionary.
- BREAKING: In SteppableQuery, IsComplete and Result are no longer abstract. Instead, a protected SetResult method is present.
- BREAKING: Removed obsolete SentenceParser (now FormulaParser) ctors.
- Added (optional) CancellationToken support to async visitor types in FormulaManipulation namespace.
- Added (optional) CancellationToken support to async term and clause index types
- Added a couple of ctors to CNFDefiniteClause.
- Added ToFormula method to CNFFormula and CNFClause.
- XML doc updates
7.7.1
7.7.0
- SentenceParser additions. Probably not of use to many - but useful to me in docs site labs, so figure might be of use to others, too.
- Added methods for parsing individual terms and declaration lists
- Added overloads to allow for specification of the variables (beyond any in the sentence itself) that should be considered in scope when parsing
- Added "TryParse.." methods
- Added SentenceParserOptions record, for encapsulating parser config.
- Underscores are now valid in identifiers
- SentenceParser Parse methods now throw SyntaxErrorsException instead of ArgumentException when errors are encountered. Strictly speaking a breaking change, but not ready for another major version bump just yet - feel free to complain and I won't do it again. Still feel that download count is low enough that no-one will notice/care.
- Minor performance improvement in FVI implementations - sort feature vectors a little more efficiently.
- Minor performance improvement in
CNFClause.IsHornClause
7.6.0
- Improvements to
SentenceFormatter. Now doesn't include brackets when not needed, and can combine multiple adjacent quantifications into one (e.g. will output "∀ x, y, .." instead of "∀ x, ∀ y, .."). - Added overloads for
SentenceParser.ParseandParseListthat acceptTextReaderandStreaminput. - Package tags updated
7.5.1
7.5.0
7.4.0
Some minor improvements:
- Some improvements to
MaxDepthFeatureandOccurenceCountFeature, to make the default feature creation and comparison logic a little more helpful:MakeFeatureVector(CNFClause)methods now don't include features forSkolemFunctionIdentifiers in returned vectors.MakeFeatureComparer()methods now return comparers that can handleEqualityIdentifier(considering it less informative than any other identifier type)- Added
MakeFeatureVectorSelector(Func<object,bool>)methods, which return a feature vector creation delegate that uses the given filter to determine which identifiers should be included in the returned vector
- Minor VariableSubstitution
ApplyTo(CNFSentence)andApplyTo(CNFClause)performance tweak