Documentation

MDP.BScheduler

class MDP.Scheduler.IsBounded {State : Type u_1} {Act : Type u_2} {M : MDP State Act} (๐’ฎ : ๐”–[M]) (s : State) (n : โ„•) :
Instances
    theorem MDP.Scheduler.isBounded_iff {State : Type u_1} {Act : Type u_2} {M : MDP State Act} (๐’ฎ : ๐”–[M]) (s : State) (n : โ„•) :
    ๐’ฎ.IsBounded s n โ†” โˆ€ ฯ€ โˆ‰ Path[M,s,โ‰คn], ๐’ฎ ฯ€ = M.default_act ฯ€.last
    def MDP.BScheduler {State : Type u_1} {Act : Type u_2} (M : MDP State Act) (s : State) (n : โ„•) :
    Type (max 0 u_1 u_2)

    A (potentially) history dependent scheduler, bounded to paths in Path[M,s,โ‰คn].

    Equations
    Instances For

      A (potentially) history dependent scheduler, bounded to paths in Path[M,s,โ‰คn].

      Equations
      • One or more equations did not get rendered due to their size.
      Instances For
        instance MDP.BScheduler.instDFunLike {State : Type u_1} {Act : Type u_2} {M : MDP State Act} {s : State} {n : โ„•} :
        DFunLike ๐”–[M,s,โ‰คn] M.Path fun (x : M.Path) => Act
        Equations
        @[simp]
        theorem MDP.BScheduler.mk_coe_apply {State : Type u_1} {Act : Type u_2} {M : MDP State Act} {s : State} {n : โ„•} (๐’ฎ : ๐”–[M]) (h : ๐’ฎ.IsBounded s n) (ฯ€ : M.Path) :
        โŸจ๐’ฎ, hโŸฉ ฯ€ = ๐’ฎ ฯ€
        theorem MDP.BScheduler.default_on {State : Type u_1} {Act : Type u_2} {M : MDP State Act} {s : State} {n : โ„•} (โ„ฌ : ๐”–[M,s,โ‰คn]) {ฯ€ : M.Path} (h : ฯ€ โˆ‰ Path[M,s,โ‰คn]) :
        โ„ฌ ฯ€ = M.default_act ฯ€.last
        @[simp]
        theorem MDP.BScheduler.coe_apply {State : Type u_1} {Act : Type u_2} {M : MDP State Act} {s : State} {n : โ„•} {ฯ€ : M.Path} (โ„ฌ : ๐”–[M,s,โ‰คn]) :
        โ†‘โ„ฌ ฯ€ = โ„ฌ ฯ€
        @[simp]
        theorem MDP.BScheduler.mem_act_if {State : Type u_1} {Act : Type u_2} {M : MDP State Act} {s : State} {n : โ„•} {ฯ€ : M.Path} (โ„ฌ : ๐”–[M,s,โ‰คn]) :
        โ„ฌ ฯ€ โˆˆ M.act ฯ€.last
        @[simp]
        theorem MDP.BScheduler.tail_mem_act_if {State : Type u_1} {Act : Type u_2} {M : MDP State Act} {s : State} {n : โ„•} (โ„ฌ : ๐”–[M,s,โ‰คn]) {ฯ€ : M.Path} :
        โ„ฌ ฯ€.tail โˆˆ M.act ฯ€.last
        theorem MDP.BScheduler.ext {State : Type u_1} {Act : Type u_2} {M : MDP State Act} {s : State} {n : โ„•} {โ„ฌ โ„ฌ' : ๐”–[M,s,โ‰คn]} (h : โˆ€ ฯ€ โˆˆ Path[M,s,โ‰คn], โ„ฌ ฯ€ = โ„ฌ' ฯ€) :
        โ„ฌ = โ„ฌ'
        theorem MDP.BScheduler.ext_iff {State : Type u_1} {Act : Type u_2} {M : MDP State Act} {s : State} {n : โ„•} {โ„ฌ โ„ฌ' : ๐”–[M,s,โ‰คn]} :
        โ„ฌ = โ„ฌ' โ†” โˆ€ ฯ€ โˆˆ Path[M,s,โ‰คn], โ„ฌ ฯ€ = โ„ฌ' ฯ€
        def MDP.BScheduler.mk' {State : Type u_1} {Act : Type u_2} {M : MDP State Act} [DecidableEq State] (s : State) (n : โ„•) (f : โ†‘Path[M,s,โ‰คn] โ†’ Act) (h : โˆ€ (ฯ€ : โ†‘Path[M,s,โ‰คn]), f ฯ€ โˆˆ M.act (โ†‘ฯ€).last) :
        Equations
        Instances For
          def MDP.BScheduler.specialize {State : Type u_1} {Act : Type u_2} {M : MDP State Act} [DecidableEq State] {s : State} {n : โ„•} (โ„ฌ : ๐”–[M,s,โ‰คn + 1]) :
          State โ†’ (s' : โ†‘(M.succs_univ s)) โ†’ ๐”–[M,โ†‘s',โ‰คn]
          Equations
          Instances For
            @[simp]
            theorem MDP.BScheduler.specialize_apply {State : Type u_1} {Act : Type u_2} {M : MDP State Act} [DecidableEq State] {s : State} {n : โ„•} (โ„ฌ : ๐”–[M,s,โ‰คn + 1]) (s' : โ†‘(M.succs_univ s)) (ฯ€ : โ†‘Path[M,โ†‘s',โ‰คn]) :
            (โ„ฌ.specialize s s') โ†‘ฯ€ = โ„ฌ ((โ†‘ฯ€).prepend โŸจs, โ‹ฏโŸฉ)
            @[simp]
            theorem MDP.BScheduler.specialize_apply' {State : Type u_1} {Act : Type u_2} {M : MDP State Act} [DecidableEq State] {s : State} {n : โ„•} {s' : โ†‘(M.succs_univ s)} {ฯ€ : M.Path} (โ„ฌ : ๐”–[M,s,โ‰คn + 1]) :
            (โ„ฌ.specialize s s') ฯ€ = if h : ฯ€ โˆˆ Path[M,โ†‘s',โ‰คn] then โ„ฌ (ฯ€.prepend โŸจs, โ‹ฏโŸฉ) else M.default_act ฯ€.last
            noncomputable def MDP.Scheduler.bound {State : Type u_1} {Act : Type u_2} {M : MDP State Act} [DecidableEq State] (๐’ฎ : ๐”–[M]) {s : State} {n : โ„•} :
            Equations
            Instances For
              @[simp]
              theorem MDP.Scheduler.bound_coe_apply {State : Type u_1} {Act : Type u_2} {M : MDP State Act} [DecidableEq State] (๐’ฎ : ๐”–[M]) (s : State) (n : โ„•) (ฯ€ : M.Path) :
              ๐’ฎ.bound ฯ€ = if ฯ€ โˆˆ Path[M,s,โ‰คn] then ๐’ฎ ฯ€ else M.default_act ฯ€.last
              def MDP.BScheduler.cast_arb {State : Type u_1} {Act : Type u_2} {M : MDP State Act} [DecidableEq State] {s : State} {n : โ„•} {s' : State} {m : โ„•} (โ„ฌ : ๐”–[M,s,โ‰คn]) :
              Equations
              Instances For
                def MDP.BScheduler.cast_arb_tail {State : Type u_1} {Act : Type u_2} {M : MDP State Act} [DecidableEq State] {s : State} {n : โ„•} {s' : State} (โ„ฌ : ๐”–[M,s,โ‰คn]) :
                Equations
                Instances For
                  @[simp]
                  theorem MDP.BScheduler.cast_arb_tail_specialize {State : Type u_1} {Act : Type u_2} {M : MDP State Act} [DecidableEq State] {s : State} {n : โ„•} (s' : โ†‘(M.succs_univ s)) (โ„ฌ : ๐”–[M,โ†‘s',โ‰คn]) :
                  โ„ฌ.cast_arb_tail.specialize s s' = โ„ฌ
                  instance MDP.BScheduler.instCoeScheduler {State : Type u_1} {Act : Type u_2} {M : MDP State Act} [DecidableEq State] {s : State} {n : โ„•} :
                  Equations
                  instance MDP.BScheduler.instInhabited {State : Type u_1} {Act : Type u_2} {M : MDP State Act} {s : State} {n : โ„•} :
                  Equations
                  def MDP.BScheduler.FiniteMScheduler {State : Type u_1} {Act : Type u_2} {M : MDP State Act} [M.FiniteBranching] (s : State) (n : โ„•) :
                  Type (max u_1 u_2)
                  Equations
                  Instances For
                    instance MDP.BScheduler.instFiniteOfFiniteBranching {State : Type u_1} {Act : Type u_2} {M : MDP State Act} [DecidableEq State] {s : State} {n : โ„•} [M.FiniteBranching] :
                    instance MDP.BScheduler.instNonemptyOfFiniteBranching {State : Type u_1} {Act : Type u_2} {M : MDP State Act} {s : State} {n : โ„•} [M.FiniteBranching] :
                    def MDP.BScheduler.elems {State : Type u_1} {Act : Type u_2} {M : MDP State Act} [DecidableEq State] {s : State} {n : โ„•} [M.FiniteBranching] :
                    Equations
                    Instances For
                      @[simp]
                      theorem MDP.BScheduler.elems_mem {State : Type u_1} {Act : Type u_2} {M : MDP State Act} [DecidableEq State] {s : State} {n : โ„•} {โ„ฌ : ๐”–[M,s,โ‰คn]} [M.FiniteBranching] :
                      โ„ฌ โˆˆ elems
                      @[simp]
                      theorem MDP.BScheduler.elems_nonempty {State : Type u_1} {Act : Type u_2} {M : MDP State Act} [DecidableEq State] {s : State} {n : โ„•} [M.FiniteBranching] :
                      @[simp]
                      theorem MDP.BScheduler.mk'_specialize {State : Type u_1} {Act : Type u_2} {M : MDP State Act} [DecidableEq State] {n : โ„•} {s : State} {s' : โ†‘(M.succs_univ s)} (f : โ†‘Path[M,s,โ‰คn + 1] โ†’ Act) (h : โˆ€ (ฯ€ : โ†‘Path[M,s,โ‰คn + 1]), f ฯ€ โˆˆ M.act (โ†‘ฯ€).last) :
                      (mk' s (n + 1) f h).specialize s s' = mk' (โ†‘s') n (fun (x : โ†‘Path[M,โ†‘s',โ‰คn]) => f โŸจ(โ†‘x).prepend โŸจs, โ‹ฏโŸฉ, โ‹ฏโŸฉ) โ‹ฏ
                      theorem MDP.BScheduler.mk'_argmin {State : Type u_1} {Act : Type u_2} {M : MDP State Act} [DecidableEq State] [M.FiniteBranching] {n : โ„•} (s : State) (s' : โ†‘(M.succs_univ s)) (f : ๐”–[M,โ†‘s',โ‰คn] โ†’ ENNReal) :
                      mk' (โ†‘s') n (fun (ฯ€ : โ†‘Path[M,โ†‘s',โ‰คn]) => (elems.argmin โ‹ฏ f) โ†‘ฯ€) โ‹ฏ = elems.argmin โ‹ฏ f