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
0 answers

Is there a parser that will output an Isabelle/Isar AST in JSON format?

Are there any Isabelle/Isar languages parsers available? Specifically one that will parse the syntax and output something useful, ideally in a language-agnostic format such as JSON. I would like to basically have a JSON representation of an…
Lance
  • 75,200
  • 93
  • 289
  • 503
4
votes
2 answers

Is there a way to get a complete list of all kinds of operators/constructors of Isabelle?

For example, Isabelle can represent "and" as "^", "or" as "v".....Is there a way to get a complete list of all of these kinds of operators/constructors?
Q.Yang
  • 173
  • 1
  • 5
4
votes
1 answer

What are the semantics of assume for Isabelle/Isar?

I found a surprising behaviour (for me) when using Isar. I try to use assume and sometimes Isar complains it cannot resolve pending goals, for example my most typical example is having a an assumption and not being able to assume it: lemma …
Charlie Parker
  • 5,884
  • 57
  • 198
  • 323
4
votes
1 answer

What's the difference between `overloading` and `adhoc_overloading`?

The Isabelle reference manual describes to ways to perform type-based overloading of constants: "Adhoc overloading of constants" in section 11.3, and "Overloaded constant definitions" in section 5.9. It seems that 5.9 overloading requires all type…
Søren Debois
  • 5,598
  • 26
  • 48
4
votes
1 answer

How to prove this simple theorem in Isabelle?

I define a very simple function replace which replaces 1 with 0 while preserving other input values. I want to prove that the output of the function cannot be 1. How to achieve this? Here's the code. theory Question imports Main begin fun replace…
Dev-XYS
  • 249
  • 2
  • 5
4
votes
1 answer

Is there a rewrite tactic in Isabelle?

For example in Coq there is rewrite and we can also put arrows `<-: Inductive bool: Set := | true | false. Lemma equality_of_functions_commutes: forall (f: bool->bool) x y, (f x) = (f y) -> (f y) = (f x). Proof. intros. rewrite H. …
Charlie Parker
  • 5,884
  • 57
  • 198
  • 323
4
votes
1 answer

Object level implication in Isabelle/HOL

I see that many theorems in Isabelle/HOL prefer meta-level implication: ==> instead of --> the object logic level, i.e. higher order logic implication. Isabelle wiki says that roughly speaking, meta level implication should be used to separate…
Gergely
  • 6,879
  • 6
  • 25
  • 35
4
votes
1 answer

Isabelle's document preparation

I would like to obtain the LaTeX code associated with this theory. Previous answers only provide links to the documentation. Let me describe what I did. I went to the directory of Hales.thy and executed isabelle mkroot, followed by isabelle build -D…
user1868607
  • 2,558
  • 1
  • 17
  • 38
4
votes
1 answer

Isabelle/Pure Isabelle/HOL Isabell/Isar conceptual questions

I need to do a presentation on a paper which at some point makes use of Isabelle/Isar and Isabelle/HOL. I tried researching online about Isabelle/HOL and Isabelle/Isar to be able to eplain the relations in one or two slides. Here are the relations…
Jonathan
  • 552
  • 1
  • 4
  • 10
4
votes
0 answers

Statistics for Isabelle development

I have a lengthy development in Isabelle and I'd like to have some statistics about how many lines are for definitions, how many for statements, and how many are comments. Is there any such a tool included in Isabelle (such as coqwc for coq)? I've…
Miguel Pagano
  • 61
  • 1
  • 4
4
votes
1 answer

Proving intuitive statements about THE in Isabelle

I would like to prove something like this lemma in Isabelle lemma assumes "y = (THE x. P x)" shows "P (THE x. P x)" I imagine that the assumption implies that THE x. P x exists and is well-defined. So this lemma ought to be true too lemma assumes…
IIM
  • 533
  • 3
  • 11
4
votes
1 answer

What kind of functions preserve properties of closure?

I'm trying to prove the following lemmas: lemma tranclp_fun_preserve: "(⋀x y. x ≠ y ⟹ f x ≠ f y) ⟹ (⋀x y. f x ≠ f y ⟹ x ≠ y) ⟹ (⋀x y. f x = f y ⟹ x = y) ⟹ (λ x y. P x y)⇧+⇧+ (f x) (f y) ⟹ (λ x y. P (f x) (f y))⇧+⇧+ x y" apply (erule…
Denis
  • 1,167
  • 1
  • 10
  • 30
4
votes
1 answer

How can I fake existential types in Isabelle/HOL?

Consider the following Isabelle/HOL definition of a simple process language: typedecl channel datatype process = Put channel char process | Get "char ⇒ process" | Stop This languages supports sending and receiving of characters via channels. Now…
Wolfgang Jeltsch
  • 781
  • 5
  • 10
4
votes
2 answers

Custom case distinctions in proofs

Does Isabelle support custom case distinctions when proving statements? Let's say I want to prove a statement for all natural numbers n, but the proof is entirely different depending on whether n is even or odd. Is it possible to do that case…
Benedikt
  • 67
  • 4
4
votes
2 answers

How to define a data type with constraints?

For example I need to define a data type for pairs of list, both of which must have the same length: type_synonym list2 = "nat list × nat list" definition good_list :: "list2" where "good_list ≡ ([1,2],[3,4])" definition bad_list :: "list2"…
Denis
  • 1,167
  • 1
  • 10
  • 30