fact: Definition interp_aux (h:form) : bool := match h with | Fatom a => interp_atom a | Ftrue => true | Ffalse => false | Fnot2 i l => foldi (fun _ b => negb (negb b)) 0 i (Lit.interp interp_var l) | Fand args => afold_left _ true andb (amap (Lit.interp interp_var) args) | For args => afold_left _ false orb (amap (Lit.interp interp_var) args) | Fimp args => afold_right _ true implb (amap (Lit.interp interp_var) args) | Fxor a b => xorb (Lit.interp interp_var a) (Lit.interp interp_var b) | Fiff a b => Bool.eqb (Lit.interp interp_var a) (Lit.interp interp_var b) | Fite a b c => if Lit.interp interp_var a then Lit.interp interp_var b else Lit.interp interp_var c | FbbT a ls => let ils := List.map (Lit.interp interp_var) ls in let n := N.of_nat (List.length ils) in BITVECTOR_LIST.bv_eq (interp_bvatom a n) (BITVECTOR_LIST.of_bits ils) end.
imports: Bool Int63 Psatz PArray BinNat BinPos ZArith SMT_classes_instances Misc State BVList