Documentation

Cvc.Sys.Unroller

structure Cvc.Symbols.Unroller {Struct : Symbols.Repr} (State : Symbols Struct) (length : Nat) :

Unroller for a trace of length states.

Instances For
    def Cvc.Symbols.Unroller.mk {Struct : Symbols.Repr} [State : Symbols Struct] (idents : Idents) (init : StatePred) (step : StateRel) :
    State.Unroller 0

    Constructs an unroller for 0 states.

    Equations
    Instances For
      @[reducible, inline]
      abbrev Cvc.Symbols.Unroller.length {Struct✝ : Symbols.Repr} {State : Symbols Struct✝} {length : Nat} :
      State.Unroller lengthNat

      Number of states in an unroller's trace.

      Equations
      Instances For
        @[reducible, inline]
        abbrev Cvc.Symbols.Unroller.Idx {Struct✝ : Symbols.Repr} {State : Symbols Struct✝} {length : Nat} :
        State.Unroller lengthType

        Type of legal state indices in an unroller.

        Equations
        Instances For
          @[reducible, inline]
          abbrev Cvc.Symbols.Unroller.CexTrace {Struct✝ : Symbols.Repr} {State : Symbols Struct✝} {length : Nat} (sys : State.Unroller length) :

          Alias for a trace of symbol-values.

          Equations
          Instances For
            def Cvc.Symbols.Unroller.getTermsAt {Struct✝ : Symbols.Repr} {State : Symbols Struct✝} {length : Nat} (sys : State.Unroller length) (i : sys.Idx) :
            TermsAt i

            Retrieves the symbol-terms at some index.

            Equations
            Instances For
              def Cvc.Symbols.Unroller.extractCex {Struct✝ : Symbols.Repr} {State : Symbols Struct✝} {length : Nat} (sys : State.Unroller length) :

              Extracts a trace of state-values in a sat context.

              Equations
              Instances For
                @[reducible, inline]
                abbrev Cvc.Symbols.Unroller.idx0 {Struct✝ : Symbols.Repr} {State : Symbols Struct✝} {k : Nat} (sys : State.Unroller k.succ) :
                sys.Idx

                Index 0 as a legal index for a non-empty unroller.

                Equations
                Instances For
                  @[reducible, inline]
                  abbrev Cvc.Symbols.Unroller.idxLast {Struct✝ : Symbols.Repr} {State : Symbols Struct✝} {k : Nat} (sys : State.Unroller k.succ) :
                  sys.Idx

                  Last index of a non-empty unroller.

                  Equations
                  Instances For
                    @[reducible, inline]
                    abbrev Cvc.Symbols.Unroller.getTerms0 {Struct✝ : Symbols.Repr} {State : Symbols Struct✝} {k : Nat} (sys : State.Unroller k.succ) :

                    Retrieves the symbol-terms at index 0 in a non-empty unroller.

                    Equations
                    Instances For
                      @[reducible, inline]
                      abbrev Cvc.Symbols.Unroller.getTermsLast {Struct✝ : Symbols.Repr} {State : Symbols Struct✝} {k : Nat} (sys : State.Unroller k.succ) :

                      Retrieves the symbol-terms at the highest index in a non-empty unroller.

                      Equations
                      Instances For
                        def Cvc.Symbols.Unroller.checkSatAnd {Struct✝ : Symbols.Repr} {State : Symbols Struct✝} {m : TypeType} {α : Type} {k : Nat} (sys : State.Unroller k.succ) [Monad m] (init : Bool) (assuming : Array Formula := #[]) (ifSat : Smt.SatT m α := Smt.Sat.unexpected) (ifUnsat : Smt.UnsatT m α := Smt.Unsat.unexpected) (ifUnknown : Smt.UnknownT m α := Smt.Unknown.unexpected) :
                        SmtT m α

                        Smt.checkSatAnd with the init flag (de)activating that state 0 is initial.

                        Equations
                        • One or more equations did not get rendered due to their size.
                        Instances For
                          def Cvc.Symbols.Unroller.checkSatBaseAnd {Struct✝ : Symbols.Repr} {State : Symbols Struct✝} {m : TypeType} {α : Type} {k : Nat} (sys : State.Unroller k.succ) [Monad m] (assuming : Array Formula := #[]) (ifSat : Smt.SatT m α := Smt.Sat.unexpected) (ifUnsat : Smt.UnsatT m α := Smt.Unsat.unexpected) (ifUnknown : Smt.UnknownT m α := Smt.Unknown.unexpected) :
                          SmtT m α

                          Performs a base check, i.e. state 0 is initial.

                          Equations
                          Instances For
                            def Cvc.Symbols.Unroller.checkSatStepAnd {Struct✝ : Symbols.Repr} {State : Symbols Struct✝} {m : TypeType} {α : Type} {k : Nat} (sys : State.Unroller k.succ) [Monad m] (assuming : Array Formula := #[]) (ifSat : Smt.SatT m α := Smt.Sat.unexpected) (ifUnsat : Smt.UnsatT m α := Smt.Unsat.unexpected) (ifUnknown : Smt.UnknownT m α := Smt.Unknown.unexpected) :
                            SmtT m α

                            Performs a step check, i.e. state 0 is not initial.

                            Equations
                            Instances For
                              def Cvc.Symbols.Unroller.findCex? {Struct✝ : Symbols.Repr} {State : Symbols Struct✝} {k : Nat} (sys : State.Unroller k.succ) (init : Bool) (assuming : Array Formula := #[]) :

                              Performs a Unroller.checkSatAnd and extracts a cex trace if sat.

                              • init: controls whether state 0 must be an initial state.
                              Equations
                              Instances For
                                def Cvc.Symbols.Unroller.unroll {Struct✝ : Symbols.Repr} {State : Symbols Struct✝} {length : Nat} (sys : State.Unroller length) :
                                Smt (TermsAt length × State.Unroller length.succ)

                                Unrolls one state further.

                                Equations
                                • One or more equations did not get rendered due to their size.
                                Instances For
                                  def Cvc.Symbols.Unroller.unroll' {Struct✝ : Symbols.Repr} {State : Symbols Struct✝} {length : Nat} (sys : State.Unroller length) :
                                  Smt (State.Unroller length.succ)

                                  Unrolls one state further.

                                  Equations
                                  Instances For