Comment by Agnishom Chattopadhyay on Is there a Lean 4 FFI for python?
This could be an XY situation: meta.stackexchange.com/questions/66377/what-is-the-xy-problem
View ArticleHow do I set up a `flake.nix` for the development and building of my Coq...
I will confess that I do not really understand the nix toolchain very well.Is it possible to produce a flake.nix which can do the following?Pin the specific version of Coq, OCaml, and specific Coq...
View ArticleComment by Agnishom Chattopadhyay on How do I set up a `flake.nix` for the...
This seems quite helpful, especially for spawning a shell which has access to coq and the language server. It doesn't have something which builds the Coq proofs themselves, though
View ArticleComment by Agnishom Chattopadhyay on Could proof assistants fill in single...
This is called "proof automation". Proof Assistants do do this to some degree, with the help of hammers, for example. But this is basically a research question. As such, there is no "push-button"...
View ArticleComment by Agnishom Chattopadhyay on What are some examples of proof...
Chapter 3 of the book "QED at Large" by Ringer and coauthors seem to have some nice examples
View ArticleComment by Agnishom Chattopadhyay on Why does `#check add_mul (R := ℕ)`...
You have two judgements here: the first one is that add_mul : ∀ (a b c : ℕ), (a + b) * c = a * c + b * c and the second one is that ∀ (a b c : ℕ), (a + b) * c = a * c + b * c : Prop
View ArticleAnswer by Agnishom Chattopadhyay for Extracting Coq Lists to Lazy OCaml Lists?
The solution seems to be the followingExtract Inductive list => "Seq.t" [ "(fun _ -> Seq.Nil)" "(fun pat _ -> let (x, xs) = pat in Seq.Cons(x, xs))" ]"(fun fNil fCons l -> match l () with...
View ArticleComment by Agnishom Chattopadhyay on Extracting Coq Lists to Lazy OCaml Lists?
@MevenLennon-Bertrand could you explain? Extract Inductive list => "Seq.t" [ "fun _ -> Seq.Nil" "fun a l _ -> Seq.Cons a l" ]. does not work, especially for pattern matching
View ArticleRewriting/Applying unidirectional morphisms in Coq
Link to Code GistI have the following definitionDefinition subset (s1 s2 : nat -> Prop) : Prop := forall i, i ∈ s1 -> i ∈ s2.Notation "s1 ⊆ s2" := (subset s1 s2) (at level 70) : aset_scope.I want...
View ArticleAnswer by Agnishom Chattopadhyay for Using Coq after installation
You need an IDE to use Coq, since it should be used in an interactive manner.Popular options are:CoqIDEVisual Studio Code with VSCoq extensionEmacs with Proof General (optionally with CompanyCoq)Once...
View ArticleHow do I enable this kind of rewriting?
Link to Code GistGiven two extensionally equal sets, s1 ≡ s2, I want to be able to obtain a ∈ s2 from a ∈ s1using rewriting.I want to enable an extensionality-style rewriting for unary...
View ArticleComment by Agnishom Chattopadhyay on Topic for undergraduate thesis
This is a great project. From what I have seen, formalizing DFS is quite nontrivial.
View ArticleTactic to Propify a bool expression
Let's say I have bool expressions <bexp> consisting of true, false, variables, eqbandb, orb and negb. When I see an expression of the form bexp = true or bexp = false, I want to convert them to...
View ArticleComment by Agnishom Chattopadhyay on Tactic to Propify a bool expression
I think we want the ? modifier instead of !
View ArticleComment by Agnishom Chattopadhyay on To what extent is formalized mathematics...
There is also the Annals of Formalized Mathematics: afm.episciences.org
View ArticleComment by Agnishom Chattopadhyay on Creating a tactic for 'destructing' a...
Thanks for this suggestion. However, writing induction in a destruction based proof feels rather odd to me
View ArticleCreating a tactic for 'destructing' a list by last element?
Sometimes, I have a context in which I have some l : list X, and I want to prove the goal by proving that (1) If l = [], the goal holds, and (2) If l = l'++ [x], the goal still holds.This usually takes...
View ArticleSelecting both a hypothesis and Goal while applying a tactic
I have a hypothesis H and some function foo. I want to simplify foo in both H and the Goal. How do I achieve this with a single tactic?The tactic simpl foo in * selects everything. The tactic simpl foo...
View ArticleDefining a Recursive Function decreasing on one argument with < and another...
I want to define a function which decreases in one argument using < and on another structurally. What is the least painful way to do this? Among the many options (Function, Program Fixpoint,...
View ArticleInjectivity, Surjectivity and Smallness on lists of natural numbers imply...
Require Import Coq.Lists.List.I have the following properties defined on a list of natural numbers:Definition small (l : list nat) : Prop := forall n, In n l -> n < length l.Definition surj (l :...
View Article