Interfaces Module


This module defines the following types:

IType Type

Each IType implementation represents a type for AST elements. For instance infons, principals, integers, rules, evidence, ...

Methods

Modifiers Return type Method name Method parameters Description
bool IsSubtypeOf IType Returns true if this type can be seen as the typed passed as parameter

Properties

Return type Property name Description
string Name Short name for this type
string FullName Full name for this type
IType option BaseType Base type

 

ITerm Type

ITerm implementations are the AST elements. They encode everything from variables and constants to asInfon queries, rules, etc.

Methods

Modifiers Return type Method name Method parameters Description
ITerm Apply ISubstitution Returns a new ITerm which results from applying the given substitution
ITerm Normalize Returns a new ITerm which is a normalized version of this one
ISubstitution option UnifyFrom ISubstitution, ITerm It tries to unify this ITerm with the given one, starting from the given substitution. If the unification is successful, a new substitution (which is a specialization of the given one) is returned. None is returned if unification fails
ISubstitution option Unify ITerm It tries to unify this ITerm with the given one. If unification is successful a substitution that guarantees syntactic equality is returned, otherwise None is returned

Properties

Return type Property name Description
IType Type The type of this AST element
IVar list Vars The free variables in this AST element
IVar list BoundVars The bound variables in this AST element

 

IVar Type

IVar is used to represent any AST element that is to be treated like a variable

Implemented Interfaces

  • ITerm

Properties

Return type Property name Description
string Name Variable name, which is used as variable identifier

 

IConst Type

IConst is an interface that is implemented by all the AST nodes that represent ground values

Implemented Interfaces

  • ITerm

Properties

Return type Property name Description
Object Value The value of this constant

 

ISubstitution Type

ISubstitution implementations model substitutions that map variables to AST elements (IVar --> ITerm). They are used as results of unification

Methods

Modifiers Return type Method name Method parameters Description
ITerm Apply IVar Applies this substitution to the given IVar
ISubstitution Extend IVar, ITerm Returns a new substitution that results from extending the current substitution so that it maps v to t and leaves the rest unchanged
ISubstitution ComposeWith ISubstitution Returns a new substitution that results from first applying s' and then applying the current Substitution
bool DomainContains IVar Returns true iff v is affected by this substitution
ISubstitution RestrictTo IVar list Returns a new substitution that results from restricting the current one to only modify the variables given in the list
ISubstitution Forget IVar list Returns a new substitution that results from forgetting the current mapping to the variables given in the list

Properties

Return type Property name Description
IVar list Domain Returns the vars affected by this substitution
bool IsVariableRenaming Returns true if this substitution only renames variables

 

IParser Type

IParser provides an interface for different parsers. All implementations of IParser process input strings and return ITerms

Methods

Modifiers Return type Method name Method parameters Description
IType ParseType string Parse an IType from the input string
ITerm ParseTerm string Parse an ITerm from the input string

 

IPrettyPrinter Type

IPrettyPrinter provides an interface to print ITerms back into different concrete syntaxes. An IPrettyPrinter implementation should be bound to an IParser implementation that can parse the output back

Methods

Modifiers Return type Method name Method parameters Description
string PrintType IType Returns a string representation for the given IType
string PrintTerm ITerm Returns a string representation for the given ITerm (infon, rule, etc.)

 

ISubstrateTerm Type

ISubstrateTerm implementations are AST elements which are related to a substrate. Each ISubstrateTerm has a Namespace, each ISubstrate understands a set of Namespaces.

Implemented Interfaces

  • ITerm

Properties

Return type Property name Description
string Namespace Tha namespace for this ISubstrateTerm. This is used to locate an ISubstrate implementation that will understand this ISubstrateTerm

 

ISubstrateUpdateTerm Type

ISubstrateUpdateTerm implementations are substrate terms that perform updates (addition, modification, removal, changing parameters etc.) on a substrate. They are used in "apply" acctions

Implemented Interfaces

  • ISubstrateTerm
  • ITerm
 

ISubstrateQueryTerm Type

ISubstrateQueryTerm implementations are substrate terms that perform queries on a substrate. They are used in asInfon constructs

Implemented Interfaces

  • ISubstrateTerm
  • ITerm
 

ISubstrate Type

ISubstrate implementations give DKAL the ability to query and modify data sitting in various formats and representations (XML, arithmetics, SQL, etc.) Each substrate understand a set of namespaces, which are used to fetch the proper substrate when an ISubstrateTerm is found and needs to be executed

Methods

Modifiers Return type Method name Method parameters Description
ISubstitution seq Solve ISubstrateQueryTerm seq, ISubstitution seq Performs the given queries (which must have a namespace understood by this substrate) for each of the given input substitutions (partial results). Returns a sequence of resolved substitutions (more specialized than substs)
bool Update ISubstrateUpdateTerm seq Applies the given ISubstrateUpdateTerms (which must have a namespace understood by this substrate). Returns true upon success, false otherwise
bool AreConsistentUpdates ISubstrateUpdateTerm seq Given the ISubstrateUpdateTerms (which must have a namespace understood by this substrate) it returns true iff it is safe to apply them in parallel (e.g. no row is being deleted and added at the same time, etc.)
IVar list RequiredVars ISubstrateQueryTerm Given the ISubstrateQueryTerm (which must have a namespace understood by this substrate), it returns which of the query free variables must be instantiated before executing the query. For instance, an arithmetic calculator substrate may require all variables to be instantiated, except for the variable that gets the result (left-hand side can be free)

Properties

Return type Property name Description
HashSet<string> Namespaces Returns the set of namespaces that this ISubstrate implementation understands

 

IInfostrate Type

Provides an interface for a repository of knowledge in the form of infon ITerms

Methods

Modifiers Return type Method name Method parameters Description
bool Learn ITerm Adds the given infon ITerm to the infostrate
bool Forget ITerm Removes the given infon ITerm from the infostrate

Properties

Return type Property name Description
ITerm seq Knowledge Returns a sequence of knowledge from the infostrate

 

IMailBox Type

Provides an interface for a repository of incoming infon ITerms

Methods

Modifiers Return type Method name Method parameters Description
unit Add ITerm, ITerm Adds the given infon ITerm to the mailbox
unit Remove ITerm, ITerm list option Removes the given infon ITerm from the mailbox
unit Prune Eliminates "old" messages, each mailbox decides how to implement this operation, which should be invoked at the end of each execution round
ISubstitution seq Matches ITerm, ITerm, ISubstitution seq Match an infon to messages in the mailbox. It returns a subset of (possibly specialized) substitutions.

 

IRouter Type

IRouter provides an interface for communication with the environment. Implementations of IRouter handle both incoming and outcoming messages

Methods

Modifiers Return type Method name Method parameters Description
unit Start Must be called to initialize the router
unit Stop Must be called after the router is no longer needed
unit Receive ITerm -> ITerm -> unit
unit Send ITerm, ITerm Sends an infon ITerm to the target principal ITerm

Properties

Return type Property name Description
string Me Returns the current principal name
string list Roster Returns the names of the known principals

 

ISignatureProvider Type

ISignatureProvider provides an interface for implementations to construct and verify signed infons

Methods

Modifiers Return type Method name Method parameters Description
int ConstructSignature ITerm, string Construct a signature for the given ITerm
bool CheckSignature ITerm, string, int Checks if the given signature is correct

 

ILogicEngine Type

ILogicEngine provides an interface for logic reasoning engines that handle the infostrate

Methods

Modifiers Return type Method name Method parameters Description
unit Start Must be called to initialize the engine
unit Stop Must be called after the engine is no longer needed
ISubstitution seq Derive ITerm, ISubstitution seq Given an infon ITerm with (possibly) free variables and an initial sequence of substitutions it returns all those (possibly specialized) substitutions that make the infon hold
ISubstitution seq DeriveJustification ITerm, ITerm, ISubstitution seq Constructs evidence for the given infon ITerm that matches the given proofTemplate, if possible. Works under the given substitutions, returning more concrete ones (to instantiate the proofTemplate when successfull)
ITerm option CheckJustification ITerm Checks if the given evidence is a well-formed justification, if it succeeds it returns the infon that is justified by the evidence; it it does not suceed it returns None
bool Complete ITerm Learns that the knowledge learnt so far for a given relation (wrapped as an infon) is complete (closed)

Properties

Return type Property name Description
IInfostrate Infostrate The knowledge source for the logic engine
ISignatureProvider SignatureProvider The signature checking implementation for this logic engine

 

IExecutor Type

IExecutor provides an interface for the engine driver. IExecutor implementations are in charge of keeping a policy and apply all the rules as their conditions are triggered

Methods

Modifiers Return type Method name Method parameters Description
unit Start Must be called to initialize the executor
unit Stop Must be called when the executor is no longer needed
bool InstallRule ITerm Installs the given rule ITerm on the executor. The rule is followed from this point onwards. Returns false if the rule was already installed
bool UninstallRule ITerm Uninstalls the given rule ITerm on the executor. Returns true if the rule was not present
unit FixedPointCallback unit -> unit
unit WakeUpCallback unit -> unit
unit ActionCallback ITerm -> unit
unit ReceiveCallback ITerm -> ITerm -> unit
unit RoundStartCallback unit -> unit

 

IParsingContext Type

IParsingContext provides an interface for contexts that keep information necessary during the parsing process such as variable types, macro definitions, etc.

Methods

Modifiers Return type Method name Method parameters Description
bool HasVariable string Returns true if there is a variable in the context with the given name
IType VariableType string For a variable name in the context, it returns its type
unit AddTypeRename string, IType Adds a type rename by giving a newTypeName to a given targetType
IType TypeFromName string Given a type fullname it returns the AST type for it
bool HasMacro string Returns true iff the contexts has a macro definition with the given name
unit AddMacro string, IType, ISubstrateQueryTerm, IVar list Given a macro name, a return type, a body and arguments, it incorporates these as a new macro in the context.
IVar list GetMacroArgs string Given a macro name in the context it returns the macro arguments
IType GetMacroRetType string Given a macro name in the context it returns the macro return type
ITerm * ISubstrateQueryTerm ApplyMacro string, ITerm list Given a macro name and concrete arguments, it returns a tuple (t, sqt) where t is the element that should be inlined (the macro return variable) and sqt is the macro body with the concrete arguments (which should be incorporated as an asInfon(sqt) somewhere before or after t is used)
IVar FreshVar IType Given a type it returns a fresh variable of that type

Properties

Return type Property name Description
string Me Name of the principal for which the policy is being parsed

 

ISubstrateParser Type

ISubstrateParser provides an interface for substrate parsers that interpret substrate queries and update terms

Methods

Modifiers Return type Method name Method parameters Description
unit SetParsingContext IParsingContext Sets the parsing context (that contains type information and macros among others) for this parser
unit SetNamespace string Sets the namespace to be used in all the ISubstrateTerms produced by this parser
unit SetSubstrate ISubstrate Sets the ISubstrate implementation that will be used to interpret the ISubstrateTerms produced by this parser. This ISubstrate may be used to obtain extra information during parsing (for instance, the SQL substrate parser uses a SQL ISubstrate implementation to get type information for the columns mentioned in the queries and updates)
ISubstrateTerm ParseTerm string It produces an ISubstrateTerm from the given string representation

 

ISubstratePrettyPrinter Type

ISubstratePrettyPrinter provides an interface to print substrate AST elements

Methods

Modifiers Return type Method name Method parameters Description
string PrintTerm ISubstrateTerm Returns a string representation for the given ISubstrateTerm

 

ITranslatedExpr Type

Wraps around a generic translated expression

Methods

Modifiers Return type Method name Method parameters Description
Object getUnderlyingExpr Gets the underlying expression which is completely domain related

 

ITranslator Type

ITranslator provides a mechanism for translating ITerm elements to any other expression

Methods

Modifiers Return type Method name Method parameters Description
ITranslatedExpr translate ITerm Translates an ITerm to an ITranslatedExpr

 

Automatically generated on 7/17/2013 12:17:16 PM
 

Last edited Jul 17, 2013 at 7:20 PM by epavese, version 7

Comments

No comments yet.