#[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 FormulaStatementKind { Axiom, Completion(CompletionTarget), Lemma(Option), Assumption, Assertion, } pub struct FormulaStatement { pub kind: FormulaStatementKind, pub original_text: String, pub formula: foliage::Formula, pub proven: bool, } pub enum Block { FormulaStatement(FormulaStatement), Whitespace(String), } pub struct Project { pub blocks: Vec, }