Documentation

Cedar.Thm.SymCC.Term.PE

Basic properties of partial evaluation of terms #

This file proves basic lemmas about the Factory functions on terms when applied to literal (concrete) inputs. #

PE for Factory.not #

PE for Factory.and #

PE for Factory.or #

PE for Factory.implies #

PE for Factory.ite #

PE for Factory.eq #

PE for Factory.option.get and Factory.option.get' #

PE for Factory.isNone and Factory.isSome #

PE for Factory.ifSome #

theorem Cedar.Thm.pe_ifSome_ok_get_eq_get' {εs : SymCC.SymEntities} (I : SymCC.Interpretation) {t₁ t₂ t₃ : SymCC.Term} {ty₁ ty₂ : SymCC.TermType} (f : SymCC.TermSymCC.Result SymCC.Term) (hwφ₁ : SymCC.Term.WellFormedLiteral εs t₁ t₁.typeOf = ty₁.option) (hty₂ : t₂.typeOf = ty₂.option) (hty₃ : t₃.typeOf = ty₂.option) (hok₂ : f (SymCC.Factory.option.get' I t₁) = Except.ok t₂) (hok₃ : f (SymCC.Factory.option.get t₁) = Except.ok t₃) :
theorem Cedar.Thm.pe_ifSome_ok_get_eq_get'₂ {εs : SymCC.SymEntities} (I : SymCC.Interpretation) {t₁ t₂ t₃ t₄ : SymCC.Term} {ty₁ ty₂ ty₃ : SymCC.TermType} (f : SymCC.TermSymCC.TermSymCC.Result SymCC.Term) (hwφ₁ : SymCC.Term.WellFormedLiteral εs t₁ t₁.typeOf = ty₁.option) (hwφ₂ : SymCC.Term.WellFormedLiteral εs t₂ t₂.typeOf = ty₂.option) (hty₃ : t₃.typeOf = ty₃.option) (hty₄ : t₄.typeOf = ty₃.option) (hok₃ : f (SymCC.Factory.option.get' I t₁) (SymCC.Factory.option.get' I t₂) = Except.ok t₃) (hok₄ : f (SymCC.Factory.option.get t₁) (SymCC.Factory.option.get t₂) = Except.ok t₄) :

PE for Factory.anyNone and Factory.ifAllSome #

PE for Factory.ifFalse and Factory.ifTrue #

PE for Factory.app #

PE for Factory bitvector operators #

PE for Factory string, set, and record operators #

PE for Factory extension operators #