fact: Fixpoint apply_func targs tr (f:interp_ft (targs,tr)) (lv:list bval) : bval := match targs as targs0 return interp_ft (targs0,tr) -> bval with | nil => fun v => match lv with | nil => Bval tr v | _ => bvtrue end | t::targs => fun f => match lv with | v::lv => let (tv,v) := v in match Typ.cast tv t with | Typ.Cast k => let f := f (k _ v) in apply_func targs tr f lv | _ => bvtrue end | _ => bvtrue end end f.
imports: Bool Int63 Psatz PArray BinNat BinPos ZArith SMT_classes_instances Misc State BVList