proposition: Lemma widen_1: forall s1 s2, le s1 (widen s1 s2).
proof: Proof. unfold le, widen; intros. destruct s1 as [ | m1]. elim (bot_1 _ H). destruct s2 as [ | m2]. auto. red; unfold get; intros. specialize (H x); cbn in H. rewrite IMFact.map2_1bis; auto. unfold widen_aux. destruct (IdentMap.find x m1); destruct (IdentMap.find x m2); auto using V.top_1. apply V.widen_1; auto. Qed.
imports: Coq(ZArith Psatz Bool String List FMaps) Coq(FunctionalExtensionality) CDF(Sequences IMP)