Paper check About

Featherweight Java: A Minimal Core Calculus for Java and GJ

ACM Transactions on Programming Languages and Systems, 2001 · paper · Computer science

Introduces Featherweight Java, a minimal calculus keeping classes, methods, fields, inheritance and casts, which makes type-safety proofs compact. It is extended with GJ-style generic classes, with a detailed type-safety proof.

Checked: PDF from cis.upenn.edu, fetched 4 Oct 2026. Page numbers are those of that PDF.

12 findings

Substance Theorem 2.4.3 gives the stuck-cast alternative as "an expression containing (D)new C(ē) where C <: D"; a stuck (failing) cast requires C not a subtype of D.
  • p. 13 Theorem 2.4.3
    containing (D)new C(ē) where C <: D
  • p. 6 Section 2, informal soundness statement
    or stuck at a failing typecast
  • p. 13 Theorem 2.4.3 statement
    or an expression containing (D)new C(ē) where C <: D.
  • p. 13 Theorem 2.4.3
    containing (D)new C(¯e) where C <: D

Only the authors can say what is right here.

Judge's note: The page 13 image shows plain 'C <: D' with no negation slash. Rule R-CAST in Fig. 3 (p.12) has premise C <: D and reduces (D)(new C(ē)) to new C(ē). A normal form therefore cannot contain such a cast with C <: D, and the second alternative as printed can never occur. Counterexample checked: take class A extends Object. Then (A)new Object() is well typed by T-DCAST and is a normal form, because Object is not a subtype of A. It is not a value, and it contains no cast with C <: D, so it satisfies neither alternative as printed. The text on p.6 ('stuck at a failing typecast') and p.11 ('gets stuck at a downcast') states the intended negated condition.

Second check: another model agreed

Report a problem with this finding
Substance Theorem 3.4.3 gives alternative (2) as "an expression containing (P)new N(ē) where ∅ ⊢ N <: P"; a stuck cast requires that N is not a subtype of P.
  • p. 20 Theorem 3.4.3
    an expression containing (P)new N(ē) where ∅ ⊢ N <: P
  • p. 20 Theorem 3.4.3 statement, alternative (2)
    or (2) an expression containing (P)new N(ē) where ∅ ⊢ N <: P.
  • p. 20 Theorem 3.4.3
    an expression containing (P)new N(¯e) where ∅⊢N <: P.

Only the authors can say what is right here.

Judge's note: The page 20 image shows plain '∅ ⊢ N <: P' with no negation. GR-CAST reduces (P)new N(ē) whenever ∅ ⊢ N <: P, so alternative (2) as printed can never occur in a normal form. A failed downcast such as (A)new Object() would then satisfy neither alternative. This is the same slip as in Theorem 2.4.3 (C009), but it is in a separate theorem.

Second check: another model agreed

Report a problem with this finding
Reference or label Figure 4 is captioned "Fig. 4. FJ: Syntax." but shows the FGJ syntax (C<X̄◁N̄>, e.m<T̄>(ē)); the text says "The abstract syntax of FGJ is given in Figure 4."
  • p. 15 Figure 4 caption
    Fig. 4. FJ: Syntax.
  • p. 15 Section 3.1
    The abstract syntax of FGJ is given in Figure 4.
  • p. 15 Fig. 4 caption
    FJ: Syntax.

Judge's note: The page 15 image shows a figure with generic syntax under the caption 'FJ: Syntax.'. Section 3.1 says the figure gives FGJ syntax. The caption should read 'FGJ: Syntax'.

Second check: another model agreed

Report a problem with this finding
Reference or label Proof of Lemma A.2.11, Case GT-Invk: "By the rule GT-Method, Δ; Γ ⊢ [d̄/x̄](e0.m<V̄>(ē)):[V̄/Ȳ]U′". The rule that types an invocation is GT-Invk.
  • p. 38 Proof of Lemma A.2.11, Case GT-INVK
    By the rule GT-METHOD, Δ; Γ ⊢ [d̄/x̄](e0.m<V̄>(ē)):[V̄/Ȳ]U′.
  • p. 38 Lemma A.2.11, Case GT-INVK
    By the rule GT-METHOD, 1; 0 ⊢[¯d/¯x](e0.m<¯V>(¯e)):[¯V/¯Y]U′.
  • p. 38 Lemma A.2.11 proof, Case GT-INVK
    By the rule GT-METHOD, Δ; Γ ⊢ [d/x](e0.m<V>(e)):[V/Y]U′.

Judge's note: Page 38 image. GT-Method concludes a method-declaration judgment (M OK IN C<...>), not an expression typing. The parallel step in Lemma A.2.10 (p.37) cites GT-Invk, so this is a wrong rule label.

Second check: another model agreed

Report a problem with this finding
Reference or label Proof of Thm 4.5.1, second part: "we have xi′ : Di ⊢ ei:|Ti|Δ. By Lemma A.2.11, x̄′ : D̄, this : C ⊢ e0′:C0". This cites the FGJ substitution lemma for an FJ typing judgment.
  • p. 45 Proof of Theorem 4.5.1, second part
    By Lemma A.2.11,
  • p. 45 Proof of Theorem 4.5.1, second part (method erasure)
    we have xi′ : Di ⊢ ei:|Ti|∆. By Lemma A.2.11,

Only the authors can say what is right here.

Judge's note: Page 45 image. The judgments here are FJ typings over the erased class table (|Γ|Δ, this:C ⊢FJ ...). Lemma A.2.11 (p.38) concerns FGJ judgments Δ;Γ ⊢ e:T. The FJ term-substitution lemma is A.1.2. Since |CT| is not assumed ok (p.43), the authors should say which substitution lemma, under which assumptions, justifies this step.

Second check: another model agreed

Report a problem with this finding
Reference or label Proof of Lemma A.4.2 (p. 442) labels the method-invocation case "Case GT-METHOD. e = e0.m<V̄>(d̄)"; the expression-typing rule for invocation is GT-INVK.
  • p. 47 Proof of Lemma A.4.2
    Case GT-METHOD. e = e0.m<V̄>(d̄)
  • p. 47 Proof of Lemma A.4.2
    Case GT-METHOD. e = e0.m<¯V>(¯d)

Judge's note: Checked the page image of PDF p.47. The case analyses the invocation e0.m<V̄>(d̄) and lists GT-INVK's premises (mtype, Δ ⊢ V̄ ok, the argument typings, T = [V̄/Ȳ]U0). The analogous cases in the other lemma proofs are headed 'Case GT-INVK.' (layout lines 1801, 1905; text line 2443). The induction is on the expression-typing derivation, and GT-METHOD is the method-declaration rule, so the label is wrong. The authors also write 'GT-METHOD' loosely in a few other places (e.g. text line 2008), but the case heading here is still mislabelled.

Second check: another model agreed

Report a problem with this finding
Wording Proof of Thm 2.4.1, Case RC-Cast, Subcase T-SCast: "Then, both C0′<:C and C ⊀: C0′ also hold". The first relation should be C0′ ⊀: C.
  • p. 33 Proof of Thm 2.4.1, Case RC-CAST, Subcase T-SCAST
    Then, both C0′<:C and C ⊀: C0′ also hold
  • p. 33 Proof of Theorem 2.4.1, Case RC-CAST, Subcase T-SCAST
    Then, both C0′<:C
  • p. 33 A.1 proof, Case RC-CAST, Subcase T-SCAST
    Then, both C0′<:C and C </: C0′ also hold

Only the authors can say what is right here.

Judge's note: Page 33 image (and crop): the first relation is printed as plain <: and the second has the slash. Reworked the step: the subcase gives C ⊀: C0 and C0 ⊀: C (with D = C), and the IH gives C0′ <: C0. If C0′ <: C held as well, single inheritance would put C and C0 on the same superclass chain of C0′, so C <: C0 or C0 <: C, which contradicts the subcase. So the printed C0′ <: C is false here, and T-SCast needs C0′ ⊀: C. The fix is a slash and Theorem 2.4.1 is unaffected.

Second check: another model agreed

Report a problem with this finding
Wording Proof of Lemma A.2.10, Case GT-Invk: "Δ1,[Ū/X̄]Δ2,[Ū/X̄]Γ ⊢ ([Ū/X̄]e0).m<[Ū/X̄]V̄>([Ū/X̄]d̄):S where S = [V̄/Ȳ]W0′". The arguments should be ē (and the separator before Γ a semicolon), and the result type should be [[Ū/X̄]V̄/Ȳ]W0′.
  • p. 37 Proof of Lemma A.2.10, Case GT-INVK, final step
    ([Ū/X̄]e0).m<[Ū/X̄]V̄>([Ū/X̄]d̄):S
  • p. 37 Proof of Lemma A.2.10, Case GT-INVK (top of page)
    where S = [V̄/Ȳ]W0′, finishing the case.

Only the authors can say what is right here.

Judge's note: Pages 36–37 images. The case defines e = e0.m<V̄>(ē), but the conclusion uses d̄, and a comma separates the environment from Γ. Reworked the type: Lemma A.2.9 gives the method type <Ȳ◁[Ū/X̄]P̄>[Ū/X̄]W̄→W0′, and the invocation uses the type arguments [Ū/X̄]V̄. GT-Invk therefore gives the result type [[Ū/X̄]V̄/Ȳ]W0′. Lemma A.2.5 with that substitution gives [[Ū/X̄]V̄/Ȳ]W0′ <: [Ū/X̄][V̄/Ȳ]W0. The printed [V̄/Ȳ]W0′ can still contain X̄ when V̄ mentions X̄. The reviewer's instance (X ◁ Object, U = A, a method <Y> Y m(Y y)) gives X, which is not well formed after X has been substituted away. The step is faulty as printed; it is repairable and the lemma stands.

Second check: another model agreed

Report a problem with this finding
Wording Proof of Lemma A.2.10, end of Case GT-DCast: "Finally, by the rule GT-SCast, Δ; Γ ⊢ [T̄/X̄]((N)e0):[T̄/X̄]N with stupid warning". It should be Δ′; [Ū/X̄]Γ ⊢ [Ū/X̄]((N)e0):[Ū/X̄]N.
  • p. 38 Proof of Lemma A.2.10, Case GT-DCAST, final sentence
    Finally, by the rule GT-SCAST, Δ; Γ ⊢ [T̄/X̄]((N)e0):[T̄/X̄]N with stupid warning.
  • p. 38 End of Case GT-DCAST in proof of Lemma A.2.10 (top of page)
    Finally, by the rule GT-SCAST, Δ; Γ ⊢ [T̄/X̄]((N)e0):[T̄/X̄]N with stupid warn-
  • p. 38 Lemma A.2.10, end of Case GT-DCAST
    Finally, by the rule GT-SCAST, 1; 0 ⊢[¯T/¯X]((N)e0):[¯T/¯X]N with stupid warning.

Only the authors can say what is right here.

Judge's note: Images of p.37 (case header N = C<T̄>, Δ′ = Δ1,[Ū/X̄]Δ2) and p.38 (top line). This lemma substitutes Ū for X̄, and T̄ is bound to N's own type arguments. The other subcases and the following GT-SCast case correctly use Δ′ (or Δ1,[Ū/X̄]Δ2), [Ū/X̄]Γ and [Ū/X̄]. The judgment as printed is not what the lemma must deliver; it is repairable and the lemma stands.

Second check: another model agreed

Report a problem with this finding
Wording Proof of Lemma A.2.11, GT-DCast third subcase: "contradicting the assumption Δ ⊢ boundΔ(S0) <: N; thus, D ⋬ C". The assumption is boundΔ(S0) ⊀: N.
  • p. 39 Proof of Lemma A.2.11, Case GT-DCAST, third subcase
    contradicting the assumption Δ ⊢ boundΔ(S0) <: N; thus, D ⋬ C.
  • p. 39 Proof of Lemma A.2.11, Case GT-DCAST, third subcase (D ⊴ C branch)
    contradicting the assumption Δ ⊢ bound∆(S0) <: N; thus, D ⋬ C.

Only the authors can say what is right here.

Judge's note: Page 39 image: the relation is printed as plain <:, while the subcase header on the same page reads Δ ⊢ boundΔ(S0) ⊀: N. The parallel line on p.37 in Lemma A.2.10 has ⊀:. The proof has just derived bound(S0) <: C<V̄′> = N, which contradicts ⊀: but not <:. The step is faulty as printed; the fix is a slash and the lemma stands.

Second check: another model agreed

Report a problem with this finding
Wording Lemma A.4.2, Case GT-FIELD, subcase |Ti|Δ ≠ Ci, final display (p. 441): "|[Ū/X̄]e|Δ1,[Ū/X̄]Δ2,Γ′ = (|[Ū/X̄]Ti|Δ1,[Ū/X̄]Δ2)s|[Ū/X̄]e|Δ1,[Ū/X̄]Δ2,Γ′.fi" has the erasure of e itself on the right-hand side, where the receiver e0 belongs.
  • p. 46 Proof of Lemma A.4.2, Case GT-FIELD, first subcase
    |[Ū/X̄]e|Δ1,[Ū/X̄]Δ2,Γ′ = (|[Ū/X̄]Ti|...)s|[Ū/X̄]e|...fi
  • p. 46 Proof of Lemma A.4.2, Case GT-FIELD, Subcase |Ti| ≠ Ci, final display
    |[Ū/X̄]e|Δ1,[Ū/X̄]Δ2,Γ′ = (|[Ū/X̄]Ti|Δ1,[Ū/X̄]Δ2)s|[Ū/X̄]e|Δ1,[Ū/X̄]Δ2,Γ′.fi

Only the authors can say what is right here.

Judge's note: Checked the page image of PDF p.46 and the layout text (line 2332), which both show |[Ū/X̄]e| on the right with no subscript 0. Reworking the step: here e = e0.fi, so [Ū/X̄]e = ([Ū/X̄]e0).fi. E-FIELD-CAST, as used a few lines up on the same page (|e|Δ,Γ = (|Ti|Δ)s|e0|Δ,Γ.fi), erases the receiver. So the right-hand side must be (...)s|[Ū/X̄]e0|....fi. That also matches the goal stated on the same page, '(D)s|[Ū/X̄]e0|....fi'. As printed the equation is circular. The parallel GT-INVK subcase on p.47 correctly writes |[Ū/X̄]e0|. The step can be repaired by changing e to e0, and the lemma's result stands.

Second check: another model agreed

Report a problem with this finding
Wording Lemma A.4.6, Subcase R-INVK, final display (p. 448): "|Γ|Δ ⊢ |[ē′/x̄, new D<T̄>(d̄′)/this]em′|Δ,Γ ⇒exp (C)[ē/x̄, new D(d̄)/this]em′." The target should be (C)s[ē/x̄, new D(d̄)/this]em, i.e. d.
  • p. 53 Proof of Lemma A.4.6, Subcase R-INVK, final display
    ⇒ (C)[ē/x̄, new D(d̄)/this]em′.

Only the authors can say what is right here.

Judge's note: Checked the page images of PDF pp.52-53. The preceding display on p.53 ends with '(|T|Δ)s[ē/x̄, new D(d̄)/this]em', with unprimed em and the synthetic s. The goal is d = (C)s d0 with d0 = [ē/x̄, new D(d̄)/this]em, where em is the FJ body from mbodyFJ(m,D) (p.52). The final display instead has em′, which is the FGJ body, and an unmarked cast (C). Combining C = |T|Δ with transitivity gives (C)s[...]em. The printed target is therefore not d, and it is not an FJ expansion. The step can be repaired and the result stands.

Second check: another model agreed

Report a problem with this finding
17 minor (typos and the like; most checked by the judge only)
Reference or label Copyright line "© 2001 ACM 0098-3500/01/0500–0396 $5.00" carries an ISSN that does not appear to be TOPLAS's, while the footer names ACM Transactions on Programming Languages and Systems.
  • p. 1 Copyright line
    © 2001 ACM 0098-3500/01/0500–0396 $5.00

Only the authors can say what is right here.

Judge's note: Rests on outside knowledge: ISSN 0098-3500 belongs to ACM TOMS and the TOPLAS ISSN is 0164-0925. The page 1 image shows '© 2001 ACM 0098-3500/01/0500–0396 $5.00', and the footer below it names TOPLAS Vol. 23, No. 3, May 2001, Pages 396–450. Nothing in the files can confirm the ISSN itself.

Second check: another model agreed

Report a problem with this finding
Wording Proof of Theorem 2.4.2 writes "mbody(m, C) = x̄.e0 ... from the fact that mtype(m, C) = C̄ → D" with C unbound; the theorem concerns new C0(ē).m(d̄) and mbody(m, C0).
  • p. 12 Proof of Theorem 2.4.2
    to show mbody(m, C) = x̄.e0 and #(x̄) = #(d̄) from the fact that mtype(m, C) = C̄ → D
  • p. 12 Proof of Theorem 2.4.2
    mbody(m, C) = ¯x.e0 and #(¯x) = #(¯d)
  • p. 12 Proof of Theorem 2.4.2
    mbody(m, C) = ¯x.e0 and #(¯x) = #(¯d) from the fact that mtype(m, C) = ¯C →D

Only the authors can say what is right here.

Judge's note: In the page 12 image, the theorem statement and the first half of the proof both use C0 (fields(C0)). The second half switches to mbody(m, C) and mtype(m, C), and C is not bound anywhere in the proof. Reading C as C0 makes the step correct, so the theorem still holds.

Second check: another model agreed

Report a problem with this finding
Wording Proof of Corollary 4.5.5 writes "|e|Δ,Γ →*FGJ d" for the reduction of the erased FJ term; Theorem 4.5.3 and the corollary statement use →*FJ.
  • p. 28 Proof of Corollary 4.5.5
    |e|Δ,Γ →*FGJ d
  • p. 28 Proof of Corollary 4.5.5
    |e|1,0 → ∗ FGJ d
  • p. 28 Proof of Corollary 4.5.5
    |e|1,0 → ∗ FGJ d and |0|1 ⊢|w|1,0
  • p. 28
    |e|1,0 → ∗ FGJ d and |0|1

Only the authors can say what is right here.

Judge's note: The page 28 image shows the subscript FGJ in the proof. |e| and d are FJ expressions. Fig. 10 and the corollary statement use FJ reduction for the erased term, and Theorem 4.5.3 yields an FJ expression d′. The subscript is wrong, but the corollary still holds with →*FJ.

Second check: another model agreed

Report a problem with this finding
Wording Lemma A.4.6, Case RC-CAST, Subcase R-FIELD (p. 447): "Then, |Γ|Δ ⊢ ei′ ⇒exp (|T|Δ)ei, finishing the case." The cast lacks the synthetic marker s; the target is d = (C)s d0 = (C)s ei.
  • p. 52 Proof of Lemma A.4.6, Case RC-CAST, Subcase R-FIELD
    Then, |Γ|∆ ⊢ ei ⇒ (|T|∆)ei, finishing the case.

Only the authors can say what is right here.

Judge's note: Checked the page image of PDF p.52: the cast (|T|Δ)ei has no superscript s. On the same page the R-INVK subcase writes (|T|Δ)s. The text on p.51 (text lines 2820-2822) sets d = (C)s d0, here with d0 = ei and C = |T|Δ. Expansion is defined (text lines 1248-1254) as adding synthetic upcasts, replacing synthetic casts, or removing synthetic casts. A target with a non-synthetic cast is therefore neither an expansion nor equal to d. This looks like a missing superscript, and the case's result stands once the s is restored.

Second check: another model agreed

Report a problem with this finding
Typo First-page footnote misspells 'visiting': "Igarashi was visting the University of Pennsylvania".
  • p. 1 First-page footnote
    Igarashi was visting the University of Pennsylvania

Judge's note: The page 1 footnote image reads 'visting'. This is a misspelling of 'visiting', and the image rules out an extraction artefact.

Second check: none (judge only)

Report a problem with this finding
Typo Funder name printed as "Japan Society of the Promotion of Science"; the organisation is the Japan Society for the Promotion of Science.
  • p. 1 First-page footnote
    Japan Society of the Promotion of Science

Only the authors can say what is right here.

Judge's note: Rests on outside knowledge: the official name of the funder is 'Japan Society for the Promotion of Science'. The page 1 footnote image does read 'Japan Society of the Promotion of Science'.

Second check: none (judge only)

Report a problem with this finding
Typo Theorem 3.4.6 writes "an FJ program (e, CT)", whereas p.8 defines "A program is a pair (CT,e)".
  • p. 21 Theorem 3.4.6
    If an FJ program (e, CT) is well typed
  • p. 8 Section 2.1
    A program is a pair (CT,e) of a class table and an expression.

Judge's note: The images of p.21 and p.8 show the two orders. This is a cosmetic notational inconsistency and the meaning is clear.

Second check: none (judge only)

Report a problem with this finding
Typo The fields function is misspelled where it is introduced: "The fields of a class C, written fileds(C)".
  • p. 10 Section 2.1, last paragraph
    filеds(C)

Judge's note: The page 10 image shows the italic function name 'fileds(C)'. Everywhere else the function is written 'fields'.

Second check: none (judge only)

Report a problem with this finding
Typo Theorem 2.4.2(2) prints the method invocation as "new C0(ē)·m(d̄)" with a raised dot instead of the period used everywhere else.
  • p. 12 Theorem 2.4.2 (2)
    new C0(ē)·m(d̄)

Judge's note: The crop shows a centred dot between ')' and 'm' in item (2). The proof directly below it prints 'new C0(ē).m(d̄)' with a period.

Second check: none (judge only)

Report a problem with this finding
Typo Section 3.4 punctuation: "(Theorems 3.4.1, 3.4.2, and 3.4.3), The basic structures" (comma for full stop) and "a few more lemmas The main lemmas" (missing full stop).
  • p. 19 Section 3.4, Type Soundness paragraph
    (Theorems 3.4.1, 3.4.2, and 3.4.3), The basic structures
  • p. 19 Section 3.4, Type Soundness paragraph
    a few more lemmas The main lemmas
  • p. 19 3.4 Properties, Type Soundness
    (Theorems 3.4.1, 3.4.2, and 3.4.3), The basic

Judge's note: The page 19 crop confirms both: a comma before 'The', and no full stop between 'lemmas' and 'The'.

Second check: none (judge only)

Report a problem with this finding
Typo Proof of Lemma A.2.6, Case WF-Class: "Since Ȳ <: P̄ ⊢ P̄ by the rule GT-Class" omits "ok" (should read Ȳ <: P̄ ⊢ P̄ ok).
  • p. 34 Proof of Lemma A.2.6, Case WF-CLASS
    Since Ȳ <: P̄ ⊢ P̄ by the rule GT-CLASS

Judge's note: Page 34 image, last paragraph: the judgment is printed without "ok". GT-Class yields a well-formedness judgment, so the word "ok" is missing.

Second check: none (judge only)

Report a problem with this finding
Typo Proof of Lemma A.2.11, GT-DCast third subcase: "Δ′ ⊢ C<V̄′> <: boundΔ(T0)" uses Δ′, which is not defined in this lemma (should be Δ).
  • p. 39 Proof of Lemma A.2.11, Case GT-DCAST, third subcase
    and Δ′ ⊢ C<V̄′> <: boundΔ(T0)

Judge's note: Page 39 image. Lemma A.2.11 works in a single Δ throughout. Δ′ is defined only in the proof of Lemma A.2.10 (p.37), so this looks like a carry-over from there.

Second check: none (judge only)

Report a problem with this finding
Typo Proof of Lemma A.2.12, Case MB-Class: "Δ′; Γ ⊢ S0 <: T0 for some S0". The subtyping judgment takes no Γ (should read Δ′ ⊢ S0 <: T0).
  • p. 39 Proof of Lemma A.2.12, Case MB-CLASS
    Δ′; Γ ⊢ S0 <: T0 for some S0

Judge's note: Page 39 image confirms the printed form. Subtyping judgments elsewhere have the form Δ ⊢ S <: T.

Second check: none (judge only)

Report a problem with this finding
Typo Proof of Thm 3.4.1, Case GRC-Field: "for j ≤ #(f̄), we have gi = fi and Ti′ = Ti". The bound index is j, so this should read gj = fj and Tj′ = Tj.
  • p. 41 Proof of Theorem 3.4.1, Case GRC-FIELD
    for j ≤ #(f̄), we have gi = fi and Ti′ = Ti
  • p. 41 Case GRC-FIELD
    for j ≤#(¯f), we have gi = fi and Ti′ = Ti

Judge's note: Page 41 image confirms the printed text. Lemma A.2.8 states the fact as gj = fj (compare its use on p.38).

Second check: none (judge only)

Report a problem with this finding
Typo Proof of Thm 3.4.1, Case GRC-Inv-Recv: "mtype(m, boundΔ(T0)) = <Ȳ Δ P̄>T̄→U" prints Δ in place of ◁.
  • p. 41 Proof of Theorem 3.4.1, Case GRC-INV-RECV
    <Ȳ Δ P̄>T̄→U

Judge's note: Page 41 image shows Δ in the bound. Two lines later the same method type is printed <Ȳ◁P̄>T̄→V.

Second check: none (judge only)

Report a problem with this finding
Typo Proof of Thm 3.4.1, Case GRC-Inv-Recv: "Letting T0′ = [V̄/Ȳ]V finishes the case". In this case T0′ already names the receiver's type; T′ is meant.
  • p. 41 Proof of Theorem 3.4.1, Case GRC-INV-RECV
    Letting T0′ = [V̄/Ȳ]V finishes the case.

Judge's note: Page 41 image. The IH binds T0′ as the type of e0′. The other cases end with "Letting T′ = ...", which is the witness the theorem needs.

Second check: none (judge only)

Report a problem with this finding
Typo Lemma A.3.7: "then fieldsmax(C) = D̄ f̄ and |V̄|Δ <:FGJ D̄" relates erased (FJ) types with <:FGJ, where <:FJ is meant.
  • p. 43 Lemma A.3.7
    |V̄|Δ <:FGJ D̄
  • p. 43 Lemma A.3.7 statement
    then fieldsmax(C) = D̄ f̄ and |V̄|Δ <:FGJD̄.
  • p. 46 Proof of Lemma A.4.2, Case GT-FIELD
    By Lemma A.3.7, fieldsmax(|T0|Δ) = C̄ f̄ and |T̄|Δ <:FJ C̄.
  • p. 43
    and |¯V|1 <:FGJ¯D

Judge's note: Page 43 image confirms the subscript FGJ. The proof goes through Lemma A.3.6, which concludes <:FJ. Lemma A.4.2 on p.46 quotes A.3.7 as "|T̄|Δ <:FJ C̄". The neighbouring Lemmas A.3.5, A.3.6 and A.3.8 all relate erasures with <:FJ.

Second check: none (judge only)

Report a problem with this finding
Something wrong with this page, or a finding we missed?