pub mod binding;
pub mod core;
pub mod eval;
pub mod ops;
pub mod rule;
pub mod symbols;
pub mod syntax;
pub mod tree;
pub use tree::*;
pub use core::{Context, TreeRef};
pub use eval::evaluate_typing;
pub use ops::{equal, subtype, Unifier, UnifyResult};
pub use symbols::{gather_raw_types, gather_terminal_nodes, gather_terminals, gather_terminals_typed, gather_type_symbols};
#[derive(Debug, Clone)]
pub enum Type {
Atom(String),
Meta(String),
Raw(String),
Arrow(Box<Type>, Box<Type>),
Union(Vec<Type>),
Not(Box<Type>),
ContextCall(String, String), Any,
None,
Partial(Box<Type>, String),
Path(TreePath), PathOf(Box<Type>, TreePath),
}
pub use rule::{
Conclusion, Premise, Term, TypeAscription, TypeSetting, TypingJudgment, TypingRule,
};
use crate::logic::typing::core::TreePath;
#[cfg(test)]
mod tests;