FAQ Database Discussion Community

## Isabelle solvers: “auto” or “fastforce”? (comparison of solver strength)

solver,isabelle,theorem-proving
In Isabelle, I often find that I can prove a goal successfully using different solvers. Generally I would prefer to use the weakest solver that can just about prove the goal. Based on my experience with Isabelle so far, my current understanding is that in order of increasing strength and...

## Coq can't find subterm when using rewrite tactic

coq,theorem-proving
I'm trying to do a modified proof of compile_correct from the first chapter of Certified Programming with Dependent Types. In my version, I try to make use of the fact that progDenote is a fold, and use a weaker inductive hypothesis in the proof of the main lemma in priving...

## Skip a subgoal while proving in Isabelle

proof,isabelle,theorem-proving,isar
I am trying to prove a theorem but got stuck at a subgoal (that I prefer to skip and prove later). How can I skip this and prove the others ? First, I tried oops and sorry but they both abort the entire proof (instead of the only subgoal). I...

## Are constructors disjoint in Agda? (or how to disprove inj₁ x ≡ inj₂ y)

constructor,agda,theorem-proving,disjoint-union
I need one more lemma showing that inj₁ x ≡ inj₂ y is absurd as part of a larger theorem about disjoint union types (⊎) in Agda. This result would follow directly from the two constructors for ⊎, namely inj₁ and inj₂, being disjoint. Is that the case in Agda?...

## How to prove (forall n m : nat, (n m <= n) in Coq?

coq,theorem-proving
How to prove forall n m : nat, (n <? m) = false -> m <= n in Coq? I got as far as turning the conclusion into ~ n < m using by apply Nat.nlt_ge. Doing SearchAbout ltb yields ltb_lt: forall n m : nat, (n <? m) =...

## How should the general type of a “lemma” function be understood?

Perhaps this is a stupid question. Here's a quote from the Hasochism paper: One approach to resolving this issue is to encode lemmas, given by parameterised equations, as Haskell functions. In general, such lemmas may be encoded as functions of type: ∀ x1 ... xn. Natty x1 → ... →...

## What's the difference between “arith” and “presburger” in Isabelle?

solver,isabelle,theorem-proving
Every goal that I have encountered in Isabelle so far that could be solved using arith could also be solved by presburger and vice versa, for example lemma "odd (n::nat) ⟹ Suc (2 * (n div 2)) = n" by presburger (* or arith *) What's the difference between the...

## Isabelle: Unsupported recursive occurrence of a datatype via type constructor “Set.set”

recursion,isabelle,theorem-proving
The problem I am wondering if is there a natural way of encoding in Isabelle a grammar like this: type_synonym Var = string datatype Value = VInt int | ... datatype Cmd = Skip | NonDeterministicChoice "Cmd set" | ... The motivation would be to give definition a few specification...

## Create a quotient-lifted type with polymorphism over working set and equivalence relation in Isabelle/HOL

set,higher-order-functions,isabelle,theorem-proving,isar
I would like to create a quotient type with quotient_type in Isabelle/HOL in which I would left "non-constructed" the non-empty set S and the equivalence relation ≡. The goal is for me to derive generic properties w.r.t. S and ≡ over the quotient-lifted set S/≡. In this way, it would...