[CakeML-dev] Bad names for translator
Yong Kiam
tanyongkiam at gmail.com
Wed Feb 1 18:47:41 UTC 2017
Hi all,
I've been translating the namespace type on env-refactor, but I ran into a
name clash problem:
The following term gets anti-quoted out for tDefine:
[ANTIQUOTE
``(NAMESPACE_NAMESPACE_TYPE :
(ν -> v -> bool) ->
(ξ -> v -> bool) ->
(φ -> v -> bool) -> (ν, ξ, φ) namespace -> v -> bool)
(m :ν -> v -> bool) (n :ξ -> v -> bool) *(v :φ -> v -> bool)*
(Bind (x_2 :(ξ, φ) alist) (x_1 :(ν, (ν, ξ, φ) namespace) alist))
*(v :v)* ⇔
∃(v1_1 :v) (v1_2 :v).
v =
Conv
(SOME
("Bind",
TypeId (Short "namespace_namespace" :(tvarN, tvarN) id)))
[v1_1; v1_2] ∧
CONTAINER
(LIST_TYPE :(ξ # φ -> v -> bool) -> (ξ, φ) alist -> v -> bool)
(λ(x :ξ # φ) (v' :v).
if MEM x x_2 then
CONTAINER
(PAIR_TYPE :(ξ -> v -> bool) ->
(φ -> v -> bool) -> ξ # φ -> v -> bool)
(λ(y :ξ) (v :v). if y = FST x then n y v else (ARB :bool))
(λ(y :φ) (v' :v).
if y = SND x then v y v' else (ARB :bool)) x v'
else (ARB :bool)) x_2 v1_1 ∧
CONTAINER
(LIST_TYPE :(ν # (ν, ξ, φ) namespace -> v -> bool) ->
(ν, (ν, ξ, φ) namespace) alist -> v -> bool)
(λ(x :ν # (ν, ξ, φ) namespace) (v' :v).
if MEM x x_1 then
CONTAINER
(PAIR_TYPE :(ν -> v -> bool) ->
((ν, ξ, φ) namespace -> v -> bool) ->
ν # (ν, ξ, φ) namespace -> v -> bool)
(λ(y :ν) (v :v). if y = FST x then m y v else (ARB :bool))
(λ(y :(ν, ξ, φ) namespace) (v' :v).
if y = SND x then NAMESPACE_NAMESPACE_TYPE m n v y v'
else (ARB :bool)) x v'
else (ARB :bool)) x_1 v1_2``]
However, it has two instances of v at different types (in bold), and it
doesn't parse back in as a term (probably HOL decided to use the later
instance for type checking?).
The problem seems to be that the namespace is defined with 'v as one of its
type variables and "v" is used all over the translator.
There are a couple of quickfixes possible, and I was wondering which one
seems better:
1) Make namespace use some other type variable
2) Add unlikely suffixes to autogenerated variable names from type variables
3) Make translator check for presence of "v" when picking variable names
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.cakeml.org/pipermail/developers/attachments/20170201/eab95644/attachment.html>
More information about the Developers
mailing list