Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / ndp / fx / src / DataEntity / System / Data / Common / Utils / Boolean / Sentence.cs / 2 / Sentence.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; using System.Linq; namespace System.Data.Common.Utils.Boolean { ////// Abstract base class for nodes in normal form expressions, e.g. Conjunctive Normal Form /// sentences. /// ///Type of expression leaf term identifiers. internal abstract class NormalFormNode{ private readonly BoolExpr _expr; /// /// Initialize a new normal form node representing the given expression. Caller must /// ensure the expression is logically equivalent to the node. /// /// Expression logically equivalent to this node. protected NormalFormNode(BoolExprexpr) { _expr = expr.Simplify(); } /// /// Gets an expression that is logically equivalent to this node. /// internal BoolExprExpr { get { return _expr; } } /// /// Utility method for delegation that return the expression corresponding to a given /// normal form node. /// ///Type of node /// Node to examine. ///Equivalent Boolean expression for the given node. protected static BoolExprExprSelector (T_NormalFormNode node) where T_NormalFormNode : NormalFormNode { return node._expr; } } /// /// Abstract base class for normal form sentences (CNF and DNF) /// ///Type of expression leaf term identifiers. ///Type of clauses in the sentence. internal abstract class Sentence: NormalFormNode where T_Clause : Clause , IEquatable { private readonly Set _clauses; /// /// Initialize a sentence given the appropriate sentence clauses. Produces /// an equivalent expression by composing the clause expressions using /// the given tree type. /// /// Sentence clauses /// Tree type for sentence (and generated expression) protected Sentence(Setclauses, ExprType treeType) : base(ConvertClausesToExpr(clauses, treeType)) { _clauses = clauses.AsReadOnly(); } // Produces an expression equivalent to the given clauses by composing the clause // expressions using the given tree type. private static BoolExpr ConvertClausesToExpr(Set clauses, ExprType treeType) { bool isAnd = ExprType.And == treeType; Debug.Assert(isAnd || ExprType.Or == treeType); IEnumerable > clauseExpressions = clauses.Select(new Func >(ExprSelector)); if (isAnd) { return new AndExpr (clauseExpressions); } else { return new OrExpr (clauseExpressions); } } public override string ToString() { StringBuilder builder = new StringBuilder(); builder.Append("Sentence{"); builder.Append(_clauses); return builder.Append("}").ToString(); } } /// /// Represents a sentence in disjunctive normal form, e.g.: /// /// Clause1 + Clause2 . ... /// /// Where each DNF clause is of the form: /// /// Literal1 . Literal2 . ... /// /// Each literal is of the form: /// /// Term /// /// or /// /// !Term /// ///Type of expression leaf term identifiers. internal sealed class DnfSentence: Sentence > { // Initializes a new DNF sentence given its clauses. internal DnfSentence(Set > clauses) : base(clauses, ExprType.Or) { } } /// /// Represents a sentence in conjunctive normal form, e.g.: /// /// Clause1 . Clause2 . ... /// /// Where each DNF clause is of the form: /// /// Literal1 + Literal2 + ... /// /// Each literal is of the form: /// /// Term /// /// or /// /// !Term /// ///Type of expression leaf term identifiers. internal sealed class CnfSentence: Sentence > { // Initializes a new CNF sentence given its clauses. internal CnfSentence(Set > clauses) : base(clauses, ExprType.And) { } } } // 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; using System.Linq; namespace System.Data.Common.Utils.Boolean { ////// Abstract base class for nodes in normal form expressions, e.g. Conjunctive Normal Form /// sentences. /// ///Type of expression leaf term identifiers. internal abstract class NormalFormNode{ private readonly BoolExpr _expr; /// /// Initialize a new normal form node representing the given expression. Caller must /// ensure the expression is logically equivalent to the node. /// /// Expression logically equivalent to this node. protected NormalFormNode(BoolExprexpr) { _expr = expr.Simplify(); } /// /// Gets an expression that is logically equivalent to this node. /// internal BoolExprExpr { get { return _expr; } } /// /// Utility method for delegation that return the expression corresponding to a given /// normal form node. /// ///Type of node /// Node to examine. ///Equivalent Boolean expression for the given node. protected static BoolExprExprSelector (T_NormalFormNode node) where T_NormalFormNode : NormalFormNode { return node._expr; } } /// /// Abstract base class for normal form sentences (CNF and DNF) /// ///Type of expression leaf term identifiers. ///Type of clauses in the sentence. internal abstract class Sentence: NormalFormNode where T_Clause : Clause , IEquatable { private readonly Set _clauses; /// /// Initialize a sentence given the appropriate sentence clauses. Produces /// an equivalent expression by composing the clause expressions using /// the given tree type. /// /// Sentence clauses /// Tree type for sentence (and generated expression) protected Sentence(Setclauses, ExprType treeType) : base(ConvertClausesToExpr(clauses, treeType)) { _clauses = clauses.AsReadOnly(); } // Produces an expression equivalent to the given clauses by composing the clause // expressions using the given tree type. private static BoolExpr ConvertClausesToExpr(Set clauses, ExprType treeType) { bool isAnd = ExprType.And == treeType; Debug.Assert(isAnd || ExprType.Or == treeType); IEnumerable > clauseExpressions = clauses.Select(new Func >(ExprSelector)); if (isAnd) { return new AndExpr (clauseExpressions); } else { return new OrExpr (clauseExpressions); } } public override string ToString() { StringBuilder builder = new StringBuilder(); builder.Append("Sentence{"); builder.Append(_clauses); return builder.Append("}").ToString(); } } /// /// Represents a sentence in disjunctive normal form, e.g.: /// /// Clause1 + Clause2 . ... /// /// Where each DNF clause is of the form: /// /// Literal1 . Literal2 . ... /// /// Each literal is of the form: /// /// Term /// /// or /// /// !Term /// ///Type of expression leaf term identifiers. internal sealed class DnfSentence: Sentence > { // Initializes a new DNF sentence given its clauses. internal DnfSentence(Set > clauses) : base(clauses, ExprType.Or) { } } /// /// Represents a sentence in conjunctive normal form, e.g.: /// /// Clause1 . Clause2 . ... /// /// Where each DNF clause is of the form: /// /// Literal1 + Literal2 + ... /// /// Each literal is of the form: /// /// Term /// /// or /// /// !Term /// ///Type of expression leaf term identifiers. internal sealed class CnfSentence: Sentence > { // Initializes a new CNF sentence given its clauses. internal CnfSentence(Set > clauses) : base(clauses, ExprType.And) { } } } // 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
- mda.cs
- MonthChangedEventArgs.cs
- FatalException.cs
- ScrollItemPattern.cs
- StrokeCollection.cs
- AssociationSetMetadata.cs
- DataKey.cs
- DuplicateWaitObjectException.cs
- ConsumerConnectionPoint.cs
- DiscoveryClientChannelFactory.cs
- CachedTypeface.cs
- DataBindingCollection.cs
- FolderBrowserDialog.cs
- LinkClickEvent.cs
- SimpleNameService.cs
- BasicViewGenerator.cs
- WasEndpointConfigContainer.cs
- EntitySqlQueryCacheKey.cs
- EqualityComparer.cs
- CatalogPart.cs
- ComPlusDiagnosticTraceRecords.cs
- Rfc2898DeriveBytes.cs
- EmptyReadOnlyDictionaryInternal.cs
- COM2ComponentEditor.cs
- Control.cs
- OperationContractGenerationContext.cs
- GridViewCommandEventArgs.cs
- ITextView.cs
- SwitchLevelAttribute.cs
- PropertyGridView.cs
- TcpTransportElement.cs
- QilFactory.cs
- SoapClientProtocol.cs
- AppLevelCompilationSectionCache.cs
- InvalidCommandTreeException.cs
- ReadOnlyCollection.cs
- MetaColumn.cs
- AsymmetricSignatureDeformatter.cs
- DrawItemEvent.cs
- counter.cs
- _SslState.cs
- TextEffectCollection.cs
- BufferedReadStream.cs
- xmlfixedPageInfo.cs
- TerminatorSinks.cs
- FastEncoder.cs
- HtmlInputPassword.cs
- AutoSizeToolBoxItem.cs
- DomainUpDown.cs
- CollectionType.cs
- RemoteWebConfigurationHostStream.cs
- DesignSurfaceCollection.cs
- IntPtr.cs
- UnionCqlBlock.cs
- DataContractSerializerElement.cs
- FeatureSupport.cs
- SoapEnumAttribute.cs
- XmlQueryCardinality.cs
- FormsIdentity.cs
- ProfilePropertySettings.cs
- Util.cs
- UserInitiatedRoutedEventPermissionAttribute.cs
- RouteParameter.cs
- ColorConverter.cs
- SerializerProvider.cs
- WSSecurityOneDotOneSendSecurityHeader.cs
- WebPartVerbCollection.cs
- HelpFileFileNameEditor.cs
- DesignerMetadata.cs
- RowType.cs
- Line.cs
- TemplateKeyConverter.cs
- Trace.cs
- CategoryGridEntry.cs
- WebPartVerbCollection.cs
- WebPartManager.cs
- PersonalizationProviderHelper.cs
- PathFigureCollection.cs
- mactripleDES.cs
- FrameDimension.cs
- HyperLinkField.cs
- WebScriptEnablingBehavior.cs
- DataGridColumnCollection.cs
- FontSource.cs
- FormViewUpdatedEventArgs.cs
- __Filters.cs
- WindowPattern.cs
- Int64.cs
- graph.cs
- DnsPermission.cs
- DataTableMappingCollection.cs
- SqlDependencyUtils.cs
- ClientViaElement.cs
- DocumentPage.cs
- XhtmlConformanceSection.cs
- Version.cs
- SecureConversationServiceElement.cs
- DeploymentSectionCache.cs
- RectAnimation.cs
- AnnouncementClient.cs