LMCAS
Lamina Computer Algebra System
载入中...
搜索中...
未找到
assumption_facts.hpp
浏览该文件的文档.
1#pragma once
2
5#include <set>
6
7namespace LMCAS {
8
9class AssumptionContext;
10
11namespace detail {
12class RewriteBudget;
13class AssumptionFacts final : public FactsQuery {
14public:
15 explicit AssumptionFacts(const AssumptionContext& assumptions)
16 : owned_engine_(std::in_place, assumptions), engine_(&*owned_engine_) {}
17 explicit AssumptionFacts(const InferenceEngine& engine) noexcept : engine_(&engine) {}
20 static void collect_names(const AssumptionContext& assumptions,
21 std::set<std::string>& names, RewriteBudget& budget);
22
23 Result<Tribool> is_positive(const std::shared_ptr<const SymbolicNode>& node, ComputationContext& context) const override;
24 Result<Tribool> is_negative(const std::shared_ptr<const SymbolicNode>& node, ComputationContext& context) const override;
25 Result<Tribool> is_nonnegative(const std::shared_ptr<const SymbolicNode>& node, ComputationContext& context) const override;
26 Result<Tribool> is_nonzero(const std::shared_ptr<const SymbolicNode>& node, ComputationContext& context) const override;
27 Result<Tribool> is_real(const std::shared_ptr<const SymbolicNode>& node, ComputationContext& context) const override;
28
29private:
30 std::optional<InferenceEngine> owned_engine_;
31 const InferenceEngine* engine_;
32};
33
34}
35}
Result< Tribool > is_nonnegative(const std::shared_ptr< const SymbolicNode > &node, ComputationContext &context) const override
AssumptionFacts(const AssumptionFacts &)=delete
std::optional< InferenceEngine > owned_engine_
Result< Tribool > is_real(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_negative(const std::shared_ptr< const SymbolicNode > &node, ComputationContext &context) const override
AssumptionFacts & operator=(const AssumptionFacts &)=delete
AssumptionFacts(const InferenceEngine &engine) noexcept
AssumptionFacts(const AssumptionContext &assumptions)
static void collect_names(const AssumptionContext &assumptions, std::set< std::string > &names, RewriteBudget &budget)
InferenceEngine class for deriving properties of composite expressions.
多元 Hensel 提升(单变量步)
const SymbolicNodePtr & node(const ::LMCAS::SymbolicExpr &expression) noexcept
std::size_t std::size_t ComputationContext & context