LMCAS
Lamina Computer Algebra System
Toggle main menu visibility
载入中...
搜索中...
未找到
solver_groebner_builder.hpp
浏览该文件的文档.
1
#pragma once
2
3
#include "
internal/solver_groebner_internal.hpp
"
4
#include "
internal/symbolic_ast.hpp
"
5
6
namespace
LMCAS::groebner_detail
{
7
8
class
PolyBuilder
:
public
LMCAS::detail::SymbolicVisitor
{
9
std::vector<std::string>
vars
;
10
11
std::vector<std::string>&
ext_vars
;
12
13
std::unordered_map<std::string, size_t>&
transcendental_map
;
14
15
std::unordered_map<size_t, std::shared_ptr<const SymbolicNode>>*
aux_to_node
;
16
Poly
result
;
17
bool
strict_mode
;
18
19
size_t
get_or_create_aux_var
(
const
std::shared_ptr<const SymbolicNode>& node);
20
21
void
represent_as_aux_or_fail
(
const
std::shared_ptr<const SymbolicNode>& node);
22
23
bool
use_numeric_function
(
const
FunctionNode
& node);
24
bool
function_depends_on_variables
(
const
FunctionNode
& node)
const
;
25
26
public
:
27
28
PolyBuilder
(
const
std::vector<std::string>&
v
,
PolyContext
& ctx,
bool
strict =
false
);
29
30
31
PolyBuilder
(
const
std::vector<std::string>&
v
,
32
std::vector<std::string>& ext_v,
33
std::unordered_map<std::string, size_t>& trans_map,
34
std::unordered_map<
size_t
, std::shared_ptr<const SymbolicNode>>* aux_map,
35
detail::RewriteBudget
& budget,
bool
strict =
false
)
36
:
SymbolicVisitor
(&budget),
vars
(
v
),
ext_vars
(ext_v),
37
transcendental_map
(trans_map),
aux_to_node
(aux_map),
38
result
(ext_v.size()),
strict_mode
(strict) {}
39
40
Poly
get_result
()
const
{
return
result
; }
41
bool
failed
=
false
;
42
43
void
visit
(
const
NumberNode
& node)
override
;
44
45
void
visit
(
const
VariableNode
& node)
override
;
46
47
void
visit
(
const
AddNode
& node)
override
;
48
49
void
visit
(
const
MultiplyNode
& node)
override
;
50
51
void
visit
(
const
PowerNode
& node)
override
;
52
53
void
visit
(
const
FunctionNode
& node)
override
;
54
void
visit
(
const
UninterpretedFunctionNode
& node)
override
;
55
56
void
visit
(
const
MatrixNode
& node)
override
;
57
void
visit
(
const
RelationalNode
& node)
override
;
58
void
visit
(
const
LogicalNode
& node)
override
;
59
void
visit
(
const
PiecewiseNode
& node)
override
;
60
void
visit
(
const
SummationNode
& node)
override
;
61
void
visit
(
const
ProductNode
& node)
override
;
62
void
visit
(
const
TransformNode
& node)
override
;
63
void
visit
(
const
QuantifierNode
& node)
override
;
64
void
visit
(
const
SetBuilderNode
& node)
override
;
65
void
visit
(
const
ComplexNode
& node)
override
;
66
void
visit
(
const
FiniteSetNode
& node)
override
;
67
void
visit
(
const
IntervalNode
& node)
override
;
68
void
visit
(
const
MembershipNode
& node)
override
;
69
void
visit
(
const
QuantityNode
& node)
override
;
70
void
visit
(
const
IntegralNode
& node)
override
;
71
void
visit
(
const
LimitNode
& node)
override
;
72
void
visit
(
const
RootOfNode
& node)
override
;
73
};
74
75
}
LMCAS::AddNode
加法节点,表示多个操作数的求和。
定义
arithmetic.hpp:55
LMCAS::ComplexNode
复数节点,表示 real + imag * i。
定义
numbers.hpp:74
LMCAS::FiniteSetNode
定义
sets.hpp:142
LMCAS::FunctionNode
函数节点,表示数学函数调用(三角函数、对数、特殊函数等)。
定义
functions.hpp:10
LMCAS::IntegralNode
定义
integral.hpp:8
LMCAS::IntervalNode
定义
sets.hpp:204
LMCAS::LimitNode
定义
special_forms.hpp:12
LMCAS::LogicalNode
定义
relations.hpp:73
LMCAS::MatrixNode
矩阵节点,支持稠密和稀疏两种存储方式。
定义
matrix.hpp:12
LMCAS::MembershipNode
定义
sets.hpp:248
LMCAS::MultiplyNode
乘法节点,表示多个操作数的乘积。
定义
arithmetic.hpp:134
LMCAS::NumberNode
定义
numbers.hpp:8
LMCAS::PiecewiseNode
分段函数节点,表示条件分支表达式.
定义
bindings.hpp:12
LMCAS::PowerNode
幂运算节点,表示 base^exponent。
定义
arithmetic.hpp:218
LMCAS::ProductNode
连乘节点,表示符号有限/无限连乘 prod_{k=a}^{b} f(k).
定义
bindings.hpp:175
LMCAS::QuantifierNode
定义
sets.hpp:5
LMCAS::QuantityNode
定义
sets.hpp:286
LMCAS::RelationalNode
定义
relations.hpp:6
LMCAS::RootOfNode
定义
special_forms.hpp:76
LMCAS::SetBuilderNode
定义
sets.hpp:80
LMCAS::SummationNode
求和节点,表示符号有限/无限求和 sum_{k=a}^{b} f(k).
定义
bindings.hpp:101
LMCAS::TransformNode
积分变换节点,表示 Laplace,Fourier,Z 变换及其逆变换.
定义
bindings.hpp:251
LMCAS::UninterpretedFunctionNode
定义
functions.hpp:96
LMCAS::VariableNode
变量节点,表示一个符号变量。
定义
arithmetic.hpp:10
LMCAS::detail::RewriteBudget
定义
rewrite_budget.hpp:15
LMCAS::detail::SymbolicVisitor
定义
base.hpp:216
LMCAS::detail::SymbolicVisitor::SymbolicVisitor
SymbolicVisitor()=default
LMCAS::groebner_detail::PolyBuilder::function_depends_on_variables
bool function_depends_on_variables(const FunctionNode &node) const
定义
solver_groebner_conversion.cpp:40
LMCAS::groebner_detail::PolyBuilder::ext_vars
std::vector< std::string > & ext_vars
定义
solver_groebner_builder.hpp:11
LMCAS::groebner_detail::PolyBuilder::get_or_create_aux_var
size_t get_or_create_aux_var(const std::shared_ptr< const SymbolicNode > &node)
定义
solver_groebner_conversion.cpp:7
LMCAS::groebner_detail::PolyBuilder::use_numeric_function
bool use_numeric_function(const FunctionNode &node)
定义
solver_groebner_conversion.cpp:49
LMCAS::groebner_detail::PolyBuilder::vars
std::vector< std::string > vars
定义
solver_groebner_builder.hpp:9
LMCAS::groebner_detail::PolyBuilder::failed
bool failed
定义
solver_groebner_builder.hpp:41
LMCAS::groebner_detail::PolyBuilder::get_result
Poly get_result() const
定义
solver_groebner_builder.hpp:40
LMCAS::groebner_detail::PolyBuilder::PolyBuilder
PolyBuilder(const std::vector< std::string > &v, PolyContext &ctx, bool strict=false)
定义
solver_groebner_builder.cpp:41
LMCAS::groebner_detail::PolyBuilder::transcendental_map
std::unordered_map< std::string, size_t > & transcendental_map
定义
solver_groebner_builder.hpp:13
LMCAS::groebner_detail::PolyBuilder::aux_to_node
std::unordered_map< size_t, std::shared_ptr< const SymbolicNode > > * aux_to_node
定义
solver_groebner_builder.hpp:15
LMCAS::groebner_detail::PolyBuilder::visit
void visit(const NumberNode &node) override
定义
solver_groebner_builder.cpp:46
LMCAS::groebner_detail::PolyBuilder::result
Poly result
定义
solver_groebner_builder.hpp:16
LMCAS::groebner_detail::PolyBuilder::PolyBuilder
PolyBuilder(const std::vector< std::string > &v, std::vector< std::string > &ext_v, std::unordered_map< std::string, size_t > &trans_map, std::unordered_map< size_t, std::shared_ptr< const SymbolicNode > > *aux_map, detail::RewriteBudget &budget, bool strict=false)
定义
solver_groebner_builder.hpp:31
LMCAS::groebner_detail::PolyBuilder::represent_as_aux_or_fail
void represent_as_aux_or_fail(const std::shared_ptr< const SymbolicNode > &node)
定义
solver_groebner_conversion.cpp:28
LMCAS::groebner_detail::PolyBuilder::strict_mode
bool strict_mode
定义
solver_groebner_builder.hpp:17
LMCAS::groebner_detail
定义
solver_groebner_builder.hpp:6
LMCAS::v
__attribute__((visibility("default"))) VectorCalculusExprResult surface_integral_scalar_checked(const std __attribute__((visibility("default"))) VectorCalculusExprResult surface_integral_scalar_checked(const std __attribute__((visibility("default"))) std const VectorField const std::string const std::string & v
定义
vector_calculus_surfaces.hpp:59
solver_groebner_internal.hpp
LMCAS::groebner_detail::PolyContext
定义
solver_groebner_internal.hpp:42
LMCAS::groebner_detail::Poly
定义
solver_groebner_internal.hpp:28
symbolic_ast.hpp
内部 AST 定义。
src
internal
solver_groebner_builder.hpp
生成于
, 为 LMCAS使用
1.18.0