Documentation

Projects.AP.MkFold

def AP.AStrat.mkFold' {α : Type u_1} (s : State) (z : α) (fa : StateαPointZ × α) (fd : StatePointZαα) :
Equations
Instances For
    def AP.AStrat.mkFold {α : Type u_1} (s₀ : State) (z : α) (fa : StateαPointZ × α) (fd : StatePointZαα) :
    Equations
    Instances For
      def AP.DStrat.mkFold' {α : Type u_1} (s : State) (z : α) (fa : StatePointZαα) (fd : StateαPointZ × α) :
      Equations
      Instances For
        def AP.DStrat.mkFold {α : Type u_1} (s₀ : State) (z : α) (fa : StatePointZαα) (fd : StateαPointZ × α) :
        Equations
        Instances For
          @[simp]
          instance AP.instWFMkFold {α : Type u_1} {z : α} {s₀ : State} {fa : StateαPointZ × α} {fd : StatePointZαα} :
          (AStrat.mkFold s₀ z fa fd).WF
          @[simp]
          instance AP.instWFMkFold_1 {α : Type u_1} {z : α} {s₀ : State} {fa : StatePointZαα} {fd : StateαPointZ × α} :
          (DStrat.mkFold s₀ z fa fd).WF
          theorem AP.aStrat_mkFold_apply_a {α : Type u_1} {s : State} {z : α} {fa : StateαPointZ × α} {fd : StatePointZαα} (h : sys.validTr s (fa s z).1) :
          (AStrat.mkFold s z fa fd).f s = (fa s z).1
          theorem AP.AState.aStrat_mkFold_eq_of_tr {α : Type u_1} {s s' s₁ : State} {z : α} {fa : StateαPointZ × α} {fd : StatePointZαα} [hs : AState s] (h₁ : sys.tr s (fa s z).1 = some s') (h₂ : sys.Reachable s' s₁) :
          (AStrat.mkFold s' (fa s z).2 fa fd).f s₁ = (AStrat.mkFold s z fa fd).f s₁
          theorem AP.DState.aStrat_mkFold_eq_of_tr {α : Type u_1} {s s' s₁ : State} {p : PointZ} {z : α} {fa : StateαPointZ × α} {fd : StatePointZαα} [hs : DState s] (h₁ : sys.tr s p = some s') (h₂ : sys.Reachable s' s₁) :
          (AStrat.mkFold s' (fd s p z) fa fd).f s₁ = (AStrat.mkFold s z fa fd).f s₁
          theorem AP.AStrat.mkFold_ind {α : Type u_1} {s : State} {z : α} {fa : StateαPointZ × α} {fd : StatePointZαα} {n : } {d : DStrat} {p : StateαProp} [hs : sys.WF s] [hd : d.WF] (h₀ : p s z) (h₁ : ∀ (sa : State) [AState sa] (acc : α), sys.Reachable s sap sa acc∃ (sd : State), sys.tr sa (fa sa acc).1 = some sd p sd (fa sa acc).2) (h₂ : ∀ (sd : State) [DState sd] (sa : State) [AState sa] (p₁ : PointZ) (acc : α), sys.Reachable s sdsys.tr sd p₁ = some sap sd accp sa (fd sd p₁ acc)) :
          ∃ (s₁ : State) (acc : α), sys.simulate { a := mkFold s z fa fd, d := d }.f s n = (s₁, 0) p s₁ acc