Documentation

Cedar.SymCC.Op

This file defines the operators on Cedar Terms. See Term.lean for the definition of the Term language.

There are three kinds of term operators:

  1. Operators that map directly to an underlying SMT theory
  2. Operators for constructing and destructing core ADTs that are lowered to SMT by a trusted code generation pass. This also includes core operators whose semantics we don't model in the Term language (but rather directly in SMT), such as like.
  3. Operators for destructing extension ADTs, also lowered by the trusted pass.

We separate extension operators into their own ADT (ExtOp) to make it easier to add more such operators in the future in a way that's fairly independent of the other operators.

We embed SMT and core ADT operators directly into the top-level Op ADT, to simplify pattern matching against them within rewrite rules.

Instances For
    Instances For
      inductive Cedar.SymCC.Op :
      Instances For
        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          def Cedar.SymCC.instDecidableEqUUF.decEq (x✝ x✝¹ : UUF) :
          Decidable (x✝ = x✝¹)
          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              Equations
              Instances For
                def Cedar.SymCC.instDecidableEqOp.decEq (x✝ x✝¹ : Op) :
                Decidable (x✝ = x✝¹)
                Equations
                • One or more equations did not get rendered due to their size.
                Instances For
                  def Cedar.SymCC.UUF.lt (uf uf' : UUF) :
                  Equations
                  Instances For
                    Equations
                    instance Cedar.SymCC.UUF.decLt (x y : UUF) :
                    Decidable (x < y)
                    Equations
                    instance Cedar.SymCC.ExtOp.decLt (x y : ExtOp) :
                    Decidable (x < y)
                    Equations
                    Equations
                    Instances For
                      Equations
                      instance Cedar.SymCC.Op.decLt (x y : Op) :
                      Decidable (x < y)
                      Equations