これは、独自のアルゴリズムを考案するだけでなく、数学モデル ファインダーのタスクです。このタスクでは、LADR ライブラリのmace4
どの部分を特にお勧めしますか。これは、特にこのような代数問題に合わせて調整されています。入力 (名前を付けましょう) は次のようになります。semigroups.in
formulas(sos).
(x * y) * z = x * (y * z).
end_of_list.
そして、mace4 -n 4 -N 4 -m 10000 <semigroup.in
(すべての4要素モデルを見つけて最大10000個まで出力する)で実行すると、次のような長い出力が生成されます
...
============================== MODEL =================================
interpretation( 4, [number=2331, seconds=0], [
function(*(_,_), [
1, 2, 3, 3,
2, 3, 3, 3,
3, 3, 3, 3,
3, 3, 3, 3 ])
]).
============================== end of model ==========================
============================== STATISTICS ============================
For domain size 4.
Current CPU time: 0.00 seconds (total CPU time: 0.11 seconds).
Ground clauses: seen=64, kept=64.
Selections=2132, assignments=8520, propagations=6194, current_models=2331.
Rewrite_terms=210696, rewrite_bools=65151, indexes=11452.
Rules_from_neg_clauses=586, cross_offs=3767.
============================== end of statistics =====================
User_CPU=0.11, System_CPU=0.26, Wall_clock=0.
Exiting with 2331 models.
ご覧のとおり、非常に高速です。
ライブラリにisofilter
は、代数の同型バリアントをフィルタリングできるツールなど、他にも多くのツールが含まれています。