Extensibella Example: soundX:let

Language Specification

File: def.sos

[Reduce File] [Raw File]
Module soundX:let

Builds on soundX:host

tm ::= ...
     | let(string, tm, tm)


typeOf Ctx T1 Ty
----------------------------------------------------- [Proj-Let]
Ctx |{tm}- let(X, T1, T2) ~~> app(abs(X, Ty, T2), T1)



typeOf Ctx T1 Ty1
typeOf (X, Ty1)::Ctx T2 Ty2
----------------------------- [T-Let]
typeOf Ctx let(X, T1, T2) Ty2

Reasoning

[Show All Proofs] [Hide All Proofs] [Raw File]

Click on a command or tactic to see a detailed view of its use.

Module soundX:let.

Prove_Constraint soundX:host:proj_ty_is.


Prove soundX:host:type_is. [Show Proof]



Prove_Constraint soundX:host:proj_is. [Show Proof]



Prove soundX:host:type_unique. [Show Proof]



Prove soundX:host:ty_lookup. [Show Proof]



Prove_Constraint soundX:host:proj_ty_unique.


Prove_Constraint soundX:host:proj_tm_unique. [Show Proof]





Prove soundX:host:desugar_ty_exists.


Prove soundX:host:desugar_ty_rel. [Show Proof]


Back to example home