mod datatype;
mod grammar;
mod op;
#[cfg(feature = "parser")]
mod parser;
mod proof;
mod result;
mod solver;
mod sort;
mod statistics;
mod synth_result;
mod term;
mod term_manager;
pub use cvc5_sys::Cvc5BlockModelsMode as BlockModelsMode;
pub use cvc5_sys::Cvc5FindSynthTarget as FindSynthTarget;
pub use cvc5_sys::Cvc5Kind as Kind;
pub use cvc5_sys::Cvc5LearnedLitType as LearnedLitType;
pub use cvc5_sys::Cvc5OptionInfo;
pub use cvc5_sys::Cvc5Plugin;
pub use cvc5_sys::Cvc5ProofComponent as ProofComponent;
pub use cvc5_sys::Cvc5ProofFormat as ProofFormat;
pub use cvc5_sys::Cvc5ProofRewriteRule as ProofRewriteRule;
pub use cvc5_sys::Cvc5ProofRule as ProofRule;
pub use cvc5_sys::Cvc5RoundingMode as RoundingMode;
pub use cvc5_sys::Cvc5SkolemId as SkolemId;
pub use cvc5_sys::Cvc5SortKind as SortKind;
pub use cvc5_sys::Cvc5UnknownExplanation as UnknownExplanation;
pub use datatype::{
Datatype, DatatypeConstructor, DatatypeConstructorDecl, DatatypeDecl, DatatypeSelector,
};
pub use grammar::Grammar;
pub use op::Op;
pub use proof::Proof;
pub use result::Result;
pub use solver::Solver;
pub use sort::Sort;
pub use statistics::{Stat, Statistics};
pub use synth_result::SynthResult;
pub use term::Term;
pub use term_manager::TermManager;
#[cfg(feature = "parser")]
pub use cvc5_sys::Cvc5InputLanguage as InputLanguage;
#[cfg(feature = "parser")]
pub use parser::{Command, InputParser, SymbolManager};
#[cfg(feature = "parser")]
pub fn input_language_to_string(lang: InputLanguage) -> String {
unsafe {
std::ffi::CStr::from_ptr(cvc5_sys::cvc5_modes_input_language_to_string(lang))
.to_string_lossy()
.into_owned()
}
}
macro_rules! enum_to_string_fn {
($(#[$meta:meta])* $fn_name:ident, $ty:ty, $c_fn:path) => {
$(#[$meta])*
pub fn $fn_name(val: $ty) -> String {
unsafe {
std::ffi::CStr::from_ptr($c_fn(val))
.to_string_lossy()
.into_owned()
}
}
};
}
enum_to_string_fn!(
kind_to_string, Kind, cvc5_sys::cvc5_kind_to_string
);
enum_to_string_fn!(
sort_kind_to_string, SortKind, cvc5_sys::cvc5_sort_kind_to_string
);
enum_to_string_fn!(
proof_rule_to_string, ProofRule, cvc5_sys::cvc5_proof_rule_to_string
);
enum_to_string_fn!(
proof_rewrite_rule_to_string, ProofRewriteRule, cvc5_sys::cvc5_proof_rewrite_rule_to_string
);
enum_to_string_fn!(
rounding_mode_to_string, RoundingMode, cvc5_sys::cvc5_rm_to_string
);
enum_to_string_fn!(
skolem_id_to_string, SkolemId, cvc5_sys::cvc5_skolem_id_to_string
);
enum_to_string_fn!(
unknown_explanation_to_string, UnknownExplanation, cvc5_sys::cvc5_unknown_explanation_to_string
);
enum_to_string_fn!(
block_models_mode_to_string, BlockModelsMode, cvc5_sys::cvc5_modes_block_models_mode_to_string
);
enum_to_string_fn!(
learned_lit_type_to_string, LearnedLitType, cvc5_sys::cvc5_modes_learned_lit_type_to_string
);
enum_to_string_fn!(
proof_component_to_string, ProofComponent, cvc5_sys::cvc5_modes_proof_component_to_string
);
enum_to_string_fn!(
proof_format_to_string, ProofFormat, cvc5_sys::cvc5_modes_proof_format_to_string
);
enum_to_string_fn!(
find_synth_target_to_string, FindSynthTarget, cvc5_sys::cvc5_modes_find_synth_target_to_string
);