proposition: Lemma list_beq_correct : forall l1 l2, list_beq check_hatom l1 l2 = true -> List.map (interp_hatom t_i t_func t_atom) l1 = List.map (interp_hatom t_i t_func t_atom) l2.
proof: Proof. induction l1 as [ |h1 l1 IHl1]; intros [ |h2 l2]; simpl; try discriminate; auto; rewrite andb_true_iff; intros [H1 H2]; rewrite (IHl1 _ H2); rewrite (check_hatom_correct _ _ H1); auto. Qed.
imports: List PArray Bool Int63 ZMicromega ZArith Misc State SMT_terms BVList