fact: Definition apply_binop (t1 t2 r : Typ.type) (op : interp_t t1 -> interp_t t2 -> interp_t r) (tv1 tv2:bval) := let (t1', v1) := tv1 in let (t2', v2) := tv2 in match Typ.cast t1' t1, Typ.cast t2' t2 with | Typ.Cast k1, Typ.Cast k2 => Bval r (op (k1 _ v1) (k2 _ v2)) | _, _ => bvtrue end.
imports: Bool Int63 Psatz PArray BinNat BinPos ZArith SMT_classes_instances Misc State BVList