Documentation

Cedar.SymCC.Term

This file defines the Cedar Term language, a strongly and simply typed IR to which we compile Cedar expressions. The Term language has a straightforward translation to SMTLib. It is designed to reduce the semantic gap between Cedar and SMTLib, and to faciliate proofs of soundness and completeness of the Cedar symbolic compiler.

Terms should not be created directly using Term constructors. Instead, they should be created using the factory functions defined in Factory.lean. The factory functions check the types of their arguments, perform optimizations, and ensure that applying them to well-formed terms results in well-formed terms.

See TermType.lean and Op.lean for definition of Term types and operators.

Instances For
    Instances For
      Instances For
        @[reducible, inline]
        abbrev Cedar.SymCC.Term.bitvec {n : Nat} (bv : BitVec n) :
        Equations
        Instances For
          @[reducible, inline]
          Equations
          Instances For
            @[irreducible]
            Equations
            Instances For
              @[irreducible]
              Equations
              Instances For
                Equations
                • One or more equations did not get rendered due to their size.
                Instances For
                  def Cedar.SymCC.instDecidableEqTermVar.decEq (x✝ x✝¹ : TermVar) :
                  Decidable (x✝ = x✝¹)
                  Equations
                  Instances For
                    Equations
                    • One or more equations did not get rendered due to their size.
                    Instances For
                      Equations
                      Instances For
                        Equations
                        • One or more equations did not get rendered due to their size.
                        Instances For
                          Equations
                          Instances For
                            Equations
                            Equations
                            @[irreducible]
                            Equations
                            Instances For
                              instance Cedar.SymCC.Term.decLt (x y : Term) :
                              Decidable (x < y)
                              Equations