All Projects → tchajed → ltac2-tutorial

tchajed / ltac2-tutorial

Licence: other
Ltac2 tutorial

Programming Languages

Coq
218 projects
Makefile
30231 projects

Labels

Projects that are alternatives of or similar to ltac2-tutorial

coq-library-undecidability
A library of mechanised undecidability proofs in the Coq proof assistant.
Stars: ✭ 84 (+211.11%)
Mutual labels:  coq
odd-order
The formal proof of the Odd Order Theorem
Stars: ✭ 20 (-25.93%)
Mutual labels:  coq
LibHyps
A Coq library providing tactics to deal with hypothesis
Stars: ✭ 14 (-48.15%)
Mutual labels:  coq
vericert
A formally verified high-level synthesis tool based on CompCert and written in Coq.
Stars: ✭ 63 (+133.33%)
Mutual labels:  coq
fm-notes
Unassorted scribbles on formal methods, type theory, category theory, and so on, and so on
Stars: ✭ 19 (-29.63%)
Mutual labels:  coq
regex-reexamined-coq
No description or website provided.
Stars: ✭ 14 (-48.15%)
Mutual labels:  coq
bignums
Coq library of arbitrarily large numbers, providing BigN, BigZ, BigQ that used to be part of the standard library [maintainers=@proux01,@erikmd]
Stars: ✭ 20 (-25.93%)
Mutual labels:  coq
gaia
Implementation of books from Bourbaki's Elements of Mathematics in Coq [maintainer=@thery]
Stars: ✭ 15 (-44.44%)
Mutual labels:  coq
mcoq
Mutation analysis tool for Coq verification projects
Stars: ✭ 22 (-18.52%)
Mutual labels:  coq
coq-art
Coq code and exercises from the Coq'Art book [maintainers=@ybertot,@Casteran]
Stars: ✭ 57 (+111.11%)
Mutual labels:  coq
fcsl-pcm
Partial Commutative Monoids
Stars: ✭ 20 (-25.93%)
Mutual labels:  coq
rupicola
Gallina to Bedrock2 compilation toolkit
Stars: ✭ 41 (+51.85%)
Mutual labels:  coq
coq jupyter
Jupyter kernel for Coq
Stars: ✭ 70 (+159.26%)
Mutual labels:  coq
coq-big-o
A general yet easy-to-use formalization of Big O, Big Theta, and more based on seminormed vector spaces.
Stars: ✭ 31 (+14.81%)
Mutual labels:  coq
autosubst
Automation for de Bruijn syntax and substitution in Coq [maintainers=@RalfJung,@co-dan]
Stars: ✭ 41 (+51.85%)
Mutual labels:  coq
coq-program-verification-template
Template project for program verification in Coq
Stars: ✭ 26 (-3.7%)
Mutual labels:  coq
RiscvSpecFormal
The RiscvSpecKami package provides SiFive's RISC-V processor model. Built using Coq, this processor model can be used for simulation, model checking, and semantics analysis. The RISC-V processor model can be output as Verilog and simulated/synthesized using standard Verilog tools.
Stars: ✭ 69 (+155.56%)
Mutual labels:  coq
MtacAR
Mtac in Agda
Stars: ✭ 29 (+7.41%)
Mutual labels:  coq
multinomials
Multinomials for the Mathematical Components library.
Stars: ✭ 12 (-55.56%)
Mutual labels:  coq
FreeSpec
A framework for implementing and certifying impure computations in Coq
Stars: ✭ 48 (+77.78%)
Mutual labels:  coq

Ltac2 tutorial

Build Status

A tutorial on Ltac2.

What is Ltac2?

Ltac2 is a new tactic language for Coq, intended as a replacement for Ltac. The goal is to provide a language with types and saner execution semantics. The proof scripting mode is mostly compatible with basic Ltac1 scripts, but automation (that is, user-defined Ltac1 tactics) is largely incompatible.

The aim is to be more productive but not dramatically change how tactics work. As such the implementation closely follows the underlying Ltac1 implementation, where tactics operate in a monad with access to the goals, hypotheses, and exceptions. This is a less drastic change than other tactic languages like Mtac, where the types of tactics also talk about how the manipulate the goal and the Gallina type system, or Lean, where tactics are typed in Lean itself.

Why a tutorial?

My ultimate goal for Ltac2 is to port the Iris Proof Mode to Ltac2 in order to make useful and interesting improvements, both as a user for my own proofs and for research.

This tutorial was a good way to learn and to teach Ltac2.

What's in the tutorial?

  • Ltac2 variables. We need variables to access Ltac2 bindings, Gallina names, and proof hypotheses, which are all different in Ltac2.
  • Matching the goal and terms (Ltac1's match ... with). Backtracking.
  • Creating new inductive types in Ltac2.
  • Accessing the Ltac1 standard library, which includes a large body of OCaml tactics that are needed for any automation in Coq.
  • The foreign-function interface to call Ltac1 from Ltac2 and vice-versa, for porting developments piecemeal.
  • Exceptions in Ltac2, which are a significant new feature compared to Ltac1's failure levels and combinators (eg, fail 1, match goal with, and try).
  • How to read the Ltac2 source code to learn more. You will need to read the source code.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].