#[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), 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, }