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: MinimunLanguage L} {pL: PropositionalLanguage L} {SL: SeparationLanguage L} {SM: Semantics L MD} {kiSM: KripkeIntuitionisticSemantics L MD (tt: @Kmodel MD (unit_kMD _)) SM} {fsSM: FlatSemantics.SeparatingSemantics L MD (tt: @Kmodel MD (unit_kMD _)) SM}.

Lemma hoare_resource_partial_sound: forall
(r: resource)
(I: expr)
(Inv Inv': list (resource * (model -> Prop)))
c P Q,
guarded_triple_partial_valid Inv (I * P) c (I * Q) ->
Inv_cons r (fun s: model => s |= I) Inv Inv' ->
sem_precise I ->
guarded_triple_partial_valid Inv' P (Sresource r c) Q.