isar

Printing out / showing detailed steps of proof methods (like simp) in a proof in isabelle

孤人 提交于 2021-02-05 06:11:08
问题 Suppose I have the following code in Isabelle: lemma"[| xs@zs = ys@xs ;[]@xs = []@[] |] => ys=zs" (*never mind the lemma body*) apply simp done In the above code, The simp method proves the lemma. I am interested to see and print out the detailed (rewriting /simplification) steps that the simplification method takes to prove this lemma ( and possibly be able to do the same for all the other proof methods). How this is possible? I am using isabelle 2014 with JEdit editor. Many Thanks 回答1: The

Printing out / showing detailed steps of proof methods (like simp) in a proof in isabelle

 ̄綄美尐妖づ 提交于 2021-02-05 06:10:01
问题 Suppose I have the following code in Isabelle: lemma"[| xs@zs = ys@xs ;[]@xs = []@[] |] => ys=zs" (*never mind the lemma body*) apply simp done In the above code, The simp method proves the lemma. I am interested to see and print out the detailed (rewriting /simplification) steps that the simplification method takes to prove this lemma ( and possibly be able to do the same for all the other proof methods). How this is possible? I am using isabelle 2014 with JEdit editor. Many Thanks 回答1: The

Printing out / showing detailed steps of proof methods (like simp) in a proof in isabelle

橙三吉。 提交于 2021-02-05 06:09:50
问题 Suppose I have the following code in Isabelle: lemma"[| xs@zs = ys@xs ;[]@xs = []@[] |] => ys=zs" (*never mind the lemma body*) apply simp done In the above code, The simp method proves the lemma. I am interested to see and print out the detailed (rewriting /simplification) steps that the simplification method takes to prove this lemma ( and possibly be able to do the same for all the other proof methods). How this is possible? I am using isabelle 2014 with JEdit editor. Many Thanks 回答1: The

Printing out / showing detailed steps of proof methods (like simp) in a proof in isabelle

让人想犯罪 __ 提交于 2021-02-05 06:09:43
问题 Suppose I have the following code in Isabelle: lemma"[| xs@zs = ys@xs ;[]@xs = []@[] |] => ys=zs" (*never mind the lemma body*) apply simp done In the above code, The simp method proves the lemma. I am interested to see and print out the detailed (rewriting /simplification) steps that the simplification method takes to prove this lemma ( and possibly be able to do the same for all the other proof methods). How this is possible? I am using isabelle 2014 with JEdit editor. Many Thanks 回答1: The

What is an Isabelle/HOL subtype? What Isar commands produce subtypes?

橙三吉。 提交于 2020-01-10 02:53:24
问题 I'd like to know about Isabelle/HOL subtypes. I explain a little about why it's important to me in my partial answer to my last SO question: Trying to Treat Type Classes and Sub-types Like Sets and Subsets Basically, I only have one type, so it might be useful to me if I could exploit the power of HOL types through subtypes. I've done searches in the Isabelle documentation, on the Web, and on the Isabelle mailing lists. The word "subtype" is used, though not much, and it seems like it's not a

How can I prove the lemma in Exercise 4.6 in “Programming and Proving in Isabelle/HOL”?

扶醉桌前 提交于 2019-12-24 17:22:07
问题 I am trying to solve Exercise 4.6 in “Programming and Proving in Isabelle/HOL”. It asks to define a function elems :: "'a list ⇒ 'a set" that converts a list into a set, and to prove the lemma "x ∈ elems xs ⟹ ∃ ys zs . xs = ys @ x # zs ∧ x ∉ elems ys" . Until now, I have come that far: fun elems :: "'a list ⇒ 'a set" where "elems [] = {}" | "elems (x # xs) = {x} ∪ elems xs" lemma first_occ: "x ∈ elems xs ⟹ ∃ ys zs . xs = ys @ x # zs ∧ x ∉ elems ys" proof (induction xs) case Nil thus ?case by

Proof assistant for mathematics only

旧巷老猫 提交于 2019-12-21 01:18:29
问题 Most proof assistants are functional programming languages with dependent types. They can proof programs/algorithms. I'm interested, instead, in proof assistant suitable best for mathematics and only (calculus for instance). Can you recommend one? I heard about Mizar but I don’t like that the source code is closed, but if it is best for math I will use it. How well the new languages such as Agda and Idris are suited for mathematical proofs? 回答1: Coq has extensive libraries covering real

Organizing constraints in isabelle in order to model a system

寵の児 提交于 2019-12-13 04:59:03
问题 Suppose that I have the following expression in Isabelle/HOL: typedecl Person typedecl Car consts age :: "Person ⇒ int" consts drives ::"(Person × Car) set" consts owns ::"(Person × Car) set" This is supposed to model Person and Car types with two relations between them, named drives and owns, and also the age property of Person. I would like to state that everybody who owns a car, would definitely drive the car, and people who drive cars are greater than 17, So the constraints: (∀a. a ∈ owns

How to define Subtypes in Isabelle and what they mean?

北城余情 提交于 2019-12-12 01:58:36
问题 The question regarding subtyping in Isabelle is very lengthy here. So my simple question is that how I can define type B to be a subtype of A if I define A as below: typedecl A By doing this I would like to make all operations and relations defined over A (they are not printed here) accessible to elements of type B. A bit more complex example is to define B and C to be subtype of A such that B and C are disjoint, and every element of A is either of type B or of type C. Thanks 回答1: Isabelle

Defining disjoint union of different types in Isabelle and more

孤者浪人 提交于 2019-12-11 16:46:20
问题 I asked a series of question to get to the point I can define the following simple model in Isabelle, But I still stuck in getting what I wanted. I try to very briefly describe the problem with an example: Example: Suppose I have two classes Person and Car , Person owns cars and also drives cars. So I need the following types/sets: Person Car owns (* owns relates elements of Person to Car *) drives (* drives relate elements of Person to car as well *) Problem: I would like to formulate above