Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / ndp / fx / src / DataEntity / System / Data / Common / Utils / Boolean / KnowledgeBase.cs / 1 / KnowledgeBase.cs
//---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupOwner [....] //--------------------------------------------------------------------- using System; using System.Collections.Generic; using System.Text; using System.Globalization; using System.Collections.ObjectModel; using System.Diagnostics; namespace System.Data.Common.Utils.Boolean { ////// Data structure supporting storage of facts and proof (resolution) of queries given /// those facts. /// /// For instance, we may know the following facts: /// /// A --> B /// A /// /// Given these facts, the knowledge base can prove the query: /// /// B /// /// through resolution. /// ///Type of leaf term identifiers in fact expressions. internal class KnowledgeBase{ private readonly List > _facts; private Vertex _knowledge; private readonly ConversionContext _context; /// /// Initialize a new knowledge base. /// internal KnowledgeBase() { _facts = new List>(); _knowledge = Vertex.One; // we know '1', but nothing else at present _context = IdentifierService .Instance.CreateConversionContext(); } /// /// Adds all facts from another knowledge base /// /// The other knowledge base internal void AddKnowledgeBase(KnowledgeBasekb) { foreach (BoolExpr fact in kb._facts) { AddFact(fact); } } /// /// Adds the given fact to this KB. /// /// Simple fact. internal virtual void AddFact(BoolExprfact) { _facts.Add(fact); Converter converter = new Converter (fact, _context); Vertex factVertex = converter.Vertex; _knowledge = _context.Solver.And(_knowledge, factVertex); } /// /// Adds the given implication to this KB, where implication is of the form: /// /// condition --> implies /// /// Condition /// Entailed expression internal void AddImplication(BoolExprcondition, BoolExpr implies) { AddFact(new Implication(condition, implies)); } /// /// Adds an equivalence to this KB, of the form: /// /// left iff. right /// /// Left operand /// Right operand internal void AddEquivalence(BoolExprleft, BoolExpr right) { AddFact(new Equivalence(left, right)); } public override string ToString() { StringBuilder builder = new StringBuilder(); builder.AppendLine("Facts:"); foreach (BoolExpr fact in _facts) { builder.Append("\t").AppendLine(fact.ToString()); } return builder.ToString(); } // Private class improving debugging output for implication facts // (fact appears as A --> B rather than !A + B) private class Implication : OrExpr { BoolExpr _condition; BoolExpr _implies; // (condition --> implies) iff. (!condition OR implies) internal Implication(BoolExpr condition, BoolExpr implies) : base(condition.MakeNegated(), implies) { _condition = condition; _implies = implies; } public override string ToString() { return StringUtil.FormatInvariant("{0} --> {1}", _condition, _implies); } } // Private class improving debugging output for equivalence facts // (fact appears as A <--> B rather than (!A + B) . (A + !B)) private class Equivalence : AndExpr { BoolExpr _left; BoolExpr _right; // (left iff. right) iff. (left --> right AND right --> left) internal Equivalence(BoolExpr left, BoolExpr right) : base(new Implication(left, right), new Implication(right, left)) { _left = left; _right = right; } public override string ToString() { return StringUtil.FormatInvariant("{0} <--> {1}", _left, _right); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //---------------------------------------------------------------------- // // Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupOwner [....] //--------------------------------------------------------------------- using System; using System.Collections.Generic; using System.Text; using System.Globalization; using System.Collections.ObjectModel; using System.Diagnostics; namespace System.Data.Common.Utils.Boolean { ////// Data structure supporting storage of facts and proof (resolution) of queries given /// those facts. /// /// For instance, we may know the following facts: /// /// A --> B /// A /// /// Given these facts, the knowledge base can prove the query: /// /// B /// /// through resolution. /// ///Type of leaf term identifiers in fact expressions. internal class KnowledgeBase{ private readonly List > _facts; private Vertex _knowledge; private readonly ConversionContext _context; /// /// Initialize a new knowledge base. /// internal KnowledgeBase() { _facts = new List>(); _knowledge = Vertex.One; // we know '1', but nothing else at present _context = IdentifierService .Instance.CreateConversionContext(); } /// /// Adds all facts from another knowledge base /// /// The other knowledge base internal void AddKnowledgeBase(KnowledgeBasekb) { foreach (BoolExpr fact in kb._facts) { AddFact(fact); } } /// /// Adds the given fact to this KB. /// /// Simple fact. internal virtual void AddFact(BoolExprfact) { _facts.Add(fact); Converter converter = new Converter (fact, _context); Vertex factVertex = converter.Vertex; _knowledge = _context.Solver.And(_knowledge, factVertex); } /// /// Adds the given implication to this KB, where implication is of the form: /// /// condition --> implies /// /// Condition /// Entailed expression internal void AddImplication(BoolExprcondition, BoolExpr implies) { AddFact(new Implication(condition, implies)); } /// /// Adds an equivalence to this KB, of the form: /// /// left iff. right /// /// Left operand /// Right operand internal void AddEquivalence(BoolExprleft, BoolExpr right) { AddFact(new Equivalence(left, right)); } public override string ToString() { StringBuilder builder = new StringBuilder(); builder.AppendLine("Facts:"); foreach (BoolExpr fact in _facts) { builder.Append("\t").AppendLine(fact.ToString()); } return builder.ToString(); } // Private class improving debugging output for implication facts // (fact appears as A --> B rather than !A + B) private class Implication : OrExpr { BoolExpr _condition; BoolExpr _implies; // (condition --> implies) iff. (!condition OR implies) internal Implication(BoolExpr condition, BoolExpr implies) : base(condition.MakeNegated(), implies) { _condition = condition; _implies = implies; } public override string ToString() { return StringUtil.FormatInvariant("{0} --> {1}", _condition, _implies); } } // Private class improving debugging output for equivalence facts // (fact appears as A <--> B rather than (!A + B) . (A + !B)) private class Equivalence : AndExpr { BoolExpr _left; BoolExpr _right; // (left iff. right) iff. (left --> right AND right --> left) internal Equivalence(BoolExpr left, BoolExpr right) : base(new Implication(left, right), new Implication(right, left)) { _left = left; _right = right; } public override string ToString() { return StringUtil.FormatInvariant("{0} <--> {1}", _left, _right); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- PreparingEnlistment.cs
- TdsParserHelperClasses.cs
- PropertyGridCommands.cs
- Journal.cs
- WebPartZoneBase.cs
- ConfigurationManager.cs
- ExpressionBinding.cs
- FolderBrowserDialog.cs
- GenericUriParser.cs
- PerspectiveCamera.cs
- PublisherMembershipCondition.cs
- DataGridViewCellConverter.cs
- ListItemCollection.cs
- CaseInsensitiveComparer.cs
- CatalogPartChrome.cs
- CodeArrayCreateExpression.cs
- UniqueSet.cs
- XmlMembersMapping.cs
- FixedPageAutomationPeer.cs
- SiteMembershipCondition.cs
- ItemList.cs
- SurrogateChar.cs
- WindowsIPAddress.cs
- ExceptionList.cs
- EventLogPermissionAttribute.cs
- HttpResponse.cs
- ObjectDataSourceStatusEventArgs.cs
- iisPickupDirectory.cs
- XmlChildEnumerator.cs
- ImportedNamespaceContextItem.cs
- DefaultBindingPropertyAttribute.cs
- ListViewInsertEventArgs.cs
- CachedTypeface.cs
- CatalogZoneBase.cs
- TextHidden.cs
- GridViewAutomationPeer.cs
- Point.cs
- COSERVERINFO.cs
- TextPattern.cs
- XPathNavigator.cs
- ReadOnlyTernaryTree.cs
- CacheRequest.cs
- StateBag.cs
- EntitySqlQueryCacheKey.cs
- RectAnimation.cs
- FixedElement.cs
- SafeCryptoHandles.cs
- BinaryObjectReader.cs
- WebPartConnectionsCloseVerb.cs
- UIElementCollection.cs
- InspectionWorker.cs
- ParseElementCollection.cs
- MethodBuilderInstantiation.cs
- CursorInteropHelper.cs
- DataGridViewRowEventArgs.cs
- XmlWrappingReader.cs
- MiniConstructorInfo.cs
- BindingNavigator.cs
- DesignerResources.cs
- StrokeNodeOperations.cs
- sqlpipe.cs
- SspiSecurityTokenParameters.cs
- FixedPageAutomationPeer.cs
- PropertyTabAttribute.cs
- Int64KeyFrameCollection.cs
- BehaviorDragDropEventArgs.cs
- RemoteArgument.cs
- Lasso.cs
- MatchNoneMessageFilter.cs
- GiveFeedbackEvent.cs
- NullExtension.cs
- ReachPageContentSerializerAsync.cs
- ObfuscateAssemblyAttribute.cs
- TypeForwardedFromAttribute.cs
- ObfuscationAttribute.cs
- ProviderUtil.cs
- Suspend.cs
- ContentType.cs
- FileDataSourceCache.cs
- GlyphTypeface.cs
- RadioButtonDesigner.cs
- MemoryRecordBuffer.cs
- ToReply.cs
- TypeReference.cs
- DropDownHolder.cs
- CssTextWriter.cs
- CoreSwitches.cs
- RuntimeEnvironment.cs
- UrlAuthFailureHandler.cs
- PeerMaintainer.cs
- UrlEncodedParameterWriter.cs
- InstanceHandleReference.cs
- DataGridHeaderBorder.cs
- FixedSOMLineRanges.cs
- ExpressionNode.cs
- WebPartEventArgs.cs
- ExclusiveNamedPipeTransportManager.cs
- ClientTarget.cs
- HostUtils.cs
- SrgsElementList.cs