Section soundness.
Definition sem_precise
{L: Language}
{MD: Model}
{J: Join model}
{R: Relation model}
{po_R: PreOrder Krelation}
{SM: Semantics L MD}
(x: expr): Prop :=
Kdenote_precise (fun m => KRIPKE: m |= x).
Context {P: ProgrammingLanguage}
{Res: Resource}
{CPP: ConcurrentProgrammingLanguage_Sparallel P}
{CPR: ConcurrentProgrammingLanguage_Sresource P Res}
{MD: Model} {TLBSS: ThreadLocalBigStepSemantics P model (list (resource * (model -> Prop)))} {J: Join model} {R: Relation model} {po_R: PreOrder Krelation} {R_BSS: Resource_BigStepSemantics P model TLBSS}.
Context {L: Language}
{minL: MinimumLanguage L}
{pL: PropositionalLanguage L}
{sepconL: SepconLanguage L}
{SM: Semantics L MD}
{kiSM: KripkeIntuitionisticSemantics L MD (tt: @Kmodel MD (unit_kMD _)) SM}
{fsepconSM: FlatSemantics.SepconSemantics L MD (tt: @Kmodel MD (unit_kMD _)) SM}.

Lemma hoare_parallel_partial_sound: forall
(Inv: list (resource * (model -> Prop)))
c1 c2 P1 P2 Q1 Q2,
guarded_triple_partial_valid Inv P1 c1 Q1 ->
guarded_triple_partial_valid Inv P2 c2 Q2 ->
guarded_triple_partial_valid Inv (P1 * P2) (Sparallel c1 c2) (Q1 * Q2).