RefinementTypes.Syntax
RefinementTypes.Eval
RefinementTypes.Subst
RefinementTypes.SubstLemmas
- Substitution Lemmas
- Renaming extensionality
- Up extensionality helpers
- Substitution extensionality
- Renaming identity
- Substitution identity
- Renaming-substitution connection
- Renaming composition
- Substitution after renaming
- Renaming after substitution
- Substitution composition
- Iterated up_tm_tm lemmas
- Term-only shift substitution
RefinementTypes.SubstExamples
RefinementTypes.Tactics
RefinementTypes.ListLemmas
RefinementTypes.EvalLemmas
RefinementTypes.EvalShiftLemmas
RefinementTypes.EvalSubstLemmas
RefinementTypes.EvalTypeErasure
RefinementTypes.Interp
RefinementTypes.InterpShiftLemmas
RefinementTypes.InterpSubstLemmas
RefinementTypes.Wf
RefinementTypes.WfLemmas
RefinementTypes.Positivity
RefinementTypes.PositivityLemmas
RefinementTypes.Avoid
RefinementTypes.AvoidLemmas
RefinementTypes.FirstOrder
RefinementTypes.FirstOrderLemmas
RefinementTypes.SemanticImplies
RefinementTypes.SemanticSubtyping
- Semantic Subtyping (§3.5, Figures 8 and 10)
- The judgment (Figure 8)
- Reflexivity and transitivity
- Function and universal type subtyping rules
- Sigma type subtyping rule
- Union type subtyping rules
- Intersection type subtyping rules
- Refinement type subtyping rules
- Top and Bottom type subtyping rules
- Type variable bound extraction rules
- Recursive type subtyping rules
RefinementTypes.SemanticTyping
RefinementTypes.SyntacticSubtyping
RefinementTypes.SyntacticTyping
RefinementTypes.Adequacy
RefinementTypes.AlgorithmicTyping
RefinementTypes.Examples
RefinementTypes.ExamplesCollect
RefinementTypes.ExamplesPartialSoundness
- Partial Correctness and Divergent Predicates (§2.3, Lemmas 2.1–2.3)
- 0a. Bot and {T | false} have the same interpretation, for any T.
- 0b. Unit and {Unit | true} have the same interpretation.
- 1a. No value inhabits Bot.
- 1b. No converging term has type Bot.
- 2. {Unit | true} and {Unit | diverge} have the same interpretation.
- 3a. {Unit | diverge} is not a semantic subtype of {Unit | false}
- 3b. {Unit | diverge && false} is not a subtype of {Unit | false}.
- Helper: evaluation of t && b in terms of the evaluation of t.
- 4. Entailment Γ ⊨ t && true ⟹ t holds for arbitrary t
- 5a. Entailment Γ ⊨ t && false ⟹ false fails for diverging t.
- 5b. Entailment Γ ⊨ t && false ⟹ false holds when t terminates
- 6. {x: A | diverge} and {x: A | true} have the same interpretation,
- 7. No converging term has type {x: A | false}, for any A