Questions tagged [isabelle]

Isabelle is a generic proof assistant, with Isabelle/HOL as main instance.

Isabelle is a generic proof assistant, which is best-known for its Isabelle/HOL instance. It allows mathematical formulas to be expressed in a formal language and provides tools for proving those formulas in a logical calculus. HOL specifications may be turned into program code in SML, OCaml, Haskell, or Scala. Isabelle includes many add-on tools like CVC4, Z3, SPASS, E prover.

User interfaces

Important links

1111 questions
4
votes
1 answer

Why can I prove ⟦ ( ∃ x. P ) ∧ ( ∃ x. Q ) ⟧ ⟹ ∃ x. (P ∧ Q)?

I'm an Isabelle beginner, learning the basics. To my surprise, I just proved lemma "⟦ ( ∃ x. P ) ∧ ( ∃ x. Q ) ⟧ ⟹ ∃ x. (P ∧ Q)" apply ( auto ) done in Isabelle/HOL. Now assuming that P and Q range over arbitrary predicates, this is false, just…
Martin Berger
  • 1,120
  • 9
  • 19
4
votes
2 answers

What is a Quotient type pattern in Isabelle?

What is a "Quotient type pattern" in Isabelle? I couldn't find any explanation over the internet.
Shiyam
  • 71
  • 5
4
votes
1 answer

loading a precompiled heap image in Isabelle

Following how-to-use-persistent-heap-images-to-make-loading-of-theories-faster-in-isabelle and another advice I created an image for Nominal Isabelle: isabelle build -v -b -d . Nominal2 The heap image was created under…
Gergely
  • 6,879
  • 6
  • 25
  • 35
4
votes
1 answer

Bad name binding in Isabelle

When entering the following definition datatype env = "nat => 'a option" Isabelle/jedit shows an exclamation mark and says Legacy feature! Bad name binding: "nat => 'a option" What is the problem and how can I fix this type synonym? Update:…
Gergely
  • 6,879
  • 6
  • 25
  • 35
4
votes
2 answers

Proving A ==> B ==> C ==> B in Isabelle

I am puzzled about proving A ==> B ==> C ==> B in Isabelle. Obviously you could apply simp but how could I prove this with using rules? Alternatively, is there a way to dump the rules simp used? Thanks.
TFuto
  • 1,361
  • 15
  • 33
4
votes
1 answer

How to prove while/for in Isabelle/HOL

I have this C code: while(p->next) p = p->next; I want to prove that no matter how long the list is, when this loop is over, p->next equals NULL, and EIP refers to the next instruction after this loop. But I can't. Does anyone know how to prove…
njuguoyi
  • 399
  • 4
  • 10
4
votes
2 answers

Document preparation in Isabelle

I want to use isabelle build -D xxx to produce a LaTeX .tex file out of an Isabelle .thy file. But Isabelle checks all the theory dependencies, and all the related .thy files must be involved. Is it possible that I casually use a .thy file that has…
njuguoyi
  • 399
  • 4
  • 10
4
votes
2 answers

Isabelle: how to print result of 1 + 2?

this is a beginner question. I am going through the tutorial "Programming and Proving in Isabelle/HOL". I want to print the result of "1 + 2". So I wrote: value "1 + 2" Which gives: "1 + (1 + 1)" :: "'a" I would like to see the result, i.e., "3".…
mrsteve
  • 4,082
  • 1
  • 26
  • 63
4
votes
2 answers

How to get a typedef type to inherit operators from its mother type for type classes

Post Answer Follow Up Question Brian provided an answer with a suggested solution being to use lifting and transfer. However, I can't find enough tutorial information on lifting and transfer to know how to tweak his answer to finish off what I would…
user2190811
4
votes
3 answers

How do I remove duplicate subgoals in Isabelle?

In Isabelle, one occasionally reaches a scenario where there are duplicate subgoals. For example, imagine the following proof script: lemma "a ∧ a" apply (rule conjI) with goals: proof (prove): step 1 goal (2 subgoals): 1. a 2. a Is there…
davidg
  • 5,868
  • 2
  • 33
  • 51
4
votes
1 answer

Partial functions versus under-specified total functions

Suppose I have a set A ⊆ nat. I want to model in Isabelle a function f : A ⇒ Y. I could use either: a partial function, i.e. one of type nat ⇒ Y option, or a total function, i.e. one of type nat ⇒ Y that is unspecified for inputs not in A. I…
John Wickerson
  • 1,204
  • 12
  • 23
4
votes
2 answers

How to use persistent heap images to make loading of theories faster in Isabelle/jEdit?

Let's assume I have a directory isabelle_afp where a lot of theories are stored. This directory is a library and I do not plan to change the files in it. I want to speed up the start-up time of Isabelle/jEdit (by default, all theories in…
corny
  • 7,824
  • 3
  • 14
  • 20
4
votes
1 answer

Can I name the variables generated by case analysis?

Is it possible to give my own names to the variables generated when using case analysis or induction?
user1861759
3
votes
1 answer

Proving simple theorem about cases mod 10

I'd like to prove the following lemma: lemma mod10_cases: "P 0 ⟹ P 1 ⟹ P 2 ⟹ P 3 ⟹ P 4 ⟹ P 5 ⟹ P 6 ⟹ P 7 ⟹ P 8 ⟹ P 9 ⟹ P (n mod 10)" but am finding it surprisingly tricky. The lemma feels straightforward; it just says that in order to prove a…
John Wickerson
  • 1,204
  • 12
  • 23
3
votes
1 answer

Isabelle structure proof

There is a set of some structures. I'm trying to prove that the cardinality of the set equals some number. Full theory is too long to post here. So here is a simplified one just to show the idea. Let the objects (which I need to count) are sets…
Eva
  • 35
  • 2