symbolic_mgu/
lib.rs

1//! A library to explore the *most general unifier* of mathematical
2//! formulas.
3//!
4#![cfg_attr(doc, doc = include_str!("Epigram.md"))]
5//!
6#![cfg_attr(doc, doc = include_str!("Purpose.md"))]
7//!
8#![cfg_attr(doc, doc = include_str!("SystemOverview.md"))]
9//!
10#![cfg_attr(doc, doc = include_str!("FormalSpec.md"))]
11//!
12#![cfg_attr(doc, doc = include_str!("../docs/SCHOLARLY_CONTEXT.md"))]
13//!
14#![cfg_attr(doc, doc = include_str!("Hyperlinks.md"))]
15#![cfg_attr(nightly, feature(doc_cfg))]
16#![allow(unknown_lints)]
17#![warn(
18    missing_docs,
19    unnameable_test_items,
20    unused_doc_comments,
21    clippy::cfg_not_test,
22    clippy::doc_comment_double_space_linebreaks,
23    clippy::doc_include_without_cfg,
24    clippy::doc_lazy_continuation,
25    clippy::doc_link_code,
26    clippy::doc_link_with_quotes,
27    clippy::doc_markdown,
28    clippy::doc_nested_refdefs,
29    clippy::doc_overindented_list_items,
30    clippy::doc_suspicious_footnotes,
31    clippy::empty_docs,
32    clippy::empty_line_after_doc_comments,
33    clippy::empty_line_after_outer_attr,
34    clippy::items_after_test_module,
35    clippy::missing_docs_in_private_items,
36    clippy::missing_errors_doc,
37    clippy::missing_panics_doc,
38    clippy::missing_safety_doc,
39    clippy::needless_doctest_main,
40    clippy::redundant_test_prefix,
41    clippy::suspicious_doc_comments,
42    clippy::tabs_in_doc_comments,
43    clippy::test_attr_in_doctest,
44    clippy::tests_outside_test_module,
45    clippy::too_long_first_doc_paragraph,
46    clippy::undocumented_unsafe_blocks,
47    clippy::unicode_not_nfc,
48    clippy::unnecessary_safety_doc,
49    rustdoc::all,
50    rustdoc::missing_doc_code_examples
51)]
52#![deny(invalid_doc_attributes)]
53#![allow(rustdoc::private_doc_tests)]
54
55pub mod bool_eval;
56pub(crate) mod distinct;
57pub(crate) mod error;
58pub(crate) mod formatter;
59pub mod logic;
60pub(crate) mod macros;
61pub mod metamath;
62pub(crate) mod metavariable;
63pub(crate) mod mgutype;
64pub(crate) mod node;
65pub mod search;
66pub(crate) mod statement;
67pub(crate) mod term;
68
69pub use distinct::pair::Pair;
70pub use distinct::simple_graph::check_clique;
71pub use distinct::simple_graph::check_decomposition;
72pub use distinct::simple_graph::Clique;
73pub use distinct::simple_graph::Decomposition;
74pub use distinct::simple_graph::SimpleGraph;
75pub use distinct::DistinctnessGraph;
76pub use error::base::MguError;
77pub use error::MguErrorType;
78pub use formatter::{
79    get_formatter, get_type_color, get_type_color_from_trait, register_formatter,
80    register_type_color, Color, OutputFormatter,
81};
82pub use metavariable::charset::WideCharSet;
83pub use metavariable::decorator::{Decorator, Prime};
84pub use metavariable::enums::AsciiMetaVar;
85pub use metavariable::factory::MetavariableFactory;
86pub use metavariable::meta_byte::MetaByte;
87pub use metavariable::meta_byte::MetaByteFactory;
88pub use metavariable::parametric::ParametricMetavariable;
89pub use metavariable::wide::WideMetavariable;
90pub use metavariable::wide::WIDE_BOOLEANS;
91pub use metavariable::wide::WIDE_BOOLEANS_ASCII;
92pub use metavariable::wide::WIDE_CLASSES;
93pub use metavariable::wide::WIDE_CLASSES_ASCII;
94pub use metavariable::wide::WIDE_SETVARS;
95pub use metavariable::wide::WIDE_SETVARS_ASCII;
96pub use metavariable::wide_factory::WideMetavariableFactory;
97pub use metavariable::Metavariable;
98pub use mgutype::base::SimpleType;
99pub use mgutype::type_factory::SimpleTypeFactory;
100pub use mgutype::type_factory::TypeFactory;
101pub use mgutype::type_trait::Type;
102pub use mgutype::type_trait::TypeCore;
103pub use node::base::Node;
104pub use node::factory::NodeFactory;
105pub use node::node_byte::base::NodeByte;
106pub use node::node_byte::factory::NodeByteFactory;
107pub use statement::Statement;
108pub use term::base::Term;
109pub use term::factory::TermFactory;
110pub use term::simple::EnumTerm;
111pub use term::simple::EnumTermFactory;
112pub use term::substitution::apply_substitution;
113pub use term::substitution::occurs_check;
114pub use term::substitution::unify;
115pub use term::substitution::NormalizingSubstitution;
116pub use term::substitution::Substitution;
117
118#[cfg(test)]
119mod tests {
120    #[test]
121    fn it_works() {
122        assert_eq!(2 + 2, 4);
123    }
124}