\n
## Table: Universal Properties
### Overview
The image presents a table detailing Universal Properties, categorized into "Cast Universal Properties" and "Type Universal Properties". The table uses logical symbols and mathematical notation to define relationships between types and functions. The table is divided into columns representing "Bound", "Best", and additional columns specific to Type Universal Properties (β, η). A section at the bottom details "Error Properties" and "StkStrict".
### Components/Axes
The table has the following structure:
* **Header:** Divided into two main sections: "Cast Universal Properties" and "Type Universal Properties".
* **Rows:** Represent different types or operations (+, 0, ×, 1, U, F, →, & , T, ERRor, StkStrict).
* **Columns:**
* "Up" and "Down" (under Cast Universal Properties)
* "Bound", "Best" (under Cast Universal Properties)
* "β", "η" (under Type Universal Properties)
* **Footer:** Contains "Error Properties" and "StkStrict" sections.
### Detailed Analysis or Content Details
**Cast Universal Properties:**
* **Up:** `x: A ⊢ x ∈ (A' ↔ A) x: A ⊢ x ∈ A' ↔ (A' ↔ A) x ∈ A'`
* **Down:** `•: B' ⊢ (B ↔ B') •: B ⊢ B' •: B ⊢ (B ↔ B') •: B`
* **Retract Axiom:** `x: A ⊢ (FA ∈ E?)ret(⟨? A⟩x) ⊆ ret x: FA x: UB ⊢ (B ⊆ ¿)(force (U¿ ⊆ UB)x) ⊆ force x: B`
* **Bound:** `x: A ⊢ x ∈ A' ↔ (A' ↔ A) x ∈ A'`
* **Best:** `x ∈ A' ↔ (A' ↔ A) x ∈ A'`
**Type Universal Properties:**
* **+:** `case inL V{x1.E1 | ...} ∃E [V[x]] case inr V{x2.E2} ∃E [V[x2]]`
* **0:** `E ∃E case x{0.E} : T where x: A₁ + A₂ ∈ E : T`
* **×:** `split (V₁, V₂) to (x₁, x₂).E ∃E [V[x₁, V₂]] E ∃E split x to (x₁, x₂).E[x₁, x₂]` where `x: A₁ × A₂ + E : T`
* **1:** `split (0) to .E ∃E E x: 1 + E ∃E split x to (0).E[0] : T where x: 1 + E : T`
* **U:** `force thunk M ∃E M`
* **F:** `bind x ← ret V; M ∃E M[V[x]]`
* **→:** `(λx.A M)V ∃E M[V/x]`
* **&:** `π(π → M') ∃E M' π(π → M') ∃E M'`
* **T:** `•: T + • ∃E {}: T`
**Error Properties:**
* `Γ ⊢ + ⊢ U ∈ M' : B ⊆ B'`
* `Γ ⊢ + ⊢ U ∈ M' : B ⊆ B'`
**StkStrict:**
* `Γ ⊢ x: B + S : B'`
* `Γ ⊢ x: S[UB] ⊆ U : B'`
### Key Observations
The table is densely packed with logical notation. The "Type Universal Properties" section appears to define how different type constructors (like +, 0, ×, etc.) interact with universal quantification (∃E) and substitution. The "Error Properties" and "StkStrict" sections seem to define constraints or conditions related to error handling and stack safety. The notation `∃E` appears frequently, suggesting a focus on existential quantification over environments.
### Interpretation
This table likely comes from a formal semantics or type theory context, possibly related to a programming language or logic system. It defines the universal properties of various type constructors and operations. These properties are crucial for reasoning about the behavior of programs and ensuring type safety. The "Cast Universal Properties" section deals with type conversions and relationships, while the "Type Universal Properties" section defines the fundamental behavior of type-forming operations. The "Error Properties" and "StkStrict" sections are likely related to ensuring the correctness and safety of the system, particularly in the presence of errors or stack overflows. The notation is highly specialized and requires a strong background in formal methods to fully understand. The table is a precise specification of the rules governing type manipulation and evaluation within the system.