Load loadpath.
veristar.list_denote veristar.model_type veristar.model
veristar.basic veristar.compare.
Module Type SPRED_LEMMAS.
Declare Module VSM : VERISTAR_MODEL.
End SPRED_LEMMAS.
Module SPredLemmas (VSM : VERISTAR_MODEL) <: SPRED_LEMMAS
with Module VSM := VSM.
Module VSM := VSM.
(* properties of spred operators *)
Module spred. Section spred.
Variables x y z : spred.
Local Open Scope pred.

Lemma list_denote_assoc_sym_id : forall {A T} (E: A -> T) Q B C l
(CID : forall x, Q x C = x)
(QSYM : forall x y, Q x y = Q y x)
(QASSOC : forall x y z, Q x (Q y z) = Q (Q x y) z),
list_denote E Q B l = Q B (list_denote E Q C l).