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

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

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

Public 成员函数

 AssumptionFacts (const AssumptionContext &assumptions)
 AssumptionFacts (const AssumptionFacts &)=delete
 AssumptionFacts (const InferenceEngine &engine) noexcept
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
AssumptionFacts & operator= (const AssumptionFacts &)=delete

静态 Public 成员函数

static void collect_names (const AssumptionContext &assumptions, std::set< std::string > &names, RewriteBudget &budget)

Private 属性

const InferenceEngine * engine_
std::optional< InferenceEngine > owned_engine_

详细描述

在文件 assumption_facts.hpp 第 13 行定义.

构造及析构函数说明

◆ AssumptionFacts() [1/3]

LMCAS::detail::AssumptionFacts::AssumptionFacts ( const AssumptionContext & assumptions)
inlineexplicit

在文件 assumption_facts.hpp 第 15 行定义.

16 : owned_engine_(std::in_place, assumptions), engine_(&*owned_engine_) {}
std::optional< InferenceEngine > owned_engine_

引用了 engine_ , 以及 owned_engine_.

被这些函数引用 AssumptionFacts() , 以及 operator=().

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

◆ AssumptionFacts() [2/3]

LMCAS::detail::AssumptionFacts::AssumptionFacts ( const InferenceEngine & engine)
inlineexplicitnoexcept

在文件 assumption_facts.hpp 第 17 行定义.

17: engine_(&engine) {}

引用了 engine_.

◆ AssumptionFacts() [3/3]

LMCAS::detail::AssumptionFacts::AssumptionFacts ( const AssumptionFacts & )
delete

引用了 AssumptionFacts().

函数调用图:

成员函数说明

◆ collect_names()

void LMCAS::detail::AssumptionFacts::collect_names ( const AssumptionContext & assumptions,
std::set< std::string > & names,
RewriteBudget & budget )
static

在文件 assumption_simplification.cpp 第 89 行定义.

90 {
91 const auto include = [&](const SymbolicExpr& expression) {
92 budget.measure(node(expression));
93 auto variables = free_variables(node(expression), &budget);
94 names.merge(variables);
95 };
96 for (const auto& scope : assumptions.scope_stack_) {
97 auto access = budget.context().consume_steps(1, "assumption.names");
98 if (!access) { throw access.error(); }
99 for (auto& symbol : scope.properties.get_all_symbols()) {
100 access = budget.context().consume_steps(1, "assumption.names");
101 if (!access) { throw access.error(); }
102 for (const auto& [variable, period] : scope.properties.get_period_decls(symbol)) {
103 names.insert(variable);
104 include(period);
105 }
106 for (const auto& declaration : scope.properties.get_monotonicity_decls(symbol)) {
107 access = budget.context().consume_steps(1, "assumption.names");
108 if (!access) { throw access.error(); }
109 names.insert(declaration.variable);
110 }
111 names.insert(std::move(symbol));
112 }
113 for (const auto& relation : scope.relations.get_relations()) {
114 include(relation.lhs);
115 include(relation.rhs);
116 }
117 for (const auto& conditional : scope.conditionals) {
118 include(conditional.condition);
119 include(conditional.conclusion);
120 }
121 }
122}
Result< void > consume_steps(std::size_t amount=1, const std::string &operation={})
ComputationContext & context() const noexcept
std::size_t measure(const std::shared_ptr< const SymbolicNode > &node)
const SymbolicNodePtr & node(const ::LMCAS::SymbolicExpr &expression) noexcept
const std::string & variable
std::set< std::string > free_variables(const detail::SymbolicNodePtr &expression, detail::RewriteBudget *budget)
ExprResult relation(const ExprPtr &lhs, const ExprPtr &rhs, RelationOp op)

引用了 LMCAS::detail::budget, LMCAS::ComputationContext::consume_steps(), LMCAS::detail::RewriteBudget::context(), LMCAS::free_variables(), LMCAS::detail::RewriteBudget::measure(), LMCAS::detail::node(), LMCAS::relation() , 以及 LMCAS::detail::variable.

被这些函数引用 LMCAS::detail::transcendental::anonymous_namespace{transcendental_inversion.cpp}::capture_free_integer_parameter() , 以及 operator=().

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

◆ is_negative()

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

实现了 LMCAS::FactsQuery.

在文件 assumption_simplification.cpp 第 131 行定义.

132 {
133 auto access = context.consume_steps(0, "facts.assumptions");
134 if (!access) { return Result<Tribool>::failure(access.error()); }
135 return engine_->query_negative_checked(expression_from_node(node), context);
136}
static Result failure(CasErrc code, std::string message, std::string operation={})
inline ::LMCAS::SymbolicExpr expression_from_node(SymbolicNodePtr root)
std::size_t std::size_t ComputationContext & context

引用了 LMCAS::detail::context, engine_, LMCAS::detail::expression_from_node(), LMCAS::Result< T >::failure() , 以及 LMCAS::detail::node().

被这些函数引用 operator=().

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

◆ is_nonnegative()

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

实现了 LMCAS::FactsQuery.

在文件 assumption_simplification.cpp 第 138 行定义.

139 {
140 auto access = context.consume_steps(0, "facts.assumptions");
141 if (!access) { return Result<Tribool>::failure(access.error()); }
142 return engine_->query_nonnegative_checked(expression_from_node(node), context);
143}

引用了 LMCAS::detail::context, engine_, LMCAS::detail::expression_from_node(), LMCAS::Result< T >::failure() , 以及 LMCAS::detail::node().

被这些函数引用 operator=().

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

◆ is_nonzero()

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

实现了 LMCAS::FactsQuery.

在文件 assumption_simplification.cpp 第 145 行定义.

146 {
147 auto access = context.consume_steps(0, "facts.assumptions");
148 if (!access) { return Result<Tribool>::failure(access.error()); }
149 return engine_->query_nonzero_checked(expression_from_node(node), context);
150}

引用了 LMCAS::detail::context, engine_, LMCAS::detail::expression_from_node(), LMCAS::Result< T >::failure() , 以及 LMCAS::detail::node().

被这些函数引用 operator=().

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

◆ is_positive()

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

实现了 LMCAS::FactsQuery.

在文件 assumption_simplification.cpp 第 124 行定义.

125 {
126 auto access = context.consume_steps(0, "facts.assumptions");
127 if (!access) { return Result<Tribool>::failure(access.error()); }
128 return engine_->query_positive_checked(expression_from_node(node), context);
129}

引用了 LMCAS::detail::context, engine_, LMCAS::detail::expression_from_node(), LMCAS::Result< T >::failure() , 以及 LMCAS::detail::node().

被这些函数引用 operator=().

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

◆ is_real()

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

实现了 LMCAS::FactsQuery.

在文件 assumption_simplification.cpp 第 152 行定义.

153 {
154 auto access = context.consume_steps(0, "facts.assumptions");
155 if (!access) { return Result<Tribool>::failure(access.error()); }
156 return engine_->query_real_checked(expression_from_node(node), context);
157}

引用了 LMCAS::detail::context, engine_, LMCAS::detail::expression_from_node(), LMCAS::Result< T >::failure() , 以及 LMCAS::detail::node().

被这些函数引用 operator=().

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

◆ operator=()

AssumptionFacts & LMCAS::detail::AssumptionFacts::operator= ( const AssumptionFacts & )
delete

引用了 AssumptionFacts(), LMCAS::detail::budget, collect_names(), LMCAS::detail::context, is_negative(), is_nonnegative(), is_nonzero(), is_positive(), is_real() , 以及 LMCAS::detail::node().

函数调用图:

类成员变量说明

◆ engine_

const InferenceEngine* LMCAS::detail::AssumptionFacts::engine_
private

◆ owned_engine_

std::optional<InferenceEngine> LMCAS::detail::AssumptionFacts::owned_engine_
private

在文件 assumption_facts.hpp 第 30 行定义.

被这些函数引用 AssumptionFacts().


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