Fact agenv_is_aspace U : is_aspace (agenv U).Canonical agenv_aspace U : {aspace aT} := ASpace (agenv_is_aspace U).

(* Specifications: *)
Lemma agenvE U : agenv U = agenv_aspace U.
Lemma agenvM U : (agenv U * agenv U)%VS = agenv U.
Lemma sub1_agenv U : (1 <= agenv U)%VS.
Lemma sub_agenv U : (U <= agenv U)%VS.
Lemma agenv_sub_modl U V : (1 <= V -> U * V <= V -> agenv U <= V)%VS.
Lemma agenv_sub_modr U V : (1 <= V -> V * U <= V -> agenv U <= V)%VS.
Lemma agenv_id U : agenv (agenv U) = agenv U.
Lemma agenvS U V : (U <= V -> agenv U <= agenv V)%VS.
Lemma agenv_add_id U V : agenv (agenv U + V) = agenv (U + V).
Lemma subv_adjoin U x : (U <= <<U; x>>)%VS.
Lemma subv_adjoin_seq U xs : (U <= <<U & xs>>)%VS.
Lemma seqv_sub_adjoin U xs : {subset xs <= <<U & xs>>%VS}.
Lemma adjoin_cons V x rs : <<V & x :: rs>>%VS = << <<V; x>> & rs>>%VS.
Lemma adjoin_rcons V rs x : <<V & rcons rs x>>%VS = << <<V & rs>>%VS; x>>%VS.
Lemma adjoinC V x y : << <<V; x>>; y>>%VS = << <<V; y>>; x>>%VS.
Lemma adjoinSl U V x : (U <= V -> <<U; x>> <= <<V; x>>)%VS.
Lemma adjoin_seqSl U V rs : (U <= V -> <<U & rs>> <= <<V & rs>>)%VS.
Lemma adjoin_seqSr U rs1 rs2 : {subset rs1 <= rs2} -> (<<U & rs1>> <= <<U & rs2>>)%VS.