SlideShare ist ein Scribd-Unternehmen logo
1 von 19
Downloaden Sie, um offline zu lesen
Proof of Pointer Programs
with Ownership in SPARK
Yannick Moy - AdaCore
What is SPARK?
SPARK historical view of pointer programs
Reduced use case for pointers in SPARK
Better language features
→ arrays are first-class objects with A’First, A’Last, A’Length
→ parameter modes in or out or in out
→ generic subprogram parameters
Better pointers (aka “access types” in SPARK)
→ no pointer arithmetic
→ strong typing (no void* / char* / implicit conversions...)
→ typing rules for pointer conversions (pool-specific /general / anonymous)
Still, reclamation possible through Ada.Unchecked_Deallocation
→ possible use-after-free, double-free, memory leaks, dangling pointers
Use cases for pointers in SPARK
Size of data structure evolves over time
→ typical of containers which need to grow
Data structure contains indefinite elements
→ type contains a pointer to the indefinite element, e.g. String
Recursive data structures
→ recursion goes through pointers in Ada, e.g. for list or tree
What changes with pointer ownership
Objective: Concurrent-Read-Exclusive-Write (CREW)
Already the basis for the support of “references” in SPARK
→ SPARK verifies absence of aliasing on writes through references
→ checks at call site that parameters/globals do not alias
Adapted for supporting pointers in SPARK
→ similar non-aliasing checks at call site
→ pointer assignment “moves” the ownership
→ local handles on data-with-pointers “borrow” or “observe” the data
What’s provable with pointer ownership
pointer
must be
not null
Post
must hold
Ownership “move” operation
On assignment of type-with-pointers (including in out and out parameters in calls)
→ rhs loses ownership of pointed data
→ rhs becomes unreadable
→ lhs gains ownership of pointed data
Ownership “borrow” operation (1/2)
On call with in parameter of named access type
→ actual loses ownership of pointed data for scope of call
→ actual regains ownership of pointed data after call
→ non-aliasing checks ensure CREW
Ownership “borrow” operation (2/2)
On assignment of type-with-pointers to anonymous access-to-variable object
→ rhs loses ownership of pointed data for limited scope
→ rhs becomes unwritable
→ lhs gains ownership of pointed data for limited scope
Ownership “observe” operation (1/2)
On call with in parameter of record-or-array-type-with-pointers
→ actual becomes read-only for scope of call
→ formal is also read-only at any depth
→ actual regains full ownership of pointed data after call
→ non-aliasing checks ensure CREW
On constant initialization of record-or-array-type-with-pointers
→ rhs becomes read-only for scope of constant
→ constant is also read-only at any depth
→ rhs regains full ownership of pointed data after scope ends
Ownership “observe” operation (2/2)
On assignment of type-with-pointers to anonymous access-to-constant object
→ rhs becomes read-only for limited scope
→ lhs gains ownership of pointed data for limited scope
Y.all is possible here
Limitations
Only pool-specific access types (without all or constant keyword)
→ no possibility to take the address of variables X’Access
Less powerful than the ownership of Rust
→ no annotations for lifetimes
→ borrowing/observing relationship is statically known
Borrowing/observing part of an array borrows/observes the whole array
→ E.g. must call swap procedure to swap elements of an array-with-pointers
See https://blog.adacore.com/using-pointers-in-spark
Roadmap
Already in GNAT Community Edition 2019
- Stabilized SPARK RM rules (see section 3.10 of
http://docs.adacore.com/spark2014-docs/html/lrm/index.html)
- Complete implementation of ownership checking
- Support in flow analysis and proof (subject to limitations)
For years 2019-2020
- Support local “borrow” and “observe” in proof
- Support proof over recursive data structures (including quantification)
- Check absence of memory leaks by proof
Resources
Download as part of GNAT Community Edition
https://www.adacore.com/download
Learn online
https://learn.adacore.com/
Ask questions on r/ada subreddit, Stack Overflow, comp.lang.ada, or email
https://lists.adacore.com/mailman/listinfo/spark2014-discuss
Open issues on GitHub
https://github.com/AdaCore/spark2014

Weitere ähnliche Inhalte

Ähnlich wie Osis19_IoT: Proof of Pointer Programs with Ownership in SPARK, by Yannick Moy

A hands on overview of the semantic web
A hands on overview of the semantic webA hands on overview of the semantic web
A hands on overview of the semantic web
Marakana Inc.
 
ModeShape 3 overview
ModeShape 3 overviewModeShape 3 overview
ModeShape 3 overview
Randall Hauch
 

Ähnlich wie Osis19_IoT: Proof of Pointer Programs with Ownership in SPARK, by Yannick Moy (20)

Ld4 l triannon
Ld4 l triannonLd4 l triannon
Ld4 l triannon
 
Securing Your Apache Spark Applications
Securing Your Apache Spark ApplicationsSecuring Your Apache Spark Applications
Securing Your Apache Spark Applications
 
Securing Spark Applications by Kostas Sakellis and Marcelo Vanzin
Securing Spark Applications by Kostas Sakellis and Marcelo VanzinSecuring Spark Applications by Kostas Sakellis and Marcelo Vanzin
Securing Spark Applications by Kostas Sakellis and Marcelo Vanzin
 
Comparative study on the processing of RDF in PHP
Comparative study on the processing of RDF in PHPComparative study on the processing of RDF in PHP
Comparative study on the processing of RDF in PHP
 
Streaming Analytics with Spark, Kafka, Cassandra and Akka by Helena Edelson
Streaming Analytics with Spark, Kafka, Cassandra and Akka by Helena EdelsonStreaming Analytics with Spark, Kafka, Cassandra and Akka by Helena Edelson
Streaming Analytics with Spark, Kafka, Cassandra and Akka by Helena Edelson
 
The Cassandra Distributed Database
The Cassandra Distributed DatabaseThe Cassandra Distributed Database
The Cassandra Distributed Database
 
East Bay Java User Group Oct 2014 Spark Streaming Kinesis Machine Learning
 East Bay Java User Group Oct 2014 Spark Streaming Kinesis Machine Learning East Bay Java User Group Oct 2014 Spark Streaming Kinesis Machine Learning
East Bay Java User Group Oct 2014 Spark Streaming Kinesis Machine Learning
 
Cassandra & Python - Springfield MO User Group
Cassandra & Python - Springfield MO User GroupCassandra & Python - Springfield MO User Group
Cassandra & Python - Springfield MO User Group
 
Intro to Elasticsearch
Intro to ElasticsearchIntro to Elasticsearch
Intro to Elasticsearch
 
82159587 case-study-on-corba
82159587 case-study-on-corba82159587 case-study-on-corba
82159587 case-study-on-corba
 
A hands on overview of the semantic web
A hands on overview of the semantic webA hands on overview of the semantic web
A hands on overview of the semantic web
 
Apache Spark 101 - Demi Ben-Ari
Apache Spark 101 - Demi Ben-AriApache Spark 101 - Demi Ben-Ari
Apache Spark 101 - Demi Ben-Ari
 
Brisk meetup
Brisk meetupBrisk meetup
Brisk meetup
 
Building Distributed Systems in Scala
Building Distributed Systems in ScalaBuilding Distributed Systems in Scala
Building Distributed Systems in Scala
 
Data Engineering for Data Scientists
Data Engineering for Data Scientists Data Engineering for Data Scientists
Data Engineering for Data Scientists
 
Cassandra
CassandraCassandra
Cassandra
 
Subprogram
SubprogramSubprogram
Subprogram
 
ModeShape 3 overview
ModeShape 3 overviewModeShape 3 overview
ModeShape 3 overview
 
Global Big Data Conference Sept 2014 AWS Kinesis Spark Streaming Approximatio...
Global Big Data Conference Sept 2014 AWS Kinesis Spark Streaming Approximatio...Global Big Data Conference Sept 2014 AWS Kinesis Spark Streaming Approximatio...
Global Big Data Conference Sept 2014 AWS Kinesis Spark Streaming Approximatio...
 
Ceph Day Santa Clara: The Future of CephFS + Developing with Librados
Ceph Day Santa Clara: The Future of CephFS + Developing with LibradosCeph Day Santa Clara: The Future of CephFS + Developing with Librados
Ceph Day Santa Clara: The Future of CephFS + Developing with Librados
 

Mehr von Pôle Systematic Paris-Region

Mehr von Pôle Systematic Paris-Region (20)

OSIS19_IoT :Transparent remote connectivity to short-range IoT devices, by Na...
OSIS19_IoT :Transparent remote connectivity to short-range IoT devices, by Na...OSIS19_IoT :Transparent remote connectivity to short-range IoT devices, by Na...
OSIS19_IoT :Transparent remote connectivity to short-range IoT devices, by Na...
 
OSIS19_Cloud : SAFC: Scheduling and Allocation Framework for Containers in a ...
OSIS19_Cloud : SAFC: Scheduling and Allocation Framework for Containers in a ...OSIS19_Cloud : SAFC: Scheduling and Allocation Framework for Containers in a ...
OSIS19_Cloud : SAFC: Scheduling and Allocation Framework for Containers in a ...
 
OSIS19_Cloud : Qu’apporte l’observabilité à la gestion de configuration? par ...
OSIS19_Cloud : Qu’apporte l’observabilité à la gestion de configuration? par ...OSIS19_Cloud : Qu’apporte l’observabilité à la gestion de configuration? par ...
OSIS19_Cloud : Qu’apporte l’observabilité à la gestion de configuration? par ...
 
OSIS19_Cloud : Performance and power management in virtualized data centers, ...
OSIS19_Cloud : Performance and power management in virtualized data centers, ...OSIS19_Cloud : Performance and power management in virtualized data centers, ...
OSIS19_Cloud : Performance and power management in virtualized data centers, ...
 
OSIS19_Cloud : Des objets dans le cloud, et qui y restent -- L'expérience du ...
OSIS19_Cloud : Des objets dans le cloud, et qui y restent -- L'expérience du ...OSIS19_Cloud : Des objets dans le cloud, et qui y restent -- L'expérience du ...
OSIS19_Cloud : Des objets dans le cloud, et qui y restent -- L'expérience du ...
 
OSIS19_Cloud : Attribution automatique de ressources pour micro-services, Alt...
OSIS19_Cloud : Attribution automatique de ressources pour micro-services, Alt...OSIS19_Cloud : Attribution automatique de ressources pour micro-services, Alt...
OSIS19_Cloud : Attribution automatique de ressources pour micro-services, Alt...
 
OSIS19_IoT : State of the art in security for embedded systems and IoT, by Pi...
OSIS19_IoT : State of the art in security for embedded systems and IoT, by Pi...OSIS19_IoT : State of the art in security for embedded systems and IoT, by Pi...
OSIS19_IoT : State of the art in security for embedded systems and IoT, by Pi...
 
Osis18_Cloud : Pas de commun sans communauté ?
Osis18_Cloud : Pas de commun sans communauté ?Osis18_Cloud : Pas de commun sans communauté ?
Osis18_Cloud : Pas de commun sans communauté ?
 
Osis18_Cloud : Projet Wolphin
Osis18_Cloud : Projet Wolphin Osis18_Cloud : Projet Wolphin
Osis18_Cloud : Projet Wolphin
 
Osis18_Cloud : Virtualisation efficace d’architectures NUMA
Osis18_Cloud : Virtualisation efficace d’architectures NUMAOsis18_Cloud : Virtualisation efficace d’architectures NUMA
Osis18_Cloud : Virtualisation efficace d’architectures NUMA
 
Osis18_Cloud : DeepTorrent Stockage distribué perenne basé sur Bittorrent
Osis18_Cloud : DeepTorrent Stockage distribué perenne basé sur BittorrentOsis18_Cloud : DeepTorrent Stockage distribué perenne basé sur Bittorrent
Osis18_Cloud : DeepTorrent Stockage distribué perenne basé sur Bittorrent
 
Osis18_Cloud : Software-heritage
Osis18_Cloud : Software-heritageOsis18_Cloud : Software-heritage
Osis18_Cloud : Software-heritage
 
OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...
OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...
OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...
 
OSIS18_IoT: La securite des objets connectes a bas cout avec l'os et riot
OSIS18_IoT: La securite des objets connectes a bas cout avec l'os et riotOSIS18_IoT: La securite des objets connectes a bas cout avec l'os et riot
OSIS18_IoT: La securite des objets connectes a bas cout avec l'os et riot
 
OSIS18_IoT : Solution de mise au point pour les systemes embarques, par Julio...
OSIS18_IoT : Solution de mise au point pour les systemes embarques, par Julio...OSIS18_IoT : Solution de mise au point pour les systemes embarques, par Julio...
OSIS18_IoT : Solution de mise au point pour les systemes embarques, par Julio...
 
OSIS18_IoT : Securisation du reseau des objets connectes, par Nicolas LE SAUZ...
OSIS18_IoT : Securisation du reseau des objets connectes, par Nicolas LE SAUZ...OSIS18_IoT : Securisation du reseau des objets connectes, par Nicolas LE SAUZ...
OSIS18_IoT : Securisation du reseau des objets connectes, par Nicolas LE SAUZ...
 
OSIS18_IoT : Ada and SPARK - Defense in Depth for Safe Micro-controller Progr...
OSIS18_IoT : Ada and SPARK - Defense in Depth for Safe Micro-controller Progr...OSIS18_IoT : Ada and SPARK - Defense in Depth for Safe Micro-controller Progr...
OSIS18_IoT : Ada and SPARK - Defense in Depth for Safe Micro-controller Progr...
 
OSIS18_IoT : RTEMS pour l'IoT professionnel, par Pierre Ficheux (Smile ECS)
OSIS18_IoT : RTEMS pour l'IoT professionnel, par Pierre Ficheux (Smile ECS)OSIS18_IoT : RTEMS pour l'IoT professionnel, par Pierre Ficheux (Smile ECS)
OSIS18_IoT : RTEMS pour l'IoT professionnel, par Pierre Ficheux (Smile ECS)
 
PyParis 2017 / Un mooc python, by thierry parmentelat
PyParis 2017 / Un mooc python, by thierry parmentelatPyParis 2017 / Un mooc python, by thierry parmentelat
PyParis 2017 / Un mooc python, by thierry parmentelat
 
PyParis2017 / Python pour les enseignants des classes préparatoires, by Olivi...
PyParis2017 / Python pour les enseignants des classes préparatoires, by Olivi...PyParis2017 / Python pour les enseignants des classes préparatoires, by Olivi...
PyParis2017 / Python pour les enseignants des classes préparatoires, by Olivi...
 

Kürzlich hochgeladen

+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
Health
 

Kürzlich hochgeladen (20)

How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 

Osis19_IoT: Proof of Pointer Programs with Ownership in SPARK, by Yannick Moy

  • 1. Proof of Pointer Programs with Ownership in SPARK Yannick Moy - AdaCore
  • 3. SPARK historical view of pointer programs
  • 4. Reduced use case for pointers in SPARK Better language features → arrays are first-class objects with A’First, A’Last, A’Length → parameter modes in or out or in out → generic subprogram parameters Better pointers (aka “access types” in SPARK) → no pointer arithmetic → strong typing (no void* / char* / implicit conversions...) → typing rules for pointer conversions (pool-specific /general / anonymous) Still, reclamation possible through Ada.Unchecked_Deallocation → possible use-after-free, double-free, memory leaks, dangling pointers
  • 5. Use cases for pointers in SPARK Size of data structure evolves over time → typical of containers which need to grow Data structure contains indefinite elements → type contains a pointer to the indefinite element, e.g. String Recursive data structures → recursion goes through pointers in Ada, e.g. for list or tree
  • 6. What changes with pointer ownership Objective: Concurrent-Read-Exclusive-Write (CREW) Already the basis for the support of “references” in SPARK → SPARK verifies absence of aliasing on writes through references → checks at call site that parameters/globals do not alias Adapted for supporting pointers in SPARK → similar non-aliasing checks at call site → pointer assignment “moves” the ownership → local handles on data-with-pointers “borrow” or “observe” the data
  • 7. What’s provable with pointer ownership pointer must be not null Post must hold
  • 8. Ownership “move” operation On assignment of type-with-pointers (including in out and out parameters in calls) → rhs loses ownership of pointed data → rhs becomes unreadable → lhs gains ownership of pointed data
  • 9.
  • 10.
  • 11. Ownership “borrow” operation (1/2) On call with in parameter of named access type → actual loses ownership of pointed data for scope of call → actual regains ownership of pointed data after call → non-aliasing checks ensure CREW
  • 12. Ownership “borrow” operation (2/2) On assignment of type-with-pointers to anonymous access-to-variable object → rhs loses ownership of pointed data for limited scope → rhs becomes unwritable → lhs gains ownership of pointed data for limited scope
  • 13.
  • 14. Ownership “observe” operation (1/2) On call with in parameter of record-or-array-type-with-pointers → actual becomes read-only for scope of call → formal is also read-only at any depth → actual regains full ownership of pointed data after call → non-aliasing checks ensure CREW On constant initialization of record-or-array-type-with-pointers → rhs becomes read-only for scope of constant → constant is also read-only at any depth → rhs regains full ownership of pointed data after scope ends
  • 15. Ownership “observe” operation (2/2) On assignment of type-with-pointers to anonymous access-to-constant object → rhs becomes read-only for limited scope → lhs gains ownership of pointed data for limited scope Y.all is possible here
  • 16.
  • 17. Limitations Only pool-specific access types (without all or constant keyword) → no possibility to take the address of variables X’Access Less powerful than the ownership of Rust → no annotations for lifetimes → borrowing/observing relationship is statically known Borrowing/observing part of an array borrows/observes the whole array → E.g. must call swap procedure to swap elements of an array-with-pointers See https://blog.adacore.com/using-pointers-in-spark
  • 18. Roadmap Already in GNAT Community Edition 2019 - Stabilized SPARK RM rules (see section 3.10 of http://docs.adacore.com/spark2014-docs/html/lrm/index.html) - Complete implementation of ownership checking - Support in flow analysis and proof (subject to limitations) For years 2019-2020 - Support local “borrow” and “observe” in proof - Support proof over recursive data structures (including quantification) - Check absence of memory leaks by proof
  • 19. Resources Download as part of GNAT Community Edition https://www.adacore.com/download Learn online https://learn.adacore.com/ Ask questions on r/ada subreddit, Stack Overflow, comp.lang.ada, or email https://lists.adacore.com/mailman/listinfo/spark2014-discuss Open issues on GitHub https://github.com/AdaCore/spark2014