ask-dracula-rs/src/project.rs

43 lines
610 B
Rust

#[derive(Clone, Copy, Eq, Hash, PartialEq)]
pub enum ProofDirection
{
Forward,
Backward,
}
#[derive(Eq, Hash, PartialEq)]
pub enum CompletionTarget
{
Predicate(foliage::PredicateDeclaration),
Constraint,
}
#[derive(Eq, Hash, PartialEq)]
pub enum StatementKind
{
Axiom,
Completion(CompletionTarget),
Lemma(Option<ProofDirection>),
Assumption,
Assertion,
}
pub struct Statement
{
pub kind: StatementKind,
pub original_text: String,
pub formula: foliage::Formula,
pub proven: bool,
}
pub enum Block
{
Statement(Statement),
Whitespace(String),
}
pub struct Project
{
pub blocks: Vec<Block>,
}