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
5
votes
2 answers

How do you print local variables and ?thesis in an Isabelle proof (debugging in Isabelle)?

I sometimes find it hard to use Isabelle because I cannot have a "print command" like in normal programming. For example, I want to see what ?thesis. The concrete semantics book says: The unknown ?thesis is implicitly matched against any goal…
Charlie Parker
  • 5,884
  • 57
  • 198
  • 323
5
votes
0 answers

Coding-style conventions in Isabelle/Isar

TL;DR: Are there any coding conventions for the Isar language? Is it necessary to respect jEdit's folding strategy? My team is working on the formalization of mathematics, so one of our main purposes is to obtain readable proofs. Looking into that,…
5
votes
0 answers

Isabelle Server on another machine?

I want to use Isabelle on weaker laptops and delegate the heavy theorem search/proving to a server on the network. I would guess that this has been done before but I could not find tutorials or reports for this task. The Isabelle System Manual…
Ben Keks
  • 671
  • 4
  • 11
5
votes
1 answer

Isabelle/HOL: What does the THE construct denote?

I saw the construct THE x. A in the source code of the Isabelle/HOL standard library. What does this construct denote? It seems to be similar to SOME x. A.
Wolfgang Jeltsch
  • 781
  • 5
  • 10
5
votes
1 answer

Given a theorem "P(t) ⟶ (∃x . P(x))" with an object logic implication, why is the proof goal "P(t) ⟹ (∃x . P(x))" given with meta-logic implication?

I am just starting with Isabelle/HOL and trying to prove a simple HOL statement "P(t) ⟶ (∃x . P(x))" with natural deduction rules. I started with a theory file containing just the theorem: theory simple imports Main begin lemma T: shows "P(t) ⟶ (∃x…
lambda.xy.x
  • 4,918
  • 24
  • 35
5
votes
1 answer

The order of premises

How to change the order of premises in a rule? For instance, in Isabelle's natural deduction rule: mp: ?P ⟶ ?Q ⟹ ?P ⟹ ?Q Can we change the order to: ?P ⟹ ?P ⟶ ?Q ⟹ ?Q I can use rev_mp or define a new lemma, but what I am looking for is whether…
Fadoua
  • 161
  • 11
5
votes
1 answer

Isabelle: Unsupported recursive occurrence of a datatype via type constructor "Set.set"

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…
Diego Dias
  • 210
  • 1
  • 2
  • 7
5
votes
2 answers

Converting a set to a list in Isabelle

How can I convert a set to a list in Isabelle? I am interested in a function definition, with the signature: "'a set => 'a list" How can I define this?
Nuno Amálio
  • 101
  • 7
5
votes
2 answers

completely replace the inner syntax in isar?

I am interested in using Isar as a meta language for writing formal proofs about J, an executable math notation and programming language, and I'd like to be able to use J as the inner syntax. J consists of a large number of primitives, and assigns…
tangentstorm
  • 7,183
  • 2
  • 29
  • 38
5
votes
2 answers

isabelle proving commutativity for add

Im trying to prove commutativity in Isabelle/HOL for a self-defined add function. I managed to prove associativity but I'm stuck on this. The definition of add: fun add :: "nat ⇒ nat ⇒ nat" where "add 0 n = n" | "add (Suc m) n = Suc(add m n)" The…
Eridanis
  • 410
  • 1
  • 6
  • 19
5
votes
2 answers

Is there a way to split conjunction automatically?

I want to prove A /\ B /\ C /\ D /\ E /\ F in Isabelle. How can I split the subgoal to 6 separate subgoals automatically in proof(rule ...), so then I can prove them separately afterwards? Of course, I can write proof(rule conjI) 5 times, but maybe…
5
votes
3 answers

How can I use rules suggested by solve_direct? (by (rule …) doesn't always work)

Sometimes solve_direct (which I usually invoke via try) lists a number of library theorems and says “The current goal can be solved directly with: …”. Let be one search result of solve_direct, then in most cases I…
Christoph Lange
  • 595
  • 2
  • 13
5
votes
2 answers

What Kind of Type Definitions are Legal in Local Contexts?

In Isabelle's NEWS file, I found Command 'typedef' now works within a local theory context -- without introducing dependencies on parameters or assumptions, which is not possible in Isabelle/Pure/HOL. Note that the logical environment may …
chris
  • 4,988
  • 20
  • 36
5
votes
2 answers

How do I display brackets around assumptions in Isabelle/jEdit?

When goals are displayed by Isabelle in ProofGeneral, assumptions are rendered as having brackets around them as so: In Isabelle/jEdit, however, this seems to have changed to meta-implication arrows: While I understand the former is somewhat…
davidg
  • 5,868
  • 2
  • 33
  • 51
5
votes
2 answers

Max of set in Isabelle

How can I find the maximum element in a set of numbers (nat) in Isabelle. The max function doesn't work, as it is only defined to take the maximum of two elements. I have an idea of how I could implement it using a reduce like function, but I don't…
Konstantin Weitz
  • 6,180
  • 8
  • 26
  • 43