veri_engine_lib/
interp.rs1use crate::type_inference::RuleSemantics;
3use veri_ir::{BoundVar, Expr};
4
5use std::collections::HashMap;
6use std::fmt::Debug;
7
8use cranelift_isle as isle;
9use isle::sema::{RuleId, VarId};
10
11#[derive(Clone, Debug)]
14pub struct Assumption {
15 assume: Expr,
16}
17
18impl Assumption {
19 pub fn new(assume: Expr) -> Self {
21 Self { assume }
23 }
24
25 pub fn assume(&self) -> &Expr {
27 &self.assume
28 }
29}
30pub struct Context<'ctx> {
31 pub quantified_vars: Vec<BoundVar>,
32 pub free_vars: Vec<BoundVar>,
33 pub assumptions: Vec<Assumption>,
34 pub var_map: HashMap<VarId, BoundVar>,
35
36 pub typesols: &'ctx HashMap<RuleId, RuleSemantics>,
38}
39
40impl<'ctx> Context<'ctx> {
41 pub fn new(typesols: &'ctx HashMap<RuleId, RuleSemantics>) -> Context<'ctx> {
42 Context {
43 quantified_vars: vec![],
44 free_vars: vec![],
45 assumptions: vec![],
46 var_map: HashMap::new(),
47 typesols,
48 }
49 }
50}