Documentation

Regex.NFA.Basic

inductive Regex.NFA.Node :
Instances For
    Equations
    Instances For
      def Regex.NFA.instDecidableEqNode.decEq (x✝ x✝¹ : Node) :
      Decidable (x✝ = x✝¹)
      Equations
      Instances For
        @[always_inline]
        Equations
        Instances For
          def Regex.NFA.Node.inBounds (n : Node) (size : Nat) :
          Equations
          Instances For
            @[simp]
            theorem Regex.NFA.Node.inBounds.epsilon_iff {size next : Nat} :
            (epsilon next).inBounds size next < size
            @[simp]
            theorem Regex.NFA.Node.inBounds.anchor_iff {size next : Nat} {a : Data.Anchor} :
            (anchor a next).inBounds size next < size
            @[simp]
            theorem Regex.NFA.Node.inBounds.char_iff {size next : Nat} {c : Char} :
            (char c next).inBounds size next < size
            @[simp]
            theorem Regex.NFA.Node.inBounds.split_iff {size next₁ next₂ : Nat} :
            (split next₁ next₂).inBounds size next₁ < size next₂ < size
            @[simp]
            theorem Regex.NFA.Node.inBounds.save_iff {size offset next : Nat} :
            (save offset next).inBounds size next < size
            @[simp]
            theorem Regex.NFA.Node.inBounds.sparse_iff {size next : Nat} {cs : Data.Classes} :
            (sparse cs next).inBounds size next < size
            theorem Regex.NFA.Node.inBounds_of_inBounds_of_le {n : Node} {size size' : Nat} (h : n.inBounds size) (le : size size') :
            n.inBounds size'
            structure Regex.NFA :

            A NFA consists of an array of nodes. The starting node is the last node.

            The transition relation and accept nodes are embedded in the nodes themselves.

            Instances For
              theorem Regex.NFA.ext_iff {x y : NFA} :
              x = y x.nodes = y.nodes
              theorem Regex.NFA.ext {x y : NFA} (nodes : x.nodes = y.nodes) :
              x = y
              def Regex.instDecidableEqNFA.decEq (x✝ x✝¹ : NFA) :
              Decidable (x✝ = x✝¹)
              Equations
              Instances For
                Equations
                Instances For
                  Equations
                  def Regex.NFA.size (nfa : NFA) :
                  Equations
                  Instances For
                    def Regex.NFA.start (nfa : NFA) :
                    Equations
                    Instances For
                      def Regex.NFA.get (nfa : NFA) (i : Nat) (h : i < nfa.size) :
                      Equations
                      Instances For
                        instance Regex.NFA.instGetElemNatNodeLtSize :
                        GetElem NFA Nat Node fun (nfa : NFA) (i : Nat) => i < nfa.size
                        Equations
                        theorem Regex.NFA.get_eq_nodes_get (nfa : NFA) (i : Nat) (h : i < nfa.size) :
                        nfa[i] = nfa.nodes[i]
                        def Regex.NFA.maxTag (nfa : NFA) :
                        Equations
                        Instances For
                          theorem Regex.NFA.le_maxTag {tag next : Nat} (nfa : NFA) (i : Fin nfa.size) (eq : nfa[i] = Node.save tag next) :
                          tag nfa.maxTag
                          structure Regex.NFA.WellFormed (nfa : NFA) :
                          Instances For
                            theorem Regex.NFA.WellFormed.iff {nfa : NFA} :
                            nfa.WellFormed 0 < nfa.size ∀ (i : Nat) (h : i < nfa.size), nfa[i].inBounds nfa.size
                            theorem Regex.NFA.WellFormed.inBounds' {nfa : NFA} {node : Node} (wf : nfa.WellFormed) (i : Nat) (h : i < nfa.size) (hn : nfa[i] = node) :
                            node.inBounds nfa.size
                            theorem Regex.NFA.WellFormed.start_lt {nfa : NFA} (wf : nfa.WellFormed) :
                            nfa.start < nfa.size