Definition: co-value
co-value() ==  corec(L.atomic-values() ⋃ (L × L) ⋃ (L + L))
Lemma: co-value_wf
co-value() ∈ Type
Lemma: continuous-monotone-co-value
ContinuousMonotone(T.atomic-values() ⋃ (T × T) ⋃ (T + T))
Lemma: co-value-ext
co-value() ≡ atomic-values() ⋃ (co-value() × co-value()) ⋃ (co-value() + co-value())
Definition: co-value-height
co-value-height(t)
==r if t is a pair then let a,b = t 
                        in 1 + co-value-height(a) + co-value-height(b) otherwise if t is inl then 1
                                                                                 + co-value-height(outl(t))
                                                                                 else if t is inr then 1
                                                                                      + co-value-height(outr(t))
                                                                                      else 0
Lemma: co-value-height_wf
∀[t:co-value()]. (co-value-height(t) ∈ partial(ℕ))
Definition: rec-value
rec-value() ==  {v:co-value()| (co-value-height(v))↓} 
Lemma: rec-value_wf
rec-value() ∈ Type
Definition: rec-value-height
rec-value-height(v) ==  co-value-height(v)
Lemma: rec-value-height_wf
∀[v:rec-value()]. (rec-value-height(v) ∈ ℕ)
Lemma: rec-value-ext
rec-value() ≡ atomic-values() ⋃ (rec-value() × rec-value()) ⋃ (rec-value() + rec-value())
Lemma: atomic-values-evalall
∀[x:Base]. (evalall(x))↓ supposing x ∈ atomic-values()
Lemma: rec-value-evalall
∀[x:Base]. uiff((evalall(x))↓;x ∈ rec-value())
Lemma: rec-value-valueall-type
valueall-type(rec-value())
Lemma: rec-value-value-type
value-type(rec-value())
Lemma: rec-value_subype_base
rec-value() ⊆r Base
Lemma: rec-value-list-is-rec-value
∀[x:rec-value() List]. (x ∈ rec-value())
Lemma: evalall-append-implies-list
∀[a,b:Base].  a ∈ rec-value() List supposing (evalall(a @ b))↓
Lemma: evalall-append-implies-rec-value
∀[a,b:Base].  b ∈ rec-value() supposing (evalall(a @ b))↓
Home
Index