LMCAS
Lamina Computer Algebra System
Toggle main menu visibility
载入中...
搜索中...
未找到
equivalence_options.hpp
浏览该文件的文档.
1
#pragma once
2
3
#include "
lmcas_export.hpp
"
4
#include "
result.hpp
"
5
6
#include <cstddef>
7
#include <string>
8
9
namespace
LMCAS
{
10
11
enum class
EqvProfile
{
12
Core
,
13
TrigBasic
,
14
ExpLogBasic
15
};
16
17
/** @brief 各限额均为非零值;深度与规模在重写运行中检查,超限返回 ResourceLimit。 */
18
struct
EqvBudget
{
19
/** @brief 一次证明及 profile 切换共享的重写遍历、候选追加与阶段步数。
20
* 形状查询和缓存清空的实际工作计入 ResourceLimits::max_steps。
21
*/
22
std::size_t
max_rewrite_steps
= 256;
23
/** @brief 同时活动的重写及嵌套 visitor 层数,根为第 1 层。 */
24
std::size_t
max_rewrite_depth
= 64;
25
/**
26
* @brief 候选树及未封装孩子列表的规模上限取 context.max_ast_nodes
27
* 与原始两输入节点总数乘此因子的较小值。
28
* 每次子树引用分别计数;整个证明及 profile 切换共用原始基数。
29
* 乘法饱和为 SIZE_MAX;真实输入节点和溢出返回 ResourceLimit。
30
*/
31
std::size_t
max_node_growth_factor
= 4;
32
};
33
34
struct
EqvOptions
{
35
EqvProfile
profile
=
EqvProfile::Core
;
36
EqvBudget
budget
= {};
37
};
38
39
LMCAS_API
Result<EqvProfile>
eqv_profile_from_name
(
const
std::string&
name
);
40
LMCAS_API
Result<void>
set_eqv_profile
(
EqvOptions
&
options
,
41
const
std::string&
name
);
42
LMCAS_API
Result<void>
set_eqv_budget
(
EqvOptions
&
options
,
43
std::size_t
steps
,
44
std::size_t
depth
,
45
std::size_t
growth
);
46
47
}
LMCAS::Result
定义
result.hpp:39
lmcas_export.hpp
LMCAS_API
#define LMCAS_API
定义
lmcas_export.hpp:13
LMCAS
定义
assumption.hpp:11
LMCAS::EqvBudget::max_rewrite_depth
std::size_t max_rewrite_depth
同时活动的重写及嵌套 visitor 层数,根为第 1 层。
定义
equivalence_options.hpp:24
LMCAS::options
const std::string ComputationContext const SolveOptions & options
定义
expr.hpp:355
LMCAS::growth
std::size_t std::size_t std::size_t growth
定义
equivalence_options.hpp:45
LMCAS::depth
std::size_t std::size_t depth
定义
equivalence_options.hpp:44
LMCAS::EqvBudget::max_rewrite_steps
std::size_t max_rewrite_steps
一次证明及 profile 切换共享的重写遍历、候选追加与阶段步数。 形状查询和缓存清空的实际工作计入 ResourceLimits::max_steps。
定义
equivalence_options.hpp:22
LMCAS::EqvProfile
EqvProfile
定义
equivalence_options.hpp:11
LMCAS::EqvProfile::TrigBasic
@ TrigBasic
定义
equivalence_options.hpp:13
LMCAS::EqvProfile::Core
@ Core
定义
equivalence_options.hpp:12
LMCAS::EqvProfile::ExpLogBasic
@ ExpLogBasic
定义
equivalence_options.hpp:14
LMCAS::set_eqv_profile
Result< void > set_eqv_profile(EqvOptions &options, const std::string &name)
定义
equivalence_options.cpp:55
LMCAS::EqvBudget::max_node_growth_factor
std::size_t max_node_growth_factor
候选树及未封装孩子列表的规模上限取 context.max_ast_nodes 与原始两输入节点总数乘此因子的较小值。 每次子树引用分别计数;整个证明及 profile 切换共用原始基数。 乘法饱和为 ...
定义
equivalence_options.hpp:31
LMCAS::EqvOptions::profile
EqvProfile profile
定义
equivalence_options.hpp:35
LMCAS::steps
std::size_t steps
定义
equivalence_options.hpp:43
LMCAS::set_eqv_budget
Result< void > set_eqv_budget(EqvOptions &options, std::size_t steps, std::size_t depth, std::size_t growth)
定义
equivalence_options.cpp:65
LMCAS::eqv_profile_from_name
Result< EqvProfile > eqv_profile_from_name(const std::string &name)
定义
equivalence_options.cpp:42
LMCAS::name
__attribute__((visibility("default"))) Result< EqvProfile > eqv_profile_from_name(const std const std::string & name
定义
equivalence_options.hpp:41
LMCAS::EqvOptions::budget
EqvBudget budget
定义
equivalence_options.hpp:36
LMCAS::EqvOptions
定义
equivalence_options.hpp:34
LMCAS::EqvBudget
各限额均为非零值;深度与规模在重写运行中检查,超限返回 ResourceLimit。
定义
equivalence_options.hpp:18
result.hpp
include
equivalence_options.hpp
生成于
, 为 LMCAS使用
1.18.0