Documentation

Cedar.Thm.SymCC.Compiler.WF

This file proves that both compile and evaluate preserve well-formedness. #

theorem Cedar.Thm.compileInₑ.isIn_wf {t₁ t₂ : SymCC.Term} {ancs? : Option SymCC.UnaryFunction} {ety₁ ety₂ : Spec.EntityType} {εs : SymCC.SymEntities} (hwε : εs.WellFormed) (hw₁ : SymCC.Term.WellFormed εs t₁) (hty₁ : t₁.typeOf = SymCC.TermType.entity ety₁) (hw₂ : SymCC.Term.WellFormed εs t₂) (hty₂ : t₂.typeOf = SymCC.TermType.entity ety₂) (ha : ancs? = εs.ancestorsOfType ety₁ ety₂) :
theorem Cedar.Thm.compileInₑ_wf {t₁ t₂ : SymCC.Term} {ancs? : Option SymCC.UnaryFunction} {ety₁ ety₂ : Spec.EntityType} {εs : SymCC.SymEntities} (hwε : εs.WellFormed) (hw₁ : SymCC.Term.WellFormed εs t₁) (hty₁ : t₁.typeOf = SymCC.TermType.entity ety₁) (hw₂ : SymCC.Term.WellFormed εs t₂) (hty₂ : t₂.typeOf = SymCC.TermType.entity ety₂) (ha : ancs? = εs.ancestorsOfType ety₁ ety₂) :
theorem Cedar.Thm.compileInₛ.isIn₂_wf {t ts : SymCC.Term} {ancs? : Option SymCC.UnaryFunction} {ety₁ ety₂ : Spec.EntityType} {εs : SymCC.SymEntities} (hwε : εs.WellFormed) (hw₁ : SymCC.Term.WellFormed εs t) (hty₁ : t.typeOf = SymCC.TermType.entity ety₁) (hw₂ : SymCC.Term.WellFormed εs ts) (hty₂ : ts.typeOf = (SymCC.TermType.entity ety₂).set) (ha : ancs? = εs.ancestorsOfType ety₁ ety₂) :
theorem Cedar.Thm.compileInₛ_wf {t ts : SymCC.Term} {ancs? : Option SymCC.UnaryFunction} {ety₁ ety₂ : Spec.EntityType} {εs : SymCC.SymEntities} (hwε : εs.WellFormed) (hw₁ : SymCC.Term.WellFormed εs t) (hty₁ : t.typeOf = SymCC.TermType.entity ety₁) (hw₂ : SymCC.Term.WellFormed εs ts) (hty₂ : ts.typeOf = (SymCC.TermType.entity ety₂).set) (ha : ancs? = εs.ancestorsOfType ety₁ ety₂) :
theorem Cedar.Thm.compileApp₂_wf {op₂ : Spec.BinaryOp} {t t₁ t₂ : SymCC.Term} {εs : SymCC.SymEntities} (hwε : εs.WellFormed) (hw₁ : SymCC.Term.WellFormed εs t₁) (hw₂ : SymCC.Term.WellFormed εs t₂) (hok : SymCC.compileApp₂ op₂ t₁ t₂ εs = Except.ok t) :