Documentation

Cedar.Thm.SymCC.Term.WF

Well-formed terms and factory functions #

This file proves basic lemmas about well-formedness of terms and Factory functions. #

Equations
Instances For
    theorem Cedar.Thm.wf_term_app_ite_exact {εs : SymCC.SymEntities} {t₁ t₂ t₃ : SymCC.Term} {ty : SymCC.TermType} (h₁ : SymCC.Term.WellFormed εs (SymCC.Term.app SymCC.Op.ite [t₁, t₂, t₃] ty)) :
    WFArg εs t₁ SymCC.TermType.bool WFArg εs t₂ ty WFArg εs t₃ ty
    theorem Cedar.Thm.wf_arg {εs : SymCC.SymEntities} {t₁ : SymCC.Term} (h₁ : SymCC.Term.WellFormed εs t₁) (t : SymCC.Term) :
    t [t₁]SymCC.Term.WellFormed εs t
    theorem Cedar.Thm.wf_args {εs : SymCC.SymEntities} {t₁ t₂ : SymCC.Term} (h₁ : SymCC.Term.WellFormed εs t₁) (h₂ : SymCC.Term.WellFormed εs t₂) (t : SymCC.Term) :
    t [t₁, t₂]SymCC.Term.WellFormed εs t
    theorem Cedar.Thm.wf_arg' {εs : SymCC.SymEntities} {t₁ : SymCC.Term} (h₁ : ∀ (t : SymCC.Term), t [t₁]SymCC.Term.WellFormed εs t) :
    theorem Cedar.Thm.wf_args' {εs : SymCC.SymEntities} {t₁ t₂ : SymCC.Term} (h : ∀ (t : SymCC.Term), t [t₁, t₂]SymCC.Term.WellFormed εs t) :
    theorem Cedar.Thm.wf_setOf {εs : SymCC.SymEntities} {ts : List SymCC.Term} {ty : SymCC.TermType} (h₁ : ∀ (t : SymCC.Term), t tsSymCC.Term.WellFormed εs t) (h₂ : ∀ (t : SymCC.Term), t tst.typeOf = ty) (h₃ : SymCC.TermType.WellFormed εs ty) :
    theorem Cedar.Thm.wf_eq {εs : SymCC.SymEntities} {t₁ t₂ : SymCC.Term} (h₁ : SymCC.Term.WellFormed εs t₁) (h₂ : SymCC.Term.WellFormed εs t₂) (h₃ : t₁.typeOf = t₂.typeOf) :
    theorem Cedar.Thm.wf_ite {εs : SymCC.SymEntities} {t₁ t₂ t₃ : SymCC.Term} (h₁ : SymCC.Term.WellFormed εs t₁) (h₂ : SymCC.Term.WellFormed εs t₂) (h₃ : SymCC.Term.WellFormed εs t₃) (h₄ : t₁.typeOf = SymCC.TermType.bool) (h₅ : t₂.typeOf = t₃.typeOf) :
    SymCC.Term.WellFormed εs (SymCC.Factory.ite t₁ t₂ t₃) (SymCC.Factory.ite t₁ t₂ t₃).typeOf = t₂.typeOf
    theorem Cedar.Thm.wf_foldr {α : Type u_1} {εs : SymCC.SymEntities} {xs : List α} {t : SymCC.Term} {f : αSymCC.TermSymCC.Term} (h₁ : SymCC.Term.WellFormed εs t) (h₂ : ∀ (x : α) (t' : SymCC.Term), x xsSymCC.Term.WellFormed εs t't'.typeOf = t.typeOfSymCC.Term.WellFormed εs (f x t') (f x t').typeOf = t.typeOf) :
    theorem Cedar.Thm.wf_set_subset {εs : SymCC.SymEntities} {t₁ t₂ : SymCC.Term} {ty : SymCC.TermType} (h₁ : SymCC.Term.WellFormed εs t₁) (h₂ : SymCC.Term.WellFormed εs t₂) (h₃ : t₁.typeOf = ty.set) (h₄ : t₂.typeOf = ty.set) :
    theorem Cedar.Thm.wf_set_inter {εs : SymCC.SymEntities} {t₁ t₂ : SymCC.Term} {ty : SymCC.TermType} (h₁ : SymCC.Term.WellFormed εs t₁) (h₂ : SymCC.Term.WellFormed εs t₂) (h₃ : t₁.typeOf = ty.set) (h₄ : t₂.typeOf = ty.set) :
    theorem Cedar.Thm.wf_ipaddr_inRange {εs : SymCC.SymEntities} {w : Nat} {range : SymCC.TermSymCC.Term × SymCC.Term} {t₁ t₂ : SymCC.Term} (h₁ : WFIPRange εs (range t₁) w) (h₂ : WFIPRange εs (range t₂) w) :
    theorem Cedar.Thm.wf_ipaddr_inRangeV {εs : SymCC.SymEntities} {w : Nat} {isIp : SymCC.TermSymCC.Term} {rangeV : SymCC.TermSymCC.Term × SymCC.Term} {t₁ t₂ : SymCC.Term} (h₁ : WFIPRange εs (rangeV t₁) w) (h₂ : WFIPRange εs (rangeV t₂) w) (h₃ : SymCC.Term.WellFormed εs (isIp t₁) (isIp t₁).typeOf = SymCC.TermType.bool) (h₄ : SymCC.Term.WellFormed εs (isIp t₂) (isIp t₂).typeOf = SymCC.TermType.bool) :
    theorem Cedar.Thm.wf_tags_hasTag {εs : SymCC.SymEntities} {τs : SymCC.SymTags} {t₁ t₂ : SymCC.Term} {ety : Spec.EntityType} (hwτ : SymCC.SymTags.WellFormed εs ety τs) (hw₁ : SymCC.Term.WellFormed εs t₁) (hw₂ : SymCC.Term.WellFormed εs t₂) (hty₁ : t₁.typeOf = SymCC.TermType.entity ety) (hty₂ : t₂.typeOf = SymCC.TermType.string) :
    SymCC.Term.WellFormed εs (τs.hasTag t₁ t₂) (τs.hasTag t₁ t₂).typeOf = SymCC.TermType.bool
    theorem Cedar.Thm.wf_tags_getTag! {εs : SymCC.SymEntities} {τs : SymCC.SymTags} {t₁ t₂ : SymCC.Term} {ety : Spec.EntityType} (hwτ : SymCC.SymTags.WellFormed εs ety τs) (hw₁ : SymCC.Term.WellFormed εs t₁) (hw₂ : SymCC.Term.WellFormed εs t₂) (hty₁ : t₁.typeOf = SymCC.TermType.entity ety) (hty₂ : t₂.typeOf = SymCC.TermType.string) :
    SymCC.Term.WellFormed εs (τs.getTag! t₁ t₂) (τs.getTag! t₁ t₂).typeOf = τs.vals.outType
    theorem Cedar.Thm.wf_tags_getTag {εs : SymCC.SymEntities} {τs : SymCC.SymTags} {t₁ t₂ : SymCC.Term} {ety : Spec.EntityType} (hwτ : SymCC.SymTags.WellFormed εs ety τs) (hw₁ : SymCC.Term.WellFormed εs t₁) (hw₂ : SymCC.Term.WellFormed εs t₂) (hty₁ : t₁.typeOf = SymCC.TermType.entity ety) (hty₂ : t₂.typeOf = SymCC.TermType.string) :
    SymCC.Term.WellFormed εs (τs.getTag t₁ t₂) (τs.getTag t₁ t₂).typeOf = τs.vals.outType.option