Instance list_Perm {P : Ghost} : Perm_alg (list (option G)).

(* Specifications: *)
Lemma nth_upto : forall m n d, (n < m)%nat -> nth n (upto m) d = Z.of_nat n.
Lemma nth_repeat : forall {A} n m (a : A), nth n (repeat a m) a = a.
Lemma list_incl_singleton : forall {A} n (a : A) l, list_incl (list_singleton n a) l <-> nth n l None = Some a.
Lemma replace_nth_same' : forall {A} n l (a d : A), nth n l d = a -> replace_nth n l a = l.
Lemma invariant_super_non_expansive : forall n N P, approx n (invariant N P) = approx n (invariant N (approx n P)).
Lemma Setminus_self : forall {A} s, Setminus s s = Empty_set A.
Lemma Included_self : forall {A} s, @Included A s s.
Lemma ghost_set_empty : forall {A} g (s : Ensemble A), ghost_set g s = ghost_set g s * ghost_set g (Empty_set A).
Lemma wsat_empty_eq : wsat = wsat * ghost_set g_en (Empty_set iname).