progress 2025-06-25

This commit is contained in:
Ellen Arvidsson 2025-06-25 22:02:54 +02:00
parent 9669d4bba5
commit 429b59b2b3

85
docs/about/progress.md Normal file
View file

@ -0,0 +1,85 @@
# draft of presentation
## sappho short
- sappho types intro
- a quick look at msph and spho
### The types
We take a look at the grammar for sappho types
```cmath
s, t ::= s | t (disjunction, a.k.a. union)
| s & t (conjunction, a.k.a. intersection)
| s => t (implication)
| s -> t (arrow, a.k.a. function)
| forall x . t (forall, polymorphic)
| box t (box, c.f. modular logic)
| a [t..] (type operator application)
| x (variable)
| n (nominal)
| true (true, a.k.a. top)
| false (false, a.k.a. bottom)
| { m : t } (member, a.k.a. atomic record)
| ( t )
x ∈ var
n ∈ nominal
a ∈ opname
```
The type `t <: s` would be expressive sugar for `box (t => s)`
### msph and spho
**`msph`** is a minimal language for describing types in sappho and a partial
implementation (as of 2025-06-25). The goal being to have a prototype for
deciding subtyping by the end of the summer. Right now it includes
* parser (prefix notation `&`, `|`, `=>`, `->`)
* iterative decorators adding scope, type, and binding data.
* interface with these decorations is implemented as a separate library,
**spho**.
**`spho`** is the WIP type system implementation, as of now having bindings to
* handle type representation data structures
* handle scoping of names and bindings
* initial progress on subtyping implementation
Left to do to get a prototype subtype checker working:
* handling of subtyping sequent judgement rules
* search heuristic for basic proof search
* cyclic proof search
Thoughts
* maybe eventually add a basic term language and interpreter
* can we use external software/libraries for proof search?
## interpretation of types
- example programs in `msph`
- unified syntax for types and bounded polymorphism
- example: self typing
- example: conditional method existence
- example: capabilities?
- the meaning of `true` and existence of methods.
- undefined behaviour and `true`?
- how does this relate to the denotation stuff from before?
* formal rules and the sequent calculus
- simple rules
- type constructor rules
- recursion and cyclic proofs
* next steps?
- implementation: sequent calculus based subtyping decider
- simple rules, should be fairly simple
- type constructors, straightforward hopefully
- recursion and cyclic proofs... `¯\_(ツ)_/¯`
- formals:
- formulate theorems
- if we use semantic subtyping, isn't it enough to
prove subtyping sound with regards to set denotation?
- specify term language?