···44\p{See also [Weeknotes](loc-001B)}
55\table{
66\tr{
77- \th{ 21.07.20 }
77+ \th{ 25.07.22 }
88+ \td{ [Selene](selene)'s paper, [[linares-dajosr-2025]], has been accepted to [[aplas25]]!}
99+}
1010+\tr{
1111+ \th{ 25.07.20 }
812 \td{[[miowu]] and [[joshbrown]] are starting their Honours projects with me this semester, working on [the next generation of the Holbert proof assistant](loc-000V). }
913}
1014\tr{
+6
trees/people/adeamorim.tree
···11+\title{Arthur Azevedo de Amorim}
22+\taxon{Person}
33+\meta{external}{https://arthuraa.net}
44+\meta{institution}{[[rit]]}
55+\meta{orcid}{0000-0001-9916-6614}
66+\meta{position}{Assistant Professor}
···11+\title{Rochester Institute of Technology}
22+\taxon{Institution}
33+\meta{venue}{Rochester, New York, United States}
44+\meta{external}{https://rit.edu}
+17
trees/refs/linares-dajosr-2025.tree
···11+\title{Memory Safety: Uniqueness as Separation}
22+\taxon{Reference}
33+\meta{venue}{[[aplas25]]}
44+\author{selene}
55+\author{vjackson}
66+\author{adeamorim}
77+\author{liamoc}
88+\author{pschachte}
99+\author{crizkallah}
1010+\date{2025-10-27}
1111+%\meta{doi}{}
1212+\tag{cogent}
1313+\tag{refereed}
1414+\p{This paper is the fulfillment of the research I envisioned in [my paper at VIMPL of a similar name](oconnor-linares-rizkallah-2023).}
1515+\p{Programming languages with uniqueness type systems prevent pointer aliasing, simplifying memory safety reasoning. However, code implemented in these languages often interoperates through foreign function interfaces with external components implemented in languages lacking the same level of static safety guarantees. To verify safe updates in a combined system, one must manually verify that the external components preserve the safety invariants of the uniqueness type system. In particular, recent work showed that one can manually discharge such obligations on C components from a cross-language Cogent-C system by directly reasoning about the C code in higher-order logic. However, even for simple examples, discharging the uniqueness safety obligations, known as frame conditions, within a logic not specifically designed for direct reasoning in terms of heaps and pointers was not ideal. Separation logic is an established logic that facilitates reasoning about imperative programs by localising reasoning to the parts of the heap that the program mutates. This raises a vital question. Can we use separation logic to discharge the safety obligations imposed by uniqueness types? The answer is yes. This paper demonstrates that the frame conditions can be inferred from particular separation logic triples and, hence, discharged by reasoning using separation logic. We identify and verify the soundness of specific separation logic triples that imply the frame conditions imposed by a uniqueness type system.}
1616+1717+\p{To appear.}