Documentation

Acmoi.Exercise1_9

structure NA' (α σ : Type) :
  • step : σαSet σ
  • start : σ
  • accept : σ
Instances For
    @[implicit_reducible]
    Equations
    def NA'.step_set {σ : Type} (M : NA' (Fin alpha) σ) (S : Set σ) (a : Fin alpha) :
    Set σ
    Equations
    Instances For
      def NA'.eval_from {σ : Type} (M : NA' (Fin alpha) σ) (start : Set σ) :
      List (Fin alpha)Set σ
      Equations
      Instances For
        def NA'.eval {σ : Type} (M : NA' (Fin alpha) σ) :
        List (Fin alpha)Set σ
        Equations
        Instances For
          def NA'.accepts {σ : Type} (M : NA' (Fin alpha) σ) :
          Equations
          Instances For
            theorem NA'.step_set_empty {σ : Type} (M : NA' (Fin alpha) σ) {a : Fin alpha} :
            theorem eval.from_empty {σ : Type} (M : NA' (Fin alpha) σ) (y : List (Fin alpha)) :
            theorem eval.eval_from_subset {γ : Type} (M : NA' (Fin alpha) γ) (w : List (Fin alpha)) (S T : Set γ) :
            S TM.eval_from S w M.eval_from T w
            theorem eval.step_singleton {σ : Type} (M : NA' (Fin alpha) σ) (q : σ) (a : Fin alpha) :
            M.step_set {q} a = M.step q a
            theorem eval.eval_from_set_cons {σ : Type} {M : NA' (Fin alpha) σ} {q : σ} {y : List (Fin alpha)} {F : Set σ} {a : Fin alpha} (h_given : rM.step_set F a, q M.eval_from {r} y) :
            sF, q M.eval_from {s} (a :: y)
            theorem eval.singleton_member_of_set {σ : Type} {M : NA' (Fin alpha) σ} {q : σ} {l : List (Fin alpha)} (F : Set σ) :
            q M.eval_from F lrF, q M.eval_from {r} l
            theorem eval.set_of_singleton_member {σ : Type} {M : NA' (Fin alpha) σ} {q : σ} {l : List (Fin alpha)} {F : Set σ} (hsome : rF, q M.eval_from {r} l) :
            q M.eval_from F l
            theorem eval.set_iff_singleton_member {σ : Type} {M : NA' (Fin alpha) σ} {q : σ} {l : List (Fin alpha)} (F : Set σ) :
            q M.eval_from F l rF, q M.eval_from {r} l
            @[implicit_reducible]
            instance my_sum_inst {δ : Type} [u : Fintype δ] :
            Equations
            @[implicit_reducible]
            noncomputable instance instDecidableEqFinAlpha (a b : Fin alpha) :
            Decidable (a = b)
            Equations
            def hd.trafo {δ : Type} :
            Fintype δ(N : NA' (Fin alpha) δ) → (a : Fin alpha) → NA' (Fin alpha) (Unit δ)
            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              theorem hd.lift_to {δ : Type} [u : Fintype δ] {N : NA' (Fin alpha) δ} {a : Fin alpha} {t : List (Fin alpha)} :
              have M := trafo u N a; ∀ (q1 q2 : δ), q2 N.eval_from {q1} tSum.inr q2 M.eval_from {Sum.inr q1} t
              theorem hd.accept_self {δ : Type} [u : Fintype δ] {N : NA' (Fin alpha) δ} {a : Fin alpha} {t : List (Fin alpha)} :
              N.accepts t(trafo u N a).accepts (a :: t)
              theorem hd.stay_old {δ : Type} [u : Fintype δ] {N : NA' (Fin alpha) δ} {a b : Fin alpha} {q : δ} {q' : Unit δ} :
              have M := trafo u N a; q' M.step_set {Sum.inr q} b∃ (q_ : δ), q' = Sum.inr q_
              theorem hd.remove_step {δ : Type} [u : Fintype δ] {N : NA' (Fin alpha) δ} {q q_ : δ} {a b : Fin alpha} (hq1 : Sum.inr q_ (trafo u N a).step_set {Sum.inr q} b) :
              q_ N.step_set {q} b
              theorem hd.remove_accept {δ : Type} [u : Fintype δ] {N : NA' (Fin alpha) δ} {q : δ} {a b : Fin alpha} {z : List (Fin alpha)} :
              (∃ q'(trafo u N a).step_set {Sum.inr q} b, (trafo u N a).accept (trafo u N a).eval_from {q'} z)∃ (q_ : δ), Sum.inr q_ (trafo u N a).step_set {Sum.inr q} b (trafo u N a).accept (trafo u N a).eval_from {Sum.inr q_} z
              theorem hd.remove {δ : Type} [u : Fintype δ] {N : NA' (Fin alpha) δ} {a : Fin alpha} {y : List (Fin alpha)} :
              have M := trafo u N a; ∀ (q : δ), M.accept M.eval_from {Sum.inr q} yN.accept N.eval_from {q} y
              theorem hd.accepts_only {δ : Type} [u : Fintype δ] {N : NA' (Fin alpha) δ} {a : Fin alpha} {t : List (Fin alpha)} :
              (trafo u N a).accepts t∃ (s : List (Fin alpha)), t = a :: s N.accepts s
              theorem hd.regex {δ : Type} {u : Fintype δ} {N : NA' (Fin alpha) δ} {a : Fin alpha} (t : List (Fin alpha)) :
              (trafo u N a).accepts t ∃ (s : List (Fin alpha)), t = a :: s N.accepts s
              def accepts_exactly {δ : Type} (M : NA' (Fin alpha) δ) (x : List (Fin alpha)) :
              Equations
              Instances For
                Equations
                Instances For
                  theorem A_N_word_finite_prelim (x : List (Fin alpha)) :
                  ∃ (δ : Type) (x_1 : Fintype δ) (M : NA' (Fin alpha) δ), accepts_exactly M x
                  theorem A_N_word_finite (x : List (Fin alpha)) :
                  ∃ (n : ), A_N_word_bounded_by x n
                  noncomputable def A_N_word :
                  Equations
                  Instances For
                    theorem nonempty_of_mem {α : Type} {a : α} {s : Finset α} :
                    a ss.Nonempty
                    theorem accepts_exactly_hd {δ : Type} (N : NA' (Fin alpha) δ) (y : List (Fin alpha)) (a : Fin alpha) (u : Fintype δ) (hae : accepts_exactly N y) :
                    have M := hd.trafo u N a; accepts_exactly M (a :: y)