summaryrefslogtreecommitdiff
path: root/docs/core-spec
diff options
context:
space:
mode:
authorRyan Scott <ryan.gl.scott@gmail.com>2018-07-16 18:10:01 -0400
committerRyan Scott <ryan.gl.scott@gmail.com>2018-07-16 18:10:02 -0400
commit7fe4993673e43e5b21f38d79ecc8b5163e97ee84 (patch)
treeb1c11b20e1a3f58566dd793c18ba1287b8d3d250 /docs/core-spec
parentbeba89a0f16681c85d39fc8a894bde4162ff492a (diff)
downloadhaskell-7fe4993673e43e5b21f38d79ecc8b5163e97ee84.tar.gz
Modernize S_TPush in the core spec
Summary: The specification for the `S_TPush` rule in the core spec's operational semantics is woefully out-of-date. Let's bring it in line with the presentation in //System FC with Explicit Kind Equality//. Test Plan: Read it Reviewers: goldfire, bgamari Reviewed By: goldfire Subscribers: rwbarton, thomie, carter Differential Revision: https://phabricator.haskell.org/D4970
Diffstat (limited to 'docs/core-spec')
-rw-r--r--docs/core-spec/OpSem.ott10
-rw-r--r--docs/core-spec/core-spec.pdfbin354450 -> 354354 bytes
2 files changed, 8 insertions, 2 deletions
diff --git a/docs/core-spec/OpSem.ott b/docs/core-spec/OpSem.ott
index efed85a5f5..389c5e8106 100644
--- a/docs/core-spec/OpSem.ott
+++ b/docs/core-spec/OpSem.ott
@@ -45,8 +45,14 @@ not e2 is_a_coercion
----------------------------------------------- :: Push
((\n.e1) |> g) e2 --> (\n.e1 |> g1) (e2 |> g0)
----------------------------------------- :: TPush
-((\n.e) |> g) t --> (\n.(e |> g n)) t
+% g : (forall (a : k1). t1) ~Rep# (forall (a : k2). t2)
+% t : k2
+% g' : k2 ~# k1
+% t' : k1
+g' = sym (nth Nom 0 g)
+t' = t |> g'
+-------------------------------------------------------- :: TPush
+((\n.e) |> g) t --> ((\n.e) t') |> (g @ (<t>_Nom |> g'))
% g : ((t1 ~rho# t2) -> t3) ~Rep# ((t4 ~rho# t5) -> t6)
% g2 : t3 ~Rep# t6
diff --git a/docs/core-spec/core-spec.pdf b/docs/core-spec/core-spec.pdf
index 97694dcfc2..21a8852d04 100644
--- a/docs/core-spec/core-spec.pdf
+++ b/docs/core-spec/core-spec.pdf
Binary files differ