Documentation

DY.Trace.Basic

inductive DY.Trace (α : Type) :
Instances For
    inductive DY.Trace.le {α : Type} :
    Trace αTrace αProp
    Instances For
      @[instance_reducible]
      instance DY.instLETrace {α : Type} :
      LE (Trace α)
      Equations
      theorem DY.Trace.induct_le {α : Type} {tr1 : Trace α} {motive : (tr2 : Trace α) → tr1 tr2Prop} {tr2 : Trace α} (t : tr1 tr2) (equal : motive tr1 ) (extend : ∀ (tr2 : Trace α) (e : α) (a : tr1 tr2), motive tr2 amotive (tr2.snoc e) ) :
      motive tr2 t
      theorem DY.Trace.le_refl {α : Type} (tr : Trace α) :
      tr tr
      theorem DY.Trace.le_trans {α : Type} (tr1 tr2 tr3 : Trace α) :
      tr1 tr2tr2 tr3tr1 tr3
      class DY.TraceEntryHas (EntryT α : Type) :
      • inj : EntryTα
      • proj : αOption EntryT
      • inj_proj_eq (x : α) (y : EntryT) : (proj x = some y) = (x = inj y)
      Instances
        def DY.Trace.append {EntryT α : Type} [TraceEntryHas EntryT α] (tr : Trace α) (entry : EntryT) :
        Equations
        Instances For
          theorem DY.Trace.append_le {EntryT α : Type} [TraceEntryHas EntryT α] (tr : Trace α) (entry : EntryT) :
          tr tr.append entry
          def DY.Trace.length {α : Type} (tr : Trace α) :
          Equations
          Instances For
            theorem DY.Trace.length_le {α : Type} (tr1 tr2 : Trace α) :
            tr1 tr2tr1.length tr2.length
            def DY.Trace.prefix {α : Type} (tr : Trace α) (i : Nat) :
            Equations
            Instances For
              theorem DY.Trace.prefix_length {α : Type} (tr : Trace α) (i : Nat) :
              (tr.prefix i).length = min tr.length i
              theorem DY.Trace.prefix_le_self {α : Type} (tr : Trace α) (i : Nat) :
              tr.prefix i tr
              theorem DY.Trace.prefix_le_prefix {α : Type} (tr : Trace α) (i1 i2 : Nat) :
              i1 i2tr.prefix i1 tr.prefix i2
              @[simp]
              theorem DY.Trace.prefix_length_eq_self {α : Type} (tr : Trace α) :
              tr.prefix tr.length = tr
              theorem DY.Trace.prefix_ge_length_eq_self {α : Type} (tr : Trace α) (i : Nat) :
              tr.length itr.prefix i = tr
              theorem DY.Trace.le_imp_prefix_eq {α : Type} (tr1 tr2 : Trace α) :
              tr1 tr2tr2.prefix tr1.length = tr1
              theorem DY.Trace.le_imp_prefix_le_length_eq {α : Type} (tr1 tr2 : Trace α) (i : Nat) :
              tr1 tr2i tr1.lengthtr1.prefix i = tr2.prefix i
              theorem DY.Trace.prefix_prefix_le {α : Type} (tr1 tr2 : Trace α) (i : Nat) :
              tr1 tr2tr1.prefix i tr2.prefix i
              def DY.Trace.at {α : Type} (tr : Trace α) (i : Nat) (h_i : i < tr.length) :
              α
              Equations
              Instances For
                theorem DY.Trace.at_le {α : Type} (tr1 tr2 : Trace α) (i : Nat) (h_i : i < tr1.length) (h_le : tr1 tr2) :
                tr1.at i h_i = tr2.at i
                def DY.Trace.at? {EntryT α : Type} [TraceEntryHas EntryT α] (tr : Trace α) (i : Nat) :
                Option EntryT
                Equations
                Instances For
                  theorem DY.Trace.at?_le {EntryT α : Type} [TraceEntryHas EntryT α] (tr1 tr2 : Trace α) (i : Nat) :
                  tr1 tr2match tr1.at? i with | some res => tr2.at? i = some res | none => True
                  theorem DY.Trace.at?_append {EntryT α : Type} [TraceEntryHas EntryT α] (tr : Trace α) (entry : EntryT) :
                  (tr.append entry).at? tr.length = some entry
                  theorem DY.Trace.at?_eq_some {EntryT α : Type} [TraceEntryHas EntryT α] (tr : Trace α) (i : Nat) (entry : EntryT) :
                  (tr.at? i = some entry) = (h_i : i < tr.length), tr.at i h_i = TraceEntryHas.inj entry
                  theorem DY.Trace.at?_eq_some_implies_length_le {EntryT α : Type} [TraceEntryHas EntryT α] (tr : Trace α) (i : Nat) :
                  match tr.at? i with | some val => i < tr.length | none => True
                  Instances
                    @[reducible, inline]
                    Equations
                    Instances For
                      Instances
                        class DY.ExecTraceTypes.HasStep (ExecEntryT1 : Type) (ExecEntryT2 : semiOutParam Type) :
                        • inj : ExecEntryT1ExecEntryT2
                        • proj : ExecEntryT2Option ExecEntryT1
                        • inj_proj_eq (x : ExecEntryT2) (y : ExecEntryT1) : (proj x = some y) = (x = inj y)
                        Instances
                          @[instance_reducible]
                          Equations
                          @[instance_reducible]
                          instance DY.instExecTraceTypesHasStep [ExecTraceTypes] (ExecEntryT1 ExecEntryT2 : Type) [ExecTraceTypes.HasStep ExecEntryT1 ExecEntryT2] [ExecTraceTypes.Has ExecEntryT2] :
                          ExecTraceTypes.Has ExecEntryT1
                          Equations
                          • One or more equations did not get rendered due to their size.
                          @[instance_reducible]
                          instance DY.instTraceEntryHasEntryOfHas [ExecTraceTypes] (ExecEntryT : Type) [inst : ExecTraceTypes.Has ExecEntryT] :
                          Equations
                          structure DY.ExecTraceTypes.combine {n : Nat} (ExecTypes : Fin nType) :
                          • id : Fin n
                          • entry : ExecTypes self.id
                          Instances For
                            @[instance_reducible]
                            instance DY.instExecTraceTypesCombineHasStep {n : Nat} (Types : Fin nType) (id : Fin n) :
                            Equations
                            • One or more equations did not get rendered due to their size.