Documentation

Projects.AP.Determinacy

noncomputable def AP.aSeek (p : StateProp) :
Equations
Instances For
    def AP.aStratChooseCnd (p : StateProp) (sa : State) (pa : PointZ) :
    Equations
    Instances For
      noncomputable def AP.aStratChoose (p : StateProp) :
      Equations
      Instances For
        Equations
        Instances For
          Equations
          Instances For
            noncomputable def AP.dStratOfDWins (sa : State) :
            Equations
            Instances For
              def AP.AStrat.set (a : AStrat) (s : State) (p : PointZ) :
              Equations
              Instances For
                def AP.DStrat.set (d : DStrat) (s : State) (p : PointZ) :
                Equations
                Instances For
                  noncomputable def AP.aStratOfAHws (sd : State) :
                  Equations
                  Instances For
                    theorem AP.AState.of_simulate_mul_two {sa : State} [ha : AState sa] {st : Strat} [hst : st.WF] {n : } :
                    AState (sys.simulate st.f sa (n * 2)).1
                    @[simp]
                    instance AP.instAStateFstStateNatSimulatePointZSysFHMulOfNat {sa : State} [ha : AState sa] {st : Strat} [hst : st.WF] {n : } :
                    AState (sys.simulate st.f sa (n * 2)).1
                    theorem AP.AState.of_simulate_mul_two_eq' {sa s₁ : State} {r : } [ha : AState sa] {st : Strat} [hst : st.WF] {n : } (h : sys.simulate st.f sa (n * 2) = (s₁, r)) :
                    AState s₁
                    theorem AP.AState.of_simulate_mul_two_eq_full {sa s₁ : State} {f : StatePointZ} [ha : AState sa] {n : } (h : sys.simulate f sa (n * 2) = (s₁, 0)) :
                    AState s₁
                    theorem AP.DState.of_simulate_mul_two_eq_full {sd s₁ : State} {f : StatePointZ} [hd : DState sd] {n : } (h : sys.simulate f sd (n * 2) = (s₁, 0)) :
                    DState s₁
                    theorem AP.AState.aWins_of_ind_two' {sa₀ : State} [ha₀ : AState sa₀] {st : Strat} [hst : st.WF] {p : StateProp} (hp : p sa₀) (h : ∀ {sa : State} [AState sa], sys.Reachable sa₀ sap sa∃ (sd : State), sys.tr sa (st.a.f sa) = some sd ∀ (sa' : State), sys.tr sd (st.d.f sd) = some sa'p sa') :
                    sa₀.aWins st p sa₀
                    theorem AP.AState.aWins_of_ind_two {sa₀ : State} [ha₀ : AState sa₀] {st : Strat} [hst : st.WF] {p : StateProp} (hp : p sa₀) (h : ∀ {sa : State} [AState sa], sys.Reachable sa₀ sap sa∃ (sd : State), sys.tr sa (st.a.f sa) = some sd ∀ (sa' : State), sys.tr sd (st.d.f sd) = some sa'p sa') :
                    sa₀.aWins st
                    theorem AP.AState.ind_two {sa sa' : State} [ha : AState sa] [ha' : AState sa'] {p : StateProp} (h₁ : p sa) (h₂ : ∀ (sa : State) [AState sa] (pa : PointZ) (sd : State) (pd : PointZ) (sa' : State), sys.tr sa pa = some sdsys.tr sd pd = some sa'p sa') (h₃ : sys.Reachable sa sa') :
                    p sa'
                    @[simp]
                    theorem AP.AState.aHws_of_ind_two' {sa₀ : State} [ha₀ : AState sa₀] {p : StateProp} (h₁ : p sa₀) (h₂ : ∀ (sa : State) [AState sa], sys.Reachable sa₀ sap sa∃ (pa : PointZ) (sd : State), sys.tr sa pa = some sd ∀ (pd : PointZ) (sa' : State), sys.tr sd pd = some sa'p sa') :
                    sa₀.aHws p sa₀
                    theorem AP.AState.aHws_of_ind_two {sa₀ : State} [ha₀ : AState sa₀] {p : StateProp} (h₁ : p sa₀) (h₂ : ∀ (sa : State) [AState sa], sys.Reachable sa₀ sap sa∃ (pa : PointZ) (sd : State), sys.tr sa pa = some sd ∀ (pd : PointZ) (sa' : State), sys.tr sd pd = some sa'p sa') :
                    sa₀.aHws
                    @[simp]
                    instance AP.instTreeStatePointZSysOfWF {s : State} [hs : sys.WF s] :
                    theorem AP.getMoveFromHist_append_eq_some_of {s acc : State} {ps ps₁ : List PointZ} {p : PointZ} (h : getMoveFromHist s acc ps = some p) :
                    getMoveFromHist s acc (ps ++ ps₁) = some p
                    theorem AP.getMoveAt_eq_getMoveAt_eq_some_and_tr {s₁ s₂ : State} {p₁ : PointZ} {s : State} {p : PointZ} [hs : sys.WF s₁] (h₁ : s₁.getMoveAt s = some p) (h₂ : sys.tr s₁ p₁ = some s₂) :
                    s₂.getMoveAt s = some p
                    theorem AP.getMoveFromHist_eq_some_iff_exi_trs {s acc : State} {p : PointZ} {ps : List PointZ} [hs : sys.WF acc] :
                    getMoveFromHist s acc ps = some p sys.WF s ∃ (ps' : List PointZ), ps' ++ [p] <+: ps sys.trs acc ps' = (s, [])
                    theorem AP.getMoveAt_eq_some_of_tr {s s' : State} {p : PointZ} [hs : sys.WF s] (h₁ : sys.tr s p = some s') :
                    theorem AP.getMoveAt_eq_some_of_tr_and_reachable {s s₁ s₂ : State} {p : PointZ} [hs : sys.WF s] (h₁ : sys.tr s p = some s₁) (h₂ : sys.Reachable s₁ s₂) :
                    s₂.getMoveAt s = some p
                    theorem AP.getMoveAt_eq_some_iff_exi_trs {s₀ s : State} {p : PointZ} [sys.WF s] :
                    s.getMoveAt s₀ = some p ∃ (ps' : List PointZ), ps' ++ [p] <+: s.hist.reverse.tail sys.trs (initState s.pw s.aPos₀) ps' = (s₀, [])
                    @[simp]
                    theorem AP.AStrat.f_set {a : AStrat} {s : State} {p : PointZ} :
                    (a.set s p).f = fn_set s p a.f
                    @[simp]
                    theorem AP.DStrat.f_set {d : DStrat} {s : State} {p : PointZ} :
                    (d.set s p).f = fn_set s p d.f
                    theorem AP.AStrat.wf_set_of_validTr {a : AStrat} {s : State} {p : PointZ} [ha : a.WF] (h : sys.validTr s p) :
                    (a.set s p).WF
                    theorem AP.DStrat.wf_set_of_validTr {d : DStrat} {s : State} {p : PointZ} [hd : d.WF] (h : sys.validTr s p) :
                    (d.set s p).WF
                    theorem AP.AStrat.wf_set_of_tr {a : AStrat} {s s' : State} {p : PointZ} [ha : a.WF] (h : sys.tr s p = some s') :
                    (a.set s p).WF
                    theorem AP.DStrat.wf_set_of_tr {d : DStrat} {s s' : State} {p : PointZ} [hd : d.WF] (h : sys.tr s p = some s') :
                    (d.set s p).WF
                    theorem AP.simulate_congr {s : State} [hs : sys.WF s] {st₁ st₂ : Strat} [hst₁ : st₁.WF] [hst₂ : st₂.WF] {n : } (h₁ : k < n, ∀ (sa : State) [AState sa], sys.simulate st₁.f s k = (sa, 0)sys.simulate st₂.f s k = (sa, 0)sys.hasTr sast₁.a.f sa = st₂.a.f sa) (h₂ : k < n, ∀ (sd : State) [DState sd], sys.simulate st₁.f s k = (sd, 0)sys.simulate st₂.f s k = (sd, 0)sys.hasTr sdst₁.d.f sd = st₂.d.f sd) :
                    sys.simulate st₁.f s n = sys.simulate st₂.f s n
                    theorem AP.AState.aHws_of_not_dHws {sa : State} [ha : AState sa] (h : ¬sa.dHws) :
                    sa.aHws
                    theorem AP.AState.dHws_of_tr' {sd sa : State} {pd : PointZ} [hd : DState sd] (h₁ : sys.tr sd pd = some sa) (h₂ : sa.dHws) :
                    sd.dHws
                    theorem AP.DState.aHws_of_tr' {sa sd : State} {pa : PointZ} [ha : AState sa] (h₁ : sys.tr sa pa = some sd) (h₂ : sd.aHws) :
                    sa.aHws
                    theorem AP.State.aHws_of_not_dHws {s : State} [hs : sys.WF s] (h : ¬s.dHws) :
                    @[simp]
                    theorem AP.State.not_aHws_iff {s : State} [hs : sys.WF s] :
                    @[simp]
                    theorem AP.State.not_dHws_iff {s : State} [hs : sys.WF s] :
                    theorem AP.AState.aHws_iff_tr {sa : State} [hs : AState sa] :
                    sa.aHws ∃ (p : PointZ) (sd : State), sys.tr sa p = some sd sd.aHws
                    theorem AP.AState.dHws_iff_tr {sa : State} [hs : AState sa] :
                    sa.dHws ∀ (p : PointZ) (sd : State), sys.tr sa p = some sdsd.dHws
                    theorem AP.DState.dHws_iff_tr {sd : State} [hs : DState sd] :
                    sd.dHws ∃ (p : PointZ) (sa : State), sys.tr sd p = some sa sa.dHws
                    theorem AP.DState.aHws_iff_tr {sd : State} [hs : DState sd] :
                    sd.aHws ∀ (p : PointZ) (sa : State), sys.tr sd p = some sasa.aHws
                    theorem AP.AState.aHws_of_ind' {s : State} [ha : AState s] {p : StateProp} (h₁ : p s) (h₂ : ∀ (sa : State) [AState sa], sys.Reachable s sap sa∃ (pa : PointZ) (sd : State), sys.tr sa pa = some sd p sd) (h₃ : ∀ (sd : State) [DState sd] (pd : PointZ) (sa : State), sys.Reachable s sdp sdsys.tr sd pd = some sap sa) :
                    s.aHws p s
                    theorem AP.AState.aHws_of_ind {s : State} [ha : AState s] {p : StateProp} (h₁ : p s) (h₂ : ∀ (sa : State) [AState sa], sys.Reachable s sap sa∃ (pa : PointZ) (sd : State), sys.tr sa pa = some sd p sd) (h₃ : ∀ (sd : State) [DState sd] (pd : PointZ) (sa : State), sys.Reachable s sdp sdsys.tr sd pd = some sap sa) :
                    theorem AP.AState.aWins_of_ind' {s : State} [ha : AState s] {st : Strat} [hst : st.WF] {p : StateProp} (h₁ : p s) (h₂ : ∀ (sa : State) [AState sa], sys.Reachable s sap sa∃ (sd : State), sys.tr sa (st.a.f sa) = some sd p sd) (h₃ : ∀ (sd : State) [DState sd] (sa : State), sys.Reachable s sdp sdsys.tr sd (st.d.f sd) = some sap sa) :
                    s.aWins st p s
                    theorem AP.AState.aWins_of_ind {s : State} [ha : AState s] {st : Strat} [hst : st.WF] {p : StateProp} (h₁ : p s) (h₂ : ∀ (sa : State) [AState sa], sys.Reachable s sap sa∃ (sd : State), sys.tr sa (st.a.f sa) = some sd p sd) (h₃ : ∀ (sd : State) [DState sd] (sa : State), sys.Reachable s sdp sdsys.tr sd (st.d.f sd) = some sap sa) :
                    s.aWins st
                    theorem AP.State.aWins_of_ind' {s : State} [hs : sys.WF s] {st : Strat} [hst : st.WF] {p : StateProp} (h₁ : p s) (h₂ : ∀ (sa : State) [AState sa], sys.Reachable s sap sa∃ (sd : State), sys.tr sa (st.a.f sa) = some sd p sd) (h₃ : ∀ (sd : State) [DState sd] (sa : State), sys.Reachable s sdp sdsys.tr sd (st.d.f sd) = some sap sa) :
                    s.aWins st p s
                    theorem AP.State.aWins_of_ind {s : State} [hs : sys.WF s] {st : Strat} [hst : st.WF] {p : StateProp} (h₁ : p s) (h₂ : ∀ (sa : State) [AState sa], sys.Reachable s sap sa∃ (sd : State), sys.tr sa (st.a.f sa) = some sd p sd) (h₃ : ∀ (sd : State) [DState sd] (sa : State), sys.Reachable s sdp sdsys.tr sd (st.d.f sd) = some sap sa) :
                    s.aWins st
                    theorem AP.State.aHws_of_ind' {s : State} [hs : sys.WF s] {p : StateProp} (h₁ : p s) (h₂ : ∀ (sa : State) [AState sa], sys.Reachable s sap sa∃ (pa : PointZ) (sd : State), sys.tr sa pa = some sd p sd) (h₃ : ∀ (sd : State) [DState sd] (pd : PointZ) (sa : State), sys.Reachable s sdp sdsys.tr sd pd = some sap sa) :
                    s.aHws p s
                    theorem AP.State.aHws_of_ind {s : State} [hs : sys.WF s] {p : StateProp} (h₁ : p s) (h₂ : ∀ (sa : State) [AState sa], sys.Reachable s sap sa∃ (pa : PointZ) (sd : State), sys.tr sa pa = some sd p sd) (h₃ : ∀ (sd : State) [DState sd] (pd : PointZ) (sa : State), sys.Reachable s sdp sdsys.tr sd pd = some sap sa) :
                    instance AP.instWFASeek {p : StateProp} :
                    (aSeek p).WF
                    theorem AP.State.exi_aWins_of_ind' {s : State} [hs : sys.WF s] {d : DStrat} [Hd : d.WF] {p : StateProp} (h₁ : p s) (h₂ : ∀ (sa : State) [AState sa], p sa∃ (pa : PointZ) (sd : State), sys.tr sa pa = some sd p sd) (h₃ : ∀ (sd : State) [DState sd] (sa : State), p sdsys.tr sd (d.f sd) = some sap sa) :
                    (∃ (a : AStrat), a.WF s.aWins { a := a, d := d }) p s
                    theorem AP.State.exi_aWins_of_ind {s : State} [hs : sys.WF s] {d : DStrat} [Hd : d.WF] {p : StateProp} (h₁ : p s) (h₂ : ∀ (sa : State) [AState sa], p sa∃ (pa : PointZ) (sd : State), sys.tr sa pa = some sd p sd) (h₃ : ∀ (sd : State) [DState sd] (sa : State), p sdsys.tr sd (d.f sd) = some sap sa) :
                    ∃ (a : AStrat), a.WF s.aWins { a := a, d := d }
                    theorem AP.State.aWins_iff_add {s : State} {st : Strat} (k : ) :
                    s.aWins st ∀ (n : ), (sys.simulate st.f s (k + n)).2 = 0
                    theorem AP.State.dWins_iff_add {s : State} {st : Strat} (k : ) :
                    s.dWins st ∃ (n : ), (sys.simulate st.f s (k + n)).2 0
                    theorem AP.State.length_hist_lt_of_tr {s s' : State} {p : PointZ} (h : sys.tr s p = some s') :
                    theorem AP.length_hist_sub_eq_of_simulate {s₀ s : State} {n : } {f : StatePointZ} [hs : sys.WF s₀] (h : sys.simulate f s₀ n = (s, 0)) :
                    theorem AP.AState.dHws_of_tr {sa sd : State} {p : PointZ} [ha : AState sa] (h₁ : sys.tr sa p = some sd) (h₂ : sa.dHws) :
                    sd.dHws
                    theorem AP.DState.aHws_of_tr {sd sa : State} {p : PointZ} [hd : DState sd] (h₁ : sys.tr sd p = some sa) (h₂ : sd.aHws) :
                    sa.aHws
                    theorem AP.State.dWins_of_lt_lt {s : State} [hs : sys.WF s] {a : AStrat} [Ha : a.WF] {d : DStrat} [Hd : d.WF] {p : StateProp} {f : State} (h₁ : p s) (h₂ : ∀ (sa sd : State) [AState sa] [DState sd], p sasys.tr sa (a.f sa) = some sdp sd f sd < f sa) (h₃ : ∀ (sd sa : State) [DState sd] [AState sa], p sdsys.tr sd (d.f sd) = some sap sa f sa < f sd) :
                    s.dWins { a := a, d := d }
                    theorem AP.State.dWins_of_le_lt {s : State} [hs : sys.WF s] {a : AStrat} [Ha : a.WF] {d : DStrat} [Hd : d.WF] {p : StateProp} {f : State} (h₁ : p s) (h₂ : ∀ (sa sd : State) [AState sa] [DState sd], p sasys.tr sa (a.f sa) = some sdp sd f sd f sa) (h₃ : ∀ (sd sa : State) [DState sd] [AState sa], p sdsys.tr sd (d.f sd) = some sap sa f sa < f sd) :
                    s.dWins { a := a, d := d }
                    theorem AP.State.dWins_of_lt_le {s : State} [hs : sys.WF s] {a : AStrat} [Ha : a.WF] {d : DStrat} [Hd : d.WF] {p : StateProp} {f : State} (h₁ : p s) (h₂ : ∀ (sa sd : State) [AState sa] [DState sd], p sasys.tr sa (a.f sa) = some sdp sd f sd < f sa) (h₃ : ∀ (sd sa : State) [DState sd] [AState sa], p sdsys.tr sd (d.f sd) = some sap sa f sa f sd) :
                    s.dWins { a := a, d := d }
                    theorem AP.State.dWins_of_lt_lt_uncond {s : State} [hs : sys.WF s] {a : AStrat} [Ha : a.WF] {d : DStrat} [Hd : d.WF] {f : State} (h₁ : ∀ (sa sd : State) [AState sa] [DState sd], sys.tr sa (a.f sa) = some sdf sd < f sa) (h₂ : ∀ (sd sa : State) [DState sd] [AState sa], sys.tr sd (d.f sd) = some saf sa < f sd) :
                    s.dWins { a := a, d := d }
                    theorem AP.State.dWins_of_le_lt_uncond {s : State} [hs : sys.WF s] {a : AStrat} [Ha : a.WF] {d : DStrat} [Hd : d.WF] {f : State} (h₁ : ∀ (sa sd : State) [AState sa] [DState sd], sys.tr sa (a.f sa) = some sdf sd f sa) (h₂ : ∀ (sd sa : State) [DState sd] [AState sa], sys.tr sd (d.f sd) = some saf sa < f sd) :
                    s.dWins { a := a, d := d }
                    theorem AP.State.dWins_of_lt_le_uncond {s : State} [hs : sys.WF s] {a : AStrat} [Ha : a.WF] {d : DStrat} [Hd : d.WF] {f : State} (h₁ : ∀ (sa sd : State) [AState sa] [DState sd], sys.tr sa (a.f sa) = some sdf sd < f sa) (h₂ : ∀ (sd sa : State) [DState sd] [AState sa], sys.tr sd (d.f sd) = some saf sa f sd) :
                    s.dWins { a := a, d := d }
                    theorem AP.State.simulate_set_a_eq_of_length_hist_lt {s s₁ : State} {p₁ : PointZ} {n : } {a : AStrat} {d : DStrat} [hs : sys.WF s] [hs₁ : sys.WF s₁] [ha : a.WF] [hd : d.WF] (h₁ : sys.validTr s₁ p₁) (h₂ : s₁.hist.length < s.hist.length) :
                    sys.simulate { a := a.set s₁ p₁, d := d }.f s n = sys.simulate { a := a, d := d }.f s n
                    theorem AP.State.simulate_set_d_eq_of_length_hist_lt {s s₁ : State} {p₁ : PointZ} {n : } {a : AStrat} {d : DStrat} [hs : sys.WF s] [hs₁ : sys.WF s₁] [ha : a.WF] [hd : d.WF] (h₁ : sys.validTr s₁ p₁) (h₂ : s₁.hist.length < s.hist.length) :
                    sys.simulate { a := a, d := d.set s₁ p₁ }.f s n = sys.simulate { a := a, d := d }.f s n
                    theorem AP.State.simulate_set_a_eq_of_le_length_hist_sub {s s₁ : State} {p₁ : PointZ} {n : } {a : AStrat} {d : DStrat} [hs : sys.WF s] [hs₁ : sys.WF s₁] [ha : a.WF] [hd : d.WF] (h₁ : sys.validTr s₁ p₁) (h₂ : n s₁.hist.length - s.hist.length) :
                    sys.simulate { a := a.set s₁ p₁, d := d }.f s n = sys.simulate { a := a, d := d }.f s n
                    theorem AP.State.simulate_set_d_eq_of_le_length_hist_sub {s s₁ : State} {p₁ : PointZ} {n : } {a : AStrat} {d : DStrat} [hs : sys.WF s] [hs₁ : sys.WF s₁] [ha : a.WF] [hd : d.WF] (h₁ : sys.validTr s₁ p₁) (h₂ : n s₁.hist.length - s.hist.length) :
                    sys.simulate { a := a, d := d.set s₁ p₁ }.f s n = sys.simulate { a := a, d := d }.f s n