Documentation

MDP.Scheduler

structure MDP.Scheduler {State : Type u_1} {Act : Type u_2} (M : MDP State Act) :
Type (max u_1 u_2)

A (potentially) history dependent scheduler.

Instances For

    A (potentially) history dependent scheduler.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      def MDP.Scheduler.mk' {State : Type u_1} {Act : Type u_2} {M : MDP State Act} (๐’ฎ : (ฯ€ : M.Path) โ†’ โ†‘(M.act ฯ€.last)) :
      Equations
      Instances For
        instance MDP.Scheduler.instDFunLikePath {State : Type u_1} {Act : Type u_2} {M : MDP State Act} :
        DFunLike ๐”–[M] M.Path fun (x : M.Path) => Act
        Equations
        @[simp]
        theorem MDP.Scheduler.toFun_coe {State : Type u_1} {Act : Type u_2} {M : MDP State Act} (๐’ฎ : ๐”–[M]) (ฯ€ : M.Path) :
        ๐’ฎ.toFun ฯ€ = ๐’ฎ ฯ€
        @[simp]
        theorem MDP.Scheduler.toFun_coe' {State : Type u_1} {Act : Type u_2} {M : MDP State Act} {f : M.Path โ†’ Act} {h : โˆ€ (ฯ€ : M.Path), f ฯ€ โˆˆ M.act ฯ€.last} (ฯ€ : M.Path) :
        { toFun := f, property := h } ฯ€ = f ฯ€
        @[simp]
        theorem MDP.Scheduler.mem_act_if {State : Type u_1} {Act : Type u_2} {M : MDP State Act} {s : State} {ฯ€ : M.Path} (๐’ฎ : ๐”–[M]) (h : ฯ€.last = s) :
        ๐’ฎ ฯ€ โˆˆ M.act s
        @[simp]
        theorem MDP.Scheduler.singleton_mem_act {State : Type u_1} {Act : Type u_2} {M : MDP State Act} (๐’ฎ : ๐”–[M]) (s : State) :
        ๐’ฎ {s} โˆˆ M.act s
        @[simp]
        theorem MDP.Scheduler.mem_act {State : Type u_1} {Act : Type u_2} {M : MDP State Act} (๐’ฎ : ๐”–[M]) (ฯ€ : M.Path) :
        ๐’ฎ ฯ€ โˆˆ M.act ฯ€.last
        theorem MDP.Scheduler.mem_prepend {State : Type u_1} {Act : Type u_2} {M : MDP State Act} (๐’ฎ : ๐”–[M]) (ฯ€ : M.Path) (sโ‚€ : โ†‘(M.prev_univ ฯ€[0])) :
        ๐’ฎ (ฯ€.prepend sโ‚€) โˆˆ M.act ฯ€.last
        theorem MDP.Scheduler.ext {State : Type u_1} {Act : Type u_2} {M : MDP State Act} {๐’ฎ ๐’ฎ' : ๐”–[M]} (h : โˆ€ (ฯ€ : M.Path), ๐’ฎ ฯ€ = ๐’ฎ' ฯ€) :
        ๐’ฎ = ๐’ฎ'
        theorem MDP.Scheduler.ext_iff {State : Type u_1} {Act : Type u_2} {M : MDP State Act} {๐’ฎ ๐’ฎ' : ๐”–[M]} :
        ๐’ฎ = ๐’ฎ' โ†” โˆ€ (ฯ€ : M.Path), ๐’ฎ ฯ€ = ๐’ฎ' ฯ€
        def MDP.Scheduler.IsMarkovian {State : Type u_1} {Act : Type u_2} {M : MDP State Act} (๐’ฎ : ๐”–[M]) :
        Equations
        Instances For
          class MDP.Scheduler.Markovian {State : Type u_1} {Act : Type u_2} {M : MDP State Act} (๐’ฎ : ๐”–[M]) :
          Instances
            theorem MDP.Scheduler.markovian_iff {State : Type u_1} {Act : Type u_2} {M : MDP State Act} (๐’ฎ : ๐”–[M]) :
            ๐’ฎ.Markovian โ†” ๐’ฎ.IsMarkovian
            theorem MDP.Scheduler.MarkovianOn {State : Type u_1} {Act : Type u_2} {M : MDP State Act} (๐’ฎ : ๐”–[M]) [inst : ๐’ฎ.Markovian] (ฯ€ : M.Path) :
            ๐’ฎ ฯ€ = ๐’ฎ {ฯ€.last}
            @[simp]
            theorem MDP.Scheduler.Markovian_path_take {State : Type u_1} {Act : Type u_2} {M : MDP State Act} (๐’ฎ : ๐”–[M]) [๐’ฎ.Markovian] (ฯ€ : M.Path) (i : Fin โ€–ฯ€โ€–) :
            ๐’ฎ (ฯ€.take โ†‘i) = ๐’ฎ {ฯ€[i]}
            theorem MDP.Scheduler.singleton_last {State : Type u_1} {Act : Type u_2} {M : MDP State Act} (s : State) :
            {s}.last = s
            @[simp]
            theorem MDP.Scheduler.Markovian_path_take' {State : Type u_1} {Act : Type u_2} {M : MDP State Act} (๐’ฎ : ๐”–[M]) [๐’ฎ.Markovian] (ฯ€ : M.Path) (i : โ„•) (hi : i < โ€–ฯ€โ€–) :
            ๐’ฎ (ฯ€.take i) = ๐’ฎ {ฯ€[i]}
            @[simp]
            theorem MDP.Scheduler.Markovian_path_take'' {State : Type u_1} {Act : Type u_2} {M : MDP State Act} (๐’ฎ : ๐”–[M]) [๐’ฎ.Markovian] (ฯ€ : M.Path) (i : Fin โ€–ฯ€โ€–) :
            ๐’ฎ (ฯ€.take โ†‘i) = ๐’ฎ {ฯ€[i]}
            @[simp]
            theorem MDP.Scheduler.Markovian_path_take''' {State : Type u_1} {Act : Type u_2} {M : MDP State Act} (๐’ฎ : ๐”–[M]) [๐’ฎ.Markovian] (ฯ€ : M.Path) (i : Fin (โ€–ฯ€โ€– - 1)) :
            ๐’ฎ (ฯ€.take โ†‘i) = ๐’ฎ {ฯ€[i]}
            def MDP.MScheduler {State : Type u_1} {Act : Type u_2} (M : MDP State Act) :
            Type (max 0 u_1 u_2)

            A Markovian (historyless) scheduler.

            Equations
            Instances For

              A Markovian (historyless) scheduler.

              Equations
              • One or more equations did not get rendered due to their size.
              Instances For
                noncomputable instance MDP.MScheduler.instInhabitedScheduler {State : Type u_1} {Act : Type u_2} {M : MDP State Act} :
                Equations
                noncomputable instance MDP.MScheduler.instInhabited {State : Type u_1} {Act : Type u_2} {M : MDP State Act} :
                Equations
                def MDP.MScheduler.toScheduler {State : Type u_1} {Act : Type u_2} {M : MDP State Act} :
                Equations
                Instances For
                  instance MDP.MScheduler.instMarkovianToScheduler {State : Type u_1} {Act : Type u_2} {M : MDP State Act} (โ„’ : ๐”[M]) :
                  (โ†‘โ„’).Markovian
                  @[simp]
                  theorem MDP.MScheduler.coe_mk {State : Type u_1} {Act : Type u_2} {M : MDP State Act} (๐’ฎ : ๐”–[M]) (h๐’ฎ : ๐’ฎ.Markovian) :
                  โ†‘โŸจ๐’ฎ, h๐’ฎโŸฉ = ๐’ฎ
                  @[simp]
                  theorem MDP.MScheduler.val_eq_toScheduler {State : Type u_1} {Act : Type u_2} {M : MDP State Act} (โ„’ : ๐”[M]) :
                  โ†‘โ„’ = โ†‘โ„’
                  theorem MDP.MScheduler.toScheduler_injective {State : Type u_1} {Act : Type u_2} {M : MDP State Act} :
                  instance MDP.MScheduler.instFunLike {State : Type u_1} {Act : Type u_2} {M : MDP State Act} :
                  Equations
                  def MDP.MScheduler.mk' {State : Type u_1} {Act : Type u_2} {M : MDP State Act} (f : State โ†’ Act) (hf : โˆ€ (s : State), f s โˆˆ M.act s) :
                  Equations
                  Instances For
                    theorem MDP.MScheduler.markovian {State : Type u_1} {Act : Type u_2} {M : MDP State Act} {โ„’ : ๐”[M]} (ฯ€ : M.Path) :
                    โ„’ ฯ€ = โ„’ {ฯ€.last}
                    @[simp]
                    theorem MDP.MScheduler.mem_act' {State : Type u_1} {Act : Type u_2} {M : MDP State Act} {โ„’ : ๐”[M]} (ฯ€ : M.Path) :
                    โ„’ ฯ€ โˆˆ M.act ฯ€.last
                    @[simp]
                    theorem MDP.MScheduler.prepend {State : Type u_1} {Act : Type u_2} {M : MDP State Act} {โ„’ : ๐”[M]} {ฯ€ : M.Path} (s : โ†‘(M.prev_univ ฯ€[0])) :
                    โ„’ (ฯ€.prepend s) = โ„’ ฯ€
                    @[simp]
                    theorem MDP.MScheduler.toScheduler_apply {State : Type u_1} {Act : Type u_2} {M : MDP State Act} {โ„’ : ๐”[M]} {ฯ€ : M.Path} :
                    โ†‘โ„’ ฯ€ = โ„’ ฯ€
                    @[simp]
                    theorem MDP.Scheduler.mk'_coe {State : Type u_1} {Act : Type u_2} {M : MDP State Act} {๐’ฎ : (ฯ€ : M.Path) โ†’ โ†‘(M.act ฯ€.last)} (ฯ€ : M.Path) :
                    (mk' ๐’ฎ) ฯ€ = โ†‘(๐’ฎ ฯ€)
                    noncomputable def MDP.Scheduler.specialize {State : Type u_1} {Act : Type u_2} {M : MDP State Act} [DecidableEq State] (๐’ฎ : ๐”–[M]) (s : State) (s' : โ†‘(M.succs_univ s)) :

                    Specialize a scheduler such that all scheduled paths are considered with a given state as the immediately predecessor.

                    Equations
                    Instances For
                      Equations
                      • One or more equations did not get rendered due to their size.
                      Instances For
                        Equations
                        • One or more equations did not get rendered due to their size.
                        Instances For
                          @[simp]
                          theorem MDP.Scheduler.specialize_apply {State : Type u_1} {Act : Type u_2} {M : MDP State Act} [DecidableEq State] {๐’ฎ : ๐”–[M]} {s : State} {s' : โ†‘(M.succs_univ s)} {ฯ€ : M.Path} :
                          (๐’ฎ.specialize s s') ฯ€ = if h : ฯ€[0] = โ†‘s' then ๐’ฎ (ฯ€.prepend โŸจs, โ‹ฏโŸฉ) else M.default_act ฯ€.last
                          @[simp]
                          theorem MDP.Scheduler.specialize_tail_take {State : Type u_1} {Act : Type u_2} {M : MDP State Act} [DecidableEq State] {๐’ฎ : ๐”–[M]} {i : โ„•} (ฯ€ : M.Path) (h : 1 < โ€–ฯ€โ€–) :
                          (๐’ฎ.specialize ฯ€[0] โŸจฯ€[1], โ‹ฏโŸฉ) (ฯ€.tail.take i) = ๐’ฎ (ฯ€.take (i + 1))
                          @[simp]
                          theorem MDP.Scheduler.specialize_default_on {State : Type u_1} {Act : Type u_2} {M : MDP State Act} [DecidableEq State] {๐’ฎ : ๐”–[M]} {s : State} {ฯ€ : M.Path} {s' : โ†‘(M.succs_univ s)} (h : ยฌฯ€[0] = โ†‘s') :
                          (๐’ฎ.specialize s s') ฯ€ = M.default_act ฯ€.last
                          theorem MDP.MScheduler.toScheduler_specialize {State : Type u_1} {Act : Type u_2} {M : MDP State Act} [DecidableEq State] {s : State} {s' : โ†‘(M.succs_univ s)} (โ„’ : ๐”[M]) :
                          (โ†‘โ„’).specialize s s' = { toFun := fun (ฯ€ : M.Path) => if ฯ€[0] = โ†‘s' then โ„’ ฯ€ else M.default_act ฯ€.last, property := โ‹ฏ }