* \brief Logic reasoning implementation. Internally, it's a proxy to the external ASP solver [Clasp](https://potassco.org/clasp/)
*
* Performs reasoning over source codes in order to facilitate efficient compilation using results from a number of internal analyzers.
* Clients implement \ref IAnalysisReport to supply Transcend with data and implement \ref IQuery to find out resolutions.
*
* Transcend uses the following sources to build a logic program before actual reasoning is performed:
* - Raw content. Clients are free to include arbitrary ASP format data in the logic program. See \ref addRawScript().
* - External scripts. External files with ASP scripts can be appended to the logic program. See `involveImports()` (private member).
* - Diagnostic rules to produce diagnostic messages during
* compilation(warnings) or even to signal to halt compilation with errors. See \ref addRuleWarning(), \ref registerWarning().
* - Internal analyzers. The analyzer can publish logic facts and rules by implementing \ref IAnalysisReport interface.
*
* Generally, Transcend input could be loosely broke down into three categories:
* - Internally derived data. CFA, DFA, and other analyzers automatically supply the reasoner with
* useful insights about source codes, the structure and algorithms of a program.
* - User provided custom data. Analyzers extract manual developer-provided annotations from the source codes.
* - External data. External files supply reasoner with third-party data
* which relates to different aspects of a program possibly produced by external analyzers.
*
* After Transcend has gathered data from all providers and the logic program is fully constructed,
* it runs the external logic reasoner to receive back the solution.
*
* The solution from the external logic reasoner is accessible via *queries*.
* Classes which want to request data from Transcend should implement the \ref IQuery interface. See \ref IQuery descendants to find out currently available queries.
*
* \section tl_adapt Adaptability
* Decorators are used to extend %TranscendLayer functionality. The default bundle defined by \ref DefaultTranscendLayerImpl.
*
* \sa See xreate::dfa::DFAPass, xreate::cfa::CFAPass, xreate::IQuery, xreate::IAnalysisReport