LMCAS
Lamina Computer Algebra System
载入中...
搜索中...
未找到
LMCAS::detail::ScopedFacts类 参考final

为绑定体提供词法作用域,隔离同名自由变量的外层事实。 无关表达式继续借用外层事实及其关系推论;栈上视图串联保留嵌套作用域。 更多...

#include </home/runner/work/docs/docs/LMCAS/src/internal/facts_query.hpp>

类 LMCAS::detail::ScopedFacts 继承关系图:
LMCAS::detail::ScopedFacts 的协作图:

Public 成员函数

 ScopedFacts (const FactsQuery &outer, std::string_view bound_name)
Result< Tribool > is_negative (const std::shared_ptr< const SymbolicNode > &node, ComputationContext &context) const override
Result< Tribool > is_nonnegative (const std::shared_ptr< const SymbolicNode > &node, ComputationContext &context) const override
Result< Tribool > is_nonzero (const std::shared_ptr< const SymbolicNode > &node, ComputationContext &context) const override
Result< Tribool > is_positive (const std::shared_ptr< const SymbolicNode > &node, ComputationContext &context) const override
Result< Tribool > is_real (const std::shared_ptr< const SymbolicNode > &node, ComputationContext &context) const override

Private 成员函数

Result< bool > shadows (const std::shared_ptr< const SymbolicNode > &node, ComputationContext &context) const

Private 属性

const std::string bound_name_
const FactsQuery & outer_

详细描述

为绑定体提供词法作用域,隔离同名自由变量的外层事实。 无关表达式继续借用外层事实及其关系推论;栈上视图串联保留嵌套作用域。

在文件 facts_query.hpp 第 35 行定义.

构造及析构函数说明

◆ ScopedFacts()

LMCAS::detail::ScopedFacts::ScopedFacts ( const FactsQuery & outer,
std::string_view bound_name )
inline

在文件 facts_query.hpp 第 37 行定义.

38 : outer_(outer), bound_name_(bound_name) {}

引用了 bound_name_ , 以及 outer_.

成员函数说明

◆ is_negative()

Result< Tribool > LMCAS::detail::ScopedFacts::is_negative ( const std::shared_ptr< const SymbolicNode > & node,
ComputationContext & context ) const
overridevirtual

实现了 LMCAS::FactsQuery.

在文件 facts_query_adapters.cpp 第 34 行定义.

35 {
36 auto hidden = shadows(node, context);
37 if (!hidden) { return Result<Tribool>::failure(hidden.error()); }
38 return hidden.value() ? Result<Tribool>(Tribool::Unknown) : outer_.is_negative(node, context);
39}
static Result failure(CasErrc code, std::string message, std::string operation={})
Result< Tribool > is_negative(const std::shared_ptr< const SymbolicNode > &node, ComputationContext &context) const override
Result< bool > shadows(const std::shared_ptr< const SymbolicNode > &node, ComputationContext &context) const
const SymbolicNodePtr & node(const ::LMCAS::SymbolicExpr &expression) noexcept
std::size_t std::size_t ComputationContext & context
@ Unknown
Property cannot be determined

引用了 LMCAS::detail::context, LMCAS::Result< T >::failure(), LMCAS::FactsQuery::is_negative(), LMCAS::detail::node(), outer_, shadows() , 以及 LMCAS::Unknown.

函数调用图:

◆ is_nonnegative()

Result< Tribool > LMCAS::detail::ScopedFacts::is_nonnegative ( const std::shared_ptr< const SymbolicNode > & node,
ComputationContext & context ) const
overridevirtual

实现了 LMCAS::FactsQuery.

在文件 facts_query_adapters.cpp 第 41 行定义.

42 {
43 auto hidden = shadows(node, context);
44 if (!hidden) { return Result<Tribool>::failure(hidden.error()); }
45 return hidden.value() ? Result<Tribool>(Tribool::Unknown) : outer_.is_nonnegative(node, context);
46}
Result< Tribool > is_nonnegative(const std::shared_ptr< const SymbolicNode > &node, ComputationContext &context) const override

引用了 LMCAS::detail::context, LMCAS::Result< T >::failure(), LMCAS::FactsQuery::is_nonnegative(), LMCAS::detail::node(), outer_, shadows() , 以及 LMCAS::Unknown.

函数调用图:

◆ is_nonzero()

Result< Tribool > LMCAS::detail::ScopedFacts::is_nonzero ( const std::shared_ptr< const SymbolicNode > & node,
ComputationContext & context ) const
overridevirtual

实现了 LMCAS::FactsQuery.

在文件 facts_query_adapters.cpp 第 48 行定义.

49 {
50 auto hidden = shadows(node, context);
51 if (!hidden) { return Result<Tribool>::failure(hidden.error()); }
52 return hidden.value() ? Result<Tribool>(Tribool::Unknown) : outer_.is_nonzero(node, context);
53}
Result< Tribool > is_nonzero(const std::shared_ptr< const SymbolicNode > &node, ComputationContext &context) const override

引用了 LMCAS::detail::context, LMCAS::Result< T >::failure(), LMCAS::FactsQuery::is_nonzero(), LMCAS::detail::node(), outer_, shadows() , 以及 LMCAS::Unknown.

函数调用图:

◆ is_positive()

Result< Tribool > LMCAS::detail::ScopedFacts::is_positive ( const std::shared_ptr< const SymbolicNode > & node,
ComputationContext & context ) const
overridevirtual

实现了 LMCAS::FactsQuery.

在文件 facts_query_adapters.cpp 第 27 行定义.

28 {
29 auto hidden = shadows(node, context);
30 if (!hidden) { return Result<Tribool>::failure(hidden.error()); }
31 return hidden.value() ? Result<Tribool>(Tribool::Unknown) : outer_.is_positive(node, context);
32}
Result< Tribool > is_positive(const std::shared_ptr< const SymbolicNode > &node, ComputationContext &context) const override

引用了 LMCAS::detail::context, LMCAS::Result< T >::failure(), LMCAS::FactsQuery::is_positive(), LMCAS::detail::node(), outer_, shadows() , 以及 LMCAS::Unknown.

函数调用图:

◆ is_real()

Result< Tribool > LMCAS::detail::ScopedFacts::is_real ( const std::shared_ptr< const SymbolicNode > & node,
ComputationContext & context ) const
overridevirtual

实现了 LMCAS::FactsQuery.

在文件 facts_query_adapters.cpp 第 55 行定义.

56 {
57 auto hidden = shadows(node, context);
58 if (!hidden) { return Result<Tribool>::failure(hidden.error()); }
59 return hidden.value() ? Result<Tribool>(Tribool::Unknown) : outer_.is_real(node, context);
60}
Result< Tribool > is_real(const std::shared_ptr< const SymbolicNode > &node, ComputationContext &context) const override

引用了 LMCAS::detail::context, LMCAS::Result< T >::failure(), LMCAS::FactsQuery::is_real(), LMCAS::detail::node(), outer_, shadows() , 以及 LMCAS::Unknown.

函数调用图:

◆ shadows()

Result< bool > LMCAS::detail::ScopedFacts::shadows ( const std::shared_ptr< const SymbolicNode > & node,
ComputationContext & context ) const
private

在文件 facts_query_adapters.cpp 第 11 行定义.

12 {
13 auto access = context.consume_steps(0, "facts.scoped");
14 if (!access) { return Result<bool>::failure(access.error()); }
15 try {
17 std::numeric_limits<std::size_t>::max(), "facts.scoped");
19 } catch (const CasError& error) {
20 return Result<bool>::failure(error);
21 } catch (const std::bad_alloc&) {
23 "scoped facts allocation failed", "facts.scoped");
24 }
25}
Result< void > consume_steps(std::size_t amount=1, const std::string &operation={})
const ResourceLimits & limits() const noexcept
bool expression_depends_on_variable(const detail::SymbolicNodePtr &expression, const std::string &variable, detail::RewriteBudget *budget)
std::size_t max_recursion_depth
Simultaneous checked depth.

引用了 bound_name_, LMCAS::detail::budget, LMCAS::detail::context, LMCAS::expression_depends_on_variable(), LMCAS::Result< T >::failure(), LMCAS::detail::node() , 以及 LMCAS::ResourceLimit.

被这些函数引用 is_negative(), is_nonnegative(), is_nonzero(), is_positive() , 以及 is_real().

函数调用图:
这是这个函数的调用关系图:

类成员变量说明

◆ bound_name_

const std::string LMCAS::detail::ScopedFacts::bound_name_
private

在文件 facts_query.hpp 第 49 行定义.

被这些函数引用 ScopedFacts() , 以及 shadows().

◆ outer_

const FactsQuery& LMCAS::detail::ScopedFacts::outer_
private

在文件 facts_query.hpp 第 48 行定义.

被这些函数引用 ScopedFacts(), is_negative(), is_nonnegative(), is_nonzero(), is_positive() , 以及 is_real().


该类的文档由以下文件生成: