Library OSMutexAcceptProof




Require Import ucert.
Require Import OSMutex_common.
Open Scope code_scope.

Theorem OSMutexAccepteRight:
  forall vl p r,
    Some p = BuildPreA´ os_api OSMutexAccept mutexaccapi vl ->
    Some r = BuildRetA´ os_api OSMutexAccept mutexaccapi vl ->
    exists t d1 d2 s,
      os_api OSMutexAccept = Some (t, d1, d2, s) /\ {| OSQ_spec, GetHPrio, I, r, Afalse |} |- {{ p }} s {{ Afalse }}.
  Require Import mathlib.
  Ltac if_invert := let HH := fresh in
                    match goal with
                      | |- (if ?e then true else false) = false => cut (e = false); [intro HH; rewrite HH; reflexivity| idtac]
                      | |- (if ?e then true else false) = true => cut (e = true); [intro HH; rewrite HH; reflexivity| idtac]
                    end.