Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataEntity / System / Data / Common / Utils / Boolean / KnowledgeBase.cs / 1305376 / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- _ConnectStream.cs
- ClassicBorderDecorator.cs
- RegexStringValidator.cs
- TreeNodeBinding.cs
- ObjectItemNoOpAssemblyLoader.cs
- UnicodeEncoding.cs
- StrokeNodeOperations.cs
- GuidConverter.cs
- SecurityKeyEntropyMode.cs
- PublisherMembershipCondition.cs
- FixedSOMContainer.cs
- DataRowView.cs
- ImmutableCollection.cs
- CompositeControlDesigner.cs
- OrderedDictionaryStateHelper.cs
- DbLambda.cs
- HtmlTextArea.cs
- TdsRecordBufferSetter.cs
- Marshal.cs
- ConnectionPoolManager.cs
- PointCollection.cs
- XamlReader.cs
- XNodeNavigator.cs
- QfeChecker.cs
- SectionInput.cs
- AppDomainShutdownMonitor.cs
- URLIdentityPermission.cs
- GridViewDeleteEventArgs.cs
- ProtocolsConfiguration.cs
- SessionStateItemCollection.cs
- GlyphRunDrawing.cs
- SyntaxCheck.cs
- ObjectPersistData.cs
- PathSegment.cs
- OAVariantLib.cs
- SafeNativeMethods.cs
- MessageBox.cs
- SettingsPropertyNotFoundException.cs
- FormViewModeEventArgs.cs
- AssemblyCache.cs
- SelectionBorderGlyph.cs
- propertyentry.cs
- DispatcherExceptionFilterEventArgs.cs
- Identity.cs
- CultureTableRecord.cs
- Blend.cs
- XmlNodeChangedEventManager.cs
- listitem.cs
- LocalizedNameDescriptionPair.cs
- ColorBlend.cs
- ISAPIWorkerRequest.cs
- AsyncOperationManager.cs
- ToolBarPanel.cs
- NativeMethods.cs
- XamlToRtfWriter.cs
- CopyNodeSetAction.cs
- SqlRewriteScalarSubqueries.cs
- SafeCryptoHandles.cs
- StructuralCache.cs
- URLBuilder.cs
- InstanceDescriptor.cs
- EnumValAlphaComparer.cs
- SystemTcpConnection.cs
- WorkflowViewElement.cs
- PropertyContainer.cs
- ItemChangedEventArgs.cs
- SiteMapDataSourceView.cs
- UserUseLicenseDictionaryLoader.cs
- WindowsClientCredential.cs
- PagePropertiesChangingEventArgs.cs
- SocketAddress.cs
- SystemWebCachingSectionGroup.cs
- _HeaderInfoTable.cs
- SeparatorAutomationPeer.cs
- NoneExcludedImageIndexConverter.cs
- ListViewTableCell.cs
- ConfigurationLoader.cs
- Decorator.cs
- SpotLight.cs
- GridToolTip.cs
- MsmqInputChannelBase.cs
- XmlAnyAttributeAttribute.cs
- SQLInt32Storage.cs
- FixedDSBuilder.cs
- SaveFileDialog.cs
- PriorityItem.cs
- HandleExceptionArgs.cs
- XmlSchemaSimpleType.cs
- XmlSortKeyAccumulator.cs
- NetNamedPipeBindingCollectionElement.cs
- RadioButton.cs
- AppSettingsReader.cs
- TableLayoutPanel.cs
- PropertyInformation.cs
- DetailsViewRow.cs
- MenuBase.cs
- CodeTypeReferenceCollection.cs
- CategoryGridEntry.cs
- CachedBitmap.cs
- smtppermission.cs