Documentation

ArkLib.ToVCVio.OracleComp.Coercions.SubSpec

Additions to VCV-io's OracleComp.Coercions.SubSpec #

theorem OracleComp.mem_support_of_mem_support_liftComp {ι τ α : Type} {spec : OracleSpec ι} {superSpec : OracleSpec τ} [MonadLiftT (OracleQuery spec) (OracleQuery superSpec)] (oa : OracleComp spec α) (x : α) :
x support (oa.liftComp superSpec)x support oa
theorem OracleComp.liftComp_bind_pure {ι τ α β : Type} {spec : OracleSpec ι} {superSpec : OracleSpec τ} [MonadLiftT (OracleQuery spec) (OracleQuery superSpec)] (oa : OracleComp spec α) (f : αβ) :
(do let aoa pure (f a)).liftComp superSpec = f <$> oa.liftComp superSpec
theorem OracleComp.bind_liftComp_map {ι τ α β γ : Type} {spec : OracleSpec ι} {superSpec : OracleSpec τ} [MonadLiftT (OracleQuery spec) (OracleQuery superSpec)] (oa : OracleComp spec α) (f : αβ) (body : βOracleComp superSpec γ) :
(do let bf <$> oa.liftComp superSpec body b) = do let aoa.liftComp superSpec body (f a)