Documentation

Cedar.Thm.SymCC.Compiler.Invert

This file proves inversion lemmas for compile. #

Equations
  • One or more equations did not get rendered due to their size.
Instances For
    theorem Cedar.Thm.compile_ite_ok_implies {x₁ x₂ x₃ : Spec.Expr} {εnv : SymCC.SymEnv} {t : SymCC.Term} (h₁ : SymCC.compile (x₁.ite x₂ x₃) εnv = Except.ok t) :
    (t₁ : SymCC.Term), SymCC.compile x₁ εnv = Except.ok t₁ match t₁ with | (SymCC.Term.prim (SymCC.TermPrim.bool true)).some => Except.ok t = SymCC.compile x₂ εnv | (SymCC.Term.prim (SymCC.TermPrim.bool false)).some => Except.ok t = SymCC.compile x₃ εnv | t₁ => CompileIfSym t t₁ (SymCC.compile x₂ εnv) (SymCC.compile x₃ εnv)
    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      theorem Cedar.Thm.compile_and_ok_implies {x₁ x₂ : Spec.Expr} {εnv : SymCC.SymEnv} {t : SymCC.Term} (h₁ : SymCC.compile (x₁.and x₂) εnv = Except.ok t) :
      (t₁ : SymCC.Term), SymCC.compile x₁ εnv = Except.ok t₁ match t₁ with | (SymCC.Term.prim (SymCC.TermPrim.bool false)).some => t = t₁ | x => CompileAndSym t t₁ (SymCC.compile x₂ εnv)
      Equations
      • One or more equations did not get rendered due to their size.
      Instances For
        theorem Cedar.Thm.compile_or_ok_implies {x₁ x₂ : Spec.Expr} {εnv : SymCC.SymEnv} {t : SymCC.Term} (h₁ : SymCC.compile (x₁.or x₂) εnv = Except.ok t) :
        (t₁ : SymCC.Term), SymCC.compile x₁ εnv = Except.ok t₁ match t₁ with | (SymCC.Term.prim (SymCC.TermPrim.bool true)).some => t = t₁ | x => CompileOrSym t t₁ (SymCC.compile x₂ εnv)
        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
            theorem Cedar.Thm.compileGetTag_ok_implies {t t₁ t₂ : SymCC.Term} {tags : Option (Option SymCC.SymTags)} :
            SymCC.compileGetTag t₁ t₂ tags = Except.ok t (τs : SymCC.SymTags), tags = some (some τs) t = τs.getTag t₁ t₂
            theorem Cedar.Thm.compileInₑ.isIn_def {t₁ t₂ : SymCC.Term} {ancs? : Option SymCC.UnaryFunction} :
            isIn t₁ t₂ ancs? = SymCC.compileInₑ.isIn t₁ t₂ ancs?