Documentation

Cedar.Thm.SymCC.Term.TypeOf

Properties of Terms #

This file contains lemmas about the typeOf function on Terms.

@[simp]
theorem Cedar.Thm.typeOf_term_set {elts : Data.Set SymCC.Term} {eltsTy : SymCC.TermType} :
(SymCC.Term.set elts eltsTy).typeOf = eltsTy.set
theorem Cedar.Thm.typeOf_term_record_attr_value_eq {r₁ r₂ : Data.Map Spec.Attr SymCC.Term} {rty : Data.Map Spec.Attr SymCC.TermType} {a : Spec.Attr} {t₁ t₂ : SymCC.Term} (hty₁ : (SymCC.Term.record r₁).typeOf = SymCC.TermType.record rty) (hty₂ : (SymCC.Term.record r₂).typeOf = SymCC.TermType.record rty) (ht₁ : r₁.find? a = some t₁) (ht₂ : r₂.find? a = some t₂) :
t₁.typeOf = t₂.typeOf
@[simp]
theorem Cedar.Thm.typeOf_term_app {ty : SymCC.TermType} {op : SymCC.Op} {args : List SymCC.Term} :
(SymCC.Term.app op args ty).typeOf = ty
theorem Cedar.Thm.typeOf_option_wf_terms_is_wf {εs : SymCC.SymEntities} {hd : SymCC.Term} {tl ts : List SymCC.Term} {ty : SymCC.TermType} :
ts = hd :: tl(∀ (t : SymCC.Term), t tsSymCC.Term.WellFormed εs t)(∀ (t : SymCC.Term), t tst.typeOf = ty.option)SymCC.TermType.WellFormed εs ty