# Vampire Abstract Syntax Tree (AST) Module
This module defines the abstract syntax tree structure for the Vampire theorem prover.
## AST Node Types
- **`VampireRoot`**: The root node, containing multiple formulas.
- **`VampireFormula`**: A formula, including name, role, and formula text.
- **`VampireInclude`**: An include directive used to import other files.
## Usage Example
```rust
#![feature(new_range_api)]
use oak_vampire::ast::*;
use core::range::Range;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let root = VampireRoot {
span: Range { start: 0, end: 100 },
formulas: vec![
VampireFormula {
span: Range { start: 0, end: 50 },
name: "f1".to_string(),
role: "conjecture".to_string(),
formula: "p(a)".to_string(),
}
],
};
Ok(())
}
```
## Design Principles
1. **Completeness**: Supports full Vampire syntax.
2. **Extensibility**: Easy to add new AST node types.
3. **Type Safety**: Uses Rust's type system to ensure AST validity.
4. **Performance**: Efficient memory usage and access patterns.