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